@rajbos/ai-engineering-fluency 0.2.2 → 0.2.4

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 +58 -58
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -1,81 +1,81 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var Tc=Object.create;var Sr=Object.defineProperty;var Mc=Object.getOwnPropertyDescriptor;var xc=Object.getOwnPropertyNames;var Ac=Object.getPrototypeOf,Dc=Object.prototype.hasOwnProperty;var se=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports);var Ec=(i,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of xc(e))!Dc.call(i,n)&&n!==t&&Sr(i,n,{get:()=>e[n],enumerable:!(s=Mc(e,n))||s.enumerable});return i};var O=(i,e,t)=>(t=i!=null?Tc(Ac(i)):{},Ec(e||!i||!i.__esModule?Sr(t,"default",{value:i,enumerable:!0}):t,i));var us=se(ko=>{var nn=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}},So=class extends nn{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};ko.CommanderError=nn;ko.InvalidArgumentError=So});var on=se(Po=>{var{InvalidArgumentError:Ic}=us(),vo=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 Ic(`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 Rc(i){let e=i.name()+(i.variadic===!0?"...":"");return i.required?"<"+e+">":"["+e+"]"}Po.Argument=vo;Po.humanReadableArgName=Rc});var xo=se(Mo=>{var{humanReadableArgName:Oc}=on(),To=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(n=>!n._hidden),s=e._getHelpCommand();return s&&!s._hidden&&t.push(s),this.sortSubcommands&&t.sort((n,o)=>n.name().localeCompare(o.name())),t}compareOptions(e,t){let s=n=>n.short?n.short.replace(/^-/,""):n.long.replace(/^--/,"");return s(e).localeCompare(s(t))}visibleOptions(e){let t=e.options.filter(n=>!n.hidden),s=e._getHelpOption();if(s&&!s.hidden){let n=s.short&&e._findOption(s.short),o=s.long&&e._findOption(s.long);!n&&!o?t.push(s):s.long&&!o?t.push(e.createOption(s.long,s.description)):s.short&&!n&&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 n=s.options.filter(o=>!o.hidden);t.push(...n)}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=>Oc(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,n)=>Math.max(s,this.displayWidth(t.styleSubcommandTerm(t.subcommandTerm(n)))),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((s,n)=>Math.max(s,this.displayWidth(t.styleOptionTerm(t.optionTerm(n)))),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((s,n)=>Math.max(s,this.displayWidth(t.styleOptionTerm(t.optionTerm(n)))),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((s,n)=>Math.max(s,this.displayWidth(t.styleArgumentTerm(t.argumentTerm(n)))),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let s="";for(let n=e.parent;n;n=n.parent)s=n.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 n=new Map;return e.forEach(o=>{let r=s(o);n.has(r)||n.set(r,[])}),t.forEach(o=>{let r=s(o);n.has(r)||n.set(r,[]),n.get(r).push(o)}),n}formatHelp(e,t){let s=t.padWidth(e,t),n=t.helpWidth??80;function o(h,f){return t.formatItem(h,s,f,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),n),""]));let u=t.visibleArguments(e).map(h=>o(t.styleArgumentTerm(t.argumentTerm(h)),t.styleArgumentDescription(t.argumentDescription(h))));if(r=r.concat(this.formatItemList("Arguments:",u,t)),this.groupItems(e.options,t.visibleOptions(e),h=>h.helpGroupHeading??"Options:").forEach((h,f)=>{let y=h.map(_=>o(t.styleOptionTerm(t.optionTerm(_)),t.styleOptionDescription(t.optionDescription(_))));r=r.concat(this.formatItemList(f,y,t))}),t.showGlobalOptions){let h=t.visibleGlobalOptions(e).map(f=>o(t.styleOptionTerm(t.optionTerm(f)),t.styleOptionDescription(t.optionDescription(f))));r=r.concat(this.formatItemList("Global Options:",h,t))}return this.groupItems(e.commands,t.visibleCommands(e),h=>h.helpGroup()||"Commands:").forEach((h,f)=>{let y=h.map(_=>o(t.styleSubcommandTerm(t.subcommandTerm(_)),t.styleSubcommandDescription(t.subcommandDescription(_))));r=r.concat(this.formatItemList(f,y,t))}),r.join(`
3
- `)}displayWidth(e){return kr(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,n){let r=" ".repeat(2);if(!s)return r+e;let l=e.padEnd(t+e.length-n.displayWidth(e)),u=2,p=(this.helpWidth??80)-t-u-2,h;return p<this.minWidthToWrap||n.preformatted(s)?h=s:h=n.boxWrap(s,p).replace(/\n/g,`
2
+ "use strict";var Kc=Object.create;var Vr=Object.defineProperty;var Qc=Object.getOwnPropertyDescriptor;var Yc=Object.getOwnPropertyNames;var Xc=Object.getPrototypeOf,Zc=Object.prototype.hasOwnProperty;var se=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports);var eu=(o,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Yc(e))!Zc.call(o,n)&&n!==t&&Vr(o,n,{get:()=>e[n],enumerable:!(s=Qc(e,n))||s.enumerable});return o};var U=(o,e,t)=>(t=o!=null?Kc(Xc(o)):{},eu(e||!o||!o.__esModule?Vr(t,"default",{value:o,enumerable:!0}):t,o));var gs=se(Go=>{var hn=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}},No=class extends hn{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Go.CommanderError=hn;Go.InvalidArgumentError=No});var fn=se(jo=>{var{InvalidArgumentError:tu}=gs(),Lo=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 tu(`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 su(o){let e=o.name()+(o.variadic===!0?"...":"");return o.required?"<"+e+">":"["+e+"]"}jo.Argument=Lo;jo.humanReadableArgName=su});var zo=se($o=>{var{humanReadableArgName:nu}=fn(),qo=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(n=>!n._hidden),s=e._getHelpCommand();return s&&!s._hidden&&t.push(s),this.sortSubcommands&&t.sort((n,i)=>n.name().localeCompare(i.name())),t}compareOptions(e,t){let s=n=>n.short?n.short.replace(/^-/,""):n.long.replace(/^--/,"");return s(e).localeCompare(s(t))}visibleOptions(e){let t=e.options.filter(n=>!n.hidden),s=e._getHelpOption();if(s&&!s.hidden){let n=s.short&&e._findOption(s.short),i=s.long&&e._findOption(s.long);!n&&!i?t.push(s):s.long&&!i?t.push(e.createOption(s.long,s.description)):s.short&&!n&&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 n=s.options.filter(i=>!i.hidden);t.push(...n)}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=>nu(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,n)=>Math.max(s,this.displayWidth(t.styleSubcommandTerm(t.subcommandTerm(n)))),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((s,n)=>Math.max(s,this.displayWidth(t.styleOptionTerm(t.optionTerm(n)))),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((s,n)=>Math.max(s,this.displayWidth(t.styleOptionTerm(t.optionTerm(n)))),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((s,n)=>Math.max(s,this.displayWidth(t.styleArgumentTerm(t.argumentTerm(n)))),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let s="";for(let n=e.parent;n;n=n.parent)s=n.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 n=new Map;return e.forEach(i=>{let r=s(i);n.has(r)||n.set(r,[])}),t.forEach(i=>{let r=s(i);n.has(r)||n.set(r,[]),n.get(r).push(i)}),n}formatHelp(e,t){let s=t.padWidth(e,t),n=t.helpWidth??80;function i(h,g){return t.formatItem(h,s,g,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),n),""]));let u=t.visibleArguments(e).map(h=>i(t.styleArgumentTerm(t.argumentTerm(h)),t.styleArgumentDescription(t.argumentDescription(h))));if(r=r.concat(this.formatItemList("Arguments:",u,t)),this.groupItems(e.options,t.visibleOptions(e),h=>h.helpGroupHeading??"Options:").forEach((h,g)=>{let _=h.map(y=>i(t.styleOptionTerm(t.optionTerm(y)),t.styleOptionDescription(t.optionDescription(y))));r=r.concat(this.formatItemList(g,_,t))}),t.showGlobalOptions){let h=t.visibleGlobalOptions(e).map(g=>i(t.styleOptionTerm(t.optionTerm(g)),t.styleOptionDescription(t.optionDescription(g))));r=r.concat(this.formatItemList("Global Options:",h,t))}return this.groupItems(e.commands,t.visibleCommands(e),h=>h.helpGroup()||"Commands:").forEach((h,g)=>{let _=h.map(y=>i(t.styleSubcommandTerm(t.subcommandTerm(y)),t.styleSubcommandDescription(t.subcommandDescription(y))));r=r.concat(this.formatItemList(g,_,t))}),r.join(`
3
+ `)}displayWidth(e){return Jr(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,n){let r=" ".repeat(2);if(!s)return r+e;let l=e.padEnd(t+e.length-n.displayWidth(e)),u=2,m=(this.helpWidth??80)-t-u-2,h;return m<this.minWidthToWrap||n.preformatted(s)?h=s:h=n.boxWrap(s,m).replace(/\n/g,`
4
4
  `+" ".repeat(t+u)),r+l+" ".repeat(u)+h.replace(/\n/g,`
5
- ${r}`)}boxWrap(e,t){if(t<this.minWidthToWrap)return e;let s=e.split(/\r\n|\n/),n=/[\s]*[^\s]+/g,o=[];return s.forEach(r=>{let l=r.match(n);if(l===null){o.push("");return}let u=[l.shift()],m=this.displayWidth(u[0]);l.forEach(p=>{let h=this.displayWidth(p);if(m+h<=t){u.push(p),m+=h;return}o.push(u.join(""));let f=p.trimStart();u=[f],m=this.displayWidth(f)}),o.push(u.join(""))}),o.join(`
6
- `)}};function kr(i){let e=/\x1b\[\d*(;\d*)*m/g;return i.replace(e,"")}Mo.Help=To;Mo.stripColor=kr});var Io=se(Eo=>{var{InvalidArgumentError:Uc}=us(),Ao=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=Fc(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 Uc(`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?vr(this.name().replace(/^no-/,"")):vr(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}},Do=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 n=this.negativeOptions.get(s).presetArg,o=n!==void 0?n:!1;return t.negate===(o===e)}};function vr(i){return i.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function Fc(i){let e,t,s=/^-[^-]$/,n=/^--[^-]/,o=i.split(/[ |,]+/).concat("guard");if(s.test(o[0])&&(e=o.shift()),n.test(o[0])&&(t=o.shift()),!e&&s.test(o[0])&&(e=o.shift()),!e&&n.test(o[0])&&(e=t,t=o.shift()),o[0].startsWith("-")){let r=o[0],l=`option creation failed due to '${r}' in option flags '${i}'`;throw/^-[^-][^-]/.test(r)?new Error(`${l}
5
+ ${r}`)}boxWrap(e,t){if(t<this.minWidthToWrap)return e;let s=e.split(/\r\n|\n/),n=/[\s]*[^\s]+/g,i=[];return s.forEach(r=>{let l=r.match(n);if(l===null){i.push("");return}let u=[l.shift()],p=this.displayWidth(u[0]);l.forEach(m=>{let h=this.displayWidth(m);if(p+h<=t){u.push(m),p+=h;return}i.push(u.join(""));let g=m.trimStart();u=[g],p=this.displayWidth(g)}),i.push(u.join(""))}),i.join(`
6
+ `)}};function Jr(o){let e=/\x1b\[\d*(;\d*)*m/g;return o.replace(e,"")}$o.Help=qo;$o.stripColor=Jr});var Vo=se(Ho=>{var{InvalidArgumentError:ou}=gs(),Bo=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=iu(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 ou(`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?Kr(this.name().replace(/^no-/,"")):Kr(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}},Wo=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 n=this.negativeOptions.get(s).presetArg,i=n!==void 0?n:!1;return t.negate===(i===e)}};function Kr(o){return o.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function iu(o){let e,t,s=/^-[^-]$/,n=/^--[^-]/,i=o.split(/[ |,]+/).concat("guard");if(s.test(i[0])&&(e=i.shift()),n.test(i[0])&&(t=i.shift()),!e&&s.test(i[0])&&(e=i.shift()),!e&&n.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 '${o}'`;throw/^-[^-][^-]/.test(r)?new Error(`${l}
7
7
  - a short flag is a single dash and a single character
8
8
  - either use a single dash and a single character (for a short flag)
9
9
  - or use a double dash for a long option (and can have two, like '--ws, --workspace')`):s.test(r)?new Error(`${l}
10
10
  - too many short flags`):n.test(r)?new Error(`${l}
11
11
  - too many long flags`):new Error(`${l}
12
- - unrecognised flag format`)}if(e===void 0&&t===void 0)throw new Error(`option creation failed due to no flags found in '${i}'.`);return{shortFlag:e,longFlag:t}}Eo.Option=Ao;Eo.DualOptions=Do});var Tr=se(Pr=>{function Nc(i,e){if(Math.abs(i.length-e.length)>3)return Math.max(i.length,e.length);let t=[];for(let s=0;s<=i.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 n=1;n<=i.length;n++){let o=1;i[n-1]===e[s-1]?o=0:o=1,t[n][s]=Math.min(t[n-1][s]+1,t[n][s-1]+1,t[n-1][s-1]+o),n>1&&s>1&&i[n-1]===e[s-2]&&i[n-2]===e[s-1]&&(t[n][s]=Math.min(t[n][s],t[n-2][s-2]+1))}return t[i.length][e.length]}function jc(i,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=i.startsWith("--");t&&(i=i.slice(2),e=e.map(r=>r.slice(2)));let s=[],n=3,o=.4;return e.forEach(r=>{if(r.length<=1)return;let l=Nc(i,r),u=Math.max(i.length,r.length);(u-l)/u>o&&(l<n?(n=l,s=[r]):l===n&&s.push(r))}),s.sort((r,l)=>r.localeCompare(l)),t&&(s=s.map(r=>`--${r}`)),s.length>1?`
12
+ - unrecognised flag format`)}if(e===void 0&&t===void 0)throw new Error(`option creation failed due to no flags found in '${o}'.`);return{shortFlag:e,longFlag:t}}Ho.Option=Bo;Ho.DualOptions=Wo});var Yr=se(Qr=>{function ru(o,e){if(Math.abs(o.length-e.length)>3)return Math.max(o.length,e.length);let t=[];for(let s=0;s<=o.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 n=1;n<=o.length;n++){let i=1;o[n-1]===e[s-1]?i=0:i=1,t[n][s]=Math.min(t[n-1][s]+1,t[n][s-1]+1,t[n-1][s-1]+i),n>1&&s>1&&o[n-1]===e[s-2]&&o[n-2]===e[s-1]&&(t[n][s]=Math.min(t[n][s],t[n-2][s-2]+1))}return t[o.length][e.length]}function au(o,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=o.startsWith("--");t&&(o=o.slice(2),e=e.map(r=>r.slice(2)));let s=[],n=3,i=.4;return e.forEach(r=>{if(r.length<=1)return;let l=ru(o,r),u=Math.max(o.length,r.length);(u-l)/u>i&&(l<n?(n=l,s=[r]):l===n&&s.push(r))}),s.sort((r,l)=>r.localeCompare(l)),t&&(s=s.map(r=>`--${r}`)),s.length>1?`
13
13
  (Did you mean one of ${s.join(", ")}?)`:s.length===1?`
14
- (Did you mean ${s[0]}?)`:""}Pr.suggestSimilar=jc});var Dr=se(No=>{var Gc=require("node:events").EventEmitter,Ro=require("node:child_process"),He=require("node:path"),rn=require("node:fs"),K=require("node:process"),{Argument:Lc,humanReadableArgName:$c}=on(),{CommanderError:Oo}=us(),{Help:qc,stripColor:Bc}=xo(),{Option:Mr,DualOptions:zc}=Io(),{suggestSimilar:xr}=Tr(),Uo=class i extends Gc{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=>K.stdout.write(t),writeErr:t=>K.stderr.write(t),outputError:(t,s)=>s(t),getOutHelpWidth:()=>K.stdout.isTTY?K.stdout.columns:void 0,getErrHelpWidth:()=>K.stderr.isTTY?K.stderr.columns:void 0,getOutHasColors:()=>Fo()??(K.stdout.isTTY&&K.stdout.hasColors?.()),getErrHasColors:()=>Fo()??(K.stderr.isTTY&&K.stderr.hasColors?.()),stripColor:t=>Bc(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 n=t,o=s;typeof n=="object"&&n!==null&&(o=n,n=null),o=o||{};let[,r,l]=e.match(/([^ ]+) *(.*)/),u=this.createCommand(r);return n&&(u.description(n),u._executableHandler=!0),o.isDefault&&(this._defaultCommandName=u._name),u._hidden=!!(o.noHelp||o.hidden),u._executableFile=o.executableFile||null,l&&u.arguments(l),this._registerCommand(u),u.parent=this,u.copyInheritedSettings(this),n?this:u}createCommand(e){return new i(e)}createHelp(){return Object.assign(new qc,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
15
- - 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 Lc(e,t)}argument(e,t,s,n){let o=this.createArgument(e,t);return typeof s=="function"?o.default(n).argParser(s):o.default(s),this.addArgument(o),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]",[,n,o]=s.match(/([^ ]+) *(.*)/),r=t??"display help for command",l=this.createCommand(n);return l.helpOption(!1),o&&l.arguments(o),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}'.
16
- 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 Oo(e,t,s)),K.exit(e)}action(e){let t=s=>{let n=this.registeredArguments.length,o=s.slice(0,n);return this._storeOptionsAsProperties?o[n]=this:o[n]=this.opts(),o.push(this),e.apply(this,o)};return this._actionHandler=t,this}createOption(e,t){return new Mr(e,t)}_callParseArg(e,t,s,n){try{return e.parseArg(t,s)}catch(o){if(o.code==="commander.invalidArgument"){let r=`${n} ${o.message}`;this.error(r,{exitCode:o.exitCode,code:o.code})}throw o}}_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}'
17
- - already used by option '${t.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let t=n=>[n.name()].concat(n.aliases()),s=t(e).find(n=>this._findCommand(n));if(s){let n=t(this._findCommand(s)).join("|"),o=t(e).join("|");throw new Error(`cannot add command '${o}' as already have command '${n}'`)}this._initCommandGroup(e),this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),s=e.attributeName();if(e.negate){let o=e.long.replace(/^--no-/,"--");this._findOption(o)||this.setOptionValueWithSource(s,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(s,e.defaultValue,"default");let n=(o,r,l)=>{o==null&&e.presetArg!==void 0&&(o=e.presetArg);let u=this.getOptionValue(s);o!==null&&e.parseArg?o=this._callParseArg(e,o,u,r):o!==null&&e.variadic&&(o=e._collectValue(o,u)),o==null&&(e.negate?o=!1:e.isBoolean()||e.optional?o=!0:o=""),this.setOptionValueWithSource(s,o,l)};return this.on("option:"+t,o=>{let r=`error: option '${e.flags}' argument '${o}' is invalid.`;n(o,r,"cli")}),e.envVar&&this.on("optionEnv:"+t,o=>{let r=`error: option '${e.flags}' value '${o}' from env '${e.envVar}' is invalid.`;n(o,r,"env")}),this}_optionEx(e,t,s,n,o){if(typeof t=="object"&&t instanceof Mr)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 n=="function")r.default(o).argParser(n);else if(n instanceof RegExp){let l=n;n=(u,m)=>{let p=l.exec(u);return p?p[0]:m},r.default(o).argParser(n)}else r.default(n);return this.addOption(r)}option(e,t,s,n){return this._optionEx({},e,t,s,n)}requiredOption(e,t,s,n){return this._optionEx({mandatory:!0},e,t,s,n)}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){K.versions?.electron&&(t.from="electron");let n=K.execArgv??[];(n.includes("-e")||n.includes("--eval")||n.includes("-p")||n.includes("--print"))&&(t.from="eval")}e===void 0&&(e=K.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":K.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.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.
18
- - 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(rn.existsSync(e))return;let n=t?`searched for local subcommand relative to directory '${t}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",o=`'${e}' does not exist
14
+ (Did you mean ${s[0]}?)`:""}Qr.suggestSimilar=au});var ta=se(Xo=>{var lu=require("node:events").EventEmitter,Jo=require("node:child_process"),Xe=require("node:path"),gn=require("node:fs"),J=require("node:process"),{Argument:cu,humanReadableArgName:uu}=fn(),{CommanderError:Ko}=gs(),{Help:du,stripColor:mu}=zo(),{Option:Xr,DualOptions:pu}=Vo(),{suggestSimilar:Zr}=Yr(),Qo=class o extends lu{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=>J.stdout.write(t),writeErr:t=>J.stderr.write(t),outputError:(t,s)=>s(t),getOutHelpWidth:()=>J.stdout.isTTY?J.stdout.columns:void 0,getErrHelpWidth:()=>J.stderr.isTTY?J.stderr.columns:void 0,getOutHasColors:()=>Yo()??(J.stdout.isTTY&&J.stdout.hasColors?.()),getErrHasColors:()=>Yo()??(J.stderr.isTTY&&J.stderr.hasColors?.()),stripColor:t=>mu(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 n=t,i=s;typeof n=="object"&&n!==null&&(i=n,n=null),i=i||{};let[,r,l]=e.match(/([^ ]+) *(.*)/),u=this.createCommand(r);return n&&(u.description(n),u._executableHandler=!0),i.isDefault&&(this._defaultCommandName=u._name),u._hidden=!!(i.noHelp||i.hidden),u._executableFile=i.executableFile||null,l&&u.arguments(l),this._registerCommand(u),u.parent=this,u.copyInheritedSettings(this),n?this:u}createCommand(e){return new o(e)}createHelp(){return Object.assign(new du,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
15
+ - 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 cu(e,t)}argument(e,t,s,n){let i=this.createArgument(e,t);return typeof s=="function"?i.default(n).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]",[,n,i]=s.match(/([^ ]+) *(.*)/),r=t??"display help for command",l=this.createCommand(n);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}'.
16
+ 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 Ko(e,t,s)),J.exit(e)}action(e){let t=s=>{let n=this.registeredArguments.length,i=s.slice(0,n);return this._storeOptionsAsProperties?i[n]=this:i[n]=this.opts(),i.push(this),e.apply(this,i)};return this._actionHandler=t,this}createOption(e,t){return new Xr(e,t)}_callParseArg(e,t,s,n){try{return e.parseArg(t,s)}catch(i){if(i.code==="commander.invalidArgument"){let r=`${n} ${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}'
17
+ - already used by option '${t.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let t=n=>[n.name()].concat(n.aliases()),s=t(e).find(n=>this._findCommand(n));if(s){let n=t(this._findCommand(s)).join("|"),i=t(e).join("|");throw new Error(`cannot add command '${i}' as already have command '${n}'`)}this._initCommandGroup(e),this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),s=e.attributeName();if(e.negate){let i=e.long.replace(/^--no-/,"--");this._findOption(i)||this.setOptionValueWithSource(s,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(s,e.defaultValue,"default");let n=(i,r,l)=>{i==null&&e.presetArg!==void 0&&(i=e.presetArg);let u=this.getOptionValue(s);i!==null&&e.parseArg?i=this._callParseArg(e,i,u,r):i!==null&&e.variadic&&(i=e._collectValue(i,u)),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.`;n(i,r,"cli")}),e.envVar&&this.on("optionEnv:"+t,i=>{let r=`error: option '${e.flags}' value '${i}' from env '${e.envVar}' is invalid.`;n(i,r,"env")}),this}_optionEx(e,t,s,n,i){if(typeof t=="object"&&t instanceof Xr)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 n=="function")r.default(i).argParser(n);else if(n instanceof RegExp){let l=n;n=(u,p)=>{let m=l.exec(u);return m?m[0]:p},r.default(i).argParser(n)}else r.default(n);return this.addOption(r)}option(e,t,s,n){return this._optionEx({},e,t,s,n)}requiredOption(e,t,s,n){return this._optionEx({mandatory:!0},e,t,s,n)}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){J.versions?.electron&&(t.from="electron");let n=J.execArgv??[];(n.includes("-e")||n.includes("--eval")||n.includes("-p")||n.includes("--print"))&&(t.from="eval")}e===void 0&&(e=J.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":J.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.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.
18
+ - 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(gn.existsSync(e))return;let n=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
19
19
  - if '${s}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
20
20
  - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
21
- - ${n}`;throw new Error(o)}_executeSubCommand(e,t){t=t.slice();let s=!1,n=[".js",".ts",".tsx",".mjs",".cjs"];function o(p,h){let f=He.resolve(p,h);if(rn.existsSync(f))return f;if(n.includes(He.extname(h)))return;let y=n.find(_=>rn.existsSync(`${f}${_}`));if(y)return`${f}${y}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let r=e._executableFile||`${this._name}-${e._name}`,l=this._executableDir||"";if(this._scriptPath){let p;try{p=rn.realpathSync(this._scriptPath)}catch{p=this._scriptPath}l=He.resolve(He.dirname(p),l)}if(l){let p=o(l,r);if(!p&&!e._executableFile&&this._scriptPath){let h=He.basename(this._scriptPath,He.extname(this._scriptPath));h!==this._name&&(p=o(l,`${h}-${e._name}`))}r=p||r}s=n.includes(He.extname(r));let u;K.platform!=="win32"?s?(t.unshift(r),t=Ar(K.execArgv).concat(t),u=Ro.spawn(K.argv[0],t,{stdio:"inherit"})):u=Ro.spawn(r,t,{stdio:"inherit"}):(this._checkForMissingExecutable(r,l,e._name),t.unshift(r),t=Ar(K.execArgv).concat(t),u=Ro.spawn(K.execPath,t,{stdio:"inherit"})),u.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(h=>{K.on(h,()=>{u.killed===!1&&u.exitCode===null&&u.kill(h)})});let m=this._exitCallback;u.on("close",p=>{p=p??1,m?m(new Oo(p,"commander.executeSubCommandAsync","(close)")):K.exit(p)}),u.on("error",p=>{if(p.code==="ENOENT")this._checkForMissingExecutable(r,l,e._name);else if(p.code==="EACCES")throw new Error(`'${r}' not executable`);if(!m)K.exit(1);else{let h=new Oo(1,"commander.executeSubCommandAsync","(error)");h.nestedError=p,m(h)}}),this.runningCommand=u}_dispatchSubcommand(e,t,s){let n=this._findCommand(e);n||this.help({error:!0}),n._prepareForParse();let o;return o=this._chainOrCallSubCommandHook(o,n,"preSubcommand"),o=this._chainOrCall(o,()=>{if(n._executableHandler)this._executeSubCommand(n,t.concat(s));else return n._parseCommand(t,s)}),o}_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,n,o)=>{let r=n;if(n!==null&&s.parseArg){let l=`error: command-argument value '${n}' is invalid for argument '${s.name()}'.`;r=this._callParseArg(s,n,o,l)}return r};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((s,n)=>{let o=s.defaultValue;s.variadic?n<this.args.length?(o=this.args.slice(n),s.parseArg&&(o=o.reduce((r,l)=>e(s,l,r),s.defaultValue))):o===void 0&&(o=[]):n<this.args.length&&(o=this.args[n],s.parseArg&&(o=e(s,o,s.defaultValue))),t[n]=o}),this.processedArgs=t}_chainOrCall(e,t){return e?.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let s=e,n=[];return this._getCommandAndAncestors().reverse().filter(o=>o._lifeCycleHooks[t]!==void 0).forEach(o=>{o._lifeCycleHooks[t].forEach(r=>{n.push({hookedCommand:o,callback:r})})}),t==="postAction"&&n.reverse(),n.forEach(o=>{s=this._chainOrCall(s,()=>o.callback(o.hookedCommand,this))}),s}_chainOrCallSubCommandHook(e,t,s){let n=e;return this._lifeCycleHooks[s]!==void 0&&this._lifeCycleHooks[s].forEach(o=>{n=this._chainOrCall(n,()=>o(this,t))}),n}_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 n=()=>{s.unknown.length>0&&this.unknownOption(s.unknown[0])},o=`command:${this.name()}`;if(this._actionHandler){n(),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(o,e,t)})),r=this._chainOrCallHooks(r,"postAction"),r}if(this.parent?.listenerCount(o))n(),this._processArguments(),this.parent.emit(o,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():(n(),this._processArguments())}else this.commands.length?(n(),this.help({error:!0})):(n(),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 n=s.attributeName();return this.getOptionValue(n)===void 0?!1:this.getOptionValueSource(n)!=="default"});e.filter(s=>s.conflictsWith.length>0).forEach(s=>{let n=e.find(o=>s.conflictsWith.includes(o.attributeName()));n&&this._conflictingOption(s,n)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],s=[],n=t;function o(p){return p.length>1&&p[0]==="-"}let r=p=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(p)?!this._getCommandAndAncestors().some(h=>h.options.map(f=>f.short).some(f=>/^-\d$/.test(f))):!1,l=null,u=null,m=0;for(;m<e.length||u;){let p=u??e[m++];if(u=null,p==="--"){n===s&&n.push(p),n.push(...e.slice(m));break}if(l&&(!o(p)||r(p))){this.emit(`option:${l.name()}`,p);continue}if(l=null,o(p)){let h=this._findOption(p);if(h){if(h.required){let f=e[m++];f===void 0&&this.optionMissingArgument(h),this.emit(`option:${h.name()}`,f)}else if(h.optional){let f=null;m<e.length&&(!o(e[m])||r(e[m]))&&(f=e[m++]),this.emit(`option:${h.name()}`,f)}else this.emit(`option:${h.name()}`);l=h.variadic?h:null;continue}}if(p.length>2&&p[0]==="-"&&p[1]!=="-"){let h=this._findOption(`-${p[1]}`);if(h){h.required||h.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${h.name()}`,p.slice(2)):(this.emit(`option:${h.name()}`),u=`-${p.slice(2)}`);continue}}if(/^--[^=]+=/.test(p)){let h=p.indexOf("="),f=this._findOption(p.slice(0,h));if(f&&(f.required||f.optional)){this.emit(`option:${f.name()}`,p.slice(h+1));continue}}if(n===t&&o(p)&&!(this.commands.length===0&&r(p))&&(n=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){n.push(p,...e.slice(m));break}n.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 n=this.options[s].attributeName();e[n]=n===this._versionOptionName?this._version:this[n]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
21
+ - ${n}`;throw new Error(i)}_executeSubCommand(e,t){t=t.slice();let s=!1,n=[".js",".ts",".tsx",".mjs",".cjs"];function i(m,h){let g=Xe.resolve(m,h);if(gn.existsSync(g))return g;if(n.includes(Xe.extname(h)))return;let _=n.find(y=>gn.existsSync(`${g}${y}`));if(_)return`${g}${_}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let r=e._executableFile||`${this._name}-${e._name}`,l=this._executableDir||"";if(this._scriptPath){let m;try{m=gn.realpathSync(this._scriptPath)}catch{m=this._scriptPath}l=Xe.resolve(Xe.dirname(m),l)}if(l){let m=i(l,r);if(!m&&!e._executableFile&&this._scriptPath){let h=Xe.basename(this._scriptPath,Xe.extname(this._scriptPath));h!==this._name&&(m=i(l,`${h}-${e._name}`))}r=m||r}s=n.includes(Xe.extname(r));let u;J.platform!=="win32"?s?(t.unshift(r),t=ea(J.execArgv).concat(t),u=Jo.spawn(J.argv[0],t,{stdio:"inherit"})):u=Jo.spawn(r,t,{stdio:"inherit"}):(this._checkForMissingExecutable(r,l,e._name),t.unshift(r),t=ea(J.execArgv).concat(t),u=Jo.spawn(J.execPath,t,{stdio:"inherit"})),u.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(h=>{J.on(h,()=>{u.killed===!1&&u.exitCode===null&&u.kill(h)})});let p=this._exitCallback;u.on("close",m=>{m=m??1,p?p(new Ko(m,"commander.executeSubCommandAsync","(close)")):J.exit(m)}),u.on("error",m=>{if(m.code==="ENOENT")this._checkForMissingExecutable(r,l,e._name);else if(m.code==="EACCES")throw new Error(`'${r}' not executable`);if(!p)J.exit(1);else{let h=new Ko(1,"commander.executeSubCommandAsync","(error)");h.nestedError=m,p(h)}}),this.runningCommand=u}_dispatchSubcommand(e,t,s){let n=this._findCommand(e);n||this.help({error:!0}),n._prepareForParse();let i;return i=this._chainOrCallSubCommandHook(i,n,"preSubcommand"),i=this._chainOrCall(i,()=>{if(n._executableHandler)this._executeSubCommand(n,t.concat(s));else return n._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,n,i)=>{let r=n;if(n!==null&&s.parseArg){let l=`error: command-argument value '${n}' is invalid for argument '${s.name()}'.`;r=this._callParseArg(s,n,i,l)}return r};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((s,n)=>{let i=s.defaultValue;s.variadic?n<this.args.length?(i=this.args.slice(n),s.parseArg&&(i=i.reduce((r,l)=>e(s,l,r),s.defaultValue))):i===void 0&&(i=[]):n<this.args.length&&(i=this.args[n],s.parseArg&&(i=e(s,i,s.defaultValue))),t[n]=i}),this.processedArgs=t}_chainOrCall(e,t){return e?.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let s=e,n=[];return this._getCommandAndAncestors().reverse().filter(i=>i._lifeCycleHooks[t]!==void 0).forEach(i=>{i._lifeCycleHooks[t].forEach(r=>{n.push({hookedCommand:i,callback:r})})}),t==="postAction"&&n.reverse(),n.forEach(i=>{s=this._chainOrCall(s,()=>i.callback(i.hookedCommand,this))}),s}_chainOrCallSubCommandHook(e,t,s){let n=e;return this._lifeCycleHooks[s]!==void 0&&this._lifeCycleHooks[s].forEach(i=>{n=this._chainOrCall(n,()=>i(this,t))}),n}_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 n=()=>{s.unknown.length>0&&this.unknownOption(s.unknown[0])},i=`command:${this.name()}`;if(this._actionHandler){n(),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))n(),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():(n(),this._processArguments())}else this.commands.length?(n(),this.help({error:!0})):(n(),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 n=s.attributeName();return this.getOptionValue(n)===void 0?!1:this.getOptionValueSource(n)!=="default"});e.filter(s=>s.conflictsWith.length>0).forEach(s=>{let n=e.find(i=>s.conflictsWith.includes(i.attributeName()));n&&this._conflictingOption(s,n)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],s=[],n=t;function i(m){return m.length>1&&m[0]==="-"}let r=m=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(m)?!this._getCommandAndAncestors().some(h=>h.options.map(g=>g.short).some(g=>/^-\d$/.test(g))):!1,l=null,u=null,p=0;for(;p<e.length||u;){let m=u??e[p++];if(u=null,m==="--"){n===s&&n.push(m),n.push(...e.slice(p));break}if(l&&(!i(m)||r(m))){this.emit(`option:${l.name()}`,m);continue}if(l=null,i(m)){let h=this._findOption(m);if(h){if(h.required){let g=e[p++];g===void 0&&this.optionMissingArgument(h),this.emit(`option:${h.name()}`,g)}else if(h.optional){let g=null;p<e.length&&(!i(e[p])||r(e[p]))&&(g=e[p++]),this.emit(`option:${h.name()}`,g)}else this.emit(`option:${h.name()}`);l=h.variadic?h:null;continue}}if(m.length>2&&m[0]==="-"&&m[1]!=="-"){let h=this._findOption(`-${m[1]}`);if(h){h.required||h.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${h.name()}`,m.slice(2)):(this.emit(`option:${h.name()}`),u=`-${m.slice(2)}`);continue}}if(/^--[^=]+=/.test(m)){let h=m.indexOf("="),g=this._findOption(m.slice(0,h));if(g&&(g.required||g.optional)){this.emit(`option:${g.name()}`,m.slice(h+1));continue}}if(n===t&&i(m)&&!(this.commands.length===0&&r(m))&&(n=s),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&s.length===0){if(this._findCommand(m)){t.push(m),s.push(...e.slice(p));break}else if(this._getHelpCommand()&&m===this._getHelpCommand().name()){t.push(m,...e.slice(p));break}else if(this._defaultCommandName){s.push(m,...e.slice(p));break}}if(this._passThroughOptions){n.push(m,...e.slice(p));break}n.push(m)}return{operands:t,unknown:s}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let s=0;s<t;s++){let n=this.options[s].attributeName();e[n]=n===this._versionOptionName?this._version:this[n]}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
22
  `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
23
23
  `):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
24
- `),this.outputHelp({error:!0}));let s=t||{},n=s.exitCode||1,o=s.code||"commander.error";this._exit(n,o,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in K.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()}`,K.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new zc(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(n=>!t(n)).forEach(n=>{this.setOptionValueWithSource(n,s.implied[n],"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(),u=this.getOptionValue(l),m=this.options.find(h=>h.negate&&l===h.attributeName()),p=this.options.find(h=>!h.negate&&l===h.attributeName());return m&&(m.presetArg===void 0&&u===!1||m.presetArg!==void 0&&u===m.presetArg)?m:p||r},n=r=>{let l=s(r),u=l.attributeName();return this.getOptionValueSource(u)==="env"?`environment variable '${l.envVar}'`:`option '${l.flags}'`},o=`error: ${n(e)} cannot be used with ${n(t)}`;this.error(o,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let n=[],o=this;do{let r=o.createHelp().visibleOptions(o).filter(l=>l.long).map(l=>l.long);n=n.concat(r),o=o.parent}while(o&&!o._enablePositionalOptions);t=xr(e,n)}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=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${s} but got ${e.length}.`;this.error(o,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let n=[];this.createHelp().visibleCommands(this).forEach(o=>{n.push(o.name()),o.alias()&&n.push(o.alias())}),t=xr(e,n)}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 n=this.createOption(t,s);return this._versionOptionName=n.attributeName(),this._registerOption(n),this.on("option:"+n.name(),()=>{this._outputConfiguration.writeOut(`${e}
25
- `),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 n=[s.name()].concat(s.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${n}'`)}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=>$c(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=He.basename(e,He.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 n=t.formatHelp(this,t);return s.hasColors?n:this._outputConfiguration.stripColor(n)}_getOutputContext(e){e=e||{};let t=!!e.error,s,n,o;return t?(s=l=>this._outputConfiguration.writeErr(l),n=this._outputConfiguration.getErrHasColors(),o=this._outputConfiguration.getErrHelpWidth()):(s=l=>this._outputConfiguration.writeOut(l),n=this._outputConfiguration.getOutHasColors(),o=this._outputConfiguration.getOutHelpWidth()),{error:t,write:l=>(n||(l=this._outputConfiguration.stripColor(l)),s(l)),hasColors:n,helpWidth:o}}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let s=this._getOutputContext(e),n={error:s.error,write:s.write,command:this};this._getCommandAndAncestors().reverse().forEach(r=>r.emit("beforeAllHelp",n)),this.emit("beforeHelp",n);let o=this.helpInformation({error:s.error});if(t&&(o=t(o),typeof o!="string"&&!Buffer.isBuffer(o)))throw new Error("outputHelp callback must return a string or a Buffer");s.write(o),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",n),this._getCommandAndAncestors().forEach(r=>r.emit("afterAllHelp",n))}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(K.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.
26
- Expecting one of '${s.join("', '")}'`);let n=`${e}Help`;return this.on(n,o=>{let r;typeof t=="function"?r=t({error:o.error,command:o.command}):r=t,r&&o.write(`${r}
27
- `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(n=>t.is(n))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Ar(i){return i.map(e=>{if(!e.startsWith("--inspect"))return e;let t,s="127.0.0.1",n="9229",o;return(o=e.match(/^(--inspect(-brk)?)$/))!==null?t=o[1]:(o=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=o[1],/^\d+$/.test(o[3])?n=o[3]:s=o[3]):(o=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=o[1],s=o[3],n=o[4]),t&&n!=="0"?`${t}=${s}:${parseInt(n)+1}`:e})}function Fo(){if(K.env.NO_COLOR||K.env.FORCE_COLOR==="0"||K.env.FORCE_COLOR==="false")return!1;if(K.env.FORCE_COLOR||K.env.CLICOLOR_FORCE!==void 0)return!0}No.Command=Uo;No.useColor=Fo});var Or=se(Ae=>{var{Argument:Er}=on(),{Command:jo}=Dr(),{CommanderError:Wc,InvalidArgumentError:Ir}=us(),{Help:Hc}=xo(),{Option:Rr}=Io();Ae.program=new jo;Ae.createCommand=i=>new jo(i);Ae.createOption=(i,e)=>new Rr(i,e);Ae.createArgument=(i,e)=>new Er(i,e);Ae.Command=jo;Ae.Option=Rr;Ae.Argument=Er;Ae.Help=Hc;Ae.CommanderError=Wc;Ae.InvalidArgumentError=Ir;Ae.InvalidOptionArgumentError=Ir});var gn=se((hn,Pt)=>{var mn=void 0,pn=function(i){return mn||(mn=new Promise(function(e,t){var s=typeof i<"u"?i:{},n=s.onAbort;s.onAbort=function(a){t(new Error(a)),n&&n(a)},s.postRun=s.postRun||[],s.postRun.push(function(){e(s)}),Pt=void 0;var o;o||=typeof s<"u"?s:{};var r=!!globalThis.window,l=!!globalThis.WorkerGlobalScope,u=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";o.onRuntimeInitialized=function(){function a(T,I){switch(typeof I){case"boolean":vc(T,I?1:0);break;case"number":wc(T,I);break;case"string":Sc(T,I,-1,-1);break;case"object":if(I===null)_r(T);else if(I.length!=null){var F=Xs(I.length);E.set(I,F),kc(T,F,I.length,-1),cs(F)}else sn(T,"Wrong API use : tried to return a value of an unknown type ("+I+").",-1);break;default:_r(T)}}function c(T,I){for(var F=[],N=0;N<T;N+=1){var W=We(I+4*N,"i32"),Q=fc(W);if(Q===1||Q===2)W=Cc(W);else if(Q===3)W=_c(W);else if(Q===4){Q=W,W=yc(Q),Q=bc(Q);for(var Ue=new Uint8Array(W),xe=0;xe<W;xe+=1)Ue[xe]=E[Q+xe];W=Ue}else W=null;F.push(W)}return F}function d(T,I){this.Qa=T,this.db=I,this.Oa=1,this.mb=[]}function g(T,I){if(this.db=I,this.fb=Qs(T),this.fb===null)throw Error("Unable to allocate memory for the SQL string");this.lb=this.fb,this.$a=this.sb=null}function b(T){if(this.filename="dbfile_"+(4294967295*Math.random()>>>0),T!=null){var I=this.filename,F="/",N=I;if(F&&(F=typeof F=="string"?F:ao(F),N=I?oo(F+"/"+I):F),I=Wi(!0,!0),N=Wl(N,I),T){if(typeof T=="string"){F=Array(T.length);for(var W=0,Q=T.length;W<Q;++W)F[W]=T.charCodeAt(W);T=F}Vs(N,I|146),F=$t(N,577),rr(F,T,0,T.length,0),ho(F),Vs(N,I)}}this.handleError(L(this.filename,M)),this.db=We(M,"i32"),Cr(this.db),this.gb={},this.Sa={}}var M=kt(4),D=o.cwrap,L=D("sqlite3_open","number",["string","number"]),Y=D("sqlite3_close_v2","number",["number"]),z=D("sqlite3_exec","number",["number","string","number","number","number"]),te=D("sqlite3_changes","number",["number"]),pe=D("sqlite3_prepare_v2","number",["number","string","number","number","number"]),pr=D("sqlite3_sql","string",["number"]),Zl=D("sqlite3_normalized_sql","string",["number"]),hr=D("sqlite3_prepare_v2","number",["number","number","number","number","number"]),ec=D("sqlite3_bind_text","number",["number","number","number","number","number"]),gr=D("sqlite3_bind_blob","number",["number","number","number","number","number"]),tc=D("sqlite3_bind_double","number",["number","number","number"]),sc=D("sqlite3_bind_int","number",["number","number","number"]),nc=D("sqlite3_bind_parameter_index","number",["number","string"]),oc=D("sqlite3_step","number",["number"]),ic=D("sqlite3_errmsg","string",["number"]),rc=D("sqlite3_column_count","number",["number"]),ac=D("sqlite3_data_count","number",["number"]),lc=D("sqlite3_column_double","number",["number","number"]),fr=D("sqlite3_column_text","string",["number","number"]),cc=D("sqlite3_column_blob","number",["number","number"]),uc=D("sqlite3_column_bytes","number",["number","number"]),dc=D("sqlite3_column_type","number",["number","number"]),mc=D("sqlite3_column_name","string",["number","number"]),pc=D("sqlite3_reset","number",["number"]),hc=D("sqlite3_clear_bindings","number",["number"]),gc=D("sqlite3_finalize","number",["number"]),yr=D("sqlite3_create_function_v2","number","number string number number number number number number number".split(" ")),fc=D("sqlite3_value_type","number",["number"]),yc=D("sqlite3_value_bytes","number",["number"]),_c=D("sqlite3_value_text","string",["number"]),bc=D("sqlite3_value_blob","number",["number"]),Cc=D("sqlite3_value_double","number",["number"]),wc=D("sqlite3_result_double","",["number","number"]),_r=D("sqlite3_result_null","",["number"]),Sc=D("sqlite3_result_text","",["number","string","number","number"]),kc=D("sqlite3_result_blob","",["number","number","number","number"]),vc=D("sqlite3_result_int","",["number","number"]),sn=D("sqlite3_result_error","",["number","string","number"]),br=D("sqlite3_aggregate_context","number",["number","number"]),Cr=D("RegisterExtensionFunctions","number",["number"]),wr=D("sqlite3_update_hook","number",["number","number","number"]);d.prototype.bind=function(T){if(!this.Qa)throw"Statement closed";return this.reset(),Array.isArray(T)?this.Gb(T):T!=null&&typeof T=="object"?this.Hb(T):!0},d.prototype.step=function(){if(!this.Qa)throw"Statement closed";this.Oa=1;var T=oc(this.Qa);switch(T){case 100:return!0;case 101:return!1;default:throw this.db.handleError(T)}},d.prototype.Ab=function(T){return T==null&&(T=this.Oa,this.Oa+=1),lc(this.Qa,T)},d.prototype.Ob=function(T){if(T==null&&(T=this.Oa,this.Oa+=1),T=fr(this.Qa,T),typeof BigInt!="function")throw Error("BigInt is not supported");return BigInt(T)},d.prototype.Tb=function(T){return T==null&&(T=this.Oa,this.Oa+=1),fr(this.Qa,T)},d.prototype.getBlob=function(T){T==null&&(T=this.Oa,this.Oa+=1);var I=uc(this.Qa,T);T=cc(this.Qa,T);for(var F=new Uint8Array(I),N=0;N<I;N+=1)F[N]=E[T+N];return F},d.prototype.get=function(T,I){I=I||{},T!=null&&this.bind(T)&&this.step(),T=[];for(var F=ac(this.Qa),N=0;N<F;N+=1)switch(dc(this.Qa,N)){case 1:var W=I.useBigInt?this.Ob(N):this.Ab(N);T.push(W);break;case 2:T.push(this.Ab(N));break;case 3:T.push(this.Tb(N));break;case 4:T.push(this.getBlob(N));break;default:T.push(null)}return T},d.prototype.qb=function(){for(var T=[],I=rc(this.Qa),F=0;F<I;F+=1)T.push(mc(this.Qa,F));return T},d.prototype.zb=function(T,I){T=this.get(T,I),I=this.qb();for(var F={},N=0;N<I.length;N+=1)F[I[N]]=T[N];return F},d.prototype.Sb=function(){return pr(this.Qa)},d.prototype.Pb=function(){return Zl(this.Qa)},d.prototype.run=function(T){return T!=null&&this.bind(T),this.step(),this.reset()},d.prototype.wb=function(T,I){I==null&&(I=this.Oa,this.Oa+=1),T=Qs(T),this.mb.push(T),this.db.handleError(ec(this.Qa,I,T,-1,0))},d.prototype.Fb=function(T,I){I==null&&(I=this.Oa,this.Oa+=1);var F=Xs(T.length);E.set(T,F),this.mb.push(F),this.db.handleError(gr(this.Qa,I,F,T.length,0))},d.prototype.vb=function(T,I){I==null&&(I=this.Oa,this.Oa+=1),this.db.handleError((T===(T|0)?sc:tc)(this.Qa,I,T))},d.prototype.Ib=function(T){T==null&&(T=this.Oa,this.Oa+=1),gr(this.Qa,T,0,0,0)},d.prototype.xb=function(T,I){switch(I==null&&(I=this.Oa,this.Oa+=1),typeof T){case"string":this.wb(T,I);return;case"number":this.vb(T,I);return;case"bigint":this.wb(T.toString(),I);return;case"boolean":this.vb(T+0,I);return;case"object":if(T===null){this.Ib(I);return}if(T.length!=null){this.Fb(T,I);return}}throw"Wrong API use : tried to bind a value of an unknown type ("+T+")."},d.prototype.Hb=function(T){var I=this;return Object.keys(T).forEach(function(F){var N=nc(I.Qa,F);N!==0&&I.xb(T[F],N)}),!0},d.prototype.Gb=function(T){for(var I=0;I<T.length;I+=1)this.xb(T[I],I+1);return!0},d.prototype.reset=function(){return this.freemem(),hc(this.Qa)===0&&pc(this.Qa)===0},d.prototype.freemem=function(){for(var T;(T=this.mb.pop())!==void 0;)cs(T)},d.prototype.Ya=function(){this.freemem();var T=gc(this.Qa)===0;return delete this.db.gb[this.Qa],this.Qa=0,T},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 T=en(),I=kt(4);os(M),os(I);try{this.db.handleError(hr(this.db.db,this.lb,-1,M,I)),this.lb=We(I,"i32");var F=We(M,"i32");return F===0?(this.ob(),{done:!0}):(this.$a=new d(F,this.db),this.db.gb[F]=this.$a,{value:this.$a,done:!1})}catch(N){throw this.sb=ae(this.lb),this.ob(),N}finally{Zs(T)}},g.prototype.ob=function(){cs(this.fb),this.fb=null},g.prototype.Qb=function(){return this.sb!==null?this.sb:ae(this.lb)},typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"&&(g.prototype[Symbol.iterator]=function(){return this}),b.prototype.run=function(T,I){if(!this.db)throw"Database closed";if(I){T=this.tb(T,I);try{T.step()}finally{T.Ya()}}else this.handleError(z(this.db,T,0,0,M));return this},b.prototype.exec=function(T,I,F){if(!this.db)throw"Database closed";var N=null,W=null,Q=null;try{Q=W=Qs(T);var Ue=kt(4);for(T=[];We(Q,"i8")!==0;){os(M),os(Ue),this.handleError(hr(this.db,Q,-1,M,Ue));var xe=We(M,"i32");if(Q=We(Ue,"i32"),xe!==0){var ke=null;for(N=new d(xe,this),I!=null&&N.bind(I);N.step();)ke===null&&(ke={columns:N.qb(),values:[]},T.push(ke)),ke.values.push(N.get(null,F));N.Ya()}}return T}catch(Fe){throw N&&N.Ya(),Fe}finally{W&&cs(W)}},b.prototype.Mb=function(T,I,F,N,W){typeof I=="function"&&(N=F,F=I,I=void 0),T=this.tb(T,I);try{for(;T.step();)F(T.zb(null,W))}finally{T.Ya()}if(typeof N=="function")return N()},b.prototype.tb=function(T,I){if(os(M),this.handleError(pe(this.db,T,-1,M,0)),T=We(M,"i32"),T===0)throw"Nothing to prepare";var F=new d(T,this);return I!=null&&F.bind(I),this.gb[T]=F},b.prototype.Ub=function(T){return new g(T,this)},b.prototype.Nb=function(){Object.values(this.gb).forEach(function(I){I.Ya()}),Object.values(this.Sa).forEach(ct),this.Sa={},this.handleError(Y(this.db));var T=Hl(this.filename);return this.handleError(L(this.filename,M)),this.db=We(M,"i32"),Cr(this.db),T},b.prototype.close=function(){this.db!==null&&(Object.values(this.gb).forEach(function(T){T.Ya()}),Object.values(this.Sa).forEach(ct),this.Sa={},this.Za&&(ct(this.Za),this.Za=void 0),this.handleError(Y(this.db)),tr("/"+this.filename),this.db=null)},b.prototype.handleError=function(T){if(T===0)return null;throw T=ic(this.db),Error(T)},b.prototype.Rb=function(){return te(this.db)},b.prototype.Kb=function(T,I){Object.prototype.hasOwnProperty.call(this.Sa,T)&&(ct(this.Sa[T]),delete this.Sa[T]);var F=ls(function(N,W,Q){W=c(W,Q);try{var Ue=I.apply(null,W)}catch(xe){sn(N,xe,-1);return}a(N,Ue)},"viii");return this.Sa[T]=F,this.handleError(yr(this.db,T,I.length,1,0,F,0,0,0)),this},b.prototype.Jb=function(T,I){var F=I.init||function(){return null},N=I.finalize||function(ke){return ke},W=I.step;if(!W)throw"An aggregate function must have a step function in "+T;var Q={};Object.hasOwnProperty.call(this.Sa,T)&&(ct(this.Sa[T]),delete this.Sa[T]),I=T+"__finalize",Object.hasOwnProperty.call(this.Sa,I)&&(ct(this.Sa[I]),delete this.Sa[I]);var Ue=ls(function(ke,Fe,wo){var vt=br(ke,1);Object.hasOwnProperty.call(Q,vt)||(Q[vt]=F()),Fe=c(Fe,wo),Fe=[Q[vt]].concat(Fe);try{Q[vt]=W.apply(null,Fe)}catch(Pc){delete Q[vt],sn(ke,Pc,-1)}},"viii"),xe=ls(function(ke){var Fe=br(ke,1);try{var wo=N(Q[Fe])}catch(vt){delete Q[Fe],sn(ke,vt,-1);return}a(ke,wo),delete Q[Fe]},"vi");return this.Sa[T]=Ue,this.Sa[I]=xe,this.handleError(yr(this.db,T,W.length-1,1,0,0,Ue,xe,0)),this},b.prototype.Zb=function(T){return this.Za&&(wr(this.db,0,0),ct(this.Za),this.Za=void 0),T?(this.Za=ls(function(I,F,N,W,Q){switch(F){case 18:I="insert";break;case 23:I="update";break;case 9:I="delete";break;default:throw"unknown operationCode in updateHook callback: "+F}if(N=ae(N),W=ae(W),Q>Number.MAX_SAFE_INTEGER)throw"rowId too big to fit inside a Number";T(I,N,W,Number(Q))},"viiiij"),wr(this.db,this.Za,0),this):this},d.prototype.bind=d.prototype.bind,d.prototype.step=d.prototype.step,d.prototype.get=d.prototype.get,d.prototype.getColumnNames=d.prototype.qb,d.prototype.getAsObject=d.prototype.zb,d.prototype.getSQL=d.prototype.Sb,d.prototype.getNormalizedSQL=d.prototype.Pb,d.prototype.run=d.prototype.run,d.prototype.reset=d.prototype.reset,d.prototype.freemem=d.prototype.freemem,d.prototype.free=d.prototype.Ya,g.prototype.next=g.prototype.next,g.prototype.getRemainingSQL=g.prototype.Qb,b.prototype.run=b.prototype.run,b.prototype.exec=b.prototype.exec,b.prototype.each=b.prototype.Mb,b.prototype.prepare=b.prototype.tb,b.prototype.iterateStatements=b.prototype.Ub,b.prototype.export=b.prototype.Nb,b.prototype.close=b.prototype.close,b.prototype.handleError=b.prototype.handleError,b.prototype.getRowsModified=b.prototype.Rb,b.prototype.create_function=b.prototype.Kb,b.prototype.create_aggregate=b.prototype.Jb,b.prototype.updateHook=b.prototype.Zb,o.Database=b};var m="./this.program",p=(a,c)=>{throw c},h=globalThis.document?.currentScript?.src;typeof __filename<"u"?h=__filename:l&&(h=self.location.href);var f="",y,_;if(u){var v=require("node:fs");f=__dirname+"/",_=a=>(a=x(a)?new URL(a):a,v.readFileSync(a)),y=async a=>(a=x(a)?new URL(a):a,v.readFileSync(a,void 0)),1<process.argv.length&&(m=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),typeof Pt<"u"&&(Pt.exports=o),p=(a,c)=>{throw process.exitCode=a,c}}else if(r||l){try{f=new URL(".",h).href}catch{}l&&(_=a=>{var c=new XMLHttpRequest;return c.open("GET",a,!1),c.responseType="arraybuffer",c.send(null),new Uint8Array(c.response)}),y=async a=>{if(x(a))return new Promise((d,g)=>{var b=new XMLHttpRequest;b.open("GET",a,!0),b.responseType="arraybuffer",b.onload=()=>{b.status==200||b.status==0&&b.response?d(b.response):g(b.status)},b.onerror=g,b.send(null)});var c=await fetch(a,{credentials:"same-origin"});if(c.ok)return c.arrayBuffer();throw Error(c.status+" : "+c.url)}}var k=console.log.bind(console),C=console.error.bind(console),S,w=!1,P,x=a=>a.startsWith("file://"),E,U,j,$,q,es,Ft,Se;function ts(){var a=tn.buffer;E=new Int8Array(a),j=new Int16Array(a),U=new Uint8Array(a),new Uint16Array(a),$=new Int32Array(a),q=new Uint32Array(a),es=new Float32Array(a),Ft=new Float64Array(a),Se=new BigInt64Array(a),new BigUint64Array(a)}function it(a){throw o.onAbort?.(a),a="Aborted("+a+")",C(a),w=!0,new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.")}var ze;async function Ls(a){if(!S)try{var c=await y(a);return new Uint8Array(c)}catch{}if(a==ze&&S)a=new Uint8Array(S);else if(_)a=_(a);else throw"both async and sync fetching of the wasm failed";return a}async function $s(a,c){try{var d=await Ls(a);return await WebAssembly.instantiate(d,c)}catch(g){C(`failed to asynchronously prepare wasm: ${g}`),it(g)}}async function no(a){var c=ze;if(!S&&!x(c)&&!u)try{var d=fetch(c,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(d,a)}catch(g){C(`wasm streaming compile failed: ${g}`),C("falling back to ArrayBuffer instantiation")}return $s(c,a)}class X{name="ExitStatus";constructor(c){this.message=`Program terminated with exit(${c})`,this.status=c}}var ge=a=>{for(;0<a.length;)a.shift()(o)},rt=[],Nt=[],ss=()=>{var a=o.preRun.shift();Nt.push(a)},bt=0,ns=null;function We(a,c="i8"){switch(c.endsWith("*")&&(c="*"),c){case"i1":return E[a];case"i8":return E[a];case"i16":return j[a>>1];case"i32":return $[a>>2];case"i64":return Se[a>>3];case"float":return es[a>>2];case"double":return Ft[a>>3];case"*":return q[a>>2];default:it(`invalid type for getValue: ${c}`)}}var qs=!0;function os(a){var c="i32";switch(c.endsWith("*")&&(c="*"),c){case"i1":E[a]=0;break;case"i8":E[a]=0;break;case"i16":j[a>>1]=0;break;case"i32":$[a>>2]=0;break;case"i64":Se[a>>3]=BigInt(0);break;case"float":es[a>>2]=0;break;case"double":Ft[a>>3]=0;break;case"*":q[a>>2]=0;break;default:it(`invalid type for setValue: ${c}`)}}var ji=new TextDecoder,Gi=(a,c,d,g)=>{if(d=c+d,g)return d;for(;a[c]&&!(c>=d);)++c;return c},ae=(a,c,d)=>a?ji.decode(U.subarray(a,Gi(U,a,c,d))):"",Li=(a,c)=>{for(var d=0,g=a.length-1;0<=g;g--){var b=a[g];b==="."?a.splice(g,1):b===".."?(a.splice(g,1),d++):d&&(a.splice(g,1),d--)}if(c)for(;d;d--)a.unshift("..");return a},oo=a=>{var c=a.charAt(0)==="/",d=a.slice(-1)==="/";return(a=Li(a.split("/").filter(g=>!!g),!c).join("/"))||c||(a="."),a&&d&&(a+="/"),(c?"/":"")+a},$i=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)},Bs=a=>a&&a.match(/([^\/]+|\/)\/*$/)[1],Ul=()=>{if(u){var a=require("node:crypto");return c=>a.randomFillSync(c)}return c=>crypto.getRandomValues(c)},qi=a=>{(qi=Ul())(a)},Fl=(...a)=>{for(var c="",d=!1,g=a.length-1;-1<=g&&!d;g--){if(d=0<=g?a[g]:"/",typeof d!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!d)return"";c=d+"/"+c,d=d.charAt(0)==="/"}return c=Li(c.split("/").filter(b=>!!b),!d).join("/"),(d?"/":"")+c||"."},is=a=>{var c=Gi(a,0);return ji.decode(a.buffer?a.subarray(0,c):new Uint8Array(a.slice(0,c)))},io=[],jt=a=>{for(var c=0,d=0;d<a.length;++d){var g=a.charCodeAt(d);127>=g?c++:2047>=g?c+=2:55296<=g&&57343>=g?(c+=4,++d):c+=3}return c},Le=(a,c,d,g)=>{if(!(0<g))return 0;var b=d;g=d+g-1;for(var M=0;M<a.length;++M){var D=a.codePointAt(M);if(127>=D){if(d>=g)break;c[d++]=D}else if(2047>=D){if(d+1>=g)break;c[d++]=192|D>>6,c[d++]=128|D&63}else if(65535>=D){if(d+2>=g)break;c[d++]=224|D>>12,c[d++]=128|D>>6&63,c[d++]=128|D&63}else{if(d+3>=g)break;c[d++]=240|D>>18,c[d++]=128|D>>12&63,c[d++]=128|D>>6&63,c[d++]=128|D&63,M++}}return c[d]=0,d-b},Bi=[];function zi(a,c){Bi[a]={input:[],output:[],eb:c},mo(a,Nl)}var Nl={open(a){var c=Bi[a.node.rdev];if(!c)throw new R(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,d,g){if(!a.tty||!a.tty.eb.Bb)throw new R(60);for(var b=0,M=0;M<g;M++){try{var D=a.tty.eb.Bb(a.tty)}catch{throw new R(29)}if(D===void 0&&b===0)throw new R(6);if(D==null)break;b++,c[d+M]=D}return b&&(a.node.atime=Date.now()),b},write(a,c,d,g){if(!a.tty||!a.tty.eb.ub)throw new R(60);try{for(var b=0;b<g;b++)a.tty.eb.ub(a.tty,c[d+b])}catch{throw new R(29)}return g&&(a.node.mtime=a.node.ctime=Date.now()),b}},jl={Bb(){e:{if(!io.length){var a=null;if(u){var c=Buffer.alloc(256),d=0,g=process.stdin.fd;try{d=v.readSync(g,c,0,256)}catch(b){if(b.toString().includes("EOF"))d=0;else throw b}0<d&&(a=c.slice(0,d).toString("utf-8"))}else globalThis.window?.prompt&&(a=window.prompt("Input: "),a!==null&&(a+=`
28
- `));if(!a){a=null;break e}c=Array(jt(a)+1),a=Le(a,c,0,c.length),c.length=a,io=c}a=io.shift()}return a},ub(a,c){c===null||c===10?(k(is(a.output)),a.output=[]):c!=0&&a.output.push(c)},fsync(a){0<a.output?.length&&(k(is(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]}},Gl={ub(a,c){c===null||c===10?(C(is(a.output)),a.output=[]):c!=0&&a.output.push(c)},fsync(a){0<a.output?.length&&(C(is(a.output)),a.output=[])}},B={Wa:null,Xa(){return B.createNode(null,"/",16895,0)},createNode(a,c,d,g){if((d&61440)===24576||(d&61440)===4096)throw new R(63);return B.Wa||(B.Wa={dir:{node:{Ta:B.La.Ta,Ua:B.La.Ua,lookup:B.La.lookup,ib:B.La.ib,rename:B.La.rename,unlink:B.La.unlink,rmdir:B.La.rmdir,readdir:B.La.readdir,symlink:B.La.symlink},stream:{Va:B.Ma.Va}},file:{node:{Ta:B.La.Ta,Ua:B.La.Ua},stream:{Va:B.Ma.Va,read:B.Ma.read,write:B.Ma.write,jb:B.Ma.jb,kb:B.Ma.kb}},link:{node:{Ta:B.La.Ta,Ua:B.La.Ua,readlink:B.La.readlink},stream:{}},yb:{node:{Ta:B.La.Ta,Ua:B.La.Ua},stream:zl}}),d=Ki(a,c,d,g),be(d.mode)?(d.La=B.Wa.dir.node,d.Ma=B.Wa.dir.stream,d.Na={}):(d.mode&61440)===32768?(d.La=B.Wa.file.node,d.Ma=B.Wa.file.stream,d.Ra=0,d.Na=null):(d.mode&61440)===40960?(d.La=B.Wa.link.node,d.Ma=B.Wa.link.stream):(d.mode&61440)===8192&&(d.La=B.Wa.yb.node,d.Ma=B.Wa.yb.stream),d.atime=d.mtime=d.ctime=Date.now(),a&&(a.Na[c]=d,a.atime=a.mtime=a.ctime=d.atime),d},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,be(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 d of["mode","atime","mtime","ctime"])c[d]!=null&&(a[d]=c[d]);c.size!==void 0&&(c=c.size,a.Ra!=c&&(c==0?(a.Na=null,a.Ra=0):(d=a.Na,a.Na=new Uint8Array(c),d&&a.Na.set(d.subarray(0,Math.min(c,a.Ra))),a.Ra=c)))},lookup(){throw B.nb||(B.nb=new R(44),B.nb.stack="<generic error, no stack>"),B.nb},ib(a,c,d,g){return B.createNode(a,c,d,g)},rename(a,c,d){try{var g=Ct(c,d)}catch{}if(g){if(be(a.mode))for(var b in g.Na)throw new R(55);co(g)}delete a.parent.Na[a.name],c.Na[d]=a,a.name=d,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 d=Ct(a,c),g;for(g in d.Na)throw new R(55);delete a.Na[c],a.ctime=a.mtime=Date.now()},readdir(a){return[".","..",...Object.keys(a.Na)]},symlink(a,c,d){return a=B.createNode(a,c,41471,0),a.link=d,a},readlink(a){if((a.mode&61440)!==40960)throw new R(28);return a.link}},Ma:{read(a,c,d,g,b){var M=a.node.Na;if(b>=a.node.Ra)return 0;if(a=Math.min(a.node.Ra-b,g),8<a&&M.subarray)c.set(M.subarray(b,b+a),d);else for(g=0;g<a;g++)c[d+g]=M[b+g];return a},write(a,c,d,g,b,M){if(c.buffer===E.buffer&&(M=!1),!g)return 0;if(a=a.node,a.mtime=a.ctime=Date.now(),c.subarray&&(!a.Na||a.Na.subarray)){if(M)return a.Na=c.subarray(d,d+g),a.Ra=g;if(a.Ra===0&&b===0)return a.Na=c.slice(d,d+g),a.Ra=g;if(b+g<=a.Ra)return a.Na.set(c.subarray(d,d+g),b),g}M=b+g;var D=a.Na?a.Na.length:0;if(D>=M||(M=Math.max(M,D*(1048576>D?2:1.125)>>>0),D!=0&&(M=Math.max(M,256)),D=a.Na,a.Na=new Uint8Array(M),0<a.Ra&&a.Na.set(D.subarray(0,a.Ra),0)),a.Na.subarray&&c.subarray)a.Na.set(c.subarray(d,d+g),b);else for(M=0;M<g;M++)a.Na[b+M]=c[d+M];return a.Ra=Math.max(a.Ra,b+g),g},Va(a,c,d){if(d===1?c+=a.position:d===2&&(a.node.mode&61440)===32768&&(c+=a.node.Ra),0>c)throw new R(28);return c},jb(a,c,d,g,b){if((a.node.mode&61440)!==32768)throw new R(43);if(a=a.node.Na,b&2||!a||a.buffer!==E.buffer){b=!0,g=65536*Math.ceil(c/65536);var M=dr(65536,g);if(M&&U.fill(0,M,M+g),g=M,!g)throw new R(48);a&&((0<d||d+c<a.length)&&(a.subarray?a=a.subarray(d,d+c):a=Array.prototype.slice.call(a,d,d+c)),E.set(a,g))}else b=!1,g=a.byteOffset;return{Xb:g,Eb:b}},kb(a,c,d,g){return B.Ma.write(a,c,0,g,d,!1),0}}},Wi=(a,c)=>{var d=0;return a&&(d|=365),c&&(d|=146),d},ro=null,Hi={},Gt=[],Ll=1,at=null,Vi=!1,Ji=!0,R=class{name="ErrnoError";constructor(a){this.Pa=a}},$l=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}},ql=class{La={};Ma={};bb=null;constructor(a,c,d,g){a||=this,this.parent=a,this.Xa=a.Xa,this.id=Ll++,this.name=c,this.mode=d,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 Me(a,c={}){if(!a)throw new R(44);c.pb??(c.pb=!0),a.charAt(0)==="/"||(a="//"+a);var d=0;e:for(;40>d;d++){a=a.split("/").filter(L=>!!L);for(var g=ro,b="/",M=0;M<a.length;M++){var D=M===a.length-1;if(D&&c.parent)break;if(a[M]!==".")if(a[M]==="..")if(b=$i(b),g===g.parent){a=b+"/"+a.slice(M+1).join("/"),d--;continue e}else g=g.parent;else{b=oo(b+"/"+a[M]);try{g=Ct(g,a[M])}catch(L){if(L?.Pa===44&&D&&c.Wb)return{path:b};throw L}if(!g.bb||D&&!c.pb||(g=g.bb.root),(g.mode&61440)===40960&&(!D||c.ab)){if(!g.La.readlink)throw new R(52);g=g.La.readlink(g),g.charAt(0)==="/"||(g=$i(b)+"/"+g),a=g+"/"+a.slice(M+1).join("/");continue e}}}return{path:b,node:g}}throw new R(32)}function ao(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 lo(a,c){for(var d=0,g=0;g<c.length;g++)d=(d<<5)-d+c.charCodeAt(g)|0;return(a+d>>>0)%at.length}function co(a){var c=lo(a.parent.id,a.name);if(at[c]===a)at[c]=a.cb;else for(c=at[c];c;){if(c.cb===a){c.cb=a.cb;break}c=c.cb}}function Ct(a,c){var d=be(a.mode)?(d=Lt(a,"x"))?d:a.La.lookup?0:2:54;if(d)throw new R(d);for(d=at[lo(a.id,c)];d;d=d.cb){var g=d.name;if(d.parent.id===a.id&&g===c)return d}return a.La.lookup(a,c)}function Ki(a,c,d,g){return a=new ql(a,c,d,g),c=lo(a.parent.id,a.name),a.cb=at[c],at[c]=a}function be(a){return(a&61440)===16384}function Lt(a,c){return Ji?0:c.includes("r")&&!(a.mode&292)||c.includes("w")&&!(a.mode&146)||c.includes("x")&&!(a.mode&73)?2:0}function Yi(a,c){if(!be(a.mode))return 54;try{return Ct(a,c),20}catch{}return Lt(a,"wx")}function Qi(a,c,d){try{var g=Ct(a,c)}catch(b){return b.Pa}if(a=Lt(a,"wx"))return a;if(d){if(!be(g.mode))return 54;if(g===g.parent||ao(g)==="/")return 10}else if(be(g.mode))return 31;return 0}function zs(a){if(!a)throw new R(63);return a}function ye(a){if(a=Gt[a],!a)throw new R(8);return a}function Xi(a,c=-1){if(a=Object.assign(new $l,a),c==-1)e:{for(c=0;4096>=c;c++)if(!Gt[c])break e;throw new R(33)}return a.fd=c,Gt[c]=a}function Bl(a,c=-1){return a=Xi(a,c),a.Ma?.ec?.(a),a}function uo(a,c,d){var g=a?.Ma.Ua;a=g?a:c,g??=c.La.Ua,zs(g),g(a,d)}var zl={open(a){a.Ma=Hi[a.node.rdev].Ma,a.Ma.open?.(a)},Va(){throw new R(70)}};function mo(a,c){Hi[a]={Ma:c}}function Zi(a,c){var d=c==="/";if(d&&ro)throw new R(10);if(!d&&c){var g=Me(c,{pb:!1});if(c=g.path,g=g.node,g.bb)throw new R(10);if(!be(g.mode))throw new R(54)}c={type:a,kc:{},Db:c,Vb:[]},a=a.Xa(c),a.Xa=c,c.root=a,d?ro=a:g&&(g.bb=c,g.Xa&&g.Xa.Vb.push(c))}function Ws(a,c,d){var g=Me(a,{parent:!0}).node;if(a=Bs(a),!a)throw new R(28);if(a==="."||a==="..")throw new R(20);var b=Yi(g,a);if(b)throw new R(b);if(!g.La.ib)throw new R(63);return g.La.ib(g,a,c,d)}function Wl(a,c=438){return Ws(a,c&4095|32768,0)}function $e(a,c=511){return Ws(a,c&1023|16384,0)}function Hs(a,c,d){typeof d>"u"&&(d=c,c=438),Ws(a,c|8192,d)}function po(a,c){if(!Fl(a))throw new R(44);var d=Me(c,{parent:!0}).node;if(!d)throw new R(44);c=Bs(c);var g=Yi(d,c);if(g)throw new R(g);if(!d.La.symlink)throw new R(63);d.La.symlink(d,c,a)}function er(a){var c=Me(a,{parent:!0}).node;a=Bs(a);var d=Ct(c,a),g=Qi(c,a,!0);if(g)throw new R(g);if(!c.La.rmdir)throw new R(63);if(d.bb)throw new R(10);c.La.rmdir(c,a),co(d)}function tr(a){var c=Me(a,{parent:!0}).node;if(!c)throw new R(44);a=Bs(a);var d=Ct(c,a),g=Qi(c,a,!1);if(g)throw new R(g);if(!c.La.unlink)throw new R(63);if(d.bb)throw new R(10);c.La.unlink(c,a),co(d)}function rs(a,c){return a=Me(a,{ab:!c}).node,zs(a.La.Ta)(a)}function sr(a,c,d,g){uo(a,c,{mode:d&4095|c.mode&-4096,ctime:Date.now(),Lb:g})}function Vs(a,c){a=typeof a=="string"?Me(a,{ab:!0}).node:a,sr(null,a,c)}function nr(a,c,d){if(be(c.mode))throw new R(31);if((c.mode&61440)!==32768)throw new R(28);var g=Lt(c,"w");if(g)throw new R(g);uo(a,c,{size:d,timestamp:Date.now()})}function $t(a,c,d=438){if(a==="")throw new R(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(d=c&64?d&4095|32768:0,typeof a=="object")g=a;else{var b=a.endsWith("/"),M=Me(a,{ab:!(c&131072),Wb:!0});g=M.node,a=M.path}if(M=!1,c&64)if(g){if(c&128)throw new R(20)}else{if(b)throw new R(31);g=Ws(a,d|511,0),M=!0}if(!g)throw new R(44);if((g.mode&61440)===8192&&(c&=-513),c&65536&&!be(g.mode))throw new R(54);if(!M&&(g?(g.mode&61440)===40960?b=32:(b=["r","w","rw"][c&3],c&512&&(b+="w"),b=be(g.mode)&&(b!=="r"||c&576)?31:Lt(g,b)):b=44,b))throw new R(b);return c&512&&!M&&(b=g,b=typeof b=="string"?Me(b,{ab:!0}).node:b,nr(null,b,0)),c=Xi({node:g,path:ao(g),flags:c&-131713,seekable:!0,position:0,Ma:g.Ma,Yb:[],error:!1}),c.Ma.open&&c.Ma.open(c),M&&Vs(g,d&511),c}function ho(a){if(a.fd===null)throw new R(8);a.rb&&(a.rb=null);try{a.Ma.close&&a.Ma.close(a)}catch(c){throw c}finally{Gt[a.fd]=null}a.fd=null}function or(a,c,d){if(a.fd===null)throw new R(8);if(!a.seekable||!a.Ma.Va)throw new R(70);if(d!=0&&d!=1&&d!=2)throw new R(28);a.position=a.Ma.Va(a,c,d),a.Yb=[]}function ir(a,c,d,g,b){if(0>g||0>b)throw new R(28);if(a.fd===null)throw new R(8);if((a.flags&2097155)===1)throw new R(8);if(be(a.node.mode))throw new R(31);if(!a.Ma.read)throw new R(28);var M=typeof b<"u";if(!M)b=a.position;else if(!a.seekable)throw new R(70);return c=a.Ma.read(a,c,d,g,b),M||(a.position+=c),c}function rr(a,c,d,g,b){if(0>g||0>b)throw new R(28);if(a.fd===null)throw new R(8);if((a.flags&2097155)===0)throw new R(8);if(be(a.node.mode))throw new R(31);if(!a.Ma.write)throw new R(28);a.seekable&&a.flags&1024&&or(a,0,2);var M=typeof b<"u";if(!M)b=a.position;else if(!a.seekable)throw new R(70);return c=a.Ma.write(a,c,d,g,b,void 0),M||(a.position+=c),c}function Hl(a){var c=c||0,d="binary";d!=="utf8"&&d!=="binary"&&it(`Invalid encoding type "${d}"`),c=$t(a,c),a=rs(a).size;var g=new Uint8Array(a);return ir(c,g,0,a,0),d==="utf8"&&(g=is(g)),ho(c),g}function lt(a,c,d){a=oo("/dev/"+a);var g=Wi(!!c,!!d);lt.Cb??(lt.Cb=64);var b=lt.Cb++<<8|0;mo(b,{open(M){M.seekable=!1},close(){d?.buffer?.length&&d(10)},read(M,D,L,Y){for(var z=0,te=0;te<Y;te++){try{var pe=c()}catch{throw new R(29)}if(pe===void 0&&z===0)throw new R(6);if(pe==null)break;z++,D[L+te]=pe}return z&&(M.node.atime=Date.now()),z},write(M,D,L,Y){for(var z=0;z<Y;z++)try{d(D[L+z])}catch{throw new R(29)}return Y&&(M.node.mtime=M.node.ctime=Date.now()),z}}),Hs(a,g,b)}var ee={};function wt(a,c,d){if(c.charAt(0)==="/")return c;if(a=a===-100?"/":ye(a).path,c.length==0){if(!d)throw new R(44);return a}return a+"/"+c}function Js(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,Se[a+24>>3]=BigInt(c.size),$[a+32>>2]=4096,$[a+36>>2]=c.blocks;var d=c.atime.getTime(),g=c.mtime.getTime(),b=c.ctime.getTime();return Se[a+40>>3]=BigInt(Math.floor(d/1e3)),q[a+48>>2]=d%1e3*1e6,Se[a+56>>3]=BigInt(Math.floor(g/1e3)),q[a+64>>2]=g%1e3*1e6,Se[a+72>>3]=BigInt(Math.floor(b/1e3)),q[a+80>>2]=b%1e3*1e6,Se[a+88>>3]=BigInt(c.ino),0}var Ks=void 0,Ys=()=>{var a=$[+Ks>>2];return Ks+=4,a},go=0,Vl=[0,31,60,91,121,152,182,213,244,274,305,335],Jl=[0,31,59,90,120,151,181,212,243,273,304,334],as={},ar=a=>{P=a,qs||0<go||(o.onExit?.(a),w=!0),p(a,new X(a))},Kl=a=>{if(!w)try{a()}catch(c){c instanceof X||c=="unwind"||p(1,c)}finally{if(!(qs||0<go))try{P=a=P,ar(a)}catch(c){c instanceof X||c=="unwind"||p(1,c)}}},fo={},lr=()=>{if(!yo){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 fo)fo[c]===void 0?delete a[c]:a[c]=fo[c];var d=[];for(c in a)d.push(`${c}=${a[c]}`);yo=d}return yo},yo,Yl=(a,c,d,g)=>{var b={string:z=>{var te=0;if(z!=null&&z!==0){te=jt(z)+1;var pe=kt(te);Le(z,U,pe,te),te=pe}return te},array:z=>{var te=kt(z.length);return E.set(z,te),te}};a=o["_"+a];var M=[],D=0;if(g)for(var L=0;L<g.length;L++){var Y=b[d[L]];Y?(D===0&&(D=en()),M[L]=Y(g[L])):M[L]=g[L]}return d=a(...M),d=(function(z){return D!==0&&Zs(D),c==="string"?ae(z):c==="boolean"?!!z:z})(d)},Qs=a=>{var c=jt(a)+1,d=Xs(c);return d&&Le(a,U,d,c),d},St,_o=[],ct=a=>{St.delete(ut.get(a)),ut.set(a,null),_o.push(a)},cr=a=>{let c=a.length;return[c%128|128,c>>7,...a]},Ql={i:127,p:127,j:126,f:125,d:124,e:111},ur=a=>cr(Array.from(a,c=>Ql[c])),ls=(a,c)=>{if(!St){St=new WeakMap;var d=ut.length;if(St)for(var g=0;g<0+d;g++){var b=ut.get(g);b&&St.set(b,g)}}if(d=St.get(a)||0)return d;d=_o.length?_o.pop():ut.grow(1);try{ut.set(d,a)}catch(M){if(!(M instanceof TypeError))throw M;c=Uint8Array.of(0,97,115,109,1,0,0,0,1,...cr([1,96,...ur(c.slice(1)),...ur(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,ut.set(d,c)}return St.set(a,d),d};if(at=Array(4096),Zi(B,"/"),$e("/tmp"),$e("/home"),$e("/home/web_user"),(function(){$e("/dev"),mo(259,{read:()=>0,write:(g,b,M,D)=>D,Va:()=>0}),Hs("/dev/null",259),zi(1280,jl),zi(1536,Gl),Hs("/dev/tty",1280),Hs("/dev/tty1",1536);var a=new Uint8Array(1024),c=0,d=()=>(c===0&&(qi(a),c=a.byteLength),a[--c]);lt("random",d),lt("urandom",d),$e("/dev/shm"),$e("/dev/shm/tmp")})(),(function(){$e("/proc");var a=$e("/proc/self");$e("/proc/self/fd"),Zi({Xa(){var c=Ki(a,"fd",16895,73);return c.Ma={Va:B.Ma.Va},c.La={lookup(d,g){d=+g;var b=ye(d);return d={parent:null,Xa:{Db:"fake"},La:{readlink:()=>b.path},id:d+1},d.parent=d},readdir(){return Array.from(Gt.entries()).filter(([,d])=>d).map(([d])=>d.toString())}},c}},"/proc/self/fd")})(),o.noExitRuntime&&(qs=o.noExitRuntime),o.print&&(k=o.print),o.printErr&&(C=o.printErr),o.wasmBinary&&(S=o.wasmBinary),o.thisProgram&&(m=o.thisProgram),o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);0<o.preInit.length;)o.preInit.shift()();o.stackSave=()=>en(),o.stackRestore=a=>Zs(a),o.stackAlloc=a=>kt(a),o.cwrap=(a,c,d,g)=>{var b=!d||d.every(M=>M==="number"||M==="boolean");return c!=="string"&&b&&!g?o["_"+a]:(...M)=>Yl(a,c,d,M)},o.addFunction=ls,o.removeFunction=ct,o.UTF8ToString=ae,o.stringToNewUTF8=Qs,o.writeArrayToMemory=(a,c)=>{E.set(a,c)};var Xs,cs,dr,mr,Zs,kt,en,tn,ut,Xl={a:(a,c,d,g)=>it(`Assertion failed: ${ae(a)}, at: `+[c?ae(c):"unknown filename",d,g?ae(g):"unknown function"]),i:function(a,c){try{return a=ae(a),Vs(a,c),0}catch(d){if(typeof ee>"u"||d.name!=="ErrnoError")throw d;return-d.Pa}},L:function(a,c,d){try{if(c=ae(c),c=wt(a,c),d&-8)return-28;var g=Me(c,{ab:!0}).node;return g?(a="",d&4&&(a+="r"),d&2&&(a+="w"),d&1&&(a+="x"),a&&Lt(g,a)?-2:0):-44}catch(b){if(typeof ee>"u"||b.name!=="ErrnoError")throw b;return-b.Pa}},j:function(a,c){try{var d=ye(a);return sr(d,d.node,c,!1),0}catch(g){if(typeof ee>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},h:function(a){try{var c=ye(a);return uo(c,c.node,{timestamp:Date.now(),Lb:!1}),0}catch(d){if(typeof ee>"u"||d.name!=="ErrnoError")throw d;return-d.Pa}},b:function(a,c,d){Ks=d;try{var g=ye(a);switch(c){case 0:var b=Ys();if(0>b)break;for(;Gt[b];)b++;return Bl(g,b).fd;case 1:case 2:return 0;case 3:return g.flags;case 4:return b=Ys(),g.flags|=b,0;case 12:return b=Ys(),j[b+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(M){if(typeof ee>"u"||M.name!=="ErrnoError")throw M;return-M.Pa}},g:function(a,c){try{var d=ye(a),g=d.node,b=d.Ma.Ta;a=b?d:g,b??=g.La.Ta,zs(b);var M=b(a);return Js(c,M)}catch(D){if(typeof ee>"u"||D.name!=="ErrnoError")throw D;return-D.Pa}},H:function(a,c){c=-9007199254740992>c||9007199254740992<c?NaN:Number(c);try{if(isNaN(c))return-61;var d=ye(a);if(0>c||(d.flags&2097155)===0)throw new R(28);return nr(d,d.node,c),0}catch(g){if(typeof ee>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},G:function(a,c){try{if(c===0)return-28;var d=jt("/")+1;return c<d?-68:(Le("/",U,a,c),d)}catch(g){if(typeof ee>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},K:function(a,c){try{return a=ae(a),Js(c,rs(a,!0))}catch(d){if(typeof ee>"u"||d.name!=="ErrnoError")throw d;return-d.Pa}},C:function(a,c,d){try{return c=ae(c),c=wt(a,c),$e(c,d),0}catch(g){if(typeof ee>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},J:function(a,c,d,g){try{c=ae(c);var b=g&256;return c=wt(a,c,g&4096),Js(d,b?rs(c,!0):rs(c))}catch(M){if(typeof ee>"u"||M.name!=="ErrnoError")throw M;return-M.Pa}},x:function(a,c,d,g){Ks=g;try{c=ae(c),c=wt(a,c);var b=g?Ys():0;return $t(c,d,b).fd}catch(M){if(typeof ee>"u"||M.name!=="ErrnoError")throw M;return-M.Pa}},v:function(a,c,d,g){try{if(c=ae(c),c=wt(a,c),0>=g)return-28;var b=Me(c).node;if(!b)throw new R(44);if(!b.La.readlink)throw new R(28);var M=b.La.readlink(b),D=Math.min(g,jt(M)),L=E[d+D];return Le(M,U,d,g+1),E[d+D]=L,D}catch(Y){if(typeof ee>"u"||Y.name!=="ErrnoError")throw Y;return-Y.Pa}},u:function(a){try{return a=ae(a),er(a),0}catch(c){if(typeof ee>"u"||c.name!=="ErrnoError")throw c;return-c.Pa}},f:function(a,c){try{return a=ae(a),Js(c,rs(a))}catch(d){if(typeof ee>"u"||d.name!=="ErrnoError")throw d;return-d.Pa}},r:function(a,c,d){try{if(c=ae(c),c=wt(a,c),d)if(d===512)er(c);else return-28;else tr(c);return 0}catch(g){if(typeof ee>"u"||g.name!=="ErrnoError")throw g;return-g.Pa}},q:function(a,c,d){try{c=ae(c),c=wt(a,c,!0);var g=Date.now(),b,M;if(d){var D=q[d>>2]+4294967296*$[d+4>>2],L=$[d+8>>2];L==1073741823?b=g:L==1073741822?b=null:b=1e3*D+L/1e6,d+=16,D=q[d>>2]+4294967296*$[d+4>>2],L=$[d+8>>2],L==1073741823?M=g:L==1073741822?M=null:M=1e3*D+L/1e6}else M=b=g;if((M??b)!==null){a=b;var Y=Me(c,{ab:!0}).node;zs(Y.La.Ua)(Y,{atime:a,mtime:M})}return 0}catch(z){if(typeof ee>"u"||z.name!=="ErrnoError")throw z;return-z.Pa}},m:()=>it(""),l:()=>{qs=!1,go=0},A:function(a,c){a=-9007199254740992>a||9007199254740992<a?NaN:Number(a),a=new Date(1e3*a),$[c>>2]=a.getSeconds(),$[c+4>>2]=a.getMinutes(),$[c+8>>2]=a.getHours(),$[c+12>>2]=a.getDate(),$[c+16>>2]=a.getMonth(),$[c+20>>2]=a.getFullYear()-1900,$[c+24>>2]=a.getDay();var d=a.getFullYear();$[c+28>>2]=(d%4!==0||d%100===0&&d%400!==0?Jl:Vl)[a.getMonth()]+a.getDate()-1|0,$[c+36>>2]=-(60*a.getTimezoneOffset()),d=new Date(a.getFullYear(),6,1).getTimezoneOffset();var g=new Date(a.getFullYear(),0,1).getTimezoneOffset();$[c+32>>2]=(d!=g&&a.getTimezoneOffset()==Math.min(g,d))|0},y:function(a,c,d,g,b,M,D){b=-9007199254740992>b||9007199254740992<b?NaN:Number(b);try{var L=ye(g);if((c&2)!==0&&(d&2)===0&&(L.flags&2097155)!==2)throw new R(2);if((L.flags&2097155)===1)throw new R(2);if(!L.Ma.jb)throw new R(43);if(!a)throw new R(28);var Y=L.Ma.jb(L,a,b,c,d),z=Y.Xb;return $[M>>2]=Y.Eb,q[D>>2]=z,0}catch(te){if(typeof ee>"u"||te.name!=="ErrnoError")throw te;return-te.Pa}},z:function(a,c,d,g,b,M){M=-9007199254740992>M||9007199254740992<M?NaN:Number(M);try{var D=ye(b);if(d&2){if(d=M,(D.node.mode&61440)!==32768)throw new R(43);if(!(g&2)){var L=U.slice(a,a+c);D.Ma.kb&&D.Ma.kb(D,L,d,c,g)}}}catch(Y){if(typeof ee>"u"||Y.name!=="ErrnoError")throw Y;return-Y.Pa}},n:(a,c)=>{if(as[a]&&(clearTimeout(as[a].id),delete as[a]),!c)return 0;var d=setTimeout(()=>{delete as[a],Kl(()=>mr(a,performance.now()))},c);return as[a]={id:d,lc:c},0},B:(a,c,d,g)=>{var b=new Date().getFullYear(),M=new Date(b,0,1).getTimezoneOffset();b=new Date(b,6,1).getTimezoneOffset(),q[a>>2]=60*Math.max(M,b),$[c>>2]=+(M!=b),c=D=>{var L=Math.abs(D);return`UTC${0<=D?"-":"+"}${String(Math.floor(L/60)).padStart(2,"0")}${String(L%60).padStart(2,"0")}`},a=c(M),c=c(b),b<M?(Le(a,U,d,17),Le(c,U,g,17)):(Le(a,U,g,17),Le(c,U,d,17))},d:()=>Date.now(),s:()=>2147483648,c:()=>performance.now(),o:a=>{var c=U.length;if(a>>>=0,2147483648<a)return!1;for(var d=1;4>=d;d*=2){var g=c*(1+.2/d);g=Math.min(g,a+100663296);e:{g=(Math.min(2147483648,65536*Math.ceil(Math.max(a,g)/65536))-tn.buffer.byteLength+65535)/65536|0;try{tn.grow(g),ts();var b=1;break e}catch{}b=void 0}if(b)return!0}return!1},E:(a,c)=>{var d=0,g=0,b;for(b of lr()){var M=c+d;q[a+g>>2]=M,d+=Le(b,U,M,1/0)+1,g+=4}return 0},F:(a,c)=>{var d=lr();q[a>>2]=d.length,a=0;for(var g of d)a+=jt(g)+1;return q[c>>2]=a,0},e:function(a){try{var c=ye(a);return ho(c),0}catch(d){if(typeof ee>"u"||d.name!=="ErrnoError")throw d;return d.Pa}},p:function(a,c){try{var d=ye(a);return E[c]=d.tty?2:be(d.mode)?3:(d.mode&61440)===40960?7:4,j[c+2>>1]=0,Se[c+8>>3]=BigInt(0),Se[c+16>>3]=BigInt(0),0}catch(g){if(typeof ee>"u"||g.name!=="ErrnoError")throw g;return g.Pa}},w:function(a,c,d,g){try{e:{var b=ye(a);a=c;for(var M,D=c=0;D<d;D++){var L=q[a>>2],Y=q[a+4>>2];a+=8;var z=ir(b,E,L,Y,M);if(0>z){var te=-1;break e}if(c+=z,z<Y)break;typeof M<"u"&&(M+=z)}te=c}return q[g>>2]=te,0}catch(pe){if(typeof ee>"u"||pe.name!=="ErrnoError")throw pe;return pe.Pa}},D:function(a,c,d,g){c=-9007199254740992>c||9007199254740992<c?NaN:Number(c);try{if(isNaN(c))return 61;var b=ye(a);return or(b,c,d),Se[g>>3]=BigInt(b.position),b.rb&&c===0&&d===0&&(b.rb=null),0}catch(M){if(typeof ee>"u"||M.name!=="ErrnoError")throw M;return M.Pa}},I:function(a){try{var c=ye(a);return c.Ma?.fsync?.(c)}catch(d){if(typeof ee>"u"||d.name!=="ErrnoError")throw d;return d.Pa}},t:function(a,c,d,g){try{e:{var b=ye(a);a=c;for(var M,D=c=0;D<d;D++){var L=q[a>>2],Y=q[a+4>>2];a+=8;var z=rr(b,E,L,Y,M);if(0>z){var te=-1;break e}if(c+=z,z<Y)break;typeof M<"u"&&(M+=z)}te=c}return q[g>>2]=te,0}catch(pe){if(typeof ee>"u"||pe.name!=="ErrnoError")throw pe;return pe.Pa}},k:ar};function bo(){function a(){if(o.calledRun=!0,!w){if(!o.noFSInit&&!Vi){var c,d;Vi=!0,c??=o.stdin,d??=o.stdout,g??=o.stderr,c?lt("stdin",c):po("/dev/tty","/dev/stdin"),d?lt("stdout",null,d):po("/dev/tty","/dev/stdout"),g?lt("stderr",null,g):po("/dev/tty1","/dev/stderr"),$t("/dev/stdin",0),$t("/dev/stdout",1),$t("/dev/stderr",1)}if(Co.N(),Ji=!1,o.onRuntimeInitialized?.(),o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;){var g=o.postRun.shift();rt.push(g)}ge(rt)}}if(0<bt)ns=bo;else{if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)ss();ge(Nt),0<bt?ns=bo:o.setStatus?(o.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>o.setStatus(""),1),a()},1)):a()}}var Co;return(async function(){function a(d){return d=Co=d.exports,o._sqlite3_free=d.P,o._sqlite3_value_text=d.Q,o._sqlite3_prepare_v2=d.R,o._sqlite3_step=d.S,o._sqlite3_reset=d.T,o._sqlite3_exec=d.U,o._sqlite3_finalize=d.V,o._sqlite3_column_name=d.W,o._sqlite3_column_text=d.X,o._sqlite3_column_type=d.Y,o._sqlite3_errmsg=d.Z,o._sqlite3_clear_bindings=d._,o._sqlite3_value_blob=d.$,o._sqlite3_value_bytes=d.aa,o._sqlite3_value_double=d.ba,o._sqlite3_value_int=d.ca,o._sqlite3_value_type=d.da,o._sqlite3_result_blob=d.ea,o._sqlite3_result_double=d.fa,o._sqlite3_result_error=d.ga,o._sqlite3_result_int=d.ha,o._sqlite3_result_int64=d.ia,o._sqlite3_result_null=d.ja,o._sqlite3_result_text=d.ka,o._sqlite3_aggregate_context=d.la,o._sqlite3_column_count=d.ma,o._sqlite3_data_count=d.na,o._sqlite3_column_blob=d.oa,o._sqlite3_column_bytes=d.pa,o._sqlite3_column_double=d.qa,o._sqlite3_bind_blob=d.ra,o._sqlite3_bind_double=d.sa,o._sqlite3_bind_int=d.ta,o._sqlite3_bind_text=d.ua,o._sqlite3_bind_parameter_index=d.va,o._sqlite3_sql=d.wa,o._sqlite3_normalized_sql=d.xa,o._sqlite3_changes=d.ya,o._sqlite3_close_v2=d.za,o._sqlite3_create_function_v2=d.Aa,o._sqlite3_update_hook=d.Ba,o._sqlite3_open=d.Ca,Xs=o._malloc=d.Da,cs=o._free=d.Ea,o._RegisterExtensionFunctions=d.Fa,dr=d.Ga,mr=d.Ha,Zs=d.Ia,kt=d.Ja,en=d.Ka,tn=d.M,ut=d.O,ts(),bt--,o.monitorRunDependencies?.(bt),bt==0&&ns&&(d=ns,ns=null,d()),Co}bt++,o.monitorRunDependencies?.(bt);var c={a:Xl};return o.instantiateWasm?new Promise(d=>{o.instantiateWasm(c,(g,b)=>{d(a(g,b))})}):(ze??=o.locateFile?o.locateFile("sql-wasm.wasm",f):f+"sql-wasm.wasm",a((await no(c)).instance))})(),bo(),s}),mn)};typeof hn=="object"&&typeof Pt=="object"?(Pt.exports=pn,Pt.exports.default=pn):typeof define=="function"&&define.amd?define([],function(){return pn}):typeof hn=="object"&&(hn.Module=pn)});var Cn=se(Ve=>{"use strict";Object.defineProperty(Ve,"__esModule",{value:!0});Ve.utf8Count=lu;Ve.utf8EncodeJs=ea;Ve.utf8EncodeTE=ta;Ve.utf8Encode=du;Ve.utf8DecodeJs=sa;Ve.utf8DecodeTD=na;Ve.utf8Decode=gu;function lu(i){let e=i.length,t=0,s=0;for(;s<e;){let n=i.charCodeAt(s++);if((n&4294967168)===0){t++;continue}else if((n&4294965248)===0)t+=2;else{if(n>=55296&&n<=56319&&s<e){let o=i.charCodeAt(s);(o&64512)===56320&&(++s,n=((n&1023)<<10)+(o&1023)+65536)}(n&4294901760)===0?t+=3:t+=4}}return t}function ea(i,e,t){let s=i.length,n=t,o=0;for(;o<s;){let r=i.charCodeAt(o++);if((r&4294967168)===0){e[n++]=r;continue}else if((r&4294965248)===0)e[n++]=r>>6&31|192;else{if(r>=55296&&r<=56319&&o<s){let l=i.charCodeAt(o);(l&64512)===56320&&(++o,r=((r&1023)<<10)+(l&1023)+65536)}(r&4294901760)===0?(e[n++]=r>>12&15|224,e[n++]=r>>6&63|128):(e[n++]=r>>18&7|240,e[n++]=r>>12&63|128,e[n++]=r>>6&63|128)}e[n++]=r&63|128}}var cu=new TextEncoder,uu=50;function ta(i,e,t){cu.encodeInto(i,e.subarray(t))}function du(i,e,t){i.length>uu?ta(i,e,t):ea(i,e,t)}var mu=4096;function sa(i,e,t){let s=e,n=s+t,o=[],r="";for(;s<n;){let l=i[s++];if((l&128)===0)o.push(l);else if((l&224)===192){let u=i[s++]&63;o.push((l&31)<<6|u)}else if((l&240)===224){let u=i[s++]&63,m=i[s++]&63;o.push((l&31)<<12|u<<6|m)}else if((l&248)===240){let u=i[s++]&63,m=i[s++]&63,p=i[s++]&63,h=(l&7)<<18|u<<12|m<<6|p;h>65535&&(h-=65536,o.push(h>>>10&1023|55296),h=56320|h&1023),o.push(h)}else o.push(l);o.length>=mu&&(r+=String.fromCharCode(...o),o.length=0)}return o.length>0&&(r+=String.fromCharCode(...o)),r}var pu=new TextDecoder,hu=200;function na(i,e,t){let s=i.subarray(e,e+t);return pu.decode(s)}function gu(i,e,t){return t>hu?na(i,e,t):sa(i,e,t)}});var Ho=se(wn=>{"use strict";Object.defineProperty(wn,"__esModule",{value:!0});wn.ExtData=void 0;var Wo=class{type;data;constructor(e,t){this.type=e,this.data=t}};wn.ExtData=Wo});var kn=se(Sn=>{"use strict";Object.defineProperty(Sn,"__esModule",{value:!0});Sn.DecodeError=void 0;var Vo=class i extends Error{constructor(e){super(e);let t=Object.create(i.prototype);Object.setPrototypeOf(this,t),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:i.name})}};Sn.DecodeError=Vo});var vn=se(dt=>{"use strict";Object.defineProperty(dt,"__esModule",{value:!0});dt.UINT32_MAX=void 0;dt.setUint64=fu;dt.setInt64=yu;dt.getInt64=_u;dt.getUint64=bu;dt.UINT32_MAX=4294967295;function fu(i,e,t){let s=t/4294967296,n=t;i.setUint32(e,s),i.setUint32(e+4,n)}function yu(i,e,t){let s=Math.floor(t/4294967296),n=t;i.setUint32(e,s),i.setUint32(e+4,n)}function _u(i,e){let t=i.getInt32(e),s=i.getUint32(e+4);return t*4294967296+s}function bu(i,e){let t=i.getUint32(e),s=i.getUint32(e+4);return t*4294967296+s}});var Jo=se(Ee=>{"use strict";Object.defineProperty(Ee,"__esModule",{value:!0});Ee.timestampExtension=Ee.EXT_TIMESTAMP=void 0;Ee.encodeTimeSpecToTimestamp=ia;Ee.encodeDateToTimeSpec=ra;Ee.encodeTimestampExtension=aa;Ee.decodeTimestampToTimeSpec=la;Ee.decodeTimestampExtension=ca;var Cu=kn(),oa=vn();Ee.EXT_TIMESTAMP=-1;var wu=4294967296-1,Su=17179869184-1;function ia({sec:i,nsec:e}){if(i>=0&&e>=0&&i<=Su)if(e===0&&i<=wu){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,i),t}else{let t=i/4294967296,s=i&4294967295,n=new Uint8Array(8),o=new DataView(n.buffer);return o.setUint32(0,e<<2|t&3),o.setUint32(4,s),n}else{let t=new Uint8Array(12),s=new DataView(t.buffer);return s.setUint32(0,e),(0,oa.setInt64)(s,4,i),t}}function ra(i){let e=i.getTime(),t=Math.floor(e/1e3),s=(e-t*1e3)*1e6,n=Math.floor(s/1e9);return{sec:t+n,nsec:s-n*1e9}}function aa(i){if(i instanceof Date){let e=ra(i);return ia(e)}else return null}function la(i){let e=new DataView(i.buffer,i.byteOffset,i.byteLength);switch(i.byteLength){case 4:return{sec:e.getUint32(0),nsec:0};case 8:{let t=e.getUint32(0),s=e.getUint32(4),n=(t&3)*4294967296+s,o=t>>>2;return{sec:n,nsec:o}}case 12:{let t=(0,oa.getInt64)(e,4),s=e.getUint32(0);return{sec:t,nsec:s}}default:throw new Cu.DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${i.length}`)}}function ca(i){let e=la(i);return new Date(e.sec*1e3+e.nsec/1e6)}Ee.timestampExtension={type:Ee.EXT_TIMESTAMP,encode:aa,decode:ca}});var Mn=se(Tn=>{"use strict";Object.defineProperty(Tn,"__esModule",{value:!0});Tn.ExtensionCodec=void 0;var Pn=Ho(),ku=Jo(),Ko=class i{static defaultCodec=new i;__brand;builtInEncoders=[];builtInDecoders=[];encoders=[];decoders=[];constructor(){this.register(ku.timestampExtension)}register({type:e,encode:t,decode:s}){if(e>=0)this.encoders[e]=t,this.decoders[e]=s;else{let n=-1-e;this.builtInEncoders[n]=t,this.builtInDecoders[n]=s}}tryToEncode(e,t){for(let s=0;s<this.builtInEncoders.length;s++){let n=this.builtInEncoders[s];if(n!=null){let o=n(e,t);if(o!=null){let r=-1-s;return new Pn.ExtData(r,o)}}}for(let s=0;s<this.encoders.length;s++){let n=this.encoders[s];if(n!=null){let o=n(e,t);if(o!=null){let r=s;return new Pn.ExtData(r,o)}}}return e instanceof Pn.ExtData?e:null}decode(e,t,s){let n=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return n?n(e,t,s):new Pn.ExtData(t,e)}};Tn.ExtensionCodec=Ko});var Qo=se(Yo=>{"use strict";Object.defineProperty(Yo,"__esModule",{value:!0});Yo.ensureUint8Array=Pu;function vu(i){return i instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&i instanceof SharedArrayBuffer}function Pu(i){return i instanceof Uint8Array?i:ArrayBuffer.isView(i)?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):vu(i)?new Uint8Array(i):Uint8Array.from(i)}});var Zo=se(qe=>{"use strict";Object.defineProperty(qe,"__esModule",{value:!0});qe.Encoder=qe.DEFAULT_INITIAL_BUFFER_SIZE=qe.DEFAULT_MAX_DEPTH=void 0;var ua=Cn(),Tu=Mn(),da=vn(),Mu=Qo();qe.DEFAULT_MAX_DEPTH=100;qe.DEFAULT_INITIAL_BUFFER_SIZE=2048;var Xo=class i{extensionCodec;context;useBigInt64;maxDepth;initialBufferSize;sortKeys;forceFloat32;ignoreUndefined;forceIntegerToFloat;pos;view;bytes;entered=!1;constructor(e){this.extensionCodec=e?.extensionCodec??Tu.ExtensionCodec.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.maxDepth=e?.maxDepth??qe.DEFAULT_MAX_DEPTH,this.initialBufferSize=e?.initialBufferSize??qe.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 i({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),n=new DataView(t);s.set(this.bytes),this.view=n,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,ua.utf8Count)(e);this.ensureBufferSizeToWrite(5+s),this.writeStringHeader(s),(0,ua.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,Mu.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 n of e)this.doEncode(n,t+1)}countWithoutUndefined(e,t){let s=0;for(let n of t)e[n]!==void 0&&s++;return s}encodeMap(e,t){let s=Object.keys(e);this.sortKeys&&s.sort();let n=this.ignoreUndefined?this.countWithoutUndefined(e,s):s.length;if(n<16)this.writeU8(128+n);else if(n<65536)this.writeU8(222),this.writeU16(n);else if(n<4294967296)this.writeU8(223),this.writeU32(n);else throw new Error(`Too large map object: ${n}`);for(let o of s){let r=e[o];this.ignoreUndefined&&r===void 0||(this.encodeString(o),this.doEncode(r,t+1))}}encodeExtension(e){if(typeof e.data=="function"){let s=e.data(this.pos+6),n=s.length;if(n>=4294967296)throw new Error(`Too large extension object: ${n}`);this.writeU8(201),this.writeU32(n),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,da.setUint64)(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),(0,da.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}};qe.Encoder=Xo});var ma=se(ei=>{"use strict";Object.defineProperty(ei,"__esModule",{value:!0});ei.encode=Au;var xu=Zo();function Au(i,e){return new xu.Encoder(e).encodeSharedRef(i)}});var pa=se(ti=>{"use strict";Object.defineProperty(ti,"__esModule",{value:!0});ti.prettyByte=Du;function Du(i){return`${i<0?"-":""}0x${Math.abs(i).toString(16).padStart(2,"0")}`}});var ha=se(xn=>{"use strict";Object.defineProperty(xn,"__esModule",{value:!0});xn.CachedKeyDecoder=void 0;var Eu=Cn(),Iu=16,Ru=16,si=class{hit=0;miss=0;caches;maxKeyLength;maxLengthPerKey;constructor(e=Iu,t=Ru){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 n=this.caches[s-1];e:for(let o of n){let r=o.bytes;for(let l=0;l<s;l++)if(r[l]!==e[t+l])continue e;return o.str}return null}store(e,t){let s=this.caches[e.length-1],n={bytes:e,str:t};s.length>=this.maxLengthPerKey?s[Math.random()*s.length|0]=n:s.push(n)}decode(e,t,s){let n=this.find(e,t,s);if(n!=null)return this.hit++,n;this.miss++;let o=(0,Eu.utf8DecodeJs)(e,t,s),r=Uint8Array.prototype.slice.call(e,t,t+s);return this.store(r,o),o}};xn.CachedKeyDecoder=si});var Dn=se(An=>{"use strict";Object.defineProperty(An,"__esModule",{value:!0});An.Decoder=void 0;var ni=pa(),Ou=Mn(),At=vn(),Uu=Cn(),ga=Qo(),Fu=ha(),Je=kn(),oi="array",fs="map_key",ya="map_value",Nu=i=>{if(typeof i=="string"||typeof i=="number")return i;throw new Je.DecodeError("The type of key must be string or number but "+typeof i)},ii=class{stack=[];stackHeadPosition=-1;get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(e){let t=this.getUninitializedStateFromPool();t.type=oi,t.position=0,t.size=e,t.array=new Array(e)}pushMapState(e){let t=this.getUninitializedStateFromPool();t.type=fs,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===oi){let s=e;s.size=0,s.array=void 0,s.position=0,s.type=void 0}if(e.type===fs||e.type===ya){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}},gs=-1,ai=new DataView(new ArrayBuffer(0)),ju=new Uint8Array(ai.buffer);try{ai.getInt8(0)}catch(i){if(!(i 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 fa=new RangeError("Insufficient data"),Gu=new Fu.CachedKeyDecoder,ri=class i{extensionCodec;context;useBigInt64;rawStrings;maxStrLength;maxBinLength;maxArrayLength;maxMapLength;maxExtLength;keyDecoder;mapKeyConverter;totalPos=0;pos=0;view=ai;bytes=ju;headByte=gs;stack=new ii;entered=!1;constructor(e){this.extensionCodec=e?.extensionCodec??Ou.ExtensionCodec.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.rawStrings=e?.rawStrings??!1,this.maxStrLength=e?.maxStrLength??At.UINT32_MAX,this.maxBinLength=e?.maxBinLength??At.UINT32_MAX,this.maxArrayLength=e?.maxArrayLength??At.UINT32_MAX,this.maxMapLength=e?.maxMapLength??At.UINT32_MAX,this.maxExtLength=e?.maxExtLength??At.UINT32_MAX,this.keyDecoder=e?.keyDecoder!==void 0?e.keyDecoder:Gu,this.mapKeyConverter=e?.mapKeyConverter??Nu}clone(){return new i({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=gs,this.stack.reset()}setBuffer(e){let t=(0,ga.ensureUint8Array)(e);this.bytes=t,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength),this.pos=0}appendBuffer(e){if(this.headByte===gs&&!this.hasRemaining(1))this.setBuffer(e);else{let t=this.bytes.subarray(this.pos),s=(0,ga.ensureUint8Array)(e),n=new Uint8Array(t.length+s.length);n.set(t),n.set(s,t.length),this.setBuffer(n)}}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(u){if(!(u instanceof RangeError))throw u}this.totalPos+=this.pos}if(t){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return s}let{headByte:n,pos:o,totalPos:r}=this;throw new RangeError(`Insufficient data in parsing ${(0,ni.prettyByte)(n)} at ${r} (${o} 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,n=-1;for await(let o of e){if(t&&n===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(o),s&&(n=this.readArraySize(),s=!1,this.complete());try{for(;yield this.doDecodeSync(),--n!==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 n=e-128;if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e<160){let n=e-144;if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else{let n=e-160;t=this.decodeString(n,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 n=this.lookU8();t=this.decodeString(n,1)}else if(e===218){let n=this.lookU16();t=this.decodeString(n,2)}else if(e===219){let n=this.lookU32();t=this.decodeString(n,4)}else if(e===220){let n=this.readU16();if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else if(e===221){let n=this.readU32();if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else if(e===222){let n=this.readU16();if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e===223){let n=this.readU32();if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e===196){let n=this.lookU8();t=this.decodeBinary(n,1)}else if(e===197){let n=this.lookU16();t=this.decodeBinary(n,2)}else if(e===198){let n=this.lookU32();t=this.decodeBinary(n,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 n=this.lookU8();t=this.decodeExtension(n,1)}else if(e===200){let n=this.lookU16();t=this.decodeExtension(n,2)}else if(e===201){let n=this.lookU32();t=this.decodeExtension(n,4)}else throw new Je.DecodeError(`Unrecognized type byte: ${(0,ni.prettyByte)(e)}`);this.complete();let s=this.stack;for(;s.length>0;){let n=s.top();if(n.type===oi)if(n.array[n.position]=t,n.position++,n.position===n.size)t=n.array,s.release(n);else continue e;else if(n.type===fs){if(t==="__proto__")throw new Je.DecodeError("The key __proto__ is not allowed");n.key=this.mapKeyConverter(t),n.type=ya;continue e}else if(n.map[n.key]=t,n.readCount++,n.readCount===n.size)t=n.map,s.release(n);else{n.key=null,n.type=fs;continue e}}return t}}readHeadByte(){return this.headByte===gs&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=gs}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 Je.DecodeError(`Unrecognized array type byte: ${(0,ni.prettyByte)(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new Je.DecodeError(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(e)}pushArrayState(e){if(e>this.maxArrayLength)throw new Je.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 Je.DecodeError(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw fa;let s=this.pos+t,n;return this.stateIsMapKey()&&this.keyDecoder?.canBeCached(e)?n=this.keyDecoder.decode(this.bytes,s,e):n=(0,Uu.utf8Decode)(this.bytes,s,e),this.pos+=t+e,n}stateIsMapKey(){return this.stack.length>0?this.stack.top().type===fs:!1}decodeBinary(e,t){if(e>this.maxBinLength)throw new Je.DecodeError(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw fa;let s=this.pos+t,n=this.bytes.subarray(s,s+e);return this.pos+=t+e,n}decodeExtension(e,t){if(e>this.maxExtLength)throw new Je.DecodeError(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);let s=this.view.getInt8(this.pos+t),n=this.decodeBinary(e,t+1);return this.extensionCodec.decode(n,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,At.getUint64)(this.view,this.pos);return this.pos+=8,e}readI64(){let e=(0,At.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}};An.Decoder=ri});var ba=se(En=>{"use strict";Object.defineProperty(En,"__esModule",{value:!0});En.decode=Lu;En.decodeMulti=$u;var _a=Dn();function Lu(i,e){return new _a.Decoder(e).decode(i)}function $u(i,e){return new _a.Decoder(e).decodeMulti(i)}});var Sa=se(ys=>{"use strict";Object.defineProperty(ys,"__esModule",{value:!0});ys.isAsyncIterable=Ca;ys.asyncIterableFromStream=wa;ys.ensureAsyncIterable=qu;function Ca(i){return i[Symbol.asyncIterator]!=null}async function*wa(i){let e=i.getReader();try{for(;;){let{done:t,value:s}=await e.read();if(t)return;yield s}}finally{e.releaseLock()}}function qu(i){return Ca(i)?i:wa(i)}});var ka=se(_s=>{"use strict";Object.defineProperty(_s,"__esModule",{value:!0});_s.decodeAsync=Bu;_s.decodeArrayStream=zu;_s.decodeMultiStream=Wu;var li=Dn(),ci=Sa();async function Bu(i,e){let t=(0,ci.ensureAsyncIterable)(i);return new li.Decoder(e).decodeAsync(t)}function zu(i,e){let t=(0,ci.ensureAsyncIterable)(i);return new li.Decoder(e).decodeArrayStream(t)}function Wu(i,e){let t=(0,ci.ensureAsyncIterable)(i);return new li.Decoder(e).decodeStream(t)}});var Pa=se(H=>{"use strict";Object.defineProperty(H,"__esModule",{value:!0});H.decodeTimestampExtension=H.encodeTimestampExtension=H.decodeTimestampToTimeSpec=H.encodeTimeSpecToTimestamp=H.encodeDateToTimeSpec=H.EXT_TIMESTAMP=H.ExtData=H.ExtensionCodec=H.Encoder=H.DecodeError=H.Decoder=H.decodeMultiStream=H.decodeArrayStream=H.decodeAsync=H.decodeMulti=H.decode=H.encode=void 0;var Hu=ma();Object.defineProperty(H,"encode",{enumerable:!0,get:function(){return Hu.encode}});var va=ba();Object.defineProperty(H,"decode",{enumerable:!0,get:function(){return va.decode}});Object.defineProperty(H,"decodeMulti",{enumerable:!0,get:function(){return va.decodeMulti}});var ui=ka();Object.defineProperty(H,"decodeAsync",{enumerable:!0,get:function(){return ui.decodeAsync}});Object.defineProperty(H,"decodeArrayStream",{enumerable:!0,get:function(){return ui.decodeArrayStream}});Object.defineProperty(H,"decodeMultiStream",{enumerable:!0,get:function(){return ui.decodeMultiStream}});var Vu=Dn();Object.defineProperty(H,"Decoder",{enumerable:!0,get:function(){return Vu.Decoder}});var Ju=kn();Object.defineProperty(H,"DecodeError",{enumerable:!0,get:function(){return Ju.DecodeError}});var Ku=Zo();Object.defineProperty(H,"Encoder",{enumerable:!0,get:function(){return Ku.Encoder}});var Yu=Mn();Object.defineProperty(H,"ExtensionCodec",{enumerable:!0,get:function(){return Yu.ExtensionCodec}});var Qu=Ho();Object.defineProperty(H,"ExtData",{enumerable:!0,get:function(){return Qu.ExtData}});var Wt=Jo();Object.defineProperty(H,"EXT_TIMESTAMP",{enumerable:!0,get:function(){return Wt.EXT_TIMESTAMP}});Object.defineProperty(H,"encodeDateToTimeSpec",{enumerable:!0,get:function(){return Wt.encodeDateToTimeSpec}});Object.defineProperty(H,"encodeTimeSpecToTimestamp",{enumerable:!0,get:function(){return Wt.encodeTimeSpecToTimestamp}});Object.defineProperty(H,"decodeTimestampToTimeSpec",{enumerable:!0,get:function(){return Wt.decodeTimestampToTimeSpec}});Object.defineProperty(H,"encodeTimestampExtension",{enumerable:!0,get:function(){return Wt.encodeTimestampExtension}});Object.defineProperty(H,"decodeTimestampExtension",{enumerable:!0,get:function(){return Wt.decodeTimestampExtension}})});var Ol=se((Wg,am)=>{am.exports={name:"@rajbos/ai-engineering-fluency",version:"0.2.1",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:"^14.0.3",esbuild:"^0.28.0","sql.js":"^1.12.0",typescript:"^6.0.2"},engines:{node:">=22.14.0"}}});var Ur=O(Or(),1),{program:ym,createCommand:_m,createArgument:bm,createOption:Cm,CommanderError:wm,InvalidArgumentError:Sm,InvalidOptionArgumentError:km,Command:le,Argument:vm,Option:Pm,Help:Tm}=Ur.default;var Fr=(i=0)=>e=>`\x1B[${e+i}m`,Nr=(i=0)=>e=>`\x1B[${38+i};5;${e}m`,jr=(i=0)=>(e,t,s)=>`\x1B[${38+i};2;${e};${t};${s}m`,ne={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]}},xm=Object.keys(ne.modifier),Vc=Object.keys(ne.color),Jc=Object.keys(ne.bgColor),Am=[...Vc,...Jc];function Kc(){let i=new Map;for(let[e,t]of Object.entries(ne)){for(let[s,n]of Object.entries(t))ne[s]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},t[s]=ne[s],i.set(n[0],n[1]);Object.defineProperty(ne,e,{value:t,enumerable:!1})}return Object.defineProperty(ne,"codes",{value:i,enumerable:!1}),ne.color.close="\x1B[39m",ne.bgColor.close="\x1B[49m",ne.color.ansi=Fr(),ne.color.ansi256=Nr(),ne.color.ansi16m=jr(),ne.bgColor.ansi=Fr(10),ne.bgColor.ansi256=Nr(10),ne.bgColor.ansi16m=jr(10),Object.defineProperties(ne,{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(o=>o+o).join(""));let n=Number.parseInt(s,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:e=>ne.rgbToAnsi256(...ne.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,s,n;if(e>=232)t=((e-232)*10+8)/255,s=t,n=t;else{e-=16;let l=e%36;t=Math.floor(e/36)/5,s=Math.floor(l/6)/5,n=l%6/5}let o=Math.max(t,s,n)*2;if(o===0)return 30;let r=30+(Math.round(n)<<2|Math.round(s)<<1|Math.round(t));return o===2&&(r+=60),r},enumerable:!1},rgbToAnsi:{value:(e,t,s)=>ne.ansi256ToAnsi(ne.rgbToAnsi256(e,t,s)),enumerable:!1},hexToAnsi:{value:e=>ne.ansi256ToAnsi(ne.hexToAnsi256(e)),enumerable:!1}}),ne}var Yc=Kc(),Ne=Yc;var ln=O(require("node:process"),1),Lr=O(require("node:os"),1),Go=O(require("node:tty"),1);function De(i,e=globalThis.Deno?globalThis.Deno.args:ln.default.argv){let t=i.startsWith("-")?"":i.length===1?"-":"--",s=e.indexOf(t+i),n=e.indexOf("--");return s!==-1&&(n===-1||s<n)}var{env:oe}=ln.default,an;De("no-color")||De("no-colors")||De("color=false")||De("color=never")?an=0:(De("color")||De("colors")||De("color=true")||De("color=always"))&&(an=1);function Qc(){if("FORCE_COLOR"in oe)return oe.FORCE_COLOR==="true"?1:oe.FORCE_COLOR==="false"?0:oe.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(oe.FORCE_COLOR,10),3)}function Xc(i){return i===0?!1:{level:i,hasBasic:!0,has256:i>=2,has16m:i>=3}}function Zc(i,{streamIsTTY:e,sniffFlags:t=!0}={}){let s=Qc();s!==void 0&&(an=s);let n=t?an:s;if(n===0)return 0;if(t){if(De("color=16m")||De("color=full")||De("color=truecolor"))return 3;if(De("color=256"))return 2}if("TF_BUILD"in oe&&"AGENT_NAME"in oe)return 1;if(i&&!e&&n===void 0)return 0;let o=n||0;if(oe.TERM==="dumb")return o;if(ln.default.platform==="win32"){let r=Lr.default.release().split(".");return Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in oe)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(r=>r in oe)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(r=>r in oe)||oe.CI_NAME==="codeship"?1:o;if("TEAMCITY_VERSION"in oe)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(oe.TEAMCITY_VERSION)?1:0;if(oe.COLORTERM==="truecolor"||oe.TERM==="xterm-kitty"||oe.TERM==="xterm-ghostty"||oe.TERM==="wezterm")return 3;if("TERM_PROGRAM"in oe){let r=Number.parseInt((oe.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(oe.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(oe.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(oe.TERM)||"COLORTERM"in oe?1:o}function Gr(i,e={}){let t=Zc(i,{streamIsTTY:i&&i.isTTY,...e});return Xc(t)}var eu={stdout:Gr({isTTY:Go.default.isatty(1)}),stderr:Gr({isTTY:Go.default.isatty(2)})},$r=eu;function qr(i,e,t){let s=i.indexOf(e);if(s===-1)return i;let n=e.length,o=0,r="";do r+=i.slice(o,s)+e+t,o=s+n,s=i.indexOf(e,o);while(s!==-1);return r+=i.slice(o),r}function Br(i,e,t,s){let n=0,o="";do{let r=i[s-1]==="\r";o+=i.slice(n,r?s-1:s)+e+(r?`\r
24
+ `),this.outputHelp({error:!0}));let s=t||{},n=s.exitCode||1,i=s.code||"commander.error";this._exit(n,i,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in J.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()}`,J.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new pu(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(n=>!t(n)).forEach(n=>{this.setOptionValueWithSource(n,s.implied[n],"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(),u=this.getOptionValue(l),p=this.options.find(h=>h.negate&&l===h.attributeName()),m=this.options.find(h=>!h.negate&&l===h.attributeName());return p&&(p.presetArg===void 0&&u===!1||p.presetArg!==void 0&&u===p.presetArg)?p:m||r},n=r=>{let l=s(r),u=l.attributeName();return this.getOptionValueSource(u)==="env"?`environment variable '${l.envVar}'`:`option '${l.flags}'`},i=`error: ${n(e)} cannot be used with ${n(t)}`;this.error(i,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let n=[],i=this;do{let r=i.createHelp().visibleOptions(i).filter(l=>l.long).map(l=>l.long);n=n.concat(r),i=i.parent}while(i&&!i._enablePositionalOptions);t=Zr(e,n)}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",i=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${s} but got ${e.length}.`;this.error(i,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let n=[];this.createHelp().visibleCommands(this).forEach(i=>{n.push(i.name()),i.alias()&&n.push(i.alias())}),t=Zr(e,n)}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 n=this.createOption(t,s);return this._versionOptionName=n.attributeName(),this._registerOption(n),this.on("option:"+n.name(),()=>{this._outputConfiguration.writeOut(`${e}
25
+ `),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 n=[s.name()].concat(s.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${n}'`)}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=>uu(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=Xe.basename(e,Xe.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 n=t.formatHelp(this,t);return s.hasColors?n:this._outputConfiguration.stripColor(n)}_getOutputContext(e){e=e||{};let t=!!e.error,s,n,i;return t?(s=l=>this._outputConfiguration.writeErr(l),n=this._outputConfiguration.getErrHasColors(),i=this._outputConfiguration.getErrHelpWidth()):(s=l=>this._outputConfiguration.writeOut(l),n=this._outputConfiguration.getOutHasColors(),i=this._outputConfiguration.getOutHelpWidth()),{error:t,write:l=>(n||(l=this._outputConfiguration.stripColor(l)),s(l)),hasColors:n,helpWidth:i}}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let s=this._getOutputContext(e),n={error:s.error,write:s.write,command:this};this._getCommandAndAncestors().reverse().forEach(r=>r.emit("beforeAllHelp",n)),this.emit("beforeHelp",n);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",n),this._getCommandAndAncestors().forEach(r=>r.emit("afterAllHelp",n))}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(J.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.
26
+ Expecting one of '${s.join("', '")}'`);let n=`${e}Help`;return this.on(n,i=>{let r;typeof t=="function"?r=t({error:i.error,command:i.command}):r=t,r&&i.write(`${r}
27
+ `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(n=>t.is(n))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function ea(o){return o.map(e=>{if(!e.startsWith("--inspect"))return e;let t,s="127.0.0.1",n="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])?n=i[3]:s=i[3]):(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=i[1],s=i[3],n=i[4]),t&&n!=="0"?`${t}=${s}:${parseInt(n)+1}`:e})}function Yo(){if(J.env.NO_COLOR||J.env.FORCE_COLOR==="0"||J.env.FORCE_COLOR==="false")return!1;if(J.env.FORCE_COLOR||J.env.CLICOLOR_FORCE!==void 0)return!0}Xo.Command=Qo;Xo.useColor=Yo});var ia=se(Fe=>{var{Argument:sa}=fn(),{Command:Zo}=ta(),{CommanderError:hu,InvalidArgumentError:na}=gs(),{Help:fu}=zo(),{Option:oa}=Vo();Fe.program=new Zo;Fe.createCommand=o=>new Zo(o);Fe.createOption=(o,e)=>new oa(o,e);Fe.createArgument=(o,e)=>new sa(o,e);Fe.Command=Zo;Fe.Option=oa;Fe.Argument=sa;Fe.Help=fu;Fe.CommanderError=hu;Fe.InvalidArgumentError=na;Fe.InvalidOptionArgumentError=na});var An=se((xn,Et)=>{var vn=void 0,Mn=function(o){return vn||(vn=new Promise(function(e,t){var s=typeof o<"u"?o:{},n=s.onAbort;s.onAbort=function(a){t(new Error(a)),n&&n(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,u=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";i.onRuntimeInitialized=function(){function a(P,E){switch(typeof E){case"boolean":Vc(P,E?1:0);break;case"number":Bc(P,E);break;case"string":Wc(P,E,-1,-1);break;case"object":if(E===null)zr(P);else if(E.length!=null){var F=cn(E.length);I.set(E,F),Hc(P,F,E.length,-1),fs(F)}else pn(P,"Wrong API use : tried to return a value of an unknown type ("+E+").",-1);break;default:zr(P)}}function c(P,E){for(var F=[],N=0;N<P;N+=1){var B=Ye(E+4*N,"i32"),Y=Lc(B);if(Y===1||Y===2)B=zc(B);else if(Y===3)B=qc(B);else if(Y===4){Y=B,B=jc(Y),Y=$c(Y);for(var qe=new Uint8Array(B),Ue=0;Ue<B;Ue+=1)qe[Ue]=I[Y+Ue];B=qe}else B=null;F.push(B)}return F}function d(P,E){this.Qa=P,this.db=E,this.Oa=1,this.mb=[]}function f(P,E){if(this.db=E,this.fb=ln(P),this.fb===null)throw Error("Unable to allocate memory for the SQL string");this.lb=this.fb,this.$a=this.sb=null}function b(P){if(this.filename="dbfile_"+(4294967295*Math.random()>>>0),P!=null){var E=this.filename,F="/",N=E;if(F&&(F=typeof F=="string"?F:wo(F),N=E?Co(F+"/"+E):F),E=gr(!0,!0),N=hc(N,E),P){if(typeof P=="string"){F=Array(P.length);for(var B=0,Y=P.length;B<Y;++B)F[B]=P.charCodeAt(B);P=F}nn(N,E|146),F=Wt(N,577),Er(F,P,0,P.length,0),Ao(F),nn(N,E)}}this.handleError(j(this.filename,v)),this.db=Ye(v,"i32"),Wr(this.db),this.gb={},this.Sa={}}var v=At(4),A=i.cwrap,j=A("sqlite3_open","number",["string","number"]),Q=A("sqlite3_close_v2","number",["number"]),z=A("sqlite3_exec","number",["number","string","number","number","number"]),te=A("sqlite3_changes","number",["number"]),fe=A("sqlite3_prepare_v2","number",["number","string","number","number","number"]),Gr=A("sqlite3_sql","string",["number"]),Sc=A("sqlite3_normalized_sql","string",["number"]),Lr=A("sqlite3_prepare_v2","number",["number","number","number","number","number"]),wc=A("sqlite3_bind_text","number",["number","number","number","number","number"]),jr=A("sqlite3_bind_blob","number",["number","number","number","number","number"]),Tc=A("sqlite3_bind_double","number",["number","number","number"]),Pc=A("sqlite3_bind_int","number",["number","number","number"]),vc=A("sqlite3_bind_parameter_index","number",["number","string"]),Mc=A("sqlite3_step","number",["number"]),xc=A("sqlite3_errmsg","string",["number"]),Ac=A("sqlite3_column_count","number",["number"]),Dc=A("sqlite3_data_count","number",["number"]),Ec=A("sqlite3_column_double","number",["number","number"]),qr=A("sqlite3_column_text","string",["number","number"]),Ic=A("sqlite3_column_blob","number",["number","number"]),Rc=A("sqlite3_column_bytes","number",["number","number"]),Oc=A("sqlite3_column_type","number",["number","number"]),Uc=A("sqlite3_column_name","string",["number","number"]),Fc=A("sqlite3_reset","number",["number"]),Nc=A("sqlite3_clear_bindings","number",["number"]),Gc=A("sqlite3_finalize","number",["number"]),$r=A("sqlite3_create_function_v2","number","number string number number number number number number number".split(" ")),Lc=A("sqlite3_value_type","number",["number"]),jc=A("sqlite3_value_bytes","number",["number"]),qc=A("sqlite3_value_text","string",["number"]),$c=A("sqlite3_value_blob","number",["number"]),zc=A("sqlite3_value_double","number",["number"]),Bc=A("sqlite3_result_double","",["number","number"]),zr=A("sqlite3_result_null","",["number"]),Wc=A("sqlite3_result_text","",["number","string","number","number"]),Hc=A("sqlite3_result_blob","",["number","number","number","number"]),Vc=A("sqlite3_result_int","",["number","number"]),pn=A("sqlite3_result_error","",["number","string","number"]),Br=A("sqlite3_aggregate_context","number",["number","number"]),Wr=A("RegisterExtensionFunctions","number",["number"]),Hr=A("sqlite3_update_hook","number",["number","number","number"]);d.prototype.bind=function(P){if(!this.Qa)throw"Statement closed";return this.reset(),Array.isArray(P)?this.Gb(P):P!=null&&typeof P=="object"?this.Hb(P):!0},d.prototype.step=function(){if(!this.Qa)throw"Statement closed";this.Oa=1;var P=Mc(this.Qa);switch(P){case 100:return!0;case 101:return!1;default:throw this.db.handleError(P)}},d.prototype.Ab=function(P){return P==null&&(P=this.Oa,this.Oa+=1),Ec(this.Qa,P)},d.prototype.Ob=function(P){if(P==null&&(P=this.Oa,this.Oa+=1),P=qr(this.Qa,P),typeof BigInt!="function")throw Error("BigInt is not supported");return BigInt(P)},d.prototype.Tb=function(P){return P==null&&(P=this.Oa,this.Oa+=1),qr(this.Qa,P)},d.prototype.getBlob=function(P){P==null&&(P=this.Oa,this.Oa+=1);var E=Rc(this.Qa,P);P=Ic(this.Qa,P);for(var F=new Uint8Array(E),N=0;N<E;N+=1)F[N]=I[P+N];return F},d.prototype.get=function(P,E){E=E||{},P!=null&&this.bind(P)&&this.step(),P=[];for(var F=Dc(this.Qa),N=0;N<F;N+=1)switch(Oc(this.Qa,N)){case 1:var B=E.useBigInt?this.Ob(N):this.Ab(N);P.push(B);break;case 2:P.push(this.Ab(N));break;case 3:P.push(this.Tb(N));break;case 4:P.push(this.getBlob(N));break;default:P.push(null)}return P},d.prototype.qb=function(){for(var P=[],E=Ac(this.Qa),F=0;F<E;F+=1)P.push(Uc(this.Qa,F));return P},d.prototype.zb=function(P,E){P=this.get(P,E),E=this.qb();for(var F={},N=0;N<E.length;N+=1)F[E[N]]=P[N];return F},d.prototype.Sb=function(){return Gr(this.Qa)},d.prototype.Pb=function(){return Sc(this.Qa)},d.prototype.run=function(P){return P!=null&&this.bind(P),this.step(),this.reset()},d.prototype.wb=function(P,E){E==null&&(E=this.Oa,this.Oa+=1),P=ln(P),this.mb.push(P),this.db.handleError(wc(this.Qa,E,P,-1,0))},d.prototype.Fb=function(P,E){E==null&&(E=this.Oa,this.Oa+=1);var F=cn(P.length);I.set(P,F),this.mb.push(F),this.db.handleError(jr(this.Qa,E,F,P.length,0))},d.prototype.vb=function(P,E){E==null&&(E=this.Oa,this.Oa+=1),this.db.handleError((P===(P|0)?Pc:Tc)(this.Qa,E,P))},d.prototype.Ib=function(P){P==null&&(P=this.Oa,this.Oa+=1),jr(this.Qa,P,0,0,0)},d.prototype.xb=function(P,E){switch(E==null&&(E=this.Oa,this.Oa+=1),typeof P){case"string":this.wb(P,E);return;case"number":this.vb(P,E);return;case"bigint":this.wb(P.toString(),E);return;case"boolean":this.vb(P+0,E);return;case"object":if(P===null){this.Ib(E);return}if(P.length!=null){this.Fb(P,E);return}}throw"Wrong API use : tried to bind a value of an unknown type ("+P+")."},d.prototype.Hb=function(P){var E=this;return Object.keys(P).forEach(function(F){var N=vc(E.Qa,F);N!==0&&E.xb(P[F],N)}),!0},d.prototype.Gb=function(P){for(var E=0;E<P.length;E+=1)this.xb(P[E],E+1);return!0},d.prototype.reset=function(){return this.freemem(),Nc(this.Qa)===0&&Fc(this.Qa)===0},d.prototype.freemem=function(){for(var P;(P=this.mb.pop())!==void 0;)fs(P)},d.prototype.Ya=function(){this.freemem();var P=Gc(this.Qa)===0;return delete this.db.gb[this.Qa],this.Qa=0,P},f.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 P=dn(),E=At(4);us(v),us(E);try{this.db.handleError(Lr(this.db.db,this.lb,-1,v,E)),this.lb=Ye(E,"i32");var F=Ye(v,"i32");return F===0?(this.ob(),{done:!0}):(this.$a=new d(F,this.db),this.db.gb[F]=this.$a,{value:this.$a,done:!1})}catch(N){throw this.sb=le(this.lb),this.ob(),N}finally{un(P)}},f.prototype.ob=function(){fs(this.fb),this.fb=null},f.prototype.Qb=function(){return this.sb!==null?this.sb:le(this.lb)},typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"&&(f.prototype[Symbol.iterator]=function(){return this}),b.prototype.run=function(P,E){if(!this.db)throw"Database closed";if(E){P=this.tb(P,E);try{P.step()}finally{P.Ya()}}else this.handleError(z(this.db,P,0,0,v));return this},b.prototype.exec=function(P,E,F){if(!this.db)throw"Database closed";var N=null,B=null,Y=null;try{Y=B=ln(P);var qe=At(4);for(P=[];Ye(Y,"i8")!==0;){us(v),us(qe),this.handleError(Lr(this.db,Y,-1,v,qe));var Ue=Ye(v,"i32");if(Y=Ye(qe,"i32"),Ue!==0){var Me=null;for(N=new d(Ue,this),E!=null&&N.bind(E);N.step();)Me===null&&(Me={columns:N.qb(),values:[]},P.push(Me)),Me.values.push(N.get(null,F));N.Ya()}}return P}catch($e){throw N&&N.Ya(),$e}finally{B&&fs(B)}},b.prototype.Mb=function(P,E,F,N,B){typeof E=="function"&&(N=F,F=E,E=void 0),P=this.tb(P,E);try{for(;P.step();)F(P.zb(null,B))}finally{P.Ya()}if(typeof N=="function")return N()},b.prototype.tb=function(P,E){if(us(v),this.handleError(fe(this.db,P,-1,v,0)),P=Ye(v,"i32"),P===0)throw"Nothing to prepare";var F=new d(P,this);return E!=null&&F.bind(E),this.gb[P]=F},b.prototype.Ub=function(P){return new f(P,this)},b.prototype.Nb=function(){Object.values(this.gb).forEach(function(E){E.Ya()}),Object.values(this.Sa).forEach(gt),this.Sa={},this.handleError(Q(this.db));var P=fc(this.filename);return this.handleError(j(this.filename,v)),this.db=Ye(v,"i32"),Wr(this.db),P},b.prototype.close=function(){this.db!==null&&(Object.values(this.gb).forEach(function(P){P.Ya()}),Object.values(this.Sa).forEach(gt),this.Sa={},this.Za&&(gt(this.Za),this.Za=void 0),this.handleError(Q(this.db)),vr("/"+this.filename),this.db=null)},b.prototype.handleError=function(P){if(P===0)return null;throw P=xc(this.db),Error(P)},b.prototype.Rb=function(){return te(this.db)},b.prototype.Kb=function(P,E){Object.prototype.hasOwnProperty.call(this.Sa,P)&&(gt(this.Sa[P]),delete this.Sa[P]);var F=hs(function(N,B,Y){B=c(B,Y);try{var qe=E.apply(null,B)}catch(Ue){pn(N,Ue,-1);return}a(N,qe)},"viii");return this.Sa[P]=F,this.handleError($r(this.db,P,E.length,1,0,F,0,0,0)),this},b.prototype.Jb=function(P,E){var F=E.init||function(){return null},N=E.finalize||function(Me){return Me},B=E.step;if(!B)throw"An aggregate function must have a step function in "+P;var Y={};Object.hasOwnProperty.call(this.Sa,P)&&(gt(this.Sa[P]),delete this.Sa[P]),E=P+"__finalize",Object.hasOwnProperty.call(this.Sa,E)&&(gt(this.Sa[E]),delete this.Sa[E]);var qe=hs(function(Me,$e,Fo){var Dt=Br(Me,1);Object.hasOwnProperty.call(Y,Dt)||(Y[Dt]=F()),$e=c($e,Fo),$e=[Y[Dt]].concat($e);try{Y[Dt]=B.apply(null,$e)}catch(Jc){delete Y[Dt],pn(Me,Jc,-1)}},"viii"),Ue=hs(function(Me){var $e=Br(Me,1);try{var Fo=N(Y[$e])}catch(Dt){delete Y[$e],pn(Me,Dt,-1);return}a(Me,Fo),delete Y[$e]},"vi");return this.Sa[P]=qe,this.Sa[E]=Ue,this.handleError($r(this.db,P,B.length-1,1,0,0,qe,Ue,0)),this},b.prototype.Zb=function(P){return this.Za&&(Hr(this.db,0,0),gt(this.Za),this.Za=void 0),P?(this.Za=hs(function(E,F,N,B,Y){switch(F){case 18:E="insert";break;case 23:E="update";break;case 9:E="delete";break;default:throw"unknown operationCode in updateHook callback: "+F}if(N=le(N),B=le(B),Y>Number.MAX_SAFE_INTEGER)throw"rowId too big to fit inside a Number";P(E,N,B,Number(Y))},"viiiij"),Hr(this.db,this.Za,0),this):this},d.prototype.bind=d.prototype.bind,d.prototype.step=d.prototype.step,d.prototype.get=d.prototype.get,d.prototype.getColumnNames=d.prototype.qb,d.prototype.getAsObject=d.prototype.zb,d.prototype.getSQL=d.prototype.Sb,d.prototype.getNormalizedSQL=d.prototype.Pb,d.prototype.run=d.prototype.run,d.prototype.reset=d.prototype.reset,d.prototype.freemem=d.prototype.freemem,d.prototype.free=d.prototype.Ya,f.prototype.next=f.prototype.next,f.prototype.getRemainingSQL=f.prototype.Qb,b.prototype.run=b.prototype.run,b.prototype.exec=b.prototype.exec,b.prototype.each=b.prototype.Mb,b.prototype.prepare=b.prototype.tb,b.prototype.iterateStatements=b.prototype.Ub,b.prototype.export=b.prototype.Nb,b.prototype.close=b.prototype.close,b.prototype.handleError=b.prototype.handleError,b.prototype.getRowsModified=b.prototype.Rb,b.prototype.create_function=b.prototype.Kb,b.prototype.create_aggregate=b.prototype.Jb,b.prototype.updateHook=b.prototype.Zb,i.Database=b};var p="./this.program",m=(a,c)=>{throw c},h=globalThis.document?.currentScript?.src;typeof __filename<"u"?h=__filename:l&&(h=self.location.href);var g="",_,y;if(u){var C=require("node:fs");g=__dirname+"/",y=a=>(a=k(a)?new URL(a):a,C.readFileSync(a)),_=async a=>(a=k(a)?new URL(a):a,C.readFileSync(a,void 0)),1<process.argv.length&&(p=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),typeof Et<"u"&&(Et.exports=i),m=(a,c)=>{throw process.exitCode=a,c}}else if(r||l){try{g=new URL(".",h).href}catch{}l&&(y=a=>{var c=new XMLHttpRequest;return c.open("GET",a,!1),c.responseType="arraybuffer",c.send(null),new Uint8Array(c.response)}),_=async a=>{if(k(a))return new Promise((d,f)=>{var b=new XMLHttpRequest;b.open("GET",a,!0),b.responseType="arraybuffer",b.onload=()=>{b.status==200||b.status==0&&b.response?d(b.response):f(b.status)},b.onerror=f,b.send(null)});var c=await fetch(a,{credentials:"same-origin"});if(c.ok)return c.arrayBuffer();throw Error(c.status+" : "+c.url)}}var x=console.log.bind(console),w=console.error.bind(console),M,S=!1,T,k=a=>a.startsWith("file://"),I,R,H,G,q,ke,jt,ve;function as(){var a=mn.buffer;I=new Int8Array(a),H=new Int16Array(a),R=new Uint8Array(a),new Uint16Array(a),G=new Int32Array(a),q=new Uint32Array(a),ke=new Float32Array(a),jt=new Float64Array(a),ve=new BigInt64Array(a),new BigUint64Array(a)}function mt(a){throw i.onAbort?.(a),a="Aborted("+a+")",w(a),S=!0,new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.")}var Qe;async function Qs(a){if(!M)try{var c=await _(a);return new Uint8Array(c)}catch{}if(a==Qe&&M)a=new Uint8Array(M);else if(y)a=y(a);else throw"both async and sync fetching of the wasm failed";return a}async function Ys(a,c){try{var d=await Qs(a);return await WebAssembly.instantiate(d,c)}catch(f){w(`failed to asynchronously prepare wasm: ${f}`),mt(f)}}async function bo(a){var c=Qe;if(!M&&!k(c)&&!u)try{var d=fetch(c,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(d,a)}catch(f){w(`wasm streaming compile failed: ${f}`),w("falling back to ArrayBuffer instantiation")}return Ys(c,a)}class Z{name="ExitStatus";constructor(c){this.message=`Program terminated with exit(${c})`,this.status=c}}var ye=a=>{for(;0<a.length;)a.shift()(i)},pt=[],qt=[],ls=()=>{var a=i.preRun.shift();qt.push(a)},Pt=0,cs=null;function Ye(a,c="i8"){switch(c.endsWith("*")&&(c="*"),c){case"i1":return I[a];case"i8":return I[a];case"i16":return H[a>>1];case"i32":return G[a>>2];case"i64":return ve[a>>3];case"float":return ke[a>>2];case"double":return jt[a>>3];case"*":return q[a>>2];default:mt(`invalid type for getValue: ${c}`)}}var Xs=!0;function us(a){var c="i32";switch(c.endsWith("*")&&(c="*"),c){case"i1":I[a]=0;break;case"i8":I[a]=0;break;case"i16":H[a>>1]=0;break;case"i32":G[a>>2]=0;break;case"i64":ve[a>>3]=BigInt(0);break;case"float":ke[a>>2]=0;break;case"double":jt[a>>3]=0;break;case"*":q[a>>2]=0;break;default:mt(`invalid type for setValue: ${c}`)}}var cr=new TextDecoder,ur=(a,c,d,f)=>{if(d=c+d,f)return d;for(;a[c]&&!(c>=d);)++c;return c},le=(a,c,d)=>a?cr.decode(R.subarray(a,ur(R,a,c,d))):"",dr=(a,c)=>{for(var d=0,f=a.length-1;0<=f;f--){var b=a[f];b==="."?a.splice(f,1):b===".."?(a.splice(f,1),d++):d&&(a.splice(f,1),d--)}if(c)for(;d;d--)a.unshift("..");return a},Co=a=>{var c=a.charAt(0)==="/",d=a.slice(-1)==="/";return(a=dr(a.split("/").filter(f=>!!f),!c).join("/"))||c||(a="."),a&&d&&(a+="/"),(c?"/":"")+a},mr=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)},Zs=a=>a&&a.match(/([^\/]+|\/)\/*$/)[1],oc=()=>{if(u){var a=require("node:crypto");return c=>a.randomFillSync(c)}return c=>crypto.getRandomValues(c)},pr=a=>{(pr=oc())(a)},ic=(...a)=>{for(var c="",d=!1,f=a.length-1;-1<=f&&!d;f--){if(d=0<=f?a[f]:"/",typeof d!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!d)return"";c=d+"/"+c,d=d.charAt(0)==="/"}return c=dr(c.split("/").filter(b=>!!b),!d).join("/"),(d?"/":"")+c||"."},ds=a=>{var c=ur(a,0);return cr.decode(a.buffer?a.subarray(0,c):new Uint8Array(a.slice(0,c)))},ko=[],$t=a=>{for(var c=0,d=0;d<a.length;++d){var f=a.charCodeAt(d);127>=f?c++:2047>=f?c+=2:55296<=f&&57343>=f?(c+=4,++d):c+=3}return c},Ve=(a,c,d,f)=>{if(!(0<f))return 0;var b=d;f=d+f-1;for(var v=0;v<a.length;++v){var A=a.codePointAt(v);if(127>=A){if(d>=f)break;c[d++]=A}else if(2047>=A){if(d+1>=f)break;c[d++]=192|A>>6,c[d++]=128|A&63}else if(65535>=A){if(d+2>=f)break;c[d++]=224|A>>12,c[d++]=128|A>>6&63,c[d++]=128|A&63}else{if(d+3>=f)break;c[d++]=240|A>>18,c[d++]=128|A>>12&63,c[d++]=128|A>>6&63,c[d++]=128|A&63,v++}}return c[d]=0,d-b},hr=[];function fr(a,c){hr[a]={input:[],output:[],eb:c},Mo(a,rc)}var rc={open(a){var c=hr[a.node.rdev];if(!c)throw new O(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,d,f){if(!a.tty||!a.tty.eb.Bb)throw new O(60);for(var b=0,v=0;v<f;v++){try{var A=a.tty.eb.Bb(a.tty)}catch{throw new O(29)}if(A===void 0&&b===0)throw new O(6);if(A==null)break;b++,c[d+v]=A}return b&&(a.node.atime=Date.now()),b},write(a,c,d,f){if(!a.tty||!a.tty.eb.ub)throw new O(60);try{for(var b=0;b<f;b++)a.tty.eb.ub(a.tty,c[d+b])}catch{throw new O(29)}return f&&(a.node.mtime=a.node.ctime=Date.now()),b}},ac={Bb(){e:{if(!ko.length){var a=null;if(u){var c=Buffer.alloc(256),d=0,f=process.stdin.fd;try{d=C.readSync(f,c,0,256)}catch(b){if(b.toString().includes("EOF"))d=0;else throw b}0<d&&(a=c.slice(0,d).toString("utf-8"))}else globalThis.window?.prompt&&(a=window.prompt("Input: "),a!==null&&(a+=`
28
+ `));if(!a){a=null;break e}c=Array($t(a)+1),a=Ve(a,c,0,c.length),c.length=a,ko=c}a=ko.shift()}return a},ub(a,c){c===null||c===10?(x(ds(a.output)),a.output=[]):c!=0&&a.output.push(c)},fsync(a){0<a.output?.length&&(x(ds(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]}},lc={ub(a,c){c===null||c===10?(w(ds(a.output)),a.output=[]):c!=0&&a.output.push(c)},fsync(a){0<a.output?.length&&(w(ds(a.output)),a.output=[])}},$={Wa:null,Xa(){return $.createNode(null,"/",16895,0)},createNode(a,c,d,f){if((d&61440)===24576||(d&61440)===4096)throw new O(63);return $.Wa||($.Wa={dir:{node:{Ta:$.La.Ta,Ua:$.La.Ua,lookup:$.La.lookup,ib:$.La.ib,rename:$.La.rename,unlink:$.La.unlink,rmdir:$.La.rmdir,readdir:$.La.readdir,symlink:$.La.symlink},stream:{Va:$.Ma.Va}},file:{node:{Ta:$.La.Ta,Ua:$.La.Ua},stream:{Va:$.Ma.Va,read:$.Ma.read,write:$.Ma.write,jb:$.Ma.jb,kb:$.Ma.kb}},link:{node:{Ta:$.La.Ta,Ua:$.La.Ua,readlink:$.La.readlink},stream:{}},yb:{node:{Ta:$.La.Ta,Ua:$.La.Ua},stream:pc}}),d=Cr(a,c,d,f),Se(d.mode)?(d.La=$.Wa.dir.node,d.Ma=$.Wa.dir.stream,d.Na={}):(d.mode&61440)===32768?(d.La=$.Wa.file.node,d.Ma=$.Wa.file.stream,d.Ra=0,d.Na=null):(d.mode&61440)===40960?(d.La=$.Wa.link.node,d.Ma=$.Wa.link.stream):(d.mode&61440)===8192&&(d.La=$.Wa.yb.node,d.Ma=$.Wa.yb.stream),d.atime=d.mtime=d.ctime=Date.now(),a&&(a.Na[c]=d,a.atime=a.mtime=a.ctime=d.atime),d},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,Se(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 d of["mode","atime","mtime","ctime"])c[d]!=null&&(a[d]=c[d]);c.size!==void 0&&(c=c.size,a.Ra!=c&&(c==0?(a.Na=null,a.Ra=0):(d=a.Na,a.Na=new Uint8Array(c),d&&a.Na.set(d.subarray(0,Math.min(c,a.Ra))),a.Ra=c)))},lookup(){throw $.nb||($.nb=new O(44),$.nb.stack="<generic error, no stack>"),$.nb},ib(a,c,d,f){return $.createNode(a,c,d,f)},rename(a,c,d){try{var f=vt(c,d)}catch{}if(f){if(Se(a.mode))for(var b in f.Na)throw new O(55);Po(f)}delete a.parent.Na[a.name],c.Na[d]=a,a.name=d,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 d=vt(a,c),f;for(f in d.Na)throw new O(55);delete a.Na[c],a.ctime=a.mtime=Date.now()},readdir(a){return[".","..",...Object.keys(a.Na)]},symlink(a,c,d){return a=$.createNode(a,c,41471,0),a.link=d,a},readlink(a){if((a.mode&61440)!==40960)throw new O(28);return a.link}},Ma:{read(a,c,d,f,b){var v=a.node.Na;if(b>=a.node.Ra)return 0;if(a=Math.min(a.node.Ra-b,f),8<a&&v.subarray)c.set(v.subarray(b,b+a),d);else for(f=0;f<a;f++)c[d+f]=v[b+f];return a},write(a,c,d,f,b,v){if(c.buffer===I.buffer&&(v=!1),!f)return 0;if(a=a.node,a.mtime=a.ctime=Date.now(),c.subarray&&(!a.Na||a.Na.subarray)){if(v)return a.Na=c.subarray(d,d+f),a.Ra=f;if(a.Ra===0&&b===0)return a.Na=c.slice(d,d+f),a.Ra=f;if(b+f<=a.Ra)return a.Na.set(c.subarray(d,d+f),b),f}v=b+f;var A=a.Na?a.Na.length:0;if(A>=v||(v=Math.max(v,A*(1048576>A?2:1.125)>>>0),A!=0&&(v=Math.max(v,256)),A=a.Na,a.Na=new Uint8Array(v),0<a.Ra&&a.Na.set(A.subarray(0,a.Ra),0)),a.Na.subarray&&c.subarray)a.Na.set(c.subarray(d,d+f),b);else for(v=0;v<f;v++)a.Na[b+v]=c[d+v];return a.Ra=Math.max(a.Ra,b+f),f},Va(a,c,d){if(d===1?c+=a.position:d===2&&(a.node.mode&61440)===32768&&(c+=a.node.Ra),0>c)throw new O(28);return c},jb(a,c,d,f,b){if((a.node.mode&61440)!==32768)throw new O(43);if(a=a.node.Na,b&2||!a||a.buffer!==I.buffer){b=!0,f=65536*Math.ceil(c/65536);var v=Fr(65536,f);if(v&&R.fill(0,v,v+f),f=v,!f)throw new O(48);a&&((0<d||d+c<a.length)&&(a.subarray?a=a.subarray(d,d+c):a=Array.prototype.slice.call(a,d,d+c)),I.set(a,f))}else b=!1,f=a.byteOffset;return{Xb:f,Eb:b}},kb(a,c,d,f){return $.Ma.write(a,c,0,f,d,!1),0}}},gr=(a,c)=>{var d=0;return a&&(d|=365),c&&(d|=146),d},So=null,yr={},zt=[],cc=1,ht=null,_r=!1,br=!0,O=class{name="ErrnoError";constructor(a){this.Pa=a}},uc=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}},dc=class{La={};Ma={};bb=null;constructor(a,c,d,f){a||=this,this.parent=a,this.Xa=a.Xa,this.id=cc++,this.name=c,this.mode=d,this.rdev=f,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 Oe(a,c={}){if(!a)throw new O(44);c.pb??(c.pb=!0),a.charAt(0)==="/"||(a="//"+a);var d=0;e:for(;40>d;d++){a=a.split("/").filter(j=>!!j);for(var f=So,b="/",v=0;v<a.length;v++){var A=v===a.length-1;if(A&&c.parent)break;if(a[v]!==".")if(a[v]==="..")if(b=mr(b),f===f.parent){a=b+"/"+a.slice(v+1).join("/"),d--;continue e}else f=f.parent;else{b=Co(b+"/"+a[v]);try{f=vt(f,a[v])}catch(j){if(j?.Pa===44&&A&&c.Wb)return{path:b};throw j}if(!f.bb||A&&!c.pb||(f=f.bb.root),(f.mode&61440)===40960&&(!A||c.ab)){if(!f.La.readlink)throw new O(52);f=f.La.readlink(f),f.charAt(0)==="/"||(f=mr(b)+"/"+f),a=f+"/"+a.slice(v+1).join("/");continue e}}}return{path:b,node:f}}throw new O(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 To(a,c){for(var d=0,f=0;f<c.length;f++)d=(d<<5)-d+c.charCodeAt(f)|0;return(a+d>>>0)%ht.length}function Po(a){var c=To(a.parent.id,a.name);if(ht[c]===a)ht[c]=a.cb;else for(c=ht[c];c;){if(c.cb===a){c.cb=a.cb;break}c=c.cb}}function vt(a,c){var d=Se(a.mode)?(d=Bt(a,"x"))?d:a.La.lookup?0:2:54;if(d)throw new O(d);for(d=ht[To(a.id,c)];d;d=d.cb){var f=d.name;if(d.parent.id===a.id&&f===c)return d}return a.La.lookup(a,c)}function Cr(a,c,d,f){return a=new dc(a,c,d,f),c=To(a.parent.id,a.name),a.cb=ht[c],ht[c]=a}function Se(a){return(a&61440)===16384}function Bt(a,c){return br?0:c.includes("r")&&!(a.mode&292)||c.includes("w")&&!(a.mode&146)||c.includes("x")&&!(a.mode&73)?2:0}function kr(a,c){if(!Se(a.mode))return 54;try{return vt(a,c),20}catch{}return Bt(a,"wx")}function Sr(a,c,d){try{var f=vt(a,c)}catch(b){return b.Pa}if(a=Bt(a,"wx"))return a;if(d){if(!Se(f.mode))return 54;if(f===f.parent||wo(f)==="/")return 10}else if(Se(f.mode))return 31;return 0}function en(a){if(!a)throw new O(63);return a}function be(a){if(a=zt[a],!a)throw new O(8);return a}function wr(a,c=-1){if(a=Object.assign(new uc,a),c==-1)e:{for(c=0;4096>=c;c++)if(!zt[c])break e;throw new O(33)}return a.fd=c,zt[c]=a}function mc(a,c=-1){return a=wr(a,c),a.Ma?.ec?.(a),a}function vo(a,c,d){var f=a?.Ma.Ua;a=f?a:c,f??=c.La.Ua,en(f),f(a,d)}var pc={open(a){a.Ma=yr[a.node.rdev].Ma,a.Ma.open?.(a)},Va(){throw new O(70)}};function Mo(a,c){yr[a]={Ma:c}}function Tr(a,c){var d=c==="/";if(d&&So)throw new O(10);if(!d&&c){var f=Oe(c,{pb:!1});if(c=f.path,f=f.node,f.bb)throw new O(10);if(!Se(f.mode))throw new O(54)}c={type:a,kc:{},Db:c,Vb:[]},a=a.Xa(c),a.Xa=c,c.root=a,d?So=a:f&&(f.bb=c,f.Xa&&f.Xa.Vb.push(c))}function tn(a,c,d){var f=Oe(a,{parent:!0}).node;if(a=Zs(a),!a)throw new O(28);if(a==="."||a==="..")throw new O(20);var b=kr(f,a);if(b)throw new O(b);if(!f.La.ib)throw new O(63);return f.La.ib(f,a,c,d)}function hc(a,c=438){return tn(a,c&4095|32768,0)}function Je(a,c=511){return tn(a,c&1023|16384,0)}function sn(a,c,d){typeof d>"u"&&(d=c,c=438),tn(a,c|8192,d)}function xo(a,c){if(!ic(a))throw new O(44);var d=Oe(c,{parent:!0}).node;if(!d)throw new O(44);c=Zs(c);var f=kr(d,c);if(f)throw new O(f);if(!d.La.symlink)throw new O(63);d.La.symlink(d,c,a)}function Pr(a){var c=Oe(a,{parent:!0}).node;a=Zs(a);var d=vt(c,a),f=Sr(c,a,!0);if(f)throw new O(f);if(!c.La.rmdir)throw new O(63);if(d.bb)throw new O(10);c.La.rmdir(c,a),Po(d)}function vr(a){var c=Oe(a,{parent:!0}).node;if(!c)throw new O(44);a=Zs(a);var d=vt(c,a),f=Sr(c,a,!1);if(f)throw new O(f);if(!c.La.unlink)throw new O(63);if(d.bb)throw new O(10);c.La.unlink(c,a),Po(d)}function ms(a,c){return a=Oe(a,{ab:!c}).node,en(a.La.Ta)(a)}function Mr(a,c,d,f){vo(a,c,{mode:d&4095|c.mode&-4096,ctime:Date.now(),Lb:f})}function nn(a,c){a=typeof a=="string"?Oe(a,{ab:!0}).node:a,Mr(null,a,c)}function xr(a,c,d){if(Se(c.mode))throw new O(31);if((c.mode&61440)!==32768)throw new O(28);var f=Bt(c,"w");if(f)throw new O(f);vo(a,c,{size:d,timestamp:Date.now()})}function Wt(a,c,d=438){if(a==="")throw new O(44);if(typeof c=="string"){var f={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[c];if(typeof f>"u")throw Error(`Unknown file open mode: ${c}`);c=f}if(d=c&64?d&4095|32768:0,typeof a=="object")f=a;else{var b=a.endsWith("/"),v=Oe(a,{ab:!(c&131072),Wb:!0});f=v.node,a=v.path}if(v=!1,c&64)if(f){if(c&128)throw new O(20)}else{if(b)throw new O(31);f=tn(a,d|511,0),v=!0}if(!f)throw new O(44);if((f.mode&61440)===8192&&(c&=-513),c&65536&&!Se(f.mode))throw new O(54);if(!v&&(f?(f.mode&61440)===40960?b=32:(b=["r","w","rw"][c&3],c&512&&(b+="w"),b=Se(f.mode)&&(b!=="r"||c&576)?31:Bt(f,b)):b=44,b))throw new O(b);return c&512&&!v&&(b=f,b=typeof b=="string"?Oe(b,{ab:!0}).node:b,xr(null,b,0)),c=wr({node:f,path:wo(f),flags:c&-131713,seekable:!0,position:0,Ma:f.Ma,Yb:[],error:!1}),c.Ma.open&&c.Ma.open(c),v&&nn(f,d&511),c}function Ao(a){if(a.fd===null)throw new O(8);a.rb&&(a.rb=null);try{a.Ma.close&&a.Ma.close(a)}catch(c){throw c}finally{zt[a.fd]=null}a.fd=null}function Ar(a,c,d){if(a.fd===null)throw new O(8);if(!a.seekable||!a.Ma.Va)throw new O(70);if(d!=0&&d!=1&&d!=2)throw new O(28);a.position=a.Ma.Va(a,c,d),a.Yb=[]}function Dr(a,c,d,f,b){if(0>f||0>b)throw new O(28);if(a.fd===null)throw new O(8);if((a.flags&2097155)===1)throw new O(8);if(Se(a.node.mode))throw new O(31);if(!a.Ma.read)throw new O(28);var v=typeof b<"u";if(!v)b=a.position;else if(!a.seekable)throw new O(70);return c=a.Ma.read(a,c,d,f,b),v||(a.position+=c),c}function Er(a,c,d,f,b){if(0>f||0>b)throw new O(28);if(a.fd===null)throw new O(8);if((a.flags&2097155)===0)throw new O(8);if(Se(a.node.mode))throw new O(31);if(!a.Ma.write)throw new O(28);a.seekable&&a.flags&1024&&Ar(a,0,2);var v=typeof b<"u";if(!v)b=a.position;else if(!a.seekable)throw new O(70);return c=a.Ma.write(a,c,d,f,b,void 0),v||(a.position+=c),c}function fc(a){var c=c||0,d="binary";d!=="utf8"&&d!=="binary"&&mt(`Invalid encoding type "${d}"`),c=Wt(a,c),a=ms(a).size;var f=new Uint8Array(a);return Dr(c,f,0,a,0),d==="utf8"&&(f=ds(f)),Ao(c),f}function ft(a,c,d){a=Co("/dev/"+a);var f=gr(!!c,!!d);ft.Cb??(ft.Cb=64);var b=ft.Cb++<<8|0;Mo(b,{open(v){v.seekable=!1},close(){d?.buffer?.length&&d(10)},read(v,A,j,Q){for(var z=0,te=0;te<Q;te++){try{var fe=c()}catch{throw new O(29)}if(fe===void 0&&z===0)throw new O(6);if(fe==null)break;z++,A[j+te]=fe}return z&&(v.node.atime=Date.now()),z},write(v,A,j,Q){for(var z=0;z<Q;z++)try{d(A[j+z])}catch{throw new O(29)}return Q&&(v.node.mtime=v.node.ctime=Date.now()),z}}),sn(a,f,b)}var ee={};function Mt(a,c,d){if(c.charAt(0)==="/")return c;if(a=a===-100?"/":be(a).path,c.length==0){if(!d)throw new O(44);return a}return a+"/"+c}function on(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),G[a+32>>2]=4096,G[a+36>>2]=c.blocks;var d=c.atime.getTime(),f=c.mtime.getTime(),b=c.ctime.getTime();return ve[a+40>>3]=BigInt(Math.floor(d/1e3)),q[a+48>>2]=d%1e3*1e6,ve[a+56>>3]=BigInt(Math.floor(f/1e3)),q[a+64>>2]=f%1e3*1e6,ve[a+72>>3]=BigInt(Math.floor(b/1e3)),q[a+80>>2]=b%1e3*1e6,ve[a+88>>3]=BigInt(c.ino),0}var rn=void 0,an=()=>{var a=G[+rn>>2];return rn+=4,a},Do=0,gc=[0,31,60,91,121,152,182,213,244,274,305,335],yc=[0,31,59,90,120,151,181,212,243,273,304,334],ps={},Ir=a=>{T=a,Xs||0<Do||(i.onExit?.(a),S=!0),m(a,new Z(a))},_c=a=>{if(!S)try{a()}catch(c){c instanceof Z||c=="unwind"||m(1,c)}finally{if(!(Xs||0<Do))try{T=a=T,Ir(a)}catch(c){c instanceof Z||c=="unwind"||m(1,c)}}},Eo={},Rr=()=>{if(!Io){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:p||"./this.program"},c;for(c in Eo)Eo[c]===void 0?delete a[c]:a[c]=Eo[c];var d=[];for(c in a)d.push(`${c}=${a[c]}`);Io=d}return Io},Io,bc=(a,c,d,f)=>{var b={string:z=>{var te=0;if(z!=null&&z!==0){te=$t(z)+1;var fe=At(te);Ve(z,R,fe,te),te=fe}return te},array:z=>{var te=At(z.length);return I.set(z,te),te}};a=i["_"+a];var v=[],A=0;if(f)for(var j=0;j<f.length;j++){var Q=b[d[j]];Q?(A===0&&(A=dn()),v[j]=Q(f[j])):v[j]=f[j]}return d=a(...v),d=(function(z){return A!==0&&un(A),c==="string"?le(z):c==="boolean"?!!z:z})(d)},ln=a=>{var c=$t(a)+1,d=cn(c);return d&&Ve(a,R,d,c),d},xt,Ro=[],gt=a=>{xt.delete(yt.get(a)),yt.set(a,null),Ro.push(a)},Or=a=>{let c=a.length;return[c%128|128,c>>7,...a]},Cc={i:127,p:127,j:126,f:125,d:124,e:111},Ur=a=>Or(Array.from(a,c=>Cc[c])),hs=(a,c)=>{if(!xt){xt=new WeakMap;var d=yt.length;if(xt)for(var f=0;f<0+d;f++){var b=yt.get(f);b&&xt.set(b,f)}}if(d=xt.get(a)||0)return d;d=Ro.length?Ro.pop():yt.grow(1);try{yt.set(d,a)}catch(v){if(!(v instanceof TypeError))throw v;c=Uint8Array.of(0,97,115,109,1,0,0,0,1,...Or([1,96,...Ur(c.slice(1)),...Ur(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,yt.set(d,c)}return xt.set(a,d),d};if(ht=Array(4096),Tr($,"/"),Je("/tmp"),Je("/home"),Je("/home/web_user"),(function(){Je("/dev"),Mo(259,{read:()=>0,write:(f,b,v,A)=>A,Va:()=>0}),sn("/dev/null",259),fr(1280,ac),fr(1536,lc),sn("/dev/tty",1280),sn("/dev/tty1",1536);var a=new Uint8Array(1024),c=0,d=()=>(c===0&&(pr(a),c=a.byteLength),a[--c]);ft("random",d),ft("urandom",d),Je("/dev/shm"),Je("/dev/shm/tmp")})(),(function(){Je("/proc");var a=Je("/proc/self");Je("/proc/self/fd"),Tr({Xa(){var c=Cr(a,"fd",16895,73);return c.Ma={Va:$.Ma.Va},c.La={lookup(d,f){d=+f;var b=be(d);return d={parent:null,Xa:{Db:"fake"},La:{readlink:()=>b.path},id:d+1},d.parent=d},readdir(){return Array.from(zt.entries()).filter(([,d])=>d).map(([d])=>d.toString())}},c}},"/proc/self/fd")})(),i.noExitRuntime&&(Xs=i.noExitRuntime),i.print&&(x=i.print),i.printErr&&(w=i.printErr),i.wasmBinary&&(M=i.wasmBinary),i.thisProgram&&(p=i.thisProgram),i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.shift()();i.stackSave=()=>dn(),i.stackRestore=a=>un(a),i.stackAlloc=a=>At(a),i.cwrap=(a,c,d,f)=>{var b=!d||d.every(v=>v==="number"||v==="boolean");return c!=="string"&&b&&!f?i["_"+a]:(...v)=>bc(a,c,d,v)},i.addFunction=hs,i.removeFunction=gt,i.UTF8ToString=le,i.stringToNewUTF8=ln,i.writeArrayToMemory=(a,c)=>{I.set(a,c)};var cn,fs,Fr,Nr,un,At,dn,mn,yt,kc={a:(a,c,d,f)=>mt(`Assertion failed: ${le(a)}, at: `+[c?le(c):"unknown filename",d,f?le(f):"unknown function"]),i:function(a,c){try{return a=le(a),nn(a,c),0}catch(d){if(typeof ee>"u"||d.name!=="ErrnoError")throw d;return-d.Pa}},L:function(a,c,d){try{if(c=le(c),c=Mt(a,c),d&-8)return-28;var f=Oe(c,{ab:!0}).node;return f?(a="",d&4&&(a+="r"),d&2&&(a+="w"),d&1&&(a+="x"),a&&Bt(f,a)?-2:0):-44}catch(b){if(typeof ee>"u"||b.name!=="ErrnoError")throw b;return-b.Pa}},j:function(a,c){try{var d=be(a);return Mr(d,d.node,c,!1),0}catch(f){if(typeof ee>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},h:function(a){try{var c=be(a);return vo(c,c.node,{timestamp:Date.now(),Lb:!1}),0}catch(d){if(typeof ee>"u"||d.name!=="ErrnoError")throw d;return-d.Pa}},b:function(a,c,d){rn=d;try{var f=be(a);switch(c){case 0:var b=an();if(0>b)break;for(;zt[b];)b++;return mc(f,b).fd;case 1:case 2:return 0;case 3:return f.flags;case 4:return b=an(),f.flags|=b,0;case 12:return b=an(),H[b+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(v){if(typeof ee>"u"||v.name!=="ErrnoError")throw v;return-v.Pa}},g:function(a,c){try{var d=be(a),f=d.node,b=d.Ma.Ta;a=b?d:f,b??=f.La.Ta,en(b);var v=b(a);return on(c,v)}catch(A){if(typeof ee>"u"||A.name!=="ErrnoError")throw A;return-A.Pa}},H:function(a,c){c=-9007199254740992>c||9007199254740992<c?NaN:Number(c);try{if(isNaN(c))return-61;var d=be(a);if(0>c||(d.flags&2097155)===0)throw new O(28);return xr(d,d.node,c),0}catch(f){if(typeof ee>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},G:function(a,c){try{if(c===0)return-28;var d=$t("/")+1;return c<d?-68:(Ve("/",R,a,c),d)}catch(f){if(typeof ee>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},K:function(a,c){try{return a=le(a),on(c,ms(a,!0))}catch(d){if(typeof ee>"u"||d.name!=="ErrnoError")throw d;return-d.Pa}},C:function(a,c,d){try{return c=le(c),c=Mt(a,c),Je(c,d),0}catch(f){if(typeof ee>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},J:function(a,c,d,f){try{c=le(c);var b=f&256;return c=Mt(a,c,f&4096),on(d,b?ms(c,!0):ms(c))}catch(v){if(typeof ee>"u"||v.name!=="ErrnoError")throw v;return-v.Pa}},x:function(a,c,d,f){rn=f;try{c=le(c),c=Mt(a,c);var b=f?an():0;return Wt(c,d,b).fd}catch(v){if(typeof ee>"u"||v.name!=="ErrnoError")throw v;return-v.Pa}},v:function(a,c,d,f){try{if(c=le(c),c=Mt(a,c),0>=f)return-28;var b=Oe(c).node;if(!b)throw new O(44);if(!b.La.readlink)throw new O(28);var v=b.La.readlink(b),A=Math.min(f,$t(v)),j=I[d+A];return Ve(v,R,d,f+1),I[d+A]=j,A}catch(Q){if(typeof ee>"u"||Q.name!=="ErrnoError")throw Q;return-Q.Pa}},u:function(a){try{return a=le(a),Pr(a),0}catch(c){if(typeof ee>"u"||c.name!=="ErrnoError")throw c;return-c.Pa}},f:function(a,c){try{return a=le(a),on(c,ms(a))}catch(d){if(typeof ee>"u"||d.name!=="ErrnoError")throw d;return-d.Pa}},r:function(a,c,d){try{if(c=le(c),c=Mt(a,c),d)if(d===512)Pr(c);else return-28;else vr(c);return 0}catch(f){if(typeof ee>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},q:function(a,c,d){try{c=le(c),c=Mt(a,c,!0);var f=Date.now(),b,v;if(d){var A=q[d>>2]+4294967296*G[d+4>>2],j=G[d+8>>2];j==1073741823?b=f:j==1073741822?b=null:b=1e3*A+j/1e6,d+=16,A=q[d>>2]+4294967296*G[d+4>>2],j=G[d+8>>2],j==1073741823?v=f:j==1073741822?v=null:v=1e3*A+j/1e6}else v=b=f;if((v??b)!==null){a=b;var Q=Oe(c,{ab:!0}).node;en(Q.La.Ua)(Q,{atime:a,mtime:v})}return 0}catch(z){if(typeof ee>"u"||z.name!=="ErrnoError")throw z;return-z.Pa}},m:()=>mt(""),l:()=>{Xs=!1,Do=0},A:function(a,c){a=-9007199254740992>a||9007199254740992<a?NaN:Number(a),a=new Date(1e3*a),G[c>>2]=a.getSeconds(),G[c+4>>2]=a.getMinutes(),G[c+8>>2]=a.getHours(),G[c+12>>2]=a.getDate(),G[c+16>>2]=a.getMonth(),G[c+20>>2]=a.getFullYear()-1900,G[c+24>>2]=a.getDay();var d=a.getFullYear();G[c+28>>2]=(d%4!==0||d%100===0&&d%400!==0?yc:gc)[a.getMonth()]+a.getDate()-1|0,G[c+36>>2]=-(60*a.getTimezoneOffset()),d=new Date(a.getFullYear(),6,1).getTimezoneOffset();var f=new Date(a.getFullYear(),0,1).getTimezoneOffset();G[c+32>>2]=(d!=f&&a.getTimezoneOffset()==Math.min(f,d))|0},y:function(a,c,d,f,b,v,A){b=-9007199254740992>b||9007199254740992<b?NaN:Number(b);try{var j=be(f);if((c&2)!==0&&(d&2)===0&&(j.flags&2097155)!==2)throw new O(2);if((j.flags&2097155)===1)throw new O(2);if(!j.Ma.jb)throw new O(43);if(!a)throw new O(28);var Q=j.Ma.jb(j,a,b,c,d),z=Q.Xb;return G[v>>2]=Q.Eb,q[A>>2]=z,0}catch(te){if(typeof ee>"u"||te.name!=="ErrnoError")throw te;return-te.Pa}},z:function(a,c,d,f,b,v){v=-9007199254740992>v||9007199254740992<v?NaN:Number(v);try{var A=be(b);if(d&2){if(d=v,(A.node.mode&61440)!==32768)throw new O(43);if(!(f&2)){var j=R.slice(a,a+c);A.Ma.kb&&A.Ma.kb(A,j,d,c,f)}}}catch(Q){if(typeof ee>"u"||Q.name!=="ErrnoError")throw Q;return-Q.Pa}},n:(a,c)=>{if(ps[a]&&(clearTimeout(ps[a].id),delete ps[a]),!c)return 0;var d=setTimeout(()=>{delete ps[a],_c(()=>Nr(a,performance.now()))},c);return ps[a]={id:d,lc:c},0},B:(a,c,d,f)=>{var b=new Date().getFullYear(),v=new Date(b,0,1).getTimezoneOffset();b=new Date(b,6,1).getTimezoneOffset(),q[a>>2]=60*Math.max(v,b),G[c>>2]=+(v!=b),c=A=>{var j=Math.abs(A);return`UTC${0<=A?"-":"+"}${String(Math.floor(j/60)).padStart(2,"0")}${String(j%60).padStart(2,"0")}`},a=c(v),c=c(b),b<v?(Ve(a,R,d,17),Ve(c,R,f,17)):(Ve(a,R,f,17),Ve(c,R,d,17))},d:()=>Date.now(),s:()=>2147483648,c:()=>performance.now(),o:a=>{var c=R.length;if(a>>>=0,2147483648<a)return!1;for(var d=1;4>=d;d*=2){var f=c*(1+.2/d);f=Math.min(f,a+100663296);e:{f=(Math.min(2147483648,65536*Math.ceil(Math.max(a,f)/65536))-mn.buffer.byteLength+65535)/65536|0;try{mn.grow(f),as();var b=1;break e}catch{}b=void 0}if(b)return!0}return!1},E:(a,c)=>{var d=0,f=0,b;for(b of Rr()){var v=c+d;q[a+f>>2]=v,d+=Ve(b,R,v,1/0)+1,f+=4}return 0},F:(a,c)=>{var d=Rr();q[a>>2]=d.length,a=0;for(var f of d)a+=$t(f)+1;return q[c>>2]=a,0},e:function(a){try{var c=be(a);return Ao(c),0}catch(d){if(typeof ee>"u"||d.name!=="ErrnoError")throw d;return d.Pa}},p:function(a,c){try{var d=be(a);return I[c]=d.tty?2:Se(d.mode)?3:(d.mode&61440)===40960?7:4,H[c+2>>1]=0,ve[c+8>>3]=BigInt(0),ve[c+16>>3]=BigInt(0),0}catch(f){if(typeof ee>"u"||f.name!=="ErrnoError")throw f;return f.Pa}},w:function(a,c,d,f){try{e:{var b=be(a);a=c;for(var v,A=c=0;A<d;A++){var j=q[a>>2],Q=q[a+4>>2];a+=8;var z=Dr(b,I,j,Q,v);if(0>z){var te=-1;break e}if(c+=z,z<Q)break;typeof v<"u"&&(v+=z)}te=c}return q[f>>2]=te,0}catch(fe){if(typeof ee>"u"||fe.name!=="ErrnoError")throw fe;return fe.Pa}},D:function(a,c,d,f){c=-9007199254740992>c||9007199254740992<c?NaN:Number(c);try{if(isNaN(c))return 61;var b=be(a);return Ar(b,c,d),ve[f>>3]=BigInt(b.position),b.rb&&c===0&&d===0&&(b.rb=null),0}catch(v){if(typeof ee>"u"||v.name!=="ErrnoError")throw v;return v.Pa}},I:function(a){try{var c=be(a);return c.Ma?.fsync?.(c)}catch(d){if(typeof ee>"u"||d.name!=="ErrnoError")throw d;return d.Pa}},t:function(a,c,d,f){try{e:{var b=be(a);a=c;for(var v,A=c=0;A<d;A++){var j=q[a>>2],Q=q[a+4>>2];a+=8;var z=Er(b,I,j,Q,v);if(0>z){var te=-1;break e}if(c+=z,z<Q)break;typeof v<"u"&&(v+=z)}te=c}return q[f>>2]=te,0}catch(fe){if(typeof ee>"u"||fe.name!=="ErrnoError")throw fe;return fe.Pa}},k:Ir};function Oo(){function a(){if(i.calledRun=!0,!S){if(!i.noFSInit&&!_r){var c,d;_r=!0,c??=i.stdin,d??=i.stdout,f??=i.stderr,c?ft("stdin",c):xo("/dev/tty","/dev/stdin"),d?ft("stdout",null,d):xo("/dev/tty","/dev/stdout"),f?ft("stderr",null,f):xo("/dev/tty1","/dev/stderr"),Wt("/dev/stdin",0),Wt("/dev/stdout",1),Wt("/dev/stderr",1)}if(Uo.N(),br=!1,i.onRuntimeInitialized?.(),i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;){var f=i.postRun.shift();pt.push(f)}ye(pt)}}if(0<Pt)cs=Oo;else{if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)ls();ye(qt),0<Pt?cs=Oo:i.setStatus?(i.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>i.setStatus(""),1),a()},1)):a()}}var Uo;return(async function(){function a(d){return d=Uo=d.exports,i._sqlite3_free=d.P,i._sqlite3_value_text=d.Q,i._sqlite3_prepare_v2=d.R,i._sqlite3_step=d.S,i._sqlite3_reset=d.T,i._sqlite3_exec=d.U,i._sqlite3_finalize=d.V,i._sqlite3_column_name=d.W,i._sqlite3_column_text=d.X,i._sqlite3_column_type=d.Y,i._sqlite3_errmsg=d.Z,i._sqlite3_clear_bindings=d._,i._sqlite3_value_blob=d.$,i._sqlite3_value_bytes=d.aa,i._sqlite3_value_double=d.ba,i._sqlite3_value_int=d.ca,i._sqlite3_value_type=d.da,i._sqlite3_result_blob=d.ea,i._sqlite3_result_double=d.fa,i._sqlite3_result_error=d.ga,i._sqlite3_result_int=d.ha,i._sqlite3_result_int64=d.ia,i._sqlite3_result_null=d.ja,i._sqlite3_result_text=d.ka,i._sqlite3_aggregate_context=d.la,i._sqlite3_column_count=d.ma,i._sqlite3_data_count=d.na,i._sqlite3_column_blob=d.oa,i._sqlite3_column_bytes=d.pa,i._sqlite3_column_double=d.qa,i._sqlite3_bind_blob=d.ra,i._sqlite3_bind_double=d.sa,i._sqlite3_bind_int=d.ta,i._sqlite3_bind_text=d.ua,i._sqlite3_bind_parameter_index=d.va,i._sqlite3_sql=d.wa,i._sqlite3_normalized_sql=d.xa,i._sqlite3_changes=d.ya,i._sqlite3_close_v2=d.za,i._sqlite3_create_function_v2=d.Aa,i._sqlite3_update_hook=d.Ba,i._sqlite3_open=d.Ca,cn=i._malloc=d.Da,fs=i._free=d.Ea,i._RegisterExtensionFunctions=d.Fa,Fr=d.Ga,Nr=d.Ha,un=d.Ia,At=d.Ja,dn=d.Ka,mn=d.M,yt=d.O,as(),Pt--,i.monitorRunDependencies?.(Pt),Pt==0&&cs&&(d=cs,cs=null,d()),Uo}Pt++,i.monitorRunDependencies?.(Pt);var c={a:kc};return i.instantiateWasm?new Promise(d=>{i.instantiateWasm(c,(f,b)=>{d(a(f,b))})}):(Qe??=i.locateFile?i.locateFile("sql-wasm.wasm",g):g+"sql-wasm.wasm",a((await bo(c)).instance))})(),Oo(),s}),vn)};typeof xn=="object"&&typeof Et=="object"?(Et.exports=Mn,Et.exports.default=Mn):typeof define=="function"&&define.amd?define([],function(){return Mn}):typeof xn=="object"&&(xn.Module=Mn)});var On=se(Ze=>{"use strict";Object.defineProperty(Ze,"__esModule",{value:!0});Ze.utf8Count=Eu;Ze.utf8EncodeJs=va;Ze.utf8EncodeTE=Ma;Ze.utf8Encode=Ou;Ze.utf8DecodeJs=xa;Ze.utf8DecodeTD=Aa;Ze.utf8Decode=Gu;function Eu(o){let e=o.length,t=0,s=0;for(;s<e;){let n=o.charCodeAt(s++);if((n&4294967168)===0){t++;continue}else if((n&4294965248)===0)t+=2;else{if(n>=55296&&n<=56319&&s<e){let i=o.charCodeAt(s);(i&64512)===56320&&(++s,n=((n&1023)<<10)+(i&1023)+65536)}(n&4294901760)===0?t+=3:t+=4}}return t}function va(o,e,t){let s=o.length,n=t,i=0;for(;i<s;){let r=o.charCodeAt(i++);if((r&4294967168)===0){e[n++]=r;continue}else if((r&4294965248)===0)e[n++]=r>>6&31|192;else{if(r>=55296&&r<=56319&&i<s){let l=o.charCodeAt(i);(l&64512)===56320&&(++i,r=((r&1023)<<10)+(l&1023)+65536)}(r&4294901760)===0?(e[n++]=r>>12&15|224,e[n++]=r>>6&63|128):(e[n++]=r>>18&7|240,e[n++]=r>>12&63|128,e[n++]=r>>6&63|128)}e[n++]=r&63|128}}var Iu=new TextEncoder,Ru=50;function Ma(o,e,t){Iu.encodeInto(o,e.subarray(t))}function Ou(o,e,t){o.length>Ru?Ma(o,e,t):va(o,e,t)}var Uu=4096;function xa(o,e,t){let s=e,n=s+t,i=[],r="";for(;s<n;){let l=o[s++];if((l&128)===0)i.push(l);else if((l&224)===192){let u=o[s++]&63;i.push((l&31)<<6|u)}else if((l&240)===224){let u=o[s++]&63,p=o[s++]&63;i.push((l&31)<<12|u<<6|p)}else if((l&248)===240){let u=o[s++]&63,p=o[s++]&63,m=o[s++]&63,h=(l&7)<<18|u<<12|p<<6|m;h>65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|h&1023),i.push(h)}else i.push(l);i.length>=Uu&&(r+=String.fromCharCode(...i),i.length=0)}return i.length>0&&(r+=String.fromCharCode(...i)),r}var Fu=new TextDecoder,Nu=200;function Aa(o,e,t){let s=o.subarray(e,e+t);return Fu.decode(s)}function Gu(o,e,t){return t>Nu?Aa(o,e,t):xa(o,e,t)}});var ai=se(Un=>{"use strict";Object.defineProperty(Un,"__esModule",{value:!0});Un.ExtData=void 0;var ri=class{type;data;constructor(e,t){this.type=e,this.data=t}};Un.ExtData=ri});var Nn=se(Fn=>{"use strict";Object.defineProperty(Fn,"__esModule",{value:!0});Fn.DecodeError=void 0;var li=class o extends Error{constructor(e){super(e);let t=Object.create(o.prototype);Object.setPrototypeOf(this,t),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:o.name})}};Fn.DecodeError=li});var Gn=se(Ct=>{"use strict";Object.defineProperty(Ct,"__esModule",{value:!0});Ct.UINT32_MAX=void 0;Ct.setUint64=Lu;Ct.setInt64=ju;Ct.getInt64=qu;Ct.getUint64=$u;Ct.UINT32_MAX=4294967295;function Lu(o,e,t){let s=t/4294967296,n=t;o.setUint32(e,s),o.setUint32(e+4,n)}function ju(o,e,t){let s=Math.floor(t/4294967296),n=t;o.setUint32(e,s),o.setUint32(e+4,n)}function qu(o,e){let t=o.getInt32(e),s=o.getUint32(e+4);return t*4294967296+s}function $u(o,e){let t=o.getUint32(e),s=o.getUint32(e+4);return t*4294967296+s}});var ci=se(Ge=>{"use strict";Object.defineProperty(Ge,"__esModule",{value:!0});Ge.timestampExtension=Ge.EXT_TIMESTAMP=void 0;Ge.encodeTimeSpecToTimestamp=Ea;Ge.encodeDateToTimeSpec=Ia;Ge.encodeTimestampExtension=Ra;Ge.decodeTimestampToTimeSpec=Oa;Ge.decodeTimestampExtension=Ua;var zu=Nn(),Da=Gn();Ge.EXT_TIMESTAMP=-1;var Bu=4294967296-1,Wu=17179869184-1;function Ea({sec:o,nsec:e}){if(o>=0&&e>=0&&o<=Wu)if(e===0&&o<=Bu){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,o),t}else{let t=o/4294967296,s=o&4294967295,n=new Uint8Array(8),i=new DataView(n.buffer);return i.setUint32(0,e<<2|t&3),i.setUint32(4,s),n}else{let t=new Uint8Array(12),s=new DataView(t.buffer);return s.setUint32(0,e),(0,Da.setInt64)(s,4,o),t}}function Ia(o){let e=o.getTime(),t=Math.floor(e/1e3),s=(e-t*1e3)*1e6,n=Math.floor(s/1e9);return{sec:t+n,nsec:s-n*1e9}}function Ra(o){if(o instanceof Date){let e=Ia(o);return Ea(e)}else return null}function Oa(o){let e=new DataView(o.buffer,o.byteOffset,o.byteLength);switch(o.byteLength){case 4:return{sec:e.getUint32(0),nsec:0};case 8:{let t=e.getUint32(0),s=e.getUint32(4),n=(t&3)*4294967296+s,i=t>>>2;return{sec:n,nsec:i}}case 12:{let t=(0,Da.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): ${o.length}`)}}function Ua(o){let e=Oa(o);return new Date(e.sec*1e3+e.nsec/1e6)}Ge.timestampExtension={type:Ge.EXT_TIMESTAMP,encode:Ra,decode:Ua}});var qn=se(jn=>{"use strict";Object.defineProperty(jn,"__esModule",{value:!0});jn.ExtensionCodec=void 0;var Ln=ai(),Hu=ci(),ui=class o{static defaultCodec=new o;__brand;builtInEncoders=[];builtInDecoders=[];encoders=[];decoders=[];constructor(){this.register(Hu.timestampExtension)}register({type:e,encode:t,decode:s}){if(e>=0)this.encoders[e]=t,this.decoders[e]=s;else{let n=-1-e;this.builtInEncoders[n]=t,this.builtInDecoders[n]=s}}tryToEncode(e,t){for(let s=0;s<this.builtInEncoders.length;s++){let n=this.builtInEncoders[s];if(n!=null){let i=n(e,t);if(i!=null){let r=-1-s;return new Ln.ExtData(r,i)}}}for(let s=0;s<this.encoders.length;s++){let n=this.encoders[s];if(n!=null){let i=n(e,t);if(i!=null){let r=s;return new Ln.ExtData(r,i)}}}return e instanceof Ln.ExtData?e:null}decode(e,t,s){let n=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return n?n(e,t,s):new Ln.ExtData(t,e)}};jn.ExtensionCodec=ui});var mi=se(di=>{"use strict";Object.defineProperty(di,"__esModule",{value:!0});di.ensureUint8Array=Ju;function Vu(o){return o instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&o instanceof SharedArrayBuffer}function Ju(o){return o instanceof Uint8Array?o:ArrayBuffer.isView(o)?new Uint8Array(o.buffer,o.byteOffset,o.byteLength):Vu(o)?new Uint8Array(o):Uint8Array.from(o)}});var hi=se(Ke=>{"use strict";Object.defineProperty(Ke,"__esModule",{value:!0});Ke.Encoder=Ke.DEFAULT_INITIAL_BUFFER_SIZE=Ke.DEFAULT_MAX_DEPTH=void 0;var Fa=On(),Ku=qn(),Na=Gn(),Qu=mi();Ke.DEFAULT_MAX_DEPTH=100;Ke.DEFAULT_INITIAL_BUFFER_SIZE=2048;var pi=class o{extensionCodec;context;useBigInt64;maxDepth;initialBufferSize;sortKeys;forceFloat32;ignoreUndefined;forceIntegerToFloat;pos;view;bytes;entered=!1;constructor(e){this.extensionCodec=e?.extensionCodec??Ku.ExtensionCodec.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.maxDepth=e?.maxDepth??Ke.DEFAULT_MAX_DEPTH,this.initialBufferSize=e?.initialBufferSize??Ke.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 o({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),n=new DataView(t);s.set(this.bytes),this.view=n,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,Fa.utf8Count)(e);this.ensureBufferSizeToWrite(5+s),this.writeStringHeader(s),(0,Fa.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,Qu.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 n of e)this.doEncode(n,t+1)}countWithoutUndefined(e,t){let s=0;for(let n of t)e[n]!==void 0&&s++;return s}encodeMap(e,t){let s=Object.keys(e);this.sortKeys&&s.sort();let n=this.ignoreUndefined?this.countWithoutUndefined(e,s):s.length;if(n<16)this.writeU8(128+n);else if(n<65536)this.writeU8(222),this.writeU16(n);else if(n<4294967296)this.writeU8(223),this.writeU32(n);else throw new Error(`Too large map object: ${n}`);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),n=s.length;if(n>=4294967296)throw new Error(`Too large extension object: ${n}`);this.writeU8(201),this.writeU32(n),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,Na.setUint64)(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),(0,Na.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}};Ke.Encoder=pi});var Ga=se(fi=>{"use strict";Object.defineProperty(fi,"__esModule",{value:!0});fi.encode=Xu;var Yu=hi();function Xu(o,e){return new Yu.Encoder(e).encodeSharedRef(o)}});var La=se(gi=>{"use strict";Object.defineProperty(gi,"__esModule",{value:!0});gi.prettyByte=Zu;function Zu(o){return`${o<0?"-":""}0x${Math.abs(o).toString(16).padStart(2,"0")}`}});var ja=se($n=>{"use strict";Object.defineProperty($n,"__esModule",{value:!0});$n.CachedKeyDecoder=void 0;var ed=On(),td=16,sd=16,yi=class{hit=0;miss=0;caches;maxKeyLength;maxLengthPerKey;constructor(e=td,t=sd){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 n=this.caches[s-1];e:for(let i of n){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],n={bytes:e,str:t};s.length>=this.maxLengthPerKey?s[Math.random()*s.length|0]=n:s.push(n)}decode(e,t,s){let n=this.find(e,t,s);if(n!=null)return this.hit++,n;this.miss++;let i=(0,ed.utf8DecodeJs)(e,t,s),r=Uint8Array.prototype.slice.call(e,t,t+s);return this.store(r,i),i}};$n.CachedKeyDecoder=yi});var Bn=se(zn=>{"use strict";Object.defineProperty(zn,"__esModule",{value:!0});zn.Decoder=void 0;var _i=La(),nd=qn(),Ut=Gn(),od=On(),qa=mi(),id=ja(),et=Nn(),bi="array",Ps="map_key",za="map_value",rd=o=>{if(typeof o=="string"||typeof o=="number")return o;throw new et.DecodeError("The type of key must be string or number but "+typeof o)},Ci=class{stack=[];stackHeadPosition=-1;get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(e){let t=this.getUninitializedStateFromPool();t.type=bi,t.position=0,t.size=e,t.array=new Array(e)}pushMapState(e){let t=this.getUninitializedStateFromPool();t.type=Ps,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===bi){let s=e;s.size=0,s.array=void 0,s.position=0,s.type=void 0}if(e.type===Ps||e.type===za){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}},Ts=-1,Si=new DataView(new ArrayBuffer(0)),ad=new Uint8Array(Si.buffer);try{Si.getInt8(0)}catch(o){if(!(o 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 $a=new RangeError("Insufficient data"),ld=new id.CachedKeyDecoder,ki=class o{extensionCodec;context;useBigInt64;rawStrings;maxStrLength;maxBinLength;maxArrayLength;maxMapLength;maxExtLength;keyDecoder;mapKeyConverter;totalPos=0;pos=0;view=Si;bytes=ad;headByte=Ts;stack=new Ci;entered=!1;constructor(e){this.extensionCodec=e?.extensionCodec??nd.ExtensionCodec.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.rawStrings=e?.rawStrings??!1,this.maxStrLength=e?.maxStrLength??Ut.UINT32_MAX,this.maxBinLength=e?.maxBinLength??Ut.UINT32_MAX,this.maxArrayLength=e?.maxArrayLength??Ut.UINT32_MAX,this.maxMapLength=e?.maxMapLength??Ut.UINT32_MAX,this.maxExtLength=e?.maxExtLength??Ut.UINT32_MAX,this.keyDecoder=e?.keyDecoder!==void 0?e.keyDecoder:ld,this.mapKeyConverter=e?.mapKeyConverter??rd}clone(){return new o({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=Ts,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===Ts&&!this.hasRemaining(1))this.setBuffer(e);else{let t=this.bytes.subarray(this.pos),s=(0,qa.ensureUint8Array)(e),n=new Uint8Array(t.length+s.length);n.set(t),n.set(s,t.length),this.setBuffer(n)}}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(u){if(!(u instanceof RangeError))throw u}this.totalPos+=this.pos}if(t){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return s}let{headByte:n,pos:i,totalPos:r}=this;throw new RangeError(`Insufficient data in parsing ${(0,_i.prettyByte)(n)} 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,n=-1;for await(let i of e){if(t&&n===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(i),s&&(n=this.readArraySize(),s=!1,this.complete());try{for(;yield this.doDecodeSync(),--n!==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 n=e-128;if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e<160){let n=e-144;if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else{let n=e-160;t=this.decodeString(n,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 n=this.lookU8();t=this.decodeString(n,1)}else if(e===218){let n=this.lookU16();t=this.decodeString(n,2)}else if(e===219){let n=this.lookU32();t=this.decodeString(n,4)}else if(e===220){let n=this.readU16();if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else if(e===221){let n=this.readU32();if(n!==0){this.pushArrayState(n),this.complete();continue e}else t=[]}else if(e===222){let n=this.readU16();if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e===223){let n=this.readU32();if(n!==0){this.pushMapState(n),this.complete();continue e}else t={}}else if(e===196){let n=this.lookU8();t=this.decodeBinary(n,1)}else if(e===197){let n=this.lookU16();t=this.decodeBinary(n,2)}else if(e===198){let n=this.lookU32();t=this.decodeBinary(n,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 n=this.lookU8();t=this.decodeExtension(n,1)}else if(e===200){let n=this.lookU16();t=this.decodeExtension(n,2)}else if(e===201){let n=this.lookU32();t=this.decodeExtension(n,4)}else throw new et.DecodeError(`Unrecognized type byte: ${(0,_i.prettyByte)(e)}`);this.complete();let s=this.stack;for(;s.length>0;){let n=s.top();if(n.type===bi)if(n.array[n.position]=t,n.position++,n.position===n.size)t=n.array,s.release(n);else continue e;else if(n.type===Ps){if(t==="__proto__")throw new et.DecodeError("The key __proto__ is not allowed");n.key=this.mapKeyConverter(t),n.type=za;continue e}else if(n.map[n.key]=t,n.readCount++,n.readCount===n.size)t=n.map,s.release(n);else{n.key=null,n.type=Ps;continue e}}return t}}readHeadByte(){return this.headByte===Ts&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=Ts}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 et.DecodeError(`Unrecognized array type byte: ${(0,_i.prettyByte)(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new et.DecodeError(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(e)}pushArrayState(e){if(e>this.maxArrayLength)throw new et.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 et.DecodeError(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw $a;let s=this.pos+t,n;return this.stateIsMapKey()&&this.keyDecoder?.canBeCached(e)?n=this.keyDecoder.decode(this.bytes,s,e):n=(0,od.utf8Decode)(this.bytes,s,e),this.pos+=t+e,n}stateIsMapKey(){return this.stack.length>0?this.stack.top().type===Ps:!1}decodeBinary(e,t){if(e>this.maxBinLength)throw new et.DecodeError(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw $a;let s=this.pos+t,n=this.bytes.subarray(s,s+e);return this.pos+=t+e,n}decodeExtension(e,t){if(e>this.maxExtLength)throw new et.DecodeError(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);let s=this.view.getInt8(this.pos+t),n=this.decodeBinary(e,t+1);return this.extensionCodec.decode(n,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,Ut.getUint64)(this.view,this.pos);return this.pos+=8,e}readI64(){let e=(0,Ut.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=ki});var Wa=se(Wn=>{"use strict";Object.defineProperty(Wn,"__esModule",{value:!0});Wn.decode=cd;Wn.decodeMulti=ud;var Ba=Bn();function cd(o,e){return new Ba.Decoder(e).decode(o)}function ud(o,e){return new Ba.Decoder(e).decodeMulti(o)}});var Ja=se(vs=>{"use strict";Object.defineProperty(vs,"__esModule",{value:!0});vs.isAsyncIterable=Ha;vs.asyncIterableFromStream=Va;vs.ensureAsyncIterable=dd;function Ha(o){return o[Symbol.asyncIterator]!=null}async function*Va(o){let e=o.getReader();try{for(;;){let{done:t,value:s}=await e.read();if(t)return;yield s}}finally{e.releaseLock()}}function dd(o){return Ha(o)?o:Va(o)}});var Ka=se(Ms=>{"use strict";Object.defineProperty(Ms,"__esModule",{value:!0});Ms.decodeAsync=md;Ms.decodeArrayStream=pd;Ms.decodeMultiStream=hd;var wi=Bn(),Ti=Ja();async function md(o,e){let t=(0,Ti.ensureAsyncIterable)(o);return new wi.Decoder(e).decodeAsync(t)}function pd(o,e){let t=(0,Ti.ensureAsyncIterable)(o);return new wi.Decoder(e).decodeArrayStream(t)}function hd(o,e){let t=(0,Ti.ensureAsyncIterable)(o);return new wi.Decoder(e).decodeStream(t)}});var Ya=se(W=>{"use strict";Object.defineProperty(W,"__esModule",{value:!0});W.decodeTimestampExtension=W.encodeTimestampExtension=W.decodeTimestampToTimeSpec=W.encodeTimeSpecToTimestamp=W.encodeDateToTimeSpec=W.EXT_TIMESTAMP=W.ExtData=W.ExtensionCodec=W.Encoder=W.DecodeError=W.Decoder=W.decodeMultiStream=W.decodeArrayStream=W.decodeAsync=W.decodeMulti=W.decode=W.encode=void 0;var fd=Ga();Object.defineProperty(W,"encode",{enumerable:!0,get:function(){return fd.encode}});var Qa=Wa();Object.defineProperty(W,"decode",{enumerable:!0,get:function(){return Qa.decode}});Object.defineProperty(W,"decodeMulti",{enumerable:!0,get:function(){return Qa.decodeMulti}});var Pi=Ka();Object.defineProperty(W,"decodeAsync",{enumerable:!0,get:function(){return Pi.decodeAsync}});Object.defineProperty(W,"decodeArrayStream",{enumerable:!0,get:function(){return Pi.decodeArrayStream}});Object.defineProperty(W,"decodeMultiStream",{enumerable:!0,get:function(){return Pi.decodeMultiStream}});var gd=Bn();Object.defineProperty(W,"Decoder",{enumerable:!0,get:function(){return gd.Decoder}});var yd=Nn();Object.defineProperty(W,"DecodeError",{enumerable:!0,get:function(){return yd.DecodeError}});var _d=hi();Object.defineProperty(W,"Encoder",{enumerable:!0,get:function(){return _d.Encoder}});var bd=qn();Object.defineProperty(W,"ExtensionCodec",{enumerable:!0,get:function(){return bd.ExtensionCodec}});var Cd=ai();Object.defineProperty(W,"ExtData",{enumerable:!0,get:function(){return Cd.ExtData}});var Jt=ci();Object.defineProperty(W,"EXT_TIMESTAMP",{enumerable:!0,get:function(){return Jt.EXT_TIMESTAMP}});Object.defineProperty(W,"encodeDateToTimeSpec",{enumerable:!0,get:function(){return Jt.encodeDateToTimeSpec}});Object.defineProperty(W,"encodeTimeSpecToTimestamp",{enumerable:!0,get:function(){return Jt.encodeTimeSpecToTimestamp}});Object.defineProperty(W,"decodeTimestampToTimeSpec",{enumerable:!0,get:function(){return Jt.decodeTimestampToTimeSpec}});Object.defineProperty(W,"encodeTimestampExtension",{enumerable:!0,get:function(){return Jt.encodeTimestampExtension}});Object.defineProperty(W,"decodeTimestampExtension",{enumerable:!0,get:function(){return Jt.decodeTimestampExtension}})});var nc=se((Ky,Tm)=>{Tm.exports={name:"@rajbos/ai-engineering-fluency",version:"0.2.3",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:"^14.0.3",esbuild:"^0.28.0","sql.js":"^1.12.0",typescript:"^6.0.2"},engines:{node:">=22.14.0"}}});var ra=U(ia(),1),{program:Om,createCommand:Um,createArgument:Fm,createOption:Nm,CommanderError:Gm,InvalidArgumentError:Lm,InvalidOptionArgumentError:jm,Command:ce,Argument:qm,Option:$m,Help:zm}=ra.default;var aa=(o=0)=>e=>`\x1B[${e+o}m`,la=(o=0)=>e=>`\x1B[${38+o};5;${e}m`,ca=(o=0)=>(e,t,s)=>`\x1B[${38+o};2;${e};${t};${s}m`,ne={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]}},Wm=Object.keys(ne.modifier),gu=Object.keys(ne.color),yu=Object.keys(ne.bgColor),Hm=[...gu,...yu];function _u(){let o=new Map;for(let[e,t]of Object.entries(ne)){for(let[s,n]of Object.entries(t))ne[s]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},t[s]=ne[s],o.set(n[0],n[1]);Object.defineProperty(ne,e,{value:t,enumerable:!1})}return Object.defineProperty(ne,"codes",{value:o,enumerable:!1}),ne.color.close="\x1B[39m",ne.bgColor.close="\x1B[49m",ne.color.ansi=aa(),ne.color.ansi256=la(),ne.color.ansi16m=ca(),ne.bgColor.ansi=aa(10),ne.bgColor.ansi256=la(10),ne.bgColor.ansi16m=ca(10),Object.defineProperties(ne,{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 n=Number.parseInt(s,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:e=>ne.rgbToAnsi256(...ne.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,s,n;if(e>=232)t=((e-232)*10+8)/255,s=t,n=t;else{e-=16;let l=e%36;t=Math.floor(e/36)/5,s=Math.floor(l/6)/5,n=l%6/5}let i=Math.max(t,s,n)*2;if(i===0)return 30;let r=30+(Math.round(n)<<2|Math.round(s)<<1|Math.round(t));return i===2&&(r+=60),r},enumerable:!1},rgbToAnsi:{value:(e,t,s)=>ne.ansi256ToAnsi(ne.rgbToAnsi256(e,t,s)),enumerable:!1},hexToAnsi:{value:e=>ne.ansi256ToAnsi(ne.hexToAnsi256(e)),enumerable:!1}}),ne}var bu=_u(),ze=bu;var _n=U(require("node:process"),1),da=U(require("node:os"),1),ei=U(require("node:tty"),1);function Ne(o,e=globalThis.Deno?globalThis.Deno.args:_n.default.argv){let t=o.startsWith("-")?"":o.length===1?"-":"--",s=e.indexOf(t+o),n=e.indexOf("--");return s!==-1&&(n===-1||s<n)}var{env:oe}=_n.default,yn;Ne("no-color")||Ne("no-colors")||Ne("color=false")||Ne("color=never")?yn=0:(Ne("color")||Ne("colors")||Ne("color=true")||Ne("color=always"))&&(yn=1);function Cu(){if("FORCE_COLOR"in oe)return oe.FORCE_COLOR==="true"?1:oe.FORCE_COLOR==="false"?0:oe.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(oe.FORCE_COLOR,10),3)}function ku(o){return o===0?!1:{level:o,hasBasic:!0,has256:o>=2,has16m:o>=3}}function Su(o,{streamIsTTY:e,sniffFlags:t=!0}={}){let s=Cu();s!==void 0&&(yn=s);let n=t?yn:s;if(n===0)return 0;if(t){if(Ne("color=16m")||Ne("color=full")||Ne("color=truecolor"))return 3;if(Ne("color=256"))return 2}if("TF_BUILD"in oe&&"AGENT_NAME"in oe)return 1;if(o&&!e&&n===void 0)return 0;let i=n||0;if(oe.TERM==="dumb")return i;if(_n.default.platform==="win32"){let r=da.default.release().split(".");return Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in oe)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(r=>r in oe)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(r=>r in oe)||oe.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in oe)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(oe.TEAMCITY_VERSION)?1:0;if(oe.COLORTERM==="truecolor"||oe.TERM==="xterm-kitty"||oe.TERM==="xterm-ghostty"||oe.TERM==="wezterm")return 3;if("TERM_PROGRAM"in oe){let r=Number.parseInt((oe.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(oe.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(oe.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(oe.TERM)||"COLORTERM"in oe?1:i}function ua(o,e={}){let t=Su(o,{streamIsTTY:o&&o.isTTY,...e});return ku(t)}var wu={stdout:ua({isTTY:ei.default.isatty(1)}),stderr:ua({isTTY:ei.default.isatty(2)})},ma=wu;function pa(o,e,t){let s=o.indexOf(e);if(s===-1)return o;let n=e.length,i=0,r="";do r+=o.slice(i,s)+e+t,i=s+n,s=o.indexOf(e,i);while(s!==-1);return r+=o.slice(i),r}function ha(o,e,t,s){let n=0,i="";do{let r=o[s-1]==="\r";i+=o.slice(n,r?s-1:s)+e+(r?`\r
29
29
  `:`
30
- `)+t,n=s+1,s=i.indexOf(`
31
- `,n)}while(s!==-1);return o+=i.slice(n),o}var{stdout:zr,stderr:Wr}=$r,Lo=Symbol("GENERATOR"),qt=Symbol("STYLER"),ds=Symbol("IS_EMPTY"),Hr=["ansi","ansi","ansi256","ansi16m"],Bt=Object.create(null),tu=(i,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=zr?zr.level:0;i.level=e.level===void 0?t:e.level};var su=i=>{let e=(...t)=>t.join(" ");return tu(e,i),Object.setPrototypeOf(e,ms.prototype),e};function ms(i){return su(i)}Object.setPrototypeOf(ms.prototype,Function.prototype);for(let[i,e]of Object.entries(Ne))Bt[i]={get(){let t=cn(this,qo(e.open,e.close,this[qt]),this[ds]);return Object.defineProperty(this,i,{value:t}),t}};Bt.visible={get(){let i=cn(this,this[qt],!0);return Object.defineProperty(this,"visible",{value:i}),i}};var $o=(i,e,t,...s)=>i==="rgb"?e==="ansi16m"?Ne[t].ansi16m(...s):e==="ansi256"?Ne[t].ansi256(Ne.rgbToAnsi256(...s)):Ne[t].ansi(Ne.rgbToAnsi(...s)):i==="hex"?$o("rgb",e,t,...Ne.hexToRgb(...s)):Ne[t][i](...s),nu=["rgb","hex","ansi256"];for(let i of nu){Bt[i]={get(){let{level:t}=this;return function(...s){let n=qo($o(i,Hr[t],"color",...s),Ne.color.close,this[qt]);return cn(this,n,this[ds])}}};let e="bg"+i[0].toUpperCase()+i.slice(1);Bt[e]={get(){let{level:t}=this;return function(...s){let n=qo($o(i,Hr[t],"bgColor",...s),Ne.bgColor.close,this[qt]);return cn(this,n,this[ds])}}}}var ou=Object.defineProperties(()=>{},{...Bt,level:{enumerable:!0,get(){return this[Lo].level},set(i){this[Lo].level=i}}}),qo=(i,e,t)=>{let s,n;return t===void 0?(s=i,n=e):(s=t.openAll+i,n=e+t.closeAll),{open:i,close:e,openAll:s,closeAll:n,parent:t}},cn=(i,e,t)=>{let s=(...n)=>iu(s,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(s,ou),s[Lo]=i,s[qt]=e,s[ds]=t,s},iu=(i,e)=>{if(i.level<=0||!e)return i[ds]?"":e;let t=i[qt];if(t===void 0)return e;let{openAll:s,closeAll:n}=t;if(e.includes("\x1B"))for(;t!==void 0;)e=qr(e,t.close,t.open),t=t.parent;let o=e.indexOf(`
32
- `);return o!==-1&&(e=Br(e,n,s,o)),s+e+n};Object.defineProperties(ms.prototype,Bt);var ru=ms(),Fm=ms({level:Wr?Wr.level:0});var A=ru;var Be=O(require("fs")),Te=O(require("path")),ul=O(require("os"));var Vr={getConfiguration:()=>({get:()=>{}})},Bo={getExtension:()=>{}},zt=class i{fsPath;scheme;path;constructor(e){this.fsPath=e,this.scheme="file",this.path=e}static file(e){return new i(e)}static joinPath(e,...t){let s=[e.fsPath,...t].join("/");return new i(s)}toString(){return this.fsPath}};var ps=O(require("fs")),Kr=O(require("os")),Yr=O(require("path"));function un(i){return typeof i.discover=="function"}function Jr(i){return typeof i.analyzeUsage=="function"}function au(i){let e=i.replace(/\\/g,"/");return Kr.platform()==="linux"?e:e.toLowerCase()}var dn=class i{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 ps.promises.access(e),!0}catch{return!1}}getDiagnosticCandidatePaths(){let e=[];for(let t of this.deps.ecosystems)if(un(t))try{let s=t.getCandidatePaths();for(let n of s){let o=!1;try{o=ps.existsSync(n.path)}catch{}e.push({path:n.path,exists:o,source:n.source})}}catch{}return e}checkCopilotExtension(){let e=Bo.getExtension("GitHub.copilot"),t=Bo.getExtension("GitHub.copilot-chat");if(!e&&!t)this.deps.log("\u26A0\uFE0F GitHub Copilot extensions not found");else{let n=e?e.isActive?"\u2705 Active":"\u23F3 Loading":"\u274C Not found",o=t?t.isActive?"\u2705 Active":"\u23F3 Loading":"\u274C Not found";this.deps.log(`GitHub Copilot: ${n}, Chat: ${o}`)}process.env.CODESPACES==="true"&&(!e?.isActive||!t?.isActive)&&this.deps.warn("\u26A0\uFE0F Running in Codespaces with inactive Copilot extensions")}async getCopilotSessionFiles(){let e=Date.now();if(this._sessionFilesCache&&e-this._sessionFilesCacheTime<i.SESSION_FILES_CACHE_TTL)return this.deps.log(`\u{1F4A8} Using cached session files list (${this._sessionFilesCache.length} files, cached ${Math.round((e-this._sessionFilesCacheTime)/1e3)}s ago)`),this._sessionFilesCache;this._lastDiscoveryHadError=!1,this._lastDiscoveryFilesCount=0;let t=this.deps.sampleDataDirectoryOverride?.()??Vr.getConfiguration("aiEngineeringFluency").get("sampleDataDirectory");if(t&&t.trim().length>0){let n=t.trim();try{if(await this.pathExists(n)){let o=(await ps.promises.readdir(n)).filter(r=>r.endsWith(".json")||r.endsWith(".jsonl")).map(r=>Yr.join(n,r));return this.deps.log(`\u{1F4F8} Sample data mode: using ${o.length} file(s) from ${n}`),this._sessionFilesCache=o,this._sessionFilesCacheTime=e,this._lastDiscoveryFilesCount=o.length,o}else this.deps.warn(`Sample data directory not found: ${n}`)}catch(o){this.deps.warn(`Error reading sample data directory: ${o}`)}}let s=[];try{let n=Date.now();this.deps.log(`\u{1F50D} Searching for session files via ${this.deps.ecosystems.filter(un).length} discoverable ecosystem adapter(s)`);for(let u of this.deps.ecosystems)if(un(u))try{let m=await u.discover(this.deps.log);s.push(...m.sessionFiles)}catch(m){this.deps.warn(`Could not discover ${u.displayName} sessions: ${m}`),this._lastDiscoveryHadError=!0}let o=new Set,r=[];for(let u of s){let m=au(u);o.has(m)||(o.add(m),r.push(u))}let l=s.length-r.length;return l>0&&this.deps.log(`\u{1F9F9} Deduplicated ${l} duplicate session path(s)`),this.deps.log(`\u2728 Total: ${r.length} session file(s) discovered in ${((Date.now()-n)/1e3).toFixed(1)}s`),r.length===0&&this.deps.warn("\u26A0\uFE0F No session files found - Have you used GitHub Copilot Chat yet?"),this._sessionFilesCache=r,this._sessionFilesCacheTime=Date.now(),this._lastDiscoveryFilesCount=r.length,r}catch(n){return this.deps.error("Error getting session files:",n),this._lastDiscoveryHadError=!0,this._lastDiscoveryFilesCount=s.length,s}}};var he=O(require("fs")),ve=O(require("path")),yn=O(require("os")),Qr=O(gn()),fn=class{_sqlJsModule=null;_dbCache=null;_dbCacheInflight=new Map;extensionUri;constructor(e){this.extensionUri=e}getOpenCodeDataDir(){let e=yn.platform(),t=yn.homedir();if(e==="win32")return ve.join(t,".local","share","opencode");let s=process.env.XDG_DATA_HOME||ve.join(t,".local","share");return ve.join(s,"opencode")}isOpenCodeSessionFile(e){let t=e.toLowerCase().replace(/\\/g,"/");return t.includes("/opencode/storage/session/")||t.includes("/opencode/opencode.db#ses_")}isOpenCodeDbSession(e){return e.includes("opencode.db#ses_")}async initSqlJs(){if(this._sqlJsModule)return this._sqlJsModule;let e=ve.join(__dirname,"sql-wasm.wasm"),t;return he.existsSync(e)&&(t=he.readFileSync(e)),this._sqlJsModule=await(0,Qr.default)(t?{wasmBinary:t}:void 0),this._sqlJsModule}dispose(){this.closeDbCache(),this._dbCacheInflight.clear()}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 he.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 o=await this.initSqlJs(),r=he.readFileSync(e);s=new o.Database(r)}catch{return this.getCachedDbForPath(e)}let n=this.statOpenCodeDb(e);return!n||!this.sameDbStats(t,n)?(this.closeDb(s),this.isCachedDbCurrent(e,n??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=ve.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),n=this._dbCacheInflight.get(s);if(n)return n;let o=this.refreshOpenCodeDb(e,t);this._dbCacheInflight.set(s,o);try{return await o}finally{this._dbCacheInflight.get(s)===o&&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 n=s[0].values[0],o=s[0].columns,r={};for(let l=0;l<o.length;l++)r[o[l]]=n[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(n=>{let o=JSON.parse(n[1]);return o.id=n[0],o.time=o.time||{},o.time.created=o.time.created||n[2],o})}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(n=>{let o=JSON.parse(n[1]);return o.id=n[0],o.time=o.time||{},o.time.created=o.time.created||n[2],o})}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=ve.join(this.getOpenCodeDataDir(),"opencode.db");return he.promises.stat(t)}return he.promises.stat(e)}readOpenCodeMessages(e){let t=this.getOpenCodeDataDir(),s=ve.join(t,"storage","message",e),n=[];try{if(!he.existsSync(s))return n;let o=he.readdirSync(s,{withFileTypes:!0});for(let r of o)if(!(!r.isFile()||!r.name.endsWith(".json")))try{let l=he.readFileSync(ve.join(s,r.name),"utf8"),u=JSON.parse(l);n.push(u)}catch{}}catch{}return n.sort((o,r)=>(o.time?.created||0)-(r.time?.created||0)),n}readOpenCodeParts(e){let t=this.getOpenCodeDataDir(),s=ve.join(t,"storage","part",e),n=[];try{if(!he.existsSync(s))return n;let o=he.readdirSync(s,{withFileTypes:!0});for(let r of o)if(!(!r.isFile()||!r.name.endsWith(".json")))try{let l=he.readFileSync(ve.join(s,r.name),"utf8"),u=JSON.parse(l);n.push(u)}catch{}}catch{}return n.sort((o,r)=>(o.time?.start||0)-(r.time?.start||0)),n}getOpenCodeSessionId(e){let t=e.indexOf("opencode.db#");if(t!==-1)return e.substring(t+12);let s=ve.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 n of e)n.role==="assistant"&&n.tokens&&(typeof n.tokens.total=="number"&&(s=n.tokens.total),t+=n.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 n=t.get(s.parentID)??[];n.push(s),t.set(s.parentID,n)}return t}async getOpenCodeModelUsage(e){let t=await this.getOpenCodeMessagesForSession(e);return this.getOpenCodeModelUsageFromMessages(t)}getOpenCodeModelUsageFromMessages(e){let t={},s=this.getAssistantMessagesByParent(e),n=0;for(let o=0;o<e.length;o++){let r=e[o];if(r.role!=="user")continue;let l=s.get(r.id)??[];if(l.length===0)continue;let u=n;for(let v of l)typeof v.tokens?.total=="number"&&(u=Math.max(u,v.tokens.total));let m=u-n;if(m<=0){n=u;continue}let p=l[0].modelID||l[0].model?.modelID||"unknown";t[p]||(t[p]={inputTokens:0,outputTokens:0});let h=l.reduce((v,k)=>v+(k.tokens?.output||0)+(k.tokens?.reasoning||0),0),f=Math.max(0,m-h);t[p].inputTokens+=f,t[p].outputTokens+=h;let y=l.reduce((v,k)=>v+(k.tokens?.cache?.read||0),0),_=l.reduce((v,k)=>v+(k.tokens?.cache?.write||0),0);y>0&&(t[p].cachedReadTokens=(t[p].cachedReadTokens??0)+y),_>0&&(t[p].cacheCreationTokens=(t[p].cacheCreationTokens??0)+_),n=u}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:n}=this.getTokensFromOpenCodeMessages(t),o=this.countOpenCodeInteractionsFromMessages(t),r=this.getOpenCodeModelUsageFromMessages(t),l=this.getAssistantMessagesByParent(t),u={};for(let p=0;p<t.length;p++){let h=t[p];if(h.role!=="user")continue;let f=l.get(h.id)??[];if(f.length===0)continue;let y=f[0].modelID||f[0].model?.modelID||"unknown";u[y]=(u[y]||0)+1}let m={};for(let[p,h]of Object.entries(r))m[p]={...h,interactions:u[p]||0};return{tokens:n,interactions:o,modelUsage:m,timestamp:s}}};var je=O(require("fs")),Tt=O(require("path")),hs=O(require("os")),Xr=O(gn()),_n=class{_sqlJsModule=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()}closeDb(e){try{e.close()}catch{}}isMissingFileError(e){let t=e?.code;return t==="ENOENT"||t==="ENOTDIR"}statCrushDb(e){try{return je.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=je.readFileSync(e);s=new r.Database(l)}catch{return this._dbCache.get(e)?.db??null}let n=this.statCrushDb(e);if(!n||!this.sameDbStats(t,n))return this.closeDb(s),this._dbCache.get(e)?.db??null;let o=this._dbCache.get(e);return o&&this.closeDb(o.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),n=this._dbCacheInflight.get(s);if(n)return n;let o=this.refreshCrushDb(e,t);this._dbCacheInflight.set(s,o);try{return await o}finally{this._dbCacheInflight.get(s)===o&&this._dbCacheInflight.delete(s)}}getCrushConfigDir(){if(hs.platform()==="win32"){let s=process.env.LOCALAPPDATA||Tt.join(hs.homedir(),"AppData","Local");return Tt.join(s,"crush")}let t=process.env.XDG_CONFIG_HOME||Tt.join(hs.homedir(),".config");return Tt.join(t,"crush")}readCrushProjects(){let e=Tt.join(this.getCrushConfigDir(),"projects.json");if(!je.existsSync(e))return[];try{let t=je.readFileSync(e,"utf8"),s=JSON.parse(t);return Array.isArray(s.projects)?s.projects:[]}catch{return[]}}isCrushSessionFile(e){return e.replace(/\\/g,"/").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(){if(this._sqlJsModule)return this._sqlJsModule;let e=Tt.join(__dirname,"sql-wasm.wasm"),t;return je.existsSync(e)&&(t=je.readFileSync(e)),this._sqlJsModule=await(0,Xr.default)(t?{wasmBinary:t}:void 0),this._sqlJsModule}async statSessionFile(e){let t=this.getCrushDbPath(e);return je.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(n=>n[0])}catch{return[]}}async readCrushSession(e){let t=this.getCrushDbPath(e),s=this.getCrushSessionId(e);if(!s)return null;let n=await this.getCrushDb(t);if(!n)return null;try{let o=n.exec("SELECT id, title, message_count, prompt_tokens, completion_tokens, created_at, updated_at FROM sessions WHERE id = ?",[s]);if(o.length===0||o[0].values.length===0)return null;let r=o[0].columns,l=o[0].values[0],u={};return r.forEach((m,p)=>{u[m]=l[p]}),u}catch{return null}}async getCrushMessages(e){let t=this.getCrushDbPath(e),s=this.getCrushSessionId(e);if(!s)return[];let n=await this.getCrushDb(t);if(!n)return[];try{let o=n.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(o.length===0)return[];let r=o[0].columns;return o[0].values.map(l=>{let u={};if(r.forEach((m,p)=>{u[m]=l[p]}),typeof u.parts=="string")try{u.parts=JSON.parse(u.parts)}catch{u.parts=[]}return u})}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,n=typeof t.completion_tokens=="number"?t.completion_tokens:0;return{tokens:s+n,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 n=typeof s.prompt_tokens=="number"?s.prompt_tokens:0,o=typeof s.completion_tokens=="number"?s.completion_tokens:0;if(n+o===0)return t;let l=(await this.getCrushMessages(e)).filter(p=>p.role==="assistant"&&p.model);if(l.length===0)return t.unknown={inputTokens:n,outputTokens:o},t;let u={};for(let p of l){let h=p.model||"unknown";u[h]=(u[h]||0)+1}let m=l.length;for(let[p,h]of Object.entries(u)){let f=h/m;t[p]={inputTokens:Math.round(n*f),outputTokens:Math.round(o*f)}}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,n=typeof t.completion_tokens=="number"?t.completion_tokens:0,o=s+n,r=typeof t.created_at=="number"?t.created_at*1e3:Date.now(),l=await this.getCrushModelUsage(e),m=(await this.getCrushMessages(e)).filter(f=>f.role==="user").length,p=s+n,h={};for(let[f,y]of Object.entries(l)){let _=y.inputTokens+y.outputTokens,v=p>0?_/p:0;h[f]={inputTokens:y.inputTokens,outputTokens:y.outputTokens,interactions:Math.round(m*v)}}return{tokens:o,interactions:m,modelUsage:h,timestamp:r}}getToolCallsFromMessages(e){let t=[];for(let s of e)if(!(s.role!=="assistant"||!Array.isArray(s.parts)))for(let n of s.parts)n?.type==="tool_call"&&n?.data?.name&&t.push(n.data.name);return t}};var xt=O(require("fs")),Mt=O(require("path")),Zr=O(require("os")),bn=class{getContinueDataDir(){return Mt.join(Zr.homedir(),".continue")}getContinueSessionsDir(){return Mt.join(this.getContinueDataDir(),"sessions")}isContinueSessionFile(e){let t=e.toLowerCase().replace(/\\/g,"/");return t.includes("/.continue/sessions/")&&t.endsWith(".json")}getContinueSessionFiles(){let e=this.getContinueSessionsDir();if(!xt.existsSync(e))return[];try{return xt.readdirSync(e).filter(t=>t.endsWith(".json")&&t!=="sessions.json").map(t=>Mt.join(e,t))}catch{return[]}}readSessionFile(e){try{let t=xt.readFileSync(e,"utf8");return JSON.parse(t)}catch{return null}}estimateTokens(e){return e?Math.ceil(e.length/4):0}getTokensFromContinueSession(e){let t=this.readSessionFile(e);if(!t||!Array.isArray(t.history))return{tokens:0,thinkingTokens:0};let s=0,n=0;for(let o of t.history)if(Array.isArray(o.promptLogs))for(let r of o.promptLogs)s+=this.estimateTokens(r.prompt||""),n+=this.estimateTokens(r.completion||"");return{tokens:s+n,thinkingTokens:0}}countContinueInteractions(e){let t=this.readSessionFile(e);return!t||!Array.isArray(t.history)?0:t.history.filter(s=>s.message?.role==="user").length}getContinueModelUsage(e){let t=this.readSessionFile(e);if(!t||!Array.isArray(t.history))return{};let s={};for(let n of t.history)if(Array.isArray(n.promptLogs))for(let o of n.promptLogs){let r=o.modelTitle||t.chatModelTitle||"unknown";s[r]||(s[r]={inputTokens:0,outputTokens:0}),s[r].inputTokens+=this.estimateTokens(o.prompt||""),s[r].outputTokens+=this.estimateTokens(o.completion||"")}return s}getContinueSessionMeta(e){let t=this.readSessionFile(e);return t?{title:t.title,model:t.chatModelTitle,workspaceDirectory:t.workspaceDirectory,mode:t.mode}:null}readSessionsIndex(){let e=Mt.join(this.getContinueSessionsDir(),"sessions.json"),t=new Map;try{let s=xt.readFileSync(e,"utf8"),n=JSON.parse(s);if(!Array.isArray(n))return t;for(let o of n)o.sessionId&&t.set(o.sessionId,{dateCreated:o.dateCreated?Number(o.dateCreated):void 0,title:o.title,workspaceDirectory:o.workspaceDirectory})}catch{}return t}getContinueSessionId(e){return Mt.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
- `):""}buildContinueTurns(e){let t=this.readSessionFile(e);if(!t||!Array.isArray(t.history))return[];let s=t.history,n=[],o=0;for(;o<s.length;){let r=s[o];if(r.message?.role!=="user"){o++;continue}let l=this.extractUserText(r.message.content),u="",m=[],p=t.chatModelTitle||null,h=0,f=0,y=new Map,_=o+1;for(;_<s.length&&s[_].message?.role!=="user";){let v=s[_],k=v.message?.role;if(k==="assistant"){if(typeof v.message.content=="string"&&v.message.content&&(u+=v.message.content),Array.isArray(v.promptLogs)&&v.promptLogs.length>0){let C=v.promptLogs[0];C.modelTitle&&(p=C.modelTitle);for(let S of v.promptLogs)h+=this.estimateTokens(S.prompt||""),f+=this.estimateTokens(S.completion||"")}if(Array.isArray(v.message.toolCalls))for(let C of v.message.toolCalls){let S=C.function?.name||C.name||"unknown",w=C.function?.arguments,P=C.id||S;y.set(P,{toolName:S,arguments:w})}}else if(k==="tool"){let C=v.message.toolCallId||"",S=this.extractUserText(v.message.content),w=y.get(C);w?(m.push({...w,result:S}),y.delete(C)):m.push({toolName:"unknown",result:S})}_++}for(let[,v]of y)m.push(v);n.push({userText:l,assistantText:u,model:p,toolCalls:m,inputTokens:h,outputTokens:f}),o=_}return n}};var ue=O(require("fs")),Pe=O(require("path")),Dt=O(require("os")),Rn=O(Pa()),Xu=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"]),In=class{isVSSessionFile(e){let t=e.replace(/\\/g,"/").toLowerCase(),s=t.includes("/.vs/")&&t.includes("/copilot-chat/")&&t.includes("/sessions/"),n=t.includes("/ssmsgithubcopilot/")&&t.includes("/copilot-chat/")&&t.includes("/sessions/");return s||n}async statSessionFile(e){return ue.promises.stat(e)}getLogDir(){let e=process.env.LOCALAPPDATA||Pe.join(Dt.homedir(),"AppData","Local");return Pe.join(e,"Temp","VSGitHubCopilotLogs")}getSsmsSessionsDir(){let e=process.env.LOCALAPPDATA||Pe.join(Dt.homedir(),"AppData","Local");return Pe.join(e,"Microsoft","SSMS")}discoverSessions(){let e=new Set,t=[];return this._discoverFromLogs(e,t),this._discoverFromFilesystem(e,t),this._discoverFromSsmsAppData(e,t),t}_discoverFromLogs(e,t){let s=this.getLogDir();if(!ue.existsSync(s))return;let n;try{n=ue.readdirSync(s).filter(r=>r.endsWith(".chat.log")).map(r=>Pe.join(s,r))}catch{return}let o=/Updating session file '([^']+)'/;for(let r of n)try{let l=ue.readFileSync(r,"utf8");for(let u of l.split(`
34
- `)){let m=o.exec(u);if(!m)continue;let p=m[1];if(!e.has(p)){e.add(p);try{ue.existsSync(p)&&t.push(p)}catch{}}}}catch{}}_discoverFromFilesystem(e,t){if(Dt.platform()!=="win32")return;let s=Dt.homedir(),n=["C","D"],o=[s];for(let r of n)for(let l of["repos","code","src","projects","dev"]){let u=r+":\\"+l;try{ue.existsSync(u)&&o.push(u)}catch{}}for(let r of o){let l=r===s?7:5;this._scanForVsDirs(r,0,l,e,t)}}_scanForVsDirs(e,t,s,n,o){if(t>s)return;let r;try{r=ue.readdirSync(e,{withFileTypes:!0})}catch{return}for(let l of r){if(!l.isDirectory())continue;let u=l.name;if(Xu.has(u)||u.startsWith(".")&&u!==".vs")continue;let m=Pe.join(e,u);u===".vs"?this._findSessionsInVsDir(m,n,o):this._scanForVsDirs(m,t+1,s,n,o)}}_findSessionsInVsDir(e,t,s){let n;try{n=ue.readdirSync(e,{withFileTypes:!0})}catch{return}for(let o of n){if(!o.isDirectory())continue;let r=Pe.join(e,o.name,"copilot-chat"),l;try{l=ue.readdirSync(r,{withFileTypes:!0})}catch{continue}for(let u of l){if(!u.isDirectory())continue;let m=Pe.join(r,u.name,"sessions"),p;try{p=ue.readdirSync(m,{withFileTypes:!0})}catch{continue}for(let h of p){if(!h.isFile())continue;let f=Pe.join(m,h.name);t.has(f)||(t.add(f),s.push(f))}}}}_discoverFromSsmsAppData(e,t){if(Dt.platform()!=="win32")return;let s=this.getSsmsSessionsDir();if(!ue.existsSync(s))return;let n;try{n=ue.readdirSync(s,{withFileTypes:!0})}catch{return}for(let o of n){if(!o.isDirectory())continue;let r=Pe.join(s,o.name,"SSMSGitHubCopilot","copilot-chat"),l;try{l=ue.readdirSync(r,{withFileTypes:!0})}catch{continue}for(let u of l){if(!u.isDirectory())continue;let m=Pe.join(r,u.name,"sessions"),p;try{p=ue.readdirSync(m,{withFileTypes:!0})}catch{continue}for(let h of p){if(!h.isFile())continue;let f=Pe.join(m,h.name);e.has(f)||(e.add(f),t.push(f))}}}}decodeSessionFile(e){try{let t=ue.readFileSync(e);return t.length<2?[]:Array.from((0,Rn.decodeMulti)(t.slice(1)))}catch{return[]}}getSessionTitle(e){let s=e.find((o,r)=>r>0&&r%2===1)?.[1];if(!s?.Content)return;let n=this.extractTextFromContent(s.Content).trim();if(n)return n.length>80?n.substring(0,80)+"\u2026":n}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 n=s?.[1];n&&typeof n.Content=="string"&&n.Content&&t.push(n.Content)}return t.join(`
35
- `)}extractContextText(e){if(!Array.isArray(e))return"";let t=[];for(let s of e){let n=s?.ValueContainer;if(!Array.isArray(n)||n.length<2)continue;let o=n[1];if(!o||typeof o!="object")continue;let r=Object.keys(o);if(r.length!==0)if(isNaN(Number(r[0])))o.Content&&typeof o.Content=="string"&&t.push(o.Content);else try{let l=r.map(Number).sort((h,f)=>h-f),u=Buffer.from(l.map(h=>o[h])),m=(0,Rn.decode)(u),p=Array.isArray(m)?m[1]:m;p?.Content&&typeof p.Content=="string"&&t.push(p.Content)}catch{}}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}getTokenEstimates(e,t){let s=this.decodeSessionFile(e),n=0;for(let o=1;o<s.length;o++){let r=s[o]?.[1];if(!r?.Content)continue;let l=this.extractTextFromContent(r.Content),u=o%2===1,m=u?this.extractContextText(r.Context):"";if(!l&&!m)continue;let p=this.getModelId(r,u)||void 0;n+=t(l+m,p)}return{tokens:n,thinkingTokens:0}}getModelUsage(e,t){let s={},n=this.decodeSessionFile(e),o={};for(let r=1;r<n.length;r++){let l=n[r]?.[1];if(!l?.Content)continue;let u=this.extractTextFromContent(l.Content),m=r%2===1,p=m?this.extractContextText(l.Context):"";if(!u&&!p)continue;let h=this.getModelId(l,m)||"unknown";o[h]||(o[h]={input:"",output:""}),m?o[h].input+=u+p:o[h].output+=u}for(let[r,l]of Object.entries(o))s[r]={inputTokens:t(l.input,r),outputTokens:t(l.output,r)};return s}};var Ke=O(require("fs")),Et=O(require("path")),Un=O(require("os"));function It(i){if(!i||/claude-.+-\d+\.\d+/.test(i))return i;let e=i.match(/^(claude-.+)-(\d)-(\d)(-\d{8})?$/);return e?`${e[1]}-${e[2]}.${e[3]}`:i}var On=class{getClaudeCodeDataDir(){return Et.join(Un.homedir(),".claude")}getClaudeCodeProjectsDir(){return Et.join(this.getClaudeCodeDataDir(),"projects")}isClaudeCodeSessionFile(e){let t=e.toLowerCase().replace(/\\/g,"/"),s=this.getClaudeCodeProjectsDir().toLowerCase().replace(/\\/g,"/");return t.startsWith(s)&&t.endsWith(".jsonl")}getClaudeCodeSessionFiles(){let e=this.getClaudeCodeProjectsDir();if(!Ke.existsSync(e))return[];let t=[];try{let s=Ke.readdirSync(e,{withFileTypes:!0});for(let n of s){if(!n.isDirectory())continue;let o=Et.join(e,n.name);try{let r=Ke.readdirSync(o,{withFileTypes:!0});for(let l of r)if(!l.isDirectory()&&l.name.endsWith(".jsonl")){let u=Et.join(o,l.name);try{Ke.statSync(u).size>0&&t.push(u)}catch{}}}catch{}}}catch{}return t}readSessionEvents(e){try{let s=Ke.readFileSync(e,"utf8").trim().split(`
37
- `),n=[];for(let o of s)if(o.trim())try{n.push(JSON.parse(o))}catch{}return n}catch{return[]}}deduplicateAssistantEvents(e){let t=new Map,s=[];for(let n of e){if(n.type!=="assistant"||!n.message?.usage)continue;let o=n.message?.id;o?t.set(o,n):s.push(n)}return[...t.values(),...s]}getTokensFromClaudeCodeSession(e){let t=this.readSessionEvents(e),s=0,n=0;for(let o of this.deduplicateAssistantEvents(t)){let r=o.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),u=typeof r.output_tokens=="number"?r.output_tokens:0;s+=l,n+=u}return{tokens:s+n,thinkingTokens:0}}countClaudeCodeInteractions(e){let t=this.readSessionEvents(e),s=0;for(let n of t)if(n.type==="user"&&!n.isSidechain&&n.message?.role==="user"){let o=n.message?.content;(typeof o=="string"||Array.isArray(o)&&o.some(l=>l.type==="text")&&!o.some(l=>l.type==="tool_result"))&&s++}return s}getClaudeCodeModelUsage(e){let t=this.readSessionEvents(e),s={};for(let n of this.deduplicateAssistantEvents(t)){let o=n.message.usage,r=It(n.message?.model||"unknown");s[r]||(s[r]={inputTokens:0,outputTokens:0});let l=typeof o.cache_creation_input_tokens=="number"?o.cache_creation_input_tokens:0,u=typeof o.cache_read_input_tokens=="number"?o.cache_read_input_tokens:0,m=(typeof o.input_tokens=="number"?o.input_tokens:0)+l+u,p=typeof o.output_tokens=="number"?o.output_tokens:0;s[r].inputTokens+=m,s[r].outputTokens+=p,l>0&&(s[r].cacheCreationTokens=(s[r].cacheCreationTokens??0)+l),u>0&&(s[r].cachedReadTokens=(s[r].cachedReadTokens??0)+u)}return s}getClaudeCodeSessionMeta(e){let t=this.readSessionEvents(e);if(t.length===0)return null;let s,n,o,r=[];for(let m of t)if(m.type==="ai-title"&&m.aiTitle&&(s=m.aiTitle),!n&&m.entrypoint&&(n=m.entrypoint),!o&&m.cwd&&(o=m.cwd),m.timestamp){let p=new Date(m.timestamp).getTime();isNaN(p)||r.push(p)}let l,u;return r.length>0&&(r.sort((m,p)=>m-p),l=new Date(r[0]).toISOString(),u=new Date(r[r.length-1]).toISOString()),{title:s,entrypoint:n,firstInteraction:l,lastInteraction:u,cwd:o}}getClaudeCodeSessionId(e){return Et.basename(e,".jsonl")}getProjectPathFromHash(e){if(Un.platform()==="win32"){let s=e.split("-");if(s.length>=2&&s[0].length===1&&s[1]===""){let n=s[0].toUpperCase(),o=s.slice(2).join("\\");return`${n}:\\${o}`}}return"/"+e.replace(/-/g,"/")}};var Ye=O(require("fs")),bs=O(require("path")),Cs=O(require("os"));var Zu="Claude_pzs8sxrjxfjjc",Fn=class{getCoworkBaseDir(){let e=Cs.platform();if(e==="win32"){let t=process.env.LOCALAPPDATA||bs.join(Cs.homedir(),"AppData","Local");return bs.join(t,"Packages",Zu,"LocalCache","Roaming","Claude","local-agent-mode-sessions")}return e==="darwin"?bs.join(Cs.homedir(),"Library","Application Support","Claude","local-agent-mode-sessions"):""}isCoworkSessionFile(e){let t=e.toLowerCase().replace(/\\/g,"/");return t.includes("/local-agent-mode-sessions/")&&t.endsWith(".jsonl")}getCoworkSessionFiles(){let e=this.getCoworkBaseDir();if(!e||!Ye.existsSync(e))return[];let t=[];try{this.walkForJsonlFiles(e,t,0,8)}catch{}return t}walkForJsonlFiles(e,t,s,n){if(s>n)return;let o;try{o=Ye.readdirSync(e,{withFileTypes:!0})}catch{return}for(let r of o){let l=bs.join(e,r.name);if(r.isDirectory()){if(r.name==="agent")continue;this.walkForJsonlFiles(l,t,s+1,n)}else if(r.name.endsWith(".jsonl")&&r.name!=="audit.jsonl")try{Ye.statSync(l).size>0&&t.push(l)}catch{}}}readCoworkEvents(e){try{let s=Ye.readFileSync(e,"utf8").trim().split(`
38
- `),n=[];for(let o of s)if(o.trim())try{n.push(JSON.parse(o))}catch{}return n}catch{return[]}}getTokensFromCoworkSession(e){let t=this.readCoworkEvents(e),s=0,n=0,o=new Set;for(let r of t){if(r.type!=="assistant")continue;let l=r.message?.usage;if(!l)continue;let u=r.requestId;if(u){if(!r.message?.stop_reason||o.has(u))continue;o.add(u)}let m=(typeof l.input_tokens=="number"?l.input_tokens:0)+(typeof l.cache_creation_input_tokens=="number"?l.cache_creation_input_tokens:0)+(typeof l.cache_read_input_tokens=="number"?l.cache_read_input_tokens:0),p=typeof l.output_tokens=="number"?l.output_tokens:0;s+=m,n+=p}return{tokens:s+n,thinkingTokens:0}}countCoworkInteractions(e){let t=this.readCoworkEvents(e),s=0;for(let n of t)if(n.type==="user"&&!n.isSidechain&&n.message?.role==="user"){let o=n.message?.content;(typeof o=="string"||Array.isArray(o)&&o.some(l=>l.type==="text")&&!o.some(l=>l.type==="tool_result"))&&s++}return s}getCoworkModelUsage(e){let t=this.readCoworkEvents(e),s={},n=new Set;for(let o of t){if(o.type!=="assistant")continue;let r=o.message?.usage;if(!r)continue;let l=o.requestId;if(l){if(!o.message?.stop_reason||n.has(l))continue;n.add(l)}let u=It(o.message?.model||"unknown");s[u]||(s[u]={inputTokens:0,outputTokens:0});let m=typeof r.cache_creation_input_tokens=="number"?r.cache_creation_input_tokens:0,p=typeof r.cache_read_input_tokens=="number"?r.cache_read_input_tokens:0,h=(typeof r.input_tokens=="number"?r.input_tokens:0)+m+p,f=typeof r.output_tokens=="number"?r.output_tokens:0;s[u].inputTokens+=h,s[u].outputTokens+=f,m>0&&(s[u].cacheCreationTokens=(s[u].cacheCreationTokens??0)+m),p>0&&(s[u].cachedReadTokens=(s[u].cachedReadTokens??0)+p)}return s}getMetadataPathFromJsonl(e){let s=e.replace(/\\/g,"/").split("/"),n=s.lastIndexOf(".claude");if(n<1)return null;let o=s[n-1];return o.startsWith("local_")?`${s.slice(0,n-1).join("/")}/${o}.json`:null}getCoworkSessionMeta(e){let t=this.getMetadataPathFromJsonl(e);if(!t)return null;try{let s=Ye.readFileSync(t,"utf8"),n=JSON.parse(s),o=n.createdAt?new Date(n.createdAt).toISOString():void 0,r=n.lastActivityAt?new Date(n.lastActivityAt).toISOString():void 0,l=Array.isArray(n.userSelectedFolders)&&n.userSelectedFolders.length>0?n.userSelectedFolders[0]:n.cwd;return{title:n.title||void 0,firstInteraction:o,lastInteraction:r,cwd:typeof l=="string"?l:void 0}}catch{return null}}};var Xe=O(require("fs")),Qe=O(require("path")),di=O(require("os")),Nn=class{getVibeHomeDir(){let e=process.env.VIBE_HOME;return e?Qe.resolve(e.replace(/^~/,di.homedir())):Qe.join(di.homedir(),".vibe")}getSessionLogDir(){return Qe.join(this.getVibeHomeDir(),"logs","session")}isVibeSessionFile(e){let t=e.replace(/\\/g,"/");return t.includes("/.vibe/logs/session/")&&t.endsWith("/meta.json")}getSessionDir(e){return Qe.dirname(e)}discoverSessions(){let e=this.getSessionLogDir();if(!Xe.existsSync(e))return[];try{let t=Xe.readdirSync(e,{withFileTypes:!0}),s=[];for(let n of t){if(!n.isDirectory())continue;let o=Qe.join(e,n.name,"meta.json");Xe.existsSync(o)&&s.push(o)}return s}catch{return[]}}readSessionMeta(e){try{let t=Xe.readFileSync(e,"utf8");return JSON.parse(t)}catch{return null}}readSessionMessages(e){let t=Qe.join(this.getSessionDir(e),"messages.jsonl");if(!Xe.existsSync(t))return[];try{let n=Xe.readFileSync(t,"utf8").trim().split(`
39
- `),o=[];for(let r of n)if(r.trim())try{o.push(JSON.parse(r))}catch{}return o}catch{return[]}}getTokensFromSession(e){let t=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,n=typeof t.stats.session_completion_tokens=="number"?t.stats.session_completion_tokens:0;return{tokens:s+n,thinkingTokens:0}}countInteractions(e){return this.readSessionMessages(e).filter(s=>s.role==="user"&&s.injected!==!0).length}getModelUsage(e){let t=this.readSessionMeta(e);if(!t)return{};let s=typeof t.stats?.session_prompt_tokens=="number"?t.stats.session_prompt_tokens:0,n=typeof t.stats?.session_completion_tokens=="number"?t.stats.session_completion_tokens:0;return s+n===0?{}:{[t.config?.active_model||"devstral"]:{inputTokens:s,outputTokens:n}}}getSessionMeta(e){let t=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}}getSessionData(e){let t=this.readSessionMeta(e);if(!t)return{tokens:0,interactions:0,modelUsage:{},timestamp:0};let{tokens:s}=this.getTokensFromSession(e),n=this.countInteractions(e),o=this.getModelUsage(e),r={};for(let[u,m]of Object.entries(o))r[u]={...m,interactions:n};let l=t.start_time?new Date(t.start_time).getTime():0;return{tokens:s,interactions:n,modelUsage:r,timestamp:l}}};var Ie=O(require("fs")),hi=O(require("os")),tt=O(require("path"));function J(i,e="gpt-4",t={}){let s=.25;for(let[n,o]of Object.entries(t))if(e.includes(n)||e.includes(n.replace("-",""))){s=o;break}return Math.ceil(i.length*s)}function ed(i){return i.trim().toLowerCase().replace(/\s+/g,"-")}function Ht(i){if(!i||typeof i!="object")return null;let e=i;if(e.kind!=="toolInvocationSerialized")return null;let t=e.toolSpecificData;if(!t||typeof t!="object")return null;let s=t;if(s.kind!=="subagent")return null;let n=typeof s.prompt=="string"?s.prompt:"",o="",r=s.result;if(typeof r=="string")o=r;else if(r&&typeof r=="object"){let m=Object.entries(r);m.sort(([p],[h])=>Number(p)-Number(h)),o=m.map(([,p])=>typeof p=="string"?p:"").join("")}let l=typeof s.modelName=="string"?s.modelName:"",u=l?ed(l):"";return n||o?{prompt:n,result:o,modelName:u}:null}function jn(i){let e=0,t=0,s=i.trim().split(`
40
- `),n={},o=!1,r=0,l=0,u=0,m=null,p=null,h=0,f={};for(let v of s)if(v.trim())try{let k=JSON.parse(v);if(typeof k.kind=="number"&&(o=!0,n=ws(n,k)),k.type==="session.shutdown"&&k.data?.modelMetrics){m||(m={});let C=0;for(let[S,w]of Object.entries(k.data.modelMetrics)){let P=w?.usage;if(P){let x=typeof P.inputTokens=="number"?P.inputTokens:0,E=typeof P.outputTokens=="number"?P.outputTokens:0,U=typeof P.cacheReadTokens=="number"?P.cacheReadTokens:0,j=typeof P.cacheWriteTokens=="number"?P.cacheWriteTokens:0;l+=x+E,u+=U,C+=x+E,m[S]||(m[S]={inputTokens:0,outputTokens:0}),m[S].inputTokens+=x,m[S].outputTokens+=E,U>0&&(m[S].cachedReadTokens=(m[S].cachedReadTokens??0)+U),j>0&&(m[S].cacheCreationTokens=(m[S].cacheCreationTokens??0)+j)}}if(C>0&&k.timestamp){let S=new Date(k.timestamp).toISOString().slice(0,10);S&&S!=="Inval"&&(f[S]=(f[S]||0)+C)}}if(k.type==="user.message"&&k.data?.content)e+=J(k.data.content);else if(k.type==="user.message_rendered"&&k.data?.renderedMessage)e+=J(k.data.renderedMessage);else if(k.type==="assistant.message"){let C=typeof k.data?.outputTokens=="number"?k.data.outputTokens:0;if(C>0){p||(p={});let S=k.data?.model||"unknown";p[S]=(p[S]??0)+C}else k.data?.content&&(e+=J(k.data.content))}else if(k.type==="tool.execution_start")h++;else if(k.type==="tool.execution_complete"&&k.data?.result){let C=k.data.result,S=typeof C.detailedContent=="string"?C.detailedContent:typeof C.content=="string"?C.content:"";S&&(e+=J(S))}else k.content&&(e+=J(k.content));if(k.type==="assistant.message"){let C=k.data?.reasoningText;typeof C=="string"&&C&&(t+=J(C));let S=k.data?.thinking?.text;typeof S=="string"&&S&&(t+=J(S))}if(k.kind===2&&k.k?.[0]==="requests"&&Array.isArray(k.v))for(let C of k.v)C.message?.text&&(e+=J(C.message.text));if(k.kind===2&&k.k?.includes("response")&&Array.isArray(k.v))for(let C of k.v){if(C.kind==="thinking"&&C.value){t+=J(C.value);continue}Ht(C)||(C.value?e+=J(C.value):C.kind==="markdownContent"&&C.content?.value&&(e+=J(C.content.value)))}}catch{r++}if(!o&&!l&&p){let v=h>20?130:h>5?50:10;for(let k of Object.values(p)){let C=Math.round(k*v);l+=C+k,u+=C}}let y=0;if(o){let v=r>0?mi(s):new Map,k=n.requests&&Array.isArray(n.requests)?n.requests:[],C=k.length;for(let S of v.keys())S+1>C&&(C=S+1);for(let S=0;S<C;S++){let w=k[S],P=!1;if(w?.result){let x=w.result;if(typeof x.promptTokens=="number"&&typeof x.outputTokens=="number")y+=x.promptTokens+x.outputTokens,P=!0;else if(x.metadata&&typeof x.metadata.promptTokens=="number"&&typeof x.metadata.outputTokens=="number")y+=x.metadata.promptTokens+x.metadata.outputTokens,P=!0;else if(x.usage){let E=x.usage,U=typeof E.promptTokens=="number"?E.promptTokens:0,j=typeof E.completionTokens=="number"?E.completionTokens:0;y+=U+j,P=!0}}if(!P){let x=v.get(S);x&&(y+=x.promptTokens+x.outputTokens)}}}let _=!o&&l>0?l:y;if(o){let v=Array.isArray(n.requests)?n.requests:[];for(let k of v)if(!(!k?.response||!Array.isArray(k.response)))for(let C of k.response){let S=Ht(C);S&&(S.prompt&&(e+=J(S.prompt)),S.result&&(e+=J(S.result)))}}return{tokens:e+t,thinkingTokens:t,actualTokens:_,cacheReadTokens:u,modelUsage:m??{},dailyActualTokens:f}}function Ta(i){let e=new Map,t=null,s=null,n=0;function o(r){if(!r||typeof r!="object")return null;let u=r.metadata;if(!u||typeof u!="object")return null;let p=u.configurationSchema;if(!p||typeof p!="object")return null;let f=p.properties;if(!f||typeof f!="object")return null;let _=f.reasoningEffort;if(!_||typeof _!="object")return null;let v=_;return typeof v.default=="string"?v.default:null}for(let r of i){if(!r.trim())continue;let l;try{l=JSON.parse(r)}catch{continue}if(typeof l.kind=="number"){if(l.kind===0){let u=l.v?.inputState?.selectedModel,m=o(u);m!==null&&(t=m,s=m)}else if(l.kind===1){let u=l.k;if(Array.isArray(u)&&u[0]==="inputState"&&u[1]==="selectedModel"){let m=o(l.v);m!==null&&m!==t&&(t!==null&&n++,t=m)}}else if(l.kind===2){let u=l.k;if(Array.isArray(u)&&u[0]==="requests"&&typeof u[1]=="number"&&t!==null){let m=l.v;if(m&&typeof m=="object"){let p=m,h=typeof p.requestId=="string"?p.requestId:null;h&&e.set(h,t)}}}}}return{effortByRequestId:e,defaultEffort:s,switchCount:n}}function mi(i){let e=new Map;for(let t of i){if(!t.includes('"result"'))continue;let s=t.match(/"k":\s*\["requests",\s*(\d+),\s*"result"\]/);if(!s)continue;let n=parseInt(s[1],10),o=t.match(/"promptTokens":(\d+)/),r=t.match(/"outputTokens":(\d+)/),l=t.match(/"completionTokens":(\d+)/);o&&(r||l)&&e.set(n,{promptTokens:parseInt(o[1],10),outputTokens:parseInt(r?.[1]||l[1],10)})}return e}function mt(i,e={}){if(i.modelId)return i.modelId.replace(/^copilot\//,"");if(i.result&&i.result.metadata&&i.result.metadata.modelId)return i.result.metadata.modelId.replace(/^copilot\//,"");if(i.result&&i.result.details){let t={};for(let[n,o]of Object.entries(e))if(o.displayNames)for(let r of o.displayNames)t[r]=n;let s=Object.keys(t).sort((n,o)=>o.length-n.length);for(let n of s)if(i.result.details.includes(n))return t[n]}return"gpt-4"}function Ze(i){let e=i.trim();if(!e.includes(`
30
+ `)+t,n=s+1,s=o.indexOf(`
31
+ `,n)}while(s!==-1);return i+=o.slice(n),i}var{stdout:fa,stderr:ga}=ma,ti=Symbol("GENERATOR"),Ht=Symbol("STYLER"),ys=Symbol("IS_EMPTY"),ya=["ansi","ansi","ansi256","ansi16m"],Vt=Object.create(null),Tu=(o,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=fa?fa.level:0;o.level=e.level===void 0?t:e.level};var Pu=o=>{let e=(...t)=>t.join(" ");return Tu(e,o),Object.setPrototypeOf(e,_s.prototype),e};function _s(o){return Pu(o)}Object.setPrototypeOf(_s.prototype,Function.prototype);for(let[o,e]of Object.entries(ze))Vt[o]={get(){let t=bn(this,ni(e.open,e.close,this[Ht]),this[ys]);return Object.defineProperty(this,o,{value:t}),t}};Vt.visible={get(){let o=bn(this,this[Ht],!0);return Object.defineProperty(this,"visible",{value:o}),o}};var si=(o,e,t,...s)=>o==="rgb"?e==="ansi16m"?ze[t].ansi16m(...s):e==="ansi256"?ze[t].ansi256(ze.rgbToAnsi256(...s)):ze[t].ansi(ze.rgbToAnsi(...s)):o==="hex"?si("rgb",e,t,...ze.hexToRgb(...s)):ze[t][o](...s),vu=["rgb","hex","ansi256"];for(let o of vu){Vt[o]={get(){let{level:t}=this;return function(...s){let n=ni(si(o,ya[t],"color",...s),ze.color.close,this[Ht]);return bn(this,n,this[ys])}}};let e="bg"+o[0].toUpperCase()+o.slice(1);Vt[e]={get(){let{level:t}=this;return function(...s){let n=ni(si(o,ya[t],"bgColor",...s),ze.bgColor.close,this[Ht]);return bn(this,n,this[ys])}}}}var Mu=Object.defineProperties(()=>{},{...Vt,level:{enumerable:!0,get(){return this[ti].level},set(o){this[ti].level=o}}}),ni=(o,e,t)=>{let s,n;return t===void 0?(s=o,n=e):(s=t.openAll+o,n=e+t.closeAll),{open:o,close:e,openAll:s,closeAll:n,parent:t}},bn=(o,e,t)=>{let s=(...n)=>xu(s,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(s,Mu),s[ti]=o,s[Ht]=e,s[ys]=t,s},xu=(o,e)=>{if(o.level<=0||!e)return o[ys]?"":e;let t=o[Ht];if(t===void 0)return e;let{openAll:s,closeAll:n}=t;if(e.includes("\x1B"))for(;t!==void 0;)e=pa(e,t.close,t.open),t=t.parent;let i=e.indexOf(`
32
+ `);return i!==-1&&(e=ha(e,n,s,i)),s+e+n};Object.defineProperties(_s.prototype,Vt);var Au=_s(),Zm=_s({level:ga?ga.level:0});var D=Au;var dt=U(require("fs")),Ie=U(require("path")),Fl=U(require("os"));var _a={getConfiguration:()=>({get:()=>{}})},oi={getExtension:()=>{}},Cn=class o{fsPath;scheme;path;constructor(e){this.fsPath=e,this.scheme="file",this.path=e}static file(e){return new o(e)}static joinPath(e,...t){let s=[e.fsPath,...t].join("/");return new o(s)}toString(){return this.fsPath}};var Ss=U(require("fs")),Sa=U(require("path"));function kn(o){return typeof o.discover=="function"}function Ca(o){return typeof o.analyzeUsage=="function"}function Sn(o){if(!o||!o.startsWith("file://"))return;let e=o.slice(7),t;try{t=decodeURIComponent(e)}catch{return}if(!t.split(/[\\/]/).some(n=>n===".."))return t.startsWith("//")?process.platform==="win32"?t.replace(/\//g,"\\"):t:/^\/[A-Za-z]:/.test(t)?t.slice(1):t}function pe(o){return o.replace(/\\/g,"/")}var wn=pe;function ie(o){return pe(o).toLowerCase()}function ii(o,e=process.platform){let t=pe(o);return e==="linux"?t:t.toLowerCase()}function bs(o,e,t){try{return o()}catch(s){return console.error(`[recovery] ${t??"unknown"}:`,s),e}}async function Cs(o,e,t){try{return await o()}catch(s){return console.error(`[recovery] ${t??"unknown"}:`,s),e}}var Du=/^mcp__[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}__(.+)$/i;function ka(o){return Du.test(o)}function Tn(o){return o?typeof o=="string"?o==="edit"?"edit":o==="agent"?"agent":"ask":o.kind?o.kind==="edit"?"edit":o.kind==="ask"?"ask":o.kind==="agent"?!o.id||o.id==="agent"?"agent":typeof o.id=="string"&&o.id.includes("plan-agent/Plan.agent.md")?"plan":typeof o.id=="string"&&o.id.includes(".agent.md")?"customAgent":"agent":"ask":"ask":"ask"}function _t(o){return o.startsWith("mcp.")||o.startsWith("mcp_")||o.startsWith("mcp__")}function ks(o){return o.startsWith("mcp_github_github_")?"mcp_io_github_git_"+o.substring(18):o.startsWith("mcp.github.github.")?"mcp.io.github.git."+o.substring(18):o}function bt(o,e={}){let t=e[o]??e[o.toLowerCase()];if(t&&t.includes(":"))return t.split(":")[0].trim();if(o.startsWith("mcp_io_github_git_")||o.startsWith("mcp.io.github.git."))return"GitHub MCP (Local)";if(o.startsWith("mcp_github_github_")||o.startsWith("mcp.github.github."))return"GitHub MCP (Remote)";if(o.startsWith("mcp__")){if(ka(o))return"Claude MCP";let i=o.slice(5),r=i.indexOf("__");return(r>=0?i.slice(0,r):i)||"unknown"}return o.replace(/^mcp[._]/,"").split(/[._]/)[0]||"unknown"}var Pn=class o{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 Ss.promises.access(e),!0}catch{return!1}}getDiagnosticCandidatePaths(){let e=[];for(let t of this.deps.ecosystems)if(kn(t))try{let s=t.getCandidatePaths();for(let n of s){let i=!1;try{i=Ss.existsSync(n.path)}catch{}e.push({path:n.path,exists:i,source:n.source})}}catch{}return e}checkCopilotExtension(){let e=oi.getExtension("GitHub.copilot"),t=oi.getExtension("GitHub.copilot-chat");if(!e&&!t)this.deps.log("\u26A0\uFE0F GitHub Copilot extensions not found");else{let n=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: ${n}, Chat: ${i}`)}process.env.CODESPACES==="true"&&(!e?.isActive||!t?.isActive)&&this.deps.warn("\u26A0\uFE0F Running in Codespaces with inactive Copilot extensions")}async getCopilotSessionFiles(){let e=Date.now();if(this._sessionFilesCache&&e-this._sessionFilesCacheTime<o.SESSION_FILES_CACHE_TTL)return this.deps.log(`\u{1F4A8} Using cached session files list (${this._sessionFilesCache.length} files, cached ${Math.round((e-this._sessionFilesCacheTime)/1e3)}s ago)`),this._sessionFilesCache;this._lastDiscoveryHadError=!1,this._lastDiscoveryFilesCount=0;let t=this.deps.sampleDataDirectoryOverride?.()??_a.getConfiguration("aiEngineeringFluency").get("sampleDataDirectory");if(t&&t.trim().length>0){let n=t.trim();try{if(await this.pathExists(n)){let i=(await Ss.promises.readdir(n)).filter(r=>r.endsWith(".json")||r.endsWith(".jsonl")).map(r=>Sa.join(n,r));return this.deps.log(`\u{1F4F8} Sample data mode: using ${i.length} file(s) from ${n}`),this._sessionFilesCache=i,this._sessionFilesCacheTime=e,this._lastDiscoveryFilesCount=i.length,i}else this.deps.warn(`Sample data directory not found: ${n}`)}catch(i){this.deps.warn(`Error reading sample data directory: ${i}`)}}let s=[];try{let n=Date.now();this.deps.log(`\u{1F50D} Searching for session files via ${this.deps.ecosystems.filter(kn).length} discoverable ecosystem adapter(s)`);for(let u of this.deps.ecosystems)if(kn(u))try{let p=await u.discover(this.deps.log);s.push(...p.sessionFiles)}catch(p){this.deps.warn(`Could not discover ${u.displayName} sessions: ${p}`),this._lastDiscoveryHadError=!0}let i=new Set,r=[];for(let u of s){let p=ii(u);i.has(p)||(i.add(p),r.push(u))}let l=s.length-r.length;return l>0&&this.deps.log(`\u{1F9F9} Deduplicated ${l} duplicate session path(s)`),this.deps.log(`\u2728 Total: ${r.length} session file(s) discovered in ${((Date.now()-n)/1e3).toFixed(1)}s`),r.length===0&&this.deps.warn("\u26A0\uFE0F No session files found - Have you used GitHub Copilot Chat yet?"),this._sessionFilesCache=r,this._sessionFilesCacheTime=Date.now(),this._lastDiscoveryFilesCount=r.length,r}catch(n){return this.deps.error("Error getting session files:",n),this._lastDiscoveryHadError=!0,this._lastDiscoveryFilesCount=s.length,s}}};var ge=U(require("fs")),xe=U(require("path")),En=U(require("os")),wa=U(An());var Dn=class{_sqlJsModule=null;_sqlJsInitPromise=null;_dbCache=null;_dbCacheInflight=new Map;extensionUri;constructor(e){this.extensionUri=e}getOpenCodeDataDir(){let e=En.platform(),t=En.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=ie(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;ge.existsSync(e)&&(t=ge.readFileSync(e));let s=await(0,wa.default)(t?{wasmBinary:t}: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 ge.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=ge.readFileSync(e);s=new i.Database(r)}catch{return this.getCachedDbForPath(e)}let n=this.statOpenCodeDb(e);return!n||!this.sameDbStats(t,n)?(this.closeDb(s),this.isCachedDbCurrent(e,n??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),n=this._dbCacheInflight.get(s);if(n)return n;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 n=s[0].values[0],i=s[0].columns,r={};for(let l=0;l<i.length;l++)r[i[l]]=n[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(n=>{let i=JSON.parse(n[1]);return i.id=n[0],i.time=i.time||{},i.time.created=i.time.created||n[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(n=>{let i=JSON.parse(n[1]);return i.id=n[0],i.time=i.time||{},i.time.created=i.time.created||n[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 ge.promises.stat(t)}return ge.promises.stat(e)}readOpenCodeMessages(e){let t=this.getOpenCodeDataDir(),s=xe.join(t,"storage","message",e),n=[];try{if(!ge.existsSync(s))return n;let i=ge.readdirSync(s,{withFileTypes:!0});for(let r of i)if(!(!r.isFile()||!r.name.endsWith(".json")))try{let l=ge.readFileSync(xe.join(s,r.name),"utf8"),u=JSON.parse(l);n.push(u)}catch{}}catch{}return n.sort((i,r)=>(i.time?.created||0)-(r.time?.created||0)),n}readOpenCodeParts(e){let t=this.getOpenCodeDataDir(),s=xe.join(t,"storage","part",e),n=[];try{if(!ge.existsSync(s))return n;let i=ge.readdirSync(s,{withFileTypes:!0});for(let r of i)if(!(!r.isFile()||!r.name.endsWith(".json")))try{let l=ge.readFileSync(xe.join(s,r.name),"utf8"),u=JSON.parse(l);n.push(u)}catch{}}catch{}return n.sort((i,r)=>(i.time?.start||0)-(r.time?.start||0)),n}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 n of e)n.role==="assistant"&&n.tokens&&(typeof n.tokens.total=="number"&&(s=n.tokens.total),t+=n.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 n=t.get(s.parentID)??[];n.push(s),t.set(s.parentID,n)}return t}async getOpenCodeModelUsage(e){let t=await this.getOpenCodeMessagesForSession(e);return this.getOpenCodeModelUsageFromMessages(t)}getOpenCodeModelUsageFromMessages(e){let t={},s=this.getAssistantMessagesByParent(e),n=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 u=n;for(let C of l)typeof C.tokens?.total=="number"&&(u=Math.max(u,C.tokens.total));let p=u-n;if(p<=0){n=u;continue}let m=l[0].modelID||l[0].model?.modelID||"unknown";t[m]||(t[m]={inputTokens:0,outputTokens:0});let h=l.reduce((C,x)=>C+(x.tokens?.output||0)+(x.tokens?.reasoning||0),0),g=Math.max(0,p-h);t[m].inputTokens+=g,t[m].outputTokens+=h;let _=l.reduce((C,x)=>C+(x.tokens?.cache?.read||0),0),y=l.reduce((C,x)=>C+(x.tokens?.cache?.write||0),0);_>0&&(t[m].cachedReadTokens=(t[m].cachedReadTokens??0)+_),y>0&&(t[m].cacheCreationTokens=(t[m].cacheCreationTokens??0)+y),n=u}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:n}=this.getTokensFromOpenCodeMessages(t),i=this.countOpenCodeInteractionsFromMessages(t),r=this.getOpenCodeModelUsageFromMessages(t),l=this.getAssistantMessagesByParent(t),u={};for(let m=0;m<t.length;m++){let h=t[m];if(h.role!=="user")continue;let g=l.get(h.id)??[];if(g.length===0)continue;let _=g[0].modelID||g[0].model?.modelID||"unknown";u[_]=(u[_]||0)+1}let p={};for(let[m,h]of Object.entries(r))p[m]={...h,interactions:u[m]||0};return{tokens:n,interactions:i,modelUsage:p,timestamp:s}}};var Be=U(require("fs")),It=U(require("path")),ws=U(require("os")),Ta=U(An());var In=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 Be.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=Be.readFileSync(e);s=new r.Database(l)}catch{return this._dbCache.get(e)?.db??null}let n=this.statCrushDb(e);if(!n||!this.sameDbStats(t,n))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),n=this._dbCacheInflight.get(s);if(n)return n;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(ws.platform()==="win32"){let s=process.env.LOCALAPPDATA||It.join(ws.homedir(),"AppData","Local");return It.join(s,"crush")}let t=process.env.XDG_CONFIG_HOME||It.join(ws.homedir(),".config");return It.join(t,"crush")}readCrushProjects(){let e=It.join(this.getCrushConfigDir(),"projects.json");if(!Be.existsSync(e))return[];try{let t=Be.readFileSync(e,"utf8"),s=JSON.parse(t);return Array.isArray(s.projects)?s.projects:[]}catch{return[]}}isCrushSessionFile(e){return pe(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=It.join(__dirname,"sql-wasm.wasm"),t;Be.existsSync(e)&&(t=Be.readFileSync(e));let s=await(0,Ta.default)(t?{wasmBinary:t}: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 Be.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(n=>n[0])}catch{return[]}}async readCrushSession(e){let t=this.getCrushDbPath(e),s=this.getCrushSessionId(e);if(!s)return null;let n=await this.getCrushDb(t);if(!n)return null;try{let i=n.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],u={};return r.forEach((p,m)=>{u[p]=l[m]}),u}catch{return null}}async getCrushMessages(e){let t=this.getCrushDbPath(e),s=this.getCrushSessionId(e);if(!s)return[];let n=await this.getCrushDb(t);if(!n)return[];try{let i=n.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 u={};if(r.forEach((p,m)=>{u[p]=l[m]}),typeof u.parts=="string")try{u.parts=JSON.parse(u.parts)}catch{u.parts=[]}return u})}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,n=typeof t.completion_tokens=="number"?t.completion_tokens:0;return{tokens:s+n,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 n=typeof s.prompt_tokens=="number"?s.prompt_tokens:0,i=typeof s.completion_tokens=="number"?s.completion_tokens:0;if(n+i===0)return t;let l=(await this.getCrushMessages(e)).filter(m=>m.role==="assistant"&&m.model);if(l.length===0)return t.unknown={inputTokens:n,outputTokens:i},t;let u={};for(let m of l){let h=m.model||"unknown";u[h]=(u[h]||0)+1}let p=l.length;for(let[m,h]of Object.entries(u)){let g=h/p;t[m]={inputTokens:Math.round(n*g),outputTokens:Math.round(i*g)}}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,n=typeof t.completion_tokens=="number"?t.completion_tokens:0,i=s+n,r=typeof t.created_at=="number"?t.created_at*1e3:Date.now(),l=await this.getCrushModelUsage(e),p=(await this.getCrushMessages(e)).filter(g=>g.role==="user").length,m=s+n,h={};for(let[g,_]of Object.entries(l)){let y=_.inputTokens+_.outputTokens,C=m>0?y/m:0;h[g]={inputTokens:_.inputTokens,outputTokens:_.outputTokens,interactions:Math.round(p*C)}}return{tokens:i,interactions:p,modelUsage:h,timestamp:r}}getToolCallsFromMessages(e){let t=[];for(let s of e)if(!(s.role!=="assistant"||!Array.isArray(s.parts)))for(let n of s.parts)n?.type==="tool_call"&&n?.data?.name&&t.push(n.data.name);return t}};var Ot=U(require("fs")),Rt=U(require("path")),Pa=U(require("os"));var Rn=class{getContinueDataDir(){return Rt.join(Pa.homedir(),".continue")}getContinueSessionsDir(){return Rt.join(this.getContinueDataDir(),"sessions")}isContinueSessionFile(e){let t=ie(e);return t.includes("/.continue/sessions/")&&t.endsWith(".json")}getContinueSessionFiles(){let e=this.getContinueSessionsDir();if(!Ot.existsSync(e))return[];try{return Ot.readdirSync(e).filter(t=>t.endsWith(".json")&&t!=="sessions.json").map(t=>Rt.join(e,t))}catch{return[]}}readSessionFile(e){try{let t=Ot.readFileSync(e,"utf8");return JSON.parse(t)}catch{return null}}estimateTokens(e){return e?Math.ceil(e.length/4):0}getTokensFromContinueSession(e){let t=this.readSessionFile(e);if(!t||!Array.isArray(t.history))return{tokens:0,thinkingTokens:0};let s=0,n=0;for(let i of t.history)if(Array.isArray(i.promptLogs))for(let r of i.promptLogs)s+=this.estimateTokens(r.prompt||""),n+=this.estimateTokens(r.completion||"");return{tokens:s+n,thinkingTokens:0}}countContinueInteractions(e){let t=this.readSessionFile(e);return!t||!Array.isArray(t.history)?0:t.history.filter(s=>s.message?.role==="user").length}getContinueModelUsage(e){let t=this.readSessionFile(e);if(!t||!Array.isArray(t.history))return{};let s={};for(let n of t.history)if(Array.isArray(n.promptLogs))for(let i of n.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}getContinueSessionMeta(e){let t=this.readSessionFile(e);return t?{title:t.title,model:t.chatModelTitle,workspaceDirectory:t.workspaceDirectory,mode:t.mode}:null}readSessionsIndex(){let e=Rt.join(this.getContinueSessionsDir(),"sessions.json"),t=new Map;try{let s=Ot.readFileSync(e,"utf8"),n=JSON.parse(s);if(!Array.isArray(n))return t;for(let i of n)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
+ `):""}buildContinueTurns(e){let t=this.readSessionFile(e);if(!t||!Array.isArray(t.history))return[];let s=t.history,n=[],i=0;for(;i<s.length;){let r=s[i];if(r.message?.role!=="user"){i++;continue}let l=this.extractUserText(r.message.content),u="",p=[],m=t.chatModelTitle||null,h=0,g=0,_=new Map,y=i+1;for(;y<s.length&&s[y].message?.role!=="user";){let C=s[y],x=C.message?.role;if(x==="assistant"){if(typeof C.message.content=="string"&&C.message.content&&(u+=C.message.content),Array.isArray(C.promptLogs)&&C.promptLogs.length>0){let w=C.promptLogs[0];w.modelTitle&&(m=w.modelTitle);for(let M of C.promptLogs)h+=this.estimateTokens(M.prompt||""),g+=this.estimateTokens(M.completion||"")}if(Array.isArray(C.message.toolCalls))for(let w of C.message.toolCalls){let M=w.function?.name||w.name||"unknown",S=w.function?.arguments,T=w.id||M;_.set(T,{toolName:M,arguments:S})}}else if(x==="tool"){let w=C.message.toolCallId||"",M=this.extractUserText(C.message.content),S=_.get(w);S?(p.push({...S,result:M}),_.delete(w)):p.push({toolName:"unknown",result:M})}y++}for(let[,C]of _)p.push(C);n.push({userText:l,assistantText:u,model:m,toolCalls:p,inputTokens:h,outputTokens:g}),i=y}return n}};var de=U(require("fs")),Ae=U(require("path")),Ft=U(require("os")),Vn=U(Ya());var kd=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"]),Hn=class{isVSSessionFile(e){let t=ie(e),s=t.includes("/.vs/")&&t.includes("/copilot-chat/")&&t.includes("/sessions/"),n=t.includes("/ssmsgithubcopilot/")&&t.includes("/copilot-chat/")&&t.includes("/sessions/");return s||n}async statSessionFile(e){return de.promises.stat(e)}getLogDir(){let e=process.env.LOCALAPPDATA||Ae.join(Ft.homedir(),"AppData","Local");return Ae.join(e,"Temp","VSGitHubCopilotLogs")}getSsmsSessionsDir(){let e=process.env.LOCALAPPDATA||Ae.join(Ft.homedir(),"AppData","Local");return Ae.join(e,"Microsoft","SSMS")}discoverSessions(){let e=new Set,t=[];return this._discoverFromLogs(e,t),this._discoverFromFilesystem(e,t),this._discoverFromSsmsAppData(e,t),t}_discoverFromLogs(e,t){let s=this.getLogDir();if(!de.existsSync(s))return;let n;try{n=de.readdirSync(s).filter(r=>r.endsWith(".chat.log")).map(r=>Ae.join(s,r))}catch{return}let i=/Updating session file '([^']+)'/;for(let r of n)try{let l=de.readFileSync(r,"utf8");for(let u of l.split(`
34
+ `)){let p=i.exec(u);if(!p)continue;let m=p[1];if(!e.has(m)){e.add(m);try{de.existsSync(m)&&t.push(m)}catch{}}}}catch{}}_discoverFromFilesystem(e,t){if(Ft.platform()!=="win32")return;let s=Ft.homedir(),n=["C","D"],i=[s];for(let r of n)for(let l of["repos","code","src","projects","dev"]){let u=r+":\\"+l;try{de.existsSync(u)&&i.push(u)}catch{}}for(let r of i){let l=r===s?7:5;this._scanForVsDirs(r,0,l,e,t)}}_scanForVsDirs(e,t,s,n,i){if(t>s)return;let r;try{r=de.readdirSync(e,{withFileTypes:!0})}catch{return}for(let l of r){if(!l.isDirectory())continue;let u=l.name;if(kd.has(u)||u.startsWith(".")&&u!==".vs")continue;let p=Ae.join(e,u);u===".vs"?this._findSessionsInVsDir(p,n,i):this._scanForVsDirs(p,t+1,s,n,i)}}_findSessionsInVsDir(e,t,s){let n;try{n=de.readdirSync(e,{withFileTypes:!0})}catch{return}for(let i of n){if(!i.isDirectory())continue;let r=Ae.join(e,i.name,"copilot-chat"),l;try{l=de.readdirSync(r,{withFileTypes:!0})}catch{continue}for(let u of l){if(!u.isDirectory())continue;let p=Ae.join(r,u.name,"sessions"),m;try{m=de.readdirSync(p,{withFileTypes:!0})}catch{continue}for(let h of m){if(!h.isFile())continue;let g=Ae.join(p,h.name);t.has(g)||(t.add(g),s.push(g))}}}}_discoverFromSsmsAppData(e,t){if(Ft.platform()!=="win32")return;let s=this.getSsmsSessionsDir();if(!de.existsSync(s))return;let n;try{n=de.readdirSync(s,{withFileTypes:!0})}catch{return}for(let i of n){if(!i.isDirectory())continue;let r=Ae.join(s,i.name,"SSMSGitHubCopilot","copilot-chat"),l;try{l=de.readdirSync(r,{withFileTypes:!0})}catch{continue}for(let u of l){if(!u.isDirectory())continue;let p=Ae.join(r,u.name,"sessions"),m;try{m=de.readdirSync(p,{withFileTypes:!0})}catch{continue}for(let h of m){if(!h.isFile())continue;let g=Ae.join(p,h.name);e.has(g)||(e.add(g),t.push(g))}}}}decodeSessionFile(e){try{let t=de.readFileSync(e);return t.length<2?[]:Array.from((0,Vn.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 n=this.extractTextFromContent(s.Content).trim();if(n)return n.length>80?n.substring(0,80)+"\u2026":n}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 n=s?.[1];n&&typeof n.Content=="string"&&n.Content&&t.push(n.Content)}return t.join(`
35
+ `)}extractContextText(e){if(!Array.isArray(e))return"";let t=[];for(let s of e){let n=s?.ValueContainer;if(!Array.isArray(n)||n.length<2)continue;let i=n[1];if(!i||typeof i!="object")continue;let r=Object.keys(i);if(r.length!==0)if(isNaN(Number(r[0])))i.Content&&typeof i.Content=="string"&&t.push(i.Content);else try{let l=r.map(Number).sort((h,g)=>h-g),u=Buffer.from(l.map(h=>i[h])),p=(0,Vn.decode)(u),m=Array.isArray(p)?p[1]:p;m?.Content&&typeof m.Content=="string"&&t.push(m.Content)}catch{}}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}getTokenEstimates(e,t){let s=this.decodeSessionFile(e),n=0;for(let i=1;i<s.length;i++){let r=s[i]?.[1];if(!r?.Content)continue;let l=this.extractTextFromContent(r.Content),u=i%2===1,p=u?this.extractContextText(r.Context):"";if(!l&&!p)continue;let m=this.getModelId(r,u)||void 0;n+=t(l+p,m)}return{tokens:n,thinkingTokens:0}}getModelUsage(e,t){let s={},n=this.decodeSessionFile(e),i={};for(let r=1;r<n.length;r++){let l=n[r]?.[1];if(!l?.Content)continue;let u=this.extractTextFromContent(l.Content),p=r%2===1,m=p?this.extractContextText(l.Context):"";if(!u&&!m)continue;let h=this.getModelId(l,p)||"unknown";i[h]||(i[h]={input:"",output:""}),p?i[h].input+=u+m:i[h].output+=u}for(let[r,l]of Object.entries(i))s[r]={inputTokens:t(l.input,r),outputTokens:t(l.output,r)};return s}};var tt=U(require("fs")),Nt=U(require("path")),Kn=U(require("os"));function Gt(o){if(!o||/claude-.+-\d+\.\d+/.test(o))return o;let e=o.match(/^(claude-.+)-(\d)-(\d)(-\d{8})?$/);return e?`${e[1]}-${e[2]}.${e[3]}`:o}var Jn=class{getClaudeCodeDataDir(){return Nt.join(Kn.homedir(),".claude")}getClaudeCodeProjectsDir(){return Nt.join(this.getClaudeCodeDataDir(),"projects")}isClaudeCodeSessionFile(e){let t=ie(e),s=ie(this.getClaudeCodeProjectsDir());return t.startsWith(s)&&t.endsWith(".jsonl")}getClaudeCodeSessionFiles(){let e=this.getClaudeCodeProjectsDir();if(!tt.existsSync(e))return[];let t=[];try{let s=tt.readdirSync(e,{withFileTypes:!0});for(let n of s){if(!n.isDirectory())continue;let i=Nt.join(e,n.name);try{let r=tt.readdirSync(i,{withFileTypes:!0});for(let l of r)if(!l.isDirectory()&&l.name.endsWith(".jsonl")){let u=Nt.join(i,l.name);try{tt.statSync(u).size>0&&t.push(u)}catch(p){console.error(`[claudecode] Failed to stat ${u}:`,p)}}}catch(r){console.error(`[claudecode] Failed to read project dir ${i}:`,r)}}}catch(s){console.error("[claudecode] Failed to read projects dir:",s)}return t}readSessionEvents(e){return bs(()=>{let s=tt.readFileSync(e,"utf8").trim().split(`
37
+ `),n=[];for(let i of s)if(i.trim())try{n.push(JSON.parse(i))}catch{}return n},[],`claudecode readSessionEvents(${e})`)}deduplicateAssistantEvents(e){let t=new Map,s=[];for(let n of e){if(n.type!=="assistant"||!n.message?.usage)continue;let i=n.message?.id;i?t.set(i,n):s.push(n)}return[...t.values(),...s]}getTokensFromClaudeCodeSession(e){let t=this.readSessionEvents(e),s=0,n=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),u=typeof r.output_tokens=="number"?r.output_tokens:0;s+=l,n+=u}return{tokens:s+n,thinkingTokens:0}}countClaudeCodeInteractions(e){let t=this.readSessionEvents(e),s=0;for(let n of t)if(n.type==="user"&&!n.isSidechain&&n.message?.role==="user"){let i=n.message?.content;(typeof i=="string"||Array.isArray(i)&&i.some(l=>l.type==="text")&&!i.some(l=>l.type==="tool_result"))&&s++}return s}getClaudeCodeModelUsage(e){let t=this.readSessionEvents(e),s={};for(let n of this.deduplicateAssistantEvents(t)){let i=n.message.usage,r=Gt(n.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,u=typeof i.cache_read_input_tokens=="number"?i.cache_read_input_tokens:0,p=(typeof i.input_tokens=="number"?i.input_tokens:0)+l+u,m=typeof i.output_tokens=="number"?i.output_tokens:0;s[r].inputTokens+=p,s[r].outputTokens+=m,l>0&&(s[r].cacheCreationTokens=(s[r].cacheCreationTokens??0)+l),u>0&&(s[r].cachedReadTokens=(s[r].cachedReadTokens??0)+u)}return s}getClaudeCodeSessionMeta(e){let t=this.readSessionEvents(e);if(t.length===0)return null;let s,n,i,r=[];for(let p of t)if(p.type==="ai-title"&&p.aiTitle&&(s=p.aiTitle),!n&&p.entrypoint&&(n=p.entrypoint),!i&&p.cwd&&(i=p.cwd),p.timestamp){let m=new Date(p.timestamp).getTime();isNaN(m)||r.push(m)}let l,u;return r.length>0&&(r.sort((p,m)=>p-m),l=new Date(r[0]).toISOString(),u=new Date(r[r.length-1]).toISOString()),{title:s,entrypoint:n,firstInteraction:l,lastInteraction:u,cwd:i}}getClaudeCodeSessionId(e){return Nt.basename(e,".jsonl")}getProjectPathFromHash(e){if(Kn.platform()==="win32"){let s=e.split("-");if(s.length>=2&&s[0].length===1&&s[1]===""){let n=s[0].toUpperCase(),i=s.slice(2).join("\\");return`${n}:\\${i}`}}return"/"+e.replace(/-/g,"/")}};var st=U(require("fs")),xs=U(require("path")),As=U(require("os"));var Sd="Claude_pzs8sxrjxfjjc",Qn=class{getCoworkBaseDir(){let e=As.platform();if(e==="win32"){let t=process.env.LOCALAPPDATA||xs.join(As.homedir(),"AppData","Local");return xs.join(t,"Packages",Sd,"LocalCache","Roaming","Claude","local-agent-mode-sessions")}return e==="darwin"?xs.join(As.homedir(),"Library","Application Support","Claude","local-agent-mode-sessions"):""}isCoworkSessionFile(e){let t=ie(e);return t.includes("/local-agent-mode-sessions/")&&t.endsWith(".jsonl")}getCoworkSessionFiles(){let e=this.getCoworkBaseDir();if(!e||!st.existsSync(e))return[];let t=[];try{this.walkForJsonlFiles(e,t,0,8)}catch{}return t}walkForJsonlFiles(e,t,s,n){if(s>n)return;let i;try{i=st.readdirSync(e,{withFileTypes:!0})}catch{return}for(let r of i){let l=xs.join(e,r.name);if(r.isDirectory()){if(r.name==="agent")continue;this.walkForJsonlFiles(l,t,s+1,n)}else if(r.name.endsWith(".jsonl")&&r.name!=="audit.jsonl")try{st.statSync(l).size>0&&t.push(l)}catch{}}}readCoworkEvents(e){try{let s=st.readFileSync(e,"utf8").trim().split(`
38
+ `),n=[];for(let i of s)if(i.trim())try{n.push(JSON.parse(i))}catch{}return n}catch{return[]}}getTokensFromCoworkSession(e){let t=this.readCoworkEvents(e),s=0,n=0,i=new Set;for(let r of t){if(r.type!=="assistant")continue;let l=r.message?.usage;if(!l)continue;let u=r.requestId;if(u){if(!r.message?.stop_reason||i.has(u))continue;i.add(u)}let p=(typeof l.input_tokens=="number"?l.input_tokens:0)+(typeof l.cache_creation_input_tokens=="number"?l.cache_creation_input_tokens:0)+(typeof l.cache_read_input_tokens=="number"?l.cache_read_input_tokens:0),m=typeof l.output_tokens=="number"?l.output_tokens:0;s+=p,n+=m}return{tokens:s+n,thinkingTokens:0}}countCoworkInteractions(e){let t=this.readCoworkEvents(e),s=0;for(let n of t)if(n.type==="user"&&!n.isSidechain&&n.message?.role==="user"){let i=n.message?.content;(typeof i=="string"||Array.isArray(i)&&i.some(l=>l.type==="text")&&!i.some(l=>l.type==="tool_result"))&&s++}return s}getCoworkModelUsage(e){let t=this.readCoworkEvents(e),s={},n=new Set;for(let i of t){if(i.type!=="assistant")continue;let r=i.message?.usage;if(!r)continue;let l=i.requestId;if(l){if(!i.message?.stop_reason||n.has(l))continue;n.add(l)}let u=Gt(i.message?.model||"unknown");s[u]||(s[u]={inputTokens:0,outputTokens:0});let p=typeof r.cache_creation_input_tokens=="number"?r.cache_creation_input_tokens:0,m=typeof r.cache_read_input_tokens=="number"?r.cache_read_input_tokens:0,h=(typeof r.input_tokens=="number"?r.input_tokens:0)+p+m,g=typeof r.output_tokens=="number"?r.output_tokens:0;s[u].inputTokens+=h,s[u].outputTokens+=g,p>0&&(s[u].cacheCreationTokens=(s[u].cacheCreationTokens??0)+p),m>0&&(s[u].cachedReadTokens=(s[u].cachedReadTokens??0)+m)}return s}getMetadataPathFromJsonl(e){let s=pe(e).split("/"),n=s.lastIndexOf(".claude");if(n<1)return null;let i=s[n-1];return i.startsWith("local_")?`${s.slice(0,n-1).join("/")}/${i}.json`:null}getCoworkSessionMeta(e){let t=this.getMetadataPathFromJsonl(e);if(!t)return null;try{let s=st.readFileSync(t,"utf8"),n=JSON.parse(s),i=n.createdAt?new Date(n.createdAt).toISOString():void 0,r=n.lastActivityAt?new Date(n.lastActivityAt).toISOString():void 0,l=Array.isArray(n.userSelectedFolders)&&n.userSelectedFolders.length>0?n.userSelectedFolders[0]:n.cwd;return{title:n.title||void 0,firstInteraction:i,lastInteraction:r,cwd:typeof l=="string"?l:void 0}}catch{return null}}};var ot=U(require("fs")),nt=U(require("path")),vi=U(require("os"));var Yn=class{getVibeHomeDir(){let e=process.env.VIBE_HOME;return e?nt.resolve(e.replace(/^~/,vi.homedir())):nt.join(vi.homedir(),".vibe")}getSessionLogDir(){return nt.join(this.getVibeHomeDir(),"logs","session")}isVibeSessionFile(e){let t=pe(e);return t.includes("/.vibe/logs/session/")&&t.endsWith("/meta.json")}getSessionDir(e){return nt.dirname(e)}discoverSessions(){let e=this.getSessionLogDir();if(!ot.existsSync(e))return[];try{let t=ot.readdirSync(e,{withFileTypes:!0}),s=[];for(let n of t){if(!n.isDirectory())continue;let i=nt.join(e,n.name,"meta.json");ot.existsSync(i)&&s.push(i)}return s}catch{return[]}}readSessionMeta(e){try{let t=ot.readFileSync(e,"utf8");return JSON.parse(t)}catch{return null}}readSessionMessages(e){let t=nt.join(this.getSessionDir(e),"messages.jsonl");if(!ot.existsSync(t))return[];try{let n=ot.readFileSync(t,"utf8").trim().split(`
39
+ `),i=[];for(let r of n)if(r.trim())try{i.push(JSON.parse(r))}catch{}return i}catch{return[]}}getTokensFromSession(e){let t=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,n=typeof t.stats.session_completion_tokens=="number"?t.stats.session_completion_tokens:0;return{tokens:s+n,thinkingTokens:0}}countInteractions(e){return this.readSessionMessages(e).filter(s=>s.role==="user"&&s.injected!==!0).length}getModelUsage(e){let t=this.readSessionMeta(e);if(!t)return{};let s=typeof t.stats?.session_prompt_tokens=="number"?t.stats.session_prompt_tokens:0,n=typeof t.stats?.session_completion_tokens=="number"?t.stats.session_completion_tokens:0;return s+n===0?{}:{[t.config?.active_model||"devstral"]:{inputTokens:s,outputTokens:n}}}getSessionMeta(e){let t=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}}getSessionData(e){let t=this.readSessionMeta(e);if(!t)return{tokens:0,interactions:0,modelUsage:{},timestamp:0};let{tokens:s}=this.getTokensFromSession(e),n=this.countInteractions(e),i=this.getModelUsage(e),r={};for(let[u,p]of Object.entries(i))r[u]={...p,interactions:n};let l=t.start_time?new Date(t.start_time).getTime():0;return{tokens:s,interactions:n,modelUsage:r,timestamp:l}}};var Le=U(require("fs")),Ei=U(require("os")),at=U(require("path"));function wd(o){return typeof o!="object"||o===null?!1:o.kind==="toolInvocationSerialized"}function Td(o){return typeof o!="object"||o===null?!1:o.kind==="subagent"}var Pd=20,vd=5,Md=130,xd=50,Ad=10;function K(o,e="gpt-4",t={}){let s=.25;for(let[n,i]of Object.entries(t))if(e.includes(n)||e.includes(n.replace("-",""))){s=i;break}return Math.ceil(o.length*s)}function Dd(o){return o.trim().toLowerCase().replace(/\s+/g,"-")}function Kt(o){if(!wd(o))return null;let e=o.toolSpecificData;if(!Td(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],[u])=>Number(l)-Number(u)),s=r.map(([,l])=>typeof l=="string"?l:"").join("")}let n=typeof e.modelName=="string"?e.modelName:"",i=n?Dd(n):"";return t||s?{prompt:t,result:s,modelName:i}:null}function Qt(o){if(typeof o!="object"||o===null)return{text:"",isThinking:!1};let e=o;if(e.kind==="thinking"){let n=e.value;return{text:typeof n=="string"?n:"",isThinking:!0}}let t=e.content;if(typeof t=="object"&&t!==null){let n=t.value;if(typeof n=="string"&&n)return{text:n,isThinking:!1}}let s=e.value;return typeof s=="string"&&s?{text:s,isThinking:!1}:{text:"",isThinking:!1}}var Mi=class{estimate(e){let t=0,s=0,n={},i=0;for(let h of e)if(h.trim())try{let g=JSON.parse(h);if(n=Ds(n,g),g.kind===2&&g.k?.[0]==="requests"&&Array.isArray(g.v))for(let _ of g.v)_.message?.text&&(t+=K(_.message.text));if(g.kind===2&&g.k?.includes("response")&&Array.isArray(g.v))for(let _ of g.v){if(Kt(_))continue;let{text:y,isThinking:C}=Qt(_);y&&(C?s+=K(y):t+=K(y))}}catch{i++}let r=i>0?Ai(e):new Map,l=n.requests,u=Array.isArray(l)?l:[],p=u.length;for(let h of r.keys())h+1>p&&(p=h+1);let m=0;for(let h=0;h<p;h++){let g=u[h],_=!1;if(g?.result){let y=g.result;if(typeof y.promptTokens=="number"&&typeof y.outputTokens=="number")m+=y.promptTokens+y.outputTokens,_=!0;else if(y.metadata&&typeof y.metadata.promptTokens=="number"&&typeof y.metadata.outputTokens=="number")m+=y.metadata.promptTokens+y.metadata.outputTokens,_=!0;else if(y.usage){let C=y.usage,x=typeof C.promptTokens=="number"?C.promptTokens:0,w=typeof C.completionTokens=="number"?C.completionTokens:0;m+=x+w,_=!0}}if(!_){let y=r.get(h);y&&(m+=y.promptTokens+y.outputTokens)}}for(let h of u){let g=h;if(!(!g?.response||!Array.isArray(g.response)))for(let _ of g.response){let y=Kt(_);y&&(y.prompt&&(t+=K(y.prompt)),y.result&&(t+=K(y.result)))}}return{tokens:t+s,thinkingTokens:s,actualTokens:m,cacheReadTokens:0,modelUsage:{},dailyActualTokens:{}}}},xi=class{estimate(e){let t=0,s=0,n=0,i=0,r=null,l=null,u=0,p={};for(let m of e)if(m.trim())try{let h=JSON.parse(m);if(h.type==="session.shutdown"&&h.data?.modelMetrics){r||(r={});let g=0;for(let[_,y]of Object.entries(h.data.modelMetrics)){let C=y?.usage;if(C){let x=typeof C.inputTokens=="number"?C.inputTokens:0,w=typeof C.outputTokens=="number"?C.outputTokens:0,M=typeof C.cacheReadTokens=="number"?C.cacheReadTokens:0,S=typeof C.cacheWriteTokens=="number"?C.cacheWriteTokens:0;n+=x+w,i+=M,g+=x+w,r[_]||(r[_]={inputTokens:0,outputTokens:0}),r[_].inputTokens+=x,r[_].outputTokens+=w,M>0&&(r[_].cachedReadTokens=(r[_].cachedReadTokens??0)+M),S>0&&(r[_].cacheCreationTokens=(r[_].cacheCreationTokens??0)+S)}}if(g>0&&h.timestamp){let _=new Date(h.timestamp).toISOString().slice(0,10);_&&_!=="Inval"&&(p[_]=(p[_]||0)+g)}}if(h.type==="user.message"&&h.data?.content)t+=K(h.data.content);else if(h.type==="user.message_rendered"&&h.data?.renderedMessage)t+=K(h.data.renderedMessage);else if(h.type==="assistant.message"){let g=typeof h.data?.outputTokens=="number"?h.data.outputTokens:0;if(g>0){l||(l={});let _=h.data?.model||"unknown";l[_]=(l[_]??0)+g}else h.data?.content&&(t+=K(h.data.content))}else if(h.type==="tool.execution_start")u++;else if(h.type==="tool.execution_complete"&&h.data?.result){let g=h.data.result,_=typeof g.detailedContent=="string"?g.detailedContent:typeof g.content=="string"?g.content:"";_&&(t+=K(_))}else h.content&&(t+=K(h.content));if(h.type==="assistant.message"){let g=h.data?.reasoningText;typeof g=="string"&&g&&(s+=K(g));let _=h.data?.thinking?.text;typeof _=="string"&&_&&(s+=K(_))}}catch{}if(!n&&l){let m=u>Pd?Md:u>vd?xd:Ad;for(let h of Object.values(l)){let g=Math.round(h*m);n+=g+h,i+=g}}return{tokens:t+s,thinkingTokens:s,actualTokens:n,cacheReadTokens:i,modelUsage:r??{},dailyActualTokens:p}}};function Ed(o){let e=0;for(let t of o)if(t.trim()){if(++e>10)break;try{if(typeof JSON.parse(t).kind=="number")return new Mi}catch{}}return new xi}function Xn(o){let e=o.trim().split(`
40
+ `);return Ed(e).estimate(e)}function Xa(o){let e=new Map,t=null,s=null,n=0;function i(r){if(!r||typeof r!="object")return null;let u=r.metadata;if(!u||typeof u!="object")return null;let m=u.configurationSchema;if(!m||typeof m!="object")return null;let g=m.properties;if(!g||typeof g!="object")return null;let y=g.reasoningEffort;if(!y||typeof y!="object")return null;let C=y;return typeof C.default=="string"?C.default:null}for(let r of o){if(!r.trim())continue;let l;try{l=JSON.parse(r)}catch{continue}if(typeof l.kind=="number"){if(l.kind===0){let m=l.v?.inputState?.selectedModel,h=i(m);h!==null&&(t=h,s=h)}else if(l.kind===1){let u=l.k;if(Array.isArray(u)&&u[0]==="inputState"&&u[1]==="selectedModel"){let p=i(l.v);p!==null&&p!==t&&(t!==null&&n++,t=p)}}else if(l.kind===2){let u=l.k;if(Array.isArray(u)&&u[0]==="requests"&&typeof u[1]=="number"&&t!==null){let p=l.v;if(p&&typeof p=="object"){let m=p,h=typeof m.requestId=="string"?m.requestId:null;h&&e.set(h,t)}}}}}return{effortByRequestId:e,defaultEffort:s,switchCount:n}}function Ai(o){let e=new Map;for(let t of o){if(!t.includes('"result"'))continue;let s=t.match(/"k":\s*\["requests",\s*(\d+),\s*"result"\]/);if(!s)continue;let n=parseInt(s[1],10),i=t.match(/"promptTokens":(\d+)/),r=t.match(/"outputTokens":(\d+)/),l=t.match(/"completionTokens":(\d+)/);i&&(r||l)&&e.set(n,{promptTokens:parseInt(i[1],10),outputTokens:parseInt(r?.[1]||l[1],10)})}return e}function kt(o,e={}){if(o.modelId)return o.modelId.replace(/^copilot\//,"");if(o.result&&o.result.metadata&&o.result.metadata.modelId)return o.result.metadata.modelId.replace(/^copilot\//,"");if(o.result&&o.result.details){let t={};for(let[n,i]of Object.entries(e))if(i.displayNames)for(let r of i.displayNames)t[r]=n;let s=Object.keys(t).sort((n,i)=>i.length-n.length);for(let n of s)if(o.result.details.includes(n))return t[n]}return"gpt-4"}function it(o){let e=o.trim();if(!e.includes(`
41
41
  `))return!1;let t=e.split(`
42
- `).filter(o=>o.trim());if(t.length<2)return!1;let s=t[0].trim(),n=t[1].trim();return s.startsWith("{")&&s.endsWith("}")&&n.startsWith("{")&&n.endsWith("}")}function Vt(i){let e=i.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 ws(i,e){if(typeof e!="object"||e===null)return i;let{kind:t,k:s,v:n}=e;if(t===0)return n;if(!Array.isArray(s)||s.length===0)return i;let o=s.map(String),r=typeof i=="object"&&i!==null?i:{},l=r;for(let m=0;m<o.length-1;m++){let p=o[m],h=o[m+1],f=/^\d+$/.test(h);if(Array.isArray(l)){let y=Number(p);(!l[y]||typeof l[y]!="object")&&(l[y]=f?[]:{}),l=l[y]}else(!l[p]||typeof l[p]!="object")&&(l[p]=f?[]:{}),l=l[p]}let u=o[o.length-1];if(t===1)return Array.isArray(l)?l[Number(u)]=n:l[u]=n,r;if(t===2){let m;if(Array.isArray(l)){let p=Number(u);Array.isArray(l[p])||(l[p]=[]),m=l[p]}else Array.isArray(l[u])||(l[u]=[]),m=l[u];return Array.isArray(n)?m.push(...n):m.push(n),r}return r}function et(i,e={}){let t=e[i];if(t&&typeof t.multiplier=="number")return t.multiplier===0?"standard":"premium";for(let[s,n]of Object.entries(e))if((i.includes(s)||s.includes(i))&&typeof n.multiplier=="number")return n.multiplier===0?"standard":"premium";return"unknown"}function Gn(i,e={},t="provider"){let s=0;for(let[n,o]of Object.entries(i)){let r=e[n]??e["gpt-4o-mini"];if(!r)continue;let l=t==="copilot"&&r.copilotPricing?r.copilotPricing:r,u=o.cachedReadTokens??0,m=o.cacheCreationTokens??0,h=Math.max(0,o.inputTokens-u-m)/1e6*l.inputCostPerMillion,f=u/1e6*(l.cachedInputCostPerMillion??l.inputCostPerMillion),y=m/1e6*(l.cacheCreationCostPerMillion??l.inputCostPerMillion),_=o.outputTokens/1e6*l.outputCostPerMillion;s+=h+f+y+_}return s}function ce(){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,byKind:{},copilotInstructions:0,agentsMd:0,byPath:{}}}function ie(i){return typeof i=="string"&&i.trim().length>0}function Jt(i){return typeof i=="number"&&Number.isFinite(i)?i:0}function Kt(i){if(!ie(i))return null;let e=Date.parse(i);return Number.isFinite(e)?e:null}function pi(i,e){let t=Kt(i.timestamp),s=Kt(e.timestamp);return t!==null&&s!==null&&t!==s?t-s:t!==null&&s===null?-1:t===null&&s!==null?1:i.lineNumber-e.lineNumber}function Ln(i){if(!i)return i;let e=i.trim();return e==="gemini-3-flash-preview"?"gemini-3-flash":e}var $n=class{getGeminiDataDir(){return tt.join(hi.homedir(),".gemini")}getGeminiTmpDir(){return tt.join(this.getGeminiDataDir(),"tmp")}getGeminiProjectsPath(){return tt.join(this.getGeminiDataDir(),"projects.json")}getGeminiLogsPath(){return tt.join(this.getGeminiDataDir(),"logs.json")}isGeminiCliSessionFile(e){let t=e.toLowerCase().replace(/\\/g,"/"),s=this.getGeminiTmpDir().toLowerCase().replace(/\\/g,"/");return t.startsWith(s)&&t.includes("/chats/session-")&&t.endsWith(".jsonl")}getGeminiCliSessionFiles(){let e=this.getGeminiTmpDir();if(!Ie.existsSync(e))return[];let t=[];try{let s=Ie.readdirSync(e,{withFileTypes:!0});for(let n of s){if(!n.isDirectory())continue;let o=tt.join(e,n.name,"chats");if(Ie.existsSync(o))try{let r=Ie.readdirSync(o,{withFileTypes:!0});for(let l of r){if(l.isDirectory()||!l.name.startsWith("session-")||!l.name.endsWith(".jsonl"))continue;let u=tt.join(o,l.name);try{Ie.statSync(u).size>0&&t.push(u)}catch{}}}catch{}}}catch{return[]}return t}readGeminiCliSession(e){let t=[],s=new Map,n=new Set,o=null,r,l=0,u=this.readJsonlLines(e);for(let f=0;f<u.length;f++){let y=u[f],_;try{_=JSON.parse(y)}catch{continue}if(!o&&ie(_?.sessionId)){o={sessionId:_.sessionId,projectHash:ie(_.projectHash)?_.projectHash:void 0,startTime:ie(_.startTime)?_.startTime:void 0,lastUpdated:ie(_.lastUpdated)?_.lastUpdated:void 0,kind:ie(_.kind)?_.kind:void 0};continue}if(ie(_?.$set?.lastUpdated)){r=_.$set.lastUpdated;continue}if(_?.type==="user"){let v=ie(_.id)?_.id:`__user_${f}`;if(n.has(v))continue;n.add(v),t.push({id:ie(_.id)?_.id:void 0,timestamp:ie(_.timestamp)?_.timestamp:void 0,type:"user",content:_.content,lineNumber:f});continue}if(_?.type==="gemini"){let v=ie(_.id)?_.id:`__assistant_${l++}_${f}`;s.set(v,{id:ie(_.id)?_.id:void 0,timestamp:ie(_.timestamp)?_.timestamp:void 0,type:"gemini",content:_.content,thoughts:Array.isArray(_.thoughts)?_.thoughts:[],tokens:_.tokens,model:ie(_.model)?_.model:void 0,toolCalls:Array.isArray(_.toolCalls)?_.toolCalls:[],lineNumber:f})}}o&&r&&(o.lastUpdated=r),t.sort(pi);let m=Array.from(s.values()).sort(pi),p=this.getProjectBucketFromPath(e)||o?.projectHash,h=this.resolveWorkspacePath(p,o?.projectHash);return{header:o,projectBucket:p,workspacePath:h??p,userRecords:t,assistantRecords:m}}getTokensFromGeminiCliSession(e){let t=this.readGeminiCliSession(e),s=0,n=0;for(let o of t.assistantRecords){let r=this.getTokenBreakdown(o.tokens);s+=r.total,n+=r.thinking}return{tokens:s,thinkingTokens:n}}countGeminiCliInteractions(e){return this.readGeminiCliSession(e).userRecords.length}getGeminiCliModelUsage(e){let t=this.readGeminiCliSession(e),s={};for(let n of t.assistantRecords){let o=Ln(n.model||"unknown"),r=this.getTokenBreakdown(n.tokens);s[o]||(s[o]={inputTokens:0,outputTokens:0}),s[o].inputTokens+=r.input,s[o].outputTokens+=r.output+r.thinking+r.tool,r.cached>0&&(s[o].cachedReadTokens=(s[o].cachedReadTokens??0)+r.cached)}return s}getGeminiCliSessionMeta(e){let t=this.readGeminiCliSession(e),s=[],n=o=>{let r=Kt(o);r!==null&&s.push(r)};n(t.header?.startTime),n(t.header?.lastUpdated);for(let o of t.userRecords)n(o.timestamp);for(let o of t.assistantRecords)n(o.timestamp);return s.sort((o,r)=>o-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}}buildGeminiCliTurns(e){let t=this.readGeminiCliSession(e),s=this.groupConversationTurns(t),n=[],o=0;for(let r of s){let l=[],u=[],m=null,p=0,h=0,f=0,y=0,_=0;for(let k of r.assistants){let C=this.getTokenBreakdown(k.tokens);o+=C.total,p+=C.input,h+=C.output,f+=C.thinking,y+=C.tool,_+=C.cached;let S=ie(k.content)?k.content.trim():"";S.length>0&&l.push(S);for(let w of this.toDisplayToolCalls(k.toolCalls))u.push(w);ie(k.model)&&(m=Ln(k.model))}let v=p>0||h>0||f>0||y>0?{promptTokens:p,completionTokens:h+f+y,promptTokenDetails:this.buildPromptTokenDetails(p,_)}:void 0;n.push({turnNumber:n.length+1,timestamp:this.pickTurnTimestamp(r.user?.timestamp,r.assistants),mode:"cli",userMessage:this.extractUserText(r.user?.content),assistantResponse:l.join(`
42
+ `).filter(i=>i.trim());if(t.length<2)return!1;let s=t[0].trim(),n=t[1].trim();return s.startsWith("{")&&s.endsWith("}")&&n.startsWith("{")&&n.endsWith("}")}function Yt(o){let e=o.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 Ds(o,e){if(typeof e!="object"||e===null)return o;let t=e,{kind:s,k:n,v:i}=t;if(s===0)return i;if(!Array.isArray(n)||n.length===0)return o;let r=n.map(String),l=typeof o=="object"&&o!==null?o:{},u=l;for(let m=0;m<r.length-1;m++){let h=r[m],g=r[m+1],_=/^\d+$/.test(g);if(Array.isArray(u)){let y=Number(h);(!u[y]||typeof u[y]!="object")&&(u[y]=_?[]:{}),u=u[y]}else(!u[h]||typeof u[h]!="object")&&(u[h]=_?[]:{}),u=u[h]}let p=r[r.length-1];if(s===1)return Array.isArray(u)?u[Number(p)]=i:u[p]=i,l;if(s===2){let m;if(Array.isArray(u)){let h=Number(p);Array.isArray(u[h])||(u[h]=[]),m=u[h]}else Array.isArray(u[p])||(u[p]=[]),m=u[p];return Array.isArray(i)?m.push(...i):m.push(i),l}return l}function rt(o,e={}){let t=e[o];if(t&&typeof t.multiplier=="number")return t.multiplier===0?"standard":"premium";for(let[s,n]of Object.entries(e))if((o.includes(s)||s.includes(o))&&typeof n.multiplier=="number")return n.multiplier===0?"standard":"premium";return"unknown"}function Es(o,e={},t="provider"){let s=0;for(let[n,i]of Object.entries(o)){let r=e[n]??e["gpt-4o-mini"];if(!r)continue;let l=t==="copilot"&&r.copilotPricing?r.copilotPricing:r,u=i.cachedReadTokens??0,p=i.cacheCreationTokens??0,h=Math.max(0,i.inputTokens-u-p)/1e6*l.inputCostPerMillion,g=u/1e6*(l.cachedInputCostPerMillion??l.inputCostPerMillion),_=p/1e6*(l.cacheCreationCostPerMillion??l.inputCostPerMillion),y=i.outputTokens/1e6*l.outputCostPerMillion;s+=h+g+_+y}return s}function ue(){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,byKind:{},copilotInstructions:0,agentsMd:0,byPath:{}}}function re(o){return typeof o=="string"&&o.trim().length>0}function Xt(o){return typeof o=="number"&&Number.isFinite(o)?o:0}function Zt(o){if(!re(o))return null;let e=Date.parse(o);return Number.isFinite(e)?e:null}function Di(o,e){let t=Zt(o.timestamp),s=Zt(e.timestamp);return t!==null&&s!==null&&t!==s?t-s:t!==null&&s===null?-1:t===null&&s!==null?1:o.lineNumber-e.lineNumber}function Zn(o){if(!o)return o;let e=o.trim();return e==="gemini-3-flash-preview"?"gemini-3-flash":e}var eo=class{getGeminiDataDir(){return at.join(Ei.homedir(),".gemini")}getGeminiTmpDir(){return at.join(this.getGeminiDataDir(),"tmp")}getGeminiProjectsPath(){return at.join(this.getGeminiDataDir(),"projects.json")}getGeminiLogsPath(){return at.join(this.getGeminiDataDir(),"logs.json")}isGeminiCliSessionFile(e){let t=ie(e),s=ie(this.getGeminiTmpDir());return t.startsWith(s)&&t.includes("/chats/session-")&&t.endsWith(".jsonl")}getGeminiCliSessionFiles(){let e=this.getGeminiTmpDir();if(!Le.existsSync(e))return[];let t=[];try{let s=Le.readdirSync(e,{withFileTypes:!0});for(let n of s){if(!n.isDirectory())continue;let i=at.join(e,n.name,"chats");if(Le.existsSync(i))try{let r=Le.readdirSync(i,{withFileTypes:!0});for(let l of r){if(l.isDirectory()||!l.name.startsWith("session-")||!l.name.endsWith(".jsonl"))continue;let u=at.join(i,l.name);try{Le.statSync(u).size>0&&t.push(u)}catch{}}}catch{}}}catch{return[]}return t}readGeminiCliSession(e){let t=[],s=new Map,n=new Set,i=null,r,l=0,u=this.readJsonlLines(e);for(let g=0;g<u.length;g++){let _=u[g],y;try{y=JSON.parse(_)}catch{continue}if(!i&&re(y?.sessionId)){i={sessionId:y.sessionId,projectHash:re(y.projectHash)?y.projectHash:void 0,startTime:re(y.startTime)?y.startTime:void 0,lastUpdated:re(y.lastUpdated)?y.lastUpdated:void 0,kind:re(y.kind)?y.kind:void 0};continue}if(re(y?.$set?.lastUpdated)){r=y.$set.lastUpdated;continue}if(y?.type==="user"){let C=re(y.id)?y.id:`__user_${g}`;if(n.has(C))continue;n.add(C),t.push({id:re(y.id)?y.id:void 0,timestamp:re(y.timestamp)?y.timestamp:void 0,type:"user",content:y.content,lineNumber:g});continue}if(y?.type==="gemini"){let C=re(y.id)?y.id:`__assistant_${l++}_${g}`;s.set(C,{id:re(y.id)?y.id:void 0,timestamp:re(y.timestamp)?y.timestamp:void 0,type:"gemini",content:y.content,thoughts:Array.isArray(y.thoughts)?y.thoughts:[],tokens:y.tokens,model:re(y.model)?y.model:void 0,toolCalls:Array.isArray(y.toolCalls)?y.toolCalls:[],lineNumber:g})}}i&&r&&(i.lastUpdated=r),t.sort(Di);let p=Array.from(s.values()).sort(Di),m=this.getProjectBucketFromPath(e)||i?.projectHash,h=this.resolveWorkspacePath(m,i?.projectHash);return{header:i,projectBucket:m,workspacePath:h??m,userRecords:t,assistantRecords:p}}getTokensFromGeminiCliSession(e){let t=this.readGeminiCliSession(e),s=0,n=0;for(let i of t.assistantRecords){let r=this.getTokenBreakdown(i.tokens);s+=r.total,n+=r.thinking}return{tokens:s,thinkingTokens:n}}countGeminiCliInteractions(e){return this.readGeminiCliSession(e).userRecords.length}getGeminiCliModelUsage(e){let t=this.readGeminiCliSession(e),s={};for(let n of t.assistantRecords){let i=Zn(n.model||"unknown"),r=this.getTokenBreakdown(n.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}getGeminiCliSessionMeta(e){let t=this.readGeminiCliSession(e),s=[],n=i=>{let r=Zt(i);r!==null&&s.push(r)};n(t.header?.startTime),n(t.header?.lastUpdated);for(let i of t.userRecords)n(i.timestamp);for(let i of t.assistantRecords)n(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}}buildGeminiCliTurns(e){let t=this.readGeminiCliSession(e),s=this.groupConversationTurns(t),n=[],i=0;for(let r of s){let l=[],u=[],p=null,m=0,h=0,g=0,_=0,y=0;for(let x of r.assistants){let w=this.getTokenBreakdown(x.tokens);i+=w.total,m+=w.input,h+=w.output,g+=w.thinking,_+=w.tool,y+=w.cached;let M=re(x.content)?x.content.trim():"";M.length>0&&l.push(M);for(let S of this.toDisplayToolCalls(x.toolCalls))u.push(S);re(x.model)&&(p=Zn(x.model))}let C=m>0||h>0||g>0||_>0?{promptTokens:m,completionTokens:h+g+_,promptTokenDetails:this.buildPromptTokenDetails(m,y)}:void 0;n.push({turnNumber:n.length+1,timestamp:this.pickTurnTimestamp(r.user?.timestamp,r.assistants),mode:"cli",userMessage:this.extractUserText(r.user?.content),assistantResponse:l.join(`
43
43
 
44
- `),model:m,toolCalls:u,contextReferences:ce(),mcpTools:[],inputTokensEstimate:p,outputTokensEstimate:h+y,thinkingTokensEstimate:f,actualUsage:v})}return{turns:n,actualTokens:o}}getGeminiCliDailyFractions(e){let t=this.readGeminiCliSession(e),s=t.userRecords.map(l=>this.toUtcDayKey(l.timestamp)).filter(l=>!!l);if(s.length===0)for(let l of t.assistantRecords){let u=this.toUtcDayKey(l.timestamp);u&&s.push(u)}if(s.length===0)return{[this.toUtcDayKey(t.header?.startTime)??this.toUtcDayKey(t.header?.lastUpdated)??new Date().toISOString().slice(0,10)]:1};let n=new Map;for(let l of s)n.set(l,(n.get(l)??0)+1);let o=s.length,r={};for(let[l,u]of n.entries())r[l]=u/o;return r}readJsonlLines(e){try{return Ie.readFileSync(e,"utf8").split(/\r?\n/).map(t=>t.trim()).filter(t=>t.length>0)}catch{return[]}}getProjectBucketFromPath(e){let s=e.replace(/\\/g,"/").split("/").filter(r=>r.length>0),n=s.lastIndexOf("chats");if(n>0)return s[n-1];let o=s.lastIndexOf("tmp");if(o>=0&&o+1<s.length)return s[o+1]}resolveWorkspacePath(e,t){let s=this.readGeminiProjectsIndex();if(e&&s.has(e))return s.get(e);if(t&&s.has(t))return s.get(t)}readGeminiProjectsIndex(){let e=new Map,t=this.getGeminiProjectsPath();if(!Ie.existsSync(t))return e;try{let s=JSON.parse(Ie.readFileSync(t,"utf8"));if(Array.isArray(s)){for(let n of s)this.addProjectMapping(e,void 0,n);return e}if(s&&typeof s=="object")for(let[n,o]of Object.entries(s))this.addProjectMapping(e,n,o)}catch{}return e}addProjectMapping(e,t,s){if(typeof s=="string"){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));return}if(!s||typeof s!="object"||Array.isArray(s))return;let n=s,o=this.pickString(n,["projectHash","projectBucket","bucket","slug","name","id"]),r=this.pickString(n,["workspacePath","path","directory","cwd","rootPath","repoPath","workspace","root"]);o&&r&&this.looksLikePath(r)&&e.set(o,this.normalizeWorkspacePath(r)),t&&this.looksLikePath(t)&&o&&e.set(o,this.normalizeWorkspacePath(t)),t&&!this.looksLikePath(t)&&r&&this.looksLikePath(r)&&e.set(t,this.normalizeWorkspacePath(r))}pickString(e,t){for(let s of t)if(ie(e[s]))return e[s].trim()}looksLikePath(e){let t=e.replace(/\\/g,"/");return/^[a-zA-Z]:/.test(e)||t.startsWith("/")||t.startsWith("~")||t.startsWith("file://")}normalizeWorkspacePath(e){let t=e.trim().replace(/^~(?=[/\\]|$)/,hi.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 tt.normalize(t)}getTokenBreakdown(e){let t=Jt(e?.input),s=Jt(e?.output),n=Jt(e?.cached),o=Jt(e?.thoughts),r=Jt(e?.tool),l=Jt(e?.total)||t+s+o+r;return{input:t,output:s,cached:n,thinking:o,tool:r,total:l}}deriveSessionTitle(e){for(let t of e.userRecords){let s=this.extractUserText(t.content).split(/\r?\n/).map(n=>n.trim()).find(n=>n.length>0);if(s)return s.length>80?`${s.slice(0,77)}...`:s}return e.projectBucket}extractUserText(e){if(ie(e))return e.trim();if(!Array.isArray(e))return"";let t=[];for(let s of e)s&&typeof s=="object"&&ie(s.text)&&t.push(s.text.trim());return t.join(`
44
+ `),model:p,toolCalls:u,contextReferences:ue(),mcpTools:[],inputTokensEstimate:m,outputTokensEstimate:h+_,thinkingTokensEstimate:g,actualUsage:C})}return{turns:n,actualTokens:i}}getGeminiCliDailyFractions(e){let t=this.readGeminiCliSession(e),s=t.userRecords.map(l=>this.toUtcDayKey(l.timestamp)).filter(l=>!!l);if(s.length===0)for(let l of t.assistantRecords){let u=this.toUtcDayKey(l.timestamp);u&&s.push(u)}if(s.length===0)return{[this.toUtcDayKey(t.header?.startTime)??this.toUtcDayKey(t.header?.lastUpdated)??new Date().toISOString().slice(0,10)]:1};let n=new Map;for(let l of s)n.set(l,(n.get(l)??0)+1);let i=s.length,r={};for(let[l,u]of n.entries())r[l]=u/i;return r}readJsonlLines(e){try{return Le.readFileSync(e,"utf8").split(/\r?\n/).map(t=>t.trim()).filter(t=>t.length>0)}catch{return[]}}getProjectBucketFromPath(e){let s=pe(e).split("/").filter(r=>r.length>0),n=s.lastIndexOf("chats");if(n>0)return s[n-1];let i=s.lastIndexOf("tmp");if(i>=0&&i+1<s.length)return s[i+1]}resolveWorkspacePath(e,t){let s=this.readGeminiProjectsIndex();if(e&&s.has(e))return s.get(e);if(t&&s.has(t))return s.get(t)}readGeminiProjectsIndex(){let e=new Map,t=this.getGeminiProjectsPath();if(!Le.existsSync(t))return e;try{let s=JSON.parse(Le.readFileSync(t,"utf8"));if(Array.isArray(s)){for(let n of s)this.addProjectMapping(e,void 0,n);return e}if(s&&typeof s=="object")for(let[n,i]of Object.entries(s))this.addProjectMapping(e,n,i)}catch{}return e}addProjectMapping(e,t,s){if(typeof s=="string"){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));return}if(!s||typeof s!="object"||Array.isArray(s))return;let n=s,i=this.pickString(n,["projectHash","projectBucket","bucket","slug","name","id"]),r=this.pickString(n,["workspacePath","path","directory","cwd","rootPath","repoPath","workspace","root"]);i&&r&&this.looksLikePath(r)&&e.set(i,this.normalizeWorkspacePath(r)),t&&this.looksLikePath(t)&&i&&e.set(i,this.normalizeWorkspacePath(t)),t&&!this.looksLikePath(t)&&r&&this.looksLikePath(r)&&e.set(t,this.normalizeWorkspacePath(r))}pickString(e,t){for(let s of t)if(re(e[s]))return e[s].trim()}looksLikePath(e){let t=pe(e);return/^[a-zA-Z]:/.test(e)||t.startsWith("/")||t.startsWith("~")||t.startsWith("file://")}normalizeWorkspacePath(e){let t=e.trim().replace(/^~(?=[/\\]|$)/,Ei.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 at.normalize(t)}getTokenBreakdown(e){let t=Xt(e?.input),s=Xt(e?.output),n=Xt(e?.cached),i=Xt(e?.thoughts),r=Xt(e?.tool),l=Xt(e?.total)||t+s+i+r;return{input:t,output:s,cached:n,thinking:i,tool:r,total:l}}deriveSessionTitle(e){for(let t of e.userRecords){let s=this.extractUserText(t.content).split(/\r?\n/).map(n=>n.trim()).find(n=>n.length>0);if(s)return s.length>80?`${s.slice(0,77)}...`:s}return e.projectBucket}extractUserText(e){if(re(e))return e.trim();if(!Array.isArray(e))return"";let t=[];for(let s of e)s&&typeof s=="object"&&re(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 n=ie(s?.name)?s.name.trim():"",r=(ie(s?.displayName)?s.displayName.trim():"")||n;r&&t.push({toolName:r,arguments:s.args!==void 0?this.safeStringify(s.args):void 0,result:ie(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=[],n=Math.min(t,e);n>0&&s.push({category:"cached",label:"Cache reads",percentageOfPrompt:n/e*100});let o=e-n;return o>0&&s.push({category:"prompt",label:"Prompt tokens",percentageOfPrompt:o/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)=>pi(r.record,l.record)),s=[],n=null,o=[];for(let r of t)r.kind==="user"?((n||o.length>0)&&(s.push({user:n,assistants:o}),o=[]),n=r.record):o.push(r.record);return(n||o.length>0)&&s.push({user:n,assistants:o}),s}pickTurnTimestamp(e,t){let s=Kt(e);if(s!==null)return new Date(s).toISOString();for(let n of t){let o=Kt(n.timestamp);if(o!==null)return new Date(o).toISOString()}return null}toUtcDayKey(e){let t=Kt(e);return t!==null?new Date(t).toISOString().slice(0,10):null}};var Yt=O(require("fs")),st=O(require("path"));var Ot=O(require("fs"));function qn(i){return i?typeof i=="string"?i==="edit"?"edit":i==="agent"?"agent":"ask":i.kind?i.kind==="edit"?"edit":i.kind==="ask"?"ask":i.kind==="agent"?!i.id||i.id==="agent"?"agent":typeof i.id=="string"&&i.id.includes("plan-agent/Plan.agent.md")?"plan":typeof i.id=="string"&&i.id.includes(".agent.md")?"customAgent":"agent":"ask":"ask":"ask"}function pt(i){return i.startsWith("mcp.")||i.startsWith("mcp_")||i.startsWith("mcp__")}function Ss(i){return i.startsWith("mcp_github_github_")?"mcp_io_github_git_"+i.substring(18):i.startsWith("mcp.github.github.")?"mcp.io.github.git."+i.substring(18):i}function ht(i,e={}){let t=e[i]??e[i.toLowerCase()];if(t&&t.includes(":"))return t.split(":")[0].trim();if(i.startsWith("mcp_io_github_git_")||i.startsWith("mcp.io.github.git."))return"GitHub MCP (Local)";if(i.startsWith("mcp_github_github_")||i.startsWith("mcp.github.github."))return"GitHub MCP (Remote)";if(i.startsWith("mcp__")){let o=i.slice(5),r=o.indexOf("__");return(r>=0?o.slice(0,r):o)||"unknown"}return i.replace(/^mcp[._]/,"").split(/[._]/)[0]||"unknown"}var Rt=O(require("fs")),Bn=O(require("path")),Aa=O(require("os"));function td(i){return!i||typeof i!="string"?null:i.startsWith("toolu_")?"claude":i.startsWith("call_")?"gpt":null}function Ma(i){let e=i.split(/\r?\n/),t={tokens:0,thinkingTokens:0,actualTokens:0,interactions:0,modelUsage:{},mode:"ask",modelHint:"unknown",firstInteraction:null,lastInteraction:null,source:null,conversationId:null,toolCalls:[],toolCounts:{}},s=0,n=0,o=null,r=null,l=null,u=null,m=!1,p=new Map,h=[],f=new Set;for(let y of e)if(y)try{let _=JSON.parse(y);if(!_||typeof _!="object")continue;h.push(_),_.type==="user.message_rendered"&&typeof _.data?.turnId=="string"&&f.add(_.data.turnId)}catch{}for(let y of h)switch(y.type){case"partition.created":{y.data?.conversationId&&(t.conversationId=String(y.data.conversationId)),y.data?.source&&(t.source=String(y.data.source));break}case"user.message":{t.interactions++,typeof y.timestamp=="string"&&o===null&&(o=y.timestamp);let _=y.data?.turnId;typeof y.data?.content=="string"&&(typeof _!="string"||!f.has(_))&&(s+=J(y.data.content));break}case"user.message_rendered":{let _=y.data?.renderedMessage;typeof _=="string"&&(s+=J(_));break}case"assistant.turn_start":{typeof y.data?.model=="string"&&!l&&(l=y.data.model);break}case"assistant.message":{typeof y.data?.text=="string"&&y.data.text&&(n+=J(y.data.text));let _=y.data?.thinking?.text;typeof _=="string"&&_&&(t.thinkingTokens+=J(_)),typeof y.timestamp=="string"&&(r=y.timestamp);break}case"tool.execution_start":{if(m=!0,!u){let C=td(y.data?.toolCallId);C&&(u=C)}let _=typeof y.data?.toolName=="string"?y.data.toolName:"unknown",v={toolName:_};if(y.data?.arguments!==void 0)try{v.arguments=JSON.stringify(y.data.arguments)}catch{}t.toolCalls.push(v),t.toolCounts[_]=(t.toolCounts[_]||0)+1;let k=y.data?.toolCallId;typeof k=="string"&&p.set(k,v);break}case"tool.execution_complete":{let _=y.data?.result?.result,v="";if(Array.isArray(_))for(let C of _)C&&typeof C.value=="string"&&(n+=J(C.value),v+=(v?`
47
- `:"")+C.value);let k=y.data?.toolCallId;if(typeof k=="string"){let C=p.get(k);C&&(typeof y.data?.success=="boolean"&&(C.success=y.data.success),v&&(C.result=v))}break}case"assistant.turn_end":{typeof y.timestamp=="string"&&(r=y.timestamp);break}}return t.mode=m?"agent":"ask",t.modelHint=l||u||"unknown",t.tokens=s+n,t.firstInteraction=o,t.lastInteraction=r,t.tokens>0&&t.modelHint!=="unknown"&&(t.modelUsage[t.modelHint]={inputTokens:s,outputTokens:n}),t}function xa(i){let e=i.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 gi(){return Bn.join(Aa.homedir(),".copilot","jb")}function Da(i){let e=i.replace(/\\/g,"/");return e.includes("/.copilot/jb/")&&/\/partition-\d+\.jsonl$/.test(e)}async function sd(i){try{return await Rt.promises.access(i),!0}catch{return!1}}var ks=class{id="jetbrains";displayName="JetBrains IDE";handles(e){return!1}getBackingPath(e){return e}async stat(e){return Rt.promises.stat(e)}async parsePartition(e){try{let t=await Rt.promises.readFile(e,"utf8");return Ma(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 gi()}getCandidatePaths(){return[{path:gi(),source:"JetBrains IDE"}]}async discover(e){let t=this.getCandidatePaths(),s=[],n=gi();try{if(!await sd(n))return{sessionFiles:s,candidatePaths:t};let o;try{o=await Rt.promises.readdir(n,{withFileTypes:!0})}catch(u){return e(`Could not read JetBrains session path in ${n}: ${u}`),{sessionFiles:s,candidatePaths:t}}let r=o.filter(u=>u.isDirectory()),l=(await Promise.all(r.map(async u=>{let m=Bn.join(n,u.name),p;try{p=await Rt.promises.readdir(m,{withFileTypes:!0})}catch{return[]}let h=[];for(let f of p){if(!f.isFile()||!/^partition-\d+\.jsonl$/.test(f.name))continue;let y=Bn.join(m,f.name);try{(await Rt.promises.stat(y)).size>0&&h.push(y)}catch{}}return h}))).flat();l.length>0&&(e(`\u{1F4C4} Found ${l.length} session file(s) in JetBrains IDE Copilot`),s.push(...l))}catch(o){e(`Could not check JetBrains session path ${n}: ${o}`)}return{sessionFiles:s,candidatePaths:t}}};function Fa(i,e){i==="agent"?e.agent++:i==="edit"?e.edit++:i==="plan"?e.plan++:i==="customAgent"?e.customAgent++:e.ask++}function fi(i,e,t){if(pt(i)){e.mcpTools.total++;let s=ht(i,t);e.mcpTools.byServer[s]=(e.mcpTools.byServer[s]||0)+1;let n=Ss(i);e.mcpTools.byTool[n]=(e.mcpTools.byTool[n]||0)+1}else e.toolCalls.total++,e.toolCalls.byTool[i]=(e.toolCalls.byTool[i]||0)+1}function Ea(i,e,t,s,n,o){let r=0,l=0;for(let u of i){if(!u)continue;let m=u;if(m.timestamp!==void 0&&s.push(m.timestamp),m.result?.timings&&n.push(m.result.timings),m.timeSpentWaiting!==void 0&&o.push(m.timeSpentWaiting),m.agent?.id){let p=m.agent.id;p.includes("edit")?e.editsAgent++:p.includes("default")?e.defaultAgent++:p.includes("workspace")?e.workspaceAgent++:e.other++}if(m.response&&Array.isArray(m.response))for(let p of m.response){if(!p)continue;let h=p;if(h.kind==="textEditGroup"&&h.uri){let f=h.uri.path||JSON.stringify(h.uri);t.add(f)}h.kind==="codeblockUri"&&(l++,h.isEdit===!0&&r++)}}return{totalApplies:r,totalCodeBlocks:l}}function nd(i,e,t,s){let n=e.inputState?.mode?qn(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 o=e.requests??[];for(let r of o)if(!(!r||!r.requestId)){if(Fa(n,s.modeUsage),r.agent?.id){let l=r.agent.id;s.toolCalls.total++,s.toolCalls.byTool[l]=(s.toolCalls.byTool[l]||0)+1}if(bi(r,s.contextReferences),r.response&&Array.isArray(r.response))for(let l of r.response){if(!l)continue;let u=l;if(u.kind==="toolInvocationSerialized"||u.kind==="prepareToolInvocation"){let m=u.toolId||u.toolName||u.invocationMessage?.toolName||u.toolSpecificData?.kind||"unknown";fi(m,s,i.toolNameMap)}}}{let r=(e.selectedModel?.identifier||e.selectedModel?.metadata?.id||e.inputState?.selectedModel?.metadata?.id||"gpt-4o").replace(/^copilot\//,""),l=[];for(let p of o){if(!p||!p.requestId)continue;let h=r;p.modelId?h=p.modelId.replace(/^copilot\//,""):p.result?.metadata?.modelId?h=p.result.metadata.modelId.replace(/^copilot\//,""):p.result?.details&&(h=mt(p,i.modelPricing)),l.push(h)}let u=[...new Set(l)];s.modelSwitching.uniqueModels=u,s.modelSwitching.modelCount=u.length,s.modelSwitching.totalRequests=l.length;let m=0;for(let p=1;p<l.length;p++)l[p]!==l[p-1]&&m++;s.modelSwitching.switchCount=m,_e(i.modelPricing,u,l,s)}{let{effortByRequestId:r,defaultEffort:l,switchCount:u}=Ta(t);if(l!==null||r.size>0){let m={};for(let[,p]of r)m[p]=(m[p]||0)+1;r.size===0&&l!==null&&(m[l]=o.length),s.thinkingEffort={byEffort:m,switchCount:u,defaultEffort:l}}}_i(s)}function od(i,e,t){if(e.requests&&Array.isArray(e.requests))for(let s of e.requests){let n=s,o="ask";if(n.agent?.id){let r=n.agent.id.toLowerCase();r.includes("edit")?o="edit":r.includes("agent")&&(o="agent")}else if(e.mode?.id){let r=e.mode.id.toLowerCase();r.includes("agent")?o="agent":r.includes("edit")&&(o="edit")}if(o==="agent"?t.modeUsage.agent++:o==="edit"?t.modeUsage.edit++:t.modeUsage.ask++,bi(n,t.contextReferences),n.response&&Array.isArray(n.response))for(let r of n.response){if(!r)continue;let l=r;if(l.kind==="toolInvocationSerialized"||l.kind==="prepareToolInvocation"){let u=l.toolId||l.toolName||l.invocationMessage?.toolName||"unknown";fi(u,t,i.toolNameMap)}if(l.kind==="mcpServersStarting"&&l.didStartServerIds)for(let u of l.didStartServerIds)t.mcpTools.total++,t.mcpTools.byServer[u]=(t.mcpTools.byServer[u]||0)+1;l.kind==="inlineReference"&&l.inlineReference&&yi([l],t.contextReferences)}}}function zn(i,e){i.toolCalls.total+=e.toolCalls.total;for(let[t,s]of Object.entries(e.toolCalls.byTool))i.toolCalls.byTool[t]=(i.toolCalls.byTool[t]||0)+s;i.modeUsage.ask+=e.modeUsage.ask,i.modeUsage.edit+=e.modeUsage.edit,i.modeUsage.agent+=e.modeUsage.agent,i.modeUsage.plan+=e.modeUsage.plan,i.modeUsage.customAgent+=e.modeUsage.customAgent,i.modeUsage.cli+=e.modeUsage.cli,i.contextReferences.file+=e.contextReferences.file,i.contextReferences.selection+=e.contextReferences.selection,i.contextReferences.implicitSelection+=e.contextReferences.implicitSelection||0,i.contextReferences.symbol+=e.contextReferences.symbol,i.contextReferences.codebase+=e.contextReferences.codebase,i.contextReferences.workspace+=e.contextReferences.workspace,i.contextReferences.terminal+=e.contextReferences.terminal,i.contextReferences.vscode+=e.contextReferences.vscode,i.contextReferences.terminalLastCommand+=e.contextReferences.terminalLastCommand||0,i.contextReferences.terminalSelection+=e.contextReferences.terminalSelection||0,i.contextReferences.clipboard+=e.contextReferences.clipboard||0,i.contextReferences.changes+=e.contextReferences.changes||0,i.contextReferences.outputPanel+=e.contextReferences.outputPanel||0,i.contextReferences.problemsPanel+=e.contextReferences.problemsPanel||0,i.contextReferences.pullRequest+=e.contextReferences.pullRequest||0,i.contextReferences.copilotInstructions+=e.contextReferences.copilotInstructions||0,i.contextReferences.agentsMd+=e.contextReferences.agentsMd||0;for(let[t,s]of Object.entries(e.contextReferences.byKind||{}))i.contextReferences.byKind[t]=(i.contextReferences.byKind[t]||0)+s;for(let[t,s]of Object.entries(e.contextReferences.byPath||{}))i.contextReferences.byPath[t]=(i.contextReferences.byPath[t]||0)+s;i.mcpTools.total+=e.mcpTools.total;for(let[t,s]of Object.entries(e.mcpTools.byServer))i.mcpTools.byServer[t]=(i.mcpTools.byServer[t]||0)+s;for(let[t,s]of Object.entries(e.mcpTools.byTool))i.mcpTools.byTool[t]=(i.mcpTools.byTool[t]||0)+s;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){i.modelSwitching.totalSessions++,i.modelSwitching.modelsPerSession.push(e.modelSwitching.modelCount);for(let t of e.modelSwitching.tiers.standard)i.modelSwitching.standardModels.includes(t)||i.modelSwitching.standardModels.push(t);for(let t of e.modelSwitching.tiers.premium)i.modelSwitching.premiumModels.includes(t)||i.modelSwitching.premiumModels.push(t);for(let t of e.modelSwitching.tiers.unknown)i.modelSwitching.unknownModels.includes(t)||i.modelSwitching.unknownModels.push(t);if(e.modelSwitching.hasMixedTiers&&i.modelSwitching.mixedTierSessions++,i.modelSwitching.standardRequests+=e.modelSwitching.standardRequests||0,i.modelSwitching.premiumRequests+=e.modelSwitching.premiumRequests||0,i.modelSwitching.unknownRequests+=e.modelSwitching.unknownRequests||0,i.modelSwitching.totalRequests+=e.modelSwitching.totalRequests||0,i.modelSwitching.modelsPerSession.length>0){let t=i.modelSwitching.modelsPerSession;i.modelSwitching.averageModelsPerSession=t.reduce((s,n)=>s+n,0)/t.length,i.modelSwitching.maxModelsPerSession=Math.max(...t),i.modelSwitching.minModelsPerSession=Math.min(...t),i.modelSwitching.switchingFrequency=t.filter(s=>s>1).length/t.length*100}}if(e.editScope){i.editScope.singleFileEdits+=e.editScope.singleFileEdits,i.editScope.multiFileEdits+=e.editScope.multiFileEdits,i.editScope.totalEditedFiles+=e.editScope.totalEditedFiles;let t=i.editScope.singleFileEdits+i.editScope.multiFileEdits;i.editScope.avgFilesPerSession=t>0?i.editScope.totalEditedFiles/t:0}if(e.applyUsage&&(i.applyUsage.totalApplies+=e.applyUsage.totalApplies,i.applyUsage.totalCodeBlocks+=e.applyUsage.totalCodeBlocks,i.applyUsage.applyRate=i.applyUsage.totalCodeBlocks>0?i.applyUsage.totalApplies/i.applyUsage.totalCodeBlocks*100:0),e.sessionDuration){i.sessionDuration.totalDurationMs+=e.sessionDuration.totalDurationMs;let t=i.sessions;if(t>0){i.sessionDuration.avgDurationMs=i.sessionDuration.totalDurationMs/t;let s=i.sessionDuration.avgFirstProgressMs*(t-1);i.sessionDuration.avgFirstProgressMs=(s+e.sessionDuration.avgFirstProgressMs)/t;let n=i.sessionDuration.avgTotalElapsedMs*(t-1);i.sessionDuration.avgTotalElapsedMs=(n+e.sessionDuration.avgTotalElapsedMs)/t;let o=i.sessionDuration.avgWaitTimeMs*(t-1);i.sessionDuration.avgWaitTimeMs=(o+e.sessionDuration.avgWaitTimeMs)/t}}if(e.conversationPatterns){i.conversationPatterns.multiTurnSessions+=e.conversationPatterns.multiTurnSessions,i.conversationPatterns.singleTurnSessions+=e.conversationPatterns.singleTurnSessions,i.conversationPatterns.maxTurnsInSession=Math.max(i.conversationPatterns.maxTurnsInSession,e.conversationPatterns.maxTurnsInSession);let t=i.conversationPatterns.multiTurnSessions+i.conversationPatterns.singleTurnSessions;if(t>0){let n=i.conversationPatterns.avgTurnsPerSession*(t-1)+e.conversationPatterns.avgTurnsPerSession;i.conversationPatterns.avgTurnsPerSession=n/t}}if(e.agentTypes&&(i.agentTypes.editsAgent+=e.agentTypes.editsAgent,i.agentTypes.defaultAgent+=e.agentTypes.defaultAgent,i.agentTypes.workspaceAgent+=e.agentTypes.workspaceAgent,i.agentTypes.other+=e.agentTypes.other),e.thinkingEffort){i.thinkingEffortUsage||(i.thinkingEffortUsage={byEffort:{},sessionCount:0,switchCount:0}),i.thinkingEffortUsage.sessionCount++,i.thinkingEffortUsage.switchCount+=e.thinkingEffort.switchCount;for(let[t,s]of Object.entries(e.thinkingEffort.byEffort))i.thinkingEffortUsage.byEffort[t]=(i.thinkingEffortUsage.byEffort[t]||0)+s}}function Ia(i,e){let t=i.match(/#file/gi);t&&(e.file+=t.length);let s=i.match(/#selection/gi);s&&(e.selection+=s.length);let n=i.match(/#symbol/gi),o=i.match(/#sym(?![:\w])/gi);n&&(e.symbol+=n.length),o&&(e.symbol+=o.length);let r=i.match(/#codebase/gi);r&&(e.codebase+=r.length);let l=i.match(/#terminalLastCommand/gi);l&&(e.terminalLastCommand+=l.length);let u=i.match(/#terminalSelection/gi);u&&(e.terminalSelection+=u.length);let m=i.match(/#clipboard/gi);m&&(e.clipboard+=m.length);let p=i.match(/#changes/gi);p&&(e.changes+=p.length);let h=i.match(/#outputPanel/gi);h&&(e.outputPanel+=h.length);let f=i.match(/#problemsPanel\b/gi);f&&(e.problemsPanel+=f.length);let y=i.match(/#pr\b/gi);y&&(e.pullRequest+=y.length);let _=i.match(/#pullRequest\b/gi);_&&(e.pullRequest+=_.length);let v=i.match(/@workspace/gi);v&&(e.workspace+=v.length);let k=i.match(/@terminal/gi);k&&(e.terminal+=k.length);let C=i.match(/@vscode/gi);C&&(e.vscode+=C.length)}function yi(i,e){if(Array.isArray(i))for(let t of i){if(!t||typeof t!="object")continue;let s=t,n=s.kind;typeof n=="string"&&(e.byKind[n]=(e.byKind[n]||0)+1);let o=null;if(n==="reference"&&s.reference?o=s.reference:n==="inlineReference"&&s.inlineReference&&(o=s.inlineReference),n==="pullRequest"){e.pullRequest++;continue}if(o){let r=o.fsPath||o.path;if(typeof r=="string"){let u=r.replace(/\\/g,"/").toLowerCase();u.endsWith("/.github/copilot-instructions.md")||u.includes(".github/copilot-instructions.md")?e.copilotInstructions++:u.endsWith("/agents.md")||u.match(/\/agents\.md$/i)?e.agentsMd++:u.endsWith(".instructions.md")||u.includes(".instructions.md")?e.copilotInstructions++:e.file++;let m=r.length>100?"..."+r.substring(r.length-97):r;e.byPath[m]=(e.byPath[m]||0)+1}let l=o.name;if(typeof l=="string"&&n==="reference"){e.symbol++;let u=`#sym:${l}`;e.byPath[u]=(e.byPath[u]||0)+1}}}}function Na(i,e){if(!i||typeof i!="object")return;let t=i;if(Array.isArray(t.variables))for(let s of t.variables){if(!s||typeof s!="object")continue;let n=s.kind;if(typeof n=="string"&&(e.byKind[n]=(e.byKind[n]||0)+1),n==="generic"&&typeof s.name=="string"&&s.name.startsWith("sym:")){e.symbol++;let o=`#${s.name}`;e.byPath[o]=(e.byPath[o]||0)+1}if(n==="promptFile"&&s.value){let o=s.value,r=o.fsPath||o.path||o.external;if(typeof r=="string"){let l=r.replace(/\\/g,"/").toLowerCase();l.endsWith("/.github/copilot-instructions.md")||l.includes(".github/copilot-instructions.md")||l.endsWith("/agents.md")||l.match(/\/agents\.md$/i)}}}}function _i(i){let e=i.modeUsage.ask+i.modeUsage.edit+i.modeUsage.agent+i.modeUsage.cli;i.conversationPatterns={multiTurnSessions:e>1?1:0,singleTurnSessions:e===1?1:0,avgTurnsPerSession:e,maxTurnsInSession:e}}function bi(i,e){if(!i||typeof i!="object")return;let t=i,s=t.message;if(s&&typeof s=="object"){let r=s;typeof r.text=="string"&&Ia(r.text,e);let l=r.parts;if(Array.isArray(l)){for(let u of l)if(u&&typeof u=="object"){let m=u;typeof m.text=="string"&&Ia(m.text,e)}}}let n=t.contentReferences;Array.isArray(n)&&yi(n,e);let o=t.variableData;o!==void 0&&Na(o,e)}function Wn(i){try{let t=Ot.readFileSync(i,"utf8").trim().split(`
48
- `),s=[];for(let n of t)if(n.trim())try{s.push(JSON.parse(n))}catch{}return s}catch{return[]}}function _e(i,e,t,s){let n=[],o=[],r=[];for(let p of e){let h=et(p,i);h==="standard"?n.push(p):h==="premium"?o.push(p):r.push(p)}s.modelSwitching.tiers={standard:n,premium:o,unknown:r},s.modelSwitching.hasMixedTiers=n.length>0&&o.length>0;let l=0,u=0,m=0;for(let p of t){let h=et(p,i);h==="standard"?l++:h==="premium"?u++:m++}s.modelSwitching.standardRequests=l,s.modelSwitching.premiumRequests=u,s.modelSwitching.unknownRequests=m}async function Ra(i,e,t,s,n){try{let o=await rd(i,e,s,n),r=o?Object.keys(o).length:0;if(!o||r===0)return;let l=Object.keys(o);t.modelSwitching.uniqueModels=l,t.modelSwitching.modelCount=l.length;let u=[],m=[],p=[];for(let y of l){let _=et(y,i.modelPricing);_==="standard"?u.push(y):_==="premium"?m.push(y):p.push(y)}t.modelSwitching.tiers={standard:u,premium:m,unknown:p},t.modelSwitching.hasMixedTiers=u.length>0&&m.length>0;let h=s??await Ot.promises.readFile(e,"utf8");if(Vt(h))return;if(e.endsWith(".jsonl")||Ze(h)){let y=h.trim().split(`
49
- `),_={standard:0,premium:0,unknown:0},v="unknown";for(let k of y)if(k.trim())try{let C=JSON.parse(k);if(C.kind===0){let S=C.v?.selectedModel?.identifier||C.v?.selectedModel?.metadata?.id||C.v?.inputState?.selectedModel?.metadata?.id;S&&(v=S.replace(/^copilot\//,""))}if(C.kind===2&&C.k?.[0]==="selectedModel"){let S=C.v?.identifier||C.v?.metadata?.id;S&&(v=S.replace(/^copilot\//,""))}if(C.type==="session.start"&&typeof C.data?.selectedModel=="string"&&(v=C.data.selectedModel),C.type==="session.model_change"&&typeof C.data?.newModel=="string"&&(v=C.data.newModel),C.type==="user.message"){let S=C.model||v,w=et(S,i.modelPricing);w==="standard"?_.standard++:w==="premium"?_.premium++:_.unknown++}if(C.kind===2&&C.k?.[0]==="requests"&&Array.isArray(C.v))for(let S of C.v){let w=v;S.modelId?w=S.modelId.replace(/^copilot\//,""):S.result?.metadata?.modelId?w=S.result.metadata.modelId.replace(/^copilot\//,""):S.result?.details&&(w=mt(S,i.modelPricing));let P=et(w,i.modelPricing);P==="standard"?_.standard++:P==="premium"?_.premium++:_.unknown++}}catch{}t.modelSwitching.standardRequests=_.standard,t.modelSwitching.premiumRequests=_.premium,t.modelSwitching.unknownRequests=_.unknown,t.modelSwitching.totalRequests=_.standard+_.premium+_.unknown}else{let y=n!==void 0?n:JSON.parse(h);if(y.requests&&Array.isArray(y.requests)){let _=null,v=0,k={standard:0,premium:0,unknown:0};for(let C of y.requests){let w=mt(C,i.modelPricing);_&&w!==_&&v++,_=w;let P=et(w,i.modelPricing);P==="standard"?k.standard++:P==="premium"?k.premium++:k.unknown++}t.modelSwitching.switchCount=v,t.modelSwitching.standardRequests=k.standard,t.modelSwitching.premiumRequests=k.premium,t.modelSwitching.unknownRequests=k.unknown,t.modelSwitching.totalRequests=k.standard+k.premium+k.unknown}}}catch(o){i.warn(`Error calculating model switching for ${e}: ${o}`)}}async function id(i,e,t,s,n){try{let o=s??await Ot.promises.readFile(e,"utf8");if(Vt(o))return;let r=e.endsWith(".jsonl")||Ze(o),l=new Set,u=0,m=0,p=[],h=[],f=[],y={editsAgent:0,defaultAgent:0,workspaceAgent:0,other:0};if(r){let w=o.trim().split(`
50
- `).filter(x=>x.trim()),P=!1;if(w.length>0)try{let x=JSON.parse(w[0]);x&&typeof x.kind=="number"&&(P=!0)}catch{}if(P){let x={};for(let U of w)try{let j=JSON.parse(U);x=ws(x,j)}catch{}x.creationDate!==void 0&&p.push(x.creationDate),x.lastMessageDate!==void 0&&p.push(x.lastMessageDate);let E=x.requests||[];({totalApplies:u,totalCodeBlocks:m}=Ea(E,y,l,p,h,f))}}else{let w=n!==void 0?n:JSON.parse(o);w.creationDate&&p.push(w.creationDate),w.lastMessageDate&&p.push(w.lastMessageDate);let P=w.requests??[];({totalApplies:u,totalCodeBlocks:m}=Ea(P,y,l,p,h,f))}let _=l.size>0?1:0;t.editScope={singleFileEdits:l.size===1?1:0,multiFileEdits:l.size>1?1:0,totalEditedFiles:l.size,avgFilesPerSession:_>0?l.size/_:0},t.applyUsage={totalApplies:u,totalCodeBlocks:m,applyRate:m>0?u/m*100:0};let v=p.length>=2?Math.max(...p)-Math.min(...p):0,k=h.length>0?h.reduce((w,P)=>w+(P.firstProgress||0),0)/h.length:0,C=h.length>0?h.reduce((w,P)=>w+(P.totalElapsed||0),0)/h.length:0,S=f.length>0?f.reduce((w,P)=>w+P,0)/f.length:0;t.sessionDuration={totalDurationMs:v,avgDurationMs:v,avgFirstProgressMs:k,avgTotalElapsedMs:C,avgWaitTimeMs:S},_i(t),t.agentTypes=y}catch(o){i.warn(`Error tracking enhanced metrics from ${e}: ${o}`)}}function de(){return{toolCalls:{total:0,byTool:{}},modeUsage:{ask:0,edit:0,agent:0,plan:0,customAgent:0,cli:0},contextReferences:ce(),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}}}async function ja(i,e,t,s){let n=de();try{let o=i.ecosystems.find(m=>m.handles(e));if(o&&Jr(o))return o.analyzeUsage(e,{modelPricing:i.modelPricing,toolNameMap:i.toolNameMap});let r=t??await Ot.promises.readFile(e,"utf8");if(e.endsWith(".jsonl")||Ze(r)){let m=r.trim().split(`
51
- `).filter(S=>S.trim()),p=!1;if(m.length>0)try{let S=JSON.parse(m[0]);S&&typeof S.kind=="number"&&(p=!0)}catch{}if(p){let S={};for(let w of m)try{let P=JSON.parse(w);S=ws(S,P)}catch{}return nd(i,S,m,n),n}let h="ask",f="unknown",y=null,_=0,v={},C=Da(e)?xa(r):null;for(let S of m)if(S.trim())try{let w=JSON.parse(S);if(w.type==="session.start"&&w.data&&(typeof w.data.selectedModel=="string"&&(f=w.data.selectedModel),typeof w.data.reasoningEffort=="string"&&(y=w.data.reasoningEffort)),w.type==="session.model_change"&&typeof w.data?.newModel=="string"&&(f=w.data.newModel),w.type==="user.message"){_++;let P=typeof w.data?.reasoningEffort=="string"?w.data.reasoningEffort:y;P&&(v[P]=(v[P]||0)+1)}if(w.kind===0&&w.v?.inputState?.mode&&(h=qn(w.v.inputState.mode),w.v?.inputState?.selections&&Array.isArray(w.v.inputState.selections))){for(let P of w.v.inputState.selections)if(P.startLineNumber!==P.endLineNumber||P.startColumn!==P.endColumn){n.contextReferences.implicitSelection++;break}}if(w.kind===1&&w.k?.includes("mode")&&w.v&&(h=qn(w.v)),w.kind===1&&w.k?.includes("selections")&&Array.isArray(w.v)){for(let P of w.v)if(P&&(P.startLineNumber!==P.endLineNumber||P.startColumn!==P.endColumn)){n.contextReferences.implicitSelection++;break}}if(w.kind===1&&w.k?.includes("contentReferences")&&Array.isArray(w.v)&&yi(w.v,n.contextReferences),w.kind===1&&w.k?.includes("variableData")&&w.v&&Na(w.v,n.contextReferences),w.kind===2&&w.k?.[0]==="requests"&&Array.isArray(w.v))for(let P of w.v){if(P.requestId&&Fa(h,n.modeUsage),P.agent?.id){let x=P.agent.id;n.toolCalls.total++,n.toolCalls.byTool[x]=(n.toolCalls.byTool[x]||0)+1}if(bi(P,n.contextReferences),P.response&&Array.isArray(P.response))for(let x of P.response){if(!x)continue;let E=x;if(E.kind==="toolInvocationSerialized"||E.kind==="prepareToolInvocation"){n.toolCalls.total++;let U=E.toolId||E.toolName||E.invocationMessage?.toolName||E.toolSpecificData?.kind||"unknown";n.toolCalls.byTool[U]=(n.toolCalls.byTool[U]||0)+1}}}if(w.kind===2&&w.k?.includes("response")&&Array.isArray(w.v)){for(let P of w.v)if(P&&P.kind==="toolInvocationSerialized"){n.toolCalls.total++;let x=P.toolId||P.toolName||P.invocationMessage?.toolName||P.toolSpecificData?.kind||"unknown";n.toolCalls.byTool[x]=(n.toolCalls.byTool[x]||0)+1}}if(w.type==="user.message"&&(C==="agent"?n.modeUsage.agent++:C==="ask"?n.modeUsage.ask++:n.modeUsage.cli++),w.type==="tool.call"||w.type==="tool.result"||w.type==="tool.execution_start"){let P=w.data?.toolName||w.toolName||"unknown";fi(P,n,i.toolNameMap)}if(w.type==="mcp.tool.call"||w.data?.mcpServer){n.mcpTools.total++;let P=w.data?.mcpServer||"unknown",x=w.data?.toolName||w.toolName||"unknown";n.mcpTools.byServer[P]=(n.mcpTools.byServer[P]||0)+1;let E=Ss(x);n.mcpTools.byTool[E]=(n.mcpTools.byTool[E]||0)+1}}catch{}if(y!==null||Object.keys(v).length>0){let S=Object.keys(v).length>0?v:y!==null?{[y]:_}:{};n.thinkingEffort={byEffort:S,switchCount:0,defaultEffort:y}}return await Ra(i,e,n,r),_i(n),n}let u=s!==void 0?s:JSON.parse(r);od(i,u,n),await Ra(i,e,n,r,s),await id(i,e,n,r,s)}catch(o){i.warn(`Error analyzing session usage from ${e}: ${o}`)}return n}function Oa(i,e,t){if(i.result?.usage){let s=i.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 i.result?.promptTokens=="number"&&typeof i.result?.outputTokens=="number"?(t[e].inputTokens+=i.result.promptTokens,t[e].outputTokens+=i.result.outputTokens,!0):i.result?.metadata&&typeof i.result.metadata.promptTokens=="number"&&typeof i.result.metadata.outputTokens=="number"?(t[e].inputTokens+=i.result.metadata.promptTokens,t[e].outputTokens+=i.result.metadata.outputTokens,!0):!1}function Ua(i,e,t,s){for(let n of i){let o=Ht(n);if(o){let r=o.modelName||e;t[r]||(t[r]={inputTokens:0,outputTokens:0}),o.prompt&&(t[r].inputTokens+=J(o.prompt,r,s)),o.result&&(t[r].outputTokens+=J(o.result,r,s))}}}async function rd(i,e,t,s){let n={};if(i.ecosystems){let r=i.ecosystems.find(l=>l.handles(e));if(r)return r.getModelUsage(e)}let o=e.split(/[/\\]/).pop()||e;try{let r=t??await Ot.promises.readFile(e,"utf8");if(Vt(r))return n;if(e.endsWith(".jsonl")||Ze(r)){let m=r.trim().split(`
52
- `),p="unknown",h={},f=!1,y=null,_=null,v=0;for(let C of m)if(C.trim())try{let S=JSON.parse(C);if(typeof S.kind=="number"&&(f=!0,h=ws(h,S)),S.type==="session.start"&&typeof S.data?.selectedModel=="string"&&(p=S.data.selectedModel),S.type==="session.model_change"&&typeof S.data?.newModel=="string"&&(p=S.data.newModel),S.kind===0){let P=S.v?.selectedModel?.identifier||S.v?.selectedModel?.metadata?.id||S.v?.inputState?.selectedModel?.metadata?.id;P&&(p=P.replace(/^copilot\//,""))}if(S.kind===2&&S.k?.[0]==="selectedModel"){let P=S.v?.identifier||S.v?.metadata?.id;P&&(p=P.replace(/^copilot\//,""))}let w=S.data?.model||S.model||p;if(n[w]||(n[w]={inputTokens:0,outputTokens:0}),!f){if(S.type==="session.shutdown"&&S.data?.modelMetrics){y||(y={});for(let[P,x]of Object.entries(S.data.modelMetrics)){let E=x?.usage;if(E){y[P]||(y[P]={inputTokens:0,outputTokens:0}),y[P].inputTokens+=typeof E.inputTokens=="number"?E.inputTokens:0,y[P].outputTokens+=typeof E.outputTokens=="number"?E.outputTokens:0;let U=typeof E.cacheReadTokens=="number"?E.cacheReadTokens:0,j=typeof E.cacheWriteTokens=="number"?E.cacheWriteTokens:0;U>0&&(y[P].cachedReadTokens=(y[P].cachedReadTokens??0)+U),j>0&&(y[P].cacheCreationTokens=(y[P].cacheCreationTokens??0)+j)}}}else if(S.type==="user.message"&&S.data?.content)n[w].inputTokens+=J(S.data.content,w,i.tokenEstimators);else if(S.type==="assistant.message"){let P=typeof S.data?.outputTokens=="number"?S.data.outputTokens:0;P>0?(_||(_={}),_[w]=(_[w]??0)+P):S.data?.content&&(n[w].outputTokens+=J(S.data.content,w,i.tokenEstimators))}else if(S.type==="tool.execution_start")v++;else if(S.type==="tool.execution_complete"&&(S.data?.result?.content||S.data?.result?.detailedContent)){let P=S.data.result.content||S.data.result.detailedContent;n[w].inputTokens+=J(String(P),w,i.tokenEstimators)}}}catch{}if(!f&&y)return y;if(!f&&_){let C=Math.max(1,Math.round(v/2)),S=Math.max(1,(C+1)/2),w={};for(let[P,x]of Object.entries(_)){let E=n[P]?.inputTokens??0;w[P]={inputTokens:Math.round(E*S),outputTokens:x}}return w}if(f&&h.requests&&Array.isArray(h.requests))for(let C of h.requests){if(!C)continue;let S=C;if(!S.requestId)continue;let w=p;if(S.modelId?w=S.modelId.replace(/^copilot\//,""):S.result?.metadata?.modelId?w=S.result.metadata.modelId.replace(/^copilot\//,""):S.result?.details&&(w=mt(S,i.modelPricing)),n[w]||(n[w]={inputTokens:0,outputTokens:0}),!Oa(S,w,n)&&(S.message?.text&&(n[w].inputTokens+=J(S.message.text,w,i.tokenEstimators)),S.response&&Array.isArray(S.response)))for(let P of S.response)P?.value&&(n[w].outputTokens+=J(P.value,w,i.tokenEstimators));S.response&&Array.isArray(S.response)&&Ua(S.response,w,n,i.tokenEstimators)}let k=mi(m);for(let[C,S]of k){let w=h.requests?.[C];if(!w||w.result?.usage||typeof w.result?.promptTokens=="number"||w.result?.metadata&&typeof w.result.metadata.promptTokens=="number")continue;let P=p;w.modelId&&(P=w.modelId.replace(/^copilot\//,"")),n[P]||(n[P]={inputTokens:0,outputTokens:0}),n[P].inputTokens+=S.promptTokens,n[P].outputTokens+=S.outputTokens}return n}let u=s!==void 0?s:JSON.parse(r);if(u.requests&&Array.isArray(u.requests))for(let m of u.requests){let p=m,h=mt(p,i.modelPricing);if(n[h]||(n[h]={inputTokens:0,outputTokens:0}),!Oa(p,h,n)){if(p.message&&p.message.parts)for(let f of p.message.parts)f.text&&(n[h].inputTokens+=J(f.text,h,i.tokenEstimators));if(p.response&&Array.isArray(p.response))for(let f of p.response)f?.value&&(n[h].outputTokens+=J(f.value,h,i.tokenEstimators))}p.response&&Array.isArray(p.response)&&Ua(p.response,h,n,i.tokenEstimators)}}catch(r){i.warn(`Error getting model usage from ${e}: ${r}`)}return n}var vs=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)?st.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,n,o=this.openCode.getOpenCodeSessionId(e),r=null;if(this.openCode.isOpenCodeDbSession(e)&&o)r=await this.openCode.readOpenCodeDbSession(o);else try{let u=await Yt.promises.readFile(e,"utf8");r=JSON.parse(u)}catch{}r&&(s=r.title||r.slug,n=r.directory||void 0,r.time?.created&&t.push(r.time.created),r.time?.updated&&t.push(r.time.updated));let l=await this.openCode.getOpenCodeMessagesForSession(e);for(let u of l)u.time?.created&&t.push(u.time.created),u.time?.completed&&t.push(u.time.completed);return t.sort((u,m)=>u-m),{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:n}}getEditorRoot(e){return this.openCode.getOpenCodeDataDir()}async discover(e){let t=this.getCandidatePaths(),s=[],n=this.openCode.getOpenCodeDataDir(),o=st.join(n,"storage","session"),r=st.join(n,"opencode.db");e(`\u{1F4C1} Checking OpenCode JSON path: ${o}`),e(`\u{1F4C1} Checking OpenCode DB path: ${r}`);try{await Yt.promises.access(o);let l=async m=>{try{let p=await Yt.promises.readdir(m,{withFileTypes:!0});for(let h of p)if(h.isDirectory())await l(st.join(m,h.name));else if(h.name.startsWith("ses_")&&h.name.endsWith(".json")){let f=st.join(m,h.name);try{(await Yt.promises.stat(f)).size>0&&s.push(f)}catch{}}}catch{}};await l(o);let u=s.length;u>0&&e(`\u{1F4C4} Found ${u} session files in OpenCode storage`)}catch{}try{await Yt.promises.access(r);let l=new Set(s.filter(p=>this.openCode.isOpenCodeSessionFile(p)).map(p=>this.openCode.getOpenCodeSessionId(p)).filter(Boolean)),u=await this.openCode.discoverOpenCodeDbSessions(),m=0;for(let p of u)l.has(p)||(s.push(st.join(n,`opencode.db#${p}`)),m++);m>0&&e(`\u{1F4C4} Found ${m} additional session(s) in OpenCode database`)}catch{}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){let e=this.openCode.getOpenCodeDataDir();return[{path:st.join(e,"storage","session"),source:"OpenCode (JSON)"},{path:st.join(e,"opencode.db"),source:"OpenCode (DB)"}]}async buildTurns(e){let t=[],s=await this.openCode.getOpenCodeMessagesForSession(e);if(s.length>0){let n=0,o=0;for(let r=0;r<s.length;r++){let l=s[r];if(l.role!=="user")continue;n++;let u=s.filter((w,P)=>P>r&&w.role==="assistant"&&w.parentID===l.id),p=(await this.openCode.getOpenCodePartsForMessage(l.id)).filter(w=>w.type==="text").map(w=>w.text||"").join(`
53
- `),h="",f=[],y=null,_=0,v=o;for(let w of u){y||(y=w.modelID||null),_+=w.tokens?.reasoning||0,typeof w.tokens?.total=="number"&&(v=Math.max(v,w.tokens.total));let P=await this.openCode.getOpenCodePartsForMessage(w.id);for(let x of P)x.type==="text"&&x.text?h+=x.text:x.type==="tool"&&x.tool&&f.push({toolName:x.tool,arguments:x.state?.input?JSON.stringify(x.state.input):void 0,result:x.state?.output||void 0})}let k=v-o,C=u.reduce((w,P)=>w+(P.tokens?.output||0)+(P.tokens?.reasoning||0),0),S=Math.max(0,k-C);t.push({turnNumber:n,timestamp:l.time?.created?new Date(l.time.created).toISOString():null,mode:"cli",userMessage:p,assistantResponse:h,model:y,toolCalls:f,contextReferences:ce(),mcpTools:[],inputTokensEstimate:S,outputTokensEstimate:C-_,thinkingTokensEstimate:_}),o=v}}return{turns:t}}async getSyncData(e){return this.openCode.getOpenCodeSessionData(e)}async analyzeUsage(e,t){let s=de(),n=await this.openCode.getOpenCodeMessagesForSession(e);if(n.length>0){let o=[];for(let u of n)if(u.role==="user"&&s.modeUsage.cli++,u.role==="assistant"){let m=u.modelID||"unknown";o.push(m);let p=await this.openCode.getOpenCodePartsForMessage(u.id);for(let h of p)if(h.type==="tool"&&h.tool){s.toolCalls.total++;let f=h.tool;s.toolCalls.byTool[f]=(s.toolCalls.byTool[f]||0)+1}}let r=[...new Set(o)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=o.length;let l=0;for(let u=1;u<o.length;u++)o[u]!==o[u-1]&&l++;s.modelSwitching.switchCount=l}return s}};var Ga=O(require("fs")),nt=O(require("path"));var Ps=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),n;s&&(n=s.title||void 0,s.created_at&&t.push(s.created_at*1e3),s.updated_at&&t.push(s.updated_at*1e3));let o=await this.crush.getCrushMessages(e);for(let r of o)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:n,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 nt.dirname(this.crush.getCrushDbPath(e))}async discover(e){let t=this.getCandidatePaths(),s=[];try{let n=this.crush.readCrushProjects();e(`\u{1F4C1} Crush: found ${n.length} project(s) in projects.json`);let o=await Promise.all(n.map(async l=>{let u=nt.join(l.data_dir,"crush.db");e(`\u{1F4C1} Checking Crush DB path: ${u}`);try{return await Ga.promises.access(u),(await this.crush.discoverSessionsInDb(u)).map(p=>nt.join(l.data_dir,`crush.db#${p}`))}catch(m){e(`Could not read Crush database for ${l.path}: ${m}`)}return[]})),r=o.reduce((l,u)=>l+u.length,0);r>0&&e(`\u{1F4C4} Found ${r} session(s) in Crush database(s)`),s.push(...o.flat())}catch(n){e(`Could not read Crush projects: ${n}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){let e=this.crush.getCrushConfigDir(),t=[{path:nt.join(e,"projects.json"),source:"Crush (projects.json)"}];try{let s=this.crush.readCrushProjects();for(let n of s)t.push({path:nt.join(n.data_dir,"crush.db"),source:`Crush (${nt.basename(n.path)})`})}catch{}return t}async buildTurns(e){let t=[],s=await this.crush.getCrushMessages(e),n=await this.crush.readCrushSession(e),r=s.filter(u=>u.role==="user").length,l=0;for(let u=0;u<s.length;u++){let m=s[u];if(m.role!=="user")continue;l++;let p=[];for(let S=u+1;S<s.length&&s[S].role!=="user";S++)s[S].role==="assistant"&&p.push(s[S]);let f=(Array.isArray(m.parts)?m.parts:[]).filter(S=>S?.type==="text"&&S?.text).map(S=>S.text).join(`
54
- `),y="",_=[],v=null;for(let S of p){v||(v=S.model||null);let w=Array.isArray(S.parts)?S.parts:[];for(let P of w)P?.type==="text"&&P?.text?y+=P.text:P?.type==="tool_call"&&P?.data?.name&&_.push({toolName:P.data.name,arguments:P.data.arguments?JSON.stringify(P.data.arguments):void 0})}let k=n?.prompt_tokens&&r>0?Math.round(n.prompt_tokens/r):0,C=n?.completion_tokens&&r>0?Math.round(n.completion_tokens/r):0;t.push({turnNumber:l,timestamp:m.created_at?new Date(m.created_at*1e3).toISOString():null,mode:"cli",userMessage:f,assistantResponse:y,model:v,toolCalls:_,contextReferences:ce(),mcpTools:[],inputTokensEstimate:k,outputTokensEstimate:C,thinkingTokensEstimate:0})}return{turns:t}}async getSyncData(e){return this.crush.getCrushSessionData(e)}async analyzeUsage(e,t){let s=de(),n=await this.crush.getCrushMessages(e),o=[];for(let u of n)if(u.role==="user"&&s.modeUsage.cli++,u.role==="assistant"){let m=u.model||"unknown";o.push(m);let p=Array.isArray(u.parts)?u.parts:[];for(let h of p)if(h?.type==="tool_call"&&h?.data?.name){s.toolCalls.total++;let f=h.data.name;s.toolCalls.byTool[f]=(s.toolCalls.byTool[f]||0)+1}}let r=[...new Set(o)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=o.length;let l=0;for(let u=1;u<o.length;u++)o[u]!==o[u-1]&&l++;return s.modelSwitching.switchCount=l,_e(t.modelPricing,r,o,s),s}};var Ci=O(require("fs"));var Ts=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 Ci.promises.stat(e)}async getTokens(e){let t=this.continue_.getTokensFromContinueSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return Promise.resolve(this.continue_.countContinueInteractions(e))}async getModelUsage(e){return Promise.resolve(this.continue_.getContinueModelUsage(e))}async getMeta(e){let t=this.continue_.getContinueSessionMeta(e),s=this.continue_.getContinueSessionId(e),n=this.continue_.readSessionsIndex().get(s),o=null,r=null;if(n?.dateCreated){o=new Date(n.dateCreated).toISOString();try{r=(await Ci.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:o,lastInteraction:r,workspacePath:l}}getEditorRoot(e){return this.continue_.getContinueDataDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let n=this.continue_.getContinueSessionFiles();n.length>0&&(e(`\u{1F4C4} Found ${n.length} session file(s) in Continue (~/.continue/sessions)`),s.push(...n))}catch(n){e(`Could not read Continue session files: ${n}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.continue_.getContinueSessionsDir(),source:"Continue"}]}async buildTurns(e){let t=[],s=this.continue_.buildContinueTurns(e),n=ce();for(let o of s)t.push({turnNumber:t.length+1,timestamp:null,mode:"ask",userMessage:o.userText,assistantResponse:o.assistantText,model:o.model,toolCalls:o.toolCalls,contextReferences:n,mcpTools:[],inputTokensEstimate:o.inputTokens,outputTokensEstimate:o.outputTokens,thinkingTokensEstimate:0});return{turns:t}}async analyzeUsage(e,t){let s=de(),n=this.continue_.buildContinueTurns(e),o=this.continue_.getContinueSessionMeta(e),r=[];for(let m of n){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(o?.mode==="agent")for(let m=0;m<n.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 u=0;for(let m=1;m<r.length;m++)r[m]!==r[m-1]&&u++;return s.modelSwitching.switchCount=u,_e(t.modelPricing,l,r,s),s}};var $a=O(require("fs"));var La=O(require("fs"));var ad=new Set(["review","bug","think","compact","pr_comments"]);function wi(i){let e="";if(typeof i=="string")e=i;else if(Array.isArray(i)){for(let o of i)if(o?.type==="text"&&typeof o.text=="string"){e=o.text;break}}let s=e.trimStart().split(`
55
- `)[0].trim().match(/^\/([a-z_]+)(?:\s|$)/i);if(!s)return null;let n=s[1].toLowerCase();return ad.has(n)?n:null}var Ms=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 La.promises.stat(e)}async getTokens(e){let t=this.claudeCode.getTokensFromClaudeCodeSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return Promise.resolve(this.claudeCode.countClaudeCodeInteractions(e))}async getModelUsage(e){return Promise.resolve(this.claudeCode.getClaudeCodeModelUsage(e))}async getMeta(e){let t=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 n=this.claudeCode.getClaudeCodeSessionFiles();n.length>0&&(e(`\u{1F4C4} Found ${n.length} session file(s) in Claude Code (~/.claude/projects)`),s.push(...n))}catch(n){e(`Could not read Claude Code session files: ${n}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.claudeCode.getClaudeCodeProjectsDir(),source:"Claude Code"}]}async analyzeUsage(e,t){let s=de(),n=await Wn(e),o=[];for(let u of n)if(u.type==="user"&&u.message?.role==="user"&&!u.isSidechain){s.modeUsage.cli++;let m=wi(u.message?.content);if(m){let p=`__slash__${m}`;s.toolCalls.byTool[p]=(s.toolCalls.byTool[p]||0)+1}}else if(u.type==="assistant"){let m=It(u.message?.model||"unknown");o.push(m);let p=Array.isArray(u.message?.content)?u.message.content:[];for(let h of p)if(h?.type==="tool_use"){let f=String(h.name||"tool");if(pt(f)){let y=ht(f,t.toolNameMap);s.mcpTools.total++,s.mcpTools.byServer[y]=(s.mcpTools.byServer[y]||0)+1,s.mcpTools.byTool[f]=(s.mcpTools.byTool[f]||0)+1}else s.toolCalls.total++,s.toolCalls.byTool[f]=(s.toolCalls.byTool[f]||0)+1}}let r=[...new Set(o)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=o.length;let l=0;for(let u=1;u<o.length;u++)o[u]!==o[u-1]&&l++;return s.modelSwitching.switchCount=l,_e(t.modelPricing,r,o,s),s}};var xs=class{constructor(e,t,s,n){this.claudeDesktopCowork=e;this.isMcpToolFn=t;this.extractMcpServerNameFn=s;this.estimateTokensFn=n}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 $a.promises.stat(e)}async getTokens(e){let t=this.claudeDesktopCowork.getTokensFromCoworkSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return Promise.resolve(this.claudeDesktopCowork.countCoworkInteractions(e))}async getModelUsage(e){return Promise.resolve(this.claudeDesktopCowork.getCoworkModelUsage(e))}async getMeta(e){let t=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 n=this.claudeDesktopCowork.getCoworkSessionFiles();n.length>0&&(e(`\u{1F4C4} Found ${n.length} session file(s) in Claude Desktop Cowork`),s.push(...n))}catch(n){e(`Could not read Claude Desktop Cowork session files: ${n}`)}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=this.claudeDesktopCowork.readCoworkEvents(e),n=null,o=[],r=()=>{if(!n)return;let u=n.message?.content,m=typeof u=="string"?u:Array.isArray(u)?u.filter(w=>w.type==="text").map(w=>w.text||"").join(`
56
- `):"",p="",h=0,f=0,y=null,_=[],v=[],k=new Set;for(let w of o){let P=w.message;!y&&P?.model&&(y=P.model);let x=w.requestId,E=!x||!k.has(x);x&&k.add(x);let U=P?.usage;U&&E&&(h+=(U.input_tokens||0)+(U.cache_creation_input_tokens||0)+(U.cache_read_input_tokens||0),f+=U.output_tokens||0);let j=Array.isArray(P?.content)?P.content:[];for(let $ of j)if($.type==="text")p+=$.text||"";else if($.type==="tool_use"){let q=$.name||"unknown";this.isMcpToolFn(q)?v.push({server:this.extractMcpServerNameFn(q),tool:q}):_.push({toolName:q,arguments:$.input?JSON.stringify($.input):void 0})}}let C=y||"claude-sonnet-4-6",S=h>0||f>0?{promptTokens:h,completionTokens:f}:void 0;t.push({turnNumber:t.length+1,timestamp:n.timestamp?new Date(n.timestamp).toISOString():null,mode:"agent",userMessage:m,assistantResponse:p,model:C,toolCalls:_,contextReferences:ce(),mcpTools:v,inputTokensEstimate:h||this.estimateTokensFn(m,C),outputTokensEstimate:f||this.estimateTokensFn(p,C),thinkingTokensEstimate:0,actualUsage:S})},l=u=>{let m=u.message?.content;if(typeof m=="string")return!!m.trim();if(!Array.isArray(m))return!1;let p=m.some(f=>f.type==="text"),h=m.some(f=>f.type==="tool_result");return p&&!h};for(let u of s)u.type==="user"&&!u.isSidechain&&u.message?.role==="user"&&l(u)?(r(),n=u,o.length=0):u.type==="assistant"&&u.message?.stop_reason&&u.message?.role==="assistant"&&o.push(u);return r(),{turns:t}}async analyzeUsage(e,t){let s=de(),n=await Wn(e),o=[];for(let u of n)if(u.type==="user"&&u.message?.role==="user"&&!u.isSidechain){s.modeUsage.ask++;let m=wi(u.message?.content);if(m){let p=`__slash__${m}`;s.toolCalls.byTool[p]=(s.toolCalls.byTool[p]||0)+1}}else if(u.type==="assistant"){let m=It(u.message?.model||"unknown");o.push(m);let p=Array.isArray(u.message?.content)?u.message.content:[];for(let h of p)if(h?.type==="tool_use"){s.toolCalls.total++;let f=String(h.name||"tool");s.toolCalls.byTool[f]=(s.toolCalls.byTool[f]||0)+1}}let r=[...new Set(o)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=o.length;let l=0;for(let u=1;u<o.length;u++)o[u]!==o[u-1]&&l++;return s.modelSwitching.switchCount=l,_e(t.modelPricing,r,o,s),s}};var qa=O(require("path"));var As=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 e.replace(/\\/g,"/").toLowerCase().includes("/ssmsgithubcopilot/")?"SSMS":"Visual Studio"}getBackingPath(e){return e}async stat(e){return this.visualStudio.statSessionFile(e)}async getTokens(e){let t=this.visualStudio.getTokenEstimates(e,this.estimateTokens);return{...t,actualTokens:t.tokens}}async countInteractions(e){let t=this.visualStudio.decodeSessionFile(e);return Promise.resolve(this.visualStudio.countInteractions(t))}async getModelUsage(e){return Promise.resolve(this.visualStudio.getModelUsage(e,this.estimateTokens))}async getMeta(e){let t=this.visualStudio.decodeSessionFile(e),s=this.visualStudio.getSessionTitle(t),n=this.visualStudio.getSessionTimestamps(t),o=[];return n.timeCreated&&o.push(new Date(n.timeCreated).getTime()),n.timeUpdated&&o.push(new Date(n.timeUpdated).getTime()),o.sort((r,l)=>r-l),{title:s,firstInteraction:o.length>0?new Date(o[0]).toISOString():null,lastInteraction:o.length>0?new Date(o[o.length-1]).toISOString():null}}getEditorRoot(e){return qa.dirname(e)}skipBackendSync=!0;async discover(e){let t=this.getCandidatePaths(),s=[];try{let n=this.visualStudio.discoverSessions();n.length>0&&(e(`\u{1F4C4} Found ${n.length} session file(s) in Visual Studio Copilot`),s.push(...n))}catch(n){e(`Could not read Visual Studio session files: ${n}`)}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){let s=this.visualStudio.decodeSessionFile(e).map((n,o)=>o===0?n:n?.[1]??n);return JSON.stringify(s,null,2)}async buildTurns(e){let t=[],s=this.visualStudio.decodeSessionFile(e),n=0;for(let o=1;o<s.length;o+=2){let r=s[o],l=s[o+1];if(!r)continue;let u=r[1],m=l?.[1];n++;let p=this.visualStudio.extractTextFromContent(u?.Content||[]),h=l?this.visualStudio.extractTextFromContent(m?.Content||[]):"",f=this.visualStudio.getModelId(m??u,!m),y=this.visualStudio.extractContextText(u?.Context),_=this.estimateTokens(p+y,f??"gpt-4"),v=l?this.estimateTokens(h,f??"gpt-4"):0,k=[];for(let C of m?.Content||[]){let S=Array.isArray(C)?C[1]:null;S?.Function&&k.push({toolName:String(S.Function.Description||"tool"),result:typeof S.Function.Result=="string"?S.Function.Result:void 0})}t.push({turnNumber:n,timestamp:u?.Timestamp?new Date(u.Timestamp).toISOString():null,mode:"ask",userMessage:p,assistantResponse:h,model:f,toolCalls:k,contextReferences:ce(),mcpTools:[],inputTokensEstimate:_,outputTokensEstimate:v,thinkingTokensEstimate:0})}return{turns:t}}async analyzeUsage(e,t){let s=de(),n=this.visualStudio.decodeSessionFile(e),o=[];for(let u=1;u<n.length;u++){let m=u%2===1,p=n[u]?.[1];if(m)s.modeUsage.ask++;else{let h=this.visualStudio.getModelId(p,!1);h&&o.push(h);for(let f of p?.Content??[]){let y=Array.isArray(f)?f[1]:null;if(y?.Function){s.toolCalls.total++;let _=String(y.Function.Name||y.Function.Description||"tool");if(pt(_)){s.mcpTools.total++;let v=ht(_,t.toolNameMap);s.mcpTools.byServer[v]=(s.mcpTools.byServer[v]||0)+1;let k=Ss(_);s.mcpTools.byTool[k]=(s.mcpTools.byTool[k]||0)+1,s.toolCalls.total--}else s.toolCalls.byTool[_]=(s.toolCalls.byTool[_]||0)+1}}}}let r=[...new Set(o)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=o.length;let l=0;for(let u=1;u<o.length;u++)o[u]!==o[u-1]&&l++;return s.modelSwitching.switchCount=l,_e(t.modelPricing,r,o,s),s}};var Ba=O(require("fs"));var Ds=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 Ba.promises.stat(e)}async getTokens(e){let t=this.mistralVibe.getTokensFromSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return Promise.resolve(this.mistralVibe.countInteractions(e))}async getModelUsage(e){return Promise.resolve(this.mistralVibe.getModelUsage(e))}async getMeta(e){let t=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 n=this.mistralVibe.discoverSessions();n.length>0&&(e(`\u{1F4C4} Found ${n.length} session file(s) in Mistral Vibe (~/.vibe/logs/session)`),s.push(...n))}catch(n){e(`Could not read Mistral Vibe session files: ${n}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.mistralVibe.getSessionLogDir(),source:"Mistral Vibe"}]}async buildTurns(e){let t=[],s=this.mistralVibe.readSessionMessages(e),n=this.mistralVibe.getSessionMeta(e),o=this.mistralVibe.getTokensFromSession(e),r=n.model||"devstral",l=[];for(let u=0;u<s.length;u++)s[u].role==="user"&&s[u].injected!==!0&&l.push(u);for(let u=0;u<l.length;u++){let m=l[u],p=u+1<l.length?l[u+1]:s.length,h=s[m],f=typeof h.content=="string"?h.content:"",y="",_=[];for(let v=m+1;v<p;v++){let k=s[v];if(k.role==="assistant"){if(typeof k.content=="string"&&(y+=k.content),Array.isArray(k.tool_calls))for(let C of k.tool_calls)_.push({toolName:C.function?.name||C.name||"unknown",arguments:C.function?.arguments?JSON.stringify(C.function.arguments):void 0})}else if(k.role==="tool"){let C=_[_.length-1];C&&(C.result=typeof k.content=="string"?k.content:void 0)}}t.push({turnNumber:u+1,timestamp:n.firstInteraction,mode:"cli",userMessage:f,assistantResponse:y,model:r,toolCalls:_,contextReferences:ce(),mcpTools:[],inputTokensEstimate:0,outputTokensEstimate:0,thinkingTokensEstimate:0})}return{turns:t,actualTokens:o.tokens}}async analyzeUsage(e,t){let s=de(),n=this.mistralVibe.readSessionMessages(e),r=this.mistralVibe.getSessionMeta(e).model||"devstral",l=[];for(let m of n)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 h=String(p.function?.name||p.name||"tool");s.toolCalls.byTool[h]=(s.toolCalls.byTool[h]||0)+1}let u=[...new Set(l)];return s.modelSwitching.uniqueModels=u,s.modelSwitching.modelCount=u.length,s.modelSwitching.totalRequests=l.length,s.modelSwitching.switchCount=0,_e(t.modelPricing,u,l,s),s}};var za=O(require("fs"));var Es=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 za.promises.stat(e)}async getTokens(e){let t=this.geminiCli.getTokensFromGeminiCliSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return Promise.resolve(this.geminiCli.countGeminiCliInteractions(e))}async getModelUsage(e){return Promise.resolve(this.geminiCli.getGeminiCliModelUsage(e))}async getMeta(e){return Promise.resolve(this.geminiCli.getGeminiCliSessionMeta(e))}getEditorRoot(e){return this.geminiCli.getGeminiDataDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let n=this.geminiCli.getGeminiCliSessionFiles();n.length>0&&(e(`\u{1F4C4} Found ${n.length} session file(s) in Gemini CLI (~/.gemini/tmp/*/chats)`),s.push(...n))}catch(n){e(`Could not read Gemini CLI session files: ${n}`)}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 Promise.resolve(this.geminiCli.buildGeminiCliTurns(e))}async getDailyFractions(e){return Promise.resolve(this.geminiCli.getGeminiCliDailyFractions(e))}async analyzeUsage(e,t){let s=de(),n=this.geminiCli.readGeminiCliSession(e),o=[];s.modeUsage.cli+=n.userRecords.length;for(let u of n.assistantRecords){let m=Ln(u.model||"unknown");o.push(m);for(let p of Array.isArray(u.toolCalls)?u.toolCalls:[]){let h=typeof p?.name=="string"&&p.name.trim().length>0?p.name.trim():typeof p?.displayName=="string"&&p.displayName.trim().length>0?p.displayName.trim():"";h&&(s.toolCalls.total++,s.toolCalls.byTool[h]=(s.toolCalls.byTool[h]||0)+1)}}let r=[...new Set(o)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=o.length;let l=0;for(let u=1;u<o.length;u++)o[u]!==o[u-1]&&l++;return s.modelSwitching.switchCount=l,_e(t.modelPricing,r,o,s),s}};var Re=O(require("fs")),V=O(require("path")),Us=O(require("os"));var Rs=["Code","Code - Insiders","Code - Exploration","VSCodium","Cursor"],Va=new Set(["Public","Default","Default User","All Users"]);function Si(){return Us.platform()==="linux"&&(typeof process.env.WSL_DISTRO_NAME=="string"||typeof process.env.WSL_INTEROP=="string")}function Wa(){let i=Us.platform(),e=Us.homedir(),t=[];if(i==="win32"){let s=process.env.APPDATA||V.join(e,"AppData","Roaming");for(let n of Rs)t.push(V.join(s,n,"User"))}else if(i==="darwin")for(let s of Rs)t.push(V.join(e,"Library","Application Support",s,"User"));else{let s=process.env.XDG_CONFIG_HOME||V.join(e,".config");for(let n of Rs)t.push(V.join(s,n,"User"))}return t.push(V.join(e,".vscode-server","data","User"),V.join(e,".vscode-server-insiders","data","User"),V.join(e,".vscode-remote","data","User"),V.join("/tmp",".vscode-server","data","User"),V.join("/workspace",".vscode-server","data","User")),t}async function ld(){if(!Si())return[];let i=[],e=[],t=process.env.USERPROFILE;if(t){let n=t.match(/^\/mnt\/[a-z]\/Users\/([^/]+)/);n&&e.push(n[1])}let s="/mnt/c/Users";try{let n=await Re.promises.readdir(s,{withFileTypes:!0});for(let o of n){if(!o.isDirectory())continue;let r=o.name;Va.has(r)||r.startsWith(".")||e.includes(r)||e.push(r)}}catch{return[]}for(let n of e){let o=V.join(s,n,"AppData","Roaming");for(let r of Rs)i.push(V.join(o,r,"User"))}return i}function cd(){if(!Si())return[];let i=[],e="/mnt/c/Users";try{let t=Re.readdirSync(e,{withFileTypes:!0});for(let s of t)if(!(!s.isDirectory()||s.name.startsWith(".")||Va.has(s.name)))for(let n of Rs)i.push(V.join(e,s.name,"AppData","Roaming",n,"User"))}catch{}return i}var ud=["embeddings","index","cache","preferences","settings","config","workspacesessions","globalsessions","api.json"];function dd(i){let e=i.toLowerCase();return ud.some(t=>e.includes(t))}async function Is(i){try{return await Re.promises.access(i),!0}catch{return!1}}async function Ha(i,e,t,s){if(i.length===0)return;let n=0,o=Array.from({length:Math.min(t,i.length)},async()=>{for(;n<i.length;){let r=n++;try{await e(i[r],r)}catch(l){s?.(i[r],r,l)}}});await Promise.all(o)}async function Ja(i,e,t){let s;try{s=await Re.promises.readdir(i,{withFileTypes:!0})}catch(n){t(`Could not scan directory ${i}: ${n}`);return}for(let n of s){let o=V.join(i,n.name);if(n.isDirectory()){await Ja(o,e,t);continue}if(!(!n.name.endsWith(".json")&&!n.name.endsWith(".jsonl"))&&!dd(n.name))try{(await Re.promises.stat(o)).size>0&&e.push(o)}catch{}}}var Os=class{id="copilotchat";displayName="GitHub Copilot Chat";handles(e){return!1}getBackingPath(e){return e}async stat(e){return Re.promises.stat(e)}async getTokens(e){try{let t=await Re.promises.readFile(e,"utf8");return Vt(t)?{tokens:0,thinkingTokens:0,actualTokens:0}:e.endsWith(".jsonl")||Ze(t)?jn(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=e.replace(/\\/g,"/"),s=t.lastIndexOf("/User/");return s>=0?t.substring(0,s+5):V.dirname(e)}getCandidatePaths(){let e=[];for(let t of Wa())e.push({path:t,source:"VS Code"});for(let t of cd())e.push({path:t,source:"VS Code (Windows via WSL)"});return e}async discover(e){let t=this.getCandidatePaths(),s=[],n=Wa();if(Si()){e("\u{1FA9F} WSL environment detected \u2014 probing Windows-side VS Code paths");let l=await ld();l.length>0?(e(`\u{1FA9F} Adding ${l.length} Windows-side candidate paths from WSL`),n.push(...l)):e("\u{1FA9F} No Windows-side paths found (Windows drive may not be mounted)")}e(`\u{1F4C2} Considering ${n.length} candidate VS Code paths`);let o=await Promise.all(n.map(l=>Is(l).catch(()=>!1))),r=n.filter((l,u)=>o[u]);return e(`\u2705 Found ${r.length} of ${n.length} VS Code paths exist on disk`),await Ha(r,async l=>{let u=V.basename(V.dirname(l)),m=V.join(l,"workspaceStorage");try{if(await Is(m)){let h=await Re.promises.readdir(m);await Ha(h,async f=>{let y=[V.join(m,f,"chatSessions"),V.join(m,f,"GitHub.copilot-chat","chatSessions"),V.join(m,f,"github.copilot-chat","chatSessions"),V.join(m,f,"GitHub.copilot","chatSessions"),V.join(m,f,"github.copilot","chatSessions"),V.join(m,f,"GitHub.copilot-chat","debug-logs"),V.join(m,f,"github.copilot-chat","debug-logs"),V.join(m,f,"GitHub.copilot","debug-logs"),V.join(m,f,"github.copilot","debug-logs")];for(let _ of y)try{if(!await Is(_))continue;let v=(await Re.promises.readdir(_)).filter(k=>k.endsWith(".json")||k.endsWith(".jsonl")).map(k=>V.join(_,k));v.length>0&&(e(`\u{1F4C4} Found ${v.length} session files in ${u}/workspaceStorage/${f}`),s.push(...v))}catch{}},6)}}catch(h){e(`Could not check workspace storage path ${m}: ${h}`)}let p=V.join(l,"globalStorage","emptyWindowChatSessions");try{if(await Is(p)){let h=(await Re.promises.readdir(p)).filter(f=>f.endsWith(".json")||f.endsWith(".jsonl")).map(f=>V.join(p,f));h.length>0&&(e(`\u{1F4C4} Found ${h.length} session files in ${u}/globalStorage/emptyWindowChatSessions`),s.push(...h))}}catch(h){e(`Could not check global storage path ${p}: ${h}`)}for(let h of["GitHub.copilot-chat","github.copilot-chat","GitHub.copilot","github.copilot"]){let f=V.join(l,"globalStorage",h);try{await Is(f)&&(e(`\u{1F4C4} Scanning ${u}/globalStorage/${h}`),await Ja(f,s,e))}catch(y){e(`Could not check Copilot Chat global storage path ${f}: ${y}`)}}},4,(l,u,m)=>{e(`Failed to scan VS Code user path ${l}: ${m instanceof Error?m.message:String(m)}`)}),{sessionFiles:s,candidatePaths:t}}};var Fs=O(require("fs")),Ns=O(require("path")),Pi=O(require("os"));var Ce=O(require("fs")),ki=O(require("path")),Ka=O(require("os")),Ya=O(gn()),Hn=class{_sqlJsModule=null;getDbPath(){return ki.join(Ka.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 Ce.promises.stat(this.getDbPathFromVirtual(e))}async initSqlJs(){if(this._sqlJsModule)return this._sqlJsModule;let e=ki.join(__dirname,"sql-wasm.wasm"),t;return Ce.existsSync(e)&&(t=Ce.readFileSync(e)),this._sqlJsModule=await(0,Ya.default)(t?{wasmBinary:t}:void 0),this._sqlJsModule}async discoverNewSessions(e){let t=this.getDbPath();if(!Ce.existsSync(t))return[];try{let s=await this.initSqlJs(),n=Ce.readFileSync(t),o=new s.Database(n);try{let r=o.exec("SELECT id FROM sessions ORDER BY updated_at DESC");return r.length===0?[]:r[0].values.map(l=>l[0]).filter(l=>!e.has(l))}finally{o.close()}}catch{return[]}}async readSession(e){let t=this.getDbPathFromVirtual(e),s=this.getSessionId(e);if(!s||!Ce.existsSync(t))return null;try{let n=await this.initSqlJs(),o=Ce.readFileSync(t),r=new n.Database(o);try{let l=r.exec("SELECT id, repository, branch, summary, created_at, updated_at FROM sessions WHERE id = ?",[s]);if(l.length===0||l[0].values.length===0)return null;let u=l[0].columns,m=l[0].values[0],p={};return u.forEach((h,f)=>{p[h]=m[f]}),p}finally{r.close()}}catch{return null}}async getTurns(e){let t=this.getDbPathFromVirtual(e),s=this.getSessionId(e);if(!s||!Ce.existsSync(t))return[];try{let n=await this.initSqlJs(),o=Ce.readFileSync(t),r=new n.Database(o);try{let l=r.exec("SELECT session_id, turn_index, user_message, assistant_response, timestamp FROM turns WHERE session_id = ? ORDER BY turn_index ASC",[s]);if(l.length===0)return[];let u=l[0].columns;return l[0].values.map(m=>{let p={};return u.forEach((h,f)=>{p[h]=m[f]}),p})}finally{r.close()}}catch{return[]}}async countTurns(e){let t=this.getDbPathFromVirtual(e),s=this.getSessionId(e);if(!s||!Ce.existsSync(t))return 0;try{let n=await this.initSqlJs(),o=Ce.readFileSync(t),r=new n.Database(o);try{let l=r.exec("SELECT COUNT(*) FROM turns WHERE session_id = ?",[s]);return l.length===0||l[0].values.length===0?0:l[0].values[0][0]||0}finally{r.close()}}catch{return 0}}async getDailyFractions(e){let t=await this.getTurns(e),s={},n=0;for(let r of t)if(r.timestamp)try{let l=new Date(r.timestamp).toISOString().slice(0,10);s[l]=(s[l]||0)+1,n++}catch{}if(n===0){let r=await this.readSession(e);return{[r?.updated_at?new Date(r.updated_at).toISOString().slice(0,10):new Date().toISOString().slice(0,10)]:1}}let o={};for(let[r,l]of Object.entries(s))o[r]=l/n;return o}};function vi(){return Ns.join(Pi.homedir(),".copilot","session-state")}async function md(i){try{return await Fs.promises.access(i),!0}catch{return!1}}var js=class{id="copilotcli";displayName="GitHub Copilot CLI";store=new Hn;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):Fs.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)?Ns.join(Pi.homedir(),".copilot"):vi()}async buildTurns(e){return this.store.isCliStoreSession(e)?{turns:(await this.store.getTurns(e)).map(n=>({turnNumber:n.turn_index+1,timestamp:n.timestamp,mode:"cli",userMessage:n.user_message??"",assistantResponse:n.assistant_response??"",model:null,toolCalls:[],contextReferences:ce(),mcpTools:[],inputTokensEstimate:0,outputTokensEstimate:0,thinkingTokensEstimate:0}))}:{turns:[]}}async analyzeUsage(e,t){let s=de();if(!this.store.isCliStoreSession(e))return s;let n=await this.store.getTurns(e);return s.modeUsage.cli=n.filter(o=>o.user_message!==null).length,s}async getDailyFractions(e){return this.store.isCliStoreSession(e)?this.store.getDailyFractions(e):{}}getCandidatePaths(){let e=[{path:vi(),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=[],n=vi(),o=new Set;try{if(await md(n)){let r;try{r=await Fs.promises.readdir(n,{withFileTypes:!0})}catch(p){e(`Could not read Copilot CLI session path in ${n}: ${p}`),r=[]}let l=r.filter(p=>!p.isDirectory()&&(p.name.endsWith(".json")||p.name.endsWith(".jsonl"))).map(p=>Ns.join(n,p.name));l.length>0&&(e(`\u{1F4C4} Found ${l.length} session files in Copilot CLI directory`),s.push(...l));let u=r.filter(p=>p.isDirectory()),m=(await Promise.all(u.map(async p=>{let h=Ns.join(n,p.name,"events.jsonl");try{if((await Fs.promises.stat(h)).size>0)return o.add(p.name),h}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 ${n}: ${r}`)}try{let r=await this.store.discoverNewSessions(o);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}}};function Oe(i){return typeof i=="object"&&i!==null}function pd(i){return typeof i!="string"?!1:!["__proto__","prototype","constructor","hasOwnProperty"].includes(i)&&!i.startsWith("__")}function Gs(i){return/^\d+$/.test(i)}function Qa(i,e){if(typeof i!="string")return e;let t=i.trim();return t?t.startsWith("copilot/")?t.substring(8):t:e}function hd(i,e){if(!Oe(e))return i;let t=e.kind,s=e.k,n=e.v;if(t===0)return n;if(!Array.isArray(s)||s.length===0)return i;let o=s.map(String);for(let p of o)if(!pd(p))return i;let r=Oe(i)?i:Object.create(null),l=r,u=(p,h,f)=>{let y=Gs(f),_=p[h];return Oe(_)||(_=y?[]:Object.create(null),p[h]=_),_};for(let p=0;p<o.length-1;p++){let h=o[p],f=o[p+1];if(Array.isArray(l)&&Gs(h)){let y=Number(h),_=l[y];Oe(_)||(_=Gs(f)?[]:Object.create(null),l[y]=_),l=_;continue}if(!Oe(l))return r;l=u(l,h,f)}let m=o[o.length-1];if(t===1)return Array.isArray(l)&&Gs(m)?(l[Number(m)]=n,r):(Oe(l)&&Object.defineProperty(l,m,{value:n,writable:!0,enumerable:!0,configurable:!0}),r);if(t===2){let p;if(Array.isArray(l)&&Gs(m)){let h=Number(m);Array.isArray(l[h])||(l[h]=[]),p=l[h]}else Oe(l)&&(Array.isArray(l[m])||Object.defineProperty(l,m,{value:[],writable:!0,enumerable:!0,configurable:!0}),p=l[m]);return Array.isArray(p)&&(Array.isArray(n)?p.push(...n):p.push(n)),r}return r}function gd(i){if(!Array.isArray(i))return{responseText:"",thinkingText:""};let e="",t="";for(let s of i){if(!Oe(s))continue;if(s.kind==="thinking"){let r=s.value;typeof r=="string"&&r&&(t+=r);continue}let n=Oe(s.content)?s.content.value:void 0,o=s.value;if(typeof n=="string"&&n){e+=n;continue}typeof o=="string"&&o&&(e+=o)}return{responseText:e,thinkingText:t}}function Xa(i,e,t,s){let n={},o=0,r=0,l=0,u=0,m=0,p,h="unknown",f=C=>typeof C=="string"&&C?C:h,y=(C,S)=>{let w=f(C);n[w]||(n[w]={inputTokens:0,outputTokens:0});let P=t(S,w);n[w].inputTokens+=P,r+=P},_=(C,S)=>{let w=f(C);n[w]||(n[w]={inputTokens:0,outputTokens:0});let P=t(S,w);n[w].outputTokens+=P,l+=P},v=C=>{if(C==null||typeof C!="object")return;let S=C.modelId??C.selectedModel?.identifier??C.model,w=Qa(S,h),P;if(typeof S=="string"&&S.trim())P=w;else{let j=s?s(C):void 0;P=Qa(j,"")||w}if(C?.message?.parts)for(let j of C.message.parts)typeof j?.text=="string"&&j.text&&y(P,j.text);else typeof C?.message?.text=="string"&&y(P,C.message.text);let{responseText:x,thinkingText:E}=gd(C.response);x&&_(P,x),E&&(u+=t(E,P));let U=Array.isArray(C.response)?C.response:Array.isArray(C.responses)?C.responses:[];for(let j of U){let $=Ht(j);if($){let q=$.modelName||P;$.prompt&&y(q,$.prompt),$.result&&_(q,$.result);continue}if(j?.kind!=="thinking"&&typeof j?.value!="string"&&j?.message?.parts)for(let q of j.message.parts)typeof q?.text=="string"&&q.text&&_(P,q.text)}if(C?.result?.usage){let j=C.result.usage,$=typeof j.promptTokens=="number"?j.promptTokens:0,q=typeof j.completionTokens=="number"?j.completionTokens:0;m+=$+q}else typeof C?.result?.promptTokens=="number"&&typeof C?.result?.outputTokens=="number"?m+=C.result.promptTokens+C.result.outputTokens:C?.result?.metadata&&typeof C?.result?.metadata?.promptTokens=="number"&&typeof C?.result?.metadata?.outputTokens=="number"&&(m+=C.result.metadata.promptTokens+C.result.metadata.outputTokens)};if(i.endsWith(".jsonl")){let C=e.split(/\r?\n/).filter(w=>w.trim()),S=!1;if(C.length>0)try{let w=JSON.parse(C[0]);w&&typeof w.kind=="number"&&(S=!0)}catch{}if(S){let w=Object.create(null);for(let x of C)try{let E=JSON.parse(x);w=hd(w,E)}catch{}let P=Oe(w)&&Array.isArray(w.requests)?w.requests:[];o=P.filter(x=>Oe(x)&&Oe(x.message)&&typeof x.message.text=="string"&&x.message.text.trim()).length;for(let x of P)v(x);return{tokens:r+l+u,interactions:o,modelUsage:n,thinkingTokens:u,actualTokens:0}}try{p=JSON.parse(e.trim())}catch{return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0}}}if(!p)try{p=JSON.parse(e)}catch{return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0}}let k=Array.isArray(p.requests)?p.requests:Array.isArray(p.history)?p.history:[];o=k.length;for(let C of k)v(C);return{tokens:r+l+u,interactions:o,modelUsage:n,thinkingTokens:u,actualTokens:m}}function Za(i,e,t){let s=t.toISOString().slice(0,10),n={};function o(u){if(u==null)return;let m=new Date(u);if(!isNaN(m.getTime())){let p=m.toISOString().slice(0,10);n[p]=(n[p]||0)+1}}if(e){let u={},m=i.trim().split(`
57
- `);for(let p of m)if(p.trim())try{let h=JSON.parse(p);if(h.type==="user.message"){let v=h.timestamp??h.ts??h.data?.timestamp;o(v);continue}let f=h.kind,y=h.k,_=h.v;if(f===0&&_?.requests&&Array.isArray(_.requests))for(let v of _.requests){let k=v.timestamp??v.ts;o(k)}else if(f===2&&Array.isArray(y)&&y[0]==="requests"){if(Array.isArray(_))for(let v of _){let k=v.timestamp??v.ts;o(k)}else if(_&&typeof _=="object"){let v=_.timestamp??_.ts;v!==void 0&&o(v),typeof y[1]=="number"&&(u[y[1]]=v)}}else if(f===1&&Array.isArray(y)&&y.length===3&&y[0]==="requests"&&(y[2]==="timestamp"||y[2]==="ts")&&typeof y[1]=="number"){let v=y[1];u[v]===void 0&&o(_),u[v]=_}}catch{}}else try{let u=JSON.parse(i);if(u.requests&&Array.isArray(u.requests))for(let m of u.requests){let p=m.timestamp??m.ts??m.result?.timestamp;o(p)}}catch{}let r=Object.values(n).reduce((u,m)=>u+m,0);if(r===0)return{[s]:1};let l={};for(let[u,m]of Object.entries(n))l[u]=m/r;return l}var gt=O(require("fs")),Mi=O(require("path")),tl=O(require("os")),sl=3,el=2e3,nl=Mi.join(tl.homedir(),".copilot-token-tracker"),Ti=Mi.join(nl,"cli-cache.json"),Ge=new Map,Qt=!0,ol=!1;function xi(){Qt=!1,Ge.clear()}function Ai(){if(Qt)try{if(!gt.existsSync(Ti))return;let i=gt.readFileSync(Ti,"utf-8"),e=JSON.parse(i);if(e.version!==sl){Ge.clear();return}Ge=new Map(Object.entries(e.entries))}catch{Ge.clear()}}function Di(){if(!(!Qt||!ol))try{if(Ge.size>el){let e=[...Ge.entries()].sort((t,s)=>s[1].mtime-t[1].mtime);Ge=new Map(e.slice(0,el))}gt.mkdirSync(nl,{recursive:!0});let i={version:sl,entries:Object.fromEntries(Ge)};gt.writeFileSync(Ti,JSON.stringify(i),"utf-8")}catch{}}function il(i,e,t){if(!Qt)return null;let s=Ge.get(i);return!s||s.mtime!==e||s.size!==t?null:{...s.data,lastModified:new Date(s.data.lastModified)}}function Ei(i,e,t,s){Qt&&(ol=!0,Ge.set(i,{mtime:e,size:t,data:{...s,lastModified:s.lastModified.toISOString()}}))}function Ii(){return{entries:Ge.size,enabled:Qt}}var rl={$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}};var al={$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-05-20",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:"premium",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:"premium",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:"premium",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:"premium",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:"premium",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:"premium",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-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:"premium",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:"premium",multiplier:1,displayNames:["Claude Sonnet 4.6"],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:"premium",multiplier:.33,displayNames:["Claude Haiku 4.5"],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:"premium",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:"premium",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:"premium",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:"premium",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:"premium",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:"premium",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:"premium",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:"premium",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-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:"premium",multiplier:14,displayNames:["Gemini 3.5 Flash"]}}};var ll={unknown:"Unknown",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-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","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__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",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",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"};var dl=.2,ml=21e3,pl=.3,Yn=rl.estimators,Ut=al.pricing,bd=ll,Cd=i=>{},hl=i=>{},wd=(i,e)=>console.error(A.red(i),e||"");function Sd(){let i=zt.file(__dirname);return new fn(i)}function kd(){let i=zt.file(__dirname);return new _n(i)}function vd(){return new bn}function Pd(){return new In}function Td(){return new On}function Md(){return new Fn}function xd(){return new Nn}function Ad(){return new $n}var Dd=Sd(),Ed=kd(),Id=vd(),Rd=Pd(),Od=Td(),Ud=Md(),Fd=xd(),Nd=Ad(),Qn=[new vs(Dd),new Ps(Ed),new As(Rd,(i,e)=>J(i,e??"gpt-4",Yn)),new Ts(Id),new xs(Ud,pt,ht,(i,e)=>J(i,e??"gpt-4",Yn)),new Ms(Od),new Ds(Fd),new Es(Nd),new Os,new js,new ks];function gl(){return new dn({log:Cd,warn:hl,error:wd,ecosystems:Qn})}async function me(){return gl().getCopilotSessionFiles()}async function Xn(i){let e=new Set,t=Te.join(ul.homedir(),".claude","projects");for(let n of i){if(n.startsWith(t+Te.sep)||n.startsWith(t+"/")){try{let m=(await Be.promises.readFile(n,"utf-8")).split(`
58
- `).slice(0,30);for(let p of m)if(p.trim())try{let h=JSON.parse(p);if(h.cwd&&typeof h.cwd=="string"){e.add(h.cwd);break}}catch{}}catch{}continue}let o=Te.dirname(n);if(Te.basename(o)!=="chatSessions")continue;let r=Te.dirname(o),l=Te.join(r,"workspace.json");try{if(!Be.existsSync(l))continue;let m=JSON.parse(await Be.promises.readFile(l,"utf-8")).folder;if(!m||!m.startsWith("file://"))continue;let p=decodeURIComponent(m.replace(/^file:\/\//,""));/^\/[A-Za-z]:/.test(p)&&(p=p.slice(1)),e.add(p)}catch{}}if(e.size===0)return;let s=0;for(let n of e)try{let o=Be.existsSync(Te.join(n,".github","copilot-instructions.md")),r=Be.existsSync(Te.join(n,"agents.md")),l=Be.existsSync(Te.join(n,"CLAUDE.md"));!o&&!r&&!l&&s++}catch{s++}return{customizationTypes:[],workspaces:[],totalWorkspaces:e.size,workspacesWithIssues:s}}function Zn(){return gl().getDiagnosticCandidatePaths()}function jd(i,e){return J(i,e||"gpt-4",Yn)}function Gd(i){return mt(i,Ut)}async function fl(i){let e=Qn.find(t=>t.handles(i));return e?e.stat(i):Be.promises.stat(i)}function cl(i){let e=i.toLowerCase().replace(/\\/g,"/");return e.includes("/cursor/")?"cursor":e.includes("/code - insiders/")?"vscode-insiders":e.includes("/code - exploration/")?"vscode-exploration":e.includes("/vscodium/")?"vscodium":e.includes("/.copilot/")?"copilot-cli":e.includes("/.crush/crush.db#")?"crush":e.includes("/opencode/")?"opencode":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/tmp/")&&e.includes("/chats/session-")&&e.endsWith(".jsonl")?"gemini-cli":e.includes(".vscode-server")?"vscode-remote":e.includes("/.vs/")&&e.includes("/copilot-chat/")?"Visual Studio":"vscode"}async function yl(i,e,t=20){if(i.length===0)return[];let s=new Array(i.length),n=0,o=Array.from({length:Math.min(t,i.length)},async()=>{for(;n<i.length;){let r=n++;try{s[r]=await e(i[r],r)}catch{s[r]=void 0}}});return await Promise.all(o),s}function ot(i){return i.actualTokens>0?i.actualTokens:i.tokens}async function Xt(i){try{let e=await fl(i),t=il(i,e.mtimeMs,e.size);if(t)return t;let s=Qn.find(y=>y.handles(i));if(s){let[y,_,v]=await Promise.all([s.getTokens(i),s.countInteractions(i),s.getModelUsage(i)]),k=e.mtime.toISOString().slice(0,10),C={file:i,tokens:y.actualTokens>0?y.actualTokens:y.tokens,thinkingTokens:y.thinkingTokens,actualTokens:y.actualTokens,interactions:_,modelUsage:v,lastModified:e.mtime,editorSource:cl(i),dailyFractions:await s.getDailyFractions?.(i)??{[k]:1}};return Ei(i,e.mtimeMs,e.size,C),C}let n=await Be.promises.readFile(i,"utf-8");if(!n.trim())return null;let o=i.endsWith(".jsonl")||Ze(n),r=0,l=0,u=0,m=0,p={};if(o){let y=jn(n);r=y.actualTokens>0?y.actualTokens:y.tokens,l=y.thinkingTokens,u=y.actualTokens,p=y.modelUsage;let _=n.trim().split(`
59
- `);for(let v of _)try{let k=JSON.parse(v);(k.type==="user.message"||k.kind===2&&k.k?.[0]==="requests")&&m++}catch{}}else{let y=Xa(i,n,jd,Gd);r=y.tokens,l=y.thinkingTokens,u=y.actualTokens,m=y.interactions,p=y.modelUsage}let h=Za(n,o,e.mtime),f={file:i,tokens:r,thinkingTokens:l,actualTokens:u,interactions:m,modelUsage:p,lastModified:e.mtime,editorSource:cl(i),dailyFractions:h};return Ei(i,e.mtimeMs,e.size,f),f}catch{return null}}async function ft(i,e){let t=new Date,s=t.toISOString().slice(0,10),n=t.getUTCFullYear(),o=t.getUTCMonth(),r=`${n}-${String(o+1).padStart(2,"0")}-01`,m=`${o===0?n-1:n}-${String(o===0?12:o).padStart(2,"0")}-01`,h=new Date(Date.UTC(n,o,t.getUTCDate()-30)).toISOString().slice(0,10),f={today:Vn(),month:Vn(),lastMonth:Vn(),last30Days:Vn()},y=0,_=await yl(i,async v=>{let k=await Xt(v);return e&&e(++y,i.length),k});for(let v of _){if(!v||v.tokens===0||!Object.keys(v.dailyFractions).some(x=>x>=m))continue;let C=0,S=0,w=0,P=0;for(let[x,E]of Object.entries(v.dailyFractions))x===s&&(C+=E),x>=r&&(S+=E),x>=m&&x<r&&(w+=E),x>=h&&(P+=E);C>0&&Jn(f.today,v,C),S>0&&Jn(f.month,v,S),w>0&&Jn(f.lastMonth,v,w),P>0&&Jn(f.last30Days,v,P)}for(let v of Object.values(f))v.sessions>0&&(v.avgTokensPerSession=Math.round(v.tokens/v.sessions)),v.co2=v.tokens/1e3*dl,v.treesEquivalent=v.co2/ml,v.waterUsage=v.tokens/1e3*pl,v.estimatedCost=Gn(v.modelUsage,Ut),v.estimatedCostCopilot=Gn(v.modelUsage,Ut,"copilot");return{...f,lastUpdated:t}}function Vn(){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 Jn(i,e,t){let s=Math.round(ot(e)*t),n=Math.round(e.thinkingTokens*t),o=Math.round(e.actualTokens*t);i.tokens+=s,i.thinkingTokens+=n,i.estimatedTokens+=Math.round(e.tokens*t),i.actualTokens+=o,i.sessions++;for(let[u,m]of Object.entries(e.modelUsage))i.modelUsage[u]||(i.modelUsage[u]={inputTokens:0,outputTokens:0}),i.modelUsage[u].inputTokens+=Math.round(m.inputTokens*t),i.modelUsage[u].outputTokens+=Math.round(m.outputTokens*t);let r=Math.round(e.interactions*t),l=i.avgInteractionsPerSession*(i.sessions-1)+r;i.avgInteractionsPerSession=i.sessions>0?l/i.sessions:0,i.editorUsage[e.editorSource]||(i.editorUsage[e.editorSource]={tokens:0,sessions:0}),i.editorUsage[e.editorSource].tokens+=s,i.editorUsage[e.editorSource].sessions++}async function Zt(i){let e={warn:hl,tokenEstimators:Yn,modelPricing:Ut,toolNameMap:bd,ecosystems:Qn},t=new Date,s=new Date(t.getFullYear(),t.getMonth(),t.getDate()),n=new Date(t.getFullYear(),t.getMonth(),t.getDate()-30),o=new Date(t.getFullYear(),t.getMonth(),1),r=Ri(),l=Ri(),u=Ri();for(let m of i)try{let h=(await fl(m)).mtime;if(h<n)continue;let f=await ja(e,m);h>=n&&(zn(l,f),l.sessions++),h>=o&&(zn(u,f),u.sessions++),h>=s&&(zn(r,f),r.sessions++)}catch{}return{today:r,last30Days:l,month:u,lastUpdated:t}}function Ri(){return{sessions:0,toolCalls:{total:0,byTool:{}},modeUsage:{ask:0,edit:0,agent:0,plan:0,customAgent:0,cli:0},contextReferences:ce(),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}}}async function eo(i){let e=new Date,t=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()-30)),s=t.toISOString().slice(0,10),n=e.toISOString().slice(0,10),o=new Map,r=new Date(t);for(;r.toISOString().slice(0,10)<=n;){let h=r.toISOString().slice(0,10);o.set(h,{tokens:0,sessions:0,modelUsage:{},editorUsage:{}}),r.setUTCDate(r.getUTCDate()+1)}let l=new Map,u=await yl(i,async h=>Xt(h));for(let h of u){if(!h||h.tokens===0||h.interactions===0)continue;let f=ot(h);for(let[y,_]of Object.entries(h.dailyFractions)){let v=Math.round(f*_),k=o.get(y);if(k){k.tokens+=v,k.sessions++;for(let[P,x]of Object.entries(h.modelUsage))k.modelUsage[P]||(k.modelUsage[P]={inputTokens:0,outputTokens:0}),k.modelUsage[P].inputTokens+=Math.round(x.inputTokens*_),k.modelUsage[P].outputTokens+=Math.round(x.outputTokens*_);let w=h.editorSource;k.editorUsage[w]||(k.editorUsage[w]={tokens:0,sessions:0}),k.editorUsage[w].tokens+=v,k.editorUsage[w].sessions++}l.has(y)||l.set(y,{tokens:0,sessions:0,modelUsage:{},editorUsage:{}});let C=l.get(y);C.tokens+=v,C.sessions++;for(let[w,P]of Object.entries(h.modelUsage))C.modelUsage[w]||(C.modelUsage[w]={inputTokens:0,outputTokens:0}),C.modelUsage[w].inputTokens+=Math.round(P.inputTokens*_),C.modelUsage[w].outputTokens+=Math.round(P.outputTokens*_);let S=h.editorSource;C.editorUsage[S]||(C.editorUsage[S]={tokens:0,sessions:0}),C.editorUsage[S].tokens+=v,C.editorUsage[S].sessions++}}let m=Array.from(o.keys()).sort(),p=m.map(h=>o.get(h));return{labels:m,days:p,allDaysMap:l}}var Kn=[{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 to(i,e,t){let s=x=>`${x.getFullYear()}-${String(x.getMonth()+1).padStart(2,"0")}-${String(x.getDate()).padStart(2,"0")}`,n=x=>{let E=x.map(X=>X.entry),U=x.map(X=>X.label),j=E.map(X=>X.tokens),$=E.map(X=>X.sessions),q=new Set;E.forEach(X=>Object.keys(X.modelUsage).forEach(ge=>q.add(ge)));let es=Array.from(q).map((X,ge)=>{let rt=Kn[ge%Kn.length];return{label:X,data:E.map(Nt=>{let ss=Nt.modelUsage[X];return ss?ss.inputTokens+ss.outputTokens:0}),backgroundColor:rt.bg,borderColor:rt.border,borderWidth:1}}),Ft=new Set;E.forEach(X=>Object.keys(X.editorUsage).forEach(ge=>Ft.add(ge)));let Se=Array.from(Ft).map((X,ge)=>{let rt=Kn[ge%Kn.length];return{label:X,data:E.map(Nt=>Nt.editorUsage[X]?.tokens||0),backgroundColor:rt.bg,borderColor:rt.border,borderWidth:1}}),ts=j.reduce((X,ge)=>X+ge,0),it=$.reduce((X,ge)=>X+ge,0),ze=x.length,Ls=E.map(X=>Gn(X.modelUsage,Ut)),$s=Ls.reduce((X,ge)=>X+ge,0),no=ze>0?$s/ze:0;return{labels:U,tokensData:j,sessionsData:$,modelDatasets:es,editorDatasets:Se,repositoryDatasets:[],periodCount:ze,totalTokens:ts,totalSessions:it,avgPerPeriod:ze>0?Math.round(ts/ze):0,costData:Ls,totalCost:$s,avgCostPerPeriod:no}},o=(x,E)=>{x.tokens+=E.tokens,x.sessions+=E.sessions;for(let[U,j]of Object.entries(E.modelUsage))x.modelUsage[U]||(x.modelUsage[U]={inputTokens:0,outputTokens:0}),x.modelUsage[U].inputTokens+=j.inputTokens,x.modelUsage[U].outputTokens+=j.outputTokens;for(let[U,j]of Object.entries(E.editorUsage))x.editorUsage[U]||(x.editorUsage[U]={tokens:0,sessions:0}),x.editorUsage[U].tokens+=j.tokens,x.editorUsage[U].sessions+=j.sessions},r=()=>({tokens:0,sessions:0,modelUsage:{},editorUsage:{}}),l=new Date,u=i.map((x,E)=>({label:x,entry:e[E]})),m=n(u),p=x=>{let E=new Date(x);E.setHours(0,0,0,0);let U=E.getDay();return E.setDate(E.getDate()-(U===0?6:U-1)),E},h=x=>{let E=new Date(x);return E.setDate(x.getDate()+6),x.getMonth()===E.getMonth()?`${x.toLocaleDateString("en-US",{month:"short"})} ${x.getDate()}\u2013${E.getDate()}`:`${x.toLocaleDateString("en-US",{month:"short",day:"numeric"})}\u2013${E.toLocaleDateString("en-US",{month:"short",day:"numeric"})}`},f=p(l),y=new Map;for(let x=5;x>=0;x--){let E=new Date(f);E.setDate(f.getDate()-x*7);let U=s(E);y.set(U,{label:h(E),entry:r()})}let _=t||new Map(i.map((x,E)=>[x,e[E]]));for(let[x,E]of _.entries()){let U=p(new Date(x+"T00:00:00")),j=y.get(s(U));j&&o(j.entry,E)}let v=Array.from(y.values()),k=n(v),C=new Map;for(let x=11;x>=0;x--){let E=new Date(l.getFullYear(),l.getMonth()-x,1),U=`${E.getFullYear()}-${String(E.getMonth()+1).padStart(2,"0")}`,j=E.toLocaleDateString("en-US",{month:"short",year:"numeric"});C.set(U,{label:j,entry:r()})}for(let[x,E]of _.entries()){let U=x.slice(0,7),j=C.get(U);j&&o(j.entry,E)}let S=Array.from(C.values()),w=n(S),P={};return e.forEach(x=>{Object.entries(x.editorUsage).forEach(([E,U])=>{P[E]=(P[E]||0)+U.tokens})}),{labels:m.labels,tokensData:m.tokensData,sessionsData:m.sessionsData,modelDatasets:m.modelDatasets,editorDatasets:m.editorDatasets,editorTotalsMap:P,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:k,month:w}}}function Z(i){return i.toLocaleString("en-US")}function re(i){return i>=1e9?`${(i/1e9).toFixed(1)}B`:i>=1e6?`${(i/1e6).toFixed(1)}M`:i>=1e3?`${(i/1e3).toFixed(1)}K`:i.toString()}var yt={CO2_PER_1K_TOKENS:dl,CO2_ABSORPTION_PER_TREE_PER_YEAR:ml,WATER_USAGE_PER_1K_TOKENS:pl,CO2_PER_KM_DRIVING:120,CO2_PER_PHONE_CHARGE:8.22,WATER_PER_COFFEE_CUP:140,CO2_PER_LED_HOUR:20};var _l=new le("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 i=>{if(i.json||console.log(A.bold.cyan(`
46
+ `).trim()}toDisplayToolCalls(e){if(!Array.isArray(e))return[];let t=[];for(let s of e){let n=re(s?.name)?s.name.trim():"",r=(re(s?.displayName)?s.displayName.trim():"")||n;r&&t.push({toolName:r,arguments:s.args!==void 0?this.safeStringify(s.args):void 0,result:re(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=[],n=Math.min(t,e);n>0&&s.push({category:"cached",label:"Cache reads",percentageOfPrompt:n/e*100});let i=e-n;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)=>Di(r.record,l.record)),s=[],n=null,i=[];for(let r of t)r.kind==="user"?((n||i.length>0)&&(s.push({user:n,assistants:i}),i=[]),n=r.record):i.push(r.record);return(n||i.length>0)&&s.push({user:n,assistants:i}),s}pickTurnTimestamp(e,t){let s=Zt(e);if(s!==null)return new Date(s).toISOString();for(let n of t){let i=Zt(n.timestamp);if(i!==null)return new Date(i).toISOString()}return null}toUtcDayKey(e){let t=Zt(e);return t!==null?new Date(t).toISOString().slice(0,10):null}};var oo=U(require("fs")),lt=U(require("path"));var Lt=U(require("fs"));var Id=["embeddings","index","cache","preferences","settings","config","workspacesessions","globalsessions","api.json"];function Za(o){let e=o.toLowerCase();return Id.some(t=>e.includes(t))}function el(o){let e=pe(o);return e.includes("/.copilot/jb/")&&/\/partition-\d+\.jsonl$/.test(e)}function Rd(o){return!o||typeof o!="string"?null:o.startsWith("toolu_")?"claude":o.startsWith("call_")?"gpt":null}function tl(o){let e=o.split(/\r?\n/),t={tokens:0,thinkingTokens:0,actualTokens:0,interactions:0,modelUsage:{},mode:"ask",modelHint:"unknown",firstInteraction:null,lastInteraction:null,source:null,conversationId:null,toolCalls:[],toolCounts:{}},s=0,n=0,i=null,r=null,l=null,u=null,p=!1,m=new Map,h=[],g=new Set;for(let _ of e)if(_)try{let y=JSON.parse(_);if(!y||typeof y!="object")continue;h.push(y),y.type==="user.message_rendered"&&typeof y.data?.turnId=="string"&&g.add(y.data.turnId)}catch{}for(let _ of h)switch(_.type){case"partition.created":{_.data?.conversationId&&(t.conversationId=String(_.data.conversationId)),_.data?.source&&(t.source=String(_.data.source));break}case"user.message":{t.interactions++,typeof _.timestamp=="string"&&i===null&&(i=_.timestamp);let y=_.data?.turnId;typeof _.data?.content=="string"&&(typeof y!="string"||!g.has(y))&&(s+=K(_.data.content));break}case"user.message_rendered":{let y=_.data?.renderedMessage;typeof y=="string"&&(s+=K(y));break}case"assistant.turn_start":{typeof _.data?.model=="string"&&!l&&(l=_.data.model);break}case"assistant.message":{typeof _.data?.text=="string"&&_.data.text&&(n+=K(_.data.text));let y=_.data?.thinking?.text;typeof y=="string"&&y&&(t.thinkingTokens+=K(y)),typeof _.timestamp=="string"&&(r=_.timestamp);break}case"tool.execution_start":{if(p=!0,!u){let w=Rd(_.data?.toolCallId);w&&(u=w)}let y=typeof _.data?.toolName=="string"?_.data.toolName:"unknown",C={toolName:y};if(_.data?.arguments!==void 0)try{C.arguments=JSON.stringify(_.data.arguments)}catch{}t.toolCalls.push(C),t.toolCounts[y]=(t.toolCounts[y]||0)+1;let x=_.data?.toolCallId;typeof x=="string"&&m.set(x,C);break}case"tool.execution_complete":{let y=_.data?.result?.result,C="";if(Array.isArray(y))for(let w of y)w&&typeof w.value=="string"&&(n+=K(w.value),C+=(C?`
47
+ `:"")+w.value);let x=_.data?.toolCallId;if(typeof x=="string"){let w=m.get(x);w&&(typeof _.data?.success=="boolean"&&(w.success=_.data.success),C&&(w.result=C))}break}case"assistant.turn_end":{typeof _.timestamp=="string"&&(r=_.timestamp);break}}return t.mode=p?"agent":"ask",t.modelHint=l||u||"unknown",t.tokens=s+n,t.firstInteraction=i,t.lastInteraction=r,t.tokens>0&&t.modelHint!=="unknown"&&(t.modelUsage[t.modelHint]={inputTokens:s,outputTokens:n}),t}function sl(o){let e=o.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 to(o){if(o===null||typeof o!="object"||Array.isArray(o))return!1;let e=o;if(e.requests!=null&&!Array.isArray(e.requests))return!1;if(e.mode!=null){if(typeof e.mode!="object"||Array.isArray(e.mode))return!1;let t=e.mode;if(t.id!=null&&typeof t.id!="string")return!1}return!(e.creationDate!=null&&typeof e.creationDate!="number"||e.lastMessageDate!=null&&typeof e.lastMessageDate!="number")}function ll(o,e){o==="agent"?e.agent++:o==="edit"?e.edit++:o==="plan"?e.plan++:o==="customAgent"?e.customAgent++:e.ask++}function Ii(o,e,t){if(_t(o)){e.mcpTools.total++;let s=bt(o,t);e.mcpTools.byServer[s]=(e.mcpTools.byServer[s]||0)+1;let n=ks(o);e.mcpTools.byTool[n]=(e.mcpTools.byTool[n]||0)+1}else e.toolCalls.total++,e.toolCalls.byTool[o]=(e.toolCalls.byTool[o]||0)+1}function nl(o,e,t,s,n,i){let r=0,l=0;for(let u of o){if(!u)continue;let p=u;if(p.timestamp!==void 0&&s.push(p.timestamp),p.result?.timings&&n.push(p.result.timings),p.timeSpentWaiting!==void 0&&i.push(p.timeSpentWaiting),p.agent?.id){let m=p.agent.id;m.includes("edit")?e.editsAgent++:m.includes("default")?e.defaultAgent++:m.includes("workspace")?e.workspaceAgent++:e.other++}if(p.response&&Array.isArray(p.response))for(let m of p.response){if(!m)continue;let h=m;if(h.kind==="textEditGroup"&&h.uri){let g=h.uri.path||JSON.stringify(h.uri);t.add(g)}h.kind==="codeblockUri"&&(l++,h.isEdit===!0&&r++)}}return{totalApplies:r,totalCodeBlocks:l}}function Od(o,e,t,s){let n=e.inputState?.mode?Tn(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)if(!(!r||!r.requestId)){if(ll(n,s.modeUsage),r.agent?.id){let l=r.agent.id;s.toolCalls.total++,s.toolCalls.byTool[l]=(s.toolCalls.byTool[l]||0)+1}if(Ui(r,s.contextReferences),r.response&&Array.isArray(r.response))for(let l of r.response){if(!l)continue;let u=l;if(u.kind==="toolInvocationSerialized"||u.kind==="prepareToolInvocation"){let p=u.toolId||u.toolName||u.invocationMessage?.toolName||u.toolSpecificData?.kind||"unknown";Ii(p,s,o.toolNameMap)}}}{let r=(e.selectedModel?.identifier||e.selectedModel?.metadata?.id||e.inputState?.selectedModel?.metadata?.id||"gpt-4o").replace(/^copilot\//,""),l=[];for(let m of i){if(!m||!m.requestId)continue;let h=r;m.modelId?h=m.modelId.replace(/^copilot\//,""):m.result?.metadata?.modelId?h=m.result.metadata.modelId.replace(/^copilot\//,""):m.result?.details&&(h=kt(m,o.modelPricing)),l.push(h)}let u=[...new Set(l)];s.modelSwitching.uniqueModels=u,s.modelSwitching.modelCount=u.length,s.modelSwitching.totalRequests=l.length;let p=0;for(let m=1;m<l.length;m++)l[m]!==l[m-1]&&p++;s.modelSwitching.switchCount=p,Ce(o.modelPricing,u,l,s)}{let{effortByRequestId:r,defaultEffort:l,switchCount:u}=Xa(t);if(l!==null||r.size>0){let p={};for(let[,m]of r)p[m]=(p[m]||0)+1;r.size===0&&l!==null&&(p[l]=i.length),s.thinkingEffort={byEffort:p,switchCount:u,defaultEffort:l}}}Oi(s)}function Ud(o,e,t){if(e.requests&&Array.isArray(e.requests))for(let s of e.requests){let n=s,i="ask";if(n.agent?.id){let r=n.agent.id.toLowerCase();r.includes("edit")?i="edit":r.includes("agent")&&(i="agent")}else if(e.mode?.id){let r=e.mode.id.toLowerCase();r.includes("agent")?i="agent":r.includes("edit")&&(i="edit")}if(i==="agent"?t.modeUsage.agent++:i==="edit"?t.modeUsage.edit++:t.modeUsage.ask++,Ui(n,t.contextReferences),n.response&&Array.isArray(n.response))for(let r of n.response){if(!r)continue;let l=r;if(l.kind==="toolInvocationSerialized"||l.kind==="prepareToolInvocation"){let u=l.toolId||l.toolName||l.invocationMessage?.toolName||"unknown";Ii(u,t,o.toolNameMap)}if(l.kind==="mcpServersStarting"&&l.didStartServerIds)for(let u of l.didStartServerIds)t.mcpTools.total++,t.mcpTools.byServer[u]=(t.mcpTools.byServer[u]||0)+1;l.kind==="inlineReference"&&l.inlineReference&&Ri([l],t.contextReferences)}}}function so(o,e){o.toolCalls.total+=e.toolCalls.total;for(let[t,s]of Object.entries(e.toolCalls.byTool))o.toolCalls.byTool[t]=(o.toolCalls.byTool[t]||0)+s;o.modeUsage.ask+=e.modeUsage.ask,o.modeUsage.edit+=e.modeUsage.edit,o.modeUsage.agent+=e.modeUsage.agent,o.modeUsage.plan+=e.modeUsage.plan,o.modeUsage.customAgent+=e.modeUsage.customAgent,o.modeUsage.cli+=e.modeUsage.cli,o.contextReferences.file+=e.contextReferences.file,o.contextReferences.selection+=e.contextReferences.selection,o.contextReferences.implicitSelection+=e.contextReferences.implicitSelection||0,o.contextReferences.symbol+=e.contextReferences.symbol,o.contextReferences.codebase+=e.contextReferences.codebase,o.contextReferences.workspace+=e.contextReferences.workspace,o.contextReferences.terminal+=e.contextReferences.terminal,o.contextReferences.vscode+=e.contextReferences.vscode,o.contextReferences.terminalLastCommand+=e.contextReferences.terminalLastCommand||0,o.contextReferences.terminalSelection+=e.contextReferences.terminalSelection||0,o.contextReferences.clipboard+=e.contextReferences.clipboard||0,o.contextReferences.changes+=e.contextReferences.changes||0,o.contextReferences.outputPanel+=e.contextReferences.outputPanel||0,o.contextReferences.problemsPanel+=e.contextReferences.problemsPanel||0,o.contextReferences.pullRequest+=e.contextReferences.pullRequest||0,o.contextReferences.copilotInstructions+=e.contextReferences.copilotInstructions||0,o.contextReferences.agentsMd+=e.contextReferences.agentsMd||0;for(let[t,s]of Object.entries(e.contextReferences.byKind||{}))o.contextReferences.byKind[t]=(o.contextReferences.byKind[t]||0)+s;for(let[t,s]of Object.entries(e.contextReferences.byPath||{}))o.contextReferences.byPath[t]=(o.contextReferences.byPath[t]||0)+s;o.mcpTools.total+=e.mcpTools.total;for(let[t,s]of Object.entries(e.mcpTools.byServer))o.mcpTools.byServer[t]=(o.mcpTools.byServer[t]||0)+s;for(let[t,s]of Object.entries(e.mcpTools.byTool))o.mcpTools.byTool[t]=(o.mcpTools.byTool[t]||0)+s;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){o.modelSwitching.totalSessions++,o.modelSwitching.modelsPerSession.push(e.modelSwitching.modelCount);for(let t of e.modelSwitching.tiers.standard)o.modelSwitching.standardModels.includes(t)||o.modelSwitching.standardModels.push(t);for(let t of e.modelSwitching.tiers.premium)o.modelSwitching.premiumModels.includes(t)||o.modelSwitching.premiumModels.push(t);for(let t of e.modelSwitching.tiers.unknown)o.modelSwitching.unknownModels.includes(t)||o.modelSwitching.unknownModels.push(t);if(e.modelSwitching.hasMixedTiers&&o.modelSwitching.mixedTierSessions++,o.modelSwitching.standardRequests+=e.modelSwitching.standardRequests||0,o.modelSwitching.premiumRequests+=e.modelSwitching.premiumRequests||0,o.modelSwitching.unknownRequests+=e.modelSwitching.unknownRequests||0,o.modelSwitching.totalRequests+=e.modelSwitching.totalRequests||0,o.modelSwitching.modelsPerSession.length>0){let t=o.modelSwitching.modelsPerSession;o.modelSwitching.averageModelsPerSession=t.reduce((s,n)=>s+n,0)/t.length,o.modelSwitching.maxModelsPerSession=Math.max(...t),o.modelSwitching.minModelsPerSession=Math.min(...t),o.modelSwitching.switchingFrequency=t.filter(s=>s>1).length/t.length*100}}if(e.editScope){o.editScope.singleFileEdits+=e.editScope.singleFileEdits,o.editScope.multiFileEdits+=e.editScope.multiFileEdits,o.editScope.totalEditedFiles+=e.editScope.totalEditedFiles;let t=o.editScope.singleFileEdits+o.editScope.multiFileEdits;o.editScope.avgFilesPerSession=t>0?o.editScope.totalEditedFiles/t:0}if(e.applyUsage&&(o.applyUsage.totalApplies+=e.applyUsage.totalApplies,o.applyUsage.totalCodeBlocks+=e.applyUsage.totalCodeBlocks,o.applyUsage.applyRate=o.applyUsage.totalCodeBlocks>0?o.applyUsage.totalApplies/o.applyUsage.totalCodeBlocks*100:0),e.sessionDuration){o.sessionDuration.totalDurationMs+=e.sessionDuration.totalDurationMs;let t=o.sessions;if(t>0){o.sessionDuration.avgDurationMs=o.sessionDuration.totalDurationMs/t;let s=o.sessionDuration.avgFirstProgressMs*(t-1);o.sessionDuration.avgFirstProgressMs=(s+e.sessionDuration.avgFirstProgressMs)/t;let n=o.sessionDuration.avgTotalElapsedMs*(t-1);o.sessionDuration.avgTotalElapsedMs=(n+e.sessionDuration.avgTotalElapsedMs)/t;let i=o.sessionDuration.avgWaitTimeMs*(t-1);o.sessionDuration.avgWaitTimeMs=(i+e.sessionDuration.avgWaitTimeMs)/t}}if(e.conversationPatterns){o.conversationPatterns.multiTurnSessions+=e.conversationPatterns.multiTurnSessions,o.conversationPatterns.singleTurnSessions+=e.conversationPatterns.singleTurnSessions,o.conversationPatterns.maxTurnsInSession=Math.max(o.conversationPatterns.maxTurnsInSession,e.conversationPatterns.maxTurnsInSession);let t=o.conversationPatterns.multiTurnSessions+o.conversationPatterns.singleTurnSessions;if(t>0){let n=o.conversationPatterns.avgTurnsPerSession*(t-1)+e.conversationPatterns.avgTurnsPerSession;o.conversationPatterns.avgTurnsPerSession=n/t}}if(e.agentTypes&&(o.agentTypes.editsAgent+=e.agentTypes.editsAgent,o.agentTypes.defaultAgent+=e.agentTypes.defaultAgent,o.agentTypes.workspaceAgent+=e.agentTypes.workspaceAgent,o.agentTypes.other+=e.agentTypes.other),e.thinkingEffort){o.thinkingEffortUsage||(o.thinkingEffortUsage={byEffort:{},sessionCount:0,switchCount:0}),o.thinkingEffortUsage.sessionCount++,o.thinkingEffortUsage.switchCount+=e.thinkingEffort.switchCount;for(let[t,s]of Object.entries(e.thinkingEffort.byEffort))o.thinkingEffortUsage.byEffort[t]=(o.thinkingEffortUsage.byEffort[t]||0)+s}}function ol(o,e){let t=o.match(/#file/gi);t&&(e.file+=t.length);let s=o.match(/#selection/gi);s&&(e.selection+=s.length);let n=o.match(/#symbol/gi),i=o.match(/#sym(?![:\w])/gi);n&&(e.symbol+=n.length),i&&(e.symbol+=i.length);let r=o.match(/#codebase/gi);r&&(e.codebase+=r.length);let l=o.match(/#terminalLastCommand/gi);l&&(e.terminalLastCommand+=l.length);let u=o.match(/#terminalSelection/gi);u&&(e.terminalSelection+=u.length);let p=o.match(/#clipboard/gi);p&&(e.clipboard+=p.length);let m=o.match(/#changes/gi);m&&(e.changes+=m.length);let h=o.match(/#outputPanel/gi);h&&(e.outputPanel+=h.length);let g=o.match(/#problemsPanel\b/gi);g&&(e.problemsPanel+=g.length);let _=o.match(/#pr\b/gi);_&&(e.pullRequest+=_.length);let y=o.match(/#pullRequest\b/gi);y&&(e.pullRequest+=y.length);let C=o.match(/@workspace/gi);C&&(e.workspace+=C.length);let x=o.match(/@terminal/gi);x&&(e.terminal+=x.length);let w=o.match(/@vscode/gi);w&&(e.vscode+=w.length)}function Ri(o,e){if(Array.isArray(o))for(let t of o){if(!t||typeof t!="object")continue;let s=t,n=s.kind;typeof n=="string"&&(e.byKind[n]=(e.byKind[n]||0)+1);let i=null;if(n==="reference"&&s.reference?i=s.reference:n==="inlineReference"&&s.inlineReference&&(i=s.inlineReference),n==="pullRequest"){e.pullRequest++;continue}if(i){let r=i.fsPath||i.path;if(typeof r=="string"){let u=ie(r);u.endsWith("/.github/copilot-instructions.md")||u.includes(".github/copilot-instructions.md")?e.copilotInstructions++:u.endsWith("/agents.md")||u.match(/\/agents\.md$/i)?e.agentsMd++:u.endsWith(".instructions.md")||u.includes(".instructions.md")?e.copilotInstructions++:e.file++;let p=r.length>100?"..."+r.substring(r.length-97):r;e.byPath[p]=(e.byPath[p]||0)+1}let l=i.name;if(typeof l=="string"&&n==="reference"){e.symbol++;let u=`#sym:${l}`;e.byPath[u]=(e.byPath[u]||0)+1}}}}function cl(o,e){if(!o||typeof o!="object")return;let t=o;if(Array.isArray(t.variables))for(let s of t.variables){if(!s||typeof s!="object")continue;let n=s.kind;if(typeof n=="string"&&(e.byKind[n]=(e.byKind[n]||0)+1),n==="generic"&&typeof s.name=="string"&&s.name.startsWith("sym:")){e.symbol++;let i=`#${s.name}`;e.byPath[i]=(e.byPath[i]||0)+1}if(n==="promptFile"&&s.value){let i=s.value,r=i.fsPath||i.path||i.external;if(typeof r=="string"){let l=ie(r);l.endsWith("/.github/copilot-instructions.md")||l.includes(".github/copilot-instructions.md")||l.endsWith("/agents.md")||l.match(/\/agents\.md$/i)}}}}function Oi(o){let e=o.modeUsage.ask+o.modeUsage.edit+o.modeUsage.agent+o.modeUsage.cli;o.conversationPatterns={multiTurnSessions:e>1?1:0,singleTurnSessions:e===1?1:0,avgTurnsPerSession:e,maxTurnsInSession:e}}function Ui(o,e){if(!o||typeof o!="object")return;let t=o,s=t.message;if(s&&typeof s=="object"){let r=s;typeof r.text=="string"&&ol(r.text,e);let l=r.parts;if(Array.isArray(l)){for(let u of l)if(u&&typeof u=="object"){let p=u;typeof p.text=="string"&&ol(p.text,e)}}}let n=t.contentReferences;Array.isArray(n)&&Ri(n,e);let i=t.variableData;i!==void 0&&cl(i,e)}function no(o){try{let t=Lt.readFileSync(o,"utf8").trim().split(`
48
+ `),s=[];for(let n of t)if(n.trim())try{s.push(JSON.parse(n))}catch{}return s}catch{return[]}}function Ce(o,e,t,s){let n=[],i=[],r=[];for(let m of e){let h=rt(m,o);h==="standard"?n.push(m):h==="premium"?i.push(m):r.push(m)}s.modelSwitching.tiers={standard:n,premium:i,unknown:r},s.modelSwitching.hasMixedTiers=n.length>0&&i.length>0;let l=0,u=0,p=0;for(let m of t){let h=rt(m,o);h==="standard"?l++:h==="premium"?u++:p++}s.modelSwitching.standardRequests=l,s.modelSwitching.premiumRequests=u,s.modelSwitching.unknownRequests=p}async function il(o,e,t,s,n){try{let i=await Nd(o,e,s,n),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 u=[],p=[],m=[];for(let _ of l){let y=rt(_,o.modelPricing);y==="standard"?u.push(_):y==="premium"?p.push(_):m.push(_)}t.modelSwitching.tiers={standard:u,premium:p,unknown:m},t.modelSwitching.hasMixedTiers=u.length>0&&p.length>0;let h=s??await Lt.promises.readFile(e,"utf8");if(Yt(h))return;if(e.endsWith(".jsonl")||it(h)){let _=h.trim().split(`
49
+ `),y={standard:0,premium:0,unknown:0},C="unknown";for(let x of _)if(x.trim())try{let w=JSON.parse(x);if(w.kind===0){let M=w.v?.selectedModel?.identifier||w.v?.selectedModel?.metadata?.id||w.v?.inputState?.selectedModel?.metadata?.id;M&&(C=M.replace(/^copilot\//,""))}if(w.kind===2&&w.k?.[0]==="selectedModel"){let M=w.v?.identifier||w.v?.metadata?.id;M&&(C=M.replace(/^copilot\//,""))}if(w.type==="session.start"&&typeof w.data?.selectedModel=="string"&&(C=w.data.selectedModel),w.type==="session.model_change"&&typeof w.data?.newModel=="string"&&(C=w.data.newModel),w.type==="user.message"){let M=w.model||C,S=rt(M,o.modelPricing);S==="standard"?y.standard++:S==="premium"?y.premium++:y.unknown++}if(w.kind===2&&w.k?.[0]==="requests"&&Array.isArray(w.v))for(let M of w.v){let S=C;M.modelId?S=M.modelId.replace(/^copilot\//,""):M.result?.metadata?.modelId?S=M.result.metadata.modelId.replace(/^copilot\//,""):M.result?.details&&(S=kt(M,o.modelPricing));let T=rt(S,o.modelPricing);T==="standard"?y.standard++:T==="premium"?y.premium++:y.unknown++}}catch{}t.modelSwitching.standardRequests=y.standard,t.modelSwitching.premiumRequests=y.premium,t.modelSwitching.unknownRequests=y.unknown,t.modelSwitching.totalRequests=y.standard+y.premium+y.unknown}else{let _=n!==void 0?n:JSON.parse(h);if(!to(_)){o.warn(`Unexpected session format in ${e}`);return}let y=_;if(y.requests&&Array.isArray(y.requests)){let C=null,x=0,w={standard:0,premium:0,unknown:0};for(let M of y.requests){let T=kt(M,o.modelPricing);C&&T!==C&&x++,C=T;let k=rt(T,o.modelPricing);k==="standard"?w.standard++:k==="premium"?w.premium++:w.unknown++}t.modelSwitching.switchCount=x,t.modelSwitching.standardRequests=w.standard,t.modelSwitching.premiumRequests=w.premium,t.modelSwitching.unknownRequests=w.unknown,t.modelSwitching.totalRequests=w.standard+w.premium+w.unknown}}}catch(i){o.warn(`Error calculating model switching for ${e}: ${i}`)}}async function Fd(o,e,t,s,n){try{let i=s??await Lt.promises.readFile(e,"utf8");if(Yt(i))return;let r=e.endsWith(".jsonl")||it(i),l=new Set,u=0,p=0,m=[],h=[],g=[],_={editsAgent:0,defaultAgent:0,workspaceAgent:0,other:0};if(r){let S=i.trim().split(`
50
+ `).filter(k=>k.trim()),T=!1;if(S.length>0)try{let k=JSON.parse(S[0]);k&&typeof k.kind=="number"&&(T=!0)}catch{}if(T){let k={};for(let R of S)try{let H=JSON.parse(R);k=Ds(k,H)}catch{}k.creationDate!==void 0&&m.push(k.creationDate),k.lastMessageDate!==void 0&&m.push(k.lastMessageDate);let I=k.requests||[];({totalApplies:u,totalCodeBlocks:p}=nl(I,_,l,m,h,g))}}else{let S=n!==void 0?n:JSON.parse(i);if(!to(S)){o.warn(`Unexpected session format in ${e}`);return}let T=S;T.creationDate&&m.push(T.creationDate),T.lastMessageDate&&m.push(T.lastMessageDate);let k=T.requests??[];({totalApplies:u,totalCodeBlocks:p}=nl(k,_,l,m,h,g))}let y=l.size>0?1:0;t.editScope={singleFileEdits:l.size===1?1:0,multiFileEdits:l.size>1?1:0,totalEditedFiles:l.size,avgFilesPerSession:y>0?l.size/y:0},t.applyUsage={totalApplies:u,totalCodeBlocks:p,applyRate:p>0?u/p*100:0};let C=m.length>=2?Math.max(...m)-Math.min(...m):0,x=h.length>0?h.reduce((S,T)=>S+(T.firstProgress||0),0)/h.length:0,w=h.length>0?h.reduce((S,T)=>S+(T.totalElapsed||0),0)/h.length:0,M=g.length>0?g.reduce((S,T)=>S+T,0)/g.length:0;t.sessionDuration={totalDurationMs:C,avgDurationMs:C,avgFirstProgressMs:x,avgTotalElapsedMs:w,avgWaitTimeMs:M},Oi(t),t.agentTypes=_}catch(i){o.warn(`Error tracking enhanced metrics from ${e}: ${i}`)}}function me(){return{toolCalls:{total:0,byTool:{}},modeUsage:{ask:0,edit:0,agent:0,plan:0,customAgent:0,cli:0},contextReferences:ue(),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}}}async function ul(o,e,t,s){let n=me();try{let i=o.ecosystems.find(m=>m.handles(e));if(i&&Ca(i))return i.analyzeUsage(e,{modelPricing:o.modelPricing,toolNameMap:o.toolNameMap});let r=t??await Lt.promises.readFile(e,"utf8");if(e.endsWith(".jsonl")||it(r)){let m=r.trim().split(`
51
+ `).filter(S=>S.trim()),h=!1;if(m.length>0)try{let S=JSON.parse(m[0]);S&&typeof S.kind=="number"&&(h=!0)}catch{}if(h){let S={};for(let T of m)try{let k=JSON.parse(T);S=Ds(S,k)}catch{}return Od(o,S,m,n),n}let g="ask",_="unknown",y=null,C=0,x={},M=el(e)?sl(r):null;for(let S of m)if(S.trim())try{let T=JSON.parse(S);if(T.type==="session.start"&&T.data&&(typeof T.data.selectedModel=="string"&&(_=T.data.selectedModel),typeof T.data.reasoningEffort=="string"&&(y=T.data.reasoningEffort)),T.type==="session.model_change"&&typeof T.data?.newModel=="string"&&(_=T.data.newModel),T.type==="user.message"){C++;let k=typeof T.data?.reasoningEffort=="string"?T.data.reasoningEffort:y;k&&(x[k]=(x[k]||0)+1)}if(T.kind===0&&T.v?.inputState?.mode&&(g=Tn(T.v.inputState.mode),T.v?.inputState?.selections&&Array.isArray(T.v.inputState.selections))){for(let k of T.v.inputState.selections)if(k.startLineNumber!==k.endLineNumber||k.startColumn!==k.endColumn){n.contextReferences.implicitSelection++;break}}if(T.kind===1&&T.k?.includes("mode")&&T.v&&(g=Tn(T.v)),T.kind===1&&T.k?.includes("selections")&&Array.isArray(T.v)){for(let k of T.v)if(k&&(k.startLineNumber!==k.endLineNumber||k.startColumn!==k.endColumn)){n.contextReferences.implicitSelection++;break}}if(T.kind===1&&T.k?.includes("contentReferences")&&Array.isArray(T.v)&&Ri(T.v,n.contextReferences),T.kind===1&&T.k?.includes("variableData")&&T.v&&cl(T.v,n.contextReferences),T.kind===2&&T.k?.[0]==="requests"&&Array.isArray(T.v))for(let k of T.v){if(k.requestId&&ll(g,n.modeUsage),k.agent?.id){let I=k.agent.id;n.toolCalls.total++,n.toolCalls.byTool[I]=(n.toolCalls.byTool[I]||0)+1}if(Ui(k,n.contextReferences),k.response&&Array.isArray(k.response))for(let I of k.response){if(!I)continue;let R=I;if(R.kind==="toolInvocationSerialized"||R.kind==="prepareToolInvocation"){n.toolCalls.total++;let H=R.toolId||R.toolName||R.invocationMessage?.toolName||R.toolSpecificData?.kind||"unknown";n.toolCalls.byTool[H]=(n.toolCalls.byTool[H]||0)+1}}}if(T.kind===2&&T.k?.includes("response")&&Array.isArray(T.v)){for(let k of T.v)if(k&&k.kind==="toolInvocationSerialized"){n.toolCalls.total++;let I=k.toolId||k.toolName||k.invocationMessage?.toolName||k.toolSpecificData?.kind||"unknown";n.toolCalls.byTool[I]=(n.toolCalls.byTool[I]||0)+1}}if(T.type==="user.message"&&(M==="agent"?n.modeUsage.agent++:M==="ask"?n.modeUsage.ask++:n.modeUsage.cli++),T.type==="tool.call"||T.type==="tool.result"||T.type==="tool.execution_start"){let k=T.data?.toolName||T.toolName||"unknown";Ii(k,n,o.toolNameMap)}if(T.type==="mcp.tool.call"||T.data?.mcpServer){n.mcpTools.total++;let k=T.data?.mcpServer||"unknown",I=T.data?.toolName||T.toolName||"unknown";n.mcpTools.byServer[k]=(n.mcpTools.byServer[k]||0)+1;let R=ks(I);n.mcpTools.byTool[R]=(n.mcpTools.byTool[R]||0)+1}}catch{}if(y!==null||Object.keys(x).length>0){let S=Object.keys(x).length>0?x:y!==null?{[y]:C}:{};n.thinkingEffort={byEffort:S,switchCount:0,defaultEffort:y}}return await il(o,e,n,r),Oi(n),n}let u=s!==void 0?s:JSON.parse(r);if(!to(u))return o.warn(`Unexpected session format in ${e}`),n;Ud(o,u,n),await il(o,e,n,r,s),await Fd(o,e,n,r,s)}catch(i){o.warn(`Error analyzing session usage from ${e}: ${i}`)}return n}function rl(o,e,t){if(o.result?.usage){let s=o.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 o.result?.promptTokens=="number"&&typeof o.result?.outputTokens=="number"?(t[e].inputTokens+=o.result.promptTokens,t[e].outputTokens+=o.result.outputTokens,!0):o.result?.metadata&&typeof o.result.metadata.promptTokens=="number"&&typeof o.result.metadata.outputTokens=="number"?(t[e].inputTokens+=o.result.metadata.promptTokens,t[e].outputTokens+=o.result.metadata.outputTokens,!0):!1}function al(o,e,t,s){for(let n of o){let i=Kt(n);if(i){let r=i.modelName||e;t[r]||(t[r]={inputTokens:0,outputTokens:0}),i.prompt&&(t[r].inputTokens+=K(i.prompt,r,s)),i.result&&(t[r].outputTokens+=K(i.result,r,s))}}}async function Nd(o,e,t,s){let n={};if(o.ecosystems){let r=o.ecosystems.find(l=>l.handles(e));if(r)return r.getModelUsage(e)}let i=e.split(/[/\\]/).pop()||e;try{let r=t??await Lt.promises.readFile(e,"utf8");if(Yt(r))return n;if(e.endsWith(".jsonl")||it(r)){let m=r.trim().split(`
52
+ `),h="unknown",g={},_=!1,y=null,C=null,x=0;for(let M of m)if(M.trim())try{let S=JSON.parse(M);if(typeof S.kind=="number"&&(_=!0,g=Ds(g,S)),S.type==="session.start"&&typeof S.data?.selectedModel=="string"&&(h=S.data.selectedModel),S.type==="session.model_change"&&typeof S.data?.newModel=="string"&&(h=S.data.newModel),S.kind===0){let k=S.v?.selectedModel?.identifier||S.v?.selectedModel?.metadata?.id||S.v?.inputState?.selectedModel?.metadata?.id;k&&(h=k.replace(/^copilot\//,""))}if(S.kind===2&&S.k?.[0]==="selectedModel"){let k=S.v?.identifier||S.v?.metadata?.id;k&&(h=k.replace(/^copilot\//,""))}let T=S.data?.model||S.model||h;if(n[T]||(n[T]={inputTokens:0,outputTokens:0}),!_){if(S.type==="session.shutdown"&&S.data?.modelMetrics){y||(y={});for(let[k,I]of Object.entries(S.data.modelMetrics)){let R=I?.usage;if(R){y[k]||(y[k]={inputTokens:0,outputTokens:0}),y[k].inputTokens+=typeof R.inputTokens=="number"?R.inputTokens:0,y[k].outputTokens+=typeof R.outputTokens=="number"?R.outputTokens:0;let H=typeof R.cacheReadTokens=="number"?R.cacheReadTokens:0,G=typeof R.cacheWriteTokens=="number"?R.cacheWriteTokens:0;H>0&&(y[k].cachedReadTokens=(y[k].cachedReadTokens??0)+H),G>0&&(y[k].cacheCreationTokens=(y[k].cacheCreationTokens??0)+G)}}}else if(S.type==="user.message"&&S.data?.content)n[T].inputTokens+=K(S.data.content,T,o.tokenEstimators);else if(S.type==="assistant.message"){let k=typeof S.data?.outputTokens=="number"?S.data.outputTokens:0;k>0?(C||(C={}),C[T]=(C[T]??0)+k):S.data?.content&&(n[T].outputTokens+=K(S.data.content,T,o.tokenEstimators))}else if(S.type==="tool.execution_start")x++;else if(S.type==="tool.execution_complete"&&(S.data?.result?.content||S.data?.result?.detailedContent)){let k=S.data.result.content||S.data.result.detailedContent;n[T].inputTokens+=K(String(k),T,o.tokenEstimators)}}}catch{}if(!_&&y)return y;if(!_&&C){let M=Math.max(1,Math.round(x/2)),S=Math.max(1,(M+1)/2),T={};for(let[k,I]of Object.entries(C)){let R=n[k]?.inputTokens??0;T[k]={inputTokens:Math.round(R*S),outputTokens:I}}return T}if(_&&g.requests&&Array.isArray(g.requests))for(let M of g.requests){if(!M)continue;let S=M;if(!S.requestId)continue;let T=h;if(S.modelId?T=S.modelId.replace(/^copilot\//,""):S.result?.metadata?.modelId?T=S.result.metadata.modelId.replace(/^copilot\//,""):S.result?.details&&(T=kt(S,o.modelPricing)),n[T]||(n[T]={inputTokens:0,outputTokens:0}),!rl(S,T,n)&&(S.message?.text&&(n[T].inputTokens+=K(S.message.text,T,o.tokenEstimators)),S.response&&Array.isArray(S.response)))for(let k of S.response){let{text:I}=Qt(k);I&&(n[T].outputTokens+=K(I,T,o.tokenEstimators))}S.response&&Array.isArray(S.response)&&al(S.response,T,n,o.tokenEstimators)}let w=Ai(m);for(let[M,S]of w){let T=g.requests?.[M];if(!T||T.result?.usage||typeof T.result?.promptTokens=="number"||T.result?.metadata&&typeof T.result.metadata.promptTokens=="number")continue;let k=h;T.modelId&&(k=T.modelId.replace(/^copilot\//,"")),n[k]||(n[k]={inputTokens:0,outputTokens:0}),n[k].inputTokens+=S.promptTokens,n[k].outputTokens+=S.outputTokens}return n}let u=s!==void 0?s:JSON.parse(r);if(!to(u))return o.warn(`Unexpected session format in ${e}`),n;let p=u;if(p.requests&&Array.isArray(p.requests))for(let m of p.requests){let h=m,g=kt(h,o.modelPricing);if(n[g]||(n[g]={inputTokens:0,outputTokens:0}),!rl(h,g,n)){if(h.message&&h.message.parts)for(let _ of h.message.parts)_.text&&(n[g].inputTokens+=K(_.text,g,o.tokenEstimators));if(h.response&&Array.isArray(h.response))for(let _ of h.response){let{text:y}=Qt(_);y&&(n[g].outputTokens+=K(y,g,o.tokenEstimators))}}h.response&&Array.isArray(h.response)&&al(h.response,g,n,o.tokenEstimators)}}catch(r){o.warn(`Error getting model usage from ${e}: ${r}`)}return n}var dl=U(require("fs"));async function De(o){try{return await dl.promises.access(o),!0}catch{return!1}}var Is=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)?lt.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,n,i=this.openCode.getOpenCodeSessionId(e),r=null;this.openCode.isOpenCodeDbSession(e)&&i?r=await this.openCode.readOpenCodeDbSession(i):r=await Cs(async()=>JSON.parse(await oo.promises.readFile(e,"utf8")),null,`openCodeAdapter getMeta readFile(${e})`),r&&(s=r.title||r.slug,n=r.directory||void 0,r.time?.created&&t.push(r.time.created),r.time?.updated&&t.push(r.time.updated));let l=await this.openCode.getOpenCodeMessagesForSession(e);for(let u of l)u.time?.created&&t.push(u.time.created),u.time?.completed&&t.push(u.time.completed);return t.sort((u,p)=>u-p),{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:n}}getEditorRoot(e){return this.openCode.getOpenCodeDataDir()}async discover(e){let t=this.getCandidatePaths(),s=[],n=this.openCode.getOpenCodeDataDir(),i=lt.join(n,"storage","session"),r=lt.join(n,"opencode.db");if(e(`\u{1F4C1} Checking OpenCode JSON path: ${i}`),e(`\u{1F4C1} Checking OpenCode DB path: ${r}`),await De(i)){let p=async h=>{let g=[];try{g=await oo.promises.readdir(h,{withFileTypes:!0})}catch(_){console.error(`[openCodeAdapter] Failed to read dir ${h}:`,_)}for(let _ of g)if(_.isDirectory())await p(lt.join(h,_.name));else if(_.name.startsWith("ses_")&&_.name.endsWith(".json")){let y=lt.join(h,_.name);try{(await oo.promises.stat(y)).size>0&&s.push(y)}catch(C){console.error(`[openCodeAdapter] Failed to stat ${y}:`,C)}}};await p(i);let m=s.length;m>0&&e(`\u{1F4C4} Found ${m} session files in OpenCode storage`)}if(await De(r))try{let p=new Set(s.filter(g=>this.openCode.isOpenCodeSessionFile(g)).map(g=>this.openCode.getOpenCodeSessionId(g)).filter(Boolean)),m=await this.openCode.discoverOpenCodeDbSessions(),h=0;for(let g of m)p.has(g)||(s.push(lt.join(n,`opencode.db#${g}`)),h++);h>0&&e(`\u{1F4C4} Found ${h} additional session(s) in OpenCode database`)}catch(p){e(`OpenCode DB exists but could not be read: ${p}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){let e=this.openCode.getOpenCodeDataDir();return[{path:lt.join(e,"storage","session"),source:"OpenCode (JSON)"},{path:lt.join(e,"opencode.db"),source:"OpenCode (DB)"}]}async buildTurns(e){let t=[],s=await this.openCode.getOpenCodeMessagesForSession(e);if(s.length>0){let n=0,i=0;for(let r=0;r<s.length;r++){let l=s[r];if(l.role!=="user")continue;n++;let u=s.filter((S,T)=>T>r&&S.role==="assistant"&&S.parentID===l.id),m=(await this.openCode.getOpenCodePartsForMessage(l.id)).filter(S=>S.type==="text").map(S=>S.text||"").join(`
53
+ `),h="",g=[],_=null,y=0,C=i;for(let S of u){_||(_=S.modelID||null),y+=S.tokens?.reasoning||0,typeof S.tokens?.total=="number"&&(C=Math.max(C,S.tokens.total));let T=await this.openCode.getOpenCodePartsForMessage(S.id);for(let k of T)k.type==="text"&&k.text?h+=k.text:k.type==="tool"&&k.tool&&g.push({toolName:k.tool,arguments:k.state?.input?JSON.stringify(k.state.input):void 0,result:k.state?.output||void 0})}let x=C-i,w=u.reduce((S,T)=>S+(T.tokens?.output||0)+(T.tokens?.reasoning||0),0),M=Math.max(0,x-w);t.push({turnNumber:n,timestamp:l.time?.created?new Date(l.time.created).toISOString():null,mode:"cli",userMessage:m,assistantResponse:h,model:_,toolCalls:g,contextReferences:ue(),mcpTools:[],inputTokensEstimate:M,outputTokensEstimate:w-y,thinkingTokensEstimate:y}),i=C}}return{turns:t}}async getSyncData(e){return this.openCode.getOpenCodeSessionData(e)}async analyzeUsage(e,t){let s=me(),n=await this.openCode.getOpenCodeMessagesForSession(e);if(n.length>0){let i=[];for(let u of n)if(u.role==="user"&&s.modeUsage.cli++,u.role==="assistant"){let p=u.modelID||"unknown";i.push(p);let m=await this.openCode.getOpenCodePartsForMessage(u.id);for(let h of m)if(h.type==="tool"&&h.tool){s.toolCalls.total++;let g=h.tool;s.toolCalls.byTool[g]=(s.toolCalls.byTool[g]||0)+1}}let r=[...new Set(i)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=i.length;let l=0;for(let u=1;u<i.length;u++)i[u]!==i[u-1]&&l++;s.modelSwitching.switchCount=l}return s}};var ml=U(require("fs")),ct=U(require("path"));var Rs=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),n;s&&(n=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:n,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 ct.dirname(this.crush.getCrushDbPath(e))}async discover(e){let t=this.getCandidatePaths(),s=[];try{let n=this.crush.readCrushProjects();e(`\u{1F4C1} Crush: found ${n.length} project(s) in projects.json`);let i=await Promise.all(n.map(async l=>{let u=ct.join(l.data_dir,"crush.db");e(`\u{1F4C1} Checking Crush DB path: ${u}`);try{return await ml.promises.access(u),(await this.crush.discoverSessionsInDb(u)).map(m=>ct.join(l.data_dir,`crush.db#${m}`))}catch(p){e(`Could not read Crush database for ${l.path}: ${p}`)}return[]})),r=i.reduce((l,u)=>l+u.length,0);r>0&&e(`\u{1F4C4} Found ${r} session(s) in Crush database(s)`),s.push(...i.flat())}catch(n){e(`Could not read Crush projects: ${n}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){let e=this.crush.getCrushConfigDir(),t=[{path:ct.join(e,"projects.json"),source:"Crush (projects.json)"}],s=bs(()=>this.crush.readCrushProjects().map(n=>({path:ct.join(n.data_dir,"crush.db"),source:`Crush (${ct.basename(n.path)})`})),[],"crushAdapter getCandidatePaths");return t.push(...s),t}async buildTurns(e){let t=[],s=await this.crush.getCrushMessages(e),n=await this.crush.readCrushSession(e),r=s.filter(u=>u.role==="user").length,l=0;for(let u=0;u<s.length;u++){let p=s[u];if(p.role!=="user")continue;l++;let m=[];for(let M=u+1;M<s.length&&s[M].role!=="user";M++)s[M].role==="assistant"&&m.push(s[M]);let g=(Array.isArray(p.parts)?p.parts:[]).filter(M=>M?.type==="text"&&M?.text).map(M=>M.text).join(`
54
+ `),_="",y=[],C=null;for(let M of m){C||(C=M.model||null);let S=Array.isArray(M.parts)?M.parts:[];for(let T of S)T?.type==="text"&&T?.text?_+=T.text:T?.type==="tool_call"&&T?.data?.name&&y.push({toolName:T.data.name,arguments:T.data.arguments?JSON.stringify(T.data.arguments):void 0})}let x=n?.prompt_tokens&&r>0?Math.round(n.prompt_tokens/r):0,w=n?.completion_tokens&&r>0?Math.round(n.completion_tokens/r):0;t.push({turnNumber:l,timestamp:p.created_at?new Date(p.created_at*1e3).toISOString():null,mode:"cli",userMessage:g,assistantResponse:_,model:C,toolCalls:y,contextReferences:ue(),mcpTools:[],inputTokensEstimate:x,outputTokensEstimate:w,thinkingTokensEstimate:0})}return{turns:t}}async getSyncData(e){return this.crush.getCrushSessionData(e)}async analyzeUsage(e,t){let s=me(),n=await this.crush.getCrushMessages(e),i=[];for(let u of n)if(u.role==="user"&&s.modeUsage.cli++,u.role==="assistant"){let p=u.model||"unknown";i.push(p);let m=Array.isArray(u.parts)?u.parts:[];for(let h of m)if(h?.type==="tool_call"&&h?.data?.name){s.toolCalls.total++;let g=h.data.name;s.toolCalls.byTool[g]=(s.toolCalls.byTool[g]||0)+1}}let r=[...new Set(i)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=i.length;let l=0;for(let u=1;u<i.length;u++)i[u]!==i[u-1]&&l++;return s.modelSwitching.switchCount=l,Ce(t.modelPricing,r,i,s),s}};var pl=U(require("path"));var Os=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 ie(e).includes("/ssmsgithubcopilot/")?"SSMS":"Visual Studio"}getBackingPath(e){return e}async stat(e){return this.visualStudio.statSessionFile(e)}async getTokens(e){let t=this.visualStudio.getTokenEstimates(e,this.estimateTokens);return{...t,actualTokens:t.tokens}}async countInteractions(e){let t=this.visualStudio.decodeSessionFile(e);return Promise.resolve(this.visualStudio.countInteractions(t))}async getModelUsage(e){return Promise.resolve(this.visualStudio.getModelUsage(e,this.estimateTokens))}async getMeta(e){let t=this.visualStudio.decodeSessionFile(e),s=this.visualStudio.getSessionTitle(t),n=this.visualStudio.getSessionTimestamps(t),i=[];return n.timeCreated&&i.push(new Date(n.timeCreated).getTime()),n.timeUpdated&&i.push(new Date(n.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 pl.dirname(e)}skipBackendSync=!0;async discover(e){let t=this.getCandidatePaths(),s=[];try{let n=this.visualStudio.discoverSessions();n.length>0&&(e(`\u{1F4C4} Found ${n.length} session file(s) in Visual Studio Copilot`),s.push(...n))}catch(n){e(`Could not read Visual Studio session files: ${n}`)}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){let s=this.visualStudio.decodeSessionFile(e).map((n,i)=>i===0?n:n?.[1]??n);return JSON.stringify(s,null,2)}async buildTurns(e){let t=[],s=this.visualStudio.decodeSessionFile(e),n=0;for(let i=1;i<s.length;i+=2){let r=s[i],l=s[i+1];if(!r)continue;let u=r[1],p=l?.[1];n++;let m=this.visualStudio.extractTextFromContent(u?.Content||[]),h=l?this.visualStudio.extractTextFromContent(p?.Content||[]):"",g=this.visualStudio.getModelId(p??u,!p),_=this.visualStudio.extractContextText(u?.Context),y=this.estimateTokens(m+_,g??"gpt-4"),C=l?this.estimateTokens(h,g??"gpt-4"):0,x=[];for(let w of p?.Content||[]){let M=Array.isArray(w)?w[1]:null;M?.Function&&x.push({toolName:String(M.Function.Description||"tool"),result:typeof M.Function.Result=="string"?M.Function.Result:void 0})}t.push({turnNumber:n,timestamp:u?.Timestamp?new Date(u.Timestamp).toISOString():null,mode:"ask",userMessage:m,assistantResponse:h,model:g,toolCalls:x,contextReferences:ue(),mcpTools:[],inputTokensEstimate:y,outputTokensEstimate:C,thinkingTokensEstimate:0})}return{turns:t}}async analyzeUsage(e,t){let s=me(),n=this.visualStudio.decodeSessionFile(e),i=[];for(let u=1;u<n.length;u++){let p=u%2===1,m=n[u]?.[1];if(p)s.modeUsage.ask++;else{let h=this.visualStudio.getModelId(m,!1);h&&i.push(h);for(let g of m?.Content??[]){let _=Array.isArray(g)?g[1]:null;if(_?.Function){s.toolCalls.total++;let y=String(_.Function.Name||_.Function.Description||"tool");if(_t(y)){s.mcpTools.total++;let C=bt(y,t.toolNameMap);s.mcpTools.byServer[C]=(s.mcpTools.byServer[C]||0)+1;let x=ks(y);s.mcpTools.byTool[x]=(s.mcpTools.byTool[x]||0)+1,s.toolCalls.total--}else s.toolCalls.byTool[y]=(s.toolCalls.byTool[y]||0)+1}}}}let r=[...new Set(i)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=i.length;let l=0;for(let u=1;u<i.length;u++)i[u]!==i[u-1]&&l++;return s.modelSwitching.switchCount=l,Ce(t.modelPricing,r,i,s),s}};var Fi=U(require("fs"));var Us=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 Fi.promises.stat(e)}async getTokens(e){let t=this.continue_.getTokensFromContinueSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return Promise.resolve(this.continue_.countContinueInteractions(e))}async getModelUsage(e){return Promise.resolve(this.continue_.getContinueModelUsage(e))}async getMeta(e){let t=this.continue_.getContinueSessionMeta(e),s=this.continue_.getContinueSessionId(e),n=this.continue_.readSessionsIndex().get(s),i=null,r=null;if(n?.dateCreated){i=new Date(n.dateCreated).toISOString();try{r=(await Fi.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 n=this.continue_.getContinueSessionFiles();n.length>0&&(e(`\u{1F4C4} Found ${n.length} session file(s) in Continue (~/.continue/sessions)`),s.push(...n))}catch(n){e(`Could not read Continue session files: ${n}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.continue_.getContinueSessionsDir(),source:"Continue"}]}async buildTurns(e){let t=[],s=this.continue_.buildContinueTurns(e),n=ue();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:n,mcpTools:[],inputTokensEstimate:i.inputTokens,outputTokensEstimate:i.outputTokens,thinkingTokensEstimate:0});return{turns:t}}async analyzeUsage(e,t){let s=me(),n=this.continue_.buildContinueTurns(e),i=this.continue_.getContinueSessionMeta(e),r=[];for(let p of n){s.modeUsage.ask++,p.model&&r.push(p.model);for(let m of p.toolCalls)s.toolCalls.total++,s.toolCalls.byTool[m.toolName]=(s.toolCalls.byTool[m.toolName]||0)+1}if(i?.mode==="agent")for(let p=0;p<n.length;p++)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 u=0;for(let p=1;p<r.length;p++)r[p]!==r[p-1]&&u++;return s.modelSwitching.switchCount=u,Ce(t.modelPricing,l,r,s),s}};var fl=U(require("fs"));var hl=U(require("fs"));var Gd=new Set(["review","bug","think","compact","pr_comments"]);function Ni(o){let e="";if(typeof o=="string")e=o;else if(Array.isArray(o)){for(let i of o)if(i?.type==="text"&&typeof i.text=="string"){e=i.text;break}}let s=e.trimStart().split(`
55
+ `)[0].trim().match(/^\/([a-z_]+)(?:\s|$)/i);if(!s)return null;let n=s[1].toLowerCase();return Gd.has(n)?n:null}var Fs=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 hl.promises.stat(e)}async getTokens(e){let t=this.claudeCode.getTokensFromClaudeCodeSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return Promise.resolve(this.claudeCode.countClaudeCodeInteractions(e))}async getModelUsage(e){return Promise.resolve(this.claudeCode.getClaudeCodeModelUsage(e))}async getMeta(e){let t=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 n=this.claudeCode.getClaudeCodeSessionFiles();n.length>0&&(e(`\u{1F4C4} Found ${n.length} session file(s) in Claude Code (~/.claude/projects)`),s.push(...n))}catch(n){e(`Could not read Claude Code session files: ${n}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.claudeCode.getClaudeCodeProjectsDir(),source:"Claude Code"}]}async analyzeUsage(e,t){let s=me(),n=await no(e),i=[];for(let u of n)if(u.type==="user"&&u.message?.role==="user"&&!u.isSidechain){s.modeUsage.cli++;let p=Ni(u.message?.content);if(p){let m=`__slash__${p}`;s.toolCalls.byTool[m]=(s.toolCalls.byTool[m]||0)+1}}else if(u.type==="assistant"){let p=Gt(u.message?.model||"unknown");i.push(p);let m=Array.isArray(u.message?.content)?u.message.content:[];for(let h of m)if(h?.type==="tool_use"){let g=String(h.name||"tool");if(_t(g)){let _=bt(g,t.toolNameMap);s.mcpTools.total++,s.mcpTools.byServer[_]=(s.mcpTools.byServer[_]||0)+1,s.mcpTools.byTool[g]=(s.mcpTools.byTool[g]||0)+1}else s.toolCalls.total++,s.toolCalls.byTool[g]=(s.toolCalls.byTool[g]||0)+1}}let r=[...new Set(i)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=i.length;let l=0;for(let u=1;u<i.length;u++)i[u]!==i[u-1]&&l++;return s.modelSwitching.switchCount=l,Ce(t.modelPricing,r,i,s),s}};var Ns=class{constructor(e,t,s,n){this.claudeDesktopCowork=e;this.isMcpToolFn=t;this.extractMcpServerNameFn=s;this.estimateTokensFn=n}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 fl.promises.stat(e)}async getTokens(e){let t=this.claudeDesktopCowork.getTokensFromCoworkSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return Promise.resolve(this.claudeDesktopCowork.countCoworkInteractions(e))}async getModelUsage(e){return Promise.resolve(this.claudeDesktopCowork.getCoworkModelUsage(e))}async getMeta(e){let t=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 n=this.claudeDesktopCowork.getCoworkSessionFiles();n.length>0&&(e(`\u{1F4C4} Found ${n.length} session file(s) in Claude Desktop Cowork`),s.push(...n))}catch(n){e(`Could not read Claude Desktop Cowork session files: ${n}`)}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=this.claudeDesktopCowork.readCoworkEvents(e),n=null,i=[],r=()=>{if(!n)return;let u=n.message?.content,p=typeof u=="string"?u:Array.isArray(u)?u.filter(S=>S.type==="text").map(S=>S.text||"").join(`
56
+ `):"",m="",h=0,g=0,_=null,y=[],C=[],x=new Set;for(let S of i){let T=S.message;!_&&T?.model&&(_=T.model);let k=S.requestId,I=!k||!x.has(k);k&&x.add(k);let R=T?.usage;R&&I&&(h+=(R.input_tokens||0)+(R.cache_creation_input_tokens||0)+(R.cache_read_input_tokens||0),g+=R.output_tokens||0);let H=Array.isArray(T?.content)?T.content:[];for(let G of H)if(G.type==="text")m+=G.text||"";else if(G.type==="tool_use"){let q=G.name||"unknown";this.isMcpToolFn(q)?C.push({server:this.extractMcpServerNameFn(q),tool:q}):y.push({toolName:q,arguments:G.input?JSON.stringify(G.input):void 0})}}let w=_||"claude-sonnet-4-6",M=h>0||g>0?{promptTokens:h,completionTokens:g}:void 0;t.push({turnNumber:t.length+1,timestamp:n.timestamp?new Date(n.timestamp).toISOString():null,mode:"agent",userMessage:p,assistantResponse:m,model:w,toolCalls:y,contextReferences:ue(),mcpTools:C,inputTokensEstimate:h||this.estimateTokensFn(p,w),outputTokensEstimate:g||this.estimateTokensFn(m,w),thinkingTokensEstimate:0,actualUsage:M})},l=u=>{let p=u.message?.content;if(typeof p=="string")return!!p.trim();if(!Array.isArray(p))return!1;let m=p.some(g=>g.type==="text"),h=p.some(g=>g.type==="tool_result");return m&&!h};for(let u of s)u.type==="user"&&!u.isSidechain&&u.message?.role==="user"&&l(u)?(r(),n=u,i.length=0):u.type==="assistant"&&u.message?.stop_reason&&u.message?.role==="assistant"&&i.push(u);return r(),{turns:t}}async analyzeUsage(e,t){let s=me(),n=await no(e),i=[];for(let u of n)if(u.type==="user"&&u.message?.role==="user"&&!u.isSidechain){s.modeUsage.ask++;let p=Ni(u.message?.content);if(p){let m=`__slash__${p}`;s.toolCalls.byTool[m]=(s.toolCalls.byTool[m]||0)+1}}else if(u.type==="assistant"){let p=Gt(u.message?.model||"unknown");i.push(p);let m=Array.isArray(u.message?.content)?u.message.content:[];for(let h of m)if(h?.type==="tool_use"){s.toolCalls.total++;let g=String(h.name||"tool");s.toolCalls.byTool[g]=(s.toolCalls.byTool[g]||0)+1}}let r=[...new Set(i)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=i.length;let l=0;for(let u=1;u<i.length;u++)i[u]!==i[u-1]&&l++;return s.modelSwitching.switchCount=l,Ce(t.modelPricing,r,i,s),s}};var gl=U(require("fs"));var Gs=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=this.mistralVibe.getTokensFromSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return Promise.resolve(this.mistralVibe.countInteractions(e))}async getModelUsage(e){return Promise.resolve(this.mistralVibe.getModelUsage(e))}async getMeta(e){let t=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 n=this.mistralVibe.discoverSessions();n.length>0&&(e(`\u{1F4C4} Found ${n.length} session file(s) in Mistral Vibe (~/.vibe/logs/session)`),s.push(...n))}catch(n){e(`Could not read Mistral Vibe session files: ${n}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.mistralVibe.getSessionLogDir(),source:"Mistral Vibe"}]}async buildTurns(e){let t=[],s=this.mistralVibe.readSessionMessages(e),n=this.mistralVibe.getSessionMeta(e),i=this.mistralVibe.getTokensFromSession(e),r=n.model||"devstral",l=[];for(let u=0;u<s.length;u++)s[u].role==="user"&&s[u].injected!==!0&&l.push(u);for(let u=0;u<l.length;u++){let p=l[u],m=u+1<l.length?l[u+1]:s.length,h=s[p],g=typeof h.content=="string"?h.content:"",_="",y=[];for(let C=p+1;C<m;C++){let x=s[C];if(x.role==="assistant"){if(typeof x.content=="string"&&(_+=x.content),Array.isArray(x.tool_calls))for(let w of x.tool_calls)y.push({toolName:w.function?.name||w.name||"unknown",arguments:w.function?.arguments?JSON.stringify(w.function.arguments):void 0})}else if(x.role==="tool"){let w=y[y.length-1];w&&(w.result=typeof x.content=="string"?x.content:void 0)}}t.push({turnNumber:u+1,timestamp:n.firstInteraction,mode:"cli",userMessage:g,assistantResponse:_,model:r,toolCalls:y,contextReferences:ue(),mcpTools:[],inputTokensEstimate:0,outputTokensEstimate:0,thinkingTokensEstimate:0})}return{turns:t,actualTokens:i.tokens}}async analyzeUsage(e,t){let s=me(),n=this.mistralVibe.readSessionMessages(e),r=this.mistralVibe.getSessionMeta(e).model||"devstral",l=[];for(let p of n)if(p.role==="user"&&p.injected!==!0)s.modeUsage.cli++;else if(p.role==="assistant"&&(l.push(r),Array.isArray(p.tool_calls)))for(let m of p.tool_calls){s.toolCalls.total++;let h=String(m.function?.name||m.name||"tool");s.toolCalls.byTool[h]=(s.toolCalls.byTool[h]||0)+1}let u=[...new Set(l)];return s.modelSwitching.uniqueModels=u,s.modelSwitching.modelCount=u.length,s.modelSwitching.totalRequests=l.length,s.modelSwitching.switchCount=0,Ce(t.modelPricing,u,l,s),s}};var yl=U(require("fs"));var Ls=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 yl.promises.stat(e)}async getTokens(e){let t=this.geminiCli.getTokensFromGeminiCliSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return Promise.resolve(this.geminiCli.countGeminiCliInteractions(e))}async getModelUsage(e){return Promise.resolve(this.geminiCli.getGeminiCliModelUsage(e))}async getMeta(e){return Promise.resolve(this.geminiCli.getGeminiCliSessionMeta(e))}getEditorRoot(e){return this.geminiCli.getGeminiDataDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let n=this.geminiCli.getGeminiCliSessionFiles();n.length>0&&(e(`\u{1F4C4} Found ${n.length} session file(s) in Gemini CLI (~/.gemini/tmp/*/chats)`),s.push(...n))}catch(n){e(`Could not read Gemini CLI session files: ${n}`)}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 Promise.resolve(this.geminiCli.buildGeminiCliTurns(e))}async getDailyFractions(e){return Promise.resolve(this.geminiCli.getGeminiCliDailyFractions(e))}async analyzeUsage(e,t){let s=me(),n=this.geminiCli.readGeminiCliSession(e),i=[];s.modeUsage.cli+=n.userRecords.length;for(let u of n.assistantRecords){let p=Zn(u.model||"unknown");i.push(p);for(let m of Array.isArray(u.toolCalls)?u.toolCalls:[]){let h=typeof m?.name=="string"&&m.name.trim().length>0?m.name.trim():typeof m?.displayName=="string"&&m.displayName.trim().length>0?m.displayName.trim():"";h&&(s.toolCalls.total++,s.toolCalls.byTool[h]=(s.toolCalls.byTool[h]||0)+1)}}let r=[...new Set(i)];s.modelSwitching.uniqueModels=r,s.modelSwitching.modelCount=r.length,s.modelSwitching.totalRequests=i.length;let l=0;for(let u=1;u<i.length;u++)i[u]!==i[u-1]&&l++;return s.modelSwitching.switchCount=l,Ce(t.modelPricing,r,i,s),s}};var We=U(require("fs")),V=U(require("path")),$s=U(require("os"));var js=["Code","Code - Insiders","Code - Exploration","VSCodium","Cursor"],Cl=new Set(["Public","Default","Default User","All Users"]);function Gi(){return $s.platform()==="linux"&&(typeof process.env.WSL_DISTRO_NAME=="string"||typeof process.env.WSL_INTEROP=="string")}function _l(){let o=$s.platform(),e=$s.homedir(),t=[];if(o==="win32"){let s=process.env.APPDATA||V.join(e,"AppData","Roaming");for(let n of js)t.push(V.join(s,n,"User"))}else if(o==="darwin")for(let s of js)t.push(V.join(e,"Library","Application Support",s,"User"));else{let s=process.env.XDG_CONFIG_HOME||V.join(e,".config");for(let n of js)t.push(V.join(s,n,"User"))}return t.push(V.join(e,".vscode-server","data","User"),V.join(e,".vscode-server-insiders","data","User"),V.join(e,".vscode-remote","data","User"),V.join("/tmp",".vscode-server","data","User"),V.join("/workspace",".vscode-server","data","User")),t}async function Ld(){if(!Gi())return[];let o=[],e=[],t=process.env.USERPROFILE;if(t){let n=t.match(/^\/mnt\/[a-z]\/Users\/([^/]+)/);n&&e.push(n[1])}let s="/mnt/c/Users";try{let n=await We.promises.readdir(s,{withFileTypes:!0});for(let i of n){if(!i.isDirectory())continue;let r=i.name;Cl.has(r)||r.startsWith(".")||e.includes(r)||e.push(r)}}catch{return[]}for(let n of e){let i=V.join(s,n,"AppData","Roaming");for(let r of js)o.push(V.join(i,r,"User"))}return o}function jd(){if(!Gi())return[];let o=[],e="/mnt/c/Users";try{let t=We.readdirSync(e,{withFileTypes:!0});for(let s of t)if(!(!s.isDirectory()||s.name.startsWith(".")||Cl.has(s.name)))for(let n of js)o.push(V.join(e,s.name,"AppData","Roaming",n,"User"))}catch{}return o}async function bl(o,e,t,s){if(o.length===0)return;let n=0,i=Array.from({length:Math.min(t,o.length)},async()=>{for(;n<o.length;){let r=n++;try{await e(o[r],r)}catch(l){s?.(o[r],r,l)}}});await Promise.all(i)}async function kl(o,e,t){let s;try{s=await We.promises.readdir(o,{withFileTypes:!0})}catch(n){t(`Could not scan directory ${o}: ${n}`);return}for(let n of s){let i=V.join(o,n.name);if(n.isDirectory()){await kl(i,e,t);continue}if(!(!n.name.endsWith(".json")&&!n.name.endsWith(".jsonl"))&&!Za(n.name))try{(await We.promises.stat(i)).size>0&&e.push(i)}catch{}}}var qs=class{id="copilotchat";displayName="GitHub Copilot Chat";handles(e){return!1}getBackingPath(e){return e}async stat(e){return We.promises.stat(e)}async getTokens(e){try{let t=await We.promises.readFile(e,"utf8");return Yt(t)?{tokens:0,thinkingTokens:0,actualTokens:0}:e.endsWith(".jsonl")||it(t)?Xn(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=pe(e),s=t.lastIndexOf("/User/");return s>=0?t.substring(0,s+5):V.dirname(e)}getCandidatePaths(){let e=[];for(let t of _l())e.push({path:t,source:"VS Code"});for(let t of jd())e.push({path:t,source:"VS Code (Windows via WSL)"});return e}async discover(e){let t=this.getCandidatePaths(),s=[],n=_l();if(Gi()){e("\u{1FA9F} WSL environment detected \u2014 probing Windows-side VS Code paths");let l=await Ld();l.length>0?(e(`\u{1FA9F} Adding ${l.length} Windows-side candidate paths from WSL`),n.push(...l)):e("\u{1FA9F} No Windows-side paths found (Windows drive may not be mounted)")}e(`\u{1F4C2} Considering ${n.length} candidate VS Code paths`);let i=await Promise.all(n.map(l=>De(l).catch(()=>!1))),r=n.filter((l,u)=>i[u]);return e(`\u2705 Found ${r.length} of ${n.length} VS Code paths exist on disk`),await bl(r,async l=>{let u=V.basename(V.dirname(l)),p=V.join(l,"workspaceStorage");try{if(await De(p)){let h=await We.promises.readdir(p);await bl(h,async g=>{let _=[V.join(p,g,"chatSessions"),V.join(p,g,"GitHub.copilot-chat","chatSessions"),V.join(p,g,"github.copilot-chat","chatSessions"),V.join(p,g,"GitHub.copilot","chatSessions"),V.join(p,g,"github.copilot","chatSessions"),V.join(p,g,"GitHub.copilot-chat","debug-logs"),V.join(p,g,"github.copilot-chat","debug-logs"),V.join(p,g,"GitHub.copilot","debug-logs"),V.join(p,g,"github.copilot","debug-logs")];for(let y of _)try{if(!await De(y))continue;let C=(await We.promises.readdir(y)).filter(x=>x.endsWith(".json")||x.endsWith(".jsonl")).map(x=>V.join(y,x));C.length>0&&(e(`\u{1F4C4} Found ${C.length} session files in ${u}/workspaceStorage/${g}`),s.push(...C))}catch{}},6)}}catch(h){e(`Could not check workspace storage path ${p}: ${h}`)}let m=V.join(l,"globalStorage","emptyWindowChatSessions");try{if(await De(m)){let h=(await We.promises.readdir(m)).filter(g=>g.endsWith(".json")||g.endsWith(".jsonl")).map(g=>V.join(m,g));h.length>0&&(e(`\u{1F4C4} Found ${h.length} session files in ${u}/globalStorage/emptyWindowChatSessions`),s.push(...h))}}catch(h){e(`Could not check global storage path ${m}: ${h}`)}for(let h of["GitHub.copilot-chat","github.copilot-chat","GitHub.copilot","github.copilot"]){let g=V.join(l,"globalStorage",h);try{await De(g)&&(e(`\u{1F4C4} Scanning ${u}/globalStorage/${h}`),await kl(g,s,e))}catch(_){e(`Could not check Copilot Chat global storage path ${g}: ${_}`)}}},4,(l,u,p)=>{e(`Failed to scan VS Code user path ${l}: ${p instanceof Error?p.message:String(p)}`)}),{sessionFiles:s,candidatePaths:t}}};var ro=U(require("fs")),zs=U(require("path")),qi=U(require("os"));var we=U(require("fs")),Li=U(require("path")),Sl=U(require("os")),wl=U(An());function qd(o){if(typeof o!="object"||o===null)return!1;let e=o;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 $d(o){if(typeof o!="object"||o===null)return!1;let e=o;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 io=class{_sqlJsModule=null;getDbPath(){return Li.join(Sl.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 we.promises.stat(this.getDbPathFromVirtual(e))}async initSqlJs(){if(this._sqlJsModule)return this._sqlJsModule;let e=Li.join(__dirname,"sql-wasm.wasm"),t;we.existsSync(e)&&(t=we.readFileSync(e));let s=await(0,wl.default)(t?{wasmBinary:t}:void 0);return this._sqlJsModule=s,s}async discoverNewSessions(e){let t=this.getDbPath();if(!we.existsSync(t))return[];try{let s=await this.initSqlJs(),n=we.readFileSync(t),i=new s.Database(n);try{let r=i.exec("SELECT id FROM sessions ORDER BY updated_at DESC");return r.length===0?[]:r[0].values.map(l=>l[0]).filter(l=>!e.has(l))}finally{i.close()}}catch{return[]}}async readSession(e){let t=this.getDbPathFromVirtual(e),s=this.getSessionId(e);if(!s||!we.existsSync(t))return null;try{let n=await this.initSqlJs(),i=we.readFileSync(t),r=new n.Database(i);try{let l=r.exec("SELECT id, repository, branch, summary, created_at, updated_at FROM sessions WHERE id = ?",[s]);if(l.length===0||l[0].values.length===0)return null;let u=l[0].columns,p=l[0].values[0],m={};return u.forEach((h,g)=>{m[h]=p[g]}),qd(m)?m:null}finally{r.close()}}catch{return null}}async getTurns(e){let t=this.getDbPathFromVirtual(e),s=this.getSessionId(e);if(!s||!we.existsSync(t))return[];try{let n=await this.initSqlJs(),i=we.readFileSync(t),r=new n.Database(i);try{let l=r.exec("SELECT session_id, turn_index, user_message, assistant_response, timestamp FROM turns WHERE session_id = ? ORDER BY turn_index ASC",[s]);if(l.length===0)return[];let u=l[0].columns,p=[];for(let m of l[0].values){let h={};u.forEach((g,_)=>{h[g]=m[_]}),$d(h)&&p.push(h)}return p}finally{r.close()}}catch{return[]}}async countTurns(e){let t=this.getDbPathFromVirtual(e),s=this.getSessionId(e);if(!s||!we.existsSync(t))return 0;try{let n=await this.initSqlJs(),i=we.readFileSync(t),r=new n.Database(i);try{let l=r.exec("SELECT COUNT(*) FROM turns WHERE session_id = ?",[s]);return l.length===0||l[0].values.length===0?0:l[0].values[0][0]||0}finally{r.close()}}catch{return 0}}async getDailyFractions(e){let t=await this.getTurns(e),s={},n=0;for(let r of t)if(r.timestamp)try{let l=new Date(r.timestamp).toISOString().slice(0,10);s[l]=(s[l]||0)+1,n++}catch{}if(n===0){let r=await this.readSession(e);return{[r?.updated_at?new Date(r.updated_at).toISOString().slice(0,10):new Date().toISOString().slice(0,10)]:1}}let i={};for(let[r,l]of Object.entries(s))i[r]=l/n;return i}};function ji(){return zs.join(qi.homedir(),".copilot","session-state")}var Bs=class{id="copilotcli";displayName="GitHub Copilot CLI";store=new io;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):ro.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)?zs.join(qi.homedir(),".copilot"):ji()}async buildTurns(e){return this.store.isCliStoreSession(e)?{turns:(await this.store.getTurns(e)).map(n=>({turnNumber:n.turn_index+1,timestamp:n.timestamp,mode:"cli",userMessage:n.user_message??"",assistantResponse:n.assistant_response??"",model:null,toolCalls:[],contextReferences:ue(),mcpTools:[],inputTokensEstimate:0,outputTokensEstimate:0,thinkingTokensEstimate:0}))}:{turns:[]}}async analyzeUsage(e,t){let s=me();if(!this.store.isCliStoreSession(e))return s;let n=await this.store.getTurns(e);return s.modeUsage.cli=n.filter(i=>i.user_message!==null).length,s}async getDailyFractions(e){return this.store.isCliStoreSession(e)?this.store.getDailyFractions(e):{}}getCandidatePaths(){let e=[{path:ji(),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=[],n=ji(),i=new Set;try{if(await De(n)){let r;try{r=await ro.promises.readdir(n,{withFileTypes:!0})}catch(m){e(`Could not read Copilot CLI session path in ${n}: ${m}`),r=[]}let l=r.filter(m=>!m.isDirectory()&&(m.name.endsWith(".json")||m.name.endsWith(".jsonl"))).map(m=>zs.join(n,m.name));l.length>0&&(e(`\u{1F4C4} Found ${l.length} session files in Copilot CLI directory`),s.push(...l));let u=r.filter(m=>m.isDirectory()),p=(await Promise.all(u.map(async m=>{let h=zs.join(n,m.name,"events.jsonl");try{if((await ro.promises.stat(h)).size>0)return i.add(m.name),h}catch{}return null}))).filter(m=>m!==null);p.length>0&&(e(`\u{1F4C4} Found ${p.length} session files in Copilot CLI subdirectories`),s.push(...p))}}catch(r){e(`Could not check Copilot CLI session path ${n}: ${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 es=U(require("fs")),ao=U(require("path")),Tl=U(require("os"));function $i(){return ao.join(Tl.homedir(),".copilot","jb")}var Ws=class{id="jetbrains";displayName="JetBrains IDE";handles(e){return!1}getBackingPath(e){return e}async stat(e){return es.promises.stat(e)}async parsePartition(e){try{let t=await es.promises.readFile(e,"utf8");return tl(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 $i()}getCandidatePaths(){return[{path:$i(),source:"JetBrains IDE"}]}async discover(e){let t=this.getCandidatePaths(),s=[],n=$i();try{if(!await De(n))return{sessionFiles:s,candidatePaths:t};let i;try{i=await es.promises.readdir(n,{withFileTypes:!0})}catch(u){return e(`Could not read JetBrains session path in ${n}: ${u}`),{sessionFiles:s,candidatePaths:t}}let r=i.filter(u=>u.isDirectory()),l=(await Promise.all(r.map(async u=>{let p=ao.join(n,u.name),m;try{m=await es.promises.readdir(p,{withFileTypes:!0})}catch{return[]}let h=[];for(let g of m){if(!g.isFile()||!/^partition-\d+\.jsonl$/.test(g.name))continue;let _=ao.join(p,g.name);try{(await es.promises.stat(_)).size>0&&h.push(_)}catch{}}return h}))).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 ${n}: ${i}`)}return{sessionFiles:s,candidatePaths:t}}};function zi(o){return{openCode:new Dn(o),crush:new In(o),continue_:new Rn,visualStudio:new Hn,claudeCode:new Jn,claudeDesktopCowork:new Qn,mistralVibe:new Yn,geminiCli:new eo}}function Bi(o){return[new Is(o.openCode),new Rs(o.crush),new Os(o.visualStudio,o.estimateTokens),new Us(o.continue_),new Ns(o.claudeDesktopCowork,o.isMcpTool,o.extractMcpServerName,o.estimateTokens),new Fs(o.claudeCode),new Gs(o.mistralVibe),new Ls(o.geminiCli),new qs,new Bs,new Ws]}function Hs(o,e){try{return JSON.parse(o)}catch(t){console.error(`[${e}] JSON parse error:`,t);return}}function je(o){return typeof o=="object"&&o!==null}function Pl(o){return typeof o!="string"?!1:!["__proto__","prototype","constructor","hasOwnProperty"].includes(o)&&!o.startsWith("__")}function ts(o){return/^\d+$/.test(o)}function Wi(o,e){if(typeof o!="string")return e;let t=o.trim();return t?t.startsWith("copilot/")?t.substring(8):t:e}function zd(o,e){if(!je(e))return o;let t=e.kind,s=e.k,n=e.v;if(t===0)return n;if(!Array.isArray(s)||s.length===0)return o;let i=s.map(String);for(let m of i)if(!Pl(m))return o;let r=je(o)?o:Object.create(null),l=r,u=(m,h,g)=>{let _=ts(g),y=m[h];if(!je(y)){let C=_?[]:Object.create(null);return m[h]=C,C}return y};for(let m=0;m<i.length-1;m++){let h=i[m],g=i[m+1];if(Array.isArray(l)&&ts(h)){let _=Number(h),y=l[_],C;je(y)?C=y:(C=ts(g)?[]:Object.create(null),l[_]=C),l=C;continue}if(!je(l))return r;l=u(l,h,g)}let p=i[i.length-1];if(t===1)return Array.isArray(l)&&ts(p)?(l[Number(p)]=n,r):(je(l)&&Object.defineProperty(l,p,{value:n,writable:!0,enumerable:!0,configurable:!0}),r);if(t===2){let m;if(Array.isArray(l)&&ts(p)){let h=Number(p);Array.isArray(l[h])||(l[h]=[]),m=l[h]}else je(l)&&(Array.isArray(l[p])||Object.defineProperty(l,p,{value:[],writable:!0,enumerable:!0,configurable:!0}),m=l[p]);return Array.isArray(m)&&(Array.isArray(n)?m.push(...n):m.push(n)),r}return r}function Bd(o){if(!Array.isArray(o))return{responseText:"",thinkingText:""};let e="",t="";for(let s of o){let{text:n,isThinking:i}=Qt(s);n&&(i?t+=n:e+=n)}return{responseText:e,thinkingText:t}}function vl(o,e,t,s){let n={},i=0,r=0,l=0,u=0,p=0,m,h="unknown",g=w=>typeof w=="string"&&w?w:h,_=(w,M)=>{let S=g(w);n[S]||(n[S]={inputTokens:0,outputTokens:0});let T=t(M,S);n[S].inputTokens+=T,r+=T},y=(w,M)=>{let S=g(w);n[S]||(n[S]={inputTokens:0,outputTokens:0});let T=t(M,S);n[S].outputTokens+=T,l+=T},C=w=>{if(w==null||typeof w!="object")return;let M=w,S=M.modelId??M.selectedModel?.identifier??M.model,T=Wi(S,h),k;if(typeof S=="string"&&S.trim())k=T;else{let G=s?s(M):void 0;k=Wi(G,"")||T}if(M.message?.parts)for(let G of M.message.parts)typeof G?.text=="string"&&G.text&&_(k,G.text);else typeof M.message?.text=="string"&&_(k,M.message.text);let{responseText:I,thinkingText:R}=Bd(M.response);I&&y(k,I),R&&(u+=t(R,k));let H=Array.isArray(M.response)?M.response:Array.isArray(M.responses)?M.responses:[];for(let G of H){let q=Kt(G);if(q){let ke=q.modelName||k;q.prompt&&_(ke,q.prompt),q.result&&y(ke,q.result);continue}if(G?.kind!=="thinking"&&typeof G?.value!="string"&&G?.message?.parts)for(let ke of G.message.parts)typeof ke?.text=="string"&&ke.text&&y(k,ke.text)}if(M.result?.usage){let G=M.result.usage,q=typeof G.promptTokens=="number"?G.promptTokens:0,ke=typeof G.completionTokens=="number"?G.completionTokens:0;p+=q+ke}else typeof M.result?.promptTokens=="number"&&typeof M.result?.outputTokens=="number"?p+=M.result.promptTokens+M.result.outputTokens:M.result?.metadata&&typeof M.result.metadata.promptTokens=="number"&&typeof M.result.metadata.outputTokens=="number"&&(p+=M.result.metadata.promptTokens+M.result.metadata.outputTokens)};if(o.endsWith(".jsonl")){let w=e.split(/\r?\n/).filter(S=>S.trim()),M=!1;if(w.length>0){let S=Hs(w[0],"sessionParser");S&&typeof S.kind=="number"&&(M=!0)}if(M){let S=Object.create(null);for(let I of w){let R=Hs(I,"sessionParser");R!==void 0&&(S=zd(S,R))}let T=je(S)?S:null,k=T&&Array.isArray(T.requests)?T.requests:[];i=k.filter(I=>{if(!je(I))return!1;let R=I.message;return je(R)&&typeof R.text=="string"&&R.text.trim()}).length;for(let I of k)C(I);return{tokens:r+l+u,interactions:i,modelUsage:n,thinkingTokens:u,actualTokens:0}}if(m=Hs(e.trim(),"sessionParser"),m===void 0)return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0}}if(!m&&(m=Hs(e,"sessionParser"),m===void 0))return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0};if(!je(m)||Array.isArray(m))return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0};let x=Array.isArray(m.requests)?m.requests:Array.isArray(m.history)?m.history:[];i=x.length;for(let w of x)C(w);return{tokens:r+l+u,interactions:i,modelUsage:n,thinkingTokens:u,actualTokens:p}}var Hi=class{extractCounts(e){let t={},s={},n=e.trim().split(`
57
+ `);for(let i of n)if(i.trim())try{let r=JSON.parse(i);if(r.type==="user.message"){let m=r.timestamp??r.ts??r.data?.timestamp;ss(m,t);continue}let l=r.kind,u=r.k,p=r.v;if(l===0&&p?.requests&&Array.isArray(p.requests))for(let m of p.requests){let h=m.timestamp??m.ts;ss(h,t)}else if(l===2&&Array.isArray(u)&&u[0]==="requests"){if(Array.isArray(p))for(let m of p){let h=m.timestamp??m.ts;ss(h,t)}else if(p&&typeof p=="object"){let m=p.timestamp??p.ts;m!==void 0&&ss(m,t),typeof u[1]=="number"&&(s[u[1]]=m)}}else if(l===1&&Array.isArray(u)&&u.length===3&&u[0]==="requests"&&(u[2]==="timestamp"||u[2]==="ts")&&typeof u[1]=="number"){let m=u[1];s[m]===void 0&&ss(p,t),s[m]=p}}catch{}return t}},Vi=class{extractCounts(e){let t={};try{let s=JSON.parse(e);if(s.requests&&Array.isArray(s.requests))for(let n of s.requests){let i=n.timestamp??n.ts??n.result?.timestamp;ss(i,t)}}catch{}return t}};function ss(o,e){if(o==null)return;let t=new Date(o);if(!isNaN(t.getTime())){let s=t.toISOString().slice(0,10);e[s]=(e[s]||0)+1}}function Ml(o,e,t){let s=t.toISOString().slice(0,10),i=(e?new Hi:new Vi).extractCounts(o),r=Object.values(i).reduce((u,p)=>u+p,0);if(r===0)return{[s]:1};let l={};for(let[u,p]of Object.entries(i))l[u]=p/r;return l}var St=U(require("fs")),Ki=U(require("path")),xl=U(require("os"));var lo=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,n)=>n[1].mtime-s[1].mtime);e.clear();for(let[s,n]of t.slice(0,this.maxEntries))e.set(s,n)}};var Al=3,Wd=2e3,Dl=Ki.join(xl.homedir(),".copilot-token-tracker"),Ji=Ki.join(Dl,"cli-cache.json"),ut=new Map,ns=!0,El=!1,Il=new lo(Wd);function Qi(){ns=!1,ut.clear()}function Yi(){if(ns)try{if(!St.existsSync(Ji))return;let o=St.readFileSync(Ji,"utf-8"),e=JSON.parse(o);if(e.version!==Al){ut.clear();return}ut=new Map(Object.entries(e.entries))}catch{ut.clear()}}function Xi(){if(!(!ns||!El))try{Il.evict(ut),St.mkdirSync(Dl,{recursive:!0});let o={version:Al,entries:Object.fromEntries(ut)};St.writeFileSync(Ji,JSON.stringify(o),"utf-8")}catch{}}function Rl(o,e,t){if(!ns)return null;let s=ut.get(o);return!s||!Il.isValid(s,e,t)?null:{...s.data,lastModified:new Date(s.data.lastModified)}}function Zi(o,e,t,s){ns&&(El=!0,ut.set(o,{mtime:e,size:t,data:{...s,lastModified:s.lastModified.toISOString()}}))}function er(){return{entries:ut.size,enabled:ns}}var Ee={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 Ol={$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}};var co={$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-05-20",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:"premium",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:"premium",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:"premium",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:"premium",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:"premium",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:"premium",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-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:"premium",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:"premium",multiplier:1,displayNames:["Claude Sonnet 4.6"],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:"premium",multiplier:.33,displayNames:["Claude Haiku 4.5"],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:"premium",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:"premium",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:"premium",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:"premium",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:"premium",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:"premium",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:"premium",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:"premium",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-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:"premium",multiplier:14,displayNames:["Gemini 3.5 Flash"]}}};var Ul={unknown:"Unknown",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",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"};var Kd=co.pricing;function He(o){return o?o.actualTokens>0?o.actualTokens:o.tokens:0}function tr(o){let e=ie(o);return e.includes("/cursor/")?"cursor":e.includes("/code - insiders/")?"vscode-insiders":e.includes("/code - exploration/")?"vscode-exploration":e.includes("/vscodium/")?"vscodium":e.includes("/.copilot/")?"copilot-cli":e.includes("/.crush/crush.db#")?"crush":e.includes("/opencode/")?"opencode":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/tmp/")&&e.includes("/chats/session-")&&e.endsWith(".jsonl")?"gemini-cli":e.includes(".vscode-server")?"vscode-remote":e.includes("/.vs/")&&e.includes("/copilot-chat/")?"Visual Studio":"vscode"}async function sr(o,e,t=20){if(o.length===0)return[];let s=new Array(o.length),n=0,i=Array.from({length:Math.min(t,o.length)},async()=>{for(;n<o.length;){let r=n++;try{s[r]=await e(o[r],r)}catch{s[r]=void 0}}});return await Promise.all(i),s}function Vs(){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 Js(o,e,t){let s=Math.round(He(e)*t),n=Math.round(e.thinkingTokens*t),i=Math.round(e.actualTokens*t);o.tokens+=s,o.thinkingTokens+=n,o.estimatedTokens+=Math.round(e.tokens*t),o.actualTokens+=i,o.sessions++;for(let[u,p]of Object.entries(e.modelUsage))o.modelUsage[u]||(o.modelUsage[u]={inputTokens:0,outputTokens:0}),o.modelUsage[u].inputTokens+=Math.round(p.inputTokens*t),o.modelUsage[u].outputTokens+=Math.round(p.outputTokens*t);let r=Math.round(e.interactions*t),l=o.avgInteractionsPerSession*(o.sessions-1)+r;o.avgInteractionsPerSession=o.sessions>0?l/o.sessions:0,o.editorUsage[e.editorSource]||(o.editorUsage[e.editorSource]={tokens:0,sessions:0}),o.editorUsage[e.editorSource].tokens+=s,o.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:ue(),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 uo=[{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 Ks(o,e,t){if(!o||!e)throw new Error("buildChartPayload: labels and days are required");if(o.length!==e.length)throw new Error(`buildChartPayload: labels.length (${o.length}) !== days.length (${e.length})`);let s=k=>`${k.getFullYear()}-${String(k.getMonth()+1).padStart(2,"0")}-${String(k.getDate()).padStart(2,"0")}`,n=k=>{let I=k.map(Z=>Z.entry),R=k.map(Z=>Z.label),H=I.map(Z=>Z.tokens),G=I.map(Z=>Z.sessions),q=new Set;I.forEach(Z=>Object.keys(Z.modelUsage).forEach(ye=>q.add(ye)));let ke=Array.from(q).map((Z,ye)=>{let pt=uo[ye%uo.length];return{label:Z,data:I.map(qt=>{let ls=qt.modelUsage[Z];return ls?ls.inputTokens+ls.outputTokens:0}),backgroundColor:pt.bg,borderColor:pt.border,borderWidth:1}}),jt=new Set;I.forEach(Z=>Object.keys(Z.editorUsage).forEach(ye=>jt.add(ye)));let ve=Array.from(jt).map((Z,ye)=>{let pt=uo[ye%uo.length];return{label:Z,data:I.map(qt=>qt.editorUsage[Z]?.tokens||0),backgroundColor:pt.bg,borderColor:pt.border,borderWidth:1}}),as=H.reduce((Z,ye)=>Z+ye,0),mt=G.reduce((Z,ye)=>Z+ye,0),Qe=k.length,Qs=I.map(Z=>Es(Z.modelUsage,Kd)),Ys=Qs.reduce((Z,ye)=>Z+ye,0),bo=Qe>0?Ys/Qe:0;return{labels:R,tokensData:H,sessionsData:G,modelDatasets:ke,editorDatasets:ve,repositoryDatasets:[],periodCount:Qe,totalTokens:as,totalSessions:mt,avgPerPeriod:Qe>0?Math.round(as/Qe):0,costData:Qs,totalCost:Ys,avgCostPerPeriod:bo}},i=(k,I)=>{k.tokens+=I.tokens,k.sessions+=I.sessions;for(let[R,H]of Object.entries(I.modelUsage))k.modelUsage[R]||(k.modelUsage[R]={inputTokens:0,outputTokens:0}),k.modelUsage[R].inputTokens+=H.inputTokens,k.modelUsage[R].outputTokens+=H.outputTokens;for(let[R,H]of Object.entries(I.editorUsage))k.editorUsage[R]||(k.editorUsage[R]={tokens:0,sessions:0}),k.editorUsage[R].tokens+=H.tokens,k.editorUsage[R].sessions+=H.sessions},r=()=>({tokens:0,sessions:0,modelUsage:{},editorUsage:{}}),l=new Date,u=o.map((k,I)=>({label:k,entry:e[I]})),p=n(u),m=k=>{let I=new Date(k);I.setHours(0,0,0,0);let R=I.getDay();return I.setDate(I.getDate()-(R===0?6:R-1)),I},h=k=>{let I=new Date(k);return I.setDate(k.getDate()+6),k.getMonth()===I.getMonth()?`${k.toLocaleDateString("en-US",{month:"short"})} ${k.getDate()}\u2013${I.getDate()}`:`${k.toLocaleDateString("en-US",{month:"short",day:"numeric"})}\u2013${I.toLocaleDateString("en-US",{month:"short",day:"numeric"})}`},g=m(l),_=new Map;for(let k=5;k>=0;k--){let I=new Date(g);I.setDate(g.getDate()-k*7);let R=s(I);_.set(R,{label:h(I),entry:r()})}let y=t||new Map(o.map((k,I)=>[k,e[I]]));for(let[k,I]of y.entries()){let R=m(new Date(k+"T00:00:00")),H=_.get(s(R));H&&i(H.entry,I)}let C=Array.from(_.values()),x=n(C),w=new Map;for(let k=11;k>=0;k--){let I=new Date(l.getFullYear(),l.getMonth()-k,1),R=`${I.getFullYear()}-${String(I.getMonth()+1).padStart(2,"0")}`,H=I.toLocaleDateString("en-US",{month:"short",year:"numeric"});w.set(R,{label:H,entry:r()})}for(let[k,I]of y.entries()){let R=k.slice(0,7),H=w.get(R);H&&i(H.entry,I)}let M=Array.from(w.values()),S=n(M),T={};return e.forEach(k=>{Object.entries(k.editorUsage).forEach(([I,R])=>{T[I]=(T[I]||0)+R.tokens})}),{labels:p.labels,tokensData:p.tokensData,sessionsData:p.sessionsData,modelDatasets:p.modelDatasets,editorDatasets:p.editorDatasets,editorTotalsMap:T,repositoryDatasets:[],repositoryTotalsMap:{},dailyCount:p.periodCount,totalTokens:p.totalTokens,avgTokensPerDay:p.periodCount>0?Math.round(p.totalTokens/p.periodCount):0,totalSessions:p.totalSessions,lastUpdated:new Date().toISOString(),backendConfigured:!1,periodsReady:!0,periods:{day:p,week:x,month:S}}}function X(o){return o==null||!Number.isFinite(o)?"0":Math.round(o).toLocaleString("en-US")}function ae(o){return o==null||!Number.isFinite(o)||o<0?"0":o>=1e9?`${(o/1e9).toFixed(1)}B`:o>=1e6?`${(o/1e6).toFixed(1)}M`:o>=1e3?`${(o/1e3).toFixed(1)}K`:o.toString()}var nr=Ol.estimators,os=co.pricing,Qd=Ul,Yd=o=>{},Nl=o=>{},Xd=(o,e)=>console.error(D.red(o),e||""),po=null;function ho(){if(po)return po;let o=Cn.file(__dirname);return po=Bi({...zi(o),estimateTokens:(e,t)=>K(e,t??"gpt-4",nr),isMcpTool:_t,extractMcpServerName:bt}),po}function Gl(){return new Pn({log:Yd,warn:Nl,error:Xd,ecosystems:ho()})}async function he(){return Gl().getCopilotSessionFiles()}async function fo(o){let e=new Set,t=Ie.join(Fl.homedir(),".claude","projects");for(let n of o){if(n.startsWith(t+Ie.sep)||n.startsWith(t+"/")){let u=await Cs(()=>dt.promises.readFile(n,"utf-8"),null,`buildCustomizationMatrix readFile(${n})`);if(u!==null){let p=u.split(`
58
+ `).slice(0,30);for(let m of p)if(m.trim())try{let h=JSON.parse(m);if(h.cwd&&typeof h.cwd=="string"){e.add(h.cwd);break}}catch{}}continue}let i=Ie.dirname(n);if(Ie.basename(i)!=="chatSessions")continue;let r=Ie.dirname(i),l=Ie.join(r,"workspace.json");try{if(!await dt.promises.access(l).then(()=>!0).catch(()=>!1))continue;let m=JSON.parse(await dt.promises.readFile(l,"utf-8")).folder;if(!m||!m.startsWith("file://"))continue;let h=Sn(m);h&&e.add(h)}catch(u){console.error(`[buildCustomizationMatrix] Failed to read workspace.json at ${l}:`,u)}}if(e.size===0)return;let s=0;for(let n of e)await Cs(async()=>{let[r,l,u]=await Promise.all([dt.promises.access(Ie.join(n,".github","copilot-instructions.md")).then(()=>!0).catch(()=>!1),dt.promises.access(Ie.join(n,"agents.md")).then(()=>!0).catch(()=>!1),dt.promises.access(Ie.join(n,"CLAUDE.md")).then(()=>!0).catch(()=>!1)]);return!r&&!l&&!u},!0,`buildCustomizationMatrix workspace check(${n})`)&&s++;return{customizationTypes:[],workspaces:[],totalWorkspaces:e.size,workspacesWithIssues:s}}function go(){return Gl().getDiagnosticCandidatePaths()}function Zd(o,e){return K(o,e||"gpt-4",nr)}function em(o){return kt(o,os)}async function Ll(o){let e=ho().find(t=>t.handles(o));return e?e.stat(o):dt.promises.stat(o)}async function is(o){try{let e=await Ll(o),t=Rl(o,e.mtimeMs,e.size);if(t)return t;let s=ho().find(_=>_.handles(o));if(s){let[_,y,C]=await Promise.all([s.getTokens(o),s.countInteractions(o),s.getModelUsage(o)]),x=e.mtime.toISOString().slice(0,10),w={file:o,tokens:_.actualTokens>0?_.actualTokens:_.tokens,thinkingTokens:_.thinkingTokens,actualTokens:_.actualTokens,interactions:y,modelUsage:C,lastModified:e.mtime,editorSource:tr(o),dailyFractions:await s.getDailyFractions?.(o)??{[x]:1}};return Zi(o,e.mtimeMs,e.size,w),w}let n=await dt.promises.readFile(o,"utf-8");if(!n.trim())return null;let i=o.endsWith(".jsonl")||it(n),r=0,l=0,u=0,p=0,m={};if(i){let _=Xn(n);r=_.actualTokens>0?_.actualTokens:_.tokens,l=_.thinkingTokens,u=_.actualTokens,m=_.modelUsage;let y=n.trim().split(`
59
+ `);for(let C of y)try{let x=JSON.parse(C);(x.type==="user.message"||x.kind===2&&x.k?.[0]==="requests")&&p++}catch{}}else{let _=vl(o,n,Zd,em);r=_.tokens,l=_.thinkingTokens,u=_.actualTokens,p=_.interactions,m=_.modelUsage}let h=Ml(n,i,e.mtime),g={file:o,tokens:r,thinkingTokens:l,actualTokens:u,interactions:p,modelUsage:m,lastModified:e.mtime,editorSource:tr(o),dailyFractions:h};return Zi(o,e.mtimeMs,e.size,g),g}catch{return null}}async function wt(o,e){let t=new Date,s=t.toISOString().slice(0,10),n=t.getUTCFullYear(),i=t.getUTCMonth(),r=`${n}-${String(i+1).padStart(2,"0")}-01`,p=`${i===0?n-1:n}-${String(i===0?12:i).padStart(2,"0")}-01`,h=new Date(Date.UTC(n,i,t.getUTCDate()-30)).toISOString().slice(0,10),g={today:Vs(),month:Vs(),lastMonth:Vs(),last30Days:Vs()},_=0,y=await sr(o,async C=>{let x=await is(C);return e&&e(++_,o.length),x});for(let C of y){if(!C||C.tokens===0||!Object.keys(C.dailyFractions).some(k=>k>=p))continue;let w=0,M=0,S=0,T=0;for(let[k,I]of Object.entries(C.dailyFractions))k===s&&(w+=I),k>=r&&(M+=I),k>=p&&k<r&&(S+=I),k>=h&&(T+=I);w>0&&Js(g.today,C,w),M>0&&Js(g.month,C,M),S>0&&Js(g.lastMonth,C,S),T>0&&Js(g.last30Days,C,T)}for(let C of Object.values(g))C.sessions>0&&(C.avgTokensPerSession=Math.round(C.tokens/C.sessions)),C.co2=C.tokens/1e3*Ee.CO2_PER_1K_TOKENS,C.treesEquivalent=C.co2/Ee.CO2_ABSORPTION_PER_TREE_PER_YEAR,C.waterUsage=C.tokens/1e3*Ee.WATER_USAGE_PER_1K_TOKENS,C.estimatedCost=Es(C.modelUsage,os),C.estimatedCostCopilot=Es(C.modelUsage,os,"copilot");return{...g,lastUpdated:t}}async function rs(o){let e={warn:Nl,tokenEstimators:nr,modelPricing:os,toolNameMap:Qd,ecosystems:ho()},t=new Date,s=new Date(t.getFullYear(),t.getMonth(),t.getDate()),n=new Date(t.getFullYear(),t.getMonth(),t.getDate()-30),i=new Date(t.getFullYear(),t.getMonth(),1),r=mo(),l=mo(),u=mo();for(let p of o)try{let h=(await Ll(p)).mtime;if(h<n)continue;let g=await ul(e,p);h>=n&&(so(l,g),l.sessions++),h>=i&&(so(u,g),u.sessions++),h>=s&&(so(r,g),r.sessions++)}catch{}return{today:r,last30Days:l,month:u,lastUpdated:t}}async function yo(o){let e=new Date,t=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()-30)),s=t.toISOString().slice(0,10),n=e.toISOString().slice(0,10),i=new Map,r=new Date(t);for(;r.toISOString().slice(0,10)<=n;){let h=r.toISOString().slice(0,10);i.set(h,{tokens:0,sessions:0,modelUsage:{},editorUsage:{}}),r.setUTCDate(r.getUTCDate()+1)}let l=new Map,u=await sr(o,async h=>is(h));for(let h of u){if(!h||h.tokens===0||h.interactions===0)continue;let g=He(h);for(let[_,y]of Object.entries(h.dailyFractions)){let C=Math.round(g*y),x=i.get(_);if(x){x.tokens+=C,x.sessions++;for(let[T,k]of Object.entries(h.modelUsage))x.modelUsage[T]||(x.modelUsage[T]={inputTokens:0,outputTokens:0}),x.modelUsage[T].inputTokens+=Math.round(k.inputTokens*y),x.modelUsage[T].outputTokens+=Math.round(k.outputTokens*y);let S=h.editorSource;x.editorUsage[S]||(x.editorUsage[S]={tokens:0,sessions:0}),x.editorUsage[S].tokens+=C,x.editorUsage[S].sessions++}l.has(_)||l.set(_,{tokens:0,sessions:0,modelUsage:{},editorUsage:{}});let w=l.get(_);w.tokens+=C,w.sessions++;for(let[S,T]of Object.entries(h.modelUsage))w.modelUsage[S]||(w.modelUsage[S]={inputTokens:0,outputTokens:0}),w.modelUsage[S].inputTokens+=Math.round(T.inputTokens*y),w.modelUsage[S].outputTokens+=Math.round(T.outputTokens*y);let M=h.editorSource;w.editorUsage[M]||(w.editorUsage[M]={tokens:0,sessions:0}),w.editorUsage[M].tokens+=C,w.editorUsage[M].sessions++}}let p=Array.from(i.keys()).sort(),m=p.map(h=>i.get(h));return{labels:p,days:m,allDaysMap:l}}var tm=50;function jl(o=tm){process.stdout.write("\r"+" ".repeat(o)+"\r")}function or(o){process.stdout.write(D.dim(o))}var sm=80,Re=class{silent;constructor(e=!1){this.silent=e}show(e){this.silent||or(e)}update(e){this.silent||(process.stdout.write("\r"),or(e))}done(){this.silent||jl(sm)}};function Te(o){return o.json===!0}var ql=new ce("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 o=>{let e=Te(o);if(e||console.log(D.bold.cyan(`
60
60
  \u{1F50D} Copilot Token Tracker - Session Statistics
61
- `)),i.verbose&&!i.json){let h=Zn();console.log(A.dim("Search paths:"));for(let f of h){let y=f.exists?A.green("\u2705"):A.dim("\u274C");console.log(` ${y} ${A.dim(f.source)}: ${f.path}`)}console.log()}i.json||process.stdout.write(A.dim("Scanning for session files..."));let e=await me();if(i.json||process.stdout.write("\r"+" ".repeat(50)+"\r"),e.length===0){i.json?process.stdout.write("{}"):(console.log(A.yellow("\u26A0\uFE0F No session files found.")),console.log(A.dim("Have you used GitHub Copilot Chat in VS Code yet?")));return}i.json||console.log(A.green(`\u{1F4C2} Found ${A.bold(Z(e.length))} session file(s)
62
- `));let t=0,s=0,n=0,o=0,r=0,l={},u={};for(let h=0;h<e.length;h++){let f=await Xt(e[h]);if(!f||f.tokens===0){r++;continue}if(o++,t+=ot(f),s+=f.thinkingTokens,n+=f.interactions,l[f.editorSource]||(l[f.editorSource]={files:0,tokens:0,interactions:0}),l[f.editorSource].files++,l[f.editorSource].tokens+=ot(f),l[f.editorSource].interactions+=f.interactions,i.verbose){let y=$d(e[h]);u[y]||(u[y]={files:0,tokens:0}),u[y].files++,u[y].tokens+=ot(f)}!i.json&&((h+1)%50===0||h===e.length-1)&&process.stdout.write(`\r${A.dim(`Processing: ${h+1}/${e.length}`)}`)}if(i.json||process.stdout.write("\r"+" ".repeat(50)+"\r"),i.json){let h={totalFiles:e.length,processedFiles:o,emptyFiles:r,totalTokens:t,totalThinkingTokens:s,totalInteractions:n,byEditor:l,lastUpdated:new Date().toISOString()};process.stdout.write(JSON.stringify(h));return}console.log(A.bold("\u{1F4CA} Summary")),console.log(A.dim("\u2500".repeat(50))),console.log(` Session files (with data): ${A.bold(Z(o))}`),r>0&&console.log(` Empty/skipped files: ${A.dim(Z(r))}`),console.log(` Total chat turns: ${A.bold(Z(n))}`),console.log(` Total tokens: ${A.bold.yellow(re(t))}`),s>0&&console.log(` Thinking tokens (included): ${A.dim(re(s))}`);let m=Ii();m.enabled&&m.entries>0&&console.log(A.dim(` Cache: ${Z(m.entries)} entries loaded`)),console.log();let p=Object.entries(l).sort((h,f)=>f[1].tokens-h[1].tokens);if(p.length>0){console.log(A.bold("\u{1F5A5}\uFE0F By Editor")),console.log(A.dim("\u2500".repeat(50)));for(let[h,f]of p){let y=Ld(h);console.log(` ${y.padEnd(25)} ${Z(f.files).padStart(5)} files ${re(f.tokens).padStart(8)} tokens ${Z(f.interactions).padStart(6)} turns`)}console.log()}if(i.verbose&&Object.keys(u).length>0){let h=Object.entries(u).sort((f,y)=>y[1].tokens-f[1].tokens);console.log(A.bold("\u{1F4C1} By Folder")),console.log(A.dim("\u2500".repeat(70)));for(let[f,y]of h.slice(0,20))console.log(` ${f.substring(0,50).padEnd(50)} ${Z(y.files).padStart(5)} files ${re(y.tokens).padStart(8)} tokens`);h.length>20&&console.log(A.dim(` ... and ${h.length-20} more folders`)),console.log()}});function Ld(i){return{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"}[i]||i}function $d(i){let e=i.split(/[/\\]/),t=e.indexOf("chatSessions");return t>=2?e.slice(t-1,t+1).join("/"):e.slice(-3,-1).join("/")}var bl=new le("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 i=>{let e=await qd(i);if(!e)return;let t=await Bd(e,i);if(i.json){let n={today:t.today,month:t.month,lastMonth:t.lastMonth,last30Days:t.last30Days,lastUpdated:t.lastUpdated.toISOString(),backendConfigured:!1};process.stdout.write(JSON.stringify(n));return}console.log(A.bold.cyan(`
61
+ `)),o.verbose&&!e){let _=go();console.log(D.dim("Search paths:"));for(let y of _){let C=y.exists?D.green("\u2705"):D.dim("\u274C");console.log(` ${C} ${D.dim(y.source)}: ${y.path}`)}console.log()}let t=new Re(e);t.show("Scanning for session files...");let s=await he();if(t.done(),s.length===0){e?process.stdout.write("{}"):(console.log(D.yellow("\u26A0\uFE0F No session files found.")),console.log(D.dim("Have you used GitHub Copilot Chat in VS Code yet?")));return}e||console.log(D.green(`\u{1F4C2} Found ${D.bold(X(s.length))} session file(s)
62
+ `));let n=0,i=0,r=0,l=0,u=0,p={},m={};for(let _=0;_<s.length;_++){let y=await is(s[_]);if(!y||y.tokens===0){u++;continue}if(l++,n+=He(y),i+=y.thinkingTokens,r+=y.interactions,p[y.editorSource]||(p[y.editorSource]={files:0,tokens:0,interactions:0}),p[y.editorSource].files++,p[y.editorSource].tokens+=He(y),p[y.editorSource].interactions+=y.interactions,o.verbose){let C=om(s[_]);m[C]||(m[C]={files:0,tokens:0}),m[C].files++,m[C].tokens+=He(y)}((_+1)%50===0||_===s.length-1)&&t.update(`Processing: ${_+1}/${s.length}`)}if(t.done(),e){let _={totalFiles:s.length,processedFiles:l,emptyFiles:u,totalTokens:n,totalThinkingTokens:i,totalInteractions:r,byEditor:p,lastUpdated:new Date().toISOString()};process.stdout.write(JSON.stringify(_));return}console.log(D.bold("\u{1F4CA} Summary")),console.log(D.dim("\u2500".repeat(50))),console.log(` Session files (with data): ${D.bold(X(l))}`),u>0&&console.log(` Empty/skipped files: ${D.dim(X(u))}`),console.log(` Total chat turns: ${D.bold(X(r))}`),console.log(` Total tokens: ${D.bold.yellow(ae(n))}`),i>0&&console.log(` Thinking tokens (included): ${D.dim(ae(i))}`);let h=er();h.enabled&&h.entries>0&&console.log(D.dim(` Cache: ${X(h.entries)} entries loaded`)),console.log();let g=Object.entries(p).sort((_,y)=>y[1].tokens-_[1].tokens);if(g.length>0){console.log(D.bold("\u{1F5A5}\uFE0F By Editor")),console.log(D.dim("\u2500".repeat(50)));for(let[_,y]of g){let C=nm(_);console.log(` ${C.padEnd(25)} ${X(y.files).padStart(5)} files ${ae(y.tokens).padStart(8)} tokens ${X(y.interactions).padStart(6)} turns`)}console.log()}if(o.verbose&&Object.keys(m).length>0){let _=Object.entries(m).sort((y,C)=>C[1].tokens-y[1].tokens);console.log(D.bold("\u{1F4C1} By Folder")),console.log(D.dim("\u2500".repeat(70)));for(let[y,C]of _.slice(0,20))console.log(` ${y.substring(0,50).padEnd(50)} ${X(C.files).padStart(5)} files ${ae(C.tokens).padStart(8)} tokens`);_.length>20&&console.log(D.dim(` ... and ${_.length-20} more folders`)),console.log()}});function nm(o){return o?{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"}[o]||o:"Unknown"}function om(o){let e=o.split(/[/\\]/),t=e.indexOf("chatSessions");return t>=2?e.slice(t-1,t+1).join("/"):e.slice(-3,-1).join("/")}var $l=new ce("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 o=>{let e=await im(o);if(!e)return;let t=await rm(e,o);if(Te(o)){let n={today:t.today,month:t.month,lastMonth:t.lastMonth,last30Days:t.last30Days,lastUpdated:t.lastUpdated.toISOString(),backendConfigured:!1};process.stdout.write(JSON.stringify(n));return}console.log(D.bold.cyan(`
63
63
  \u{1F4CA} Copilot Token Tracker - Usage Report
64
- `));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 n of s)zd(n.label,n.emoji,n.stats,i);console.log(A.dim(`Last updated: ${t.lastUpdated.toLocaleString()}
65
- `))});async function qd(i){i.json||process.stdout.write(A.dim("Scanning for session files..."));let e=await me();return i.json||process.stdout.write("\r"+" ".repeat(50)+"\r"),e.length===0?(i.json?process.stdout.write("{}"):console.log(A.yellow("\u26A0\uFE0F No session files found.")),null):e}async function Bd(i,e){e.json||process.stdout.write(A.dim("Calculating token usage..."));let t=await ft(i,e.json?void 0:(s,n)=>{process.stdout.write(`\r${A.dim(`Processing: ${s}/${n} files`)}`)});return e.json||process.stdout.write("\r"+" ".repeat(50)+"\r"),t}function zd(i,e,t,s){if(console.log(A.bold(`${e} ${i}`)),console.log(A.dim("\u2500".repeat(55))),t.sessions===0){console.log(A.dim(" No activity in this period")),console.log();return}if(console.log(` Sessions: ${A.bold(Z(t.sessions))}`),console.log(` Avg interactions/sess: ${A.bold(t.avgInteractionsPerSession.toFixed(1))}`),console.log(` Total tokens: ${A.bold.yellow(re(t.tokens))}`),t.thinkingTokens>0&&console.log(` Thinking tokens: ${A.dim(re(t.thinkingTokens))} (included in total)`),console.log(` Avg tokens/session: ${A.bold(re(t.avgTokensPerSession))}`),s.cost&&(t.estimatedCostCopilot??0)>0&&console.log(` Estimated cost (UBB): ${A.green("$"+(t.estimatedCostCopilot??0).toFixed(4))} ${A.dim("(Copilot AI Credits)")}`),s.models&&Object.keys(t.modelUsage).length>0){console.log(),console.log(A.dim(" Model Breakdown:"));let n=Object.entries(t.modelUsage).sort((o,r)=>r[1].inputTokens+r[1].outputTokens-(o[1].inputTokens+o[1].outputTokens));for(let[o,r]of n){let l=r.inputTokens+r.outputTokens,u=et(o,Ut),m=u==="premium"?A.yellow(" \u2B50"):u==="standard"?A.dim(" \u25CB"):"";console.log(` ${(o+m).padEnd(35)} ${re(r.inputTokens).padStart(8)} in ${re(r.outputTokens).padStart(8)} out ${re(l).padStart(8)} total`)}}if(Object.keys(t.editorUsage).length>1){console.log(),console.log(A.dim(" Editor Breakdown:"));let n=Object.entries(t.editorUsage).sort((o,r)=>r[1].tokens-o[1].tokens);for(let[o,r]of n)console.log(` ${o.padEnd(25)} ${Z(r.sessions).padStart(5)} sessions ${re(r.tokens).padStart(8)} tokens`)}console.log()}var Cl=new le("environmental").alias("env").description("Show environmental impact of your Copilot usage (CO2, water, trees)").action(async()=>{console.log(A.bold.cyan(`
64
+ `));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 n of s)am(n.label,n.emoji,n.stats,o);console.log(D.dim(`Last updated: ${t.lastUpdated.toLocaleString()}
65
+ `))});async function im(o){let e=Te(o),t=new Re(e);t.show("Scanning for session files...");let s=await he();return t.done(),s.length===0?(e?process.stdout.write("{}"):console.log(D.yellow("\u26A0\uFE0F No session files found.")),null):s}async function rm(o,e){let t=Te(e),s=new Re(t);s.show("Calculating token usage...");let n=await wt(o,(i,r)=>{s.update(`Processing: ${i}/${r} files`)});return s.done(),n}function am(o,e,t,s){if(console.log(D.bold(`${e} ${o}`)),console.log(D.dim("\u2500".repeat(55))),!t||t.sessions===0){console.log(D.dim(" No activity in this period")),console.log();return}if(console.log(` Sessions: ${D.bold(X(t.sessions))}`),console.log(` Avg interactions/sess: ${D.bold(t.avgInteractionsPerSession.toFixed(1))}`),console.log(` Total tokens: ${D.bold.yellow(ae(t.tokens))}`),t.thinkingTokens>0&&console.log(` Thinking tokens: ${D.dim(ae(t.thinkingTokens))} (included in total)`),console.log(` Avg tokens/session: ${D.bold(ae(t.avgTokensPerSession))}`),s.cost&&(t.estimatedCostCopilot??0)>0&&console.log(` Estimated cost (UBB): ${D.green("$"+(t.estimatedCostCopilot??0).toFixed(4))} ${D.dim("(Copilot AI Credits)")}`),s.models&&Object.keys(t.modelUsage).length>0){console.log(),console.log(D.dim(" Model Breakdown:"));let n=Object.entries(t.modelUsage).sort((i,r)=>r[1].inputTokens+r[1].outputTokens-(i[1].inputTokens+i[1].outputTokens));for(let[i,r]of n){let l=r.inputTokens+r.outputTokens,u=rt(i,os),p=u==="premium"?D.yellow(" \u2B50"):u==="standard"?D.dim(" \u25CB"):"";console.log(` ${(i+p).padEnd(35)} ${ae(r.inputTokens).padStart(8)} in ${ae(r.outputTokens).padStart(8)} out ${ae(l).padStart(8)} total`)}}if(Object.keys(t.editorUsage).length>1){console.log(),console.log(D.dim(" Editor Breakdown:"));let n=Object.entries(t.editorUsage).sort((i,r)=>r[1].tokens-i[1].tokens);for(let[i,r]of n)console.log(` ${i.padEnd(25)} ${X(r.sessions).padStart(5)} sessions ${ae(r.tokens).padStart(8)} tokens`)}console.log()}var zl=new ce("environmental").alias("env").description("Show environmental impact of your Copilot usage (CO2, water, trees)").action(async()=>{console.log(D.bold.cyan(`
66
66
  \u{1F30D} Copilot Token Tracker - Environmental Impact
67
- `)),process.stdout.write(A.dim("Scanning for session files..."));let i=await me();if(process.stdout.write("\r"+" ".repeat(50)+"\r"),i.length===0){console.log(A.yellow("\u26A0\uFE0F No session files found."));return}process.stdout.write(A.dim("Calculating usage..."));let e=await ft(i,(n,o)=>{process.stdout.write(`\r${A.dim(`Processing: ${n}/${o} files`)}`)});process.stdout.write("\r"+" ".repeat(50)+"\r");let t=[{label:"Today",emoji:"\u{1F4C5}",stats:e.today},{label:"This Month",emoji:"\u{1F4C6}",stats:e.month},{label:"Last Month",emoji:"\u{1F5D3}\uFE0F",stats:e.lastMonth},{label:"Last 30 Days",emoji:"\u{1F4C8}",stats:e.last30Days}];console.log(A.dim("Methodology: Estimates based on industry averages for AI inference")),console.log(A.dim(` CO\u2082: ${yt.CO2_PER_1K_TOKENS} gCO\u2082e per 1K tokens`)),console.log(A.dim(` Water: ${yt.WATER_USAGE_PER_1K_TOKENS} L per 1K tokens`)),console.log(A.dim(` Tree absorption: ${wl(yt.CO2_ABSORPTION_PER_TREE_PER_YEAR)} CO\u2082/year
68
- `));for(let n of t)Wd(n.label,n.emoji,n.stats);let s=e.last30Days;if(s.tokens>0){console.log(A.bold("\u{1F504} Context Comparisons (Last 30 Days)")),console.log(A.dim("\u2500".repeat(55)));let n=s.co2,o=s.waterUsage,r=n/yt.CO2_PER_KM_DRIVING;console.log(` \u{1F697} Equivalent to driving: ${r.toFixed(3)} km`);let l=n/yt.CO2_PER_PHONE_CHARGE;console.log(` \u{1F4F1} Smartphone charges: ${l.toFixed(1)}`);let u=o/yt.WATER_PER_COFFEE_CUP;console.log(` \u2615 Cups of coffee (water): ${u.toFixed(4)}`);let m=n/yt.CO2_PER_LED_HOUR;console.log(` \u{1F4A1} LED bulb hours: ${m.toFixed(2)}`),console.log()}console.log(A.dim(`Last updated: ${e.lastUpdated.toLocaleString()}
69
- `))});function wl(i){return i>=1e3?`${(i/1e3).toFixed(2)} kgCO\u2082e`:`${i.toFixed(3)} gCO\u2082e`}function Wd(i,e,t){if(console.log(A.bold(`${e} ${i}`)),console.log(A.dim("\u2500".repeat(55))),t.sessions===0){console.log(A.dim(" No activity in this period")),console.log();return}if(console.log(` Tokens used: ${A.bold.yellow(re(t.tokens))}`),console.log(` CO\u2082 emissions: ${A.bold(wl(t.co2))}`),console.log(` Water usage: ${A.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: ${A.green(s)} trees/year`)}console.log()}var Sl=["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"];var Vd=new Set(Sl.map(i=>i.toLowerCase()));function G(i){return i.toLocaleString("en-US")}function fe(i,e){return Math.max(i,e)}var Jd={1:"Stage 1: AI Skeptic",2:"Stage 2: AI Explorer",3:"Stage 3: AI Collaborator",4:"Stage 4: AI Strategist"};function Kd(i){let e=[...i].sort((n,o)=>n-o),t=Math.floor(e.length/2);return e.length%2===0?Math.round((e[t-1]+e[t])/2):e[t]}var Yd=["explain","fix","tests","doc","generate","optimize","new","newNotebook","search","fixTestFailure","setupTests"],Qd=["review","bug","think","compact","pr_comments"];function Xd(i){return[...Yd.filter(e=>(i[e]??0)>0),...Qd.filter(e=>(i[`__slash__${e}`]??0)>0)]}function kl(i){return Object.keys(i).filter(e=>!Vd.has(e.toLowerCase())&&!e.startsWith("__slash__")).length}function Zd(i){let e=[],t=[],s=1,n=i.modeUsage.ask+i.modeUsage.edit+i.modeUsage.agent+i.modeUsage.cli;if(n>0&&e.push(`${G(n)} total interactions`),i.modeUsage.ask>0&&e.push(`${G(i.modeUsage.ask)} ask-mode conversations`),i.modeUsage.agent>0&&e.push(`${G(i.modeUsage.agent)} agent-mode interactions`),i.modeUsage.cli>0&&e.push(`${G(i.modeUsage.cli)} CLI interactions`),i.conversationPatterns){let u=i.sessions>0?Math.round(i.conversationPatterns.multiTurnSessions/i.sessions*100):0;i.conversationPatterns.multiTurnSessions>0&&e.push(`${G(i.conversationPatterns.multiTurnSessions)} multi-turn sessions (${u}%)`),i.conversationPatterns.avgTurnsPerSession>=3&&(e.push(`Avg ${i.conversationPatterns.avgTurnsPerSession.toFixed(1)} exchanges per session`),s=fe(s,2)),i.conversationPatterns.avgTurnsPerSession>=5&&(s=fe(s,3))}n>=5&&(s=2);let o=Xd(i.toolCalls.byTool);o.length>0&&e.push(`Used slash commands: /${o.join(", /")}`);let r=i.modelSwitching.mixedTierSessions>0||i.modelSwitching.switchingFrequency>0,l=i.modeUsage.agent>0||i.modeUsage.cli>0;return n>=30&&(o.length>=2||l)&&(s=3),n>=100&&l&&(r||o.length>=3)&&(s=4),r&&(e.push(`Switched models in ${Math.round(i.modelSwitching.switchingFrequency)}% of sessions`),s<4&&i.modelSwitching.mixedTierSessions>0&&(s=fe(s,3))),s<2&&t.push("Try asking Copilot a question using the Chat panel"),s<3&&(l||t.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for multi-file changes"),o.length<2&&t.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")),s<4&&(l||t.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for autonomous, multi-step coding tasks"),r||t.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"),o.length<3&&l&&r&&t.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")),{stage:s,evidence:e,tips:t}}function em(i){let e=[],t=[],s=1,n=i.contextReferences,o=n.file+n.selection+n.symbol+n.codebase+n.workspace,r=[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].filter(Boolean).length;n.file>0&&e.push(`${G(n.file)} #file references`),n.selection>0&&e.push(`${G(n.selection)} #selection references`),n.codebase>0&&e.push(`${G(n.codebase)} #codebase references`),n.workspace>0&&e.push(`${G(n.workspace)} @workspace references`),n.terminal>0&&e.push(`${G(n.terminal)} @terminal references`),n.vscode>0&&e.push(`${G(n.vscode)} @vscode references`),n.clipboard>0&&e.push(`${G(n.clipboard)} #clipboard references`),n.changes>0&&e.push(`${G(n.changes)} #changes references`),n.problemsPanel>0&&e.push(`${G(n.problemsPanel)} #problemsPanel references`),n.outputPanel>0&&e.push(`${G(n.outputPanel)} #outputPanel references`),n.terminalLastCommand>0&&e.push(`${G(n.terminalLastCommand)} #terminalLastCommand references`),n.terminalSelection>0&&e.push(`${G(n.terminalSelection)} #terminalSelection references`),o>=1&&(s=2),r>=3&&o>=10&&(s=3),r>=5&&o>=30&&(s=4);let l=n.byKind["copilot.image"]||0;if(l>0&&(e.push(`${G(l)} image references (vision)`),s=fe(s,3)),s<2&&t.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"),s<3&&t.push("Explore [@workspace, #codebase, and @terminal](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) for broader context"),s<4){let u=Math.max(0,5-r),m=Math.max(0,30-o),p=[{name:"image attachments",used:l>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(p.filter(f=>f.used).length>=2){let f=[{name:"#symbol",used:n.symbol>0},{name:"@workspace",used:n.workspace>0},{name:"#codebase",used:n.codebase>0},{name:"@terminal",used:n.terminal>0},...p].filter(_=>!_.used).map(_=>_.name),y=[];if(u>0&&y.push(`${G(r)} of 5 different reference types used`),m>0&&y.push(`${G(o)} of 30 total references`),y.length>0){let _=f.slice(0,3),v=_.length>0?` \u2014 try ${_.join(", ")}`:"";t.push(`Stage 4 needs ${y.join(" and ")}${v}`)}}else{let f=p.filter(y=>!y.used).map(y=>y.name);if(f.length>0){let y=f.slice(0,3),_=f.length>3?` and ${f.length-3} more`:"";t.push(`Try ${y.join(", ")}${_} \u2014 see [specialized context variables](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) to reach Stage 4`)}}}return{stage:s,evidence:e,tips:t}}function tm(i){let e=[],t=[],s=1;if(i.modeUsage.agent>0&&(e.push(`${G(i.modeUsage.agent)} agent-mode interactions`),s=2),i.modeUsage.cli>0&&(e.push(`${G(i.modeUsage.cli)} CLI interactions`),s=fe(s,2)),i.toolCalls.total>0&&e.push(`${G(i.toolCalls.total)} tool calls executed`),i.modeUsage.edit>0&&e.push(`${G(i.modeUsage.edit)} edit-mode interactions`),i.editScope){let o=i.editScope.totalEditedFiles>0?Math.round(i.editScope.multiFileEdits/(i.editScope.singleFileEdits+i.editScope.multiFileEdits)*100):0;i.editScope.multiFileEdits>0&&(e.push(`${G(i.editScope.multiFileEdits)} multi-file edit sessions (${o}%)`),s=fe(s,2)),i.editScope.avgFilesPerSession>=3&&(e.push(`Avg ${i.editScope.avgFilesPerSession.toFixed(1)} files per edit session`),s=fe(s,3))}i.agentTypes&&i.agentTypes.editsAgent>0&&(e.push(`${G(i.agentTypes.editsAgent)} edits agent sessions`),s=fe(s,2));let n=kl(i.toolCalls.byTool);return i.modeUsage.agent+i.modeUsage.cli>=10&&n>=3&&(s=3),i.modeUsage.agent+i.modeUsage.cli>=50&&n>=5&&(s=4),i.editScope&&i.editScope.multiFileEdits>=20&&i.editScope.avgFilesPerSession>=3&&(s=fe(s,4)),s<2&&t.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"),s<3&&t.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"),s<4&&t.push("Tackle complex refactoring or debugging tasks in [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for deeper autonomous workflows"),{stage:s,evidence:e,tips:t}}function sm(i){let e=[],t=[],s=1,n=Object.keys(i.toolCalls.byTool).length,o=kl(i.toolCalls.byTool);if(o>0){let m=n-o,p=m>0?` (+ ${G(m)} automatic)`:"";e.push(`${G(o)} intentional tools used${p}`),s=2}else n>0&&e.push(`${G(n)} tools used (all automatic \u2014 agent reads/searches)`);i.agentTypes&&i.agentTypes.workspaceAgent>0&&(e.push(`${G(i.agentTypes.workspaceAgent)} @workspace agent sessions`),s=fe(s,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=>(i.toolCalls.byTool[m]||0)>0);l.length>0&&(e.push(`Advanced tools: ${l.map(m=>r[m]).join(", ")}`),l.length>=2&&(s=fe(s,3)));let u=Object.keys(i.mcpTools.byServer);return i.mcpTools.total>0&&(e.push(`${G(i.mcpTools.total)} MCP tool calls across ${u.length} server(s)`),s=fe(s,3),u.length>=2&&(s=4)),s<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"),s<3&&(u.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")),s<4&&(u.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"):u.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")),{stage:s,evidence:e,tips:t}}function nm(i,e){let t=[],s=[],n=1,o=e,r=o?.totalWorkspaces??0,l=r-(o?.workspacesWithIssues??0),u=r>0?l/r:0;r>0&&t.push(`Worked in ${r} repositor${r===1?"y":"ies"}`),l>0&&(n=2),u>=.3&&l>=2&&(n=3),u>=.7&&l>=3&&(n=4);let m=[...new Set([...i.modelSwitching.standardModels,...i.modelSwitching.premiumModels])];if(m.length>=3){let p=m.length>=5&&l>=3;t.push(`Used ${m.length} different models`),p?n=4:n=fe(n,3)}if(n>=4?t.push(`${G(l)} of ${G(r)} repos customized (70%+ with 3+ repos \u2192 Stage 4)`):n>=3?t.push(`${G(l)} of ${G(r)} repos customized (30%+ with 2+ repos \u2192 Stage 3)`):l>0&&t.push(`${G(l)} of ${G(r)} repos with custom instructions or agents.md`),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){let p=r-l;r>0&&p>0?s.push(`${G(l)} of ${G(r)} repos have customization \u2014 add [instructions and agents.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions) to the remaining ${G(p)} repo${p===1?"":"s"} for Stage 4`):s.push("Aim for consistent customization across all projects with [instructions and agents.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions)")}if(n>=4){let p=r-l;if(p>0){let f=(o?.workspaces||[]).filter(_=>Object.values(_.typeStatuses).every(v=>v==="\u274C")).filter(_=>!_.workspacePath.startsWith("<unresolved:")).sort((_,v)=>v.interactionCount!==_.interactionCount?v.interactionCount-_.interactionCount:v.sessionCount-_.sessionCount).slice(0,3),y=`${G(p)} repo${p===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.`;if(f.length>0){let _=f.map(v=>`${v.workspaceName} (${G(v.interactionCount)} interaction${v.interactionCount===1?"":"s"})`).join(`
70
- `);s.push(`${y}
67
+ `));let o=new Re;o.show("Scanning for session files...");let e=await he();if(o.done(),e.length===0){console.log(D.yellow("\u26A0\uFE0F No session files found."));return}o.show("Calculating usage...");let t=await wt(e,(i,r)=>{o.update(`Processing: ${i}/${r} files`)});o.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(D.dim("Methodology: Estimates based on industry averages for AI inference")),console.log(D.dim(` CO\u2082: ${Ee.CO2_PER_1K_TOKENS} gCO\u2082e per 1K tokens`)),console.log(D.dim(` Water: ${Ee.WATER_USAGE_PER_1K_TOKENS} L per 1K tokens`)),console.log(D.dim(` Tree absorption: ${Bl(Ee.CO2_ABSORPTION_PER_TREE_PER_YEAR)} CO\u2082/year
68
+ `));for(let i of s)lm(i.label,i.emoji,i.stats);let n=t.last30Days;if(n.tokens>0){console.log(D.bold("\u{1F504} Context Comparisons (Last 30 Days)")),console.log(D.dim("\u2500".repeat(55)));let i=n.co2,r=n.waterUsage,l=i/Ee.CO2_PER_KM_DRIVING;console.log(` \u{1F697} Equivalent to driving: ${l.toFixed(3)} km`);let u=i/Ee.CO2_PER_PHONE_CHARGE;console.log(` \u{1F4F1} Smartphone charges: ${u.toFixed(1)}`);let p=r/Ee.WATER_PER_COFFEE_CUP;console.log(` \u2615 Cups of coffee (water): ${p.toFixed(4)}`);let m=i/Ee.CO2_PER_LED_HOUR;console.log(` \u{1F4A1} LED bulb hours: ${m.toFixed(2)}`),console.log()}console.log(D.dim(`Last updated: ${t.lastUpdated.toLocaleString()}
69
+ `))});function Bl(o){return o==null||!Number.isFinite(o)||o<0?"0.000 gCO\u2082e":o>=1e3?`${(o/1e3).toFixed(2)} kgCO\u2082e`:`${o.toFixed(3)} gCO\u2082e`}function lm(o,e,t){if(console.log(D.bold(`${e} ${o}`)),console.log(D.dim("\u2500".repeat(55))),!t||t.sessions===0){console.log(D.dim(" No activity in this period")),console.log();return}if(console.log(` Tokens used: ${D.bold.yellow(ae(t.tokens))}`),console.log(` CO\u2082 emissions: ${D.bold(Bl(t.co2))}`),console.log(` Water usage: ${D.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: ${D.green(s)} trees/year`)}console.log()}var Wl=["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"];var um=new Set(Wl.map(o=>o.toLowerCase()));function L(o){return o.toLocaleString("en-US")}function _e(o,e){return Math.max(o,e)}var dm={1:"Stage 1: AI Skeptic",2:"Stage 2: AI Explorer",3:"Stage 3: AI Collaborator",4:"Stage 4: AI Strategist"};function mm(o){let e=[...o].sort((n,i)=>n-i),t=Math.floor(e.length/2);return e.length%2===0?Math.round((e[t-1]+e[t])/2):e[t]}var pm=["explain","fix","tests","doc","generate","optimize","new","newNotebook","search","fixTestFailure","setupTests"],hm=["review","bug","think","compact","pr_comments"];function fm(o){return[...pm.filter(e=>(o[e]??0)>0),...hm.filter(e=>(o[`__slash__${e}`]??0)>0)]}function Hl(o){return Object.keys(o).filter(e=>!um.has(e.toLowerCase())&&!e.startsWith("__slash__")).length}function gm(o){let e=[],t=[],s=1,n=o.modeUsage.ask+o.modeUsage.edit+o.modeUsage.agent+o.modeUsage.cli;if(n>0&&e.push(`${L(n)} total interactions`),o.modeUsage.ask>0&&e.push(`${L(o.modeUsage.ask)} ask-mode conversations`),o.modeUsage.agent>0&&e.push(`${L(o.modeUsage.agent)} agent-mode interactions`),o.modeUsage.cli>0&&e.push(`${L(o.modeUsage.cli)} CLI interactions`),o.conversationPatterns){let u=o.sessions>0?Math.round(o.conversationPatterns.multiTurnSessions/o.sessions*100):0;o.conversationPatterns.multiTurnSessions>0&&e.push(`${L(o.conversationPatterns.multiTurnSessions)} multi-turn sessions (${u}%)`),o.conversationPatterns.avgTurnsPerSession>=3&&(e.push(`Avg ${o.conversationPatterns.avgTurnsPerSession.toFixed(1)} exchanges per session`),s=_e(s,2)),o.conversationPatterns.avgTurnsPerSession>=5&&(s=_e(s,3))}n>=5&&(s=2);let i=fm(o.toolCalls.byTool);i.length>0&&e.push(`Used slash commands: /${i.join(", /")}`);let r=o.modelSwitching.mixedTierSessions>0||o.modelSwitching.switchingFrequency>0,l=o.modeUsage.agent>0||o.modeUsage.cli>0;return n>=30&&(i.length>=2||l)&&(s=3),n>=100&&l&&(r||i.length>=3)&&(s=4),r&&(e.push(`Switched models in ${Math.round(o.modelSwitching.switchingFrequency)}% of sessions`),s<4&&o.modelSwitching.mixedTierSessions>0&&(s=_e(s,3))),s<2&&t.push("Try asking Copilot a question using the Chat panel"),s<3&&(l||t.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for multi-file changes"),i.length<2&&t.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")),s<4&&(l||t.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for autonomous, multi-step coding tasks"),r||t.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"),i.length<3&&l&&r&&t.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")),{stage:s,evidence:e,tips:t}}function ym(o){let e=[],t=[],s=1,n=o.contextReferences,i=n.file+n.selection+n.symbol+n.codebase+n.workspace,r=[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].filter(Boolean).length;n.file>0&&e.push(`${L(n.file)} #file references`),n.selection>0&&e.push(`${L(n.selection)} #selection references`),n.codebase>0&&e.push(`${L(n.codebase)} #codebase references`),n.workspace>0&&e.push(`${L(n.workspace)} @workspace references`),n.terminal>0&&e.push(`${L(n.terminal)} @terminal references`),n.vscode>0&&e.push(`${L(n.vscode)} @vscode references`),n.clipboard>0&&e.push(`${L(n.clipboard)} #clipboard references`),n.changes>0&&e.push(`${L(n.changes)} #changes references`),n.problemsPanel>0&&e.push(`${L(n.problemsPanel)} #problemsPanel references`),n.outputPanel>0&&e.push(`${L(n.outputPanel)} #outputPanel references`),n.terminalLastCommand>0&&e.push(`${L(n.terminalLastCommand)} #terminalLastCommand references`),n.terminalSelection>0&&e.push(`${L(n.terminalSelection)} #terminalSelection references`),i>=1&&(s=2),r>=3&&i>=10&&(s=3),r>=5&&i>=30&&(s=4);let l=n.byKind["copilot.image"]||0;if(l>0&&(e.push(`${L(l)} image references (vision)`),s=_e(s,3)),s<2&&t.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"),s<3&&t.push("Explore [@workspace, #codebase, and @terminal](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) for broader context"),s<4){let u=Math.max(0,5-r),p=Math.max(0,30-i),m=[{name:"image attachments",used:l>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(m.filter(g=>g.used).length>=2){let g=[{name:"#symbol",used:n.symbol>0},{name:"@workspace",used:n.workspace>0},{name:"#codebase",used:n.codebase>0},{name:"@terminal",used:n.terminal>0},...m].filter(y=>!y.used).map(y=>y.name),_=[];if(u>0&&_.push(`${L(r)} of 5 different reference types used`),p>0&&_.push(`${L(i)} of 30 total references`),_.length>0){let y=g.slice(0,3),C=y.length>0?` \u2014 try ${y.join(", ")}`:"";t.push(`Stage 4 needs ${_.join(" and ")}${C}`)}}else{let g=m.filter(_=>!_.used).map(_=>_.name);if(g.length>0){let _=g.slice(0,3),y=g.length>3?` and ${g.length-3} more`:"";t.push(`Try ${_.join(", ")}${y} \u2014 see [specialized context variables](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) to reach Stage 4`)}}}return{stage:s,evidence:e,tips:t}}function _m(o){let e=[],t=[],s=1;if(o.modeUsage.agent>0&&(e.push(`${L(o.modeUsage.agent)} agent-mode interactions`),s=2),o.modeUsage.cli>0&&(e.push(`${L(o.modeUsage.cli)} CLI interactions`),s=_e(s,2)),o.toolCalls.total>0&&e.push(`${L(o.toolCalls.total)} tool calls executed`),o.modeUsage.edit>0&&e.push(`${L(o.modeUsage.edit)} edit-mode interactions`),o.editScope){let i=o.editScope.totalEditedFiles>0?Math.round(o.editScope.multiFileEdits/(o.editScope.singleFileEdits+o.editScope.multiFileEdits)*100):0;o.editScope.multiFileEdits>0&&(e.push(`${L(o.editScope.multiFileEdits)} multi-file edit sessions (${i}%)`),s=_e(s,2)),o.editScope.avgFilesPerSession>=3&&(e.push(`Avg ${o.editScope.avgFilesPerSession.toFixed(1)} files per edit session`),s=_e(s,3))}o.agentTypes&&o.agentTypes.editsAgent>0&&(e.push(`${L(o.agentTypes.editsAgent)} edits agent sessions`),s=_e(s,2));let n=Hl(o.toolCalls.byTool);return o.modeUsage.agent+o.modeUsage.cli>=10&&n>=3&&(s=3),o.modeUsage.agent+o.modeUsage.cli>=50&&n>=5&&(s=4),o.editScope&&o.editScope.multiFileEdits>=20&&o.editScope.avgFilesPerSession>=3&&(s=_e(s,4)),s<2&&t.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"),s<3&&t.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"),s<4&&t.push("Tackle complex refactoring or debugging tasks in [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for deeper autonomous workflows"),{stage:s,evidence:e,tips:t}}function bm(o){let e=[],t=[],s=1,n=Object.keys(o.toolCalls.byTool).length,i=Hl(o.toolCalls.byTool);if(i>0){let p=n-i,m=p>0?` (+ ${L(p)} automatic)`:"";e.push(`${L(i)} intentional tools used${m}`),s=2}else n>0&&e.push(`${L(n)} tools used (all automatic \u2014 agent reads/searches)`);o.agentTypes&&o.agentTypes.workspaceAgent>0&&(e.push(`${L(o.agentTypes.workspaceAgent)} @workspace agent sessions`),s=_e(s,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(p=>(o.toolCalls.byTool[p]||0)>0);l.length>0&&(e.push(`Advanced tools: ${l.map(p=>r[p]).join(", ")}`),l.length>=2&&(s=_e(s,3)));let u=Object.keys(o.mcpTools.byServer);return o.mcpTools.total>0&&(e.push(`${L(o.mcpTools.total)} MCP tool calls across ${u.length} server(s)`),s=_e(s,3),u.length>=2&&(s=4)),s<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"),s<3&&(u.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")),s<4&&(u.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"):u.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")),{stage:s,evidence:e,tips:t}}function Cm(o,e){let t=[],s=[],n=1,i=e,r=i?.totalWorkspaces??0,l=r-(i?.workspacesWithIssues??0),u=r>0?l/r:0;r>0&&t.push(`Worked in ${r} repositor${r===1?"y":"ies"}`),l>0&&(n=2),u>=.3&&l>=2&&(n=3),u>=.7&&l>=3&&(n=4);let p=[...new Set([...o.modelSwitching.standardModels,...o.modelSwitching.premiumModels])];if(p.length>=3){let m=p.length>=5&&l>=3;t.push(`Used ${p.length} different models`),m?n=4:n=_e(n,3)}if(n>=4?t.push(`${L(l)} of ${L(r)} repos customized (70%+ with 3+ repos \u2192 Stage 4)`):n>=3?t.push(`${L(l)} of ${L(r)} repos customized (30%+ with 2+ repos \u2192 Stage 3)`):l>0&&t.push(`${L(l)} of ${L(r)} repos with custom instructions or agents.md`),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){let m=r-l;r>0&&m>0?s.push(`${L(l)} of ${L(r)} repos have customization \u2014 add [instructions and agents.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions) to the remaining ${L(m)} repo${m===1?"":"s"} for Stage 4`):s.push("Aim for consistent customization across all projects with [instructions and agents.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions)")}if(n>=4){let m=r-l;if(m>0){let g=(i?.workspaces||[]).filter(y=>Object.values(y.typeStatuses).every(C=>C==="\u274C")).filter(y=>!y.workspacePath.startsWith("<unresolved:")).sort((y,C)=>C.interactionCount!==y.interactionCount?C.interactionCount-y.interactionCount:C.sessionCount-y.sessionCount).slice(0,3),_=`${L(m)} repo${m===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.`;if(g.length>0){let y=g.map(C=>`${C.workspaceName} (${L(C.interactionCount)} interaction${C.interactionCount===1?"":"s"})`).join(`
70
+ `);s.push(`${_}
71
71
 
72
72
  Top repos to customize first:
73
- ${_}`)}else s.push(y)}else s.push("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")}return{stage:n,evidence:t,tips:s}}function om(i){let e=[],t=[],s=1;if(i.sessions>=3&&(e.push(`${G(i.sessions)} sessions in the last 30 days`),s=2),i.applyUsage&&i.applyUsage.totalCodeBlocks>0){let l=Math.round(i.applyUsage.applyRate);e.push(`${l}% code block apply rate (${G(i.applyUsage.totalApplies)}/${G(i.applyUsage.totalCodeBlocks)})`),l>=50&&(s=fe(s,2))}if(i.sessionDuration&&i.sessionDuration.avgDurationMs>0){let l=Math.round(i.sessionDuration.avgDurationMs/6e4);e.push(`Avg ${l}min session duration`)}let n=i.contextReferences.file+i.contextReferences.selection+i.contextReferences.symbol+i.contextReferences.codebase+i.contextReferences.workspace,o=[i.modeUsage.ask>0,i.modeUsage.agent>0,i.modeUsage.cli>0].filter(Boolean).length;return o>=2&&(e.push(`Uses ${o} modes (ask/agent/cli)`),s=fe(s,3)),n>=10&&(e.push(`${G(n)} explicit context references`),n>=20&&(s=fe(s,3))),i.sessions>=15&&o>=2&&n>=20&&(s=4,e.push("Deep integration: regular usage with multi-mode and explicit context")),s<2&&t.push("Use AI more regularly - even for quick questions"),s<3&&(o<2&&t.push("Combine [ask mode with agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) in your daily workflow"),n<10&&t.push("Use explicit [context references](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) like #file, @workspace, and #selection")),s<4&&(n<20&&t.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"),t.push("Make AI part of every coding task: planning, coding, testing, and reviewing")),{stage:s,evidence:e,tips:t}}async function so(i,e,t=!0){let s=await e(t),n=s.last30Days,o=Zd(n),r=em(n),l=tm(n),u=sm(n),m=nm(n,i),p=om(n),h=Kd([o.stage,r.stage,l.stage,u.stage,m.stage,p.stage]);return{overallStage:h,overallLabel:Jd[h]??`Stage ${h}`,categories:[{category:"Prompt Engineering",icon:"\u{1F4AC}",stage:o.stage,evidence:o.evidence,tips:o.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:u.stage,evidence:u.evidence,tips:u.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:n,lastUpdated:s.lastUpdated.toISOString()}}var vl=new le("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 i=>{i.json||console.log(A.bold.cyan(`
73
+ ${y}`)}else s.push(_)}else s.push("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")}return{stage:n,evidence:t,tips:s}}function km(o){let e=[],t=[],s=1;if(o.sessions>=3&&(e.push(`${L(o.sessions)} sessions in the last 30 days`),s=2),o.applyUsage&&o.applyUsage.totalCodeBlocks>0){let l=Math.round(o.applyUsage.applyRate);e.push(`${l}% code block apply rate (${L(o.applyUsage.totalApplies)}/${L(o.applyUsage.totalCodeBlocks)})`),l>=50&&(s=_e(s,2))}if(o.sessionDuration&&o.sessionDuration.avgDurationMs>0){let l=Math.round(o.sessionDuration.avgDurationMs/6e4);e.push(`Avg ${l}min session duration`)}let n=o.contextReferences.file+o.contextReferences.selection+o.contextReferences.symbol+o.contextReferences.codebase+o.contextReferences.workspace,i=[o.modeUsage.ask>0,o.modeUsage.agent>0,o.modeUsage.cli>0].filter(Boolean).length;return i>=2&&(e.push(`Uses ${i} modes (ask/agent/cli)`),s=_e(s,3)),n>=10&&(e.push(`${L(n)} explicit context references`),n>=20&&(s=_e(s,3))),o.sessions>=15&&i>=2&&n>=20&&(s=4,e.push("Deep integration: regular usage with multi-mode and explicit context")),s<2&&t.push("Use AI more regularly - even for quick questions"),s<3&&(i<2&&t.push("Combine [ask mode with agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) in your daily workflow"),n<10&&t.push("Use explicit [context references](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) like #file, @workspace, and #selection")),s<4&&(n<20&&t.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"),t.push("Make AI part of every coding task: planning, coding, testing, and reviewing")),{stage:s,evidence:e,tips:t}}async function _o(o,e,t=!0){let s=await e(t),n=s.last30Days,i=gm(n),r=ym(n),l=_m(n),u=bm(n),p=Cm(n,o),m=km(n),h=mm([i.stage,r.stage,l.stage,u.stage,p.stage,m.stage]);return{overallStage:h,overallLabel:dm[h]??`Stage ${h}`,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:u.stage,evidence:u.evidence,tips:u.tips},{category:"Customization",icon:"\u2699\uFE0F",stage:p.stage,evidence:p.evidence,tips:p.tips},{category:"Workflow Integration",icon:"\u{1F504}",stage:m.stage,evidence:m.evidence,tips:m.tips}],period:n,lastUpdated:s.lastUpdated.toISOString()}}var Vl=new ce("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 o=>{let e=Te(o);e||console.log(D.bold.cyan(`
74
74
  \u{1F3AF} Copilot Token Tracker - Fluency Score
75
- `)),i.json||process.stdout.write(A.dim("Scanning for session files..."));let e=await me();if(i.json||process.stdout.write("\r"+" ".repeat(50)+"\r"),e.length===0){i.json?process.stdout.write("{}"):console.log(A.yellow("\u26A0\uFE0F No session files found."));return}i.json||process.stdout.write(A.dim("Analyzing usage patterns..."));let t=await Zt(e);i.json||process.stdout.write("\r"+" ".repeat(50)+"\r");let s=await Xn(e),n=await so(s,async()=>t,!1);if(i.json){let h={overallStage:n.overallStage,overallLabel:n.overallLabel,categories:n.categories,period:n.period,lastUpdated:n.lastUpdated,backendConfigured:!1};process.stdout.write(JSON.stringify(h));return}let o={1:A.red,2:A.yellow,3:A.blue,4:A.green},r=h=>{let f="\u2588".repeat(h),y="\u2591".repeat(4-h);return f+y};console.log(A.bold("Overall Fluency Score")),console.log(A.dim("\u2500".repeat(55)));let l=o[n.overallStage]||A.white;console.log(` ${l(r(n.overallStage))} ${A.bold(n.overallLabel)}`),console.log(),console.log(A.bold("Category Breakdown")),console.log(A.dim("\u2500".repeat(55)));for(let h of n.categories){let f=o[h.stage]||A.white;if(console.log(` ${h.icon} ${A.bold(h.category)}`),console.log(` ${f(r(h.stage))} Stage ${h.stage}/4`),h.evidence.length>0){let y=h.evidence.slice(0,3);for(let _ of y)console.log(A.dim(` \u2713 ${_}`));h.evidence.length>3&&console.log(A.dim(` ... and ${h.evidence.length-3} more`))}if(h.tips.length>0&&h.stage<4){console.log(A.yellow(" \u{1F4A1} Tips:"));for(let y of h.tips.slice(0,2)){let _=y.replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/\[▶ [^\]]+\]\([^)]+\)/g,"").trim();console.log(A.yellow(` \u2192 ${_}`))}}console.log()}let u=n.period;console.log(A.bold("\u{1F4CA} Analysis Period (Last 30 Days)")),console.log(A.dim("\u2500".repeat(55))),console.log(` Sessions analyzed: ${A.bold(Z(u.sessions))}`);let m=u.modeUsage.ask+u.modeUsage.edit+u.modeUsage.agent+u.modeUsage.cli;console.log(` Total interactions: ${A.bold(Z(m))}`),u.modeUsage.ask>0&&console.log(` Ask mode: ${Z(u.modeUsage.ask)}`),u.modeUsage.edit>0&&console.log(` Edit mode: ${Z(u.modeUsage.edit)}`),u.modeUsage.agent>0&&console.log(` Agent mode: ${Z(u.modeUsage.agent)}`),u.modeUsage.cli>0&&console.log(` CLI: ${Z(u.modeUsage.cli)}`),u.toolCalls.total>0&&console.log(` Tool calls: ${Z(u.toolCalls.total)}`),u.mcpTools.total>0&&console.log(` MCP tool calls: ${Z(u.mcpTools.total)}`);let p=u.contextReferences.file+u.contextReferences.selection+u.contextReferences.codebase+u.contextReferences.workspace+u.contextReferences.terminal+u.contextReferences.vscode;p>0&&console.log(` Context references: ${Z(p)}`),console.log(),console.log(A.dim(`Last updated: ${n.lastUpdated}
76
- `))});function im(i,e){let t=i.replace(/\\/g,"/"),s=t.includes("opencode.db#")?t.split("#")[0]:t,n=null,o=0;for(let r of e){let l=r.path.replace(/\\/g,"/");s.startsWith(l)&&l.length>o&&(n={path:r.path,source:r.source},o=l.length)}return n}function Oi(i,e=55){if(i.length<=e)return i;let t=i.replace(/\\/g,"/").split("/"),s=i;for(let n=t.length-1;n>1&&(s="\u2026/"+t.slice(-n).join("/"),!(s.length<=e));n--);return s}function Pl(i,e,t){let s=A.dim("\u2500".repeat(t.reduce((o,r)=>o+r+3,-1))),n=i.map((o,r)=>A.bold(o.padEnd(t[r]))).join(" \u2502 ");console.log(" "+n),console.log(" "+s);for(let o of e){let r=o.map((l,u)=>{let m=l.padEnd(t[u]);return u===0?A.dim(m):m}).join(A.dim(" \u2502 "));console.log(" "+r)}console.log(" "+s)}var Tl=new le("diagnostics").description("Show session file search locations and per-location usage stats").action(async()=>{console.log(A.bold.cyan(`
75
+ `));let t=new Re(e);t.show("Scanning for session files...");let s=await he();if(t.done(),s.length===0){e?process.stdout.write("{}"):console.log(D.yellow("\u26A0\uFE0F No session files found."));return}t.show("Analyzing usage patterns...");let n=await rs(s);t.done();let i=await fo(s),r=await _o(i,async()=>n,!1);if(e){let _={overallStage:r.overallStage,overallLabel:r.overallLabel,categories:r.categories,period:r.period,lastUpdated:r.lastUpdated,backendConfigured:!1};process.stdout.write(JSON.stringify(_));return}let l={1:D.red,2:D.yellow,3:D.blue,4:D.green},u=_=>{let y=Number.isFinite(_)&&_>=1&&_<=4?Math.floor(_):0,C="\u2588".repeat(y),x="\u2591".repeat(4-y);return C+x};console.log(D.bold("Overall Fluency Score")),console.log(D.dim("\u2500".repeat(55)));let p=l[r.overallStage]||D.white;console.log(` ${p(u(r.overallStage))} ${D.bold(r.overallLabel)}`),console.log(),console.log(D.bold("Category Breakdown")),console.log(D.dim("\u2500".repeat(55)));for(let _ of r.categories){let y=l[_.stage]||D.white;if(console.log(` ${_.icon} ${D.bold(_.category)}`),console.log(` ${y(u(_.stage))} Stage ${_.stage}/4`),_.evidence.length>0){let C=_.evidence.slice(0,3);for(let x of C)console.log(D.dim(` \u2713 ${x}`));_.evidence.length>3&&console.log(D.dim(` ... and ${_.evidence.length-3} more`))}if(_.tips.length>0&&_.stage<4){console.log(D.yellow(" \u{1F4A1} Tips:"));for(let C of _.tips.slice(0,2)){let x=C.replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/\[▶ [^\]]+\]\([^)]+\)/g,"").trim();console.log(D.yellow(` \u2192 ${x}`))}}console.log()}let m=r.period;console.log(D.bold("\u{1F4CA} Analysis Period (Last 30 Days)")),console.log(D.dim("\u2500".repeat(55))),console.log(` Sessions analyzed: ${D.bold(X(m.sessions))}`);let h=m.modeUsage.ask+m.modeUsage.edit+m.modeUsage.agent+m.modeUsage.cli;console.log(` Total interactions: ${D.bold(X(h))}`),m.modeUsage.ask>0&&console.log(` Ask mode: ${X(m.modeUsage.ask)}`),m.modeUsage.edit>0&&console.log(` Edit mode: ${X(m.modeUsage.edit)}`),m.modeUsage.agent>0&&console.log(` Agent mode: ${X(m.modeUsage.agent)}`),m.modeUsage.cli>0&&console.log(` CLI: ${X(m.modeUsage.cli)}`),m.toolCalls.total>0&&console.log(` Tool calls: ${X(m.toolCalls.total)}`),m.mcpTools.total>0&&console.log(` MCP tool calls: ${X(m.mcpTools.total)}`);let g=m.contextReferences.file+m.contextReferences.selection+m.contextReferences.codebase+m.contextReferences.workspace+m.contextReferences.terminal+m.contextReferences.vscode;g>0&&console.log(` Context references: ${X(g)}`),console.log(),console.log(D.dim(`Last updated: ${r.lastUpdated}
76
+ `))});function Sm(o,e){let t=wn(o),s=t.includes("opencode.db#")?t.split("#")[0]:t,n=null,i=0;for(let r of e){let l=wn(r.path);s.startsWith(l)&&l.length>i&&(n={path:r.path,source:r.source},i=l.length)}return n}function ir(o,e=55){if(!o)return"";if(o.length<=e)return o;let t=o.replace(/\\/g,"/").split("/"),s=o;for(let n=t.length-1;n>1&&(s="\u2026/"+t.slice(-n).join("/"),!(s.length<=e));n--);return s}function Jl(o,e,t){if(!o||!e||!t)return;if(o.length!==t.length)throw new Error(`printTable: headers.length (${o.length}) !== colWidths.length (${t.length})`);let s=D.dim("\u2500".repeat(t.reduce((i,r)=>i+r+3,-1))),n=o.map((i,r)=>D.bold(i.padEnd(t[r]))).join(" \u2502 ");console.log(" "+n),console.log(" "+s);for(let i of e){let r=i.map((l,u)=>{let p=l.padEnd(t[u]);return u===0?D.dim(p):p}).join(D.dim(" \u2502 "));console.log(" "+r)}console.log(" "+s)}var Kl=new ce("diagnostics").description("Show session file search locations and per-location usage stats").action(async()=>{console.log(D.bold.cyan(`
77
77
  \u{1F52C} Copilot Token Tracker - Diagnostics
78
- `));let i=Zn(),e=i.filter(k=>k.exists),t=i.filter(k=>!k.exists);console.log(A.bold(`\u{1F4C2} Search Locations (${e.length} found / ${i.length} total)`)),console.log(A.dim("\u2500".repeat(65)));let s=["Source","Exists","Path"],n=[18,6,55],o=i.map(k=>[k.source,k.exists?A.green("yes"):A.dim("no"),Oi(k.path,55)]);if(Pl(s,o,n),console.log(),e.length===0){console.log(A.yellow("\u26A0\uFE0F No search paths exist on this machine.")),console.log(A.dim("Have you used GitHub Copilot Chat in VS Code yet?"));return}process.stdout.write(A.dim("Scanning for session files..."));let r=await me();if(process.stdout.write("\r"+" ".repeat(60)+"\r"),r.length===0){console.log(A.yellow("\u26A0\uFE0F No session files found in any search path."));return}let l=new Map;for(let k of e)l.set(k.path,{label:Oi(k.path,45),source:k.source,files:0,sessions:0,interactions:0,tokens:0});let u=0,m=0,p=0,h=0;for(let k=0;k<r.length;k++){((k+1)%25===0||k===r.length-1)&&process.stdout.write(`\r${A.dim(`Processing: ${k+1}/${r.length} files...`)}`);let C=im(r[k],i),S=C?C.path:"__unknown__";l.has(S)||l.set(S,{label:C?Oi(C.path,45):"(unknown)",source:C?C.source:"unknown",files:0,sessions:0,interactions:0,tokens:0});let w=l.get(S);w.files++,u++;let P=await Xt(r[k]);P&&P.tokens>0&&(w.sessions++,w.interactions+=P.interactions,w.tokens+=ot(P),m++,p+=P.interactions,h+=ot(P))}process.stdout.write("\r"+" ".repeat(60)+"\r"),console.log(A.bold("\u{1F4CA} Stats per Search Location")),console.log(A.dim("\u2500".repeat(65)));let f=["Source","Files","Sessions","Turns","Tokens"],y=[18,6,9,8,14],_=[],v=[...l.values()].filter(k=>k.files>0).sort((k,C)=>C.tokens-k.tokens||k.source.localeCompare(C.source));for(let k of v)_.push([k.source,Z(k.files),Z(k.sessions),Z(k.interactions),re(k.tokens)]);_.length===0?console.log(A.dim(" No session data found in any location.")):Pl(f,_,y),console.log(),console.log(A.bold("\u{1F4C8} Totals (all time)")),console.log(A.dim("\u2500".repeat(65))),console.log(` Total files found: ${A.bold(Z(u))}`),console.log(` Files with data: ${A.bold(Z(m))}`),console.log(` Total chat turns: ${A.bold(Z(p))}`),console.log(` Total tokens: ${A.bold.yellow(re(h))}`),t.length>0&&(console.log(),console.log(A.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 Ml=new le("chart").description("Output daily token usage data for the chart webview").option("--json","Output raw JSON (for machine consumption)").action(async i=>{if(!i.json){process.stderr.write(`Use --json flag for chart data output
79
- `);return}let e=await me();if(e.length===0){process.stdout.write(JSON.stringify({labels:[],tokensData:[],sessionsData:[],modelDatasets:[],editorDatasets:[],editorTotalsMap:{},repositoryDatasets:[],repositoryTotalsMap:{},dailyCount:0,totalTokens:0,avgTokensPerDay:0,totalSessions:0,lastUpdated:new Date().toISOString(),backendConfigured:!1}));return}let{labels:t,days:s,allDaysMap:n}=await eo(e),o=to(t,s,n);process.stdout.write(JSON.stringify(o))});var xl=new le("usage-analysis").description("Output usage analysis stats for the usage analysis webview").option("--json","Output raw JSON (for machine consumption)").action(async i=>{if(!i.json){process.stderr.write(`Use --json flag for usage analysis data output
80
- `);return}let e=await me(),t=new Date;if(e.length===0){process.stdout.write(JSON.stringify({today:{},last30Days:{},month:{},locale:Intl.DateTimeFormat().resolvedOptions().locale,lastUpdated:t.toISOString(),backendConfigured:!1}));return}let n={...await Zt(e),locale:Intl.DateTimeFormat().resolvedOptions().locale,lastUpdated:t.toISOString(),backendConfigured:!1};process.stdout.write(JSON.stringify(n))});var Al=new le("all").description("Output all view data in a single JSON response (for Visual Studio extension)").option("--json","Output raw JSON (required)").action(async i=>{if(!i.json){process.stderr.write(`Use --json flag for all data output
81
- `);return}let e=new Date,t=await me();if(t.length===0){let v={details:{today:{},month:{},lastMonth:{},last30Days:{},lastUpdated:e.toISOString(),backendConfigured:!1},chart:{labels:[],tokensData:[],sessionsData:[],modelDatasets:[],editorDatasets:[],editorTotalsMap:{},repositoryDatasets:[],repositoryTotalsMap:{},dailyCount:0,totalTokens:0,avgTokensPerDay:0,totalSessions:0,lastUpdated:e.toISOString(),backendConfigured:!1},usage:{today:{},last30Days:{},month:{},locale:Intl.DateTimeFormat().resolvedOptions().locale,lastUpdated:e.toISOString(),backendConfigured:!1},fluency:{}};process.stdout.write(JSON.stringify(v));return}let[s,{labels:n,days:o,allDaysMap:r},l]=await Promise.all([ft(t),eo(t),Zt(t)]),u=to(n,o,r),m={today:s.today,month:s.month,lastMonth:s.lastMonth,last30Days:s.last30Days,lastUpdated:s.lastUpdated.toISOString(),backendConfigured:!1},p={...l,locale:Intl.DateTimeFormat().resolvedOptions().locale,lastUpdated:e.toISOString(),backendConfigured:!1},h=await Xn(t),f=await so(h,async()=>l,!1),y={overallStage:f.overallStage,overallLabel:f.overallLabel,categories:f.categories,period:f.period,lastUpdated:f.lastUpdated,backendConfigured:!1},_={details:m,chart:u,usage:p,fluency:y};process.stdout.write(JSON.stringify(_))});var _t=O(require("fs")),Ni=O(require("path")),El=O(require("os"));var Il=Ni.join(El.homedir(),".copilot-token-tracker"),Fi=Ni.join(Il,"omp-segment-cache.json"),Ui=5;function rm(i){try{if(!_t.existsSync(Fi))return null;let e=JSON.parse(_t.readFileSync(Fi,"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>i*6e4?null:e}catch{return null}}function Dl(i){try{_t.mkdirSync(Il,{recursive:!0}),_t.writeFileSync(Fi,JSON.stringify(i),"utf-8")}catch{}}var Rl=new le("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: ${Ui})`,`${Ui}`).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 i=>{let e=Number(i.ttl),t=Number.isFinite(e)&&e>=0?e:Ui;if(!i.refresh){let l=rm(t);if(l){if(i.hideZero&&l.todayTokens===0&&l.last30DaysTokens===0)return;process.stdout.write(l.formatted);return}}let s=await me(),n=0,o=0;if(s.length>0){let l=await ft(s);n=l.today.tokens,o=l.last30Days.tokens}if(i.hideZero&&n===0&&o===0){Dl({updatedAt:new Date().toISOString(),formatted:"",todayTokens:n,last30DaysTokens:o});return}let r=`${re(n)} today \xB7 ${re(o)} 30d`;Dl({updatedAt:new Date().toISOString(),formatted:r,todayTokens:n,last30DaysTokens:o}),process.stdout.write(r)});var lm=Ol(),we=new le;we.name("copilot-token-tracker").description("Analyze GitHub Copilot token usage from local session files").version(lm.version).option("--no-cache","Bypass the session file cache and re-parse everything");we.hook("preAction",()=>{we.opts().cache===!1?xi():Ai()});we.hook("postAction",()=>{Di()});we.addCommand(_l);we.addCommand(bl);we.addCommand(Cl);we.addCommand(vl);we.addCommand(Tl);we.addCommand(Ml);we.addCommand(xl);we.addCommand(Al);we.addCommand(Rl);we.parse();
78
+ `));let o=go(),e=o.filter(w=>w.exists),t=o.filter(w=>!w.exists);console.log(D.bold(`\u{1F4C2} Search Locations (${e.length} found / ${o.length} total)`)),console.log(D.dim("\u2500".repeat(65)));let s=["Source","Exists","Path"],n=[18,6,55],i=o.map(w=>[w.source,w.exists?D.green("yes"):D.dim("no"),ir(w.path,55)]);if(Jl(s,i,n),console.log(),e.length===0){console.log(D.yellow("\u26A0\uFE0F No search paths exist on this machine.")),console.log(D.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 he();if(r.done(),l.length===0){console.log(D.yellow("\u26A0\uFE0F No session files found in any search path."));return}let u=new Map;for(let w of e)u.set(w.path,{label:ir(w.path,45),source:w.source,files:0,sessions:0,interactions:0,tokens:0});let p=0,m=0,h=0,g=0;for(let w=0;w<l.length;w++){((w+1)%25===0||w===l.length-1)&&r.update(`Processing: ${w+1}/${l.length} files...`);let M=Sm(l[w],o),S=M?M.path:"__unknown__";u.has(S)||u.set(S,{label:M?ir(M.path,45):"(unknown)",source:M?M.source:"unknown",files:0,sessions:0,interactions:0,tokens:0});let T=u.get(S);T.files++,p++;let k=await is(l[w]);k&&k.tokens>0&&(T.sessions++,T.interactions+=k.interactions,T.tokens+=He(k),m++,h+=k.interactions,g+=He(k))}r.done(),console.log(D.bold("\u{1F4CA} Stats per Search Location")),console.log(D.dim("\u2500".repeat(65)));let _=["Source","Files","Sessions","Turns","Tokens"],y=[18,6,9,8,14],C=[],x=[...u.values()].filter(w=>w.files>0).sort((w,M)=>M.tokens-w.tokens||w.source.localeCompare(M.source));for(let w of x)C.push([w.source,X(w.files),X(w.sessions),X(w.interactions),ae(w.tokens)]);C.length===0?console.log(D.dim(" No session data found in any location.")):Jl(_,C,y),console.log(),console.log(D.bold("\u{1F4C8} Totals (all time)")),console.log(D.dim("\u2500".repeat(65))),console.log(` Total files found: ${D.bold(X(p))}`),console.log(` Files with data: ${D.bold(X(m))}`),console.log(` Total chat turns: ${D.bold(X(h))}`),console.log(` Total tokens: ${D.bold.yellow(ae(g))}`),t.length>0&&(console.log(),console.log(D.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 Ql=new ce("chart").description("Output daily token usage data for the chart webview").option("--json","Output raw JSON (for machine consumption)").action(async o=>{if(!Te(o)){process.stderr.write(`Use --json flag for chart data output
79
+ `);return}let e=await he();if(e.length===0){process.stdout.write(JSON.stringify({labels:[],tokensData:[],sessionsData:[],modelDatasets:[],editorDatasets:[],editorTotalsMap:{},repositoryDatasets:[],repositoryTotalsMap:{},dailyCount:0,totalTokens:0,avgTokensPerDay:0,totalSessions:0,lastUpdated:new Date().toISOString(),backendConfigured:!1}));return}let{labels:t,days:s,allDaysMap:n}=await yo(e),i=Ks(t,s,n);process.stdout.write(JSON.stringify(i))});var Yl=new ce("usage-analysis").description("Output usage analysis stats for the usage analysis webview").option("--json","Output raw JSON (for machine consumption)").action(async o=>{if(!Te(o)){process.stderr.write(`Use --json flag for usage analysis data output
80
+ `);return}let e=await he(),t=new Date;if(e.length===0){process.stdout.write(JSON.stringify({today:{},last30Days:{},month:{},locale:Intl.DateTimeFormat().resolvedOptions().locale,lastUpdated:t.toISOString(),backendConfigured:!1}));return}let n={...await rs(e),locale:Intl.DateTimeFormat().resolvedOptions().locale,lastUpdated:t.toISOString(),backendConfigured:!1};process.stdout.write(JSON.stringify(n))});var Xl=new ce("all").description("Output all view data in a single JSON response (for Visual Studio extension)").option("--json","Output raw JSON (required)").action(async o=>{if(!Te(o)){process.stderr.write(`Use --json flag for all data output
81
+ `);return}let e=new Date,t=await he();if(t.length===0){let C={details:{today:{},month:{},lastMonth:{},last30Days:{},lastUpdated:e.toISOString(),backendConfigured:!1},chart:{labels:[],tokensData:[],sessionsData:[],modelDatasets:[],editorDatasets:[],editorTotalsMap:{},repositoryDatasets:[],repositoryTotalsMap:{},dailyCount:0,totalTokens:0,avgTokensPerDay:0,totalSessions:0,lastUpdated:e.toISOString(),backendConfigured:!1},usage:{today:{},last30Days:{},month:{},locale:Intl.DateTimeFormat().resolvedOptions().locale,lastUpdated:e.toISOString(),backendConfigured:!1},fluency:{}};process.stdout.write(JSON.stringify(C));return}let[s,{labels:n,days:i,allDaysMap:r},l]=await Promise.all([wt(t),yo(t),rs(t)]),u=Ks(n,i,r),p={today:s.today,month:s.month,lastMonth:s.lastMonth,last30Days:s.last30Days,lastUpdated:s.lastUpdated.toISOString(),backendConfigured:!1},m={...l,locale:Intl.DateTimeFormat().resolvedOptions().locale,lastUpdated:e.toISOString(),backendConfigured:!1},h=await fo(t),g=await _o(h,async()=>l,!1),_={overallStage:g.overallStage,overallLabel:g.overallLabel,categories:g.categories,period:g.period,lastUpdated:g.lastUpdated,backendConfigured:!1},y={details:p,chart:u,usage:m,fluency:_};process.stdout.write(JSON.stringify(y))});var Tt=U(require("fs")),lr=U(require("path")),ec=U(require("os"));var tc=lr.join(ec.homedir(),".copilot-token-tracker"),ar=lr.join(tc,"omp-segment-cache.json"),rr=5;function wm(o){try{if(!Tt.existsSync(ar))return null;let e=JSON.parse(Tt.readFileSync(ar,"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>o*6e4?null:e}catch{return null}}function Zl(o){try{Tt.mkdirSync(tc,{recursive:!0}),Tt.writeFileSync(ar,JSON.stringify(o),"utf-8")}catch{}}var sc=new ce("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: ${rr})`,`${rr}`).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 o=>{let e=Number(o.ttl),t=Number.isFinite(e)&&e>=0?e:rr;if(!o.refresh){let l=wm(t);if(l){if(o.hideZero&&l.todayTokens===0&&l.last30DaysTokens===0)return;process.stdout.write(l.formatted);return}}let s=await he(),n=0,i=0;if(s.length>0){let l=await wt(s);n=l.today.tokens,i=l.last30Days.tokens}if(o.hideZero&&n===0&&i===0){Zl({updatedAt:new Date().toISOString(),formatted:"",todayTokens:n,last30DaysTokens:i});return}let r=`${ae(n)} today \xB7 ${ae(i)} 30d`;Zl({updatedAt:new Date().toISOString(),formatted:r,todayTokens:n,last30DaysTokens:i}),process.stdout.write(r)});var Pm=nc(),Pe=new ce;Pe.name("copilot-token-tracker").description("Analyze GitHub Copilot token usage from local session files").version(Pm.version).option("--no-cache","Bypass the session file cache and re-parse everything");Pe.hook("preAction",()=>{Pe.opts().cache===!1?Qi():Yi()});Pe.hook("postAction",()=>{Xi()});Pe.addCommand(ql);Pe.addCommand($l);Pe.addCommand(zl);Pe.addCommand(Vl);Pe.addCommand(Kl);Pe.addCommand(Ql);Pe.addCommand(Yl);Pe.addCommand(Xl);Pe.addCommand(sc);Pe.parse();