@rajbos/ai-engineering-fluency 0.2.6 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.js +61 -59
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -1,90 +1,92 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var yu=Object.create;var ia=Object.defineProperty;var _u=Object.getOwnPropertyDescriptor;var Cu=Object.getOwnPropertyNames;var bu=Object.getPrototypeOf,ku=Object.prototype.hasOwnProperty;var pe=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var Su=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Cu(e))!ku.call(n,o)&&o!==t&&ia(n,o,{get:()=>e[o],enumerable:!(s=_u(e,o))||s.enumerable});return n};var A=(n,e,t)=>(t=n!=null?yu(bu(n)):{},Su(e||!n||!n.__esModule?ia(t,"default",{value:n,enumerable:!0}):t,n));var Gn=pe((Ln,Et)=>{var On=void 0,Nn=function(n){return On||(On=new Promise(function(e,t){var s=typeof n<"u"?n:{},o=s.onAbort;s.onAbort=function(a){t(new Error(a)),o&&o(a)},s.postRun=s.postRun||[],s.postRun.push(function(){e(s)}),Et=void 0;var i;i||=typeof s<"u"?s:{};var r=!!globalThis.window,l=!!globalThis.WorkerGlobalScope,d=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";i.onRuntimeInitialized=function(){function a(y,T){switch(typeof T){case"boolean":fu(y,T?1:0);break;case"number":mu(y,T);break;case"string":pu(y,T,-1,-1);break;case"object":if(T===null)ta(y);else if(T.length!=null){var D=Cn(T.length);E.set(T,D),gu(y,D,T.length,-1),_s(D)}else wn(y,"Wrong API use : tried to return a value of an unknown type ("+T+").",-1);break;default:ta(y)}}function c(y,T){for(var D=[],R=0;R<y;R+=1){var j=Xe(T+4*R,"i32"),J=au(j);if(J===1||J===2)j=du(j);else if(J===3)j=cu(j);else if(J===4){J=j,j=lu(J),J=uu(J);for(var Ge=new Uint8Array(j),Ue=0;Ue<j;Ue+=1)Ge[Ue]=E[J+Ue];j=Ge}else j=null;D.push(j)}return D}function u(y,T){this.Qa=y,this.db=T,this.Oa=1,this.mb=[]}function g(y,T){if(this.db=T,this.fb=_n(y),this.fb===null)throw Error("Unable to allocate memory for the SQL string");this.lb=this.fb,this.$a=this.sb=null}function h(y){if(this.filename="dbfile_"+(4294967295*Math.random()>>>0),y!=null){var T=this.filename,D="/",R=T;if(D&&(D=typeof D=="string"?D:Bo(D),R=T?Lo(D+"/"+T):D),T=xr(!0,!0),R=Oc(R,T),y){if(typeof y=="string"){D=Array(y.length);for(var j=0,J=y.length;j<J;++j)D[j]=y.charCodeAt(j);y=D}gn(R,T|146),D=zt(R,577),$r(D,y,0,y.length,0),Vo(D),gn(R,T)}}this.handleError(U(this.filename,C)),this.db=Xe(C,"i32"),na(this.db),this.gb={},this.Sa={}}var C=Pt(4),w=i.cwrap,U=w("sqlite3_open","number",["string","number"]),V=w("sqlite3_close_v2","number",["number"]),L=w("sqlite3_exec","number",["number","string","number","number","number"]),se=w("sqlite3_changes","number",["number"]),he=w("sqlite3_prepare_v2","number",["number","string","number","number","number"]),Qr=w("sqlite3_sql","string",["number"]),zc=w("sqlite3_normalized_sql","string",["number"]),Yr=w("sqlite3_prepare_v2","number",["number","number","number","number","number"]),Hc=w("sqlite3_bind_text","number",["number","number","number","number","number"]),Xr=w("sqlite3_bind_blob","number",["number","number","number","number","number"]),Wc=w("sqlite3_bind_double","number",["number","number","number"]),Vc=w("sqlite3_bind_int","number",["number","number","number"]),Jc=w("sqlite3_bind_parameter_index","number",["number","string"]),Kc=w("sqlite3_step","number",["number"]),Qc=w("sqlite3_errmsg","string",["number"]),Yc=w("sqlite3_column_count","number",["number"]),Xc=w("sqlite3_data_count","number",["number"]),Zc=w("sqlite3_column_double","number",["number","number"]),Zr=w("sqlite3_column_text","string",["number","number"]),eu=w("sqlite3_column_blob","number",["number","number"]),tu=w("sqlite3_column_bytes","number",["number","number"]),su=w("sqlite3_column_type","number",["number","number"]),nu=w("sqlite3_column_name","string",["number","number"]),ou=w("sqlite3_reset","number",["number"]),iu=w("sqlite3_clear_bindings","number",["number"]),ru=w("sqlite3_finalize","number",["number"]),ea=w("sqlite3_create_function_v2","number","number string number number number number number number number".split(" ")),au=w("sqlite3_value_type","number",["number"]),lu=w("sqlite3_value_bytes","number",["number"]),cu=w("sqlite3_value_text","string",["number"]),uu=w("sqlite3_value_blob","number",["number"]),du=w("sqlite3_value_double","number",["number"]),mu=w("sqlite3_result_double","",["number","number"]),ta=w("sqlite3_result_null","",["number"]),pu=w("sqlite3_result_text","",["number","string","number","number"]),gu=w("sqlite3_result_blob","",["number","number","number","number"]),fu=w("sqlite3_result_int","",["number","number"]),wn=w("sqlite3_result_error","",["number","string","number"]),sa=w("sqlite3_aggregate_context","number",["number","number"]),na=w("RegisterExtensionFunctions","number",["number"]),oa=w("sqlite3_update_hook","number",["number","number","number"]);u.prototype.bind=function(y){if(!this.Qa)throw"Statement closed";return this.reset(),Array.isArray(y)?this.Gb(y):y!=null&&typeof y=="object"?this.Hb(y):!0},u.prototype.step=function(){if(!this.Qa)throw"Statement closed";this.Oa=1;var y=Kc(this.Qa);switch(y){case 100:return!0;case 101:return!1;default:throw this.db.handleError(y)}},u.prototype.Ab=function(y){return y==null&&(y=this.Oa,this.Oa+=1),Zc(this.Qa,y)},u.prototype.Ob=function(y){if(y==null&&(y=this.Oa,this.Oa+=1),y=Zr(this.Qa,y),typeof BigInt!="function")throw Error("BigInt is not supported");return BigInt(y)},u.prototype.Tb=function(y){return y==null&&(y=this.Oa,this.Oa+=1),Zr(this.Qa,y)},u.prototype.getBlob=function(y){y==null&&(y=this.Oa,this.Oa+=1);var T=tu(this.Qa,y);y=eu(this.Qa,y);for(var D=new Uint8Array(T),R=0;R<T;R+=1)D[R]=E[y+R];return D},u.prototype.get=function(y,T){T=T||{},y!=null&&this.bind(y)&&this.step(),y=[];for(var D=Xc(this.Qa),R=0;R<D;R+=1)switch(su(this.Qa,R)){case 1:var j=T.useBigInt?this.Ob(R):this.Ab(R);y.push(j);break;case 2:y.push(this.Ab(R));break;case 3:y.push(this.Tb(R));break;case 4:y.push(this.getBlob(R));break;default:y.push(null)}return y},u.prototype.qb=function(){for(var y=[],T=Yc(this.Qa),D=0;D<T;D+=1)y.push(nu(this.Qa,D));return y},u.prototype.zb=function(y,T){y=this.get(y,T),T=this.qb();for(var D={},R=0;R<T.length;R+=1)D[T[R]]=y[R];return D},u.prototype.Sb=function(){return Qr(this.Qa)},u.prototype.Pb=function(){return zc(this.Qa)},u.prototype.run=function(y){return y!=null&&this.bind(y),this.step(),this.reset()},u.prototype.wb=function(y,T){T==null&&(T=this.Oa,this.Oa+=1),y=_n(y),this.mb.push(y),this.db.handleError(Hc(this.Qa,T,y,-1,0))},u.prototype.Fb=function(y,T){T==null&&(T=this.Oa,this.Oa+=1);var D=Cn(y.length);E.set(y,D),this.mb.push(D),this.db.handleError(Xr(this.Qa,T,D,y.length,0))},u.prototype.vb=function(y,T){T==null&&(T=this.Oa,this.Oa+=1),this.db.handleError((y===(y|0)?Vc:Wc)(this.Qa,T,y))},u.prototype.Ib=function(y){y==null&&(y=this.Oa,this.Oa+=1),Xr(this.Qa,y,0,0,0)},u.prototype.xb=function(y,T){switch(T==null&&(T=this.Oa,this.Oa+=1),typeof y){case"string":this.wb(y,T);return;case"number":this.vb(y,T);return;case"bigint":this.wb(y.toString(),T);return;case"boolean":this.vb(y+0,T);return;case"object":if(y===null){this.Ib(T);return}if(y.length!=null){this.Fb(y,T);return}}throw"Wrong API use : tried to bind a value of an unknown type ("+y+")."},u.prototype.Hb=function(y){var T=this;return Object.keys(y).forEach(function(D){var R=Jc(T.Qa,D);R!==0&&T.xb(y[D],R)}),!0},u.prototype.Gb=function(y){for(var T=0;T<y.length;T+=1)this.xb(y[T],T+1);return!0},u.prototype.reset=function(){return this.freemem(),iu(this.Qa)===0&&ou(this.Qa)===0},u.prototype.freemem=function(){for(var y;(y=this.mb.pop())!==void 0;)_s(y)},u.prototype.Ya=function(){this.freemem();var y=ru(this.Qa)===0;return delete this.db.gb[this.Qa],this.Qa=0,y},g.prototype.next=function(){if(this.fb===null)return{done:!0};if(this.$a!==null&&(this.$a.Ya(),this.$a=null),!this.db.db)throw this.ob(),Error("Database closed");var y=kn(),T=Pt(4);ps(C),ps(T);try{this.db.handleError(Yr(this.db.db,this.lb,-1,C,T)),this.lb=Xe(T,"i32");var D=Xe(C,"i32");return D===0?(this.ob(),{done:!0}):(this.$a=new u(D,this.db),this.db.gb[D]=this.$a,{value:this.$a,done:!1})}catch(R){throw this.sb=ue(this.lb),this.ob(),R}finally{bn(y)}},g.prototype.ob=function(){_s(this.fb),this.fb=null},g.prototype.Qb=function(){return this.sb!==null?this.sb:ue(this.lb)},typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"&&(g.prototype[Symbol.iterator]=function(){return this}),h.prototype.run=function(y,T){if(!this.db)throw"Database closed";if(T){y=this.tb(y,T);try{y.step()}finally{y.Ya()}}else this.handleError(L(this.db,y,0,0,C));return this},h.prototype.exec=function(y,T,D){if(!this.db)throw"Database closed";var R=null,j=null,J=null;try{J=j=_n(y);var Ge=Pt(4);for(y=[];Xe(J,"i8")!==0;){ps(C),ps(Ge),this.handleError(Yr(this.db,J,-1,C,Ge));var Ue=Xe(C,"i32");if(J=Xe(Ge,"i32"),Ue!==0){var ve=null;for(R=new u(Ue,this),T!=null&&R.bind(T);R.step();)ve===null&&(ve={columns:R.qb(),values:[]},y.push(ve)),ve.values.push(R.get(null,D));R.Ya()}}return y}catch(je){throw R&&R.Ya(),je}finally{j&&_s(j)}},h.prototype.Mb=function(y,T,D,R,j){typeof T=="function"&&(R=D,D=T,T=void 0),y=this.tb(y,T);try{for(;y.step();)D(y.zb(null,j))}finally{y.Ya()}if(typeof R=="function")return R()},h.prototype.tb=function(y,T){if(ps(C),this.handleError(he(this.db,y,-1,C,0)),y=Xe(C,"i32"),y===0)throw"Nothing to prepare";var D=new u(y,this);return T!=null&&D.bind(T),this.gb[y]=D},h.prototype.Ub=function(y){return new g(y,this)},h.prototype.Nb=function(){Object.values(this.gb).forEach(function(T){T.Ya()}),Object.values(this.Sa).forEach(pt),this.Sa={},this.handleError(V(this.db));var y=Nc(this.filename);return this.handleError(U(this.filename,C)),this.db=Xe(C,"i32"),na(this.db),y},h.prototype.close=function(){this.db!==null&&(Object.values(this.gb).forEach(function(y){y.Ya()}),Object.values(this.Sa).forEach(pt),this.Sa={},this.Za&&(pt(this.Za),this.Za=void 0),this.handleError(V(this.db)),Lr("/"+this.filename),this.db=null)},h.prototype.handleError=function(y){if(y===0)return null;throw y=Qc(this.db),Error(y)},h.prototype.Rb=function(){return se(this.db)},h.prototype.Kb=function(y,T){Object.prototype.hasOwnProperty.call(this.Sa,y)&&(pt(this.Sa[y]),delete this.Sa[y]);var D=ys(function(R,j,J){j=c(j,J);try{var Ge=T.apply(null,j)}catch(Ue){wn(R,Ue,-1);return}a(R,Ge)},"viii");return this.Sa[y]=D,this.handleError(ea(this.db,y,T.length,1,0,D,0,0,0)),this},h.prototype.Jb=function(y,T){var D=T.init||function(){return null},R=T.finalize||function(ve){return ve},j=T.step;if(!j)throw"An aggregate function must have a step function in "+y;var J={};Object.hasOwnProperty.call(this.Sa,y)&&(pt(this.Sa[y]),delete this.Sa[y]),T=y+"__finalize",Object.hasOwnProperty.call(this.Sa,T)&&(pt(this.Sa[T]),delete this.Sa[T]);var Ge=ys(function(ve,je,ei){var vt=sa(ve,1);Object.hasOwnProperty.call(J,vt)||(J[vt]=D()),je=c(je,ei),je=[J[vt]].concat(je);try{J[vt]=j.apply(null,je)}catch(hu){delete J[vt],wn(ve,hu,-1)}},"viii"),Ue=ys(function(ve){var je=sa(ve,1);try{var ei=R(J[je])}catch(vt){delete J[je],wn(ve,vt,-1);return}a(ve,ei),delete J[je]},"vi");return this.Sa[y]=Ge,this.Sa[T]=Ue,this.handleError(ea(this.db,y,j.length-1,1,0,0,Ge,Ue,0)),this},h.prototype.Zb=function(y){return this.Za&&(oa(this.db,0,0),pt(this.Za),this.Za=void 0),y?(this.Za=ys(function(T,D,R,j,J){switch(D){case 18:T="insert";break;case 23:T="update";break;case 9:T="delete";break;default:throw"unknown operationCode in updateHook callback: "+D}if(R=ue(R),j=ue(j),J>Number.MAX_SAFE_INTEGER)throw"rowId too big to fit inside a Number";y(T,R,j,Number(J))},"viiiij"),oa(this.db,this.Za,0),this):this},u.prototype.bind=u.prototype.bind,u.prototype.step=u.prototype.step,u.prototype.get=u.prototype.get,u.prototype.getColumnNames=u.prototype.qb,u.prototype.getAsObject=u.prototype.zb,u.prototype.getSQL=u.prototype.Sb,u.prototype.getNormalizedSQL=u.prototype.Pb,u.prototype.run=u.prototype.run,u.prototype.reset=u.prototype.reset,u.prototype.freemem=u.prototype.freemem,u.prototype.free=u.prototype.Ya,g.prototype.next=g.prototype.next,g.prototype.getRemainingSQL=g.prototype.Qb,h.prototype.run=h.prototype.run,h.prototype.exec=h.prototype.exec,h.prototype.each=h.prototype.Mb,h.prototype.prepare=h.prototype.tb,h.prototype.iterateStatements=h.prototype.Ub,h.prototype.export=h.prototype.Nb,h.prototype.close=h.prototype.close,h.prototype.handleError=h.prototype.handleError,h.prototype.getRowsModified=h.prototype.Rb,h.prototype.create_function=h.prototype.Kb,h.prototype.create_aggregate=h.prototype.Jb,h.prototype.updateHook=h.prototype.Zb,i.Database=h};var m="./this.program",p=(a,c)=>{throw c},f=globalThis.document?.currentScript?.src;typeof __filename<"u"?f=__filename:l&&(f=self.location.href);var _="",k,b;if(d){var M=require("node:fs");_=__dirname+"/",b=a=>(a=P(a)?new URL(a):a,M.readFileSync(a)),k=async a=>(a=P(a)?new URL(a):a,M.readFileSync(a,void 0)),1<process.argv.length&&(m=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),typeof Et<"u"&&(Et.exports=i),p=(a,c)=>{throw process.exitCode=a,c}}else if(r||l){try{_=new URL(".",f).href}catch{}l&&(b=a=>{var c=new XMLHttpRequest;return c.open("GET",a,!1),c.responseType="arraybuffer",c.send(null),new Uint8Array(c.response)}),k=async a=>{if(P(a))return new Promise((u,g)=>{var h=new XMLHttpRequest;h.open("GET",a,!0),h.responseType="arraybuffer",h.onload=()=>{h.status==200||h.status==0&&h.response?u(h.response):g(h.status)},h.onerror=g,h.send(null)});var c=await fetch(a,{credentials:"same-origin"});if(c.ok)return c.arrayBuffer();throw Error(c.status+" : "+c.url)}}var O=console.log.bind(console),v=console.error.bind(console),I,Z=!1,B,P=a=>a.startsWith("file://"),E,F,X,ee,Q,cs,Gt,Pe;function us(){var a=Sn.buffer;E=new Int8Array(a),X=new Int16Array(a),F=new Uint8Array(a),new Uint16Array(a),ee=new Int32Array(a),Q=new Uint32Array(a),cs=new Float32Array(a),Gt=new Float64Array(a),Pe=new BigInt64Array(a),new BigUint64Array(a)}function ct(a){throw i.onAbort?.(a),a="Aborted("+a+")",v(a),Z=!0,new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.")}var Ye;async function an(a){if(!I)try{var c=await k(a);return new Uint8Array(c)}catch{}if(a==Ye&&I)a=new Uint8Array(I);else if(b)a=b(a);else throw"both async and sync fetching of the wasm failed";return a}async function ln(a,c){try{var u=await an(a);return await WebAssembly.instantiate(u,c)}catch(g){v(`failed to asynchronously prepare wasm: ${g}`),ct(g)}}async function No(a){var c=Ye;if(!I&&!P(c)&&!d)try{var u=fetch(c,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(u,a)}catch(g){v(`wasm streaming compile failed: ${g}`),v("falling back to ArrayBuffer instantiation")}return ln(c,a)}class K{name="ExitStatus";constructor(c){this.message=`Program terminated with exit(${c})`,this.status=c}}var be=a=>{for(;0<a.length;)a.shift()(i)},ut=[],jt=[],ds=()=>{var a=i.preRun.shift();jt.push(a)},St=0,ms=null;function Xe(a,c="i8"){switch(c.endsWith("*")&&(c="*"),c){case"i1":return E[a];case"i8":return E[a];case"i16":return X[a>>1];case"i32":return ee[a>>2];case"i64":return Pe[a>>3];case"float":return cs[a>>2];case"double":return Gt[a>>3];case"*":return Q[a>>2];default:ct(`invalid type for getValue: ${c}`)}}var cn=!0;function ps(a){var c="i32";switch(c.endsWith("*")&&(c="*"),c){case"i1":E[a]=0;break;case"i8":E[a]=0;break;case"i16":X[a>>1]=0;break;case"i32":ee[a>>2]=0;break;case"i64":Pe[a>>3]=BigInt(0);break;case"float":cs[a>>2]=0;break;case"double":Gt[a>>3]=0;break;case"*":Q[a>>2]=0;break;default:ct(`invalid type for setValue: ${c}`)}}var kr=new TextDecoder,Sr=(a,c,u,g)=>{if(u=c+u,g)return u;for(;a[c]&&!(c>=u);)++c;return c},ue=(a,c,u)=>a?kr.decode(F.subarray(a,Sr(F,a,c,u))):"",wr=(a,c)=>{for(var u=0,g=a.length-1;0<=g;g--){var h=a[g];h==="."?a.splice(g,1):h===".."?(a.splice(g,1),u++):u&&(a.splice(g,1),u--)}if(c)for(;u;u--)a.unshift("..");return a},Lo=a=>{var c=a.charAt(0)==="/",u=a.slice(-1)==="/";return(a=wr(a.split("/").filter(g=>!!g),!c).join("/"))||c||(a="."),a&&u&&(a+="/"),(c?"/":"")+a},Tr=a=>{var c=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);return a=c[0],c=c[1],!a&&!c?".":(c&&=c.slice(0,-1),a+c)},un=a=>a&&a.match(/([^\/]+|\/)\/*$/)[1],Pc=()=>{if(d){var a=require("node:crypto");return c=>a.randomFillSync(c)}return c=>crypto.getRandomValues(c)},Mr=a=>{(Mr=Pc())(a)},vc=(...a)=>{for(var c="",u=!1,g=a.length-1;-1<=g&&!u;g--){if(u=0<=g?a[g]:"/",typeof u!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!u)return"";c=u+"/"+c,u=u.charAt(0)==="/"}return c=wr(c.split("/").filter(h=>!!h),!u).join("/"),(u?"/":"")+c||"."},gs=a=>{var c=Sr(a,0);return kr.decode(a.buffer?a.subarray(0,c):new Uint8Array(a.slice(0,c)))},Go=[],Bt=a=>{for(var c=0,u=0;u<a.length;++u){var g=a.charCodeAt(u);127>=g?c++:2047>=g?c+=2:55296<=g&&57343>=g?(c+=4,++u):c+=3}return c},He=(a,c,u,g)=>{if(!(0<g))return 0;var h=u;g=u+g-1;for(var C=0;C<a.length;++C){var w=a.codePointAt(C);if(127>=w){if(u>=g)break;c[u++]=w}else if(2047>=w){if(u+1>=g)break;c[u++]=192|w>>6,c[u++]=128|w&63}else if(65535>=w){if(u+2>=g)break;c[u++]=224|w>>12,c[u++]=128|w>>6&63,c[u++]=128|w&63}else{if(u+3>=g)break;c[u++]=240|w>>18,c[u++]=128|w>>12&63,c[u++]=128|w>>6&63,c[u++]=128|w&63,C++}}return c[u]=0,u-h},Pr=[];function vr(a,c){Pr[a]={input:[],output:[],eb:c},Ho(a,xc)}var xc={open(a){var c=Pr[a.node.rdev];if(!c)throw new x(43);a.tty=c,a.seekable=!1},close(a){a.tty.eb.fsync(a.tty)},fsync(a){a.tty.eb.fsync(a.tty)},read(a,c,u,g){if(!a.tty||!a.tty.eb.Bb)throw new x(60);for(var h=0,C=0;C<g;C++){try{var w=a.tty.eb.Bb(a.tty)}catch{throw new x(29)}if(w===void 0&&h===0)throw new x(6);if(w==null)break;h++,c[u+C]=w}return h&&(a.node.atime=Date.now()),h},write(a,c,u,g){if(!a.tty||!a.tty.eb.ub)throw new x(60);try{for(var h=0;h<g;h++)a.tty.eb.ub(a.tty,c[u+h])}catch{throw new x(29)}return g&&(a.node.mtime=a.node.ctime=Date.now()),h}},Ac={Bb(){e:{if(!Go.length){var a=null;if(d){var c=Buffer.alloc(256),u=0,g=process.stdin.fd;try{u=M.readSync(g,c,0,256)}catch(h){if(h.toString().includes("EOF"))u=0;else throw h}0<u&&(a=c.slice(0,u).toString("utf-8"))}else globalThis.window?.prompt&&(a=window.prompt("Input: "),a!==null&&(a+=`
3
- `));if(!a){a=null;break e}c=Array(Bt(a)+1),a=He(a,c,0,c.length),c.length=a,Go=c}a=Go.shift()}return a},ub(a,c){c===null||c===10?(O(gs(a.output)),a.output=[]):c!=0&&a.output.push(c)},fsync(a){0<a.output?.length&&(O(gs(a.output)),a.output=[])},hc(){return{bc:25856,dc:5,ac:191,cc:35387,$b:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ic(){return 0},jc(){return[24,80]}},Ec={ub(a,c){c===null||c===10?(v(gs(a.output)),a.output=[]):c!=0&&a.output.push(c)},fsync(a){0<a.output?.length&&(v(gs(a.output)),a.output=[])}},N={Wa:null,Xa(){return N.createNode(null,"/",16895,0)},createNode(a,c,u,g){if((u&61440)===24576||(u&61440)===4096)throw new x(63);return N.Wa||(N.Wa={dir:{node:{Ta:N.La.Ta,Ua:N.La.Ua,lookup:N.La.lookup,ib:N.La.ib,rename:N.La.rename,unlink:N.La.unlink,rmdir:N.La.rmdir,readdir:N.La.readdir,symlink:N.La.symlink},stream:{Va:N.Ma.Va}},file:{node:{Ta:N.La.Ta,Ua:N.La.Ua},stream:{Va:N.Ma.Va,read:N.Ma.read,write:N.Ma.write,jb:N.Ma.jb,kb:N.Ma.kb}},link:{node:{Ta:N.La.Ta,Ua:N.La.Ua,readlink:N.La.readlink},stream:{}},yb:{node:{Ta:N.La.Ta,Ua:N.La.Ua},stream:Fc}}),u=Rr(a,c,u,g),we(u.mode)?(u.La=N.Wa.dir.node,u.Ma=N.Wa.dir.stream,u.Na={}):(u.mode&61440)===32768?(u.La=N.Wa.file.node,u.Ma=N.Wa.file.stream,u.Ra=0,u.Na=null):(u.mode&61440)===40960?(u.La=N.Wa.link.node,u.Ma=N.Wa.link.stream):(u.mode&61440)===8192&&(u.La=N.Wa.yb.node,u.Ma=N.Wa.yb.stream),u.atime=u.mtime=u.ctime=Date.now(),a&&(a.Na[c]=u,a.atime=a.mtime=a.ctime=u.atime),u},fc(a){return a.Na?a.Na.subarray?a.Na.subarray(0,a.Ra):new Uint8Array(a.Na):new Uint8Array(0)},La:{Ta(a){var c={};return c.dev=(a.mode&61440)===8192?a.id:1,c.ino=a.id,c.mode=a.mode,c.nlink=1,c.uid=0,c.gid=0,c.rdev=a.rdev,we(a.mode)?c.size=4096:(a.mode&61440)===32768?c.size=a.Ra:(a.mode&61440)===40960?c.size=a.link.length:c.size=0,c.atime=new Date(a.atime),c.mtime=new Date(a.mtime),c.ctime=new Date(a.ctime),c.blksize=4096,c.blocks=Math.ceil(c.size/c.blksize),c},Ua(a,c){for(var u of["mode","atime","mtime","ctime"])c[u]!=null&&(a[u]=c[u]);c.size!==void 0&&(c=c.size,a.Ra!=c&&(c==0?(a.Na=null,a.Ra=0):(u=a.Na,a.Na=new Uint8Array(c),u&&a.Na.set(u.subarray(0,Math.min(c,a.Ra))),a.Ra=c)))},lookup(){throw N.nb||(N.nb=new x(44),N.nb.stack="<generic error, no stack>"),N.nb},ib(a,c,u,g){return N.createNode(a,c,u,g)},rename(a,c,u){try{var g=wt(c,u)}catch{}if(g){if(we(a.mode))for(var h in g.Na)throw new x(55);$o(g)}delete a.parent.Na[a.name],c.Na[u]=a,a.name=u,c.ctime=c.mtime=a.parent.ctime=a.parent.mtime=Date.now()},unlink(a,c){delete a.Na[c],a.ctime=a.mtime=Date.now()},rmdir(a,c){var u=wt(a,c),g;for(g in u.Na)throw new x(55);delete a.Na[c],a.ctime=a.mtime=Date.now()},readdir(a){return[".","..",...Object.keys(a.Na)]},symlink(a,c,u){return a=N.createNode(a,c,41471,0),a.link=u,a},readlink(a){if((a.mode&61440)!==40960)throw new x(28);return a.link}},Ma:{read(a,c,u,g,h){var C=a.node.Na;if(h>=a.node.Ra)return 0;if(a=Math.min(a.node.Ra-h,g),8<a&&C.subarray)c.set(C.subarray(h,h+a),u);else for(g=0;g<a;g++)c[u+g]=C[h+g];return a},write(a,c,u,g,h,C){if(c.buffer===E.buffer&&(C=!1),!g)return 0;if(a=a.node,a.mtime=a.ctime=Date.now(),c.subarray&&(!a.Na||a.Na.subarray)){if(C)return a.Na=c.subarray(u,u+g),a.Ra=g;if(a.Ra===0&&h===0)return a.Na=c.slice(u,u+g),a.Ra=g;if(h+g<=a.Ra)return a.Na.set(c.subarray(u,u+g),h),g}C=h+g;var w=a.Na?a.Na.length:0;if(w>=C||(C=Math.max(C,w*(1048576>w?2:1.125)>>>0),w!=0&&(C=Math.max(C,256)),w=a.Na,a.Na=new Uint8Array(C),0<a.Ra&&a.Na.set(w.subarray(0,a.Ra),0)),a.Na.subarray&&c.subarray)a.Na.set(c.subarray(u,u+g),h);else for(C=0;C<g;C++)a.Na[h+C]=c[u+C];return a.Ra=Math.max(a.Ra,h+g),g},Va(a,c,u){if(u===1?c+=a.position:u===2&&(a.node.mode&61440)===32768&&(c+=a.node.Ra),0>c)throw new x(28);return c},jb(a,c,u,g,h){if((a.node.mode&61440)!==32768)throw new x(43);if(a=a.node.Na,h&2||!a||a.buffer!==E.buffer){h=!0,g=65536*Math.ceil(c/65536);var C=Jr(65536,g);if(C&&F.fill(0,C,C+g),g=C,!g)throw new x(48);a&&((0<u||u+c<a.length)&&(a.subarray?a=a.subarray(u,u+c):a=Array.prototype.slice.call(a,u,u+c)),E.set(a,g))}else h=!1,g=a.byteOffset;return{Xb:g,Eb:h}},kb(a,c,u,g){return N.Ma.write(a,c,0,g,u,!1),0}}},xr=(a,c)=>{var u=0;return a&&(u|=365),c&&(u|=146),u},jo=null,Ar={},qt=[],Dc=1,dt=null,Er=!1,Dr=!0,x=class{name="ErrnoError";constructor(a){this.Pa=a}},Rc=class{hb={};node=null;get flags(){return this.hb.flags}set flags(a){this.hb.flags=a}get position(){return this.hb.position}set position(a){this.hb.position=a}},Ic=class{La={};Ma={};bb=null;constructor(a,c,u,g){a||=this,this.parent=a,this.Xa=a.Xa,this.id=Dc++,this.name=c,this.mode=u,this.rdev=g,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&365)===365}set read(a){a?this.mode|=365:this.mode&=-366}get write(){return(this.mode&146)===146}set write(a){a?this.mode|=146:this.mode&=-147}};function Ie(a,c={}){if(!a)throw new x(44);c.pb??(c.pb=!0),a.charAt(0)==="/"||(a="//"+a);var u=0;e:for(;40>u;u++){a=a.split("/").filter(U=>!!U);for(var g=jo,h="/",C=0;C<a.length;C++){var w=C===a.length-1;if(w&&c.parent)break;if(a[C]!==".")if(a[C]==="..")if(h=Tr(h),g===g.parent){a=h+"/"+a.slice(C+1).join("/"),u--;continue e}else g=g.parent;else{h=Lo(h+"/"+a[C]);try{g=wt(g,a[C])}catch(U){if(U?.Pa===44&&w&&c.Wb)return{path:h};throw U}if(!g.bb||w&&!c.pb||(g=g.bb.root),(g.mode&61440)===40960&&(!w||c.ab)){if(!g.La.readlink)throw new x(52);g=g.La.readlink(g),g.charAt(0)==="/"||(g=Tr(h)+"/"+g),a=g+"/"+a.slice(C+1).join("/");continue e}}}return{path:h,node:g}}throw new x(32)}function Bo(a){for(var c;;){if(a===a.parent)return a=a.Xa.Db,c?a[a.length-1]!=="/"?`${a}/${c}`:a+c:a;c=c?`${a.name}/${c}`:a.name,a=a.parent}}function qo(a,c){for(var u=0,g=0;g<c.length;g++)u=(u<<5)-u+c.charCodeAt(g)|0;return(a+u>>>0)%dt.length}function $o(a){var c=qo(a.parent.id,a.name);if(dt[c]===a)dt[c]=a.cb;else for(c=dt[c];c;){if(c.cb===a){c.cb=a.cb;break}c=c.cb}}function wt(a,c){var u=we(a.mode)?(u=$t(a,"x"))?u:a.La.lookup?0:2:54;if(u)throw new x(u);for(u=dt[qo(a.id,c)];u;u=u.cb){var g=u.name;if(u.parent.id===a.id&&g===c)return u}return a.La.lookup(a,c)}function Rr(a,c,u,g){return a=new Ic(a,c,u,g),c=qo(a.parent.id,a.name),a.cb=dt[c],dt[c]=a}function we(a){return(a&61440)===16384}function $t(a,c){return Dr?0:c.includes("r")&&!(a.mode&292)||c.includes("w")&&!(a.mode&146)||c.includes("x")&&!(a.mode&73)?2:0}function Ir(a,c){if(!we(a.mode))return 54;try{return wt(a,c),20}catch{}return $t(a,"wx")}function Ur(a,c,u){try{var g=wt(a,c)}catch(h){return h.Pa}if(a=$t(a,"wx"))return a;if(u){if(!we(g.mode))return 54;if(g===g.parent||Bo(g)==="/")return 10}else if(we(g.mode))return 31;return 0}function dn(a){if(!a)throw new x(63);return a}function ke(a){if(a=qt[a],!a)throw new x(8);return a}function Fr(a,c=-1){if(a=Object.assign(new Rc,a),c==-1)e:{for(c=0;4096>=c;c++)if(!qt[c])break e;throw new x(33)}return a.fd=c,qt[c]=a}function Uc(a,c=-1){return a=Fr(a,c),a.Ma?.ec?.(a),a}function zo(a,c,u){var g=a?.Ma.Ua;a=g?a:c,g??=c.La.Ua,dn(g),g(a,u)}var Fc={open(a){a.Ma=Ar[a.node.rdev].Ma,a.Ma.open?.(a)},Va(){throw new x(70)}};function Ho(a,c){Ar[a]={Ma:c}}function Or(a,c){var u=c==="/";if(u&&jo)throw new x(10);if(!u&&c){var g=Ie(c,{pb:!1});if(c=g.path,g=g.node,g.bb)throw new x(10);if(!we(g.mode))throw new x(54)}c={type:a,kc:{},Db:c,Vb:[]},a=a.Xa(c),a.Xa=c,c.root=a,u?jo=a:g&&(g.bb=c,g.Xa&&g.Xa.Vb.push(c))}function mn(a,c,u){var g=Ie(a,{parent:!0}).node;if(a=un(a),!a)throw new x(28);if(a==="."||a==="..")throw new x(20);var h=Ir(g,a);if(h)throw new x(h);if(!g.La.ib)throw new x(63);return g.La.ib(g,a,c,u)}function Oc(a,c=438){return mn(a,c&4095|32768,0)}function We(a,c=511){return mn(a,c&1023|16384,0)}function pn(a,c,u){typeof u>"u"&&(u=c,c=438),mn(a,c|8192,u)}function Wo(a,c){if(!vc(a))throw new x(44);var u=Ie(c,{parent:!0}).node;if(!u)throw new x(44);c=un(c);var g=Ir(u,c);if(g)throw new x(g);if(!u.La.symlink)throw new x(63);u.La.symlink(u,c,a)}function Nr(a){var c=Ie(a,{parent:!0}).node;a=un(a);var u=wt(c,a),g=Ur(c,a,!0);if(g)throw new x(g);if(!c.La.rmdir)throw new x(63);if(u.bb)throw new x(10);c.La.rmdir(c,a),$o(u)}function Lr(a){var c=Ie(a,{parent:!0}).node;if(!c)throw new x(44);a=un(a);var u=wt(c,a),g=Ur(c,a,!1);if(g)throw new x(g);if(!c.La.unlink)throw new x(63);if(u.bb)throw new x(10);c.La.unlink(c,a),$o(u)}function fs(a,c){return a=Ie(a,{ab:!c}).node,dn(a.La.Ta)(a)}function Gr(a,c,u,g){zo(a,c,{mode:u&4095|c.mode&-4096,ctime:Date.now(),Lb:g})}function gn(a,c){a=typeof a=="string"?Ie(a,{ab:!0}).node:a,Gr(null,a,c)}function jr(a,c,u){if(we(c.mode))throw new x(31);if((c.mode&61440)!==32768)throw new x(28);var g=$t(c,"w");if(g)throw new x(g);zo(a,c,{size:u,timestamp:Date.now()})}function zt(a,c,u=438){if(a==="")throw new x(44);if(typeof c=="string"){var g={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[c];if(typeof g>"u")throw Error(`Unknown file open mode: ${c}`);c=g}if(u=c&64?u&4095|32768:0,typeof a=="object")g=a;else{var h=a.endsWith("/"),C=Ie(a,{ab:!(c&131072),Wb:!0});g=C.node,a=C.path}if(C=!1,c&64)if(g){if(c&128)throw new x(20)}else{if(h)throw new x(31);g=mn(a,u|511,0),C=!0}if(!g)throw new x(44);if((g.mode&61440)===8192&&(c&=-513),c&65536&&!we(g.mode))throw new x(54);if(!C&&(g?(g.mode&61440)===40960?h=32:(h=["r","w","rw"][c&3],c&512&&(h+="w"),h=we(g.mode)&&(h!=="r"||c&576)?31:$t(g,h)):h=44,h))throw new x(h);return c&512&&!C&&(h=g,h=typeof h=="string"?Ie(h,{ab:!0}).node:h,jr(null,h,0)),c=Fr({node:g,path:Bo(g),flags:c&-131713,seekable:!0,position:0,Ma:g.Ma,Yb:[],error:!1}),c.Ma.open&&c.Ma.open(c),C&&gn(g,u&511),c}function Vo(a){if(a.fd===null)throw new x(8);a.rb&&(a.rb=null);try{a.Ma.close&&a.Ma.close(a)}catch(c){throw c}finally{qt[a.fd]=null}a.fd=null}function Br(a,c,u){if(a.fd===null)throw new x(8);if(!a.seekable||!a.Ma.Va)throw new x(70);if(u!=0&&u!=1&&u!=2)throw new x(28);a.position=a.Ma.Va(a,c,u),a.Yb=[]}function qr(a,c,u,g,h){if(0>g||0>h)throw new x(28);if(a.fd===null)throw new x(8);if((a.flags&2097155)===1)throw new x(8);if(we(a.node.mode))throw new x(31);if(!a.Ma.read)throw new x(28);var C=typeof h<"u";if(!C)h=a.position;else if(!a.seekable)throw new x(70);return c=a.Ma.read(a,c,u,g,h),C||(a.position+=c),c}function $r(a,c,u,g,h){if(0>g||0>h)throw new x(28);if(a.fd===null)throw new x(8);if((a.flags&2097155)===0)throw new x(8);if(we(a.node.mode))throw new x(31);if(!a.Ma.write)throw new x(28);a.seekable&&a.flags&1024&&Br(a,0,2);var C=typeof h<"u";if(!C)h=a.position;else if(!a.seekable)throw new x(70);return c=a.Ma.write(a,c,u,g,h,void 0),C||(a.position+=c),c}function Nc(a){var c=c||0,u="binary";u!=="utf8"&&u!=="binary"&&ct(`Invalid encoding type "${u}"`),c=zt(a,c),a=fs(a).size;var g=new Uint8Array(a);return qr(c,g,0,a,0),u==="utf8"&&(g=gs(g)),Vo(c),g}function mt(a,c,u){a=Lo("/dev/"+a);var g=xr(!!c,!!u);mt.Cb??(mt.Cb=64);var h=mt.Cb++<<8|0;Ho(h,{open(C){C.seekable=!1},close(){u?.buffer?.length&&u(10)},read(C,w,U,V){for(var L=0,se=0;se<V;se++){try{var he=c()}catch{throw new x(29)}if(he===void 0&&L===0)throw new x(6);if(he==null)break;L++,w[U+se]=he}return L&&(C.node.atime=Date.now()),L},write(C,w,U,V){for(var L=0;L<V;L++)try{u(w[U+L])}catch{throw new x(29)}return V&&(C.node.mtime=C.node.ctime=Date.now()),L}}),pn(a,g,h)}var te={};function Tt(a,c,u){if(c.charAt(0)==="/")return c;if(a=a===-100?"/":ke(a).path,c.length==0){if(!u)throw new x(44);return a}return a+"/"+c}function fn(a,c){Q[a>>2]=c.dev,Q[a+4>>2]=c.mode,Q[a+8>>2]=c.nlink,Q[a+12>>2]=c.uid,Q[a+16>>2]=c.gid,Q[a+20>>2]=c.rdev,Pe[a+24>>3]=BigInt(c.size),ee[a+32>>2]=4096,ee[a+36>>2]=c.blocks;var u=c.atime.getTime(),g=c.mtime.getTime(),h=c.ctime.getTime();return Pe[a+40>>3]=BigInt(Math.floor(u/1e3)),Q[a+48>>2]=u%1e3*1e6,Pe[a+56>>3]=BigInt(Math.floor(g/1e3)),Q[a+64>>2]=g%1e3*1e6,Pe[a+72>>3]=BigInt(Math.floor(h/1e3)),Q[a+80>>2]=h%1e3*1e6,Pe[a+88>>3]=BigInt(c.ino),0}var hn=void 0,yn=()=>{var a=ee[+hn>>2];return hn+=4,a},Jo=0,Lc=[0,31,60,91,121,152,182,213,244,274,305,335],Gc=[0,31,59,90,120,151,181,212,243,273,304,334],hs={},zr=a=>{B=a,cn||0<Jo||(i.onExit?.(a),Z=!0),p(a,new K(a))},jc=a=>{if(!Z)try{a()}catch(c){c instanceof K||c=="unwind"||p(1,c)}finally{if(!(cn||0<Jo))try{B=a=B,zr(a)}catch(c){c instanceof K||c=="unwind"||p(1,c)}}},Ko={},Hr=()=>{if(!Qo){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:m||"./this.program"},c;for(c in Ko)Ko[c]===void 0?delete a[c]:a[c]=Ko[c];var u=[];for(c in a)u.push(`${c}=${a[c]}`);Qo=u}return Qo},Qo,Bc=(a,c,u,g)=>{var h={string:L=>{var se=0;if(L!=null&&L!==0){se=Bt(L)+1;var he=Pt(se);He(L,F,he,se),se=he}return se},array:L=>{var se=Pt(L.length);return E.set(L,se),se}};a=i["_"+a];var C=[],w=0;if(g)for(var U=0;U<g.length;U++){var V=h[u[U]];V?(w===0&&(w=kn()),C[U]=V(g[U])):C[U]=g[U]}return u=a(...C),u=(function(L){return w!==0&&bn(w),c==="string"?ue(L):c==="boolean"?!!L:L})(u)},_n=a=>{var c=Bt(a)+1,u=Cn(c);return u&&He(a,F,u,c),u},Mt,Yo=[],pt=a=>{Mt.delete(gt.get(a)),gt.set(a,null),Yo.push(a)},Wr=a=>{let c=a.length;return[c%128|128,c>>7,...a]},qc={i:127,p:127,j:126,f:125,d:124,e:111},Vr=a=>Wr(Array.from(a,c=>qc[c])),ys=(a,c)=>{if(!Mt){Mt=new WeakMap;var u=gt.length;if(Mt)for(var g=0;g<0+u;g++){var h=gt.get(g);h&&Mt.set(h,g)}}if(u=Mt.get(a)||0)return u;u=Yo.length?Yo.pop():gt.grow(1);try{gt.set(u,a)}catch(C){if(!(C instanceof TypeError))throw C;c=Uint8Array.of(0,97,115,109,1,0,0,0,1,...Wr([1,96,...Vr(c.slice(1)),...Vr(c[0]==="v"?"":c[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),c=new WebAssembly.Module(c),c=new WebAssembly.Instance(c,{e:{f:a}}).exports.f,gt.set(u,c)}return Mt.set(a,u),u};if(dt=Array(4096),Or(N,"/"),We("/tmp"),We("/home"),We("/home/web_user"),(function(){We("/dev"),Ho(259,{read:()=>0,write:(g,h,C,w)=>w,Va:()=>0}),pn("/dev/null",259),vr(1280,Ac),vr(1536,Ec),pn("/dev/tty",1280),pn("/dev/tty1",1536);var a=new Uint8Array(1024),c=0,u=()=>(c===0&&(Mr(a),c=a.byteLength),a[--c]);mt("random",u),mt("urandom",u),We("/dev/shm"),We("/dev/shm/tmp")})(),(function(){We("/proc");var a=We("/proc/self");We("/proc/self/fd"),Or({Xa(){var c=Rr(a,"fd",16895,73);return c.Ma={Va:N.Ma.Va},c.La={lookup(u,g){u=+g;var h=ke(u);return u={parent:null,Xa:{Db:"fake"},La:{readlink:()=>h.path},id:u+1},u.parent=u},readdir(){return Array.from(qt.entries()).filter(([,u])=>u).map(([u])=>u.toString())}},c}},"/proc/self/fd")})(),i.noExitRuntime&&(cn=i.noExitRuntime),i.print&&(O=i.print),i.printErr&&(v=i.printErr),i.wasmBinary&&(I=i.wasmBinary),i.thisProgram&&(m=i.thisProgram),i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.shift()();i.stackSave=()=>kn(),i.stackRestore=a=>bn(a),i.stackAlloc=a=>Pt(a),i.cwrap=(a,c,u,g)=>{var h=!u||u.every(C=>C==="number"||C==="boolean");return c!=="string"&&h&&!g?i["_"+a]:(...C)=>Bc(a,c,u,C)},i.addFunction=ys,i.removeFunction=pt,i.UTF8ToString=ue,i.stringToNewUTF8=_n,i.writeArrayToMemory=(a,c)=>{E.set(a,c)};var Cn,_s,Jr,Kr,bn,Pt,kn,Sn,gt,$c={a:(a,c,u,g)=>ct(`Assertion failed: ${ue(a)}, at: `+[c?ue(c):"unknown filename",u,g?ue(g):"unknown function"]),i:function(a,c){try{return a=ue(a),gn(a,c),0}catch(u){if(typeof te>"u"||u.name!=="ErrnoError")throw u;return-u.Pa}},L:function(a,c,u){try{if(c=ue(c),c=Tt(a,c),u&-8)return-28;var g=Ie(c,{ab:!0}).node;return g?(a="",u&4&&(a+="r"),u&2&&(a+="w"),u&1&&(a+="x"),a&&$t(g,a)?-2:0):-44}catch(h){if(typeof te>"u"||h.name!=="ErrnoError")throw h;return-h.Pa}},j:function(a,c){try{var u=ke(a);return Gr(u,u.node,c,!1),0}catch(g){if(typeof te>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},h:function(a){try{var c=ke(a);return zo(c,c.node,{timestamp:Date.now(),Lb:!1}),0}catch(u){if(typeof te>"u"||u.name!=="ErrnoError")throw u;return-u.Pa}},b:function(a,c,u){hn=u;try{var g=ke(a);switch(c){case 0:var h=yn();if(0>h)break;for(;qt[h];)h++;return Uc(g,h).fd;case 1:case 2:return 0;case 3:return g.flags;case 4:return h=yn(),g.flags|=h,0;case 12:return h=yn(),X[h+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(C){if(typeof te>"u"||C.name!=="ErrnoError")throw C;return-C.Pa}},g:function(a,c){try{var u=ke(a),g=u.node,h=u.Ma.Ta;a=h?u:g,h??=g.La.Ta,dn(h);var C=h(a);return fn(c,C)}catch(w){if(typeof te>"u"||w.name!=="ErrnoError")throw w;return-w.Pa}},H:function(a,c){c=-9007199254740992>c||9007199254740992<c?NaN:Number(c);try{if(isNaN(c))return-61;var u=ke(a);if(0>c||(u.flags&2097155)===0)throw new x(28);return jr(u,u.node,c),0}catch(g){if(typeof te>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},G:function(a,c){try{if(c===0)return-28;var u=Bt("/")+1;return c<u?-68:(He("/",F,a,c),u)}catch(g){if(typeof te>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},K:function(a,c){try{return a=ue(a),fn(c,fs(a,!0))}catch(u){if(typeof te>"u"||u.name!=="ErrnoError")throw u;return-u.Pa}},C:function(a,c,u){try{return c=ue(c),c=Tt(a,c),We(c,u),0}catch(g){if(typeof te>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},J:function(a,c,u,g){try{c=ue(c);var h=g&256;return c=Tt(a,c,g&4096),fn(u,h?fs(c,!0):fs(c))}catch(C){if(typeof te>"u"||C.name!=="ErrnoError")throw C;return-C.Pa}},x:function(a,c,u,g){hn=g;try{c=ue(c),c=Tt(a,c);var h=g?yn():0;return zt(c,u,h).fd}catch(C){if(typeof te>"u"||C.name!=="ErrnoError")throw C;return-C.Pa}},v:function(a,c,u,g){try{if(c=ue(c),c=Tt(a,c),0>=g)return-28;var h=Ie(c).node;if(!h)throw new x(44);if(!h.La.readlink)throw new x(28);var C=h.La.readlink(h),w=Math.min(g,Bt(C)),U=E[u+w];return He(C,F,u,g+1),E[u+w]=U,w}catch(V){if(typeof te>"u"||V.name!=="ErrnoError")throw V;return-V.Pa}},u:function(a){try{return a=ue(a),Nr(a),0}catch(c){if(typeof te>"u"||c.name!=="ErrnoError")throw c;return-c.Pa}},f:function(a,c){try{return a=ue(a),fn(c,fs(a))}catch(u){if(typeof te>"u"||u.name!=="ErrnoError")throw u;return-u.Pa}},r:function(a,c,u){try{if(c=ue(c),c=Tt(a,c),u)if(u===512)Nr(c);else return-28;else Lr(c);return 0}catch(g){if(typeof te>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},q:function(a,c,u){try{c=ue(c),c=Tt(a,c,!0);var g=Date.now(),h,C;if(u){var w=Q[u>>2]+4294967296*ee[u+4>>2],U=ee[u+8>>2];U==1073741823?h=g:U==1073741822?h=null:h=1e3*w+U/1e6,u+=16,w=Q[u>>2]+4294967296*ee[u+4>>2],U=ee[u+8>>2],U==1073741823?C=g:U==1073741822?C=null:C=1e3*w+U/1e6}else C=h=g;if((C??h)!==null){a=h;var V=Ie(c,{ab:!0}).node;dn(V.La.Ua)(V,{atime:a,mtime:C})}return 0}catch(L){if(typeof te>"u"||L.name!=="ErrnoError")throw L;return-L.Pa}},m:()=>ct(""),l:()=>{cn=!1,Jo=0},A:function(a,c){a=-9007199254740992>a||9007199254740992<a?NaN:Number(a),a=new Date(1e3*a),ee[c>>2]=a.getSeconds(),ee[c+4>>2]=a.getMinutes(),ee[c+8>>2]=a.getHours(),ee[c+12>>2]=a.getDate(),ee[c+16>>2]=a.getMonth(),ee[c+20>>2]=a.getFullYear()-1900,ee[c+24>>2]=a.getDay();var u=a.getFullYear();ee[c+28>>2]=(u%4!==0||u%100===0&&u%400!==0?Gc:Lc)[a.getMonth()]+a.getDate()-1|0,ee[c+36>>2]=-(60*a.getTimezoneOffset()),u=new Date(a.getFullYear(),6,1).getTimezoneOffset();var g=new Date(a.getFullYear(),0,1).getTimezoneOffset();ee[c+32>>2]=(u!=g&&a.getTimezoneOffset()==Math.min(g,u))|0},y:function(a,c,u,g,h,C,w){h=-9007199254740992>h||9007199254740992<h?NaN:Number(h);try{var U=ke(g);if((c&2)!==0&&(u&2)===0&&(U.flags&2097155)!==2)throw new x(2);if((U.flags&2097155)===1)throw new x(2);if(!U.Ma.jb)throw new x(43);if(!a)throw new x(28);var V=U.Ma.jb(U,a,h,c,u),L=V.Xb;return ee[C>>2]=V.Eb,Q[w>>2]=L,0}catch(se){if(typeof te>"u"||se.name!=="ErrnoError")throw se;return-se.Pa}},z:function(a,c,u,g,h,C){C=-9007199254740992>C||9007199254740992<C?NaN:Number(C);try{var w=ke(h);if(u&2){if(u=C,(w.node.mode&61440)!==32768)throw new x(43);if(!(g&2)){var U=F.slice(a,a+c);w.Ma.kb&&w.Ma.kb(w,U,u,c,g)}}}catch(V){if(typeof te>"u"||V.name!=="ErrnoError")throw V;return-V.Pa}},n:(a,c)=>{if(hs[a]&&(clearTimeout(hs[a].id),delete hs[a]),!c)return 0;var u=setTimeout(()=>{delete hs[a],jc(()=>Kr(a,performance.now()))},c);return hs[a]={id:u,lc:c},0},B:(a,c,u,g)=>{var h=new Date().getFullYear(),C=new Date(h,0,1).getTimezoneOffset();h=new Date(h,6,1).getTimezoneOffset(),Q[a>>2]=60*Math.max(C,h),ee[c>>2]=+(C!=h),c=w=>{var U=Math.abs(w);return`UTC${0<=w?"-":"+"}${String(Math.floor(U/60)).padStart(2,"0")}${String(U%60).padStart(2,"0")}`},a=c(C),c=c(h),h<C?(He(a,F,u,17),He(c,F,g,17)):(He(a,F,g,17),He(c,F,u,17))},d:()=>Date.now(),s:()=>2147483648,c:()=>performance.now(),o:a=>{var c=F.length;if(a>>>=0,2147483648<a)return!1;for(var u=1;4>=u;u*=2){var g=c*(1+.2/u);g=Math.min(g,a+100663296);e:{g=(Math.min(2147483648,65536*Math.ceil(Math.max(a,g)/65536))-Sn.buffer.byteLength+65535)/65536|0;try{Sn.grow(g),us();var h=1;break e}catch{}h=void 0}if(h)return!0}return!1},E:(a,c)=>{var u=0,g=0,h;for(h of Hr()){var C=c+u;Q[a+g>>2]=C,u+=He(h,F,C,1/0)+1,g+=4}return 0},F:(a,c)=>{var u=Hr();Q[a>>2]=u.length,a=0;for(var g of u)a+=Bt(g)+1;return Q[c>>2]=a,0},e:function(a){try{var c=ke(a);return Vo(c),0}catch(u){if(typeof te>"u"||u.name!=="ErrnoError")throw u;return u.Pa}},p:function(a,c){try{var u=ke(a);return E[c]=u.tty?2:we(u.mode)?3:(u.mode&61440)===40960?7:4,X[c+2>>1]=0,Pe[c+8>>3]=BigInt(0),Pe[c+16>>3]=BigInt(0),0}catch(g){if(typeof te>"u"||g.name!=="ErrnoError")throw g;return g.Pa}},w:function(a,c,u,g){try{e:{var h=ke(a);a=c;for(var C,w=c=0;w<u;w++){var U=Q[a>>2],V=Q[a+4>>2];a+=8;var L=qr(h,E,U,V,C);if(0>L){var se=-1;break e}if(c+=L,L<V)break;typeof C<"u"&&(C+=L)}se=c}return Q[g>>2]=se,0}catch(he){if(typeof te>"u"||he.name!=="ErrnoError")throw he;return he.Pa}},D:function(a,c,u,g){c=-9007199254740992>c||9007199254740992<c?NaN:Number(c);try{if(isNaN(c))return 61;var h=ke(a);return Br(h,c,u),Pe[g>>3]=BigInt(h.position),h.rb&&c===0&&u===0&&(h.rb=null),0}catch(C){if(typeof te>"u"||C.name!=="ErrnoError")throw C;return C.Pa}},I:function(a){try{var c=ke(a);return c.Ma?.fsync?.(c)}catch(u){if(typeof te>"u"||u.name!=="ErrnoError")throw u;return u.Pa}},t:function(a,c,u,g){try{e:{var h=ke(a);a=c;for(var C,w=c=0;w<u;w++){var U=Q[a>>2],V=Q[a+4>>2];a+=8;var L=$r(h,E,U,V,C);if(0>L){var se=-1;break e}if(c+=L,L<V)break;typeof C<"u"&&(C+=L)}se=c}return Q[g>>2]=se,0}catch(he){if(typeof te>"u"||he.name!=="ErrnoError")throw he;return he.Pa}},k:zr};function Xo(){function a(){if(i.calledRun=!0,!Z){if(!i.noFSInit&&!Er){var c,u;Er=!0,c??=i.stdin,u??=i.stdout,g??=i.stderr,c?mt("stdin",c):Wo("/dev/tty","/dev/stdin"),u?mt("stdout",null,u):Wo("/dev/tty","/dev/stdout"),g?mt("stderr",null,g):Wo("/dev/tty1","/dev/stderr"),zt("/dev/stdin",0),zt("/dev/stdout",1),zt("/dev/stderr",1)}if(Zo.N(),Dr=!1,i.onRuntimeInitialized?.(),i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;){var g=i.postRun.shift();ut.push(g)}be(ut)}}if(0<St)ms=Xo;else{if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)ds();be(jt),0<St?ms=Xo:i.setStatus?(i.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>i.setStatus(""),1),a()},1)):a()}}var Zo;return(async function(){function a(u){return u=Zo=u.exports,i._sqlite3_free=u.P,i._sqlite3_value_text=u.Q,i._sqlite3_prepare_v2=u.R,i._sqlite3_step=u.S,i._sqlite3_reset=u.T,i._sqlite3_exec=u.U,i._sqlite3_finalize=u.V,i._sqlite3_column_name=u.W,i._sqlite3_column_text=u.X,i._sqlite3_column_type=u.Y,i._sqlite3_errmsg=u.Z,i._sqlite3_clear_bindings=u._,i._sqlite3_value_blob=u.$,i._sqlite3_value_bytes=u.aa,i._sqlite3_value_double=u.ba,i._sqlite3_value_int=u.ca,i._sqlite3_value_type=u.da,i._sqlite3_result_blob=u.ea,i._sqlite3_result_double=u.fa,i._sqlite3_result_error=u.ga,i._sqlite3_result_int=u.ha,i._sqlite3_result_int64=u.ia,i._sqlite3_result_null=u.ja,i._sqlite3_result_text=u.ka,i._sqlite3_aggregate_context=u.la,i._sqlite3_column_count=u.ma,i._sqlite3_data_count=u.na,i._sqlite3_column_blob=u.oa,i._sqlite3_column_bytes=u.pa,i._sqlite3_column_double=u.qa,i._sqlite3_bind_blob=u.ra,i._sqlite3_bind_double=u.sa,i._sqlite3_bind_int=u.ta,i._sqlite3_bind_text=u.ua,i._sqlite3_bind_parameter_index=u.va,i._sqlite3_sql=u.wa,i._sqlite3_normalized_sql=u.xa,i._sqlite3_changes=u.ya,i._sqlite3_close_v2=u.za,i._sqlite3_create_function_v2=u.Aa,i._sqlite3_update_hook=u.Ba,i._sqlite3_open=u.Ca,Cn=i._malloc=u.Da,_s=i._free=u.Ea,i._RegisterExtensionFunctions=u.Fa,Jr=u.Ga,Kr=u.Ha,bn=u.Ia,Pt=u.Ja,kn=u.Ka,Sn=u.M,gt=u.O,us(),St--,i.monitorRunDependencies?.(St),St==0&&ms&&(u=ms,ms=null,u()),Zo}St++,i.monitorRunDependencies?.(St);var c={a:$c};return i.instantiateWasm?new Promise(u=>{i.instantiateWasm(c,(g,h)=>{u(a(g,h))})}):(Ye??=i.locateFile?i.locateFile("sql-wasm.wasm",_):_+"sql-wasm.wasm",a((await No(c)).instance))})(),Xo(),s}),On)};typeof Ln=="object"&&typeof Et=="object"?(Et.exports=Nn,Et.exports.default=Nn):typeof define=="function"&&define.amd?define([],function(){return Nn}):typeof Ln=="object"&&(Ln.Module=Nn)});var zn=pe(et=>{"use strict";Object.defineProperty(et,"__esModule",{value:!0});et.utf8Count=Bu;et.utf8EncodeJs=Da;et.utf8EncodeTE=Ra;et.utf8Encode=zu;et.utf8DecodeJs=Ia;et.utf8DecodeTD=Ua;et.utf8Decode=Ju;function Bu(n){let e=n.length,t=0,s=0;for(;s<e;){let o=n.charCodeAt(s++);if((o&4294967168)===0){t++;continue}else if((o&4294965248)===0)t+=2;else{if(o>=55296&&o<=56319&&s<e){let i=n.charCodeAt(s);(i&64512)===56320&&(++s,o=((o&1023)<<10)+(i&1023)+65536)}(o&4294901760)===0?t+=3:t+=4}}return t}function Da(n,e,t){let s=n.length,o=t,i=0;for(;i<s;){let r=n.charCodeAt(i++);if((r&4294967168)===0){e[o++]=r;continue}else if((r&4294965248)===0)e[o++]=r>>6&31|192;else{if(r>=55296&&r<=56319&&i<s){let l=n.charCodeAt(i);(l&64512)===56320&&(++i,r=((r&1023)<<10)+(l&1023)+65536)}(r&4294901760)===0?(e[o++]=r>>12&15|224,e[o++]=r>>6&63|128):(e[o++]=r>>18&7|240,e[o++]=r>>12&63|128,e[o++]=r>>6&63|128)}e[o++]=r&63|128}}var qu=new TextEncoder,$u=50;function Ra(n,e,t){qu.encodeInto(n,e.subarray(t))}function zu(n,e,t){n.length>$u?Ra(n,e,t):Da(n,e,t)}var Hu=4096;function Ia(n,e,t){let s=e,o=s+t,i=[],r="";for(;s<o;){let l=n[s++];if((l&128)===0)i.push(l);else if((l&224)===192){let d=n[s++]&63;i.push((l&31)<<6|d)}else if((l&240)===224){let d=n[s++]&63,m=n[s++]&63;i.push((l&31)<<12|d<<6|m)}else if((l&248)===240){let d=n[s++]&63,m=n[s++]&63,p=n[s++]&63,f=(l&7)<<18|d<<12|m<<6|p;f>65535&&(f-=65536,i.push(f>>>10&1023|55296),f=56320|f&1023),i.push(f)}else i.push(l);i.length>=Hu&&(r+=String.fromCharCode(...i),i.length=0)}return i.length>0&&(r+=String.fromCharCode(...i)),r}var Wu=new TextDecoder,Vu=200;function Ua(n,e,t){let s=n.subarray(e,e+t);return Wu.decode(s)}function Ju(n,e,t){return t>Vu?Ua(n,e,t):Ia(n,e,t)}});var ui=pe(Hn=>{"use strict";Object.defineProperty(Hn,"__esModule",{value:!0});Hn.ExtData=void 0;var ci=class{type;data;constructor(e,t){this.type=e,this.data=t}};Hn.ExtData=ci});var Vn=pe(Wn=>{"use strict";Object.defineProperty(Wn,"__esModule",{value:!0});Wn.DecodeError=void 0;var di=class n extends Error{constructor(e){super(e);let t=Object.create(n.prototype);Object.setPrototypeOf(this,t),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:n.name})}};Wn.DecodeError=di});var Jn=pe(yt=>{"use strict";Object.defineProperty(yt,"__esModule",{value:!0});yt.UINT32_MAX=void 0;yt.setUint64=Ku;yt.setInt64=Qu;yt.getInt64=Yu;yt.getUint64=Xu;yt.UINT32_MAX=4294967295;function Ku(n,e,t){let s=t/4294967296,o=t;n.setUint32(e,s),n.setUint32(e+4,o)}function Qu(n,e,t){let s=Math.floor(t/4294967296),o=t;n.setUint32(e,s),n.setUint32(e+4,o)}function Yu(n,e){let t=n.getInt32(e),s=n.getUint32(e+4);return t*4294967296+s}function Xu(n,e){let t=n.getUint32(e),s=n.getUint32(e+4);return t*4294967296+s}});var mi=pe(Oe=>{"use strict";Object.defineProperty(Oe,"__esModule",{value:!0});Oe.timestampExtension=Oe.EXT_TIMESTAMP=void 0;Oe.encodeTimeSpecToTimestamp=Oa;Oe.encodeDateToTimeSpec=Na;Oe.encodeTimestampExtension=La;Oe.decodeTimestampToTimeSpec=Ga;Oe.decodeTimestampExtension=ja;var Zu=Vn(),Fa=Jn();Oe.EXT_TIMESTAMP=-1;var ed=4294967296-1,td=17179869184-1;function Oa({sec:n,nsec:e}){if(n>=0&&e>=0&&n<=td)if(e===0&&n<=ed){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,n),t}else{let t=n/4294967296,s=n&4294967295,o=new Uint8Array(8),i=new DataView(o.buffer);return i.setUint32(0,e<<2|t&3),i.setUint32(4,s),o}else{let t=new Uint8Array(12),s=new DataView(t.buffer);return s.setUint32(0,e),(0,Fa.setInt64)(s,4,n),t}}function Na(n){let e=n.getTime(),t=Math.floor(e/1e3),s=(e-t*1e3)*1e6,o=Math.floor(s/1e9);return{sec:t+o,nsec:s-o*1e9}}function La(n){if(n instanceof Date){let e=Na(n);return Oa(e)}else return null}function Ga(n){let e=new DataView(n.buffer,n.byteOffset,n.byteLength);switch(n.byteLength){case 4:return{sec:e.getUint32(0),nsec:0};case 8:{let t=e.getUint32(0),s=e.getUint32(4),o=(t&3)*4294967296+s,i=t>>>2;return{sec:o,nsec:i}}case 12:{let t=(0,Fa.getInt64)(e,4),s=e.getUint32(0);return{sec:t,nsec:s}}default:throw new Zu.DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${n.length}`)}}function ja(n){let e=Ga(n);return new Date(e.sec*1e3+e.nsec/1e6)}Oe.timestampExtension={type:Oe.EXT_TIMESTAMP,encode:La,decode:ja}});var Yn=pe(Qn=>{"use strict";Object.defineProperty(Qn,"__esModule",{value:!0});Qn.ExtensionCodec=void 0;var Kn=ui(),sd=mi(),pi=class n{static defaultCodec=new n;__brand;builtInEncoders=[];builtInDecoders=[];encoders=[];decoders=[];constructor(){this.register(sd.timestampExtension)}register({type:e,encode:t,decode:s}){if(e>=0)this.encoders[e]=t,this.decoders[e]=s;else{let o=-1-e;this.builtInEncoders[o]=t,this.builtInDecoders[o]=s}}tryToEncode(e,t){for(let s=0;s<this.builtInEncoders.length;s++){let o=this.builtInEncoders[s];if(o!=null){let i=o(e,t);if(i!=null){let r=-1-s;return new Kn.ExtData(r,i)}}}for(let s=0;s<this.encoders.length;s++){let o=this.encoders[s];if(o!=null){let i=o(e,t);if(i!=null){let r=s;return new Kn.ExtData(r,i)}}}return e instanceof Kn.ExtData?e:null}decode(e,t,s){let o=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return o?o(e,t,s):new Kn.ExtData(t,e)}};Qn.ExtensionCodec=pi});var fi=pe(gi=>{"use strict";Object.defineProperty(gi,"__esModule",{value:!0});gi.ensureUint8Array=od;function nd(n){return n instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&n instanceof SharedArrayBuffer}function od(n){return n instanceof Uint8Array?n:ArrayBuffer.isView(n)?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):nd(n)?new Uint8Array(n):Uint8Array.from(n)}});var yi=pe(Je=>{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});Je.Encoder=Je.DEFAULT_INITIAL_BUFFER_SIZE=Je.DEFAULT_MAX_DEPTH=void 0;var Ba=zn(),id=Yn(),qa=Jn(),rd=fi();Je.DEFAULT_MAX_DEPTH=100;Je.DEFAULT_INITIAL_BUFFER_SIZE=2048;var hi=class n{extensionCodec;context;useBigInt64;maxDepth;initialBufferSize;sortKeys;forceFloat32;ignoreUndefined;forceIntegerToFloat;pos;view;bytes;entered=!1;constructor(e){this.extensionCodec=e?.extensionCodec??id.ExtensionCodec.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.maxDepth=e?.maxDepth??Je.DEFAULT_MAX_DEPTH,this.initialBufferSize=e?.initialBufferSize??Je.DEFAULT_INITIAL_BUFFER_SIZE,this.sortKeys=e?.sortKeys??!1,this.forceFloat32=e?.forceFloat32??!1,this.ignoreUndefined=e?.ignoreUndefined??!1,this.forceIntegerToFloat=e?.forceIntegerToFloat??!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}clone(){return new n({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,maxDepth:this.maxDepth,initialBufferSize:this.initialBufferSize,sortKeys:this.sortKeys,forceFloat32:this.forceFloat32,ignoreUndefined:this.ignoreUndefined,forceIntegerToFloat:this.forceIntegerToFloat})}reinitializeState(){this.pos=0}encodeSharedRef(e){if(this.entered)return this.clone().encodeSharedRef(e);try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.subarray(0,this.pos)}finally{this.entered=!1}}encode(e){if(this.entered)return this.clone().encode(e);try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.slice(0,this.pos)}finally{this.entered=!1}}doEncode(e,t){if(t>this.maxDepth)throw new Error(`Too deep objects in depth ${t}`);e==null?this.encodeNil():typeof e=="boolean"?this.encodeBoolean(e):typeof e=="number"?this.forceIntegerToFloat?this.encodeNumberAsFloat(e):this.encodeNumber(e):typeof e=="string"?this.encodeString(e):this.useBigInt64&&typeof e=="bigint"?this.encodeBigInt64(e):this.encodeObject(e,t)}ensureBufferSizeToWrite(e){let t=this.pos+e;this.view.byteLength<t&&this.resizeBuffer(t*2)}resizeBuffer(e){let t=new ArrayBuffer(e),s=new Uint8Array(t),o=new DataView(t);s.set(this.bytes),this.view=o,this.bytes=s}encodeNil(){this.writeU8(192)}encodeBoolean(e){e===!1?this.writeU8(194):this.writeU8(195)}encodeNumber(e){!this.forceIntegerToFloat&&Number.isSafeInteger(e)?e>=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(211),this.writeI64(e)):this.encodeNumberAsFloat(e)}encodeNumberAsFloat(e){this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))}encodeBigInt64(e){e>=BigInt(0)?(this.writeU8(207),this.writeBigUint64(e)):(this.writeU8(211),this.writeBigInt64(e))}writeStringHeader(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else if(e<4294967296)this.writeU8(219),this.writeU32(e);else throw new Error(`Too long string: ${e} bytes in UTF-8`)}encodeString(e){let s=(0,Ba.utf8Count)(e);this.ensureBufferSizeToWrite(5+s),this.writeStringHeader(s),(0,Ba.utf8Encode)(e,this.bytes,this.pos),this.pos+=s}encodeObject(e,t){let s=this.extensionCodec.tryToEncode(e,this.context);if(s!=null)this.encodeExtension(s);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else if(typeof e=="object")this.encodeMap(e,t);else throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(e)}`)}encodeBinary(e){let t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else if(t<4294967296)this.writeU8(198),this.writeU32(t);else throw new Error(`Too large binary: ${t}`);let s=(0,rd.ensureUint8Array)(e);this.writeU8a(s)}encodeArray(e,t){let s=e.length;if(s<16)this.writeU8(144+s);else if(s<65536)this.writeU8(220),this.writeU16(s);else if(s<4294967296)this.writeU8(221),this.writeU32(s);else throw new Error(`Too large array: ${s}`);for(let o of e)this.doEncode(o,t+1)}countWithoutUndefined(e,t){let s=0;for(let o of t)e[o]!==void 0&&s++;return s}encodeMap(e,t){let s=Object.keys(e);this.sortKeys&&s.sort();let o=this.ignoreUndefined?this.countWithoutUndefined(e,s):s.length;if(o<16)this.writeU8(128+o);else if(o<65536)this.writeU8(222),this.writeU16(o);else if(o<4294967296)this.writeU8(223),this.writeU32(o);else throw new Error(`Too large map object: ${o}`);for(let i of s){let r=e[i];this.ignoreUndefined&&r===void 0||(this.encodeString(i),this.doEncode(r,t+1))}}encodeExtension(e){if(typeof e.data=="function"){let s=e.data(this.pos+6),o=s.length;if(o>=4294967296)throw new Error(`Too large extension object: ${o}`);this.writeU8(201),this.writeU32(o),this.writeI8(e.type),this.writeU8a(s);return}let t=e.data.length;if(t===1)this.writeU8(212);else if(t===2)this.writeU8(213);else if(t===4)this.writeU8(214);else if(t===8)this.writeU8(215);else if(t===16)this.writeU8(216);else if(t<256)this.writeU8(199),this.writeU8(t);else if(t<65536)this.writeU8(200),this.writeU16(t);else if(t<4294967296)this.writeU8(201),this.writeU32(t);else throw new Error(`Too large extension object: ${t}`);this.writeI8(e.type),this.writeU8a(e.data)}writeU8(e){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,e),this.pos++}writeU8a(e){let t=e.length;this.ensureBufferSizeToWrite(t),this.bytes.set(e,this.pos),this.pos+=t}writeI8(e){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,e),this.pos++}writeU16(e){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,e),this.pos+=2}writeI16(e){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,e),this.pos+=2}writeU32(e){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,e),this.pos+=4}writeI32(e){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,e),this.pos+=4}writeF32(e){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,e),this.pos+=4}writeF64(e){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,e),this.pos+=8}writeU64(e){this.ensureBufferSizeToWrite(8),(0,qa.setUint64)(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),(0,qa.setInt64)(this.view,this.pos,e),this.pos+=8}writeBigUint64(e){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,e),this.pos+=8}writeBigInt64(e){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,e),this.pos+=8}};Je.Encoder=hi});var $a=pe(_i=>{"use strict";Object.defineProperty(_i,"__esModule",{value:!0});_i.encode=ld;var ad=yi();function ld(n,e){return new ad.Encoder(e).encodeSharedRef(n)}});var za=pe(Ci=>{"use strict";Object.defineProperty(Ci,"__esModule",{value:!0});Ci.prettyByte=cd;function cd(n){return`${n<0?"-":""}0x${Math.abs(n).toString(16).padStart(2,"0")}`}});var Ha=pe(Xn=>{"use strict";Object.defineProperty(Xn,"__esModule",{value:!0});Xn.CachedKeyDecoder=void 0;var ud=zn(),dd=16,md=16,bi=class{hit=0;miss=0;caches;maxKeyLength;maxLengthPerKey;constructor(e=dd,t=md){this.maxKeyLength=e,this.maxLengthPerKey=t,this.caches=[];for(let s=0;s<this.maxKeyLength;s++)this.caches.push([])}canBeCached(e){return e>0&&e<=this.maxKeyLength}find(e,t,s){let o=this.caches[s-1];e:for(let i of o){let r=i.bytes;for(let l=0;l<s;l++)if(r[l]!==e[t+l])continue e;return i.str}return null}store(e,t){let s=this.caches[e.length-1],o={bytes:e,str:t};s.length>=this.maxLengthPerKey?s[Math.random()*s.length|0]=o:s.push(o)}decode(e,t,s){let o=this.find(e,t,s);if(o!=null)return this.hit++,o;this.miss++;let i=(0,ud.utf8DecodeJs)(e,t,s),r=Uint8Array.prototype.slice.call(e,t,t+s);return this.store(r,i),i}};Xn.CachedKeyDecoder=bi});var eo=pe(Zn=>{"use strict";Object.defineProperty(Zn,"__esModule",{value:!0});Zn.Decoder=void 0;var ki=za(),pd=Yn(),It=Jn(),gd=zn(),Wa=fi(),fd=Ha(),tt=Vn(),Si="array",As="map_key",Ja="map_value",hd=n=>{if(typeof n=="string"||typeof n=="number")return n;throw new tt.DecodeError("The type of key must be string or number but "+typeof n)},wi=class{stack=[];stackHeadPosition=-1;get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(e){let t=this.getUninitializedStateFromPool();t.type=Si,t.position=0,t.size=e,t.array=new Array(e)}pushMapState(e){let t=this.getUninitializedStateFromPool();t.type=As,t.readCount=0,t.size=e,t.map={}}getUninitializedStateFromPool(){if(this.stackHeadPosition++,this.stackHeadPosition===this.stack.length){let e={type:void 0,size:0,array:void 0,position:0,readCount:0,map:void 0,key:null};this.stack.push(e)}return this.stack[this.stackHeadPosition]}release(e){if(this.stack[this.stackHeadPosition]!==e)throw new Error("Invalid stack state. Released state is not on top of the stack.");if(e.type===Si){let s=e;s.size=0,s.array=void 0,s.position=0,s.type=void 0}if(e.type===As||e.type===Ja){let s=e;s.size=0,s.map=void 0,s.readCount=0,s.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}},xs=-1,Mi=new DataView(new ArrayBuffer(0)),yd=new Uint8Array(Mi.buffer);try{Mi.getInt8(0)}catch(n){if(!(n instanceof RangeError))throw new Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}var Va=new RangeError("Insufficient data"),_d=new fd.CachedKeyDecoder,Ti=class n{extensionCodec;context;useBigInt64;rawStrings;maxStrLength;maxBinLength;maxArrayLength;maxMapLength;maxExtLength;keyDecoder;mapKeyConverter;totalPos=0;pos=0;view=Mi;bytes=yd;headByte=xs;stack=new wi;entered=!1;constructor(e){this.extensionCodec=e?.extensionCodec??pd.ExtensionCodec.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.rawStrings=e?.rawStrings??!1,this.maxStrLength=e?.maxStrLength??It.UINT32_MAX,this.maxBinLength=e?.maxBinLength??It.UINT32_MAX,this.maxArrayLength=e?.maxArrayLength??It.UINT32_MAX,this.maxMapLength=e?.maxMapLength??It.UINT32_MAX,this.maxExtLength=e?.maxExtLength??It.UINT32_MAX,this.keyDecoder=e?.keyDecoder!==void 0?e.keyDecoder:_d,this.mapKeyConverter=e?.mapKeyConverter??hd}clone(){return new n({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,rawStrings:this.rawStrings,maxStrLength:this.maxStrLength,maxBinLength:this.maxBinLength,maxArrayLength:this.maxArrayLength,maxMapLength:this.maxMapLength,maxExtLength:this.maxExtLength,keyDecoder:this.keyDecoder})}reinitializeState(){this.totalPos=0,this.headByte=xs,this.stack.reset()}setBuffer(e){let t=(0,Wa.ensureUint8Array)(e);this.bytes=t,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength),this.pos=0}appendBuffer(e){if(this.headByte===xs&&!this.hasRemaining(1))this.setBuffer(e);else{let t=this.bytes.subarray(this.pos),s=(0,Wa.ensureUint8Array)(e),o=new Uint8Array(t.length+s.length);o.set(t),o.set(s,t.length),this.setBuffer(o)}}hasRemaining(e){return this.view.byteLength-this.pos>=e}createExtraByteError(e){let{view:t,pos:s}=this;return new RangeError(`Extra ${t.byteLength-s} of ${t.byteLength} byte(s) found at buffer[${e}]`)}decode(e){if(this.entered)return this.clone().decode(e);try{this.entered=!0,this.reinitializeState(),this.setBuffer(e);let t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t}finally{this.entered=!1}}*decodeMulti(e){if(this.entered){yield*this.clone().decodeMulti(e);return}try{for(this.entered=!0,this.reinitializeState(),this.setBuffer(e);this.hasRemaining(1);)yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync(e){if(this.entered)return this.clone().decodeAsync(e);try{this.entered=!0;let t=!1,s;for await(let l of e){if(t)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(l);try{s=this.doDecodeSync(),t=!0}catch(d){if(!(d instanceof RangeError))throw d}this.totalPos+=this.pos}if(t){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return s}let{headByte:o,pos:i,totalPos:r}=this;throw new RangeError(`Insufficient data in parsing ${(0,ki.prettyByte)(o)} at ${r} (${i} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream(e){return this.decodeMultiAsync(e,!0)}decodeStream(e){return this.decodeMultiAsync(e,!1)}async*decodeMultiAsync(e,t){if(this.entered){yield*this.clone().decodeMultiAsync(e,t);return}try{this.entered=!0;let s=t,o=-1;for await(let i of e){if(t&&o===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(i),s&&(o=this.readArraySize(),s=!1,this.complete());try{for(;yield this.doDecodeSync(),--o!==0;);}catch(r){if(!(r instanceof RangeError))throw r}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){e:for(;;){let e=this.readHeadByte(),t;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){let o=e-128;if(o!==0){this.pushMapState(o),this.complete();continue e}else t={}}else if(e<160){let o=e-144;if(o!==0){this.pushArrayState(o),this.complete();continue e}else t=[]}else{let o=e-160;t=this.decodeString(o,0)}else if(e===192)t=null;else if(e===194)t=!1;else if(e===195)t=!0;else if(e===202)t=this.readF32();else if(e===203)t=this.readF64();else if(e===204)t=this.readU8();else if(e===205)t=this.readU16();else if(e===206)t=this.readU32();else if(e===207)this.useBigInt64?t=this.readU64AsBigInt():t=this.readU64();else if(e===208)t=this.readI8();else if(e===209)t=this.readI16();else if(e===210)t=this.readI32();else if(e===211)this.useBigInt64?t=this.readI64AsBigInt():t=this.readI64();else if(e===217){let o=this.lookU8();t=this.decodeString(o,1)}else if(e===218){let o=this.lookU16();t=this.decodeString(o,2)}else if(e===219){let o=this.lookU32();t=this.decodeString(o,4)}else if(e===220){let o=this.readU16();if(o!==0){this.pushArrayState(o),this.complete();continue e}else t=[]}else if(e===221){let o=this.readU32();if(o!==0){this.pushArrayState(o),this.complete();continue e}else t=[]}else if(e===222){let o=this.readU16();if(o!==0){this.pushMapState(o),this.complete();continue e}else t={}}else if(e===223){let o=this.readU32();if(o!==0){this.pushMapState(o),this.complete();continue e}else t={}}else if(e===196){let o=this.lookU8();t=this.decodeBinary(o,1)}else if(e===197){let o=this.lookU16();t=this.decodeBinary(o,2)}else if(e===198){let o=this.lookU32();t=this.decodeBinary(o,4)}else if(e===212)t=this.decodeExtension(1,0);else if(e===213)t=this.decodeExtension(2,0);else if(e===214)t=this.decodeExtension(4,0);else if(e===215)t=this.decodeExtension(8,0);else if(e===216)t=this.decodeExtension(16,0);else if(e===199){let o=this.lookU8();t=this.decodeExtension(o,1)}else if(e===200){let o=this.lookU16();t=this.decodeExtension(o,2)}else if(e===201){let o=this.lookU32();t=this.decodeExtension(o,4)}else throw new tt.DecodeError(`Unrecognized type byte: ${(0,ki.prettyByte)(e)}`);this.complete();let s=this.stack;for(;s.length>0;){let o=s.top();if(o.type===Si)if(o.array[o.position]=t,o.position++,o.position===o.size)t=o.array,s.release(o);else continue e;else if(o.type===As){if(t==="__proto__")throw new tt.DecodeError("The key __proto__ is not allowed");o.key=this.mapKeyConverter(t),o.type=Ja;continue e}else if(o.map[o.key]=t,o.readCount++,o.readCount===o.size)t=o.map,s.release(o);else{o.key=null,o.type=As;continue e}}return t}}readHeadByte(){return this.headByte===xs&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=xs}readArraySize(){let e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:{if(e<160)return e-144;throw new tt.DecodeError(`Unrecognized array type byte: ${(0,ki.prettyByte)(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new tt.DecodeError(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(e)}pushArrayState(e){if(e>this.maxArrayLength)throw new tt.DecodeError(`Max length exceeded: array length (${e}) > maxArrayLength (${this.maxArrayLength})`);this.stack.pushArrayState(e)}decodeString(e,t){return!this.rawStrings||this.stateIsMapKey()?this.decodeUtf8String(e,t):this.decodeBinary(e,t)}decodeUtf8String(e,t){if(e>this.maxStrLength)throw new tt.DecodeError(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw Va;let s=this.pos+t,o;return this.stateIsMapKey()&&this.keyDecoder?.canBeCached(e)?o=this.keyDecoder.decode(this.bytes,s,e):o=(0,gd.utf8Decode)(this.bytes,s,e),this.pos+=t+e,o}stateIsMapKey(){return this.stack.length>0?this.stack.top().type===As:!1}decodeBinary(e,t){if(e>this.maxBinLength)throw new tt.DecodeError(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw Va;let s=this.pos+t,o=this.bytes.subarray(s,s+e);return this.pos+=t+e,o}decodeExtension(e,t){if(e>this.maxExtLength)throw new tt.DecodeError(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);let s=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,s,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let e=this.view.getUint8(this.pos);return this.pos++,e}readI8(){let e=this.view.getInt8(this.pos);return this.pos++,e}readU16(){let e=this.view.getUint16(this.pos);return this.pos+=2,e}readI16(){let e=this.view.getInt16(this.pos);return this.pos+=2,e}readU32(){let e=this.view.getUint32(this.pos);return this.pos+=4,e}readI32(){let e=this.view.getInt32(this.pos);return this.pos+=4,e}readU64(){let e=(0,It.getUint64)(this.view,this.pos);return this.pos+=8,e}readI64(){let e=(0,It.getInt64)(this.view,this.pos);return this.pos+=8,e}readU64AsBigInt(){let e=this.view.getBigUint64(this.pos);return this.pos+=8,e}readI64AsBigInt(){let e=this.view.getBigInt64(this.pos);return this.pos+=8,e}readF32(){let e=this.view.getFloat32(this.pos);return this.pos+=4,e}readF64(){let e=this.view.getFloat64(this.pos);return this.pos+=8,e}};Zn.Decoder=Ti});var Qa=pe(to=>{"use strict";Object.defineProperty(to,"__esModule",{value:!0});to.decode=Cd;to.decodeMulti=bd;var Ka=eo();function Cd(n,e){return new Ka.Decoder(e).decode(n)}function bd(n,e){return new Ka.Decoder(e).decodeMulti(n)}});var Za=pe(Es=>{"use strict";Object.defineProperty(Es,"__esModule",{value:!0});Es.isAsyncIterable=Ya;Es.asyncIterableFromStream=Xa;Es.ensureAsyncIterable=kd;function Ya(n){return n[Symbol.asyncIterator]!=null}async function*Xa(n){let e=n.getReader();try{for(;;){let{done:t,value:s}=await e.read();if(t)return;yield s}}finally{e.releaseLock()}}function kd(n){return Ya(n)?n:Xa(n)}});var el=pe(Ds=>{"use strict";Object.defineProperty(Ds,"__esModule",{value:!0});Ds.decodeAsync=Sd;Ds.decodeArrayStream=wd;Ds.decodeMultiStream=Td;var Pi=eo(),vi=Za();async function Sd(n,e){let t=(0,vi.ensureAsyncIterable)(n);return new Pi.Decoder(e).decodeAsync(t)}function wd(n,e){let t=(0,vi.ensureAsyncIterable)(n);return new Pi.Decoder(e).decodeArrayStream(t)}function Td(n,e){let t=(0,vi.ensureAsyncIterable)(n);return new Pi.Decoder(e).decodeStream(t)}});var Ai=pe(q=>{"use strict";Object.defineProperty(q,"__esModule",{value:!0});q.decodeTimestampExtension=q.encodeTimestampExtension=q.decodeTimestampToTimeSpec=q.encodeTimeSpecToTimestamp=q.encodeDateToTimeSpec=q.EXT_TIMESTAMP=q.ExtData=q.ExtensionCodec=q.Encoder=q.DecodeError=q.Decoder=q.decodeMultiStream=q.decodeArrayStream=q.decodeAsync=q.decodeMulti=q.decode=q.encode=void 0;var Md=$a();Object.defineProperty(q,"encode",{enumerable:!0,get:function(){return Md.encode}});var tl=Qa();Object.defineProperty(q,"decode",{enumerable:!0,get:function(){return tl.decode}});Object.defineProperty(q,"decodeMulti",{enumerable:!0,get:function(){return tl.decodeMulti}});var xi=el();Object.defineProperty(q,"decodeAsync",{enumerable:!0,get:function(){return xi.decodeAsync}});Object.defineProperty(q,"decodeArrayStream",{enumerable:!0,get:function(){return xi.decodeArrayStream}});Object.defineProperty(q,"decodeMultiStream",{enumerable:!0,get:function(){return xi.decodeMultiStream}});var Pd=eo();Object.defineProperty(q,"Decoder",{enumerable:!0,get:function(){return Pd.Decoder}});var vd=Vn();Object.defineProperty(q,"DecodeError",{enumerable:!0,get:function(){return vd.DecodeError}});var xd=yi();Object.defineProperty(q,"Encoder",{enumerable:!0,get:function(){return xd.Encoder}});var Ad=Yn();Object.defineProperty(q,"ExtensionCodec",{enumerable:!0,get:function(){return Ad.ExtensionCodec}});var Ed=ui();Object.defineProperty(q,"ExtData",{enumerable:!0,get:function(){return Ed.ExtData}});var Jt=mi();Object.defineProperty(q,"EXT_TIMESTAMP",{enumerable:!0,get:function(){return Jt.EXT_TIMESTAMP}});Object.defineProperty(q,"encodeDateToTimeSpec",{enumerable:!0,get:function(){return Jt.encodeDateToTimeSpec}});Object.defineProperty(q,"encodeTimeSpecToTimestamp",{enumerable:!0,get:function(){return Jt.encodeTimeSpecToTimestamp}});Object.defineProperty(q,"decodeTimestampToTimeSpec",{enumerable:!0,get:function(){return Jt.decodeTimestampToTimeSpec}});Object.defineProperty(q,"encodeTimestampExtension",{enumerable:!0,get:function(){return Jt.encodeTimestampExtension}});Object.defineProperty(q,"decodeTimestampExtension",{enumerable:!0,get:function(){return Jt.decodeTimestampExtension}})});var Mc=pe((j0,Hf)=>{Hf.exports={name:"@rajbos/ai-engineering-fluency",version:"0.2.5",description:"AI Engineering Fluency - CLI tool to analyze GitHub Copilot token usage from local session files",license:"MIT",author:"RobBos",repository:{type:"git",url:"git+https://github.com/rajbos/ai-engineering-fluency.git",directory:"cli"},keywords:["github-copilot","token-usage","copilot","cli","token-tracker"],bin:{"ai-engineering-fluency":"dist/cli.js"},files:["dist/**/*"],scripts:{build:"node esbuild.js","build:production":"node esbuild.js --production","bundle-exe":"pwsh -NoProfile -File bundle-exe.ps1",lint:"eslint src","check-types":"tsc --noEmit",test:"node dist/cli.js --help && node dist/cli.js --version"},devDependencies:{"@msgpack/msgpack":"^3.1.3","@types/node":"^25.5.0",chalk:"^5.6.2",commander:"^15.0.0",esbuild:"^0.28.0","sql.js":"^1.12.0",typescript:"^6.0.2"},engines:{node:">=22.14.0"}}});var ft=class extends Error{constructor(e,t,s){super(s),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},xt=class extends ft{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};var Cs=class{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:(t.push(e),t)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,s)=>{if(!this.argChoices.includes(t))throw new xt(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(t,s):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function Tn(n){let e=n.name()+(n.variadic===!0?"...":"");return n.required?"<"+e+">":"["+e+"]"}var ua=require("node:events"),Pn=A(require("node:child_process"),1),Ve=A(require("node:path"),1),ks=A(require("node:fs"),1),H=A(require("node:process"),1),da=require("node:util");var ra=require("node:util"),bs=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(e){this.helpWidth=this.helpWidth??e.helpWidth??80}visibleCommands(e){let t=e.commands.filter(o=>!o._hidden),s=e._getHelpCommand();return s&&!s._hidden&&t.push(s),this.sortSubcommands&&t.sort((o,i)=>o.name().localeCompare(i.name())),t}compareOptions(e,t){let s=o=>o.short?o.short.replace(/^-/,""):o.long.replace(/^--/,"");return s(e).localeCompare(s(t))}visibleOptions(e){let t=e.options.filter(o=>!o.hidden),s=e._getHelpOption();if(s&&!s.hidden){let o=s.short&&e._findOption(s.short),i=s.long&&e._findOption(s.long);!o&&!i?t.push(s):s.long&&!i?t.push(e.createOption(s.long,s.description)):s.short&&!o&&t.push(e.createOption(s.short,s.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let s=e.parent;s;s=s.parent){let o=s.options.filter(i=>!i.hidden);t.push(...o)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||""}),e.registeredArguments.find(t=>t.description)?e.registeredArguments:[]}subcommandTerm(e){let t=e.registeredArguments.map(s=>Tn(s)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleSubcommandTerm(t.subcommandTerm(o)))),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleOptionTerm(t.optionTerm(o)))),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleOptionTerm(t.optionTerm(o)))),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleArgumentTerm(t.argumentTerm(o)))),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let s="";for(let o=e.parent;o;o=o.parent)s=o.name()+" "+s;return s+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(s=>JSON.stringify(s)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0){let s=`(${t.join(", ")})`;return e.description?`${e.description} ${s}`:s}return e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(s=>JSON.stringify(s)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let s=`(${t.join(", ")})`;return e.description?`${e.description} ${s}`:s}return e.description}formatItemList(e,t,s){return t.length===0?[]:[s.styleTitle(e),...t,""]}groupItems(e,t,s){let o=new Map;return e.forEach(i=>{let r=s(i);o.has(r)||o.set(r,[])}),t.forEach(i=>{let r=s(i);o.has(r)||o.set(r,[]),o.get(r).push(i)}),o}formatHelp(e,t){let s=t.padWidth(e,t),o=t.helpWidth??80;function i(f,_){return t.formatItem(f,s,_,t)}let r=[`${t.styleTitle("Usage:")} ${t.styleUsage(t.commandUsage(e))}`,""],l=t.commandDescription(e);l.length>0&&(r=r.concat([t.boxWrap(t.styleCommandDescription(l),o),""]));let d=t.visibleArguments(e).map(f=>i(t.styleArgumentTerm(t.argumentTerm(f)),t.styleArgumentDescription(t.argumentDescription(f))));if(r=r.concat(this.formatItemList("Arguments:",d,t)),this.groupItems(e.options,t.visibleOptions(e),f=>f.helpGroupHeading??"Options:").forEach((f,_)=>{let k=f.map(b=>i(t.styleOptionTerm(t.optionTerm(b)),t.styleOptionDescription(t.optionDescription(b))));r=r.concat(this.formatItemList(_,k,t))}),t.showGlobalOptions){let f=t.visibleGlobalOptions(e).map(_=>i(t.styleOptionTerm(t.optionTerm(_)),t.styleOptionDescription(t.optionDescription(_))));r=r.concat(this.formatItemList("Global Options:",f,t))}return this.groupItems(e.commands,t.visibleCommands(e),f=>f.helpGroup()||"Commands:").forEach((f,_)=>{let k=f.map(b=>i(t.styleSubcommandTerm(t.subcommandTerm(b)),t.styleSubcommandDescription(t.subcommandDescription(b))));r=r.concat(this.formatItemList(_,k,t))}),r.join(`
4
- `)}displayWidth(e){return(0,ra.stripVTControlCharacters)(e).length}styleTitle(e){return e}styleUsage(e){return e.split(" ").map(t=>t==="[options]"?this.styleOptionText(t):t==="[command]"?this.styleSubcommandText(t):t[0]==="["||t[0]==="<"?this.styleArgumentText(t):this.styleCommandText(t)).join(" ")}styleCommandDescription(e){return this.styleDescriptionText(e)}styleOptionDescription(e){return this.styleDescriptionText(e)}styleSubcommandDescription(e){return this.styleDescriptionText(e)}styleArgumentDescription(e){return this.styleDescriptionText(e)}styleDescriptionText(e){return e}styleOptionTerm(e){return this.styleOptionText(e)}styleSubcommandTerm(e){return e.split(" ").map(t=>t==="[options]"?this.styleOptionText(t):t[0]==="["||t[0]==="<"?this.styleArgumentText(t):this.styleSubcommandText(t)).join(" ")}styleArgumentTerm(e){return this.styleArgumentText(e)}styleOptionText(e){return e}styleArgumentText(e){return e}styleSubcommandText(e){return e}styleCommandText(e){return e}padWidth(e,t){return Math.max(t.longestOptionTermLength(e,t),t.longestGlobalOptionTermLength(e,t),t.longestSubcommandTermLength(e,t),t.longestArgumentTermLength(e,t))}preformatted(e){return/\n[^\S\r\n]/.test(e)}formatItem(e,t,s,o){let r=" ".repeat(2);if(!s)return r+e;let l=e.padEnd(t+e.length-o.displayWidth(e)),d=2,p=(this.helpWidth??80)-t-d-2,f;return p<this.minWidthToWrap||o.preformatted(s)?f=s:f=o.boxWrap(s,p).replace(/\n/g,`
2
+ "use strict";var wu=Object.create;var ca=Object.defineProperty;var Tu=Object.getOwnPropertyDescriptor;var Mu=Object.getOwnPropertyNames;var Pu=Object.getPrototypeOf,vu=Object.prototype.hasOwnProperty;var he=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var xu=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Mu(e))!vu.call(n,o)&&o!==t&&ca(n,o,{get:()=>e[o],enumerable:!(s=Tu(e,o))||s.enumerable});return n};var v=(n,e,t)=>(t=n!=null?wu(Pu(n)):{},xu(e||!n||!n.__esModule?ca(t,"default",{value:n,enumerable:!0}):t,n));var qn=he((Bn,Et)=>{var Gn=void 0,jn=function(n){return Gn||(Gn=new Promise(function(e,t){var s=typeof n<"u"?n:{},o=s.onAbort;s.onAbort=function(a){t(new Error(a)),o&&o(a)},s.postRun=s.postRun||[],s.postRun.push(function(){e(s)}),Et=void 0;var i;i||=typeof s<"u"?s:{};var r=!!globalThis.window,l=!!globalThis.WorkerGlobalScope,d=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";i.onRuntimeInitialized=function(){function a(y,T){switch(typeof T){case"boolean":ku(y,T?1:0);break;case"number":_u(y,T);break;case"string":Cu(y,T,-1,-1);break;case"object":if(T===null)ia(y);else if(T.length!=null){var D=Sn(T.length);E.set(T,D),bu(y,D,T.length,-1),bs(D)}else Pn(y,"Wrong API use : tried to return a value of an unknown type ("+T+").",-1);break;default:ia(y)}}function c(y,T){for(var D=[],R=0;R<y;R+=1){var j=Xe(T+4*R,"i32"),J=pu(j);if(J===1||J===2)j=yu(j);else if(J===3)j=fu(j);else if(J===4){J=j,j=gu(J),J=hu(J);for(var Ge=new Uint8Array(j),Ue=0;Ue<j;Ue+=1)Ge[Ue]=E[J+Ue];j=Ge}else j=null;D.push(j)}return D}function u(y,T){this.Qa=y,this.db=T,this.Oa=1,this.mb=[]}function g(y,T){if(this.db=T,this.fb=kn(y),this.fb===null)throw Error("Unable to allocate memory for the SQL string");this.lb=this.fb,this.$a=this.sb=null}function h(y){if(this.filename="dbfile_"+(4294967295*Math.random()>>>0),y!=null){var T=this.filename,D="/",R=T;if(D&&(D=typeof D=="string"?D:Wo(D),R=T?qo(D+"/"+T):D),T=Rr(!0,!0),R=qc(R,T),y){if(typeof y=="string"){D=Array(y.length);for(var j=0,J=y.length;j<J;++j)D[j]=y.charCodeAt(j);y=D}yn(R,T|146),D=$t(R,577),Vr(D,y,0,y.length,0),Yo(D),yn(R,T)}}this.handleError(U(this.filename,C)),this.db=Xe(C,"i32"),aa(this.db),this.gb={},this.Sa={}}var C=Pt(4),w=i.cwrap,U=w("sqlite3_open","number",["string","number"]),V=w("sqlite3_close_v2","number",["number"]),L=w("sqlite3_exec","number",["number","string","number","number","number"]),ne=w("sqlite3_changes","number",["number"]),_e=w("sqlite3_prepare_v2","number",["number","string","number","number","number"]),ea=w("sqlite3_sql","string",["number"]),Qc=w("sqlite3_normalized_sql","string",["number"]),ta=w("sqlite3_prepare_v2","number",["number","number","number","number","number"]),Yc=w("sqlite3_bind_text","number",["number","number","number","number","number"]),sa=w("sqlite3_bind_blob","number",["number","number","number","number","number"]),Xc=w("sqlite3_bind_double","number",["number","number","number"]),Zc=w("sqlite3_bind_int","number",["number","number","number"]),eu=w("sqlite3_bind_parameter_index","number",["number","string"]),tu=w("sqlite3_step","number",["number"]),su=w("sqlite3_errmsg","string",["number"]),nu=w("sqlite3_column_count","number",["number"]),ou=w("sqlite3_data_count","number",["number"]),iu=w("sqlite3_column_double","number",["number","number"]),na=w("sqlite3_column_text","string",["number","number"]),ru=w("sqlite3_column_blob","number",["number","number"]),au=w("sqlite3_column_bytes","number",["number","number"]),lu=w("sqlite3_column_type","number",["number","number"]),cu=w("sqlite3_column_name","string",["number","number"]),uu=w("sqlite3_reset","number",["number"]),du=w("sqlite3_clear_bindings","number",["number"]),mu=w("sqlite3_finalize","number",["number"]),oa=w("sqlite3_create_function_v2","number","number string number number number number number number number".split(" ")),pu=w("sqlite3_value_type","number",["number"]),gu=w("sqlite3_value_bytes","number",["number"]),fu=w("sqlite3_value_text","string",["number"]),hu=w("sqlite3_value_blob","number",["number"]),yu=w("sqlite3_value_double","number",["number"]),_u=w("sqlite3_result_double","",["number","number"]),ia=w("sqlite3_result_null","",["number"]),Cu=w("sqlite3_result_text","",["number","string","number","number"]),bu=w("sqlite3_result_blob","",["number","number","number","number"]),ku=w("sqlite3_result_int","",["number","number"]),Pn=w("sqlite3_result_error","",["number","string","number"]),ra=w("sqlite3_aggregate_context","number",["number","number"]),aa=w("RegisterExtensionFunctions","number",["number"]),la=w("sqlite3_update_hook","number",["number","number","number"]);u.prototype.bind=function(y){if(!this.Qa)throw"Statement closed";return this.reset(),Array.isArray(y)?this.Gb(y):y!=null&&typeof y=="object"?this.Hb(y):!0},u.prototype.step=function(){if(!this.Qa)throw"Statement closed";this.Oa=1;var y=tu(this.Qa);switch(y){case 100:return!0;case 101:return!1;default:throw this.db.handleError(y)}},u.prototype.Ab=function(y){return y==null&&(y=this.Oa,this.Oa+=1),iu(this.Qa,y)},u.prototype.Ob=function(y){if(y==null&&(y=this.Oa,this.Oa+=1),y=na(this.Qa,y),typeof BigInt!="function")throw Error("BigInt is not supported");return BigInt(y)},u.prototype.Tb=function(y){return y==null&&(y=this.Oa,this.Oa+=1),na(this.Qa,y)},u.prototype.getBlob=function(y){y==null&&(y=this.Oa,this.Oa+=1);var T=au(this.Qa,y);y=ru(this.Qa,y);for(var D=new Uint8Array(T),R=0;R<T;R+=1)D[R]=E[y+R];return D},u.prototype.get=function(y,T){T=T||{},y!=null&&this.bind(y)&&this.step(),y=[];for(var D=ou(this.Qa),R=0;R<D;R+=1)switch(lu(this.Qa,R)){case 1:var j=T.useBigInt?this.Ob(R):this.Ab(R);y.push(j);break;case 2:y.push(this.Ab(R));break;case 3:y.push(this.Tb(R));break;case 4:y.push(this.getBlob(R));break;default:y.push(null)}return y},u.prototype.qb=function(){for(var y=[],T=nu(this.Qa),D=0;D<T;D+=1)y.push(cu(this.Qa,D));return y},u.prototype.zb=function(y,T){y=this.get(y,T),T=this.qb();for(var D={},R=0;R<T.length;R+=1)D[T[R]]=y[R];return D},u.prototype.Sb=function(){return ea(this.Qa)},u.prototype.Pb=function(){return Qc(this.Qa)},u.prototype.run=function(y){return y!=null&&this.bind(y),this.step(),this.reset()},u.prototype.wb=function(y,T){T==null&&(T=this.Oa,this.Oa+=1),y=kn(y),this.mb.push(y),this.db.handleError(Yc(this.Qa,T,y,-1,0))},u.prototype.Fb=function(y,T){T==null&&(T=this.Oa,this.Oa+=1);var D=Sn(y.length);E.set(y,D),this.mb.push(D),this.db.handleError(sa(this.Qa,T,D,y.length,0))},u.prototype.vb=function(y,T){T==null&&(T=this.Oa,this.Oa+=1),this.db.handleError((y===(y|0)?Zc:Xc)(this.Qa,T,y))},u.prototype.Ib=function(y){y==null&&(y=this.Oa,this.Oa+=1),sa(this.Qa,y,0,0,0)},u.prototype.xb=function(y,T){switch(T==null&&(T=this.Oa,this.Oa+=1),typeof y){case"string":this.wb(y,T);return;case"number":this.vb(y,T);return;case"bigint":this.wb(y.toString(),T);return;case"boolean":this.vb(y+0,T);return;case"object":if(y===null){this.Ib(T);return}if(y.length!=null){this.Fb(y,T);return}}throw"Wrong API use : tried to bind a value of an unknown type ("+y+")."},u.prototype.Hb=function(y){var T=this;return Object.keys(y).forEach(function(D){var R=eu(T.Qa,D);R!==0&&T.xb(y[D],R)}),!0},u.prototype.Gb=function(y){for(var T=0;T<y.length;T+=1)this.xb(y[T],T+1);return!0},u.prototype.reset=function(){return this.freemem(),du(this.Qa)===0&&uu(this.Qa)===0},u.prototype.freemem=function(){for(var y;(y=this.mb.pop())!==void 0;)bs(y)},u.prototype.Ya=function(){this.freemem();var y=mu(this.Qa)===0;return delete this.db.gb[this.Qa],this.Qa=0,y},g.prototype.next=function(){if(this.fb===null)return{done:!0};if(this.$a!==null&&(this.$a.Ya(),this.$a=null),!this.db.db)throw this.ob(),Error("Database closed");var y=Tn(),T=Pt(4);fs(C),fs(T);try{this.db.handleError(ta(this.db.db,this.lb,-1,C,T)),this.lb=Xe(T,"i32");var D=Xe(C,"i32");return D===0?(this.ob(),{done:!0}):(this.$a=new u(D,this.db),this.db.gb[D]=this.$a,{value:this.$a,done:!1})}catch(R){throw this.sb=de(this.lb),this.ob(),R}finally{wn(y)}},g.prototype.ob=function(){bs(this.fb),this.fb=null},g.prototype.Qb=function(){return this.sb!==null?this.sb:de(this.lb)},typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"&&(g.prototype[Symbol.iterator]=function(){return this}),h.prototype.run=function(y,T){if(!this.db)throw"Database closed";if(T){y=this.tb(y,T);try{y.step()}finally{y.Ya()}}else this.handleError(L(this.db,y,0,0,C));return this},h.prototype.exec=function(y,T,D){if(!this.db)throw"Database closed";var R=null,j=null,J=null;try{J=j=kn(y);var Ge=Pt(4);for(y=[];Xe(J,"i8")!==0;){fs(C),fs(Ge),this.handleError(ta(this.db,J,-1,C,Ge));var Ue=Xe(C,"i32");if(J=Xe(Ge,"i32"),Ue!==0){var xe=null;for(R=new u(Ue,this),T!=null&&R.bind(T);R.step();)xe===null&&(xe={columns:R.qb(),values:[]},y.push(xe)),xe.values.push(R.get(null,D));R.Ya()}}return y}catch(je){throw R&&R.Ya(),je}finally{j&&bs(j)}},h.prototype.Mb=function(y,T,D,R,j){typeof T=="function"&&(R=D,D=T,T=void 0),y=this.tb(y,T);try{for(;y.step();)D(y.zb(null,j))}finally{y.Ya()}if(typeof R=="function")return R()},h.prototype.tb=function(y,T){if(fs(C),this.handleError(_e(this.db,y,-1,C,0)),y=Xe(C,"i32"),y===0)throw"Nothing to prepare";var D=new u(y,this);return T!=null&&D.bind(T),this.gb[y]=D},h.prototype.Ub=function(y){return new g(y,this)},h.prototype.Nb=function(){Object.values(this.gb).forEach(function(T){T.Ya()}),Object.values(this.Sa).forEach(pt),this.Sa={},this.handleError(V(this.db));var y=zc(this.filename);return this.handleError(U(this.filename,C)),this.db=Xe(C,"i32"),aa(this.db),y},h.prototype.close=function(){this.db!==null&&(Object.values(this.gb).forEach(function(y){y.Ya()}),Object.values(this.Sa).forEach(pt),this.Sa={},this.Za&&(pt(this.Za),this.Za=void 0),this.handleError(V(this.db)),qr("/"+this.filename),this.db=null)},h.prototype.handleError=function(y){if(y===0)return null;throw y=su(this.db),Error(y)},h.prototype.Rb=function(){return ne(this.db)},h.prototype.Kb=function(y,T){Object.prototype.hasOwnProperty.call(this.Sa,y)&&(pt(this.Sa[y]),delete this.Sa[y]);var D=Cs(function(R,j,J){j=c(j,J);try{var Ge=T.apply(null,j)}catch(Ue){Pn(R,Ue,-1);return}a(R,Ge)},"viii");return this.Sa[y]=D,this.handleError(oa(this.db,y,T.length,1,0,D,0,0,0)),this},h.prototype.Jb=function(y,T){var D=T.init||function(){return null},R=T.finalize||function(xe){return xe},j=T.step;if(!j)throw"An aggregate function must have a step function in "+y;var J={};Object.hasOwnProperty.call(this.Sa,y)&&(pt(this.Sa[y]),delete this.Sa[y]),T=y+"__finalize",Object.hasOwnProperty.call(this.Sa,T)&&(pt(this.Sa[T]),delete this.Sa[T]);var Ge=Cs(function(xe,je,oi){var vt=ra(xe,1);Object.hasOwnProperty.call(J,vt)||(J[vt]=D()),je=c(je,oi),je=[J[vt]].concat(je);try{J[vt]=j.apply(null,je)}catch(Su){delete J[vt],Pn(xe,Su,-1)}},"viii"),Ue=Cs(function(xe){var je=ra(xe,1);try{var oi=R(J[je])}catch(vt){delete J[je],Pn(xe,vt,-1);return}a(xe,oi),delete J[je]},"vi");return this.Sa[y]=Ge,this.Sa[T]=Ue,this.handleError(oa(this.db,y,j.length-1,1,0,0,Ge,Ue,0)),this},h.prototype.Zb=function(y){return this.Za&&(la(this.db,0,0),pt(this.Za),this.Za=void 0),y?(this.Za=Cs(function(T,D,R,j,J){switch(D){case 18:T="insert";break;case 23:T="update";break;case 9:T="delete";break;default:throw"unknown operationCode in updateHook callback: "+D}if(R=de(R),j=de(j),J>Number.MAX_SAFE_INTEGER)throw"rowId too big to fit inside a Number";y(T,R,j,Number(J))},"viiiij"),la(this.db,this.Za,0),this):this},u.prototype.bind=u.prototype.bind,u.prototype.step=u.prototype.step,u.prototype.get=u.prototype.get,u.prototype.getColumnNames=u.prototype.qb,u.prototype.getAsObject=u.prototype.zb,u.prototype.getSQL=u.prototype.Sb,u.prototype.getNormalizedSQL=u.prototype.Pb,u.prototype.run=u.prototype.run,u.prototype.reset=u.prototype.reset,u.prototype.freemem=u.prototype.freemem,u.prototype.free=u.prototype.Ya,g.prototype.next=g.prototype.next,g.prototype.getRemainingSQL=g.prototype.Qb,h.prototype.run=h.prototype.run,h.prototype.exec=h.prototype.exec,h.prototype.each=h.prototype.Mb,h.prototype.prepare=h.prototype.tb,h.prototype.iterateStatements=h.prototype.Ub,h.prototype.export=h.prototype.Nb,h.prototype.close=h.prototype.close,h.prototype.handleError=h.prototype.handleError,h.prototype.getRowsModified=h.prototype.Rb,h.prototype.create_function=h.prototype.Kb,h.prototype.create_aggregate=h.prototype.Jb,h.prototype.updateHook=h.prototype.Zb,i.Database=h};var m="./this.program",p=(a,c)=>{throw c},f=globalThis.document?.currentScript?.src;typeof __filename<"u"?f=__filename:l&&(f=self.location.href);var _="",k,b;if(d){var M=require("node:fs");_=__dirname+"/",b=a=>(a=P(a)?new URL(a):a,M.readFileSync(a)),k=async a=>(a=P(a)?new URL(a):a,M.readFileSync(a,void 0)),1<process.argv.length&&(m=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),typeof Et<"u"&&(Et.exports=i),p=(a,c)=>{throw process.exitCode=a,c}}else if(r||l){try{_=new URL(".",f).href}catch{}l&&(b=a=>{var c=new XMLHttpRequest;return c.open("GET",a,!1),c.responseType="arraybuffer",c.send(null),new Uint8Array(c.response)}),k=async a=>{if(P(a))return new Promise((u,g)=>{var h=new XMLHttpRequest;h.open("GET",a,!0),h.responseType="arraybuffer",h.onload=()=>{h.status==200||h.status==0&&h.response?u(h.response):g(h.status)},h.onerror=g,h.send(null)});var c=await fetch(a,{credentials:"same-origin"});if(c.ok)return c.arrayBuffer();throw Error(c.status+" : "+c.url)}}var F=console.log.bind(console),x=console.error.bind(console),I,ee=!1,B,P=a=>a.startsWith("file://"),E,O,Z,te,Q,ds,Gt,ve;function ms(){var a=Mn.buffer;E=new Int8Array(a),Z=new Int16Array(a),O=new Uint8Array(a),new Uint16Array(a),te=new Int32Array(a),Q=new Uint32Array(a),ds=new Float32Array(a),Gt=new Float64Array(a),ve=new BigInt64Array(a),new BigUint64Array(a)}function ct(a){throw i.onAbort?.(a),a="Aborted("+a+")",x(a),ee=!0,new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.")}var Ye;async function un(a){if(!I)try{var c=await k(a);return new Uint8Array(c)}catch{}if(a==Ye&&I)a=new Uint8Array(I);else if(b)a=b(a);else throw"both async and sync fetching of the wasm failed";return a}async function dn(a,c){try{var u=await un(a);return await WebAssembly.instantiate(u,c)}catch(g){x(`failed to asynchronously prepare wasm: ${g}`),ct(g)}}async function Bo(a){var c=Ye;if(!I&&!P(c)&&!d)try{var u=fetch(c,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(u,a)}catch(g){x(`wasm streaming compile failed: ${g}`),x("falling back to ArrayBuffer instantiation")}return dn(c,a)}class K{name="ExitStatus";constructor(c){this.message=`Program terminated with exit(${c})`,this.status=c}}var be=a=>{for(;0<a.length;)a.shift()(i)},ut=[],jt=[],ps=()=>{var a=i.preRun.shift();jt.push(a)},St=0,gs=null;function Xe(a,c="i8"){switch(c.endsWith("*")&&(c="*"),c){case"i1":return E[a];case"i8":return E[a];case"i16":return Z[a>>1];case"i32":return te[a>>2];case"i64":return ve[a>>3];case"float":return ds[a>>2];case"double":return Gt[a>>3];case"*":return Q[a>>2];default:ct(`invalid type for getValue: ${c}`)}}var mn=!0;function fs(a){var c="i32";switch(c.endsWith("*")&&(c="*"),c){case"i1":E[a]=0;break;case"i8":E[a]=0;break;case"i16":Z[a>>1]=0;break;case"i32":te[a>>2]=0;break;case"i64":ve[a>>3]=BigInt(0);break;case"float":ds[a>>2]=0;break;case"double":Gt[a>>3]=0;break;case"*":Q[a>>2]=0;break;default:ct(`invalid type for setValue: ${c}`)}}var Mr=new TextDecoder,Pr=(a,c,u,g)=>{if(u=c+u,g)return u;for(;a[c]&&!(c>=u);)++c;return c},de=(a,c,u)=>a?Mr.decode(O.subarray(a,Pr(O,a,c,u))):"",vr=(a,c)=>{for(var u=0,g=a.length-1;0<=g;g--){var h=a[g];h==="."?a.splice(g,1):h===".."?(a.splice(g,1),u++):u&&(a.splice(g,1),u--)}if(c)for(;u;u--)a.unshift("..");return a},qo=a=>{var c=a.charAt(0)==="/",u=a.slice(-1)==="/";return(a=vr(a.split("/").filter(g=>!!g),!c).join("/"))||c||(a="."),a&&u&&(a+="/"),(c?"/":"")+a},xr=a=>{var c=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);return a=c[0],c=c[1],!a&&!c?".":(c&&=c.slice(0,-1),a+c)},pn=a=>a&&a.match(/([^\/]+|\/)\/*$/)[1],Rc=()=>{if(d){var a=require("node:crypto");return c=>a.randomFillSync(c)}return c=>crypto.getRandomValues(c)},Ar=a=>{(Ar=Rc())(a)},Ic=(...a)=>{for(var c="",u=!1,g=a.length-1;-1<=g&&!u;g--){if(u=0<=g?a[g]:"/",typeof u!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!u)return"";c=u+"/"+c,u=u.charAt(0)==="/"}return c=vr(c.split("/").filter(h=>!!h),!u).join("/"),(u?"/":"")+c||"."},hs=a=>{var c=Pr(a,0);return Mr.decode(a.buffer?a.subarray(0,c):new Uint8Array(a.slice(0,c)))},zo=[],Bt=a=>{for(var c=0,u=0;u<a.length;++u){var g=a.charCodeAt(u);127>=g?c++:2047>=g?c+=2:55296<=g&&57343>=g?(c+=4,++u):c+=3}return c},We=(a,c,u,g)=>{if(!(0<g))return 0;var h=u;g=u+g-1;for(var C=0;C<a.length;++C){var w=a.codePointAt(C);if(127>=w){if(u>=g)break;c[u++]=w}else if(2047>=w){if(u+1>=g)break;c[u++]=192|w>>6,c[u++]=128|w&63}else if(65535>=w){if(u+2>=g)break;c[u++]=224|w>>12,c[u++]=128|w>>6&63,c[u++]=128|w&63}else{if(u+3>=g)break;c[u++]=240|w>>18,c[u++]=128|w>>12&63,c[u++]=128|w>>6&63,c[u++]=128|w&63,C++}}return c[u]=0,u-h},Er=[];function Dr(a,c){Er[a]={input:[],output:[],eb:c},Ko(a,Uc)}var Uc={open(a){var c=Er[a.node.rdev];if(!c)throw new A(43);a.tty=c,a.seekable=!1},close(a){a.tty.eb.fsync(a.tty)},fsync(a){a.tty.eb.fsync(a.tty)},read(a,c,u,g){if(!a.tty||!a.tty.eb.Bb)throw new A(60);for(var h=0,C=0;C<g;C++){try{var w=a.tty.eb.Bb(a.tty)}catch{throw new A(29)}if(w===void 0&&h===0)throw new A(6);if(w==null)break;h++,c[u+C]=w}return h&&(a.node.atime=Date.now()),h},write(a,c,u,g){if(!a.tty||!a.tty.eb.ub)throw new A(60);try{for(var h=0;h<g;h++)a.tty.eb.ub(a.tty,c[u+h])}catch{throw new A(29)}return g&&(a.node.mtime=a.node.ctime=Date.now()),h}},Oc={Bb(){e:{if(!zo.length){var a=null;if(d){var c=Buffer.alloc(256),u=0,g=process.stdin.fd;try{u=M.readSync(g,c,0,256)}catch(h){if(h.toString().includes("EOF"))u=0;else throw h}0<u&&(a=c.slice(0,u).toString("utf-8"))}else globalThis.window?.prompt&&(a=window.prompt("Input: "),a!==null&&(a+=`
3
+ `));if(!a){a=null;break e}c=Array(Bt(a)+1),a=We(a,c,0,c.length),c.length=a,zo=c}a=zo.shift()}return a},ub(a,c){c===null||c===10?(F(hs(a.output)),a.output=[]):c!=0&&a.output.push(c)},fsync(a){0<a.output?.length&&(F(hs(a.output)),a.output=[])},hc(){return{bc:25856,dc:5,ac:191,cc:35387,$b:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ic(){return 0},jc(){return[24,80]}},Fc={ub(a,c){c===null||c===10?(x(hs(a.output)),a.output=[]):c!=0&&a.output.push(c)},fsync(a){0<a.output?.length&&(x(hs(a.output)),a.output=[])}},N={Wa:null,Xa(){return N.createNode(null,"/",16895,0)},createNode(a,c,u,g){if((u&61440)===24576||(u&61440)===4096)throw new A(63);return N.Wa||(N.Wa={dir:{node:{Ta:N.La.Ta,Ua:N.La.Ua,lookup:N.La.lookup,ib:N.La.ib,rename:N.La.rename,unlink:N.La.unlink,rmdir:N.La.rmdir,readdir:N.La.readdir,symlink:N.La.symlink},stream:{Va:N.Ma.Va}},file:{node:{Ta:N.La.Ta,Ua:N.La.Ua},stream:{Va:N.Ma.Va,read:N.Ma.read,write:N.Ma.write,jb:N.Ma.jb,kb:N.Ma.kb}},link:{node:{Ta:N.La.Ta,Ua:N.La.Ua,readlink:N.La.readlink},stream:{}},yb:{node:{Ta:N.La.Ta,Ua:N.La.Ua},stream:Bc}}),u=Fr(a,c,u,g),we(u.mode)?(u.La=N.Wa.dir.node,u.Ma=N.Wa.dir.stream,u.Na={}):(u.mode&61440)===32768?(u.La=N.Wa.file.node,u.Ma=N.Wa.file.stream,u.Ra=0,u.Na=null):(u.mode&61440)===40960?(u.La=N.Wa.link.node,u.Ma=N.Wa.link.stream):(u.mode&61440)===8192&&(u.La=N.Wa.yb.node,u.Ma=N.Wa.yb.stream),u.atime=u.mtime=u.ctime=Date.now(),a&&(a.Na[c]=u,a.atime=a.mtime=a.ctime=u.atime),u},fc(a){return a.Na?a.Na.subarray?a.Na.subarray(0,a.Ra):new Uint8Array(a.Na):new Uint8Array(0)},La:{Ta(a){var c={};return c.dev=(a.mode&61440)===8192?a.id:1,c.ino=a.id,c.mode=a.mode,c.nlink=1,c.uid=0,c.gid=0,c.rdev=a.rdev,we(a.mode)?c.size=4096:(a.mode&61440)===32768?c.size=a.Ra:(a.mode&61440)===40960?c.size=a.link.length:c.size=0,c.atime=new Date(a.atime),c.mtime=new Date(a.mtime),c.ctime=new Date(a.ctime),c.blksize=4096,c.blocks=Math.ceil(c.size/c.blksize),c},Ua(a,c){for(var u of["mode","atime","mtime","ctime"])c[u]!=null&&(a[u]=c[u]);c.size!==void 0&&(c=c.size,a.Ra!=c&&(c==0?(a.Na=null,a.Ra=0):(u=a.Na,a.Na=new Uint8Array(c),u&&a.Na.set(u.subarray(0,Math.min(c,a.Ra))),a.Ra=c)))},lookup(){throw N.nb||(N.nb=new A(44),N.nb.stack="<generic error, no stack>"),N.nb},ib(a,c,u,g){return N.createNode(a,c,u,g)},rename(a,c,u){try{var g=wt(c,u)}catch{}if(g){if(we(a.mode))for(var h in g.Na)throw new A(55);Vo(g)}delete a.parent.Na[a.name],c.Na[u]=a,a.name=u,c.ctime=c.mtime=a.parent.ctime=a.parent.mtime=Date.now()},unlink(a,c){delete a.Na[c],a.ctime=a.mtime=Date.now()},rmdir(a,c){var u=wt(a,c),g;for(g in u.Na)throw new A(55);delete a.Na[c],a.ctime=a.mtime=Date.now()},readdir(a){return[".","..",...Object.keys(a.Na)]},symlink(a,c,u){return a=N.createNode(a,c,41471,0),a.link=u,a},readlink(a){if((a.mode&61440)!==40960)throw new A(28);return a.link}},Ma:{read(a,c,u,g,h){var C=a.node.Na;if(h>=a.node.Ra)return 0;if(a=Math.min(a.node.Ra-h,g),8<a&&C.subarray)c.set(C.subarray(h,h+a),u);else for(g=0;g<a;g++)c[u+g]=C[h+g];return a},write(a,c,u,g,h,C){if(c.buffer===E.buffer&&(C=!1),!g)return 0;if(a=a.node,a.mtime=a.ctime=Date.now(),c.subarray&&(!a.Na||a.Na.subarray)){if(C)return a.Na=c.subarray(u,u+g),a.Ra=g;if(a.Ra===0&&h===0)return a.Na=c.slice(u,u+g),a.Ra=g;if(h+g<=a.Ra)return a.Na.set(c.subarray(u,u+g),h),g}C=h+g;var w=a.Na?a.Na.length:0;if(w>=C||(C=Math.max(C,w*(1048576>w?2:1.125)>>>0),w!=0&&(C=Math.max(C,256)),w=a.Na,a.Na=new Uint8Array(C),0<a.Ra&&a.Na.set(w.subarray(0,a.Ra),0)),a.Na.subarray&&c.subarray)a.Na.set(c.subarray(u,u+g),h);else for(C=0;C<g;C++)a.Na[h+C]=c[u+C];return a.Ra=Math.max(a.Ra,h+g),g},Va(a,c,u){if(u===1?c+=a.position:u===2&&(a.node.mode&61440)===32768&&(c+=a.node.Ra),0>c)throw new A(28);return c},jb(a,c,u,g,h){if((a.node.mode&61440)!==32768)throw new A(43);if(a=a.node.Na,h&2||!a||a.buffer!==E.buffer){h=!0,g=65536*Math.ceil(c/65536);var C=Xr(65536,g);if(C&&O.fill(0,C,C+g),g=C,!g)throw new A(48);a&&((0<u||u+c<a.length)&&(a.subarray?a=a.subarray(u,u+c):a=Array.prototype.slice.call(a,u,u+c)),E.set(a,g))}else h=!1,g=a.byteOffset;return{Xb:g,Eb:h}},kb(a,c,u,g){return N.Ma.write(a,c,0,g,u,!1),0}}},Rr=(a,c)=>{var u=0;return a&&(u|=365),c&&(u|=146),u},$o=null,Ir={},qt=[],Nc=1,dt=null,Ur=!1,Or=!0,A=class{name="ErrnoError";constructor(a){this.Pa=a}},Lc=class{hb={};node=null;get flags(){return this.hb.flags}set flags(a){this.hb.flags=a}get position(){return this.hb.position}set position(a){this.hb.position=a}},Gc=class{La={};Ma={};bb=null;constructor(a,c,u,g){a||=this,this.parent=a,this.Xa=a.Xa,this.id=Nc++,this.name=c,this.mode=u,this.rdev=g,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&365)===365}set read(a){a?this.mode|=365:this.mode&=-366}get write(){return(this.mode&146)===146}set write(a){a?this.mode|=146:this.mode&=-147}};function Ie(a,c={}){if(!a)throw new A(44);c.pb??(c.pb=!0),a.charAt(0)==="/"||(a="//"+a);var u=0;e:for(;40>u;u++){a=a.split("/").filter(U=>!!U);for(var g=$o,h="/",C=0;C<a.length;C++){var w=C===a.length-1;if(w&&c.parent)break;if(a[C]!==".")if(a[C]==="..")if(h=xr(h),g===g.parent){a=h+"/"+a.slice(C+1).join("/"),u--;continue e}else g=g.parent;else{h=qo(h+"/"+a[C]);try{g=wt(g,a[C])}catch(U){if(U?.Pa===44&&w&&c.Wb)return{path:h};throw U}if(!g.bb||w&&!c.pb||(g=g.bb.root),(g.mode&61440)===40960&&(!w||c.ab)){if(!g.La.readlink)throw new A(52);g=g.La.readlink(g),g.charAt(0)==="/"||(g=xr(h)+"/"+g),a=g+"/"+a.slice(C+1).join("/");continue e}}}return{path:h,node:g}}throw new A(32)}function Wo(a){for(var c;;){if(a===a.parent)return a=a.Xa.Db,c?a[a.length-1]!=="/"?`${a}/${c}`:a+c:a;c=c?`${a.name}/${c}`:a.name,a=a.parent}}function Ho(a,c){for(var u=0,g=0;g<c.length;g++)u=(u<<5)-u+c.charCodeAt(g)|0;return(a+u>>>0)%dt.length}function Vo(a){var c=Ho(a.parent.id,a.name);if(dt[c]===a)dt[c]=a.cb;else for(c=dt[c];c;){if(c.cb===a){c.cb=a.cb;break}c=c.cb}}function wt(a,c){var u=we(a.mode)?(u=zt(a,"x"))?u:a.La.lookup?0:2:54;if(u)throw new A(u);for(u=dt[Ho(a.id,c)];u;u=u.cb){var g=u.name;if(u.parent.id===a.id&&g===c)return u}return a.La.lookup(a,c)}function Fr(a,c,u,g){return a=new Gc(a,c,u,g),c=Ho(a.parent.id,a.name),a.cb=dt[c],dt[c]=a}function we(a){return(a&61440)===16384}function zt(a,c){return Or?0:c.includes("r")&&!(a.mode&292)||c.includes("w")&&!(a.mode&146)||c.includes("x")&&!(a.mode&73)?2:0}function Nr(a,c){if(!we(a.mode))return 54;try{return wt(a,c),20}catch{}return zt(a,"wx")}function Lr(a,c,u){try{var g=wt(a,c)}catch(h){return h.Pa}if(a=zt(a,"wx"))return a;if(u){if(!we(g.mode))return 54;if(g===g.parent||Wo(g)==="/")return 10}else if(we(g.mode))return 31;return 0}function gn(a){if(!a)throw new A(63);return a}function ke(a){if(a=qt[a],!a)throw new A(8);return a}function Gr(a,c=-1){if(a=Object.assign(new Lc,a),c==-1)e:{for(c=0;4096>=c;c++)if(!qt[c])break e;throw new A(33)}return a.fd=c,qt[c]=a}function jc(a,c=-1){return a=Gr(a,c),a.Ma?.ec?.(a),a}function Jo(a,c,u){var g=a?.Ma.Ua;a=g?a:c,g??=c.La.Ua,gn(g),g(a,u)}var Bc={open(a){a.Ma=Ir[a.node.rdev].Ma,a.Ma.open?.(a)},Va(){throw new A(70)}};function Ko(a,c){Ir[a]={Ma:c}}function jr(a,c){var u=c==="/";if(u&&$o)throw new A(10);if(!u&&c){var g=Ie(c,{pb:!1});if(c=g.path,g=g.node,g.bb)throw new A(10);if(!we(g.mode))throw new A(54)}c={type:a,kc:{},Db:c,Vb:[]},a=a.Xa(c),a.Xa=c,c.root=a,u?$o=a:g&&(g.bb=c,g.Xa&&g.Xa.Vb.push(c))}function fn(a,c,u){var g=Ie(a,{parent:!0}).node;if(a=pn(a),!a)throw new A(28);if(a==="."||a==="..")throw new A(20);var h=Nr(g,a);if(h)throw new A(h);if(!g.La.ib)throw new A(63);return g.La.ib(g,a,c,u)}function qc(a,c=438){return fn(a,c&4095|32768,0)}function He(a,c=511){return fn(a,c&1023|16384,0)}function hn(a,c,u){typeof u>"u"&&(u=c,c=438),fn(a,c|8192,u)}function Qo(a,c){if(!Ic(a))throw new A(44);var u=Ie(c,{parent:!0}).node;if(!u)throw new A(44);c=pn(c);var g=Nr(u,c);if(g)throw new A(g);if(!u.La.symlink)throw new A(63);u.La.symlink(u,c,a)}function Br(a){var c=Ie(a,{parent:!0}).node;a=pn(a);var u=wt(c,a),g=Lr(c,a,!0);if(g)throw new A(g);if(!c.La.rmdir)throw new A(63);if(u.bb)throw new A(10);c.La.rmdir(c,a),Vo(u)}function qr(a){var c=Ie(a,{parent:!0}).node;if(!c)throw new A(44);a=pn(a);var u=wt(c,a),g=Lr(c,a,!1);if(g)throw new A(g);if(!c.La.unlink)throw new A(63);if(u.bb)throw new A(10);c.La.unlink(c,a),Vo(u)}function ys(a,c){return a=Ie(a,{ab:!c}).node,gn(a.La.Ta)(a)}function zr(a,c,u,g){Jo(a,c,{mode:u&4095|c.mode&-4096,ctime:Date.now(),Lb:g})}function yn(a,c){a=typeof a=="string"?Ie(a,{ab:!0}).node:a,zr(null,a,c)}function $r(a,c,u){if(we(c.mode))throw new A(31);if((c.mode&61440)!==32768)throw new A(28);var g=zt(c,"w");if(g)throw new A(g);Jo(a,c,{size:u,timestamp:Date.now()})}function $t(a,c,u=438){if(a==="")throw new A(44);if(typeof c=="string"){var g={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[c];if(typeof g>"u")throw Error(`Unknown file open mode: ${c}`);c=g}if(u=c&64?u&4095|32768:0,typeof a=="object")g=a;else{var h=a.endsWith("/"),C=Ie(a,{ab:!(c&131072),Wb:!0});g=C.node,a=C.path}if(C=!1,c&64)if(g){if(c&128)throw new A(20)}else{if(h)throw new A(31);g=fn(a,u|511,0),C=!0}if(!g)throw new A(44);if((g.mode&61440)===8192&&(c&=-513),c&65536&&!we(g.mode))throw new A(54);if(!C&&(g?(g.mode&61440)===40960?h=32:(h=["r","w","rw"][c&3],c&512&&(h+="w"),h=we(g.mode)&&(h!=="r"||c&576)?31:zt(g,h)):h=44,h))throw new A(h);return c&512&&!C&&(h=g,h=typeof h=="string"?Ie(h,{ab:!0}).node:h,$r(null,h,0)),c=Gr({node:g,path:Wo(g),flags:c&-131713,seekable:!0,position:0,Ma:g.Ma,Yb:[],error:!1}),c.Ma.open&&c.Ma.open(c),C&&yn(g,u&511),c}function Yo(a){if(a.fd===null)throw new A(8);a.rb&&(a.rb=null);try{a.Ma.close&&a.Ma.close(a)}catch(c){throw c}finally{qt[a.fd]=null}a.fd=null}function Wr(a,c,u){if(a.fd===null)throw new A(8);if(!a.seekable||!a.Ma.Va)throw new A(70);if(u!=0&&u!=1&&u!=2)throw new A(28);a.position=a.Ma.Va(a,c,u),a.Yb=[]}function Hr(a,c,u,g,h){if(0>g||0>h)throw new A(28);if(a.fd===null)throw new A(8);if((a.flags&2097155)===1)throw new A(8);if(we(a.node.mode))throw new A(31);if(!a.Ma.read)throw new A(28);var C=typeof h<"u";if(!C)h=a.position;else if(!a.seekable)throw new A(70);return c=a.Ma.read(a,c,u,g,h),C||(a.position+=c),c}function Vr(a,c,u,g,h){if(0>g||0>h)throw new A(28);if(a.fd===null)throw new A(8);if((a.flags&2097155)===0)throw new A(8);if(we(a.node.mode))throw new A(31);if(!a.Ma.write)throw new A(28);a.seekable&&a.flags&1024&&Wr(a,0,2);var C=typeof h<"u";if(!C)h=a.position;else if(!a.seekable)throw new A(70);return c=a.Ma.write(a,c,u,g,h,void 0),C||(a.position+=c),c}function zc(a){var c=c||0,u="binary";u!=="utf8"&&u!=="binary"&&ct(`Invalid encoding type "${u}"`),c=$t(a,c),a=ys(a).size;var g=new Uint8Array(a);return Hr(c,g,0,a,0),u==="utf8"&&(g=hs(g)),Yo(c),g}function mt(a,c,u){a=qo("/dev/"+a);var g=Rr(!!c,!!u);mt.Cb??(mt.Cb=64);var h=mt.Cb++<<8|0;Ko(h,{open(C){C.seekable=!1},close(){u?.buffer?.length&&u(10)},read(C,w,U,V){for(var L=0,ne=0;ne<V;ne++){try{var _e=c()}catch{throw new A(29)}if(_e===void 0&&L===0)throw new A(6);if(_e==null)break;L++,w[U+ne]=_e}return L&&(C.node.atime=Date.now()),L},write(C,w,U,V){for(var L=0;L<V;L++)try{u(w[U+L])}catch{throw new A(29)}return V&&(C.node.mtime=C.node.ctime=Date.now()),L}}),hn(a,g,h)}var se={};function Tt(a,c,u){if(c.charAt(0)==="/")return c;if(a=a===-100?"/":ke(a).path,c.length==0){if(!u)throw new A(44);return a}return a+"/"+c}function _n(a,c){Q[a>>2]=c.dev,Q[a+4>>2]=c.mode,Q[a+8>>2]=c.nlink,Q[a+12>>2]=c.uid,Q[a+16>>2]=c.gid,Q[a+20>>2]=c.rdev,ve[a+24>>3]=BigInt(c.size),te[a+32>>2]=4096,te[a+36>>2]=c.blocks;var u=c.atime.getTime(),g=c.mtime.getTime(),h=c.ctime.getTime();return ve[a+40>>3]=BigInt(Math.floor(u/1e3)),Q[a+48>>2]=u%1e3*1e6,ve[a+56>>3]=BigInt(Math.floor(g/1e3)),Q[a+64>>2]=g%1e3*1e6,ve[a+72>>3]=BigInt(Math.floor(h/1e3)),Q[a+80>>2]=h%1e3*1e6,ve[a+88>>3]=BigInt(c.ino),0}var Cn=void 0,bn=()=>{var a=te[+Cn>>2];return Cn+=4,a},Xo=0,$c=[0,31,60,91,121,152,182,213,244,274,305,335],Wc=[0,31,59,90,120,151,181,212,243,273,304,334],_s={},Jr=a=>{B=a,mn||0<Xo||(i.onExit?.(a),ee=!0),p(a,new K(a))},Hc=a=>{if(!ee)try{a()}catch(c){c instanceof K||c=="unwind"||p(1,c)}finally{if(!(mn||0<Xo))try{B=a=B,Jr(a)}catch(c){c instanceof K||c=="unwind"||p(1,c)}}},Zo={},Kr=()=>{if(!ei){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:m||"./this.program"},c;for(c in Zo)Zo[c]===void 0?delete a[c]:a[c]=Zo[c];var u=[];for(c in a)u.push(`${c}=${a[c]}`);ei=u}return ei},ei,Vc=(a,c,u,g)=>{var h={string:L=>{var ne=0;if(L!=null&&L!==0){ne=Bt(L)+1;var _e=Pt(ne);We(L,O,_e,ne),ne=_e}return ne},array:L=>{var ne=Pt(L.length);return E.set(L,ne),ne}};a=i["_"+a];var C=[],w=0;if(g)for(var U=0;U<g.length;U++){var V=h[u[U]];V?(w===0&&(w=Tn()),C[U]=V(g[U])):C[U]=g[U]}return u=a(...C),u=(function(L){return w!==0&&wn(w),c==="string"?de(L):c==="boolean"?!!L:L})(u)},kn=a=>{var c=Bt(a)+1,u=Sn(c);return u&&We(a,O,u,c),u},Mt,ti=[],pt=a=>{Mt.delete(gt.get(a)),gt.set(a,null),ti.push(a)},Qr=a=>{let c=a.length;return[c%128|128,c>>7,...a]},Jc={i:127,p:127,j:126,f:125,d:124,e:111},Yr=a=>Qr(Array.from(a,c=>Jc[c])),Cs=(a,c)=>{if(!Mt){Mt=new WeakMap;var u=gt.length;if(Mt)for(var g=0;g<0+u;g++){var h=gt.get(g);h&&Mt.set(h,g)}}if(u=Mt.get(a)||0)return u;u=ti.length?ti.pop():gt.grow(1);try{gt.set(u,a)}catch(C){if(!(C instanceof TypeError))throw C;c=Uint8Array.of(0,97,115,109,1,0,0,0,1,...Qr([1,96,...Yr(c.slice(1)),...Yr(c[0]==="v"?"":c[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),c=new WebAssembly.Module(c),c=new WebAssembly.Instance(c,{e:{f:a}}).exports.f,gt.set(u,c)}return Mt.set(a,u),u};if(dt=Array(4096),jr(N,"/"),He("/tmp"),He("/home"),He("/home/web_user"),(function(){He("/dev"),Ko(259,{read:()=>0,write:(g,h,C,w)=>w,Va:()=>0}),hn("/dev/null",259),Dr(1280,Oc),Dr(1536,Fc),hn("/dev/tty",1280),hn("/dev/tty1",1536);var a=new Uint8Array(1024),c=0,u=()=>(c===0&&(Ar(a),c=a.byteLength),a[--c]);mt("random",u),mt("urandom",u),He("/dev/shm"),He("/dev/shm/tmp")})(),(function(){He("/proc");var a=He("/proc/self");He("/proc/self/fd"),jr({Xa(){var c=Fr(a,"fd",16895,73);return c.Ma={Va:N.Ma.Va},c.La={lookup(u,g){u=+g;var h=ke(u);return u={parent:null,Xa:{Db:"fake"},La:{readlink:()=>h.path},id:u+1},u.parent=u},readdir(){return Array.from(qt.entries()).filter(([,u])=>u).map(([u])=>u.toString())}},c}},"/proc/self/fd")})(),i.noExitRuntime&&(mn=i.noExitRuntime),i.print&&(F=i.print),i.printErr&&(x=i.printErr),i.wasmBinary&&(I=i.wasmBinary),i.thisProgram&&(m=i.thisProgram),i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.shift()();i.stackSave=()=>Tn(),i.stackRestore=a=>wn(a),i.stackAlloc=a=>Pt(a),i.cwrap=(a,c,u,g)=>{var h=!u||u.every(C=>C==="number"||C==="boolean");return c!=="string"&&h&&!g?i["_"+a]:(...C)=>Vc(a,c,u,C)},i.addFunction=Cs,i.removeFunction=pt,i.UTF8ToString=de,i.stringToNewUTF8=kn,i.writeArrayToMemory=(a,c)=>{E.set(a,c)};var Sn,bs,Xr,Zr,wn,Pt,Tn,Mn,gt,Kc={a:(a,c,u,g)=>ct(`Assertion failed: ${de(a)}, at: `+[c?de(c):"unknown filename",u,g?de(g):"unknown function"]),i:function(a,c){try{return a=de(a),yn(a,c),0}catch(u){if(typeof se>"u"||u.name!=="ErrnoError")throw u;return-u.Pa}},L:function(a,c,u){try{if(c=de(c),c=Tt(a,c),u&-8)return-28;var g=Ie(c,{ab:!0}).node;return g?(a="",u&4&&(a+="r"),u&2&&(a+="w"),u&1&&(a+="x"),a&&zt(g,a)?-2:0):-44}catch(h){if(typeof se>"u"||h.name!=="ErrnoError")throw h;return-h.Pa}},j:function(a,c){try{var u=ke(a);return zr(u,u.node,c,!1),0}catch(g){if(typeof se>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},h:function(a){try{var c=ke(a);return Jo(c,c.node,{timestamp:Date.now(),Lb:!1}),0}catch(u){if(typeof se>"u"||u.name!=="ErrnoError")throw u;return-u.Pa}},b:function(a,c,u){Cn=u;try{var g=ke(a);switch(c){case 0:var h=bn();if(0>h)break;for(;qt[h];)h++;return jc(g,h).fd;case 1:case 2:return 0;case 3:return g.flags;case 4:return h=bn(),g.flags|=h,0;case 12:return h=bn(),Z[h+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(C){if(typeof se>"u"||C.name!=="ErrnoError")throw C;return-C.Pa}},g:function(a,c){try{var u=ke(a),g=u.node,h=u.Ma.Ta;a=h?u:g,h??=g.La.Ta,gn(h);var C=h(a);return _n(c,C)}catch(w){if(typeof se>"u"||w.name!=="ErrnoError")throw w;return-w.Pa}},H:function(a,c){c=-9007199254740992>c||9007199254740992<c?NaN:Number(c);try{if(isNaN(c))return-61;var u=ke(a);if(0>c||(u.flags&2097155)===0)throw new A(28);return $r(u,u.node,c),0}catch(g){if(typeof se>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},G:function(a,c){try{if(c===0)return-28;var u=Bt("/")+1;return c<u?-68:(We("/",O,a,c),u)}catch(g){if(typeof se>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},K:function(a,c){try{return a=de(a),_n(c,ys(a,!0))}catch(u){if(typeof se>"u"||u.name!=="ErrnoError")throw u;return-u.Pa}},C:function(a,c,u){try{return c=de(c),c=Tt(a,c),He(c,u),0}catch(g){if(typeof se>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},J:function(a,c,u,g){try{c=de(c);var h=g&256;return c=Tt(a,c,g&4096),_n(u,h?ys(c,!0):ys(c))}catch(C){if(typeof se>"u"||C.name!=="ErrnoError")throw C;return-C.Pa}},x:function(a,c,u,g){Cn=g;try{c=de(c),c=Tt(a,c);var h=g?bn():0;return $t(c,u,h).fd}catch(C){if(typeof se>"u"||C.name!=="ErrnoError")throw C;return-C.Pa}},v:function(a,c,u,g){try{if(c=de(c),c=Tt(a,c),0>=g)return-28;var h=Ie(c).node;if(!h)throw new A(44);if(!h.La.readlink)throw new A(28);var C=h.La.readlink(h),w=Math.min(g,Bt(C)),U=E[u+w];return We(C,O,u,g+1),E[u+w]=U,w}catch(V){if(typeof se>"u"||V.name!=="ErrnoError")throw V;return-V.Pa}},u:function(a){try{return a=de(a),Br(a),0}catch(c){if(typeof se>"u"||c.name!=="ErrnoError")throw c;return-c.Pa}},f:function(a,c){try{return a=de(a),_n(c,ys(a))}catch(u){if(typeof se>"u"||u.name!=="ErrnoError")throw u;return-u.Pa}},r:function(a,c,u){try{if(c=de(c),c=Tt(a,c),u)if(u===512)Br(c);else return-28;else qr(c);return 0}catch(g){if(typeof se>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},q:function(a,c,u){try{c=de(c),c=Tt(a,c,!0);var g=Date.now(),h,C;if(u){var w=Q[u>>2]+4294967296*te[u+4>>2],U=te[u+8>>2];U==1073741823?h=g:U==1073741822?h=null:h=1e3*w+U/1e6,u+=16,w=Q[u>>2]+4294967296*te[u+4>>2],U=te[u+8>>2],U==1073741823?C=g:U==1073741822?C=null:C=1e3*w+U/1e6}else C=h=g;if((C??h)!==null){a=h;var V=Ie(c,{ab:!0}).node;gn(V.La.Ua)(V,{atime:a,mtime:C})}return 0}catch(L){if(typeof se>"u"||L.name!=="ErrnoError")throw L;return-L.Pa}},m:()=>ct(""),l:()=>{mn=!1,Xo=0},A:function(a,c){a=-9007199254740992>a||9007199254740992<a?NaN:Number(a),a=new Date(1e3*a),te[c>>2]=a.getSeconds(),te[c+4>>2]=a.getMinutes(),te[c+8>>2]=a.getHours(),te[c+12>>2]=a.getDate(),te[c+16>>2]=a.getMonth(),te[c+20>>2]=a.getFullYear()-1900,te[c+24>>2]=a.getDay();var u=a.getFullYear();te[c+28>>2]=(u%4!==0||u%100===0&&u%400!==0?Wc:$c)[a.getMonth()]+a.getDate()-1|0,te[c+36>>2]=-(60*a.getTimezoneOffset()),u=new Date(a.getFullYear(),6,1).getTimezoneOffset();var g=new Date(a.getFullYear(),0,1).getTimezoneOffset();te[c+32>>2]=(u!=g&&a.getTimezoneOffset()==Math.min(g,u))|0},y:function(a,c,u,g,h,C,w){h=-9007199254740992>h||9007199254740992<h?NaN:Number(h);try{var U=ke(g);if((c&2)!==0&&(u&2)===0&&(U.flags&2097155)!==2)throw new A(2);if((U.flags&2097155)===1)throw new A(2);if(!U.Ma.jb)throw new A(43);if(!a)throw new A(28);var V=U.Ma.jb(U,a,h,c,u),L=V.Xb;return te[C>>2]=V.Eb,Q[w>>2]=L,0}catch(ne){if(typeof se>"u"||ne.name!=="ErrnoError")throw ne;return-ne.Pa}},z:function(a,c,u,g,h,C){C=-9007199254740992>C||9007199254740992<C?NaN:Number(C);try{var w=ke(h);if(u&2){if(u=C,(w.node.mode&61440)!==32768)throw new A(43);if(!(g&2)){var U=O.slice(a,a+c);w.Ma.kb&&w.Ma.kb(w,U,u,c,g)}}}catch(V){if(typeof se>"u"||V.name!=="ErrnoError")throw V;return-V.Pa}},n:(a,c)=>{if(_s[a]&&(clearTimeout(_s[a].id),delete _s[a]),!c)return 0;var u=setTimeout(()=>{delete _s[a],Hc(()=>Zr(a,performance.now()))},c);return _s[a]={id:u,lc:c},0},B:(a,c,u,g)=>{var h=new Date().getFullYear(),C=new Date(h,0,1).getTimezoneOffset();h=new Date(h,6,1).getTimezoneOffset(),Q[a>>2]=60*Math.max(C,h),te[c>>2]=+(C!=h),c=w=>{var U=Math.abs(w);return`UTC${0<=w?"-":"+"}${String(Math.floor(U/60)).padStart(2,"0")}${String(U%60).padStart(2,"0")}`},a=c(C),c=c(h),h<C?(We(a,O,u,17),We(c,O,g,17)):(We(a,O,g,17),We(c,O,u,17))},d:()=>Date.now(),s:()=>2147483648,c:()=>performance.now(),o:a=>{var c=O.length;if(a>>>=0,2147483648<a)return!1;for(var u=1;4>=u;u*=2){var g=c*(1+.2/u);g=Math.min(g,a+100663296);e:{g=(Math.min(2147483648,65536*Math.ceil(Math.max(a,g)/65536))-Mn.buffer.byteLength+65535)/65536|0;try{Mn.grow(g),ms();var h=1;break e}catch{}h=void 0}if(h)return!0}return!1},E:(a,c)=>{var u=0,g=0,h;for(h of Kr()){var C=c+u;Q[a+g>>2]=C,u+=We(h,O,C,1/0)+1,g+=4}return 0},F:(a,c)=>{var u=Kr();Q[a>>2]=u.length,a=0;for(var g of u)a+=Bt(g)+1;return Q[c>>2]=a,0},e:function(a){try{var c=ke(a);return Yo(c),0}catch(u){if(typeof se>"u"||u.name!=="ErrnoError")throw u;return u.Pa}},p:function(a,c){try{var u=ke(a);return E[c]=u.tty?2:we(u.mode)?3:(u.mode&61440)===40960?7:4,Z[c+2>>1]=0,ve[c+8>>3]=BigInt(0),ve[c+16>>3]=BigInt(0),0}catch(g){if(typeof se>"u"||g.name!=="ErrnoError")throw g;return g.Pa}},w:function(a,c,u,g){try{e:{var h=ke(a);a=c;for(var C,w=c=0;w<u;w++){var U=Q[a>>2],V=Q[a+4>>2];a+=8;var L=Hr(h,E,U,V,C);if(0>L){var ne=-1;break e}if(c+=L,L<V)break;typeof C<"u"&&(C+=L)}ne=c}return Q[g>>2]=ne,0}catch(_e){if(typeof se>"u"||_e.name!=="ErrnoError")throw _e;return _e.Pa}},D:function(a,c,u,g){c=-9007199254740992>c||9007199254740992<c?NaN:Number(c);try{if(isNaN(c))return 61;var h=ke(a);return Wr(h,c,u),ve[g>>3]=BigInt(h.position),h.rb&&c===0&&u===0&&(h.rb=null),0}catch(C){if(typeof se>"u"||C.name!=="ErrnoError")throw C;return C.Pa}},I:function(a){try{var c=ke(a);return c.Ma?.fsync?.(c)}catch(u){if(typeof se>"u"||u.name!=="ErrnoError")throw u;return u.Pa}},t:function(a,c,u,g){try{e:{var h=ke(a);a=c;for(var C,w=c=0;w<u;w++){var U=Q[a>>2],V=Q[a+4>>2];a+=8;var L=Vr(h,E,U,V,C);if(0>L){var ne=-1;break e}if(c+=L,L<V)break;typeof C<"u"&&(C+=L)}ne=c}return Q[g>>2]=ne,0}catch(_e){if(typeof se>"u"||_e.name!=="ErrnoError")throw _e;return _e.Pa}},k:Jr};function si(){function a(){if(i.calledRun=!0,!ee){if(!i.noFSInit&&!Ur){var c,u;Ur=!0,c??=i.stdin,u??=i.stdout,g??=i.stderr,c?mt("stdin",c):Qo("/dev/tty","/dev/stdin"),u?mt("stdout",null,u):Qo("/dev/tty","/dev/stdout"),g?mt("stderr",null,g):Qo("/dev/tty1","/dev/stderr"),$t("/dev/stdin",0),$t("/dev/stdout",1),$t("/dev/stderr",1)}if(ni.N(),Or=!1,i.onRuntimeInitialized?.(),i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;){var g=i.postRun.shift();ut.push(g)}be(ut)}}if(0<St)gs=si;else{if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)ps();be(jt),0<St?gs=si:i.setStatus?(i.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>i.setStatus(""),1),a()},1)):a()}}var ni;return(async function(){function a(u){return u=ni=u.exports,i._sqlite3_free=u.P,i._sqlite3_value_text=u.Q,i._sqlite3_prepare_v2=u.R,i._sqlite3_step=u.S,i._sqlite3_reset=u.T,i._sqlite3_exec=u.U,i._sqlite3_finalize=u.V,i._sqlite3_column_name=u.W,i._sqlite3_column_text=u.X,i._sqlite3_column_type=u.Y,i._sqlite3_errmsg=u.Z,i._sqlite3_clear_bindings=u._,i._sqlite3_value_blob=u.$,i._sqlite3_value_bytes=u.aa,i._sqlite3_value_double=u.ba,i._sqlite3_value_int=u.ca,i._sqlite3_value_type=u.da,i._sqlite3_result_blob=u.ea,i._sqlite3_result_double=u.fa,i._sqlite3_result_error=u.ga,i._sqlite3_result_int=u.ha,i._sqlite3_result_int64=u.ia,i._sqlite3_result_null=u.ja,i._sqlite3_result_text=u.ka,i._sqlite3_aggregate_context=u.la,i._sqlite3_column_count=u.ma,i._sqlite3_data_count=u.na,i._sqlite3_column_blob=u.oa,i._sqlite3_column_bytes=u.pa,i._sqlite3_column_double=u.qa,i._sqlite3_bind_blob=u.ra,i._sqlite3_bind_double=u.sa,i._sqlite3_bind_int=u.ta,i._sqlite3_bind_text=u.ua,i._sqlite3_bind_parameter_index=u.va,i._sqlite3_sql=u.wa,i._sqlite3_normalized_sql=u.xa,i._sqlite3_changes=u.ya,i._sqlite3_close_v2=u.za,i._sqlite3_create_function_v2=u.Aa,i._sqlite3_update_hook=u.Ba,i._sqlite3_open=u.Ca,Sn=i._malloc=u.Da,bs=i._free=u.Ea,i._RegisterExtensionFunctions=u.Fa,Xr=u.Ga,Zr=u.Ha,wn=u.Ia,Pt=u.Ja,Tn=u.Ka,Mn=u.M,gt=u.O,ms(),St--,i.monitorRunDependencies?.(St),St==0&&gs&&(u=gs,gs=null,u()),ni}St++,i.monitorRunDependencies?.(St);var c={a:Kc};return i.instantiateWasm?new Promise(u=>{i.instantiateWasm(c,(g,h)=>{u(a(g,h))})}):(Ye??=i.locateFile?i.locateFile("sql-wasm.wasm",_):_+"sql-wasm.wasm",a((await Bo(c)).instance))})(),si(),s}),Gn)};typeof Bn=="object"&&typeof Et=="object"?(Et.exports=jn,Et.exports.default=jn):typeof define=="function"&&define.amd?define([],function(){return jn}):typeof Bn=="object"&&(Bn.Module=jn)});var Hn=he(et=>{"use strict";Object.defineProperty(et,"__esModule",{value:!0});et.utf8Count=Vu;et.utf8EncodeJs=Oa;et.utf8EncodeTE=Fa;et.utf8Encode=Qu;et.utf8DecodeJs=Na;et.utf8DecodeTD=La;et.utf8Decode=ed;function Vu(n){let e=n.length,t=0,s=0;for(;s<e;){let o=n.charCodeAt(s++);if((o&4294967168)===0){t++;continue}else if((o&4294965248)===0)t+=2;else{if(o>=55296&&o<=56319&&s<e){let i=n.charCodeAt(s);(i&64512)===56320&&(++s,o=((o&1023)<<10)+(i&1023)+65536)}(o&4294901760)===0?t+=3:t+=4}}return t}function Oa(n,e,t){let s=n.length,o=t,i=0;for(;i<s;){let r=n.charCodeAt(i++);if((r&4294967168)===0){e[o++]=r;continue}else if((r&4294965248)===0)e[o++]=r>>6&31|192;else{if(r>=55296&&r<=56319&&i<s){let l=n.charCodeAt(i);(l&64512)===56320&&(++i,r=((r&1023)<<10)+(l&1023)+65536)}(r&4294901760)===0?(e[o++]=r>>12&15|224,e[o++]=r>>6&63|128):(e[o++]=r>>18&7|240,e[o++]=r>>12&63|128,e[o++]=r>>6&63|128)}e[o++]=r&63|128}}var Ju=new TextEncoder,Ku=50;function Fa(n,e,t){Ju.encodeInto(n,e.subarray(t))}function Qu(n,e,t){n.length>Ku?Fa(n,e,t):Oa(n,e,t)}var Yu=4096;function Na(n,e,t){let s=e,o=s+t,i=[],r="";for(;s<o;){let l=n[s++];if((l&128)===0)i.push(l);else if((l&224)===192){let d=n[s++]&63;i.push((l&31)<<6|d)}else if((l&240)===224){let d=n[s++]&63,m=n[s++]&63;i.push((l&31)<<12|d<<6|m)}else if((l&248)===240){let d=n[s++]&63,m=n[s++]&63,p=n[s++]&63,f=(l&7)<<18|d<<12|m<<6|p;f>65535&&(f-=65536,i.push(f>>>10&1023|55296),f=56320|f&1023),i.push(f)}else i.push(l);i.length>=Yu&&(r+=String.fromCharCode(...i),i.length=0)}return i.length>0&&(r+=String.fromCharCode(...i)),r}var Xu=new TextDecoder,Zu=200;function La(n,e,t){let s=n.subarray(e,e+t);return Xu.decode(s)}function ed(n,e,t){return t>Zu?La(n,e,t):Na(n,e,t)}});var gi=he(Vn=>{"use strict";Object.defineProperty(Vn,"__esModule",{value:!0});Vn.ExtData=void 0;var pi=class{type;data;constructor(e,t){this.type=e,this.data=t}};Vn.ExtData=pi});var Kn=he(Jn=>{"use strict";Object.defineProperty(Jn,"__esModule",{value:!0});Jn.DecodeError=void 0;var fi=class n extends Error{constructor(e){super(e);let t=Object.create(n.prototype);Object.setPrototypeOf(this,t),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:n.name})}};Jn.DecodeError=fi});var Qn=he(yt=>{"use strict";Object.defineProperty(yt,"__esModule",{value:!0});yt.UINT32_MAX=void 0;yt.setUint64=td;yt.setInt64=sd;yt.getInt64=nd;yt.getUint64=od;yt.UINT32_MAX=4294967295;function td(n,e,t){let s=t/4294967296,o=t;n.setUint32(e,s),n.setUint32(e+4,o)}function sd(n,e,t){let s=Math.floor(t/4294967296),o=t;n.setUint32(e,s),n.setUint32(e+4,o)}function nd(n,e){let t=n.getInt32(e),s=n.getUint32(e+4);return t*4294967296+s}function od(n,e){let t=n.getUint32(e),s=n.getUint32(e+4);return t*4294967296+s}});var hi=he(Fe=>{"use strict";Object.defineProperty(Fe,"__esModule",{value:!0});Fe.timestampExtension=Fe.EXT_TIMESTAMP=void 0;Fe.encodeTimeSpecToTimestamp=ja;Fe.encodeDateToTimeSpec=Ba;Fe.encodeTimestampExtension=qa;Fe.decodeTimestampToTimeSpec=za;Fe.decodeTimestampExtension=$a;var id=Kn(),Ga=Qn();Fe.EXT_TIMESTAMP=-1;var rd=4294967296-1,ad=17179869184-1;function ja({sec:n,nsec:e}){if(n>=0&&e>=0&&n<=ad)if(e===0&&n<=rd){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,n),t}else{let t=n/4294967296,s=n&4294967295,o=new Uint8Array(8),i=new DataView(o.buffer);return i.setUint32(0,e<<2|t&3),i.setUint32(4,s),o}else{let t=new Uint8Array(12),s=new DataView(t.buffer);return s.setUint32(0,e),(0,Ga.setInt64)(s,4,n),t}}function Ba(n){let e=n.getTime(),t=Math.floor(e/1e3),s=(e-t*1e3)*1e6,o=Math.floor(s/1e9);return{sec:t+o,nsec:s-o*1e9}}function qa(n){if(n instanceof Date){let e=Ba(n);return ja(e)}else return null}function za(n){let e=new DataView(n.buffer,n.byteOffset,n.byteLength);switch(n.byteLength){case 4:return{sec:e.getUint32(0),nsec:0};case 8:{let t=e.getUint32(0),s=e.getUint32(4),o=(t&3)*4294967296+s,i=t>>>2;return{sec:o,nsec:i}}case 12:{let t=(0,Ga.getInt64)(e,4),s=e.getUint32(0);return{sec:t,nsec:s}}default:throw new id.DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${n.length}`)}}function $a(n){let e=za(n);return new Date(e.sec*1e3+e.nsec/1e6)}Fe.timestampExtension={type:Fe.EXT_TIMESTAMP,encode:qa,decode:$a}});var Zn=he(Xn=>{"use strict";Object.defineProperty(Xn,"__esModule",{value:!0});Xn.ExtensionCodec=void 0;var Yn=gi(),ld=hi(),yi=class n{static defaultCodec=new n;__brand;builtInEncoders=[];builtInDecoders=[];encoders=[];decoders=[];constructor(){this.register(ld.timestampExtension)}register({type:e,encode:t,decode:s}){if(e>=0)this.encoders[e]=t,this.decoders[e]=s;else{let o=-1-e;this.builtInEncoders[o]=t,this.builtInDecoders[o]=s}}tryToEncode(e,t){for(let s=0;s<this.builtInEncoders.length;s++){let o=this.builtInEncoders[s];if(o!=null){let i=o(e,t);if(i!=null){let r=-1-s;return new Yn.ExtData(r,i)}}}for(let s=0;s<this.encoders.length;s++){let o=this.encoders[s];if(o!=null){let i=o(e,t);if(i!=null){let r=s;return new Yn.ExtData(r,i)}}}return e instanceof Yn.ExtData?e:null}decode(e,t,s){let o=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return o?o(e,t,s):new Yn.ExtData(t,e)}};Xn.ExtensionCodec=yi});var Ci=he(_i=>{"use strict";Object.defineProperty(_i,"__esModule",{value:!0});_i.ensureUint8Array=ud;function cd(n){return n instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&n instanceof SharedArrayBuffer}function ud(n){return n instanceof Uint8Array?n:ArrayBuffer.isView(n)?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):cd(n)?new Uint8Array(n):Uint8Array.from(n)}});var ki=he(Je=>{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});Je.Encoder=Je.DEFAULT_INITIAL_BUFFER_SIZE=Je.DEFAULT_MAX_DEPTH=void 0;var Wa=Hn(),dd=Zn(),Ha=Qn(),md=Ci();Je.DEFAULT_MAX_DEPTH=100;Je.DEFAULT_INITIAL_BUFFER_SIZE=2048;var bi=class n{extensionCodec;context;useBigInt64;maxDepth;initialBufferSize;sortKeys;forceFloat32;ignoreUndefined;forceIntegerToFloat;pos;view;bytes;entered=!1;constructor(e){this.extensionCodec=e?.extensionCodec??dd.ExtensionCodec.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.maxDepth=e?.maxDepth??Je.DEFAULT_MAX_DEPTH,this.initialBufferSize=e?.initialBufferSize??Je.DEFAULT_INITIAL_BUFFER_SIZE,this.sortKeys=e?.sortKeys??!1,this.forceFloat32=e?.forceFloat32??!1,this.ignoreUndefined=e?.ignoreUndefined??!1,this.forceIntegerToFloat=e?.forceIntegerToFloat??!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}clone(){return new n({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,maxDepth:this.maxDepth,initialBufferSize:this.initialBufferSize,sortKeys:this.sortKeys,forceFloat32:this.forceFloat32,ignoreUndefined:this.ignoreUndefined,forceIntegerToFloat:this.forceIntegerToFloat})}reinitializeState(){this.pos=0}encodeSharedRef(e){if(this.entered)return this.clone().encodeSharedRef(e);try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.subarray(0,this.pos)}finally{this.entered=!1}}encode(e){if(this.entered)return this.clone().encode(e);try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.slice(0,this.pos)}finally{this.entered=!1}}doEncode(e,t){if(t>this.maxDepth)throw new Error(`Too deep objects in depth ${t}`);e==null?this.encodeNil():typeof e=="boolean"?this.encodeBoolean(e):typeof e=="number"?this.forceIntegerToFloat?this.encodeNumberAsFloat(e):this.encodeNumber(e):typeof e=="string"?this.encodeString(e):this.useBigInt64&&typeof e=="bigint"?this.encodeBigInt64(e):this.encodeObject(e,t)}ensureBufferSizeToWrite(e){let t=this.pos+e;this.view.byteLength<t&&this.resizeBuffer(t*2)}resizeBuffer(e){let t=new ArrayBuffer(e),s=new Uint8Array(t),o=new DataView(t);s.set(this.bytes),this.view=o,this.bytes=s}encodeNil(){this.writeU8(192)}encodeBoolean(e){e===!1?this.writeU8(194):this.writeU8(195)}encodeNumber(e){!this.forceIntegerToFloat&&Number.isSafeInteger(e)?e>=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(211),this.writeI64(e)):this.encodeNumberAsFloat(e)}encodeNumberAsFloat(e){this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))}encodeBigInt64(e){e>=BigInt(0)?(this.writeU8(207),this.writeBigUint64(e)):(this.writeU8(211),this.writeBigInt64(e))}writeStringHeader(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else if(e<4294967296)this.writeU8(219),this.writeU32(e);else throw new Error(`Too long string: ${e} bytes in UTF-8`)}encodeString(e){let s=(0,Wa.utf8Count)(e);this.ensureBufferSizeToWrite(5+s),this.writeStringHeader(s),(0,Wa.utf8Encode)(e,this.bytes,this.pos),this.pos+=s}encodeObject(e,t){let s=this.extensionCodec.tryToEncode(e,this.context);if(s!=null)this.encodeExtension(s);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else if(typeof e=="object")this.encodeMap(e,t);else throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(e)}`)}encodeBinary(e){let t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else if(t<4294967296)this.writeU8(198),this.writeU32(t);else throw new Error(`Too large binary: ${t}`);let s=(0,md.ensureUint8Array)(e);this.writeU8a(s)}encodeArray(e,t){let s=e.length;if(s<16)this.writeU8(144+s);else if(s<65536)this.writeU8(220),this.writeU16(s);else if(s<4294967296)this.writeU8(221),this.writeU32(s);else throw new Error(`Too large array: ${s}`);for(let o of e)this.doEncode(o,t+1)}countWithoutUndefined(e,t){let s=0;for(let o of t)e[o]!==void 0&&s++;return s}encodeMap(e,t){let s=Object.keys(e);this.sortKeys&&s.sort();let o=this.ignoreUndefined?this.countWithoutUndefined(e,s):s.length;if(o<16)this.writeU8(128+o);else if(o<65536)this.writeU8(222),this.writeU16(o);else if(o<4294967296)this.writeU8(223),this.writeU32(o);else throw new Error(`Too large map object: ${o}`);for(let i of s){let r=e[i];this.ignoreUndefined&&r===void 0||(this.encodeString(i),this.doEncode(r,t+1))}}encodeExtension(e){if(typeof e.data=="function"){let s=e.data(this.pos+6),o=s.length;if(o>=4294967296)throw new Error(`Too large extension object: ${o}`);this.writeU8(201),this.writeU32(o),this.writeI8(e.type),this.writeU8a(s);return}let t=e.data.length;if(t===1)this.writeU8(212);else if(t===2)this.writeU8(213);else if(t===4)this.writeU8(214);else if(t===8)this.writeU8(215);else if(t===16)this.writeU8(216);else if(t<256)this.writeU8(199),this.writeU8(t);else if(t<65536)this.writeU8(200),this.writeU16(t);else if(t<4294967296)this.writeU8(201),this.writeU32(t);else throw new Error(`Too large extension object: ${t}`);this.writeI8(e.type),this.writeU8a(e.data)}writeU8(e){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,e),this.pos++}writeU8a(e){let t=e.length;this.ensureBufferSizeToWrite(t),this.bytes.set(e,this.pos),this.pos+=t}writeI8(e){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,e),this.pos++}writeU16(e){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,e),this.pos+=2}writeI16(e){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,e),this.pos+=2}writeU32(e){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,e),this.pos+=4}writeI32(e){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,e),this.pos+=4}writeF32(e){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,e),this.pos+=4}writeF64(e){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,e),this.pos+=8}writeU64(e){this.ensureBufferSizeToWrite(8),(0,Ha.setUint64)(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),(0,Ha.setInt64)(this.view,this.pos,e),this.pos+=8}writeBigUint64(e){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,e),this.pos+=8}writeBigInt64(e){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,e),this.pos+=8}};Je.Encoder=bi});var Va=he(Si=>{"use strict";Object.defineProperty(Si,"__esModule",{value:!0});Si.encode=gd;var pd=ki();function gd(n,e){return new pd.Encoder(e).encodeSharedRef(n)}});var Ja=he(wi=>{"use strict";Object.defineProperty(wi,"__esModule",{value:!0});wi.prettyByte=fd;function fd(n){return`${n<0?"-":""}0x${Math.abs(n).toString(16).padStart(2,"0")}`}});var Ka=he(eo=>{"use strict";Object.defineProperty(eo,"__esModule",{value:!0});eo.CachedKeyDecoder=void 0;var hd=Hn(),yd=16,_d=16,Ti=class{hit=0;miss=0;caches;maxKeyLength;maxLengthPerKey;constructor(e=yd,t=_d){this.maxKeyLength=e,this.maxLengthPerKey=t,this.caches=[];for(let s=0;s<this.maxKeyLength;s++)this.caches.push([])}canBeCached(e){return e>0&&e<=this.maxKeyLength}find(e,t,s){let o=this.caches[s-1];e:for(let i of o){let r=i.bytes;for(let l=0;l<s;l++)if(r[l]!==e[t+l])continue e;return i.str}return null}store(e,t){let s=this.caches[e.length-1],o={bytes:e,str:t};s.length>=this.maxLengthPerKey?s[Math.random()*s.length|0]=o:s.push(o)}decode(e,t,s){let o=this.find(e,t,s);if(o!=null)return this.hit++,o;this.miss++;let i=(0,hd.utf8DecodeJs)(e,t,s),r=Uint8Array.prototype.slice.call(e,t,t+s);return this.store(r,i),i}};eo.CachedKeyDecoder=Ti});var so=he(to=>{"use strict";Object.defineProperty(to,"__esModule",{value:!0});to.Decoder=void 0;var Mi=Ja(),Cd=Zn(),It=Qn(),bd=Hn(),Qa=Ci(),kd=Ka(),tt=Kn(),Pi="array",Ds="map_key",Xa="map_value",Sd=n=>{if(typeof n=="string"||typeof n=="number")return n;throw new tt.DecodeError("The type of key must be string or number but "+typeof n)},vi=class{stack=[];stackHeadPosition=-1;get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(e){let t=this.getUninitializedStateFromPool();t.type=Pi,t.position=0,t.size=e,t.array=new Array(e)}pushMapState(e){let t=this.getUninitializedStateFromPool();t.type=Ds,t.readCount=0,t.size=e,t.map={}}getUninitializedStateFromPool(){if(this.stackHeadPosition++,this.stackHeadPosition===this.stack.length){let e={type:void 0,size:0,array:void 0,position:0,readCount:0,map:void 0,key:null};this.stack.push(e)}return this.stack[this.stackHeadPosition]}release(e){if(this.stack[this.stackHeadPosition]!==e)throw new Error("Invalid stack state. Released state is not on top of the stack.");if(e.type===Pi){let s=e;s.size=0,s.array=void 0,s.position=0,s.type=void 0}if(e.type===Ds||e.type===Xa){let s=e;s.size=0,s.map=void 0,s.readCount=0,s.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}},Es=-1,Ai=new DataView(new ArrayBuffer(0)),wd=new Uint8Array(Ai.buffer);try{Ai.getInt8(0)}catch(n){if(!(n instanceof RangeError))throw new Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}var Ya=new RangeError("Insufficient data"),Td=new kd.CachedKeyDecoder,xi=class n{extensionCodec;context;useBigInt64;rawStrings;maxStrLength;maxBinLength;maxArrayLength;maxMapLength;maxExtLength;keyDecoder;mapKeyConverter;totalPos=0;pos=0;view=Ai;bytes=wd;headByte=Es;stack=new vi;entered=!1;constructor(e){this.extensionCodec=e?.extensionCodec??Cd.ExtensionCodec.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.rawStrings=e?.rawStrings??!1,this.maxStrLength=e?.maxStrLength??It.UINT32_MAX,this.maxBinLength=e?.maxBinLength??It.UINT32_MAX,this.maxArrayLength=e?.maxArrayLength??It.UINT32_MAX,this.maxMapLength=e?.maxMapLength??It.UINT32_MAX,this.maxExtLength=e?.maxExtLength??It.UINT32_MAX,this.keyDecoder=e?.keyDecoder!==void 0?e.keyDecoder:Td,this.mapKeyConverter=e?.mapKeyConverter??Sd}clone(){return new n({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,rawStrings:this.rawStrings,maxStrLength:this.maxStrLength,maxBinLength:this.maxBinLength,maxArrayLength:this.maxArrayLength,maxMapLength:this.maxMapLength,maxExtLength:this.maxExtLength,keyDecoder:this.keyDecoder})}reinitializeState(){this.totalPos=0,this.headByte=Es,this.stack.reset()}setBuffer(e){let t=(0,Qa.ensureUint8Array)(e);this.bytes=t,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength),this.pos=0}appendBuffer(e){if(this.headByte===Es&&!this.hasRemaining(1))this.setBuffer(e);else{let t=this.bytes.subarray(this.pos),s=(0,Qa.ensureUint8Array)(e),o=new Uint8Array(t.length+s.length);o.set(t),o.set(s,t.length),this.setBuffer(o)}}hasRemaining(e){return this.view.byteLength-this.pos>=e}createExtraByteError(e){let{view:t,pos:s}=this;return new RangeError(`Extra ${t.byteLength-s} of ${t.byteLength} byte(s) found at buffer[${e}]`)}decode(e){if(this.entered)return this.clone().decode(e);try{this.entered=!0,this.reinitializeState(),this.setBuffer(e);let t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t}finally{this.entered=!1}}*decodeMulti(e){if(this.entered){yield*this.clone().decodeMulti(e);return}try{for(this.entered=!0,this.reinitializeState(),this.setBuffer(e);this.hasRemaining(1);)yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync(e){if(this.entered)return this.clone().decodeAsync(e);try{this.entered=!0;let t=!1,s;for await(let l of e){if(t)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(l);try{s=this.doDecodeSync(),t=!0}catch(d){if(!(d instanceof RangeError))throw d}this.totalPos+=this.pos}if(t){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return s}let{headByte:o,pos:i,totalPos:r}=this;throw new RangeError(`Insufficient data in parsing ${(0,Mi.prettyByte)(o)} at ${r} (${i} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream(e){return this.decodeMultiAsync(e,!0)}decodeStream(e){return this.decodeMultiAsync(e,!1)}async*decodeMultiAsync(e,t){if(this.entered){yield*this.clone().decodeMultiAsync(e,t);return}try{this.entered=!0;let s=t,o=-1;for await(let i of e){if(t&&o===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(i),s&&(o=this.readArraySize(),s=!1,this.complete());try{for(;yield this.doDecodeSync(),--o!==0;);}catch(r){if(!(r instanceof RangeError))throw r}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){e:for(;;){let e=this.readHeadByte(),t;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){let o=e-128;if(o!==0){this.pushMapState(o),this.complete();continue e}else t={}}else if(e<160){let o=e-144;if(o!==0){this.pushArrayState(o),this.complete();continue e}else t=[]}else{let o=e-160;t=this.decodeString(o,0)}else if(e===192)t=null;else if(e===194)t=!1;else if(e===195)t=!0;else if(e===202)t=this.readF32();else if(e===203)t=this.readF64();else if(e===204)t=this.readU8();else if(e===205)t=this.readU16();else if(e===206)t=this.readU32();else if(e===207)this.useBigInt64?t=this.readU64AsBigInt():t=this.readU64();else if(e===208)t=this.readI8();else if(e===209)t=this.readI16();else if(e===210)t=this.readI32();else if(e===211)this.useBigInt64?t=this.readI64AsBigInt():t=this.readI64();else if(e===217){let o=this.lookU8();t=this.decodeString(o,1)}else if(e===218){let o=this.lookU16();t=this.decodeString(o,2)}else if(e===219){let o=this.lookU32();t=this.decodeString(o,4)}else if(e===220){let o=this.readU16();if(o!==0){this.pushArrayState(o),this.complete();continue e}else t=[]}else if(e===221){let o=this.readU32();if(o!==0){this.pushArrayState(o),this.complete();continue e}else t=[]}else if(e===222){let o=this.readU16();if(o!==0){this.pushMapState(o),this.complete();continue e}else t={}}else if(e===223){let o=this.readU32();if(o!==0){this.pushMapState(o),this.complete();continue e}else t={}}else if(e===196){let o=this.lookU8();t=this.decodeBinary(o,1)}else if(e===197){let o=this.lookU16();t=this.decodeBinary(o,2)}else if(e===198){let o=this.lookU32();t=this.decodeBinary(o,4)}else if(e===212)t=this.decodeExtension(1,0);else if(e===213)t=this.decodeExtension(2,0);else if(e===214)t=this.decodeExtension(4,0);else if(e===215)t=this.decodeExtension(8,0);else if(e===216)t=this.decodeExtension(16,0);else if(e===199){let o=this.lookU8();t=this.decodeExtension(o,1)}else if(e===200){let o=this.lookU16();t=this.decodeExtension(o,2)}else if(e===201){let o=this.lookU32();t=this.decodeExtension(o,4)}else throw new tt.DecodeError(`Unrecognized type byte: ${(0,Mi.prettyByte)(e)}`);this.complete();let s=this.stack;for(;s.length>0;){let o=s.top();if(o.type===Pi)if(o.array[o.position]=t,o.position++,o.position===o.size)t=o.array,s.release(o);else continue e;else if(o.type===Ds){if(t==="__proto__")throw new tt.DecodeError("The key __proto__ is not allowed");o.key=this.mapKeyConverter(t),o.type=Xa;continue e}else if(o.map[o.key]=t,o.readCount++,o.readCount===o.size)t=o.map,s.release(o);else{o.key=null,o.type=Ds;continue e}}return t}}readHeadByte(){return this.headByte===Es&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=Es}readArraySize(){let e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:{if(e<160)return e-144;throw new tt.DecodeError(`Unrecognized array type byte: ${(0,Mi.prettyByte)(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new tt.DecodeError(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(e)}pushArrayState(e){if(e>this.maxArrayLength)throw new tt.DecodeError(`Max length exceeded: array length (${e}) > maxArrayLength (${this.maxArrayLength})`);this.stack.pushArrayState(e)}decodeString(e,t){return!this.rawStrings||this.stateIsMapKey()?this.decodeUtf8String(e,t):this.decodeBinary(e,t)}decodeUtf8String(e,t){if(e>this.maxStrLength)throw new tt.DecodeError(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw Ya;let s=this.pos+t,o;return this.stateIsMapKey()&&this.keyDecoder?.canBeCached(e)?o=this.keyDecoder.decode(this.bytes,s,e):o=(0,bd.utf8Decode)(this.bytes,s,e),this.pos+=t+e,o}stateIsMapKey(){return this.stack.length>0?this.stack.top().type===Ds:!1}decodeBinary(e,t){if(e>this.maxBinLength)throw new tt.DecodeError(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw Ya;let s=this.pos+t,o=this.bytes.subarray(s,s+e);return this.pos+=t+e,o}decodeExtension(e,t){if(e>this.maxExtLength)throw new tt.DecodeError(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);let s=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,s,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let e=this.view.getUint8(this.pos);return this.pos++,e}readI8(){let e=this.view.getInt8(this.pos);return this.pos++,e}readU16(){let e=this.view.getUint16(this.pos);return this.pos+=2,e}readI16(){let e=this.view.getInt16(this.pos);return this.pos+=2,e}readU32(){let e=this.view.getUint32(this.pos);return this.pos+=4,e}readI32(){let e=this.view.getInt32(this.pos);return this.pos+=4,e}readU64(){let e=(0,It.getUint64)(this.view,this.pos);return this.pos+=8,e}readI64(){let e=(0,It.getInt64)(this.view,this.pos);return this.pos+=8,e}readU64AsBigInt(){let e=this.view.getBigUint64(this.pos);return this.pos+=8,e}readI64AsBigInt(){let e=this.view.getBigInt64(this.pos);return this.pos+=8,e}readF32(){let e=this.view.getFloat32(this.pos);return this.pos+=4,e}readF64(){let e=this.view.getFloat64(this.pos);return this.pos+=8,e}};to.Decoder=xi});var el=he(no=>{"use strict";Object.defineProperty(no,"__esModule",{value:!0});no.decode=Md;no.decodeMulti=Pd;var Za=so();function Md(n,e){return new Za.Decoder(e).decode(n)}function Pd(n,e){return new Za.Decoder(e).decodeMulti(n)}});var nl=he(Rs=>{"use strict";Object.defineProperty(Rs,"__esModule",{value:!0});Rs.isAsyncIterable=tl;Rs.asyncIterableFromStream=sl;Rs.ensureAsyncIterable=vd;function tl(n){return n[Symbol.asyncIterator]!=null}async function*sl(n){let e=n.getReader();try{for(;;){let{done:t,value:s}=await e.read();if(t)return;yield s}}finally{e.releaseLock()}}function vd(n){return tl(n)?n:sl(n)}});var ol=he(Is=>{"use strict";Object.defineProperty(Is,"__esModule",{value:!0});Is.decodeAsync=xd;Is.decodeArrayStream=Ad;Is.decodeMultiStream=Ed;var Ei=so(),Di=nl();async function xd(n,e){let t=(0,Di.ensureAsyncIterable)(n);return new Ei.Decoder(e).decodeAsync(t)}function Ad(n,e){let t=(0,Di.ensureAsyncIterable)(n);return new Ei.Decoder(e).decodeArrayStream(t)}function Ed(n,e){let t=(0,Di.ensureAsyncIterable)(n);return new Ei.Decoder(e).decodeStream(t)}});var Ii=he(q=>{"use strict";Object.defineProperty(q,"__esModule",{value:!0});q.decodeTimestampExtension=q.encodeTimestampExtension=q.decodeTimestampToTimeSpec=q.encodeTimeSpecToTimestamp=q.encodeDateToTimeSpec=q.EXT_TIMESTAMP=q.ExtData=q.ExtensionCodec=q.Encoder=q.DecodeError=q.Decoder=q.decodeMultiStream=q.decodeArrayStream=q.decodeAsync=q.decodeMulti=q.decode=q.encode=void 0;var Dd=Va();Object.defineProperty(q,"encode",{enumerable:!0,get:function(){return Dd.encode}});var il=el();Object.defineProperty(q,"decode",{enumerable:!0,get:function(){return il.decode}});Object.defineProperty(q,"decodeMulti",{enumerable:!0,get:function(){return il.decodeMulti}});var Ri=ol();Object.defineProperty(q,"decodeAsync",{enumerable:!0,get:function(){return Ri.decodeAsync}});Object.defineProperty(q,"decodeArrayStream",{enumerable:!0,get:function(){return Ri.decodeArrayStream}});Object.defineProperty(q,"decodeMultiStream",{enumerable:!0,get:function(){return Ri.decodeMultiStream}});var Rd=so();Object.defineProperty(q,"Decoder",{enumerable:!0,get:function(){return Rd.Decoder}});var Id=Kn();Object.defineProperty(q,"DecodeError",{enumerable:!0,get:function(){return Id.DecodeError}});var Ud=ki();Object.defineProperty(q,"Encoder",{enumerable:!0,get:function(){return Ud.Encoder}});var Od=Zn();Object.defineProperty(q,"ExtensionCodec",{enumerable:!0,get:function(){return Od.ExtensionCodec}});var Fd=gi();Object.defineProperty(q,"ExtData",{enumerable:!0,get:function(){return Fd.ExtData}});var Kt=hi();Object.defineProperty(q,"EXT_TIMESTAMP",{enumerable:!0,get:function(){return Kt.EXT_TIMESTAMP}});Object.defineProperty(q,"encodeDateToTimeSpec",{enumerable:!0,get:function(){return Kt.encodeDateToTimeSpec}});Object.defineProperty(q,"encodeTimeSpecToTimestamp",{enumerable:!0,get:function(){return Kt.encodeTimeSpecToTimestamp}});Object.defineProperty(q,"decodeTimestampToTimeSpec",{enumerable:!0,get:function(){return Kt.decodeTimestampToTimeSpec}});Object.defineProperty(q,"encodeTimestampExtension",{enumerable:!0,get:function(){return Kt.encodeTimestampExtension}});Object.defineProperty(q,"decodeTimestampExtension",{enumerable:!0,get:function(){return Kt.decodeTimestampExtension}})});var Dc=he((e0,Yf)=>{Yf.exports={name:"@rajbos/ai-engineering-fluency",version:"0.2.7",description:"AI Engineering Fluency - CLI tool to analyze GitHub Copilot token usage from local session files",license:"MIT",author:"RobBos",repository:{type:"git",url:"git+https://github.com/rajbos/ai-engineering-fluency.git",directory:"cli"},keywords:["github-copilot","token-usage","copilot","cli","token-tracker"],bin:{"ai-engineering-fluency":"dist/cli.js"},files:["dist/**/*"],scripts:{build:"node esbuild.js","build:production":"node esbuild.js --production","bundle-exe":"pwsh -NoProfile -File bundle-exe.ps1",lint:"eslint src","check-types":"tsc --noEmit",test:"node dist/cli.js --help && node dist/cli.js --version"},devDependencies:{"@msgpack/msgpack":"^3.1.3","@types/node":"^25.5.0",chalk:"^5.6.2",commander:"^15.0.0",esbuild:"^0.28.0","sql.js":"^1.12.0",typescript:"^6.0.2"},engines:{node:">=22.14.0"}}});var ft=class extends Error{constructor(e,t,s){super(s),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},xt=class extends ft{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};var ks=class{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:(t.push(e),t)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,s)=>{if(!this.argChoices.includes(t))throw new xt(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(t,s):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function vn(n){let e=n.name()+(n.variadic===!0?"...":"");return n.required?"<"+e+">":"["+e+"]"}var ga=require("node:events"),An=v(require("node:child_process"),1),Ve=v(require("node:path"),1),ws=v(require("node:fs"),1),W=v(require("node:process"),1),fa=require("node:util");var ua=require("node:util"),Ss=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(e){this.helpWidth=this.helpWidth??e.helpWidth??80}visibleCommands(e){let t=e.commands.filter(o=>!o._hidden),s=e._getHelpCommand();return s&&!s._hidden&&t.push(s),this.sortSubcommands&&t.sort((o,i)=>o.name().localeCompare(i.name())),t}compareOptions(e,t){let s=o=>o.short?o.short.replace(/^-/,""):o.long.replace(/^--/,"");return s(e).localeCompare(s(t))}visibleOptions(e){let t=e.options.filter(o=>!o.hidden),s=e._getHelpOption();if(s&&!s.hidden){let o=s.short&&e._findOption(s.short),i=s.long&&e._findOption(s.long);!o&&!i?t.push(s):s.long&&!i?t.push(e.createOption(s.long,s.description)):s.short&&!o&&t.push(e.createOption(s.short,s.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let s=e.parent;s;s=s.parent){let o=s.options.filter(i=>!i.hidden);t.push(...o)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||""}),e.registeredArguments.find(t=>t.description)?e.registeredArguments:[]}subcommandTerm(e){let t=e.registeredArguments.map(s=>vn(s)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleSubcommandTerm(t.subcommandTerm(o)))),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleOptionTerm(t.optionTerm(o)))),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleOptionTerm(t.optionTerm(o)))),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleArgumentTerm(t.argumentTerm(o)))),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let s="";for(let o=e.parent;o;o=o.parent)s=o.name()+" "+s;return s+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(s=>JSON.stringify(s)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0){let s=`(${t.join(", ")})`;return e.description?`${e.description} ${s}`:s}return e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(s=>JSON.stringify(s)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let s=`(${t.join(", ")})`;return e.description?`${e.description} ${s}`:s}return e.description}formatItemList(e,t,s){return t.length===0?[]:[s.styleTitle(e),...t,""]}groupItems(e,t,s){let o=new Map;return e.forEach(i=>{let r=s(i);o.has(r)||o.set(r,[])}),t.forEach(i=>{let r=s(i);o.has(r)||o.set(r,[]),o.get(r).push(i)}),o}formatHelp(e,t){let s=t.padWidth(e,t),o=t.helpWidth??80;function i(f,_){return t.formatItem(f,s,_,t)}let r=[`${t.styleTitle("Usage:")} ${t.styleUsage(t.commandUsage(e))}`,""],l=t.commandDescription(e);l.length>0&&(r=r.concat([t.boxWrap(t.styleCommandDescription(l),o),""]));let d=t.visibleArguments(e).map(f=>i(t.styleArgumentTerm(t.argumentTerm(f)),t.styleArgumentDescription(t.argumentDescription(f))));if(r=r.concat(this.formatItemList("Arguments:",d,t)),this.groupItems(e.options,t.visibleOptions(e),f=>f.helpGroupHeading??"Options:").forEach((f,_)=>{let k=f.map(b=>i(t.styleOptionTerm(t.optionTerm(b)),t.styleOptionDescription(t.optionDescription(b))));r=r.concat(this.formatItemList(_,k,t))}),t.showGlobalOptions){let f=t.visibleGlobalOptions(e).map(_=>i(t.styleOptionTerm(t.optionTerm(_)),t.styleOptionDescription(t.optionDescription(_))));r=r.concat(this.formatItemList("Global Options:",f,t))}return this.groupItems(e.commands,t.visibleCommands(e),f=>f.helpGroup()||"Commands:").forEach((f,_)=>{let k=f.map(b=>i(t.styleSubcommandTerm(t.subcommandTerm(b)),t.styleSubcommandDescription(t.subcommandDescription(b))));r=r.concat(this.formatItemList(_,k,t))}),r.join(`
4
+ `)}displayWidth(e){return(0,ua.stripVTControlCharacters)(e).length}styleTitle(e){return e}styleUsage(e){return e.split(" ").map(t=>t==="[options]"?this.styleOptionText(t):t==="[command]"?this.styleSubcommandText(t):t[0]==="["||t[0]==="<"?this.styleArgumentText(t):this.styleCommandText(t)).join(" ")}styleCommandDescription(e){return this.styleDescriptionText(e)}styleOptionDescription(e){return this.styleDescriptionText(e)}styleSubcommandDescription(e){return this.styleDescriptionText(e)}styleArgumentDescription(e){return this.styleDescriptionText(e)}styleDescriptionText(e){return e}styleOptionTerm(e){return this.styleOptionText(e)}styleSubcommandTerm(e){return e.split(" ").map(t=>t==="[options]"?this.styleOptionText(t):t[0]==="["||t[0]==="<"?this.styleArgumentText(t):this.styleSubcommandText(t)).join(" ")}styleArgumentTerm(e){return this.styleArgumentText(e)}styleOptionText(e){return e}styleArgumentText(e){return e}styleSubcommandText(e){return e}styleCommandText(e){return e}padWidth(e,t){return Math.max(t.longestOptionTermLength(e,t),t.longestGlobalOptionTermLength(e,t),t.longestSubcommandTermLength(e,t),t.longestArgumentTermLength(e,t))}preformatted(e){return/\n[^\S\r\n]/.test(e)}formatItem(e,t,s,o){let r=" ".repeat(2);if(!s)return r+e;let l=e.padEnd(t+e.length-o.displayWidth(e)),d=2,p=(this.helpWidth??80)-t-d-2,f;return p<this.minWidthToWrap||o.preformatted(s)?f=s:f=o.boxWrap(s,p).replace(/\n/g,`
5
5
  `+" ".repeat(t+d)),r+l+" ".repeat(d)+f.replace(/\n/g,`
6
6
  ${r}`)}boxWrap(e,t){if(t<this.minWidthToWrap)return e;let s=e.split(/\r\n|\n/),o=/[\s]*[^\s]+/g,i=[];return s.forEach(r=>{let l=r.match(o);if(l===null){i.push("");return}let d=[l.shift()],m=this.displayWidth(d[0]);l.forEach(p=>{let f=this.displayWidth(p);if(m+f<=t){d.push(p),m+=f;return}i.push(d.join(""));let _=p.trimStart();d=[_],m=this.displayWidth(_)}),i.push(d.join(""))}),i.join(`
7
- `)}};var Ht=class{constructor(e,t){this.flags=e,this.description=t||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let s=wu(e);this.short=s.shortFlag,this.long=s.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let t=e;return typeof e=="string"&&(t={[e]:!0}),this.implied=Object.assign(this.implied||{},t),this}env(e){return this.envVar=e,this}argParser(e){return this.parseArg=e,this}makeOptionMandatory(e=!0){return this.mandatory=!!e,this}hideHelp(e=!0){return this.hidden=!!e,this}_collectValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:(t.push(e),t)}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,s)=>{if(!this.argChoices.includes(t))throw new xt(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(t,s):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?aa(this.name().replace(/^no-/,"")):aa(this.name())}helpGroup(e){return this.helpGroupHeading=e,this}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},Mn=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(t=>{t.negate?this.negativeOptions.set(t.attributeName(),t):this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,s)=>{this.positiveOptions.has(s)&&this.dualOptions.add(s)})}valueFromOption(e,t){let s=t.attributeName();if(!this.dualOptions.has(s))return!0;let o=this.negativeOptions.get(s).presetArg,i=o!==void 0?o:!1;return t.negate===(i===e)}};function aa(n){return n.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function wu(n){let e,t,s=/^-[^-]$/,o=/^--[^-]/,i=n.split(/[ |,]+/).concat("guard");if(s.test(i[0])&&(e=i.shift()),o.test(i[0])&&(t=i.shift()),!e&&s.test(i[0])&&(e=i.shift()),!e&&o.test(i[0])&&(e=t,t=i.shift()),i[0].startsWith("-")){let r=i[0],l=`option creation failed due to '${r}' in option flags '${n}'`;throw/^-[^-][^-]/.test(r)?new Error(`${l}
7
+ `)}};var Wt=class{constructor(e,t){this.flags=e,this.description=t||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let s=Au(e);this.short=s.shortFlag,this.long=s.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let t=e;return typeof e=="string"&&(t={[e]:!0}),this.implied=Object.assign(this.implied||{},t),this}env(e){return this.envVar=e,this}argParser(e){return this.parseArg=e,this}makeOptionMandatory(e=!0){return this.mandatory=!!e,this}hideHelp(e=!0){return this.hidden=!!e,this}_collectValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:(t.push(e),t)}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,s)=>{if(!this.argChoices.includes(t))throw new xt(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(t,s):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?da(this.name().replace(/^no-/,"")):da(this.name())}helpGroup(e){return this.helpGroupHeading=e,this}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},xn=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(t=>{t.negate?this.negativeOptions.set(t.attributeName(),t):this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,s)=>{this.positiveOptions.has(s)&&this.dualOptions.add(s)})}valueFromOption(e,t){let s=t.attributeName();if(!this.dualOptions.has(s))return!0;let o=this.negativeOptions.get(s).presetArg,i=o!==void 0?o:!1;return t.negate===(i===e)}};function da(n){return n.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function Au(n){let e,t,s=/^-[^-]$/,o=/^--[^-]/,i=n.split(/[ |,]+/).concat("guard");if(s.test(i[0])&&(e=i.shift()),o.test(i[0])&&(t=i.shift()),!e&&s.test(i[0])&&(e=i.shift()),!e&&o.test(i[0])&&(e=t,t=i.shift()),i[0].startsWith("-")){let r=i[0],l=`option creation failed due to '${r}' in option flags '${n}'`;throw/^-[^-][^-]/.test(r)?new Error(`${l}
8
8
  - a short flag is a single dash and a single character
9
9
  - either use a single dash and a single character (for a short flag)
10
10
  - or use a double dash for a long option (and can have two, like '--ws, --workspace')`):s.test(r)?new Error(`${l}
11
11
  - too many short flags`):o.test(r)?new Error(`${l}
12
12
  - too many long flags`):new Error(`${l}
13
- - unrecognised flag format`)}if(e===void 0&&t===void 0)throw new Error(`option creation failed due to no flags found in '${n}'.`);return{shortFlag:e,longFlag:t}}function Tu(n,e){if(Math.abs(n.length-e.length)>3)return Math.max(n.length,e.length);let t=[];for(let s=0;s<=n.length;s++)t[s]=[s];for(let s=0;s<=e.length;s++)t[0][s]=s;for(let s=1;s<=e.length;s++)for(let o=1;o<=n.length;o++){let i;n[o-1]===e[s-1]?i=0:i=1,t[o][s]=Math.min(t[o-1][s]+1,t[o][s-1]+1,t[o-1][s-1]+i),o>1&&s>1&&n[o-1]===e[s-2]&&n[o-2]===e[s-1]&&(t[o][s]=Math.min(t[o][s],t[o-2][s-2]+1))}return t[n.length][e.length]}function ti(n,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=n.startsWith("--");t&&(n=n.slice(2),e=e.map(r=>r.slice(2)));let s=[],o=3,i=.4;return e.forEach(r=>{if(r.length<=1)return;let l=Tu(n,r),d=Math.max(n.length,r.length);(d-l)/d>i&&(l<o?(o=l,s=[r]):l===o&&s.push(r))}),s.sort((r,l)=>r.localeCompare(l)),t&&(s=s.map(r=>`--${r}`)),s.length>1?`
13
+ - unrecognised flag format`)}if(e===void 0&&t===void 0)throw new Error(`option creation failed due to no flags found in '${n}'.`);return{shortFlag:e,longFlag:t}}function Eu(n,e){if(Math.abs(n.length-e.length)>3)return Math.max(n.length,e.length);let t=[];for(let s=0;s<=n.length;s++)t[s]=[s];for(let s=0;s<=e.length;s++)t[0][s]=s;for(let s=1;s<=e.length;s++)for(let o=1;o<=n.length;o++){let i;n[o-1]===e[s-1]?i=0:i=1,t[o][s]=Math.min(t[o-1][s]+1,t[o][s-1]+1,t[o-1][s-1]+i),o>1&&s>1&&n[o-1]===e[s-2]&&n[o-2]===e[s-1]&&(t[o][s]=Math.min(t[o][s],t[o-2][s-2]+1))}return t[n.length][e.length]}function ii(n,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=n.startsWith("--");t&&(n=n.slice(2),e=e.map(r=>r.slice(2)));let s=[],o=3,i=.4;return e.forEach(r=>{if(r.length<=1)return;let l=Eu(n,r),d=Math.max(n.length,r.length);(d-l)/d>i&&(l<o?(o=l,s=[r]):l===o&&s.push(r))}),s.sort((r,l)=>r.localeCompare(l)),t&&(s=s.map(r=>`--${r}`)),s.length>1?`
14
14
  (Did you mean one of ${s.join(", ")}?)`:s.length===1?`
15
- (Did you mean ${s[0]}?)`:""}var ne=class n extends ua.EventEmitter{constructor(e){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=e||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:t=>H.default.stdout.write(t),writeErr:t=>H.default.stderr.write(t),outputError:(t,s)=>s(t),getOutHelpWidth:()=>H.default.stdout.isTTY?H.default.stdout.columns:void 0,getErrHelpWidth:()=>H.default.stderr.isTTY?H.default.stderr.columns:void 0,getOutHasColors:()=>ca()??(H.default.stdout.isTTY&&H.default.stdout.hasColors?.()),getErrHasColors:()=>ca()??(H.default.stderr.isTTY&&H.default.stderr.hasColors?.()),stripColor:t=>(0,da.stripVTControlCharacters)(t)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let t=this;t;t=t.parent)e.push(t);return e}command(e,t,s){let o=t,i=s;typeof o=="object"&&o!==null&&(i=o,o=null),i=i||{};let[,r,l]=e.match(/([^ ]+) *(.*)/),d=this.createCommand(r);return o&&(d.description(o),d._executableHandler=!0),i.isDefault&&(this._defaultCommandName=d._name),d._hidden=!!(i.noHelp||i.hidden),d._executableFile=i.executableFile||null,l&&d.arguments(l),this._registerCommand(d),d.parent=this,d.copyInheritedSettings(this),o?this:d}createCommand(e){return new n(e)}createHelp(){return Object.assign(new bs,this.configureHelp())}configureHelp(e){return e===void 0?this._helpConfiguration:(this._helpConfiguration=e,this)}configureOutput(e){return e===void 0?this._outputConfiguration:(this._outputConfiguration={...this._outputConfiguration,...e},this)}showHelpAfterError(e=!0){return typeof e!="string"&&(e=!!e),this._showHelpAfterError=e,this}showSuggestionAfterError(e=!0){return this._showSuggestionAfterError=!!e,this}addCommand(e,t){if(!e._name)throw new Error(`Command passed to .addCommand() must have a name
16
- - specify the name in Command constructor or using .name()`);return t=t||{},t.isDefault&&(this._defaultCommandName=e._name),(t.noHelp||t.hidden)&&(e._hidden=!0),this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,t){return new Cs(e,t)}argument(e,t,s,o){let i=this.createArgument(e,t);return typeof s=="function"?i.default(o).argParser(s):i.default(s),this.addArgument(i),this}arguments(e){return e.trim().split(/ +/).forEach(t=>{this.argument(t)}),this}addArgument(e){let t=this.registeredArguments.slice(-1)[0];if(t?.variadic)throw new Error(`only the last argument can be variadic '${t.name()}'`);if(e.required&&e.defaultValue!==void 0&&e.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${e.name()}'`);return this.registeredArguments.push(e),this}helpCommand(e,t){if(typeof e=="boolean")return this._addImplicitHelpCommand=e,e&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;let s=e??"help [command]",[,o,i]=s.match(/([^ ]+) *(.*)/),r=t??"display help for command",l=this.createCommand(o);return l.helpOption(!1),i&&l.arguments(i),r&&l.description(r),this._addImplicitHelpCommand=!0,this._helpCommand=l,(e||t)&&this._initCommandGroup(l),this}addHelpCommand(e,t){return typeof e!="object"?(this.helpCommand(e,t),this):(this._addImplicitHelpCommand=!0,this._helpCommand=e,this._initCommandGroup(e),this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(e,t){let s=["preSubcommand","preAction","postAction"];if(!s.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
17
- Expecting one of '${s.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(t):this._lifeCycleHooks[e]=[t],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=t=>{if(t.code!=="commander.executeSubCommandAsync")throw t},this}_exit(e,t,s){this._exitCallback&&this._exitCallback(new ft(e,t,s)),H.default.exit(e)}action(e){let t=s=>{let o=this.registeredArguments.length,i=s.slice(0,o);return this._storeOptionsAsProperties?i[o]=this:i[o]=this.opts(),i.push(this),e.apply(this,i)};return this._actionHandler=t,this}createOption(e,t){return new Ht(e,t)}_callParseArg(e,t,s,o){try{return e.parseArg(t,s)}catch(i){if(i.code==="commander.invalidArgument"){let r=`${o} ${i.message}`;this.error(r,{exitCode:i.exitCode,code:i.code})}throw i}}_registerOption(e){let t=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(t){let s=e.long&&this._findOption(e.long)?e.long:e.short;throw new Error(`Cannot add option '${e.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${s}'
18
- - already used by option '${t.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let t=o=>[o.name()].concat(o.aliases()),s=t(e).find(o=>this._findCommand(o));if(s){let o=t(this._findCommand(s)).join("|"),i=t(e).join("|");throw new Error(`cannot add command '${i}' as already have command '${o}'`)}this._initCommandGroup(e),this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),s=e.attributeName();e.defaultValue!==void 0&&this.setOptionValueWithSource(s,e.defaultValue,"default");let o=(i,r,l)=>{i==null&&e.presetArg!==void 0&&(i=e.presetArg);let d=this.getOptionValue(s);i!==null&&e.parseArg?i=this._callParseArg(e,i,d,r):i!==null&&e.variadic&&(i=e._collectValue(i,d)),i==null&&(e.negate?i=!1:e.isBoolean()||e.optional?i=!0:i=""),this.setOptionValueWithSource(s,i,l)};return this.on("option:"+t,i=>{let r=`error: option '${e.flags}' argument '${i}' is invalid.`;o(i,r,"cli")}),e.envVar&&this.on("optionEnv:"+t,i=>{let r=`error: option '${e.flags}' value '${i}' from env '${e.envVar}' is invalid.`;o(i,r,"env")}),this}_optionEx(e,t,s,o,i){if(typeof t=="object"&&t instanceof Ht)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let r=this.createOption(t,s);if(r.makeOptionMandatory(!!e.mandatory),typeof o=="function")r.default(i).argParser(o);else if(o instanceof RegExp){let l=o;o=(d,m)=>{let p=l.exec(d);return p?p[0]:m},r.default(i).argParser(o)}else r.default(o);return this.addOption(r)}option(e,t,s,o){return this._optionEx({},e,t,s,o)}requiredOption(e,t,s,o){return this._optionEx({mandatory:!0},e,t,s,o)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){return this._storeOptionsAsProperties?this[e]:this._optionValues[e]}setOptionValue(e,t){return this.setOptionValueWithSource(e,t,void 0)}setOptionValueWithSource(e,t,s){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=s,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(s=>{s.getOptionValueSource(e)!==void 0&&(t=s.getOptionValueSource(e))}),t}_prepareUserArgs(e,t){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(t=t||{},e===void 0&&t.from===void 0){H.default.versions?.electron&&(t.from="electron");let o=H.default.execArgv??[];(o.includes("-e")||o.includes("--eval")||o.includes("-p")||o.includes("--print"))&&(t.from="eval")}e===void 0&&(e=H.default.argv),this.rawArgs=e.slice();let s;switch(t.from){case void 0:case"node":this._scriptPath=e[1],s=e.slice(2);break;case"electron":H.default.defaultApp?(this._scriptPath=e[1],s=e.slice(2)):s=e.slice(1);break;case"user":s=e.slice(0);break;case"eval":s=e.slice(1);break;default:throw new Error(`unexpected parse option { from: '${t.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",s}parse(e,t){this._prepareForParse();let s=this._prepareUserArgs(e,t);return this._parseCommand([],s),this}async parseAsync(e,t){this._prepareForParse();let s=this._prepareUserArgs(e,t);return await this._parseCommand([],s),this}_prepareForParse(){this._savedState===null?(this.options.filter(e=>e.negate&&e.defaultValue===void 0&&this.getOptionValue(e.attributeName())===void 0).forEach(e=>{let t=e.long.replace(/^--no-/,"--");this._findOption(t)||this.setOptionValueWithSource(e.attributeName(),!0,"default")}),this.saveStateBeforeParse()):this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
19
- - either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(e,t,s){if(ks.default.existsSync(e))return;let o=t?`searched for local subcommand relative to directory '${t}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",i=`'${e}' does not exist
15
+ (Did you mean ${s[0]}?)`:""}var oe=class n extends ga.EventEmitter{constructor(e){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=e||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:t=>W.default.stdout.write(t),writeErr:t=>W.default.stderr.write(t),outputError:(t,s)=>s(t),getOutHelpWidth:()=>W.default.stdout.isTTY?W.default.stdout.columns:void 0,getErrHelpWidth:()=>W.default.stderr.isTTY?W.default.stderr.columns:void 0,getOutHasColors:()=>pa()??(W.default.stdout.isTTY&&W.default.stdout.hasColors?.()),getErrHasColors:()=>pa()??(W.default.stderr.isTTY&&W.default.stderr.hasColors?.()),stripColor:t=>(0,fa.stripVTControlCharacters)(t)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let t=this;t;t=t.parent)e.push(t);return e}command(e,t,s){let o=t,i=s;typeof o=="object"&&o!==null&&(i=o,o=null),i=i||{};let[,r,l]=e.match(/([^ ]+) *(.*)/),d=this.createCommand(r);return o&&(d.description(o),d._executableHandler=!0),i.isDefault&&(this._defaultCommandName=d._name),d._hidden=!!(i.noHelp||i.hidden),d._executableFile=i.executableFile||null,l&&d.arguments(l),this._registerCommand(d),d.parent=this,d.copyInheritedSettings(this),o?this:d}createCommand(e){return new n(e)}createHelp(){return Object.assign(new Ss,this.configureHelp())}configureHelp(e){return e===void 0?this._helpConfiguration:(this._helpConfiguration=e,this)}configureOutput(e){return e===void 0?this._outputConfiguration:(this._outputConfiguration={...this._outputConfiguration,...e},this)}showHelpAfterError(e=!0){return typeof e!="string"&&(e=!!e),this._showHelpAfterError=e,this}showSuggestionAfterError(e=!0){return this._showSuggestionAfterError=!!e,this}addCommand(e,t){if(!e._name)throw new Error(`Command passed to .addCommand() must have a name
16
+ - specify the name in Command constructor or using .name()`);return t=t||{},t.isDefault&&(this._defaultCommandName=e._name),(t.noHelp||t.hidden)&&(e._hidden=!0),this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,t){return new ks(e,t)}argument(e,t,s,o){let i=this.createArgument(e,t);return typeof s=="function"?i.default(o).argParser(s):i.default(s),this.addArgument(i),this}arguments(e){return e.trim().split(/ +/).forEach(t=>{this.argument(t)}),this}addArgument(e){let t=this.registeredArguments.slice(-1)[0];if(t?.variadic)throw new Error(`only the last argument can be variadic '${t.name()}'`);if(e.required&&e.defaultValue!==void 0&&e.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${e.name()}'`);return this.registeredArguments.push(e),this}helpCommand(e,t){if(typeof e=="boolean")return this._addImplicitHelpCommand=e,e&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;let s=e??"help [command]",[,o,i]=s.match(/([^ ]+) *(.*)/),r=t??"display help for command",l=this.createCommand(o);return l.helpOption(!1),i&&l.arguments(i),r&&l.description(r),this._addImplicitHelpCommand=!0,this._helpCommand=l,(e||t)&&this._initCommandGroup(l),this}addHelpCommand(e,t){return typeof e!="object"?(this.helpCommand(e,t),this):(this._addImplicitHelpCommand=!0,this._helpCommand=e,this._initCommandGroup(e),this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(e,t){let s=["preSubcommand","preAction","postAction"];if(!s.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
17
+ Expecting one of '${s.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(t):this._lifeCycleHooks[e]=[t],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=t=>{if(t.code!=="commander.executeSubCommandAsync")throw t},this}_exit(e,t,s){this._exitCallback&&this._exitCallback(new ft(e,t,s)),W.default.exit(e)}action(e){let t=s=>{let o=this.registeredArguments.length,i=s.slice(0,o);return this._storeOptionsAsProperties?i[o]=this:i[o]=this.opts(),i.push(this),e.apply(this,i)};return this._actionHandler=t,this}createOption(e,t){return new Wt(e,t)}_callParseArg(e,t,s,o){try{return e.parseArg(t,s)}catch(i){if(i.code==="commander.invalidArgument"){let r=`${o} ${i.message}`;this.error(r,{exitCode:i.exitCode,code:i.code})}throw i}}_registerOption(e){let t=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(t){let s=e.long&&this._findOption(e.long)?e.long:e.short;throw new Error(`Cannot add option '${e.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${s}'
18
+ - already used by option '${t.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let t=o=>[o.name()].concat(o.aliases()),s=t(e).find(o=>this._findCommand(o));if(s){let o=t(this._findCommand(s)).join("|"),i=t(e).join("|");throw new Error(`cannot add command '${i}' as already have command '${o}'`)}this._initCommandGroup(e),this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),s=e.attributeName();e.defaultValue!==void 0&&this.setOptionValueWithSource(s,e.defaultValue,"default");let o=(i,r,l)=>{i==null&&e.presetArg!==void 0&&(i=e.presetArg);let d=this.getOptionValue(s);i!==null&&e.parseArg?i=this._callParseArg(e,i,d,r):i!==null&&e.variadic&&(i=e._collectValue(i,d)),i==null&&(e.negate?i=!1:e.isBoolean()||e.optional?i=!0:i=""),this.setOptionValueWithSource(s,i,l)};return this.on("option:"+t,i=>{let r=`error: option '${e.flags}' argument '${i}' is invalid.`;o(i,r,"cli")}),e.envVar&&this.on("optionEnv:"+t,i=>{let r=`error: option '${e.flags}' value '${i}' from env '${e.envVar}' is invalid.`;o(i,r,"env")}),this}_optionEx(e,t,s,o,i){if(typeof t=="object"&&t instanceof Wt)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let r=this.createOption(t,s);if(r.makeOptionMandatory(!!e.mandatory),typeof o=="function")r.default(i).argParser(o);else if(o instanceof RegExp){let l=o;o=(d,m)=>{let p=l.exec(d);return p?p[0]:m},r.default(i).argParser(o)}else r.default(o);return this.addOption(r)}option(e,t,s,o){return this._optionEx({},e,t,s,o)}requiredOption(e,t,s,o){return this._optionEx({mandatory:!0},e,t,s,o)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){return this._storeOptionsAsProperties?this[e]:this._optionValues[e]}setOptionValue(e,t){return this.setOptionValueWithSource(e,t,void 0)}setOptionValueWithSource(e,t,s){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=s,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(s=>{s.getOptionValueSource(e)!==void 0&&(t=s.getOptionValueSource(e))}),t}_prepareUserArgs(e,t){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(t=t||{},e===void 0&&t.from===void 0){W.default.versions?.electron&&(t.from="electron");let o=W.default.execArgv??[];(o.includes("-e")||o.includes("--eval")||o.includes("-p")||o.includes("--print"))&&(t.from="eval")}e===void 0&&(e=W.default.argv),this.rawArgs=e.slice();let s;switch(t.from){case void 0:case"node":this._scriptPath=e[1],s=e.slice(2);break;case"electron":W.default.defaultApp?(this._scriptPath=e[1],s=e.slice(2)):s=e.slice(1);break;case"user":s=e.slice(0);break;case"eval":s=e.slice(1);break;default:throw new Error(`unexpected parse option { from: '${t.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",s}parse(e,t){this._prepareForParse();let s=this._prepareUserArgs(e,t);return this._parseCommand([],s),this}async parseAsync(e,t){this._prepareForParse();let s=this._prepareUserArgs(e,t);return await this._parseCommand([],s),this}_prepareForParse(){this._savedState===null?(this.options.filter(e=>e.negate&&e.defaultValue===void 0&&this.getOptionValue(e.attributeName())===void 0).forEach(e=>{let t=e.long.replace(/^--no-/,"--");this._findOption(t)||this.setOptionValueWithSource(e.attributeName(),!0,"default")}),this.saveStateBeforeParse()):this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
19
+ - either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(e,t,s){if(ws.default.existsSync(e))return;let o=t?`searched for local subcommand relative to directory '${t}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",i=`'${e}' does not exist
20
20
  - if '${s}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
21
21
  - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
22
- - ${o}`;throw new Error(i)}_executeSubCommand(e,t){t=t.slice();let s=[".js",".ts",".tsx",".mjs",".cjs"];function o(p,f){let _=Ve.default.resolve(p,f);if(ks.default.existsSync(_))return _;if(s.includes(Ve.default.extname(f)))return;let k=s.find(b=>ks.default.existsSync(`${_}${b}`));if(k)return`${_}${k}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let i=e._executableFile||`${this._name}-${e._name}`,r=this._executableDir||"";if(this._scriptPath){let p;try{p=ks.default.realpathSync(this._scriptPath)}catch{p=this._scriptPath}r=Ve.default.resolve(Ve.default.dirname(p),r)}if(r){let p=o(r,i);if(!p&&!e._executableFile&&this._scriptPath){let f=Ve.default.basename(this._scriptPath,Ve.default.extname(this._scriptPath));f!==this._name&&(p=o(r,`${f}-${e._name}`))}i=p||i}let l=s.includes(Ve.default.extname(i)),d;H.default.platform!=="win32"?l?(t.unshift(i),t=la(H.default.execArgv).concat(t),d=Pn.default.spawn(H.default.argv[0],t,{stdio:"inherit"})):d=Pn.default.spawn(i,t,{stdio:"inherit"}):(this._checkForMissingExecutable(i,r,e._name),t.unshift(i),t=la(H.default.execArgv).concat(t),d=Pn.default.spawn(H.default.execPath,t,{stdio:"inherit"})),d.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(f=>{H.default.on(f,()=>{d.killed===!1&&d.exitCode===null&&d.kill(f)})});let m=this._exitCallback;d.on("close",p=>{p=p??1,m?m(new ft(p,"commander.executeSubCommandAsync","(close)")):H.default.exit(p)}),d.on("error",p=>{if(p.code==="ENOENT")this._checkForMissingExecutable(i,r,e._name);else if(p.code==="EACCES")throw new Error(`'${i}' not executable`);if(!m)H.default.exit(1);else{let f=new ft(1,"commander.executeSubCommandAsync","(error)");f.nestedError=p,m(f)}}),this.runningCommand=d}_dispatchSubcommand(e,t,s){let o=this._findCommand(e);o||this.help({error:!0}),o._prepareForParse();let i;return i=this._chainOrCallSubCommandHook(i,o,"preSubcommand"),i=this._chainOrCall(i,()=>{if(o._executableHandler)this._executeSubCommand(o,t.concat(s));else return o._parseCommand(t,s)}),i}_dispatchHelpCommand(e){e||this.help();let t=this._findCommand(e);return t&&!t._executableHandler&&t.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,t)=>{e.required&&this.args[t]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(s,o,i)=>{let r=o;if(o!==null&&s.parseArg){let l=`error: command-argument value '${o}' is invalid for argument '${s.name()}'.`;r=this._callParseArg(s,o,i,l)}return r};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((s,o)=>{let i=s.defaultValue;s.variadic?o<this.args.length?(i=this.args.slice(o),s.parseArg&&(i=i.reduce((r,l)=>e(s,l,r),s.defaultValue))):i===void 0&&(i=[]):o<this.args.length&&(i=this.args[o],s.parseArg&&(i=e(s,i,s.defaultValue))),t[o]=i}),this.processedArgs=t}_chainOrCall(e,t){return e?.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let s=e,o=[];return this._getCommandAndAncestors().reverse().filter(i=>i._lifeCycleHooks[t]!==void 0).forEach(i=>{i._lifeCycleHooks[t].forEach(r=>{o.push({hookedCommand:i,callback:r})})}),t==="postAction"&&o.reverse(),o.forEach(i=>{s=this._chainOrCall(s,()=>i.callback(i.hookedCommand,this))}),s}_chainOrCallSubCommandHook(e,t,s){let o=e;return this._lifeCycleHooks[s]!==void 0&&this._lifeCycleHooks[s].forEach(i=>{o=this._chainOrCall(o,()=>i(this,t))}),o}_parseCommand(e,t){let s=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(s.operands),t=s.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(s.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=()=>{s.unknown.length>0&&this.unknownOption(s.unknown[0])},i=`command:${this.name()}`;if(this._actionHandler){o(),this._processArguments();let r;return r=this._chainOrCallHooks(r,"preAction"),r=this._chainOrCall(r,()=>this._actionHandler(this.processedArgs)),this.parent&&(r=this._chainOrCall(r,()=>{this.parent.emit(i,e,t)})),r=this._chainOrCallHooks(r,"postAction"),r}if(this.parent?.listenerCount(i))o(),this._processArguments(),this.parent.emit(i,e,t);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,t);this.listenerCount("command:*")?this.emit("command:*",e,t):this.commands.length?this.unknownCommand():(o(),this._processArguments())}else this.commands.length?(o(),this.help({error:!0})):(o(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(t=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find(t=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(t=>{t.mandatory&&e.getOptionValue(t.attributeName())===void 0&&e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(s=>{let o=s.attributeName();return this.getOptionValue(o)===void 0?!1:this.getOptionValueSource(o)!=="default"});e.filter(s=>s.conflictsWith.length>0).forEach(s=>{let o=e.find(i=>s.conflictsWith.includes(i.attributeName()));o&&this._conflictingOption(s,o)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],s=[],o=t;function i(p){return p.length>1&&p[0]==="-"}let r=p=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(p)?!this._getCommandAndAncestors().some(f=>f.options.map(_=>_.short).some(_=>/^-\d$/.test(_))):!1,l=null,d=null,m=0;for(;m<e.length||d;){let p=d??e[m++];if(d=null,p==="--"){o===s&&o.push(p),o.push(...e.slice(m));break}if(l&&(!i(p)||r(p))){this.emit(`option:${l.name()}`,p);continue}if(l=null,i(p)){let f=this._findOption(p);if(f){if(f.required){let _=e[m++];_===void 0&&this.optionMissingArgument(f),this.emit(`option:${f.name()}`,_)}else if(f.optional){let _=null;m<e.length&&(!i(e[m])||r(e[m]))&&(_=e[m++]),this.emit(`option:${f.name()}`,_)}else this.emit(`option:${f.name()}`);l=f.variadic?f:null;continue}}if(p.length>2&&p[0]==="-"&&p[1]!=="-"){let f=this._findOption(`-${p[1]}`);if(f){f.required||f.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${f.name()}`,p.slice(2)):(this.emit(`option:${f.name()}`),d=`-${p.slice(2)}`);continue}}if(/^--[^=]+=/.test(p)){let f=p.indexOf("="),_=this._findOption(p.slice(0,f));if(_&&(_.required||_.optional)){this.emit(`option:${_.name()}`,p.slice(f+1));continue}}if(o===t&&i(p)&&!(this.commands.length===0&&r(p))&&(o=s),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&s.length===0){if(this._findCommand(p)){t.push(p),s.push(...e.slice(m));break}else if(this._getHelpCommand()&&p===this._getHelpCommand().name()){t.push(p,...e.slice(m));break}else if(this._defaultCommandName){s.push(p,...e.slice(m));break}}if(this._passThroughOptions){o.push(p,...e.slice(m));break}o.push(p)}return{operands:t,unknown:s}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let s=0;s<t;s++){let o=this.options[s].attributeName();e[o]=o===this._versionOptionName?this._version:this[o]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
22
+ - ${o}`;throw new Error(i)}_executeSubCommand(e,t){t=t.slice();let s=[".js",".ts",".tsx",".mjs",".cjs"];function o(p,f){let _=Ve.default.resolve(p,f);if(ws.default.existsSync(_))return _;if(s.includes(Ve.default.extname(f)))return;let k=s.find(b=>ws.default.existsSync(`${_}${b}`));if(k)return`${_}${k}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let i=e._executableFile||`${this._name}-${e._name}`,r=this._executableDir||"";if(this._scriptPath){let p;try{p=ws.default.realpathSync(this._scriptPath)}catch{p=this._scriptPath}r=Ve.default.resolve(Ve.default.dirname(p),r)}if(r){let p=o(r,i);if(!p&&!e._executableFile&&this._scriptPath){let f=Ve.default.basename(this._scriptPath,Ve.default.extname(this._scriptPath));f!==this._name&&(p=o(r,`${f}-${e._name}`))}i=p||i}let l=s.includes(Ve.default.extname(i)),d;W.default.platform!=="win32"?l?(t.unshift(i),t=ma(W.default.execArgv).concat(t),d=An.default.spawn(W.default.argv[0],t,{stdio:"inherit"})):d=An.default.spawn(i,t,{stdio:"inherit"}):(this._checkForMissingExecutable(i,r,e._name),t.unshift(i),t=ma(W.default.execArgv).concat(t),d=An.default.spawn(W.default.execPath,t,{stdio:"inherit"})),d.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(f=>{W.default.on(f,()=>{d.killed===!1&&d.exitCode===null&&d.kill(f)})});let m=this._exitCallback;d.on("close",p=>{p=p??1,m?m(new ft(p,"commander.executeSubCommandAsync","(close)")):W.default.exit(p)}),d.on("error",p=>{if(p.code==="ENOENT")this._checkForMissingExecutable(i,r,e._name);else if(p.code==="EACCES")throw new Error(`'${i}' not executable`);if(!m)W.default.exit(1);else{let f=new ft(1,"commander.executeSubCommandAsync","(error)");f.nestedError=p,m(f)}}),this.runningCommand=d}_dispatchSubcommand(e,t,s){let o=this._findCommand(e);o||this.help({error:!0}),o._prepareForParse();let i;return i=this._chainOrCallSubCommandHook(i,o,"preSubcommand"),i=this._chainOrCall(i,()=>{if(o._executableHandler)this._executeSubCommand(o,t.concat(s));else return o._parseCommand(t,s)}),i}_dispatchHelpCommand(e){e||this.help();let t=this._findCommand(e);return t&&!t._executableHandler&&t.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,t)=>{e.required&&this.args[t]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(s,o,i)=>{let r=o;if(o!==null&&s.parseArg){let l=`error: command-argument value '${o}' is invalid for argument '${s.name()}'.`;r=this._callParseArg(s,o,i,l)}return r};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((s,o)=>{let i=s.defaultValue;s.variadic?o<this.args.length?(i=this.args.slice(o),s.parseArg&&(i=i.reduce((r,l)=>e(s,l,r),s.defaultValue))):i===void 0&&(i=[]):o<this.args.length&&(i=this.args[o],s.parseArg&&(i=e(s,i,s.defaultValue))),t[o]=i}),this.processedArgs=t}_chainOrCall(e,t){return e?.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let s=e,o=[];return this._getCommandAndAncestors().reverse().filter(i=>i._lifeCycleHooks[t]!==void 0).forEach(i=>{i._lifeCycleHooks[t].forEach(r=>{o.push({hookedCommand:i,callback:r})})}),t==="postAction"&&o.reverse(),o.forEach(i=>{s=this._chainOrCall(s,()=>i.callback(i.hookedCommand,this))}),s}_chainOrCallSubCommandHook(e,t,s){let o=e;return this._lifeCycleHooks[s]!==void 0&&this._lifeCycleHooks[s].forEach(i=>{o=this._chainOrCall(o,()=>i(this,t))}),o}_parseCommand(e,t){let s=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(s.operands),t=s.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(s.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=()=>{s.unknown.length>0&&this.unknownOption(s.unknown[0])},i=`command:${this.name()}`;if(this._actionHandler){o(),this._processArguments();let r;return r=this._chainOrCallHooks(r,"preAction"),r=this._chainOrCall(r,()=>this._actionHandler(this.processedArgs)),this.parent&&(r=this._chainOrCall(r,()=>{this.parent.emit(i,e,t)})),r=this._chainOrCallHooks(r,"postAction"),r}if(this.parent?.listenerCount(i))o(),this._processArguments(),this.parent.emit(i,e,t);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,t);this.listenerCount("command:*")?this.emit("command:*",e,t):this.commands.length?this.unknownCommand():(o(),this._processArguments())}else this.commands.length?(o(),this.help({error:!0})):(o(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(t=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find(t=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(t=>{t.mandatory&&e.getOptionValue(t.attributeName())===void 0&&e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(s=>{let o=s.attributeName();return this.getOptionValue(o)===void 0?!1:this.getOptionValueSource(o)!=="default"});e.filter(s=>s.conflictsWith.length>0).forEach(s=>{let o=e.find(i=>s.conflictsWith.includes(i.attributeName()));o&&this._conflictingOption(s,o)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],s=[],o=t;function i(p){return p.length>1&&p[0]==="-"}let r=p=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(p)?!this._getCommandAndAncestors().some(f=>f.options.map(_=>_.short).some(_=>/^-\d$/.test(_))):!1,l=null,d=null,m=0;for(;m<e.length||d;){let p=d??e[m++];if(d=null,p==="--"){o===s&&o.push(p),o.push(...e.slice(m));break}if(l&&(!i(p)||r(p))){this.emit(`option:${l.name()}`,p);continue}if(l=null,i(p)){let f=this._findOption(p);if(f){if(f.required){let _=e[m++];_===void 0&&this.optionMissingArgument(f),this.emit(`option:${f.name()}`,_)}else if(f.optional){let _=null;m<e.length&&(!i(e[m])||r(e[m]))&&(_=e[m++]),this.emit(`option:${f.name()}`,_)}else this.emit(`option:${f.name()}`);l=f.variadic?f:null;continue}}if(p.length>2&&p[0]==="-"&&p[1]!=="-"){let f=this._findOption(`-${p[1]}`);if(f){f.required||f.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${f.name()}`,p.slice(2)):(this.emit(`option:${f.name()}`),d=`-${p.slice(2)}`);continue}}if(/^--[^=]+=/.test(p)){let f=p.indexOf("="),_=this._findOption(p.slice(0,f));if(_&&(_.required||_.optional)){this.emit(`option:${_.name()}`,p.slice(f+1));continue}}if(o===t&&i(p)&&!(this.commands.length===0&&r(p))&&(o=s),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&s.length===0){if(this._findCommand(p)){t.push(p),s.push(...e.slice(m));break}else if(this._getHelpCommand()&&p===this._getHelpCommand().name()){t.push(p,...e.slice(m));break}else if(this._defaultCommandName){s.push(p,...e.slice(m));break}}if(this._passThroughOptions){o.push(p,...e.slice(m));break}o.push(p)}return{operands:t,unknown:s}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let s=0;s<t;s++){let o=this.options[s].attributeName();e[o]=o===this._versionOptionName?this._version:this[o]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
23
23
  `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
24
24
  `):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
25
- `),this.outputHelp({error:!0}));let s=t||{},o=s.exitCode||1,i=s.code||"commander.error";this._exit(o,i,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in H.default.env){let t=e.attributeName();(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,H.default.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new Mn(this.options),t=s=>this.getOptionValue(s)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(s));this.options.filter(s=>s.implied!==void 0&&t(s.attributeName())&&e.valueFromOption(this.getOptionValue(s.attributeName()),s)).forEach(s=>{Object.keys(s.implied).filter(o=>!t(o)).forEach(o=>{this.setOptionValueWithSource(o,s.implied[o],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let s=r=>{let l=r.attributeName(),d=this.getOptionValue(l),m=this.options.find(f=>f.negate&&l===f.attributeName()),p=this.options.find(f=>!f.negate&&l===f.attributeName());return m&&(m.presetArg===void 0&&d===!1||m.presetArg!==void 0&&d===m.presetArg)?m:p||r},o=r=>{let l=s(r),d=l.attributeName();return this.getOptionValueSource(d)==="env"?`environment variable '${l.envVar}'`:`option '${l.flags}'`},i=`error: ${o(e)} cannot be used with ${o(t)}`;this.error(i,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let o=[],i=this;do{let r=i.createHelp().visibleOptions(i).filter(l=>l.long).map(l=>l.long);o=o.concat(r),i=i.parent}while(i&&!i._enablePositionalOptions);t=ti(e,o)}let s=`error: unknown option '${e}'${t}`;this.error(s,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,s=t===1?"":"s",o=e.length,i=this.parent?` for '${this.name()}'`:"",r=e.join(", "),l=`error: too many arguments${i}. Expected ${t} argument${s} but got ${o}: ${r}.`;this.error(l,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let o=[];this.createHelp().visibleCommands(this).forEach(i=>{o.push(i.name()),i.alias()&&o.push(i.alias())}),t=ti(e,o)}let s=`error: unknown command '${e}'${t}`;this.error(s,{code:"commander.unknownCommand"})}version(e,t,s){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",s=s||"output the version number";let o=this.createOption(t,s);return this._versionOptionName=o.attributeName(),this._registerOption(o),this.on("option:"+o.name(),()=>{this._outputConfiguration.writeOut(`${e}
26
- `),this._exit(0,"commander.version",e)}),this}description(e,t){return e===void 0&&t===void 0?this._description:(this._description=e,t&&(this._argsDescription=t),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),e===t._name)throw new Error("Command alias can't be the same as its name");let s=this.parent?._findCommand(e);if(s){let o=[s.name()].concat(s.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${o}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(t=>this.alias(t)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(s=>Tn(s));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}helpGroup(e){return e===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=e,this)}commandsGroup(e){return e===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=e,this)}optionsGroup(e){return e===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=e,this)}_initOptionGroup(e){this._defaultOptionGroup&&!e.helpGroupHeading&&e.helpGroup(this._defaultOptionGroup)}_initCommandGroup(e){this._defaultCommandGroup&&!e.helpGroup()&&e.helpGroup(this._defaultCommandGroup)}nameFromFilename(e){return this._name=Ve.default.basename(e,Ve.default.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp(),s=this._getOutputContext(e);t.prepareContext({error:s.error,helpWidth:s.helpWidth,outputHasColors:s.hasColors});let o=t.formatHelp(this,t);return s.hasColors?o:this._outputConfiguration.stripColor(o)}_getOutputContext(e){e=e||{};let t=!!e.error,s,o,i;return t?(s=l=>this._outputConfiguration.writeErr(l),o=this._outputConfiguration.getErrHasColors(),i=this._outputConfiguration.getErrHelpWidth()):(s=l=>this._outputConfiguration.writeOut(l),o=this._outputConfiguration.getOutHasColors(),i=this._outputConfiguration.getOutHelpWidth()),{error:t,write:l=>(o||(l=this._outputConfiguration.stripColor(l)),s(l)),hasColors:o,helpWidth:i}}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let s=this._getOutputContext(e),o={error:s.error,write:s.write,command:this};this._getCommandAndAncestors().reverse().forEach(r=>r.emit("beforeAllHelp",o)),this.emit("beforeHelp",o);let i=this.helpInformation({error:s.error});if(t&&(i=t(i),typeof i!="string"&&!Buffer.isBuffer(i)))throw new Error("outputHelp callback must return a string or a Buffer");s.write(i),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",o),this._getCommandAndAncestors().forEach(r=>r.emit("afterAllHelp",o))}helpOption(e,t){return typeof e=="boolean"?(e?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(e??"-h, --help",t??"display help for command"),(e||t)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this._initOptionGroup(e),this}help(e){this.outputHelp(e);let t=Number(H.default.exitCode??0);t===0&&e&&typeof e!="function"&&e.error&&(t=1),this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let s=["beforeAll","before","after","afterAll"];if(!s.includes(e))throw new Error(`Unexpected value for position to addHelpText.
25
+ `),this.outputHelp({error:!0}));let s=t||{},o=s.exitCode||1,i=s.code||"commander.error";this._exit(o,i,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in W.default.env){let t=e.attributeName();(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,W.default.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new xn(this.options),t=s=>this.getOptionValue(s)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(s));this.options.filter(s=>s.implied!==void 0&&t(s.attributeName())&&e.valueFromOption(this.getOptionValue(s.attributeName()),s)).forEach(s=>{Object.keys(s.implied).filter(o=>!t(o)).forEach(o=>{this.setOptionValueWithSource(o,s.implied[o],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let s=r=>{let l=r.attributeName(),d=this.getOptionValue(l),m=this.options.find(f=>f.negate&&l===f.attributeName()),p=this.options.find(f=>!f.negate&&l===f.attributeName());return m&&(m.presetArg===void 0&&d===!1||m.presetArg!==void 0&&d===m.presetArg)?m:p||r},o=r=>{let l=s(r),d=l.attributeName();return this.getOptionValueSource(d)==="env"?`environment variable '${l.envVar}'`:`option '${l.flags}'`},i=`error: ${o(e)} cannot be used with ${o(t)}`;this.error(i,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let o=[],i=this;do{let r=i.createHelp().visibleOptions(i).filter(l=>l.long).map(l=>l.long);o=o.concat(r),i=i.parent}while(i&&!i._enablePositionalOptions);t=ii(e,o)}let s=`error: unknown option '${e}'${t}`;this.error(s,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,s=t===1?"":"s",o=e.length,i=this.parent?` for '${this.name()}'`:"",r=e.join(", "),l=`error: too many arguments${i}. Expected ${t} argument${s} but got ${o}: ${r}.`;this.error(l,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let o=[];this.createHelp().visibleCommands(this).forEach(i=>{o.push(i.name()),i.alias()&&o.push(i.alias())}),t=ii(e,o)}let s=`error: unknown command '${e}'${t}`;this.error(s,{code:"commander.unknownCommand"})}version(e,t,s){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",s=s||"output the version number";let o=this.createOption(t,s);return this._versionOptionName=o.attributeName(),this._registerOption(o),this.on("option:"+o.name(),()=>{this._outputConfiguration.writeOut(`${e}
26
+ `),this._exit(0,"commander.version",e)}),this}description(e,t){return e===void 0&&t===void 0?this._description:(this._description=e,t&&(this._argsDescription=t),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),e===t._name)throw new Error("Command alias can't be the same as its name");let s=this.parent?._findCommand(e);if(s){let o=[s.name()].concat(s.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${o}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(t=>this.alias(t)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(s=>vn(s));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}helpGroup(e){return e===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=e,this)}commandsGroup(e){return e===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=e,this)}optionsGroup(e){return e===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=e,this)}_initOptionGroup(e){this._defaultOptionGroup&&!e.helpGroupHeading&&e.helpGroup(this._defaultOptionGroup)}_initCommandGroup(e){this._defaultCommandGroup&&!e.helpGroup()&&e.helpGroup(this._defaultCommandGroup)}nameFromFilename(e){return this._name=Ve.default.basename(e,Ve.default.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp(),s=this._getOutputContext(e);t.prepareContext({error:s.error,helpWidth:s.helpWidth,outputHasColors:s.hasColors});let o=t.formatHelp(this,t);return s.hasColors?o:this._outputConfiguration.stripColor(o)}_getOutputContext(e){e=e||{};let t=!!e.error,s,o,i;return t?(s=l=>this._outputConfiguration.writeErr(l),o=this._outputConfiguration.getErrHasColors(),i=this._outputConfiguration.getErrHelpWidth()):(s=l=>this._outputConfiguration.writeOut(l),o=this._outputConfiguration.getOutHasColors(),i=this._outputConfiguration.getOutHelpWidth()),{error:t,write:l=>(o||(l=this._outputConfiguration.stripColor(l)),s(l)),hasColors:o,helpWidth:i}}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let s=this._getOutputContext(e),o={error:s.error,write:s.write,command:this};this._getCommandAndAncestors().reverse().forEach(r=>r.emit("beforeAllHelp",o)),this.emit("beforeHelp",o);let i=this.helpInformation({error:s.error});if(t&&(i=t(i),typeof i!="string"&&!Buffer.isBuffer(i)))throw new Error("outputHelp callback must return a string or a Buffer");s.write(i),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",o),this._getCommandAndAncestors().forEach(r=>r.emit("afterAllHelp",o))}helpOption(e,t){return typeof e=="boolean"?(e?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(e??"-h, --help",t??"display help for command"),(e||t)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this._initOptionGroup(e),this}help(e){this.outputHelp(e);let t=Number(W.default.exitCode??0);t===0&&e&&typeof e!="function"&&e.error&&(t=1),this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let s=["beforeAll","before","after","afterAll"];if(!s.includes(e))throw new Error(`Unexpected value for position to addHelpText.
27
27
  Expecting one of '${s.join("', '")}'`);let o=`${e}Help`;return this.on(o,i=>{let r;typeof t=="function"?r=t({error:i.error,command:i.command}):r=t,r&&i.write(`${r}
28
- `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(o=>t.is(o))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function la(n){return n.map(e=>{if(!e.startsWith("--inspect"))return e;let t,s="127.0.0.1",o="9229",i;return(i=e.match(/^(--inspect(-brk)?)$/))!==null?t=i[1]:(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=i[1],/^\d+$/.test(i[3])?o=i[3]:s=i[3]):(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=i[1],s=i[3],o=i[4]),t&&o!=="0"?`${t}=${s}:${parseInt(o)+1}`:e})}function ca(){if(H.default.env.NO_COLOR||H.default.env.FORCE_COLOR==="0"||H.default.env.FORCE_COLOR==="false")return!1;if(H.default.env.FORCE_COLOR||H.default.env.CLICOLOR_FORCE!==void 0)return!0}var ph=new ne;var ma=(n=0)=>e=>`\x1B[${e+n}m`,pa=(n=0)=>e=>`\x1B[${38+n};5;${e}m`,ga=(n=0)=>(e,t,s)=>`\x1B[${38+n};2;${e};${t};${s}m`,oe={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},fh=Object.keys(oe.modifier),Mu=Object.keys(oe.color),Pu=Object.keys(oe.bgColor),hh=[...Mu,...Pu];function vu(){let n=new Map;for(let[e,t]of Object.entries(oe)){for(let[s,o]of Object.entries(t))oe[s]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},t[s]=oe[s],n.set(o[0],o[1]);Object.defineProperty(oe,e,{value:t,enumerable:!1})}return Object.defineProperty(oe,"codes",{value:n,enumerable:!1}),oe.color.close="\x1B[39m",oe.bgColor.close="\x1B[49m",oe.color.ansi=ma(),oe.color.ansi256=pa(),oe.color.ansi16m=ga(),oe.bgColor.ansi=ma(10),oe.bgColor.ansi256=pa(10),oe.bgColor.ansi16m=ga(10),Object.defineProperties(oe,{rgbToAnsi256:{value(e,t,s){return e===t&&t===s?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(s/255*5)},enumerable:!1},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[s]=t;s.length===3&&(s=[...s].map(i=>i+i).join(""));let o=Number.parseInt(s,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:e=>oe.rgbToAnsi256(...oe.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,s,o;if(e>=232)t=((e-232)*10+8)/255,s=t,o=t;else{e-=16;let l=e%36;t=Math.floor(e/36)/5,s=Math.floor(l/6)/5,o=l%6/5}let i=Math.max(t,s,o)*2;if(i===0)return 30;let r=30+(Math.round(o)<<2|Math.round(s)<<1|Math.round(t));return i===2&&(r+=60),r},enumerable:!1},rgbToAnsi:{value:(e,t,s)=>oe.ansi256ToAnsi(oe.rgbToAnsi256(e,t,s)),enumerable:!1},hexToAnsi:{value:e=>oe.ansi256ToAnsi(oe.hexToAnsi256(e)),enumerable:!1}}),oe}var xu=vu(),Be=xu;var xn=A(require("node:process"),1),ha=A(require("node:os"),1),si=A(require("node:tty"),1);function Fe(n,e=globalThis.Deno?globalThis.Deno.args:xn.default.argv){let t=n.startsWith("-")?"":n.length===1?"-":"--",s=e.indexOf(t+n),o=e.indexOf("--");return s!==-1&&(o===-1||s<o)}var{env:ie}=xn.default,vn;Fe("no-color")||Fe("no-colors")||Fe("color=false")||Fe("color=never")?vn=0:(Fe("color")||Fe("colors")||Fe("color=true")||Fe("color=always"))&&(vn=1);function Au(){if("FORCE_COLOR"in ie)return ie.FORCE_COLOR==="true"?1:ie.FORCE_COLOR==="false"?0:ie.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(ie.FORCE_COLOR,10),3)}function Eu(n){return n===0?!1:{level:n,hasBasic:!0,has256:n>=2,has16m:n>=3}}function Du(n,{streamIsTTY:e,sniffFlags:t=!0}={}){let s=Au();s!==void 0&&(vn=s);let o=t?vn:s;if(o===0)return 0;if(t){if(Fe("color=16m")||Fe("color=full")||Fe("color=truecolor"))return 3;if(Fe("color=256"))return 2}if("TF_BUILD"in ie&&"AGENT_NAME"in ie)return 1;if(n&&!e&&o===void 0)return 0;let i=o||0;if(ie.TERM==="dumb")return i;if(xn.default.platform==="win32"){let r=ha.default.release().split(".");return Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in ie)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(r=>r in ie)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(r=>r in ie)||ie.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in ie)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ie.TEAMCITY_VERSION)?1:0;if(ie.COLORTERM==="truecolor"||ie.TERM==="xterm-kitty"||ie.TERM==="xterm-ghostty"||ie.TERM==="wezterm")return 3;if("TERM_PROGRAM"in ie){let r=Number.parseInt((ie.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ie.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ie.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ie.TERM)||"COLORTERM"in ie?1:i}function fa(n,e={}){let t=Du(n,{streamIsTTY:n&&n.isTTY,...e});return Eu(t)}var Ru={stdout:fa({isTTY:si.default.isatty(1)}),stderr:fa({isTTY:si.default.isatty(2)})},ya=Ru;function _a(n,e,t){let s=n.indexOf(e);if(s===-1)return n;let o=e.length,i=0,r="";do r+=n.slice(i,s)+e+t,i=s+o,s=n.indexOf(e,i);while(s!==-1);return r+=n.slice(i),r}function Ca(n,e,t,s){let o=0,i="";do{let r=n[s-1]==="\r";i+=n.slice(o,r?s-1:s)+e+(r?`\r
28
+ `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(o=>t.is(o))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function ma(n){return n.map(e=>{if(!e.startsWith("--inspect"))return e;let t,s="127.0.0.1",o="9229",i;return(i=e.match(/^(--inspect(-brk)?)$/))!==null?t=i[1]:(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=i[1],/^\d+$/.test(i[3])?o=i[3]:s=i[3]):(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=i[1],s=i[3],o=i[4]),t&&o!=="0"?`${t}=${s}:${parseInt(o)+1}`:e})}function pa(){if(W.default.env.NO_COLOR||W.default.env.FORCE_COLOR==="0"||W.default.env.FORCE_COLOR==="false")return!1;if(W.default.env.FORCE_COLOR||W.default.env.CLICOLOR_FORCE!==void 0)return!0}var Ch=new oe;var ha=(n=0)=>e=>`\x1B[${e+n}m`,ya=(n=0)=>e=>`\x1B[${38+n};5;${e}m`,_a=(n=0)=>(e,t,s)=>`\x1B[${38+n};2;${e};${t};${s}m`,ie={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},kh=Object.keys(ie.modifier),Du=Object.keys(ie.color),Ru=Object.keys(ie.bgColor),Sh=[...Du,...Ru];function Iu(){let n=new Map;for(let[e,t]of Object.entries(ie)){for(let[s,o]of Object.entries(t))ie[s]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},t[s]=ie[s],n.set(o[0],o[1]);Object.defineProperty(ie,e,{value:t,enumerable:!1})}return Object.defineProperty(ie,"codes",{value:n,enumerable:!1}),ie.color.close="\x1B[39m",ie.bgColor.close="\x1B[49m",ie.color.ansi=ha(),ie.color.ansi256=ya(),ie.color.ansi16m=_a(),ie.bgColor.ansi=ha(10),ie.bgColor.ansi256=ya(10),ie.bgColor.ansi16m=_a(10),Object.defineProperties(ie,{rgbToAnsi256:{value(e,t,s){return e===t&&t===s?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(s/255*5)},enumerable:!1},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[s]=t;s.length===3&&(s=[...s].map(i=>i+i).join(""));let o=Number.parseInt(s,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:e=>ie.rgbToAnsi256(...ie.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,s,o;if(e>=232)t=((e-232)*10+8)/255,s=t,o=t;else{e-=16;let l=e%36;t=Math.floor(e/36)/5,s=Math.floor(l/6)/5,o=l%6/5}let i=Math.max(t,s,o)*2;if(i===0)return 30;let r=30+(Math.round(o)<<2|Math.round(s)<<1|Math.round(t));return i===2&&(r+=60),r},enumerable:!1},rgbToAnsi:{value:(e,t,s)=>ie.ansi256ToAnsi(ie.rgbToAnsi256(e,t,s)),enumerable:!1},hexToAnsi:{value:e=>ie.ansi256ToAnsi(ie.hexToAnsi256(e)),enumerable:!1}}),ie}var Uu=Iu(),Be=Uu;var Dn=v(require("node:process"),1),ba=v(require("node:os"),1),ri=v(require("node:tty"),1);function Oe(n,e=globalThis.Deno?globalThis.Deno.args:Dn.default.argv){let t=n.startsWith("-")?"":n.length===1?"-":"--",s=e.indexOf(t+n),o=e.indexOf("--");return s!==-1&&(o===-1||s<o)}var{env:re}=Dn.default,En;Oe("no-color")||Oe("no-colors")||Oe("color=false")||Oe("color=never")?En=0:(Oe("color")||Oe("colors")||Oe("color=true")||Oe("color=always"))&&(En=1);function Ou(){if("FORCE_COLOR"in re)return re.FORCE_COLOR==="true"?1:re.FORCE_COLOR==="false"?0:re.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(re.FORCE_COLOR,10),3)}function Fu(n){return n===0?!1:{level:n,hasBasic:!0,has256:n>=2,has16m:n>=3}}function Nu(n,{streamIsTTY:e,sniffFlags:t=!0}={}){let s=Ou();s!==void 0&&(En=s);let o=t?En:s;if(o===0)return 0;if(t){if(Oe("color=16m")||Oe("color=full")||Oe("color=truecolor"))return 3;if(Oe("color=256"))return 2}if("TF_BUILD"in re&&"AGENT_NAME"in re)return 1;if(n&&!e&&o===void 0)return 0;let i=o||0;if(re.TERM==="dumb")return i;if(Dn.default.platform==="win32"){let r=ba.default.release().split(".");return Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in re)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(r=>r in re)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(r=>r in re)||re.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in re)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(re.TEAMCITY_VERSION)?1:0;if(re.COLORTERM==="truecolor"||re.TERM==="xterm-kitty"||re.TERM==="xterm-ghostty"||re.TERM==="wezterm")return 3;if("TERM_PROGRAM"in re){let r=Number.parseInt((re.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(re.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(re.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(re.TERM)||"COLORTERM"in re?1:i}function Ca(n,e={}){let t=Nu(n,{streamIsTTY:n&&n.isTTY,...e});return Fu(t)}var Lu={stdout:Ca({isTTY:ri.default.isatty(1)}),stderr:Ca({isTTY:ri.default.isatty(2)})},ka=Lu;function Sa(n,e,t){let s=n.indexOf(e);if(s===-1)return n;let o=e.length,i=0,r="";do r+=n.slice(i,s)+e+t,i=s+o,s=n.indexOf(e,i);while(s!==-1);return r+=n.slice(i),r}function wa(n,e,t,s){let o=0,i="";do{let r=n[s-1]==="\r";i+=n.slice(o,r?s-1:s)+e+(r?`\r
29
29
  `:`
30
30
  `)+t,o=s+1,s=n.indexOf(`
31
- `,o)}while(s!==-1);return i+=n.slice(o),i}var{stdout:ba,stderr:ka}=ya,ni=Symbol("GENERATOR"),Wt=Symbol("STYLER"),Ss=Symbol("IS_EMPTY"),Sa=["ansi","ansi","ansi256","ansi16m"],Vt=Object.create(null),Iu=(n,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let t=ba?ba.level:0;n.level=e.level===void 0?t:e.level};var Uu=n=>{let e=(...t)=>t.join(" ");return Iu(e,n),Object.setPrototypeOf(e,ws.prototype),e};function ws(n){return Uu(n)}Object.setPrototypeOf(ws.prototype,Function.prototype);for(let[n,e]of Object.entries(Be))Vt[n]={get(){let t=An(this,ii(e.open,e.close,this[Wt]),this[Ss]);return Object.defineProperty(this,n,{value:t}),t}};Vt.visible={get(){let n=An(this,this[Wt],!0);return Object.defineProperty(this,"visible",{value:n}),n}};var oi=(n,e,t,...s)=>n==="rgb"?e==="ansi16m"?Be[t].ansi16m(...s):e==="ansi256"?Be[t].ansi256(Be.rgbToAnsi256(...s)):Be[t].ansi(Be.rgbToAnsi(...s)):n==="hex"?oi("rgb",e,t,...Be.hexToRgb(...s)):Be[t][n](...s),Fu=["rgb","hex","ansi256"];for(let n of Fu){Vt[n]={get(){let{level:t}=this;return function(...s){let o=ii(oi(n,Sa[t],"color",...s),Be.color.close,this[Wt]);return An(this,o,this[Ss])}}};let e="bg"+n[0].toUpperCase()+n.slice(1);Vt[e]={get(){let{level:t}=this;return function(...s){let o=ii(oi(n,Sa[t],"bgColor",...s),Be.bgColor.close,this[Wt]);return An(this,o,this[Ss])}}}}var Ou=Object.defineProperties(()=>{},{...Vt,level:{enumerable:!0,get(){return this[ni].level},set(n){this[ni].level=n}}}),ii=(n,e,t)=>{let s,o;return t===void 0?(s=n,o=e):(s=t.openAll+n,o=e+t.closeAll),{open:n,close:e,openAll:s,closeAll:o,parent:t}},An=(n,e,t)=>{let s=(...o)=>Nu(s,o.length===1?""+o[0]:o.join(" "));return Object.setPrototypeOf(s,Ou),s[ni]=n,s[Wt]=e,s[Ss]=t,s},Nu=(n,e)=>{if(n.level<=0||!e)return n[Ss]?"":e;let t=n[Wt];if(t===void 0)return e;let{openAll:s,closeAll:o}=t;if(e.includes("\x1B"))for(;t!==void 0;)e=_a(e,t.close,t.open),t=t.parent;let i=e.indexOf(`
32
- `);return i!==-1&&(e=Ca(e,o,s,i)),s+e+o};Object.defineProperties(ws.prototype,Vt);var Lu=ws(),wh=ws({level:ka?ka.level:0});var S=Lu;var lt=A(require("fs")),Ce=A(require("path")),sc=A(require("os"));var wa={getConfiguration:()=>({get:()=>{}})},ri={getExtension:()=>{}},En=class n{fsPath;scheme;path;constructor(e){this.fsPath=e,this.scheme="file",this.path=e}static file(e){return new n(e)}static joinPath(e,...t){let s=[e.fsPath,...t].join("/");return new n(s)}toString(){return this.fsPath}};var Ms=A(require("fs")),va=A(require("path"));function ai(n){return typeof n.discover=="function"}function Ma(n){return typeof n.analyzeUsage=="function"}function Dn(n){if(!n||!n.startsWith("file://"))return;let e=n.slice(7),t;try{t=decodeURIComponent(e)}catch{return}if(!t.split(/[\\/]/).some(o=>o===".."))return t.startsWith("//")?process.platform==="win32"?t.replace(/\//g,"\\"):t:/^\/[A-Za-z]:/.test(t)?t.slice(1):t}function ge(n){return n.replace(/\\/g,"/")}var Rn=ge;function re(n){return ge(n).toLowerCase()}function In(n,e=process.platform){let t=ge(n);return e==="linux"?t:t.toLowerCase()}function li(n,e,t){try{return n()}catch(s){return console.error(`[recovery] ${t??"unknown"}:`,s),e}}async function At(n,e,t){try{return await n()}catch(s){return console.error(`[recovery] ${t??"unknown"}:`,s),e}}var Gu=/^mcp__[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}__(.+)$/i;function Pa(n){return Gu.test(n)}function ju(n){return!n||n==="agent"?"agent":n.includes("plan-agent/Plan.agent.md")?"plan":n.includes(".agent.md")?"customAgent":"agent"}function Un(n){return n?typeof n=="string"?n==="edit"?"edit":n==="agent"?"agent":"ask":n.kind?n.kind==="edit"?"edit":n.kind==="ask"?"ask":n.kind==="agent"?ju(n.id):"ask":"ask":"ask"}function Ze(n){return n.startsWith("mcp.")||n.startsWith("mcp_")||n.startsWith("mcp__")}function Ts(n){return n.startsWith("mcp_github_github_")?"mcp_io_github_git_"+n.substring(18):n.startsWith("mcp.github.github.")?"mcp.io.github.git."+n.substring(18):n}function ht(n,e={}){let t=e[n]??e[n.toLowerCase()];if(t&&t.includes(":"))return t.split(":")[0].trim();if(n.startsWith("mcp_io_github_git_")||n.startsWith("mcp.io.github.git."))return"GitHub MCP (Local)";if(n.startsWith("mcp_github_github_")||n.startsWith("mcp.github.github."))return"GitHub MCP (Remote)";if(n.startsWith("mcp__")){if(Pa(n))return"Claude MCP";let i=n.slice(5),r=i.indexOf("__");return(r>=0?i.slice(0,r):i)||"unknown"}return n.replace(/^mcp[._]/,"").split(/[._]/)[0]||"unknown"}var Fn=class n{deps;_sessionFilesCache=null;_sessionFilesCacheTime=0;static SESSION_FILES_CACHE_TTL=6e4;_lastDiscoveryHadError=!1;_lastDiscoveryFilesCount=0;constructor(e){this.deps=e}get lastDiscoveryHadError(){return this._lastDiscoveryHadError}get lastDiscoveryFilesCount(){return this._lastDiscoveryFilesCount}clearCache(){this._sessionFilesCache=null,this._sessionFilesCacheTime=0}async pathExists(e){try{return await Ms.promises.access(e),!0}catch{return!1}}pathExistsWithLogging(e,t){try{let s=Ms.existsSync(e);return s||this.deps.log(`\u{1F50D} Path not found [${t}]: ${e}`),s}catch{return!1}}getDiagnosticCandidatePaths(){let e=[];for(let t of this.deps.ecosystems)if(ai(t))try{let s=t.getCandidatePaths();for(let o of s){let i=this.pathExistsWithLogging(o.path,o.source);e.push({path:o.path,exists:i,source:o.source})}}catch{}if(this.deps.windsurf){let t=this.deps.windsurf.getCascadeDir();e.push({path:t,exists:this.pathExistsWithLogging(t,"Windsurf Cascade"),source:"Windsurf Cascade"})}return e}checkCopilotExtension(){let e=ri.getExtension("GitHub.copilot"),t=ri.getExtension("GitHub.copilot-chat");if(!e&&!t)this.deps.log("\u26A0\uFE0F GitHub Copilot extensions not found");else{let o=e?e.isActive?"\u2705 Active":"\u23F3 Loading":"\u274C Not found",i=t?t.isActive?"\u2705 Active":"\u23F3 Loading":"\u274C Not found";this.deps.log(`GitHub Copilot: ${o}, Chat: ${i}`)}process.env.CODESPACES==="true"&&(!e?.isActive||!t?.isActive)&&this.deps.warn("\u26A0\uFE0F Running in Codespaces with inactive Copilot extensions")}async getCopilotSessionFiles(){return this.getCopilotSessionFilesStreaming()}async tryGetSampleDataFiles(e){let t=this.deps.sampleDataDirectoryOverride?.()??wa.getConfiguration("aiEngineeringFluency").get("sampleDataDirectory");if(!t||t.trim().length===0)return;let s=t.trim();try{if(!await this.pathExists(s)){this.deps.warn(`Sample data directory not found: ${s}`);return}let o=(await Ms.promises.readdir(s)).filter(i=>i.endsWith(".json")||i.endsWith(".jsonl")).map(i=>va.join(s,i));return this.deps.log(`\u{1F4F8} Sample data mode: using ${o.length} file(s) from ${s}`),this._sessionFilesCache=o,this._sessionFilesCacheTime=e,this._lastDiscoveryFilesCount=o.length,o}catch(o){this.deps.warn(`Error reading sample data directory: ${o}`);return}}collectAdapterFiles(e,t,s,o,i){for(let r=0;r<e.length;r++){let l=e[r];if(l.status==="rejected"){this.deps.warn(`Could not discover ${t[r].displayName} sessions: ${l.reason}`),this._lastDiscoveryHadError=!0;continue}let d=[];for(let m of l.value.sessionFiles){let p=In(m);s.has(p)||(s.add(p),d.push(m))}d.length>0&&(o.push(...d),i&&i(d))}}async collectWindsurfFiles(e,t,s){if(this.deps.windsurf)try{let i=(await this.deps.windsurf.getWindsurfSessions()).map(r=>r.file).filter(r=>{let l=In(r);return e.has(l)?!1:(e.add(l),!0)});i.length>0&&(t.push(...i),s&&s(i))}catch(o){this.deps.warn(`Could not discover Windsurf sessions: ${o}`),this._lastDiscoveryHadError=!0}}async discoverFromAdapters(e){let t=new Set,s=[],o=Date.now(),i=this.deps.ecosystems.filter(ai);this.deps.log(`\u{1F50D} Searching for session files via ${i.length} discoverable ecosystem adapter(s) (parallel)`);let r=await Promise.allSettled(i.map(d=>d.discover(this.deps.log)));this.collectAdapterFiles(r,i,t,s,e),await this.collectWindsurfFiles(t,s,e);let l=r.reduce((d,m)=>d+(m.status==="fulfilled"?m.value.sessionFiles.length:0),0)-s.length;return l>0&&this.deps.log(`\u{1F9F9} Deduplicated ${l} duplicate session path(s)`),this.deps.log(`\u2728 Total: ${s.length} session file(s) discovered in ${((Date.now()-o)/1e3).toFixed(1)}s`),s.length===0&&this.deps.warn("\u26A0\uFE0F No session files found - Have you used GitHub Copilot Chat yet?"),s}async getCopilotSessionFilesStreaming(e){let t=Date.now();if(this._sessionFilesCache&&t-this._sessionFilesCacheTime<n.SESSION_FILES_CACHE_TTL)return this.deps.log(`\u{1F4A8} Using cached session files list (${this._sessionFilesCache.length} files, cached ${Math.round((t-this._sessionFilesCacheTime)/1e3)}s ago)`),e&&e(this._sessionFilesCache),this._sessionFilesCache;this._lastDiscoveryHadError=!1,this._lastDiscoveryFilesCount=0;let s=await this.tryGetSampleDataFiles(t);if(s)return e&&e(s),s;let o=[];try{let i=await this.discoverFromAdapters(e);return o.push(...i),this._sessionFilesCache=o,this._sessionFilesCacheTime=Date.now(),this._lastDiscoveryFilesCount=o.length,o}catch(i){return this.deps.error("Error getting session files:",i),this._lastDiscoveryHadError=!0,this._lastDiscoveryFilesCount=o.length,o}}};var ye=A(require("fs")),xe=A(require("path")),Bn=A(require("os")),xa=A(Gn());var jn=class{_sqlJsModule=null;_sqlJsInitPromise=null;_dbCache=null;_dbCacheInflight=new Map;extensionUri;constructor(e){this.extensionUri=e}getOpenCodeDataDir(){let e=Bn.platform(),t=Bn.homedir();if(e==="win32")return xe.join(t,".local","share","opencode");let s=process.env.XDG_DATA_HOME||xe.join(t,".local","share");return xe.join(s,"opencode")}isOpenCodeSessionFile(e){let t=re(e);return t.includes("/opencode/storage/session/")||t.includes("/opencode/opencode.db#ses_")}isOpenCodeDbSession(e){return e.includes("opencode.db#ses_")}async initSqlJs(){return this._sqlJsModule?this._sqlJsModule:(this._sqlJsInitPromise||(this._sqlJsInitPromise=(async()=>{let e=xe.join(__dirname,"sql-wasm.wasm"),t;ye.existsSync(e)&&(t=ye.readFileSync(e));let s=await(0,xa.default)(t?{wasmBinary:t.buffer}:void 0);return this._sqlJsModule=s,s})().catch(e=>{throw this._sqlJsInitPromise=null,e})),this._sqlJsInitPromise)}dispose(){this.closeDbCache(),this._dbCacheInflight.clear(),this._sqlJsInitPromise=null}closeDb(e){try{e.close()}catch{}}closeDbCache(){this._dbCache&&(this.closeDb(this._dbCache.db),this._dbCache=null)}getCachedDbForPath(e){return this._dbCache?.path===e?this._dbCache.db:null}isMissingFileError(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}statOpenCodeDb(e){try{return ye.statSync(e)}catch(t){return this.isMissingFileError(t)&&this._dbCache?.path===e&&this.closeDbCache(),null}}isCachedDbCurrent(e,t){return this._dbCache?.path===e&&this._dbCache.mtimeMs===t.mtimeMs&&this._dbCache.size===t.size}getDbCacheKey(e,t){return`${e}:${t.mtimeMs}:${t.size}`}sameDbStats(e,t){return e.mtimeMs===t.mtimeMs&&e.size===t.size}async refreshOpenCodeDb(e,t){let s;try{let i=await this.initSqlJs(),r=ye.readFileSync(e);s=new i.Database(r)}catch{return this.getCachedDbForPath(e)}let o=this.statOpenCodeDb(e);return!o||!this.sameDbStats(t,o)?(this.closeDb(s),this.isCachedDbCurrent(e,o??t)?this._dbCache?.db??null:this.getCachedDbForPath(e)):(this.closeDbCache(),this._dbCache={db:s,path:e,mtimeMs:t.mtimeMs,size:t.size},s)}async getOpenCodeDb(){let e=xe.join(this.getOpenCodeDataDir(),"opencode.db"),t=this.statOpenCodeDb(e);if(!t)return this.getCachedDbForPath(e);if(this.isCachedDbCurrent(e,t))return this._dbCache?.db??null;let s=this.getDbCacheKey(e,t),o=this._dbCacheInflight.get(s);if(o)return o;let i=this.refreshOpenCodeDb(e,t);this._dbCacheInflight.set(s,i);try{return await i}finally{this._dbCacheInflight.get(s)===i&&this._dbCacheInflight.delete(s)}}async readOpenCodeDbSession(e){let t=await this.getOpenCodeDb();if(!t)return null;try{let s=t.exec("SELECT id, slug, title, time_created, time_updated, project_id, directory FROM session WHERE id = ?",[e]);if(s.length===0||s[0].values.length===0)return null;let o=s[0].values[0],i=s[0].columns,r={};for(let l=0;l<i.length;l++)r[i[l]]=o[l];return{id:r.id,slug:r.slug,title:r.title,projectID:r.project_id,directory:r.directory,time:{created:r.time_created,updated:r.time_updated}}}catch{return null}}async readOpenCodeDbMessages(e){let t=await this.getOpenCodeDb();if(!t)return[];try{let s=t.exec("SELECT id, data, time_created FROM message WHERE session_id = ? ORDER BY time_created ASC",[e]);return s.length===0?[]:s[0].values.map(o=>{let i=JSON.parse(o[1]);return i.id=o[0],i.time=i.time||{},i.time.created=i.time.created||o[2],i})}catch{return[]}}async readOpenCodeDbParts(e){let t=await this.getOpenCodeDb();if(!t)return[];try{let s=t.exec("SELECT id, data, time_created FROM part WHERE message_id = ? ORDER BY time_created ASC",[e]);return s.length===0?[]:s[0].values.map(o=>{let i=JSON.parse(o[1]);return i.id=o[0],i.time=i.time||{},i.time.created=i.time.created||o[2],i})}catch{return[]}}async discoverOpenCodeDbSessions(){let e=await this.getOpenCodeDb();if(!e)return[];try{let t=e.exec("SELECT id FROM session");return t.length===0?[]:t[0].values.map(s=>s[0])}catch{return[]}}async statSessionFile(e){if(this.isOpenCodeDbSession(e)){let t=xe.join(this.getOpenCodeDataDir(),"opencode.db");return ye.promises.stat(t)}return ye.promises.stat(e)}readOpenCodeMessages(e){let t=this.getOpenCodeDataDir(),s=xe.join(t,"storage","message",e),o=[];try{if(!ye.existsSync(s))return o;let i=ye.readdirSync(s,{withFileTypes:!0});for(let r of i)if(!(!r.isFile()||!r.name.endsWith(".json")))try{let l=ye.readFileSync(xe.join(s,r.name),"utf8"),d=JSON.parse(l);o.push(d)}catch{}}catch{}return o.sort((i,r)=>(i.time?.created||0)-(r.time?.created||0)),o}readOpenCodeParts(e){let t=this.getOpenCodeDataDir(),s=xe.join(t,"storage","part",e),o=[];try{if(!ye.existsSync(s))return o;let i=ye.readdirSync(s,{withFileTypes:!0});for(let r of i)if(!(!r.isFile()||!r.name.endsWith(".json")))try{let l=ye.readFileSync(xe.join(s,r.name),"utf8"),d=JSON.parse(l);o.push(d)}catch{}}catch{}return o.sort((i,r)=>(i.time?.start||0)-(r.time?.start||0)),o}getOpenCodeSessionId(e){let t=e.indexOf("opencode.db#");if(t!==-1)return e.substring(t+12);let s=xe.basename(e,".json");return s.startsWith("ses_")?s:null}async getOpenCodeMessagesForSession(e){let t=this.getOpenCodeSessionId(e);if(!t)return[];if(this.isOpenCodeDbSession(e))return this.readOpenCodeDbMessages(t);let s=await this.readOpenCodeDbMessages(t);return s.length>0?s:this.readOpenCodeMessages(t)}async getOpenCodePartsForMessage(e){let t=await this.readOpenCodeDbParts(e);return t.length>0?t:this.readOpenCodeParts(e)}async getTokensFromOpenCodeSession(e){let t=await this.getOpenCodeMessagesForSession(e);return this.getTokensFromOpenCodeMessages(t)}getTokensFromOpenCodeMessages(e){let t=0,s=0;for(let o of e)o.role==="assistant"&&o.tokens&&(typeof o.tokens.total=="number"&&(s=o.tokens.total),t+=o.tokens.reasoning||0);return{tokens:s,thinkingTokens:t}}async countOpenCodeInteractions(e){let t=await this.getOpenCodeMessagesForSession(e);return this.countOpenCodeInteractionsFromMessages(t)}countOpenCodeInteractionsFromMessages(e){return e.filter(t=>t.role==="user").length}getAssistantMessagesByParent(e){let t=new Map;for(let s of e){if(s.role!=="assistant"||!s.parentID)continue;let o=t.get(s.parentID)??[];o.push(s),t.set(s.parentID,o)}return t}async getOpenCodeModelUsage(e){let t=await this.getOpenCodeMessagesForSession(e);return this.getOpenCodeModelUsageFromMessages(t)}computeTurnCumTotal(e,t){let s=t;for(let o of e)typeof o.tokens?.total=="number"&&(s=Math.max(s,o.tokens.total));return s}getOpenCodeModelUsageFromMessages(e){let t={},s=this.getAssistantMessagesByParent(e),o=0;for(let i=0;i<e.length;i++){let r=e[i];if(r.role!=="user")continue;let l=s.get(r.id)??[];if(l.length===0)continue;let d=this.computeTurnCumTotal(l,o),m=d-o;if(m<=0){o=d;continue}let p=l[0].modelID||l[0].model?.modelID||"unknown";t[p]||(t[p]={inputTokens:0,outputTokens:0});let f=l.reduce((b,M)=>b+(M.tokens?.output||0)+(M.tokens?.reasoning||0),0);t[p].inputTokens+=Math.max(0,m-f),t[p].outputTokens+=f;let _=l.reduce((b,M)=>b+(M.tokens?.cache?.read||0),0),k=l.reduce((b,M)=>b+(M.tokens?.cache?.write||0),0);_>0&&(t[p].cachedReadTokens=(t[p].cachedReadTokens??0)+_),k>0&&(t[p].cacheCreationTokens=(t[p].cacheCreationTokens??0)+k),o=d}return t}async getOpenCodeSessionData(e){let t=await this.getOpenCodeMessagesForSession(e),s=Date.now();t.length>0&&t[0].time_created&&(s=t[0].time_created);let{tokens:o}=this.getTokensFromOpenCodeMessages(t),i=this.countOpenCodeInteractionsFromMessages(t),r=this.getOpenCodeModelUsageFromMessages(t),l=this.getAssistantMessagesByParent(t),d={};for(let p=0;p<t.length;p++){let f=t[p];if(f.role!=="user")continue;let _=l.get(f.id)??[];if(_.length===0)continue;let k=_[0].modelID||_[0].model?.modelID||"unknown";d[k]=(d[k]||0)+1}let m={};for(let[p,f]of Object.entries(r))m[p]={...f,interactions:d[p]||0};return{tokens:o,interactions:i,modelUsage:m,timestamp:s}}};var qe=A(require("fs")),Dt=A(require("path")),Ps=A(require("os")),Aa=A(Gn());var qn=class{_sqlJsModule=null;_sqlJsInitPromise=null;_dbCache=new Map;_dbCacheInflight=new Map;extensionUri;constructor(e){this.extensionUri=e}dispose(){for(let e of this._dbCache.values())try{e.db.close()}catch{}this._dbCache.clear(),this._dbCacheInflight.clear(),this._sqlJsInitPromise=null}closeDb(e){try{e.close()}catch{}}isMissingFileError(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}statCrushDb(e){try{return qe.statSync(e)}catch(t){return this.isMissingFileError(t)&&this._dbCache.has(e)&&(this.closeDb(this._dbCache.get(e).db),this._dbCache.delete(e)),null}}isCachedDbCurrent(e,t){let s=this._dbCache.get(e);return!!s&&s.mtimeMs===t.mtimeMs&&s.size===t.size}getDbCacheKey(e,t){return`${e}:${t.mtimeMs}:${t.size}`}sameDbStats(e,t){return e.mtimeMs===t.mtimeMs&&e.size===t.size}async refreshCrushDb(e,t){let s;try{let r=await this.initSqlJs(),l=qe.readFileSync(e);s=new r.Database(l)}catch{return this._dbCache.get(e)?.db??null}let o=this.statCrushDb(e);if(!o||!this.sameDbStats(t,o))return this.closeDb(s),this._dbCache.get(e)?.db??null;let i=this._dbCache.get(e);return i&&this.closeDb(i.db),this._dbCache.set(e,{db:s,mtimeMs:t.mtimeMs,size:t.size}),s}async getCrushDb(e){let t=this.statCrushDb(e);if(!t)return this._dbCache.get(e)?.db??null;if(this.isCachedDbCurrent(e,t))return this._dbCache.get(e).db;let s=this.getDbCacheKey(e,t),o=this._dbCacheInflight.get(s);if(o)return o;let i=this.refreshCrushDb(e,t);this._dbCacheInflight.set(s,i);try{return await i}finally{this._dbCacheInflight.get(s)===i&&this._dbCacheInflight.delete(s)}}getCrushConfigDir(){if(Ps.platform()==="win32"){let s=process.env.LOCALAPPDATA||Dt.join(Ps.homedir(),"AppData","Local");return Dt.join(s,"crush")}let t=process.env.XDG_CONFIG_HOME||Dt.join(Ps.homedir(),".config");return Dt.join(t,"crush")}readCrushProjects(){let e=Dt.join(this.getCrushConfigDir(),"projects.json");if(!qe.existsSync(e))return[];try{let t=qe.readFileSync(e,"utf8"),s=JSON.parse(t);return Array.isArray(s.projects)?s.projects:[]}catch{return[]}}isCrushSessionFile(e){return ge(e).includes("/.crush/crush.db#")}getCrushDbPath(e){let t=e.indexOf("crush.db#");return t===-1?e:e.substring(0,t+8)}getCrushSessionId(e){let t=e.indexOf("crush.db#");return t===-1?null:e.substring(t+9)}async initSqlJs(){return this._sqlJsModule?this._sqlJsModule:(this._sqlJsInitPromise||(this._sqlJsInitPromise=(async()=>{let e=Dt.join(__dirname,"sql-wasm.wasm"),t;qe.existsSync(e)&&(t=qe.readFileSync(e));let s=await(0,Aa.default)(t?{wasmBinary:t.buffer}:void 0);return this._sqlJsModule=s,s})().catch(e=>{throw this._sqlJsInitPromise=null,e})),this._sqlJsInitPromise)}async statSessionFile(e){let t=this.getCrushDbPath(e);return qe.promises.stat(t)}async discoverSessionsInDb(e){let t=await this.getCrushDb(e);if(!t)return[];try{let s=t.exec("SELECT id FROM sessions");return s.length===0?[]:s[0].values.map(o=>o[0])}catch{return[]}}async readCrushSession(e){let t=this.getCrushDbPath(e),s=this.getCrushSessionId(e);if(!s)return null;let o=await this.getCrushDb(t);if(!o)return null;try{let i=o.exec("SELECT id, title, message_count, prompt_tokens, completion_tokens, created_at, updated_at FROM sessions WHERE id = ?",[s]);if(i.length===0||i[0].values.length===0)return null;let r=i[0].columns,l=i[0].values[0],d={};return r.forEach((m,p)=>{d[m]=l[p]}),d}catch{return null}}async getCrushMessages(e){let t=this.getCrushDbPath(e),s=this.getCrushSessionId(e);if(!s)return[];let o=await this.getCrushDb(t);if(!o)return[];try{let i=o.exec("SELECT id, session_id, role, parts, model, provider, created_at, updated_at, finished_at FROM messages WHERE session_id = ? AND is_summary_message = 0 ORDER BY created_at ASC",[s]);if(i.length===0)return[];let r=i[0].columns;return i[0].values.map(l=>{let d={};if(r.forEach((m,p)=>{d[m]=l[p]}),typeof d.parts=="string")try{d.parts=JSON.parse(d.parts)}catch{d.parts=[]}return d})}catch{return[]}}async getTokensFromCrushSession(e){let t=await this.readCrushSession(e);if(!t)return{tokens:0,thinkingTokens:0};let s=typeof t.prompt_tokens=="number"?t.prompt_tokens:0,o=typeof t.completion_tokens=="number"?t.completion_tokens:0;return{tokens:s+o,thinkingTokens:0}}async countCrushInteractions(e){return(await this.getCrushMessages(e)).filter(s=>s.role==="user").length}async getCrushModelUsage(e){let t={},s=await this.readCrushSession(e);if(!s)return t;let o=typeof s.prompt_tokens=="number"?s.prompt_tokens:0,i=typeof s.completion_tokens=="number"?s.completion_tokens:0;if(o+i===0)return t;let l=(await this.getCrushMessages(e)).filter(p=>p.role==="assistant"&&p.model);if(l.length===0)return t.unknown={inputTokens:o,outputTokens:i},t;let d={};for(let p of l){let f=p.model||"unknown";d[f]=(d[f]||0)+1}let m=l.length;for(let[p,f]of Object.entries(d)){let _=f/m;t[p]={inputTokens:Math.round(o*_),outputTokens:Math.round(i*_)}}return t}async getCrushSessionData(e){let t=await this.readCrushSession(e);if(!t)return{tokens:0,interactions:0,modelUsage:{},timestamp:0};let s=typeof t.prompt_tokens=="number"?t.prompt_tokens:0,o=typeof t.completion_tokens=="number"?t.completion_tokens:0,i=s+o,r=typeof t.created_at=="number"?t.created_at*1e3:Date.now(),l=await this.getCrushModelUsage(e),m=(await this.getCrushMessages(e)).filter(_=>_.role==="user").length,p=s+o,f={};for(let[_,k]of Object.entries(l)){let b=k.inputTokens+k.outputTokens,M=p>0?b/p:0;f[_]={inputTokens:k.inputTokens,outputTokens:k.outputTokens,interactions:Math.round(m*M)}}return{tokens:i,interactions:m,modelUsage:f,timestamp:r}}getToolCallsFromMessages(e){let t=[];for(let s of e)if(!(s.role!=="assistant"||!Array.isArray(s.parts)))for(let o of s.parts)o?.type==="tool_call"&&o?.data?.name&&t.push(o.data.name);return t}};var vs=A(require("fs")),Rt=A(require("path")),Ea=A(require("os"));var $n=class{getContinueDataDir(){return Rt.join(Ea.homedir(),".continue")}getContinueSessionsDir(){return Rt.join(this.getContinueDataDir(),"sessions")}isContinueSessionFile(e){let t=re(e);return t.includes("/.continue/sessions/")&&t.endsWith(".json")}async getContinueSessionFiles(){let e=this.getContinueSessionsDir();try{await vs.promises.access(e)}catch{return[]}try{return(await vs.promises.readdir(e)).filter(s=>s.endsWith(".json")&&s!=="sessions.json").map(s=>Rt.join(e,s))}catch{return[]}}async readSessionFile(e){try{let t=await vs.promises.readFile(e,"utf8");return JSON.parse(t)}catch{return null}}estimateTokens(e){return e?Math.ceil(e.length/4):0}async getTokensFromContinueSession(e){let t=await this.readSessionFile(e);if(!t||!Array.isArray(t.history))return{tokens:0,thinkingTokens:0};let s=0,o=0;for(let i of t.history)if(Array.isArray(i.promptLogs))for(let r of i.promptLogs)s+=this.estimateTokens(r.prompt||""),o+=this.estimateTokens(r.completion||"");return{tokens:s+o,thinkingTokens:0}}async countContinueInteractions(e){let t=await this.readSessionFile(e);return!t||!Array.isArray(t.history)?0:t.history.filter(s=>s.message?.role==="user").length}async getContinueModelUsage(e){let t=await this.readSessionFile(e);if(!t||!Array.isArray(t.history))return{};let s={};for(let o of t.history)if(Array.isArray(o.promptLogs))for(let i of o.promptLogs){let r=i.modelTitle||t.chatModelTitle||"unknown";s[r]||(s[r]={inputTokens:0,outputTokens:0}),s[r].inputTokens+=this.estimateTokens(i.prompt||""),s[r].outputTokens+=this.estimateTokens(i.completion||"")}return s}async getContinueSessionMeta(e){let t=await this.readSessionFile(e);return t?{title:t.title,model:t.chatModelTitle,workspaceDirectory:t.workspaceDirectory,mode:t.mode}:null}async readSessionsIndex(){let e=Rt.join(this.getContinueSessionsDir(),"sessions.json"),t=new Map;try{let s=await vs.promises.readFile(e,"utf8"),o=JSON.parse(s);if(!Array.isArray(o))return t;for(let i of o)i.sessionId&&t.set(i.sessionId,{dateCreated:i.dateCreated?Number(i.dateCreated):void 0,title:i.title,workspaceDirectory:i.workspaceDirectory})}catch{}return t}getContinueSessionId(e){return Rt.basename(e,".json")}extractUserText(e){return typeof e=="string"?e:Array.isArray(e)?e.filter(t=>t.type==="text"&&typeof t.text=="string").map(t=>t.text).join(`
33
- `):""}async buildContinueTurns(e){let t=await this.readSessionFile(e);if(!t||!Array.isArray(t.history))return[];let s=t.history,o=[],i=0;for(;i<s.length;){if(s[i].message?.role!=="user"){i++;continue}let{turn:l,nextIndex:d}=this.buildTurnFromHistory(s,i,t.chatModelTitle||null);o.push(l),i=d}return o}buildTurnFromHistory(e,t,s){let o=this.extractUserText(e[t].message.content),i={assistantText:"",model:s,inputTokens:0,outputTokens:0,toolCalls:[],pendingToolCalls:new Map},r=t+1;for(;r<e.length&&e[r].message?.role!=="user";){let l=e[r],d=l.message?.role;d==="assistant"?this.processAssistantSubItem(l,i):d==="tool"&&this.processToolSubItem(l,i),r++}for(let[,l]of i.pendingToolCalls)i.toolCalls.push(l);return{turn:{userText:o,assistantText:i.assistantText,model:i.model,toolCalls:i.toolCalls,inputTokens:i.inputTokens,outputTokens:i.outputTokens},nextIndex:r}}processAssistantSubItem(e,t){if(typeof e.message.content=="string"&&e.message.content&&(t.assistantText+=e.message.content),Array.isArray(e.promptLogs)&&e.promptLogs.length>0){let s=e.promptLogs[0];s.modelTitle&&(t.model=s.modelTitle);for(let o of e.promptLogs)t.inputTokens+=this.estimateTokens(o.prompt||""),t.outputTokens+=this.estimateTokens(o.completion||"")}this.collectToolCallsFromAssistant(e,t)}collectToolCallsFromAssistant(e,t){if(Array.isArray(e.message.toolCalls))for(let s of e.message.toolCalls){let o=s.function?.name||s.name||"unknown",i=s.function?.arguments,r=s.id||o;t.pendingToolCalls.set(r,{toolName:o,arguments:i})}}processToolSubItem(e,t){let s=e.message.toolCallId||"",o=this.extractUserText(e.message.content),i=t.pendingToolCalls.get(s);i?(t.toolCalls.push({...i,result:o}),t.pendingToolCalls.delete(s)):t.toolCalls.push({toolName:"unknown",result:o})}};var Te=A(require("fs")),Ae=A(require("path")),Ut=A(require("os")),no=A(Ai());var Dd=new Set(["node_modules",".git",".github","bin","obj","out","dist","build","target","packages","vendor","__pycache__",".tox",".venv","venv","env","Windows","Program Files","Program Files (x86)","ProgramData","$Recycle.Bin","System Volume Information","Recovery"]),so=class{isVSSessionFile(e){let t=re(e),s=t.includes("/.vs/")&&t.includes("/copilot-chat/")&&t.includes("/sessions/"),o=t.includes("/ssmsgithubcopilot/")&&t.includes("/copilot-chat/")&&t.includes("/sessions/");return s||o}async statSessionFile(e){return Te.promises.stat(e)}getLogDir(){let e=process.env.LOCALAPPDATA||Ae.join(Ut.homedir(),"AppData","Local");return Ae.join(e,"Temp","VSGitHubCopilotLogs")}getSsmsSessionsDir(){let e=process.env.LOCALAPPDATA||Ae.join(Ut.homedir(),"AppData","Local");return Ae.join(e,"Microsoft","SSMS")}async discoverSessions(){let e=new Set,t=[];return await this._discoverFromLogs(e,t),await this._discoverFromFilesystem(e,t),await this._discoverFromSsmsAppData(e,t),t}async _discoverFromLogs(e,t){let s=this.getLogDir(),o;try{o=(await Te.promises.readdir(s)).filter(l=>l.endsWith(".chat.log")).map(l=>Ae.join(s,l))}catch{return}let i=/Updating session file '([^']+)'/;for(let r of o)try{let l=await Te.promises.readFile(r,"utf8");await this._processLogFileLines(l,i,e,t)}catch{}}async _processLogFileLines(e,t,s,o){for(let i of e.split(`
34
- `)){let r=t.exec(i);if(!r)continue;let l=r[1];if(!s.has(l)){s.add(l);try{await Te.promises.access(l),o.push(l)}catch{}}}}async _discoverFromFilesystem(e,t){if(Ut.platform()!=="win32")return;let s=Ut.homedir(),o=["C","D"],i=[],r=["code","repos","src","projects","dev","workspace","work","source"];for(let l of r){let d=Ae.join(s,l);try{await Te.promises.access(d),i.push(d)}catch{}}for(let l of r){let d=Ae.join(s,"Documents",l);try{await Te.promises.access(d),i.push(d)}catch{}}for(let l of o)for(let d of r){let m=l+":\\"+d;try{await Te.promises.access(m),i.push(m)}catch{}}for(let l of i)await this._scanForVsDirs(l,0,5,e,t)}async _scanForVsDirs(e,t,s,o,i){if(t>s)return;let r;try{r=await Te.promises.readdir(e,{withFileTypes:!0})}catch{return}let l=r.filter(m=>{if(!m.isDirectory())return!1;let p=m.name;return!(Dd.has(p)||p.startsWith(".")&&p!==".vs")}),d=8;for(let m=0;m<l.length;m+=d)await Promise.all(l.slice(m,m+d).map(async p=>{let f=Ae.join(e,p.name);p.name===".vs"?await this._findSessionsInVsDir(f,o,i):await this._scanForVsDirs(f,t+1,s,o,i)}))}async _collectFromSessionsDir(e,t,s){let o;try{o=await Te.promises.readdir(e,{withFileTypes:!0})}catch{return}for(let i of o){if(!i.isFile())continue;let r=Ae.join(e,i.name);t.has(r)||(t.add(r),s.push(r))}}async _collectFromHashDirs(e,t,s){let o;try{o=await Te.promises.readdir(e,{withFileTypes:!0})}catch{return}for(let i of o)i.isDirectory()&&await this._collectFromSessionsDir(Ae.join(e,i.name,"sessions"),t,s)}async _findSessionsInVsDir(e,t,s){let o;try{o=await Te.promises.readdir(e,{withFileTypes:!0})}catch{return}for(let i of o)i.isDirectory()&&await this._collectFromHashDirs(Ae.join(e,i.name,"copilot-chat"),t,s)}async _discoverFromSsmsAppData(e,t){if(Ut.platform()!=="win32")return;let s=this.getSsmsSessionsDir(),o;try{o=await Te.promises.readdir(s,{withFileTypes:!0})}catch{return}for(let i of o)i.isDirectory()&&await this._collectFromHashDirs(Ae.join(s,i.name,"SSMSGitHubCopilot","copilot-chat"),e,t)}async decodeSessionFile(e){try{let t=await Te.promises.readFile(e);return t.length<2?[]:Array.from((0,no.decodeMulti)(t.slice(1)))}catch{return[]}}getSessionTitle(e){let s=e.find((i,r)=>r>0&&r%2===1)?.[1];if(!s?.Content)return;let o=this.extractTextFromContent(s.Content).trim();if(o)return o.length>80?o.substring(0,80)+"\u2026":o}getSessionTimestamps(e){let t=e[0];return t?{timeCreated:t.TimeCreated?new Date(t.TimeCreated).toISOString():null,timeUpdated:t.TimeUpdated?new Date(t.TimeUpdated).toISOString():null}:{timeCreated:null,timeUpdated:null}}countInteractions(e){return e.filter((t,s)=>s>0&&s%2===1).length}extractTextFromContent(e){if(!Array.isArray(e))return"";let t=[];for(let s of e){let o=s?.[1];o&&typeof o.Content=="string"&&o.Content&&t.push(o.Content)}return t.join(`
35
- `)}_decodeVcRaw(e,t){let s=Object.keys(e);if(s.length!==0)if(isNaN(Number(s[0])))e.Content&&typeof e.Content=="string"&&t.push(e.Content);else try{let o=s.map(Number).sort((d,m)=>d-m),i=Buffer.from(o.map(d=>e[d])),r=(0,no.decode)(i),l=Array.isArray(r)?r[1]:r;l?.Content&&typeof l.Content=="string"&&t.push(l.Content)}catch{}}extractContextText(e){if(!Array.isArray(e))return"";let t=[];for(let s of e){let o=s?.ValueContainer;if(!Array.isArray(o)||o.length<2)continue;let i=o[1];!i||typeof i!="object"||this._decodeVcRaw(i,t)}return t.join(`
36
- `)}getModelId(e,t){if(!e)return null;if(t)return e.Model?.ModelId||null;let s=e.Model;return Array.isArray(s)&&s.length>=2&&s[1]?.Id?s[1].Id:null}async getTokenEstimates(e,t){let s=await this.decodeSessionFile(e),o=0;for(let i=1;i<s.length;i++){let r=s[i]?.[1];if(!r?.Content)continue;let l=this.extractTextFromContent(r.Content),d=i%2===1,m=d?this.extractContextText(r.Context):"";if(!l&&!m)continue;let p=this.getModelId(r,d)||void 0;o+=t(l+m,p)}return{tokens:o,thinkingTokens:0}}async getModelUsage(e,t){let s={},o=await this.decodeSessionFile(e),i={};for(let r=1;r<o.length;r++){let l=o[r]?.[1];if(!l?.Content)continue;let d=this.extractTextFromContent(l.Content),m=r%2===1,p=m?this.extractContextText(l.Context):"";if(!d&&!p)continue;let f=this.getModelId(l,m)||"unknown";i[f]||(i[f]={input:"",output:""}),m?i[f].input+=d+p:i[f].output+=d}for(let[r,l]of Object.entries(i))s[r]={inputTokens:t(l.input,r),outputTokens:t(l.output,r)};return s}};var Kt=A(require("fs")),Ft=A(require("path")),io=A(require("os"));function Ot(n){if(!n||/claude-.+-\d+\.\d+/.test(n))return n;let e=n.match(/^(claude-.+)-(\d)-(\d)(-\d{8})?$/);return e?`${e[1]}-${e[2]}.${e[3]}`:n}var oo=class{getClaudeCodeDataDir(){return Ft.join(io.homedir(),".claude")}getClaudeCodeProjectsDir(){return Ft.join(this.getClaudeCodeDataDir(),"projects")}isClaudeCodeSessionFile(e){let t=re(e),s=re(this.getClaudeCodeProjectsDir());return t.startsWith(s)&&t.endsWith(".jsonl")}async getClaudeCodeSessionFiles(){let e=this.getClaudeCodeProjectsDir();try{await Kt.promises.access(e)}catch{return[]}try{let t=await Kt.promises.readdir(e,{withFileTypes:!0});return(await Promise.all(t.filter(o=>o.isDirectory()).map(o=>this.collectJsonlFilesFromProject(Ft.join(e,o.name))))).flat()}catch(t){return console.error("[claudecode] Failed to read projects dir:",t),[]}}async collectJsonlFilesFromProject(e){try{let t=await Kt.promises.readdir(e,{withFileTypes:!0});return(await Promise.all(t.filter(o=>!o.isDirectory()&&o.name.endsWith(".jsonl")).map(async o=>{let i=Ft.join(e,o.name);try{return(await Kt.promises.stat(i)).size>0?[i]:[]}catch(r){return console.error(`[claudecode] Failed to stat ${i}:`,r),[]}}))).flat()}catch(t){return console.error(`[claudecode] Failed to read project dir ${e}:`,t),[]}}async readSessionEvents(e){return At(async()=>{let s=(await Kt.promises.readFile(e,"utf8")).trim().split(`
37
- `),o=[];for(let i of s)if(i.trim())try{o.push(JSON.parse(i))}catch{}return o},[],`claudecode readSessionEvents(${e})`)}deduplicateAssistantEvents(e){let t=new Map,s=[];for(let o of e){if(o.type!=="assistant"||!o.message?.usage)continue;let i=o.message?.id;i?t.set(i,o):s.push(o)}return[...t.values(),...s]}async getTokensFromClaudeCodeSession(e){let t=await this.readSessionEvents(e),s=0,o=0;for(let i of this.deduplicateAssistantEvents(t)){let r=i.message.usage,l=(typeof r.input_tokens=="number"?r.input_tokens:0)+(typeof r.cache_creation_input_tokens=="number"?r.cache_creation_input_tokens:0)+(typeof r.cache_read_input_tokens=="number"?r.cache_read_input_tokens:0),d=typeof r.output_tokens=="number"?r.output_tokens:0;s+=l,o+=d}return{tokens:s+o,thinkingTokens:0}}async countClaudeCodeInteractions(e){let t=await this.readSessionEvents(e),s=0;for(let o of t)if(o.type==="user"&&!o.isSidechain&&o.message?.role==="user"){let i=o.message?.content;(typeof i=="string"||Array.isArray(i)&&i.some(l=>l.type==="text")&&!i.some(l=>l.type==="tool_result"))&&s++}return s}async getClaudeCodeModelUsage(e){let t=await this.readSessionEvents(e),s={};for(let o of this.deduplicateAssistantEvents(t)){let i=o.message.usage,r=Ot(o.message?.model||"unknown");s[r]||(s[r]={inputTokens:0,outputTokens:0});let l=typeof i.cache_creation_input_tokens=="number"?i.cache_creation_input_tokens:0,d=typeof i.cache_read_input_tokens=="number"?i.cache_read_input_tokens:0,m=(typeof i.input_tokens=="number"?i.input_tokens:0)+l+d,p=typeof i.output_tokens=="number"?i.output_tokens:0;s[r].inputTokens+=m,s[r].outputTokens+=p,l>0&&(s[r].cacheCreationTokens=(s[r].cacheCreationTokens??0)+l),d>0&&(s[r].cachedReadTokens=(s[r].cachedReadTokens??0)+d)}return s}async getClaudeCodeSessionMeta(e){let t=await this.readSessionEvents(e);if(t.length===0)return null;let{title:s,entrypoint:o,cwd:i,timestamps:r}=this.extractMetaFieldsFromEvents(t),l,d;return r.length>0&&(r.sort((m,p)=>m-p),l=new Date(r[0]).toISOString(),d=new Date(r[r.length-1]).toISOString()),{title:s,entrypoint:o,firstInteraction:l,lastInteraction:d,cwd:i}}extractMetaFieldsFromEvents(e){let t,s,o,i=[];for(let r of e)if(r.type==="ai-title"&&r.aiTitle&&(t=r.aiTitle),!s&&r.entrypoint&&(s=r.entrypoint),!o&&r.cwd&&(o=r.cwd),r.timestamp){let l=new Date(r.timestamp).getTime();isNaN(l)||i.push(l)}return{title:t,entrypoint:s,cwd:o,timestamps:i}}getClaudeCodeSessionId(e){return Ft.basename(e,".jsonl")}getProjectPathFromHash(e){if(io.platform()==="win32"){let s=e.split("-");if(s.length>=2&&s[0].length===1&&s[1]===""){let o=s[0].toUpperCase(),i=s.slice(2).join("\\");return`${o}:\\${i}`}}return"/"+e.replace(/-/g,"/")}};var Qt=A(require("fs")),Rs=A(require("path")),Is=A(require("os"));var Rd="Claude_pzs8sxrjxfjjc",ro=class{getCoworkBaseDir(){let e=Is.platform();if(e==="win32"){let t=process.env.LOCALAPPDATA||Rs.join(Is.homedir(),"AppData","Local");return Rs.join(t,"Packages",Rd,"LocalCache","Roaming","Claude","local-agent-mode-sessions")}return e==="darwin"?Rs.join(Is.homedir(),"Library","Application Support","Claude","local-agent-mode-sessions"):""}isCoworkSessionFile(e){let t=re(e);return t.includes("/local-agent-mode-sessions/")&&t.endsWith(".jsonl")}async getCoworkSessionFiles(){let e=this.getCoworkBaseDir();if(!e)return[];try{await Qt.promises.access(e)}catch{return[]}let t=[];try{await this.walkForJsonlFiles(e,t,0,8)}catch{}return t}async walkForJsonlFiles(e,t,s,o){if(s>o)return;let i;try{i=await Qt.promises.readdir(e,{withFileTypes:!0})}catch{return}for(let r of i)await this.processWalkEntry(r,e,t,s,o)}async processWalkEntry(e,t,s,o,i){let r=Rs.join(t,e.name);if(e.isDirectory()){if(e.name==="agent")return;await this.walkForJsonlFiles(r,s,o+1,i)}else if(e.name.endsWith(".jsonl")&&e.name!=="audit.jsonl")try{(await Qt.promises.stat(r)).size>0&&s.push(r)}catch{}}async readCoworkEvents(e){try{let s=(await Qt.promises.readFile(e,"utf8")).trim().split(`
38
- `),o=[];for(let i of s)if(i.trim())try{o.push(JSON.parse(i))}catch{}return o}catch{return[]}}async getTokensFromCoworkSession(e){let t=await this.readCoworkEvents(e),s=0,o=0,i=new Set;for(let r of t){let l=this.extractCoworkEventTokens(r,i);l&&(s+=l.inputTokens,o+=l.outputTokens)}return{tokens:s+o,thinkingTokens:0}}computeCoworkTokenCounts(e){let t=typeof e.cache_creation_input_tokens=="number"?e.cache_creation_input_tokens:0,s=typeof e.cache_read_input_tokens=="number"?e.cache_read_input_tokens:0,o=(typeof e.input_tokens=="number"?e.input_tokens:0)+t+s,i=typeof e.output_tokens=="number"?e.output_tokens:0;return{inputTokens:o,outputTokens:i,cacheCreation:t,cachedRead:s}}extractCoworkEventTokens(e,t){if(e.type!=="assistant")return null;let s=e.message?.usage;if(!s)return null;let o=e.requestId;if(o){if(!e.message?.stop_reason||t.has(o))return null;t.add(o)}let{inputTokens:i,outputTokens:r}=this.computeCoworkTokenCounts(s);return{inputTokens:i,outputTokens:r}}async countCoworkInteractions(e){let t=await this.readCoworkEvents(e),s=0;for(let o of t)if(o.type==="user"&&!o.isSidechain&&o.message?.role==="user"){let i=o.message?.content;(typeof i=="string"||Array.isArray(i)&&i.some(l=>l.type==="text")&&!i.some(l=>l.type==="tool_result"))&&s++}return s}async getCoworkModelUsage(e){let t=await this.readCoworkEvents(e),s={},o=new Set;for(let i of t)this.processCoworkEventModelUsage(i,o,s);return s}processCoworkEventModelUsage(e,t,s){if(e.type!=="assistant")return;let o=e.message?.usage;if(!o)return;let i=e.requestId;if(i){if(!e.message?.stop_reason||t.has(i))return;t.add(i)}let r=Ot(e.message?.model||"unknown");s[r]||(s[r]={inputTokens:0,outputTokens:0});let{inputTokens:l,outputTokens:d,cacheCreation:m,cachedRead:p}=this.computeCoworkTokenCounts(o);s[r].inputTokens+=l,s[r].outputTokens+=d,m>0&&(s[r].cacheCreationTokens=(s[r].cacheCreationTokens??0)+m),p>0&&(s[r].cachedReadTokens=(s[r].cachedReadTokens??0)+p)}getMetadataPathFromJsonl(e){let s=ge(e).split("/"),o=s.lastIndexOf(".claude");if(o<1)return null;let i=s[o-1];return i.startsWith("local_")?`${s.slice(0,o-1).join("/")}/${i}.json`:null}async getCoworkSessionMeta(e){let t=this.getMetadataPathFromJsonl(e);if(!t)return null;try{let s=await Qt.promises.readFile(t,"utf8"),o=JSON.parse(s),i=o.createdAt?new Date(o.createdAt).toISOString():void 0,r=o.lastActivityAt?new Date(o.lastActivityAt).toISOString():void 0,l=Array.isArray(o.userSelectedFolders)&&o.userSelectedFolders.length>0?o.userSelectedFolders[0]:o.cwd;return{title:o.title||void 0,firstInteraction:i,lastInteraction:r,cwd:typeof l=="string"?l:void 0}}catch{return null}}};var Us=A(require("fs")),st=A(require("path")),Ei=A(require("os"));var ao=class{getVibeHomeDir(){let e=process.env.VIBE_HOME;return e?st.resolve(e.replace(/^~/,Ei.homedir())):st.join(Ei.homedir(),".vibe")}getSessionLogDir(){return st.join(this.getVibeHomeDir(),"logs","session")}isVibeSessionFile(e){let t=ge(e);return t.includes("/.vibe/logs/session/")&&t.endsWith("/meta.json")}getSessionDir(e){return st.dirname(e)}async discoverSessions(){let e=this.getSessionLogDir();try{let t=await Us.promises.readdir(e,{withFileTypes:!0}),s=[];for(let o of t){if(!o.isDirectory())continue;let i=st.join(e,o.name,"meta.json");try{await Us.promises.access(i),s.push(i)}catch{}}return s}catch{return[]}}async readSessionMeta(e){try{let t=await Us.promises.readFile(e,"utf8");return JSON.parse(t)}catch{return null}}async readSessionMessages(e){let t=st.join(this.getSessionDir(e),"messages.jsonl");try{let o=(await Us.promises.readFile(t,"utf8")).trim().split(`
39
- `),i=[];for(let r of o)if(r.trim())try{i.push(JSON.parse(r))}catch{}return i}catch{return[]}}async getTokensFromSession(e){let t=await this.readSessionMeta(e);if(!t?.stats)return{tokens:0,thinkingTokens:0};let s=typeof t.stats.session_prompt_tokens=="number"?t.stats.session_prompt_tokens:0,o=typeof t.stats.session_completion_tokens=="number"?t.stats.session_completion_tokens:0;return{tokens:s+o,thinkingTokens:0}}async countInteractions(e){return(await this.readSessionMessages(e)).filter(s=>s.role==="user"&&s.injected!==!0).length}async getModelUsage(e){let t=await this.readSessionMeta(e);if(!t)return{};let s=typeof t.stats?.session_prompt_tokens=="number"?t.stats.session_prompt_tokens:0,o=typeof t.stats?.session_completion_tokens=="number"?t.stats.session_completion_tokens:0;return s+o===0?{}:{[t.config?.active_model||"devstral"]:{inputTokens:s,outputTokens:o}}}async getSessionMeta(e){let t=await this.readSessionMeta(e);return t?{title:t.title||void 0,firstInteraction:t.start_time||null,lastInteraction:t.end_time||null,model:t.config?.active_model||void 0}:{title:void 0,firstInteraction:null,lastInteraction:null,model:void 0}}async getSessionData(e){let t=await this.readSessionMeta(e);if(!t)return{tokens:0,interactions:0,modelUsage:{},timestamp:0};let{tokens:s}=await this.getTokensFromSession(e),o=await this.countInteractions(e),i=await this.getModelUsage(e),r={};for(let[d,m]of Object.entries(i))r[d]={...m,interactions:o};let l=t.start_time?new Date(t.start_time).getTime():0;return{tokens:s,interactions:o,modelUsage:r,timestamp:l}}};var Ne=A(require("fs")),Fi=A(require("os")),Ke=A(require("path"));function de(n){let e=n.getFullYear(),t=String(n.getMonth()+1).padStart(2,"0"),s=String(n.getDate()).padStart(2,"0");return`${e}-${t}-${s}`}function Id(n){if(typeof n!="object"||n===null)return;let t=n.result;if(!(typeof t!="object"||t===null))return t}function Ud(n){if(typeof n!="object"||n===null)return;let t=n.response;if(Array.isArray(t))return t}function Fd(n){return typeof n!="object"||n===null?!1:n.kind==="toolInvocationSerialized"}function Od(n){return typeof n!="object"||n===null?!1:n.kind==="subagent"}var Nd=20,Ld=5,Gd=130,jd=50,Bd=10,qd=.25,$d=10,sl=new WeakMap;function zd(n){let e=sl.get(n);return e||(e=Object.entries(n).map(([t,s])=>[t,t.replace("-",""),s]),sl.set(n,e)),e}function W(n,e="gpt-4",t={}){let s=qd;for(let[o,i,r]of zd(t))if(e.includes(o)||e.includes(i)){s=r;break}return Math.ceil(n.length*s)}function Hd(n){return n.trim().toLowerCase().replace(/\s+/g,"-")}function Yt(n){if(!Fd(n))return null;let e=n.toolSpecificData;if(!Od(e))return null;let t=typeof e.prompt=="string"?e.prompt:"",s="";if(typeof e.result=="string")s=e.result;else if(e.result!==null&&typeof e.result=="object"){let r=Object.entries(e.result);r.sort(([l],[d])=>Number(l)-Number(d)),s=r.map(([,l])=>typeof l=="string"?l:"").join("")}let o=typeof e.modelName=="string"?e.modelName:"",i=o?Hd(o):"";return t||s?{prompt:t,result:s,modelName:i}:null}function Xt(n){if(typeof n!="object"||n===null)return{text:"",isThinking:!1};let e=n;if(e.kind==="thinking"){let o=e.value;return{text:typeof o=="string"?o:"",isThinking:!0}}let t=e.content;if(typeof t=="object"&&t!==null){let o=t.value;if(typeof o=="string"&&o)return{text:o,isThinking:!1}}let s=e.value;return typeof s=="string"&&s?{text:s,isThinking:!1}:{text:"",isThinking:!1}}function Wd(n){if(typeof n.promptTokens=="number"&&typeof n.outputTokens=="number")return n.promptTokens+n.outputTokens;if(n.metadata&&typeof n.metadata.promptTokens=="number"&&typeof n.metadata.outputTokens=="number")return n.metadata.promptTokens+n.metadata.outputTokens;if(n.usage){let e=typeof n.usage.promptTokens=="number"?n.usage.promptTokens:0,t=typeof n.usage.completionTokens=="number"?n.usage.completionTokens:0;return e+t}return 0}function Vd(n,e){let t=n.length;for(let o of e.keys())o+1>t&&(t=o+1);let s=0;for(let o=0;o<t;o++){let i=Id(n[o]),r=i?Wd(i):0;if(r>0)s+=r;else{let l=e.get(o);l&&(s+=l.promptTokens+l.outputTokens)}}return s}function Jd(n){let e=Yt(n);if(!e)return 0;let t=0;return e.prompt&&(t+=W(e.prompt)),e.result&&(t+=W(e.result)),t}function Kd(n){let e=0;for(let t of n){let s=Ud(t);if(s)for(let o of s)e+=Jd(o)}return e}function Qd(n){let e=n.k;if(n.kind!==2||e?.[0]!=="requests"||!Array.isArray(n.v))return 0;let t=0;for(let s of n.v){let i=s.message;i?.text&&(t+=W(String(i.text)))}return t}function Yd(n,e){if(Yt(n))return;let{text:t,isThinking:s}=Xt(n);t&&(s?e.totalThinkingTokens+=W(t):e.totalTokens+=W(t))}function Xd(n,e){let t=n.k;if(!(n.kind!==2||!t?.includes("response")||!Array.isArray(n.v)))for(let s of n.v)Yd(s,e)}var Di=class{estimate(e){let t={totalTokens:0,totalThinkingTokens:0,parseFailedLines:0},s={};for(let d of e)if(d.trim())try{let m=JSON.parse(d);s=Fs(s,m),t.totalTokens+=Qd(m),Xd(m,t)}catch{t.parseFailedLines++}let o=t.parseFailedLines>0?Ii(e):new Map,i=s.requests,r=Array.isArray(i)?i:[],l=Vd(r,o);return t.totalTokens+=Kd(r),{tokens:t.totalTokens+t.totalThinkingTokens,thinkingTokens:t.totalThinkingTokens,actualTokens:l,cacheReadTokens:0,modelUsage:{},dailyActualTokens:{}}}};function Zd(n,e,t){let s=e?.usage;if(!s)return 0;let o=typeof s.inputTokens=="number"?s.inputTokens:0,i=typeof s.outputTokens=="number"?s.outputTokens:0,r=typeof s.cacheReadTokens=="number"?s.cacheReadTokens:0,l=typeof s.cacheWriteTokens=="number"?s.cacheWriteTokens:0;return t.cliActualTokens+=o+i,t.cliCacheReadTokens+=r,t.cliShutdownModelUsage[n]||(t.cliShutdownModelUsage[n]={inputTokens:0,outputTokens:0}),t.cliShutdownModelUsage[n].inputTokens+=o,t.cliShutdownModelUsage[n].outputTokens+=i,r>0&&(t.cliShutdownModelUsage[n].cachedReadTokens=(t.cliShutdownModelUsage[n].cachedReadTokens??0)+r),l>0&&(t.cliShutdownModelUsage[n].cacheCreationTokens=(t.cliShutdownModelUsage[n].cacheCreationTokens??0)+l),o+i}function em(n,e){let t=n.data;if(!t?.modelMetrics)return;e.cliShutdownModelUsage||(e.cliShutdownModelUsage={});let s=0;for(let[o,i]of Object.entries(t.modelMetrics))s+=Zd(o,i,e);if(s>0&&n.timestamp){let o=de(new Date(String(n.timestamp)));o&&o!=="Inval"&&(e.dailyActualTokens[o]=(e.dailyActualTokens[o]||0)+s)}}function tm(n,e){let t=n?.reasoningText;typeof t=="string"&&t&&(e.totalThinkingTokens+=W(t));let s=n?.thinking?.text;typeof s=="string"&&s&&(e.totalThinkingTokens+=W(s))}function sm(n,e,t){t.cliRealOutputByModel||(t.cliRealOutputByModel={});let s=String(n?.model??"unknown");t.cliRealOutputByModel[s]=(t.cliRealOutputByModel[s]??0)+e}function nm(n,e){let t=n.data,s=typeof t?.outputTokens=="number"?t.outputTokens:0;s>0?sm(t,s,e):t?.content&&(e.totalTokens+=W(String(t.content))),tm(t,e)}function om(n,e){if(!n?.result)return;let t=n.result,s=typeof t.detailedContent=="string"?t.detailedContent:typeof t.content=="string"?t.content:"";s&&(e.totalTokens+=W(s))}function im(n,e){let t=n.data;n.type==="user.message"&&t?.content?e.totalTokens+=W(String(t.content)):n.type==="user.message_rendered"&&t?.renderedMessage?e.totalTokens+=W(String(t.renderedMessage)):n.type==="assistant.message"?nm(n,e):n.type==="tool.execution_start"?e.totalEstToolCalls++:n.type==="tool.execution_complete"?om(t,e):n.content&&(e.totalTokens+=W(String(n.content)))}function rm(n){if(!n.cliRealOutputByModel)return;let e=n.totalEstToolCalls>Nd?Gd:n.totalEstToolCalls>Ld?jd:Bd;for(let t of Object.values(n.cliRealOutputByModel)){let s=Math.round(t*e);n.cliActualTokens+=s+t,n.cliCacheReadTokens+=s}}var Ri=class{estimate(e){let t={totalTokens:0,totalThinkingTokens:0,cliActualTokens:0,cliCacheReadTokens:0,cliShutdownModelUsage:null,cliRealOutputByModel:null,totalEstToolCalls:0,dailyActualTokens:{}};for(let s of e)if(s.trim())try{let o=JSON.parse(s);o.type==="session.shutdown"&&em(o,t),im(o,t)}catch{}return t.cliActualTokens||rm(t),{tokens:t.totalTokens+t.totalThinkingTokens,thinkingTokens:t.totalThinkingTokens,actualTokens:t.cliActualTokens,cacheReadTokens:t.cliCacheReadTokens,modelUsage:t.cliShutdownModelUsage??{},dailyActualTokens:t.dailyActualTokens}}};function am(n){let e=0;for(let t of n)if(t.trim()){if(++e>$d)break;try{if(typeof JSON.parse(t).kind=="number")return new Di}catch{}}return new Ri}function lo(n){let e=n.trim().split(`
40
- `);return am(e).estimate(e)}function lm(n,e){e.modelTurns++;let t=n.attrs,s=typeof t?.inputTokens=="number"?t.inputTokens:0,o=typeof t?.outputTokens=="number"?t.outputTokens:0,i=typeof t?.cachedTokens=="number"?t.cachedTokens:0;e.inputTokens+=s,e.outputTokens+=o,e.cachedTokens+=i;let r=typeof t?.model=="string"&&t.model?t.model:"";if(!r)return;let l=e.modelBreakdown[r]??{inputTokens:0,outputTokens:0,cachedTokens:0};l.inputTokens+=s,l.outputTokens+=o,l.cachedTokens+=i,e.modelBreakdown[r]=l}function ol(n){let e={inputTokens:0,outputTokens:0,cachedTokens:0,modelTurns:0,modelBreakdown:{}};for(let t of n.split(/\r?\n/))if(t.trim())try{let s=JSON.parse(t);s.type==="llm_request"&&lm(s,e)}catch{}return e.modelTurns>0?e:null}function il(n){if(!n||typeof n!="object")return null;let t=n.metadata;if(!t||typeof t!="object")return null;let o=t.configurationSchema;if(!o||typeof o!="object")return null;let r=o.properties;if(!r||typeof r!="object")return null;let d=r.reasoningEffort;if(!d||typeof d!="object")return null;let m=d;return typeof m.default=="string"?m.default:null}function cm(n,e){let s=n.v?.inputState,o=il(s?.selectedModel);o!==null&&(e.currentEffort=o,e.defaultEffort=o)}function um(n,e){let t=n.k;if(!Array.isArray(t)||t[0]!=="inputState"||t[1]!=="selectedModel")return;let s=il(n.v);s!==null&&s!==e.currentEffort&&(e.currentEffort!==null&&e.switchCount++,e.currentEffort=s)}function dm(n,e){let t=n.k;if(!Array.isArray(t)||t[0]!=="requests"||typeof t[1]!="number"||e.currentEffort===null)return;let s=n.v;if(!s||typeof s!="object")return;let o=typeof s.requestId=="string"?s.requestId:null;o&&e.effortByRequestId.set(o,e.currentEffort)}function rl(n){let e={effortByRequestId:new Map,currentEffort:null,defaultEffort:null,switchCount:0};for(let t of n){if(!t.trim())continue;let s;try{s=JSON.parse(t)}catch{continue}typeof s.kind=="number"&&(s.kind===0?cm(s,e):s.kind===1?um(s,e):s.kind===2&&dm(s,e))}return{effortByRequestId:e.effortByRequestId,defaultEffort:e.defaultEffort,switchCount:e.switchCount}}function Ii(n){let e=new Map;for(let t of n){if(!t.includes('"result"'))continue;let s=t.match(/"k":\s*\["requests",\s*(\d+),\s*"result"\]/);if(!s)continue;let o=parseInt(s[1],10),i=t.match(/"promptTokens":(\d+)/),r=t.match(/"outputTokens":(\d+)/),l=t.match(/"completionTokens":(\d+)/);i&&(r||l)&&e.set(o,{promptTokens:parseInt(i[1],10),outputTokens:parseInt(r?.[1]||l[1],10)})}return e}var nl=new WeakMap;function al(n){let e=nl.get(n);if(!e){let t={};for(let[o,i]of Object.entries(n))if(i.displayNames)for(let r of i.displayNames)t[r]=o;let s=Object.keys(t).sort((o,i)=>i.length-o.length);e={map:t,sortedNames:s},nl.set(n,e)}return e}function mm(n,e){let{map:t,sortedNames:s}=al(e);for(let o of s)if(n.includes(o))return t[o];return null}function pm(n,e){let{map:t,sortedNames:s}=al(e);for(let o of s)if(n.includes(o))return t[o];return null}function _t(n,e={}){if(n.modelId)return n.modelId.replace(/^copilot\//,"");if(n.result?.metadata?.modelId)return n.result.metadata.modelId.replace(/^copilot\//,"");if(n.result?.details){let t=pm(n.result.details,e);if(t)return t}if(n.result?.metadata?.modelId)return n.result.metadata.modelId.replace(/^copilot\//,"");if(n.result?.details){let t=mm(n.result.details,e);if(t)return t}return"gpt-4"}function nt(n){let e=n.trim();if(!e.includes(`
31
+ `,o)}while(s!==-1);return i+=n.slice(o),i}var{stdout:Ta,stderr:Ma}=ka,ai=Symbol("GENERATOR"),Ht=Symbol("STYLER"),Ts=Symbol("IS_EMPTY"),Pa=["ansi","ansi","ansi256","ansi16m"],Vt=Object.create(null),Gu=(n,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let t=Ta?Ta.level:0;n.level=e.level===void 0?t:e.level};var ju=n=>{let e=(...t)=>t.join(" ");return Gu(e,n),Object.setPrototypeOf(e,Ms.prototype),e};function Ms(n){return ju(n)}Object.setPrototypeOf(Ms.prototype,Function.prototype);for(let[n,e]of Object.entries(Be))Vt[n]={get(){let t=Rn(this,ci(e.open,e.close,this[Ht]),this[Ts]);return Object.defineProperty(this,n,{value:t}),t}};Vt.visible={get(){let n=Rn(this,this[Ht],!0);return Object.defineProperty(this,"visible",{value:n}),n}};var li=(n,e,t,...s)=>n==="rgb"?e==="ansi16m"?Be[t].ansi16m(...s):e==="ansi256"?Be[t].ansi256(Be.rgbToAnsi256(...s)):Be[t].ansi(Be.rgbToAnsi(...s)):n==="hex"?li("rgb",e,t,...Be.hexToRgb(...s)):Be[t][n](...s),Bu=["rgb","hex","ansi256"];for(let n of Bu){Vt[n]={get(){let{level:t}=this;return function(...s){let o=ci(li(n,Pa[t],"color",...s),Be.color.close,this[Ht]);return Rn(this,o,this[Ts])}}};let e="bg"+n[0].toUpperCase()+n.slice(1);Vt[e]={get(){let{level:t}=this;return function(...s){let o=ci(li(n,Pa[t],"bgColor",...s),Be.bgColor.close,this[Ht]);return Rn(this,o,this[Ts])}}}}var qu=Object.defineProperties(()=>{},{...Vt,level:{enumerable:!0,get(){return this[ai].level},set(n){this[ai].level=n}}}),ci=(n,e,t)=>{let s,o;return t===void 0?(s=n,o=e):(s=t.openAll+n,o=e+t.closeAll),{open:n,close:e,openAll:s,closeAll:o,parent:t}},Rn=(n,e,t)=>{let s=(...o)=>zu(s,o.length===1?""+o[0]:o.join(" "));return Object.setPrototypeOf(s,qu),s[ai]=n,s[Ht]=e,s[Ts]=t,s},zu=(n,e)=>{if(n.level<=0||!e)return n[Ts]?"":e;let t=n[Ht];if(t===void 0)return e;let{openAll:s,closeAll:o}=t;if(e.includes("\x1B"))for(;t!==void 0;)e=Sa(e,t.close,t.open),t=t.parent;let i=e.indexOf(`
32
+ `);return i!==-1&&(e=wa(e,o,s,i)),s+e+o};Object.defineProperties(Ms.prototype,Vt);var $u=Ms(),Ah=Ms({level:Ma?Ma.level:0});var S=$u;var lt=v(require("fs")),Ce=v(require("path")),lc=v(require("os"));var va={getConfiguration:()=>({get:()=>{}})},ui={getExtension:()=>{}},In=class n{fsPath;scheme;path;constructor(e){this.fsPath=e,this.scheme="file",this.path=e}static file(e){return new n(e)}static joinPath(e,...t){let s=[e.fsPath,...t].join("/");return new n(s)}toString(){return this.fsPath}};var vs=v(require("fs")),Da=v(require("path"));function di(n){return typeof n.discover=="function"}function Aa(n){return typeof n.analyzeUsage=="function"}function Un(n){if(!n||!n.startsWith("file://"))return;let e=n.slice(7),t;try{t=decodeURIComponent(e)}catch{return}if(!t.split(/[\\/]/).some(o=>o===".."))return t.startsWith("//")?process.platform==="win32"?t.replace(/\//g,"\\"):t:/^\/[A-Za-z]:/.test(t)?t.slice(1):t}function me(n){return n.replace(/\\/g,"/")}var On=me;function ae(n){return me(n).toLowerCase()}function Fn(n,e=process.platform){let t=me(n);return e==="linux"?t:t.toLowerCase()}function mi(n,e,t){try{return n()}catch(s){return console.error(`[recovery] ${t??"unknown"}:`,s),e}}async function At(n,e,t){try{return await n()}catch(s){return console.error(`[recovery] ${t??"unknown"}:`,s),e}}var Wu=/^mcp__[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}__(.+)$/i;function Ea(n){return Wu.test(n)}function Hu(n){return!n||n==="agent"?"agent":n.includes("plan-agent/Plan.agent.md")?"plan":n.includes(".agent.md")?"customAgent":"agent"}function Nn(n){return n?typeof n=="string"?n==="edit"?"edit":n==="agent"?"agent":"ask":n.kind?n.kind==="edit"?"edit":n.kind==="ask"?"ask":n.kind==="agent"?Hu(n.id):"ask":"ask":"ask"}function Ze(n){return n.startsWith("mcp.")||n.startsWith("mcp_")||n.startsWith("mcp__")}function Ps(n){return n.startsWith("mcp_github_github_")?"mcp_io_github_git_"+n.substring(18):n.startsWith("mcp.github.github.")?"mcp.io.github.git."+n.substring(18):n}function ht(n,e={}){let t=e[n]??e[n.toLowerCase()];if(t&&t.includes(":"))return t.split(":")[0].trim();if(n.startsWith("mcp_io_github_git_")||n.startsWith("mcp.io.github.git."))return"GitHub MCP (Local)";if(n.startsWith("mcp_github_github_")||n.startsWith("mcp.github.github."))return"GitHub MCP (Remote)";if(n.startsWith("mcp__")){if(Ea(n))return"Claude MCP";let i=n.slice(5),r=i.indexOf("__");return(r>=0?i.slice(0,r):i)||"unknown"}return n.replace(/^mcp[._]/,"").split(/[._]/)[0]||"unknown"}var Ln=class n{deps;_sessionFilesCache=null;_sessionFilesCacheTime=0;static SESSION_FILES_CACHE_TTL=6e4;_lastDiscoveryHadError=!1;_lastDiscoveryFilesCount=0;constructor(e){this.deps=e}get lastDiscoveryHadError(){return this._lastDiscoveryHadError}get lastDiscoveryFilesCount(){return this._lastDiscoveryFilesCount}clearCache(){this._sessionFilesCache=null,this._sessionFilesCacheTime=0}async pathExists(e){try{return await vs.promises.access(e),!0}catch{return!1}}pathExistsWithLogging(e,t){try{let s=vs.existsSync(e);return s||this.deps.log(`\u{1F50D} Path not found [${t}]: ${e}`),s}catch{return!1}}getDiagnosticCandidatePaths(){let e=[];for(let t of this.deps.ecosystems)if(di(t))try{let s=t.getCandidatePaths();for(let o of s){let i=this.pathExistsWithLogging(o.path,o.source);e.push({path:o.path,exists:i,source:o.source})}}catch{}if(this.deps.windsurf){let t=this.deps.windsurf.getCascadeDir();e.push({path:t,exists:this.pathExistsWithLogging(t,"Windsurf Cascade"),source:"Windsurf Cascade"})}return e}checkCopilotExtension(){let e=ui.getExtension("GitHub.copilot"),t=ui.getExtension("GitHub.copilot-chat");if(!e&&!t)this.deps.log("\u26A0\uFE0F GitHub Copilot extensions not found");else{let o=e?e.isActive?"\u2705 Active":"\u23F3 Loading":"\u274C Not found",i=t?t.isActive?"\u2705 Active":"\u23F3 Loading":"\u274C Not found";this.deps.log(`GitHub Copilot: ${o}, Chat: ${i}`)}process.env.CODESPACES==="true"&&(!e?.isActive||!t?.isActive)&&this.deps.warn("\u26A0\uFE0F Running in Codespaces with inactive Copilot extensions")}async getCopilotSessionFiles(){return this.getCopilotSessionFilesStreaming()}async tryGetSampleDataFiles(e){let t=this.deps.sampleDataDirectoryOverride?.()??va.getConfiguration("aiEngineeringFluency").get("sampleDataDirectory");if(!t||t.trim().length===0)return;let s=t.trim();try{if(!await this.pathExists(s)){this.deps.warn(`Sample data directory not found: ${s}`);return}let o=(await vs.promises.readdir(s)).filter(i=>i.endsWith(".json")||i.endsWith(".jsonl")).map(i=>Da.join(s,i));return this.deps.log(`\u{1F4F8} Sample data mode: using ${o.length} file(s) from ${s}`),this._sessionFilesCache=o,this._sessionFilesCacheTime=e,this._lastDiscoveryFilesCount=o.length,o}catch(o){this.deps.warn(`Error reading sample data directory: ${o}`);return}}collectAdapterFiles(e,t,s,o,i){for(let r=0;r<e.length;r++){let l=e[r];if(l.status==="rejected"){this.deps.warn(`Could not discover ${t[r].displayName} sessions: ${l.reason}`),this._lastDiscoveryHadError=!0;continue}let d=[];for(let m of l.value.sessionFiles){let p=Fn(m);s.has(p)||(s.add(p),d.push(m))}d.length>0&&(o.push(...d),i&&i(d))}}async collectWindsurfFiles(e,t,s){if(this.deps.windsurf)try{let i=(await this.deps.windsurf.getWindsurfSessions()).map(r=>r.file).filter(r=>{let l=Fn(r);return e.has(l)?!1:(e.add(l),!0)});i.length>0&&(t.push(...i),s&&s(i))}catch(o){this.deps.warn(`Could not discover Windsurf sessions: ${o}`),this._lastDiscoveryHadError=!0}}async discoverFromAdapters(e){let t=new Set,s=[],o=Date.now(),i=this.deps.ecosystems.filter(di);this.deps.log(`\u{1F50D} Searching for session files via ${i.length} discoverable ecosystem adapter(s) (parallel)`);let r=await Promise.allSettled(i.map(d=>d.discover(this.deps.log)));this.collectAdapterFiles(r,i,t,s,e),await this.collectWindsurfFiles(t,s,e);let l=r.reduce((d,m)=>d+(m.status==="fulfilled"?m.value.sessionFiles.length:0),0)-s.length;return l>0&&this.deps.log(`\u{1F9F9} Deduplicated ${l} duplicate session path(s)`),this.deps.log(`\u2728 Total: ${s.length} session file(s) discovered in ${((Date.now()-o)/1e3).toFixed(1)}s`),s.length===0&&this.deps.warn("\u26A0\uFE0F No session files found - Have you used GitHub Copilot Chat yet?"),s}async getCopilotSessionFilesStreaming(e){let t=Date.now();if(this._sessionFilesCache&&t-this._sessionFilesCacheTime<n.SESSION_FILES_CACHE_TTL)return this.deps.log(`\u{1F4A8} Using cached session files list (${this._sessionFilesCache.length} files, cached ${Math.round((t-this._sessionFilesCacheTime)/1e3)}s ago)`),e&&e(this._sessionFilesCache),this._sessionFilesCache;this._lastDiscoveryHadError=!1,this._lastDiscoveryFilesCount=0;let s=await this.tryGetSampleDataFiles(t);if(s)return e&&e(s),s;let o=[];try{let i=await this.discoverFromAdapters(e);return o.push(...i),this._sessionFilesCache=o,this._sessionFilesCacheTime=Date.now(),this._lastDiscoveryFilesCount=o.length,o}catch(i){return this.deps.error("Error getting session files:",i),this._lastDiscoveryHadError=!0,this._lastDiscoveryFilesCount=o.length,o}}};var X=v(require("fs")),Te=v(require("path")),Jt=v(require("os")),Ra=v(qn());var zn=class{_sqlJsModule=null;_sqlJsInitPromise=null;_dbCache=null;_dbCacheInflight=new Map;extensionUri;constructor(e){this.extensionUri=e}getOpenCodeDataDir(){let e=Jt.platform(),t=Jt.homedir();if(e==="win32")return Te.join(t,".local","share","opencode");let s=process.env.XDG_DATA_HOME||Te.join(t,".local","share");return Te.join(s,"opencode")}isOpenCodeSessionFile(e){let t=ae(e);return t.includes("/opencode/storage/session/")||t.includes("/opencode/opencode.db#ses_")}isOpenCodeDbSession(e){return e.includes("opencode.db#ses_")}async initSqlJs(){return this._sqlJsModule?this._sqlJsModule:(this._sqlJsInitPromise||(this._sqlJsInitPromise=(async()=>{let e=Te.join(__dirname,"sql-wasm.wasm"),t;X.existsSync(e)&&(t=X.readFileSync(e));let s=await(0,Ra.default)(t?{wasmBinary:t.buffer}:void 0);return this._sqlJsModule=s,s})().catch(e=>{throw this._sqlJsInitPromise=null,e})),this._sqlJsInitPromise)}dispose(){this.closeDbCache(),this._dbCacheInflight.clear(),this._sqlJsInitPromise=null}closeDb(e){try{e.close()}catch{}}closeDbCache(){this._dbCache&&(this.closeDb(this._dbCache.db),this._dbCache=null)}getCachedDbForPath(e){return this._dbCache?.path===e?this._dbCache.db:null}isMissingFileError(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}statOpenCodeDb(e){try{return X.statSync(e)}catch(t){return this.isMissingFileError(t)&&this._dbCache?.path===e&&this.closeDbCache(),null}}getWalMtimeMs(e){try{return X.statSync(e+"-wal").mtimeMs}catch{return 0}}isCachedDbCurrent(e,t){return this._dbCache?.path===e&&this._dbCache.mtimeMs===t.mtimeMs&&this._dbCache.size===t.size&&this._dbCache.walMtimeMs===this.getWalMtimeMs(e)}getDbCacheKey(e,t){return`${e}:${t.mtimeMs}:${t.size}:wal${this.getWalMtimeMs(e)}`}sameDbStats(e,t){return e.mtimeMs===t.mtimeMs&&e.size===t.size}async tryReadDbWithWal(e){let t=e+"-wal",s;try{s=X.statSync(t).size}catch{return null}if(s===0)return null;try{let{DatabaseSync:o}=require("node:sqlite"),i=Jt.tmpdir(),r=Te.join(i,`opencode-wal-${Date.now()}.db`),l=r+"-wal",d=r+"-shm",m=e+"-shm";X.copyFileSync(e,r),X.copyFileSync(t,l),X.existsSync(m)&&X.copyFileSync(m,d);let p=new o(r);p.exec("PRAGMA wal_checkpoint(TRUNCATE);"),p.close();let f=X.readFileSync(r);for(let _ of[r,l,d])try{X.unlinkSync(_)}catch{}return f}catch{return null}}async refreshOpenCodeDb(e,t){let s;try{let i=await this.initSqlJs(),l=await this.tryReadDbWithWal(e)??X.readFileSync(e);s=new i.Database(l)}catch{return this.getCachedDbForPath(e)}let o=this.statOpenCodeDb(e);return!o||!this.sameDbStats(t,o)?(this.closeDb(s),this.isCachedDbCurrent(e,o??t)?this._dbCache?.db??null:this.getCachedDbForPath(e)):(this.closeDbCache(),this._dbCache={db:s,path:e,mtimeMs:t.mtimeMs,size:t.size,walMtimeMs:this.getWalMtimeMs(e)},s)}async getOpenCodeDb(){let e=Te.join(this.getOpenCodeDataDir(),"opencode.db"),t=this.statOpenCodeDb(e);if(!t)return this.getCachedDbForPath(e);if(this.isCachedDbCurrent(e,t))return this._dbCache?.db??null;let s=this.getDbCacheKey(e,t),o=this._dbCacheInflight.get(s);if(o)return o;let i=this.refreshOpenCodeDb(e,t);this._dbCacheInflight.set(s,i);try{return await i}finally{this._dbCacheInflight.get(s)===i&&this._dbCacheInflight.delete(s)}}async readOpenCodeDbSession(e){let t=await this.getOpenCodeDb();if(!t)return null;try{let s=t.exec("SELECT id, slug, title, time_created, time_updated, project_id, directory FROM session WHERE id = ?",[e]);if(s.length===0||s[0].values.length===0)return null;let o=s[0].values[0],i=s[0].columns,r={};for(let l=0;l<i.length;l++)r[i[l]]=o[l];return{id:r.id,slug:r.slug,title:r.title,projectID:r.project_id,directory:r.directory,time:{created:r.time_created,updated:r.time_updated}}}catch{return null}}async readOpenCodeDbMessages(e){let t=await this.getOpenCodeDb();if(!t)return[];try{let s=t.exec("SELECT id, data, time_created FROM message WHERE session_id = ? ORDER BY time_created ASC",[e]);return s.length===0?[]:s[0].values.map(o=>{let i=JSON.parse(o[1]);return i.id=o[0],i.time=i.time||{},i.time.created=i.time.created||o[2],i})}catch{return[]}}async readOpenCodeDbParts(e){let t=await this.getOpenCodeDb();if(!t)return[];try{let s=t.exec("SELECT id, data, time_created FROM part WHERE message_id = ? ORDER BY time_created ASC",[e]);return s.length===0?[]:s[0].values.map(o=>{let i=JSON.parse(o[1]);return i.id=o[0],i.time=i.time||{},i.time.created=i.time.created||o[2],i})}catch{return[]}}async discoverOpenCodeDbSessions(){let e=await this.getOpenCodeDb();if(!e)return[];try{let t=e.exec("SELECT id FROM session");return t.length===0?[]:t[0].values.map(s=>s[0])}catch{return[]}}async statSessionFile(e){if(this.isOpenCodeDbSession(e)){let t=Te.join(this.getOpenCodeDataDir(),"opencode.db");return X.promises.stat(t)}return X.promises.stat(e)}readOpenCodeMessages(e){let t=this.getOpenCodeDataDir(),s=Te.join(t,"storage","message",e),o=[];try{if(!X.existsSync(s))return o;let i=X.readdirSync(s,{withFileTypes:!0});for(let r of i)if(!(!r.isFile()||!r.name.endsWith(".json")))try{let l=X.readFileSync(Te.join(s,r.name),"utf8"),d=JSON.parse(l);o.push(d)}catch{}}catch{}return o.sort((i,r)=>(i.time?.created||0)-(r.time?.created||0)),o}readOpenCodeParts(e){let t=this.getOpenCodeDataDir(),s=Te.join(t,"storage","part",e),o=[];try{if(!X.existsSync(s))return o;let i=X.readdirSync(s,{withFileTypes:!0});for(let r of i)if(!(!r.isFile()||!r.name.endsWith(".json")))try{let l=X.readFileSync(Te.join(s,r.name),"utf8"),d=JSON.parse(l);o.push(d)}catch{}}catch{}return o.sort((i,r)=>(i.time?.start||0)-(r.time?.start||0)),o}getOpenCodeSessionId(e){let t=e.indexOf("opencode.db#");if(t!==-1)return e.substring(t+12);let s=Te.basename(e,".json");return s.startsWith("ses_")?s:null}async getOpenCodeMessagesForSession(e){let t=this.getOpenCodeSessionId(e);if(!t)return[];if(this.isOpenCodeDbSession(e))return this.readOpenCodeDbMessages(t);let s=await this.readOpenCodeDbMessages(t);return s.length>0?s:this.readOpenCodeMessages(t)}async getOpenCodePartsForMessage(e){let t=await this.readOpenCodeDbParts(e);return t.length>0?t:this.readOpenCodeParts(e)}async getTokensFromOpenCodeSession(e){let t=await this.getOpenCodeMessagesForSession(e);return this.getTokensFromOpenCodeMessages(t)}getTokensFromOpenCodeMessages(e){let t=0,s=0;for(let o of e)o.role==="assistant"&&o.tokens&&(typeof o.tokens.total=="number"&&(s=o.tokens.total),t+=o.tokens.reasoning||0);return{tokens:s,thinkingTokens:t}}async countOpenCodeInteractions(e){let t=await this.getOpenCodeMessagesForSession(e);return this.countOpenCodeInteractionsFromMessages(t)}countOpenCodeInteractionsFromMessages(e){return e.filter(t=>t.role==="user").length}getAssistantMessagesByParent(e){let t=new Map;for(let s of e){if(s.role!=="assistant"||!s.parentID)continue;let o=t.get(s.parentID)??[];o.push(s),t.set(s.parentID,o)}return t}async getOpenCodeModelUsage(e){let t=await this.getOpenCodeMessagesForSession(e);return this.getOpenCodeModelUsageFromMessages(t)}computeTurnCumTotal(e,t){let s=t;for(let o of e)typeof o.tokens?.total=="number"&&(s=Math.max(s,o.tokens.total));return s}getOpenCodeModelUsageFromMessages(e){let t={},s=this.getAssistantMessagesByParent(e),o=0;for(let i=0;i<e.length;i++){let r=e[i];if(r.role!=="user")continue;let l=s.get(r.id)??[];if(l.length===0)continue;let d=this.computeTurnCumTotal(l,o),m=d-o;if(m<=0){o=d;continue}let p=l[0].modelID||l[0].model?.modelID||"unknown";t[p]||(t[p]={inputTokens:0,outputTokens:0});let f=l.reduce((b,M)=>b+(M.tokens?.output||0)+(M.tokens?.reasoning||0),0);t[p].inputTokens+=Math.max(0,m-f),t[p].outputTokens+=f;let _=l.reduce((b,M)=>b+(M.tokens?.cache?.read||0),0),k=l.reduce((b,M)=>b+(M.tokens?.cache?.write||0),0);_>0&&(t[p].cachedReadTokens=(t[p].cachedReadTokens??0)+_),k>0&&(t[p].cacheCreationTokens=(t[p].cacheCreationTokens??0)+k),o=d}return t}async getOpenCodeSessionData(e){let t=await this.getOpenCodeMessagesForSession(e),s=Date.now();t.length>0&&t[0].time?.created&&(s=t[0].time.created);let{tokens:o}=this.getTokensFromOpenCodeMessages(t),i=this.countOpenCodeInteractionsFromMessages(t),r=this.getOpenCodeModelUsageFromMessages(t),l=this.getAssistantMessagesByParent(t),d={};for(let p=0;p<t.length;p++){let f=t[p];if(f.role!=="user")continue;let _=l.get(f.id)??[];if(_.length===0)continue;let k=_[0].modelID||_[0].model?.modelID||"unknown";d[k]=(d[k]||0)+1}let m={};for(let[p,f]of Object.entries(r))m[p]={...f,interactions:d[p]||0};return{tokens:o,interactions:i,modelUsage:m,timestamp:s}}};var qe=v(require("fs")),Dt=v(require("path")),xs=v(require("os")),Ia=v(qn());var $n=class{_sqlJsModule=null;_sqlJsInitPromise=null;_dbCache=new Map;_dbCacheInflight=new Map;extensionUri;constructor(e){this.extensionUri=e}dispose(){for(let e of this._dbCache.values())try{e.db.close()}catch{}this._dbCache.clear(),this._dbCacheInflight.clear(),this._sqlJsInitPromise=null}closeDb(e){try{e.close()}catch{}}isMissingFileError(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}statCrushDb(e){try{return qe.statSync(e)}catch(t){return this.isMissingFileError(t)&&this._dbCache.has(e)&&(this.closeDb(this._dbCache.get(e).db),this._dbCache.delete(e)),null}}isCachedDbCurrent(e,t){let s=this._dbCache.get(e);return!!s&&s.mtimeMs===t.mtimeMs&&s.size===t.size}getDbCacheKey(e,t){return`${e}:${t.mtimeMs}:${t.size}`}sameDbStats(e,t){return e.mtimeMs===t.mtimeMs&&e.size===t.size}async refreshCrushDb(e,t){let s;try{let r=await this.initSqlJs(),l=qe.readFileSync(e);s=new r.Database(l)}catch{return this._dbCache.get(e)?.db??null}let o=this.statCrushDb(e);if(!o||!this.sameDbStats(t,o))return this.closeDb(s),this._dbCache.get(e)?.db??null;let i=this._dbCache.get(e);return i&&this.closeDb(i.db),this._dbCache.set(e,{db:s,mtimeMs:t.mtimeMs,size:t.size}),s}async getCrushDb(e){let t=this.statCrushDb(e);if(!t)return this._dbCache.get(e)?.db??null;if(this.isCachedDbCurrent(e,t))return this._dbCache.get(e).db;let s=this.getDbCacheKey(e,t),o=this._dbCacheInflight.get(s);if(o)return o;let i=this.refreshCrushDb(e,t);this._dbCacheInflight.set(s,i);try{return await i}finally{this._dbCacheInflight.get(s)===i&&this._dbCacheInflight.delete(s)}}getCrushConfigDir(){if(xs.platform()==="win32"){let s=process.env.LOCALAPPDATA||Dt.join(xs.homedir(),"AppData","Local");return Dt.join(s,"crush")}let t=process.env.XDG_CONFIG_HOME||Dt.join(xs.homedir(),".config");return Dt.join(t,"crush")}readCrushProjects(){let e=Dt.join(this.getCrushConfigDir(),"projects.json");if(!qe.existsSync(e))return[];try{let t=qe.readFileSync(e,"utf8"),s=JSON.parse(t);return Array.isArray(s.projects)?s.projects:[]}catch{return[]}}isCrushSessionFile(e){return me(e).includes("/.crush/crush.db#")}getCrushDbPath(e){let t=e.indexOf("crush.db#");return t===-1?e:e.substring(0,t+8)}getCrushSessionId(e){let t=e.indexOf("crush.db#");return t===-1?null:e.substring(t+9)}async initSqlJs(){return this._sqlJsModule?this._sqlJsModule:(this._sqlJsInitPromise||(this._sqlJsInitPromise=(async()=>{let e=Dt.join(__dirname,"sql-wasm.wasm"),t;qe.existsSync(e)&&(t=qe.readFileSync(e));let s=await(0,Ia.default)(t?{wasmBinary:t.buffer}:void 0);return this._sqlJsModule=s,s})().catch(e=>{throw this._sqlJsInitPromise=null,e})),this._sqlJsInitPromise)}async statSessionFile(e){let t=this.getCrushDbPath(e);return qe.promises.stat(t)}async discoverSessionsInDb(e){let t=await this.getCrushDb(e);if(!t)return[];try{let s=t.exec("SELECT id FROM sessions");return s.length===0?[]:s[0].values.map(o=>o[0])}catch{return[]}}async readCrushSession(e){let t=this.getCrushDbPath(e),s=this.getCrushSessionId(e);if(!s)return null;let o=await this.getCrushDb(t);if(!o)return null;try{let i=o.exec("SELECT id, title, message_count, prompt_tokens, completion_tokens, created_at, updated_at FROM sessions WHERE id = ?",[s]);if(i.length===0||i[0].values.length===0)return null;let r=i[0].columns,l=i[0].values[0],d={};return r.forEach((m,p)=>{d[m]=l[p]}),d}catch{return null}}async getCrushMessages(e){let t=this.getCrushDbPath(e),s=this.getCrushSessionId(e);if(!s)return[];let o=await this.getCrushDb(t);if(!o)return[];try{let i=o.exec("SELECT id, session_id, role, parts, model, provider, created_at, updated_at, finished_at FROM messages WHERE session_id = ? AND is_summary_message = 0 ORDER BY created_at ASC",[s]);if(i.length===0)return[];let r=i[0].columns;return i[0].values.map(l=>{let d={};if(r.forEach((m,p)=>{d[m]=l[p]}),typeof d.parts=="string")try{d.parts=JSON.parse(d.parts)}catch{d.parts=[]}return d})}catch{return[]}}async getTokensFromCrushSession(e){let t=await this.readCrushSession(e);if(!t)return{tokens:0,thinkingTokens:0};let s=typeof t.prompt_tokens=="number"?t.prompt_tokens:0,o=typeof t.completion_tokens=="number"?t.completion_tokens:0;return{tokens:s+o,thinkingTokens:0}}async countCrushInteractions(e){return(await this.getCrushMessages(e)).filter(s=>s.role==="user").length}async getCrushModelUsage(e){let t={},s=await this.readCrushSession(e);if(!s)return t;let o=typeof s.prompt_tokens=="number"?s.prompt_tokens:0,i=typeof s.completion_tokens=="number"?s.completion_tokens:0;if(o+i===0)return t;let l=(await this.getCrushMessages(e)).filter(p=>p.role==="assistant"&&p.model);if(l.length===0)return t.unknown={inputTokens:o,outputTokens:i},t;let d={};for(let p of l){let f=p.model||"unknown";d[f]=(d[f]||0)+1}let m=l.length;for(let[p,f]of Object.entries(d)){let _=f/m;t[p]={inputTokens:Math.round(o*_),outputTokens:Math.round(i*_)}}return t}async getCrushSessionData(e){let t=await this.readCrushSession(e);if(!t)return{tokens:0,interactions:0,modelUsage:{},timestamp:0};let s=typeof t.prompt_tokens=="number"?t.prompt_tokens:0,o=typeof t.completion_tokens=="number"?t.completion_tokens:0,i=s+o,r=typeof t.created_at=="number"?t.created_at*1e3:Date.now(),l=await this.getCrushModelUsage(e),m=(await this.getCrushMessages(e)).filter(_=>_.role==="user").length,p=s+o,f={};for(let[_,k]of Object.entries(l)){let b=k.inputTokens+k.outputTokens,M=p>0?b/p:0;f[_]={inputTokens:k.inputTokens,outputTokens:k.outputTokens,interactions:Math.round(m*M)}}return{tokens:i,interactions:m,modelUsage:f,timestamp:r}}getToolCallsFromMessages(e){let t=[];for(let s of e)if(!(s.role!=="assistant"||!Array.isArray(s.parts)))for(let o of s.parts)o?.type==="tool_call"&&o?.data?.name&&t.push(o.data.name);return t}};var As=v(require("fs")),Rt=v(require("path")),Ua=v(require("os"));var Wn=class{getContinueDataDir(){return Rt.join(Ua.homedir(),".continue")}getContinueSessionsDir(){return Rt.join(this.getContinueDataDir(),"sessions")}isContinueSessionFile(e){let t=ae(e);return t.includes("/.continue/sessions/")&&t.endsWith(".json")}async getContinueSessionFiles(){let e=this.getContinueSessionsDir();try{await As.promises.access(e)}catch{return[]}try{return(await As.promises.readdir(e)).filter(s=>s.endsWith(".json")&&s!=="sessions.json").map(s=>Rt.join(e,s))}catch{return[]}}async readSessionFile(e){try{let t=await As.promises.readFile(e,"utf8");return JSON.parse(t)}catch{return null}}estimateTokens(e){return e?Math.ceil(e.length/4):0}async getTokensFromContinueSession(e){let t=await this.readSessionFile(e);if(!t||!Array.isArray(t.history))return{tokens:0,thinkingTokens:0};let s=0,o=0;for(let i of t.history)if(Array.isArray(i.promptLogs))for(let r of i.promptLogs)s+=this.estimateTokens(r.prompt||""),o+=this.estimateTokens(r.completion||"");return{tokens:s+o,thinkingTokens:0}}async countContinueInteractions(e){let t=await this.readSessionFile(e);return!t||!Array.isArray(t.history)?0:t.history.filter(s=>s.message?.role==="user").length}async getContinueModelUsage(e){let t=await this.readSessionFile(e);if(!t||!Array.isArray(t.history))return{};let s={};for(let o of t.history)if(Array.isArray(o.promptLogs))for(let i of o.promptLogs){let r=i.modelTitle||t.chatModelTitle||"unknown";s[r]||(s[r]={inputTokens:0,outputTokens:0}),s[r].inputTokens+=this.estimateTokens(i.prompt||""),s[r].outputTokens+=this.estimateTokens(i.completion||"")}return s}async getContinueSessionMeta(e){let t=await this.readSessionFile(e);return t?{title:t.title,model:t.chatModelTitle,workspaceDirectory:t.workspaceDirectory,mode:t.mode}:null}async readSessionsIndex(){let e=Rt.join(this.getContinueSessionsDir(),"sessions.json"),t=new Map;try{let s=await As.promises.readFile(e,"utf8"),o=JSON.parse(s);if(!Array.isArray(o))return t;for(let i of o)i.sessionId&&t.set(i.sessionId,{dateCreated:i.dateCreated?Number(i.dateCreated):void 0,title:i.title,workspaceDirectory:i.workspaceDirectory})}catch{}return t}getContinueSessionId(e){return Rt.basename(e,".json")}extractUserText(e){return typeof e=="string"?e:Array.isArray(e)?e.filter(t=>t.type==="text"&&typeof t.text=="string").map(t=>t.text).join(`
33
+ `):""}async buildContinueTurns(e){let t=await this.readSessionFile(e);if(!t||!Array.isArray(t.history))return[];let s=t.history,o=[],i=0;for(;i<s.length;){if(s[i].message?.role!=="user"){i++;continue}let{turn:l,nextIndex:d}=this.buildTurnFromHistory(s,i,t.chatModelTitle||null);o.push(l),i=d}return o}buildTurnFromHistory(e,t,s){let o=this.extractUserText(e[t].message.content),i={assistantText:"",model:s,inputTokens:0,outputTokens:0,toolCalls:[],pendingToolCalls:new Map},r=t+1;for(;r<e.length&&e[r].message?.role!=="user";){let l=e[r],d=l.message?.role;d==="assistant"?this.processAssistantSubItem(l,i):d==="tool"&&this.processToolSubItem(l,i),r++}for(let[,l]of i.pendingToolCalls)i.toolCalls.push(l);return{turn:{userText:o,assistantText:i.assistantText,model:i.model,toolCalls:i.toolCalls,inputTokens:i.inputTokens,outputTokens:i.outputTokens},nextIndex:r}}processAssistantSubItem(e,t){if(typeof e.message.content=="string"&&e.message.content&&(t.assistantText+=e.message.content),Array.isArray(e.promptLogs)&&e.promptLogs.length>0){let s=e.promptLogs[0];s.modelTitle&&(t.model=s.modelTitle);for(let o of e.promptLogs)t.inputTokens+=this.estimateTokens(o.prompt||""),t.outputTokens+=this.estimateTokens(o.completion||"")}this.collectToolCallsFromAssistant(e,t)}collectToolCallsFromAssistant(e,t){if(Array.isArray(e.message.toolCalls))for(let s of e.message.toolCalls){let o=s.function?.name||s.name||"unknown",i=s.function?.arguments,r=s.id||o;t.pendingToolCalls.set(r,{toolName:o,arguments:i})}}processToolSubItem(e,t){let s=e.message.toolCallId||"",o=this.extractUserText(e.message.content),i=t.pendingToolCalls.get(s);i?(t.toolCalls.push({...i,result:o}),t.pendingToolCalls.delete(s)):t.toolCalls.push({toolName:"unknown",result:o})}};var Me=v(require("fs")),Ae=v(require("path")),Ut=v(require("os")),io=v(Ii());var Nd=new Set(["node_modules",".git",".github","bin","obj","out","dist","build","target","packages","vendor","__pycache__",".tox",".venv","venv","env","Windows","Program Files","Program Files (x86)","ProgramData","$Recycle.Bin","System Volume Information","Recovery"]),oo=class{isVSSessionFile(e){let t=ae(e),s=t.includes("/.vs/")&&t.includes("/copilot-chat/")&&t.includes("/sessions/"),o=t.includes("/ssmsgithubcopilot/")&&t.includes("/copilot-chat/")&&t.includes("/sessions/");return s||o}async statSessionFile(e){return Me.promises.stat(e)}getLogDir(){let e=process.env.LOCALAPPDATA||Ae.join(Ut.homedir(),"AppData","Local");return Ae.join(e,"Temp","VSGitHubCopilotLogs")}getSsmsSessionsDir(){let e=process.env.LOCALAPPDATA||Ae.join(Ut.homedir(),"AppData","Local");return Ae.join(e,"Microsoft","SSMS")}async discoverSessions(){let e=new Set,t=[];return await this._discoverFromLogs(e,t),await this._discoverFromFilesystem(e,t),await this._discoverFromSsmsAppData(e,t),t}async _discoverFromLogs(e,t){let s=this.getLogDir(),o;try{o=(await Me.promises.readdir(s)).filter(l=>l.endsWith(".chat.log")).map(l=>Ae.join(s,l))}catch{return}let i=/Updating session file '([^']+)'/;for(let r of o)try{let l=await Me.promises.readFile(r,"utf8");await this._processLogFileLines(l,i,e,t)}catch{}}async _processLogFileLines(e,t,s,o){for(let i of e.split(`
34
+ `)){let r=t.exec(i);if(!r)continue;let l=r[1];if(!s.has(l)){s.add(l);try{await Me.promises.access(l),o.push(l)}catch{}}}}async _discoverFromFilesystem(e,t){if(Ut.platform()!=="win32")return;let s=Ut.homedir(),o=["C","D"],i=[],r=["code","repos","src","projects","dev","workspace","work","source"];for(let l of r){let d=Ae.join(s,l);try{await Me.promises.access(d),i.push(d)}catch{}}for(let l of r){let d=Ae.join(s,"Documents",l);try{await Me.promises.access(d),i.push(d)}catch{}}for(let l of o)for(let d of r){let m=l+":\\"+d;try{await Me.promises.access(m),i.push(m)}catch{}}for(let l of i)await this._scanForVsDirs(l,0,5,e,t)}async _scanForVsDirs(e,t,s,o,i){if(t>s)return;let r;try{r=await Me.promises.readdir(e,{withFileTypes:!0})}catch{return}let l=r.filter(m=>{if(!m.isDirectory())return!1;let p=m.name;return!(Nd.has(p)||p.startsWith(".")&&p!==".vs")}),d=8;for(let m=0;m<l.length;m+=d)await Promise.all(l.slice(m,m+d).map(async p=>{let f=Ae.join(e,p.name);p.name===".vs"?await this._findSessionsInVsDir(f,o,i):await this._scanForVsDirs(f,t+1,s,o,i)}))}async _collectFromSessionsDir(e,t,s){let o;try{o=await Me.promises.readdir(e,{withFileTypes:!0})}catch{return}for(let i of o){if(!i.isFile())continue;let r=Ae.join(e,i.name);t.has(r)||(t.add(r),s.push(r))}}async _collectFromHashDirs(e,t,s){let o;try{o=await Me.promises.readdir(e,{withFileTypes:!0})}catch{return}for(let i of o)i.isDirectory()&&await this._collectFromSessionsDir(Ae.join(e,i.name,"sessions"),t,s)}async _findSessionsInVsDir(e,t,s){let o;try{o=await Me.promises.readdir(e,{withFileTypes:!0})}catch{return}for(let i of o)i.isDirectory()&&await this._collectFromHashDirs(Ae.join(e,i.name,"copilot-chat"),t,s)}async _discoverFromSsmsAppData(e,t){if(Ut.platform()!=="win32")return;let s=this.getSsmsSessionsDir(),o;try{o=await Me.promises.readdir(s,{withFileTypes:!0})}catch{return}for(let i of o)i.isDirectory()&&await this._collectFromHashDirs(Ae.join(s,i.name,"SSMSGitHubCopilot","copilot-chat"),e,t)}async decodeSessionFile(e){try{let t=await Me.promises.readFile(e);return t.length<2?[]:Array.from((0,io.decodeMulti)(t.slice(1)))}catch{return[]}}getSessionTitle(e){let s=e.find((i,r)=>r>0&&r%2===1)?.[1];if(!s?.Content)return;let o=this.extractTextFromContent(s.Content).trim();if(o)return o.length>80?o.substring(0,80)+"\u2026":o}getSessionTimestamps(e){let t=e[0];return t?{timeCreated:t.TimeCreated?new Date(t.TimeCreated).toISOString():null,timeUpdated:t.TimeUpdated?new Date(t.TimeUpdated).toISOString():null}:{timeCreated:null,timeUpdated:null}}countInteractions(e){return e.filter((t,s)=>s>0&&s%2===1).length}extractTextFromContent(e){if(!Array.isArray(e))return"";let t=[];for(let s of e){let o=s?.[1];o&&typeof o.Content=="string"&&o.Content&&t.push(o.Content)}return t.join(`
35
+ `)}_decodeVcRaw(e,t){let s=Object.keys(e);if(s.length!==0)if(isNaN(Number(s[0])))e.Content&&typeof e.Content=="string"&&t.push(e.Content);else try{let o=s.map(Number).sort((d,m)=>d-m),i=Buffer.from(o.map(d=>e[d])),r=(0,io.decode)(i),l=Array.isArray(r)?r[1]:r;l?.Content&&typeof l.Content=="string"&&t.push(l.Content)}catch{}}extractContextText(e){if(!Array.isArray(e))return"";let t=[];for(let s of e){let o=s?.ValueContainer;if(!Array.isArray(o)||o.length<2)continue;let i=o[1];!i||typeof i!="object"||this._decodeVcRaw(i,t)}return t.join(`
36
+ `)}getModelId(e,t){if(!e)return null;if(t)return e.Model?.ModelId||null;let s=e.Model;return Array.isArray(s)&&s.length>=2&&s[1]?.Id?s[1].Id:null}async getTokenEstimates(e,t){let s=await this.decodeSessionFile(e),o=0;for(let i=1;i<s.length;i++){let r=s[i]?.[1];if(!r?.Content)continue;let l=this.extractTextFromContent(r.Content),d=i%2===1,m=d?this.extractContextText(r.Context):"";if(!l&&!m)continue;let p=this.getModelId(r,d)||void 0;o+=t(l+m,p)}return{tokens:o,thinkingTokens:0}}async getModelUsage(e,t){let s={},o=await this.decodeSessionFile(e),i={};for(let r=1;r<o.length;r++){let l=o[r]?.[1];if(!l?.Content)continue;let d=this.extractTextFromContent(l.Content),m=r%2===1,p=m?this.extractContextText(l.Context):"";if(!d&&!p)continue;let f=this.getModelId(l,m)||"unknown";i[f]||(i[f]={input:"",output:""}),m?i[f].input+=d+p:i[f].output+=d}for(let[r,l]of Object.entries(i))s[r]={inputTokens:t(l.input,r),outputTokens:t(l.output,r)};return s}};var Qt=v(require("fs")),Ot=v(require("path")),ao=v(require("os"));function Ft(n){if(!n||/claude-.+-\d+\.\d+/.test(n))return n;let e=n.match(/^(claude-.+)-(\d)-(\d)(-\d{8})?$/);return e?`${e[1]}-${e[2]}.${e[3]}`:n}var ro=class{getClaudeCodeDataDir(){return Ot.join(ao.homedir(),".claude")}getClaudeCodeProjectsDir(){return Ot.join(this.getClaudeCodeDataDir(),"projects")}isClaudeCodeSessionFile(e){let t=ae(e),s=ae(this.getClaudeCodeProjectsDir());return t.startsWith(s)&&t.endsWith(".jsonl")}async getClaudeCodeSessionFiles(){let e=this.getClaudeCodeProjectsDir();try{await Qt.promises.access(e)}catch{return[]}try{let t=await Qt.promises.readdir(e,{withFileTypes:!0});return(await Promise.all(t.filter(o=>o.isDirectory()).map(o=>this.collectJsonlFilesFromProject(Ot.join(e,o.name))))).flat()}catch(t){return console.error("[claudecode] Failed to read projects dir:",t),[]}}async collectJsonlFilesFromProject(e){try{let t=await Qt.promises.readdir(e,{withFileTypes:!0});return(await Promise.all(t.filter(o=>!o.isDirectory()&&o.name.endsWith(".jsonl")).map(async o=>{let i=Ot.join(e,o.name);try{return(await Qt.promises.stat(i)).size>0?[i]:[]}catch(r){return console.error(`[claudecode] Failed to stat ${i}:`,r),[]}}))).flat()}catch(t){return console.error(`[claudecode] Failed to read project dir ${e}:`,t),[]}}async readSessionEvents(e){return At(async()=>{let s=(await Qt.promises.readFile(e,"utf8")).trim().split(`
37
+ `),o=[];for(let i of s)if(i.trim())try{o.push(JSON.parse(i))}catch{}return o},[],`claudecode readSessionEvents(${e})`)}deduplicateAssistantEvents(e){let t=new Map,s=[];for(let o of e){if(o.type!=="assistant"||!o.message?.usage)continue;let i=o.message?.id;i?t.set(i,o):s.push(o)}return[...t.values(),...s]}async getTokensFromClaudeCodeSession(e){let t=await this.readSessionEvents(e),s=0,o=0;for(let i of this.deduplicateAssistantEvents(t)){let r=i.message.usage,l=(typeof r.input_tokens=="number"?r.input_tokens:0)+(typeof r.cache_creation_input_tokens=="number"?r.cache_creation_input_tokens:0)+(typeof r.cache_read_input_tokens=="number"?r.cache_read_input_tokens:0),d=typeof r.output_tokens=="number"?r.output_tokens:0;s+=l,o+=d}return{tokens:s+o,thinkingTokens:0}}async countClaudeCodeInteractions(e){let t=await this.readSessionEvents(e),s=0;for(let o of t)if(o.type==="user"&&!o.isSidechain&&o.message?.role==="user"){let i=o.message?.content;(typeof i=="string"||Array.isArray(i)&&i.some(l=>l.type==="text")&&!i.some(l=>l.type==="tool_result"))&&s++}return s}async getClaudeCodeModelUsage(e){let t=await this.readSessionEvents(e),s={};for(let o of this.deduplicateAssistantEvents(t)){let i=o.message.usage,r=Ft(o.message?.model||"unknown");s[r]||(s[r]={inputTokens:0,outputTokens:0});let l=typeof i.cache_creation_input_tokens=="number"?i.cache_creation_input_tokens:0,d=typeof i.cache_read_input_tokens=="number"?i.cache_read_input_tokens:0,m=(typeof i.input_tokens=="number"?i.input_tokens:0)+l+d,p=typeof i.output_tokens=="number"?i.output_tokens:0;s[r].inputTokens+=m,s[r].outputTokens+=p,l>0&&(s[r].cacheCreationTokens=(s[r].cacheCreationTokens??0)+l),d>0&&(s[r].cachedReadTokens=(s[r].cachedReadTokens??0)+d)}return s}async getClaudeCodeSessionMeta(e){let t=await this.readSessionEvents(e);if(t.length===0)return null;let{title:s,entrypoint:o,cwd:i,timestamps:r}=this.extractMetaFieldsFromEvents(t),l,d;return r.length>0&&(r.sort((m,p)=>m-p),l=new Date(r[0]).toISOString(),d=new Date(r[r.length-1]).toISOString()),{title:s,entrypoint:o,firstInteraction:l,lastInteraction:d,cwd:i}}extractMetaFieldsFromEvents(e){let t,s,o,i=[];for(let r of e)if(r.type==="ai-title"&&r.aiTitle&&(t=r.aiTitle),!s&&r.entrypoint&&(s=r.entrypoint),!o&&r.cwd&&(o=r.cwd),r.timestamp){let l=new Date(r.timestamp).getTime();isNaN(l)||i.push(l)}return{title:t,entrypoint:s,cwd:o,timestamps:i}}getClaudeCodeSessionId(e){return Ot.basename(e,".jsonl")}getProjectPathFromHash(e){if(ao.platform()==="win32"){let s=e.split("-");if(s.length>=2&&s[0].length===1&&s[1]===""){let o=s[0].toUpperCase(),i=s.slice(2).join("\\");return`${o}:\\${i}`}}return"/"+e.replace(/-/g,"/")}};var Yt=v(require("fs")),Us=v(require("path")),Os=v(require("os"));var Ld="Claude_pzs8sxrjxfjjc",lo=class{getCoworkBaseDir(){let e=Os.platform();if(e==="win32"){let t=process.env.LOCALAPPDATA||Us.join(Os.homedir(),"AppData","Local");return Us.join(t,"Packages",Ld,"LocalCache","Roaming","Claude","local-agent-mode-sessions")}return e==="darwin"?Us.join(Os.homedir(),"Library","Application Support","Claude","local-agent-mode-sessions"):""}isCoworkSessionFile(e){let t=ae(e);return t.includes("/local-agent-mode-sessions/")&&t.endsWith(".jsonl")}async getCoworkSessionFiles(){let e=this.getCoworkBaseDir();if(!e)return[];try{await Yt.promises.access(e)}catch{return[]}let t=[];try{await this.walkForJsonlFiles(e,t,0,8)}catch{}return t}async walkForJsonlFiles(e,t,s,o){if(s>o)return;let i;try{i=await Yt.promises.readdir(e,{withFileTypes:!0})}catch{return}for(let r of i)await this.processWalkEntry(r,e,t,s,o)}async processWalkEntry(e,t,s,o,i){let r=Us.join(t,e.name);if(e.isDirectory()){if(e.name==="agent")return;await this.walkForJsonlFiles(r,s,o+1,i)}else if(e.name.endsWith(".jsonl")&&e.name!=="audit.jsonl")try{(await Yt.promises.stat(r)).size>0&&s.push(r)}catch{}}async readCoworkEvents(e){try{let s=(await Yt.promises.readFile(e,"utf8")).trim().split(`
38
+ `),o=[];for(let i of s)if(i.trim())try{o.push(JSON.parse(i))}catch{}return o}catch{return[]}}async getTokensFromCoworkSession(e){let t=await this.readCoworkEvents(e),s=0,o=0,i=new Set;for(let r of t){let l=this.extractCoworkEventTokens(r,i);l&&(s+=l.inputTokens,o+=l.outputTokens)}return{tokens:s+o,thinkingTokens:0}}computeCoworkTokenCounts(e){let t=typeof e.cache_creation_input_tokens=="number"?e.cache_creation_input_tokens:0,s=typeof e.cache_read_input_tokens=="number"?e.cache_read_input_tokens:0,o=(typeof e.input_tokens=="number"?e.input_tokens:0)+t+s,i=typeof e.output_tokens=="number"?e.output_tokens:0;return{inputTokens:o,outputTokens:i,cacheCreation:t,cachedRead:s}}extractCoworkEventTokens(e,t){if(e.type!=="assistant")return null;let s=e.message?.usage;if(!s)return null;let o=e.requestId;if(o){if(!e.message?.stop_reason||t.has(o))return null;t.add(o)}let{inputTokens:i,outputTokens:r}=this.computeCoworkTokenCounts(s);return{inputTokens:i,outputTokens:r}}async countCoworkInteractions(e){let t=await this.readCoworkEvents(e),s=0;for(let o of t)if(o.type==="user"&&!o.isSidechain&&o.message?.role==="user"){let i=o.message?.content;(typeof i=="string"||Array.isArray(i)&&i.some(l=>l.type==="text")&&!i.some(l=>l.type==="tool_result"))&&s++}return s}async getCoworkModelUsage(e){let t=await this.readCoworkEvents(e),s={},o=new Set;for(let i of t)this.processCoworkEventModelUsage(i,o,s);return s}processCoworkEventModelUsage(e,t,s){if(e.type!=="assistant")return;let o=e.message?.usage;if(!o)return;let i=e.requestId;if(i){if(!e.message?.stop_reason||t.has(i))return;t.add(i)}let r=Ft(e.message?.model||"unknown");s[r]||(s[r]={inputTokens:0,outputTokens:0});let{inputTokens:l,outputTokens:d,cacheCreation:m,cachedRead:p}=this.computeCoworkTokenCounts(o);s[r].inputTokens+=l,s[r].outputTokens+=d,m>0&&(s[r].cacheCreationTokens=(s[r].cacheCreationTokens??0)+m),p>0&&(s[r].cachedReadTokens=(s[r].cachedReadTokens??0)+p)}getMetadataPathFromJsonl(e){let s=me(e).split("/"),o=s.lastIndexOf(".claude");if(o<1)return null;let i=s[o-1];return i.startsWith("local_")?`${s.slice(0,o-1).join("/")}/${i}.json`:null}async getCoworkSessionMeta(e){let t=this.getMetadataPathFromJsonl(e);if(!t)return null;try{let s=await Yt.promises.readFile(t,"utf8"),o=JSON.parse(s),i=o.createdAt?new Date(o.createdAt).toISOString():void 0,r=o.lastActivityAt?new Date(o.lastActivityAt).toISOString():void 0,l=Array.isArray(o.userSelectedFolders)&&o.userSelectedFolders.length>0?o.userSelectedFolders[0]:o.cwd;return{title:o.title||void 0,firstInteraction:i,lastInteraction:r,cwd:typeof l=="string"?l:void 0}}catch{return null}}};var Fs=v(require("fs")),st=v(require("path")),Ui=v(require("os"));var co=class{getVibeHomeDir(){let e=process.env.VIBE_HOME;return e?st.resolve(e.replace(/^~/,Ui.homedir())):st.join(Ui.homedir(),".vibe")}getSessionLogDir(){return st.join(this.getVibeHomeDir(),"logs","session")}isVibeSessionFile(e){let t=me(e);return t.includes("/.vibe/logs/session/")&&t.endsWith("/meta.json")}getSessionDir(e){return st.dirname(e)}async discoverSessions(){let e=this.getSessionLogDir();try{let t=await Fs.promises.readdir(e,{withFileTypes:!0}),s=[];for(let o of t){if(!o.isDirectory())continue;let i=st.join(e,o.name,"meta.json");try{await Fs.promises.access(i),s.push(i)}catch{}}return s}catch{return[]}}async readSessionMeta(e){try{let t=await Fs.promises.readFile(e,"utf8");return JSON.parse(t)}catch{return null}}async readSessionMessages(e){let t=st.join(this.getSessionDir(e),"messages.jsonl");try{let o=(await Fs.promises.readFile(t,"utf8")).trim().split(`
39
+ `),i=[];for(let r of o)if(r.trim())try{i.push(JSON.parse(r))}catch{}return i}catch{return[]}}async getTokensFromSession(e){let t=await this.readSessionMeta(e);if(!t?.stats)return{tokens:0,thinkingTokens:0};let s=typeof t.stats.session_prompt_tokens=="number"?t.stats.session_prompt_tokens:0,o=typeof t.stats.session_completion_tokens=="number"?t.stats.session_completion_tokens:0;return{tokens:s+o,thinkingTokens:0}}async countInteractions(e){return(await this.readSessionMessages(e)).filter(s=>s.role==="user"&&s.injected!==!0).length}async getModelUsage(e){let t=await this.readSessionMeta(e);if(!t)return{};let s=typeof t.stats?.session_prompt_tokens=="number"?t.stats.session_prompt_tokens:0,o=typeof t.stats?.session_completion_tokens=="number"?t.stats.session_completion_tokens:0;return s+o===0?{}:{[t.config?.active_model||"devstral"]:{inputTokens:s,outputTokens:o}}}async getSessionMeta(e){let t=await this.readSessionMeta(e);return t?{title:t.title||void 0,firstInteraction:t.start_time||null,lastInteraction:t.end_time||null,model:t.config?.active_model||void 0}:{title:void 0,firstInteraction:null,lastInteraction:null,model:void 0}}async getSessionData(e){let t=await this.readSessionMeta(e);if(!t)return{tokens:0,interactions:0,modelUsage:{},timestamp:0};let{tokens:s}=await this.getTokensFromSession(e),o=await this.countInteractions(e),i=await this.getModelUsage(e),r={};for(let[d,m]of Object.entries(i))r[d]={...m,interactions:o};let l=t.start_time?new Date(t.start_time).getTime():0;return{tokens:s,interactions:o,modelUsage:r,timestamp:l}}};var Ne=v(require("fs")),Gi=v(require("os")),Ke=v(require("path"));function pe(n){let e=n.getFullYear(),t=String(n.getMonth()+1).padStart(2,"0"),s=String(n.getDate()).padStart(2,"0");return`${e}-${t}-${s}`}function Gd(n){if(typeof n!="object"||n===null)return;let t=n.result;if(!(typeof t!="object"||t===null))return t}function jd(n){if(typeof n!="object"||n===null)return;let t=n.response;if(Array.isArray(t))return t}function Bd(n){return typeof n!="object"||n===null?!1:n.kind==="toolInvocationSerialized"}function qd(n){return typeof n!="object"||n===null?!1:n.kind==="subagent"}var zd=20,$d=5,Wd=130,Hd=50,Vd=10,Jd=.25,Kd=10,rl=new WeakMap;function Qd(n){let e=rl.get(n);return e||(e=Object.entries(n).map(([t,s])=>[t,t.replace("-",""),s]),rl.set(n,e)),e}function H(n,e="gpt-4",t={}){let s=Jd;for(let[o,i,r]of Qd(t))if(e.includes(o)||e.includes(i)){s=r;break}return Math.ceil(n.length*s)}function Yd(n){return n.trim().toLowerCase().replace(/\s+/g,"-")}function Xt(n){if(!Bd(n))return null;let e=n.toolSpecificData;if(!qd(e))return null;let t=typeof e.prompt=="string"?e.prompt:"",s="";if(typeof e.result=="string")s=e.result;else if(e.result!==null&&typeof e.result=="object"){let r=Object.entries(e.result);r.sort(([l],[d])=>Number(l)-Number(d)),s=r.map(([,l])=>typeof l=="string"?l:"").join("")}let o=typeof e.modelName=="string"?e.modelName:"",i=o?Yd(o):"";return t||s?{prompt:t,result:s,modelName:i}:null}function Zt(n){if(typeof n!="object"||n===null)return{text:"",isThinking:!1};let e=n;if(e.kind==="thinking"){let o=e.value;return{text:typeof o=="string"?o:"",isThinking:!0}}let t=e.content;if(typeof t=="object"&&t!==null){let o=t.value;if(typeof o=="string"&&o)return{text:o,isThinking:!1}}let s=e.value;return typeof s=="string"&&s?{text:s,isThinking:!1}:{text:"",isThinking:!1}}function Xd(n){if(typeof n.promptTokens=="number"&&typeof n.outputTokens=="number")return n.promptTokens+n.outputTokens;if(n.metadata&&typeof n.metadata.promptTokens=="number"&&typeof n.metadata.outputTokens=="number")return n.metadata.promptTokens+n.metadata.outputTokens;if(n.usage){let e=typeof n.usage.promptTokens=="number"?n.usage.promptTokens:0,t=typeof n.usage.completionTokens=="number"?n.usage.completionTokens:0;return e+t}return 0}function Zd(n,e){let t=n.length;for(let o of e.keys())o+1>t&&(t=o+1);let s=0;for(let o=0;o<t;o++){let i=Gd(n[o]),r=i?Xd(i):0;if(r>0)s+=r;else{let l=e.get(o);l&&(s+=l.promptTokens+l.outputTokens)}}return s}function em(n){let e=Xt(n);if(!e)return 0;let t=0;return e.prompt&&(t+=H(e.prompt)),e.result&&(t+=H(e.result)),t}function tm(n){let e=0;for(let t of n){let s=jd(t);if(s)for(let o of s)e+=em(o)}return e}function sm(n){let e=n.k;if(n.kind!==2||e?.[0]!=="requests"||!Array.isArray(n.v))return 0;let t=0;for(let s of n.v){let i=s.message;i?.text&&(t+=H(String(i.text)))}return t}function nm(n,e){if(Xt(n))return;let{text:t,isThinking:s}=Zt(n);t&&(s?e.totalThinkingTokens+=H(t):e.totalTokens+=H(t))}function om(n,e){let t=n.k;if(!(n.kind!==2||!t?.includes("response")||!Array.isArray(n.v)))for(let s of n.v)nm(s,e)}var Oi=class{estimate(e){let t={totalTokens:0,totalThinkingTokens:0,parseFailedLines:0},s={};for(let d of e)if(d.trim())try{let m=JSON.parse(d);s=Ns(s,m),t.totalTokens+=sm(m),om(m,t)}catch{t.parseFailedLines++}let o=t.parseFailedLines>0?Ni(e):new Map,i=s.requests,r=Array.isArray(i)?i:[],l=Zd(r,o);return t.totalTokens+=tm(r),{tokens:t.totalTokens+t.totalThinkingTokens,thinkingTokens:t.totalThinkingTokens,actualTokens:l,cacheReadTokens:0,modelUsage:{},dailyActualTokens:{}}}};function im(n,e,t){let s=e?.usage;if(!s)return 0;let o=typeof s.inputTokens=="number"?s.inputTokens:0,i=typeof s.outputTokens=="number"?s.outputTokens:0,r=typeof s.cacheReadTokens=="number"?s.cacheReadTokens:0,l=typeof s.cacheWriteTokens=="number"?s.cacheWriteTokens:0;return t.cliActualTokens+=o+i,t.cliCacheReadTokens+=r,t.cliShutdownModelUsage[n]||(t.cliShutdownModelUsage[n]={inputTokens:0,outputTokens:0}),t.cliShutdownModelUsage[n].inputTokens+=o,t.cliShutdownModelUsage[n].outputTokens+=i,r>0&&(t.cliShutdownModelUsage[n].cachedReadTokens=(t.cliShutdownModelUsage[n].cachedReadTokens??0)+r),l>0&&(t.cliShutdownModelUsage[n].cacheCreationTokens=(t.cliShutdownModelUsage[n].cacheCreationTokens??0)+l),o+i}function rm(n,e){let t=n.data;if(!t?.modelMetrics)return;e.cliShutdownModelUsage||(e.cliShutdownModelUsage={});let s=0;for(let[o,i]of Object.entries(t.modelMetrics))s+=im(o,i,e);if(s>0&&n.timestamp){let o=pe(new Date(String(n.timestamp)));o&&o!=="Inval"&&(e.dailyActualTokens[o]=(e.dailyActualTokens[o]||0)+s)}}function am(n,e){let t=n?.reasoningText;typeof t=="string"&&t&&(e.totalThinkingTokens+=H(t));let s=n?.thinking?.text;typeof s=="string"&&s&&(e.totalThinkingTokens+=H(s))}function lm(n,e,t){t.cliRealOutputByModel||(t.cliRealOutputByModel={});let s=String(n?.model??"unknown");t.cliRealOutputByModel[s]=(t.cliRealOutputByModel[s]??0)+e}function cm(n,e){let t=n.data,s=typeof t?.outputTokens=="number"?t.outputTokens:0;s>0?lm(t,s,e):t?.content&&(e.totalTokens+=H(String(t.content))),am(t,e)}function um(n,e){if(!n?.result)return;let t=n.result,s=typeof t.detailedContent=="string"?t.detailedContent:typeof t.content=="string"?t.content:"";s&&(e.totalTokens+=H(s))}function dm(n,e){let t=n.data;n.type==="user.message"&&t?.content?e.totalTokens+=H(String(t.content)):n.type==="user.message_rendered"&&t?.renderedMessage?e.totalTokens+=H(String(t.renderedMessage)):n.type==="assistant.message"?cm(n,e):n.type==="tool.execution_start"?e.totalEstToolCalls++:n.type==="tool.execution_complete"?um(t,e):n.content&&(e.totalTokens+=H(String(n.content)))}function mm(n){if(!n.cliRealOutputByModel)return;let e=n.totalEstToolCalls>zd?Wd:n.totalEstToolCalls>$d?Hd:Vd;for(let t of Object.values(n.cliRealOutputByModel)){let s=Math.round(t*e);n.cliActualTokens+=s+t,n.cliCacheReadTokens+=s}}var Fi=class{estimate(e){let t={totalTokens:0,totalThinkingTokens:0,cliActualTokens:0,cliCacheReadTokens:0,cliShutdownModelUsage:null,cliRealOutputByModel:null,totalEstToolCalls:0,dailyActualTokens:{}};for(let s of e)if(s.trim())try{let o=JSON.parse(s);o.type==="session.shutdown"&&rm(o,t),dm(o,t)}catch{}return t.cliActualTokens||mm(t),{tokens:t.totalTokens+t.totalThinkingTokens,thinkingTokens:t.totalThinkingTokens,actualTokens:t.cliActualTokens,cacheReadTokens:t.cliCacheReadTokens,modelUsage:t.cliShutdownModelUsage??{},dailyActualTokens:t.dailyActualTokens}}};function pm(n){let e=0;for(let t of n)if(t.trim()){if(++e>Kd)break;try{if(typeof JSON.parse(t).kind=="number")return new Oi}catch{}}return new Fi}function uo(n){let e=n.trim().split(`
40
+ `);return pm(e).estimate(e)}function gm(n,e){e.modelTurns++;let t=n.attrs,s=typeof t?.inputTokens=="number"?t.inputTokens:0,o=typeof t?.outputTokens=="number"?t.outputTokens:0,i=typeof t?.cachedTokens=="number"?t.cachedTokens:0;e.inputTokens+=s,e.outputTokens+=o,e.cachedTokens+=i;let r=typeof t?.model=="string"&&t.model?t.model:"";if(!r)return;let l=e.modelBreakdown[r]??{inputTokens:0,outputTokens:0,cachedTokens:0};l.inputTokens+=s,l.outputTokens+=o,l.cachedTokens+=i,e.modelBreakdown[r]=l}function ll(n){let e={inputTokens:0,outputTokens:0,cachedTokens:0,modelTurns:0,modelBreakdown:{}};for(let t of n.split(/\r?\n/))if(t.trim())try{let s=JSON.parse(t);s.type==="llm_request"&&gm(s,e)}catch{}return e.modelTurns>0?e:null}function cl(n){if(!n||typeof n!="object")return null;let t=n.metadata;if(!t||typeof t!="object")return null;let o=t.configurationSchema;if(!o||typeof o!="object")return null;let r=o.properties;if(!r||typeof r!="object")return null;let d=r.reasoningEffort;if(!d||typeof d!="object")return null;let m=d;return typeof m.default=="string"?m.default:null}function fm(n,e){let s=n.v?.inputState,o=cl(s?.selectedModel);o!==null&&(e.currentEffort=o,e.defaultEffort=o)}function hm(n,e){let t=n.k;if(!Array.isArray(t)||t[0]!=="inputState"||t[1]!=="selectedModel")return;let s=cl(n.v);s!==null&&s!==e.currentEffort&&(e.currentEffort!==null&&e.switchCount++,e.currentEffort=s)}function ym(n,e){let t=n.k;if(!Array.isArray(t)||t[0]!=="requests"||typeof t[1]!="number"||e.currentEffort===null)return;let s=n.v;if(!s||typeof s!="object")return;let o=typeof s.requestId=="string"?s.requestId:null;o&&e.effortByRequestId.set(o,e.currentEffort)}function ul(n){let e={effortByRequestId:new Map,currentEffort:null,defaultEffort:null,switchCount:0};for(let t of n){if(!t.trim())continue;let s;try{s=JSON.parse(t)}catch{continue}typeof s.kind=="number"&&(s.kind===0?fm(s,e):s.kind===1?hm(s,e):s.kind===2&&ym(s,e))}return{effortByRequestId:e.effortByRequestId,defaultEffort:e.defaultEffort,switchCount:e.switchCount}}function Ni(n){let e=new Map;for(let t of n){if(!t.includes('"result"'))continue;let s=t.match(/"k":\s*\["requests",\s*(\d+),\s*"result"\]/);if(!s)continue;let o=parseInt(s[1],10),i=t.match(/"promptTokens":(\d+)/),r=t.match(/"outputTokens":(\d+)/),l=t.match(/"completionTokens":(\d+)/);i&&(r||l)&&e.set(o,{promptTokens:parseInt(i[1],10),outputTokens:parseInt(r?.[1]||l[1],10)})}return e}var al=new WeakMap;function dl(n){let e=al.get(n);if(!e){let t={};for(let[o,i]of Object.entries(n))if(i.displayNames)for(let r of i.displayNames)t[r]=o;let s=Object.keys(t).sort((o,i)=>i.length-o.length);e={map:t,sortedNames:s},al.set(n,e)}return e}function _m(n,e){let{map:t,sortedNames:s}=dl(e);for(let o of s)if(n.includes(o))return t[o];return null}function Cm(n,e){let{map:t,sortedNames:s}=dl(e);for(let o of s)if(n.includes(o))return t[o];return null}function _t(n,e={}){if(n.modelId)return n.modelId.replace(/^copilot\//,"");if(n.result?.metadata?.modelId)return n.result.metadata.modelId.replace(/^copilot\//,"");if(n.result?.details){let t=Cm(n.result.details,e);if(t)return t}if(n.result?.metadata?.modelId)return n.result.metadata.modelId.replace(/^copilot\//,"");if(n.result?.details){let t=_m(n.result.details,e);if(t)return t}return"gpt-4"}function nt(n){let e=n.trim();if(!e.includes(`
41
41
  `))return!1;let t=e.split(`
42
- `).filter(i=>i.trim());if(t.length<2)return!1;let s=t[0].trim(),o=t[1].trim();return s.startsWith("{")&&s.endsWith("}")&&o.startsWith("{")&&o.endsWith("}")}function Zt(n){let e=n.trim();return/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i.test(e)}function gm(n,e,t){if(Array.isArray(n)){let s=Number(e);return(!n[s]||typeof n[s]!="object")&&(n[s]=t?[]:{}),n[s]}else return(!n[e]||typeof n[e]!="object")&&(n[e]=t?[]:{}),n[e]}function fm(n,e,t){Array.isArray(n)?n[Number(e)]=t:n[e]=t}function hm(n,e){Array.isArray(e)?n.push(...e):n.push(e)}function ym(n,e,t){let s;if(Array.isArray(n)){let o=Number(e);Array.isArray(n[o])||(n[o]=[]),s=n[o]}else Array.isArray(n[e])||(n[e]=[]),s=n[e];hm(s,t)}function Fs(n,e){if(typeof e!="object"||e===null)return n;let t=e,{kind:s,k:o,v:i}=t;if(s===0)return i;if(!Array.isArray(o)||o.length===0)return n;let r=o.map(String),l=typeof n=="object"&&n!==null?n:{},d=l;for(let p=0;p<r.length-1;p++)d=gm(d,r[p],/^\d+$/.test(r[p+1]));let m=r[r.length-1];return s===1?(fm(d,m,i),l):(s===2&&ym(d,m,i),l)}function Nt(n,e={}){let t=e[n];if(t&&typeof t.multiplier=="number")return t.multiplier===0?"standard":"premium";for(let[s,o]of Object.entries(e))if((n.includes(s)||s.includes(n))&&typeof o.multiplier=="number")return o.multiplier===0?"standard":"premium";return"unknown"}function Os(n,e={},t="provider"){let s=0;for(let[o,i]of Object.entries(n)){let r=e[o]??e["gpt-4o-mini"];if(!r)continue;let l=t==="copilot"&&r.copilotPricing?r.copilotPricing:r,d=i.cachedReadTokens??0,m=i.cacheCreationTokens??0,f=Math.max(0,i.inputTokens-d-m)/1e6*l.inputCostPerMillion,_=d/1e6*(l.cachedInputCostPerMillion??l.inputCostPerMillion),k=m/1e6*(l.cacheCreationCostPerMillion??l.inputCostPerMillion),b=i.outputTokens/1e6*l.outputCostPerMillion;s+=f+_+k+b}return s}function ae(){return{file:0,selection:0,implicitSelection:0,symbol:0,codebase:0,workspace:0,terminal:0,vscode:0,terminalLastCommand:0,terminalSelection:0,clipboard:0,changes:0,outputPanel:0,problemsPanel:0,pullRequest:0,codeContextLines:0,byKind:{},copilotInstructions:0,agentsMd:0,byPath:{}}}function G(n){return typeof n=="string"&&n.trim().length>0}function es(n){return typeof n=="number"&&Number.isFinite(n)?n:0}function ts(n){if(!G(n))return null;let e=Date.parse(n);return Number.isFinite(e)?e:null}function Ui(n,e){let t=ts(n.timestamp),s=ts(e.timestamp);return t!==null&&s!==null&&t!==s?t-s:t!==null&&s===null?-1:t===null&&s!==null?1:n.lineNumber-e.lineNumber}function Ns(n){if(!n)return n;let e=n.trim();return e==="gemini-3-flash-preview"?"gemini-3-flash":e}async function _m(n){let e=[];try{let t=await Ne.promises.readdir(n,{withFileTypes:!0});for(let s of t){if(s.isDirectory()||!s.name.startsWith("session-")||!s.name.endsWith(".jsonl"))continue;let o=Ke.join(n,s.name);try{(await Ne.promises.stat(o)).size>0&&e.push(o)}catch{}}}catch{}return e}async function Cm(n,e){if(!e.isDirectory())return[];let t=Ke.join(n,e.name,"chats");try{await Ne.promises.access(t)}catch{return[]}return _m(t)}function bm(n){return{sessionId:n.sessionId,projectHash:G(n.projectHash)?n.projectHash:void 0,startTime:G(n.startTime)?n.startTime:void 0,lastUpdated:G(n.lastUpdated)?n.lastUpdated:void 0,kind:G(n.kind)?n.kind:void 0}}var co=class{_projectsIndexCache=null;_projectsIndexInflight=new Map;getGeminiDataDir(){return Ke.join(Fi.homedir(),".gemini")}getGeminiTmpDir(){return Ke.join(this.getGeminiDataDir(),"tmp")}getGeminiProjectsPath(){return Ke.join(this.getGeminiDataDir(),"projects.json")}getGeminiLogsPath(){return Ke.join(this.getGeminiDataDir(),"logs.json")}isGeminiCliSessionFile(e){let t=re(e),s=re(this.getGeminiTmpDir());return t.startsWith(s)&&t.includes("/chats/session-")&&t.endsWith(".jsonl")}async collectSessionFilesFromChatDir(e){let t=[];try{let s=await Ne.promises.readdir(e,{withFileTypes:!0});for(let o of s){if(o.isDirectory()||!o.name.startsWith("session-")||!o.name.endsWith(".jsonl"))continue;let i=Ke.join(e,o.name);try{(await Ne.promises.stat(i)).size>0&&t.push(i)}catch{}}}catch{}return t}async getGeminiCliSessionFiles(){let e=this.getGeminiTmpDir();try{await Ne.promises.access(e)}catch{return[]}try{let t=await Ne.promises.readdir(e,{withFileTypes:!0});return(await Promise.all(t.map(o=>Cm(e,o)))).flat()}catch{return[]}}parseGeminiSessionHeader(e){return{sessionId:e.sessionId,projectHash:G(e.projectHash)?e.projectHash:void 0,startTime:G(e.startTime)?e.startTime:void 0,lastUpdated:G(e.lastUpdated)?e.lastUpdated:void 0,kind:G(e.kind)?e.kind:void 0}}parseGeminiUserRecord(e,t,s){let o=G(e.id)?e.id:`__user_${t}`;return s.has(o)?null:(s.add(o),{id:G(e.id)?e.id:void 0,timestamp:G(e.timestamp)?e.timestamp:void 0,type:"user",content:e.content,lineNumber:t})}parseGeminiAssistantRecord(e,t,s){return{id:G(e.id)?e.id:`__assistant_${s.value++}_${t}`,record:{id:G(e.id)?e.id:void 0,timestamp:G(e.timestamp)?e.timestamp:void 0,type:"gemini",content:e.content,thoughts:Array.isArray(e.thoughts)?e.thoughts:[],tokens:e.tokens,model:G(e.model)?e.model:void 0,toolCalls:Array.isArray(e.toolCalls)?e.toolCalls:[],lineNumber:t}}}processOneParsedLine(e,t,s){let o;try{o=JSON.parse(e)}catch{return}if(!s.header&&G(o?.sessionId)){s.header=this.parseGeminiSessionHeader(o);return}if(G(o?.$set?.lastUpdated)){s.latestHeaderUpdate=o.$set.lastUpdated;return}if(o?.type==="user"){let i=this.parseGeminiUserRecord(o,t,s.seenUserIds);i&&s.userRecords.push(i);return}if(o?.type==="gemini"){let{id:i,record:r}=this.parseGeminiAssistantRecord(o,t,s.counter);s.assistantRecords.set(i,r)}}async readGeminiCliSession(e){let t={header:null,latestHeaderUpdate:void 0,anonymousAssistantCounter:0,seenUserIds:new Set,userRecords:[],assistantRecords:new Map};for(let[r,l]of(await this.readJsonlLines(e)).entries()){let d;try{d=JSON.parse(l)}catch{continue}this._rgsDispatchLine(d,r,t)}t.header&&t.latestHeaderUpdate&&(t.header.lastUpdated=t.latestHeaderUpdate),t.userRecords.sort(Ui);let s=Array.from(t.assistantRecords.values()).sort(Ui),o=this.getProjectBucketFromPath(e)||t.header?.projectHash,i=await this.resolveWorkspacePath(o,t.header?.projectHash);return{header:t.header,projectBucket:o,workspacePath:i??o,userRecords:t.userRecords,assistantRecords:s}}_rgsDispatchLine(e,t,s){if(!s.header&&G(e?.sessionId)){s.header=bm(e);return}if(G(e?.$set?.lastUpdated)){s.latestHeaderUpdate=e.$set.lastUpdated;return}if(e?.type==="user"){this._rgsHandleUserRecord(e,t,s.seenUserIds,s.userRecords);return}e?.type==="gemini"&&(s.anonymousAssistantCounter=this._rgsHandleGeminiRecord(e,t,s.anonymousAssistantCounter,s.assistantRecords))}_rgsHandleUserRecord(e,t,s,o){let i=G(e.id)?e.id:`__user_${t}`;s.has(i)||(s.add(i),o.push({id:G(e.id)?e.id:void 0,timestamp:G(e.timestamp)?e.timestamp:void 0,type:"user",content:e.content,lineNumber:t}))}_rgsHandleGeminiRecord(e,t,s,o){let i=G(e.id)?e.id:`__assistant_${s}_${t}`;return o.set(i,{id:G(e.id)?e.id:void 0,timestamp:G(e.timestamp)?e.timestamp:void 0,type:"gemini",content:e.content,thoughts:Array.isArray(e.thoughts)?e.thoughts:[],tokens:e.tokens,model:G(e.model)?e.model:void 0,toolCalls:Array.isArray(e.toolCalls)?e.toolCalls:[],lineNumber:t}),G(e.id)?s:s+1}async getTokensFromGeminiCliSession(e){let t=await this.readGeminiCliSession(e),s=0,o=0;for(let i of t.assistantRecords){let r=this.getTokenBreakdown(i.tokens);s+=r.total,o+=r.thinking}return{tokens:s,thinkingTokens:o}}async countGeminiCliInteractions(e){return(await this.readGeminiCliSession(e)).userRecords.length}async getGeminiCliModelUsage(e){let t=await this.readGeminiCliSession(e),s={};for(let o of t.assistantRecords){let i=Ns(o.model||"unknown"),r=this.getTokenBreakdown(o.tokens);s[i]||(s[i]={inputTokens:0,outputTokens:0}),s[i].inputTokens+=r.input,s[i].outputTokens+=r.output+r.thinking+r.tool,r.cached>0&&(s[i].cachedReadTokens=(s[i].cachedReadTokens??0)+r.cached)}return s}async getGeminiCliSessionMeta(e){let t=await this.readGeminiCliSession(e),s=[],o=i=>{let r=ts(i);r!==null&&s.push(r)};o(t.header?.startTime),o(t.header?.lastUpdated);for(let i of t.userRecords)o(i.timestamp);for(let i of t.assistantRecords)o(i.timestamp);return s.sort((i,r)=>i-r),{title:this.deriveSessionTitle(t),firstInteraction:s.length>0?new Date(s[0]).toISOString():null,lastInteraction:s.length>0?new Date(s[s.length-1]).toISOString():null,workspacePath:t.workspacePath}}processAssistantGroup(e){let t=[],s=[],o=null,i=0,r=0,l=0,d=0,m=0,p=0;for(let f of e.assistants){let _=this.getTokenBreakdown(f.tokens);p+=_.total,i+=_.input,r+=_.output,l+=_.thinking,d+=_.tool,m+=_.cached;let k=G(f.content)?f.content.trim():"";k.length>0&&t.push(k);for(let b of this.toDisplayToolCalls(f.toolCalls))s.push(b);G(f.model)&&(o=Ns(f.model))}return{assistantContents:t,toolCalls:s,model:o,inputTokens:i,outputTokens:r,thinkingTokens:l,toolTokens:d,cachedTokens:m,totalTokens:p}}async buildGeminiCliTurns(e){let t=await this.readGeminiCliSession(e),s=this.groupConversationTurns(t),o=[],i=0;for(let r of s){let l={assistantContents:[],toolCalls:[],model:null,inputTokens:0,outputTokens:0,thinkingTokens:0,toolTokens:0,cachedTokens:0};for(let v of r.assistants)i+=this._bgtAggregateAssistant(v,l);let{assistantContents:d,toolCalls:m,model:p,inputTokens:f,outputTokens:_,thinkingTokens:k,toolTokens:b,cachedTokens:M}=l,O=f>0||_>0||k>0||b>0?{promptTokens:f,completionTokens:_+k+b,promptTokenDetails:this.buildPromptTokenDetails(f,M)}:void 0;o.push({turnNumber:o.length+1,timestamp:this.pickTurnTimestamp(r.user?.timestamp,r.assistants),mode:"cli",userMessage:this.extractUserText(r.user?.content),assistantResponse:d.join(`
42
+ `).filter(i=>i.trim());if(t.length<2)return!1;let s=t[0].trim(),o=t[1].trim();return s.startsWith("{")&&s.endsWith("}")&&o.startsWith("{")&&o.endsWith("}")}function es(n){let e=n.trim();return/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i.test(e)}function bm(n,e,t){if(Array.isArray(n)){let s=Number(e);return(!n[s]||typeof n[s]!="object")&&(n[s]=t?[]:{}),n[s]}else return(!n[e]||typeof n[e]!="object")&&(n[e]=t?[]:{}),n[e]}function km(n,e,t){Array.isArray(n)?n[Number(e)]=t:n[e]=t}function Sm(n,e){Array.isArray(e)?n.push(...e):n.push(e)}function wm(n,e,t){let s;if(Array.isArray(n)){let o=Number(e);Array.isArray(n[o])||(n[o]=[]),s=n[o]}else Array.isArray(n[e])||(n[e]=[]),s=n[e];Sm(s,t)}function Ns(n,e){if(typeof e!="object"||e===null)return n;let t=e,{kind:s,k:o,v:i}=t;if(s===0)return i;if(!Array.isArray(o)||o.length===0)return n;let r=o.map(String),l=typeof n=="object"&&n!==null?n:{},d=l;for(let p=0;p<r.length-1;p++)d=bm(d,r[p],/^\d+$/.test(r[p+1]));let m=r[r.length-1];return s===1?(km(d,m,i),l):(s===2&&wm(d,m,i),l)}function Nt(n,e={}){let t=e[n];if(t&&typeof t.multiplier=="number")return t.multiplier===0?"standard":"premium";for(let[s,o]of Object.entries(e))if((n.includes(s)||s.includes(n))&&typeof o.multiplier=="number")return o.multiplier===0?"standard":"premium";return"unknown"}function Ls(n,e={},t="provider"){let s=0;for(let[o,i]of Object.entries(n)){let r=e[o]??e["gpt-4o-mini"];if(!r)continue;let l=t==="copilot"&&r.copilotPricing?r.copilotPricing:r,d=i.cachedReadTokens??0,m=i.cacheCreationTokens??0,f=Math.max(0,i.inputTokens-d-m)/1e6*l.inputCostPerMillion,_=d/1e6*(l.cachedInputCostPerMillion??l.inputCostPerMillion),k=m/1e6*(l.cacheCreationCostPerMillion??l.inputCostPerMillion),b=i.outputTokens/1e6*l.outputCostPerMillion;s+=f+_+k+b}return s}function le(){return{file:0,selection:0,implicitSelection:0,symbol:0,codebase:0,workspace:0,terminal:0,vscode:0,terminalLastCommand:0,terminalSelection:0,clipboard:0,changes:0,outputPanel:0,problemsPanel:0,pullRequest:0,codeContextLines:0,byKind:{},copilotInstructions:0,agentsMd:0,byPath:{}}}function G(n){return typeof n=="string"&&n.trim().length>0}function ts(n){return typeof n=="number"&&Number.isFinite(n)?n:0}function ss(n){if(!G(n))return null;let e=Date.parse(n);return Number.isFinite(e)?e:null}function Li(n,e){let t=ss(n.timestamp),s=ss(e.timestamp);return t!==null&&s!==null&&t!==s?t-s:t!==null&&s===null?-1:t===null&&s!==null?1:n.lineNumber-e.lineNumber}function Gs(n){if(!n)return n;let e=n.trim();return e==="gemini-3-flash-preview"?"gemini-3-flash":e}async function Tm(n){let e=[];try{let t=await Ne.promises.readdir(n,{withFileTypes:!0});for(let s of t){if(s.isDirectory()||!s.name.startsWith("session-")||!s.name.endsWith(".jsonl"))continue;let o=Ke.join(n,s.name);try{(await Ne.promises.stat(o)).size>0&&e.push(o)}catch{}}}catch{}return e}async function Mm(n,e){if(!e.isDirectory())return[];let t=Ke.join(n,e.name,"chats");try{await Ne.promises.access(t)}catch{return[]}return Tm(t)}function Pm(n){return{sessionId:n.sessionId,projectHash:G(n.projectHash)?n.projectHash:void 0,startTime:G(n.startTime)?n.startTime:void 0,lastUpdated:G(n.lastUpdated)?n.lastUpdated:void 0,kind:G(n.kind)?n.kind:void 0}}var mo=class{_projectsIndexCache=null;_projectsIndexInflight=new Map;getGeminiDataDir(){return Ke.join(Gi.homedir(),".gemini")}getGeminiTmpDir(){return Ke.join(this.getGeminiDataDir(),"tmp")}getGeminiProjectsPath(){return Ke.join(this.getGeminiDataDir(),"projects.json")}getGeminiLogsPath(){return Ke.join(this.getGeminiDataDir(),"logs.json")}isGeminiCliSessionFile(e){let t=ae(e),s=ae(this.getGeminiTmpDir());return t.startsWith(s)&&t.includes("/chats/session-")&&t.endsWith(".jsonl")}async collectSessionFilesFromChatDir(e){let t=[];try{let s=await Ne.promises.readdir(e,{withFileTypes:!0});for(let o of s){if(o.isDirectory()||!o.name.startsWith("session-")||!o.name.endsWith(".jsonl"))continue;let i=Ke.join(e,o.name);try{(await Ne.promises.stat(i)).size>0&&t.push(i)}catch{}}}catch{}return t}async getGeminiCliSessionFiles(){let e=this.getGeminiTmpDir();try{await Ne.promises.access(e)}catch{return[]}try{let t=await Ne.promises.readdir(e,{withFileTypes:!0});return(await Promise.all(t.map(o=>Mm(e,o)))).flat()}catch{return[]}}parseGeminiSessionHeader(e){return{sessionId:e.sessionId,projectHash:G(e.projectHash)?e.projectHash:void 0,startTime:G(e.startTime)?e.startTime:void 0,lastUpdated:G(e.lastUpdated)?e.lastUpdated:void 0,kind:G(e.kind)?e.kind:void 0}}parseGeminiUserRecord(e,t,s){let o=G(e.id)?e.id:`__user_${t}`;return s.has(o)?null:(s.add(o),{id:G(e.id)?e.id:void 0,timestamp:G(e.timestamp)?e.timestamp:void 0,type:"user",content:e.content,lineNumber:t})}parseGeminiAssistantRecord(e,t,s){return{id:G(e.id)?e.id:`__assistant_${s.value++}_${t}`,record:{id:G(e.id)?e.id:void 0,timestamp:G(e.timestamp)?e.timestamp:void 0,type:"gemini",content:e.content,thoughts:Array.isArray(e.thoughts)?e.thoughts:[],tokens:e.tokens,model:G(e.model)?e.model:void 0,toolCalls:Array.isArray(e.toolCalls)?e.toolCalls:[],lineNumber:t}}}processOneParsedLine(e,t,s){let o;try{o=JSON.parse(e)}catch{return}if(!s.header&&G(o?.sessionId)){s.header=this.parseGeminiSessionHeader(o);return}if(G(o?.$set?.lastUpdated)){s.latestHeaderUpdate=o.$set.lastUpdated;return}if(o?.type==="user"){let i=this.parseGeminiUserRecord(o,t,s.seenUserIds);i&&s.userRecords.push(i);return}if(o?.type==="gemini"){let{id:i,record:r}=this.parseGeminiAssistantRecord(o,t,s.counter);s.assistantRecords.set(i,r)}}async readGeminiCliSession(e){let t={header:null,latestHeaderUpdate:void 0,anonymousAssistantCounter:0,seenUserIds:new Set,userRecords:[],assistantRecords:new Map};for(let[r,l]of(await this.readJsonlLines(e)).entries()){let d;try{d=JSON.parse(l)}catch{continue}this._rgsDispatchLine(d,r,t)}t.header&&t.latestHeaderUpdate&&(t.header.lastUpdated=t.latestHeaderUpdate),t.userRecords.sort(Li);let s=Array.from(t.assistantRecords.values()).sort(Li),o=this.getProjectBucketFromPath(e)||t.header?.projectHash,i=await this.resolveWorkspacePath(o,t.header?.projectHash);return{header:t.header,projectBucket:o,workspacePath:i??o,userRecords:t.userRecords,assistantRecords:s}}_rgsDispatchLine(e,t,s){if(!s.header&&G(e?.sessionId)){s.header=Pm(e);return}if(G(e?.$set?.lastUpdated)){s.latestHeaderUpdate=e.$set.lastUpdated;return}if(e?.type==="user"){this._rgsHandleUserRecord(e,t,s.seenUserIds,s.userRecords);return}e?.type==="gemini"&&(s.anonymousAssistantCounter=this._rgsHandleGeminiRecord(e,t,s.anonymousAssistantCounter,s.assistantRecords))}_rgsHandleUserRecord(e,t,s,o){let i=G(e.id)?e.id:`__user_${t}`;s.has(i)||(s.add(i),o.push({id:G(e.id)?e.id:void 0,timestamp:G(e.timestamp)?e.timestamp:void 0,type:"user",content:e.content,lineNumber:t}))}_rgsHandleGeminiRecord(e,t,s,o){let i=G(e.id)?e.id:`__assistant_${s}_${t}`;return o.set(i,{id:G(e.id)?e.id:void 0,timestamp:G(e.timestamp)?e.timestamp:void 0,type:"gemini",content:e.content,thoughts:Array.isArray(e.thoughts)?e.thoughts:[],tokens:e.tokens,model:G(e.model)?e.model:void 0,toolCalls:Array.isArray(e.toolCalls)?e.toolCalls:[],lineNumber:t}),G(e.id)?s:s+1}async getTokensFromGeminiCliSession(e){let t=await this.readGeminiCliSession(e),s=0,o=0;for(let i of t.assistantRecords){let r=this.getTokenBreakdown(i.tokens);s+=r.total,o+=r.thinking}return{tokens:s,thinkingTokens:o}}async countGeminiCliInteractions(e){return(await this.readGeminiCliSession(e)).userRecords.length}async getGeminiCliModelUsage(e){let t=await this.readGeminiCliSession(e),s={};for(let o of t.assistantRecords){let i=Gs(o.model||"unknown"),r=this.getTokenBreakdown(o.tokens);s[i]||(s[i]={inputTokens:0,outputTokens:0}),s[i].inputTokens+=r.input,s[i].outputTokens+=r.output+r.thinking+r.tool,r.cached>0&&(s[i].cachedReadTokens=(s[i].cachedReadTokens??0)+r.cached)}return s}async getGeminiCliSessionMeta(e){let t=await this.readGeminiCliSession(e),s=[],o=i=>{let r=ss(i);r!==null&&s.push(r)};o(t.header?.startTime),o(t.header?.lastUpdated);for(let i of t.userRecords)o(i.timestamp);for(let i of t.assistantRecords)o(i.timestamp);return s.sort((i,r)=>i-r),{title:this.deriveSessionTitle(t),firstInteraction:s.length>0?new Date(s[0]).toISOString():null,lastInteraction:s.length>0?new Date(s[s.length-1]).toISOString():null,workspacePath:t.workspacePath}}processAssistantGroup(e){let t=[],s=[],o=null,i=0,r=0,l=0,d=0,m=0,p=0;for(let f of e.assistants){let _=this.getTokenBreakdown(f.tokens);p+=_.total,i+=_.input,r+=_.output,l+=_.thinking,d+=_.tool,m+=_.cached;let k=G(f.content)?f.content.trim():"";k.length>0&&t.push(k);for(let b of this.toDisplayToolCalls(f.toolCalls))s.push(b);G(f.model)&&(o=Gs(f.model))}return{assistantContents:t,toolCalls:s,model:o,inputTokens:i,outputTokens:r,thinkingTokens:l,toolTokens:d,cachedTokens:m,totalTokens:p}}async buildGeminiCliTurns(e){let t=await this.readGeminiCliSession(e),s=this.groupConversationTurns(t),o=[],i=0;for(let r of s){let l={assistantContents:[],toolCalls:[],model:null,inputTokens:0,outputTokens:0,thinkingTokens:0,toolTokens:0,cachedTokens:0};for(let x of r.assistants)i+=this._bgtAggregateAssistant(x,l);let{assistantContents:d,toolCalls:m,model:p,inputTokens:f,outputTokens:_,thinkingTokens:k,toolTokens:b,cachedTokens:M}=l,F=f>0||_>0||k>0||b>0?{promptTokens:f,completionTokens:_+k+b,promptTokenDetails:this.buildPromptTokenDetails(f,M)}:void 0;o.push({turnNumber:o.length+1,timestamp:this.pickTurnTimestamp(r.user?.timestamp,r.assistants),mode:"cli",userMessage:this.extractUserText(r.user?.content),assistantResponse:d.join(`
43
43
 
44
- `),model:p,toolCalls:m,contextReferences:ae(),mcpTools:[],inputTokensEstimate:f,outputTokensEstimate:_+b,thinkingTokensEstimate:k,actualUsage:O})}return{turns:o,actualTokens:i}}_bgtAggregateAssistant(e,t){let s=this.getTokenBreakdown(e.tokens);t.inputTokens+=s.input,t.outputTokens+=s.output,t.thinkingTokens+=s.thinking,t.toolTokens+=s.tool,t.cachedTokens+=s.cached;let o=G(e.content)?e.content.trim():"";o.length>0&&t.assistantContents.push(o);for(let i of this.toDisplayToolCalls(e.toolCalls))t.toolCalls.push(i);return G(e.model)&&(t.model=Ns(e.model)),s.total}async getGeminiCliDailyFractions(e){let t=await this.readGeminiCliSession(e),s=t.userRecords.map(l=>this.toLocalDayKey(l.timestamp)).filter(l=>!!l);if(s.length===0)for(let l of t.assistantRecords){let d=this.toLocalDayKey(l.timestamp);d&&s.push(d)}if(s.length===0)return{[this.toLocalDayKey(t.header?.startTime)??this.toLocalDayKey(t.header?.lastUpdated)??de(new Date)]:1};let o=new Map;for(let l of s)o.set(l,(o.get(l)??0)+1);let i=s.length,r={};for(let[l,d]of o.entries())r[l]=d/i;return r}async readJsonlLines(e){try{return(await Ne.promises.readFile(e,"utf8")).split(/\r?\n/).map(t=>t.trim()).filter(t=>t.length>0)}catch{return[]}}getProjectBucketFromPath(e){let s=ge(e).split("/").filter(r=>r.length>0),o=s.lastIndexOf("chats");if(o>0)return s[o-1];let i=s.lastIndexOf("tmp");if(i>=0&&i+1<s.length)return s[i+1]}async resolveWorkspacePath(e,t){let s=await this.readGeminiProjectsIndex();if(e&&s.has(e))return s.get(e);if(t&&s.has(t))return s.get(t)}async readGeminiProjectsIndex(){let e=this.getGeminiProjectsPath(),t;try{t=await Ne.promises.stat(e)}catch{return new Map}let s=this._projectsIndexCache;if(s&&s.mtimeMs===t.mtimeMs&&s.size===t.size)return s.map;let o=`${t.mtimeMs}:${t.size}`,i=this._projectsIndexInflight.get(o);if(i)return i;let r=(async()=>{let l=new Map;try{let m=JSON.parse(await Ne.promises.readFile(e,"utf8"));if(Array.isArray(m))for(let p of m)this.addProjectMapping(l,void 0,p);else if(m&&typeof m=="object")for(let[p,f]of Object.entries(m))this.addProjectMapping(l,p,f)}catch{}let d=await Ne.promises.stat(e).catch(()=>null);return d&&d.mtimeMs===t.mtimeMs&&d.size===t.size&&(this._projectsIndexCache={map:l,mtimeMs:t.mtimeMs,size:t.size}),l})();this._projectsIndexInflight.set(o,r);try{return await r}finally{this._projectsIndexInflight.get(o)===r&&this._projectsIndexInflight.delete(o)}}applyStringValueMapping(e,t,s){t&&this.looksLikePath(t)&&!this.looksLikePath(s)?e.set(s,this.normalizeWorkspacePath(t)):t&&!this.looksLikePath(t)&&this.looksLikePath(s)&&e.set(t,this.normalizeWorkspacePath(s))}applyObjectValueMapping(e,t,s){let o=this.pickString(s,["projectHash","projectBucket","bucket","slug","name","id"]),i=this.pickString(s,["workspacePath","path","directory","cwd","rootPath","repoPath","workspace","root"]);o&&i&&this.looksLikePath(i)&&e.set(o,this.normalizeWorkspacePath(i)),t&&this.looksLikePath(t)&&o&&e.set(o,this.normalizeWorkspacePath(t)),t&&!this.looksLikePath(t)&&i&&this.looksLikePath(i)&&e.set(t,this.normalizeWorkspacePath(i))}addProjectMapping(e,t,s){if(typeof s=="string"){this.applyStringValueMapping(e,t,s);return}!s||typeof s!="object"||Array.isArray(s)||this.applyObjectValueMapping(e,t,s)}pickString(e,t){for(let s of t)if(G(e[s]))return e[s].trim()}looksLikePath(e){let t=ge(e);return/^[a-zA-Z]:/.test(e)||t.startsWith("/")||t.startsWith("~")||t.startsWith("file://")}normalizeWorkspacePath(e){let t=e.trim().replace(/^~(?=[/\\]|$)/,Fi.homedir());if(/^file:\/\//i.test(t))try{t=decodeURIComponent(t.replace(/^file:\/\/\/?/,"")),process.platform==="win32"&&/^\/[a-zA-Z]:/.test(t)&&(t=t.slice(1))}catch{}return Ke.normalize(t)}getTokenBreakdown(e){let t=es(e?.input),s=es(e?.output),o=es(e?.cached),i=es(e?.thoughts),r=es(e?.tool),l=es(e?.total)||t+s+i+r;return{input:t,output:s,cached:o,thinking:i,tool:r,total:l}}deriveSessionTitle(e){for(let t of e.userRecords){let s=this.extractUserText(t.content).split(/\r?\n/).map(o=>o.trim()).find(o=>o.length>0);if(s)return s.length>80?`${s.slice(0,77)}...`:s}return e.projectBucket}extractUserText(e){if(G(e))return e.trim();if(!Array.isArray(e))return"";let t=[];for(let s of e)s&&typeof s=="object"&&G(s.text)&&t.push(s.text.trim());return t.join(`
44
+ `),model:p,toolCalls:m,contextReferences:le(),mcpTools:[],inputTokensEstimate:f,outputTokensEstimate:_+b,thinkingTokensEstimate:k,actualUsage:F})}return{turns:o,actualTokens:i}}_bgtAggregateAssistant(e,t){let s=this.getTokenBreakdown(e.tokens);t.inputTokens+=s.input,t.outputTokens+=s.output,t.thinkingTokens+=s.thinking,t.toolTokens+=s.tool,t.cachedTokens+=s.cached;let o=G(e.content)?e.content.trim():"";o.length>0&&t.assistantContents.push(o);for(let i of this.toDisplayToolCalls(e.toolCalls))t.toolCalls.push(i);return G(e.model)&&(t.model=Gs(e.model)),s.total}async getGeminiCliDailyFractions(e){let t=await this.readGeminiCliSession(e),s=t.userRecords.map(l=>this.toLocalDayKey(l.timestamp)).filter(l=>!!l);if(s.length===0)for(let l of t.assistantRecords){let d=this.toLocalDayKey(l.timestamp);d&&s.push(d)}if(s.length===0)return{[this.toLocalDayKey(t.header?.startTime)??this.toLocalDayKey(t.header?.lastUpdated)??pe(new Date)]:1};let o=new Map;for(let l of s)o.set(l,(o.get(l)??0)+1);let i=s.length,r={};for(let[l,d]of o.entries())r[l]=d/i;return r}async readJsonlLines(e){try{return(await Ne.promises.readFile(e,"utf8")).split(/\r?\n/).map(t=>t.trim()).filter(t=>t.length>0)}catch{return[]}}getProjectBucketFromPath(e){let s=me(e).split("/").filter(r=>r.length>0),o=s.lastIndexOf("chats");if(o>0)return s[o-1];let i=s.lastIndexOf("tmp");if(i>=0&&i+1<s.length)return s[i+1]}async resolveWorkspacePath(e,t){let s=await this.readGeminiProjectsIndex();if(e&&s.has(e))return s.get(e);if(t&&s.has(t))return s.get(t)}async readGeminiProjectsIndex(){let e=this.getGeminiProjectsPath(),t;try{t=await Ne.promises.stat(e)}catch{return new Map}let s=this._projectsIndexCache;if(s&&s.mtimeMs===t.mtimeMs&&s.size===t.size)return s.map;let o=`${t.mtimeMs}:${t.size}`,i=this._projectsIndexInflight.get(o);if(i)return i;let r=(async()=>{let l=new Map;try{let m=JSON.parse(await Ne.promises.readFile(e,"utf8"));if(Array.isArray(m))for(let p of m)this.addProjectMapping(l,void 0,p);else if(m&&typeof m=="object")for(let[p,f]of Object.entries(m))this.addProjectMapping(l,p,f)}catch{}let d=await Ne.promises.stat(e).catch(()=>null);return d&&d.mtimeMs===t.mtimeMs&&d.size===t.size&&(this._projectsIndexCache={map:l,mtimeMs:t.mtimeMs,size:t.size}),l})();this._projectsIndexInflight.set(o,r);try{return await r}finally{this._projectsIndexInflight.get(o)===r&&this._projectsIndexInflight.delete(o)}}applyStringValueMapping(e,t,s){t&&this.looksLikePath(t)&&!this.looksLikePath(s)?e.set(s,this.normalizeWorkspacePath(t)):t&&!this.looksLikePath(t)&&this.looksLikePath(s)&&e.set(t,this.normalizeWorkspacePath(s))}applyObjectValueMapping(e,t,s){let o=this.pickString(s,["projectHash","projectBucket","bucket","slug","name","id"]),i=this.pickString(s,["workspacePath","path","directory","cwd","rootPath","repoPath","workspace","root"]);o&&i&&this.looksLikePath(i)&&e.set(o,this.normalizeWorkspacePath(i)),t&&this.looksLikePath(t)&&o&&e.set(o,this.normalizeWorkspacePath(t)),t&&!this.looksLikePath(t)&&i&&this.looksLikePath(i)&&e.set(t,this.normalizeWorkspacePath(i))}addProjectMapping(e,t,s){if(typeof s=="string"){this.applyStringValueMapping(e,t,s);return}!s||typeof s!="object"||Array.isArray(s)||this.applyObjectValueMapping(e,t,s)}pickString(e,t){for(let s of t)if(G(e[s]))return e[s].trim()}looksLikePath(e){let t=me(e);return/^[a-zA-Z]:/.test(e)||t.startsWith("/")||t.startsWith("~")||t.startsWith("file://")}normalizeWorkspacePath(e){let t=e.trim().replace(/^~(?=[/\\]|$)/,Gi.homedir());if(/^file:\/\//i.test(t))try{t=decodeURIComponent(t.replace(/^file:\/\/\/?/,"")),process.platform==="win32"&&/^\/[a-zA-Z]:/.test(t)&&(t=t.slice(1))}catch{}return Ke.normalize(t)}getTokenBreakdown(e){let t=ts(e?.input),s=ts(e?.output),o=ts(e?.cached),i=ts(e?.thoughts),r=ts(e?.tool),l=ts(e?.total)||t+s+i+r;return{input:t,output:s,cached:o,thinking:i,tool:r,total:l}}deriveSessionTitle(e){for(let t of e.userRecords){let s=this.extractUserText(t.content).split(/\r?\n/).map(o=>o.trim()).find(o=>o.length>0);if(s)return s.length>80?`${s.slice(0,77)}...`:s}return e.projectBucket}extractUserText(e){if(G(e))return e.trim();if(!Array.isArray(e))return"";let t=[];for(let s of e)s&&typeof s=="object"&&G(s.text)&&t.push(s.text.trim());return t.join(`
45
45
 
46
- `).trim()}toDisplayToolCalls(e){if(!Array.isArray(e))return[];let t=[];for(let s of e){let o=G(s?.name)?s.name.trim():"",r=(G(s?.displayName)?s.displayName.trim():"")||o;r&&t.push({toolName:r,arguments:s.args!==void 0?this.safeStringify(s.args):void 0,result:G(s.resultDisplay)?s.resultDisplay:s.result!==void 0?this.safeStringify(s.result):void 0})}return t}safeStringify(e){if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}buildPromptTokenDetails(e,t){if(e<=0)return;let s=[],o=Math.min(t,e);o>0&&s.push({category:"cached",label:"Cache reads",percentageOfPrompt:o/e*100});let i=e-o;return i>0&&s.push({category:"prompt",label:"Prompt tokens",percentageOfPrompt:i/e*100}),s.length>0?s:void 0}groupConversationTurns(e){let t=[...e.userRecords.map(r=>({kind:"user",record:r})),...e.assistantRecords.map(r=>({kind:"assistant",record:r}))].sort((r,l)=>Ui(r.record,l.record)),s=[],o=null,i=[];for(let r of t)r.kind==="user"?((o||i.length>0)&&(s.push({user:o,assistants:i}),i=[]),o=r.record):i.push(r.record);return(o||i.length>0)&&s.push({user:o,assistants:i}),s}pickTurnTimestamp(e,t){let s=ts(e);if(s!==null)return new Date(s).toISOString();for(let o of t){let i=ts(o.timestamp);if(i!==null)return new Date(i).toISOString()}return null}toLocalDayKey(e){let t=ts(e);return t!==null?de(new Date(t)):null}};var uo=A(require("fs")),ll=A(require("os")),Qe=A(require("path"));function Oi(n){let e=n.match(/<USER_REQUEST>([\s\S]*?)<\/USER_REQUEST>/);if(e)return e[1].trim();let t=n.indexOf("<ADDITIONAL_METADATA>");return t!==-1?n.substring(0,t).trim():n.trim()}function km(n,e){n.content&&n.content.trim()&&(e.assistantResponse+=(e.assistantResponse?`
46
+ `).trim()}toDisplayToolCalls(e){if(!Array.isArray(e))return[];let t=[];for(let s of e){let o=G(s?.name)?s.name.trim():"",r=(G(s?.displayName)?s.displayName.trim():"")||o;r&&t.push({toolName:r,arguments:s.args!==void 0?this.safeStringify(s.args):void 0,result:G(s.resultDisplay)?s.resultDisplay:s.result!==void 0?this.safeStringify(s.result):void 0})}return t}safeStringify(e){if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}buildPromptTokenDetails(e,t){if(e<=0)return;let s=[],o=Math.min(t,e);o>0&&s.push({category:"cached",label:"Cache reads",percentageOfPrompt:o/e*100});let i=e-o;return i>0&&s.push({category:"prompt",label:"Prompt tokens",percentageOfPrompt:i/e*100}),s.length>0?s:void 0}groupConversationTurns(e){let t=[...e.userRecords.map(r=>({kind:"user",record:r})),...e.assistantRecords.map(r=>({kind:"assistant",record:r}))].sort((r,l)=>Li(r.record,l.record)),s=[],o=null,i=[];for(let r of t)r.kind==="user"?((o||i.length>0)&&(s.push({user:o,assistants:i}),i=[]),o=r.record):i.push(r.record);return(o||i.length>0)&&s.push({user:o,assistants:i}),s}pickTurnTimestamp(e,t){let s=ss(e);if(s!==null)return new Date(s).toISOString();for(let o of t){let i=ss(o.timestamp);if(i!==null)return new Date(i).toISOString()}return null}toLocalDayKey(e){let t=ss(e);return t!==null?pe(new Date(t)):null}};var po=v(require("fs")),ml=v(require("os")),Qe=v(require("path"));function ji(n){let e=n.match(/<USER_REQUEST>([\s\S]*?)<\/USER_REQUEST>/);if(e)return e[1].trim();let t=n.indexOf("<ADDITIONAL_METADATA>");return t!==-1?n.substring(0,t).trim():n.trim()}function vm(n,e){n.content&&n.content.trim()&&(e.assistantResponse+=(e.assistantResponse?`
47
47
 
48
48
  `:"")+n.content.trim()),n.thinking&&n.thinking.trim()&&(e.thinkingContent+=(e.thinkingContent?`
49
49
 
50
- `:"")+n.thinking.trim());for(let t of n.tool_calls??[])t.name&&e.toolCalls.push({toolName:t.name,arguments:t.args?JSON.stringify(t.args):void 0})}function Sm(n,e){e.toolCalls.length>0&&!e.toolCalls[e.toolCalls.length-1].result&&n.content&&(e.toolCalls[e.toolCalls.length-1].result=n.content.trim())}function wm(n,e){n.type==="PLANNER_RESPONSE"?km(n,e):n.type==="SEARCH_WEB"&&n.content&&Sm(n,e)}function Tm(n,e){let t={assistantResponse:"",thinkingContent:"",toolCalls:[]};for(let s=e;s<n.length;s++){let o=n[s];if(o.type==="USER_INPUT"&&o.source==="USER_EXPLICIT")break;o.source==="MODEL"&&wm(o,t)}return t}var mo=class{getAntigravityDataDir(){return Qe.join(ll.homedir(),".gemini","antigravity")}getAntigravityBrainDir(){return Qe.join(this.getAntigravityDataDir(),"brain")}isAntigravitySessionFile(e){let t=re(e);return t.includes("/.gemini/antigravity/brain/")&&t.endsWith("/transcript.jsonl")}getSessionIdFromPath(e){let t=e.replace(/\\/g,"/"),s=t.toLowerCase().indexOf("/.gemini/antigravity/brain/");if(s===-1)return Qe.basename(Qe.dirname(Qe.dirname(Qe.dirname(e))));let o=t.substring(s+27),i=o.indexOf("/");return i!==-1?o.substring(0,i):o}async getAntigravitySessionFiles(){let e=this.getAntigravityBrainDir(),t=[],s;try{s=await uo.promises.readdir(e,{withFileTypes:!0})}catch{return[]}for(let o of s){if(!o.isDirectory())continue;let i=Qe.join(e,o.name,".system_generated","logs","transcript.jsonl");try{(await uo.promises.stat(i)).size>0&&t.push(i)}catch{}}return t}async readAntigravitySession(e){let t=this.getSessionIdFromPath(e),s=[],o=[],i=[],r;try{r=await uo.promises.readFile(e,"utf8")}catch{return{sessionId:t,userEntries:s,modelEntries:o,allEntries:i}}let l=r.split(`
51
- `).filter(m=>m.trim().length>0);for(let m of l){let p;try{p=JSON.parse(m)}catch{continue}!p||typeof p.type!="string"||(i.push(p),p.type==="USER_INPUT"&&p.source==="USER_EXPLICIT"?s.push(p):p.source==="MODEL"&&o.push(p))}let d=(m,p)=>m.step_index-p.step_index;return i.sort(d),s.sort(d),o.sort(d),{sessionId:t,userEntries:s,modelEntries:o,allEntries:i}}async estimateTokensFromAntigravitySession(e,t){let s=await this.readAntigravitySession(e),o=0,i=0,r=0;for(let l of s.userEntries)o+=t(Oi(l.content??""));for(let l of s.modelEntries)l.type==="PLANNER_RESPONSE"&&(l.content&&(i+=t(l.content)),l.thinking&&(r+=t(l.thinking)));return{tokens:o+i+r,thinkingTokens:r}}async countAntigravityInteractions(e){return(await this.readAntigravitySession(e)).userEntries.length}getAntigravityModelUsage(e){return{}}async getAntigravitySessionMeta(e){let t=await this.readAntigravitySession(e),s=t.allEntries,o;if(t.userEntries.length>0){let d=t.userEntries[0].content??"",m=Oi(d);o=m.length>120?m.substring(0,117)+"...":m||void 0}let i=s.length>0?s[0].created_at??null:null,r=s.length>0?s[s.length-1].created_at??null:null;return{title:o,firstInteraction:i,lastInteraction:r}}async buildAntigravityTurns(e){let s=(await this.readAntigravitySession(e)).allEntries,o=[],i=0;for(let r=0;r<s.length;r++){let l=s[r];if(l.type!=="USER_INPUT"||l.source!=="USER_EXPLICIT")continue;i++;let d=Oi(l.content??""),{assistantResponse:m,toolCalls:p}=Tm(s,r+1);o.push({turnNumber:i,timestamp:l.created_at??null,mode:"cli",userMessage:d,assistantResponse:m,model:null,toolCalls:p,contextReferences:ae(),mcpTools:[],inputTokensEstimate:0,outputTokensEstimate:0,thinkingTokensEstimate:0})}return{turns:o}}async countToolCalls(e){let t=await this.readAntigravitySession(e),s=0;for(let o of t.allEntries)Array.isArray(o.tool_calls)&&(s+=o.tool_calls.length);return s}};var _o=A(require("fs")),it=A(require("path"));var ss=A(require("fs"));var Mm=/\/partition-\d+\.jsonl$/,Pm=["embeddings","index","cache","preferences","settings","config","workspacesessions","globalsessions","api.json"];function cl(n){let e=n.toLowerCase();return Pm.some(t=>e.includes(t))}function po(n){let e=ge(n);return e.includes("/.copilot/jb/")&&Mm.test(e)}function vm(n){return!n||typeof n!="string"?null:n.startsWith("toolu_")?"claude":n.startsWith("call_")?"gpt":null}function xm(n){let e=[],t=new Set;for(let s of n)if(s)try{let o=JSON.parse(s);if(!o||typeof o!="object")continue;e.push(o),o.type==="user.message_rendered"&&typeof o.data?.turnId=="string"&&t.add(o.data.turnId)}catch{}return{parsed:e,renderedTurnIds:t}}function Am(n,e){n.data?.conversationId&&(e.conversationId=String(n.data.conversationId)),n.data?.source&&(e.source=String(n.data.source))}function Em(n,e){e.result.interactions++,typeof n.timestamp=="string"&&e.firstUserTs===null&&(e.firstUserTs=n.timestamp);let t=n.data?.turnId;typeof n.data?.content=="string"&&(typeof t!="string"||!e.renderedTurnIds.has(t))&&(e.inputTokens+=W(n.data.content))}function Dm(n,e){typeof n.data?.text=="string"&&n.data.text&&(e.outputTokens+=W(n.data.text));let t=n.data?.thinking?.text;typeof t=="string"&&t&&(e.result.thinkingTokens+=W(t)),typeof n.timestamp=="string"&&(e.lastTurnTs=n.timestamp)}function Rm(n,e){if(e.sawToolCall=!0,!e.modelFromToolCallId){let i=vm(n.data?.toolCallId);i&&(e.modelFromToolCallId=i)}let t=typeof n.data?.toolName=="string"?n.data.toolName:"unknown",s={toolName:t};if(n.data?.arguments!==void 0)try{s.arguments=JSON.stringify(n.data.arguments)}catch{}e.result.toolCalls.push(s),e.result.toolCounts[t]=(e.result.toolCounts[t]||0)+1;let o=n.data?.toolCallId;typeof o=="string"&&e.toolCallById.set(o,s)}function Im(n,e){let t=n.data?.result?.result,s="";if(Array.isArray(t))for(let r of t)r&&typeof r.value=="string"&&(e.outputTokens+=W(r.value),s+=(s?`
52
- `:"")+r.value);let o=n.data?.toolCallId;if(typeof o!="string")return;let i=e.toolCallById.get(o);i&&(typeof n.data?.success=="boolean"&&(i.success=n.data.success),s&&(i.result=s))}function Um(n,e){switch(n.type){case"partition.created":Am(n,e.result);break;case"user.message":Em(n,e);break;case"user.message_rendered":typeof n.data?.renderedMessage=="string"&&(e.inputTokens+=W(n.data.renderedMessage));break;case"assistant.turn_start":typeof n.data?.model=="string"&&!e.modelFromTurnStart&&(e.modelFromTurnStart=n.data.model);break;case"assistant.message":Dm(n,e);break;case"tool.execution_start":Rm(n,e);break;case"tool.execution_complete":Im(n,e);break;case"assistant.turn_end":typeof n.timestamp=="string"&&(e.lastTurnTs=n.timestamp);break}}function go(n){let e={tokens:0,thinkingTokens:0,actualTokens:0,interactions:0,modelUsage:{},mode:"ask",modelHint:"unknown",firstInteraction:null,lastInteraction:null,source:null,conversationId:null,toolCalls:[],toolCounts:{}},{parsed:t,renderedTurnIds:s}=xm(n.split(/\r?\n/)),o={inputTokens:0,outputTokens:0,firstUserTs:null,lastTurnTs:null,modelFromTurnStart:null,modelFromToolCallId:null,sawToolCall:!1,toolCallById:new Map,renderedTurnIds:s,result:e};for(let i of t)Um(i,o);return e.mode=o.sawToolCall?"agent":"ask",e.modelHint=o.modelFromTurnStart||o.modelFromToolCallId||"unknown",e.tokens=o.inputTokens+o.outputTokens,e.firstInteraction=o.firstUserTs,e.lastInteraction=o.lastTurnTs,e.tokens>0&&e.modelHint!=="unknown"&&(e.modelUsage[e.modelHint]={inputTokens:o.inputTokens,outputTokens:o.outputTokens}),e}function ul(n){let e=n.split(/\r?\n/);for(let t of e)if(t&&t.indexOf("tool.execution_start")!==-1)try{let s=JSON.parse(t);if(s&&s.type==="tool.execution_start")return"agent"}catch{}return"ask"}function Ls(n){return n==null}function Fm(n){if(typeof n!="object"||n===null||Array.isArray(n))return!1;let e=n;return Ls(e.id)||typeof e.id=="string"}function fo(n){if(n===null||typeof n!="object"||Array.isArray(n))return!1;let e=n;return!(!Ls(e.requests)&&!Array.isArray(e.requests)||!Ls(e.mode)&&!Fm(e.mode)||!Ls(e.creationDate)&&typeof e.creationDate!="number"||!Ls(e.lastMessageDate)&&typeof e.lastMessageDate!="number")}function pl(n,e){n==="agent"?e.agent++:n==="edit"?e.edit++:n==="plan"?e.plan++:n==="customAgent"?e.customAgent++:e.ask++}function ji(n,e,t){if(Ze(n)){e.mcpTools.total++;let s=ht(n,t);e.mcpTools.byServer[s]=(e.mcpTools.byServer[s]||0)+1;let o=Ts(n);e.mcpTools.byTool[o]=(e.mcpTools.byTool[o]||0)+1}else e.toolCalls.total++,e.toolCalls.byTool[n]=(e.toolCalls.byTool[n]||0)+1}function Bi(n){let e=n.split("/").pop()?.split("\\").pop()??"",t=e.lastIndexOf(".");return t<=0?e.toLowerCase()||"unknown":e.slice(t+1).toLowerCase()}function Om(n){return{timestamp:n.timestamp,timings:n.result?.timings,waitTime:n.timeSpentWaiting}}function Nm(n){if(!n.agent?.id)return{agentType:null};let e=n.agent.id;return e.includes("edit")?{agentType:"editsAgent"}:e.includes("default")?{agentType:"defaultAgent"}:e.includes("workspace")?{agentType:"workspaceAgent"}:{agentType:"other"}}function Lm(n,e,t){if(!n||typeof n!="object")return;let s=n;if(typeof s.text=="string"&&s.text){let o=(s.text.match(/\n/g)??[]).length+(s.text.endsWith(`
53
- `)?0:1);t.linesAdded+=o,t.languageUsage[e]||(t.languageUsage[e]={linesAdded:0,linesRemoved:0}),t.languageUsage[e].linesAdded+=o}if(s.range&&typeof s.range.startLineNumber=="number"&&typeof s.range.endLineNumber=="number"){let o=Math.max(0,s.range.endLineNumber-s.range.startLineNumber);t.linesRemoved+=o,t.languageUsage[e]||(t.languageUsage[e]={linesAdded:0,linesRemoved:0}),t.languageUsage[e].linesRemoved+=o}}function Gm(n,e,t){for(let s of n)if(Array.isArray(s))for(let o of s)Lm(o,e,t)}function jm(n,e){if(!n.uri)return;let t=n.uri.path||JSON.stringify(n.uri);e.editedFilePaths.push(t);let s=Bi(t),o=n;Array.isArray(o.edits)&&Gm(o.edits,s,e)}function Bm(n){let e={editedFilePaths:[],codeBlocks:0,applies:0,linesAdded:0,linesRemoved:0,languageUsage:{}};if(!n.response||!Array.isArray(n.response))return e;for(let t of n.response)t&&(t.kind==="textEditGroup"&&jm(t,e),t.kind==="codeblockUri"&&(e.codeBlocks++,t.isEdit===!0&&e.applies++));return e}function qm(n,e){for(let[t,s]of Object.entries(e))n[t]||(n[t]={linesAdded:0,linesRemoved:0}),n[t].linesAdded+=s.linesAdded,n[t].linesRemoved+=s.linesRemoved}function gl(n,e,t,s,o,i){let r=0,l=0,d=0,m=0,p={};for(let f of n){if(!f)continue;let _=Om(f);_.timestamp!==void 0&&s.push(_.timestamp),_.timings&&o.push(_.timings),_.waitTime!==void 0&&i.push(_.waitTime);let k=Nm(f);k.agentType!==null&&e[k.agentType]++;let b=Bm(f);for(let M of b.editedFilePaths)t.add(M);l+=b.codeBlocks,r+=b.applies,d+=b.linesAdded,m+=b.linesRemoved,qm(p,b.languageUsage)}return{totalApplies:r,totalCodeBlocks:l,totalLinesAdded:d,totalLinesRemoved:m,languageUsage:p}}function $m(n,e,t){if(!(!n.response||!Array.isArray(n.response))){for(let s of n.response)if(s&&(s.kind==="toolInvocationSerialized"||s.kind==="prepareToolInvocation")){let o=s.toolId||s.toolName||s.invocationMessage?.toolName||s.toolSpecificData?.kind||"unknown";ji(o,e,t)}}}function zm(n,e,t,s){e.requestId&&(pl(t,s.modeUsage),e.agent?.id&&(s.toolCalls.total++,s.toolCalls.byTool[e.agent.id]=(s.toolCalls.byTool[e.agent.id]||0)+1),zi(e,s.contextReferences),$m(e,s,n.toolNameMap))}function Hm(n,e,t){return n.modelId?n.modelId.replace(/^copilot\//,""):n.result?.metadata?.modelId?n.result.metadata.modelId.replace(/^copilot\//,""):n.result?.details?_t(n,t):e}function Wm(n){let e=0;for(let t=1;t<n.length;t++)n[t]!==n[t-1]&&e++;return e}function Vm(n,e,t,s){let o=(e.selectedModel?.identifier||e.selectedModel?.metadata?.id||e.inputState?.selectedModel?.metadata?.id||"gpt-4o").replace(/^copilot\//,""),i=[];for(let l of t)!l||!l.requestId||i.push(Hm(l,o,n.modelPricing));let r=[...new Set(i)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=i.length,s.modelSwitching.switchCount=Wm(i),_e(n.modelPricing,r,i,s)}function Jm(n,e,t){let{effortByRequestId:s,defaultEffort:o,switchCount:i}=rl(n);if(o===null&&s.size===0)return;let r={};for(let[,l]of s)r[l]=(r[l]||0)+1;s.size===0&&o!==null&&(r[o]=e.length),t.thinkingEffort={byEffort:r,switchCount:i,defaultEffort:o}}function Km(n,e,t,s){let o=e.inputState?.mode?Un(e.inputState.mode):"ask";if(e.inputState?.selections&&Array.isArray(e.inputState.selections)){for(let r of e.inputState.selections)if(r&&(r.startLineNumber!==r.endLineNumber||r.startColumn!==r.endColumn)){s.contextReferences.implicitSelection++;break}}let i=e.requests??[];for(let r of i)zm(n,r,o,s);Vm(n,e,i,s),Jm(t,i,s),$i(s)}function Qm(n,e){if(n.agent?.id){let t=n.agent.id.toLowerCase();if(t.includes("edit"))return"edit";if(t.includes("agent"))return"agent"}if(e.mode?.id){let t=e.mode.id.toLowerCase();if(t.includes("agent"))return"agent";if(t.includes("edit"))return"edit"}return"ask"}function Ym(n,e,t){if(n.kind==="toolInvocationSerialized"||n.kind==="prepareToolInvocation"){let s=n.toolId||n.toolName||n.invocationMessage?.toolName||"unknown";ji(s,e,t.toolNameMap)}if(n.kind==="mcpServersStarting"&&n.didStartServerIds)for(let s of n.didStartServerIds)e.mcpTools.total++,e.mcpTools.byServer[s]=(e.mcpTools.byServer[s]||0)+1;n.kind==="inlineReference"&&n.inlineReference&&qi([n],e.contextReferences)}function Xm(n,e,t,s){let o=Qm(e,t);if(o==="agent"?s.modeUsage.agent++:o==="edit"?s.modeUsage.edit++:s.modeUsage.ask++,zi(e,s.contextReferences),e.response&&Array.isArray(e.response))for(let i of e.response)i&&Ym(i,s,n)}function Zm(n,e,t){if(!(!e.requests||!Array.isArray(e.requests)))for(let s of e.requests)Xm(n,s,e,t)}function ep(n,e){for(let t of e.tiers.standard)n.modelSwitching.standardModels.includes(t)||n.modelSwitching.standardModels.push(t);for(let t of e.tiers.premium)n.modelSwitching.premiumModels.includes(t)||n.modelSwitching.premiumModels.push(t);for(let t of e.tiers.unknown)n.modelSwitching.unknownModels.includes(t)||n.modelSwitching.unknownModels.push(t)}function tp(n){let e=n.modelSwitching.modelsPerSession;e.length!==0&&(n.modelSwitching.averageModelsPerSession=e.reduce((t,s)=>t+s,0)/e.length,n.modelSwitching.maxModelsPerSession=Math.max(...e),n.modelSwitching.minModelsPerSession=Math.min(...e),n.modelSwitching.switchingFrequency=e.filter(t=>t>1).length/e.length*100)}function sp(n,e){if(e.modelSwitching||(e.modelSwitching={uniqueModels:[],modelCount:0,switchCount:0,tiers:{standard:[],premium:[],unknown:[]},hasMixedTiers:!1,standardRequests:0,premiumRequests:0,unknownRequests:0,totalRequests:0}),e.modelSwitching.modelCount<=0)return;let t=e.modelSwitching;n.modelSwitching.totalSessions++,n.modelSwitching.modelsPerSession.push(t.modelCount),ep(n,t),t.hasMixedTiers&&n.modelSwitching.mixedTierSessions++,n.modelSwitching.standardRequests+=t.standardRequests||0,n.modelSwitching.premiumRequests+=t.premiumRequests||0,n.modelSwitching.unknownRequests+=t.unknownRequests||0,n.modelSwitching.totalRequests+=t.totalRequests||0,tp(n)}function np(n,e){if(e.thinkingEffort){n.thinkingEffortUsage||(n.thinkingEffortUsage={byEffort:{},sessionCount:0,switchCount:0}),n.thinkingEffortUsage.sessionCount++,n.thinkingEffortUsage.switchCount+=e.thinkingEffort.switchCount;for(let[t,s]of Object.entries(e.thinkingEffort.byEffort))n.thinkingEffortUsage.byEffort[t]=(n.thinkingEffortUsage.byEffort[t]||0)+s}}var op=["file","selection","implicitSelection","symbol","codebase","workspace","terminal","vscode","terminalLastCommand","terminalSelection","clipboard","changes","outputPanel","problemsPanel","pullRequest","copilotInstructions","agentsMd"];function dl(n,e){for(let[t,s]of Object.entries(e))n[t]=(n[t]||0)+s}function ip(n,e){let t=n.contextReferences,s=e.contextReferences;for(let o of op)t[o]+=s[o]||0;t.codeContextLines=(t.codeContextLines||0)+(s.codeContextLines||0),dl(t.byKind,s.byKind),dl(t.byPath,s.byPath)}function rp(n,e){if(e.editScope){n.editScope.singleFileEdits+=e.editScope.singleFileEdits,n.editScope.multiFileEdits+=e.editScope.multiFileEdits,n.editScope.totalEditedFiles+=e.editScope.totalEditedFiles;let t=n.editScope.singleFileEdits+n.editScope.multiFileEdits;n.editScope.avgFilesPerSession=t>0?n.editScope.totalEditedFiles/t:0}if(e.applyUsage&&(n.applyUsage.totalApplies+=e.applyUsage.totalApplies,n.applyUsage.totalCodeBlocks+=e.applyUsage.totalCodeBlocks,n.applyUsage.applyRate=n.applyUsage.totalCodeBlocks>0?n.applyUsage.totalApplies/n.applyUsage.totalCodeBlocks*100:0),e.sessionDuration){n.sessionDuration.totalDurationMs+=e.sessionDuration.totalDurationMs;let t=n.sessions;if(t>0){n.sessionDuration.avgDurationMs=n.sessionDuration.totalDurationMs/t;let s=n.sessionDuration.avgFirstProgressMs*(t-1);n.sessionDuration.avgFirstProgressMs=(s+e.sessionDuration.avgFirstProgressMs)/t;let o=n.sessionDuration.avgTotalElapsedMs*(t-1);n.sessionDuration.avgTotalElapsedMs=(o+e.sessionDuration.avgTotalElapsedMs)/t;let i=n.sessionDuration.avgWaitTimeMs*(t-1);n.sessionDuration.avgWaitTimeMs=(i+e.sessionDuration.avgWaitTimeMs)/t}}if(e.conversationPatterns){n.conversationPatterns.multiTurnSessions+=e.conversationPatterns.multiTurnSessions,n.conversationPatterns.singleTurnSessions+=e.conversationPatterns.singleTurnSessions,n.conversationPatterns.maxTurnsInSession=Math.max(n.conversationPatterns.maxTurnsInSession,e.conversationPatterns.maxTurnsInSession);let t=n.conversationPatterns.multiTurnSessions+n.conversationPatterns.singleTurnSessions;if(t>0){let o=n.conversationPatterns.avgTurnsPerSession*(t-1)+e.conversationPatterns.avgTurnsPerSession;n.conversationPatterns.avgTurnsPerSession=o/t}}e.agentTypes&&(n.agentTypes.editsAgent+=e.agentTypes.editsAgent,n.agentTypes.defaultAgent+=e.agentTypes.defaultAgent,n.agentTypes.workspaceAgent+=e.agentTypes.workspaceAgent,n.agentTypes.other+=e.agentTypes.other),np(n,e)}function ho(n,e){n.toolCalls.total+=e.toolCalls.total;for(let[t,s]of Object.entries(e.toolCalls.byTool))n.toolCalls.byTool[t]=(n.toolCalls.byTool[t]||0)+s;if(e.toolCalls.outputTokensByTool){n.toolCalls.outputTokensByTool||(n.toolCalls.outputTokensByTool={});for(let[t,s]of Object.entries(e.toolCalls.outputTokensByTool))n.toolCalls.outputTokensByTool[t]=(n.toolCalls.outputTokensByTool[t]||0)+s}n.modeUsage.ask+=e.modeUsage.ask,n.modeUsage.edit+=e.modeUsage.edit,n.modeUsage.agent+=e.modeUsage.agent,n.modeUsage.plan+=e.modeUsage.plan,n.modeUsage.customAgent+=e.modeUsage.customAgent,n.modeUsage.cli+=e.modeUsage.cli,ip(n,e),n.mcpTools.total+=e.mcpTools.total;for(let[t,s]of Object.entries(e.mcpTools.byServer))n.mcpTools.byServer[t]=(n.mcpTools.byServer[t]||0)+s;for(let[t,s]of Object.entries(e.mcpTools.byTool))n.mcpTools.byTool[t]=(n.mcpTools.byTool[t]||0)+s;sp(n,e),rp(n,e)}var ap=[[/#file/gi,"file"],[/#selection/gi,"selection"],[/#symbol/gi,"symbol"],[/#sym(?![:\w])/gi,"symbol"],[/#codebase/gi,"codebase"],[/#terminalLastCommand/gi,"terminalLastCommand"],[/#terminalSelection/gi,"terminalSelection"],[/#clipboard/gi,"clipboard"],[/#changes/gi,"changes"],[/#outputPanel/gi,"outputPanel"],[/#problemsPanel\b/gi,"problemsPanel"],[/#pr\b/gi,"pullRequest"],[/#pullRequest\b/gi,"pullRequest"],[/@workspace/gi,"workspace"],[/@terminal/gi,"terminal"],[/@vscode/gi,"vscode"]];function fl(n,e){for(let[t,s]of ap){let o=n.match(t);o&&(e[s]+=o.length)}}function lp(n){let e=n.kind;return e==="reference"&&n.reference?n.reference:e==="inlineReference"&&n.inlineReference?n.inlineReference:null}function cp(n,e,t){e.endsWith("/.github/copilot-instructions.md")||e.includes(".github/copilot-instructions.md")?t.copilotInstructions++:e.endsWith("/agents.md")||e.match(/\/agents\.md$/i)?t.agentsMd++:e.endsWith(".instructions.md")||e.includes(".instructions.md")?t.copilotInstructions++:t.file++;let s=n.length>100?"..."+n.substring(n.length-97):n;t.byPath[s]=(t.byPath[s]||0)+1}function up(n,e,t){let s=n.fsPath||n.path;typeof s=="string"&&cp(s,re(s),t);let o=n.name;if(typeof o=="string"&&e==="reference"){t.symbol++;let i=`#sym:${o}`;t.byPath[i]=(t.byPath[i]||0)+1}}function qi(n,e){if(Array.isArray(n))for(let t of n){if(!t||typeof t!="object")continue;let s=t,o=s.kind;if(typeof o=="string"&&(e.byKind[o]=(e.byKind[o]||0)+1),o==="pullRequest"){e.pullRequest++;continue}let i=lp(s);i&&up(i,o,e)}}function dp(n,e){let t=n.kind;if(typeof t=="string"&&(e.byKind[t]=(e.byKind[t]||0)+1),t==="image"&&(e.byKind["copilot.image"]=(e.byKind["copilot.image"]||0)+1),t==="file"&&e.file++,t==="generic"&&typeof n.name=="string"&&n.name.startsWith("sym:")){e.symbol++;let s=`#${n.name}`;e.byPath[s]=(e.byPath[s]||0)+1}}function hl(n,e){if(!n||typeof n!="object")return;let t=n;if(Array.isArray(t.variables))for(let s of t.variables)!s||typeof s!="object"||dp(s,e)}function $i(n){let e=n.modeUsage.ask+n.modeUsage.edit+n.modeUsage.agent+n.modeUsage.cli;n.conversationPatterns={multiTurnSessions:e>1?1:0,singleTurnSessions:e===1?1:0,avgTurnsPerSession:e,maxTurnsInSession:e}}function mp(n,e){if(n.kind!=="dynamic")return;let t=n.data?.range,s=typeof t?.startLineNumber=="number"?t.startLineNumber:0,o=typeof t?.endLineNumber=="number"?t.endLineNumber:0;o>=s&&o>0&&(e.codeContextLines=(e.codeContextLines||0)+(o-s+1))}function pp(n,e){if(n.kind!=="prompt")return;typeof n.slashPromptCommand?.command=="string"&&(e.byKind.prompt=(e.byKind.prompt||0)+1)}function gp(n,e){if(!n||typeof n!="object")return;let t=n;typeof t.text=="string"&&fl(t.text,e),mp(t,e),pp(t,e)}function fp(n,e){typeof n.text=="string"&&fl(n.text,e);let t=n.parts;if(Array.isArray(t))for(let s of t)gp(s,e)}function zi(n,e){if(!n||typeof n!="object")return;let t=n,s=t.message;s&&typeof s=="object"&&fp(s,e);let o=t.contentReferences;Array.isArray(o)&&qi(o,e);let i=t.variableData;i!==void 0&&hl(i,e)}async function yo(n){try{let t=(await ss.promises.readFile(n,"utf8")).trim().split(`
54
- `),s=[];for(let o of t)if(o.trim())try{s.push(JSON.parse(o))}catch{}return s}catch{return[]}}function _e(n,e,t,s){let o=[],i=[],r=[];for(let p of e){let f=Nt(p,n);f==="standard"?o.push(p):f==="premium"?i.push(p):r.push(p)}s.modelSwitching.tiers={standard:o,premium:i,unknown:r},s.modelSwitching.hasMixedTiers=o.length>0&&i.length>0;let l=0,d=0,m=0;for(let p of t){let f=Nt(p,n);f==="standard"?l++:f==="premium"?d++:m++}s.modelSwitching.standardRequests=l,s.modelSwitching.premiumRequests=d,s.modelSwitching.unknownRequests=m}function Li(n,e,t){let s=Nt(n,t);s==="standard"?e.standard++:s==="premium"?e.premium++:e.unknown++}function yl(n,e){e.modelSwitching.standardRequests=n.standard,e.modelSwitching.premiumRequests=n.premium,e.modelSwitching.unknownRequests=n.unknown,e.modelSwitching.totalRequests=n.standard+n.premium+n.unknown}function hp(n,e){let t=[],s=[],o=[];for(let i of n){let r=Nt(i,e);r==="standard"?t.push(i):r==="premium"?s.push(i):o.push(i)}return{standard:t,premium:s,unknown:o}}function yp(n,e,t){if(!n.requests||!Array.isArray(n.requests))return;let s=null,o=0,i={standard:0,premium:0,unknown:0};for(let r of n.requests){let l=_t(r,t);s&&l!==s&&o++,s=l,Li(l,i,t)}e.modelSwitching.switchCount=o,yl(i,e)}function _p(n){if(n.kind!==0)return null;let e=n.v,t=e?.selectedModel?.identifier||e?.selectedModel?.metadata?.id||e?.inputState?.selectedModel?.metadata?.id;return t?t.replace(/^copilot\//,""):null}function Cp(n){if(n.kind!==2||n.k?.[0]!=="selectedModel")return null;let e=n.v,t=e?.identifier||e?.metadata?.id;return t?t.replace(/^copilot\//,""):null}function bp(n,e){let t=_p(n);if(t)return t;let s=Cp(n);return s||(n.type==="session.start"&&typeof n.data?.selectedModel=="string"?n.data.selectedModel:n.type==="session.model_change"&&typeof n.data?.newModel=="string"?n.data.newModel:e)}function kp(n,e,t){let s=n;return s.modelId?s.modelId.replace(/^copilot\//,""):s.result?.metadata?.modelId?s.result.metadata.modelId.replace(/^copilot\//,""):s.result?.details?_t(n,t):e}function Sp(n,e,t,s){if(n.type==="user.message"){Li(n.model||t,e,s);return}if(!(n.kind!==2||n.k?.[0]!=="requests"||!Array.isArray(n.v)))for(let o of n.v)Li(kp(o,t,s),e,s)}function wp(n,e,t){let s={standard:0,premium:0,unknown:0},o="unknown";for(let i of n)if(i.trim())try{let r=JSON.parse(i);o=bp(r,o),Sp(r,s,o,t)}catch{}yl(s,e)}async function _l(n,e,t,s,o){try{let i=await Hi(n,e,s,o),r=i?Object.keys(i).length:0;if(!i||r===0)return;let l=Object.keys(i);t.modelSwitching.uniqueModels=l,t.modelSwitching.modelCount=l.length;let d=hp(l,n.modelPricing);t.modelSwitching.tiers=d,t.modelSwitching.hasMixedTiers=d.standard.length>0&&d.premium.length>0;let m=s??await ss.promises.readFile(e,"utf8");if(Zt(m))return;if(e.endsWith(".jsonl")||nt(m))wp(m.trim().split(`
55
- `),t,n.modelPricing);else{let f=o!==void 0?o:JSON.parse(m);if(!fo(f)){n.warn(`Unexpected session format in ${e}`);return}yp(f,t,n.modelPricing)}}catch(i){n.warn(`Error calculating model switching for ${e}: ${i}`)}}function Cl(n,e){for(let[t,s]of Object.entries(e))n[t]||(n[t]={linesAdded:0,linesRemoved:0}),n[t].linesAdded+=s.linesAdded,n[t].linesRemoved+=s.linesRemoved}function Tp(n,e){let t=!1;if(n.length>0)try{let i=JSON.parse(n[0]);i&&typeof i.kind=="number"&&(t=!0)}catch{}if(!t)return;let s={};for(let i of n)try{s=Fs(s,JSON.parse(i))}catch{}s.creationDate!==void 0&&e.timestamps.push(s.creationDate),s.lastMessageDate!==void 0&&e.timestamps.push(s.lastMessageDate);let o=gl(s.requests||[],e.agentCounts,e.editedFiles,e.timestamps,e.timingsData,e.waitTimes);e.totalApplies=o.totalApplies,e.totalCodeBlocks=o.totalCodeBlocks,e.totalLinesAdded=o.totalLinesAdded,e.totalLinesRemoved=o.totalLinesRemoved,Cl(e.allLanguageUsage,o.languageUsage)}function Mp(n,e,t,s){if(!fo(t))return n.warn(`Unexpected session format in ${e}`),!1;t.creationDate&&s.timestamps.push(t.creationDate),t.lastMessageDate&&s.timestamps.push(t.lastMessageDate);let o=gl(t.requests??[],s.agentCounts,s.editedFiles,s.timestamps,s.timingsData,s.waitTimes);return s.totalApplies=o.totalApplies,s.totalCodeBlocks=o.totalCodeBlocks,s.totalLinesAdded=o.totalLinesAdded,s.totalLinesRemoved=o.totalLinesRemoved,Cl(s.allLanguageUsage,o.languageUsage),!0}function Pp(n,e){let t=e.editedFiles.size>0?1:0;n.editScope={singleFileEdits:e.editedFiles.size===1?1:0,multiFileEdits:e.editedFiles.size>1?1:0,totalEditedFiles:e.editedFiles.size,avgFilesPerSession:t>0?e.editedFiles.size/t:0,linesAdded:e.totalLinesAdded,linesRemoved:e.totalLinesRemoved,...Object.keys(e.allLanguageUsage).length>0?{languageUsage:e.allLanguageUsage}:{}},n.applyUsage={totalApplies:e.totalApplies,totalCodeBlocks:e.totalCodeBlocks,applyRate:e.totalCodeBlocks>0?e.totalApplies/e.totalCodeBlocks*100:0};let s=e.timestamps.length>=2?Math.max(...e.timestamps)-Math.min(...e.timestamps):0,o=e.timingsData.length>0?e.timingsData.reduce((l,d)=>l+(d.firstProgress||0),0)/e.timingsData.length:0,i=e.timingsData.length>0?e.timingsData.reduce((l,d)=>l+(d.totalElapsed||0),0)/e.timingsData.length:0,r=e.waitTimes.length>0?e.waitTimes.reduce((l,d)=>l+d,0)/e.waitTimes.length:0;n.sessionDuration={totalDurationMs:s,avgDurationMs:s,avgFirstProgressMs:o,avgTotalElapsedMs:i,avgWaitTimeMs:r},$i(n),n.agentTypes=e.agentCounts}function ml(n){return n.length>0?(n.match(/\n/g)??[]).length+(n.endsWith(`
56
- `)?0:1):0}function vp(n,e){let t=n.data?.toolName,s=n.data?.arguments??{},o=n.data?.toolCallId,i=s.path;if(typeof i!="string"||!i||typeof o!="string"||t!=="edit"&&t!=="create")return;let r=t==="edit"?s.new_str:s.file_text,l=t==="edit"?s.old_str:void 0,d=typeof r=="string"?r:"",m=typeof l=="string"?l:"";e.set(o,{filePath:i,added:ml(d),removed:ml(m)})}function xp(n,e,t){if(n.data?.success!==!0)return;let s=n.data?.toolCallId;if(typeof s!="string")return;let o=e.get(s);if(!o)return;e.delete(s),t.totalLinesAdded+=o.added,t.totalLinesRemoved+=o.removed,t.editedFiles.add(o.filePath);let i=Bi(o.filePath);t.allLanguageUsage[i]||(t.allLanguageUsage[i]={linesAdded:0,linesRemoved:0}),t.allLanguageUsage[i].linesAdded+=o.added,t.allLanguageUsage[i].linesRemoved+=o.removed}function Ap(n,e){let t=new Map;for(let s of n)try{let o=JSON.parse(s);o.type==="tool.execution_start"?vp(o,t):o.type==="tool.execution_complete"&&xp(o,t,e)}catch{}}async function Gi(n,e,t,s,o){try{let i=s??await ss.promises.readFile(e,"utf8");if(Zt(i))return;let r=e.endsWith(".jsonl")||nt(i),l={totalApplies:0,totalCodeBlocks:0,totalLinesAdded:0,totalLinesRemoved:0,allLanguageUsage:{},editedFiles:new Set,timestamps:[],timingsData:[],waitTimes:[],agentCounts:{editsAgent:0,defaultAgent:0,workspaceAgent:0,other:0}};if(r){let d=i.trim().split(`
57
- `).filter(m=>m.trim());Tp(d,l),bl(d)||Ap(d,l)}else{let d=o!==void 0?o:JSON.parse(i);if(!Mp(n,e,d,l))return}Pp(t,l)}catch(i){n.warn(`Error tracking enhanced metrics from ${e}: ${i}`)}}function ce(){return{toolCalls:{total:0,byTool:{}},modeUsage:{ask:0,edit:0,agent:0,plan:0,customAgent:0,cli:0},contextReferences:ae(),mcpTools:{total:0,byServer:{},byTool:{}},modelSwitching:{uniqueModels:[],modelCount:0,switchCount:0,tiers:{standard:[],premium:[],unknown:[]},hasMixedTiers:!1,standardRequests:0,premiumRequests:0,unknownRequests:0,totalRequests:0}}}function bl(n){if(n.length===0)return!1;try{let e=JSON.parse(n[0]);return e&&typeof e.kind=="number"}catch{return!1}}function Ep(n,e,t){let s={};for(let o of e)try{let i=JSON.parse(o);s=Fs(s,i)}catch{}Km(n,s,e,t)}function kl(n,e){for(let t of n){let s=t;if(s&&(s.startLineNumber!==s.endLineNumber||s.startColumn!==s.endColumn)){e.implicitSelection++;break}}}function Dp(n,e,t){n.kind!==0||!n.v?.inputState?.mode||(t.sessionMode=Un(n.v.inputState.mode),Array.isArray(n.v?.inputState?.selections)&&kl(n.v.inputState.selections,e.contextReferences))}function Rp(n,e,t){n.kind===1&&(n.k?.includes("mode")&&n.v&&(t.sessionMode=Un(n.v)),n.k?.includes("selections")&&Array.isArray(n.v)&&kl(n.v,e.contextReferences),n.k?.includes("contentReferences")&&Array.isArray(n.v)&&qi(n.v,e.contextReferences),n.k?.includes("variableData")&&n.v&&hl(n.v,e.contextReferences))}function Sl(n){return n.toolId||n.toolName||n.invocationMessage?.toolName||n.toolSpecificData?.kind||"unknown"}function Ip(n,e){for(let t of n)if(t&&(t.kind==="toolInvocationSerialized"||t.kind==="prepareToolInvocation")){e.toolCalls.total++;let s=Sl(t);e.toolCalls.byTool[s]=(e.toolCalls.byTool[s]||0)+1}}function Up(n,e){for(let t of n){let s=t;if(s&&s.kind==="toolInvocationSerialized"){e.toolCalls.total++;let o=Sl(s);e.toolCalls.byTool[o]=(e.toolCalls.byTool[o]||0)+1}}}function Fp(n,e,t){n.requestId&&pl(t,e.modeUsage),n.agent?.id&&(e.toolCalls.total++,e.toolCalls.byTool[n.agent.id]=(e.toolCalls.byTool[n.agent.id]||0)+1),zi(n,e.contextReferences),n.response&&Array.isArray(n.response)&&Ip(n.response,e)}function Op(n,e,t,s){if(n.kind===2){if(n.k?.[0]==="requests"&&Array.isArray(n.v))for(let o of n.v)Fp(o,e,t.sessionMode);n.k?.includes("response")&&Array.isArray(n.v)&&Up(n.v,e)}}function Np(n,e){typeof n.selectedModel=="string"&&(e.defaultModel=n.selectedModel),typeof n.reasoningEffort=="string"&&(e.defaultEffort=n.reasoningEffort)}function Lp(n,e){n==="agent"?e.modeUsage.agent++:n==="ask"?e.modeUsage.ask++:e.modeUsage.cli++}function Gp(n,e){if(Array.isArray(n))for(let t of n){if(!t||typeof t!="object")continue;let s=t.displayName;typeof s=="string"&&(/clipboard\.png$/i.test(s)?e.byKind["copilot.image"]=(e.byKind["copilot.image"]||0)+1:(/^\d+ lines$/.test(s)||/\.[a-z0-9]+$/i.test(s))&&e.file++)}}function jp(n,e,t,s){if(n.type==="session.start"&&n.data&&Np(n.data,e),n.type==="session.model_change"&&typeof n.data?.newModel=="string"&&(e.defaultModel=n.data.newModel),n.type==="user.message"){e.requestCount++;let o=typeof n.data?.reasoningEffort=="string"?n.data.reasoningEffort:e.defaultEffort;o&&(e.effortByRequest[o]=(e.effortByRequest[o]||0)+1),Gp(n.data?.attachments,t.contextReferences),Lp(s,t)}}function Bp(n,e,t){if(n.type!=="tool.call"&&n.type!=="tool.result"&&n.type!=="tool.execution_start")return;let s=n.data?.toolName||n.toolName||"unknown";ji(s,e,t)}function qp(n,e){if(n.type!=="mcp.tool.call"&&!n.data?.mcpServer)return;e.mcpTools.total++;let t=n.data?.mcpServer||"unknown",s=n.data?.toolName||n.toolName||"unknown";e.mcpTools.byServer[t]=(e.mcpTools.byServer[t]||0)+1;let o=Ts(s);e.mcpTools.byTool[o]=(e.mcpTools.byTool[o]||0)+1}function $p(n,e,t){Bp(n,e,t),qp(n,e)}function Ni(n){if(!n)return 0;let e=n.split(`
58
- `);return e[e.length-1]===""&&e.pop(),e.length}function wl(n){n.editScope||(n.editScope={singleFileEdits:0,multiFileEdits:0,totalEditedFiles:0,avgFilesPerSession:0,linesAdded:0,linesRemoved:0})}function zp(n,e){let{toolCallId:t,toolName:s,arguments:o}=n.data??{};t&&s&&e.pendingToolCalls.set(t,{toolName:s,args:o??{}})}function Hp(n,e,t){let s=n.toolName==="edit"?Ni(n.args.new_str??""):Ni(n.args.file_text??""),o=n.toolName==="edit"?Ni(n.args.old_str??""):0;wl(t),t.editScope.linesAdded=(t.editScope.linesAdded??0)+s,t.editScope.linesRemoved=(t.editScope.linesRemoved??0)+o;let i=n.args.path??"";e.editedFilePaths.add(i);let r=Bi(i);t.editScope.languageUsage||(t.editScope.languageUsage={}),t.editScope.languageUsage[r]||(t.editScope.languageUsage[r]={linesAdded:0,linesRemoved:0}),t.editScope.languageUsage[r].linesAdded+=s,t.editScope.languageUsage[r].linesRemoved+=o}function Wp(n){return typeof n=="string"?n:Array.isArray(n)?n.filter(e=>e?.type==="text"&&typeof e.text=="string").map(e=>e.text).join(""):""}function Vp(n,e,t){let{toolCallId:s,success:o,result:i}=n.data??{},r=s?e.pendingToolCalls.get(s):void 0;if(s&&e.pendingToolCalls.delete(s),!r||(o&&(r.toolName==="edit"||r.toolName==="create")&&Hp(r,e,t),!i?.content||Ze(r.toolName)))return;let l=Wp(i.content);if(!l)return;let d=W(l);t.toolCalls.outputTokensByTool||(t.toolCalls.outputTokensByTool={}),t.toolCalls.outputTokensByTool[r.toolName]=(t.toolCalls.outputTokensByTool[r.toolName]||0)+d}function Jp(n,e,t){n.type==="tool.execution_start"?zp(n,e):n.type==="tool.execution_complete"&&Vp(n,e,t)}function Kp(n,e){if(n.editedFilePaths.size===0)return;wl(e);let t=n.editedFilePaths.size;e.editScope.totalEditedFiles=t,e.editScope.singleFileEdits=t===1?1:0,e.editScope.multiFileEdits=t>1?1:0,e.editScope.avgFilesPerSession=t}function Qp(n,e,t,s,o,i){Dp(n,e,t),Rp(n,e,t),Op(n,e,t,i),jp(n,s,e,o),$p(n,e,i),Jp(n,s,e)}function Yp(n,e){if(n.defaultEffort===null&&Object.keys(n.effortByRequest).length===0)return;let t=Object.keys(n.effortByRequest).length>0?n.effortByRequest:n.defaultEffort!==null?{[n.defaultEffort]:n.requestCount}:{};e.thinkingEffort={byEffort:t,switchCount:0,defaultEffort:n.defaultEffort}}async function Xp(n,e,t,s,o){let i={sessionMode:"ask"},r={defaultModel:"unknown",defaultEffort:null,requestCount:0,effortByRequest:{},pendingToolCalls:new Map,editedFilePaths:new Set},d=po(e)?ul(s):null;for(let m of t)if(m.trim())try{let p=JSON.parse(m);Qp(p,o,i,r,d,n.toolNameMap)}catch{}Kp(r,o),Yp(r,o),await _l(n,e,o,s),await Gi(n,e,o,s),$i(o)}async function Tl(n,e,t,s){let o=ce();try{let i=n.ecosystems.find(d=>d.handles(e));if(i&&Ma(i))return i.analyzeUsage(e,{modelPricing:n.modelPricing,toolNameMap:n.toolNameMap});if(e.startsWith("windsurf://"))return o;let r=t??await ss.promises.readFile(e,"utf8");if(e.endsWith(".jsonl")||nt(r)){let d=r.trim().split(`
59
- `).filter(m=>m.trim());if(bl(d))return Ep(n,d,o),await Gi(n,e,o,r),o;await Xp(n,e,d,r,o)}else{let d=s!==void 0?s:JSON.parse(r);if(!fo(d))return n.warn(`Unexpected session format in ${e}`),o;Zm(n,d,o),await _l(n,e,o,r,s),await Gi(n,e,o,r,s)}}catch(i){n.warn(`Error analyzing session usage from ${e}: ${i}`)}return o}function Ml(n,e,t){if(n.result?.usage){let s=n.result.usage;return t[e].inputTokens+=typeof s.promptTokens=="number"?s.promptTokens:0,t[e].outputTokens+=typeof s.completionTokens=="number"?s.completionTokens:0,!0}return typeof n.result?.promptTokens=="number"&&typeof n.result?.outputTokens=="number"?(t[e].inputTokens+=n.result.promptTokens,t[e].outputTokens+=n.result.outputTokens,!0):n.result?.metadata&&typeof n.result.metadata.promptTokens=="number"&&typeof n.result.metadata.outputTokens=="number"?(t[e].inputTokens+=n.result.metadata.promptTokens,t[e].outputTokens+=n.result.metadata.outputTokens,!0):!1}function Pl(n,e,t,s){for(let o of n){let i=Yt(o);if(i){let r=i.modelName||e;t[r]||(t[r]={inputTokens:0,outputTokens:0}),i.prompt&&(t[r].inputTokens+=W(i.prompt,r,s)),i.result&&(t[r].outputTokens+=W(i.result,r,s))}}}function Zp(n,e,t){t[n]||(t[n]={inputTokens:0,outputTokens:0}),t[n].inputTokens+=typeof e.inputTokens=="number"?e.inputTokens:0,t[n].outputTokens+=typeof e.outputTokens=="number"?e.outputTokens:0;let s=typeof e.cacheReadTokens=="number"?e.cacheReadTokens:0,o=typeof e.cacheWriteTokens=="number"?e.cacheWriteTokens:0;s>0&&(t[n].cachedReadTokens=(t[n].cachedReadTokens??0)+s),o>0&&(t[n].cacheCreationTokens=(t[n].cacheCreationTokens??0)+o)}function eg(n,e){for(let[t,s]of Object.entries(n))s?.usage&&Zp(t,s.usage,e)}function tg(n,e,t,s,o){let i=typeof n.data?.outputTokens=="number"?n.data.outputTokens:0;i>0?(t.cliRealOutputByModel||(t.cliRealOutputByModel={}),t.cliRealOutputByModel[e]=(t.cliRealOutputByModel[e]??0)+i):n.data?.content&&(s[e].outputTokens+=W(n.data.content,e,o.tokenEstimators))}function sg(n,e){n.data?.modelMetrics&&(e.cliShutdownModelUsage||(e.cliShutdownModelUsage={}),eg(n.data.modelMetrics,e.cliShutdownModelUsage))}function ng(n,e,t,s,o){if(n.type==="session.shutdown")sg(n,t);else if(n.type==="user.message"&&n.data?.content)s[e].inputTokens+=W(n.data.content,e,o.tokenEstimators);else if(n.type==="assistant.message")tg(n,e,t,s,o);else if(n.type==="tool.execution_start")t.totalCliToolCalls++;else if(n.type==="tool.execution_complete"){let i=n.data?.result?.content||n.data?.result?.detailedContent;i&&(s[e].inputTokens+=W(String(i),e,o.tokenEstimators))}}function og(n){return n.kind!==0?null:n.v?.selectedModel?.identifier||n.v?.selectedModel?.metadata?.id||n.v?.inputState?.selectedModel?.metadata?.id||null}function ig(n){return n.kind!==2||n.k?.[0]!=="selectedModel"?null:n.v?.identifier||n.v?.metadata?.id||null}function rg(n,e){if(n.type==="session.start"&&typeof n.data?.selectedModel=="string"){e.defaultModel=n.data.selectedModel;return}if(n.type==="session.model_change"&&typeof n.data?.newModel=="string"){e.defaultModel=n.data.newModel;return}let t=og(n);t&&(e.defaultModel=t.replace(/^copilot\//,""));let s=ig(n);s&&(e.defaultModel=s.replace(/^copilot\//,""))}function ag(n,e,t,s){typeof n.kind=="number"&&(e.isDeltaBased=!0,e.sessionState=Fs(e.sessionState,n)),rg(n,e);let o=n.data?.model||n.model||e.defaultModel;t[o]||(t[o]={inputTokens:0,outputTokens:0}),e.isDeltaBased||ng(n,o,e,t,s)}function lg(n,e,t){let s={defaultModel:"unknown",isDeltaBased:!1,sessionState:{},cliShutdownModelUsage:null,cliRealOutputByModel:null,totalCliToolCalls:0};for(let o of n)if(o.trim())try{let i=JSON.parse(o);ag(i,s,e,t)}catch{}return s}function cg(n,e,t,s){if(n.message?.text&&(t[e].inputTokens+=W(n.message.text,e,s.tokenEstimators)),n.response&&Array.isArray(n.response))for(let o of n.response){let{text:i}=Xt(o);i&&(t[e].outputTokens+=W(i,e,s.tokenEstimators))}}function ug(n,e,t,s){if(!n.requestId)return;let o=e;n.modelId?o=n.modelId.replace(/^copilot\//,""):n.result?.metadata?.modelId?o=n.result.metadata.modelId.replace(/^copilot\//,""):n.result?.details&&(o=_t(n,s.modelPricing)),t[o]||(t[o]={inputTokens:0,outputTokens:0}),Ml(n,o,t)||cg(n,o,t,s),n.response&&Array.isArray(n.response)&&Pl(n.response,o,t,s.tokenEstimators)}function dg(n,e,t){if(!(!n.isDeltaBased||!n.sessionState.requests||!Array.isArray(n.sessionState.requests)))for(let s of n.sessionState.requests)s&&ug(s,n.defaultModel,e,t)}function mg(n,e,t){let s=Ii(n);for(let[o,i]of s){let r=e.sessionState.requests?.[o];if(!r||r.result?.usage||typeof r.result?.promptTokens=="number"||r.result?.metadata&&typeof r.result.metadata.promptTokens=="number")continue;let l=e.defaultModel;r.modelId&&(l=r.modelId.replace(/^copilot\//,"")),t[l]||(t[l]={inputTokens:0,outputTokens:0}),t[l].inputTokens+=i.promptTokens,t[l].outputTokens+=i.outputTokens}}function pg(n,e){let t=Math.max(1,Math.round(n.totalCliToolCalls/2)),s=Math.max(1,(t+1)/2),o={};for(let[i,r]of Object.entries(n.cliRealOutputByModel)){let l=e[i]?.inputTokens??0;o[i]={inputTokens:Math.round(l*s),outputTokens:r}}return o}function gg(n,e,t){let s=lg(n,e,t);return!s.isDeltaBased&&s.cliShutdownModelUsage?s.cliShutdownModelUsage:!s.isDeltaBased&&s.cliRealOutputByModel?pg(s,e):(dg(s,e,t),mg(n,s,e),null)}function fg(n,e,t,s){if(n.message?.parts)for(let o of n.message.parts)o.text&&(t[e].inputTokens+=W(o.text,e,s.tokenEstimators));if(n.response&&Array.isArray(n.response))for(let o of n.response){let{text:i}=Xt(o);i&&(t[e].outputTokens+=W(i,e,s.tokenEstimators))}}function hg(n,e,t){let s=_t(n,t.modelPricing);e[s]||(e[s]={inputTokens:0,outputTokens:0}),Ml(n,s,e)||fg(n,s,e,t),n.response&&Array.isArray(n.response)&&Pl(n.response,s,e,t.tokenEstimators)}function yg(n,e,t){if(!(!n.requests||!Array.isArray(n.requests)))for(let s of n.requests)hg(s,e,t)}async function Hi(n,e,t,s){let o={};if(n.ecosystems){let i=n.ecosystems.find(r=>r.handles(e));if(i)return i.getModelUsage(e)}if(e.startsWith("windsurf://"))return o;try{let i=t??await ss.promises.readFile(e,"utf8");if(Zt(i))return o;if(e.endsWith(".jsonl")||nt(i)){let d=i.trim().split(`
60
- `);return gg(d,o,n)??o}let l=s!==void 0?s:JSON.parse(i);if(!fo(l))return n.warn(`Unexpected session format in ${e}`),o;yg(l,o,n)}catch(i){n.warn(`Error getting model usage from ${e}: ${i}`)}return o}var vl=A(require("fs"));async function ot(n){try{return await vl.promises.access(n),!0}catch{return!1}}var Gs=class{constructor(e){this.openCode=e}openCode;id="opencode";displayName="OpenCode";handles(e){return this.openCode.isOpenCodeSessionFile(e)}getBackingPath(e){return this.openCode.isOpenCodeDbSession(e)?it.join(this.openCode.getOpenCodeDataDir(),"opencode.db"):e}async stat(e){return this.openCode.statSessionFile(e)}async getTokens(e){let t=await this.openCode.getTokensFromOpenCodeSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return this.openCode.countOpenCodeInteractions(e)}async getModelUsage(e){return this.openCode.getOpenCodeModelUsage(e)}async getMeta(e){let t=[],s,o,i=await this.readOpenCodeSessionData(e);i&&(s=i.title||i.slug,o=i.directory||void 0,i.time?.created&&t.push(i.time.created),i.time?.updated&&t.push(i.time.updated));let r=await this.openCode.getOpenCodeMessagesForSession(e);for(let l of r)l.time?.created&&t.push(l.time.created),l.time?.completed&&t.push(l.time.completed);return t.sort((l,d)=>l-d),{title:s,firstInteraction:t.length>0?new Date(t[0]).toISOString():null,lastInteraction:t.length>0?new Date(t[t.length-1]).toISOString():null,workspacePath:o}}async readOpenCodeSessionData(e){let t=this.openCode.getOpenCodeSessionId(e);return this.openCode.isOpenCodeDbSession(e)&&t?this.openCode.readOpenCodeDbSession(t):At(async()=>JSON.parse(await _o.promises.readFile(e,"utf8")),null,`openCodeAdapter getMeta readFile(${e})`)}getEditorRoot(e){return this.openCode.getOpenCodeDataDir()}async discover(e){let t=this.getCandidatePaths(),s=[],o=this.openCode.getOpenCodeDataDir(),i=it.join(o,"storage","session"),r=it.join(o,"opencode.db");if(e(`\u{1F4C1} Checking OpenCode JSON path: ${i}`),e(`\u{1F4C1} Checking OpenCode DB path: ${r}`),await ot(i)){let m=async f=>{let _=[];try{_=await _o.promises.readdir(f,{withFileTypes:!0})}catch(k){console.error(`[openCodeAdapter] Failed to read dir ${f}:`,k)}for(let k of _)if(k.isDirectory())await m(it.join(f,k.name));else if(k.name.startsWith("ses_")&&k.name.endsWith(".json")){let b=it.join(f,k.name);try{(await _o.promises.stat(b)).size>0&&s.push(b)}catch(M){console.error(`[openCodeAdapter] Failed to stat ${b}:`,M)}}};await m(i);let p=s.length;p>0&&e(`\u{1F4C4} Found ${p} session files in OpenCode storage`)}if(await ot(r))try{let m=new Set(s.filter(_=>this.openCode.isOpenCodeSessionFile(_)).map(_=>this.openCode.getOpenCodeSessionId(_)).filter(Boolean)),p=await this.openCode.discoverOpenCodeDbSessions(),f=0;for(let _ of p)m.has(_)||(s.push(it.join(o,`opencode.db#${_}`)),f++);f>0&&e(`\u{1F4C4} Found ${f} additional session(s) in OpenCode database`)}catch(m){e(`OpenCode DB exists but could not be read: ${m}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){let e=this.openCode.getOpenCodeDataDir();return[{path:it.join(e,"storage","session"),source:"OpenCode (JSON)"},{path:it.join(e,"opencode.db"),source:"OpenCode (DB)"}]}async buildTurns(e){let t=[],s=await this.openCode.getOpenCodeMessagesForSession(e),o=0,i=0;for(let r=0;r<s.length;r++){let l=s[r];if(l.role!=="user")continue;i++;let d=s.filter((k,b)=>b>r&&k.role==="assistant"&&k.parentID===l.id),p=(await this.openCode.getOpenCodePartsForMessage(l.id)).filter(k=>k.type==="text").map(k=>k.text||"").join(`
61
- `),f=await this.processOpenCodeAssistantMessages(d,o),_=Math.max(0,f.turnCumulativeTotal-o-f.turnOutputAndThinking);t.push({turnNumber:i,timestamp:l.time?.created?new Date(l.time.created).toISOString():null,mode:"cli",userMessage:p,assistantResponse:f.assistantText,model:f.model,toolCalls:f.toolCalls,contextReferences:ae(),mcpTools:[],inputTokensEstimate:_,outputTokensEstimate:f.turnOutputAndThinking-f.thinkingTokens,thinkingTokensEstimate:f.thinkingTokens}),o=f.turnCumulativeTotal}return{turns:t}}async processOpenCodeAssistantMessages(e,t){let s="",o=[],i=null,r=0,l=t;for(let m of e){i||(i=m.modelID||null),r+=m.tokens?.reasoning||0,typeof m.tokens?.total=="number"&&(l=Math.max(l,m.tokens.total));let p=await this.openCode.getOpenCodePartsForMessage(m.id);for(let f of p)s+=this.processOpenCodePart(f,o)}let d=e.reduce((m,p)=>m+(p.tokens?.output||0)+(p.tokens?.reasoning||0),0);return{assistantText:s,toolCalls:o,model:i,thinkingTokens:r,turnCumulativeTotal:l,turnOutputAndThinking:d}}processOpenCodePart(e,t){return e.type==="text"&&e.text?e.text:(e.type==="tool"&&e.tool&&t.push({toolName:e.tool,arguments:e.state?.input?JSON.stringify(e.state.input):void 0,result:e.state?.output||void 0}),"")}async getSyncData(e){return this.openCode.getOpenCodeSessionData(e)}async analyzeUsage(e,t){let s=ce(),o=await this.openCode.getOpenCodeMessagesForSession(e),i=[];for(let r of o)r.role==="user"&&s.modeUsage.cli++,r.role==="assistant"&&await this.processOpenCodeAssistantMessage(r,s,i);if(i.length>0){let r=[...new Set(i)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=i.length;let l=0;for(let d=1;d<i.length;d++)i[d]!==i[d-1]&&l++;s.modelSwitching.switchCount=l,_e(t.modelPricing,r,i,s)}return s}async processOpenCodeAssistantMessage(e,t,s){s.push(e.modelID||"unknown");let o=await this.openCode.getOpenCodePartsForMessage(e.id);for(let i of o)i.type!=="tool"||!i.tool||(t.toolCalls.total++,t.toolCalls.byTool[i.tool]=(t.toolCalls.byTool[i.tool]||0)+1)}};var xl=A(require("fs")),rt=A(require("path"));var js=class{constructor(e){this.crush=e}crush;id="crush";displayName="Crush";handles(e){return this.crush.isCrushSessionFile(e)}getBackingPath(e){return this.crush.getCrushDbPath(e)}async stat(e){return this.crush.statSessionFile(e)}async getTokens(e){let t=await this.crush.getTokensFromCrushSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return this.crush.countCrushInteractions(e)}async getModelUsage(e){return this.crush.getCrushModelUsage(e)}async getMeta(e){let t=[],s=await this.crush.readCrushSession(e),o;s&&(o=s.title||void 0,s.created_at&&t.push(s.created_at*1e3),s.updated_at&&t.push(s.updated_at*1e3));let i=await this.crush.getCrushMessages(e);for(let r of i)r.created_at&&t.push(r.created_at*1e3),r.finished_at&&t.push(r.finished_at*1e3);return t.sort((r,l)=>r-l),{title:o,firstInteraction:t.length>0?new Date(t[0]).toISOString():null,lastInteraction:t.length>0?new Date(t[t.length-1]).toISOString():null}}getEditorRoot(e){return rt.dirname(this.crush.getCrushDbPath(e))}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=this.crush.readCrushProjects();e(`\u{1F4C1} Crush: found ${o.length} project(s) in projects.json`);let i=await Promise.all(o.map(async l=>{let d=rt.join(l.data_dir,"crush.db");e(`\u{1F4C1} Checking Crush DB path: ${d}`);try{return await xl.promises.access(d),(await this.crush.discoverSessionsInDb(d)).map(p=>rt.join(l.data_dir,`crush.db#${p}`))}catch(m){e(`Could not read Crush database for ${l.path}: ${m}`)}return[]})),r=i.reduce((l,d)=>l+d.length,0);r>0&&e(`\u{1F4C4} Found ${r} session(s) in Crush database(s)`),s.push(...i.flat())}catch(o){e(`Could not read Crush projects: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){let e=this.crush.getCrushConfigDir(),t=[{path:rt.join(e,"projects.json"),source:"Crush (projects.json)"}],s=li(()=>this.crush.readCrushProjects().map(o=>({path:rt.join(o.data_dir,"crush.db"),source:`Crush (${rt.basename(o.path)})`})),[],"crushAdapter getCandidatePaths");return t.push(...s),t}async buildTurns(e){let t=[],s=await this.crush.getCrushMessages(e),o=await this.crush.readCrushSession(e),i=s.filter(l=>l.role==="user").length,r=0;for(let l=0;l<s.length;l++){let d=s[l];if(d.role!=="user")continue;r++;let m=[];for(let p=l+1;p<s.length&&s[p].role!=="user";p++)s[p].role==="assistant"&&m.push(s[p]);t.push(this.buildCrushTurn(d,m,o,i,r))}return{turns:t}}buildCrushTurn(e,t,s,o,i){let l=(Array.isArray(e.parts)?e.parts:[]).filter(k=>k?.type==="text"&&k?.text).map(k=>k.text).join(`
62
- `),{assistantText:d,toolCalls:m,model:p}=this.processAssistantMessagesForTurn(t),f=s?.prompt_tokens&&o>0?Math.round(s.prompt_tokens/o):0,_=s?.completion_tokens&&o>0?Math.round(s.completion_tokens/o):0;return{turnNumber:i,timestamp:e.created_at?new Date(e.created_at*1e3).toISOString():null,mode:"cli",userMessage:l,assistantResponse:d,model:p,toolCalls:m,contextReferences:ae(),mcpTools:[],inputTokensEstimate:f,outputTokensEstimate:_,thinkingTokensEstimate:0}}processAssistantMessagesForTurn(e){let t="",s=[],o=null;for(let i of e){o||(o=i.model||null);for(let r of Array.isArray(i.parts)?i.parts:[])t+=this.processCrushMessagePart(r,s)}return{assistantText:t,toolCalls:s,model:o}}processCrushMessagePart(e,t){return e?.type==="text"&&e?.text?e.text:(e?.type==="tool_call"&&e?.data?.name&&t.push({toolName:e.data.name,arguments:e.data.arguments?JSON.stringify(e.data.arguments):void 0}),"")}async getSyncData(e){return this.crush.getCrushSessionData(e)}async analyzeUsage(e,t){let s=ce(),o=await this.crush.getCrushMessages(e),i=[];for(let r of o)r.role==="user"&&s.modeUsage.cli++,r.role==="assistant"&&this.processCrushAssistantMessage(r,s,i);return this.applyCrushModelSwitchingStats(i,s),_e(t.modelPricing,s.modelSwitching.uniqueModels,i,s),s}processCrushAssistantMessage(e,t,s){s.push(e.model||"unknown");for(let o of Array.isArray(e.parts)?e.parts:[]){if(o?.type!=="tool_call"||!o?.data?.name)continue;t.toolCalls.total++;let i=o.data.name;t.toolCalls.byTool[i]=(t.toolCalls.byTool[i]||0)+1}}applyCrushModelSwitchingStats(e,t){let s=[...new Set(e)];t.modelSwitching.uniqueModels=s,t.modelSwitching.modelCount=s.length,t.modelSwitching.totalRequests=e.length;let o=0;for(let i=1;i<e.length;i++)e[i]!==e[i-1]&&o++;t.modelSwitching.switchCount=o}};var Al=A(require("fs")),El=A(require("path")),Dl=A(Ai());var Bs=class{constructor(e,t){this.visualStudio=e;this.estimateTokens=t}visualStudio;estimateTokens;id="visualstudio";displayName="Visual Studio";handles(e){return this.visualStudio.isVSSessionFile(e)}getDisplayName(e){return re(e).includes("/ssmsgithubcopilot/")?"SSMS":"Visual Studio"}getBackingPath(e){return e}async stat(e){return this.visualStudio.statSessionFile(e)}async getTokens(e){let t=await this.visualStudio.getTokenEstimates(e,this.estimateTokens);return{...t,actualTokens:t.tokens}}async countInteractions(e){let t=await this.visualStudio.decodeSessionFile(e);return this.visualStudio.countInteractions(t)}async getModelUsage(e){return this.visualStudio.getModelUsage(e,this.estimateTokens)}async getMeta(e){let t=await this.visualStudio.decodeSessionFile(e),s=this.visualStudio.getSessionTitle(t),o=this.visualStudio.getSessionTimestamps(t),i=[];return o.timeCreated&&i.push(new Date(o.timeCreated).getTime()),o.timeUpdated&&i.push(new Date(o.timeUpdated).getTime()),i.sort((r,l)=>r-l),{title:s,firstInteraction:i.length>0?new Date(i[0]).toISOString():null,lastInteraction:i.length>0?new Date(i[i.length-1]).toISOString():null}}getEditorRoot(e){return El.dirname(e)}skipBackendSync=!0;async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=await this.visualStudio.discoverSessions();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Visual Studio Copilot`),s.push(...o))}catch(o){e(`Could not read Visual Studio session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.visualStudio.getLogDir(),source:"Visual Studio (log dir)"},{path:this.visualStudio.getSsmsSessionsDir(),source:"SSMS (sessions dir)"}]}getRawFileContent(e){try{let t=Al.readFileSync(e),o=(t.length>=2?Array.from((0,Dl.decodeMulti)(t.slice(1))):[]).map((i,r)=>r===0?i:i?.[1]??i);return JSON.stringify(o,null,2)}catch{return"[]"}}async buildTurns(e){let t=[],s=await this.visualStudio.decodeSessionFile(e),o=0;for(let i=1;i<s.length;i+=2){let r=s[i],l=s[i+1];r&&(o++,t.push(this.buildVSTurn(r,l,o)))}return{turns:t}}buildVSTurn(e,t,s){let o=e[1],i=t?.[1],r=this.visualStudio.extractTextFromContent(o?.Content||[]),l=t?this.visualStudio.extractTextFromContent(i?.Content||[]):"",d=this.visualStudio.getModelId(i??o,!i),m=this.visualStudio.extractContextText(o?.Context),p=this.estimateTokens(r+m,d??"gpt-4"),f=t?this.estimateTokens(l,d??"gpt-4"):0;return{turnNumber:s,timestamp:o?.Timestamp?new Date(o.Timestamp).toISOString():null,mode:"ask",userMessage:r,assistantResponse:l,model:d,toolCalls:this.extractVSToolCalls(i),contextReferences:ae(),mcpTools:[],inputTokensEstimate:p,outputTokensEstimate:f,thinkingTokensEstimate:0}}extractVSToolCalls(e){let t=[];for(let s of e?.Content||[]){let o=Array.isArray(s)?s[1]:null;o?.Function&&t.push({toolName:String(o.Function.Description||"tool"),result:typeof o.Function.Result=="string"?o.Function.Result:void 0})}return t}async analyzeUsage(e,t){let s=ce(),o=await this.visualStudio.decodeSessionFile(e),i=[];for(let d=1;d<o.length;d++)d%2===1?s.modeUsage.ask++:this.processVSResponseObject(o[d]?.[1],s,i,t);let r=[...new Set(i)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=i.length;let l=0;for(let d=1;d<i.length;d++)i[d]!==i[d-1]&&l++;return s.modelSwitching.switchCount=l,_e(t.modelPricing,r,i,s),s}processVSResponseObject(e,t,s,o){let i=this.visualStudio.getModelId(e,!1);i&&s.push(i);for(let r of e?.Content??[]){let l=Array.isArray(r)?r[1]:null;if(!l?.Function)continue;t.toolCalls.total++;let d=String(l.Function.Name||l.Function.Description||"tool");if(Ze(d)){t.mcpTools.total++;let m=ht(d,o.toolNameMap);t.mcpTools.byServer[m]=(t.mcpTools.byServer[m]||0)+1;let p=Ts(d);t.mcpTools.byTool[p]=(t.mcpTools.byTool[p]||0)+1,t.toolCalls.total--}else t.toolCalls.byTool[d]=(t.toolCalls.byTool[d]||0)+1}}};var Wi=A(require("fs"));var qs=class{constructor(e){this.continue_=e}continue_;id="continue";displayName="Continue";handles(e){return this.continue_.isContinueSessionFile(e)}getBackingPath(e){return e}async stat(e){return Wi.promises.stat(e)}async getTokens(e){let t=await this.continue_.getTokensFromContinueSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return await this.continue_.countContinueInteractions(e)}async getModelUsage(e){return await this.continue_.getContinueModelUsage(e)}async getMeta(e){let t=await this.continue_.getContinueSessionMeta(e),s=this.continue_.getContinueSessionId(e),o=(await this.continue_.readSessionsIndex()).get(s),i=null,r=null;if(o?.dateCreated){i=new Date(o.dateCreated).toISOString();try{r=(await Wi.promises.stat(e)).mtime.toISOString()}catch{}}let l;if(t?.workspaceDirectory)try{l=decodeURIComponent(t.workspaceDirectory.replace(/^file:\/\/\//,"").replace(/^file:\/\//,""))}catch{}return{title:t?.title,firstInteraction:i,lastInteraction:r,workspacePath:l}}getEditorRoot(e){return this.continue_.getContinueDataDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=await this.continue_.getContinueSessionFiles();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Continue (~/.continue/sessions)`),s.push(...o))}catch(o){e(`Could not read Continue session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.continue_.getContinueSessionsDir(),source:"Continue"}]}async buildTurns(e){let t=[],s=await this.continue_.buildContinueTurns(e),o=ae();for(let i of s)t.push({turnNumber:t.length+1,timestamp:null,mode:"ask",userMessage:i.userText,assistantResponse:i.assistantText,model:i.model,toolCalls:i.toolCalls,contextReferences:o,mcpTools:[],inputTokensEstimate:i.inputTokens,outputTokensEstimate:i.outputTokens,thinkingTokensEstimate:0});return{turns:t}}async analyzeUsage(e,t){let s=ce(),o=await this.continue_.buildContinueTurns(e),i=await this.continue_.getContinueSessionMeta(e),r=[];for(let m of o){s.modeUsage.ask++,m.model&&r.push(m.model);for(let p of m.toolCalls)s.toolCalls.total++,s.toolCalls.byTool[p.toolName]=(s.toolCalls.byTool[p.toolName]||0)+1}if(i?.mode==="agent")for(let m=0;m<o.length;m++)s.modeUsage.ask--,s.modeUsage.agent++;let l=[...new Set(r)];s.modelSwitching.uniqueModels=l,s.modelSwitching.modelCount=l.length,s.modelSwitching.totalRequests=r.length;let d=0;for(let m=1;m<r.length;m++)r[m]!==r[m-1]&&d++;return s.modelSwitching.switchCount=d,_e(t.modelPricing,l,r,s),s}};var Il=A(require("fs"));var Rl=A(require("fs"));var _g=new Set(["review","bug","think","compact","pr_comments"]);function Vi(n){let e="";if(typeof n=="string")e=n;else if(Array.isArray(n)){for(let i of n)if(i?.type==="text"&&typeof i.text=="string"){e=i.text;break}}let s=e.trimStart().split(`
63
- `)[0].trim().match(/^\/([a-z_]+)(?:\s|$)/i);if(!s)return null;let o=s[1].toLowerCase();return _g.has(o)?o:null}var $s=class{constructor(e){this.claudeCode=e}claudeCode;id="claudecode";displayName="Claude Code";handles(e){return this.claudeCode.isClaudeCodeSessionFile(e)}getBackingPath(e){return e}async stat(e){return Rl.promises.stat(e)}async getTokens(e){let t=await this.claudeCode.getTokensFromClaudeCodeSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return await this.claudeCode.countClaudeCodeInteractions(e)}async getModelUsage(e){return await this.claudeCode.getClaudeCodeModelUsage(e)}async getMeta(e){let t=await this.claudeCode.getClaudeCodeSessionMeta(e);return{title:t?.title,firstInteraction:t?.firstInteraction||null,lastInteraction:t?.lastInteraction||null,workspacePath:t?.cwd}}getEditorRoot(e){return this.claudeCode.getClaudeCodeProjectsDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=await this.claudeCode.getClaudeCodeSessionFiles();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Claude Code (~/.claude/projects)`),s.push(...o))}catch(o){e(`Could not read Claude Code session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.claudeCode.getClaudeCodeProjectsDir(),source:"Claude Code"}]}async analyzeUsage(e,t){let s=ce(),o=await yo(e),i=[];for(let r of o)r.type==="user"&&r.message?.role==="user"&&!r.isSidechain?this.processUserEvent(r,s):r.type==="assistant"?this.processAssistantEvent(r,s,t,i):r.type==="system"&&r.subtype==="compact_boundary"&&this.processCompactBoundaryEvent(r,s);return this.applyModelSwitchingStats(i,s),_e(t.modelPricing,s.modelSwitching.uniqueModels,i,s),s}processCompactBoundaryEvent(e,t){e.compactMetadata?.trigger==="auto"&&(t.toolCalls.byTool.__auto_compact__=(t.toolCalls.byTool.__auto_compact__||0)+1)}processUserEvent(e,t){t.modeUsage.cli++;let s=Vi(e.message?.content);if(s){let o=`__slash__${s}`;t.toolCalls.byTool[o]=(t.toolCalls.byTool[o]||0)+1}}processAssistantEvent(e,t,s,o){let i=Ot(e.message?.model||"unknown");o.push(i);let r=Array.isArray(e.message?.content)?e.message.content:[];for(let l of r){if(l?.type!=="tool_use")continue;let d=String(l.name||"tool");if(Ze(d)){let m=ht(d,s.toolNameMap);t.mcpTools.total++,t.mcpTools.byServer[m]=(t.mcpTools.byServer[m]||0)+1,t.mcpTools.byTool[d]=(t.mcpTools.byTool[d]||0)+1}else t.toolCalls.total++,t.toolCalls.byTool[d]=(t.toolCalls.byTool[d]||0)+1}}applyModelSwitchingStats(e,t){let s=[...new Set(e)];t.modelSwitching.uniqueModels=s,t.modelSwitching.modelCount=s.length,t.modelSwitching.totalRequests=e.length;let o=0;for(let i=1;i<e.length;i++)e[i]!==e[i-1]&&o++;t.modelSwitching.switchCount=o}};var zs=class{constructor(e,t,s,o){this.claudeDesktopCowork=e;this.isMcpToolFn=t;this.extractMcpServerNameFn=s;this.estimateTokensFn=o}claudeDesktopCowork;isMcpToolFn;extractMcpServerNameFn;estimateTokensFn;id="claudedesktop";displayName="Claude Desktop Cowork";handles(e){return this.claudeDesktopCowork.isCoworkSessionFile(e)}getBackingPath(e){return e}async stat(e){return Il.promises.stat(e)}async getTokens(e){let t=await this.claudeDesktopCowork.getTokensFromCoworkSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return await this.claudeDesktopCowork.countCoworkInteractions(e)}async getModelUsage(e){return await this.claudeDesktopCowork.getCoworkModelUsage(e)}async getMeta(e){let t=await this.claudeDesktopCowork.getCoworkSessionMeta(e);return{title:t?.title,firstInteraction:t?.firstInteraction||null,lastInteraction:t?.lastInteraction||null,workspacePath:t?.cwd}}getEditorRoot(e){return this.claudeDesktopCowork.getCoworkBaseDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=await this.claudeDesktopCowork.getCoworkSessionFiles();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Claude Desktop Cowork`),s.push(...o))}catch(o){e(`Could not read Claude Desktop Cowork session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){let e=this.claudeDesktopCowork.getCoworkBaseDir();return e?[{path:e,source:"Claude Desktop (Cowork)"}]:[]}async buildTurns(e){let t=[],s=await this.claudeDesktopCowork.readCoworkEvents(e),o=null,i=[];for(let l of s)if(l.type==="user"&&!l.isSidechain&&l.message?.role==="user"&&this.isRealUserMessage(l)){let d=this.buildTurnFromEvents(o,i,t.length+1);d&&t.push(d),o=l,i.length=0}else l.type==="assistant"&&l.message?.stop_reason&&l.message?.role==="assistant"&&i.push(l);let r=this.buildTurnFromEvents(o,i,t.length+1);return r&&t.push(r),{turns:t}}isRealUserMessage(e){let t=e.message?.content;if(typeof t=="string")return!!t.trim();if(!Array.isArray(t))return!1;let s=t.some(i=>i.type==="text"),o=t.some(i=>i.type==="tool_result");return s&&!o}buildTurnFromEvents(e,t,s){if(!e)return null;let o=e.message?.content,i=typeof o=="string"?o:Array.isArray(o)?o.filter(b=>b.type==="text").map(b=>b.text||"").join(`
64
- `):"",{assistantText:r,model:l,actualInputTokens:d,actualOutputTokens:m,toolCalls:p,mcpTools:f}=this.processAssistantEventsForTurn(t),_=l||"claude-sonnet-4-6",k=d>0||m>0?{promptTokens:d,completionTokens:m}:void 0;return{turnNumber:s,timestamp:e.timestamp?new Date(e.timestamp).toISOString():null,mode:"agent",userMessage:i,assistantResponse:r,model:_,toolCalls:p,contextReferences:ae(),mcpTools:f,inputTokensEstimate:d||this.estimateTokensFn(i,_),outputTokensEstimate:m||this.estimateTokensFn(r,_),thinkingTokensEstimate:0,actualUsage:k}}processAssistantEventsForTurn(e){let t="",s=0,o=0,i=null,r=[],l=[],d=new Set;for(let m of e){let p=m.message;!i&&p?.model&&(i=p.model);let f=m.requestId,_=!f||!d.has(f);f&&d.add(f);let k=p?.usage;if(k&&_){let b=this.extractUsageTokens(k);s+=b.input,o+=b.output}for(let b of Array.isArray(p?.content)?p.content:[])t+=this.processEventContentBlock(b,r,l)}return{assistantText:t,model:i,actualInputTokens:s,actualOutputTokens:o,toolCalls:r,mcpTools:l}}extractUsageTokens(e){return{input:(e.input_tokens||0)+(e.cache_creation_input_tokens||0)+(e.cache_read_input_tokens||0),output:e.output_tokens||0}}processEventContentBlock(e,t,s){if(e.type==="text")return e.text||"";if(e.type==="tool_use"){let o=e.name||"unknown";this.isMcpToolFn(o)?s.push({server:this.extractMcpServerNameFn(o),tool:o}):t.push({toolName:o,arguments:e.input?JSON.stringify(e.input):void 0})}return""}async analyzeUsage(e,t){let s=ce(),o=await yo(e),i=[];for(let r of o)r.type==="user"&&r.message?.role==="user"&&!r.isSidechain?this.processDesktopUserEvent(r,s):r.type==="assistant"&&this.processDesktopAssistantEvent(r,s,i);return this.applyDesktopModelSwitchingStats(i,s),_e(t.modelPricing,s.modelSwitching.uniqueModels,i,s),s}processDesktopUserEvent(e,t){t.modeUsage.ask++;let s=Vi(e.message?.content);if(s){let o=`__slash__${s}`;t.toolCalls.byTool[o]=(t.toolCalls.byTool[o]||0)+1}}processDesktopAssistantEvent(e,t,s){let o=Ot(e.message?.model||"unknown");s.push(o);let i=Array.isArray(e.message?.content)?e.message.content:[];for(let r of i){if(r?.type!=="tool_use")continue;t.toolCalls.total++;let l=String(r.name||"tool");t.toolCalls.byTool[l]=(t.toolCalls.byTool[l]||0)+1}}applyDesktopModelSwitchingStats(e,t){let s=[...new Set(e)];t.modelSwitching.uniqueModels=s,t.modelSwitching.modelCount=s.length,t.modelSwitching.totalRequests=e.length;let o=0;for(let i=1;i<e.length;i++)e[i]!==e[i-1]&&o++;t.modelSwitching.switchCount=o}};var Ul=A(require("fs"));var Hs=class{constructor(e){this.mistralVibe=e}mistralVibe;id="mistralvibe";displayName="Mistral Vibe";handles(e){return this.mistralVibe.isVibeSessionFile(e)}getBackingPath(e){return e}async stat(e){return Ul.promises.stat(e)}async getTokens(e){let t=await this.mistralVibe.getTokensFromSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return this.mistralVibe.countInteractions(e)}async getModelUsage(e){return this.mistralVibe.getModelUsage(e)}async getMeta(e){let t=await this.mistralVibe.getSessionMeta(e);return{title:t.title,firstInteraction:t.firstInteraction,lastInteraction:t.lastInteraction}}getEditorRoot(e){return this.mistralVibe.getSessionLogDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=await this.mistralVibe.discoverSessions();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Mistral Vibe (~/.vibe/logs/session)`),s.push(...o))}catch(o){e(`Could not read Mistral Vibe session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.mistralVibe.getSessionLogDir(),source:"Mistral Vibe"}]}async buildTurns(e){let t=[],s=await this.mistralVibe.readSessionMessages(e),o=await this.mistralVibe.getSessionMeta(e),i=await this.mistralVibe.getTokensFromSession(e),r=o.model||"devstral",l=this.findUserMessageIndices(s);for(let d=0;d<l.length;d++){let m=l[d],p=d+1<l.length?l[d+1]:s.length;t.push(this.buildMistralTurn(s,m,p,o,r,d+1))}return{turns:t,actualTokens:i.tokens}}findUserMessageIndices(e){let t=[];for(let s=0;s<e.length;s++)e[s].role==="user"&&e[s].injected!==!0&&t.push(s);return t}buildMistralTurn(e,t,s,o,i,r){let l=e[t],d=typeof l.content=="string"?l.content:"",{assistantText:m,toolCalls:p}=this.collectMistralTurnContent(e,t,s);return{turnNumber:r,timestamp:o.firstInteraction,mode:"cli",userMessage:d,assistantResponse:m,model:i,toolCalls:p,contextReferences:ae(),mcpTools:[],inputTokensEstimate:0,outputTokensEstimate:0,thinkingTokensEstimate:0}}collectMistralTurnContent(e,t,s){let o="",i=[];for(let r=t+1;r<s;r++){let l=e[r];if(l.role==="assistant")o+=this.processMistralAssistantMsg(l,i);else if(l.role==="tool"){let d=i[i.length-1];d&&(d.result=typeof l.content=="string"?l.content:void 0)}}return{assistantText:o,toolCalls:i}}processMistralAssistantMsg(e,t){let s="";typeof e.content=="string"&&(s=e.content);for(let o of Array.isArray(e.tool_calls)?e.tool_calls:[])t.push({toolName:o.function?.name||o.name||"unknown",arguments:o.function?.arguments?JSON.stringify(o.function.arguments):void 0});return s}async analyzeUsage(e,t){let s=ce(),o=await this.mistralVibe.readSessionMessages(e),r=(await this.mistralVibe.getSessionMeta(e)).model||"devstral",l=[];for(let m of o)if(m.role==="user"&&m.injected!==!0)s.modeUsage.cli++;else if(m.role==="assistant"&&(l.push(r),Array.isArray(m.tool_calls)))for(let p of m.tool_calls){s.toolCalls.total++;let f=String(p.function?.name||p.name||"tool");s.toolCalls.byTool[f]=(s.toolCalls.byTool[f]||0)+1}let d=[...new Set(l)];return s.modelSwitching.uniqueModels=d,s.modelSwitching.modelCount=d.length,s.modelSwitching.totalRequests=l.length,s.modelSwitching.switchCount=0,_e(t.modelPricing,d,l,s),s}};var Fl=A(require("fs"));var Ws=class{constructor(e){this.geminiCli=e}geminiCli;id="geminicli";displayName="Gemini CLI";handles(e){return this.geminiCli.isGeminiCliSessionFile(e)}getBackingPath(e){return e}async stat(e){return Fl.promises.stat(e)}async getTokens(e){let t=await this.geminiCli.getTokensFromGeminiCliSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return await this.geminiCli.countGeminiCliInteractions(e)}async getModelUsage(e){return await this.geminiCli.getGeminiCliModelUsage(e)}async getMeta(e){return await this.geminiCli.getGeminiCliSessionMeta(e)}getEditorRoot(e){return this.geminiCli.getGeminiDataDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=await this.geminiCli.getGeminiCliSessionFiles();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Gemini CLI (~/.gemini/tmp/*/chats)`),s.push(...o))}catch(o){e(`Could not read Gemini CLI session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.geminiCli.getGeminiTmpDir(),source:"Gemini CLI (sessions)"},{path:this.geminiCli.getGeminiProjectsPath(),source:"Gemini CLI (projects.json)"},{path:this.geminiCli.getGeminiLogsPath(),source:"Gemini CLI (logs.json)"}]}async buildTurns(e){return await this.geminiCli.buildGeminiCliTurns(e)}async getDailyFractions(e){return await this.geminiCli.getGeminiCliDailyFractions(e)}async analyzeUsage(e,t){let s=ce(),o=await this.geminiCli.readGeminiCliSession(e),i=[];s.modeUsage.cli+=o.userRecords.length;for(let r of o.assistantRecords)this.processGeminiAssistantRecord(r,s,i);return this.applyGeminiModelSwitchingStats(i,s),_e(t.modelPricing,s.modelSwitching.uniqueModels,i,s),s}processGeminiAssistantRecord(e,t,s){let o=Ns(e.model||"unknown");s.push(o);for(let i of Array.isArray(e.toolCalls)?e.toolCalls:[]){let r=this.resolveGeminiToolName(i);r&&(t.toolCalls.total++,t.toolCalls.byTool[r]=(t.toolCalls.byTool[r]||0)+1)}}resolveGeminiToolName(e){return typeof e?.name=="string"&&e.name.trim().length>0?e.name.trim():typeof e?.displayName=="string"&&e.displayName.trim().length>0?e.displayName.trim():""}applyGeminiModelSwitchingStats(e,t){let s=[...new Set(e)];t.modelSwitching.uniqueModels=s,t.modelSwitching.modelCount=s.length,t.modelSwitching.totalRequests=e.length;let o=0;for(let i=1;i<e.length;i++)e[i]!==e[i-1]&&o++;t.modelSwitching.switchCount=o}};var Ol=A(require("fs")),Ji=A(require("inspector"));var Vs=class{constructor(e,t=()=>0){this.antigravity=e;this.estimateTokens=t}antigravity;estimateTokens;id="antigravity";displayName="Antigravity";handles(e){return this.antigravity.isAntigravitySessionFile(e)}getBackingPath(e){return e}async stat(e){return Ol.promises.stat(e)}async getTokens(e){return{...await this.antigravity.estimateTokensFromAntigravitySession(e,this.estimateTokens),actualTokens:0}}async countInteractions(e){return this.antigravity.countAntigravityInteractions(e)}async getModelUsage(e){return{}}async getMeta(e){return this.antigravity.getAntigravitySessionMeta(e)}getEditorRoot(e){return this.antigravity.getAntigravityBrainDir()}async buildTurns(e){return this.antigravity.buildAntigravityTurns(e)}async discover(e){let t=this.getCandidatePaths(),s=[],o=this.antigravity.getAntigravityBrainDir();Ji.url()&&e(`\u{1F50D} [Antigravity] Checking brain dir: ${o}`);try{let i=await this.antigravity.getAntigravitySessionFiles();Ji.url()&&e(`\u{1F50D} [Antigravity] Found ${i.length} transcript(s)`),i.length>0&&(e(`\u{1F4C4} Found ${i.length} session file(s) in Antigravity (~/.gemini/antigravity/brain/*/)`),s.push(...i))}catch(i){e(`Could not read Antigravity session files: ${i}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.antigravity.getAntigravityBrainDir(),source:"Antigravity (brain/)"}]}async analyzeUsage(e,t){let s=ce(),o=await this.antigravity.readAntigravitySession(e);s.modeUsage.cli+=o.userEntries.length;for(let i of o.modelEntries)if(Array.isArray(i.tool_calls))for(let r of i.tool_calls)r.name&&(s.toolCalls.total++,s.toolCalls.byTool[r.name]=(s.toolCalls.byTool[r.name]||0)+1);return s.modelSwitching.uniqueModels=[],s.modelSwitching.modelCount=0,s.modelSwitching.totalRequests=0,s.modelSwitching.switchCount=0,s}};var Ee=A(require("fs")),Y=A(require("path")),Qs=A(require("os"));var Js=["Code","Code - Insiders","Code - Exploration","VSCodium","Cursor"],Gl=new Set(["Public","Default","Default User","All Users"]);function Ki(){return Qs.platform()==="linux"&&(typeof process.env.WSL_DISTRO_NAME=="string"||typeof process.env.WSL_INTEROP=="string")}function Nl(){let n=Qs.platform(),e=Qs.homedir(),t=[];if(n==="win32"){let s=process.env.APPDATA||Y.join(e,"AppData","Roaming");for(let o of Js)t.push(Y.join(s,o,"User"))}else if(n==="darwin")for(let s of Js)t.push(Y.join(e,"Library","Application Support",s,"User"));else{let s=process.env.XDG_CONFIG_HOME||Y.join(e,".config");for(let o of Js)t.push(Y.join(s,o,"User"))}return t.push(Y.join(e,".vscode-server","data","User"),Y.join(e,".vscode-server-insiders","data","User"),Y.join(e,".vscode-remote","data","User"),Y.join("/tmp",".vscode-server","data","User"),Y.join("/workspace",".vscode-server","data","User")),t}async function Cg(){if(!Ki())return[];let n=[],e=[],t=process.env.USERPROFILE;if(t){let o=t.match(/^\/mnt\/[a-z]\/Users\/([^/]+)/);o&&e.push(o[1])}let s="/mnt/c/Users";try{let o=await Ee.promises.readdir(s,{withFileTypes:!0});for(let i of o){if(!i.isDirectory())continue;let r=i.name;Gl.has(r)||r.startsWith(".")||e.includes(r)||e.push(r)}}catch{return[]}for(let o of e){let i=Y.join(s,o,"AppData","Roaming");for(let r of Js)n.push(Y.join(i,r,"User"))}return n}function bg(){if(!Ki())return[];let n=[],e="/mnt/c/Users";try{let t=Ee.readdirSync(e,{withFileTypes:!0});for(let s of t)if(!(!s.isDirectory()||s.name.startsWith(".")||Gl.has(s.name)))for(let o of Js)n.push(Y.join(e,s.name,"AppData","Roaming",o,"User"))}catch{}return n}async function Ll(n,e,t,s){if(n.length===0)return;let o=0,i=Array.from({length:Math.min(t,n.length)},async()=>{for(;o<n.length;){let r=o++;try{await e(n[r],r)}catch(l){s?.(n[r],r,l)}}});await Promise.all(i)}async function jl(n,e,t){let s;try{s=await Ee.promises.readdir(n,{withFileTypes:!0})}catch(o){t(`Could not scan directory ${n}: ${o}`);return}for(let o of s){let i=Y.join(n,o.name);if(o.isDirectory()){await jl(i,e,t);continue}if(!(!o.name.endsWith(".json")&&!o.name.endsWith(".jsonl"))&&!cl(o.name))try{(await Ee.promises.stat(i)).size>0&&e.push(i)}catch{}}}var Ks=class{id="copilotchat";displayName="GitHub Copilot Chat";handles(e){return!1}getBackingPath(e){return e}async stat(e){return Ee.promises.stat(e)}async getTokens(e){try{let t=await Ee.promises.readFile(e,"utf8");return Zt(t)?{tokens:0,thinkingTokens:0,actualTokens:0}:e.endsWith(".jsonl")||nt(t)?lo(t):{tokens:0,thinkingTokens:0,actualTokens:0}}catch{return{tokens:0,thinkingTokens:0,actualTokens:0}}}async countInteractions(e){return 0}async getModelUsage(e){return{}}async getMeta(e){return{title:void 0,firstInteraction:null,lastInteraction:null}}getEditorRoot(e){let t=ge(e),s=t.lastIndexOf("/User/");return s>=0?t.substring(0,s+5):Y.dirname(e)}getCandidatePaths(){let e=[];for(let t of Nl())e.push({path:t,source:"VS Code"});for(let t of bg())e.push({path:t,source:"VS Code (Windows via WSL)"});return e}async discover(e){let t=this.getCandidatePaths(),s=[],o=await this.resolveAllVSCodePaths(e);e(`\u{1F4C2} Considering ${o.length} candidate VS Code paths`);let i=await Promise.all(o.map(l=>ot(l).catch(()=>!1))),r=o.filter((l,d)=>i[d]);return e(`\u2705 Found ${r.length} of ${o.length} VS Code paths exist on disk`),await Ll(r,async l=>{let d=Y.basename(Y.dirname(l));await this.scanWorkspaceStorage(l,d,s,e),await this.scanGlobalStorage(l,d,s,e)},4,(l,d,m)=>{e(`Failed to scan VS Code user path ${l}: ${m instanceof Error?m.message:String(m)}`)}),{sessionFiles:s,candidatePaths:t}}async resolveAllVSCodePaths(e){let t=Nl();if(Ki()){e("\u{1FA9F} WSL environment detected \u2014 probing Windows-side VS Code paths");let s=await Cg();s.length>0?(e(`\u{1FA9F} Adding ${s.length} Windows-side candidate paths from WSL`),t.push(...s)):e("\u{1FA9F} No Windows-side paths found (Windows drive may not be mounted)")}return t}async scanWorkspaceStorage(e,t,s,o){let i=Y.join(e,"workspaceStorage"),r;try{r=await Ee.promises.readdir(i)}catch{return}let l=["GitHub.copilot-chat","github.copilot-chat","GitHub.copilot","github.copilot"],d=["chatSessions","debug-logs"],m=async f=>{try{let _=(await Ee.promises.readdir(f)).filter(k=>k.endsWith(".json")||k.endsWith(".jsonl")).map(k=>Y.join(f,k));_.length>0&&s.push(..._)}catch{}},p=0;await Ll(r,async f=>{let _=Y.join(i,f),k;try{k=await Ee.promises.readdir(_)}catch{return}let b=new Set(k),M=s.length;b.has("chatSessions")&&await m(Y.join(_,"chatSessions"));for(let O of l)if(b.has(O))for(let v of d)await m(Y.join(_,O,v));s.length>M&&p++},8),p>0&&o(`\u{1F4C2} ${t}: found sessions in ${p}/${r.length} workspace dir(s)`)}async scanGlobalStorage(e,t,s,o){try{let i=Y.join(e,"globalStorage","emptyWindowChatSessions"),r=(await Ee.promises.readdir(i)).filter(l=>l.endsWith(".json")||l.endsWith(".jsonl")).map(l=>Y.join(i,l));r.length>0&&s.push(...r)}catch{}for(let i of["GitHub.copilot-chat","github.copilot-chat","GitHub.copilot","github.copilot"]){let r=Y.join(e,"globalStorage",i);try{await Ee.promises.access(r),await jl(r,s,o)}catch{}}}};var bo=A(require("fs")),Xs=A(require("path")),Xi=A(require("os"));var Ys=A(require("fs")),Qi=A(require("path")),Bl=A(require("os")),ql=A(Gn());function kg(n){if(typeof n!="object"||n===null)return!1;let e=n;return typeof e.id=="string"&&(e.repository===null||typeof e.repository=="string")&&(e.branch===null||typeof e.branch=="string")&&(e.summary===null||typeof e.summary=="string")&&(e.created_at===null||typeof e.created_at=="string")&&(e.updated_at===null||typeof e.updated_at=="string")}function Sg(n){if(typeof n!="object"||n===null)return!1;let e=n;return typeof e.session_id=="string"&&typeof e.turn_index=="number"&&(e.user_message===null||typeof e.user_message=="string")&&(e.assistant_response===null||typeof e.assistant_response=="string")&&(e.timestamp===null||typeof e.timestamp=="string")}var Co=class{_sqlJsModule=null;_sqlJsInitPromise=null;_dbCache=new Map;_dbCacheInflight=new Map;dispose(){for(let e of this._dbCache.values())try{e.db.close()}catch{}this._dbCache.clear(),this._dbCacheInflight.clear(),this._sqlJsInitPromise=null}closeDb(e){try{e.close()}catch{}}isMissingFileError(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}async statDb(e){try{return await Ys.promises.stat(e)}catch(t){return this.isMissingFileError(t)&&this._dbCache.has(e)&&(this.closeDb(this._dbCache.get(e).db),this._dbCache.delete(e)),null}}isCachedDbCurrent(e,t){let s=this._dbCache.get(e);return!!s&&s.mtimeMs===t.mtimeMs&&s.size===t.size}getDbCacheKey(e,t){return`${e}:${t.mtimeMs}:${t.size}`}sameDbStats(e,t){return e.mtimeMs===t.mtimeMs&&e.size===t.size}async refreshDb(e,t){let s;try{let r=await this.initSqlJs(),l=await Ys.promises.readFile(e);s=new r.Database(l)}catch{return this._dbCache.get(e)?.db??null}let o=await this.statDb(e);if(!o||!this.sameDbStats(t,o))return this.closeDb(s),this._dbCache.get(e)?.db??null;let i=this._dbCache.get(e);return i&&this.closeDb(i.db),this._dbCache.set(e,{db:s,mtimeMs:t.mtimeMs,size:t.size}),s}async getDb(e){let t=await this.statDb(e);if(!t)return this._dbCache.get(e)?.db??null;if(this.isCachedDbCurrent(e,t))return this._dbCache.get(e).db;let s=this.getDbCacheKey(e,t),o=this._dbCacheInflight.get(s);if(o)return o;let i=this.refreshDb(e,t);this._dbCacheInflight.set(s,i);try{return await i}finally{this._dbCacheInflight.get(s)===i&&this._dbCacheInflight.delete(s)}}getDbPath(){return Qi.join(Bl.homedir(),".copilot","session-store.db")}virtualPath(e){return`${this.getDbPath()}#${e}`}isCliStoreSession(e){return e.includes("session-store.db#")}getDbPathFromVirtual(e){let t=e.indexOf("session-store.db#");return t===-1?e:e.substring(0,t+16)}getSessionId(e){let t=e.indexOf("session-store.db#");return t===-1?null:e.substring(t+17)||null}async stat(e){return Ys.promises.stat(this.getDbPathFromVirtual(e))}async initSqlJs(){return this._sqlJsModule?this._sqlJsModule:(this._sqlJsInitPromise||(this._sqlJsInitPromise=(async()=>{let e=Qi.join(__dirname,"sql-wasm.wasm"),t;try{t=await Ys.promises.readFile(e)}catch{}let s=await(0,ql.default)(t?{wasmBinary:t}:void 0);return this._sqlJsModule=s,s})().catch(e=>{throw this._sqlJsInitPromise=null,e})),this._sqlJsInitPromise)}async discoverNewSessions(e){let t=this.getDbPath(),s=await this.getDb(t);if(!s)return[];try{let o=s.exec("SELECT id FROM sessions ORDER BY updated_at DESC");return o.length===0?[]:o[0].values.map(i=>i[0]).filter(i=>!e.has(i))}catch{return[]}}async readSession(e){let t=this.getDbPathFromVirtual(e),s=this.getSessionId(e);if(!s)return null;let o=await this.getDb(t);if(!o)return null;try{let i=o.exec("SELECT id, repository, branch, summary, created_at, updated_at FROM sessions WHERE id = ?",[s]);if(i.length===0||i[0].values.length===0)return null;let r=i[0].columns,l=i[0].values[0],d={};return r.forEach((m,p)=>{d[m]=l[p]}),kg(d)?d:null}catch{return null}}async getTurns(e){let t=this.getDbPathFromVirtual(e),s=this.getSessionId(e);if(!s)return[];let o=await this.getDb(t);if(!o)return[];try{let i=o.exec("SELECT session_id, turn_index, user_message, assistant_response, timestamp FROM turns WHERE session_id = ? ORDER BY turn_index ASC",[s]);if(i.length===0)return[];let r=i[0].columns,l=[];for(let d of i[0].values){let m={};r.forEach((p,f)=>{m[p]=d[f]}),Sg(m)&&l.push(m)}return l}catch{return[]}}async countTurns(e){let t=this.getDbPathFromVirtual(e),s=this.getSessionId(e);if(!s)return 0;let o=await this.getDb(t);if(!o)return 0;try{let i=o.exec("SELECT COUNT(*) FROM turns WHERE session_id = ?",[s]);return i.length===0||i[0].values.length===0?0:i[0].values[0][0]||0}catch{return 0}}async getDailyFractions(e){let t=await this.getTurns(e),s={},o=0;for(let r of t)if(r.timestamp)try{let l=de(new Date(r.timestamp));s[l]=(s[l]||0)+1,o++}catch{}if(o===0){let r=await this.readSession(e);return{[r?.updated_at?de(new Date(r.updated_at)):de(new Date)]:1}}let i={};for(let[r,l]of Object.entries(s))i[r]=l/o;return i}};function Yi(){return Xs.join(Xi.homedir(),".copilot","session-state")}var Zs=class{id="copilotcli";displayName="GitHub Copilot CLI";store=new Co;handles(e){return this.store.isCliStoreSession(e)}getBackingPath(e){return this.store.isCliStoreSession(e)?this.store.getDbPathFromVirtual(e):e}async stat(e){return this.store.isCliStoreSession(e)?this.store.stat(e):bo.promises.stat(e)}async getTokens(e){return{tokens:0,thinkingTokens:0,actualTokens:0}}async countInteractions(e){return this.store.isCliStoreSession(e)?this.store.countTurns(e):0}async getModelUsage(e){return{}}async getMeta(e){if(this.store.isCliStoreSession(e)){let t=await this.store.readSession(e);return t?{title:t.summary??void 0,firstInteraction:t.created_at,lastInteraction:t.updated_at}:{title:void 0,firstInteraction:null,lastInteraction:null}}return{title:void 0,firstInteraction:null,lastInteraction:null}}getEditorRoot(e){return this.store.isCliStoreSession(e)?Xs.join(Xi.homedir(),".copilot"):Yi()}async buildTurns(e){return this.store.isCliStoreSession(e)?{turns:(await this.store.getTurns(e)).map(o=>({turnNumber:o.turn_index+1,timestamp:o.timestamp,mode:"cli",userMessage:o.user_message??"",assistantResponse:o.assistant_response??"",model:null,toolCalls:[],contextReferences:ae(),mcpTools:[],inputTokensEstimate:0,outputTokensEstimate:0,thinkingTokensEstimate:0}))}:{turns:[]}}async analyzeUsage(e,t){let s=ce();if(!this.store.isCliStoreSession(e))return s;let o=await this.store.getTurns(e);return s.modeUsage.cli=o.filter(i=>i.user_message!==null).length,s}async getDailyFractions(e){return this.store.isCliStoreSession(e)?this.store.getDailyFractions(e):{}}getCandidatePaths(){let e=[{path:Yi(),source:"Copilot CLI"}],t=this.store.getDbPath();return e.push({path:t,source:"Copilot CLI (session-store.db)"}),e}async discover(e){let t=this.getCandidatePaths(),s=[],o=Yi(),i=new Set;try{if(await ot(o)){let r;try{r=await bo.promises.readdir(o,{withFileTypes:!0})}catch(p){e(`Could not read Copilot CLI session path in ${o}: ${p}`),r=[]}let l=r.filter(p=>!p.isDirectory()&&(p.name.endsWith(".json")||p.name.endsWith(".jsonl"))).map(p=>Xs.join(o,p.name));l.length>0&&(e(`\u{1F4C4} Found ${l.length} session files in Copilot CLI directory`),s.push(...l));let d=r.filter(p=>p.isDirectory()),m=(await Promise.all(d.map(async p=>{let f=Xs.join(o,p.name,"events.jsonl");try{if((await bo.promises.stat(f)).size>0)return i.add(p.name),f}catch{}return null}))).filter(p=>p!==null);m.length>0&&(e(`\u{1F4C4} Found ${m.length} session files in Copilot CLI subdirectories`),s.push(...m))}}catch(r){e(`Could not check Copilot CLI session path ${o}: ${r}`)}try{let r=await this.store.discoverNewSessions(i);r.length>0&&(e(`\u{1F4C4} Found ${r.length} chat-only session(s) in Copilot CLI session-store.db`),s.push(...r.map(l=>this.store.virtualPath(l))))}catch(r){e(`Could not read Copilot CLI session-store.db: ${r}`)}return{sessionFiles:s,candidatePaths:t}}};var ns=A(require("fs")),ko=A(require("path")),$l=A(require("os"));function Zi(){return ko.join($l.homedir(),".copilot","jb")}var en=class{id="jetbrains";displayName="JetBrains IDE";handles(e){return!1}getBackingPath(e){return e}async stat(e){return ns.promises.stat(e)}async parsePartition(e){try{let t=await ns.promises.readFile(e,"utf8");return go(t)}catch{return null}}async getTokens(e){let t=await this.parsePartition(e);return t?{tokens:t.tokens,thinkingTokens:t.thinkingTokens,actualTokens:t.actualTokens}:{tokens:0,thinkingTokens:0,actualTokens:0}}async countInteractions(e){return(await this.parsePartition(e))?.interactions??0}async getModelUsage(e){return(await this.parsePartition(e))?.modelUsage??{}}async getMeta(e){let t=await this.parsePartition(e);return{title:void 0,firstInteraction:t?.firstInteraction??null,lastInteraction:t?.lastInteraction??null}}async getToolCounts(e){return(await this.parsePartition(e))?.toolCounts??{}}async getToolCalls(e){return(await this.parsePartition(e))?.toolCalls??[]}getEditorRoot(e){return Zi()}getCandidatePaths(){return[{path:Zi(),source:"JetBrains IDE"}]}async discover(e){let t=this.getCandidatePaths(),s=[],o=Zi();try{if(!await ot(o))return{sessionFiles:s,candidatePaths:t};let i;try{i=await ns.promises.readdir(o,{withFileTypes:!0})}catch(d){return e(`Could not read JetBrains session path in ${o}: ${d}`),{sessionFiles:s,candidatePaths:t}}let r=i.filter(d=>d.isDirectory()),l=(await Promise.all(r.map(async d=>{let m=ko.join(o,d.name),p;try{p=await ns.promises.readdir(m,{withFileTypes:!0})}catch{return[]}let f=[];for(let _ of p){if(!_.isFile()||!/^partition-\d+\.jsonl$/.test(_.name))continue;let k=ko.join(m,_.name);try{(await ns.promises.stat(k)).size>0&&f.push(k)}catch{}}return f}))).flat();l.length>0&&(e(`\u{1F4C4} Found ${l.length} session file(s) in JetBrains IDE Copilot`),s.push(...l))}catch(i){e(`Could not check JetBrains session path ${o}: ${i}`)}return{sessionFiles:s,candidatePaths:t}}};function er(n){return{openCode:new jn(n),crush:new qn(n),continue_:new $n,visualStudio:new so,claudeCode:new oo,claudeDesktopCowork:new ro,mistralVibe:new ao,geminiCli:new co,antigravity:new mo}}function tr(n){return[new Gs(n.openCode),new js(n.crush),new Bs(n.visualStudio,n.estimateTokens),new qs(n.continue_),new zs(n.claudeDesktopCowork,n.isMcpTool,n.extractMcpServerName,n.estimateTokens),new $s(n.claudeCode),new Hs(n.mistralVibe),new Vs(n.antigravity,n.estimateTokens),new Ws(n.geminiCli),new Ks,new Zs,new en]}function tn(n,e){try{return JSON.parse(n)}catch(t){console.error(`[${e}] JSON parse error:`,t);return}}function Le(n){return typeof n=="object"&&n!==null}function zl(n){return typeof n!="string"?!1:!["__proto__","prototype","constructor","hasOwnProperty"].includes(n)&&!n.startsWith("__")}function os(n){return/^\d+$/.test(n)}function sr(n,e){if(typeof n!="string")return e;let t=n.trim();return t?t.startsWith("copilot/")?t.substring(8):t:e}function wg(n,e,t){let s=n;for(let o=0;o<e.length-1;o++){let i=e[o],r=e[o+1];if(Array.isArray(s)&&os(i)){let l=Number(i),d=s[l],m;Le(d)?m=d:(m=os(r)?[]:Object.create(null),s[l]=m),s=m;continue}if(!Le(s))return null;s=t(s,i,r)}return{root:n,current:s}}function Tg(n,e,t,s){return Array.isArray(e)&&os(t)?(e[Number(t)]=s,n):(Le(e)&&Object.defineProperty(e,t,{value:s,writable:!0,enumerable:!0,configurable:!0}),n)}function Mg(n,e,t,s){let o;if(Array.isArray(e)&&os(t)){let i=Number(t);Array.isArray(e[i])||(e[i]=[]),o=e[i]}else Le(e)&&(Array.isArray(e[t])||Object.defineProperty(e,t,{value:[],writable:!0,enumerable:!0,configurable:!0}),o=e[t]);return Array.isArray(o)&&(Array.isArray(s)?o.push(...s):o.push(s)),n}function Pg(n,e){if(!Le(e))return n;let t=e.kind,s=e.k,o=e.v;if(t===0)return o;if(!Array.isArray(s)||s.length===0)return n;let i=s.map(String);for(let _ of i)if(!zl(_))return n;let r=Le(n)?n:Object.create(null),d=wg(r,i,(_,k,b)=>{let M=_[k];if(!Le(M)){let O=os(b)?[]:Object.create(null);return _[k]=O,O}return M});if(!d)return r;let{root:m,current:p}=d,f=i[i.length-1];return t===1?Tg(m,p,f,o):t===2?Mg(m,p,f,o):m}function vg(n){if(!Array.isArray(n))return{responseText:"",thinkingText:""};let e="",t="";for(let s of n){let{text:o,isThinking:i}=Xt(s);o&&(i?t+=o:e+=o)}return{responseText:e,thinkingText:t}}var nr=class{constructor(e,t){this.defaultModel=e;this.estimateTokens=t}defaultModel;estimateTokens;modelUsage={};totalInputTokens=0;totalOutputTokens=0;ensureModel(e){return typeof e=="string"&&e?e:this.defaultModel}addInput(e,t){let s=this.ensureModel(e);this.modelUsage[s]||(this.modelUsage[s]={inputTokens:0,outputTokens:0});let o=this.estimateTokens(t,s);this.modelUsage[s].inputTokens+=o,this.totalInputTokens+=o}addOutput(e,t){let s=this.ensureModel(e);this.modelUsage[s]||(this.modelUsage[s]={inputTokens:0,outputTokens:0});let o=this.estimateTokens(t,s);this.modelUsage[s].outputTokens+=o,this.totalOutputTokens+=o}};function xg(n,e,t){let s=n.modelId??n.selectedModel?.identifier??n.model,o=sr(s,t);if(typeof s=="string"&&s.trim())return o;let i=e?e(n):void 0;return sr(i,"")||o}function Ag(n,e,t){if(n.message?.parts)for(let s of n.message.parts)typeof s?.text=="string"&&s.text&&t(e,s.text);else typeof n.message?.text=="string"&&t(e,n.message.text)}function Eg(n,e,t,s){let o=n.modelName||e;n.prompt&&t(o,n.prompt),n.result&&s(o,n.result)}function Dg(n,e,t,s){let o=Yt(n);if(o){Eg(o,e,t,s);return}if(n&&(n.kind==="thinking"||typeof n.value=="string"))return;let i=n?.message?.parts;if(i)for(let r of i)typeof r?.text=="string"&&r.text&&s(e,r.text)}function Rg(n,e,t,s){for(let o of n)Dg(o,e,t,s)}function Ig(n){if(!n)return 0;if(n.usage){let e=typeof n.usage.promptTokens=="number"?n.usage.promptTokens:0,t=typeof n.usage.completionTokens=="number"?n.usage.completionTokens:0;return e+t}return typeof n.promptTokens=="number"&&typeof n.outputTokens=="number"?n.promptTokens+n.outputTokens:n.metadata&&typeof n.metadata.promptTokens=="number"&&typeof n.metadata.outputTokens=="number"?n.metadata.promptTokens+n.metadata.outputTokens:0}function Ug(n){return Array.isArray(n.requests)?n.requests:Array.isArray(n.history)?n.history:[]}function Fg(n){return n.trim().length>0}function Hl(n,e,t,s,o,i,r){if(n==null||typeof n!="object")return;let l=n,d=xg(l,o,i);Ag(l,d,t);let{responseText:m,thinkingText:p}=vg(l.response);m&&s(d,m),p&&(e.thinkingTokens+=r(p,d));let f=Array.isArray(l.response)?l.response:Array.isArray(l.responses)?l.responses:[];Rg(f,d,t,s),e.actualTokens+=Ig(l.result)}function Og(n){if(!Le(n))return!1;let e=n.message;return Le(e)&&typeof e.text=="string"&&!!e.text.trim()}function Ng(n){if(n.length===0)return null;let e=tn(n[0],"sessionParser");if(!e||typeof e.kind!="number")return null;let t=Object.create(null);for(let o of n){let i=tn(o,"sessionParser");i!==void 0&&(t=Pg(t,i))}let s=Le(t)?t:null;return s&&Array.isArray(s.requests)?s.requests:[]}function Wl(n,e,t,s){let o,i="unknown",r=new nr(i,t),{modelUsage:l}=r,d=r.addInput.bind(r),m=r.addOutput.bind(r),p={thinkingTokens:0,actualTokens:0};if(n.endsWith(".jsonl")){let k=e.split(/\r?\n/).filter(Fg),b=Ng(k);if(b!==null){let M=b.filter(Og).length;for(let O of b)Hl(O,p,d,m,s,i,t);return{tokens:r.totalInputTokens+r.totalOutputTokens+p.thinkingTokens,interactions:M,modelUsage:l,thinkingTokens:p.thinkingTokens,actualTokens:0}}if(o=tn(e.trim(),"sessionParser"),o===void 0)return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0}}if(!o&&(o=tn(e,"sessionParser"),o===void 0))return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0};if(!Le(o)||Array.isArray(o))return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0};let f=Ug(o),_=f.length;for(let k of f)Hl(k,p,d,m,s,i,t);return{tokens:r.totalInputTokens+r.totalOutputTokens+p.thinkingTokens,interactions:_,modelUsage:l,thinkingTokens:p.thinkingTokens,actualTokens:p.actualTokens}}var or=class{extractCounts(e){let t={},s={},o=e.trim().split(`
65
- `);for(let i of o)if(i.trim())try{let r=JSON.parse(i);if(r.type==="user.message"){is(r.timestamp??r.ts??r.data?.timestamp,t);continue}this.processVsCodeDeltaEvent(r,s,t)}catch{}return t}processVsCodeDeltaEvent(e,t,s){let o=e.kind,i=e.k,r=e.v;o===0&&r?.requests&&Array.isArray(r.requests)?this.processKind0Event(r,s):o===2&&Array.isArray(i)&&i[0]==="requests"?this.processKind2Event(i,r,t,s):this.isKind1TimestampUpdate(o,i)&&this.processKind1Event(i,r,t,s)}isKind1TimestampUpdate(e,t){return e===1&&Array.isArray(t)&&t.length===3&&t[0]==="requests"&&(t[2]==="timestamp"||t[2]==="ts")&&typeof t[1]=="number"}processKind0Event(e,t){for(let s of e.requests)is(s.timestamp??s.ts,t)}processKind2Event(e,t,s,o){if(Array.isArray(t))for(let i of t)is(i.timestamp??i.ts,o);else if(t&&typeof t=="object"){let i=t.timestamp??t.ts;i!==void 0&&is(i,o),typeof e[1]=="number"&&(s[e[1]]=i)}}processKind1Event(e,t,s,o){let i=e[1];s[i]===void 0&&is(t,o),s[i]=t}},ir=class{extractCounts(e){let t={};try{let s=JSON.parse(e);if(s.requests&&Array.isArray(s.requests))for(let o of s.requests){let i=o.timestamp??o.ts??o.result?.timestamp;is(i,t)}}catch{}return t}};function Lg(n){if(n==null)return null;let e=new Date(n);return isNaN(e.getTime())?null:e}function is(n,e){let t=Lg(n);if(t!==null){let s=t.getFullYear(),o=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0"),r=`${s}-${o}-${i}`;e[r]=(e[r]||0)+1}}function Vl(n,e,t){let s=t.getFullYear(),o=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0"),r=`${s}-${o}-${i}`,d=(e?new or:new ir).extractCounts(n),m=Object.values(d).reduce((f,_)=>f+_,0);if(m===0)return{[r]:1};let p={};for(let[f,_]of Object.entries(d))p[f]=_/m;return p}var Ct=A(require("fs")),ar=A(require("path")),Jl=A(require("os"));var So=class{maxEntries;constructor(e=2e3){this.maxEntries=e}isValid(e,t,s){return e.mtime===t&&e.size===s}evict(e){if(e.size<=this.maxEntries)return;let t=[...e.entries()].sort((s,o)=>o[1].mtime-s[1].mtime);e.clear();for(let[s,o]of t.slice(0,this.maxEntries))e.set(s,o)}};var Kl=5,Gg=2e3,Ql=ar.join(Jl.homedir(),".copilot-token-tracker"),rr=ar.join(Ql,"cli-cache.json"),at=new Map,rs=!0,Yl=!1,Xl=new So(Gg);function lr(){rs=!1,at.clear()}function cr(){if(rs)try{if(!Ct.existsSync(rr))return;let n=Ct.readFileSync(rr,"utf-8"),e=JSON.parse(n);if(e.version!==Kl){at.clear();return}at=new Map(Object.entries(e.entries))}catch{at.clear()}}function ur(){if(!(!rs||!Yl))try{Xl.evict(at),Ct.mkdirSync(Ql,{recursive:!0});let n={version:Kl,entries:Object.fromEntries(at)};Ct.writeFileSync(rr,JSON.stringify(n),"utf-8")}catch{}}function Zl(n,e,t){if(!rs)return null;let s=at.get(n);return!s||!Xl.isValid(s,e,t)?null:{...s.data,lastModified:new Date(s.data.lastModified)}}function dr(n,e,t,s){rs&&(Yl=!0,at.set(n,{mtime:e,size:t,data:{...s,lastModified:s.lastModified.toISOString()}}))}function mr(){return{entries:at.size,enabled:rs}}var De={CO2_PER_1K_TOKENS:.2,CO2_ABSORPTION_PER_TREE_PER_YEAR:21e3,WATER_USAGE_PER_1K_TOKENS:.3,CO2_PER_KM_DRIVING:120,CO2_PER_PHONE_CHARGE:8.22,WATER_PER_COFFEE_CUP:140,CO2_PER_LED_HOUR:20};var ec={$schema:"http://json-schema.org/draft-07/schema#",description:"Character-to-token ratio estimators for different AI models. Used to estimate token counts from text length.",estimators:{"gpt-4":.25,"gpt-4.1":.25,"gpt-4.1-mini":.25,"gpt-4o":.25,"gpt-4o-mini":.25,"gpt-4-turbo":.25,"gpt-3.5-turbo":.25,"gpt-5":.25,"gpt-5-codex":.25,"gpt-5-mini":.25,"gpt-5.1":.25,"gpt-5.1-codex":.25,"gpt-5.1-codex-max":.25,"gpt-5.1-codex-mini":.25,"gpt-5.2":.25,"gpt-5.2-codex":.25,"gpt-5.2-pro":.25,"gpt-5.3-codex":.25,"gpt-5.4":.25,"gpt-5.4-mini":.25,"gpt-4.1-nano":.25,"gemini-2.0-flash":.25,"gemini-2.0-flash-lite":.25,"gemini-2.5-flash":.25,"gemini-2.5-flash-lite":.25,"claude-sonnet-3.5":.24,"claude-sonnet-3.7":.24,"claude-sonnet-4":.24,"claude-sonnet-4.5":.24,"claude-sonnet-4.6":.24,"claude-haiku":.24,"claude-haiku-4.5":.24,"claude-opus-4.1":.24,"claude-opus-4.5":.24,"claude-opus-4.6":.24,"claude-opus-4.6-(fast-mode)-(preview)":.24,"claude-opus-4.6-fast":.24,"gemini-2.5-pro":.25,"gemini-3-flash":.25,"gemini-3-pro":.25,"gemini-3-pro-preview":.25,"gemini-3.1-pro":.25,"gemini-3.1-flash-lite":.25,"grok-code-fast-1":.25,"raptor-mini":.25,goldeneye:.25,"o1-preview":.25,"o1-mini":.25,"o3-mini":.25,"o4-mini":.25,"gpt-5.5":.25,"mistral-large-latest":.25,"mistral-large-2512":.25,"mistral-large-2411":.25,"magistral-medium-latest":.25,"mistral-medium-latest":.25,"mistral-medium-3-5":.25,"mistral-medium-2505":.25,"mistral-small-latest":.25,"mistral-small-2503":.25,"mistral-small-2603":.25,"codestral-latest":.25,"codestral-2501":.25,"open-mistral-nemo":.25,"ministral-3b-2410":.25,"ministral-8b-2410":.25,"magistral-small-latest":.25,"devstral-medium-2507":.25,"pixtral-large-2411":.25,"gemini-3.5-flash":.25,"claude-opus-4.8":.24,"qwen2.5":.25,"mai-code-1-flash[^mai-code-1-flash]":.25,"mai-code-1-flash":.25}};var wo={$schema:"http://json-schema.org/draft-07/schema#",description:"Model pricing data - costs per million tokens. Each model has direct provider/API pricing at the top level (used as a reference); models billed through GitHub Copilot AI Credits also include a `copilotPricing` block reflecting GitHub's published per-token rates (1 AI credit = $0.01).",metadata:{lastUpdated:"2026-06-03",sources:[{name:"OpenAI API Pricing",url:"https://developers.openai.com/api/docs/pricing",retrievedDate:"2026-04-24"},{name:"Mistral AI API Pricing",url:"https://pricepertoken.com/pricing-page/provider/mistral-ai",retrievedDate:"2026-05-06",note:"Cross-referenced with https://openrouter.ai/mistralai and https://ai-pricing.info/mistral"},{name:"Anthropic Claude Pricing",url:"https://www.anthropic.com/pricing",note:"Standard rates; also see https://platform.claude.com/docs/en/about-claude/pricing",retrievedDate:"2026-03-30"},{name:"Google AI Gemini API Pricing",url:"https://ai.google.dev/gemini-api/docs/pricing",retrievedDate:"2026-03-30"},{name:"xAI Grok API Pricing",url:"https://x.ai/api",retrievedDate:"2026-03-30"},{name:"GitHub Copilot Supported Models",url:"https://docs.github.com/en/copilot/reference/ai-models/supported-models",retrievedDate:"2026-03-30",note:"Source for tier/multiplier data"},{name:"GitHub Copilot Premium Requests",url:"https://docs.github.com/en/copilot/managing-copilot/monitoring-usage-and-entitlements/about-premium-requests",retrievedDate:"2026-03-30",note:"Source for premium request multiplier values"},{name:"OpenRouter Model Pricing",url:"https://openrouter.ai",retrievedDate:"2026-03-30",note:"Cross-provider pricing aggregator used for verification"},{name:"GitHub Copilot Models and Pricing",url:"https://docs.github.com/en/copilot/reference/copilot-billing/models-and-pricing",retrievedDate:"2026-04-27",note:"Source for the `copilotPricing` per-model block (GitHub AI Credit per-token rates)"}],disclaimer:"GitHub Copilot uses these models but pricing may differ from direct API usage. These are reference prices for cost estimation purposes only."},pricing:{"gpt-5":{inputCostPerMillion:1.25,outputCostPerMillion:10,category:"GPT-5 models",tier:"premium",multiplier:1,displayNames:["GPT-5"]},"gpt-5-codex":{inputCostPerMillion:1.25,outputCostPerMillion:10,category:"GPT-5 models",tier:"premium",multiplier:1,displayNames:["GPT-5 Codex (Preview)"]},"gpt-5-mini":{inputCostPerMillion:.25,outputCostPerMillion:2,category:"GPT-5 models",tier:"standard",multiplier:0,displayNames:["GPT-5 Mini"],copilotPricing:{inputCostPerMillion:.25,cachedInputCostPerMillion:.025,outputCostPerMillion:2,releaseStatus:"GA",category:"Lightweight"}},"gpt-5.1":{inputCostPerMillion:1.25,outputCostPerMillion:10,category:"GPT-5 models",tier:"premium",multiplier:1,displayNames:["GPT-5.1"]},"gpt-5.1-codex":{inputCostPerMillion:1.25,outputCostPerMillion:10,category:"GPT-5 models",tier:"premium",multiplier:1,displayNames:["GPT-5.1 Codex"]},"gpt-5.1-codex-max":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"premium",multiplier:1,displayNames:["GPT-5.1 Codex Max"]},"gpt-5.1-codex-mini":{inputCostPerMillion:.25,outputCostPerMillion:2,category:"GPT-5 models",tier:"premium",multiplier:.33,displayNames:["GPT-5.1 Codex Mini (Preview)"]},"gpt-5.2":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"standard",multiplier:1,displayNames:["GPT-5.2"],copilotPricing:{inputCostPerMillion:1.75,cachedInputCostPerMillion:.175,outputCostPerMillion:14,releaseStatus:"Closing down 2026-06-01",category:"Versatile"}},"gpt-5.2-codex":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"standard",multiplier:1,displayNames:["GPT-5.2 Codex"],copilotPricing:{inputCostPerMillion:1.75,cachedInputCostPerMillion:.175,outputCostPerMillion:14,releaseStatus:"Closing down 2026-06-01",category:"Powerful"}},"gpt-5.2-pro":{inputCostPerMillion:21,outputCostPerMillion:168,category:"GPT-5 models",tier:"premium",multiplier:1,displayNames:["GPT-5.2 Pro"]},"gpt-5.3-codex":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"standard",multiplier:1,displayNames:["GPT-5.3 Codex"],copilotPricing:{inputCostPerMillion:1.75,cachedInputCostPerMillion:.175,outputCostPerMillion:14,releaseStatus:"GA",category:"Powerful"}},"gpt-5.4":{inputCostPerMillion:2.5,cachedInputCostPerMillion:.25,outputCostPerMillion:15,category:"GPT-5 models",tier:"standard",multiplier:1,displayNames:["GPT-5.4"],copilotPricing:{inputCostPerMillion:2.5,cachedInputCostPerMillion:.25,outputCostPerMillion:15,releaseStatus:"GA",category:"Versatile"}},"gpt-5.4-mini":{inputCostPerMillion:.75,cachedInputCostPerMillion:.075,outputCostPerMillion:4.5,category:"GPT-5 models",tier:"standard",multiplier:.33,displayNames:["GPT-5.4 mini"],copilotPricing:{inputCostPerMillion:.75,cachedInputCostPerMillion:.075,outputCostPerMillion:4.5,releaseStatus:"GA",category:"Lightweight"}},"gpt-5.4-nano":{inputCostPerMillion:.2,cachedInputCostPerMillion:.02,outputCostPerMillion:1.25,category:"GPT-5 models",tier:"standard",multiplier:.25,displayNames:["GPT-5.4 nano"],copilotPricing:{inputCostPerMillion:.2,cachedInputCostPerMillion:.02,outputCostPerMillion:1.25,releaseStatus:"GA",category:"Lightweight"}},"gpt-4":{inputCostPerMillion:3,outputCostPerMillion:12,category:"GPT-4 models",tier:"unknown",multiplier:1,displayNames:["GPT-4"]},"gpt-4.1":{inputCostPerMillion:2,cachedInputCostPerMillion:.5,outputCostPerMillion:8,category:"GPT-4 models",tier:"standard",multiplier:0,displayNames:["GPT-4.1"],copilotPricing:{inputCostPerMillion:2,cachedInputCostPerMillion:.5,outputCostPerMillion:8,releaseStatus:"Closing down 2026-06-01",category:"Versatile"}},"gpt-4.1-mini":{inputCostPerMillion:.4,cachedInputCostPerMillion:.1,outputCostPerMillion:1.6,category:"GPT-4 models",tier:"standard",multiplier:0,displayNames:["GPT-4.1 Mini"]},"gpt-4.1-nano":{inputCostPerMillion:.1,cachedInputCostPerMillion:.025,outputCostPerMillion:.4,category:"GPT-4 models",tier:"standard",multiplier:0,displayNames:["GPT-4.1 Nano"]},"gpt-4o":{inputCostPerMillion:2.5,outputCostPerMillion:10,cachedInputCostPerMillion:1.25,category:"GPT-4 models",tier:"standard",multiplier:0,displayNames:["GPT-4o"]},"gpt-4o-mini":{inputCostPerMillion:.15,outputCostPerMillion:.6,cachedInputCostPerMillion:.075,category:"GPT-4 models",tier:"standard",multiplier:0,displayNames:["GPT-4o-mini","GPT-4o Mini"]},"gpt-4o-mini-2024-07-18":{inputCostPerMillion:.15,outputCostPerMillion:.6,cachedInputCostPerMillion:.075,category:"GPT-4 models",tier:"standard",multiplier:0,displayNames:["GPT-4o-mini (2024-07-18)"]},"gpt-4-turbo":{inputCostPerMillion:10,outputCostPerMillion:30,category:"GPT-4 models",tier:"standard",multiplier:0,displayNames:["GPT-4 Turbo"]},"claude-sonnet-3.5":{inputCostPerMillion:3,outputCostPerMillion:15,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,category:"Claude models (Anthropic)",tier:"unknown",multiplier:1,displayNames:["Claude Sonnet 3.5"]},"claude-sonnet-3.7":{inputCostPerMillion:3,outputCostPerMillion:15,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,category:"Claude models (Anthropic)",tier:"unknown",multiplier:1,displayNames:["Claude Sonnet 3.7"]},"claude-sonnet-4":{inputCostPerMillion:3,outputCostPerMillion:15,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,category:"Claude models (Anthropic)",tier:"premium",multiplier:1,displayNames:["Claude Sonnet 4"],copilotPricing:{inputCostPerMillion:3,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,outputCostPerMillion:15,releaseStatus:"GA",category:"Versatile"}},"claude-sonnet-4.5":{inputCostPerMillion:3,outputCostPerMillion:15,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,category:"Claude models (Anthropic)",tier:"standard",multiplier:1,displayNames:["Claude Sonnet 4.5"],copilotPricing:{inputCostPerMillion:3,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,outputCostPerMillion:15,releaseStatus:"GA",category:"Versatile"}},"claude-sonnet-4.6":{inputCostPerMillion:3,outputCostPerMillion:15,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,category:"Claude models (Anthropic)",tier:"standard",multiplier:1,displayNames:["Claude Sonnet 4.6"],copilotPricing:{inputCostPerMillion:3,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,outputCostPerMillion:15,releaseStatus:"GA",category:"Versatile"}},"claude-sonnet-4-6":{inputCostPerMillion:3,outputCostPerMillion:15,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,category:"Claude models (Anthropic)",tier:"standard",multiplier:1,displayNames:["Claude Sonnet 4.6 (alternate format)"],copilotPricing:{inputCostPerMillion:3,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,outputCostPerMillion:15,releaseStatus:"GA",category:"Versatile"}},"claude-haiku":{inputCostPerMillion:.25,outputCostPerMillion:1.25,cachedInputCostPerMillion:.025,cacheCreationCostPerMillion:.3125,category:"Claude models (Anthropic)",tier:"standard",multiplier:0,displayNames:["Claude Haiku"]},"claude-haiku-4.5":{inputCostPerMillion:1,outputCostPerMillion:5,cachedInputCostPerMillion:.1,cacheCreationCostPerMillion:1.25,category:"Claude models (Anthropic)",tier:"standard",multiplier:.33,displayNames:["Claude Haiku 4.5"],copilotPricing:{inputCostPerMillion:1,cachedInputCostPerMillion:.1,cacheCreationCostPerMillion:1.25,outputCostPerMillion:5,releaseStatus:"GA",category:"Versatile"}},"claude-haiku-4-5-20251001":{inputCostPerMillion:1,outputCostPerMillion:5,cachedInputCostPerMillion:.1,cacheCreationCostPerMillion:1.25,category:"Claude models (Anthropic)",tier:"standard",multiplier:.33,displayNames:["Claude Haiku 4.5 (2025-10-01)"],copilotPricing:{inputCostPerMillion:1,cachedInputCostPerMillion:.1,cacheCreationCostPerMillion:1.25,outputCostPerMillion:5,releaseStatus:"GA",category:"Versatile"}},"claude-opus-4.1":{inputCostPerMillion:15,outputCostPerMillion:75,cachedInputCostPerMillion:1.5,cacheCreationCostPerMillion:18.75,category:"Claude models (Anthropic)",tier:"premium",multiplier:10,displayNames:["Claude Opus 4.1"]},"claude-opus-4.5":{inputCostPerMillion:5,outputCostPerMillion:25,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,category:"Claude models (Anthropic)",tier:"standard",multiplier:3,displayNames:["Claude Opus 4.5"],copilotPricing:{inputCostPerMillion:5,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,outputCostPerMillion:25,releaseStatus:"GA",category:"Powerful"}},"claude-opus-4.6":{inputCostPerMillion:5,outputCostPerMillion:25,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,category:"Claude models (Anthropic)",tier:"standard",multiplier:3,displayNames:["Claude Opus 4.6"],copilotPricing:{inputCostPerMillion:5,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,outputCostPerMillion:25,releaseStatus:"GA",category:"Powerful"}},"claude-opus-4.7":{inputCostPerMillion:5,outputCostPerMillion:25,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,category:"Claude models (Anthropic)",tier:"standard",multiplier:15,displayNames:["Claude Opus 4.7"],copilotPricing:{inputCostPerMillion:5,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,outputCostPerMillion:25,releaseStatus:"GA",category:"Powerful"}},"claude-opus-4.6-(fast-mode)-(preview)":{inputCostPerMillion:5,outputCostPerMillion:25,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,category:"Claude models (Anthropic)",tier:"standard",multiplier:30,displayNames:["Claude Opus 4.6 (Fast Mode Preview)"],copilotPricing:{inputCostPerMillion:30,cachedInputCostPerMillion:3,cacheCreationCostPerMillion:37.5,outputCostPerMillion:150,releaseStatus:"Public preview",category:"Powerful"}},"claude-opus-4.6-fast":{inputCostPerMillion:5,outputCostPerMillion:25,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,category:"Claude models (Anthropic)",tier:"premium",multiplier:30,displayNames:["Claude Opus 4.6 (Fast)"],copilotPricing:{inputCostPerMillion:30,cachedInputCostPerMillion:3,cacheCreationCostPerMillion:37.5,outputCostPerMillion:150,releaseStatus:"Public preview",category:"Powerful"}},"o3-mini":{inputCostPerMillion:1.1,outputCostPerMillion:4.4,category:"OpenAI reasoning models",tier:"premium",multiplier:1,displayNames:["o3-mini"]},"o4-mini":{inputCostPerMillion:1.1,outputCostPerMillion:4.4,category:"OpenAI reasoning models",tier:"premium",multiplier:1,displayNames:["o4-mini"]},"o1-preview":{inputCostPerMillion:15,outputCostPerMillion:60,category:"OpenAI reasoning models",tier:"premium",multiplier:1,displayNames:["o1-preview"]},"o1-mini":{inputCostPerMillion:3,outputCostPerMillion:12,category:"OpenAI reasoning models",tier:"premium",multiplier:1,displayNames:["o1-mini"]},"gpt-3.5-turbo":{inputCostPerMillion:.5,outputCostPerMillion:1.5,category:"Legacy models",tier:"standard",multiplier:0,displayNames:["GPT-3.5-Turbo","GPT-3.5 Turbo"]},"gemini-2.5-pro":{inputCostPerMillion:1.25,outputCostPerMillion:10,category:"Google Gemini models",tier:"standard",multiplier:1,displayNames:["Gemini 2.5 Pro"],copilotPricing:{inputCostPerMillion:1.25,cachedInputCostPerMillion:.125,outputCostPerMillion:10,releaseStatus:"GA",category:"Powerful"}},"gemini-2.5-flash":{inputCostPerMillion:.3,outputCostPerMillion:2.5,category:"Google Gemini models",tier:"unknown",multiplier:1,displayNames:["Gemini 2.5 Flash"]},"gemini-2.5-flash-lite":{inputCostPerMillion:.1,outputCostPerMillion:.4,category:"Google Gemini models",tier:"unknown",multiplier:1,displayNames:["Gemini 2.5 Flash Lite"]},"gemini-2.0-flash":{inputCostPerMillion:.1,outputCostPerMillion:.4,category:"Google Gemini models",tier:"standard",multiplier:0,displayNames:["Gemini 2.0 Flash"]},"gemini-2.0-flash-lite":{inputCostPerMillion:.075,outputCostPerMillion:.3,category:"Google Gemini models",tier:"standard",multiplier:0,displayNames:["Gemini 2.0 Flash Lite"]},"gemini-3-flash":{inputCostPerMillion:.5,outputCostPerMillion:3,category:"Google Gemini models",tier:"standard",multiplier:.33,displayNames:["Gemini 3 Flash"],copilotPricing:{inputCostPerMillion:.5,cachedInputCostPerMillion:.05,outputCostPerMillion:3,releaseStatus:"Public preview",category:"Lightweight"}},"gemini-3-pro":{inputCostPerMillion:2,outputCostPerMillion:12,category:"Google Gemini models",tier:"premium",multiplier:1,displayNames:["Gemini 3 Pro"]},"gemini-3-pro-preview":{inputCostPerMillion:2,outputCostPerMillion:12,category:"Google Gemini models",tier:"premium",multiplier:1,displayNames:["Gemini 3 Pro (Preview)"]},"gemini-3.1-pro":{inputCostPerMillion:2,outputCostPerMillion:12,category:"Google Gemini models",tier:"standard",multiplier:1,displayNames:["Gemini 3.1 Pro","Gemini 3.1 Pro (Preview)"],copilotPricing:{inputCostPerMillion:2,cachedInputCostPerMillion:.2,outputCostPerMillion:12,releaseStatus:"Public preview",category:"Powerful"}},"gemini-3.1-flash-lite":{inputCostPerMillion:.25,outputCostPerMillion:1.5,category:"Google Gemini models",tier:"unknown",multiplier:.33,displayNames:["Gemini 3.1 Flash Lite"]},"grok-code-fast-1":{inputCostPerMillion:.2,outputCostPerMillion:1.5,category:"xAI Grok models",tier:"premium",multiplier:.25,displayNames:["Grok Code Fast 1"],copilotPricing:{inputCostPerMillion:.2,cachedInputCostPerMillion:.02,outputCostPerMillion:1.5,releaseStatus:"GA",category:"Lightweight"}},"raptor-mini":{inputCostPerMillion:.25,outputCostPerMillion:2,category:"GitHub Copilot fine-tuned models",tier:"standard",multiplier:0,displayNames:["Raptor Mini"],copilotPricing:{inputCostPerMillion:.25,cachedInputCostPerMillion:.025,outputCostPerMillion:2,releaseStatus:"Public preview",category:"Versatile"}},goldeneye:{inputCostPerMillion:0,outputCostPerMillion:0,category:"GitHub Copilot fine-tuned models",tier:"standard",multiplier:0,copilotPricing:{inputCostPerMillion:1.25,cachedInputCostPerMillion:.125,outputCostPerMillion:10,releaseStatus:"Public preview",category:"Powerful"}},"gpt-5.5":{inputCostPerMillion:0,outputCostPerMillion:0,category:"GPT-5 models",tier:"standard",multiplier:7.5,displayNames:["GPT-5.5"]},"mistral-large-latest":{inputCostPerMillion:.5,outputCostPerMillion:1.5,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Large 3"]},"mistral-large-2512":{inputCostPerMillion:.5,outputCostPerMillion:1.5,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Large 3 (2512)"]},"mistral-large-2411":{inputCostPerMillion:2,outputCostPerMillion:6,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Large 2.1"]},"magistral-medium-latest":{inputCostPerMillion:2,outputCostPerMillion:5,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Magistral Medium"]},"mistral-medium-latest":{inputCostPerMillion:1.5,outputCostPerMillion:7.5,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Medium 3.5"]},"mistral-medium-3-5":{inputCostPerMillion:1.5,outputCostPerMillion:7.5,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Medium 3.5"]},"mistral-medium-3.5":{inputCostPerMillion:1.5,outputCostPerMillion:7.5,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Medium 3.5"]},"mistral-medium-2505":{inputCostPerMillion:.4,outputCostPerMillion:2,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Medium 3.1"]},"mistral-small-latest":{inputCostPerMillion:.1,outputCostPerMillion:.3,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Small 3.1"]},"mistral-small-2503":{inputCostPerMillion:.075,outputCostPerMillion:.2,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Small 3.2"]},"mistral-small-2603":{inputCostPerMillion:.15,outputCostPerMillion:.6,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Small 4"]},"codestral-latest":{inputCostPerMillion:.3,outputCostPerMillion:.9,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Codestral"]},"codestral-2501":{inputCostPerMillion:.3,outputCostPerMillion:.9,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Codestral (2501)"]},"open-mistral-nemo":{inputCostPerMillion:.02,outputCostPerMillion:.03,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Nemo"]},"ministral-3b-2410":{inputCostPerMillion:.04,outputCostPerMillion:.04,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Ministral 3B"]},"ministral-8b-2410":{inputCostPerMillion:.1,outputCostPerMillion:.1,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Ministral 8B"]},"magistral-small-latest":{inputCostPerMillion:.5,outputCostPerMillion:1.5,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Magistral Small"]},"devstral-medium-2507":{inputCostPerMillion:.4,outputCostPerMillion:2,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Devstral Medium"]},"pixtral-large-2411":{inputCostPerMillion:2,outputCostPerMillion:6,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Pixtral Large"]},"gemini-3.5-flash":{inputCostPerMillion:0,outputCostPerMillion:0,category:"Google Gemini models",tier:"standard",multiplier:14,displayNames:["Gemini 3.5 Flash"]},"claude-opus-4.8":{inputCostPerMillion:5,outputCostPerMillion:25,category:"Claude models (Anthropic)",tier:"standard",multiplier:15,displayNames:["Claude Opus 4.8"]},"qwen2.5":{inputCostPerMillion:0,outputCostPerMillion:0,category:" models",tier:"standard",multiplier:0,displayNames:["Qwen2.5"]},"mai-code-1-flash[^mai-code-1-flash]":{inputCostPerMillion:0,outputCostPerMillion:0,category:" models",tier:"standard",multiplier:0,displayNames:["MAI-Code-1-Flash[^mai-code-1-flash]"]},"mai-code-1-flash":{inputCostPerMillion:0,outputCostPerMillion:0,category:" models",tier:"standard",multiplier:0,displayNames:["MAI-Code-1-Flash"]}}};var tc={unknown:"Unknown",windsurf_cascade:"Windsurf Cascade",windsurf_file_edit:"Windsurf: File Edit",windsurf_file_create:"Windsurf: File Create",windsurf_file_read:"Windsurf: File Read",windsurf_terminal:"Windsurf: Terminal",windsurf_search:"Windsurf: Search",windsurf_browser:"Windsurf: Browser",run_in_terminal:"Run In Terminal",run_shell_command:"Run Shell Command",send_to_terminal:"Send To Terminal",run_build:"Run Build",run_command_in_terminal:"Run Command In Terminal","mcp.io.github.git.assign_copilot_to_issue":"GitHub MCP (Local): Assign Copilot to Issue","mcp.io.github.git.create_or_update_file":"GitHub MCP (Local): Create/Update File",mcp_io_github_git_create_or_update_file:"GitHub MCP (Local): Create/Update File",mcp_io_github_git_assign_copilot_to_issue:"GitHub MCP (Local): Assign Copilot to Issue",mcp_io_github_git_pull_request_read:"GitHub MCP (Local): Pull Request Read",mcp_io_github_git_issue_read:"GitHub MCP (Local): Issue Read",mcp_io_github_git_issue_write:"GitHub MCP (Local): Issue Write",mcp_io_github_git_list_issues:"GitHub MCP (Local): List Issues",mcp_io_github_git_create_pull_request:"GitHub MCP (Local): Create Pull Request",mcp_io_github_git_get_file_contents:"GitHub MCP (Local): Get File Contents",mcp_io_github_git_search_code:"GitHub MCP (Local): Search Code",mcp_io_github_git_search_pull_requests:"GitHub MCP (Local): Search Pull Requests",mcp_io_github_git_get_release_by_tag:"GitHub MCP (Local): Get Release By Tag",mcp_io_github_git_search_issues:"GitHub MCP (Local): Search Issues",mcp_io_github_git_add_issue_comment:"GitHub MCP (Local): Add Issue Comment",mcp_io_github_git_list_pull_requests:"GitHub MCP (Local): List Pull Requests",mcp_io_github_git_get_commit:"GitHub MCP (Local): Get Commit",mcp_io_github_git_list_commits:"GitHub MCP (Local): List Commits",mcp_io_github_git_list_code_scanning_alerts:"GitHub MCP (Local): List Code Scanning Alerts",mcp_io_github_git_get_repository_tree:"GitHub MCP (Local): Get Repository Tree",mcp_io_github_git_get_job_logs:"GitHub MCP (Local): Get Job Logs",mcp_io_github_git_list_tags:"GitHub MCP (Local): List Tags",mcp_io_github_git_search_repositories:"GitHub MCP (Local): Search Repositories",mcp_io_github_git_create_repository:"GitHub MCP (Local): Create Repository",mcp_io_github_git_search_users:"GitHub MCP (Local): Search Users",mcp_io_github_git_get_latest_release:"GitHub MCP (Local): Get Latest Release",mcp_io_github_git_get_tag:"GitHub MCP (Local): Get Tag",mcp_github_github_assign_copilot_to_issue:"GitHub MCP (Remote): Assign Copilot to Issue",mcp_github_github_issue_read:"GitHub MCP (Remote): Issue Read",mcp_github_github_issue_write:"GitHub MCP (Remote): Issue Write",mcp_github_github_list_issues:"GitHub MCP (Remote): List Issues",mcp_github_get_file_contents:"GitHub MCP (Remote): Get File Contents",mcp_github_get_latest_release:"GitHub MCP (Remote): Get Latest Release",mcp_github_get_release_by_tag:"GitHub MCP (Remote): Get Release By Tag",mcp_github_list_releases:"GitHub MCP (Remote): List Releases",mcp_github_list_tags:"GitHub MCP (Remote): List Tags",mcp_github_search_code:"GitHub MCP (Remote): Search Code",mcp_github_search_issues:"GitHub MCP (Remote): Search Issues",mcp_github_issue_write:"GitHub MCP (Remote): Issue Write",mcp_github_list_issues:"GitHub MCP (Remote): List Issues",mcp_github_create_pull_request:"GitHub MCP (Remote): Create Pull Request",mcp_github_pull_request_read:"GitHub MCP (Remote): Pull Request Read",mcp_github_list_branches:"MCP GitHub List Branches",mcp_github_update_pull_request:"MCP GitHub Update Pull Request","github-mcp-server-get_file_contents":"GitHub MCP: Get File Contents","github-mcp-server-get_job_logs":"GitHub MCP: Get Job Logs","github-mcp-server-list_commits":"GitHub MCP: List Commits","github-mcp-server-search_code":"GitHub MCP: Search Code","github-mcp-server-actions_list":"GitHub MCP: Actions List","github-mcp-server-list_issues":"GitHub MCP: List Issues","github-mcp-server-search_repositories":"GitHub MCP: Search Repositories","github-mcp-server-list_branches":"GitHub MCP: List Branches","github-mcp-server-issue_read":"GitHub MCP: Issue Read","github-mcp-server-issue_write":"GitHub MCP: Issue Write","github-mcp-server-pull_request_read":"GitHub MCP: Pull Request Read","github-mcp-server-search_issues":"GitHub MCP: Search Issues","github-mcp-server-search_users":"GitHub MCP: Search Users","github-mcp-server-sub_issue_write":"GitHub MCP: Sub Issue Write","github-mcp-server-list_pull_requests":"GitHub MCP Server List Pull Requests","github-mcp-server-search_pull_requests":"GitHub MCP (Remote): Search Pull Requests","github-actions_get":"GitHub Actions: Get","github-actions_list":"GitHub Actions: List","github-create_pull_request":"GitHub: Create Pull Request","github-get_commit":"GitHub: Get Commit","github-get_file_contents":"GitHub: Get File Contents","github-get_job_logs":"GitHub: Get Job Logs","github-get_latest_release":"GitHub: Get Latest Release","github-get_me":"GitHub: Get Me","github-get_release_by_tag":"GitHub: Get Release By Tag","github-get_repository_tree":"GitHub: Get Repository Tree","github-get_teams":"GitHub: Get Teams","github-github_support_docs_search":"GitHub: GitHub Support Docs Search","github-issue_read":"GitHub: Issue Read","github-list_code_scanning_alerts":"GitHub: List Code Scanning Alerts","github-list_dependabot_alerts":"GitHub: List Dependabot Alerts","github-list_tags":"GitHub: List Tags","github-pull_request_read":"GitHub: Pull Request Read","github-pull_request_review_write":"GitHub: Pull Request Review Write","github-search_code":"GitHub: Search Code","github-search_pull_requests":"GitHub: Search Pull Requests","github-search_repositories":"GitHub: Search Repositories","github-update_pull_request":"GitHub: Update Pull Request","mcp_github-code-s_get_code_scanning_alert":"GitHub MCP (Code Scanning): Get Alert","mcp_github-code-s_list_code_scanning_alerts":"GitHub MCP (Code Scanning): List Alerts",mcp_com_microsoft_get_bestpractices:"GitHub MCP: Get Best Practices",mcp_microsoft_doc_microsoft_code_sample_search:"Microsoft Docs MCP: Code Sample Search",mcp_microsoft_doc_microsoft_docs_search:"Microsoft Docs MCP: Docs Search",mcp_microsoftdocs_microsoft_code_sample_search:"Microsoft Docs MCP: Code Sample Search",mcp_microsoftdocs_microsoft_docs_fetch:"Microsoft Docs MCP: Docs Fetch",mcp_microsoftdocs_microsoft_docs_search:"Microsoft Docs MCP: Docs Search",Microsoft_Learn_microsoft_docs_search:"Microsoft Learn: Docs Search","microsoft-learn-microsoft_docs_search":"Microsoft Learn: Docs Search",mcp_gitkraken_git_add_or_commit:"GitKraken MCP: Git Add or Commit",mcp_gitkraken_git_status:"GitKraken MCP: Git Status",mcp_gitkraken_git_branch:"GitKraken MCP: Git Branch",mcp_gitkraken_git_checkout:"GitKraken MCP: Git Checkout",mcp_gitkraken_git_log_or_diff:"GitKraken MCP: Git Log or Diff",mcp_gitkraken_gitkraken_workspace_list:"GitKraken MCP: List Workspaces",mcp_gitkraken_git_push:"GitKraken MCP: Git Push",mcp_gitkraken_gitlens_commit_composer:"GitKraken MCP: GitLens Commit Composer",mcp_git_git_log:"Git MCP: Git Log",mcp_git_git_show:"Git MCP: Git Show",mcp_git_git_diff_staged:"Git MCP: Git Diff Staged",mcp_pencil_batch_design:"Pencil MCP: Batch Design",mcp_pencil_get_editor_state:"Pencil MCP: Get Editor State",mcp_pencil_get_guidelines:"Pencil MCP: Get Guidelines",mcp_pencil_get_screenshot:"Pencil MCP: Get Screenshot",mcp_pencil_snapshot_layout:"Pencil MCP: Snapshot Layout",mcp_figma_get_design_context:"Figma MCP: Get Design Context",mcp_figma_get_screenshot:"Figma MCP: Get Screenshot",mcp_figma_get_variable_defs:"Figma MCP: Get Variable Defs",mcp_azure_aks:"Azure MCP: AKS",mcp_azure_mcp_azureterraformbestpractices:"Azure MCP: Azure Terraform Best Practices",mcp_azure_mcp_documentation:"Azure MCP: Documentation",mcp_azure_mcp_get_bestpractices:"Azure MCP: Get Best Practices",mcp_azure_mcp_group_list:"Azure MCP: Group List",mcp_azure_mcp_storage:"Azure MCP: Storage",mcp_azure_mcp_subscription_list:"Azure MCP: Subscription List",mcp_azure_mcp_pricing:"Azure MCP: Pricing",mcp_azure_mcp_get_azure_bestpractices:"Azure MCP: Get Azure Best Practices","azure-mcp-azureterraformbestpractices":"Azure MCP: Azure Terraform Best Practices","azure-mcp-documentation":"Azure MCP: Documentation","azure-mcp-extension_cli_generate":"Azure MCP: Extension CLI Generate","azure-mcp-get_azure_bestpractices":"Azure MCP: Get Azure Best Practices","azure-mcp-group_list":"Azure MCP: Group List","azure-mcp-subscription_list":"Azure MCP: Subscription List",mcp_bicep_format_bicep_file:"Bicep MCP: Format Bicep File",mcp_bicep_get_az_resource_type_schema:"Bicep MCP: Get Az Resource Type Schema",mcp_bicep_get_bicep_best_practices:"Bicep MCP: Get Bicep Best Practices",mcp_bicep_get_bicep_file_diagnostics:"Bicep MCP: Get Bicep File Diagnostics",mcp_bicep_list_az_resource_types_for_provider:"Bicep MCP: List Az Resource Types For Provider","azure_bicep-get_azure_verified_module":"Azure Bicep: Get Azure Verified Module","azure_development-recommend_custom_modes":"Azure Development: Recommend Custom Modes","azure_resources-query_azure_resource_graph":"Azure Resources: Query Azure Resource Graph",azureResources_getAzureActivityLog:"Azure Resources: Get Azure Activity Log","azure_auth-get_auth_context":"Azure Auth: Get Auth Context","azure_auth-set_auth_context":"Azure Auth: Set Auth Context","ms-azuretools.azure-agent":"Azure Agent",manage_todo_list:"Manage TODO List",copilot_readFile:"Read File",copilot_viewImage:"Copilot View Image",opilot_findFiles:"Find Files",copilot_writeFile:"Write File",copilot_applyPatch:"Apply Patch",copilot_findTextInFiles:"Find Text In Files",copilot_findFiles:"Find Files",copilot_replaceString:"Replace String",copilot_createFile:"Create File",copilot_listDirectory:"List Directory",copilot_fetchWebPage:"Fetch Web Page",copilot_getErrors:"Get Errors",copilot_multiReplaceString:"Multi Replace String",copilot_searchCodebase:"Search Codebase",get_terminal_output:"Get Terminal Output",run_task:"Run Task: Investigate",await_terminal:"Await Terminal command","github.copilot.editsAgent":"GitHub Copilot Edits Agent",todoList:"TODO List",terminal:"Terminal",terminal_last_command:"Terminal Last Command",github_pull_request:"GitHub Pull Request",github_repo:"GitHub Repository",editFiles:"Edit Files",listFiles:"List Files",list_issues:"List Issues",search_subagent:"Search Subagent",execution_subagent:"Execution Subagent",apply_patch:"Apply Patch",ask_questions:"Ask Questions",AskUserQuestion:"Ask User Question",ask_user_question:"Ask User Question",copilot_askQuestions:"Ask Questions",copilot_createAndRunTask:"Create And Run Task",copilot_createDirectory:"Create Directory",copilot_createNewJupyterNotebook:"Create New Jupyter Notebook",copilot_createNewWorkspace:"Create New Workspace",copilot_editFiles:"Edit Files",copilot_editNotebook:"Edit Notebook",copilot_findTestFiles:"Find Test Files",copilot_getChangedFiles:"Get Changed Files",copilot_getDocInfo:"Get Doc Info",copilot_getNotebookSummary:"Get Notebook Summary",copilot_getProjectSetupInfo:"Get Project Setup Info",copilot_getSearchResults:"Get Search Results",copilot_getVSCodeAPI:"Get VSCode API",copilot_githubRepo:"GitHub Repository",copilot_githubTextSearch:"GitHub Text Search",copilot_resolveMemoryFileUri:"Resolve Memory File URI",copilot_insertEdit:"Insert Edit",copilot_installExtension:"Install Extension",copilot_memory:"Memory",copilot_openIntegratedBrowser:"Open Integrated Browser",copilot_openSimpleBrowser:"Open Simple Browser",copilot_readNotebookCellOutput:"Read Notebook Cell Output",copilot_readProjectStructure:"Read Project Structure",copilot_runNotebookCell:"Run Notebook Cell",copilot_runInTerminal:"Run In Terminal",copilot_runTests1:"Run Tests",copilot_runVscodeCommand:"Run VSCode Command",copilot_searchWorkspaceSymbols:"Search Workspace Symbols",copilot_switchAgent:"Switch Agent",copilot_testFailure:"Test Failure",copilot_toolReplay:"Tool Replay",create_and_run_task:"Create And Run Task",create_directory:"Create Directory",create_file:"Create File",remove_file:"Remove File",create_new_jupyter_notebook:"Create New Jupyter Notebook",create_new_workspace:"Create New Workspace",create_virtual_environment:"Create Virtual Environment",edit_files:"Edit Files",edit_file:"Edit File",edit_notebook_file:"Edit Notebook File",fetch_webpage:"Fetch Webpage",file_search:"File Search",get_changed_files:"Get Changed Files",get_doc_info:"Get Doc Info",get_errors:"Get Errors",get_project_setup_info:"Get Project Setup Info",get_files_in_project:"Get Files In Project",get_projects_in_solution:"Get Projects In Solution",configure_python_environment:"Configure Python Environment",get_python_executable_details:"Get Python Executable Details",get_search_view_results:"Get Search View Results",get_task_output:"Get Task Output",get_output_window_logs:"Get Output Window Logs",job_output:"Job Output",get_vscode_api:"Get VSCode API",grep_search:"Grep Search",insert_edit_into_file:"Insert Edit Into File",install_extension:"Install Extension",install_python_packages:"Install Python Packages",list_dir:"List Dir",list_directory:"List Directory",ls:"Ls",memory:"Memory",multi_replace_string_in_file:"Multi Replace String In File",open_integrated_browser:"Open Integrated Browser",open_simple_browser:"Open Simple Browser",read_file:"Read File",view_image:"View Image",read_notebook_cell_output:"Read Notebook Cell Output",read_project_structure:"Read Project Structure",replace_string_in_file:"Replace String In File","setup.agent":"Setup Agent",selectEnvironment:"Select Environment",run_notebook_cell:"Run Notebook Cell",run_vscode_command:"Run VSCode Command",runSubagent:"Run Subagent",renderMermaidDiagram:"Render Mermaid Diagram",runTests:"Run Tests",search_workspace_symbols:"Search Workspace Symbols",semantic_search:"Semantic Search",switch_agent:"Switch Agent",terminal_selection:"Terminal Selection",test_failure:"Test Failure",test_search:"Test Search",tool_replay:"Tool Replay",tool_search:"Tool Search",vscode_askQuestions:"VSCode Ask Questions",vscode_get_confirmation:"VSCode Get Confirmation",vscode_get_confirmation_with_options:"VSCode Get Confirmation With Options",vscode_get_terminal_confirmation:"VSCode Get Terminal Confirmation",vscode_get_modified_files_confirmation:"VSCode Get Modified Files Confirmation",vscode_listCodeUsages:"VSCode List Code Usages",vscode_renameSymbol:"VSCode Rename Symbol","mcp_io_github_ups_get-library-docs":"Context7 MCP: Get Library Docs","mcp_io_github_ups_query-docs":"Context7 MCP: Query Docs","mcp_io_github_ups_resolve-library-id":"Context7 MCP: Resolve Library ID","mcp_context7_get-library-docs":"Context7 MCP: Get Library Docs","mcp_context7_query-docs":"Context7 MCP: Query Docs","mcp_context7_resolve-library-id":"Context7 MCP: Resolve Library ID",mcp_microsoft_pla_browser_evaluate:"Playwright MCP: Browser Evaluate",mcp_microsoft_pla_browser_install:"Playwright MCP: Browser Install",mcp_microsoft_pla_browser_navigate:"Playwright MCP: Browser Navigate",mcp_microsoft_pla_browser_run_code:"Playwright MCP: Browser Run Code",mcp_microsoft_pla_browser_click:"Playwright MCP: Browser Click",mcp_microsoft_pla_browser_fill_form:"Playwright MCP: Browser Fill Form",mcp_microsoft_pla_browser_press_key:"Playwright MCP: Browser Press Key",mcp_microsoft_pla_browser_resize:"Playwright MCP: Browser Resize",mcp_microsoft_pla_browser_snapshot:"Playwright MCP: Browser Snapshot",mcp_microsoft_pla_browser_tabs:"Playwright MCP: Browser Tabs",mcp_microsoft_pla_browser_take_screenshot:"Playwright MCP: Browser Take Screenshot",mcp_microsoft_pla_browser_type:"Playwright MCP: Browser Type",mcp_microsoft_pla_browser_console_messages:"MCP Microsoft Playwright Browser Console Messages",mcp_microsoft_pla_browser_wait_for:"Mcp Microsoft Pla Browser Wait For",mcp_playwright_browser_click:"Playwright MCP: Browser Click",mcp_playwright_browser_navigate:"Playwright MCP: Browser Navigate",mcp_playwright_browser_snapshot:"Playwright MCP: Browser Snapshot",mcp_playwright_browser_take_screenshot:"Playwright MCP: Browser Take Screenshot","microsoft-playwright-mcp-browser_evaluate":"Playwright MCP: Browser Evaluate","microsoft-playwright-mcp-browser_navigate":"Playwright MCP: Browser Navigate","microsoft-playwright-mcp-browser_snapshot":"Playwright MCP: Browser Snapshot",mcp_pylance_mcp_s_pylanceDocString:"Pylance MCP: Pylance Doc String",mcp_pylance_mcp_s_pylanceRunCodeSnippet:"Pylance MCP: Run Code Snippet",mcp_pylance_mcp_s_pylanceWorkspaceRoots:"Pylance MCP: Workspace Roots",mcp_pylance_mcp_s_pylanceFileSyntaxErrors:"Pylance MCP: File Syntax Errors",mcp_pylance_mcp_s_pylanceSyntaxErrors:"Pylance MCP: Syntax Errors","mcp_chrome-devtoo_click":"Chrome DevTools MCP: Click","mcp_chrome-devtoo_evaluate_script":"Chrome DevTools MCP: Evaluate Script","mcp_chrome-devtoo_fill":"Chrome DevTools MCP: Fill","mcp_chrome-devtoo_get_network_request":"Chrome DevTools MCP: Get Network Request","mcp_chrome-devtoo_list_console_messages":"Chrome DevTools MCP: List Console Messages","mcp_chrome-devtoo_list_pages":"Chrome DevTools MCP: List Pages","mcp_chrome-devtoo_navigate_page":"Chrome DevTools MCP: Navigate Page","mcp_chrome-devtoo_new_page":"Chrome DevTools MCP: New Page","mcp_chrome-devtoo_select_page":"Chrome DevTools MCP: Select Page","mcp_chrome-devtoo_take_screenshot":"Chrome DevTools MCP: Take Screenshot","mcp_chrome-devtoo_fill_form":"Chrome DevTools MCP: Fill Form","mcp_chrome-devtoo_hover":"Chrome DevTools MCP: Hover","mcp_chrome-devtoo_list_network_requests":"Chrome DevTools MCP: List Network Requests","mcp_chrome-devtoo_press_key":"Chrome DevTools MCP: Press Key","mcp_chrome-devtoo_take_snapshot":"Chrome DevTools MCP: Take Snapshot","mcp_chrome-devtoo_wait_for":"Chrome DevTools MCP: Wait For","mcp_chrome-devtoo_close_page":"Chrome DevTools MCP: Close Page","mcp_chrome-devtoo_lighthouse_audit":"Chrome DevTools MCP: Lighthouse Audit","mcp_chrome-devtoo_performance_analyze_insight":"Chrome DevTools MCP: Performance Analyze Insight","mcp_chrome-devtoo_performance_start_trace":"Chrome DevTools MCP: Performance Start Trace","mcp_chrome-devtoo_resize_page":"Chrome DevTools MCP: Resize Page","mcp_chrome-devtoo_type_text":"Chrome DevTools MCP: Type Text",mcp_chrome_devtoo_click:"Chrome DevTools MCP: Click",mcp_chrome_devtoo_evaluate_script:"Chrome DevTools MCP: Evaluate Script",mcp_chrome_devtoo_fill:"Chrome DevTools MCP: Fill",mcp_chrome_devtoo_get_console_message:"Chrome DevTools MCP: Get Console Message",mcp_chrome_devtoo_get_network_request:"Chrome DevTools MCP: Get Network Request",mcp_chrome_devtoo_list_console_messages:"Chrome DevTools MCP: List Console Messages",mcp_chrome_devtoo_list_network_requests:"Chrome DevTools MCP: List Network Requests",mcp_chrome_devtoo_list_pages:"Chrome DevTools MCP: List Pages",mcp_chrome_devtoo_navigate_page:"Chrome DevTools MCP: Navigate Page",mcp_chrome_devtoo_new_page:"Chrome DevTools MCP: New Page",mcp_chrome_devtoo_take_snapshot:"Chrome DevTools MCP: Take Snapshot",mcp_chrome_devtoo_wait_for:"Chrome DevTools MCP: Wait For",mcp_io_github_chr_click:"Chrome DevTools MCP: Click",mcp_io_github_chr_emulate:"Chrome DevTools MCP: Emulate",mcp_io_github_chr_evaluate_script:"Chrome DevTools MCP: Evaluate Script",mcp_io_github_chr_list_network_requests:"Chrome DevTools MCP: List Network Requests",mcp_io_github_chr_list_pages:"Chrome DevTools MCP: List Pages",mcp_io_github_chr_navigate_page:"Chrome DevTools MCP: Navigate Page",mcp_io_github_chr_new_page:"Chrome DevTools MCP: New Page",mcp_io_github_chr_resize_page:"Chrome DevTools MCP: Resize Page",mcp_io_github_chr_select_page:"Chrome DevTools MCP: Select Page",mcp_io_github_chr_take_snapshot:"Chrome DevTools MCP: Take Snapshot",mcp_oraios_serena_activate_project:"Serena: Activate Project",mcp_oraios_serena_check_onboarding_performed:"Serena: Check Onboarding Performed",mcp_oraios_serena_create_text_file:"Serena: Create Text File",mcp_oraios_serena_delete_lines:"Serena: Delete Lines",mcp_oraios_serena_delete_memory:"Serena: Delete Memory",mcp_oraios_serena_edit_memory:"Serena: Edit Memory",mcp_oraios_serena_execute_shell_command:"Serena: Execute Shell Command",mcp_oraios_serena_find_file:"Serena: Find File",mcp_oraios_serena_find_referencing_symbols:"Serena: Find Referencing Symbols",mcp_oraios_serena_find_symbol:"Serena: Find Symbol",mcp_oraios_serena_get_current_config:"Serena: Get Current Config",mcp_oraios_serena_get_symbols_overview:"Serena: Get Symbols Overview",mcp_oraios_serena_initial_instructions:"Serena: Initial Instructions",mcp_oraios_serena_insert_after_symbol:"Serena: Insert After Symbol",mcp_oraios_serena_insert_at_line:"Serena: Insert At Line",mcp_oraios_serena_insert_before_symbol:"Serena: Insert Before Symbol",mcp_oraios_serena_jet_brains_find_referencing_symbols:"Serena: JetBrains Find Referencing Symbols",mcp_oraios_serena_jet_brains_find_symbol:"Serena: JetBrains Find Symbol",mcp_oraios_serena_jet_brains_get_symbols_overview:"Serena: JetBrains Get Symbols Overview",mcp_oraios_serena_jet_brains_type_hierarchy:"Serena: JetBrains Type Hierarchy",mcp_oraios_serena_list_dir:"Serena: List Dir",mcp_oraios_serena_list_memories:"Serena: List Memories",mcp_oraios_serena_onboarding:"Serena: Onboarding",mcp_oraios_serena_open_dashboard:"Serena: Open Dashboard",mcp_oraios_serena_prepare_for_new_conversation:"Serena: Prepare For New Conversation",mcp_oraios_serena_read_file:"Serena: Read File",mcp_oraios_serena_read_memory:"Serena: Read Memory",mcp_oraios_serena_remove_project:"Serena: Remove Project",mcp_oraios_serena_rename_symbol:"Serena: Rename Symbol",mcp_oraios_serena_replace_content:"Serena: Replace Content",mcp_oraios_serena_replace_lines:"Serena: Replace Lines",mcp_oraios_serena_replace_symbol_body:"Serena: Replace Symbol Body",mcp_oraios_serena_restart_language_server:"Serena: Restart Language Server",mcp_oraios_serena_search_for_pattern:"Serena: Search For Pattern",mcp_oraios_serena_summarize_changes:"Serena: Summarize Changes",mcp_oraios_serena_switch_modes:"Serena: Switch Modes",mcp_oraios_serena_think_about_collected_information:"Serena: Think About Collected Information",mcp_oraios_serena_think_about_task_adherence:"Serena: Think About Task Adherence",mcp_oraios_serena_think_about_whether_you_are_done:"Serena: Think About Whether You Are Done",mcp_oraios_serena_write_memory:"Serena: Write Memory","mcp_visuals-mcp_display_image":"Visuals MCP: Display Image","mcp_laravel-boost_tinker":"Laravel Boost MCP: Tinker",bash:"Bash",Bash:"Bash",code_search:"Code Search",detect_memories:"Detect Memories",dismiss_deployment_notifications:"Dismiss Deployment Notifications",get_currentfile:"Get Current File",get_file:"Get File",get_symbols_by_name:"Get Symbols By Name","claude-code":"Claude Code","copilot-cloud-agent":"Copilot Cloud Agent",agent:"Agent",copilotcli:"Copilot CLI","github.copilot.default":"GitHub Copilot Default","github.copilot.workspace":"GitHub Copilot Workspace","github.copilot.vscode":"GitHub Copilot VSCode","github.copilot-dynamic.platform":"GitHub Copilot Dynamic: Platform",glob:"Glob",file_glob_search:"File Glob Search",grep:"Grep",kill_terminal:"Kill Terminal",read:"Read",view:"View",vscode_editFile_internal:"VSCode Edit File (Internal)",vscode_fetchWebPage_internal:"VSCode Fetch Web Page (Internal)",vscode_searchExtensions_internal:"VSCode Search Extensions (Internal)","vscode-websearchforcopilot_webSearch":"VSCode WebSearch for Copilot: Web Search",Build_CMakeTools:"CMake Tools: Build",ListBuildTargets_CMakeTools:"CMake Tools: List Build Targets",ListTests_CMakeTools:"CMake Tools: List Tests",RunCtest_CMakeTools:"CMake Tools: Run CTest","nuget_get-nuget-solver":"NuGet: Get NuGet Solver",webfetch:"Web Fetch",web_fetch:"Web Fetch",write:"Write",edit:"Edit",search_replace:"Search Replace",write_file:"Write File",multiedit:"Multi Edit",question:"Question",skill:"Skill",read_skill:"Read Skill",task:"Task",todowrite:"Todo Write",TodoWrite:"Todo Write",todos:"Todos",todo:"Todo",websearch:"Web Search",WebSearch:"Web Search",click_element:"Click Element",navigate_page:"Navigate Page",open_browser_page:"Open Browser Page",read_page:"Read Page",run_playwright_code:"Run Playwright Code",screenshot_page:"Screenshot Page",type_in_page:"Type in Page",task_complete:"Task Complete","pdf-utilities.pdf":"PDF Utilities: PDF","container-tools_get-config":"Container Tools: Get Config","github-pull-request_activePullRequest":"GitHub Pull Request: Active Pull Request","github-pull-request_currentActivePullRequest":"GitHub Pull Request: Current Active Pull Request","github-pull-request_issue_fetch":"GitHub Pull Request: Issue Fetch","github-pull-request_pullRequestStatusChecks":"GitHub Pull Request: Pull Request Status Checks","github-pull-request_pullRequestInViewport":"GitHub MCP (Remote): Pull Request In Viewport","mcp_powerbi-model_connection_operations":"Power BI MCP: Connection Operations",MiniMax_web_search:"MiniMax: Web Search",dingDocuments_get_document_content:"Ding Documents: Get Document Content",dingDocuments_list_nodes:"Ding Documents: List Nodes",dingDocuments_search_documents:"Ding Documents: Search Documents",fetch_fetch:"Fetch: Fetch",mcp__Claude_in_Chrome__computer:"Claude in Chrome MCP: Computer",mcp__Claude_in_Chrome__navigate:"Claude in Chrome MCP: Navigate",mcp__Claude_in_Chrome__browser_batch:"Claude in Chrome MCP: Browser Batch",mcp__Claude_in_Chrome__get_page_text:"Claude in Chrome MCP: Get Page Text",mcp__Claude_in_Chrome__tabs_context_mcp:"Claude in Chrome MCP: Tabs Context",mcp__Claude_in_Chrome__tabs_create_mcp:"Claude in Chrome MCP: Tabs Create",mcp__Claude_in_Chrome__javascript_tool:"Claude in Chrome MCP: Javascript Tool",mcp__Claude_in_Chrome__read_console_messages:"Claude in Chrome MCP: Read Console Messages",mcp__Claude_in_Chrome__read_network_requests:"Claude in Chrome MCP: Read Network Requests",mcp__Claude_in_Chrome:"Claude in Chrome MCP",mcp__Claude_in_Chrome__find:"Claude in Chrome MCP: Find",mcp__Claude_in_Chrome__form_input:"Claude in Chrome MCP: Form Input",mcp__Claude_in_Chrome__list_connected_browsers:"Claude in Chrome MCP: List Connected Browsers",mcp__Claude_in_Chrome__read_page:"Claude in Chrome MCP: Read Page",mcp__Claude_in_Chrome__select_browser:"Claude in Chrome MCP: Select Browser",mcp__cowork__allow_cowork_file_delete:"Cowork MCP: Allow Cowork File Delete",mcp__cowork__present_files:"Cowork MCP: Present Files",mcp__cowork__request_cowork_directory:"Cowork MCP: Request Cowork Directory","mcp__cowork-onboarding__show_onboarding_role_picker":"Cowork Onboarding MCP: Show Onboarding Role Picker",TaskOutput:"Task Output",TaskStop:"Task Stop",mcp__plugins__search_plugins:"Plugins MCP: Search Plugins",mcp__plugins__suggest_plugin_install:"Plugins MCP: Suggest Plugin Install",mcp__workspace__bash:"Workspace MCP: Bash",mcp__workspace__web_fetch:"Workspace MCP: Web Fetch","mcp__mcp-registry__search_mcp_registry":"MCP Registry: Search MCP Registry",Agent:"Agent",Edit:"Edit",Glob:"Glob",Grep:"Grep",NotebookEdit:"Notebook Edit",Read:"Read",Skill:"Skill",TaskCreate:"Task Create",TaskUpdate:"Task Update",ToolSearch:"Tool Search",Write:"Write","mcp__claude_ai_Context7__resolve-library-id":"Context7 MCP (Claude): Resolve Library ID",mcp__claude_ai_Excalidraw__create_view:"Excalidraw MCP (Claude): Create View",mcp__claude_ai_Excalidraw__read_me:"Excalidraw MCP (Claude): Read Me","mcp__claude_ai_Notion__notion-create-pages":"Notion MCP (Claude): Create Pages","mcp__claude_ai_Notion__notion-fetch":"Notion MCP (Claude): Fetch","mcp__claude_ai_Notion__notion-search":"Notion MCP (Claude): Search","mcp__claude_ai_Notion__notion-update-page":"Notion MCP (Claude): Update Page","mcp__context7__query-docs":"Context7 MCP: Query Docs","mcp__context7__resolve-library-id":"Context7 MCP: Resolve Library ID","mcp__databricks-sql-allscopes__authenticate":"Databricks SQL MCP: Authenticate","mcp__databricks-sql-allscopes__complete_authentication":"Databricks SQL MCP: Complete Authentication","mcp__databricks-sql__authenticate":"Databricks SQL MCP: Authenticate",mcp__playwright__browser_evaluate:"Playwright MCP: Browser Evaluate",mcp__playwright__browser_navigate:"Playwright MCP: Browser Navigate","mcp__plugin_context7_context7__query-docs":"Context7 MCP: Query Docs","mcp__plugin_context7_context7__resolve-library-id":"Context7 MCP: Resolve Library ID","mcp__shopify-dev-mcp__learn_shopify_api":"Shopify Dev MCP: Learn Shopify API","mcp__shopify-dev-mcp__search_docs_chunks":"Shopify Dev MCP: Search Docs Chunks","mcp__shopify-dev-mcp__validate_graphql_codeblocks":"Shopify Dev MCP: Validate GraphQL Codeblocks",invalid:"Invalid",rename_session:"Rename Session",update_topic:"Update Topic",rename_branch:"Rename Branch",report_intent:"Report Intent",create_pull_request:"Create Pull Request",update_pull_request:"Update Pull Request",powershell:"PowerShell",ask_user:"Ask User",sql:"SQL",show_file:"Show File",exit_plan_mode:"Exit Plan Mode",get_changes_overview:"Get Changes Overview",annotate_diff_line:"Annotate Diff",add_pr_review_comment:"Add PR Review Comment",remove_pr_review_comment:"Remove PR Review Comment",reply_to_comment:"Reply to Comment",open_pr_session:"Open PR Session",open_issue_session:"Open Issue Session",create_session:"Create Session",list_sessions_and_chats:"List Sessions & Chats",list_projects:"List Projects",get_session:"Get Session",navigate_to:"Navigate To",delete_item:"Delete Item",send_session_message:"Send Session Message",send_chat_message:"Send Chat Message",read_agent:"Read Agent",write_agent:"Write Agent",list_agents:"List Agents",discover_widgets:"Discover Widgets",render_widget:"Render Widget",clear_widget:"Clear Widget",extensions_manage:"Extensions Manage",extensions_reload:"Extensions Reload",create:"Create",fetch_copilot_cli_documentation:"Fetch Copilot CLI Documentation",generate_findings:"Generate Findings",generate_topics:"Generate Topics",list_bash:"List Bash",read_bash:"Read Bash",write_bash:"Write Bash",stop_bash:"Stop Bash",list_powershell:"List PowerShell",read_powershell:"Read PowerShell",render_widget_inbox:"Render Widget Inbox",rg:"Ripgrep",stop_powershell:"Stop PowerShell",store_memory:"Store Memory",web_search:"Web Search",write_powershell:"Write PowerShell",slidev_chooseEntry:"Slidev: Choose Entry",slidev_getPreviewPort:"Slidev: Get Preview Port",clarify_requirements:"Clarify Requirements",get_tests:"Get Tests","ide-get_diagnostics":"IDE: Get Diagnostics","ide-get_selection":"IDE: Get Selection",plan:"Plan",signal_plan_ready:"Signal Plan Ready",update_plan_progress:"Update Plan Progress",EnterPlanMode:"Enter Plan Mode",ExitPlanMode:"Exit Plan Mode",mcp_reload:"MCP: Reload",mcp_validate:"MCP: Validate",stop_agent:"Stop Agent","workiq-accept_eula":"WorkIQ: Accept EULA","workiq-ask_work_iq":"WorkIQ: Ask Work IQ","mcp_ado-remote-mc_core_list_projects":"Azure DevOps MCP: Core List Projects","mcp_ado-remote-mc_repo_branch":"Azure DevOps MCP: Repo Branch","mcp_ado-remote-mc_repo_pull_request":"Azure DevOps MCP: Repo Pull Request","mcp_ado-remote-mc_repo_pull_request_thread":"Azure DevOps MCP: Repo Pull Request Thread","mcp_ado-remote-mc_repo_pull_request_write":"Azure DevOps MCP: Repo Pull Request Write","mcp_ado-remote-mc_repo_repository":"Azure DevOps MCP: Repo Repository","mcp_ado-remote-mc_search_workitem":"Azure DevOps MCP: Search Work Item","mcp_ado-remote-mc_wit_get_work_item":"Azure DevOps MCP: Get Work Item","mcp_ado-remote-mc_wit_work_item":"Azure DevOps MCP: Work Item","mcp_ado-remote-mc_wit_work_item_comment_write":"Azure DevOps MCP: Work Item Comment Write","mcp_ado-remote-mc_wit_work_item_link_write":"Azure DevOps MCP: Work Item Link Write","mcp_ado-remote-mc_wit_work_item_write":"Azure DevOps MCP: Work Item Write",mssql_list_servers:"MSSQL: List Servers",add_loaded_assembly:"Add Loaded Assembly",analyze_symbol:"Analyze Symbol",search_decompiled_symbols:"Search Decompiled Symbols",get_classification_rubric:"Get Classification Rubric",get_weather:"Get Weather",mcp_azure_mcp_search:"Azure MCP: Search",mcp_gitnexus_context:"GitNexus MCP: Context",mcp_gitnexus_cypher:"GitNexus MCP: Cypher",mcp_gitnexus_detect_changes:"GitNexus MCP: Detect Changes",mcp_gitnexus_impact:"GitNexus MCP: Impact",mcp_gitnexus_list_repos:"GitNexus MCP: List Repos",mcp_gitnexus_query:"GitNexus MCP: Query",slidev_getSlideContent:"Slidev: Get Slide Content",mcp__GitLab__get_mcp_server_version:"GitLab MCP: Get MCP Server Version",mcp__plugin_figma_figma__get_design_context:"Figma MCP: Get Design Context",mcp__plugin_figma_figma__get_metadata:"Figma MCP: Get Metadata",mcp__plugin_figma_figma__get_screenshot:"Figma MCP: Get Screenshot",mcp_io_github_tav_tavily_extract:"MCP Io GitHub Tavily Extract",mcp_io_github_tav_tavily_search:"MCP Io GitHub Tavily Search",browser_wait_for:"Browser Wait For",copilot_sessionStoreSql:"Copilot Session Store Sql",explore_subagent:"Explore Subagent","github.copilot.terminalPanel":"Github Copilot Terminal Panel",handle_dialog:"Handle Dialog",run_subagent:"Run Subagent",testFailure:"Test Failure","mcp_angular-cli_get_best_practices":"Angular MCP: Get Best Practices","mcp_angular-cli_list_projects":"Angular MCP: Get Project List",mcp_azure_mcp_extension_cli_generate:"Azure MCP (Local): Generate",mcp_playwright_browser_console_messages:"Playwright MCP: Browser Console Messages",mcp_com_figma_mcp_get_design_context:"Figma MCP (Local): Get Design Context",mcp_com_figma_mcp_get_screenshot:"Figma MCP (Local): Get Screenshot",mcp__Bicep__get_bicep_best_practices:"Bicep MCP: Get Bicep Best Practices","mcp__microsoft-docs-learn__microsoft_docs_fetch":"Microsoft Learn MCP: Microsoft Docs Fetch","mcp__microsoft-docs-learn__microsoft_docs_search":"Microsoft Learn MCP: Microsoft Docs Search",mcp__azure__subscription_list:"Azure MCP: Subscription List",mcp__bicep__get_bicep_file_diagnostics:"Bicep MCP: File Diagnostics",mcp__linear__authenticate:"Linear MCP: Authenticate",mcp__linear__get_issue:"Linear MCP: Get Issue",mcp__linear__list_issues:"Linear MCP: List Issues",mcp__linear__list_teams:"Linear MCP: List Teams",mcp__linear__save_issue:"Linear MCP: Save Issue",mcp_workiq_accept_eula:"WorkIQ Accept EULA",mcp_workiq_ask_work_iq:"WorkIQ Ask Work IQ","mcp_microsoft-lea_microsoft_code_sample_search":"Microsoft Docs MCP (Local): Search Code Sample","mcp_microsoft-lea_microsoft_docs_search":"Microsoft Docs MCP (Remote): Search Docs","mcp_upstash_conte_query-docs":"MCP Upstash: Query Docs","mcp_upstash_conte_resolve-library-id":"MCP Upstash: Resolve Library ID",mcp__Bicep__list_avm_metadata:"MCP Bicep: List Azure Verified Module Metadata",google_research:"Google Research",task_execution:"Task Execution",tool_search_tool_regex:"Tool Search",FindDatabaseObjectsThat:"Find Database Objects That",GetTableColumnNames:"Get Table Column Names",SchemaStore_getSchema:"Schema Store Get Schema",SchemaStore_searchSchemas:"Schema Store Search Schemas",SearchSchemasForOnePartName:"Search Schemas For One Part Name",ValidateGeneratedTSQL:"Validate Generated T-SQL",aspire_execute_resource_command:"Aspire Execute Resource Command",aspire_get_doc:"Aspire Get Doc",aspire_list_console_logs:"Aspire List Console Logs",aspire_list_resources:"Aspire List Resources",aspire_list_structured_logs:"Aspire List Structured Logs",aspire_search_docs:"Aspire Search Docs",codesearch:"CodeSearch","context-engine_context_search":"Context Engine Context Search","context7_query-docs":"Context7 Query Docs","context7_resolve-library-id":"Context7 Resolve Library ID",playwright_browser_navigate:"Playwright Browser Navigate",run_tests:"Run Tests","azure-subscription_list":"Azure Subscription List",debugger_evaluate_expressions:"Debugger Evaluate Expressions",debugger_get_output_window_text:"Debugger Get Output Window Text",get_symbols:"Get Symbols",lookup_vs:"Lookup VS",search_web:"Search Web","aspire-get_doc":"Get Doc","aspire-search_docs":"Search Docs",vote_memory:"Vote Memory",create_issue:"Issue Create",save_workflow:"Workflow Save","context-mode_ctx_execute":"Context Mode: Execute","mcp_context-mode_ctx_batch_execute":"Context Mode: Batch Execute","mcp_context-mode_ctx_execute":"Context Mode: Execute","mcp_context-mode_ctx_search":"Context Mode: Search",mcp_github_issue_read:"GitHub MCP (Remote): Issue Read",mcp_github_search_repositories:"GitHub MCP (Remote): Search Repositories",mcp_io_github_tav_tavily_map:"Tavily MCP: Map","mcp_lean-ctx_ctx_call":"Lean Context: Call","mcp_lean-ctx_ctx_discover_tools":"Lean Context: Discover Tools","mcp_lean-ctx_ctx_edit":"Lean Context: Edit","mcp_lean-ctx_ctx_graph":"Lean Context: Graph","mcp_lean-ctx_ctx_knowledge":"Lean Context: Knowledge","mcp_lean-ctx_ctx_multi_read":"Lean Context: Multi Read","mcp_lean-ctx_ctx_overview":"Lean Context: Overview","mcp_lean-ctx_ctx_read":"Lean Context: Read","mcp_lean-ctx_ctx_search":"Lean Context: Search","mcp_lean-ctx_ctx_session":"Lean Context: Session","mcp_lean-ctx_ctx_shell":"Lean Context: Shell","mcp_lean-ctx_ctx_tree":"Lean Context: Tree","mcp_mcp-server-ti_get_current_time":"Time MCP: Get Current Time",mcp_playwright_browser_close:"Playwright MCP: Browser Close",mcp_playwright_browser_evaluate:"Playwright MCP: Browser Evaluate",mcp_playwright_browser_fill_form:"Playwright MCP: Browser Fill Form",mcp_playwright_browser_network_request:"Playwright MCP: Browser Network Request",mcp_playwright_browser_network_requests:"Playwright MCP: Browser Network Requests",mcp_playwright_browser_press_key:"Playwright MCP: Browser Press Key",mcp_playwright_browser_resize:"Playwright MCP: Browser Resize",mcp_playwright_browser_run_code_unsafe:"Playwright MCP: Browser Run Code Unsafe",mcp_playwright_browser_type:"Playwright MCP: Browser Type",mcp_playwright_browser_wait_for:"Playwright MCP: Browser Wait For",mcp_pylance_mcp_s_pylancePythonEnvironments:"Pylance MCP: Python Environments","mcp_spec-gen_get_architecture_overview":"Spec Gen MCP: Get Architecture Overview","mcp_spec-gen_get_call_graph":"Spec Gen MCP: Get Call Graph",mcp_specgen_analyze_codebase:"Spec Gen MCP: Analyze Codebase",mcp_specgen_get_function_body:"Spec Gen MCP: Get Function Body",mcp_specgen_get_spec:"Spec Gen MCP: Get Spec",mcp_specgen_list_spec_domains:"Spec Gen MCP: List Spec Domains",mcp_specgen_orient:"Spec Gen MCP: Orient",mcp_specgen_search_code:"Spec Gen MCP: Search Code",mcp_specgen_search_specs:"Spec Gen MCP: Search Specs",mcp_stitch_apply_design_system:"Stitch: Apply Design System",mcp_stitch_create_design_system:"Stitch: Create Design System",mcp_stitch_create_project:"Stitch: Create Project",mcp_stitch_edit_screens:"Stitch: Edit Screens",mcp_stitch_generate_screen_from_text:"Stitch: Generate Screen From Text",mcp_stitch_get_project:"Stitch: Get Project",mcp_stitch_get_screen:"Stitch: Get Screen",mcp_stitch_list_design_systems:"Stitch: List Design Systems",mcp_stitch_list_projects:"Stitch: List Projects",mcp_stitch_list_screens:"Stitch: List Screens",mcp_symdex_build_context_pack:"Symdex: Build Context Pack",mcp_symdex_get_callees:"Symdex: Get Callees",mcp_symdex_get_callers:"Symdex: Get Callers",mcp_symdex_get_file_outline:"Symdex: Get File Outline",mcp_symdex_get_file_tree:"Symdex: Get File Tree",mcp_symdex_get_graph_diagram:"Symdex: Get Graph Diagram",mcp_symdex_get_index_status:"Symdex: Get Index Status",mcp_symdex_get_repo_outline:"Symdex: Get Repo Outline",mcp_symdex_get_repo_stats:"Symdex: Get Repo Stats",mcp_symdex_index_folder:"Symdex: Index Folder",mcp_symdex_list_repos:"Symdex: List Repos",mcp_symdex_search_routes:"Symdex: Search Routes",mcp_symdex_search_symbols:"Symdex: Search Symbols",mcp_symdex_search_text:"Symdex: Search Text",mcp_tavily_tavily_crawl:"Tavily: Crawl",mcp_tavily_tavily_extract:"Tavily: Extract",mcp_tavily_tavily_search:"Tavily: Search",mcp_time_get_current_time:"Time: Get Current Time",mcp_trueline_trueline_outline:"Trueline: Outline",mcp_trueline_trueline_read:"Trueline: Read",mcp_trueline_trueline_search:"Trueline: Search",mcp_zettelkasten_zk_create_link:"Zettelkasten: Create Link",mcp_zettelkasten_zk_create_note:"Zettelkasten: Create Note",mcp_zettelkasten_zk_get_note:"Zettelkasten: Get Note",mcp_zettelkasten_zk_remove_link:"Zettelkasten: Remove Link",mcp_zettelkasten_zk_search_notes:"Zettelkasten: Search Notes",mcp_zettelkasten_zk_update_note:"Zettelkasten: Update Note",copilot_listCodeUsages:"Copilot: List Code Usages",create_new_file:"Windsurf: File Create",edit_existing_file:"Windsurf: File Edit","github.copilot.editingSession":"GitHub MCP (Local): Assign Copilot to Issue",mssql_connect:"SQL Server Connection",mssql_disconnect:"SQL Server Disconnection",mssql_list_tables:"SQL Server Tables List",mssql_run_query:"SQL Server Query Execution",run_terminal_command:"Terminal Command Run",single_find_and_replace:"Find and Replace",mcp_io_github_git_add_comment_to_pending_review:"GitHub MCP (Local): Add Comment To Pending Review",mcp_io_github_git_add_reply_to_pull_request_comment:"GitHub MCP (Local): Add Reply To Pull Request Comment",mcp_io_github_git_pull_request_review_write:"GitHub MCP (Local): Pull Request Review Write",mcp_aikido_aikido_full_scan:"Aikido MCP: Full Scan",mcp_aikido_aikido_issues_list:"Aikido MCP: Issues List",mcp_com_atlassian_addCommentToJiraIssue:"Atlassian MCP: Add Comment To Jira Issue",mcp_com_atlassian_atlassianUserInfo:"Atlassian MCP: User Info",mcp_com_atlassian_createConfluencePage:"Atlassian MCP: Create Confluence Page",mcp_com_atlassian_getAccessibleAtlassianResources:"Atlassian MCP: Get Accessible Atlassian Resources",mcp_com_atlassian_getConfluencePage:"Atlassian MCP: Get Confluence Page",mcp_com_atlassian_getConfluencePageFooterComments:"Atlassian MCP: Get Confluence Page Footer Comments",mcp_com_atlassian_getConfluenceSpaces:"Atlassian MCP: Get Confluence Spaces",mcp_com_atlassian_getJiraIssue:"Atlassian MCP: Get Jira Issue",mcp_com_atlassian_search:"Atlassian MCP: Search",mcp_com_atlassian_searchJiraIssuesUsingJql:"Atlassian MCP: Search Jira Issues Using JQL",mcp_com_atlassian_updateConfluencePage:"Atlassian MCP: Update Confluence Page",mcp_sonarqube_analyze_code_snippet:"SonarQube MCP: Analyze Code Snippet",mcp_sonarqube_get_project_quality_gate_status:"SonarQube MCP: Get Project Quality Gate Status",mcp_sonarqube_search_my_sonarqube_projects:"SonarQube MCP: Search My SonarQube Projects",mcp_sonarqube_search_security_hotspots:"SonarQube MCP: Search Security Hotspots",mcp_sonarqube_search_sonar_issues_in_projects:"SonarQube MCP: Search Sonar Issues In Projects",sonarqube_analyze_file:"SonarQube: Analyze File","azure-bicepschema":"Azure Bicep Schema","azure-documentation":"Azure Documentation","azure-extension_cli_generate":"Azure Extension CLI Generate","azure-get_azure_bestpractices":"Get Azure Best Practices"};var $g=wo.pricing;function $e(n){return n?n.actualTokens>0?n.actualTokens:n.tokens:0}function pr(n){let e=re(n);return e.includes("/.copilot/jb/")?"JetBrains":e.includes("/.copilot/session-store.db#")||e.includes("/.copilot/session-state/")?"Copilot CLI":e.includes("/.crush/crush.db#")?"Crush":e.includes("/opencode/")?"OpenCode":e.includes("/.continue/sessions/")?"Continue":e.includes("/local-agent-mode-sessions/")?"Claude Desktop Cowork":e.includes("/.claude/projects/")?"Claude Code":e.includes("/.vibe/logs/session/")?"Mistral Vibe":e.includes("/.gemini/antigravity/brain/")?"Antigravity":e.includes("/.gemini/tmp/")&&e.includes("/chats/session-")&&e.endsWith(".jsonl")?"Gemini CLI":e.includes("/cursor/")?"Cursor":e.includes("/code - insiders/")?"VS Code Insiders":e.includes("/code - exploration/")?"VS Code Exploration":e.includes("/vscodium/")?"VSCodium":e.includes(".vscode-server-insiders/")?"VS Code Server (Insiders)":e.includes(".vscode-server")?"VS Code Server":e.includes("/.vs/")&&e.includes("/copilot-chat/")?"Visual Studio":"VS Code"}async function gr(n,e,t=20){if(n.length===0)return[];let s=new Array(n.length),o=0,i=Array.from({length:Math.min(t,n.length)},async()=>{for(;o<n.length;){let r=o++;try{s[r]=await e(n[r],r)}catch{s[r]=void 0}}});return await Promise.all(i),s}function sn(){return{tokens:0,thinkingTokens:0,estimatedTokens:0,actualTokens:0,sessions:0,avgInteractionsPerSession:0,avgTokensPerSession:0,modelUsage:{},editorUsage:{},co2:0,treesEquivalent:0,waterUsage:0,estimatedCost:0}}function nn(n,e,t){let s=Math.round($e(e)*t),o=Math.round(e.thinkingTokens*t),i=Math.round(e.actualTokens*t);n.tokens+=s,n.thinkingTokens+=o,n.estimatedTokens+=Math.round(e.tokens*t),n.actualTokens+=i,n.sessions++;for(let[d,m]of Object.entries(e.modelUsage))n.modelUsage[d]||(n.modelUsage[d]={inputTokens:0,outputTokens:0}),n.modelUsage[d].inputTokens+=Math.round(m.inputTokens*t),n.modelUsage[d].outputTokens+=Math.round(m.outputTokens*t),m.cachedReadTokens!==void 0&&(n.modelUsage[d].cachedReadTokens=(n.modelUsage[d].cachedReadTokens??0)+Math.round(m.cachedReadTokens*t)),m.cacheCreationTokens!==void 0&&(n.modelUsage[d].cacheCreationTokens=(n.modelUsage[d].cacheCreationTokens??0)+Math.round(m.cacheCreationTokens*t));let r=Math.round(e.interactions*t),l=n.avgInteractionsPerSession*(n.sessions-1)+r;n.avgInteractionsPerSession=n.sessions>0?l/n.sessions:0,n.editorUsage[e.editorSource]||(n.editorUsage[e.editorSource]={tokens:0,sessions:0}),n.editorUsage[e.editorSource].tokens+=s,n.editorUsage[e.editorSource].sessions++}function Mo(){return{sessions:0,toolCalls:{total:0,byTool:{}},modeUsage:{ask:0,edit:0,agent:0,plan:0,customAgent:0,cli:0},contextReferences:ae(),mcpTools:{total:0,byServer:{},byTool:{}},modelSwitching:{modelsPerSession:[],totalSessions:0,averageModelsPerSession:0,maxModelsPerSession:0,minModelsPerSession:0,switchingFrequency:0,standardModels:[],premiumModels:[],unknownModels:[],mixedTierSessions:0,standardRequests:0,premiumRequests:0,unknownRequests:0,totalRequests:0},repositories:[],repositoriesWithCustomization:[],editScope:{singleFileEdits:0,multiFileEdits:0,totalEditedFiles:0,avgFilesPerSession:0},applyUsage:{totalApplies:0,totalCodeBlocks:0,applyRate:0},sessionDuration:{totalDurationMs:0,avgDurationMs:0,avgFirstProgressMs:0,avgTotalElapsedMs:0,avgWaitTimeMs:0},conversationPatterns:{multiTurnSessions:0,singleTurnSessions:0,avgTurnsPerSession:0,maxTurnsInSession:0},agentTypes:{editsAgent:0,defaultAgent:0,workspaceAgent:0,other:0}}}var To=[{bg:"rgba(54, 162, 235, 0.6)",border:"rgba(54, 162, 235, 1)"},{bg:"rgba(255, 99, 132, 0.6)",border:"rgba(255, 99, 132, 1)"},{bg:"rgba(75, 192, 192, 0.6)",border:"rgba(75, 192, 192, 1)"},{bg:"rgba(153, 102, 255, 0.6)",border:"rgba(153, 102, 255, 1)"},{bg:"rgba(255, 159, 64, 0.6)",border:"rgba(255, 159, 64, 1)"},{bg:"rgba(255, 205, 86, 0.6)",border:"rgba(255, 205, 86, 1)"},{bg:"rgba(201, 203, 207, 0.6)",border:"rgba(201, 203, 207, 1)"},{bg:"rgba(100, 181, 246, 0.6)",border:"rgba(100, 181, 246, 1)"}];function on(n,e,t){if(!n||!e)throw new Error("buildChartPayload: labels and days are required");if(n.length!==e.length)throw new Error(`buildChartPayload: labels.length (${n.length}) !== days.length (${e.length})`);let s=P=>`${P.getFullYear()}-${String(P.getMonth()+1).padStart(2,"0")}-${String(P.getDate()).padStart(2,"0")}`,o=P=>{let E=P.map(K=>K.entry),F=P.map(K=>K.label),X=E.map(K=>K.tokens),ee=E.map(K=>K.sessions),Q=new Set;E.forEach(K=>Object.keys(K.modelUsage).forEach(be=>Q.add(be)));let cs=Array.from(Q).map((K,be)=>{let ut=To[be%To.length];return{label:K,data:E.map(jt=>{let ds=jt.modelUsage[K];return ds?ds.inputTokens+ds.outputTokens:0}),backgroundColor:ut.bg,borderColor:ut.border,borderWidth:1}}),Gt=new Set;E.forEach(K=>Object.keys(K.editorUsage).forEach(be=>Gt.add(be)));let Pe=Array.from(Gt).map((K,be)=>{let ut=To[be%To.length];return{label:K,data:E.map(jt=>jt.editorUsage[K]?.tokens||0),backgroundColor:ut.bg,borderColor:ut.border,borderWidth:1}}),us=X.reduce((K,be)=>K+be,0),ct=ee.reduce((K,be)=>K+be,0),Ye=P.length,an=E.map(K=>Os(K.modelUsage,$g,"copilot")),ln=an.reduce((K,be)=>K+be,0),No=Ye>0?ln/Ye:0;return{labels:F,tokensData:X,sessionsData:ee,modelDatasets:cs,editorDatasets:Pe,repositoryDatasets:[],periodCount:Ye,totalTokens:us,totalSessions:ct,avgPerPeriod:Ye>0?Math.round(us/Ye):0,costData:an,totalCost:ln,avgCostPerPeriod:No}},i=(P,E)=>{P.tokens+=E.tokens,P.sessions+=E.sessions;for(let[F,X]of Object.entries(E.modelUsage))P.modelUsage[F]||(P.modelUsage[F]={inputTokens:0,outputTokens:0}),P.modelUsage[F].inputTokens+=X.inputTokens,P.modelUsage[F].outputTokens+=X.outputTokens,X.cachedReadTokens!==void 0&&(P.modelUsage[F].cachedReadTokens=(P.modelUsage[F].cachedReadTokens??0)+X.cachedReadTokens),X.cacheCreationTokens!==void 0&&(P.modelUsage[F].cacheCreationTokens=(P.modelUsage[F].cacheCreationTokens??0)+X.cacheCreationTokens);for(let[F,X]of Object.entries(E.editorUsage))P.editorUsage[F]||(P.editorUsage[F]={tokens:0,sessions:0}),P.editorUsage[F].tokens+=X.tokens,P.editorUsage[F].sessions+=X.sessions},r=()=>({tokens:0,sessions:0,modelUsage:{},editorUsage:{}}),l=new Date,d=n.map((P,E)=>({label:P,entry:e[E]})),m=o(d),p=P=>{let E=new Date(P);E.setHours(0,0,0,0);let F=E.getDay();return E.setDate(E.getDate()-(F===0?6:F-1)),E},f=P=>{let E=new Date(P);return E.setDate(P.getDate()+6),P.getMonth()===E.getMonth()?`${P.toLocaleDateString("en-US",{month:"short"})} ${P.getDate()}\u2013${E.getDate()}`:`${P.toLocaleDateString("en-US",{month:"short",day:"numeric"})}\u2013${E.toLocaleDateString("en-US",{month:"short",day:"numeric"})}`},_=p(l),k=new Map;for(let P=5;P>=0;P--){let E=new Date(_);E.setDate(_.getDate()-P*7);let F=s(E);k.set(F,{label:f(E),entry:r()})}let b=t||new Map(n.map((P,E)=>[P,e[E]]));for(let[P,E]of b.entries()){let F=p(new Date(P+"T00:00:00")),X=k.get(s(F));X&&i(X.entry,E)}let M=Array.from(k.values()),O=o(M),v=new Map;for(let P=11;P>=0;P--){let E=new Date(l.getFullYear(),l.getMonth()-P,1),F=`${E.getFullYear()}-${String(E.getMonth()+1).padStart(2,"0")}`,X=E.toLocaleDateString("en-US",{month:"short",year:"numeric"});v.set(F,{label:X,entry:r()})}for(let[P,E]of b.entries()){let F=P.slice(0,7),X=v.get(F);X&&i(X.entry,E)}let I=Array.from(v.values()),Z=o(I),B={};return e.forEach(P=>{Object.entries(P.editorUsage).forEach(([E,F])=>{B[E]=(B[E]||0)+F.tokens})}),{labels:m.labels,tokensData:m.tokensData,sessionsData:m.sessionsData,modelDatasets:m.modelDatasets,editorDatasets:m.editorDatasets,editorTotalsMap:B,repositoryDatasets:[],repositoryTotalsMap:{},dailyCount:m.periodCount,totalTokens:m.totalTokens,avgTokensPerDay:m.periodCount>0?Math.round(m.totalTokens/m.periodCount):0,totalSessions:m.totalSessions,lastUpdated:new Date().toISOString(),backendConfigured:!1,periodsReady:!0,periods:{day:m,week:O,month:Z}}}function z(n){return n==null||!Number.isFinite(n)?"0":Math.round(n).toLocaleString("en-US")}function le(n){return n==null||!Number.isFinite(n)||n<0?"0":n>=1e9?`${(n/1e9).toFixed(1)}B`:n>=1e6?`${(n/1e6).toFixed(1)}M`:n>=1e3?`${(n/1e3).toFixed(1)}K`:n.toString()}var vo=ec.estimators,Lt=wo.pricing,zg=tc,Hg=n=>{},fr=n=>{},nc=(n,e)=>{let t=e instanceof Error?e.message:e!==void 0?String(e):"";console.error(S.red(n),t)};async function Wg(n){try{let e=await lt.promises.readFile(n,"utf-8");return JSON.parse(e)}catch(e){return e?.code!=="ENOENT"&&nc(`[readJsonFile] Failed to read or parse JSON at ${n}:`,e),null}}var Po=null;function rn(){if(Po)return Po;let n=En.file(__dirname);return Po=tr({...er(n),estimateTokens:(e,t)=>W(e,t??"gpt-4",vo),isMcpTool:Ze,extractMcpServerName:ht}),Po}function oc(){return new Fn({log:Hg,warn:fr,error:nc,ecosystems:rn()})}async function fe(){return oc().getCopilotSessionFiles()}async function xo(n){let e=new Set,t=Ce.join(sc.homedir(),".claude","projects");for(let o of n){if(o.startsWith(t+Ce.sep)||o.startsWith(t+"/")){let f=await At(()=>lt.promises.readFile(o,"utf-8"),null,`buildCustomizationMatrix readFile(${o})`);if(f!==null){let _=f.split(`
66
- `).slice(0,30);for(let k of _)if(k.trim())try{let b=JSON.parse(k);if(b.cwd&&typeof b.cwd=="string"){e.add(b.cwd);break}}catch{}}continue}let i=Ce.dirname(o);if(Ce.basename(i)!=="chatSessions")continue;let r=Ce.dirname(i),l=Ce.join(r,"workspace.json"),d=await Wg(l);if(!d)continue;let m=d.folder;if(!m||!m.startsWith("file://"))continue;let p=Dn(m);p&&e.add(p)}if(e.size===0)return;let s=0;for(let o of e)await At(async()=>{let[r,l,d]=await Promise.all([lt.promises.access(Ce.join(o,".github","copilot-instructions.md")).then(()=>!0).catch(()=>!1),lt.promises.access(Ce.join(o,"agents.md")).then(()=>!0).catch(()=>!1),lt.promises.access(Ce.join(o,"CLAUDE.md")).then(()=>!0).catch(()=>!1)]);return!r&&!l&&!d},!0,`buildCustomizationMatrix workspace check(${o})`)&&s++;return{customizationTypes:[],workspaces:[],totalWorkspaces:e.size,workspacesWithIssues:s}}function Ao(){return oc().getDiagnosticCandidatePaths()}function Vg(n,e){return W(n,e||"gpt-4",vo)}function Jg(n){return _t(n,Lt)}async function ic(n){let e=rn().find(t=>t.handles(n));return e?e.stat(n):lt.promises.stat(n)}async function Kg(n,e=!1){let t=Ce.basename(n,Ce.extname(n));if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t))return null;let o=n.replace(/\\/g,"/").match(/^(.*\/workspaceStorage\/[^/]+)\//);if(!o)return null;let r=o[1].replace(/\//g,"\\"),l=["GitHub.copilot-chat","github.copilot-chat","GitHub.copilot","github.copilot"];for(let d of l){let m=Ce.join(r,d,"debug-logs",t,"main.jsonl");try{let p=await lt.promises.readFile(m,"utf8"),f=ol(p);if(f)return e&&console.error(` \u2713 Found debug log: ${t} (tokens: ${f.inputTokens+f.outputTokens})`),f}catch{}}return e&&console.error(` \u2717 No debug log found: ${t}`),null}async function as(n,e=!1){try{let t=await ic(n),s=Zl(n,t.mtimeMs,t.size);if(s)return s;let o=rn().find(M=>M.handles(n));if(o){let[M,O,v]=await Promise.all([o.getTokens(n),o.countInteractions(n),o.getModelUsage(n)]),I=de(t.mtime),Z={file:n,tokens:M.actualTokens>0?M.actualTokens:M.tokens,thinkingTokens:M.thinkingTokens,actualTokens:M.actualTokens,interactions:O,modelUsage:v,lastModified:t.mtime,editorSource:pr(n),dailyFractions:await o.getDailyFractions?.(n)??{[I]:1}};return dr(n,t.mtimeMs,t.size,Z),Z}let i=await lt.promises.readFile(n,"utf-8");if(!i.trim())return null;let r=n.endsWith(".jsonl")||nt(i),l=0,d=0,m=0,p=0,f={};if(r){let M=lo(i);if(l=M.actualTokens>0?M.actualTokens:M.tokens,d=M.thinkingTokens,m=M.actualTokens,f=await Hi({warn:fr,tokenEstimators:vo,modelPricing:Lt,ecosystems:rn()},n,i),Object.keys(f).length===0&&po(n)){let v=go(i);Object.keys(v.modelUsage).length>0?f=v.modelUsage:v.tokens>0&&(f={[v.modelHint&&v.modelHint!=="unknown"?v.modelHint:"unknown"]:{inputTokens:v.tokens,outputTokens:0}})}let O=i.trim().split(`
67
- `);for(let v of O)try{let I=JSON.parse(v);(I.type==="user.message"||I.kind===2&&I.k?.[0]==="requests")&&p++}catch{}}else{let M=Wl(n,i,Vg,Jg);l=M.tokens,d=M.thinkingTokens,m=M.actualTokens,p=M.interactions,f=M.modelUsage}let _=Vl(i,r,t.mtime),k=await Kg(n,e);if(k&&k.inputTokens+k.outputTokens>0&&(l=k.inputTokens+k.outputTokens,m=l,Object.keys(k.modelBreakdown).length>0)){f={};for(let[M,O]of Object.entries(k.modelBreakdown))f[M]={inputTokens:O.inputTokens,outputTokens:O.outputTokens,...O.cachedTokens>0?{cachedReadTokens:O.cachedTokens}:{}}}let b={file:n,tokens:l,thinkingTokens:d,actualTokens:m,interactions:p,modelUsage:f,lastModified:t.mtime,editorSource:pr(n),dailyFractions:_};return dr(n,t.mtimeMs,t.size,b),b}catch{return null}}async function bt(n,e){let t=new Date,s=de(t),o=t.getFullYear(),i=t.getMonth(),r=de(new Date(o,i,1)),l=new Date(o,i,0),d=de(new Date(l.getFullYear(),l.getMonth(),1)),m=new Date(o,i,t.getDate()-30),p=de(m),f={today:sn(),month:sn(),lastMonth:sn(),last30Days:sn()},_=0,k=await gr(n,async b=>{let M=await as(b);return e&&e(++_,n.length),M});for(let b of k){if(!b||b.tokens===0||!Object.keys(b.dailyFractions).some(B=>B>=d))continue;let O=0,v=0,I=0,Z=0;for(let[B,P]of Object.entries(b.dailyFractions))B===s&&(O+=P),B>=r&&(v+=P),B>=d&&B<r&&(I+=P),B>=p&&(Z+=P);O>0&&nn(f.today,b,O),v>0&&nn(f.month,b,v),I>0&&nn(f.lastMonth,b,I),Z>0&&nn(f.last30Days,b,Z)}for(let b of Object.values(f))b.sessions>0&&(b.avgTokensPerSession=Math.round(b.tokens/b.sessions)),b.co2=b.tokens/1e3*De.CO2_PER_1K_TOKENS,b.treesEquivalent=b.co2/De.CO2_ABSORPTION_PER_TREE_PER_YEAR,b.waterUsage=b.tokens/1e3*De.WATER_USAGE_PER_1K_TOKENS,b.estimatedCost=Os(b.modelUsage,Lt),b.estimatedCostCopilot=Os(b.modelUsage,Lt,"copilot");return{...f,lastUpdated:t}}async function ls(n){let e={warn:fr,tokenEstimators:vo,modelPricing:Lt,toolNameMap:zg,ecosystems:rn()},t=new Date,s=new Date(t.getFullYear(),t.getMonth(),t.getDate()),o=new Date(t.getFullYear(),t.getMonth(),t.getDate()-30),i=new Date(t.getFullYear(),t.getMonth(),1),r=Mo(),l=Mo(),d=Mo();for(let m of n)try{let f=(await ic(m)).mtime;if(f<o)continue;let _=await Tl(e,m);f>=o&&(ho(l,_),l.sessions++),f>=i&&(ho(d,_),d.sessions++),f>=s&&(ho(r,_),r.sessions++)}catch{}return{today:r,last30Days:l,month:d,lastUpdated:t}}async function Eo(n,e=!1){let t=new Date,s=new Date(t.getFullYear(),t.getMonth(),t.getDate()-30),o=de(s),i=de(t),r=new Map,l=new Date(s);for(;de(l)<=i;){let _=de(l);r.set(_,{tokens:0,sessions:0,modelUsage:{},editorUsage:{}}),l.setDate(l.getDate()+1)}let d=new Map,m=await gr(n,async _=>as(_,e));for(let _ of m){if(!_||_.tokens===0||_.interactions===0)continue;let k=$e(_);for(let[b,M]of Object.entries(_.dailyFractions)){let O=Math.round(k*M),v=r.get(b);if(v){v.tokens+=O,v.sessions++;for(let[P,E]of Object.entries(_.modelUsage))v.modelUsage[P]||(v.modelUsage[P]={inputTokens:0,outputTokens:0}),v.modelUsage[P].inputTokens+=Math.round(E.inputTokens*M),v.modelUsage[P].outputTokens+=Math.round(E.outputTokens*M),E.cachedReadTokens!==void 0&&(v.modelUsage[P].cachedReadTokens=(v.modelUsage[P].cachedReadTokens??0)+Math.round(E.cachedReadTokens*M)),E.cacheCreationTokens!==void 0&&(v.modelUsage[P].cacheCreationTokens=(v.modelUsage[P].cacheCreationTokens??0)+Math.round(E.cacheCreationTokens*M));let B=_.editorSource;v.editorUsage[B]||(v.editorUsage[B]={tokens:0,sessions:0}),v.editorUsage[B].tokens+=O,v.editorUsage[B].sessions++}d.has(b)||d.set(b,{tokens:0,sessions:0,modelUsage:{},editorUsage:{}});let I=d.get(b);I.tokens+=O,I.sessions++;for(let[B,P]of Object.entries(_.modelUsage))I.modelUsage[B]||(I.modelUsage[B]={inputTokens:0,outputTokens:0}),I.modelUsage[B].inputTokens+=Math.round(P.inputTokens*M),I.modelUsage[B].outputTokens+=Math.round(P.outputTokens*M),P.cachedReadTokens!==void 0&&(I.modelUsage[B].cachedReadTokens=(I.modelUsage[B].cachedReadTokens??0)+Math.round(P.cachedReadTokens*M)),P.cacheCreationTokens!==void 0&&(I.modelUsage[B].cacheCreationTokens=(I.modelUsage[B].cacheCreationTokens??0)+Math.round(P.cacheCreationTokens*M));let Z=_.editorSource;I.editorUsage[Z]||(I.editorUsage[Z]={tokens:0,sessions:0}),I.editorUsage[Z].tokens+=O,I.editorUsage[Z].sessions++}}let p=Array.from(r.keys()).sort(),f=p.map(_=>r.get(_));return{labels:p,days:f,allDaysMap:d}}var Qg=50;function rc(n=Qg){process.stdout.write("\r"+" ".repeat(n)+"\r")}function hr(n){process.stdout.write(S.dim(n))}var Yg=80,Re=class{silent;constructor(e=!1){this.silent=e}show(e){this.silent||hr(e)}update(e){this.silent||(process.stdout.write("\r"),hr(e))}done(){this.silent||rc(Yg)}};function Se(n){return n.json===!0}var ac=new ne("stats").description("Show overview of discovered session files, sessions, chat turns, and tokens").option("-v, --verbose","Show detailed per-folder breakdown").option("--json","Output raw JSON (for machine consumption)").action(async n=>{let e=Se(n);if(e||console.log(S.bold.cyan(`
50
+ `:"")+n.thinking.trim());for(let t of n.tool_calls??[])t.name&&e.toolCalls.push({toolName:t.name,arguments:t.args?JSON.stringify(t.args):void 0})}function xm(n,e){e.toolCalls.length>0&&!e.toolCalls[e.toolCalls.length-1].result&&n.content&&(e.toolCalls[e.toolCalls.length-1].result=n.content.trim())}function Am(n,e){n.type==="PLANNER_RESPONSE"?vm(n,e):n.type==="SEARCH_WEB"&&n.content&&xm(n,e)}function Em(n,e){let t={assistantResponse:"",thinkingContent:"",toolCalls:[]};for(let s=e;s<n.length;s++){let o=n[s];if(o.type==="USER_INPUT"&&o.source==="USER_EXPLICIT")break;o.source==="MODEL"&&Am(o,t)}return t}var go=class{getAntigravityDataDir(){return Qe.join(ml.homedir(),".gemini","antigravity")}getAntigravityBrainDir(){return Qe.join(this.getAntigravityDataDir(),"brain")}isAntigravitySessionFile(e){let t=ae(e);return t.includes("/.gemini/antigravity/brain/")&&t.endsWith("/transcript.jsonl")}getSessionIdFromPath(e){let t=e.replace(/\\/g,"/"),s=t.toLowerCase().indexOf("/.gemini/antigravity/brain/");if(s===-1)return Qe.basename(Qe.dirname(Qe.dirname(Qe.dirname(e))));let o=t.substring(s+27),i=o.indexOf("/");return i!==-1?o.substring(0,i):o}async getAntigravitySessionFiles(){let e=this.getAntigravityBrainDir(),t=[],s;try{s=await po.promises.readdir(e,{withFileTypes:!0})}catch{return[]}for(let o of s){if(!o.isDirectory())continue;let i=Qe.join(e,o.name,".system_generated","logs","transcript.jsonl");try{(await po.promises.stat(i)).size>0&&t.push(i)}catch{}}return t}async readAntigravitySession(e){let t=this.getSessionIdFromPath(e),s=[],o=[],i=[],r;try{r=await po.promises.readFile(e,"utf8")}catch{return{sessionId:t,userEntries:s,modelEntries:o,allEntries:i}}let l=r.split(`
51
+ `).filter(m=>m.trim().length>0);for(let m of l){let p;try{p=JSON.parse(m)}catch{continue}!p||typeof p.type!="string"||(i.push(p),p.type==="USER_INPUT"&&p.source==="USER_EXPLICIT"?s.push(p):p.source==="MODEL"&&o.push(p))}let d=(m,p)=>m.step_index-p.step_index;return i.sort(d),s.sort(d),o.sort(d),{sessionId:t,userEntries:s,modelEntries:o,allEntries:i}}async estimateTokensFromAntigravitySession(e,t){let s=await this.readAntigravitySession(e),o=0,i=0,r=0;for(let l of s.userEntries)o+=t(ji(l.content??""));for(let l of s.modelEntries)l.type==="PLANNER_RESPONSE"&&(l.content&&(i+=t(l.content)),l.thinking&&(r+=t(l.thinking)));return{tokens:o+i+r,thinkingTokens:r}}async countAntigravityInteractions(e){return(await this.readAntigravitySession(e)).userEntries.length}getAntigravityModelUsage(e){return{}}async getAntigravitySessionMeta(e){let t=await this.readAntigravitySession(e),s=t.allEntries,o;if(t.userEntries.length>0){let d=t.userEntries[0].content??"",m=ji(d);o=m.length>120?m.substring(0,117)+"...":m||void 0}let i=s.length>0?s[0].created_at??null:null,r=s.length>0?s[s.length-1].created_at??null:null;return{title:o,firstInteraction:i,lastInteraction:r}}async buildAntigravityTurns(e){let s=(await this.readAntigravitySession(e)).allEntries,o=[],i=0;for(let r=0;r<s.length;r++){let l=s[r];if(l.type!=="USER_INPUT"||l.source!=="USER_EXPLICIT")continue;i++;let d=ji(l.content??""),{assistantResponse:m,toolCalls:p}=Em(s,r+1);o.push({turnNumber:i,timestamp:l.created_at??null,mode:"cli",userMessage:d,assistantResponse:m,model:null,toolCalls:p,contextReferences:le(),mcpTools:[],inputTokensEstimate:0,outputTokensEstimate:0,thinkingTokensEstimate:0})}return{turns:o}}async countToolCalls(e){let t=await this.readAntigravitySession(e),s=0;for(let o of t.allEntries)Array.isArray(o.tool_calls)&&(s+=o.tool_calls.length);return s}};var fo=v(require("fs")),ns=v(require("path")),pl=v(require("os"));var ho=class{getConfigDir(){return ns.join(pl.homedir(),".pi","agent","sessions")}isPiSessionFile(e){let t=me(e);return t.includes("/.pi/agent/sessions/")&&t.endsWith(".jsonl")}async discoverSessions(){let e=this.getConfigDir(),t=[];try{let s=await fo.promises.readdir(e,{withFileTypes:!0});for(let o of s)o.isDirectory()&&await this.collectSessionFilesInDir(ns.join(e,o.name),t)}catch{}return t}async collectSessionFilesInDir(e,t){try{let s=await fo.promises.readdir(e,{withFileTypes:!0});for(let o of s)o.isFile()&&o.name.endsWith(".jsonl")&&t.push(ns.join(e,o.name))}catch{}}async readLines(e){try{let t=await fo.promises.readFile(e,"utf8");return this.parseJsonlContent(t)}catch{return[]}}parseJsonlContent(e){let t=[];for(let s of e.split(`
52
+ `)){let o=s.trim();if(o)try{t.push(JSON.parse(o))}catch{}}return t}async readSession(e){return(await this.readLines(e)).find(s=>s.type==="session")??null}async getMessages(e){return(await this.readLines(e)).filter(s=>s.type==="message")}async getTokens(e){let t=await this.getMessages(e),s=0;for(let o of t){if(o.message?.role!=="assistant")continue;let i=o.message?.usage;i&&typeof i.totalTokens=="number"&&(s+=i.totalTokens)}return{tokens:s,thinkingTokens:0}}async countInteractions(e){return(await this.getMessages(e)).filter(s=>s.message?.role==="user").length}async getModelUsage(e){let t=await this.getMessages(e),s={};for(let o of t)this.accumulateModelUsage(o,s);return s}accumulateModelUsage(e,t){let s=e.message;if(!s||s.role!=="assistant")return;let o=s.usage;if(!o)return;let i=typeof o.input=="number"?o.input:0,r=typeof o.output=="number"?o.output:0;if(i+r===0)return;let l=s.model||"unknown";t[l]||(t[l]={inputTokens:0,outputTokens:0}),t[l].inputTokens+=i,t[l].outputTokens+=r,this.accumulateCacheTokens(o,t[l])}accumulateCacheTokens(e,t){let s=typeof e.cacheRead=="number"?e.cacheRead:0,o=typeof e.cacheWrite=="number"?e.cacheWrite:0;s>0&&(t.cachedReadTokens=(t.cachedReadTokens??0)+s),o>0&&(t.cacheCreationTokens=(t.cacheCreationTokens??0)+o)}async getSessionMeta(e){let t=await this.readLines(e);if(t.length===0)return{title:void 0,firstInteraction:null,lastInteraction:null};let s=t.find(d=>d.type==="session"),o=s?.cwd,i=o?ns.basename(o):void 0,r=s?.timestamp??null,l=this.findLastTimestamp(t);return{title:i,firstInteraction:r,lastInteraction:l,workspacePath:o}}findLastTimestamp(e){for(let t=e.length-1;t>=0;t--)if(e[t].timestamp)return e[t].timestamp;return null}async getSessionData(e){let[{tokens:t},s,o,i]=await Promise.all([this.getTokens(e),this.countInteractions(e),this.getModelUsage(e),this.getSessionMeta(e)]),r=i.firstInteraction?new Date(i.firstInteraction).getTime():0,l=this.buildModelUsageWithInteractions(o,s);return{tokens:t,interactions:s,modelUsage:l,timestamp:r}}buildModelUsageWithInteractions(e,t){let s=Object.values(e).reduce((i,r)=>i+r.inputTokens+r.outputTokens,0),o={};for(let[i,r]of Object.entries(e)){let l=r.inputTokens+r.outputTokens,d=s>0?l/s:0;o[i]={inputTokens:r.inputTokens,outputTokens:r.outputTokens,interactions:Math.round(t*d)}}return o}};var So=v(require("fs")),it=v(require("path"));var os=v(require("fs"));var Dm=/\/partition-\d+\.jsonl$/,Rm=["embeddings","index","cache","preferences","settings","config","workspacesessions","globalsessions","api.json"];function gl(n){let e=n.toLowerCase();return Rm.some(t=>e.includes(t))}function yo(n){let e=me(n);return e.includes("/.copilot/jb/")&&Dm.test(e)}function Im(n){return!n||typeof n!="string"?null:n.startsWith("toolu_")?"claude":n.startsWith("call_")?"gpt":null}function Um(n){let e=[],t=new Set;for(let s of n)if(s)try{let o=JSON.parse(s);if(!o||typeof o!="object")continue;e.push(o),o.type==="user.message_rendered"&&typeof o.data?.turnId=="string"&&t.add(o.data.turnId)}catch{}return{parsed:e,renderedTurnIds:t}}function Om(n,e){n.data?.conversationId&&(e.conversationId=String(n.data.conversationId)),n.data?.source&&(e.source=String(n.data.source))}function Fm(n,e){e.result.interactions++,typeof n.timestamp=="string"&&e.firstUserTs===null&&(e.firstUserTs=n.timestamp);let t=n.data?.turnId;typeof n.data?.content=="string"&&(typeof t!="string"||!e.renderedTurnIds.has(t))&&(e.inputTokens+=H(n.data.content))}function Nm(n,e){typeof n.data?.text=="string"&&n.data.text&&(e.outputTokens+=H(n.data.text));let t=n.data?.thinking?.text;typeof t=="string"&&t&&(e.result.thinkingTokens+=H(t)),typeof n.timestamp=="string"&&(e.lastTurnTs=n.timestamp)}function Lm(n,e){if(e.sawToolCall=!0,!e.modelFromToolCallId){let i=Im(n.data?.toolCallId);i&&(e.modelFromToolCallId=i)}let t=typeof n.data?.toolName=="string"?n.data.toolName:"unknown",s={toolName:t};if(n.data?.arguments!==void 0)try{s.arguments=JSON.stringify(n.data.arguments)}catch{}e.result.toolCalls.push(s),e.result.toolCounts[t]=(e.result.toolCounts[t]||0)+1;let o=n.data?.toolCallId;typeof o=="string"&&e.toolCallById.set(o,s)}function Gm(n,e){let t=n.data?.result?.result,s="";if(Array.isArray(t))for(let r of t)r&&typeof r.value=="string"&&(e.outputTokens+=H(r.value),s+=(s?`
53
+ `:"")+r.value);let o=n.data?.toolCallId;if(typeof o!="string")return;let i=e.toolCallById.get(o);i&&(typeof n.data?.success=="boolean"&&(i.success=n.data.success),s&&(i.result=s))}function jm(n,e){switch(n.type){case"partition.created":Om(n,e.result);break;case"user.message":Fm(n,e);break;case"user.message_rendered":typeof n.data?.renderedMessage=="string"&&(e.inputTokens+=H(n.data.renderedMessage));break;case"assistant.turn_start":typeof n.data?.model=="string"&&!e.modelFromTurnStart&&(e.modelFromTurnStart=n.data.model);break;case"assistant.message":Nm(n,e);break;case"tool.execution_start":Lm(n,e);break;case"tool.execution_complete":Gm(n,e);break;case"assistant.turn_end":typeof n.timestamp=="string"&&(e.lastTurnTs=n.timestamp);break}}function _o(n){let e={tokens:0,thinkingTokens:0,actualTokens:0,interactions:0,modelUsage:{},mode:"ask",modelHint:"unknown",firstInteraction:null,lastInteraction:null,source:null,conversationId:null,toolCalls:[],toolCounts:{}},{parsed:t,renderedTurnIds:s}=Um(n.split(/\r?\n/)),o={inputTokens:0,outputTokens:0,firstUserTs:null,lastTurnTs:null,modelFromTurnStart:null,modelFromToolCallId:null,sawToolCall:!1,toolCallById:new Map,renderedTurnIds:s,result:e};for(let i of t)jm(i,o);return e.mode=o.sawToolCall?"agent":"ask",e.modelHint=o.modelFromTurnStart||o.modelFromToolCallId||"unknown",e.tokens=o.inputTokens+o.outputTokens,e.firstInteraction=o.firstUserTs,e.lastInteraction=o.lastTurnTs,e.tokens>0&&e.modelHint!=="unknown"&&(e.modelUsage[e.modelHint]={inputTokens:o.inputTokens,outputTokens:o.outputTokens}),e}function fl(n){let e=n.split(/\r?\n/);for(let t of e)if(t&&t.indexOf("tool.execution_start")!==-1)try{let s=JSON.parse(t);if(s&&s.type==="tool.execution_start")return"agent"}catch{}return"ask"}function js(n){return n==null}function Bm(n){if(typeof n!="object"||n===null||Array.isArray(n))return!1;let e=n;return js(e.id)||typeof e.id=="string"}function Co(n){if(n===null||typeof n!="object"||Array.isArray(n))return!1;let e=n;return!(!js(e.requests)&&!Array.isArray(e.requests)||!js(e.mode)&&!Bm(e.mode)||!js(e.creationDate)&&typeof e.creationDate!="number"||!js(e.lastMessageDate)&&typeof e.lastMessageDate!="number")}function _l(n,e){n==="agent"?e.agent++:n==="edit"?e.edit++:n==="plan"?e.plan++:n==="customAgent"?e.customAgent++:e.ask++}function $i(n,e,t){if(Ze(n)){e.mcpTools.total++;let s=ht(n,t);e.mcpTools.byServer[s]=(e.mcpTools.byServer[s]||0)+1;let o=Ps(n);e.mcpTools.byTool[o]=(e.mcpTools.byTool[o]||0)+1}else e.toolCalls.total++,e.toolCalls.byTool[n]=(e.toolCalls.byTool[n]||0)+1}function Wi(n){let e=n.split("/").pop()?.split("\\").pop()??"",t=e.lastIndexOf(".");return t<=0?e.toLowerCase()||"unknown":e.slice(t+1).toLowerCase()}function qm(n){return{timestamp:n.timestamp,timings:n.result?.timings,waitTime:n.timeSpentWaiting}}function zm(n){if(!n.agent?.id)return{agentType:null};let e=n.agent.id;return e.includes("edit")?{agentType:"editsAgent"}:e.includes("default")?{agentType:"defaultAgent"}:e.includes("workspace")?{agentType:"workspaceAgent"}:{agentType:"other"}}function $m(n,e,t){if(!n||typeof n!="object")return;let s=n;if(typeof s.text=="string"&&s.text){let o=(s.text.match(/\n/g)??[]).length+(s.text.endsWith(`
54
+ `)?0:1);t.linesAdded+=o,t.languageUsage[e]||(t.languageUsage[e]={linesAdded:0,linesRemoved:0}),t.languageUsage[e].linesAdded+=o}if(s.range&&typeof s.range.startLineNumber=="number"&&typeof s.range.endLineNumber=="number"){let o=Math.max(0,s.range.endLineNumber-s.range.startLineNumber);t.linesRemoved+=o,t.languageUsage[e]||(t.languageUsage[e]={linesAdded:0,linesRemoved:0}),t.languageUsage[e].linesRemoved+=o}}function Wm(n,e,t){for(let s of n)if(Array.isArray(s))for(let o of s)$m(o,e,t)}function Hm(n,e){if(!n.uri)return;let t=n.uri.path||JSON.stringify(n.uri);e.editedFilePaths.push(t);let s=Wi(t),o=n;Array.isArray(o.edits)&&Wm(o.edits,s,e)}function Vm(n){let e={editedFilePaths:[],codeBlocks:0,applies:0,linesAdded:0,linesRemoved:0,languageUsage:{}};if(!n.response||!Array.isArray(n.response))return e;for(let t of n.response)t&&(t.kind==="textEditGroup"&&Hm(t,e),t.kind==="codeblockUri"&&(e.codeBlocks++,t.isEdit===!0&&e.applies++));return e}function Jm(n,e){for(let[t,s]of Object.entries(e))n[t]||(n[t]={linesAdded:0,linesRemoved:0}),n[t].linesAdded+=s.linesAdded,n[t].linesRemoved+=s.linesRemoved}function Cl(n,e,t,s,o,i){let r=0,l=0,d=0,m=0,p={};for(let f of n){if(!f)continue;let _=qm(f);_.timestamp!==void 0&&s.push(_.timestamp),_.timings&&o.push(_.timings),_.waitTime!==void 0&&i.push(_.waitTime);let k=zm(f);k.agentType!==null&&e[k.agentType]++;let b=Vm(f);for(let M of b.editedFilePaths)t.add(M);l+=b.codeBlocks,r+=b.applies,d+=b.linesAdded,m+=b.linesRemoved,Jm(p,b.languageUsage)}return{totalApplies:r,totalCodeBlocks:l,totalLinesAdded:d,totalLinesRemoved:m,languageUsage:p}}function Km(n,e,t){if(!(!n.response||!Array.isArray(n.response))){for(let s of n.response)if(s&&(s.kind==="toolInvocationSerialized"||s.kind==="prepareToolInvocation")){let o=s.toolId||s.toolName||s.invocationMessage?.toolName||s.toolSpecificData?.kind||"unknown";$i(o,e,t)}}}function Qm(n,e,t,s){e.requestId&&(_l(t,s.modeUsage),e.agent?.id&&(s.toolCalls.total++,s.toolCalls.byTool[e.agent.id]=(s.toolCalls.byTool[e.agent.id]||0)+1),Ji(e,s.contextReferences),Km(e,s,n.toolNameMap))}function Ym(n,e,t){return n.modelId?n.modelId.replace(/^copilot\//,""):n.result?.metadata?.modelId?n.result.metadata.modelId.replace(/^copilot\//,""):n.result?.details?_t(n,t):e}function Xm(n){let e=0;for(let t=1;t<n.length;t++)n[t]!==n[t-1]&&e++;return e}function Zm(n,e,t,s){let o=(e.selectedModel?.identifier||e.selectedModel?.metadata?.id||e.inputState?.selectedModel?.metadata?.id||"gpt-4o").replace(/^copilot\//,""),i=[];for(let l of t)!l||!l.requestId||i.push(Ym(l,o,n.modelPricing));let r=[...new Set(i)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=i.length,s.modelSwitching.switchCount=Xm(i),ge(n.modelPricing,r,i,s)}function ep(n,e,t){let{effortByRequestId:s,defaultEffort:o,switchCount:i}=ul(n);if(o===null&&s.size===0)return;let r={};for(let[,l]of s)r[l]=(r[l]||0)+1;s.size===0&&o!==null&&(r[o]=e.length),t.thinkingEffort={byEffort:r,switchCount:i,defaultEffort:o}}function tp(n,e,t,s){let o=e.inputState?.mode?Nn(e.inputState.mode):"ask";if(e.inputState?.selections&&Array.isArray(e.inputState.selections)){for(let r of e.inputState.selections)if(r&&(r.startLineNumber!==r.endLineNumber||r.startColumn!==r.endColumn)){s.contextReferences.implicitSelection++;break}}let i=e.requests??[];for(let r of i)Qm(n,r,o,s);Zm(n,e,i,s),ep(t,i,s),Vi(s)}function sp(n,e){if(n.agent?.id){let t=n.agent.id.toLowerCase();if(t.includes("edit"))return"edit";if(t.includes("agent"))return"agent"}if(e.mode?.id){let t=e.mode.id.toLowerCase();if(t.includes("agent"))return"agent";if(t.includes("edit"))return"edit"}return"ask"}function np(n,e,t){if(n.kind==="toolInvocationSerialized"||n.kind==="prepareToolInvocation"){let s=n.toolId||n.toolName||n.invocationMessage?.toolName||"unknown";$i(s,e,t.toolNameMap)}if(n.kind==="mcpServersStarting"&&n.didStartServerIds)for(let s of n.didStartServerIds)e.mcpTools.total++,e.mcpTools.byServer[s]=(e.mcpTools.byServer[s]||0)+1;n.kind==="inlineReference"&&n.inlineReference&&Hi([n],e.contextReferences)}function op(n,e,t,s){let o=sp(e,t);if(o==="agent"?s.modeUsage.agent++:o==="edit"?s.modeUsage.edit++:s.modeUsage.ask++,Ji(e,s.contextReferences),e.response&&Array.isArray(e.response))for(let i of e.response)i&&np(i,s,n)}function ip(n,e,t){if(!(!e.requests||!Array.isArray(e.requests)))for(let s of e.requests)op(n,s,e,t)}function rp(n,e){for(let t of e.tiers.standard)n.modelSwitching.standardModels.includes(t)||n.modelSwitching.standardModels.push(t);for(let t of e.tiers.premium)n.modelSwitching.premiumModels.includes(t)||n.modelSwitching.premiumModels.push(t);for(let t of e.tiers.unknown)n.modelSwitching.unknownModels.includes(t)||n.modelSwitching.unknownModels.push(t)}function ap(n){let e=n.modelSwitching.modelsPerSession;e.length!==0&&(n.modelSwitching.averageModelsPerSession=e.reduce((t,s)=>t+s,0)/e.length,n.modelSwitching.maxModelsPerSession=Math.max(...e),n.modelSwitching.minModelsPerSession=Math.min(...e),n.modelSwitching.switchingFrequency=e.filter(t=>t>1).length/e.length*100)}function lp(n,e){if(e.modelSwitching||(e.modelSwitching={uniqueModels:[],modelCount:0,switchCount:0,tiers:{standard:[],premium:[],unknown:[]},hasMixedTiers:!1,standardRequests:0,premiumRequests:0,unknownRequests:0,totalRequests:0}),e.modelSwitching.modelCount<=0)return;let t=e.modelSwitching;n.modelSwitching.totalSessions++,n.modelSwitching.modelsPerSession.push(t.modelCount),rp(n,t),t.hasMixedTiers&&n.modelSwitching.mixedTierSessions++,n.modelSwitching.standardRequests+=t.standardRequests||0,n.modelSwitching.premiumRequests+=t.premiumRequests||0,n.modelSwitching.unknownRequests+=t.unknownRequests||0,n.modelSwitching.totalRequests+=t.totalRequests||0,ap(n)}function cp(n,e){if(e.thinkingEffort){n.thinkingEffortUsage||(n.thinkingEffortUsage={byEffort:{},sessionCount:0,switchCount:0}),n.thinkingEffortUsage.sessionCount++,n.thinkingEffortUsage.switchCount+=e.thinkingEffort.switchCount;for(let[t,s]of Object.entries(e.thinkingEffort.byEffort))n.thinkingEffortUsage.byEffort[t]=(n.thinkingEffortUsage.byEffort[t]||0)+s}}var up=["file","selection","implicitSelection","symbol","codebase","workspace","terminal","vscode","terminalLastCommand","terminalSelection","clipboard","changes","outputPanel","problemsPanel","pullRequest","copilotInstructions","agentsMd"];function hl(n,e){for(let[t,s]of Object.entries(e))n[t]=(n[t]||0)+s}function dp(n,e){let t=n.contextReferences,s=e.contextReferences;for(let o of up)t[o]+=s[o]||0;t.codeContextLines=(t.codeContextLines||0)+(s.codeContextLines||0),hl(t.byKind,s.byKind),hl(t.byPath,s.byPath)}function mp(n,e){if(e.editScope){n.editScope.singleFileEdits+=e.editScope.singleFileEdits,n.editScope.multiFileEdits+=e.editScope.multiFileEdits,n.editScope.totalEditedFiles+=e.editScope.totalEditedFiles;let t=n.editScope.singleFileEdits+n.editScope.multiFileEdits;n.editScope.avgFilesPerSession=t>0?n.editScope.totalEditedFiles/t:0}if(e.applyUsage&&(n.applyUsage.totalApplies+=e.applyUsage.totalApplies,n.applyUsage.totalCodeBlocks+=e.applyUsage.totalCodeBlocks,n.applyUsage.applyRate=n.applyUsage.totalCodeBlocks>0?n.applyUsage.totalApplies/n.applyUsage.totalCodeBlocks*100:0),e.sessionDuration){n.sessionDuration.totalDurationMs+=e.sessionDuration.totalDurationMs;let t=n.sessions;if(t>0){n.sessionDuration.avgDurationMs=n.sessionDuration.totalDurationMs/t;let s=n.sessionDuration.avgFirstProgressMs*(t-1);n.sessionDuration.avgFirstProgressMs=(s+e.sessionDuration.avgFirstProgressMs)/t;let o=n.sessionDuration.avgTotalElapsedMs*(t-1);n.sessionDuration.avgTotalElapsedMs=(o+e.sessionDuration.avgTotalElapsedMs)/t;let i=n.sessionDuration.avgWaitTimeMs*(t-1);n.sessionDuration.avgWaitTimeMs=(i+e.sessionDuration.avgWaitTimeMs)/t}}if(e.conversationPatterns){n.conversationPatterns.multiTurnSessions+=e.conversationPatterns.multiTurnSessions,n.conversationPatterns.singleTurnSessions+=e.conversationPatterns.singleTurnSessions,n.conversationPatterns.maxTurnsInSession=Math.max(n.conversationPatterns.maxTurnsInSession,e.conversationPatterns.maxTurnsInSession);let t=n.conversationPatterns.multiTurnSessions+n.conversationPatterns.singleTurnSessions;if(t>0){let o=n.conversationPatterns.avgTurnsPerSession*(t-1)+e.conversationPatterns.avgTurnsPerSession;n.conversationPatterns.avgTurnsPerSession=o/t}}e.agentTypes&&(n.agentTypes.editsAgent+=e.agentTypes.editsAgent,n.agentTypes.defaultAgent+=e.agentTypes.defaultAgent,n.agentTypes.workspaceAgent+=e.agentTypes.workspaceAgent,n.agentTypes.other+=e.agentTypes.other),cp(n,e)}function bo(n,e){n.toolCalls.total+=e.toolCalls.total;for(let[t,s]of Object.entries(e.toolCalls.byTool))n.toolCalls.byTool[t]=(n.toolCalls.byTool[t]||0)+s;if(e.toolCalls.outputTokensByTool){n.toolCalls.outputTokensByTool||(n.toolCalls.outputTokensByTool={});for(let[t,s]of Object.entries(e.toolCalls.outputTokensByTool))n.toolCalls.outputTokensByTool[t]=(n.toolCalls.outputTokensByTool[t]||0)+s}n.modeUsage.ask+=e.modeUsage.ask,n.modeUsage.edit+=e.modeUsage.edit,n.modeUsage.agent+=e.modeUsage.agent,n.modeUsage.plan+=e.modeUsage.plan,n.modeUsage.customAgent+=e.modeUsage.customAgent,n.modeUsage.cli+=e.modeUsage.cli,dp(n,e),n.mcpTools.total+=e.mcpTools.total;for(let[t,s]of Object.entries(e.mcpTools.byServer))n.mcpTools.byServer[t]=(n.mcpTools.byServer[t]||0)+s;for(let[t,s]of Object.entries(e.mcpTools.byTool))n.mcpTools.byTool[t]=(n.mcpTools.byTool[t]||0)+s;lp(n,e),mp(n,e)}var pp=[[/#file/gi,"file"],[/#selection/gi,"selection"],[/#symbol/gi,"symbol"],[/#sym(?![:\w])/gi,"symbol"],[/#codebase/gi,"codebase"],[/#terminalLastCommand/gi,"terminalLastCommand"],[/#terminalSelection/gi,"terminalSelection"],[/#clipboard/gi,"clipboard"],[/#changes/gi,"changes"],[/#outputPanel/gi,"outputPanel"],[/#problemsPanel\b/gi,"problemsPanel"],[/#pr\b/gi,"pullRequest"],[/#pullRequest\b/gi,"pullRequest"],[/@workspace/gi,"workspace"],[/@terminal/gi,"terminal"],[/@vscode/gi,"vscode"]];function bl(n,e){for(let[t,s]of pp){let o=n.match(t);o&&(e[s]+=o.length)}}function gp(n){let e=n.kind;return e==="reference"&&n.reference?n.reference:e==="inlineReference"&&n.inlineReference?n.inlineReference:null}function fp(n,e,t){e.endsWith("/.github/copilot-instructions.md")||e.includes(".github/copilot-instructions.md")?t.copilotInstructions++:e.endsWith("/agents.md")||e.match(/\/agents\.md$/i)?t.agentsMd++:e.endsWith(".instructions.md")||e.includes(".instructions.md")?t.copilotInstructions++:t.file++;let s=n.length>100?"..."+n.substring(n.length-97):n;t.byPath[s]=(t.byPath[s]||0)+1}function hp(n,e,t){let s=n.fsPath||n.path;typeof s=="string"&&fp(s,ae(s),t);let o=n.name;if(typeof o=="string"&&e==="reference"){t.symbol++;let i=`#sym:${o}`;t.byPath[i]=(t.byPath[i]||0)+1}}function Hi(n,e){if(Array.isArray(n))for(let t of n){if(!t||typeof t!="object")continue;let s=t,o=s.kind;if(typeof o=="string"&&(e.byKind[o]=(e.byKind[o]||0)+1),o==="pullRequest"){e.pullRequest++;continue}let i=gp(s);i&&hp(i,o,e)}}function yp(n,e){let t=n.kind;if(typeof t=="string"&&(e.byKind[t]=(e.byKind[t]||0)+1),t==="image"&&(e.byKind["copilot.image"]=(e.byKind["copilot.image"]||0)+1),t==="file"&&e.file++,t==="generic"&&typeof n.name=="string"&&n.name.startsWith("sym:")){e.symbol++;let s=`#${n.name}`;e.byPath[s]=(e.byPath[s]||0)+1}}function kl(n,e){if(!n||typeof n!="object")return;let t=n;if(Array.isArray(t.variables))for(let s of t.variables)!s||typeof s!="object"||yp(s,e)}function Vi(n){let e=n.modeUsage.ask+n.modeUsage.edit+n.modeUsage.agent+n.modeUsage.cli;n.conversationPatterns={multiTurnSessions:e>1?1:0,singleTurnSessions:e===1?1:0,avgTurnsPerSession:e,maxTurnsInSession:e}}function _p(n,e){if(n.kind!=="dynamic")return;let t=n.data?.range,s=typeof t?.startLineNumber=="number"?t.startLineNumber:0,o=typeof t?.endLineNumber=="number"?t.endLineNumber:0;o>=s&&o>0&&(e.codeContextLines=(e.codeContextLines||0)+(o-s+1))}function Cp(n,e){if(n.kind!=="prompt")return;typeof n.slashPromptCommand?.command=="string"&&(e.byKind.prompt=(e.byKind.prompt||0)+1)}function bp(n,e){if(!n||typeof n!="object")return;let t=n;typeof t.text=="string"&&bl(t.text,e),_p(t,e),Cp(t,e)}function kp(n,e){typeof n.text=="string"&&bl(n.text,e);let t=n.parts;if(Array.isArray(t))for(let s of t)bp(s,e)}function Ji(n,e){if(!n||typeof n!="object")return;let t=n,s=t.message;s&&typeof s=="object"&&kp(s,e);let o=t.contentReferences;Array.isArray(o)&&Hi(o,e);let i=t.variableData;i!==void 0&&kl(i,e)}async function ko(n){try{let t=(await os.promises.readFile(n,"utf8")).trim().split(`
55
+ `),s=[];for(let o of t)if(o.trim())try{s.push(JSON.parse(o))}catch{}return s}catch{return[]}}function ge(n,e,t,s){let o=[],i=[],r=[];for(let p of e){let f=Nt(p,n);f==="standard"?o.push(p):f==="premium"?i.push(p):r.push(p)}s.modelSwitching.tiers={standard:o,premium:i,unknown:r},s.modelSwitching.hasMixedTiers=o.length>0&&i.length>0;let l=0,d=0,m=0;for(let p of t){let f=Nt(p,n);f==="standard"?l++:f==="premium"?d++:m++}s.modelSwitching.standardRequests=l,s.modelSwitching.premiumRequests=d,s.modelSwitching.unknownRequests=m}function qi(n,e,t){let s=Nt(n,t);s==="standard"?e.standard++:s==="premium"?e.premium++:e.unknown++}function Sl(n,e){e.modelSwitching.standardRequests=n.standard,e.modelSwitching.premiumRequests=n.premium,e.modelSwitching.unknownRequests=n.unknown,e.modelSwitching.totalRequests=n.standard+n.premium+n.unknown}function Sp(n,e){let t=[],s=[],o=[];for(let i of n){let r=Nt(i,e);r==="standard"?t.push(i):r==="premium"?s.push(i):o.push(i)}return{standard:t,premium:s,unknown:o}}function wp(n,e,t){if(!n.requests||!Array.isArray(n.requests))return;let s=null,o=0,i={standard:0,premium:0,unknown:0};for(let r of n.requests){let l=_t(r,t);s&&l!==s&&o++,s=l,qi(l,i,t)}e.modelSwitching.switchCount=o,Sl(i,e)}function Tp(n){if(n.kind!==0)return null;let e=n.v,t=e?.selectedModel?.identifier||e?.selectedModel?.metadata?.id||e?.inputState?.selectedModel?.metadata?.id;return t?t.replace(/^copilot\//,""):null}function Mp(n){if(n.kind!==2||n.k?.[0]!=="selectedModel")return null;let e=n.v,t=e?.identifier||e?.metadata?.id;return t?t.replace(/^copilot\//,""):null}function Pp(n,e){let t=Tp(n);if(t)return t;let s=Mp(n);return s||(n.type==="session.start"&&typeof n.data?.selectedModel=="string"?n.data.selectedModel:n.type==="session.model_change"&&typeof n.data?.newModel=="string"?n.data.newModel:e)}function vp(n,e,t){let s=n;return s.modelId?s.modelId.replace(/^copilot\//,""):s.result?.metadata?.modelId?s.result.metadata.modelId.replace(/^copilot\//,""):s.result?.details?_t(n,t):e}function xp(n,e,t,s){if(n.type==="user.message"){qi(n.model||t,e,s);return}if(!(n.kind!==2||n.k?.[0]!=="requests"||!Array.isArray(n.v)))for(let o of n.v)qi(vp(o,t,s),e,s)}function Ap(n,e,t){let s={standard:0,premium:0,unknown:0},o="unknown";for(let i of n)if(i.trim())try{let r=JSON.parse(i);o=Pp(r,o),xp(r,s,o,t)}catch{}Sl(s,e)}async function wl(n,e,t,s,o){try{let i=await Ki(n,e,s,o),r=i?Object.keys(i).length:0;if(!i||r===0)return;let l=Object.keys(i);t.modelSwitching.uniqueModels=l,t.modelSwitching.modelCount=l.length;let d=Sp(l,n.modelPricing);t.modelSwitching.tiers=d,t.modelSwitching.hasMixedTiers=d.standard.length>0&&d.premium.length>0;let m=s??await os.promises.readFile(e,"utf8");if(es(m))return;if(e.endsWith(".jsonl")||nt(m))Ap(m.trim().split(`
56
+ `),t,n.modelPricing);else{let f=o!==void 0?o:JSON.parse(m);if(!Co(f)){n.warn(`Unexpected session format in ${e}`);return}wp(f,t,n.modelPricing)}}catch(i){n.warn(`Error calculating model switching for ${e}: ${i}`)}}function Tl(n,e){for(let[t,s]of Object.entries(e))n[t]||(n[t]={linesAdded:0,linesRemoved:0}),n[t].linesAdded+=s.linesAdded,n[t].linesRemoved+=s.linesRemoved}function Ep(n,e){let t=!1;if(n.length>0)try{let i=JSON.parse(n[0]);i&&typeof i.kind=="number"&&(t=!0)}catch{}if(!t)return;let s={};for(let i of n)try{s=Ns(s,JSON.parse(i))}catch{}s.creationDate!==void 0&&e.timestamps.push(s.creationDate),s.lastMessageDate!==void 0&&e.timestamps.push(s.lastMessageDate);let o=Cl(s.requests||[],e.agentCounts,e.editedFiles,e.timestamps,e.timingsData,e.waitTimes);e.totalApplies=o.totalApplies,e.totalCodeBlocks=o.totalCodeBlocks,e.totalLinesAdded=o.totalLinesAdded,e.totalLinesRemoved=o.totalLinesRemoved,Tl(e.allLanguageUsage,o.languageUsage)}function Dp(n,e,t,s){if(!Co(t))return n.warn(`Unexpected session format in ${e}`),!1;t.creationDate&&s.timestamps.push(t.creationDate),t.lastMessageDate&&s.timestamps.push(t.lastMessageDate);let o=Cl(t.requests??[],s.agentCounts,s.editedFiles,s.timestamps,s.timingsData,s.waitTimes);return s.totalApplies=o.totalApplies,s.totalCodeBlocks=o.totalCodeBlocks,s.totalLinesAdded=o.totalLinesAdded,s.totalLinesRemoved=o.totalLinesRemoved,Tl(s.allLanguageUsage,o.languageUsage),!0}function Rp(n,e){let t=e.editedFiles.size>0?1:0;n.editScope={singleFileEdits:e.editedFiles.size===1?1:0,multiFileEdits:e.editedFiles.size>1?1:0,totalEditedFiles:e.editedFiles.size,avgFilesPerSession:t>0?e.editedFiles.size/t:0,linesAdded:e.totalLinesAdded,linesRemoved:e.totalLinesRemoved,...Object.keys(e.allLanguageUsage).length>0?{languageUsage:e.allLanguageUsage}:{}},n.applyUsage={totalApplies:e.totalApplies,totalCodeBlocks:e.totalCodeBlocks,applyRate:e.totalCodeBlocks>0?e.totalApplies/e.totalCodeBlocks*100:0};let s=e.timestamps.length>=2?Math.max(...e.timestamps)-Math.min(...e.timestamps):0,o=e.timingsData.length>0?e.timingsData.reduce((l,d)=>l+(d.firstProgress||0),0)/e.timingsData.length:0,i=e.timingsData.length>0?e.timingsData.reduce((l,d)=>l+(d.totalElapsed||0),0)/e.timingsData.length:0,r=e.waitTimes.length>0?e.waitTimes.reduce((l,d)=>l+d,0)/e.waitTimes.length:0;n.sessionDuration={totalDurationMs:s,avgDurationMs:s,avgFirstProgressMs:o,avgTotalElapsedMs:i,avgWaitTimeMs:r},Vi(n),n.agentTypes=e.agentCounts}function yl(n){return n.length>0?(n.match(/\n/g)??[]).length+(n.endsWith(`
57
+ `)?0:1):0}function Ip(n,e){let t=n.data?.toolName,s=n.data?.arguments??{},o=n.data?.toolCallId,i=s.path;if(typeof i!="string"||!i||typeof o!="string"||t!=="edit"&&t!=="create")return;let r=t==="edit"?s.new_str:s.file_text,l=t==="edit"?s.old_str:void 0,d=typeof r=="string"?r:"",m=typeof l=="string"?l:"";e.set(o,{filePath:i,added:yl(d),removed:yl(m)})}function Up(n,e,t){if(n.data?.success!==!0)return;let s=n.data?.toolCallId;if(typeof s!="string")return;let o=e.get(s);if(!o)return;e.delete(s),t.totalLinesAdded+=o.added,t.totalLinesRemoved+=o.removed,t.editedFiles.add(o.filePath);let i=Wi(o.filePath);t.allLanguageUsage[i]||(t.allLanguageUsage[i]={linesAdded:0,linesRemoved:0}),t.allLanguageUsage[i].linesAdded+=o.added,t.allLanguageUsage[i].linesRemoved+=o.removed}function Op(n,e){let t=new Map;for(let s of n)try{let o=JSON.parse(s);o.type==="tool.execution_start"?Ip(o,t):o.type==="tool.execution_complete"&&Up(o,t,e)}catch{}}async function zi(n,e,t,s,o){try{let i=s??await os.promises.readFile(e,"utf8");if(es(i))return;let r=e.endsWith(".jsonl")||nt(i),l={totalApplies:0,totalCodeBlocks:0,totalLinesAdded:0,totalLinesRemoved:0,allLanguageUsage:{},editedFiles:new Set,timestamps:[],timingsData:[],waitTimes:[],agentCounts:{editsAgent:0,defaultAgent:0,workspaceAgent:0,other:0}};if(r){let d=i.trim().split(`
58
+ `).filter(m=>m.trim());Ep(d,l),Ml(d)||Op(d,l)}else{let d=o!==void 0?o:JSON.parse(i);if(!Dp(n,e,d,l))return}Rp(t,l)}catch(i){n.warn(`Error tracking enhanced metrics from ${e}: ${i}`)}}function ce(){return{toolCalls:{total:0,byTool:{}},modeUsage:{ask:0,edit:0,agent:0,plan:0,customAgent:0,cli:0},contextReferences:le(),mcpTools:{total:0,byServer:{},byTool:{}},modelSwitching:{uniqueModels:[],modelCount:0,switchCount:0,tiers:{standard:[],premium:[],unknown:[]},hasMixedTiers:!1,standardRequests:0,premiumRequests:0,unknownRequests:0,totalRequests:0}}}function Ml(n){if(n.length===0)return!1;try{let e=JSON.parse(n[0]);return e&&typeof e.kind=="number"}catch{return!1}}function Fp(n,e,t){let s={};for(let o of e)try{let i=JSON.parse(o);s=Ns(s,i)}catch{}tp(n,s,e,t)}function Pl(n,e){for(let t of n){let s=t;if(s&&(s.startLineNumber!==s.endLineNumber||s.startColumn!==s.endColumn)){e.implicitSelection++;break}}}function Np(n,e,t){n.kind!==0||!n.v?.inputState?.mode||(t.sessionMode=Nn(n.v.inputState.mode),Array.isArray(n.v?.inputState?.selections)&&Pl(n.v.inputState.selections,e.contextReferences))}function Lp(n,e,t){n.kind===1&&(n.k?.includes("mode")&&n.v&&(t.sessionMode=Nn(n.v)),n.k?.includes("selections")&&Array.isArray(n.v)&&Pl(n.v,e.contextReferences),n.k?.includes("contentReferences")&&Array.isArray(n.v)&&Hi(n.v,e.contextReferences),n.k?.includes("variableData")&&n.v&&kl(n.v,e.contextReferences))}function vl(n){return n.toolId||n.toolName||n.invocationMessage?.toolName||n.toolSpecificData?.kind||"unknown"}function Gp(n,e){for(let t of n)if(t&&(t.kind==="toolInvocationSerialized"||t.kind==="prepareToolInvocation")){e.toolCalls.total++;let s=vl(t);e.toolCalls.byTool[s]=(e.toolCalls.byTool[s]||0)+1}}function jp(n,e){for(let t of n){let s=t;if(s&&s.kind==="toolInvocationSerialized"){e.toolCalls.total++;let o=vl(s);e.toolCalls.byTool[o]=(e.toolCalls.byTool[o]||0)+1}}}function Bp(n,e,t){n.requestId&&_l(t,e.modeUsage),n.agent?.id&&(e.toolCalls.total++,e.toolCalls.byTool[n.agent.id]=(e.toolCalls.byTool[n.agent.id]||0)+1),Ji(n,e.contextReferences),n.response&&Array.isArray(n.response)&&Gp(n.response,e)}function qp(n,e,t,s){if(n.kind===2){if(n.k?.[0]==="requests"&&Array.isArray(n.v))for(let o of n.v)Bp(o,e,t.sessionMode);n.k?.includes("response")&&Array.isArray(n.v)&&jp(n.v,e)}}function zp(n,e){typeof n.selectedModel=="string"&&(e.defaultModel=n.selectedModel),typeof n.reasoningEffort=="string"&&(e.defaultEffort=n.reasoningEffort)}function $p(n,e){n==="agent"?e.modeUsage.agent++:n==="ask"?e.modeUsage.ask++:e.modeUsage.cli++}function Wp(n,e){if(Array.isArray(n))for(let t of n){if(!t||typeof t!="object")continue;let s=t.displayName;typeof s=="string"&&(/clipboard\.png$/i.test(s)?e.byKind["copilot.image"]=(e.byKind["copilot.image"]||0)+1:(/^\d+ lines$/.test(s)||/\.[a-z0-9]+$/i.test(s))&&e.file++)}}function Hp(n,e,t,s){if(n.type==="session.start"&&n.data&&zp(n.data,e),n.type==="session.model_change"&&typeof n.data?.newModel=="string"&&(e.defaultModel=n.data.newModel),n.type==="user.message"){e.requestCount++;let o=typeof n.data?.reasoningEffort=="string"?n.data.reasoningEffort:e.defaultEffort;o&&(e.effortByRequest[o]=(e.effortByRequest[o]||0)+1),Wp(n.data?.attachments,t.contextReferences),$p(s,t)}}function Vp(n,e,t){if(n.type!=="tool.call"&&n.type!=="tool.result"&&n.type!=="tool.execution_start")return;let s=n.data?.toolName||n.toolName||"unknown";$i(s,e,t)}function Jp(n,e){if(n.type!=="mcp.tool.call"&&!n.data?.mcpServer)return;e.mcpTools.total++;let t=n.data?.mcpServer||"unknown",s=n.data?.toolName||n.toolName||"unknown";e.mcpTools.byServer[t]=(e.mcpTools.byServer[t]||0)+1;let o=Ps(s);e.mcpTools.byTool[o]=(e.mcpTools.byTool[o]||0)+1}function Kp(n,e,t){Vp(n,e,t),Jp(n,e)}function Bi(n){if(!n)return 0;let e=n.split(`
59
+ `);return e[e.length-1]===""&&e.pop(),e.length}function xl(n){n.editScope||(n.editScope={singleFileEdits:0,multiFileEdits:0,totalEditedFiles:0,avgFilesPerSession:0,linesAdded:0,linesRemoved:0})}function Qp(n,e){let{toolCallId:t,toolName:s,arguments:o}=n.data??{};t&&s&&e.pendingToolCalls.set(t,{toolName:s,args:o??{}})}function Yp(n,e,t){let s=n.toolName==="edit"?Bi(n.args.new_str??""):Bi(n.args.file_text??""),o=n.toolName==="edit"?Bi(n.args.old_str??""):0;xl(t),t.editScope.linesAdded=(t.editScope.linesAdded??0)+s,t.editScope.linesRemoved=(t.editScope.linesRemoved??0)+o;let i=n.args.path??"";e.editedFilePaths.add(i);let r=Wi(i);t.editScope.languageUsage||(t.editScope.languageUsage={}),t.editScope.languageUsage[r]||(t.editScope.languageUsage[r]={linesAdded:0,linesRemoved:0}),t.editScope.languageUsage[r].linesAdded+=s,t.editScope.languageUsage[r].linesRemoved+=o}function Xp(n){return typeof n=="string"?n:Array.isArray(n)?n.filter(e=>e?.type==="text"&&typeof e.text=="string").map(e=>e.text).join(""):""}function Zp(n,e,t){let{toolCallId:s,success:o,result:i}=n.data??{},r=s?e.pendingToolCalls.get(s):void 0;if(s&&e.pendingToolCalls.delete(s),!r||(o&&(r.toolName==="edit"||r.toolName==="create")&&Yp(r,e,t),!i?.content||Ze(r.toolName)))return;let l=Xp(i.content);if(!l)return;let d=H(l);t.toolCalls.outputTokensByTool||(t.toolCalls.outputTokensByTool={}),t.toolCalls.outputTokensByTool[r.toolName]=(t.toolCalls.outputTokensByTool[r.toolName]||0)+d}function eg(n,e,t){n.type==="tool.execution_start"?Qp(n,e):n.type==="tool.execution_complete"&&Zp(n,e,t)}function tg(n,e){if(n.editedFilePaths.size===0)return;xl(e);let t=n.editedFilePaths.size;e.editScope.totalEditedFiles=t,e.editScope.singleFileEdits=t===1?1:0,e.editScope.multiFileEdits=t>1?1:0,e.editScope.avgFilesPerSession=t}function sg(n,e,t,s,o,i){Np(n,e,t),Lp(n,e,t),qp(n,e,t,i),Hp(n,s,e,o),Kp(n,e,i),eg(n,s,e)}function ng(n,e){if(n.defaultEffort===null&&Object.keys(n.effortByRequest).length===0)return;let t=Object.keys(n.effortByRequest).length>0?n.effortByRequest:n.defaultEffort!==null?{[n.defaultEffort]:n.requestCount}:{};e.thinkingEffort={byEffort:t,switchCount:0,defaultEffort:n.defaultEffort}}async function og(n,e,t,s,o){let i={sessionMode:"ask"},r={defaultModel:"unknown",defaultEffort:null,requestCount:0,effortByRequest:{},pendingToolCalls:new Map,editedFilePaths:new Set},d=yo(e)?fl(s):null;for(let m of t)if(m.trim())try{let p=JSON.parse(m);sg(p,o,i,r,d,n.toolNameMap)}catch{}tg(r,o),ng(r,o),await wl(n,e,o,s),await zi(n,e,o,s),Vi(o)}async function Al(n,e,t,s){let o=ce();try{let i=n.ecosystems.find(d=>d.handles(e));if(i&&Aa(i))return i.analyzeUsage(e,{modelPricing:n.modelPricing,toolNameMap:n.toolNameMap});if(e.startsWith("windsurf://"))return o;let r=t??await os.promises.readFile(e,"utf8");if(e.endsWith(".jsonl")||nt(r)){let d=r.trim().split(`
60
+ `).filter(m=>m.trim());if(Ml(d))return Fp(n,d,o),await zi(n,e,o,r),o;await og(n,e,d,r,o)}else{let d=s!==void 0?s:JSON.parse(r);if(!Co(d))return n.warn(`Unexpected session format in ${e}`),o;ip(n,d,o),await wl(n,e,o,r,s),await zi(n,e,o,r,s)}}catch(i){n.warn(`Error analyzing session usage from ${e}: ${i}`)}return o}function El(n,e,t){if(n.result?.usage){let s=n.result.usage;return t[e].inputTokens+=typeof s.promptTokens=="number"?s.promptTokens:0,t[e].outputTokens+=typeof s.completionTokens=="number"?s.completionTokens:0,!0}return typeof n.result?.promptTokens=="number"&&typeof n.result?.outputTokens=="number"?(t[e].inputTokens+=n.result.promptTokens,t[e].outputTokens+=n.result.outputTokens,!0):n.result?.metadata&&typeof n.result.metadata.promptTokens=="number"&&typeof n.result.metadata.outputTokens=="number"?(t[e].inputTokens+=n.result.metadata.promptTokens,t[e].outputTokens+=n.result.metadata.outputTokens,!0):!1}function Dl(n,e,t,s){for(let o of n){let i=Xt(o);if(i){let r=i.modelName||e;t[r]||(t[r]={inputTokens:0,outputTokens:0}),i.prompt&&(t[r].inputTokens+=H(i.prompt,r,s)),i.result&&(t[r].outputTokens+=H(i.result,r,s))}}}function ig(n,e,t){t[n]||(t[n]={inputTokens:0,outputTokens:0}),t[n].inputTokens+=typeof e.inputTokens=="number"?e.inputTokens:0,t[n].outputTokens+=typeof e.outputTokens=="number"?e.outputTokens:0;let s=typeof e.cacheReadTokens=="number"?e.cacheReadTokens:0,o=typeof e.cacheWriteTokens=="number"?e.cacheWriteTokens:0;s>0&&(t[n].cachedReadTokens=(t[n].cachedReadTokens??0)+s),o>0&&(t[n].cacheCreationTokens=(t[n].cacheCreationTokens??0)+o)}function rg(n,e){for(let[t,s]of Object.entries(n))s?.usage&&ig(t,s.usage,e)}function ag(n,e,t,s,o){let i=typeof n.data?.outputTokens=="number"?n.data.outputTokens:0;i>0?(t.cliRealOutputByModel||(t.cliRealOutputByModel={}),t.cliRealOutputByModel[e]=(t.cliRealOutputByModel[e]??0)+i):n.data?.content&&(s[e].outputTokens+=H(n.data.content,e,o.tokenEstimators))}function lg(n,e){n.data?.modelMetrics&&(e.cliShutdownModelUsage||(e.cliShutdownModelUsage={}),rg(n.data.modelMetrics,e.cliShutdownModelUsage))}function cg(n,e,t,s,o){if(n.type==="session.shutdown")lg(n,t);else if(n.type==="user.message"&&n.data?.content)s[e].inputTokens+=H(n.data.content,e,o.tokenEstimators);else if(n.type==="assistant.message")ag(n,e,t,s,o);else if(n.type==="tool.execution_start")t.totalCliToolCalls++;else if(n.type==="tool.execution_complete"){let i=n.data?.result?.content||n.data?.result?.detailedContent;i&&(s[e].inputTokens+=H(String(i),e,o.tokenEstimators))}}function ug(n){return n.kind!==0?null:n.v?.selectedModel?.identifier||n.v?.selectedModel?.metadata?.id||n.v?.inputState?.selectedModel?.metadata?.id||null}function dg(n){return n.kind!==2||n.k?.[0]!=="selectedModel"?null:n.v?.identifier||n.v?.metadata?.id||null}function mg(n,e){if(n.type==="session.start"&&typeof n.data?.selectedModel=="string"){e.defaultModel=n.data.selectedModel;return}if(n.type==="session.model_change"&&typeof n.data?.newModel=="string"){e.defaultModel=n.data.newModel;return}let t=ug(n);t&&(e.defaultModel=t.replace(/^copilot\//,""));let s=dg(n);s&&(e.defaultModel=s.replace(/^copilot\//,""))}function pg(n,e,t,s){typeof n.kind=="number"&&(e.isDeltaBased=!0,e.sessionState=Ns(e.sessionState,n)),mg(n,e);let o=n.data?.model||n.model||e.defaultModel;t[o]||(t[o]={inputTokens:0,outputTokens:0}),e.isDeltaBased||cg(n,o,e,t,s)}function gg(n,e,t){let s={defaultModel:"unknown",isDeltaBased:!1,sessionState:{},cliShutdownModelUsage:null,cliRealOutputByModel:null,totalCliToolCalls:0};for(let o of n)if(o.trim())try{let i=JSON.parse(o);pg(i,s,e,t)}catch{}return s}function fg(n,e,t,s){if(n.message?.text&&(t[e].inputTokens+=H(n.message.text,e,s.tokenEstimators)),n.response&&Array.isArray(n.response))for(let o of n.response){let{text:i}=Zt(o);i&&(t[e].outputTokens+=H(i,e,s.tokenEstimators))}}function hg(n,e,t,s){if(!n.requestId)return;let o=e;n.modelId?o=n.modelId.replace(/^copilot\//,""):n.result?.metadata?.modelId?o=n.result.metadata.modelId.replace(/^copilot\//,""):n.result?.details&&(o=_t(n,s.modelPricing)),t[o]||(t[o]={inputTokens:0,outputTokens:0}),El(n,o,t)||fg(n,o,t,s),n.response&&Array.isArray(n.response)&&Dl(n.response,o,t,s.tokenEstimators)}function yg(n,e,t){if(!(!n.isDeltaBased||!n.sessionState.requests||!Array.isArray(n.sessionState.requests)))for(let s of n.sessionState.requests)s&&hg(s,n.defaultModel,e,t)}function _g(n,e,t){let s=Ni(n);for(let[o,i]of s){let r=e.sessionState.requests?.[o];if(!r||r.result?.usage||typeof r.result?.promptTokens=="number"||r.result?.metadata&&typeof r.result.metadata.promptTokens=="number")continue;let l=e.defaultModel;r.modelId&&(l=r.modelId.replace(/^copilot\//,"")),t[l]||(t[l]={inputTokens:0,outputTokens:0}),t[l].inputTokens+=i.promptTokens,t[l].outputTokens+=i.outputTokens}}function Cg(n,e){let t=Math.max(1,Math.round(n.totalCliToolCalls/2)),s=Math.max(1,(t+1)/2),o={};for(let[i,r]of Object.entries(n.cliRealOutputByModel)){let l=e[i]?.inputTokens??0;o[i]={inputTokens:Math.round(l*s),outputTokens:r}}return o}function bg(n,e,t){let s=gg(n,e,t);return!s.isDeltaBased&&s.cliShutdownModelUsage?s.cliShutdownModelUsage:!s.isDeltaBased&&s.cliRealOutputByModel?Cg(s,e):(yg(s,e,t),_g(n,s,e),null)}function kg(n,e,t,s){if(n.message?.parts)for(let o of n.message.parts)o.text&&(t[e].inputTokens+=H(o.text,e,s.tokenEstimators));if(n.response&&Array.isArray(n.response))for(let o of n.response){let{text:i}=Zt(o);i&&(t[e].outputTokens+=H(i,e,s.tokenEstimators))}}function Sg(n,e,t){let s=_t(n,t.modelPricing);e[s]||(e[s]={inputTokens:0,outputTokens:0}),El(n,s,e)||kg(n,s,e,t),n.response&&Array.isArray(n.response)&&Dl(n.response,s,e,t.tokenEstimators)}function wg(n,e,t){if(!(!n.requests||!Array.isArray(n.requests)))for(let s of n.requests)Sg(s,e,t)}async function Ki(n,e,t,s){let o={};if(n.ecosystems){let i=n.ecosystems.find(r=>r.handles(e));if(i)return i.getModelUsage(e)}if(e.startsWith("windsurf://"))return o;try{let i=t??await os.promises.readFile(e,"utf8");if(es(i))return o;if(e.endsWith(".jsonl")||nt(i)){let d=i.trim().split(`
61
+ `);return bg(d,o,n)??o}let l=s!==void 0?s:JSON.parse(i);if(!Co(l))return n.warn(`Unexpected session format in ${e}`),o;wg(l,o,n)}catch(i){n.warn(`Error getting model usage from ${e}: ${i}`)}return o}var Rl=v(require("fs"));async function ot(n){try{return await Rl.promises.access(n),!0}catch{return!1}}var Bs=class{constructor(e){this.openCode=e}openCode;id="opencode";displayName="OpenCode";handles(e){return this.openCode.isOpenCodeSessionFile(e)}getBackingPath(e){return this.openCode.isOpenCodeDbSession(e)?it.join(this.openCode.getOpenCodeDataDir(),"opencode.db"):e}async stat(e){return this.openCode.statSessionFile(e)}async getTokens(e){let t=await this.openCode.getTokensFromOpenCodeSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return this.openCode.countOpenCodeInteractions(e)}async getModelUsage(e){return this.openCode.getOpenCodeModelUsage(e)}async getMeta(e){let t=[],s,o,i=await this.readOpenCodeSessionData(e);i&&(s=i.title||i.slug,o=i.directory||void 0,i.time?.created&&t.push(i.time.created),i.time?.updated&&t.push(i.time.updated));let r=await this.openCode.getOpenCodeMessagesForSession(e);for(let l of r)l.time?.created&&t.push(l.time.created),l.time?.completed&&t.push(l.time.completed);return t.sort((l,d)=>l-d),{title:s,firstInteraction:t.length>0?new Date(t[0]).toISOString():null,lastInteraction:t.length>0?new Date(t[t.length-1]).toISOString():null,workspacePath:o}}async readOpenCodeSessionData(e){let t=this.openCode.getOpenCodeSessionId(e);return this.openCode.isOpenCodeDbSession(e)&&t?this.openCode.readOpenCodeDbSession(t):At(async()=>JSON.parse(await So.promises.readFile(e,"utf8")),null,`openCodeAdapter getMeta readFile(${e})`)}getEditorRoot(e){return this.openCode.getOpenCodeDataDir()}async discover(e){let t=this.getCandidatePaths(),s=[],o=this.openCode.getOpenCodeDataDir(),i=it.join(o,"storage","session"),r=it.join(o,"opencode.db");if(e(`\u{1F4C1} Checking OpenCode JSON path: ${i}`),e(`\u{1F4C1} Checking OpenCode DB path: ${r}`),await ot(i)){let m=async f=>{let _=[];try{_=await So.promises.readdir(f,{withFileTypes:!0})}catch(k){console.error(`[openCodeAdapter] Failed to read dir ${f}:`,k)}for(let k of _)if(k.isDirectory())await m(it.join(f,k.name));else if(k.name.startsWith("ses_")&&k.name.endsWith(".json")){let b=it.join(f,k.name);try{(await So.promises.stat(b)).size>0&&s.push(b)}catch(M){console.error(`[openCodeAdapter] Failed to stat ${b}:`,M)}}};await m(i);let p=s.length;p>0&&e(`\u{1F4C4} Found ${p} session files in OpenCode storage`)}if(await ot(r))try{let m=new Set(s.filter(_=>this.openCode.isOpenCodeSessionFile(_)).map(_=>this.openCode.getOpenCodeSessionId(_)).filter(Boolean)),p=await this.openCode.discoverOpenCodeDbSessions(),f=0;for(let _ of p)m.has(_)||(s.push(it.join(o,`opencode.db#${_}`)),f++);f>0&&e(`\u{1F4C4} Found ${f} additional session(s) in OpenCode database`)}catch(m){e(`OpenCode DB exists but could not be read: ${m}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){let e=this.openCode.getOpenCodeDataDir();return[{path:it.join(e,"storage","session"),source:"OpenCode (JSON)"},{path:it.join(e,"opencode.db"),source:"OpenCode (DB)"}]}async buildTurns(e){let t=[],s=await this.openCode.getOpenCodeMessagesForSession(e),o=0,i=0;for(let r=0;r<s.length;r++){let l=s[r];if(l.role!=="user")continue;i++;let d=s.filter((k,b)=>b>r&&k.role==="assistant"&&k.parentID===l.id),p=(await this.openCode.getOpenCodePartsForMessage(l.id)).filter(k=>k.type==="text").map(k=>k.text||"").join(`
62
+ `),f=await this.processOpenCodeAssistantMessages(d,o),_=Math.max(0,f.turnCumulativeTotal-o-f.turnOutputAndThinking);t.push({turnNumber:i,timestamp:l.time?.created?new Date(l.time.created).toISOString():null,mode:"cli",userMessage:p,assistantResponse:f.assistantText,model:f.model,toolCalls:f.toolCalls,contextReferences:le(),mcpTools:[],inputTokensEstimate:_,outputTokensEstimate:f.turnOutputAndThinking-f.thinkingTokens,thinkingTokensEstimate:f.thinkingTokens}),o=f.turnCumulativeTotal}return{turns:t}}async processOpenCodeAssistantMessages(e,t){let s="",o=[],i=null,r=0,l=t;for(let m of e){i||(i=m.modelID||null),r+=m.tokens?.reasoning||0,typeof m.tokens?.total=="number"&&(l=Math.max(l,m.tokens.total));let p=await this.openCode.getOpenCodePartsForMessage(m.id);for(let f of p)s+=this.processOpenCodePart(f,o)}let d=e.reduce((m,p)=>m+(p.tokens?.output||0)+(p.tokens?.reasoning||0),0);return{assistantText:s,toolCalls:o,model:i,thinkingTokens:r,turnCumulativeTotal:l,turnOutputAndThinking:d}}processOpenCodePart(e,t){return e.type==="text"&&e.text?e.text:(e.type==="tool"&&e.tool&&t.push({toolName:e.tool,arguments:e.state?.input?JSON.stringify(e.state.input):void 0,result:e.state?.output||void 0}),"")}async getSyncData(e){return this.openCode.getOpenCodeSessionData(e)}async analyzeUsage(e,t){let s=ce(),o=await this.openCode.getOpenCodeMessagesForSession(e),i=[];for(let r of o)r.role==="user"&&s.modeUsage.cli++,r.role==="assistant"&&await this.processOpenCodeAssistantMessage(r,s,i);if(i.length>0){let r=[...new Set(i)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=i.length;let l=0;for(let d=1;d<i.length;d++)i[d]!==i[d-1]&&l++;s.modelSwitching.switchCount=l,ge(t.modelPricing,r,i,s)}return s}async processOpenCodeAssistantMessage(e,t,s){s.push(e.modelID||"unknown");let o=await this.openCode.getOpenCodePartsForMessage(e.id);for(let i of o)i.type!=="tool"||!i.tool||(t.toolCalls.total++,t.toolCalls.byTool[i.tool]=(t.toolCalls.byTool[i.tool]||0)+1)}};var Il=v(require("fs")),rt=v(require("path"));var qs=class{constructor(e){this.crush=e}crush;id="crush";displayName="Crush";handles(e){return this.crush.isCrushSessionFile(e)}getBackingPath(e){return this.crush.getCrushDbPath(e)}async stat(e){return this.crush.statSessionFile(e)}async getTokens(e){let t=await this.crush.getTokensFromCrushSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return this.crush.countCrushInteractions(e)}async getModelUsage(e){return this.crush.getCrushModelUsage(e)}async getMeta(e){let t=[],s=await this.crush.readCrushSession(e),o;s&&(o=s.title||void 0,s.created_at&&t.push(s.created_at*1e3),s.updated_at&&t.push(s.updated_at*1e3));let i=await this.crush.getCrushMessages(e);for(let r of i)r.created_at&&t.push(r.created_at*1e3),r.finished_at&&t.push(r.finished_at*1e3);return t.sort((r,l)=>r-l),{title:o,firstInteraction:t.length>0?new Date(t[0]).toISOString():null,lastInteraction:t.length>0?new Date(t[t.length-1]).toISOString():null}}getEditorRoot(e){return rt.dirname(this.crush.getCrushDbPath(e))}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=this.crush.readCrushProjects();e(`\u{1F4C1} Crush: found ${o.length} project(s) in projects.json`);let i=await Promise.all(o.map(async l=>{let d=rt.join(l.data_dir,"crush.db");e(`\u{1F4C1} Checking Crush DB path: ${d}`);try{return await Il.promises.access(d),(await this.crush.discoverSessionsInDb(d)).map(p=>rt.join(l.data_dir,`crush.db#${p}`))}catch(m){e(`Could not read Crush database for ${l.path}: ${m}`)}return[]})),r=i.reduce((l,d)=>l+d.length,0);r>0&&e(`\u{1F4C4} Found ${r} session(s) in Crush database(s)`),s.push(...i.flat())}catch(o){e(`Could not read Crush projects: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){let e=this.crush.getCrushConfigDir(),t=[{path:rt.join(e,"projects.json"),source:"Crush (projects.json)"}],s=mi(()=>this.crush.readCrushProjects().map(o=>({path:rt.join(o.data_dir,"crush.db"),source:`Crush (${rt.basename(o.path)})`})),[],"crushAdapter getCandidatePaths");return t.push(...s),t}async buildTurns(e){let t=[],s=await this.crush.getCrushMessages(e),o=await this.crush.readCrushSession(e),i=s.filter(l=>l.role==="user").length,r=0;for(let l=0;l<s.length;l++){let d=s[l];if(d.role!=="user")continue;r++;let m=[];for(let p=l+1;p<s.length&&s[p].role!=="user";p++)s[p].role==="assistant"&&m.push(s[p]);t.push(this.buildCrushTurn(d,m,o,i,r))}return{turns:t}}buildCrushTurn(e,t,s,o,i){let l=(Array.isArray(e.parts)?e.parts:[]).filter(k=>k?.type==="text"&&k?.text).map(k=>k.text).join(`
63
+ `),{assistantText:d,toolCalls:m,model:p}=this.processAssistantMessagesForTurn(t),f=s?.prompt_tokens&&o>0?Math.round(s.prompt_tokens/o):0,_=s?.completion_tokens&&o>0?Math.round(s.completion_tokens/o):0;return{turnNumber:i,timestamp:e.created_at?new Date(e.created_at*1e3).toISOString():null,mode:"cli",userMessage:l,assistantResponse:d,model:p,toolCalls:m,contextReferences:le(),mcpTools:[],inputTokensEstimate:f,outputTokensEstimate:_,thinkingTokensEstimate:0}}processAssistantMessagesForTurn(e){let t="",s=[],o=null;for(let i of e){o||(o=i.model||null);for(let r of Array.isArray(i.parts)?i.parts:[])t+=this.processCrushMessagePart(r,s)}return{assistantText:t,toolCalls:s,model:o}}processCrushMessagePart(e,t){return e?.type==="text"&&e?.text?e.text:(e?.type==="tool_call"&&e?.data?.name&&t.push({toolName:e.data.name,arguments:e.data.arguments?JSON.stringify(e.data.arguments):void 0}),"")}async getSyncData(e){return this.crush.getCrushSessionData(e)}async analyzeUsage(e,t){let s=ce(),o=await this.crush.getCrushMessages(e),i=[];for(let r of o)r.role==="user"&&s.modeUsage.cli++,r.role==="assistant"&&this.processCrushAssistantMessage(r,s,i);return this.applyCrushModelSwitchingStats(i,s),ge(t.modelPricing,s.modelSwitching.uniqueModels,i,s),s}processCrushAssistantMessage(e,t,s){s.push(e.model||"unknown");for(let o of Array.isArray(e.parts)?e.parts:[]){if(o?.type!=="tool_call"||!o?.data?.name)continue;t.toolCalls.total++;let i=o.data.name;t.toolCalls.byTool[i]=(t.toolCalls.byTool[i]||0)+1}}applyCrushModelSwitchingStats(e,t){let s=[...new Set(e)];t.modelSwitching.uniqueModels=s,t.modelSwitching.modelCount=s.length,t.modelSwitching.totalRequests=e.length;let o=0;for(let i=1;i<e.length;i++)e[i]!==e[i-1]&&o++;t.modelSwitching.switchCount=o}};var Ul=v(require("fs")),Ol=v(require("path")),Fl=v(Ii());var zs=class{constructor(e,t){this.visualStudio=e;this.estimateTokens=t}visualStudio;estimateTokens;id="visualstudio";displayName="Visual Studio";handles(e){return this.visualStudio.isVSSessionFile(e)}getDisplayName(e){return ae(e).includes("/ssmsgithubcopilot/")?"SSMS":"Visual Studio"}getBackingPath(e){return e}async stat(e){return this.visualStudio.statSessionFile(e)}async getTokens(e){let t=await this.visualStudio.getTokenEstimates(e,this.estimateTokens);return{...t,actualTokens:t.tokens}}async countInteractions(e){let t=await this.visualStudio.decodeSessionFile(e);return this.visualStudio.countInteractions(t)}async getModelUsage(e){return this.visualStudio.getModelUsage(e,this.estimateTokens)}async getMeta(e){let t=await this.visualStudio.decodeSessionFile(e),s=this.visualStudio.getSessionTitle(t),o=this.visualStudio.getSessionTimestamps(t),i=[];return o.timeCreated&&i.push(new Date(o.timeCreated).getTime()),o.timeUpdated&&i.push(new Date(o.timeUpdated).getTime()),i.sort((r,l)=>r-l),{title:s,firstInteraction:i.length>0?new Date(i[0]).toISOString():null,lastInteraction:i.length>0?new Date(i[i.length-1]).toISOString():null}}getEditorRoot(e){return Ol.dirname(e)}skipBackendSync=!0;async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=await this.visualStudio.discoverSessions();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Visual Studio Copilot`),s.push(...o))}catch(o){e(`Could not read Visual Studio session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.visualStudio.getLogDir(),source:"Visual Studio (log dir)"},{path:this.visualStudio.getSsmsSessionsDir(),source:"SSMS (sessions dir)"}]}getRawFileContent(e){try{let t=Ul.readFileSync(e),o=(t.length>=2?Array.from((0,Fl.decodeMulti)(t.slice(1))):[]).map((i,r)=>r===0?i:i?.[1]??i);return JSON.stringify(o,null,2)}catch{return"[]"}}async buildTurns(e){let t=[],s=await this.visualStudio.decodeSessionFile(e),o=0;for(let i=1;i<s.length;i+=2){let r=s[i],l=s[i+1];r&&(o++,t.push(this.buildVSTurn(r,l,o)))}return{turns:t}}buildVSTurn(e,t,s){let o=e[1],i=t?.[1],r=this.visualStudio.extractTextFromContent(o?.Content||[]),l=t?this.visualStudio.extractTextFromContent(i?.Content||[]):"",d=this.visualStudio.getModelId(i??o,!i),m=this.visualStudio.extractContextText(o?.Context),p=this.estimateTokens(r+m,d??"gpt-4"),f=t?this.estimateTokens(l,d??"gpt-4"):0;return{turnNumber:s,timestamp:o?.Timestamp?new Date(o.Timestamp).toISOString():null,mode:"ask",userMessage:r,assistantResponse:l,model:d,toolCalls:this.extractVSToolCalls(i),contextReferences:le(),mcpTools:[],inputTokensEstimate:p,outputTokensEstimate:f,thinkingTokensEstimate:0}}extractVSToolCalls(e){let t=[];for(let s of e?.Content||[]){let o=Array.isArray(s)?s[1]:null;o?.Function&&t.push({toolName:String(o.Function.Description||"tool"),result:typeof o.Function.Result=="string"?o.Function.Result:void 0})}return t}async analyzeUsage(e,t){let s=ce(),o=await this.visualStudio.decodeSessionFile(e),i=[];for(let d=1;d<o.length;d++)d%2===1?s.modeUsage.ask++:this.processVSResponseObject(o[d]?.[1],s,i,t);let r=[...new Set(i)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=i.length;let l=0;for(let d=1;d<i.length;d++)i[d]!==i[d-1]&&l++;return s.modelSwitching.switchCount=l,ge(t.modelPricing,r,i,s),s}processVSResponseObject(e,t,s,o){let i=this.visualStudio.getModelId(e,!1);i&&s.push(i);for(let r of e?.Content??[]){let l=Array.isArray(r)?r[1]:null;if(!l?.Function)continue;t.toolCalls.total++;let d=String(l.Function.Name||l.Function.Description||"tool");if(Ze(d)){t.mcpTools.total++;let m=ht(d,o.toolNameMap);t.mcpTools.byServer[m]=(t.mcpTools.byServer[m]||0)+1;let p=Ps(d);t.mcpTools.byTool[p]=(t.mcpTools.byTool[p]||0)+1,t.toolCalls.total--}else t.toolCalls.byTool[d]=(t.toolCalls.byTool[d]||0)+1}}};var Qi=v(require("fs"));var $s=class{constructor(e){this.continue_=e}continue_;id="continue";displayName="Continue";handles(e){return this.continue_.isContinueSessionFile(e)}getBackingPath(e){return e}async stat(e){return Qi.promises.stat(e)}async getTokens(e){let t=await this.continue_.getTokensFromContinueSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return await this.continue_.countContinueInteractions(e)}async getModelUsage(e){return await this.continue_.getContinueModelUsage(e)}async getMeta(e){let t=await this.continue_.getContinueSessionMeta(e),s=this.continue_.getContinueSessionId(e),o=(await this.continue_.readSessionsIndex()).get(s),i=null,r=null;if(o?.dateCreated){i=new Date(o.dateCreated).toISOString();try{r=(await Qi.promises.stat(e)).mtime.toISOString()}catch{}}let l;if(t?.workspaceDirectory)try{l=decodeURIComponent(t.workspaceDirectory.replace(/^file:\/\/\//,"").replace(/^file:\/\//,""))}catch{}return{title:t?.title,firstInteraction:i,lastInteraction:r,workspacePath:l}}getEditorRoot(e){return this.continue_.getContinueDataDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=await this.continue_.getContinueSessionFiles();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Continue (~/.continue/sessions)`),s.push(...o))}catch(o){e(`Could not read Continue session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.continue_.getContinueSessionsDir(),source:"Continue"}]}async buildTurns(e){let t=[],s=await this.continue_.buildContinueTurns(e),o=le();for(let i of s)t.push({turnNumber:t.length+1,timestamp:null,mode:"ask",userMessage:i.userText,assistantResponse:i.assistantText,model:i.model,toolCalls:i.toolCalls,contextReferences:o,mcpTools:[],inputTokensEstimate:i.inputTokens,outputTokensEstimate:i.outputTokens,thinkingTokensEstimate:0});return{turns:t}}async analyzeUsage(e,t){let s=ce(),o=await this.continue_.buildContinueTurns(e),i=await this.continue_.getContinueSessionMeta(e),r=[];for(let m of o){s.modeUsage.ask++,m.model&&r.push(m.model);for(let p of m.toolCalls)s.toolCalls.total++,s.toolCalls.byTool[p.toolName]=(s.toolCalls.byTool[p.toolName]||0)+1}if(i?.mode==="agent")for(let m=0;m<o.length;m++)s.modeUsage.ask--,s.modeUsage.agent++;let l=[...new Set(r)];s.modelSwitching.uniqueModels=l,s.modelSwitching.modelCount=l.length,s.modelSwitching.totalRequests=r.length;let d=0;for(let m=1;m<r.length;m++)r[m]!==r[m-1]&&d++;return s.modelSwitching.switchCount=d,ge(t.modelPricing,l,r,s),s}};var Ll=v(require("fs"));var Nl=v(require("fs"));var Tg=new Set(["review","bug","think","compact","pr_comments"]);function Yi(n){let e="";if(typeof n=="string")e=n;else if(Array.isArray(n)){for(let i of n)if(i?.type==="text"&&typeof i.text=="string"){e=i.text;break}}let s=e.trimStart().split(`
64
+ `)[0].trim().match(/^\/([a-z_]+)(?:\s|$)/i);if(!s)return null;let o=s[1].toLowerCase();return Tg.has(o)?o:null}var Ws=class{constructor(e){this.claudeCode=e}claudeCode;id="claudecode";displayName="Claude Code";handles(e){return this.claudeCode.isClaudeCodeSessionFile(e)}getBackingPath(e){return e}async stat(e){return Nl.promises.stat(e)}async getTokens(e){let t=await this.claudeCode.getTokensFromClaudeCodeSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return await this.claudeCode.countClaudeCodeInteractions(e)}async getModelUsage(e){return await this.claudeCode.getClaudeCodeModelUsage(e)}async getMeta(e){let t=await this.claudeCode.getClaudeCodeSessionMeta(e);return{title:t?.title,firstInteraction:t?.firstInteraction||null,lastInteraction:t?.lastInteraction||null,workspacePath:t?.cwd}}getEditorRoot(e){return this.claudeCode.getClaudeCodeProjectsDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=await this.claudeCode.getClaudeCodeSessionFiles();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Claude Code (~/.claude/projects)`),s.push(...o))}catch(o){e(`Could not read Claude Code session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.claudeCode.getClaudeCodeProjectsDir(),source:"Claude Code"}]}async analyzeUsage(e,t){let s=ce(),o=await ko(e),i=[];for(let r of o)r.type==="user"&&r.message?.role==="user"&&!r.isSidechain?this.processUserEvent(r,s):r.type==="assistant"?this.processAssistantEvent(r,s,t,i):r.type==="system"&&r.subtype==="compact_boundary"&&this.processCompactBoundaryEvent(r,s);return this.applyModelSwitchingStats(i,s),ge(t.modelPricing,s.modelSwitching.uniqueModels,i,s),s}processCompactBoundaryEvent(e,t){e.compactMetadata?.trigger==="auto"&&(t.toolCalls.byTool.__auto_compact__=(t.toolCalls.byTool.__auto_compact__||0)+1)}processUserEvent(e,t){t.modeUsage.cli++;let s=Yi(e.message?.content);if(s){let o=`__slash__${s}`;t.toolCalls.byTool[o]=(t.toolCalls.byTool[o]||0)+1}}processAssistantEvent(e,t,s,o){let i=Ft(e.message?.model||"unknown");o.push(i);let r=Array.isArray(e.message?.content)?e.message.content:[];for(let l of r){if(l?.type!=="tool_use")continue;let d=String(l.name||"tool");if(Ze(d)){let m=ht(d,s.toolNameMap);t.mcpTools.total++,t.mcpTools.byServer[m]=(t.mcpTools.byServer[m]||0)+1,t.mcpTools.byTool[d]=(t.mcpTools.byTool[d]||0)+1}else t.toolCalls.total++,t.toolCalls.byTool[d]=(t.toolCalls.byTool[d]||0)+1}}applyModelSwitchingStats(e,t){let s=[...new Set(e)];t.modelSwitching.uniqueModels=s,t.modelSwitching.modelCount=s.length,t.modelSwitching.totalRequests=e.length;let o=0;for(let i=1;i<e.length;i++)e[i]!==e[i-1]&&o++;t.modelSwitching.switchCount=o}};var Hs=class{constructor(e,t,s,o){this.claudeDesktopCowork=e;this.isMcpToolFn=t;this.extractMcpServerNameFn=s;this.estimateTokensFn=o}claudeDesktopCowork;isMcpToolFn;extractMcpServerNameFn;estimateTokensFn;id="claudedesktop";displayName="Claude Desktop Cowork";handles(e){return this.claudeDesktopCowork.isCoworkSessionFile(e)}getBackingPath(e){return e}async stat(e){return Ll.promises.stat(e)}async getTokens(e){let t=await this.claudeDesktopCowork.getTokensFromCoworkSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return await this.claudeDesktopCowork.countCoworkInteractions(e)}async getModelUsage(e){return await this.claudeDesktopCowork.getCoworkModelUsage(e)}async getMeta(e){let t=await this.claudeDesktopCowork.getCoworkSessionMeta(e);return{title:t?.title,firstInteraction:t?.firstInteraction||null,lastInteraction:t?.lastInteraction||null,workspacePath:t?.cwd}}getEditorRoot(e){return this.claudeDesktopCowork.getCoworkBaseDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=await this.claudeDesktopCowork.getCoworkSessionFiles();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Claude Desktop Cowork`),s.push(...o))}catch(o){e(`Could not read Claude Desktop Cowork session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){let e=this.claudeDesktopCowork.getCoworkBaseDir();return e?[{path:e,source:"Claude Desktop (Cowork)"}]:[]}async buildTurns(e){let t=[],s=await this.claudeDesktopCowork.readCoworkEvents(e),o=null,i=[];for(let l of s)if(l.type==="user"&&!l.isSidechain&&l.message?.role==="user"&&this.isRealUserMessage(l)){let d=this.buildTurnFromEvents(o,i,t.length+1);d&&t.push(d),o=l,i.length=0}else l.type==="assistant"&&l.message?.stop_reason&&l.message?.role==="assistant"&&i.push(l);let r=this.buildTurnFromEvents(o,i,t.length+1);return r&&t.push(r),{turns:t}}isRealUserMessage(e){let t=e.message?.content;if(typeof t=="string")return!!t.trim();if(!Array.isArray(t))return!1;let s=t.some(i=>i.type==="text"),o=t.some(i=>i.type==="tool_result");return s&&!o}buildTurnFromEvents(e,t,s){if(!e)return null;let o=e.message?.content,i=typeof o=="string"?o:Array.isArray(o)?o.filter(b=>b.type==="text").map(b=>b.text||"").join(`
65
+ `):"",{assistantText:r,model:l,actualInputTokens:d,actualOutputTokens:m,toolCalls:p,mcpTools:f}=this.processAssistantEventsForTurn(t),_=l||"claude-sonnet-4-6",k=d>0||m>0?{promptTokens:d,completionTokens:m}:void 0;return{turnNumber:s,timestamp:e.timestamp?new Date(e.timestamp).toISOString():null,mode:"agent",userMessage:i,assistantResponse:r,model:_,toolCalls:p,contextReferences:le(),mcpTools:f,inputTokensEstimate:d||this.estimateTokensFn(i,_),outputTokensEstimate:m||this.estimateTokensFn(r,_),thinkingTokensEstimate:0,actualUsage:k}}processAssistantEventsForTurn(e){let t="",s=0,o=0,i=null,r=[],l=[],d=new Set;for(let m of e){let p=m.message;!i&&p?.model&&(i=p.model);let f=m.requestId,_=!f||!d.has(f);f&&d.add(f);let k=p?.usage;if(k&&_){let b=this.extractUsageTokens(k);s+=b.input,o+=b.output}for(let b of Array.isArray(p?.content)?p.content:[])t+=this.processEventContentBlock(b,r,l)}return{assistantText:t,model:i,actualInputTokens:s,actualOutputTokens:o,toolCalls:r,mcpTools:l}}extractUsageTokens(e){return{input:(e.input_tokens||0)+(e.cache_creation_input_tokens||0)+(e.cache_read_input_tokens||0),output:e.output_tokens||0}}processEventContentBlock(e,t,s){if(e.type==="text")return e.text||"";if(e.type==="tool_use"){let o=e.name||"unknown";this.isMcpToolFn(o)?s.push({server:this.extractMcpServerNameFn(o),tool:o}):t.push({toolName:o,arguments:e.input?JSON.stringify(e.input):void 0})}return""}async analyzeUsage(e,t){let s=ce(),o=await ko(e),i=[];for(let r of o)r.type==="user"&&r.message?.role==="user"&&!r.isSidechain?this.processDesktopUserEvent(r,s):r.type==="assistant"&&this.processDesktopAssistantEvent(r,s,i);return this.applyDesktopModelSwitchingStats(i,s),ge(t.modelPricing,s.modelSwitching.uniqueModels,i,s),s}processDesktopUserEvent(e,t){t.modeUsage.ask++;let s=Yi(e.message?.content);if(s){let o=`__slash__${s}`;t.toolCalls.byTool[o]=(t.toolCalls.byTool[o]||0)+1}}processDesktopAssistantEvent(e,t,s){let o=Ft(e.message?.model||"unknown");s.push(o);let i=Array.isArray(e.message?.content)?e.message.content:[];for(let r of i){if(r?.type!=="tool_use")continue;t.toolCalls.total++;let l=String(r.name||"tool");t.toolCalls.byTool[l]=(t.toolCalls.byTool[l]||0)+1}}applyDesktopModelSwitchingStats(e,t){let s=[...new Set(e)];t.modelSwitching.uniqueModels=s,t.modelSwitching.modelCount=s.length,t.modelSwitching.totalRequests=e.length;let o=0;for(let i=1;i<e.length;i++)e[i]!==e[i-1]&&o++;t.modelSwitching.switchCount=o}};var Gl=v(require("fs"));var Vs=class{constructor(e){this.mistralVibe=e}mistralVibe;id="mistralvibe";displayName="Mistral Vibe";handles(e){return this.mistralVibe.isVibeSessionFile(e)}getBackingPath(e){return e}async stat(e){return Gl.promises.stat(e)}async getTokens(e){let t=await this.mistralVibe.getTokensFromSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return this.mistralVibe.countInteractions(e)}async getModelUsage(e){return this.mistralVibe.getModelUsage(e)}async getMeta(e){let t=await this.mistralVibe.getSessionMeta(e);return{title:t.title,firstInteraction:t.firstInteraction,lastInteraction:t.lastInteraction}}getEditorRoot(e){return this.mistralVibe.getSessionLogDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=await this.mistralVibe.discoverSessions();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Mistral Vibe (~/.vibe/logs/session)`),s.push(...o))}catch(o){e(`Could not read Mistral Vibe session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.mistralVibe.getSessionLogDir(),source:"Mistral Vibe"}]}async buildTurns(e){let t=[],s=await this.mistralVibe.readSessionMessages(e),o=await this.mistralVibe.getSessionMeta(e),i=await this.mistralVibe.getTokensFromSession(e),r=o.model||"devstral",l=this.findUserMessageIndices(s);for(let d=0;d<l.length;d++){let m=l[d],p=d+1<l.length?l[d+1]:s.length;t.push(this.buildMistralTurn(s,m,p,o,r,d+1))}return{turns:t,actualTokens:i.tokens}}findUserMessageIndices(e){let t=[];for(let s=0;s<e.length;s++)e[s].role==="user"&&e[s].injected!==!0&&t.push(s);return t}buildMistralTurn(e,t,s,o,i,r){let l=e[t],d=typeof l.content=="string"?l.content:"",{assistantText:m,toolCalls:p}=this.collectMistralTurnContent(e,t,s);return{turnNumber:r,timestamp:o.firstInteraction,mode:"cli",userMessage:d,assistantResponse:m,model:i,toolCalls:p,contextReferences:le(),mcpTools:[],inputTokensEstimate:0,outputTokensEstimate:0,thinkingTokensEstimate:0}}collectMistralTurnContent(e,t,s){let o="",i=[];for(let r=t+1;r<s;r++){let l=e[r];if(l.role==="assistant")o+=this.processMistralAssistantMsg(l,i);else if(l.role==="tool"){let d=i[i.length-1];d&&(d.result=typeof l.content=="string"?l.content:void 0)}}return{assistantText:o,toolCalls:i}}processMistralAssistantMsg(e,t){let s="";typeof e.content=="string"&&(s=e.content);for(let o of Array.isArray(e.tool_calls)?e.tool_calls:[])t.push({toolName:o.function?.name||o.name||"unknown",arguments:o.function?.arguments?JSON.stringify(o.function.arguments):void 0});return s}async analyzeUsage(e,t){let s=ce(),o=await this.mistralVibe.readSessionMessages(e),r=(await this.mistralVibe.getSessionMeta(e)).model||"devstral",l=[];for(let m of o)if(m.role==="user"&&m.injected!==!0)s.modeUsage.cli++;else if(m.role==="assistant"&&(l.push(r),Array.isArray(m.tool_calls)))for(let p of m.tool_calls){s.toolCalls.total++;let f=String(p.function?.name||p.name||"tool");s.toolCalls.byTool[f]=(s.toolCalls.byTool[f]||0)+1}let d=[...new Set(l)];return s.modelSwitching.uniqueModels=d,s.modelSwitching.modelCount=d.length,s.modelSwitching.totalRequests=l.length,s.modelSwitching.switchCount=0,ge(t.modelPricing,d,l,s),s}};var jl=v(require("fs"));var Js=class{constructor(e){this.geminiCli=e}geminiCli;id="geminicli";displayName="Gemini CLI";handles(e){return this.geminiCli.isGeminiCliSessionFile(e)}getBackingPath(e){return e}async stat(e){return jl.promises.stat(e)}async getTokens(e){let t=await this.geminiCli.getTokensFromGeminiCliSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return await this.geminiCli.countGeminiCliInteractions(e)}async getModelUsage(e){return await this.geminiCli.getGeminiCliModelUsage(e)}async getMeta(e){return await this.geminiCli.getGeminiCliSessionMeta(e)}getEditorRoot(e){return this.geminiCli.getGeminiDataDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=await this.geminiCli.getGeminiCliSessionFiles();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Gemini CLI (~/.gemini/tmp/*/chats)`),s.push(...o))}catch(o){e(`Could not read Gemini CLI session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.geminiCli.getGeminiTmpDir(),source:"Gemini CLI (sessions)"},{path:this.geminiCli.getGeminiProjectsPath(),source:"Gemini CLI (projects.json)"},{path:this.geminiCli.getGeminiLogsPath(),source:"Gemini CLI (logs.json)"}]}async buildTurns(e){return await this.geminiCli.buildGeminiCliTurns(e)}async getDailyFractions(e){return await this.geminiCli.getGeminiCliDailyFractions(e)}async analyzeUsage(e,t){let s=ce(),o=await this.geminiCli.readGeminiCliSession(e),i=[];s.modeUsage.cli+=o.userRecords.length;for(let r of o.assistantRecords)this.processGeminiAssistantRecord(r,s,i);return this.applyGeminiModelSwitchingStats(i,s),ge(t.modelPricing,s.modelSwitching.uniqueModels,i,s),s}processGeminiAssistantRecord(e,t,s){let o=Gs(e.model||"unknown");s.push(o);for(let i of Array.isArray(e.toolCalls)?e.toolCalls:[]){let r=this.resolveGeminiToolName(i);r&&(t.toolCalls.total++,t.toolCalls.byTool[r]=(t.toolCalls.byTool[r]||0)+1)}}resolveGeminiToolName(e){return typeof e?.name=="string"&&e.name.trim().length>0?e.name.trim():typeof e?.displayName=="string"&&e.displayName.trim().length>0?e.displayName.trim():""}applyGeminiModelSwitchingStats(e,t){let s=[...new Set(e)];t.modelSwitching.uniqueModels=s,t.modelSwitching.modelCount=s.length,t.modelSwitching.totalRequests=e.length;let o=0;for(let i=1;i<e.length;i++)e[i]!==e[i-1]&&o++;t.modelSwitching.switchCount=o}};var Bl=v(require("fs")),Xi=v(require("inspector"));var Ks=class{constructor(e,t=()=>0){this.antigravity=e;this.estimateTokens=t}antigravity;estimateTokens;id="antigravity";displayName="Antigravity";handles(e){return this.antigravity.isAntigravitySessionFile(e)}getBackingPath(e){return e}async stat(e){return Bl.promises.stat(e)}async getTokens(e){return{...await this.antigravity.estimateTokensFromAntigravitySession(e,this.estimateTokens),actualTokens:0}}async countInteractions(e){return this.antigravity.countAntigravityInteractions(e)}async getModelUsage(e){return{}}async getMeta(e){return this.antigravity.getAntigravitySessionMeta(e)}getEditorRoot(e){return this.antigravity.getAntigravityBrainDir()}async buildTurns(e){return this.antigravity.buildAntigravityTurns(e)}async discover(e){let t=this.getCandidatePaths(),s=[],o=this.antigravity.getAntigravityBrainDir();Xi.url()&&e(`\u{1F50D} [Antigravity] Checking brain dir: ${o}`);try{let i=await this.antigravity.getAntigravitySessionFiles();Xi.url()&&e(`\u{1F50D} [Antigravity] Found ${i.length} transcript(s)`),i.length>0&&(e(`\u{1F4C4} Found ${i.length} session file(s) in Antigravity (~/.gemini/antigravity/brain/*/)`),s.push(...i))}catch(i){e(`Could not read Antigravity session files: ${i}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.antigravity.getAntigravityBrainDir(),source:"Antigravity (brain/)"}]}async analyzeUsage(e,t){let s=ce(),o=await this.antigravity.readAntigravitySession(e);s.modeUsage.cli+=o.userEntries.length;for(let i of o.modelEntries)if(Array.isArray(i.tool_calls))for(let r of i.tool_calls)r.name&&(s.toolCalls.total++,s.toolCalls.byTool[r.name]=(s.toolCalls.byTool[r.name]||0)+1);return s.modelSwitching.uniqueModels=[],s.modelSwitching.modelCount=0,s.modelSwitching.totalRequests=0,s.modelSwitching.switchCount=0,s}};var ql=v(require("fs"));var Qs=class{constructor(e){this.pi=e}pi;id="pi";displayName="Pi";handles(e){return this.pi.isPiSessionFile(e)}getBackingPath(e){return e}async stat(e){return ql.promises.stat(e)}async getTokens(e){let t=await this.pi.getTokens(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return this.pi.countInteractions(e)}async getModelUsage(e){return this.pi.getModelUsage(e)}async getMeta(e){return this.pi.getSessionMeta(e)}getEditorRoot(e){return this.pi.getConfigDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=await this.pi.discoverSessions();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Pi (~/.pi/agent/sessions)`),s.push(...o))}catch(o){e(`Could not read Pi session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.pi.getConfigDir(),source:"Pi"}]}async buildTurns(e){let t=await this.pi.getMessages(e),{tokens:s}=await this.pi.getTokens(e),o=await this.pi.getModelUsage(e),i=t.filter(d=>d.message?.role==="user").length,{perTurnInput:r,perTurnOutput:l}=this.computePerTurnDefaults(o,i);return{turns:this.buildAllTurns(t,r,l),actualTokens:s}}computePerTurnDefaults(e,t){if(t===0)return{perTurnInput:0,perTurnOutput:0};let s=Object.values(e).reduce((i,r)=>i+r.inputTokens,0),o=Object.values(e).reduce((i,r)=>i+r.outputTokens,0);return{perTurnInput:Math.round(s/t),perTurnOutput:Math.round(o/t)}}buildAllTurns(e,t,s){let o=[],i=0;for(let r=0;r<e.length;r++){if(e[r].message?.role!=="user")continue;i++;let l=this.collectAssistantEvents(e,r);o.push(this.buildTurn(e[r],l,i,t,s))}return o}collectAssistantEvents(e,t){let s=[];for(let o=t+1;o<e.length&&e[o].message?.role!=="user";o++)e[o].message?.role==="assistant"&&s.push(e[o]);return s}buildTurn(e,t,s,o,i){let r=this.extractUserText(e.message?.content),{assistantText:l,toolCalls:d,model:m}=this.processAssistantEvents(t),p=t[t.length-1]?.message?.usage;return{turnNumber:s,timestamp:e.timestamp??null,mode:"cli",userMessage:r,assistantResponse:l,model:m,toolCalls:d,contextReferences:le(),mcpTools:[],inputTokensEstimate:p?p.input??0:o,outputTokensEstimate:p?p.output??0:i,thinkingTokensEstimate:0}}extractUserText(e){return Array.isArray(e)?e.filter(t=>t.type==="text").map(t=>t.text||"").join(`
66
+ `):typeof e=="string"?e:""}processAssistantEvents(e){let t="",s=[],o=null;for(let i of e){let r=i.message;o||(o=r?.model??null),Array.isArray(r?.content)&&(t+=this.processContentParts(r.content,s))}return{assistantText:t,toolCalls:s,model:o}}processContentParts(e,t){let s="";for(let o of e)o.type==="text"&&o.text?s+=o.text:o.type==="toolCall"&&o.name&&t.push({toolName:o.name,arguments:o.arguments?JSON.stringify(o.arguments):void 0});return s}async getSyncData(e){return this.pi.getSessionData(e)}async analyzeUsage(e,t){let s=ce(),o=await this.pi.getMessages(e),i=this.collectModelsAndCounts(o,s);return this.applyModelSwitchingStats(i,t,s),s}collectModelsAndCounts(e,t){let s=[];for(let o of e){let i=o.message;i&&(i.role==="user"?t.modeUsage.cli++:i.role==="assistant"&&this.processAssistantForAnalysis(i,s,t))}return s}processAssistantForAnalysis(e,t,s){if(t.push(e.model||"unknown"),!!Array.isArray(e.content)){for(let o of e.content)if(o.type==="toolCall"&&o.name){s.toolCalls.total++;let i=o.name;s.toolCalls.byTool[i]=(s.toolCalls.byTool[i]||0)+1}}}applyModelSwitchingStats(e,t,s){let o=[...new Set(e)];s.modelSwitching.uniqueModels=o,s.modelSwitching.modelCount=o.length,s.modelSwitching.totalRequests=e.length;let i=0;for(let r=1;r<e.length;r++)e[r]!==e[r-1]&&i++;s.modelSwitching.switchCount=i,ge(t.modelPricing,o,e,s)}};var Ee=v(require("fs")),Y=v(require("path")),Zs=v(require("os"));var Ys=["Code","Code - Insiders","Code - Exploration","VSCodium","Cursor"],Wl=new Set(["Public","Default","Default User","All Users"]);function Zi(){return Zs.platform()==="linux"&&(typeof process.env.WSL_DISTRO_NAME=="string"||typeof process.env.WSL_INTEROP=="string")}function zl(){let n=Zs.platform(),e=Zs.homedir(),t=[];if(n==="win32"){let s=process.env.APPDATA||Y.join(e,"AppData","Roaming");for(let o of Ys)t.push(Y.join(s,o,"User"))}else if(n==="darwin")for(let s of Ys)t.push(Y.join(e,"Library","Application Support",s,"User"));else{let s=process.env.XDG_CONFIG_HOME||Y.join(e,".config");for(let o of Ys)t.push(Y.join(s,o,"User"))}return t.push(Y.join(e,".vscode-server","data","User"),Y.join(e,".vscode-server-insiders","data","User"),Y.join(e,".vscode-remote","data","User"),Y.join("/tmp",".vscode-server","data","User"),Y.join("/workspace",".vscode-server","data","User")),t}async function Mg(){if(!Zi())return[];let n=[],e=[],t=process.env.USERPROFILE;if(t){let o=t.match(/^\/mnt\/[a-z]\/Users\/([^/]+)/);o&&e.push(o[1])}let s="/mnt/c/Users";try{let o=await Ee.promises.readdir(s,{withFileTypes:!0});for(let i of o){if(!i.isDirectory())continue;let r=i.name;Wl.has(r)||r.startsWith(".")||e.includes(r)||e.push(r)}}catch{return[]}for(let o of e){let i=Y.join(s,o,"AppData","Roaming");for(let r of Ys)n.push(Y.join(i,r,"User"))}return n}function Pg(){if(!Zi())return[];let n=[],e="/mnt/c/Users";try{let t=Ee.readdirSync(e,{withFileTypes:!0});for(let s of t)if(!(!s.isDirectory()||s.name.startsWith(".")||Wl.has(s.name)))for(let o of Ys)n.push(Y.join(e,s.name,"AppData","Roaming",o,"User"))}catch{}return n}async function $l(n,e,t,s){if(n.length===0)return;let o=0,i=Array.from({length:Math.min(t,n.length)},async()=>{for(;o<n.length;){let r=o++;try{await e(n[r],r)}catch(l){s?.(n[r],r,l)}}});await Promise.all(i)}async function Hl(n,e,t){let s;try{s=await Ee.promises.readdir(n,{withFileTypes:!0})}catch(o){t(`Could not scan directory ${n}: ${o}`);return}for(let o of s){let i=Y.join(n,o.name);if(o.isDirectory()){await Hl(i,e,t);continue}if(!(!o.name.endsWith(".json")&&!o.name.endsWith(".jsonl"))&&!gl(o.name))try{(await Ee.promises.stat(i)).size>0&&e.push(i)}catch{}}}var Xs=class{id="copilotchat";displayName="GitHub Copilot Chat";handles(e){return!1}getBackingPath(e){return e}async stat(e){return Ee.promises.stat(e)}async getTokens(e){try{let t=await Ee.promises.readFile(e,"utf8");return es(t)?{tokens:0,thinkingTokens:0,actualTokens:0}:e.endsWith(".jsonl")||nt(t)?uo(t):{tokens:0,thinkingTokens:0,actualTokens:0}}catch{return{tokens:0,thinkingTokens:0,actualTokens:0}}}async countInteractions(e){return 0}async getModelUsage(e){return{}}async getMeta(e){return{title:void 0,firstInteraction:null,lastInteraction:null}}getEditorRoot(e){let t=me(e),s=t.lastIndexOf("/User/");return s>=0?t.substring(0,s+5):Y.dirname(e)}getCandidatePaths(){let e=[];for(let t of zl())e.push({path:t,source:"VS Code"});for(let t of Pg())e.push({path:t,source:"VS Code (Windows via WSL)"});return e}async discover(e){let t=this.getCandidatePaths(),s=[],o=await this.resolveAllVSCodePaths(e);e(`\u{1F4C2} Considering ${o.length} candidate VS Code paths`);let i=await Promise.all(o.map(l=>ot(l).catch(()=>!1))),r=o.filter((l,d)=>i[d]);return e(`\u2705 Found ${r.length} of ${o.length} VS Code paths exist on disk`),await $l(r,async l=>{let d=Y.basename(Y.dirname(l));await this.scanWorkspaceStorage(l,d,s,e),await this.scanGlobalStorage(l,d,s,e)},4,(l,d,m)=>{e(`Failed to scan VS Code user path ${l}: ${m instanceof Error?m.message:String(m)}`)}),{sessionFiles:s,candidatePaths:t}}async resolveAllVSCodePaths(e){let t=zl();if(Zi()){e("\u{1FA9F} WSL environment detected \u2014 probing Windows-side VS Code paths");let s=await Mg();s.length>0?(e(`\u{1FA9F} Adding ${s.length} Windows-side candidate paths from WSL`),t.push(...s)):e("\u{1FA9F} No Windows-side paths found (Windows drive may not be mounted)")}return t}async scanWorkspaceStorage(e,t,s,o){let i=Y.join(e,"workspaceStorage"),r;try{r=await Ee.promises.readdir(i)}catch{return}let l=["GitHub.copilot-chat","github.copilot-chat","GitHub.copilot","github.copilot"],d=["chatSessions","debug-logs","transcripts"],m=async f=>{try{let _=(await Ee.promises.readdir(f)).filter(k=>k.endsWith(".json")||k.endsWith(".jsonl")).map(k=>Y.join(f,k));_.length>0&&s.push(..._)}catch{}},p=0;await $l(r,async f=>{let _=Y.join(i,f),k;try{k=await Ee.promises.readdir(_)}catch{return}let b=new Set(k),M=s.length;b.has("chatSessions")&&await m(Y.join(_,"chatSessions"));for(let F of l)if(b.has(F))for(let x of d)await m(Y.join(_,F,x));s.length>M&&p++},8),p>0&&o(`\u{1F4C2} ${t}: found sessions in ${p}/${r.length} workspace dir(s)`)}async scanGlobalStorage(e,t,s,o){try{let i=Y.join(e,"globalStorage","emptyWindowChatSessions"),r=(await Ee.promises.readdir(i)).filter(l=>l.endsWith(".json")||l.endsWith(".jsonl")).map(l=>Y.join(i,l));r.length>0&&s.push(...r)}catch{}for(let i of["GitHub.copilot-chat","github.copilot-chat","GitHub.copilot","github.copilot"]){let r=Y.join(e,"globalStorage",i);try{await Ee.promises.access(r),await Hl(r,s,o)}catch{}}}};var To=v(require("fs")),tn=v(require("path")),sr=v(require("os"));var en=v(require("fs")),er=v(require("path")),Vl=v(require("os")),Jl=v(qn());function vg(n){if(typeof n!="object"||n===null)return!1;let e=n;return typeof e.id=="string"&&(e.repository===null||typeof e.repository=="string")&&(e.branch===null||typeof e.branch=="string")&&(e.summary===null||typeof e.summary=="string")&&(e.created_at===null||typeof e.created_at=="string")&&(e.updated_at===null||typeof e.updated_at=="string")}function xg(n){if(typeof n!="object"||n===null)return!1;let e=n;return typeof e.session_id=="string"&&typeof e.turn_index=="number"&&(e.user_message===null||typeof e.user_message=="string")&&(e.assistant_response===null||typeof e.assistant_response=="string")&&(e.timestamp===null||typeof e.timestamp=="string")}var wo=class{_sqlJsModule=null;_sqlJsInitPromise=null;_dbCache=new Map;_dbCacheInflight=new Map;dispose(){for(let e of this._dbCache.values())try{e.db.close()}catch{}this._dbCache.clear(),this._dbCacheInflight.clear(),this._sqlJsInitPromise=null}closeDb(e){try{e.close()}catch{}}isMissingFileError(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}async statDb(e){try{return await en.promises.stat(e)}catch(t){return this.isMissingFileError(t)&&this._dbCache.has(e)&&(this.closeDb(this._dbCache.get(e).db),this._dbCache.delete(e)),null}}isCachedDbCurrent(e,t){let s=this._dbCache.get(e);return!!s&&s.mtimeMs===t.mtimeMs&&s.size===t.size}getDbCacheKey(e,t){return`${e}:${t.mtimeMs}:${t.size}`}sameDbStats(e,t){return e.mtimeMs===t.mtimeMs&&e.size===t.size}async refreshDb(e,t){let s;try{let r=await this.initSqlJs(),l=await en.promises.readFile(e);s=new r.Database(l)}catch{return this._dbCache.get(e)?.db??null}let o=await this.statDb(e);if(!o||!this.sameDbStats(t,o))return this.closeDb(s),this._dbCache.get(e)?.db??null;let i=this._dbCache.get(e);return i&&this.closeDb(i.db),this._dbCache.set(e,{db:s,mtimeMs:t.mtimeMs,size:t.size}),s}async getDb(e){let t=await this.statDb(e);if(!t)return this._dbCache.get(e)?.db??null;if(this.isCachedDbCurrent(e,t))return this._dbCache.get(e).db;let s=this.getDbCacheKey(e,t),o=this._dbCacheInflight.get(s);if(o)return o;let i=this.refreshDb(e,t);this._dbCacheInflight.set(s,i);try{return await i}finally{this._dbCacheInflight.get(s)===i&&this._dbCacheInflight.delete(s)}}getDbPath(){return er.join(Vl.homedir(),".copilot","session-store.db")}virtualPath(e){return`${this.getDbPath()}#${e}`}isCliStoreSession(e){return e.includes("session-store.db#")}getDbPathFromVirtual(e){let t=e.indexOf("session-store.db#");return t===-1?e:e.substring(0,t+16)}getSessionId(e){let t=e.indexOf("session-store.db#");return t===-1?null:e.substring(t+17)||null}async stat(e){return en.promises.stat(this.getDbPathFromVirtual(e))}async initSqlJs(){return this._sqlJsModule?this._sqlJsModule:(this._sqlJsInitPromise||(this._sqlJsInitPromise=(async()=>{let e=er.join(__dirname,"sql-wasm.wasm"),t;try{t=await en.promises.readFile(e)}catch{}let s=await(0,Jl.default)(t?{wasmBinary:t}:void 0);return this._sqlJsModule=s,s})().catch(e=>{throw this._sqlJsInitPromise=null,e})),this._sqlJsInitPromise)}async discoverNewSessions(e){let t=this.getDbPath(),s=await this.getDb(t);if(!s)return[];try{let o=s.exec("SELECT id FROM sessions ORDER BY updated_at DESC");return o.length===0?[]:o[0].values.map(i=>i[0]).filter(i=>!e.has(i))}catch{return[]}}async readSession(e){let t=this.getDbPathFromVirtual(e),s=this.getSessionId(e);if(!s)return null;let o=await this.getDb(t);if(!o)return null;try{let i=o.exec("SELECT id, repository, branch, summary, created_at, updated_at FROM sessions WHERE id = ?",[s]);if(i.length===0||i[0].values.length===0)return null;let r=i[0].columns,l=i[0].values[0],d={};return r.forEach((m,p)=>{d[m]=l[p]}),vg(d)?d:null}catch{return null}}async getTurns(e){let t=this.getDbPathFromVirtual(e),s=this.getSessionId(e);if(!s)return[];let o=await this.getDb(t);if(!o)return[];try{let i=o.exec("SELECT session_id, turn_index, user_message, assistant_response, timestamp FROM turns WHERE session_id = ? ORDER BY turn_index ASC",[s]);if(i.length===0)return[];let r=i[0].columns,l=[];for(let d of i[0].values){let m={};r.forEach((p,f)=>{m[p]=d[f]}),xg(m)&&l.push(m)}return l}catch{return[]}}async countTurns(e){let t=this.getDbPathFromVirtual(e),s=this.getSessionId(e);if(!s)return 0;let o=await this.getDb(t);if(!o)return 0;try{let i=o.exec("SELECT COUNT(*) FROM turns WHERE session_id = ?",[s]);return i.length===0||i[0].values.length===0?0:i[0].values[0][0]||0}catch{return 0}}async getDailyFractions(e){let t=await this.getTurns(e),s={},o=0;for(let r of t)if(r.timestamp)try{let l=pe(new Date(r.timestamp));s[l]=(s[l]||0)+1,o++}catch{}if(o===0){let r=await this.readSession(e);return{[r?.updated_at?pe(new Date(r.updated_at)):pe(new Date)]:1}}let i={};for(let[r,l]of Object.entries(s))i[r]=l/o;return i}};function tr(){return tn.join(sr.homedir(),".copilot","session-state")}var sn=class{id="copilotcli";displayName="GitHub Copilot CLI";store=new wo;handles(e){return this.store.isCliStoreSession(e)}getBackingPath(e){return this.store.isCliStoreSession(e)?this.store.getDbPathFromVirtual(e):e}async stat(e){return this.store.isCliStoreSession(e)?this.store.stat(e):To.promises.stat(e)}async getTokens(e){return{tokens:0,thinkingTokens:0,actualTokens:0}}async countInteractions(e){return this.store.isCliStoreSession(e)?this.store.countTurns(e):0}async getModelUsage(e){return{}}async getMeta(e){if(this.store.isCliStoreSession(e)){let t=await this.store.readSession(e);return t?{title:t.summary??void 0,firstInteraction:t.created_at,lastInteraction:t.updated_at}:{title:void 0,firstInteraction:null,lastInteraction:null}}return{title:void 0,firstInteraction:null,lastInteraction:null}}getEditorRoot(e){return this.store.isCliStoreSession(e)?tn.join(sr.homedir(),".copilot"):tr()}async buildTurns(e){return this.store.isCliStoreSession(e)?{turns:(await this.store.getTurns(e)).map(o=>({turnNumber:o.turn_index+1,timestamp:o.timestamp,mode:"cli",userMessage:o.user_message??"",assistantResponse:o.assistant_response??"",model:null,toolCalls:[],contextReferences:le(),mcpTools:[],inputTokensEstimate:0,outputTokensEstimate:0,thinkingTokensEstimate:0}))}:{turns:[]}}async analyzeUsage(e,t){let s=ce();if(!this.store.isCliStoreSession(e))return s;let o=await this.store.getTurns(e);return s.modeUsage.cli=o.filter(i=>i.user_message!==null).length,s}async getDailyFractions(e){return this.store.isCliStoreSession(e)?this.store.getDailyFractions(e):{}}getCandidatePaths(){let e=[{path:tr(),source:"Copilot CLI"}],t=this.store.getDbPath();return e.push({path:t,source:"Copilot CLI (session-store.db)"}),e}async discover(e){let t=this.getCandidatePaths(),s=[],o=tr(),i=new Set;try{if(await ot(o)){let r;try{r=await To.promises.readdir(o,{withFileTypes:!0})}catch(p){e(`Could not read Copilot CLI session path in ${o}: ${p}`),r=[]}let l=r.filter(p=>!p.isDirectory()&&(p.name.endsWith(".json")||p.name.endsWith(".jsonl"))).map(p=>tn.join(o,p.name));l.length>0&&(e(`\u{1F4C4} Found ${l.length} session files in Copilot CLI directory`),s.push(...l));let d=r.filter(p=>p.isDirectory()),m=(await Promise.all(d.map(async p=>{let f=tn.join(o,p.name,"events.jsonl");try{if((await To.promises.stat(f)).size>0)return i.add(p.name),f}catch{}return null}))).filter(p=>p!==null);m.length>0&&(e(`\u{1F4C4} Found ${m.length} session files in Copilot CLI subdirectories`),s.push(...m))}}catch(r){e(`Could not check Copilot CLI session path ${o}: ${r}`)}try{let r=await this.store.discoverNewSessions(i);r.length>0&&(e(`\u{1F4C4} Found ${r.length} chat-only session(s) in Copilot CLI session-store.db`),s.push(...r.map(l=>this.store.virtualPath(l))))}catch(r){e(`Could not read Copilot CLI session-store.db: ${r}`)}return{sessionFiles:s,candidatePaths:t}}};var is=v(require("fs")),Mo=v(require("path")),Kl=v(require("os"));function nr(){return Mo.join(Kl.homedir(),".copilot","jb")}var nn=class{id="jetbrains";displayName="JetBrains IDE";handles(e){return!1}getBackingPath(e){return e}async stat(e){return is.promises.stat(e)}async parsePartition(e){try{let t=await is.promises.readFile(e,"utf8");return _o(t)}catch{return null}}async getTokens(e){let t=await this.parsePartition(e);return t?{tokens:t.tokens,thinkingTokens:t.thinkingTokens,actualTokens:t.actualTokens}:{tokens:0,thinkingTokens:0,actualTokens:0}}async countInteractions(e){return(await this.parsePartition(e))?.interactions??0}async getModelUsage(e){return(await this.parsePartition(e))?.modelUsage??{}}async getMeta(e){let t=await this.parsePartition(e);return{title:void 0,firstInteraction:t?.firstInteraction??null,lastInteraction:t?.lastInteraction??null}}async getToolCounts(e){return(await this.parsePartition(e))?.toolCounts??{}}async getToolCalls(e){return(await this.parsePartition(e))?.toolCalls??[]}getEditorRoot(e){return nr()}getCandidatePaths(){return[{path:nr(),source:"JetBrains IDE"}]}async discover(e){let t=this.getCandidatePaths(),s=[],o=nr();try{if(!await ot(o))return{sessionFiles:s,candidatePaths:t};let i;try{i=await is.promises.readdir(o,{withFileTypes:!0})}catch(d){return e(`Could not read JetBrains session path in ${o}: ${d}`),{sessionFiles:s,candidatePaths:t}}let r=i.filter(d=>d.isDirectory()),l=(await Promise.all(r.map(async d=>{let m=Mo.join(o,d.name),p;try{p=await is.promises.readdir(m,{withFileTypes:!0})}catch{return[]}let f=[];for(let _ of p){if(!_.isFile()||!/^partition-\d+\.jsonl$/.test(_.name))continue;let k=Mo.join(m,_.name);try{(await is.promises.stat(k)).size>0&&f.push(k)}catch{}}return f}))).flat();l.length>0&&(e(`\u{1F4C4} Found ${l.length} session file(s) in JetBrains IDE Copilot`),s.push(...l))}catch(i){e(`Could not check JetBrains session path ${o}: ${i}`)}return{sessionFiles:s,candidatePaths:t}}};function or(n){return{openCode:new zn(n),crush:new $n(n),continue_:new Wn,visualStudio:new oo,claudeCode:new ro,claudeDesktopCowork:new lo,mistralVibe:new co,geminiCli:new mo,antigravity:new go,pi:new ho}}function ir(n){return[new Bs(n.openCode),new qs(n.crush),new zs(n.visualStudio,n.estimateTokens),new $s(n.continue_),new Hs(n.claudeDesktopCowork,n.isMcpTool,n.extractMcpServerName,n.estimateTokens),new Ws(n.claudeCode),new Vs(n.mistralVibe),new Ks(n.antigravity,n.estimateTokens),new Js(n.geminiCli),new Qs(n.pi),new Xs,new sn,new nn]}function on(n,e){try{return JSON.parse(n)}catch(t){console.error(`[${e}] JSON parse error:`,t);return}}function Le(n){return typeof n=="object"&&n!==null}function Ql(n){return typeof n!="string"?!1:!["__proto__","prototype","constructor","hasOwnProperty"].includes(n)&&!n.startsWith("__")}function rs(n){return/^\d+$/.test(n)}function rr(n,e){if(typeof n!="string")return e;let t=n.trim();return t?t.startsWith("copilot/")?t.substring(8):t:e}function Ag(n,e,t){let s=n;for(let o=0;o<e.length-1;o++){let i=e[o],r=e[o+1];if(Array.isArray(s)&&rs(i)){let l=Number(i),d=s[l],m;Le(d)?m=d:(m=rs(r)?[]:Object.create(null),s[l]=m),s=m;continue}if(!Le(s))return null;s=t(s,i,r)}return{root:n,current:s}}function Eg(n,e,t,s){return Array.isArray(e)&&rs(t)?(e[Number(t)]=s,n):(Le(e)&&Object.defineProperty(e,t,{value:s,writable:!0,enumerable:!0,configurable:!0}),n)}function Dg(n,e,t,s){let o;if(Array.isArray(e)&&rs(t)){let i=Number(t);Array.isArray(e[i])||(e[i]=[]),o=e[i]}else Le(e)&&(Array.isArray(e[t])||Object.defineProperty(e,t,{value:[],writable:!0,enumerable:!0,configurable:!0}),o=e[t]);return Array.isArray(o)&&(Array.isArray(s)?o.push(...s):o.push(s)),n}function Rg(n,e){if(!Le(e))return n;let t=e.kind,s=e.k,o=e.v;if(t===0)return o;if(!Array.isArray(s)||s.length===0)return n;let i=s.map(String);for(let _ of i)if(!Ql(_))return n;let r=Le(n)?n:Object.create(null),d=Ag(r,i,(_,k,b)=>{let M=_[k];if(!Le(M)){let F=rs(b)?[]:Object.create(null);return _[k]=F,F}return M});if(!d)return r;let{root:m,current:p}=d,f=i[i.length-1];return t===1?Eg(m,p,f,o):t===2?Dg(m,p,f,o):m}function Ig(n){if(!Array.isArray(n))return{responseText:"",thinkingText:""};let e="",t="";for(let s of n){let{text:o,isThinking:i}=Zt(s);o&&(i?t+=o:e+=o)}return{responseText:e,thinkingText:t}}var ar=class{constructor(e,t){this.defaultModel=e;this.estimateTokens=t}defaultModel;estimateTokens;modelUsage={};totalInputTokens=0;totalOutputTokens=0;ensureModel(e){return typeof e=="string"&&e?e:this.defaultModel}addInput(e,t){let s=this.ensureModel(e);this.modelUsage[s]||(this.modelUsage[s]={inputTokens:0,outputTokens:0});let o=this.estimateTokens(t,s);this.modelUsage[s].inputTokens+=o,this.totalInputTokens+=o}addOutput(e,t){let s=this.ensureModel(e);this.modelUsage[s]||(this.modelUsage[s]={inputTokens:0,outputTokens:0});let o=this.estimateTokens(t,s);this.modelUsage[s].outputTokens+=o,this.totalOutputTokens+=o}};function Ug(n,e,t){let s=n.modelId??n.selectedModel?.identifier??n.model,o=rr(s,t);if(typeof s=="string"&&s.trim())return o;let i=e?e(n):void 0;return rr(i,"")||o}function Og(n,e,t){if(n.message?.parts)for(let s of n.message.parts)typeof s?.text=="string"&&s.text&&t(e,s.text);else typeof n.message?.text=="string"&&t(e,n.message.text)}function Fg(n,e,t,s){let o=n.modelName||e;n.prompt&&t(o,n.prompt),n.result&&s(o,n.result)}function Ng(n,e,t,s){let o=Xt(n);if(o){Fg(o,e,t,s);return}if(n&&(n.kind==="thinking"||typeof n.value=="string"))return;let i=n?.message?.parts;if(i)for(let r of i)typeof r?.text=="string"&&r.text&&s(e,r.text)}function Lg(n,e,t,s){for(let o of n)Ng(o,e,t,s)}function Gg(n){if(!n)return 0;if(n.usage){let e=typeof n.usage.promptTokens=="number"?n.usage.promptTokens:0,t=typeof n.usage.completionTokens=="number"?n.usage.completionTokens:0;return e+t}return typeof n.promptTokens=="number"&&typeof n.outputTokens=="number"?n.promptTokens+n.outputTokens:n.metadata&&typeof n.metadata.promptTokens=="number"&&typeof n.metadata.outputTokens=="number"?n.metadata.promptTokens+n.metadata.outputTokens:0}function jg(n){return Array.isArray(n.requests)?n.requests:Array.isArray(n.history)?n.history:[]}function Bg(n){return n.trim().length>0}function Yl(n,e,t,s,o,i,r){if(n==null||typeof n!="object")return;let l=n,d=Ug(l,o,i);Og(l,d,t);let{responseText:m,thinkingText:p}=Ig(l.response);m&&s(d,m),p&&(e.thinkingTokens+=r(p,d));let f=Array.isArray(l.response)?l.response:Array.isArray(l.responses)?l.responses:[];Lg(f,d,t,s),e.actualTokens+=Gg(l.result)}function qg(n){if(!Le(n))return!1;let e=n.message;return Le(e)&&typeof e.text=="string"&&!!e.text.trim()}function zg(n){if(n.length===0)return null;let e=on(n[0],"sessionParser");if(!e||typeof e.kind!="number")return null;let t=Object.create(null);for(let o of n){let i=on(o,"sessionParser");i!==void 0&&(t=Rg(t,i))}let s=Le(t)?t:null;return s&&Array.isArray(s.requests)?s.requests:[]}function Xl(n,e,t,s){let o,i="unknown",r=new ar(i,t),{modelUsage:l}=r,d=r.addInput.bind(r),m=r.addOutput.bind(r),p={thinkingTokens:0,actualTokens:0};if(n.endsWith(".jsonl")){let k=e.split(/\r?\n/).filter(Bg),b=zg(k);if(b!==null){let M=b.filter(qg).length;for(let F of b)Yl(F,p,d,m,s,i,t);return{tokens:r.totalInputTokens+r.totalOutputTokens+p.thinkingTokens,interactions:M,modelUsage:l,thinkingTokens:p.thinkingTokens,actualTokens:0}}if(o=on(e.trim(),"sessionParser"),o===void 0)return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0}}if(!o&&(o=on(e,"sessionParser"),o===void 0))return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0};if(!Le(o)||Array.isArray(o))return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0};let f=jg(o),_=f.length;for(let k of f)Yl(k,p,d,m,s,i,t);return{tokens:r.totalInputTokens+r.totalOutputTokens+p.thinkingTokens,interactions:_,modelUsage:l,thinkingTokens:p.thinkingTokens,actualTokens:p.actualTokens}}var lr=class{extractCounts(e){let t={},s={},o=e.trim().split(`
67
+ `);for(let i of o)if(i.trim())try{let r=JSON.parse(i);if(r.type==="user.message"){as(r.timestamp??r.ts??r.data?.timestamp,t);continue}this.processVsCodeDeltaEvent(r,s,t)}catch{}return t}processVsCodeDeltaEvent(e,t,s){let o=e.kind,i=e.k,r=e.v;o===0&&r?.requests&&Array.isArray(r.requests)?this.processKind0Event(r,s):o===2&&Array.isArray(i)&&i[0]==="requests"?this.processKind2Event(i,r,t,s):this.isKind1TimestampUpdate(o,i)&&this.processKind1Event(i,r,t,s)}isKind1TimestampUpdate(e,t){return e===1&&Array.isArray(t)&&t.length===3&&t[0]==="requests"&&(t[2]==="timestamp"||t[2]==="ts")&&typeof t[1]=="number"}processKind0Event(e,t){for(let s of e.requests)as(s.timestamp??s.ts,t)}processKind2Event(e,t,s,o){if(Array.isArray(t))for(let i of t)as(i.timestamp??i.ts,o);else if(t&&typeof t=="object"){let i=t.timestamp??t.ts;i!==void 0&&as(i,o),typeof e[1]=="number"&&(s[e[1]]=i)}}processKind1Event(e,t,s,o){let i=e[1];s[i]===void 0&&as(t,o),s[i]=t}},cr=class{extractCounts(e){let t={};try{let s=JSON.parse(e);if(s.requests&&Array.isArray(s.requests))for(let o of s.requests){let i=o.timestamp??o.ts??o.result?.timestamp;as(i,t)}}catch{}return t}};function $g(n){if(n==null)return null;let e=new Date(n);return isNaN(e.getTime())?null:e}function as(n,e){let t=$g(n);if(t!==null){let s=t.getFullYear(),o=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0"),r=`${s}-${o}-${i}`;e[r]=(e[r]||0)+1}}function Zl(n,e,t){let s=t.getFullYear(),o=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0"),r=`${s}-${o}-${i}`,d=(e?new lr:new cr).extractCounts(n),m=Object.values(d).reduce((f,_)=>f+_,0);if(m===0)return{[r]:1};let p={};for(let[f,_]of Object.entries(d))p[f]=_/m;return p}var Ct=v(require("fs")),dr=v(require("path")),ec=v(require("os"));var Po=class{maxEntries;constructor(e=2e3){this.maxEntries=e}isValid(e,t,s){return e.mtime===t&&e.size===s}evict(e){if(e.size<=this.maxEntries)return;let t=[...e.entries()].sort((s,o)=>o[1].mtime-s[1].mtime);e.clear();for(let[s,o]of t.slice(0,this.maxEntries))e.set(s,o)}};var tc=5,Wg=2e3,sc=dr.join(ec.homedir(),".copilot-token-tracker"),ur=dr.join(sc,"cli-cache.json"),at=new Map,ls=!0,nc=!1,oc=new Po(Wg);function mr(){ls=!1,at.clear()}function pr(){if(ls)try{if(!Ct.existsSync(ur))return;let n=Ct.readFileSync(ur,"utf-8"),e=JSON.parse(n);if(e.version!==tc){at.clear();return}at=new Map(Object.entries(e.entries))}catch{at.clear()}}function gr(){if(!(!ls||!nc))try{oc.evict(at),Ct.mkdirSync(sc,{recursive:!0});let n={version:tc,entries:Object.fromEntries(at)};Ct.writeFileSync(ur,JSON.stringify(n),"utf-8")}catch{}}function ic(n,e,t){if(!ls)return null;let s=at.get(n);return!s||!oc.isValid(s,e,t)?null:{...s.data,lastModified:new Date(s.data.lastModified)}}function fr(n,e,t,s){ls&&(nc=!0,at.set(n,{mtime:e,size:t,data:{...s,lastModified:s.lastModified.toISOString()}}))}function hr(){return{entries:at.size,enabled:ls}}var De={CO2_PER_1K_TOKENS:.2,CO2_ABSORPTION_PER_TREE_PER_YEAR:21e3,WATER_USAGE_PER_1K_TOKENS:.3,CO2_PER_KM_DRIVING:120,CO2_PER_PHONE_CHARGE:8.22,WATER_PER_COFFEE_CUP:140,CO2_PER_LED_HOUR:20};var rc={$schema:"http://json-schema.org/draft-07/schema#",description:"Character-to-token ratio estimators for different AI models. Used to estimate token counts from text length.",estimators:{"gpt-4":.25,"gpt-4.1":.25,"gpt-4.1-mini":.25,"gpt-4o":.25,"gpt-4o-mini":.25,"gpt-4-turbo":.25,"gpt-3.5-turbo":.25,"gpt-5":.25,"gpt-5-codex":.25,"gpt-5-mini":.25,"gpt-5.1":.25,"gpt-5.1-codex":.25,"gpt-5.1-codex-max":.25,"gpt-5.1-codex-mini":.25,"gpt-5.2":.25,"gpt-5.2-codex":.25,"gpt-5.2-pro":.25,"gpt-5.3-codex":.25,"gpt-5.4":.25,"gpt-5.4-mini":.25,"gpt-4.1-nano":.25,"gemini-2.0-flash":.25,"gemini-2.0-flash-lite":.25,"gemini-2.5-flash":.25,"gemini-2.5-flash-lite":.25,"claude-sonnet-3.5":.24,"claude-sonnet-3.7":.24,"claude-sonnet-4":.24,"claude-sonnet-4.5":.24,"claude-sonnet-4.6":.24,"claude-haiku":.24,"claude-haiku-4.5":.24,"claude-opus-4.1":.24,"claude-opus-4.5":.24,"claude-opus-4.6":.24,"claude-opus-4.6-(fast-mode)-(preview)":.24,"claude-opus-4.6-fast":.24,"gemini-2.5-pro":.25,"gemini-3-flash":.25,"gemini-3-pro":.25,"gemini-3-pro-preview":.25,"gemini-3.1-pro":.25,"gemini-3.1-flash-lite":.25,"grok-code-fast-1":.25,"raptor-mini":.25,goldeneye:.25,"o1-preview":.25,"o1-mini":.25,"o3-mini":.25,"o4-mini":.25,"gpt-5.5":.25,"mistral-large-latest":.25,"mistral-large-2512":.25,"mistral-large-2411":.25,"magistral-medium-latest":.25,"mistral-medium-latest":.25,"mistral-medium-3-5":.25,"mistral-medium-2505":.25,"mistral-small-latest":.25,"mistral-small-2503":.25,"mistral-small-2603":.25,"codestral-latest":.25,"codestral-2501":.25,"open-mistral-nemo":.25,"ministral-3b-2410":.25,"ministral-8b-2410":.25,"magistral-small-latest":.25,"devstral-medium-2507":.25,"pixtral-large-2411":.25,"gemini-3.5-flash":.25,"claude-opus-4.8":.24,"qwen2.5":.25,"mai-code-1-flash[^mai-code-1-flash]":.25,"mai-code-1-flash":.25}};var vo={$schema:"http://json-schema.org/draft-07/schema#",description:"Model pricing data - costs per million tokens. Each model has direct provider/API pricing at the top level (used as a reference); models billed through GitHub Copilot AI Credits also include a `copilotPricing` block reflecting GitHub's published per-token rates (1 AI credit = $0.01).",metadata:{lastUpdated:"2026-06-03",sources:[{name:"OpenAI API Pricing",url:"https://developers.openai.com/api/docs/pricing",retrievedDate:"2026-04-24"},{name:"Mistral AI API Pricing",url:"https://pricepertoken.com/pricing-page/provider/mistral-ai",retrievedDate:"2026-05-06",note:"Cross-referenced with https://openrouter.ai/mistralai and https://ai-pricing.info/mistral"},{name:"Anthropic Claude Pricing",url:"https://www.anthropic.com/pricing",note:"Standard rates; also see https://platform.claude.com/docs/en/about-claude/pricing",retrievedDate:"2026-03-30"},{name:"Google AI Gemini API Pricing",url:"https://ai.google.dev/gemini-api/docs/pricing",retrievedDate:"2026-03-30"},{name:"xAI Grok API Pricing",url:"https://x.ai/api",retrievedDate:"2026-03-30"},{name:"GitHub Copilot Supported Models",url:"https://docs.github.com/en/copilot/reference/ai-models/supported-models",retrievedDate:"2026-03-30",note:"Source for tier/multiplier data"},{name:"GitHub Copilot Premium Requests",url:"https://docs.github.com/en/copilot/managing-copilot/monitoring-usage-and-entitlements/about-premium-requests",retrievedDate:"2026-03-30",note:"Source for premium request multiplier values"},{name:"OpenRouter Model Pricing",url:"https://openrouter.ai",retrievedDate:"2026-03-30",note:"Cross-provider pricing aggregator used for verification"},{name:"GitHub Copilot Models and Pricing",url:"https://docs.github.com/en/copilot/reference/copilot-billing/models-and-pricing",retrievedDate:"2026-04-27",note:"Source for the `copilotPricing` per-model block (GitHub AI Credit per-token rates)"}],disclaimer:"GitHub Copilot uses these models but pricing may differ from direct API usage. These are reference prices for cost estimation purposes only."},pricing:{"gpt-5":{inputCostPerMillion:1.25,outputCostPerMillion:10,category:"GPT-5 models",tier:"premium",multiplier:1,displayNames:["GPT-5"]},"gpt-5-codex":{inputCostPerMillion:1.25,outputCostPerMillion:10,category:"GPT-5 models",tier:"premium",multiplier:1,displayNames:["GPT-5 Codex (Preview)"]},"gpt-5-mini":{inputCostPerMillion:.25,outputCostPerMillion:2,category:"GPT-5 models",tier:"standard",multiplier:0,displayNames:["GPT-5 Mini"],copilotPricing:{inputCostPerMillion:.25,cachedInputCostPerMillion:.025,outputCostPerMillion:2,releaseStatus:"GA",category:"Lightweight"}},"gpt-5.1":{inputCostPerMillion:1.25,outputCostPerMillion:10,category:"GPT-5 models",tier:"premium",multiplier:1,displayNames:["GPT-5.1"]},"gpt-5.1-codex":{inputCostPerMillion:1.25,outputCostPerMillion:10,category:"GPT-5 models",tier:"premium",multiplier:1,displayNames:["GPT-5.1 Codex"]},"gpt-5.1-codex-max":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"premium",multiplier:1,displayNames:["GPT-5.1 Codex Max"]},"gpt-5.1-codex-mini":{inputCostPerMillion:.25,outputCostPerMillion:2,category:"GPT-5 models",tier:"premium",multiplier:.33,displayNames:["GPT-5.1 Codex Mini (Preview)"]},"gpt-5.2":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"standard",multiplier:1,displayNames:["GPT-5.2"],copilotPricing:{inputCostPerMillion:1.75,cachedInputCostPerMillion:.175,outputCostPerMillion:14,releaseStatus:"Closing down 2026-06-01",category:"Versatile"}},"gpt-5.2-codex":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"standard",multiplier:1,displayNames:["GPT-5.2 Codex"],copilotPricing:{inputCostPerMillion:1.75,cachedInputCostPerMillion:.175,outputCostPerMillion:14,releaseStatus:"Closing down 2026-06-01",category:"Powerful"}},"gpt-5.2-pro":{inputCostPerMillion:21,outputCostPerMillion:168,category:"GPT-5 models",tier:"premium",multiplier:1,displayNames:["GPT-5.2 Pro"]},"gpt-5.3-codex":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"standard",multiplier:1,displayNames:["GPT-5.3 Codex"],copilotPricing:{inputCostPerMillion:1.75,cachedInputCostPerMillion:.175,outputCostPerMillion:14,releaseStatus:"GA",category:"Powerful"}},"gpt-5.4":{inputCostPerMillion:2.5,cachedInputCostPerMillion:.25,outputCostPerMillion:15,category:"GPT-5 models",tier:"standard",multiplier:1,displayNames:["GPT-5.4"],copilotPricing:{inputCostPerMillion:2.5,cachedInputCostPerMillion:.25,outputCostPerMillion:15,releaseStatus:"GA",category:"Versatile"}},"gpt-5.4-mini":{inputCostPerMillion:.75,cachedInputCostPerMillion:.075,outputCostPerMillion:4.5,category:"GPT-5 models",tier:"standard",multiplier:.33,displayNames:["GPT-5.4 mini"],copilotPricing:{inputCostPerMillion:.75,cachedInputCostPerMillion:.075,outputCostPerMillion:4.5,releaseStatus:"GA",category:"Lightweight"}},"gpt-5.4-nano":{inputCostPerMillion:.2,cachedInputCostPerMillion:.02,outputCostPerMillion:1.25,category:"GPT-5 models",tier:"standard",multiplier:.25,displayNames:["GPT-5.4 nano"],copilotPricing:{inputCostPerMillion:.2,cachedInputCostPerMillion:.02,outputCostPerMillion:1.25,releaseStatus:"GA",category:"Lightweight"}},"gpt-4":{inputCostPerMillion:3,outputCostPerMillion:12,category:"GPT-4 models",tier:"unknown",multiplier:1,displayNames:["GPT-4"]},"gpt-4.1":{inputCostPerMillion:2,cachedInputCostPerMillion:.5,outputCostPerMillion:8,category:"GPT-4 models",tier:"standard",multiplier:0,displayNames:["GPT-4.1"],copilotPricing:{inputCostPerMillion:2,cachedInputCostPerMillion:.5,outputCostPerMillion:8,releaseStatus:"Closing down 2026-06-01",category:"Versatile"}},"gpt-4.1-mini":{inputCostPerMillion:.4,cachedInputCostPerMillion:.1,outputCostPerMillion:1.6,category:"GPT-4 models",tier:"standard",multiplier:0,displayNames:["GPT-4.1 Mini"]},"gpt-4.1-nano":{inputCostPerMillion:.1,cachedInputCostPerMillion:.025,outputCostPerMillion:.4,category:"GPT-4 models",tier:"standard",multiplier:0,displayNames:["GPT-4.1 Nano"]},"gpt-4o":{inputCostPerMillion:2.5,outputCostPerMillion:10,cachedInputCostPerMillion:1.25,category:"GPT-4 models",tier:"standard",multiplier:0,displayNames:["GPT-4o"]},"gpt-4o-mini":{inputCostPerMillion:.15,outputCostPerMillion:.6,cachedInputCostPerMillion:.075,category:"GPT-4 models",tier:"standard",multiplier:0,displayNames:["GPT-4o-mini","GPT-4o Mini"]},"gpt-4o-mini-2024-07-18":{inputCostPerMillion:.15,outputCostPerMillion:.6,cachedInputCostPerMillion:.075,category:"GPT-4 models",tier:"standard",multiplier:0,displayNames:["GPT-4o-mini (2024-07-18)"]},"gpt-4-turbo":{inputCostPerMillion:10,outputCostPerMillion:30,category:"GPT-4 models",tier:"standard",multiplier:0,displayNames:["GPT-4 Turbo"]},"claude-sonnet-3.5":{inputCostPerMillion:3,outputCostPerMillion:15,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,category:"Claude models (Anthropic)",tier:"unknown",multiplier:1,displayNames:["Claude Sonnet 3.5"]},"claude-sonnet-3.7":{inputCostPerMillion:3,outputCostPerMillion:15,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,category:"Claude models (Anthropic)",tier:"unknown",multiplier:1,displayNames:["Claude Sonnet 3.7"]},"claude-sonnet-4":{inputCostPerMillion:3,outputCostPerMillion:15,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,category:"Claude models (Anthropic)",tier:"premium",multiplier:1,displayNames:["Claude Sonnet 4"],copilotPricing:{inputCostPerMillion:3,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,outputCostPerMillion:15,releaseStatus:"GA",category:"Versatile"}},"claude-sonnet-4.5":{inputCostPerMillion:3,outputCostPerMillion:15,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,category:"Claude models (Anthropic)",tier:"standard",multiplier:1,displayNames:["Claude Sonnet 4.5"],copilotPricing:{inputCostPerMillion:3,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,outputCostPerMillion:15,releaseStatus:"GA",category:"Versatile"}},"claude-sonnet-4.6":{inputCostPerMillion:3,outputCostPerMillion:15,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,category:"Claude models (Anthropic)",tier:"standard",multiplier:1,displayNames:["Claude Sonnet 4.6"],copilotPricing:{inputCostPerMillion:3,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,outputCostPerMillion:15,releaseStatus:"GA",category:"Versatile"}},"claude-sonnet-4-6":{inputCostPerMillion:3,outputCostPerMillion:15,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,category:"Claude models (Anthropic)",tier:"standard",multiplier:1,displayNames:["Claude Sonnet 4.6 (alternate format)"],copilotPricing:{inputCostPerMillion:3,cachedInputCostPerMillion:.3,cacheCreationCostPerMillion:3.75,outputCostPerMillion:15,releaseStatus:"GA",category:"Versatile"}},"claude-haiku":{inputCostPerMillion:.25,outputCostPerMillion:1.25,cachedInputCostPerMillion:.025,cacheCreationCostPerMillion:.3125,category:"Claude models (Anthropic)",tier:"standard",multiplier:0,displayNames:["Claude Haiku"]},"claude-haiku-4.5":{inputCostPerMillion:1,outputCostPerMillion:5,cachedInputCostPerMillion:.1,cacheCreationCostPerMillion:1.25,category:"Claude models (Anthropic)",tier:"standard",multiplier:.33,displayNames:["Claude Haiku 4.5"],copilotPricing:{inputCostPerMillion:1,cachedInputCostPerMillion:.1,cacheCreationCostPerMillion:1.25,outputCostPerMillion:5,releaseStatus:"GA",category:"Versatile"}},"claude-haiku-4-5-20251001":{inputCostPerMillion:1,outputCostPerMillion:5,cachedInputCostPerMillion:.1,cacheCreationCostPerMillion:1.25,category:"Claude models (Anthropic)",tier:"standard",multiplier:.33,displayNames:["Claude Haiku 4.5 (2025-10-01)"],copilotPricing:{inputCostPerMillion:1,cachedInputCostPerMillion:.1,cacheCreationCostPerMillion:1.25,outputCostPerMillion:5,releaseStatus:"GA",category:"Versatile"}},"claude-opus-4.1":{inputCostPerMillion:15,outputCostPerMillion:75,cachedInputCostPerMillion:1.5,cacheCreationCostPerMillion:18.75,category:"Claude models (Anthropic)",tier:"premium",multiplier:10,displayNames:["Claude Opus 4.1"]},"claude-opus-4.5":{inputCostPerMillion:5,outputCostPerMillion:25,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,category:"Claude models (Anthropic)",tier:"standard",multiplier:3,displayNames:["Claude Opus 4.5"],copilotPricing:{inputCostPerMillion:5,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,outputCostPerMillion:25,releaseStatus:"GA",category:"Powerful"}},"claude-opus-4.6":{inputCostPerMillion:5,outputCostPerMillion:25,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,category:"Claude models (Anthropic)",tier:"standard",multiplier:3,displayNames:["Claude Opus 4.6"],copilotPricing:{inputCostPerMillion:5,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,outputCostPerMillion:25,releaseStatus:"GA",category:"Powerful"}},"claude-opus-4.7":{inputCostPerMillion:5,outputCostPerMillion:25,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,category:"Claude models (Anthropic)",tier:"standard",multiplier:15,displayNames:["Claude Opus 4.7"],copilotPricing:{inputCostPerMillion:5,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,outputCostPerMillion:25,releaseStatus:"GA",category:"Powerful"}},"claude-opus-4.6-(fast-mode)-(preview)":{inputCostPerMillion:5,outputCostPerMillion:25,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,category:"Claude models (Anthropic)",tier:"standard",multiplier:30,displayNames:["Claude Opus 4.6 (Fast Mode Preview)"],copilotPricing:{inputCostPerMillion:30,cachedInputCostPerMillion:3,cacheCreationCostPerMillion:37.5,outputCostPerMillion:150,releaseStatus:"Public preview",category:"Powerful"}},"claude-opus-4.6-fast":{inputCostPerMillion:5,outputCostPerMillion:25,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,category:"Claude models (Anthropic)",tier:"premium",multiplier:30,displayNames:["Claude Opus 4.6 (Fast)"],copilotPricing:{inputCostPerMillion:30,cachedInputCostPerMillion:3,cacheCreationCostPerMillion:37.5,outputCostPerMillion:150,releaseStatus:"Public preview",category:"Powerful"}},"o3-mini":{inputCostPerMillion:1.1,outputCostPerMillion:4.4,category:"OpenAI reasoning models",tier:"premium",multiplier:1,displayNames:["o3-mini"]},"o4-mini":{inputCostPerMillion:1.1,outputCostPerMillion:4.4,category:"OpenAI reasoning models",tier:"premium",multiplier:1,displayNames:["o4-mini"]},"o1-preview":{inputCostPerMillion:15,outputCostPerMillion:60,category:"OpenAI reasoning models",tier:"premium",multiplier:1,displayNames:["o1-preview"]},"o1-mini":{inputCostPerMillion:3,outputCostPerMillion:12,category:"OpenAI reasoning models",tier:"premium",multiplier:1,displayNames:["o1-mini"]},"gpt-3.5-turbo":{inputCostPerMillion:.5,outputCostPerMillion:1.5,category:"Legacy models",tier:"standard",multiplier:0,displayNames:["GPT-3.5-Turbo","GPT-3.5 Turbo"]},"gemini-2.5-pro":{inputCostPerMillion:1.25,outputCostPerMillion:10,category:"Google Gemini models",tier:"standard",multiplier:1,displayNames:["Gemini 2.5 Pro"],copilotPricing:{inputCostPerMillion:1.25,cachedInputCostPerMillion:.125,outputCostPerMillion:10,releaseStatus:"GA",category:"Powerful"}},"gemini-2.5-flash":{inputCostPerMillion:.3,outputCostPerMillion:2.5,category:"Google Gemini models",tier:"unknown",multiplier:1,displayNames:["Gemini 2.5 Flash"]},"gemini-2.5-flash-lite":{inputCostPerMillion:.1,outputCostPerMillion:.4,category:"Google Gemini models",tier:"unknown",multiplier:1,displayNames:["Gemini 2.5 Flash Lite"]},"gemini-2.0-flash":{inputCostPerMillion:.1,outputCostPerMillion:.4,category:"Google Gemini models",tier:"standard",multiplier:0,displayNames:["Gemini 2.0 Flash"]},"gemini-2.0-flash-lite":{inputCostPerMillion:.075,outputCostPerMillion:.3,category:"Google Gemini models",tier:"standard",multiplier:0,displayNames:["Gemini 2.0 Flash Lite"]},"gemini-3-flash":{inputCostPerMillion:.5,outputCostPerMillion:3,category:"Google Gemini models",tier:"standard",multiplier:.33,displayNames:["Gemini 3 Flash"],copilotPricing:{inputCostPerMillion:.5,cachedInputCostPerMillion:.05,outputCostPerMillion:3,releaseStatus:"Public preview",category:"Lightweight"}},"gemini-3-pro":{inputCostPerMillion:2,outputCostPerMillion:12,category:"Google Gemini models",tier:"premium",multiplier:1,displayNames:["Gemini 3 Pro"]},"gemini-3-pro-preview":{inputCostPerMillion:2,outputCostPerMillion:12,category:"Google Gemini models",tier:"premium",multiplier:1,displayNames:["Gemini 3 Pro (Preview)"]},"gemini-3.1-pro":{inputCostPerMillion:2,outputCostPerMillion:12,category:"Google Gemini models",tier:"standard",multiplier:1,displayNames:["Gemini 3.1 Pro","Gemini 3.1 Pro (Preview)"],copilotPricing:{inputCostPerMillion:2,cachedInputCostPerMillion:.2,outputCostPerMillion:12,releaseStatus:"Public preview",category:"Powerful"}},"gemini-3.1-flash-lite":{inputCostPerMillion:.25,outputCostPerMillion:1.5,category:"Google Gemini models",tier:"unknown",multiplier:.33,displayNames:["Gemini 3.1 Flash Lite"]},"grok-code-fast-1":{inputCostPerMillion:.2,outputCostPerMillion:1.5,category:"xAI Grok models",tier:"premium",multiplier:.25,displayNames:["Grok Code Fast 1"],copilotPricing:{inputCostPerMillion:.2,cachedInputCostPerMillion:.02,outputCostPerMillion:1.5,releaseStatus:"GA",category:"Lightweight"}},"raptor-mini":{inputCostPerMillion:.25,outputCostPerMillion:2,category:"GitHub Copilot fine-tuned models",tier:"standard",multiplier:0,displayNames:["Raptor Mini"],copilotPricing:{inputCostPerMillion:.25,cachedInputCostPerMillion:.025,outputCostPerMillion:2,releaseStatus:"Public preview",category:"Versatile"}},goldeneye:{inputCostPerMillion:0,outputCostPerMillion:0,category:"GitHub Copilot fine-tuned models",tier:"standard",multiplier:0,copilotPricing:{inputCostPerMillion:1.25,cachedInputCostPerMillion:.125,outputCostPerMillion:10,releaseStatus:"Public preview",category:"Powerful"}},"gpt-5.5":{inputCostPerMillion:0,outputCostPerMillion:0,category:"GPT-5 models",tier:"standard",multiplier:7.5,displayNames:["GPT-5.5"]},"mistral-large-latest":{inputCostPerMillion:.5,outputCostPerMillion:1.5,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Large 3"]},"mistral-large-2512":{inputCostPerMillion:.5,outputCostPerMillion:1.5,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Large 3 (2512)"]},"mistral-large-2411":{inputCostPerMillion:2,outputCostPerMillion:6,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Large 2.1"]},"magistral-medium-latest":{inputCostPerMillion:2,outputCostPerMillion:5,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Magistral Medium"]},"mistral-medium-latest":{inputCostPerMillion:1.5,outputCostPerMillion:7.5,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Medium 3.5"]},"mistral-medium-3-5":{inputCostPerMillion:1.5,outputCostPerMillion:7.5,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Medium 3.5"]},"mistral-medium-3.5":{inputCostPerMillion:1.5,outputCostPerMillion:7.5,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Medium 3.5"]},"mistral-medium-2505":{inputCostPerMillion:.4,outputCostPerMillion:2,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Medium 3.1"]},"mistral-small-latest":{inputCostPerMillion:.1,outputCostPerMillion:.3,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Small 3.1"]},"mistral-small-2503":{inputCostPerMillion:.075,outputCostPerMillion:.2,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Small 3.2"]},"mistral-small-2603":{inputCostPerMillion:.15,outputCostPerMillion:.6,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Small 4"]},"codestral-latest":{inputCostPerMillion:.3,outputCostPerMillion:.9,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Codestral"]},"codestral-2501":{inputCostPerMillion:.3,outputCostPerMillion:.9,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Codestral (2501)"]},"open-mistral-nemo":{inputCostPerMillion:.02,outputCostPerMillion:.03,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Mistral Nemo"]},"ministral-3b-2410":{inputCostPerMillion:.04,outputCostPerMillion:.04,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Ministral 3B"]},"ministral-8b-2410":{inputCostPerMillion:.1,outputCostPerMillion:.1,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Ministral 8B"]},"magistral-small-latest":{inputCostPerMillion:.5,outputCostPerMillion:1.5,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Magistral Small"]},"devstral-medium-2507":{inputCostPerMillion:.4,outputCostPerMillion:2,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Devstral Medium"]},"pixtral-large-2411":{inputCostPerMillion:2,outputCostPerMillion:6,category:"Mistral models",tier:"unknown",multiplier:1,displayNames:["Pixtral Large"]},"gemini-3.5-flash":{inputCostPerMillion:0,outputCostPerMillion:0,category:"Google Gemini models",tier:"standard",multiplier:14,displayNames:["Gemini 3.5 Flash"]},"claude-opus-4.8":{inputCostPerMillion:5,outputCostPerMillion:25,category:"Claude models (Anthropic)",tier:"standard",multiplier:15,displayNames:["Claude Opus 4.8"]},"qwen2.5":{inputCostPerMillion:0,outputCostPerMillion:0,category:" models",tier:"standard",multiplier:0,displayNames:["Qwen2.5"]},"mai-code-1-flash[^mai-code-1-flash]":{inputCostPerMillion:0,outputCostPerMillion:0,category:" models",tier:"standard",multiplier:0,displayNames:["MAI-Code-1-Flash[^mai-code-1-flash]"]},"mai-code-1-flash":{inputCostPerMillion:0,outputCostPerMillion:0,category:" models",tier:"standard",multiplier:0,displayNames:["MAI-Code-1-Flash"]}}};var ac={unknown:"Unknown",windsurf_cascade:"Windsurf Cascade",windsurf_file_edit:"Windsurf: File Edit",windsurf_file_create:"Windsurf: File Create",windsurf_file_read:"Windsurf: File Read",windsurf_terminal:"Windsurf: Terminal",windsurf_search:"Windsurf: Search",windsurf_browser:"Windsurf: Browser",run_in_terminal:"Run In Terminal",run_shell_command:"Run Shell Command",send_to_terminal:"Send To Terminal",run_build:"Run Build",run_command_in_terminal:"Run Command In Terminal","mcp.io.github.git.assign_copilot_to_issue":"GitHub MCP (Local): Assign Copilot to Issue","mcp.io.github.git.create_or_update_file":"GitHub MCP (Local): Create/Update File",mcp_io_github_git_create_or_update_file:"GitHub MCP (Local): Create/Update File",mcp_io_github_git_assign_copilot_to_issue:"GitHub MCP (Local): Assign Copilot to Issue",mcp_io_github_git_pull_request_read:"GitHub MCP (Local): Pull Request Read",mcp_io_github_git_issue_read:"GitHub MCP (Local): Issue Read",mcp_io_github_git_issue_write:"GitHub MCP (Local): Issue Write",mcp_io_github_git_list_issues:"GitHub MCP (Local): List Issues",mcp_io_github_git_create_pull_request:"GitHub MCP (Local): Create Pull Request",mcp_io_github_git_get_file_contents:"GitHub MCP (Local): Get File Contents",mcp_io_github_git_search_code:"GitHub MCP (Local): Search Code",mcp_io_github_git_search_pull_requests:"GitHub MCP (Local): Search Pull Requests",mcp_io_github_git_get_release_by_tag:"GitHub MCP (Local): Get Release By Tag",mcp_io_github_git_search_issues:"GitHub MCP (Local): Search Issues",mcp_io_github_git_add_issue_comment:"GitHub MCP (Local): Add Issue Comment",mcp_io_github_git_list_pull_requests:"GitHub MCP (Local): List Pull Requests",mcp_io_github_git_get_commit:"GitHub MCP (Local): Get Commit",mcp_io_github_git_list_commits:"GitHub MCP (Local): List Commits",mcp_io_github_git_list_code_scanning_alerts:"GitHub MCP (Local): List Code Scanning Alerts",mcp_io_github_git_get_repository_tree:"GitHub MCP (Local): Get Repository Tree",mcp_io_github_git_get_job_logs:"GitHub MCP (Local): Get Job Logs",mcp_io_github_git_list_tags:"GitHub MCP (Local): List Tags",mcp_io_github_git_search_repositories:"GitHub MCP (Local): Search Repositories",mcp_io_github_git_create_repository:"GitHub MCP (Local): Create Repository",mcp_io_github_git_search_users:"GitHub MCP (Local): Search Users",mcp_io_github_git_get_latest_release:"GitHub MCP (Local): Get Latest Release",mcp_io_github_git_get_tag:"GitHub MCP (Local): Get Tag",mcp_github_github_assign_copilot_to_issue:"GitHub MCP (Remote): Assign Copilot to Issue",mcp_github_github_issue_read:"GitHub MCP (Remote): Issue Read",mcp_github_github_issue_write:"GitHub MCP (Remote): Issue Write",mcp_github_github_list_issues:"GitHub MCP (Remote): List Issues",mcp_github_get_file_contents:"GitHub MCP (Remote): Get File Contents",mcp_github_get_latest_release:"GitHub MCP (Remote): Get Latest Release",mcp_github_get_release_by_tag:"GitHub MCP (Remote): Get Release By Tag",mcp_github_list_releases:"GitHub MCP (Remote): List Releases",mcp_github_list_tags:"GitHub MCP (Remote): List Tags",mcp_github_search_code:"GitHub MCP (Remote): Search Code",mcp_github_search_issues:"GitHub MCP (Remote): Search Issues",mcp_github_issue_write:"GitHub MCP (Remote): Issue Write",mcp_github_list_issues:"GitHub MCP (Remote): List Issues",mcp_github_create_pull_request:"GitHub MCP (Remote): Create Pull Request",mcp_github_pull_request_read:"GitHub MCP (Remote): Pull Request Read",mcp_github_list_branches:"MCP GitHub List Branches",mcp_github_update_pull_request:"MCP GitHub Update Pull Request","github-mcp-server-get_file_contents":"GitHub MCP: Get File Contents","github-mcp-server-get_job_logs":"GitHub MCP: Get Job Logs","github-mcp-server-list_commits":"GitHub MCP: List Commits","github-mcp-server-search_code":"GitHub MCP: Search Code","github-mcp-server-actions_list":"GitHub MCP: Actions List","github-mcp-server-list_issues":"GitHub MCP: List Issues","github-mcp-server-search_repositories":"GitHub MCP: Search Repositories","github-mcp-server-list_branches":"GitHub MCP: List Branches","github-mcp-server-issue_read":"GitHub MCP: Issue Read","github-mcp-server-issue_write":"GitHub MCP: Issue Write","github-mcp-server-pull_request_read":"GitHub MCP: Pull Request Read","github-mcp-server-search_issues":"GitHub MCP: Search Issues","github-mcp-server-search_users":"GitHub MCP: Search Users","github-mcp-server-sub_issue_write":"GitHub MCP: Sub Issue Write","github-mcp-server-list_pull_requests":"GitHub MCP Server List Pull Requests","github-mcp-server-search_pull_requests":"GitHub MCP (Remote): Search Pull Requests","github-actions_get":"GitHub Actions: Get","github-actions_list":"GitHub Actions: List","github-create_pull_request":"GitHub: Create Pull Request","github-get_commit":"GitHub: Get Commit","github-get_file_contents":"GitHub: Get File Contents","github-get_job_logs":"GitHub: Get Job Logs","github-get_latest_release":"GitHub: Get Latest Release","github-get_me":"GitHub: Get Me","github-get_release_by_tag":"GitHub: Get Release By Tag","github-get_repository_tree":"GitHub: Get Repository Tree","github-get_teams":"GitHub: Get Teams","github-github_support_docs_search":"GitHub: GitHub Support Docs Search","github-issue_read":"GitHub: Issue Read","github-list_code_scanning_alerts":"GitHub: List Code Scanning Alerts","github-list_dependabot_alerts":"GitHub: List Dependabot Alerts","github-list_tags":"GitHub: List Tags","github-pull_request_read":"GitHub: Pull Request Read","github-pull_request_review_write":"GitHub: Pull Request Review Write","github-search_code":"GitHub: Search Code","github-search_pull_requests":"GitHub: Search Pull Requests","github-search_repositories":"GitHub: Search Repositories","github-update_pull_request":"GitHub: Update Pull Request","mcp_github-code-s_get_code_scanning_alert":"GitHub MCP (Code Scanning): Get Alert","mcp_github-code-s_list_code_scanning_alerts":"GitHub MCP (Code Scanning): List Alerts",mcp_com_microsoft_get_bestpractices:"GitHub MCP: Get Best Practices",mcp_microsoft_doc_microsoft_code_sample_search:"Microsoft Docs MCP: Code Sample Search",mcp_microsoft_doc_microsoft_docs_search:"Microsoft Docs MCP: Docs Search",mcp_microsoftdocs_microsoft_code_sample_search:"Microsoft Docs MCP: Code Sample Search",mcp_microsoftdocs_microsoft_docs_fetch:"Microsoft Docs MCP: Docs Fetch",mcp_microsoftdocs_microsoft_docs_search:"Microsoft Docs MCP: Docs Search",Microsoft_Learn_microsoft_docs_search:"Microsoft Learn: Docs Search","microsoft-learn-microsoft_docs_search":"Microsoft Learn: Docs Search",mcp_gitkraken_git_add_or_commit:"GitKraken MCP: Git Add or Commit",mcp_gitkraken_git_status:"GitKraken MCP: Git Status",mcp_gitkraken_git_branch:"GitKraken MCP: Git Branch",mcp_gitkraken_git_checkout:"GitKraken MCP: Git Checkout",mcp_gitkraken_git_log_or_diff:"GitKraken MCP: Git Log or Diff",mcp_gitkraken_gitkraken_workspace_list:"GitKraken MCP: List Workspaces",mcp_gitkraken_git_push:"GitKraken MCP: Git Push",mcp_gitkraken_gitlens_commit_composer:"GitKraken MCP: GitLens Commit Composer",mcp_git_git_log:"Git MCP: Git Log",mcp_git_git_show:"Git MCP: Git Show",mcp_git_git_diff_staged:"Git MCP: Git Diff Staged",mcp_pencil_batch_design:"Pencil MCP: Batch Design",mcp_pencil_get_editor_state:"Pencil MCP: Get Editor State",mcp_pencil_get_guidelines:"Pencil MCP: Get Guidelines",mcp_pencil_get_screenshot:"Pencil MCP: Get Screenshot",mcp_pencil_snapshot_layout:"Pencil MCP: Snapshot Layout",mcp_figma_get_design_context:"Figma MCP: Get Design Context",mcp_figma_get_screenshot:"Figma MCP: Get Screenshot",mcp_figma_get_variable_defs:"Figma MCP: Get Variable Defs",mcp_azure_aks:"Azure MCP: AKS",mcp_azure_mcp_azureterraformbestpractices:"Azure MCP: Azure Terraform Best Practices",mcp_azure_mcp_documentation:"Azure MCP: Documentation",mcp_azure_mcp_get_bestpractices:"Azure MCP: Get Best Practices",mcp_azure_mcp_group_list:"Azure MCP: Group List",mcp_azure_mcp_storage:"Azure MCP: Storage",mcp_azure_mcp_subscription_list:"Azure MCP: Subscription List",mcp_azure_mcp_pricing:"Azure MCP: Pricing",mcp_azure_mcp_get_azure_bestpractices:"Azure MCP: Get Azure Best Practices","azure-mcp-azureterraformbestpractices":"Azure MCP: Azure Terraform Best Practices","azure-mcp-documentation":"Azure MCP: Documentation","azure-mcp-extension_cli_generate":"Azure MCP: Extension CLI Generate","azure-mcp-get_azure_bestpractices":"Azure MCP: Get Azure Best Practices","azure-mcp-group_list":"Azure MCP: Group List","azure-mcp-subscription_list":"Azure MCP: Subscription List",mcp_bicep_format_bicep_file:"Bicep MCP: Format Bicep File",mcp_bicep_get_az_resource_type_schema:"Bicep MCP: Get Az Resource Type Schema",mcp_bicep_get_bicep_best_practices:"Bicep MCP: Get Bicep Best Practices",mcp_bicep_get_bicep_file_diagnostics:"Bicep MCP: Get Bicep File Diagnostics",mcp_bicep_list_az_resource_types_for_provider:"Bicep MCP: List Az Resource Types For Provider","azure_bicep-get_azure_verified_module":"Azure Bicep: Get Azure Verified Module","azure_development-recommend_custom_modes":"Azure Development: Recommend Custom Modes","azure_resources-query_azure_resource_graph":"Azure Resources: Query Azure Resource Graph",azureResources_getAzureActivityLog:"Azure Resources: Get Azure Activity Log","azure_auth-get_auth_context":"Azure Auth: Get Auth Context","azure_auth-set_auth_context":"Azure Auth: Set Auth Context","ms-azuretools.azure-agent":"Azure Agent",manage_todo_list:"Manage TODO List",copilot_readFile:"Read File",copilot_viewImage:"Copilot View Image",opilot_findFiles:"Find Files",copilot_writeFile:"Write File",copilot_applyPatch:"Apply Patch",copilot_findTextInFiles:"Find Text In Files",copilot_findFiles:"Find Files",copilot_replaceString:"Replace String",copilot_createFile:"Create File",copilot_listDirectory:"List Directory",copilot_fetchWebPage:"Fetch Web Page",copilot_getErrors:"Get Errors",copilot_multiReplaceString:"Multi Replace String",copilot_searchCodebase:"Search Codebase",get_terminal_output:"Get Terminal Output",run_task:"Run Task: Investigate",await_terminal:"Await Terminal command","github.copilot.editsAgent":"GitHub Copilot Edits Agent",todoList:"TODO List",terminal:"Terminal",terminal_last_command:"Terminal Last Command",github_pull_request:"GitHub Pull Request",github_repo:"GitHub Repository",editFiles:"Edit Files",listFiles:"List Files",list_issues:"List Issues",search_subagent:"Search Subagent",execution_subagent:"Execution Subagent",apply_patch:"Apply Patch",ask_questions:"Ask Questions",AskUserQuestion:"Ask User Question",ask_user_question:"Ask User Question",copilot_askQuestions:"Ask Questions",copilot_createAndRunTask:"Create And Run Task",copilot_createDirectory:"Create Directory",copilot_createNewJupyterNotebook:"Create New Jupyter Notebook",copilot_createNewWorkspace:"Create New Workspace",copilot_editFiles:"Edit Files",copilot_editNotebook:"Edit Notebook",copilot_findTestFiles:"Find Test Files",copilot_getChangedFiles:"Get Changed Files",copilot_getDocInfo:"Get Doc Info",copilot_getNotebookSummary:"Get Notebook Summary",copilot_getProjectSetupInfo:"Get Project Setup Info",copilot_getSearchResults:"Get Search Results",copilot_getVSCodeAPI:"Get VSCode API",copilot_githubRepo:"GitHub Repository",copilot_githubTextSearch:"GitHub Text Search",copilot_resolveMemoryFileUri:"Resolve Memory File URI",copilot_insertEdit:"Insert Edit",copilot_installExtension:"Install Extension",copilot_memory:"Memory",copilot_openIntegratedBrowser:"Open Integrated Browser",copilot_openSimpleBrowser:"Open Simple Browser",copilot_readNotebookCellOutput:"Read Notebook Cell Output",copilot_readProjectStructure:"Read Project Structure",copilot_runNotebookCell:"Run Notebook Cell",copilot_runInTerminal:"Run In Terminal",copilot_runTests1:"Run Tests",copilot_runVscodeCommand:"Run VSCode Command",copilot_searchWorkspaceSymbols:"Search Workspace Symbols",copilot_switchAgent:"Switch Agent",copilot_testFailure:"Test Failure",copilot_toolReplay:"Tool Replay",create_and_run_task:"Create And Run Task",create_directory:"Create Directory",create_file:"Create File",remove_file:"Remove File",create_new_jupyter_notebook:"Create New Jupyter Notebook",create_new_workspace:"Create New Workspace",create_virtual_environment:"Create Virtual Environment",edit_files:"Edit Files",edit_file:"Edit File",edit_notebook_file:"Edit Notebook File",fetch_webpage:"Fetch Webpage",file_search:"File Search",get_changed_files:"Get Changed Files",get_doc_info:"Get Doc Info",get_errors:"Get Errors",get_project_setup_info:"Get Project Setup Info",get_files_in_project:"Get Files In Project",get_projects_in_solution:"Get Projects In Solution",configure_python_environment:"Configure Python Environment",get_python_executable_details:"Get Python Executable Details",get_search_view_results:"Get Search View Results",get_task_output:"Get Task Output",get_output_window_logs:"Get Output Window Logs",job_output:"Job Output",get_vscode_api:"Get VSCode API",grep_search:"Grep Search",insert_edit_into_file:"Insert Edit Into File",install_extension:"Install Extension",install_python_packages:"Install Python Packages",list_dir:"List Dir",list_directory:"List Directory",ls:"Ls",memory:"Memory",multi_replace_string_in_file:"Multi Replace String In File",open_integrated_browser:"Open Integrated Browser",open_simple_browser:"Open Simple Browser",read_file:"Read File",view_image:"View Image",read_notebook_cell_output:"Read Notebook Cell Output",read_project_structure:"Read Project Structure",replace_string_in_file:"Replace String In File","setup.agent":"Setup Agent",selectEnvironment:"Select Environment",run_notebook_cell:"Run Notebook Cell",run_vscode_command:"Run VSCode Command",runSubagent:"Run Subagent",renderMermaidDiagram:"Render Mermaid Diagram",runTests:"Run Tests",search_workspace_symbols:"Search Workspace Symbols",semantic_search:"Semantic Search",switch_agent:"Switch Agent",terminal_selection:"Terminal Selection",test_failure:"Test Failure",test_search:"Test Search",tool_replay:"Tool Replay",tool_search:"Tool Search",vscode_askQuestions:"VSCode Ask Questions",vscode_get_confirmation:"VSCode Get Confirmation",vscode_get_confirmation_with_options:"VSCode Get Confirmation With Options",vscode_get_terminal_confirmation:"VSCode Get Terminal Confirmation",vscode_get_modified_files_confirmation:"VSCode Get Modified Files Confirmation",vscode_listCodeUsages:"VSCode List Code Usages",vscode_renameSymbol:"VSCode Rename Symbol","mcp_io_github_ups_get-library-docs":"Context7 MCP: Get Library Docs","mcp_io_github_ups_query-docs":"Context7 MCP: Query Docs","mcp_io_github_ups_resolve-library-id":"Context7 MCP: Resolve Library ID","mcp_context7_get-library-docs":"Context7 MCP: Get Library Docs","mcp_context7_query-docs":"Context7 MCP: Query Docs","mcp_context7_resolve-library-id":"Context7 MCP: Resolve Library ID",mcp_microsoft_pla_browser_evaluate:"Playwright MCP: Browser Evaluate",mcp_microsoft_pla_browser_install:"Playwright MCP: Browser Install",mcp_microsoft_pla_browser_navigate:"Playwright MCP: Browser Navigate",mcp_microsoft_pla_browser_run_code:"Playwright MCP: Browser Run Code",mcp_microsoft_pla_browser_click:"Playwright MCP: Browser Click",mcp_microsoft_pla_browser_fill_form:"Playwright MCP: Browser Fill Form",mcp_microsoft_pla_browser_press_key:"Playwright MCP: Browser Press Key",mcp_microsoft_pla_browser_resize:"Playwright MCP: Browser Resize",mcp_microsoft_pla_browser_snapshot:"Playwright MCP: Browser Snapshot",mcp_microsoft_pla_browser_tabs:"Playwright MCP: Browser Tabs",mcp_microsoft_pla_browser_take_screenshot:"Playwright MCP: Browser Take Screenshot",mcp_microsoft_pla_browser_type:"Playwright MCP: Browser Type",mcp_microsoft_pla_browser_console_messages:"MCP Microsoft Playwright Browser Console Messages",mcp_microsoft_pla_browser_wait_for:"Mcp Microsoft Pla Browser Wait For",mcp_playwright_browser_click:"Playwright MCP: Browser Click",mcp_playwright_browser_navigate:"Playwright MCP: Browser Navigate",mcp_playwright_browser_snapshot:"Playwright MCP: Browser Snapshot",mcp_playwright_browser_take_screenshot:"Playwright MCP: Browser Take Screenshot","microsoft-playwright-mcp-browser_evaluate":"Playwright MCP: Browser Evaluate","microsoft-playwright-mcp-browser_navigate":"Playwright MCP: Browser Navigate","microsoft-playwright-mcp-browser_snapshot":"Playwright MCP: Browser Snapshot",mcp_pylance_mcp_s_pylanceDocString:"Pylance MCP: Pylance Doc String",mcp_pylance_mcp_s_pylanceRunCodeSnippet:"Pylance MCP: Run Code Snippet",mcp_pylance_mcp_s_pylanceWorkspaceRoots:"Pylance MCP: Workspace Roots",mcp_pylance_mcp_s_pylanceFileSyntaxErrors:"Pylance MCP: File Syntax Errors",mcp_pylance_mcp_s_pylanceSyntaxErrors:"Pylance MCP: Syntax Errors","mcp_chrome-devtoo_click":"Chrome DevTools MCP: Click","mcp_chrome-devtoo_evaluate_script":"Chrome DevTools MCP: Evaluate Script","mcp_chrome-devtoo_fill":"Chrome DevTools MCP: Fill","mcp_chrome-devtoo_get_network_request":"Chrome DevTools MCP: Get Network Request","mcp_chrome-devtoo_list_console_messages":"Chrome DevTools MCP: List Console Messages","mcp_chrome-devtoo_list_pages":"Chrome DevTools MCP: List Pages","mcp_chrome-devtoo_navigate_page":"Chrome DevTools MCP: Navigate Page","mcp_chrome-devtoo_new_page":"Chrome DevTools MCP: New Page","mcp_chrome-devtoo_select_page":"Chrome DevTools MCP: Select Page","mcp_chrome-devtoo_take_screenshot":"Chrome DevTools MCP: Take Screenshot","mcp_chrome-devtoo_fill_form":"Chrome DevTools MCP: Fill Form","mcp_chrome-devtoo_hover":"Chrome DevTools MCP: Hover","mcp_chrome-devtoo_list_network_requests":"Chrome DevTools MCP: List Network Requests","mcp_chrome-devtoo_press_key":"Chrome DevTools MCP: Press Key","mcp_chrome-devtoo_take_snapshot":"Chrome DevTools MCP: Take Snapshot","mcp_chrome-devtoo_wait_for":"Chrome DevTools MCP: Wait For","mcp_chrome-devtoo_close_page":"Chrome DevTools MCP: Close Page","mcp_chrome-devtoo_lighthouse_audit":"Chrome DevTools MCP: Lighthouse Audit","mcp_chrome-devtoo_performance_analyze_insight":"Chrome DevTools MCP: Performance Analyze Insight","mcp_chrome-devtoo_performance_start_trace":"Chrome DevTools MCP: Performance Start Trace","mcp_chrome-devtoo_resize_page":"Chrome DevTools MCP: Resize Page","mcp_chrome-devtoo_type_text":"Chrome DevTools MCP: Type Text",mcp_chrome_devtoo_click:"Chrome DevTools MCP: Click",mcp_chrome_devtoo_evaluate_script:"Chrome DevTools MCP: Evaluate Script",mcp_chrome_devtoo_fill:"Chrome DevTools MCP: Fill",mcp_chrome_devtoo_get_console_message:"Chrome DevTools MCP: Get Console Message",mcp_chrome_devtoo_get_network_request:"Chrome DevTools MCP: Get Network Request",mcp_chrome_devtoo_list_console_messages:"Chrome DevTools MCP: List Console Messages",mcp_chrome_devtoo_list_network_requests:"Chrome DevTools MCP: List Network Requests",mcp_chrome_devtoo_list_pages:"Chrome DevTools MCP: List Pages",mcp_chrome_devtoo_navigate_page:"Chrome DevTools MCP: Navigate Page",mcp_chrome_devtoo_new_page:"Chrome DevTools MCP: New Page",mcp_chrome_devtoo_take_snapshot:"Chrome DevTools MCP: Take Snapshot",mcp_chrome_devtoo_wait_for:"Chrome DevTools MCP: Wait For",mcp_io_github_chr_click:"Chrome DevTools MCP: Click",mcp_io_github_chr_emulate:"Chrome DevTools MCP: Emulate",mcp_io_github_chr_evaluate_script:"Chrome DevTools MCP: Evaluate Script",mcp_io_github_chr_list_network_requests:"Chrome DevTools MCP: List Network Requests",mcp_io_github_chr_list_pages:"Chrome DevTools MCP: List Pages",mcp_io_github_chr_navigate_page:"Chrome DevTools MCP: Navigate Page",mcp_io_github_chr_new_page:"Chrome DevTools MCP: New Page",mcp_io_github_chr_resize_page:"Chrome DevTools MCP: Resize Page",mcp_io_github_chr_select_page:"Chrome DevTools MCP: Select Page",mcp_io_github_chr_take_snapshot:"Chrome DevTools MCP: Take Snapshot",mcp_oraios_serena_activate_project:"Serena: Activate Project",mcp_oraios_serena_check_onboarding_performed:"Serena: Check Onboarding Performed",mcp_oraios_serena_create_text_file:"Serena: Create Text File",mcp_oraios_serena_delete_lines:"Serena: Delete Lines",mcp_oraios_serena_delete_memory:"Serena: Delete Memory",mcp_oraios_serena_edit_memory:"Serena: Edit Memory",mcp_oraios_serena_execute_shell_command:"Serena: Execute Shell Command",mcp_oraios_serena_find_file:"Serena: Find File",mcp_oraios_serena_find_referencing_symbols:"Serena: Find Referencing Symbols",mcp_oraios_serena_find_symbol:"Serena: Find Symbol",mcp_oraios_serena_get_current_config:"Serena: Get Current Config",mcp_oraios_serena_get_symbols_overview:"Serena: Get Symbols Overview",mcp_oraios_serena_initial_instructions:"Serena: Initial Instructions",mcp_oraios_serena_insert_after_symbol:"Serena: Insert After Symbol",mcp_oraios_serena_insert_at_line:"Serena: Insert At Line",mcp_oraios_serena_insert_before_symbol:"Serena: Insert Before Symbol",mcp_oraios_serena_jet_brains_find_referencing_symbols:"Serena: JetBrains Find Referencing Symbols",mcp_oraios_serena_jet_brains_find_symbol:"Serena: JetBrains Find Symbol",mcp_oraios_serena_jet_brains_get_symbols_overview:"Serena: JetBrains Get Symbols Overview",mcp_oraios_serena_jet_brains_type_hierarchy:"Serena: JetBrains Type Hierarchy",mcp_oraios_serena_list_dir:"Serena: List Dir",mcp_oraios_serena_list_memories:"Serena: List Memories",mcp_oraios_serena_onboarding:"Serena: Onboarding",mcp_oraios_serena_open_dashboard:"Serena: Open Dashboard",mcp_oraios_serena_prepare_for_new_conversation:"Serena: Prepare For New Conversation",mcp_oraios_serena_read_file:"Serena: Read File",mcp_oraios_serena_read_memory:"Serena: Read Memory",mcp_oraios_serena_remove_project:"Serena: Remove Project",mcp_oraios_serena_rename_symbol:"Serena: Rename Symbol",mcp_oraios_serena_replace_content:"Serena: Replace Content",mcp_oraios_serena_replace_lines:"Serena: Replace Lines",mcp_oraios_serena_replace_symbol_body:"Serena: Replace Symbol Body",mcp_oraios_serena_restart_language_server:"Serena: Restart Language Server",mcp_oraios_serena_search_for_pattern:"Serena: Search For Pattern",mcp_oraios_serena_summarize_changes:"Serena: Summarize Changes",mcp_oraios_serena_switch_modes:"Serena: Switch Modes",mcp_oraios_serena_think_about_collected_information:"Serena: Think About Collected Information",mcp_oraios_serena_think_about_task_adherence:"Serena: Think About Task Adherence",mcp_oraios_serena_think_about_whether_you_are_done:"Serena: Think About Whether You Are Done",mcp_oraios_serena_write_memory:"Serena: Write Memory","mcp_visuals-mcp_display_image":"Visuals MCP: Display Image","mcp_laravel-boost_tinker":"Laravel Boost MCP: Tinker",bash:"Bash",Bash:"Bash",code_search:"Code Search",detect_memories:"Detect Memories",dismiss_deployment_notifications:"Dismiss Deployment Notifications",get_currentfile:"Get Current File",get_file:"Get File",get_symbols_by_name:"Get Symbols By Name","claude-code":"Claude Code","copilot-cloud-agent":"Copilot Cloud Agent",agent:"Agent",copilotcli:"Copilot CLI","github.copilot.default":"GitHub Copilot Default","github.copilot.workspace":"GitHub Copilot Workspace","github.copilot.vscode":"GitHub Copilot VSCode","github.copilot-dynamic.platform":"GitHub Copilot Dynamic: Platform",glob:"Glob",file_glob_search:"File Glob Search",grep:"Grep",kill_terminal:"Kill Terminal",read:"Read",view:"View",vscode_editFile_internal:"VSCode Edit File (Internal)",vscode_fetchWebPage_internal:"VSCode Fetch Web Page (Internal)",vscode_searchExtensions_internal:"VSCode Search Extensions (Internal)","vscode-websearchforcopilot_webSearch":"VSCode WebSearch for Copilot: Web Search",Build_CMakeTools:"CMake Tools: Build",ListBuildTargets_CMakeTools:"CMake Tools: List Build Targets",ListTests_CMakeTools:"CMake Tools: List Tests",RunCtest_CMakeTools:"CMake Tools: Run CTest","nuget_get-nuget-solver":"NuGet: Get NuGet Solver",webfetch:"Web Fetch",web_fetch:"Web Fetch",write:"Write",edit:"Edit",search_replace:"Search Replace",write_file:"Write File",multiedit:"Multi Edit",question:"Question",skill:"Skill",read_skill:"Read Skill",task:"Task",todowrite:"Todo Write",TodoWrite:"Todo Write",todos:"Todos",todo:"Todo",websearch:"Web Search",WebSearch:"Web Search",click_element:"Click Element",navigate_page:"Navigate Page",open_browser_page:"Open Browser Page",read_page:"Read Page",run_playwright_code:"Run Playwright Code",screenshot_page:"Screenshot Page",type_in_page:"Type in Page",task_complete:"Task Complete","pdf-utilities.pdf":"PDF Utilities: PDF","container-tools_get-config":"Container Tools: Get Config","github-pull-request_activePullRequest":"GitHub Pull Request: Active Pull Request","github-pull-request_currentActivePullRequest":"GitHub Pull Request: Current Active Pull Request","github-pull-request_issue_fetch":"GitHub Pull Request: Issue Fetch","github-pull-request_pullRequestStatusChecks":"GitHub Pull Request: Pull Request Status Checks","github-pull-request_pullRequestInViewport":"GitHub MCP (Remote): Pull Request In Viewport","mcp_powerbi-model_connection_operations":"Power BI MCP: Connection Operations",MiniMax_web_search:"MiniMax: Web Search",dingDocuments_get_document_content:"Ding Documents: Get Document Content",dingDocuments_list_nodes:"Ding Documents: List Nodes",dingDocuments_search_documents:"Ding Documents: Search Documents",fetch_fetch:"Fetch: Fetch",mcp__Claude_in_Chrome__computer:"Claude in Chrome MCP: Computer",mcp__Claude_in_Chrome__navigate:"Claude in Chrome MCP: Navigate",mcp__Claude_in_Chrome__browser_batch:"Claude in Chrome MCP: Browser Batch",mcp__Claude_in_Chrome__get_page_text:"Claude in Chrome MCP: Get Page Text",mcp__Claude_in_Chrome__tabs_context_mcp:"Claude in Chrome MCP: Tabs Context",mcp__Claude_in_Chrome__tabs_create_mcp:"Claude in Chrome MCP: Tabs Create",mcp__Claude_in_Chrome__javascript_tool:"Claude in Chrome MCP: Javascript Tool",mcp__Claude_in_Chrome__read_console_messages:"Claude in Chrome MCP: Read Console Messages",mcp__Claude_in_Chrome__read_network_requests:"Claude in Chrome MCP: Read Network Requests",mcp__Claude_in_Chrome:"Claude in Chrome MCP",mcp__Claude_in_Chrome__find:"Claude in Chrome MCP: Find",mcp__Claude_in_Chrome__form_input:"Claude in Chrome MCP: Form Input",mcp__Claude_in_Chrome__list_connected_browsers:"Claude in Chrome MCP: List Connected Browsers",mcp__Claude_in_Chrome__read_page:"Claude in Chrome MCP: Read Page",mcp__Claude_in_Chrome__select_browser:"Claude in Chrome MCP: Select Browser",mcp__cowork__allow_cowork_file_delete:"Cowork MCP: Allow Cowork File Delete",mcp__cowork__present_files:"Cowork MCP: Present Files",mcp__cowork__request_cowork_directory:"Cowork MCP: Request Cowork Directory","mcp__cowork-onboarding__show_onboarding_role_picker":"Cowork Onboarding MCP: Show Onboarding Role Picker",TaskOutput:"Task Output",TaskStop:"Task Stop",mcp__plugins__search_plugins:"Plugins MCP: Search Plugins",mcp__plugins__suggest_plugin_install:"Plugins MCP: Suggest Plugin Install",mcp__workspace__bash:"Workspace MCP: Bash",mcp__workspace__web_fetch:"Workspace MCP: Web Fetch","mcp__mcp-registry__search_mcp_registry":"MCP Registry: Search MCP Registry",Agent:"Agent",Edit:"Edit",Glob:"Glob",Grep:"Grep",NotebookEdit:"Notebook Edit",Read:"Read",Skill:"Skill",TaskCreate:"Task Create",TaskUpdate:"Task Update",ToolSearch:"Tool Search",Write:"Write","mcp__claude_ai_Context7__resolve-library-id":"Context7 MCP (Claude): Resolve Library ID",mcp__claude_ai_Excalidraw__create_view:"Excalidraw MCP (Claude): Create View",mcp__claude_ai_Excalidraw__read_me:"Excalidraw MCP (Claude): Read Me","mcp__claude_ai_Notion__notion-create-pages":"Notion MCP (Claude): Create Pages","mcp__claude_ai_Notion__notion-fetch":"Notion MCP (Claude): Fetch","mcp__claude_ai_Notion__notion-search":"Notion MCP (Claude): Search","mcp__claude_ai_Notion__notion-update-page":"Notion MCP (Claude): Update Page","mcp__context7__query-docs":"Context7 MCP: Query Docs","mcp__context7__resolve-library-id":"Context7 MCP: Resolve Library ID","mcp__databricks-sql-allscopes__authenticate":"Databricks SQL MCP: Authenticate","mcp__databricks-sql-allscopes__complete_authentication":"Databricks SQL MCP: Complete Authentication","mcp__databricks-sql__authenticate":"Databricks SQL MCP: Authenticate",mcp__playwright__browser_evaluate:"Playwright MCP: Browser Evaluate",mcp__playwright__browser_navigate:"Playwright MCP: Browser Navigate","mcp__plugin_context7_context7__query-docs":"Context7 MCP: Query Docs","mcp__plugin_context7_context7__resolve-library-id":"Context7 MCP: Resolve Library ID","mcp__shopify-dev-mcp__learn_shopify_api":"Shopify Dev MCP: Learn Shopify API","mcp__shopify-dev-mcp__search_docs_chunks":"Shopify Dev MCP: Search Docs Chunks","mcp__shopify-dev-mcp__validate_graphql_codeblocks":"Shopify Dev MCP: Validate GraphQL Codeblocks",invalid:"Invalid",rename_session:"Rename Session",update_topic:"Update Topic",rename_branch:"Rename Branch",report_intent:"Report Intent",create_pull_request:"Create Pull Request",update_pull_request:"Update Pull Request",powershell:"PowerShell",ask_user:"Ask User",sql:"SQL",show_file:"Show File",exit_plan_mode:"Exit Plan Mode",get_changes_overview:"Get Changes Overview",annotate_diff_line:"Annotate Diff",add_pr_review_comment:"Add PR Review Comment",remove_pr_review_comment:"Remove PR Review Comment",reply_to_comment:"Reply to Comment",open_pr_session:"Open PR Session",open_issue_session:"Open Issue Session",create_session:"Create Session",list_sessions_and_chats:"List Sessions & Chats",list_projects:"List Projects",get_session:"Get Session",navigate_to:"Navigate To",delete_item:"Delete Item",send_session_message:"Send Session Message",send_chat_message:"Send Chat Message",read_agent:"Read Agent",write_agent:"Write Agent",list_agents:"List Agents",discover_widgets:"Discover Widgets",render_widget:"Render Widget",clear_widget:"Clear Widget",extensions_manage:"Extensions Manage",extensions_reload:"Extensions Reload",create:"Create",fetch_copilot_cli_documentation:"Fetch Copilot CLI Documentation",generate_findings:"Generate Findings",generate_topics:"Generate Topics",list_bash:"List Bash",read_bash:"Read Bash",write_bash:"Write Bash",stop_bash:"Stop Bash",list_powershell:"List PowerShell",read_powershell:"Read PowerShell",render_widget_inbox:"Render Widget Inbox",rg:"Ripgrep",stop_powershell:"Stop PowerShell",store_memory:"Store Memory",web_search:"Web Search",write_powershell:"Write PowerShell",slidev_chooseEntry:"Slidev: Choose Entry",slidev_getPreviewPort:"Slidev: Get Preview Port",clarify_requirements:"Clarify Requirements",get_tests:"Get Tests","ide-get_diagnostics":"IDE: Get Diagnostics","ide-get_selection":"IDE: Get Selection",plan:"Plan",signal_plan_ready:"Signal Plan Ready",update_plan_progress:"Update Plan Progress",EnterPlanMode:"Enter Plan Mode",ExitPlanMode:"Exit Plan Mode",mcp_reload:"MCP: Reload",mcp_validate:"MCP: Validate",stop_agent:"Stop Agent","workiq-accept_eula":"WorkIQ: Accept EULA","workiq-ask_work_iq":"WorkIQ: Ask Work IQ","mcp_ado-remote-mc_core_list_projects":"Azure DevOps MCP: Core List Projects","mcp_ado-remote-mc_repo_branch":"Azure DevOps MCP: Repo Branch","mcp_ado-remote-mc_repo_pull_request":"Azure DevOps MCP: Repo Pull Request","mcp_ado-remote-mc_repo_pull_request_thread":"Azure DevOps MCP: Repo Pull Request Thread","mcp_ado-remote-mc_repo_pull_request_write":"Azure DevOps MCP: Repo Pull Request Write","mcp_ado-remote-mc_repo_repository":"Azure DevOps MCP: Repo Repository","mcp_ado-remote-mc_search_workitem":"Azure DevOps MCP: Search Work Item","mcp_ado-remote-mc_wit_get_work_item":"Azure DevOps MCP: Get Work Item","mcp_ado-remote-mc_wit_work_item":"Azure DevOps MCP: Work Item","mcp_ado-remote-mc_wit_work_item_comment_write":"Azure DevOps MCP: Work Item Comment Write","mcp_ado-remote-mc_wit_work_item_link_write":"Azure DevOps MCP: Work Item Link Write","mcp_ado-remote-mc_wit_work_item_write":"Azure DevOps MCP: Work Item Write",mssql_list_servers:"MSSQL: List Servers",add_loaded_assembly:"Add Loaded Assembly",analyze_symbol:"Analyze Symbol",search_decompiled_symbols:"Search Decompiled Symbols",get_classification_rubric:"Get Classification Rubric",get_weather:"Get Weather",mcp_azure_mcp_search:"Azure MCP: Search",mcp_gitnexus_context:"GitNexus MCP: Context",mcp_gitnexus_cypher:"GitNexus MCP: Cypher",mcp_gitnexus_detect_changes:"GitNexus MCP: Detect Changes",mcp_gitnexus_impact:"GitNexus MCP: Impact",mcp_gitnexus_list_repos:"GitNexus MCP: List Repos",mcp_gitnexus_query:"GitNexus MCP: Query",slidev_getSlideContent:"Slidev: Get Slide Content",mcp__GitLab__get_mcp_server_version:"GitLab MCP: Get MCP Server Version",mcp__plugin_figma_figma__get_design_context:"Figma MCP: Get Design Context",mcp__plugin_figma_figma__get_metadata:"Figma MCP: Get Metadata",mcp__plugin_figma_figma__get_screenshot:"Figma MCP: Get Screenshot",mcp_io_github_tav_tavily_extract:"MCP Io GitHub Tavily Extract",mcp_io_github_tav_tavily_search:"MCP Io GitHub Tavily Search",browser_wait_for:"Browser Wait For",copilot_sessionStoreSql:"Copilot Session Store Sql",explore_subagent:"Explore Subagent","github.copilot.terminalPanel":"Github Copilot Terminal Panel",handle_dialog:"Handle Dialog",run_subagent:"Run Subagent",testFailure:"Test Failure","mcp_angular-cli_get_best_practices":"Angular MCP: Get Best Practices","mcp_angular-cli_list_projects":"Angular MCP: Get Project List",mcp_azure_mcp_extension_cli_generate:"Azure MCP (Local): Generate",mcp_playwright_browser_console_messages:"Playwright MCP: Browser Console Messages",mcp_com_figma_mcp_get_design_context:"Figma MCP (Local): Get Design Context",mcp_com_figma_mcp_get_screenshot:"Figma MCP (Local): Get Screenshot",mcp__Bicep__get_bicep_best_practices:"Bicep MCP: Get Bicep Best Practices","mcp__microsoft-docs-learn__microsoft_docs_fetch":"Microsoft Learn MCP: Microsoft Docs Fetch","mcp__microsoft-docs-learn__microsoft_docs_search":"Microsoft Learn MCP: Microsoft Docs Search",mcp__azure__subscription_list:"Azure MCP: Subscription List",mcp__bicep__get_bicep_file_diagnostics:"Bicep MCP: File Diagnostics",mcp__linear__authenticate:"Linear MCP: Authenticate",mcp__linear__get_issue:"Linear MCP: Get Issue",mcp__linear__list_issues:"Linear MCP: List Issues",mcp__linear__list_teams:"Linear MCP: List Teams",mcp__linear__save_issue:"Linear MCP: Save Issue",mcp_workiq_accept_eula:"WorkIQ Accept EULA",mcp_workiq_ask_work_iq:"WorkIQ Ask Work IQ","mcp_microsoft-lea_microsoft_code_sample_search":"Microsoft Docs MCP (Local): Search Code Sample","mcp_microsoft-lea_microsoft_docs_search":"Microsoft Docs MCP (Remote): Search Docs","mcp_upstash_conte_query-docs":"MCP Upstash: Query Docs","mcp_upstash_conte_resolve-library-id":"MCP Upstash: Resolve Library ID",mcp__Bicep__list_avm_metadata:"MCP Bicep: List Azure Verified Module Metadata",google_research:"Google Research",task_execution:"Task Execution",tool_search_tool_regex:"Tool Search",FindDatabaseObjectsThat:"Find Database Objects That",GetTableColumnNames:"Get Table Column Names",SchemaStore_getSchema:"Schema Store Get Schema",SchemaStore_searchSchemas:"Schema Store Search Schemas",SearchSchemasForOnePartName:"Search Schemas For One Part Name",ValidateGeneratedTSQL:"Validate Generated T-SQL",aspire_execute_resource_command:"Aspire Execute Resource Command",aspire_get_doc:"Aspire Get Doc",aspire_list_console_logs:"Aspire List Console Logs",aspire_list_resources:"Aspire List Resources",aspire_list_structured_logs:"Aspire List Structured Logs",aspire_search_docs:"Aspire Search Docs",codesearch:"CodeSearch","context-engine_context_search":"Context Engine Context Search","context7_query-docs":"Context7 Query Docs","context7_resolve-library-id":"Context7 Resolve Library ID",playwright_browser_navigate:"Playwright Browser Navigate",run_tests:"Run Tests","azure-subscription_list":"Azure Subscription List",debugger_evaluate_expressions:"Debugger Evaluate Expressions",debugger_get_output_window_text:"Debugger Get Output Window Text",get_symbols:"Get Symbols",lookup_vs:"Lookup VS",search_web:"Search Web","aspire-get_doc":"Get Doc","aspire-search_docs":"Search Docs",vote_memory:"Vote Memory",create_issue:"Issue Create",save_workflow:"Workflow Save","context-mode_ctx_execute":"Context Mode: Execute","mcp_context-mode_ctx_batch_execute":"Context Mode: Batch Execute","mcp_context-mode_ctx_execute":"Context Mode: Execute","mcp_context-mode_ctx_search":"Context Mode: Search",mcp_github_issue_read:"GitHub MCP (Remote): Issue Read",mcp_github_search_repositories:"GitHub MCP (Remote): Search Repositories",mcp_io_github_tav_tavily_map:"Tavily MCP: Map","mcp_lean-ctx_ctx_call":"Lean Context: Call","mcp_lean-ctx_ctx_discover_tools":"Lean Context: Discover Tools","mcp_lean-ctx_ctx_edit":"Lean Context: Edit","mcp_lean-ctx_ctx_graph":"Lean Context: Graph","mcp_lean-ctx_ctx_knowledge":"Lean Context: Knowledge","mcp_lean-ctx_ctx_multi_read":"Lean Context: Multi Read","mcp_lean-ctx_ctx_overview":"Lean Context: Overview","mcp_lean-ctx_ctx_read":"Lean Context: Read","mcp_lean-ctx_ctx_search":"Lean Context: Search","mcp_lean-ctx_ctx_session":"Lean Context: Session","mcp_lean-ctx_ctx_shell":"Lean Context: Shell","mcp_lean-ctx_ctx_tree":"Lean Context: Tree","mcp_mcp-server-ti_get_current_time":"Time MCP: Get Current Time",mcp_playwright_browser_close:"Playwright MCP: Browser Close",mcp_playwright_browser_evaluate:"Playwright MCP: Browser Evaluate",mcp_playwright_browser_fill_form:"Playwright MCP: Browser Fill Form",mcp_playwright_browser_network_request:"Playwright MCP: Browser Network Request",mcp_playwright_browser_network_requests:"Playwright MCP: Browser Network Requests",mcp_playwright_browser_press_key:"Playwright MCP: Browser Press Key",mcp_playwright_browser_resize:"Playwright MCP: Browser Resize",mcp_playwright_browser_run_code_unsafe:"Playwright MCP: Browser Run Code Unsafe",mcp_playwright_browser_type:"Playwright MCP: Browser Type",mcp_playwright_browser_wait_for:"Playwright MCP: Browser Wait For",mcp_pylance_mcp_s_pylancePythonEnvironments:"Pylance MCP: Python Environments","mcp_spec-gen_get_architecture_overview":"Spec Gen MCP: Get Architecture Overview","mcp_spec-gen_get_call_graph":"Spec Gen MCP: Get Call Graph",mcp_specgen_analyze_codebase:"Spec Gen MCP: Analyze Codebase",mcp_specgen_get_function_body:"Spec Gen MCP: Get Function Body",mcp_specgen_get_spec:"Spec Gen MCP: Get Spec",mcp_specgen_list_spec_domains:"Spec Gen MCP: List Spec Domains",mcp_specgen_orient:"Spec Gen MCP: Orient",mcp_specgen_search_code:"Spec Gen MCP: Search Code",mcp_specgen_search_specs:"Spec Gen MCP: Search Specs",mcp_stitch_apply_design_system:"Stitch: Apply Design System",mcp_stitch_create_design_system:"Stitch: Create Design System",mcp_stitch_create_project:"Stitch: Create Project",mcp_stitch_edit_screens:"Stitch: Edit Screens",mcp_stitch_generate_screen_from_text:"Stitch: Generate Screen From Text",mcp_stitch_get_project:"Stitch: Get Project",mcp_stitch_get_screen:"Stitch: Get Screen",mcp_stitch_list_design_systems:"Stitch: List Design Systems",mcp_stitch_list_projects:"Stitch: List Projects",mcp_stitch_list_screens:"Stitch: List Screens",mcp_symdex_build_context_pack:"Symdex: Build Context Pack",mcp_symdex_get_callees:"Symdex: Get Callees",mcp_symdex_get_callers:"Symdex: Get Callers",mcp_symdex_get_file_outline:"Symdex: Get File Outline",mcp_symdex_get_file_tree:"Symdex: Get File Tree",mcp_symdex_get_graph_diagram:"Symdex: Get Graph Diagram",mcp_symdex_get_index_status:"Symdex: Get Index Status",mcp_symdex_get_repo_outline:"Symdex: Get Repo Outline",mcp_symdex_get_repo_stats:"Symdex: Get Repo Stats",mcp_symdex_index_folder:"Symdex: Index Folder",mcp_symdex_list_repos:"Symdex: List Repos",mcp_symdex_search_routes:"Symdex: Search Routes",mcp_symdex_search_symbols:"Symdex: Search Symbols",mcp_symdex_search_text:"Symdex: Search Text",mcp_tavily_tavily_crawl:"Tavily: Crawl",mcp_tavily_tavily_extract:"Tavily: Extract",mcp_tavily_tavily_search:"Tavily: Search",mcp_time_get_current_time:"Time: Get Current Time",mcp_trueline_trueline_outline:"Trueline: Outline",mcp_trueline_trueline_read:"Trueline: Read",mcp_trueline_trueline_search:"Trueline: Search",mcp_zettelkasten_zk_create_link:"Zettelkasten: Create Link",mcp_zettelkasten_zk_create_note:"Zettelkasten: Create Note",mcp_zettelkasten_zk_get_note:"Zettelkasten: Get Note",mcp_zettelkasten_zk_remove_link:"Zettelkasten: Remove Link",mcp_zettelkasten_zk_search_notes:"Zettelkasten: Search Notes",mcp_zettelkasten_zk_update_note:"Zettelkasten: Update Note",copilot_listCodeUsages:"Copilot: List Code Usages",create_new_file:"Windsurf: File Create",edit_existing_file:"Windsurf: File Edit","github.copilot.editingSession":"GitHub MCP (Local): Assign Copilot to Issue",mssql_connect:"SQL Server Connection",mssql_disconnect:"SQL Server Disconnection",mssql_list_tables:"SQL Server Tables List",mssql_run_query:"SQL Server Query Execution",run_terminal_command:"Terminal Command Run",single_find_and_replace:"Find and Replace",mcp_io_github_git_add_comment_to_pending_review:"GitHub MCP (Local): Add Comment To Pending Review",mcp_io_github_git_add_reply_to_pull_request_comment:"GitHub MCP (Local): Add Reply To Pull Request Comment",mcp_io_github_git_pull_request_review_write:"GitHub MCP (Local): Pull Request Review Write",mcp_aikido_aikido_full_scan:"Aikido MCP: Full Scan",mcp_aikido_aikido_issues_list:"Aikido MCP: Issues List",mcp_com_atlassian_addCommentToJiraIssue:"Atlassian MCP: Add Comment To Jira Issue",mcp_com_atlassian_atlassianUserInfo:"Atlassian MCP: User Info",mcp_com_atlassian_createConfluencePage:"Atlassian MCP: Create Confluence Page",mcp_com_atlassian_getAccessibleAtlassianResources:"Atlassian MCP: Get Accessible Atlassian Resources",mcp_com_atlassian_getConfluencePage:"Atlassian MCP: Get Confluence Page",mcp_com_atlassian_getConfluencePageFooterComments:"Atlassian MCP: Get Confluence Page Footer Comments",mcp_com_atlassian_getConfluenceSpaces:"Atlassian MCP: Get Confluence Spaces",mcp_com_atlassian_getJiraIssue:"Atlassian MCP: Get Jira Issue",mcp_com_atlassian_search:"Atlassian MCP: Search",mcp_com_atlassian_searchJiraIssuesUsingJql:"Atlassian MCP: Search Jira Issues Using JQL",mcp_com_atlassian_updateConfluencePage:"Atlassian MCP: Update Confluence Page",mcp_sonarqube_analyze_code_snippet:"SonarQube MCP: Analyze Code Snippet",mcp_sonarqube_get_project_quality_gate_status:"SonarQube MCP: Get Project Quality Gate Status",mcp_sonarqube_search_my_sonarqube_projects:"SonarQube MCP: Search My SonarQube Projects",mcp_sonarqube_search_security_hotspots:"SonarQube MCP: Search Security Hotspots",mcp_sonarqube_search_sonar_issues_in_projects:"SonarQube MCP: Search Sonar Issues In Projects",sonarqube_analyze_file:"SonarQube: Analyze File","azure-bicepschema":"Azure Bicep Schema","azure-documentation":"Azure Documentation","azure-extension_cli_generate":"Azure Extension CLI Generate","azure-get_azure_bestpractices":"Get Azure Best Practices",__auto_compact__:"Auto Compact",mcp_github_get_teams:"GitHub MCP (Remote): Get Teams",mcp_github_list_issue_types:"GitHub MCP (Remote): List Issue Types",mcp_github_mcp_se_issue_write:"GitHub MCP (Remote): Write Issue",mcp_github_mcp_se_list_issues:"GitHub MCP (Remote): List Issues",mcp_github_mcp_se_list_label:"GitHub MCP (Remote): List Labels",mcp_github_mcp_se_search_issues:"GitHub MCP (Remote): Search Issues",mcp_github_search_users:"GitHub MCP (Remote): Search Users",mcp_github_semantic_issue_similarity_search:"GitHub MCP (Remote): Semantic Issue Similarity Search",codebase:"Codebase",invoke_subagent:"Invoke Subagent",list_permissions:"List Permissions",manage_task:"Manage Task",mcp__ccd_session__mark_chapter:"CCD Session: Mark Chapter",multi_replace_file_content:"Multi-Replace File Content",read_currently_open_file:"Read Currently Open File",replace_file_content:"Replace File Content",run_command:"Run Command",schedule:"Schedule",send_message:"Send Message",view_file:"View File",write_to_file:"Write To File",glob_search:"Glob Search","azure-devops_core_list_projects":"Azure DevOps Core List Projects","azure-devops_repo_get_file_content":"Azure DevOps Repo Get File Content","azure-devops_repo_list_repos_by_project":"Azure DevOps Repo List Repos By Project","azure-devops_search_code":"Azure DevOps Search Code","azure-devops_wit_get_work_item":"Azure DevOps Wit Get Work Item","azure-devops_wit_query_by_wiql":"Azure DevOps Wit Query By WIQL",mcp_microsoft_azu_wit_get_work_items_batch_by_ids:"Microsoft Azure DevOps MCP (Local): Get Work Items Batch by IDs",mcp_microsoft_azu_wit_get_work_items_for_iteration:"Microsoft Azure DevOps MCP (Local): Get Work Items for Iteration",mcp_microsoft_azu_wit_update_work_items_batch:"Microsoft Azure DevOps MCP (Local): Update Work Items Batch",mcp_microsoft_azu_wit_work_items_link:"Microsoft Azure DevOps MCP (Local): Link Work Items",mcp_microsoft_azu_work_list_iterations:"Microsoft Azure DevOps MCP (Local): List Iterations","microsoft_azure-devops-mcp_core_list_projects":"Azure DevOps Core List Projects","microsoft_azure-devops-mcp_search_workitem":"Azure DevOps Search Work Item","microsoft_azure-devops-mcp_wit_get_work_item":"Microsoft Azure DevOps MCP (Local): Get Work Item",mcp_com_microsoft_get_azure_bestpractices:"Microsoft Docs MCP: Get Azure Best Practices",mcp_github_enterp_create_branch:"GitHub MCP (Remote): Create Branch",mcp_github_enterp_get_latest_release:"GitHub MCP (Remote): Get Latest Release",mcp_github_enterp_pull_request_read:"GitHub MCP (Remote): Pull Request Read",handoff:"Handoff",mcp_ado_search_workitem:"ADO Search Workitem",mcp_ado_wit_add_artifact_link:"ADO Wit Add Artifact Link",mcp_ado_wit_add_child_work_items:"ADO Wit Add Child Work Items",mcp_ado_wit_add_work_item_comment:"ADO Wit Add Work Item Comment",mcp_ado_wit_create_work_item:"ADO Wit Create Work Item",mcp_ado_wit_get_work_item:"ADO Wit Get Work Item",mcp_ado_wit_get_work_item_type:"MCP Ado Wit Get Work Item Type",mcp_ado_wit_get_work_items_batch_by_ids:"MCP Ado Wit Get Work Items Batch By Ids",mcp_ado_wit_list_work_item_comments:"ADO Wit List Work Item Comments",mcp_ado_wit_my_work_items:"ADO Wit My Work Items",mcp_ado_wit_update_work_item:"ADO Wit Update Work Item",mcp_ado_wit_update_work_items_batch:"ADO Wit Update Work Items Batch",mcp_ado_wit_work_item_unlink:"ADO Wit Work Item Unlink",mcp_ado_wit_work_items_link:"ADO Wit Work Items Link",mcp_azure_devops__search_workitem:"Azure DevOps Search Workitem",mcp_github_add_issue_comment:"GitHub Add Issue Comment",mcp_github_create_branch:"GitHub Create Branch",mcp_github_list_commits:"GitHub List Commits",mcp_github_list_pull_requests:"GitHub List Pull Requests",mcp_github_push_files:"GitHub Push Files","mcp_hashline-edit_grep":"Hashline Edit Grep",mcp_raindrop_create_bookmarks:"RainDrop Create Bookmarks","mcp_symdex-mcp_semantic_search":"Symdex MCP Semantic Search","mcp_tavily-global_tavily-search":"Tavily Global Tavily-Search","mcp_tavily_tavily-extract":"Tavily Tavily-Extract","mcp_tavily_tavily-search":"Tavily Tavily-Search",mcp_tavily_tavily_research:"Tavily Tavily-Research"};var Kg=vo.pricing;function ze(n){return n?n.actualTokens>0?n.actualTokens:n.tokens:0}function yr(n){let e=ae(n);return e.includes("/.copilot/jb/")?"JetBrains":e.includes("/.copilot/session-store.db#")||e.includes("/.copilot/session-state/")?"Copilot CLI":e.includes("/.crush/crush.db#")?"Crush":e.includes("/opencode/")?"OpenCode":e.includes("/.continue/sessions/")?"Continue":e.includes("/local-agent-mode-sessions/")?"Claude Desktop Cowork":e.includes("/.claude/projects/")?"Claude Code":e.includes("/.vibe/logs/session/")?"Mistral Vibe":e.includes("/.gemini/antigravity/brain/")?"Antigravity":e.includes("/.gemini/tmp/")&&e.includes("/chats/session-")&&e.endsWith(".jsonl")?"Gemini CLI":e.includes("/cursor/")?"Cursor":e.includes("/code - insiders/")?"VS Code Insiders":e.includes("/code - exploration/")?"VS Code Exploration":e.includes("/vscodium/")?"VSCodium":e.includes(".vscode-server-insiders/")?"VS Code Server (Insiders)":e.includes(".vscode-server")?"VS Code Server":e.includes("/.vs/")&&e.includes("/copilot-chat/")?"Visual Studio":"VS Code"}async function _r(n,e,t=20){if(n.length===0)return[];let s=new Array(n.length),o=0,i=Array.from({length:Math.min(t,n.length)},async()=>{for(;o<n.length;){let r=o++;try{s[r]=await e(n[r],r)}catch{s[r]=void 0}}});return await Promise.all(i),s}function rn(){return{tokens:0,thinkingTokens:0,estimatedTokens:0,actualTokens:0,sessions:0,avgInteractionsPerSession:0,avgTokensPerSession:0,modelUsage:{},editorUsage:{},co2:0,treesEquivalent:0,waterUsage:0,estimatedCost:0}}function an(n,e,t){let s=Math.round(ze(e)*t),o=Math.round(e.thinkingTokens*t),i=Math.round(e.actualTokens*t);n.tokens+=s,n.thinkingTokens+=o,n.estimatedTokens+=Math.round(e.tokens*t),n.actualTokens+=i,n.sessions++;for(let[d,m]of Object.entries(e.modelUsage))n.modelUsage[d]||(n.modelUsage[d]={inputTokens:0,outputTokens:0}),n.modelUsage[d].inputTokens+=Math.round(m.inputTokens*t),n.modelUsage[d].outputTokens+=Math.round(m.outputTokens*t),m.cachedReadTokens!==void 0&&(n.modelUsage[d].cachedReadTokens=(n.modelUsage[d].cachedReadTokens??0)+Math.round(m.cachedReadTokens*t)),m.cacheCreationTokens!==void 0&&(n.modelUsage[d].cacheCreationTokens=(n.modelUsage[d].cacheCreationTokens??0)+Math.round(m.cacheCreationTokens*t));let r=Math.round(e.interactions*t),l=n.avgInteractionsPerSession*(n.sessions-1)+r;n.avgInteractionsPerSession=n.sessions>0?l/n.sessions:0,n.editorUsage[e.editorSource]||(n.editorUsage[e.editorSource]={tokens:0,sessions:0}),n.editorUsage[e.editorSource].tokens+=s,n.editorUsage[e.editorSource].sessions++}function Ao(){return{sessions:0,toolCalls:{total:0,byTool:{}},modeUsage:{ask:0,edit:0,agent:0,plan:0,customAgent:0,cli:0},contextReferences:le(),mcpTools:{total:0,byServer:{},byTool:{}},modelSwitching:{modelsPerSession:[],totalSessions:0,averageModelsPerSession:0,maxModelsPerSession:0,minModelsPerSession:0,switchingFrequency:0,standardModels:[],premiumModels:[],unknownModels:[],mixedTierSessions:0,standardRequests:0,premiumRequests:0,unknownRequests:0,totalRequests:0},repositories:[],repositoriesWithCustomization:[],editScope:{singleFileEdits:0,multiFileEdits:0,totalEditedFiles:0,avgFilesPerSession:0},applyUsage:{totalApplies:0,totalCodeBlocks:0,applyRate:0},sessionDuration:{totalDurationMs:0,avgDurationMs:0,avgFirstProgressMs:0,avgTotalElapsedMs:0,avgWaitTimeMs:0},conversationPatterns:{multiTurnSessions:0,singleTurnSessions:0,avgTurnsPerSession:0,maxTurnsInSession:0},agentTypes:{editsAgent:0,defaultAgent:0,workspaceAgent:0,other:0}}}var xo=[{bg:"rgba(54, 162, 235, 0.6)",border:"rgba(54, 162, 235, 1)"},{bg:"rgba(255, 99, 132, 0.6)",border:"rgba(255, 99, 132, 1)"},{bg:"rgba(75, 192, 192, 0.6)",border:"rgba(75, 192, 192, 1)"},{bg:"rgba(153, 102, 255, 0.6)",border:"rgba(153, 102, 255, 1)"},{bg:"rgba(255, 159, 64, 0.6)",border:"rgba(255, 159, 64, 1)"},{bg:"rgba(255, 205, 86, 0.6)",border:"rgba(255, 205, 86, 1)"},{bg:"rgba(201, 203, 207, 0.6)",border:"rgba(201, 203, 207, 1)"},{bg:"rgba(100, 181, 246, 0.6)",border:"rgba(100, 181, 246, 1)"}];function ln(n,e,t){if(!n||!e)throw new Error("buildChartPayload: labels and days are required");if(n.length!==e.length)throw new Error(`buildChartPayload: labels.length (${n.length}) !== days.length (${e.length})`);let s=P=>`${P.getFullYear()}-${String(P.getMonth()+1).padStart(2,"0")}-${String(P.getDate()).padStart(2,"0")}`,o=P=>{let E=P.map(K=>K.entry),O=P.map(K=>K.label),Z=E.map(K=>K.tokens),te=E.map(K=>K.sessions),Q=new Set;E.forEach(K=>Object.keys(K.modelUsage).forEach(be=>Q.add(be)));let ds=Array.from(Q).map((K,be)=>{let ut=xo[be%xo.length];return{label:K,data:E.map(jt=>{let ps=jt.modelUsage[K];return ps?ps.inputTokens+ps.outputTokens:0}),backgroundColor:ut.bg,borderColor:ut.border,borderWidth:1}}),Gt=new Set;E.forEach(K=>Object.keys(K.editorUsage).forEach(be=>Gt.add(be)));let ve=Array.from(Gt).map((K,be)=>{let ut=xo[be%xo.length];return{label:K,data:E.map(jt=>jt.editorUsage[K]?.tokens||0),backgroundColor:ut.bg,borderColor:ut.border,borderWidth:1}}),ms=Z.reduce((K,be)=>K+be,0),ct=te.reduce((K,be)=>K+be,0),Ye=P.length,un=E.map(K=>Ls(K.modelUsage,Kg,"copilot")),dn=un.reduce((K,be)=>K+be,0),Bo=Ye>0?dn/Ye:0;return{labels:O,tokensData:Z,sessionsData:te,modelDatasets:ds,editorDatasets:ve,repositoryDatasets:[],periodCount:Ye,totalTokens:ms,totalSessions:ct,avgPerPeriod:Ye>0?Math.round(ms/Ye):0,costData:un,totalCost:dn,avgCostPerPeriod:Bo}},i=(P,E)=>{P.tokens+=E.tokens,P.sessions+=E.sessions;for(let[O,Z]of Object.entries(E.modelUsage))P.modelUsage[O]||(P.modelUsage[O]={inputTokens:0,outputTokens:0}),P.modelUsage[O].inputTokens+=Z.inputTokens,P.modelUsage[O].outputTokens+=Z.outputTokens,Z.cachedReadTokens!==void 0&&(P.modelUsage[O].cachedReadTokens=(P.modelUsage[O].cachedReadTokens??0)+Z.cachedReadTokens),Z.cacheCreationTokens!==void 0&&(P.modelUsage[O].cacheCreationTokens=(P.modelUsage[O].cacheCreationTokens??0)+Z.cacheCreationTokens);for(let[O,Z]of Object.entries(E.editorUsage))P.editorUsage[O]||(P.editorUsage[O]={tokens:0,sessions:0}),P.editorUsage[O].tokens+=Z.tokens,P.editorUsage[O].sessions+=Z.sessions},r=()=>({tokens:0,sessions:0,modelUsage:{},editorUsage:{}}),l=new Date,d=n.map((P,E)=>({label:P,entry:e[E]})),m=o(d),p=P=>{let E=new Date(P);E.setHours(0,0,0,0);let O=E.getDay();return E.setDate(E.getDate()-(O===0?6:O-1)),E},f=P=>{let E=new Date(P);return E.setDate(P.getDate()+6),P.getMonth()===E.getMonth()?`${P.toLocaleDateString("en-US",{month:"short"})} ${P.getDate()}\u2013${E.getDate()}`:`${P.toLocaleDateString("en-US",{month:"short",day:"numeric"})}\u2013${E.toLocaleDateString("en-US",{month:"short",day:"numeric"})}`},_=p(l),k=new Map;for(let P=5;P>=0;P--){let E=new Date(_);E.setDate(_.getDate()-P*7);let O=s(E);k.set(O,{label:f(E),entry:r()})}let b=t||new Map(n.map((P,E)=>[P,e[E]]));for(let[P,E]of b.entries()){let O=p(new Date(P+"T00:00:00")),Z=k.get(s(O));Z&&i(Z.entry,E)}let M=Array.from(k.values()),F=o(M),x=new Map;for(let P=11;P>=0;P--){let E=new Date(l.getFullYear(),l.getMonth()-P,1),O=`${E.getFullYear()}-${String(E.getMonth()+1).padStart(2,"0")}`,Z=E.toLocaleDateString("en-US",{month:"short",year:"numeric"});x.set(O,{label:Z,entry:r()})}for(let[P,E]of b.entries()){let O=P.slice(0,7),Z=x.get(O);Z&&i(Z.entry,E)}let I=Array.from(x.values()),ee=o(I),B={};return e.forEach(P=>{Object.entries(P.editorUsage).forEach(([E,O])=>{B[E]=(B[E]||0)+O.tokens})}),{labels:m.labels,tokensData:m.tokensData,sessionsData:m.sessionsData,modelDatasets:m.modelDatasets,editorDatasets:m.editorDatasets,editorTotalsMap:B,repositoryDatasets:[],repositoryTotalsMap:{},dailyCount:m.periodCount,totalTokens:m.totalTokens,avgTokensPerDay:m.periodCount>0?Math.round(m.totalTokens/m.periodCount):0,totalSessions:m.totalSessions,lastUpdated:new Date().toISOString(),backendConfigured:!1,periodsReady:!0,periods:{day:m,week:F,month:ee}}}function $(n){return n==null||!Number.isFinite(n)?"0":Math.round(n).toLocaleString("en-US")}function ue(n){return n==null||!Number.isFinite(n)||n<0?"0":n>=1e9?`${(n/1e9).toFixed(1)}B`:n>=1e6?`${(n/1e6).toFixed(1)}M`:n>=1e3?`${(n/1e3).toFixed(1)}K`:n.toString()}var Do=rc.estimators,Lt=vo.pricing,Qg=ac,Yg=n=>{},Cr=n=>{},cc=(n,e)=>{let t=e instanceof Error?e.message:e!==void 0?String(e):"";console.error(S.red(n),t)};async function Xg(n){try{let e=await lt.promises.readFile(n,"utf-8");return JSON.parse(e)}catch(e){return e?.code!=="ENOENT"&&cc(`[readJsonFile] Failed to read or parse JSON at ${n}:`,e),null}}var Eo=null;function cn(){if(Eo)return Eo;let n=In.file(__dirname);return Eo=ir({...or(n),estimateTokens:(e,t)=>H(e,t??"gpt-4",Do),isMcpTool:Ze,extractMcpServerName:ht}),Eo}function uc(){return new Ln({log:Yg,warn:Cr,error:cc,ecosystems:cn()})}async function ye(){return uc().getCopilotSessionFiles()}async function Ro(n){let e=new Set,t=Ce.join(lc.homedir(),".claude","projects");for(let o of n){if(o.startsWith(t+Ce.sep)||o.startsWith(t+"/")){let f=await At(()=>lt.promises.readFile(o,"utf-8"),null,`buildCustomizationMatrix readFile(${o})`);if(f!==null){let _=f.split(`
68
+ `).slice(0,30);for(let k of _)if(k.trim())try{let b=JSON.parse(k);if(b.cwd&&typeof b.cwd=="string"){e.add(b.cwd);break}}catch{}}continue}let i=Ce.dirname(o);if(Ce.basename(i)!=="chatSessions")continue;let r=Ce.dirname(i),l=Ce.join(r,"workspace.json"),d=await Xg(l);if(!d)continue;let m=d.folder;if(!m||!m.startsWith("file://"))continue;let p=Un(m);p&&e.add(p)}if(e.size===0)return;let s=0;for(let o of e)await At(async()=>{let[r,l,d]=await Promise.all([lt.promises.access(Ce.join(o,".github","copilot-instructions.md")).then(()=>!0).catch(()=>!1),lt.promises.access(Ce.join(o,"agents.md")).then(()=>!0).catch(()=>!1),lt.promises.access(Ce.join(o,"CLAUDE.md")).then(()=>!0).catch(()=>!1)]);return!r&&!l&&!d},!0,`buildCustomizationMatrix workspace check(${o})`)&&s++;return{customizationTypes:[],workspaces:[],totalWorkspaces:e.size,workspacesWithIssues:s}}function Io(){return uc().getDiagnosticCandidatePaths()}function Zg(n,e){return H(n,e||"gpt-4",Do)}function ef(n){return _t(n,Lt)}async function dc(n){let e=cn().find(t=>t.handles(n));return e?e.stat(n):lt.promises.stat(n)}async function tf(n,e=!1){let t=Ce.basename(n,Ce.extname(n));if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t))return null;let o=n.replace(/\\/g,"/").match(/^(.*\/workspaceStorage\/[^/]+)\//);if(!o)return null;let r=o[1].replace(/\//g,"\\"),l=["GitHub.copilot-chat","github.copilot-chat","GitHub.copilot","github.copilot"];for(let d of l){let m=Ce.join(r,d,"debug-logs",t,"main.jsonl");try{let p=await lt.promises.readFile(m,"utf8"),f=ll(p);if(f)return e&&console.error(` \u2713 Found debug log: ${t} (tokens: ${f.inputTokens+f.outputTokens})`),f}catch{}}return e&&console.error(` \u2717 No debug log found: ${t}`),null}async function cs(n,e=!1){try{let t=await dc(n),s=ic(n,t.mtimeMs,t.size);if(s)return s;let o=cn().find(M=>M.handles(n));if(o){let[M,F,x]=await Promise.all([o.getTokens(n),o.countInteractions(n),o.getModelUsage(n)]),I=pe(t.mtime),ee={file:n,tokens:M.actualTokens>0?M.actualTokens:M.tokens,thinkingTokens:M.thinkingTokens,actualTokens:M.actualTokens,interactions:F,modelUsage:x,lastModified:t.mtime,editorSource:yr(n),dailyFractions:await o.getDailyFractions?.(n)??{[I]:1}};return fr(n,t.mtimeMs,t.size,ee),ee}let i=await lt.promises.readFile(n,"utf-8");if(!i.trim())return null;let r=n.endsWith(".jsonl")||nt(i),l=0,d=0,m=0,p=0,f={};if(r){let M=uo(i);if(l=M.actualTokens>0?M.actualTokens:M.tokens,d=M.thinkingTokens,m=M.actualTokens,f=await Ki({warn:Cr,tokenEstimators:Do,modelPricing:Lt,ecosystems:cn()},n,i),Object.keys(f).length===0&&yo(n)){let x=_o(i);Object.keys(x.modelUsage).length>0?f=x.modelUsage:x.tokens>0&&(f={[x.modelHint&&x.modelHint!=="unknown"?x.modelHint:"unknown"]:{inputTokens:x.tokens,outputTokens:0}})}let F=i.trim().split(`
69
+ `);for(let x of F)try{let I=JSON.parse(x);(I.type==="user.message"||I.kind===2&&I.k?.[0]==="requests")&&p++}catch{}}else{let M=Xl(n,i,Zg,ef);l=M.tokens,d=M.thinkingTokens,m=M.actualTokens,p=M.interactions,f=M.modelUsage}let _=Zl(i,r,t.mtime),k=await tf(n,e);if(k&&k.inputTokens+k.outputTokens>0&&(l=k.inputTokens+k.outputTokens,m=l,Object.keys(k.modelBreakdown).length>0)){f={};for(let[M,F]of Object.entries(k.modelBreakdown))f[M]={inputTokens:F.inputTokens,outputTokens:F.outputTokens,...F.cachedTokens>0?{cachedReadTokens:F.cachedTokens}:{}}}let b={file:n,tokens:l,thinkingTokens:d,actualTokens:m,interactions:p,modelUsage:f,lastModified:t.mtime,editorSource:yr(n),dailyFractions:_};return fr(n,t.mtimeMs,t.size,b),b}catch{return null}}async function bt(n,e){let t=new Date,s=pe(t),o=t.getFullYear(),i=t.getMonth(),r=pe(new Date(o,i,1)),l=new Date(o,i,0),d=pe(new Date(l.getFullYear(),l.getMonth(),1)),m=new Date(o,i,t.getDate()-30),p=pe(m),f={today:rn(),month:rn(),lastMonth:rn(),last30Days:rn()},_=0,k=await _r(n,async b=>{let M=await cs(b);return e&&e(++_,n.length),M});for(let b of k){if(!b||b.tokens===0||!Object.keys(b.dailyFractions).some(B=>B>=d))continue;let F=0,x=0,I=0,ee=0;for(let[B,P]of Object.entries(b.dailyFractions))B===s&&(F+=P),B>=r&&(x+=P),B>=d&&B<r&&(I+=P),B>=p&&(ee+=P);F>0&&an(f.today,b,F),x>0&&an(f.month,b,x),I>0&&an(f.lastMonth,b,I),ee>0&&an(f.last30Days,b,ee)}for(let b of Object.values(f))b.sessions>0&&(b.avgTokensPerSession=Math.round(b.tokens/b.sessions)),b.co2=b.tokens/1e3*De.CO2_PER_1K_TOKENS,b.treesEquivalent=b.co2/De.CO2_ABSORPTION_PER_TREE_PER_YEAR,b.waterUsage=b.tokens/1e3*De.WATER_USAGE_PER_1K_TOKENS,b.estimatedCost=Ls(b.modelUsage,Lt),b.estimatedCostCopilot=Ls(b.modelUsage,Lt,"copilot");return{...f,lastUpdated:t}}async function us(n){let e={warn:Cr,tokenEstimators:Do,modelPricing:Lt,toolNameMap:Qg,ecosystems:cn()},t=new Date,s=new Date(t.getFullYear(),t.getMonth(),t.getDate()),o=new Date(t.getFullYear(),t.getMonth(),t.getDate()-30),i=new Date(t.getFullYear(),t.getMonth(),1),r=Ao(),l=Ao(),d=Ao();for(let m of n)try{let f=(await dc(m)).mtime;if(f<o)continue;let _=await Al(e,m);f>=o&&(bo(l,_),l.sessions++),f>=i&&(bo(d,_),d.sessions++),f>=s&&(bo(r,_),r.sessions++)}catch{}return{today:r,last30Days:l,month:d,lastUpdated:t}}async function Uo(n,e=!1){let t=new Date,s=new Date(t.getFullYear(),t.getMonth(),t.getDate()-30),o=pe(s),i=pe(t),r=new Map,l=new Date(s);for(;pe(l)<=i;){let _=pe(l);r.set(_,{tokens:0,sessions:0,modelUsage:{},editorUsage:{}}),l.setDate(l.getDate()+1)}let d=new Map,m=await _r(n,async _=>cs(_,e));for(let _ of m){if(!_||_.tokens===0||_.interactions===0)continue;let k=ze(_);for(let[b,M]of Object.entries(_.dailyFractions)){let F=Math.round(k*M),x=r.get(b);if(x){x.tokens+=F,x.sessions++;for(let[P,E]of Object.entries(_.modelUsage))x.modelUsage[P]||(x.modelUsage[P]={inputTokens:0,outputTokens:0}),x.modelUsage[P].inputTokens+=Math.round(E.inputTokens*M),x.modelUsage[P].outputTokens+=Math.round(E.outputTokens*M),E.cachedReadTokens!==void 0&&(x.modelUsage[P].cachedReadTokens=(x.modelUsage[P].cachedReadTokens??0)+Math.round(E.cachedReadTokens*M)),E.cacheCreationTokens!==void 0&&(x.modelUsage[P].cacheCreationTokens=(x.modelUsage[P].cacheCreationTokens??0)+Math.round(E.cacheCreationTokens*M));let B=_.editorSource;x.editorUsage[B]||(x.editorUsage[B]={tokens:0,sessions:0}),x.editorUsage[B].tokens+=F,x.editorUsage[B].sessions++}d.has(b)||d.set(b,{tokens:0,sessions:0,modelUsage:{},editorUsage:{}});let I=d.get(b);I.tokens+=F,I.sessions++;for(let[B,P]of Object.entries(_.modelUsage))I.modelUsage[B]||(I.modelUsage[B]={inputTokens:0,outputTokens:0}),I.modelUsage[B].inputTokens+=Math.round(P.inputTokens*M),I.modelUsage[B].outputTokens+=Math.round(P.outputTokens*M),P.cachedReadTokens!==void 0&&(I.modelUsage[B].cachedReadTokens=(I.modelUsage[B].cachedReadTokens??0)+Math.round(P.cachedReadTokens*M)),P.cacheCreationTokens!==void 0&&(I.modelUsage[B].cacheCreationTokens=(I.modelUsage[B].cacheCreationTokens??0)+Math.round(P.cacheCreationTokens*M));let ee=_.editorSource;I.editorUsage[ee]||(I.editorUsage[ee]={tokens:0,sessions:0}),I.editorUsage[ee].tokens+=F,I.editorUsage[ee].sessions++}}let p=Array.from(r.keys()).sort(),f=p.map(_=>r.get(_));return{labels:p,days:f,allDaysMap:d}}var sf=50;function mc(n=sf){process.stdout.write("\r"+" ".repeat(n)+"\r")}function br(n){process.stdout.write(S.dim(n))}var nf=80,Re=class{silent;constructor(e=!1){this.silent=e}show(e){this.silent||br(e)}update(e){this.silent||(process.stdout.write("\r"),br(e))}done(){this.silent||mc(nf)}};function Se(n){return n.json===!0}var pc=new oe("stats").description("Show overview of discovered session files, sessions, chat turns, and tokens").option("-v, --verbose","Show detailed per-folder breakdown").option("--json","Output raw JSON (for machine consumption)").action(async n=>{let e=Se(n);if(e||console.log(S.bold.cyan(`
68
70
  \u{1F50D} Copilot Token Tracker - Session Statistics
69
- `)),n.verbose&&!e){let k=Ao();console.log(S.dim("Search paths:"));for(let b of k){let M=b.exists?S.green("\u2705"):S.dim("\u274C");console.log(` ${M} ${S.dim(b.source)}: ${b.path}`)}console.log()}let t=new Re(e);t.show("Scanning for session files...");let s=await fe();if(t.done(),s.length===0){e?process.stdout.write("{}"):(console.log(S.yellow("\u26A0\uFE0F No session files found.")),console.log(S.dim("Have you used GitHub Copilot Chat in VS Code yet?")));return}e||console.log(S.green(`\u{1F4C2} Found ${S.bold(z(s.length))} session file(s)
70
- `));let o=0,i=0,r=0,l=0,d=0,m={},p={};for(let k=0;k<s.length;k++){let b=await as(s[k]);if(!b||b.tokens===0){d++;continue}if(l++,o+=$e(b),i+=b.thinkingTokens,r+=b.interactions,m[b.editorSource]||(m[b.editorSource]={files:0,tokens:0,interactions:0}),m[b.editorSource].files++,m[b.editorSource].tokens+=$e(b),m[b.editorSource].interactions+=b.interactions,n.verbose){let M=Zg(s[k]);p[M]||(p[M]={files:0,tokens:0}),p[M].files++,p[M].tokens+=$e(b)}((k+1)%50===0||k===s.length-1)&&t.update(`Processing: ${k+1}/${s.length}`)}if(t.done(),e){let k={totalFiles:s.length,processedFiles:l,emptyFiles:d,totalTokens:o,totalThinkingTokens:i,totalInteractions:r,byEditor:m,lastUpdated:new Date().toISOString()};process.stdout.write(JSON.stringify(k));return}console.log(S.bold("\u{1F4CA} Summary")),console.log(S.dim("\u2500".repeat(50))),console.log(` Session files (with data): ${S.bold(z(l))}`),d>0&&console.log(` Empty/skipped files: ${S.dim(z(d))}`),console.log(` Total chat turns: ${S.bold(z(r))}`),console.log(` Total tokens: ${S.bold.yellow(le(o))}`),i>0&&console.log(` Thinking tokens (included): ${S.dim(le(i))}`);let f=mr();f.enabled&&f.entries>0&&console.log(S.dim(` Cache: ${z(f.entries)} entries loaded`)),console.log();let _=Object.entries(m).sort((k,b)=>b[1].tokens-k[1].tokens);if(_.length>0){console.log(S.bold("\u{1F5A5}\uFE0F By Editor")),console.log(S.dim("\u2500".repeat(50)));for(let[k,b]of _){let M=Xg(k);console.log(` ${M.padEnd(25)} ${z(b.files).padStart(5)} files ${le(b.tokens).padStart(8)} tokens ${z(b.interactions).padStart(6)} turns`)}console.log()}if(n.verbose&&Object.keys(p).length>0){let k=Object.entries(p).sort((b,M)=>M[1].tokens-b[1].tokens);console.log(S.bold("\u{1F4C1} By Folder")),console.log(S.dim("\u2500".repeat(70)));for(let[b,M]of k.slice(0,20))console.log(` ${b.substring(0,50).padEnd(50)} ${z(M.files).padStart(5)} files ${le(M.tokens).padStart(8)} tokens`);k.length>20&&console.log(S.dim(` ... and ${k.length-20} more folders`)),console.log()}});function Xg(n){return n?{vscode:"VS Code","vscode-insiders":"VS Code Insiders","vscode-exploration":"VS Code Exploration","vscode-remote":"VS Code Remote",vscodium:"VSCodium",cursor:"Cursor","copilot-cli":"Copilot CLI",opencode:"OpenCode","claude-code":"Claude Code","claude-desktop-cowork":"Claude Desktop (Cowork)","mistral-vibe":"Mistral Vibe","gemini-cli":"Gemini CLI"}[n]||n:"Unknown"}function Zg(n){let e=n.split(/[/\\]/),t=e.indexOf("chatSessions");return t>=2?e.slice(t-1,t+1).join("/"):e.slice(-3,-1).join("/")}function lc(n=new Date){return{today:{},month:{},lastMonth:{},last30Days:{},lastUpdated:n.toISOString(),backendConfigured:!1}}function Do(n=new Date){return{labels:[],tokensData:[],sessionsData:[],modelDatasets:[],editorDatasets:[],editorTotalsMap:{},repositoryDatasets:[],repositoryTotalsMap:{},dailyCount:0,totalTokens:0,avgTokensPerDay:0,totalSessions:0,lastUpdated:n.toISOString(),backendConfigured:!1}}function Ro(n=new Date){return{today:{},last30Days:{},month:{},locale:Intl.DateTimeFormat().resolvedOptions().locale,lastUpdated:n.toISOString(),backendConfigured:!1}}function cc(){return{}}function Io(n){return{today:n.today,month:n.month,lastMonth:n.lastMonth,last30Days:n.last30Days,lastUpdated:n.lastUpdated.toISOString(),backendConfigured:!1}}function Uo(n,e=new Date){return{...n,locale:Intl.DateTimeFormat().resolvedOptions().locale,lastUpdated:e.toISOString(),backendConfigured:!1}}function Fo(n){return{overallStage:n.overallStage,overallLabel:n.overallLabel,categories:n.categories,period:n.period,lastUpdated:n.lastUpdated,backendConfigured:!1}}var uc=new ne("usage").description("Show token usage for today, current month, last month, and last 30 days").option("-m, --models","Show per-model token breakdown").option("-c, --cost","Show estimated cost breakdown").option("--json","Output raw JSON (for machine consumption)").action(async n=>{let e=await ef(n);if(!e)return;let t=await tf(e,n);if(Se(n)){process.stdout.write(JSON.stringify(Io(t)));return}console.log(S.bold.cyan(`
71
+ `)),n.verbose&&!e){let k=Io();console.log(S.dim("Search paths:"));for(let b of k){let M=b.exists?S.green("\u2705"):S.dim("\u274C");console.log(` ${M} ${S.dim(b.source)}: ${b.path}`)}console.log()}let t=new Re(e);t.show("Scanning for session files...");let s=await ye();if(t.done(),s.length===0){e?process.stdout.write("{}"):(console.log(S.yellow("\u26A0\uFE0F No session files found.")),console.log(S.dim("Have you used GitHub Copilot Chat in VS Code yet?")));return}e||console.log(S.green(`\u{1F4C2} Found ${S.bold($(s.length))} session file(s)
72
+ `));let o=0,i=0,r=0,l=0,d=0,m={},p={};for(let k=0;k<s.length;k++){let b=await cs(s[k]);if(!b||b.tokens===0){d++;continue}if(l++,o+=ze(b),i+=b.thinkingTokens,r+=b.interactions,m[b.editorSource]||(m[b.editorSource]={files:0,tokens:0,interactions:0}),m[b.editorSource].files++,m[b.editorSource].tokens+=ze(b),m[b.editorSource].interactions+=b.interactions,n.verbose){let M=rf(s[k]);p[M]||(p[M]={files:0,tokens:0}),p[M].files++,p[M].tokens+=ze(b)}((k+1)%50===0||k===s.length-1)&&t.update(`Processing: ${k+1}/${s.length}`)}if(t.done(),e){let k={totalFiles:s.length,processedFiles:l,emptyFiles:d,totalTokens:o,totalThinkingTokens:i,totalInteractions:r,byEditor:m,lastUpdated:new Date().toISOString()};process.stdout.write(JSON.stringify(k));return}console.log(S.bold("\u{1F4CA} Summary")),console.log(S.dim("\u2500".repeat(50))),console.log(` Session files (with data): ${S.bold($(l))}`),d>0&&console.log(` Empty/skipped files: ${S.dim($(d))}`),console.log(` Total chat turns: ${S.bold($(r))}`),console.log(` Total tokens: ${S.bold.yellow(ue(o))}`),i>0&&console.log(` Thinking tokens (included): ${S.dim(ue(i))}`);let f=hr();f.enabled&&f.entries>0&&console.log(S.dim(` Cache: ${$(f.entries)} entries loaded`)),console.log();let _=Object.entries(m).sort((k,b)=>b[1].tokens-k[1].tokens);if(_.length>0){console.log(S.bold("\u{1F5A5}\uFE0F By Editor")),console.log(S.dim("\u2500".repeat(50)));for(let[k,b]of _){let M=of(k);console.log(` ${M.padEnd(25)} ${$(b.files).padStart(5)} files ${ue(b.tokens).padStart(8)} tokens ${$(b.interactions).padStart(6)} turns`)}console.log()}if(n.verbose&&Object.keys(p).length>0){let k=Object.entries(p).sort((b,M)=>M[1].tokens-b[1].tokens);console.log(S.bold("\u{1F4C1} By Folder")),console.log(S.dim("\u2500".repeat(70)));for(let[b,M]of k.slice(0,20))console.log(` ${b.substring(0,50).padEnd(50)} ${$(M.files).padStart(5)} files ${ue(M.tokens).padStart(8)} tokens`);k.length>20&&console.log(S.dim(` ... and ${k.length-20} more folders`)),console.log()}});function of(n){return n?{vscode:"VS Code","vscode-insiders":"VS Code Insiders","vscode-exploration":"VS Code Exploration","vscode-remote":"VS Code Remote",vscodium:"VSCodium",cursor:"Cursor","copilot-cli":"Copilot CLI",opencode:"OpenCode","claude-code":"Claude Code","claude-desktop-cowork":"Claude Desktop (Cowork)","mistral-vibe":"Mistral Vibe","gemini-cli":"Gemini CLI"}[n]||n:"Unknown"}function rf(n){let e=n.split(/[/\\]/),t=e.indexOf("chatSessions");return t>=2?e.slice(t-1,t+1).join("/"):e.slice(-3,-1).join("/")}function gc(n=new Date){return{today:{},month:{},lastMonth:{},last30Days:{},lastUpdated:n.toISOString(),backendConfigured:!1}}function Oo(n=new Date){return{labels:[],tokensData:[],sessionsData:[],modelDatasets:[],editorDatasets:[],editorTotalsMap:{},repositoryDatasets:[],repositoryTotalsMap:{},dailyCount:0,totalTokens:0,avgTokensPerDay:0,totalSessions:0,lastUpdated:n.toISOString(),backendConfigured:!1}}function Fo(n=new Date){return{today:{},last30Days:{},month:{},locale:Intl.DateTimeFormat().resolvedOptions().locale,lastUpdated:n.toISOString(),backendConfigured:!1}}function fc(){return{}}function No(n){return{today:n.today,month:n.month,lastMonth:n.lastMonth,last30Days:n.last30Days,lastUpdated:n.lastUpdated.toISOString(),backendConfigured:!1}}function Lo(n,e=new Date){return{...n,locale:Intl.DateTimeFormat().resolvedOptions().locale,lastUpdated:e.toISOString(),backendConfigured:!1}}function Go(n){return{overallStage:n.overallStage,overallLabel:n.overallLabel,categories:n.categories,period:n.period,lastUpdated:n.lastUpdated,backendConfigured:!1}}var hc=new oe("usage").description("Show token usage for today, current month, last month, and last 30 days").option("-m, --models","Show per-model token breakdown").option("-c, --cost","Show estimated cost breakdown").option("--json","Output raw JSON (for machine consumption)").action(async n=>{let e=await af(n);if(!e)return;let t=await lf(e,n);if(Se(n)){process.stdout.write(JSON.stringify(No(t)));return}console.log(S.bold.cyan(`
71
73
  \u{1F4CA} Copilot Token Tracker - Usage Report
72
- `));let s=[{label:"Today",emoji:"\u{1F4C5}",stats:t.today},{label:"This Month",emoji:"\u{1F4C6}",stats:t.month},{label:"Last Month",emoji:"\u{1F5D3}\uFE0F",stats:t.lastMonth},{label:"Last 30 Days",emoji:"\u{1F4C8}",stats:t.last30Days}];for(let o of s)sf(o.label,o.emoji,o.stats,n);console.log(S.dim(`Last updated: ${t.lastUpdated.toLocaleString()}
73
- `))});async function ef(n){let e=Se(n),t=new Re(e);t.show("Scanning for session files...");let s=await fe();return t.done(),s.length===0?(e?process.stdout.write("{}"):console.log(S.yellow("\u26A0\uFE0F No session files found.")),null):s}async function tf(n,e){let t=Se(e),s=new Re(t);s.show("Calculating token usage...");let o=await bt(n,(i,r)=>{s.update(`Processing: ${i}/${r} files`)});return s.done(),o}function sf(n,e,t,s){if(console.log(S.bold(`${e} ${n}`)),console.log(S.dim("\u2500".repeat(55))),!t||t.sessions===0){console.log(S.dim(" No activity in this period")),console.log();return}if(console.log(` Sessions: ${S.bold(z(t.sessions))}`),console.log(` Avg interactions/sess: ${S.bold(t.avgInteractionsPerSession.toFixed(1))}`),console.log(` Total tokens: ${S.bold.yellow(le(t.tokens))}`),t.thinkingTokens>0&&console.log(` Thinking tokens: ${S.dim(le(t.thinkingTokens))} (included in total)`),console.log(` Avg tokens/session: ${S.bold(le(t.avgTokensPerSession))}`),s.cost&&(t.estimatedCostCopilot??0)>0&&console.log(` Estimated cost (UBB): ${S.green("$"+(t.estimatedCostCopilot??0).toFixed(4))} ${S.dim("(Copilot AI Credits)")}`),s.models&&Object.keys(t.modelUsage).length>0){console.log(),console.log(S.dim(" Model Breakdown:"));let o=Object.entries(t.modelUsage).sort((i,r)=>r[1].inputTokens+r[1].outputTokens-(i[1].inputTokens+i[1].outputTokens));for(let[i,r]of o){let l=r.inputTokens+r.outputTokens,d=Nt(i,Lt),m=d==="premium"?S.yellow(" \u2B50"):d==="standard"?S.dim(" \u25CB"):"";console.log(` ${(i+m).padEnd(35)} ${le(r.inputTokens).padStart(8)} in ${le(r.outputTokens).padStart(8)} out ${le(l).padStart(8)} total`)}}if(Object.keys(t.editorUsage).length>1){console.log(),console.log(S.dim(" Editor Breakdown:"));let o=Object.entries(t.editorUsage).sort((i,r)=>r[1].tokens-i[1].tokens);for(let[i,r]of o)console.log(` ${i.padEnd(25)} ${z(r.sessions).padStart(5)} sessions ${le(r.tokens).padStart(8)} tokens`)}console.log()}var dc=new ne("environmental").alias("env").description("Show environmental impact of your Copilot usage (CO2, water, trees)").action(async()=>{console.log(S.bold.cyan(`
74
+ `));let s=[{label:"Today",emoji:"\u{1F4C5}",stats:t.today},{label:"This Month",emoji:"\u{1F4C6}",stats:t.month},{label:"Last Month",emoji:"\u{1F5D3}\uFE0F",stats:t.lastMonth},{label:"Last 30 Days",emoji:"\u{1F4C8}",stats:t.last30Days}];for(let o of s)cf(o.label,o.emoji,o.stats,n);console.log(S.dim(`Last updated: ${t.lastUpdated.toLocaleString()}
75
+ `))});async function af(n){let e=Se(n),t=new Re(e);t.show("Scanning for session files...");let s=await ye();return t.done(),s.length===0?(e?process.stdout.write("{}"):console.log(S.yellow("\u26A0\uFE0F No session files found.")),null):s}async function lf(n,e){let t=Se(e),s=new Re(t);s.show("Calculating token usage...");let o=await bt(n,(i,r)=>{s.update(`Processing: ${i}/${r} files`)});return s.done(),o}function cf(n,e,t,s){if(console.log(S.bold(`${e} ${n}`)),console.log(S.dim("\u2500".repeat(55))),!t||t.sessions===0){console.log(S.dim(" No activity in this period")),console.log();return}if(console.log(` Sessions: ${S.bold($(t.sessions))}`),console.log(` Avg interactions/sess: ${S.bold(t.avgInteractionsPerSession.toFixed(1))}`),console.log(` Total tokens: ${S.bold.yellow(ue(t.tokens))}`),t.thinkingTokens>0&&console.log(` Thinking tokens: ${S.dim(ue(t.thinkingTokens))} (included in total)`),console.log(` Avg tokens/session: ${S.bold(ue(t.avgTokensPerSession))}`),s.cost&&(t.estimatedCostCopilot??0)>0&&console.log(` Estimated cost (UBB): ${S.green("$"+(t.estimatedCostCopilot??0).toFixed(4))} ${S.dim("(Copilot AI Credits)")}`),s.models&&Object.keys(t.modelUsage).length>0){console.log(),console.log(S.dim(" Model Breakdown:"));let o=Object.entries(t.modelUsage).sort((i,r)=>r[1].inputTokens+r[1].outputTokens-(i[1].inputTokens+i[1].outputTokens));for(let[i,r]of o){let l=r.inputTokens+r.outputTokens,d=Nt(i,Lt),m=d==="premium"?S.yellow(" \u2B50"):d==="standard"?S.dim(" \u25CB"):"";console.log(` ${(i+m).padEnd(35)} ${ue(r.inputTokens).padStart(8)} in ${ue(r.outputTokens).padStart(8)} out ${ue(l).padStart(8)} total`)}}if(Object.keys(t.editorUsage).length>1){console.log(),console.log(S.dim(" Editor Breakdown:"));let o=Object.entries(t.editorUsage).sort((i,r)=>r[1].tokens-i[1].tokens);for(let[i,r]of o)console.log(` ${i.padEnd(25)} ${$(r.sessions).padStart(5)} sessions ${ue(r.tokens).padStart(8)} tokens`)}console.log()}var yc=new oe("environmental").alias("env").description("Show environmental impact of your Copilot usage (CO2, water, trees)").action(async()=>{console.log(S.bold.cyan(`
74
76
  \u{1F30D} Copilot Token Tracker - Environmental Impact
75
- `));let n=new Re;n.show("Scanning for session files...");let e=await fe();if(n.done(),e.length===0){console.log(S.yellow("\u26A0\uFE0F No session files found."));return}n.show("Calculating usage...");let t=await bt(e,(i,r)=>{n.update(`Processing: ${i}/${r} files`)});n.done();let s=[{label:"Today",emoji:"\u{1F4C5}",stats:t.today},{label:"This Month",emoji:"\u{1F4C6}",stats:t.month},{label:"Last Month",emoji:"\u{1F5D3}\uFE0F",stats:t.lastMonth},{label:"Last 30 Days",emoji:"\u{1F4C8}",stats:t.last30Days}];console.log(S.dim("Methodology: Estimates based on industry averages for AI inference")),console.log(S.dim(` CO\u2082: ${De.CO2_PER_1K_TOKENS} gCO\u2082e per 1K tokens`)),console.log(S.dim(` Water: ${De.WATER_USAGE_PER_1K_TOKENS} L per 1K tokens`)),console.log(S.dim(` Tree absorption: ${mc(De.CO2_ABSORPTION_PER_TREE_PER_YEAR)} CO\u2082/year
76
- `));for(let i of s)nf(i.label,i.emoji,i.stats);let o=t.last30Days;if(o.tokens>0){console.log(S.bold("\u{1F504} Context Comparisons (Last 30 Days)")),console.log(S.dim("\u2500".repeat(55)));let i=o.co2,r=o.waterUsage,l=i/De.CO2_PER_KM_DRIVING;console.log(` \u{1F697} Equivalent to driving: ${l.toFixed(3)} km`);let d=i/De.CO2_PER_PHONE_CHARGE;console.log(` \u{1F4F1} Smartphone charges: ${d.toFixed(1)}`);let m=r/De.WATER_PER_COFFEE_CUP;console.log(` \u2615 Cups of coffee (water): ${m.toFixed(4)}`);let p=i/De.CO2_PER_LED_HOUR;console.log(` \u{1F4A1} LED bulb hours: ${p.toFixed(2)}`),console.log()}console.log(S.dim(`Last updated: ${t.lastUpdated.toLocaleString()}
77
- `))});function mc(n){return n==null||!Number.isFinite(n)||n<0?"0.000 gCO\u2082e":n>=1e3?`${(n/1e3).toFixed(2)} kgCO\u2082e`:`${n.toFixed(3)} gCO\u2082e`}function nf(n,e,t){if(console.log(S.bold(`${e} ${n}`)),console.log(S.dim("\u2500".repeat(55))),!t||t.sessions===0){console.log(S.dim(" No activity in this period")),console.log();return}if(console.log(` Tokens used: ${S.bold.yellow(le(t.tokens))}`),console.log(` CO\u2082 emissions: ${S.bold(mc(t.co2))}`),console.log(` Water usage: ${S.bold(t.waterUsage.toFixed(3))} liters`),t.treesEquivalent>0){let s=t.treesEquivalent<.001?t.treesEquivalent.toExponential(2):t.treesEquivalent.toFixed(6);console.log(` Trees to offset: ${S.green(s)} trees/year`)}console.log()}var pc=["read_file","copilot_readFile","read","view","view_image","copilot_viewImage","list_dir","list_directory","ls","copilot_listDirectory","find_files","file_search","file_glob_search","copilot_findFiles","opilot_findFiles","copilot_findTextInFiles","copilot_findTestFiles","test_search","grep_search","grep","glob","rg","semantic_search","copilot_searchCodebase","code_search","copilot_getSearchResults","copilot_githubTextSearch","get_search_view_results","search_workspace_symbols","copilot_searchWorkspaceSymbols","vscode_listCodeUsages","get_symbols_by_name","get_errors","copilot_getErrors","get_changed_files","copilot_getChangedFiles","read_project_structure","copilot_readProjectStructure","get_doc_info","copilot_getDocInfo","get_vscode_api","copilot_getVSCodeAPI","get_project_setup_info","copilot_getProjectSetupInfo","get_files_in_project","get_projects_in_solution","get_python_executable_details","get_currentfile","get_file","vscode_get_confirmation","vscode_get_confirmation_with_options","vscode_get_terminal_confirmation","vscode_get_modified_files_confirmation","memory","copilot_memory","copilot_resolveMemoryFileUri","detect_memories","todo","tool_replay","copilot_toolReplay","tool_search","get_task_output","get_output_window_logs","job_output","get_terminal_output","await_terminal","terminal_selection","terminal_last_command","read_notebook_cell_output","copilot_readNotebookCellOutput","copilot_getNotebookSummary","test_failure","copilot_testFailure","ask_questions","AskUserQuestion","ask_user_question","copilot_askQuestions","switch_agent","copilot_switchAgent","bash","vscode_editFile_internal","vscode_fetchWebPage_internal","vscode_searchExtensions_internal","fetch_copilot_cli_documentation","generate_findings","generate_topics","list_bash","read_bash","write_bash","stop_bash","list_powershell","read_powershell","clarify_requirements","get_tests","ide-get_diagnostics","plan","signal_plan_ready","update_plan_progress","EnterPlanMode","ExitPlanMode","stop_agent","mcp_reload","mcp_validate","add_loaded_assembly","analyze_symbol","search_decompiled_symbols","search_web"];var rf=new Set(pc.map(n=>n.toLowerCase()));function $(n){return n.toLocaleString("en-US")}function me(n,e){return Math.max(n,e)}var af={1:"Stage 1: AI Skeptic",2:"Stage 2: AI Explorer",3:"Stage 3: AI Collaborator",4:"Stage 4: AI Strategist"},ze={promptEngineering:{stage2MinInteractions:5,stage2MinAvgTurns:3,stage3MinAvgTurns:5,stage3MinInteractions:30,stage3MinSlashCommands:2,stage4MinInteractions:100,stage4MinSlashCommands:3},contextEngineering:{stage2MinTotalRefs:1,stage3MinRefTypes:3,stage3MinTotalRefs:10,stage4MinRefTypes:5,stage4MinTotalRefs:30},agentic:{stage3MinAvgFilesPerSession:3,stage3MinAgentInteractions:10,stage3MinNonAutoTools:3,stage4MinAgentInteractions:50,stage4MinNonAutoTools:5,stage4MinMultiFileEdits:20,stage3MinMultiAgentParents:1,stage4MinMultiAgentParents:3,multiAgentMinChildren:2},toolUsage:{stage3MinAdvancedTools:2,stage4MinMcpServers:2},customization:{stage3MinCustomizationRate:.3,stage3MinCustomizedRepos:2,stage4MinCustomizationRate:.7,stage4MinCustomizedRepos:3,stage3MinUniqueModels:3,stage4MinUniqueModels:5},workflowIntegration:{stage2MinSessions:3,stage2MinApplyRatePct:50,stage3MinModesUsed:2,hasExplicitContextMinRefs:10,stage3MinContextRefs:20,stage4MinSessions:15}};function lf(n){let e=[...n].sort((o,i)=>o-i),t=Math.floor(e.length/2);return e.length%2===0?Math.round((e[t-1]+e[t])/2):e[t]}var cf=["explain","fix","tests","doc","generate","optimize","new","newNotebook","search","fixTestFailure","setupTests"],uf=["review","bug","think","compact","pr_comments"];function df(n){return[...cf.filter(e=>(n[e]??0)>0),...uf.filter(e=>(n[`__slash__${e}`]??0)>0)]}function gc(n){return Object.keys(n).filter(e=>!rf.has(e.toLowerCase())&&!e.startsWith("__slash__")).length}function mf(n,e){return n>0||e>0}function pf(n,e){return n>0||e>0}function gf(n,e,t){let s=ze.promptEngineering;return n>=s.stage3MinInteractions&&(e.length>=s.stage3MinSlashCommands||t)}function ff(n,e,t,s){let o=ze.promptEngineering;return n>=o.stage4MinInteractions&&e&&(t||s.length>=o.stage4MinSlashCommands)}function hf(n,e,t,s){let o=ze.promptEngineering,i=[];return n<2&&i.push("Try asking Copilot a question using the Chat panel"),n<3&&(e||i.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for multi-file changes"),s.length<o.stage3MinSlashCommands&&i.push("Use [slash commands](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) like /explain, /fix, or /tests to give structured prompts")),n<4&&(e||i.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for autonomous, multi-step coding tasks"),t||i.push("Experiment with [different models](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_choose-a-language-model) for different tasks - use fast models for simple queries and reasoning models for complex problems"),s.length<o.stage4MinSlashCommands&&e&&t&&i.push("Explore more [slash commands](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) like /explain, /tests, or /doc to diversify your prompting")),i}function yf(n,e,t){if(!n.conversationPatterns)return t;let s=ze.promptEngineering,o=Math.round(n.conversationPatterns.multiTurnSessions/Math.max(1,n.sessions)*100);return n.conversationPatterns.multiTurnSessions>0&&e.push(`${$(n.conversationPatterns.multiTurnSessions)} multi-turn sessions (${o}%)`),n.conversationPatterns.avgTurnsPerSession>=s.stage2MinAvgTurns&&(e.push(`Avg ${n.conversationPatterns.avgTurnsPerSession.toFixed(1)} exchanges per session`),t=me(t,2)),n.conversationPatterns.avgTurnsPerSession>=s.stage3MinAvgTurns&&(t=me(t,3)),t}function _f(n){let{stage:e,evidence:t,usedSlashCommands:s,hasModelSwitching:o,hasAgentMode:i}=Cf(n);return{stage:e,evidence:t,tips:hf(e,i,o,s)}}function Cf(n){let e=[],t=ze.promptEngineering,s=n.modeUsage.ask+n.modeUsage.edit+n.modeUsage.agent+n.modeUsage.cli;s>0&&e.push(`${$(s)} total interactions`),n.modeUsage.ask>0&&e.push(`${$(n.modeUsage.ask)} ask-mode conversations`),n.modeUsage.agent>0&&e.push(`${$(n.modeUsage.agent)} agent-mode interactions`),n.modeUsage.cli>0&&e.push(`${$(n.modeUsage.cli)} CLI interactions`);let o=yf(n,e,1);s>=t.stage2MinInteractions&&(o=2);let i=df(n.toolCalls.byTool);i.length>0&&e.push(`Used slash commands: /${i.join(", /")}`);let r=mf(n.modelSwitching.mixedTierSessions,n.modelSwitching.switchingFrequency),l=pf(n.modeUsage.agent,n.modeUsage.cli);return gf(s,i,l)&&(o=3),ff(s,l,r,i)&&(o=4),r&&(e.push(`Switched models in ${Math.round(n.modelSwitching.switchingFrequency)}% of sessions`),o<4&&n.modelSwitching.mixedTierSessions>0&&(o=me(o,3))),{stage:o,evidence:e,usedSlashCommands:i,hasModelSwitching:r,hasAgentMode:l}}function bf(n,e){if(n.length===0)return;let t=e.length>0?` \u2014 try ${e.slice(0,3).join(", ")}`:"";return`Stage 4 needs ${n.join(" and ")}${t}`}function kf(n,e){let t=n.filter(o=>!o.used).map(o=>o.name);if(t.length===0)return;let s=t.length>3?` and ${t.length-3} more`:"";return`Try ${t.slice(0,3).join(", ")}${s} \u2014 see ${e} to reach Stage 4`}function Sf(n,e,t){let s=ze.contextEngineering,o=Math.max(0,s.stage4MinRefTypes-e),i=Math.max(0,s.stage4MinTotalRefs-t),r=[{name:"image attachments",used:(n.byKind?.["copilot.image"]??0)>0},{name:"prompt files",used:(n.byKind?.promptFile??0)>0},{name:"custom prompt commands",used:(n.byKind?.prompt??0)>0},{name:"#changes",used:n.changes>0},{name:"#problemsPanel",used:n.problemsPanel>0},{name:"#outputPanel",used:n.outputPanel>0},{name:"#terminalLastCommand",used:n.terminalLastCommand>0},{name:"#terminalSelection",used:n.terminalSelection>0},{name:"#clipboard",used:n.clipboard>0},{name:"@vscode",used:n.vscode>0}];if(r.filter(d=>d.used).length>=2){let d=[{name:"#symbol",used:n.symbol>0},{name:"@workspace",used:n.workspace>0},{name:"#codebase",used:n.codebase>0},{name:"@terminal",used:n.terminal>0},...r].filter(p=>!p.used).map(p=>p.name),m=[];return o>0&&m.push(`${$(e)} of ${s.stage4MinRefTypes} different reference types used`),i>0&&m.push(`${$(t)} of ${s.stage4MinTotalRefs} total references`),bf(m,d)}return kf(r,"[specialized context variables](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts)")}function wf(n,e,t){e>0&&n.push(`${$(e)} ${t}`)}function Tf(n){let e=[],t=[[n.file,"#file references"],[n.selection,"#selection references"],[n.codebase,"#codebase references"],[n.workspace,"@workspace references"],[n.terminal,"@terminal references"],[n.vscode,"@vscode references"],[n.clipboard,"#clipboard references"],[n.changes,"#changes references"],[n.problemsPanel,"#problemsPanel references"],[n.outputPanel,"#outputPanel references"],[n.terminalLastCommand,"#terminalLastCommand references"],[n.terminalSelection,"#terminalSelection references"],[n.byKind?.promptFile??0,"prompt file uses"],[n.byKind?.prompt??0,"custom prompt commands"],[n.codeContextLines??0,"lines of code context"]];for(let[s,o]of t)wf(e,s,o);return e}function Mf(n){return[n.file,n.selection,n.symbol,n.codebase,n.workspace,n.terminal,n.vscode,n.clipboard,n.changes,n.problemsPanel,n.outputPanel,n.terminalLastCommand,n.terminalSelection,n.byKind?.["copilot.image"]??0,n.byKind?.promptFile??0,n.byKind?.prompt??0].filter(Boolean).length}function Pf(n,e,t){let s=n.byKind["copilot.image"]||0;return s>0&&(e.push(`${$(s)} image references (vision)`),t=me(t,3)),(n.byKind.promptFile||0)>0&&(t=me(t,3)),t}function vf(n){let e=1,t=ze.contextEngineering,s=n.contextReferences,o=s.file+s.selection+s.symbol+s.codebase+s.workspace,i=Mf(s),r=Tf(s);o>=t.stage2MinTotalRefs&&(e=2),i>=t.stage3MinRefTypes&&o>=t.stage3MinTotalRefs&&(e=3),i>=t.stage4MinRefTypes&&o>=t.stage4MinTotalRefs&&(e=4),e=Pf(s,r,e);let l=[];if(e<2&&l.push("Try adding [#file or #selection](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) references to give Copilot more context"),e<3&&l.push("Explore [@workspace, #codebase, and @terminal](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) for broader context"),e<4){let d=Sf(s,i,o);d&&l.push(d)}return{stage:e,evidence:r,tips:l}}function xf(n,e,t){return n>=t.stage3MinAgentInteractions&&e>=t.stage3MinNonAutoTools}function Af(n,e,t){return n>=t.stage4MinAgentInteractions&&e>=t.stage4MinNonAutoTools}function Ef(n,e){return!!n&&n.multiFileEdits>=e.stage4MinMultiFileEdits&&n.avgFilesPerSession>=e.stage3MinAvgFilesPerSession}function Df(n,e,t,s){if(n<e.stage3MinMultiAgentParents)return t;let o=n===1?"1 session":`${$(n)} sessions`;return s.push(`${o} with child workspaces (multi-agent orchestration)`),t=me(t,3),n>=e.stage4MinMultiAgentParents&&(t=me(t,4)),t}function Rf(n){let e=[];return n<2&&e.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) \u2014 it can run terminal commands, edit files, and explore your codebase autonomously"),n<3&&e.push("Use [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for multi-step tasks; let it chain tools like file search, terminal, and code edits"),n<4&&e.push("Try [multi-agent orchestration](https://code.visualstudio.com/docs/copilot/agents/overview): start child sessions from a parent session to run multiple agents in parallel on independent sub-tasks"),e}function If(n){let e=[],t=1,s=ze.agentic;if(n.modeUsage.agent>0&&(e.push(`${$(n.modeUsage.agent)} agent-mode interactions`),t=2),n.modeUsage.cli>0&&(e.push(`${$(n.modeUsage.cli)} CLI interactions`),t=me(t,2)),n.toolCalls.total>0&&e.push(`${$(n.toolCalls.total)} tool calls executed`),n.modeUsage.edit>0&&e.push(`${$(n.modeUsage.edit)} edit-mode interactions`),n.editScope){let r=n.editScope.singleFileEdits+n.editScope.multiFileEdits,l=r>0?Math.round(n.editScope.multiFileEdits/r*100):0;n.editScope.multiFileEdits>0&&(e.push(`${$(n.editScope.multiFileEdits)} multi-file edit sessions (${l}%)`),t=me(t,2)),n.editScope.avgFilesPerSession>=s.stage3MinAvgFilesPerSession&&(e.push(`Avg ${n.editScope.avgFilesPerSession.toFixed(1)} files per edit session`),t=me(t,3))}n.agentTypes?.editsAgent&&(e.push(`${$(n.agentTypes.editsAgent)} edits agent sessions`),t=me(t,2));let o=gc(n.toolCalls.byTool),i=n.modeUsage.agent+n.modeUsage.cli;return xf(i,o,s)&&(t=3),Af(i,o,s)&&(t=4),Ef(n.editScope,s)&&(t=me(t,4)),t=Df(n.multiAgentParentSessions??0,s,t,e),{stage:t,evidence:e,tips:Rf(t)}}function Uf(n,e){let t=[];return n<2&&t.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) to let Copilot use built-in tools for file operations and terminal commands"),n<3&&(e.length===0?t.push("Set up [MCP servers](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) to connect Copilot to external tools (databases, APIs, cloud services)"):t.push("Explore [GitHub integrations](https://code.visualstudio.com/docs/copilot/agents/agent-tools) and advanced tools like editFiles and run_in_terminal")),n<4&&(e.length===1?t.push("Add more [MCP servers](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) to expand Copilot's capabilities - check the VS Code MCP registry"):e.length===0?t.push("Explore the [VS Code MCP registry](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) for tools that integrate with your workflow"):t.push("You're using multiple MCP servers - keep exploring advanced tool combinations")),t}function Ff(n){let e=[],t=1,s=ze.toolUsage,o=Object.keys(n.toolCalls.byTool).length,i=gc(n.toolCalls.byTool);if(i>0){let m=o-i,p=m>0?` (+ ${$(m)} automatic)`:"";e.push(`${$(i)} intentional tools used${p}`),t=2}else o>0&&e.push(`${$(o)} tools used (all automatic \u2014 agent reads/searches)`);n.agentTypes?.workspaceAgent>0&&(e.push(`${$(n.agentTypes.workspaceAgent)} @workspace agent sessions`),t=me(t,3));let r={github_pull_request:"GitHub Pull Request",github_repo:"GitHub Repository",run_in_terminal:"Run In Terminal",editFiles:"Edit Files",listFiles:"List Files"},l=Object.keys(r).filter(m=>(n.toolCalls.byTool[m]||0)>0);l.length>0&&(e.push(`Advanced tools: ${l.map(m=>r[m]).join(", ")}`),l.length>=s.stage3MinAdvancedTools&&(t=me(t,3)));let d=Object.keys(n.mcpTools.byServer);return n.mcpTools.total>0&&(e.push(`${$(n.mcpTools.total)} MCP tool calls across ${d.length} server(s)`),t=me(t,3),d.length>=s.stage4MinMcpServers&&(t=4)),{stage:t,evidence:e,tips:Uf(t,d)}}function Of(n,e,t){let s=e-t;if(s===0)return"All repos customized! Keep instructions up to date and add [skill files](https://code.visualstudio.com/docs/copilot/customization/agent-skills) or [MCP server configs](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) for deeper integration";let o=`${$(s)} repo${s===1?"":"s"} still missing customization \u2014 add [instructions](https://code.visualstudio.com/docs/copilot/customization/custom-instructions), [agents.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions), or [MCP configs](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) for full coverage.`,i=(n?.workspaces||[]).filter(l=>Object.values(l.typeStatuses).every(d=>d==="\u274C")).filter(l=>!l.workspacePath.startsWith("<unresolved:")).sort((l,d)=>d.interactionCount!==l.interactionCount?d.interactionCount-l.interactionCount:d.sessionCount-l.sessionCount).slice(0,3);if(i.length===0)return o;let r=i.map(l=>`${l.workspaceName} (${$(l.interactionCount)} interaction${l.interactionCount===1?"":"s"})`).join(`
77
+ `));let n=new Re;n.show("Scanning for session files...");let e=await ye();if(n.done(),e.length===0){console.log(S.yellow("\u26A0\uFE0F No session files found."));return}n.show("Calculating usage...");let t=await bt(e,(i,r)=>{n.update(`Processing: ${i}/${r} files`)});n.done();let s=[{label:"Today",emoji:"\u{1F4C5}",stats:t.today},{label:"This Month",emoji:"\u{1F4C6}",stats:t.month},{label:"Last Month",emoji:"\u{1F5D3}\uFE0F",stats:t.lastMonth},{label:"Last 30 Days",emoji:"\u{1F4C8}",stats:t.last30Days}];console.log(S.dim("Methodology: Estimates based on industry averages for AI inference")),console.log(S.dim(` CO\u2082: ${De.CO2_PER_1K_TOKENS} gCO\u2082e per 1K tokens`)),console.log(S.dim(` Water: ${De.WATER_USAGE_PER_1K_TOKENS} L per 1K tokens`)),console.log(S.dim(` Tree absorption: ${_c(De.CO2_ABSORPTION_PER_TREE_PER_YEAR)} CO\u2082/year
78
+ `));for(let i of s)uf(i.label,i.emoji,i.stats);let o=t.last30Days;if(o.tokens>0){console.log(S.bold("\u{1F504} Context Comparisons (Last 30 Days)")),console.log(S.dim("\u2500".repeat(55)));let i=o.co2,r=o.waterUsage,l=i/De.CO2_PER_KM_DRIVING;console.log(` \u{1F697} Equivalent to driving: ${l.toFixed(3)} km`);let d=i/De.CO2_PER_PHONE_CHARGE;console.log(` \u{1F4F1} Smartphone charges: ${d.toFixed(1)}`);let m=r/De.WATER_PER_COFFEE_CUP;console.log(` \u2615 Cups of coffee (water): ${m.toFixed(4)}`);let p=i/De.CO2_PER_LED_HOUR;console.log(` \u{1F4A1} LED bulb hours: ${p.toFixed(2)}`),console.log()}console.log(S.dim(`Last updated: ${t.lastUpdated.toLocaleString()}
79
+ `))});function _c(n){return n==null||!Number.isFinite(n)||n<0?"0.000 gCO\u2082e":n>=1e3?`${(n/1e3).toFixed(2)} kgCO\u2082e`:`${n.toFixed(3)} gCO\u2082e`}function uf(n,e,t){if(console.log(S.bold(`${e} ${n}`)),console.log(S.dim("\u2500".repeat(55))),!t||t.sessions===0){console.log(S.dim(" No activity in this period")),console.log();return}if(console.log(` Tokens used: ${S.bold.yellow(ue(t.tokens))}`),console.log(` CO\u2082 emissions: ${S.bold(_c(t.co2))}`),console.log(` Water usage: ${S.bold(t.waterUsage.toFixed(3))} liters`),t.treesEquivalent>0){let s=t.treesEquivalent<.001?t.treesEquivalent.toExponential(2):t.treesEquivalent.toFixed(6);console.log(` Trees to offset: ${S.green(s)} trees/year`)}console.log()}var Cc=["read_file","copilot_readFile","read","view","view_image","copilot_viewImage","list_dir","list_directory","ls","copilot_listDirectory","find_files","file_search","file_glob_search","copilot_findFiles","opilot_findFiles","copilot_findTextInFiles","copilot_findTestFiles","test_search","grep_search","grep","glob","rg","semantic_search","copilot_searchCodebase","code_search","copilot_getSearchResults","copilot_githubTextSearch","get_search_view_results","search_workspace_symbols","copilot_searchWorkspaceSymbols","vscode_listCodeUsages","get_symbols_by_name","get_errors","copilot_getErrors","get_changed_files","copilot_getChangedFiles","read_project_structure","copilot_readProjectStructure","get_doc_info","copilot_getDocInfo","get_vscode_api","copilot_getVSCodeAPI","get_project_setup_info","copilot_getProjectSetupInfo","get_files_in_project","get_projects_in_solution","get_python_executable_details","get_currentfile","get_file","vscode_get_confirmation","vscode_get_confirmation_with_options","vscode_get_terminal_confirmation","vscode_get_modified_files_confirmation","memory","copilot_memory","copilot_resolveMemoryFileUri","detect_memories","todo","tool_replay","copilot_toolReplay","tool_search","get_task_output","get_output_window_logs","job_output","get_terminal_output","await_terminal","terminal_selection","terminal_last_command","read_notebook_cell_output","copilot_readNotebookCellOutput","copilot_getNotebookSummary","test_failure","copilot_testFailure","ask_questions","AskUserQuestion","ask_user_question","copilot_askQuestions","switch_agent","copilot_switchAgent","bash","vscode_editFile_internal","vscode_fetchWebPage_internal","vscode_searchExtensions_internal","fetch_copilot_cli_documentation","generate_findings","generate_topics","list_bash","read_bash","write_bash","stop_bash","list_powershell","read_powershell","clarify_requirements","get_tests","ide-get_diagnostics","plan","signal_plan_ready","update_plan_progress","EnterPlanMode","ExitPlanMode","stop_agent","mcp_reload","mcp_validate","add_loaded_assembly","analyze_symbol","search_decompiled_symbols","search_web"];var mf=new Set(Cc.map(n=>n.toLowerCase()));function z(n){return n.toLocaleString("en-US")}function fe(n,e){return Math.max(n,e)}var pf={1:"Stage 1: AI Skeptic",2:"Stage 2: AI Explorer",3:"Stage 3: AI Collaborator",4:"Stage 4: AI Strategist"},$e={promptEngineering:{stage2MinInteractions:5,stage2MinAvgTurns:3,stage3MinAvgTurns:5,stage3MinInteractions:30,stage3MinSlashCommands:2,stage4MinInteractions:100,stage4MinSlashCommands:3},contextEngineering:{stage2MinTotalRefs:1,stage3MinRefTypes:3,stage3MinTotalRefs:10,stage4MinRefTypes:5,stage4MinTotalRefs:30},agentic:{stage3MinAvgFilesPerSession:3,stage3MinAgentInteractions:10,stage3MinNonAutoTools:3,stage4MinAgentInteractions:50,stage4MinNonAutoTools:5,stage4MinMultiFileEdits:20,stage3MinMultiAgentParents:1,stage4MinMultiAgentParents:3,multiAgentMinChildren:2},toolUsage:{stage3MinAdvancedTools:2,stage4MinMcpServers:2},customization:{stage3MinCustomizationRate:.3,stage3MinCustomizedRepos:2,stage4MinCustomizationRate:.7,stage4MinCustomizedRepos:3,stage3MinUniqueModels:3,stage4MinUniqueModels:5},workflowIntegration:{stage2MinSessions:3,stage2MinApplyRatePct:50,stage3MinModesUsed:2,hasExplicitContextMinRefs:10,stage3MinContextRefs:20,stage4MinSessions:15}};function gf(n){let e=[...n].sort((o,i)=>o-i),t=Math.floor(e.length/2);return e.length%2===0?Math.round((e[t-1]+e[t])/2):e[t]}var ff=["explain","fix","tests","doc","generate","optimize","new","newNotebook","search","fixTestFailure","setupTests"],hf=["review","bug","think","compact","pr_comments"];function yf(n){return[...ff.filter(e=>(n[e]??0)>0),...hf.filter(e=>(n[`__slash__${e}`]??0)>0)]}function bc(n){return Object.keys(n).filter(e=>!mf.has(e.toLowerCase())&&!e.startsWith("__slash__")).length}function _f(n,e){return n>0||e>0}function Cf(n,e){return n>0||e>0}function bf(n,e,t){let s=$e.promptEngineering;return n>=s.stage3MinInteractions&&(e.length>=s.stage3MinSlashCommands||t)}function kf(n,e,t,s){let o=$e.promptEngineering;return n>=o.stage4MinInteractions&&e&&(t||s.length>=o.stage4MinSlashCommands)}function Sf(n,e,t,s){let o=$e.promptEngineering,i=[];return n<2&&i.push("Try asking Copilot a question using the Chat panel"),n<3&&(e||i.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for multi-file changes"),s.length<o.stage3MinSlashCommands&&i.push("Use [slash commands](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) like /explain, /fix, or /tests to give structured prompts")),n<4&&(e||i.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for autonomous, multi-step coding tasks"),t||i.push("Experiment with [different models](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_choose-a-language-model) for different tasks - use fast models for simple queries and reasoning models for complex problems"),s.length<o.stage4MinSlashCommands&&e&&t&&i.push("Explore more [slash commands](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) like /explain, /tests, or /doc to diversify your prompting")),i}function wf(n,e,t){if(!n.conversationPatterns)return t;let s=$e.promptEngineering,o=Math.round(n.conversationPatterns.multiTurnSessions/Math.max(1,n.sessions)*100);return n.conversationPatterns.multiTurnSessions>0&&e.push(`${z(n.conversationPatterns.multiTurnSessions)} multi-turn sessions (${o}%)`),n.conversationPatterns.avgTurnsPerSession>=s.stage2MinAvgTurns&&(e.push(`Avg ${n.conversationPatterns.avgTurnsPerSession.toFixed(1)} exchanges per session`),t=fe(t,2)),n.conversationPatterns.avgTurnsPerSession>=s.stage3MinAvgTurns&&(t=fe(t,3)),t}function Tf(n){let{stage:e,evidence:t,usedSlashCommands:s,hasModelSwitching:o,hasAgentMode:i}=Mf(n);return{stage:e,evidence:t,tips:Sf(e,i,o,s)}}function Mf(n){let e=[],t=$e.promptEngineering,s=n.modeUsage.ask+n.modeUsage.edit+n.modeUsage.agent+n.modeUsage.cli;s>0&&e.push(`${z(s)} total interactions`),n.modeUsage.ask>0&&e.push(`${z(n.modeUsage.ask)} ask-mode conversations`),n.modeUsage.agent>0&&e.push(`${z(n.modeUsage.agent)} agent-mode interactions`),n.modeUsage.cli>0&&e.push(`${z(n.modeUsage.cli)} CLI interactions`);let o=wf(n,e,1);s>=t.stage2MinInteractions&&(o=2);let i=yf(n.toolCalls.byTool);i.length>0&&e.push(`Used slash commands: /${i.join(", /")}`);let r=_f(n.modelSwitching.mixedTierSessions,n.modelSwitching.switchingFrequency),l=Cf(n.modeUsage.agent,n.modeUsage.cli);return bf(s,i,l)&&(o=3),kf(s,l,r,i)&&(o=4),r&&(e.push(`Switched models in ${Math.round(n.modelSwitching.switchingFrequency)}% of sessions`),o<4&&n.modelSwitching.mixedTierSessions>0&&(o=fe(o,3))),{stage:o,evidence:e,usedSlashCommands:i,hasModelSwitching:r,hasAgentMode:l}}function Pf(n,e){if(n.length===0)return;let t=e.length>0?` \u2014 try ${e.slice(0,3).join(", ")}`:"";return`Stage 4 needs ${n.join(" and ")}${t}`}function vf(n,e){let t=n.filter(o=>!o.used).map(o=>o.name);if(t.length===0)return;let s=t.length>3?` and ${t.length-3} more`:"";return`Try ${t.slice(0,3).join(", ")}${s} \u2014 see ${e} to reach Stage 4`}function xf(n,e,t){let s=$e.contextEngineering,o=Math.max(0,s.stage4MinRefTypes-e),i=Math.max(0,s.stage4MinTotalRefs-t),r=[{name:"image attachments",used:(n.byKind?.["copilot.image"]??0)>0},{name:"prompt files",used:(n.byKind?.promptFile??0)>0},{name:"custom prompt commands",used:(n.byKind?.prompt??0)>0},{name:"#changes",used:n.changes>0},{name:"#problemsPanel",used:n.problemsPanel>0},{name:"#outputPanel",used:n.outputPanel>0},{name:"#terminalLastCommand",used:n.terminalLastCommand>0},{name:"#terminalSelection",used:n.terminalSelection>0},{name:"#clipboard",used:n.clipboard>0},{name:"@vscode",used:n.vscode>0}];if(r.filter(d=>d.used).length>=2){let d=[{name:"#symbol",used:n.symbol>0},{name:"@workspace",used:n.workspace>0},{name:"#codebase",used:n.codebase>0},{name:"@terminal",used:n.terminal>0},...r].filter(p=>!p.used).map(p=>p.name),m=[];return o>0&&m.push(`${z(e)} of ${s.stage4MinRefTypes} different reference types used`),i>0&&m.push(`${z(t)} of ${s.stage4MinTotalRefs} total references`),Pf(m,d)}return vf(r,"[specialized context variables](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts)")}function Af(n,e,t){e>0&&n.push(`${z(e)} ${t}`)}function Ef(n){let e=[],t=[[n.file,"#file references"],[n.selection,"#selection references"],[n.codebase,"#codebase references"],[n.workspace,"@workspace references"],[n.terminal,"@terminal references"],[n.vscode,"@vscode references"],[n.clipboard,"#clipboard references"],[n.changes,"#changes references"],[n.problemsPanel,"#problemsPanel references"],[n.outputPanel,"#outputPanel references"],[n.terminalLastCommand,"#terminalLastCommand references"],[n.terminalSelection,"#terminalSelection references"],[n.byKind?.promptFile??0,"prompt file uses"],[n.byKind?.prompt??0,"custom prompt commands"],[n.codeContextLines??0,"lines of code context"]];for(let[s,o]of t)Af(e,s,o);return e}function Df(n){return[n.file,n.selection,n.symbol,n.codebase,n.workspace,n.terminal,n.vscode,n.clipboard,n.changes,n.problemsPanel,n.outputPanel,n.terminalLastCommand,n.terminalSelection,n.byKind?.["copilot.image"]??0,n.byKind?.promptFile??0,n.byKind?.prompt??0].filter(Boolean).length}function Rf(n,e,t){let s=n.byKind["copilot.image"]||0;return s>0&&(e.push(`${z(s)} image references (vision)`),t=fe(t,3)),(n.byKind.promptFile||0)>0&&(t=fe(t,3)),t}function If(n){let e=1,t=$e.contextEngineering,s=n.contextReferences,o=s.file+s.selection+s.symbol+s.codebase+s.workspace,i=Df(s),r=Ef(s);o>=t.stage2MinTotalRefs&&(e=2),i>=t.stage3MinRefTypes&&o>=t.stage3MinTotalRefs&&(e=3),i>=t.stage4MinRefTypes&&o>=t.stage4MinTotalRefs&&(e=4),e=Rf(s,r,e);let l=[];if(e<2&&l.push("Try adding [#file or #selection](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) references to give Copilot more context"),e<3&&l.push("Explore [@workspace, #codebase, and @terminal](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) for broader context"),e<4){let d=xf(s,i,o);d&&l.push(d)}return{stage:e,evidence:r,tips:l}}function Uf(n,e,t){return n>=t.stage3MinAgentInteractions&&e>=t.stage3MinNonAutoTools}function Of(n,e,t){return n>=t.stage4MinAgentInteractions&&e>=t.stage4MinNonAutoTools}function Ff(n,e){return!!n&&n.multiFileEdits>=e.stage4MinMultiFileEdits&&n.avgFilesPerSession>=e.stage3MinAvgFilesPerSession}function Nf(n,e,t,s){if(n<e.stage3MinMultiAgentParents)return t;let o=n===1?"1 session":`${z(n)} sessions`;return s.push(`${o} with child workspaces (multi-agent orchestration)`),t=fe(t,3),n>=e.stage4MinMultiAgentParents&&(t=fe(t,4)),t}function Lf(n){let e=[];return n<2&&e.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) \u2014 it can run terminal commands, edit files, and explore your codebase autonomously"),n<3&&e.push("Use [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for multi-step tasks; let it chain tools like file search, terminal, and code edits"),n<4&&e.push("Try [multi-agent orchestration](https://code.visualstudio.com/docs/copilot/agents/overview): start child sessions from a parent session to run multiple agents in parallel on independent sub-tasks"),e}function Gf(n){let e=[],t=1,s=$e.agentic;if(n.modeUsage.agent>0&&(e.push(`${z(n.modeUsage.agent)} agent-mode interactions`),t=2),n.modeUsage.cli>0&&(e.push(`${z(n.modeUsage.cli)} CLI interactions`),t=fe(t,2)),n.toolCalls.total>0&&e.push(`${z(n.toolCalls.total)} tool calls executed`),n.modeUsage.edit>0&&e.push(`${z(n.modeUsage.edit)} edit-mode interactions`),n.editScope){let r=n.editScope.singleFileEdits+n.editScope.multiFileEdits,l=r>0?Math.round(n.editScope.multiFileEdits/r*100):0;n.editScope.multiFileEdits>0&&(e.push(`${z(n.editScope.multiFileEdits)} multi-file edit sessions (${l}%)`),t=fe(t,2)),n.editScope.avgFilesPerSession>=s.stage3MinAvgFilesPerSession&&(e.push(`Avg ${n.editScope.avgFilesPerSession.toFixed(1)} files per edit session`),t=fe(t,3))}n.agentTypes?.editsAgent&&(e.push(`${z(n.agentTypes.editsAgent)} edits agent sessions`),t=fe(t,2));let o=bc(n.toolCalls.byTool),i=n.modeUsage.agent+n.modeUsage.cli;return Uf(i,o,s)&&(t=3),Of(i,o,s)&&(t=4),Ff(n.editScope,s)&&(t=fe(t,4)),t=Nf(n.multiAgentParentSessions??0,s,t,e),{stage:t,evidence:e,tips:Lf(t)}}function jf(n,e){let t=[];return n<2&&t.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) to let Copilot use built-in tools for file operations and terminal commands"),n<3&&(e.length===0?t.push("Set up [MCP servers](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) to connect Copilot to external tools (databases, APIs, cloud services)"):t.push("Explore [GitHub integrations](https://code.visualstudio.com/docs/copilot/agents/agent-tools) and advanced tools like editFiles and run_in_terminal")),n<4&&(e.length===1?t.push("Add more [MCP servers](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) to expand Copilot's capabilities - check the VS Code MCP registry"):e.length===0?t.push("Explore the [VS Code MCP registry](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) for tools that integrate with your workflow"):t.push("You're using multiple MCP servers - keep exploring advanced tool combinations")),t}function Bf(n){let e=[],t=1,s=$e.toolUsage,o=Object.keys(n.toolCalls.byTool).length,i=bc(n.toolCalls.byTool);if(i>0){let m=o-i,p=m>0?` (+ ${z(m)} automatic)`:"";e.push(`${z(i)} intentional tools used${p}`),t=2}else o>0&&e.push(`${z(o)} tools used (all automatic \u2014 agent reads/searches)`);n.agentTypes?.workspaceAgent>0&&(e.push(`${z(n.agentTypes.workspaceAgent)} @workspace agent sessions`),t=fe(t,3));let r={github_pull_request:"GitHub Pull Request",github_repo:"GitHub Repository",run_in_terminal:"Run In Terminal",editFiles:"Edit Files",listFiles:"List Files"},l=Object.keys(r).filter(m=>(n.toolCalls.byTool[m]||0)>0);l.length>0&&(e.push(`Advanced tools: ${l.map(m=>r[m]).join(", ")}`),l.length>=s.stage3MinAdvancedTools&&(t=fe(t,3)));let d=Object.keys(n.mcpTools.byServer);return n.mcpTools.total>0&&(e.push(`${z(n.mcpTools.total)} MCP tool calls across ${d.length} server(s)`),t=fe(t,3),d.length>=s.stage4MinMcpServers&&(t=4)),{stage:t,evidence:e,tips:jf(t,d)}}function qf(n,e,t){let s=e-t;if(s===0)return"All repos customized! Keep instructions up to date and add [skill files](https://code.visualstudio.com/docs/copilot/customization/agent-skills) or [MCP server configs](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) for deeper integration";let o=`${z(s)} repo${s===1?"":"s"} still missing customization \u2014 add [instructions](https://code.visualstudio.com/docs/copilot/customization/custom-instructions), [agents.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions), or [MCP configs](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) for full coverage.`,i=(n?.workspaces||[]).filter(l=>Object.values(l.typeStatuses).every(d=>d==="\u274C")).filter(l=>!l.workspacePath.startsWith("<unresolved:")).sort((l,d)=>d.interactionCount!==l.interactionCount?d.interactionCount-l.interactionCount:d.sessionCount-l.sessionCount).slice(0,3);if(i.length===0)return o;let r=i.map(l=>`${l.workspaceName} (${z(l.interactionCount)} interaction${l.interactionCount===1?"":"s"})`).join(`
78
80
  `);return`${o}
79
81
 
80
82
  Top repos to customize first:
81
- ${r}`}function Nf(n,e,t,s){let o=1;return e>0&&(o=2),n>=s.stage3MinCustomizationRate&&e>=s.stage3MinCustomizedRepos&&(o=3),n>=s.stage4MinCustomizationRate&&e>=s.stage4MinCustomizedRepos&&(o=4),t>=s.stage3MinUniqueModels&&(o=me(o,3)),t>=s.stage4MinUniqueModels&&e>=s.stage4MinCustomizedRepos&&(o=4),o}function Lf(n,e,t){let s=[],o=e-t;return n<2&&s.push("Create a [.github/copilot-instructions.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions) or [CLAUDE.md](https://docs.anthropic.com/en/docs/claude-code/memory) file with project-specific guidelines"),n<3&&s.push("Add [custom instructions](https://code.visualstudio.com/docs/copilot/customization/custom-instructions) to more repositories to standardize your Copilot experience"),n<4&&o>0?s.push(`${$(t)} of ${$(e)} repos have customization \u2014 add [instructions and agents.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions) to the remaining ${$(o)} repo${o===1?"":"s"} for Stage 4`):n<4&&s.push("Aim for consistent customization across all projects with [instructions and agents.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions)"),s}function Gf(n,e){let t=[],s=ze.customization,o=e,i=o?.totalWorkspaces??0,r=i-(o?.workspacesWithIssues??0),l=i>0?r/i:0,d=[...new Set([...n.modelSwitching.standardModels,...n.modelSwitching.premiumModels])],m=Nf(l,r,d.length,s);i>0&&t.push(`Worked in ${i} repositor${i===1?"y":"ies"}`),d.length>=s.stage3MinUniqueModels&&t.push(`Used ${d.length} different models`),m>=4?t.push(`${$(r)} of ${$(i)} repos customized (${s.stage4MinCustomizationRate*100}%+ with ${s.stage4MinCustomizedRepos}+ repos \u2192 Stage 4)`):m>=3?t.push(`${$(r)} of ${$(i)} repos customized (${s.stage3MinCustomizationRate*100}%+ with ${s.stage3MinCustomizedRepos}+ repos \u2192 Stage 3)`):r>0&&t.push(`${$(r)} of ${$(i)} repos with custom instructions or agents.md`);let p=Lf(m,i,r);return m>=4&&p.push(Of(o,i,r)),{stage:m,evidence:t,tips:p}}function jf(n,e,t,s){return n>=s.stage4MinSessions&&e>=s.stage3MinModesUsed&&t>=s.stage3MinContextRefs}function Bf(n,e,t,s){let o=[];return n<2&&o.push("Use AI more regularly - even for quick questions"),n<3&&(e<s.stage3MinModesUsed&&o.push("Combine [ask mode with agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) in your daily workflow"),t<s.hasExplicitContextMinRefs&&o.push("Use explicit [context references](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) like #file, @workspace, and #selection")),n<4&&(t<s.stage3MinContextRefs&&o.push("Make explicit context a habit - use [#file, @workspace, and other references](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) consistently"),o.push("Make AI part of every coding task: planning, coding, testing, and reviewing")),o}function qf(n){let e=[],t=1,s=ze.workflowIntegration;if(n.sessions>=s.stage2MinSessions&&(e.push(`${$(n.sessions)} sessions in the last 30 days`),t=2),n.applyUsage&&n.applyUsage.totalCodeBlocks>0){let l=Math.round(n.applyUsage.applyRate);e.push(`${l}% code block apply rate (${$(n.applyUsage.totalApplies)}/${$(n.applyUsage.totalCodeBlocks)})`),l>=s.stage2MinApplyRatePct&&(t=me(t,2))}n.sessionDuration&&n.sessionDuration.avgDurationMs>0&&e.push(`Avg ${Math.round(n.sessionDuration.avgDurationMs/6e4)}min session duration`);let o=n.contextReferences.file+n.contextReferences.selection+n.contextReferences.symbol+n.contextReferences.codebase+n.contextReferences.workspace,i=[n.modeUsage.ask>0,n.modeUsage.agent>0,n.modeUsage.cli>0].filter(Boolean).length;return i>=s.stage3MinModesUsed&&(e.push(`Uses ${i} modes (ask/agent/cli)`),t=me(t,3)),o>=s.hasExplicitContextMinRefs&&(e.push(`${$(o)} explicit context references`),o>=s.stage3MinContextRefs&&(t=me(t,3))),jf(n.sessions,i,o,s)&&(t=4,e.push("Deep integration: regular usage with multi-mode and explicit context")),{stage:t,evidence:e,tips:Bf(t,i,o,s)}}async function Oo(n,e,t=!0){let s=await e(t),o=s.last30Days,i=_f(o),r=vf(o),l=If(o),d=Ff(o),m=Gf(o,n),p=qf(o),f=lf([i.stage,r.stage,l.stage,d.stage,m.stage,p.stage]);return{overallStage:f,overallLabel:af[f]??`Stage ${f}`,categories:[{category:"Prompt Engineering",icon:"\u{1F4AC}",stage:i.stage,evidence:i.evidence,tips:i.tips},{category:"Context Engineering",icon:"\u{1F4CE}",stage:r.stage,evidence:r.evidence,tips:r.tips},{category:"Agentic",icon:"\u{1F916}",stage:l.stage,evidence:l.evidence,tips:l.tips},{category:"Tool Usage",icon:"\u{1F527}",stage:d.stage,evidence:d.evidence,tips:d.tips},{category:"Customization",icon:"\u2699\uFE0F",stage:m.stage,evidence:m.evidence,tips:m.tips},{category:"Workflow Integration",icon:"\u{1F504}",stage:p.stage,evidence:p.evidence,tips:p.tips}],period:o,lastUpdated:s.lastUpdated.toISOString()}}var fc=new ne("fluency").description("Show your Copilot Fluency Score and improvement tips").option("-t, --tips","Show improvement tips for each category").option("--json","Output raw JSON (for machine consumption)").action(async n=>{let e=Se(n);e||console.log(S.bold.cyan(`
83
+ ${r}`}function zf(n,e,t,s){let o=1;return e>0&&(o=2),n>=s.stage3MinCustomizationRate&&e>=s.stage3MinCustomizedRepos&&(o=3),n>=s.stage4MinCustomizationRate&&e>=s.stage4MinCustomizedRepos&&(o=4),t>=s.stage3MinUniqueModels&&(o=fe(o,3)),t>=s.stage4MinUniqueModels&&e>=s.stage4MinCustomizedRepos&&(o=4),o}function $f(n,e,t){let s=[],o=e-t;return n<2&&s.push("Create a [.github/copilot-instructions.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions) or [CLAUDE.md](https://docs.anthropic.com/en/docs/claude-code/memory) file with project-specific guidelines"),n<3&&s.push("Add [custom instructions](https://code.visualstudio.com/docs/copilot/customization/custom-instructions) to more repositories to standardize your Copilot experience"),n<4&&o>0?s.push(`${z(t)} of ${z(e)} repos have customization \u2014 add [instructions and agents.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions) to the remaining ${z(o)} repo${o===1?"":"s"} for Stage 4`):n<4&&s.push("Aim for consistent customization across all projects with [instructions and agents.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions)"),s}function Wf(n,e){let t=[],s=$e.customization,o=e,i=o?.totalWorkspaces??0,r=i-(o?.workspacesWithIssues??0),l=i>0?r/i:0,d=[...new Set([...n.modelSwitching.standardModels,...n.modelSwitching.premiumModels])],m=zf(l,r,d.length,s);i>0&&t.push(`Worked in ${i} repositor${i===1?"y":"ies"}`),d.length>=s.stage3MinUniqueModels&&t.push(`Used ${d.length} different models`),m>=4?t.push(`${z(r)} of ${z(i)} repos customized (${s.stage4MinCustomizationRate*100}%+ with ${s.stage4MinCustomizedRepos}+ repos \u2192 Stage 4)`):m>=3?t.push(`${z(r)} of ${z(i)} repos customized (${s.stage3MinCustomizationRate*100}%+ with ${s.stage3MinCustomizedRepos}+ repos \u2192 Stage 3)`):r>0&&t.push(`${z(r)} of ${z(i)} repos with custom instructions or agents.md`);let p=$f(m,i,r);return m>=4&&p.push(qf(o,i,r)),{stage:m,evidence:t,tips:p}}function Hf(n,e,t,s){return n>=s.stage4MinSessions&&e>=s.stage3MinModesUsed&&t>=s.stage3MinContextRefs}function Vf(n,e,t,s){let o=[];return n<2&&o.push("Use AI more regularly - even for quick questions"),n<3&&(e<s.stage3MinModesUsed&&o.push("Combine [ask mode with agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) in your daily workflow"),t<s.hasExplicitContextMinRefs&&o.push("Use explicit [context references](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) like #file, @workspace, and #selection")),n<4&&(t<s.stage3MinContextRefs&&o.push("Make explicit context a habit - use [#file, @workspace, and other references](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) consistently"),o.push("Make AI part of every coding task: planning, coding, testing, and reviewing")),o}function Jf(n){let e=[],t=1,s=$e.workflowIntegration;if(n.sessions>=s.stage2MinSessions&&(e.push(`${z(n.sessions)} sessions in the last 30 days`),t=2),n.applyUsage&&n.applyUsage.totalCodeBlocks>0){let l=Math.round(n.applyUsage.applyRate);e.push(`${l}% code block apply rate (${z(n.applyUsage.totalApplies)}/${z(n.applyUsage.totalCodeBlocks)})`),l>=s.stage2MinApplyRatePct&&(t=fe(t,2))}n.sessionDuration&&n.sessionDuration.avgDurationMs>0&&e.push(`Avg ${Math.round(n.sessionDuration.avgDurationMs/6e4)}min session duration`);let o=n.contextReferences.file+n.contextReferences.selection+n.contextReferences.symbol+n.contextReferences.codebase+n.contextReferences.workspace,i=[n.modeUsage.ask>0,n.modeUsage.agent>0,n.modeUsage.cli>0].filter(Boolean).length;return i>=s.stage3MinModesUsed&&(e.push(`Uses ${i} modes (ask/agent/cli)`),t=fe(t,3)),o>=s.hasExplicitContextMinRefs&&(e.push(`${z(o)} explicit context references`),o>=s.stage3MinContextRefs&&(t=fe(t,3))),Hf(n.sessions,i,o,s)&&(t=4,e.push("Deep integration: regular usage with multi-mode and explicit context")),{stage:t,evidence:e,tips:Vf(t,i,o,s)}}async function jo(n,e,t=!0){let s=await e(t),o=s.last30Days,i=Tf(o),r=If(o),l=Gf(o),d=Bf(o),m=Wf(o,n),p=Jf(o),f=gf([i.stage,r.stage,l.stage,d.stage,m.stage,p.stage]);return{overallStage:f,overallLabel:pf[f]??`Stage ${f}`,categories:[{category:"Prompt Engineering",icon:"\u{1F4AC}",stage:i.stage,evidence:i.evidence,tips:i.tips},{category:"Context Engineering",icon:"\u{1F4CE}",stage:r.stage,evidence:r.evidence,tips:r.tips},{category:"Agentic",icon:"\u{1F916}",stage:l.stage,evidence:l.evidence,tips:l.tips},{category:"Tool Usage",icon:"\u{1F527}",stage:d.stage,evidence:d.evidence,tips:d.tips},{category:"Customization",icon:"\u2699\uFE0F",stage:m.stage,evidence:m.evidence,tips:m.tips},{category:"Workflow Integration",icon:"\u{1F504}",stage:p.stage,evidence:p.evidence,tips:p.tips}],period:o,lastUpdated:s.lastUpdated.toISOString()}}var kc=new oe("fluency").description("Show your Copilot Fluency Score and improvement tips").option("-t, --tips","Show improvement tips for each category").option("--json","Output raw JSON (for machine consumption)").action(async n=>{let e=Se(n);e||console.log(S.bold.cyan(`
82
84
  \u{1F3AF} Copilot Token Tracker - Fluency Score
83
- `));let t=new Re(e);t.show("Scanning for session files...");let s=await fe();if(t.done(),s.length===0){e?process.stdout.write("{}"):console.log(S.yellow("\u26A0\uFE0F No session files found."));return}t.show("Analyzing usage patterns...");let o=await ls(s);t.done();let i=await xo(s),r=await Oo(i,async()=>o,!1);if(e){process.stdout.write(JSON.stringify(Fo(r)));return}let l={1:S.red,2:S.yellow,3:S.blue,4:S.green},d=k=>{let b=Number.isFinite(k)&&k>=1&&k<=4?Math.floor(k):0,M="\u2588".repeat(b),O="\u2591".repeat(4-b);return M+O};console.log(S.bold("Overall Fluency Score")),console.log(S.dim("\u2500".repeat(55)));let m=l[r.overallStage]||S.white;console.log(` ${m(d(r.overallStage))} ${S.bold(r.overallLabel)}`),console.log(),console.log(S.bold("Category Breakdown")),console.log(S.dim("\u2500".repeat(55)));for(let k of r.categories){let b=l[k.stage]||S.white;if(console.log(` ${k.icon} ${S.bold(k.category)}`),console.log(` ${b(d(k.stage))} Stage ${k.stage}/4`),k.evidence.length>0){let M=k.evidence.slice(0,3);for(let O of M)console.log(S.dim(` \u2713 ${O}`));k.evidence.length>3&&console.log(S.dim(` ... and ${k.evidence.length-3} more`))}if(k.tips.length>0&&k.stage<4){console.log(S.yellow(" \u{1F4A1} Tips:"));for(let M of k.tips.slice(0,2)){let O=M.replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/\[▶ [^\]]+\]\([^)]+\)/g,"").trim();console.log(S.yellow(` \u2192 ${O}`))}}console.log()}let p=r.period;console.log(S.bold("\u{1F4CA} Analysis Period (Last 30 Days)")),console.log(S.dim("\u2500".repeat(55))),console.log(` Sessions analyzed: ${S.bold(z(p.sessions))}`);let f=p.modeUsage.ask+p.modeUsage.edit+p.modeUsage.agent+p.modeUsage.cli;console.log(` Total interactions: ${S.bold(z(f))}`),p.modeUsage.ask>0&&console.log(` Ask mode: ${z(p.modeUsage.ask)}`),p.modeUsage.edit>0&&console.log(` Edit mode: ${z(p.modeUsage.edit)}`),p.modeUsage.agent>0&&console.log(` Agent mode: ${z(p.modeUsage.agent)}`),p.modeUsage.cli>0&&console.log(` CLI: ${z(p.modeUsage.cli)}`),p.toolCalls.total>0&&console.log(` Tool calls: ${z(p.toolCalls.total)}`),p.mcpTools.total>0&&console.log(` MCP tool calls: ${z(p.mcpTools.total)}`);let _=p.contextReferences.file+p.contextReferences.selection+p.contextReferences.codebase+p.contextReferences.workspace+p.contextReferences.terminal+p.contextReferences.vscode;_>0&&console.log(` Context references: ${z(_)}`),console.log(),console.log(S.dim(`Last updated: ${r.lastUpdated}
84
- `))});function $f(n,e){let t=Rn(n),s=t.includes("opencode.db#")?t.split("#")[0]:t,o=null,i=0;for(let r of e){let l=Rn(r.path);s.startsWith(l)&&l.length>i&&(o={path:r.path,source:r.source},i=l.length)}return o}function yr(n,e=55){if(!n)return"";if(n.length<=e)return n;let t=n.replace(/\\/g,"/").split("/"),s=n;for(let o=t.length-1;o>1&&(s="\u2026/"+t.slice(-o).join("/"),!(s.length<=e));o--);return s}function hc(n,e,t){if(!n||!e||!t)return;if(n.length!==t.length)throw new Error(`printTable: headers.length (${n.length}) !== colWidths.length (${t.length})`);let s=S.dim("\u2500".repeat(t.reduce((i,r)=>i+r+3,-1))),o=n.map((i,r)=>S.bold(i.padEnd(t[r]))).join(" \u2502 ");console.log(" "+o),console.log(" "+s);for(let i of e){let r=i.map((l,d)=>{let m=l.padEnd(t[d]);return d===0?S.dim(m):m}).join(S.dim(" \u2502 "));console.log(" "+r)}console.log(" "+s)}var yc=new ne("diagnostics").description("Show session file search locations and per-location usage stats").action(async()=>{console.log(S.bold.cyan(`
85
+ `));let t=new Re(e);t.show("Scanning for session files...");let s=await ye();if(t.done(),s.length===0){e?process.stdout.write("{}"):console.log(S.yellow("\u26A0\uFE0F No session files found."));return}t.show("Analyzing usage patterns...");let o=await us(s);t.done();let i=await Ro(s),r=await jo(i,async()=>o,!1);if(e){process.stdout.write(JSON.stringify(Go(r)));return}let l={1:S.red,2:S.yellow,3:S.blue,4:S.green},d=k=>{let b=Number.isFinite(k)&&k>=1&&k<=4?Math.floor(k):0,M="\u2588".repeat(b),F="\u2591".repeat(4-b);return M+F};console.log(S.bold("Overall Fluency Score")),console.log(S.dim("\u2500".repeat(55)));let m=l[r.overallStage]||S.white;console.log(` ${m(d(r.overallStage))} ${S.bold(r.overallLabel)}`),console.log(),console.log(S.bold("Category Breakdown")),console.log(S.dim("\u2500".repeat(55)));for(let k of r.categories){let b=l[k.stage]||S.white;if(console.log(` ${k.icon} ${S.bold(k.category)}`),console.log(` ${b(d(k.stage))} Stage ${k.stage}/4`),k.evidence.length>0){let M=k.evidence.slice(0,3);for(let F of M)console.log(S.dim(` \u2713 ${F}`));k.evidence.length>3&&console.log(S.dim(` ... and ${k.evidence.length-3} more`))}if(k.tips.length>0&&k.stage<4){console.log(S.yellow(" \u{1F4A1} Tips:"));for(let M of k.tips.slice(0,2)){let F=M.replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/\[▶ [^\]]+\]\([^)]+\)/g,"").trim();console.log(S.yellow(` \u2192 ${F}`))}}console.log()}let p=r.period;console.log(S.bold("\u{1F4CA} Analysis Period (Last 30 Days)")),console.log(S.dim("\u2500".repeat(55))),console.log(` Sessions analyzed: ${S.bold($(p.sessions))}`);let f=p.modeUsage.ask+p.modeUsage.edit+p.modeUsage.agent+p.modeUsage.cli;console.log(` Total interactions: ${S.bold($(f))}`),p.modeUsage.ask>0&&console.log(` Ask mode: ${$(p.modeUsage.ask)}`),p.modeUsage.edit>0&&console.log(` Edit mode: ${$(p.modeUsage.edit)}`),p.modeUsage.agent>0&&console.log(` Agent mode: ${$(p.modeUsage.agent)}`),p.modeUsage.cli>0&&console.log(` CLI: ${$(p.modeUsage.cli)}`),p.toolCalls.total>0&&console.log(` Tool calls: ${$(p.toolCalls.total)}`),p.mcpTools.total>0&&console.log(` MCP tool calls: ${$(p.mcpTools.total)}`);let _=p.contextReferences.file+p.contextReferences.selection+p.contextReferences.codebase+p.contextReferences.workspace+p.contextReferences.terminal+p.contextReferences.vscode;_>0&&console.log(` Context references: ${$(_)}`),console.log(),console.log(S.dim(`Last updated: ${r.lastUpdated}
86
+ `))});function Kf(n,e){let t=On(n),s=t.includes("opencode.db#")?t.split("#")[0]:t,o=null,i=0;for(let r of e){let l=On(r.path);s.startsWith(l)&&l.length>i&&(o={path:r.path,source:r.source},i=l.length)}return o}function kr(n,e=55){if(!n)return"";if(n.length<=e)return n;let t=n.replace(/\\/g,"/").split("/"),s=n;for(let o=t.length-1;o>1&&(s="\u2026/"+t.slice(-o).join("/"),!(s.length<=e));o--);return s}function Sc(n,e,t){if(!n||!e||!t)return;if(n.length!==t.length)throw new Error(`printTable: headers.length (${n.length}) !== colWidths.length (${t.length})`);let s=S.dim("\u2500".repeat(t.reduce((i,r)=>i+r+3,-1))),o=n.map((i,r)=>S.bold(i.padEnd(t[r]))).join(" \u2502 ");console.log(" "+o),console.log(" "+s);for(let i of e){let r=i.map((l,d)=>{let m=l.padEnd(t[d]);return d===0?S.dim(m):m}).join(S.dim(" \u2502 "));console.log(" "+r)}console.log(" "+s)}var wc=new oe("diagnostics").description("Show session file search locations and per-location usage stats").action(async()=>{console.log(S.bold.cyan(`
85
87
  \u{1F52C} Copilot Token Tracker - Diagnostics
86
- `));let n=Ao(),e=n.filter(v=>v.exists),t=n.filter(v=>!v.exists);console.log(S.bold(`\u{1F4C2} Search Locations (${e.length} found / ${n.length} total)`)),console.log(S.dim("\u2500".repeat(65)));let s=["Source","Exists","Path"],o=[18,6,55],i=n.map(v=>[v.source,v.exists?S.green("yes"):S.dim("no"),yr(v.path,55)]);if(hc(s,i,o),console.log(),e.length===0){console.log(S.yellow("\u26A0\uFE0F No search paths exist on this machine.")),console.log(S.dim("Have you used GitHub Copilot Chat in VS Code yet?"));return}let r=new Re;r.show("Scanning for session files...");let l=await fe();if(r.done(),l.length===0){console.log(S.yellow("\u26A0\uFE0F No session files found in any search path."));return}let d=new Map;for(let v of e)d.set(v.path,{label:yr(v.path,45),source:v.source,files:0,sessions:0,interactions:0,tokens:0});let m=0,p=0,f=0,_=0;for(let v=0;v<l.length;v++){((v+1)%25===0||v===l.length-1)&&r.update(`Processing: ${v+1}/${l.length} files...`);let I=$f(l[v],n),Z=I?I.path:"__unknown__";d.has(Z)||d.set(Z,{label:I?yr(I.path,45):"(unknown)",source:I?I.source:"unknown",files:0,sessions:0,interactions:0,tokens:0});let B=d.get(Z);B.files++,m++;let P=await as(l[v]);P&&P.tokens>0&&(B.sessions++,B.interactions+=P.interactions,B.tokens+=$e(P),p++,f+=P.interactions,_+=$e(P))}r.done(),console.log(S.bold("\u{1F4CA} Stats per Search Location")),console.log(S.dim("\u2500".repeat(65)));let k=["Source","Files","Sessions","Turns","Tokens"],b=[18,6,9,8,14],M=[],O=[...d.values()].filter(v=>v.files>0).sort((v,I)=>I.tokens-v.tokens||v.source.localeCompare(I.source));for(let v of O)M.push([v.source,z(v.files),z(v.sessions),z(v.interactions),le(v.tokens)]);M.length===0?console.log(S.dim(" No session data found in any location.")):hc(k,M,b),console.log(),console.log(S.bold("\u{1F4C8} Totals (all time)")),console.log(S.dim("\u2500".repeat(65))),console.log(` Total files found: ${S.bold(z(m))}`),console.log(` Files with data: ${S.bold(z(p))}`),console.log(` Total chat turns: ${S.bold(z(f))}`),console.log(` Total tokens: ${S.bold.yellow(le(_))}`),t.length>0&&(console.log(),console.log(S.dim(`\u2139\uFE0F ${t.length} search path(s) not present on this machine \u2014 this is normal if you don't use all VS Code variants.`))),console.log()});var _c=new ne("chart").description("Output daily token usage data for the chart webview").option("--json","Output raw JSON (for machine consumption)").option("-v, --verbose","Show debug log discovery details").action(async n=>{let e=await fe();if(e.length===0){Se(n)?process.stdout.write(JSON.stringify(Do())):console.log(S.yellow("\u26A0\uFE0F No session files found."));return}let t=n.verbose===!0,{labels:s,days:o,allDaysMap:i}=await Eo(e,t),r=on(s,o,i);if(Se(n)){process.stdout.write(JSON.stringify(r));return}console.log(S.bold.cyan(`
88
+ `));let n=Io(),e=n.filter(x=>x.exists),t=n.filter(x=>!x.exists);console.log(S.bold(`\u{1F4C2} Search Locations (${e.length} found / ${n.length} total)`)),console.log(S.dim("\u2500".repeat(65)));let s=["Source","Exists","Path"],o=[18,6,55],i=n.map(x=>[x.source,x.exists?S.green("yes"):S.dim("no"),kr(x.path,55)]);if(Sc(s,i,o),console.log(),e.length===0){console.log(S.yellow("\u26A0\uFE0F No search paths exist on this machine.")),console.log(S.dim("Have you used GitHub Copilot Chat in VS Code yet?"));return}let r=new Re;r.show("Scanning for session files...");let l=await ye();if(r.done(),l.length===0){console.log(S.yellow("\u26A0\uFE0F No session files found in any search path."));return}let d=new Map;for(let x of e)d.set(x.path,{label:kr(x.path,45),source:x.source,files:0,sessions:0,interactions:0,tokens:0});let m=0,p=0,f=0,_=0;for(let x=0;x<l.length;x++){((x+1)%25===0||x===l.length-1)&&r.update(`Processing: ${x+1}/${l.length} files...`);let I=Kf(l[x],n),ee=I?I.path:"__unknown__";d.has(ee)||d.set(ee,{label:I?kr(I.path,45):"(unknown)",source:I?I.source:"unknown",files:0,sessions:0,interactions:0,tokens:0});let B=d.get(ee);B.files++,m++;let P=await cs(l[x]);P&&P.tokens>0&&(B.sessions++,B.interactions+=P.interactions,B.tokens+=ze(P),p++,f+=P.interactions,_+=ze(P))}r.done(),console.log(S.bold("\u{1F4CA} Stats per Search Location")),console.log(S.dim("\u2500".repeat(65)));let k=["Source","Files","Sessions","Turns","Tokens"],b=[18,6,9,8,14],M=[],F=[...d.values()].filter(x=>x.files>0).sort((x,I)=>I.tokens-x.tokens||x.source.localeCompare(I.source));for(let x of F)M.push([x.source,$(x.files),$(x.sessions),$(x.interactions),ue(x.tokens)]);M.length===0?console.log(S.dim(" No session data found in any location.")):Sc(k,M,b),console.log(),console.log(S.bold("\u{1F4C8} Totals (all time)")),console.log(S.dim("\u2500".repeat(65))),console.log(` Total files found: ${S.bold($(m))}`),console.log(` Files with data: ${S.bold($(p))}`),console.log(` Total chat turns: ${S.bold($(f))}`),console.log(` Total tokens: ${S.bold.yellow(ue(_))}`),t.length>0&&(console.log(),console.log(S.dim(`\u2139\uFE0F ${t.length} search path(s) not present on this machine \u2014 this is normal if you don't use all VS Code variants.`))),console.log()});var Tc=new oe("chart").description("Output daily token usage data for the chart webview").option("--json","Output raw JSON (for machine consumption)").option("-v, --verbose","Show debug log discovery details").action(async n=>{let e=await ye();if(e.length===0){Se(n)?process.stdout.write(JSON.stringify(Oo())):console.log(S.yellow("\u26A0\uFE0F No session files found."));return}let t=n.verbose===!0,{labels:s,days:o,allDaysMap:i}=await Uo(e,t),r=ln(s,o,i);if(Se(n)){process.stdout.write(JSON.stringify(r));return}console.log(S.bold.cyan(`
87
89
  \u{1F4CA} Token Usage Summary
88
- `));let l=r.periods||{},d=[{key:"day",label:"Daily (last 30 days)"},{key:"week",label:"Weekly (last 6 weeks)"},{key:"month",label:"Monthly (last 12 months)"}];for(let{key:m,label:p}of d){let f=l[m];if(!f)continue;console.log(S.bold(p)),console.log(S.dim("\u2500".repeat(60)));let _=(f.labels||[]).map((I,Z)=>{let B=f.tokensData?.[Z]??0,P=f.costData?.[Z]??0;return{Period:I,Tokens:z(B),Cost:`$${P.toFixed(2)}`}});_.length>0&&console.table(_);let k=f.totalTokens??0,b=f.totalCost??0,M=f.periodCount??0,O=M>0?Math.round(k/M):0,v=M>0?b/M:0;console.log(S.bold("Totals:")),console.log(` Total Tokens: ${z(k)}`),console.log(` Total Cost: $${b.toFixed(2)}`),console.log(` Avg per Period: ${z(O)} tokens, $${v.toFixed(2)} cost`),console.log()}});var Cc=new ne("usage-analysis").description("Output usage analysis stats for the usage analysis webview").option("--json","Output raw JSON (for machine consumption)").action(async n=>{if(!Se(n)){process.stderr.write(`Use --json flag for usage analysis data output
89
- `);return}let e=await fe(),t=new Date;if(e.length===0){process.stdout.write(JSON.stringify(Ro(t)));return}let s=await ls(e),o=Uo(s,t);process.stdout.write(JSON.stringify(o))});var bc=new ne("all").description("Output all view data in a single JSON response (for Visual Studio extension)").option("--json","Output raw JSON (required)").action(async n=>{if(!Se(n)){process.stderr.write(`Use --json flag for all data output
90
- `);return}let e=new Date,t=await fe();if(t.length===0){let M={details:lc(e),chart:Do(e),usage:Ro(e),fluency:cc()};process.stdout.write(JSON.stringify(M));return}let[s,{labels:o,days:i,allDaysMap:r},l]=await Promise.all([bt(t),Eo(t),ls(t)]),d=on(o,i,r),m=Io(s),p=Uo(l,e),f=await xo(t),_=await Oo(f,async()=>l,!1),k=Fo(_),b={details:m,chart:d,usage:p,fluency:k};process.stdout.write(JSON.stringify(b))});var kt=A(require("fs")),br=A(require("path")),Sc=A(require("os"));var wc=br.join(Sc.homedir(),".copilot-token-tracker"),Cr=br.join(wc,"omp-segment-cache.json"),_r=5;function zf(n){try{if(!kt.existsSync(Cr))return null;let e=JSON.parse(kt.readFileSync(Cr,"utf-8"));if(typeof e.formatted!="string"||typeof e.updatedAt!="string"||typeof e.todayTokens!="number"||typeof e.last30DaysTokens!="number")return null;let t=Date.parse(e.updatedAt);if(!Number.isFinite(t))return null;let s=Date.now()-t;return s<0||s>n*6e4?null:e}catch{return null}}function kc(n){try{kt.mkdirSync(wc,{recursive:!0}),kt.writeFileSync(Cr,JSON.stringify(n),"utf-8")}catch{}}var Tc=new ne("segment").description("Output a compact token usage string for use in oh-my-posh prompt segments").option("--ttl <minutes>",`Segment cache TTL in minutes (default: ${_r})`,`${_r}`).option("--refresh","Force refresh \u2014 bypass the segment output cache").option("--hide-zero","Output nothing when both today and 30-day token counts are zero").action(async n=>{let e=Number(n.ttl),t=Number.isFinite(e)&&e>=0?e:_r;if(!n.refresh){let l=zf(t);if(l){if(n.hideZero&&l.todayTokens===0&&l.last30DaysTokens===0)return;process.stdout.write(l.formatted);return}}let s=await fe(),o=0,i=0;if(s.length>0){let l=await bt(s);o=l.today.tokens,i=l.last30Days.tokens}if(n.hideZero&&o===0&&i===0){kc({updatedAt:new Date().toISOString(),formatted:"",todayTokens:o,last30DaysTokens:i});return}let r=`${le(o)} today \xB7 ${le(i)} 30d`;kc({updatedAt:new Date().toISOString(),formatted:r,todayTokens:o,last30DaysTokens:i}),process.stdout.write(r)});var Wf=Mc(),Me=new ne;Me.name("copilot-token-tracker").description("Analyze GitHub Copilot token usage from local session files").version(Wf.version).option("--no-cache","Bypass the session file cache and re-parse everything");Me.hook("preAction",()=>{Me.opts().cache===!1?lr():cr()});Me.hook("postAction",()=>{ur()});Me.addCommand(ac);Me.addCommand(uc);Me.addCommand(dc);Me.addCommand(fc);Me.addCommand(yc);Me.addCommand(_c);Me.addCommand(Cc);Me.addCommand(bc);Me.addCommand(Tc);Me.parse();
90
+ `));let l=r.periods||{},d=[{key:"day",label:"Daily (last 30 days)"},{key:"week",label:"Weekly (last 6 weeks)"},{key:"month",label:"Monthly (last 12 months)"}];for(let{key:m,label:p}of d){let f=l[m];if(!f)continue;console.log(S.bold(p)),console.log(S.dim("\u2500".repeat(60)));let _=(f.labels||[]).map((I,ee)=>{let B=f.tokensData?.[ee]??0,P=f.costData?.[ee]??0;return{Period:I,Tokens:$(B),Cost:`$${P.toFixed(2)}`}});_.length>0&&console.table(_);let k=f.totalTokens??0,b=f.totalCost??0,M=f.periodCount??0,F=M>0?Math.round(k/M):0,x=M>0?b/M:0;console.log(S.bold("Totals:")),console.log(` Total Tokens: ${$(k)}`),console.log(` Total Cost: $${b.toFixed(2)}`),console.log(` Avg per Period: ${$(F)} tokens, $${x.toFixed(2)} cost`),console.log()}});var Mc=new oe("usage-analysis").description("Output usage analysis stats for the usage analysis webview").option("--json","Output raw JSON (for machine consumption)").action(async n=>{if(!Se(n)){process.stderr.write(`Use --json flag for usage analysis data output
91
+ `);return}let e=await ye(),t=new Date;if(e.length===0){process.stdout.write(JSON.stringify(Fo(t)));return}let s=await us(e),o=Lo(s,t);process.stdout.write(JSON.stringify(o))});var Pc=new oe("all").description("Output all view data in a single JSON response (for Visual Studio extension)").option("--json","Output raw JSON (required)").action(async n=>{if(!Se(n)){process.stderr.write(`Use --json flag for all data output
92
+ `);return}let e=new Date,t=await ye();if(t.length===0){let M={details:gc(e),chart:Oo(e),usage:Fo(e),fluency:fc()};process.stdout.write(JSON.stringify(M));return}let[s,{labels:o,days:i,allDaysMap:r},l]=await Promise.all([bt(t),Uo(t),us(t)]),d=ln(o,i,r),m=No(s),p=Lo(l,e),f=await Ro(t),_=await jo(f,async()=>l,!1),k=Go(_),b={details:m,chart:d,usage:p,fluency:k};process.stdout.write(JSON.stringify(b))});var kt=v(require("fs")),Tr=v(require("path")),xc=v(require("os"));var Ac=Tr.join(xc.homedir(),".copilot-token-tracker"),wr=Tr.join(Ac,"omp-segment-cache.json"),Sr=5;function Qf(n){try{if(!kt.existsSync(wr))return null;let e=JSON.parse(kt.readFileSync(wr,"utf-8"));if(typeof e.formatted!="string"||typeof e.updatedAt!="string"||typeof e.todayTokens!="number"||typeof e.last30DaysTokens!="number")return null;let t=Date.parse(e.updatedAt);if(!Number.isFinite(t))return null;let s=Date.now()-t;return s<0||s>n*6e4?null:e}catch{return null}}function vc(n){try{kt.mkdirSync(Ac,{recursive:!0}),kt.writeFileSync(wr,JSON.stringify(n),"utf-8")}catch{}}var Ec=new oe("segment").description("Output a compact token usage string for use in oh-my-posh prompt segments").option("--ttl <minutes>",`Segment cache TTL in minutes (default: ${Sr})`,`${Sr}`).option("--refresh","Force refresh \u2014 bypass the segment output cache").option("--hide-zero","Output nothing when both today and 30-day token counts are zero").action(async n=>{let e=Number(n.ttl),t=Number.isFinite(e)&&e>=0?e:Sr;if(!n.refresh){let l=Qf(t);if(l){if(n.hideZero&&l.todayTokens===0&&l.last30DaysTokens===0)return;process.stdout.write(l.formatted);return}}let s=await ye(),o=0,i=0;if(s.length>0){let l=await bt(s);o=l.today.tokens,i=l.last30Days.tokens}if(n.hideZero&&o===0&&i===0){vc({updatedAt:new Date().toISOString(),formatted:"",todayTokens:o,last30DaysTokens:i});return}let r=`${ue(o)} today \xB7 ${ue(i)} 30d`;vc({updatedAt:new Date().toISOString(),formatted:r,todayTokens:o,last30DaysTokens:i}),process.stdout.write(r)});var Xf=Dc(),Pe=new oe;Pe.name("copilot-token-tracker").description("Analyze GitHub Copilot token usage from local session files").version(Xf.version).option("--no-cache","Bypass the session file cache and re-parse everything");Pe.hook("preAction",()=>{Pe.opts().cache===!1?mr():pr()});Pe.hook("postAction",()=>{gr()});Pe.addCommand(pc);Pe.addCommand(hc);Pe.addCommand(yc);Pe.addCommand(kc);Pe.addCommand(wc);Pe.addCommand(Tc);Pe.addCommand(Mc);Pe.addCommand(Pc);Pe.addCommand(Ec);Pe.parse();