@rajbos/ai-engineering-fluency 0.0.12 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/cli.js +63 -57
- package/package.json +7 -6
package/dist/cli.js
CHANGED
|
@@ -1,75 +1,81 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var
|
|
3
|
-
`)}displayWidth(e){return
|
|
4
|
-
`+" ".repeat(t+c)),a+
|
|
5
|
-
${a}`)}boxWrap(e,t){if(t<this.minWidthToWrap)return e;let s=e.split(/\r\n|\n/),o=/[\s]*[^\s]+/g,n=[];return s.forEach(a=>{let
|
|
6
|
-
`)}};function
|
|
2
|
+
"use strict";var rc=Object.create;var fr=Object.defineProperty;var ac=Object.getOwnPropertyDescriptor;var lc=Object.getOwnPropertyNames;var cc=Object.getPrototypeOf,uc=Object.prototype.hasOwnProperty;var ie=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports);var dc=(i,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of lc(e))!uc.call(i,o)&&o!==t&&fr(i,o,{get:()=>e[o],enumerable:!(s=ac(e,o))||s.enumerable});return i};var N=(i,e,t)=>(t=i!=null?rc(cc(i)):{},dc(e||!i||!i.__esModule?fr(t,"default",{value:i,enumerable:!0}):t,i));var bs=ie(Tn=>{var lo=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}},vn=class extends lo{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Tn.CommanderError=lo;Tn.InvalidArgumentError=vn});var co=ie(xn=>{var{InvalidArgumentError:pc}=bs(),Pn=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 pc(`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 mc(i){let e=i.name()+(i.variadic===!0?"...":"");return i.required?"<"+e+">":"["+e+"]"}xn.Argument=Pn;xn.humanReadableArgName=mc});var Dn=ie(An=>{var{humanReadableArgName:hc}=co(),Mn=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(e){this.helpWidth=this.helpWidth??e.helpWidth??80}visibleCommands(e){let t=e.commands.filter(o=>!o._hidden),s=e._getHelpCommand();return s&&!s._hidden&&t.push(s),this.sortSubcommands&&t.sort((o,n)=>o.name().localeCompare(n.name())),t}compareOptions(e,t){let s=o=>o.short?o.short.replace(/^-/,""):o.long.replace(/^--/,"");return s(e).localeCompare(s(t))}visibleOptions(e){let t=e.options.filter(o=>!o.hidden),s=e._getHelpOption();if(s&&!s.hidden){let o=s.short&&e._findOption(s.short),n=s.long&&e._findOption(s.long);!o&&!n?t.push(s):s.long&&!n?t.push(e.createOption(s.long,s.description)):s.short&&!o&&t.push(e.createOption(s.short,s.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let s=e.parent;s;s=s.parent){let o=s.options.filter(n=>!n.hidden);t.push(...o)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||""}),e.registeredArguments.find(t=>t.description)?e.registeredArguments:[]}subcommandTerm(e){let t=e.registeredArguments.map(s=>hc(s)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleSubcommandTerm(t.subcommandTerm(o)))),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleOptionTerm(t.optionTerm(o)))),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleOptionTerm(t.optionTerm(o)))),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleArgumentTerm(t.argumentTerm(o)))),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let s="";for(let o=e.parent;o;o=o.parent)s=o.name()+" "+s;return s+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(s=>JSON.stringify(s)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0){let s=`(${t.join(", ")})`;return e.description?`${e.description} ${s}`:s}return e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(s=>JSON.stringify(s)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let s=`(${t.join(", ")})`;return e.description?`${e.description} ${s}`:s}return e.description}formatItemList(e,t,s){return t.length===0?[]:[s.styleTitle(e),...t,""]}groupItems(e,t,s){let o=new Map;return e.forEach(n=>{let a=s(n);o.has(a)||o.set(a,[])}),t.forEach(n=>{let a=s(n);o.has(a)||o.set(a,[]),o.get(a).push(n)}),o}formatHelp(e,t){let s=t.padWidth(e,t),o=t.helpWidth??80;function n(h,g){return t.formatItem(h,s,g,t)}let a=[`${t.styleTitle("Usage:")} ${t.styleUsage(t.commandUsage(e))}`,""],u=t.commandDescription(e);u.length>0&&(a=a.concat([t.boxWrap(t.styleCommandDescription(u),o),""]));let c=t.visibleArguments(e).map(h=>n(t.styleArgumentTerm(t.argumentTerm(h)),t.styleArgumentDescription(t.argumentDescription(h))));if(a=a.concat(this.formatItemList("Arguments:",c,t)),this.groupItems(e.options,t.visibleOptions(e),h=>h.helpGroupHeading??"Options:").forEach((h,g)=>{let b=h.map(y=>n(t.styleOptionTerm(t.optionTerm(y)),t.styleOptionDescription(t.optionDescription(y))));a=a.concat(this.formatItemList(g,b,t))}),t.showGlobalOptions){let h=t.visibleGlobalOptions(e).map(g=>n(t.styleOptionTerm(t.optionTerm(g)),t.styleOptionDescription(t.optionDescription(g))));a=a.concat(this.formatItemList("Global Options:",h,t))}return this.groupItems(e.commands,t.visibleCommands(e),h=>h.helpGroup()||"Commands:").forEach((h,g)=>{let b=h.map(y=>n(t.styleSubcommandTerm(t.subcommandTerm(y)),t.styleSubcommandDescription(t.subcommandDescription(y))));a=a.concat(this.formatItemList(g,b,t))}),a.join(`
|
|
3
|
+
`)}displayWidth(e){return gr(e).length}styleTitle(e){return e}styleUsage(e){return e.split(" ").map(t=>t==="[options]"?this.styleOptionText(t):t==="[command]"?this.styleSubcommandText(t):t[0]==="["||t[0]==="<"?this.styleArgumentText(t):this.styleCommandText(t)).join(" ")}styleCommandDescription(e){return this.styleDescriptionText(e)}styleOptionDescription(e){return this.styleDescriptionText(e)}styleSubcommandDescription(e){return this.styleDescriptionText(e)}styleArgumentDescription(e){return this.styleDescriptionText(e)}styleDescriptionText(e){return e}styleOptionTerm(e){return this.styleOptionText(e)}styleSubcommandTerm(e){return e.split(" ").map(t=>t==="[options]"?this.styleOptionText(t):t[0]==="["||t[0]==="<"?this.styleArgumentText(t):this.styleSubcommandText(t)).join(" ")}styleArgumentTerm(e){return this.styleArgumentText(e)}styleOptionText(e){return e}styleArgumentText(e){return e}styleSubcommandText(e){return e}styleCommandText(e){return e}padWidth(e,t){return Math.max(t.longestOptionTermLength(e,t),t.longestGlobalOptionTermLength(e,t),t.longestSubcommandTermLength(e,t),t.longestArgumentTermLength(e,t))}preformatted(e){return/\n[^\S\r\n]/.test(e)}formatItem(e,t,s,o){let a=" ".repeat(2);if(!s)return a+e;let u=e.padEnd(t+e.length-o.displayWidth(e)),c=2,m=(this.helpWidth??80)-t-c-2,h;return m<this.minWidthToWrap||o.preformatted(s)?h=s:h=o.boxWrap(s,m).replace(/\n/g,`
|
|
4
|
+
`+" ".repeat(t+c)),a+u+" ".repeat(c)+h.replace(/\n/g,`
|
|
5
|
+
${a}`)}boxWrap(e,t){if(t<this.minWidthToWrap)return e;let s=e.split(/\r\n|\n/),o=/[\s]*[^\s]+/g,n=[];return s.forEach(a=>{let u=a.match(o);if(u===null){n.push("");return}let c=[u.shift()],p=this.displayWidth(c[0]);u.forEach(m=>{let h=this.displayWidth(m);if(p+h<=t){c.push(m),p+=h;return}n.push(c.join(""));let g=m.trimStart();c=[g],p=this.displayWidth(g)}),n.push(c.join(""))}),n.join(`
|
|
6
|
+
`)}};function gr(i){let e=/\x1b\[\d*(;\d*)*m/g;return i.replace(e,"")}An.Help=Mn;An.stripColor=gr});var Rn=ie(Un=>{var{InvalidArgumentError:fc}=bs(),En=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=gc(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 fc(`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?yr(this.name().replace(/^no-/,"")):yr(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}},In=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(t=>{t.negate?this.negativeOptions.set(t.attributeName(),t):this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,s)=>{this.positiveOptions.has(s)&&this.dualOptions.add(s)})}valueFromOption(e,t){let s=t.attributeName();if(!this.dualOptions.has(s))return!0;let o=this.negativeOptions.get(s).presetArg,n=o!==void 0?o:!1;return t.negate===(n===e)}};function yr(i){return i.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function gc(i){let e,t,s=/^-[^-]$/,o=/^--[^-]/,n=i.split(/[ |,]+/).concat("guard");if(s.test(n[0])&&(e=n.shift()),o.test(n[0])&&(t=n.shift()),!e&&s.test(n[0])&&(e=n.shift()),!e&&o.test(n[0])&&(e=t,t=n.shift()),n[0].startsWith("-")){let a=n[0],u=`option creation failed due to '${a}' in option flags '${i}'`;throw/^-[^-][^-]/.test(a)?new Error(`${u}
|
|
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
|
-
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`):s.test(a)?new Error(`${
|
|
10
|
-
- too many short flags`):o.test(a)?new Error(`${
|
|
11
|
-
- too many long flags`):new Error(`${
|
|
12
|
-
- unrecognised flag format`)}if(e===void 0&&t===void 0)throw new Error(`option creation failed due to no flags found in '${
|
|
9
|
+
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`):s.test(a)?new Error(`${u}
|
|
10
|
+
- too many short flags`):o.test(a)?new Error(`${u}
|
|
11
|
+
- too many long flags`):new Error(`${u}
|
|
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}}Un.Option=En;Un.DualOptions=In});var Cr=ie(_r=>{function yc(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 o=1;o<=i.length;o++){let n=1;i[o-1]===e[s-1]?n=0:n=1,t[o][s]=Math.min(t[o-1][s]+1,t[o][s-1]+1,t[o-1][s-1]+n),o>1&&s>1&&i[o-1]===e[s-2]&&i[o-2]===e[s-1]&&(t[o][s]=Math.min(t[o][s],t[o-2][s-2]+1))}return t[i.length][e.length]}function _c(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(a=>a.slice(2)));let s=[],o=3,n=.4;return e.forEach(a=>{if(a.length<=1)return;let u=yc(i,a),c=Math.max(i.length,a.length);(c-u)/c>n&&(u<o?(o=u,s=[a]):u===o&&s.push(a))}),s.sort((a,u)=>a.localeCompare(u)),t&&(s=s.map(a=>`--${a}`)),s.length>1?`
|
|
13
13
|
(Did you mean one of ${s.join(", ")}?)`:s.length===1?`
|
|
14
|
-
(Did you mean ${s[0]}?)`:""}
|
|
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
|
|
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
|
|
17
|
-
- already used by option '${t.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let t=o=>[o.name()].concat(o.aliases()),s=t(e).find(o=>this._findCommand(o));if(s){let o=t(this._findCommand(s)).join("|"),n=t(e).join("|");throw new Error(`cannot add command '${n}' as already have command '${o}'`)}this._initCommandGroup(e),this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),s=e.attributeName();if(e.negate){let n=e.long.replace(/^--no-/,"--");this._findOption(n)||this.setOptionValueWithSource(s,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(s,e.defaultValue,"default");let o=(n,a,
|
|
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(
|
|
14
|
+
(Did you mean ${s[0]}?)`:""}_r.suggestSimilar=_c});var Sr=ie(Ln=>{var Cc=require("node:events").EventEmitter,On=require("node:child_process"),ut=require("node:path"),uo=require("node:fs"),Q=require("node:process"),{Argument:bc,humanReadableArgName:kc}=co(),{CommanderError:Fn}=bs(),{Help:wc,stripColor:Sc}=Dn(),{Option:br,DualOptions:vc}=Rn(),{suggestSimilar:kr}=Cr(),Nn=class i extends Cc{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=>Q.stdout.write(t),writeErr:t=>Q.stderr.write(t),outputError:(t,s)=>s(t),getOutHelpWidth:()=>Q.stdout.isTTY?Q.stdout.columns:void 0,getErrHelpWidth:()=>Q.stderr.isTTY?Q.stderr.columns:void 0,getOutHasColors:()=>jn()??(Q.stdout.isTTY&&Q.stdout.hasColors?.()),getErrHasColors:()=>jn()??(Q.stderr.isTTY&&Q.stderr.hasColors?.()),stripColor:t=>Sc(t)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let t=this;t;t=t.parent)e.push(t);return e}command(e,t,s){let o=t,n=s;typeof o=="object"&&o!==null&&(n=o,o=null),n=n||{};let[,a,u]=e.match(/([^ ]+) *(.*)/),c=this.createCommand(a);return o&&(c.description(o),c._executableHandler=!0),n.isDefault&&(this._defaultCommandName=c._name),c._hidden=!!(n.noHelp||n.hidden),c._executableFile=n.executableFile||null,u&&c.arguments(u),this._registerCommand(c),c.parent=this,c.copyInheritedSettings(this),o?this:c}createCommand(e){return new i(e)}createHelp(){return Object.assign(new wc,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 bc(e,t)}argument(e,t,s,o){let n=this.createArgument(e,t);return typeof s=="function"?n.default(o).argParser(s):n.default(s),this.addArgument(n),this}arguments(e){return e.trim().split(/ +/).forEach(t=>{this.argument(t)}),this}addArgument(e){let t=this.registeredArguments.slice(-1)[0];if(t?.variadic)throw new Error(`only the last argument can be variadic '${t.name()}'`);if(e.required&&e.defaultValue!==void 0&&e.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${e.name()}'`);return this.registeredArguments.push(e),this}helpCommand(e,t){if(typeof e=="boolean")return this._addImplicitHelpCommand=e,e&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;let s=e??"help [command]",[,o,n]=s.match(/([^ ]+) *(.*)/),a=t??"display help for command",u=this.createCommand(o);return u.helpOption(!1),n&&u.arguments(n),a&&u.description(a),this._addImplicitHelpCommand=!0,this._helpCommand=u,(e||t)&&this._initCommandGroup(u),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 Fn(e,t,s)),Q.exit(e)}action(e){let t=s=>{let o=this.registeredArguments.length,n=s.slice(0,o);return this._storeOptionsAsProperties?n[o]=this:n[o]=this.opts(),n.push(this),e.apply(this,n)};return this._actionHandler=t,this}createOption(e,t){return new br(e,t)}_callParseArg(e,t,s,o){try{return e.parseArg(t,s)}catch(n){if(n.code==="commander.invalidArgument"){let a=`${o} ${n.message}`;this.error(a,{exitCode:n.exitCode,code:n.code})}throw n}}_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=o=>[o.name()].concat(o.aliases()),s=t(e).find(o=>this._findCommand(o));if(s){let o=t(this._findCommand(s)).join("|"),n=t(e).join("|");throw new Error(`cannot add command '${n}' as already have command '${o}'`)}this._initCommandGroup(e),this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),s=e.attributeName();if(e.negate){let n=e.long.replace(/^--no-/,"--");this._findOption(n)||this.setOptionValueWithSource(s,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(s,e.defaultValue,"default");let o=(n,a,u)=>{n==null&&e.presetArg!==void 0&&(n=e.presetArg);let c=this.getOptionValue(s);n!==null&&e.parseArg?n=this._callParseArg(e,n,c,a):n!==null&&e.variadic&&(n=e._collectValue(n,c)),n==null&&(e.negate?n=!1:e.isBoolean()||e.optional?n=!0:n=""),this.setOptionValueWithSource(s,n,u)};return this.on("option:"+t,n=>{let a=`error: option '${e.flags}' argument '${n}' is invalid.`;o(n,a,"cli")}),e.envVar&&this.on("optionEnv:"+t,n=>{let a=`error: option '${e.flags}' value '${n}' from env '${e.envVar}' is invalid.`;o(n,a,"env")}),this}_optionEx(e,t,s,o,n){if(typeof t=="object"&&t instanceof br)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let a=this.createOption(t,s);if(a.makeOptionMandatory(!!e.mandatory),typeof o=="function")a.default(n).argParser(o);else if(o instanceof RegExp){let u=o;o=(c,p)=>{let m=u.exec(c);return m?m[0]:p},a.default(n).argParser(o)}else a.default(o);return this.addOption(a)}option(e,t,s,o){return this._optionEx({},e,t,s,o)}requiredOption(e,t,s,o){return this._optionEx({mandatory:!0},e,t,s,o)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){return this._storeOptionsAsProperties?this[e]:this._optionValues[e]}setOptionValue(e,t){return this.setOptionValueWithSource(e,t,void 0)}setOptionValueWithSource(e,t,s){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=s,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(s=>{s.getOptionValueSource(e)!==void 0&&(t=s.getOptionValueSource(e))}),t}_prepareUserArgs(e,t){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(t=t||{},e===void 0&&t.from===void 0){Q.versions?.electron&&(t.from="electron");let o=Q.execArgv??[];(o.includes("-e")||o.includes("--eval")||o.includes("-p")||o.includes("--print"))&&(t.from="eval")}e===void 0&&(e=Q.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":Q.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(uo.existsSync(e))return;let o=t?`searched for local subcommand relative to directory '${t}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",n=`'${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
|
-
- ${o}`;throw new Error(n)}_executeSubCommand(e,t){t=t.slice();let s=!1,o=[".js",".ts",".tsx",".mjs",".cjs"];function n(m,
|
|
21
|
+
- ${o}`;throw new Error(n)}_executeSubCommand(e,t){t=t.slice();let s=!1,o=[".js",".ts",".tsx",".mjs",".cjs"];function n(m,h){let g=ut.resolve(m,h);if(uo.existsSync(g))return g;if(o.includes(ut.extname(h)))return;let b=o.find(y=>uo.existsSync(`${g}${y}`));if(b)return`${g}${b}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let a=e._executableFile||`${this._name}-${e._name}`,u=this._executableDir||"";if(this._scriptPath){let m;try{m=uo.realpathSync(this._scriptPath)}catch{m=this._scriptPath}u=ut.resolve(ut.dirname(m),u)}if(u){let m=n(u,a);if(!m&&!e._executableFile&&this._scriptPath){let h=ut.basename(this._scriptPath,ut.extname(this._scriptPath));h!==this._name&&(m=n(u,`${h}-${e._name}`))}a=m||a}s=o.includes(ut.extname(a));let c;Q.platform!=="win32"?s?(t.unshift(a),t=wr(Q.execArgv).concat(t),c=On.spawn(Q.argv[0],t,{stdio:"inherit"})):c=On.spawn(a,t,{stdio:"inherit"}):(this._checkForMissingExecutable(a,u,e._name),t.unshift(a),t=wr(Q.execArgv).concat(t),c=On.spawn(Q.execPath,t,{stdio:"inherit"})),c.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(h=>{Q.on(h,()=>{c.killed===!1&&c.exitCode===null&&c.kill(h)})});let p=this._exitCallback;c.on("close",m=>{m=m??1,p?p(new Fn(m,"commander.executeSubCommandAsync","(close)")):Q.exit(m)}),c.on("error",m=>{if(m.code==="ENOENT")this._checkForMissingExecutable(a,u,e._name);else if(m.code==="EACCES")throw new Error(`'${a}' not executable`);if(!p)Q.exit(1);else{let h=new Fn(1,"commander.executeSubCommandAsync","(error)");h.nestedError=m,p(h)}}),this.runningCommand=c}_dispatchSubcommand(e,t,s){let o=this._findCommand(e);o||this.help({error:!0}),o._prepareForParse();let n;return n=this._chainOrCallSubCommandHook(n,o,"preSubcommand"),n=this._chainOrCall(n,()=>{if(o._executableHandler)this._executeSubCommand(o,t.concat(s));else return o._parseCommand(t,s)}),n}_dispatchHelpCommand(e){e||this.help();let t=this._findCommand(e);return t&&!t._executableHandler&&t.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,t)=>{e.required&&this.args[t]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(s,o,n)=>{let a=o;if(o!==null&&s.parseArg){let u=`error: command-argument value '${o}' is invalid for argument '${s.name()}'.`;a=this._callParseArg(s,o,n,u)}return a};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((s,o)=>{let n=s.defaultValue;s.variadic?o<this.args.length?(n=this.args.slice(o),s.parseArg&&(n=n.reduce((a,u)=>e(s,u,a),s.defaultValue))):n===void 0&&(n=[]):o<this.args.length&&(n=this.args[o],s.parseArg&&(n=e(s,n,s.defaultValue))),t[o]=n}),this.processedArgs=t}_chainOrCall(e,t){return e?.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let s=e,o=[];return this._getCommandAndAncestors().reverse().filter(n=>n._lifeCycleHooks[t]!==void 0).forEach(n=>{n._lifeCycleHooks[t].forEach(a=>{o.push({hookedCommand:n,callback:a})})}),t==="postAction"&&o.reverse(),o.forEach(n=>{s=this._chainOrCall(s,()=>n.callback(n.hookedCommand,this))}),s}_chainOrCallSubCommandHook(e,t,s){let o=e;return this._lifeCycleHooks[s]!==void 0&&this._lifeCycleHooks[s].forEach(n=>{o=this._chainOrCall(o,()=>n(this,t))}),o}_parseCommand(e,t){let s=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(s.operands),t=s.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(s.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=()=>{s.unknown.length>0&&this.unknownOption(s.unknown[0])},n=`command:${this.name()}`;if(this._actionHandler){o(),this._processArguments();let a;return a=this._chainOrCallHooks(a,"preAction"),a=this._chainOrCall(a,()=>this._actionHandler(this.processedArgs)),this.parent&&(a=this._chainOrCall(a,()=>{this.parent.emit(n,e,t)})),a=this._chainOrCallHooks(a,"postAction"),a}if(this.parent?.listenerCount(n))o(),this._processArguments(),this.parent.emit(n,e,t);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,t);this.listenerCount("command:*")?this.emit("command:*",e,t):this.commands.length?this.unknownCommand():(o(),this._processArguments())}else this.commands.length?(o(),this.help({error:!0})):(o(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(t=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find(t=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(t=>{t.mandatory&&e.getOptionValue(t.attributeName())===void 0&&e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(s=>{let o=s.attributeName();return this.getOptionValue(o)===void 0?!1:this.getOptionValueSource(o)!=="default"});e.filter(s=>s.conflictsWith.length>0).forEach(s=>{let o=e.find(n=>s.conflictsWith.includes(n.attributeName()));o&&this._conflictingOption(s,o)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],s=[],o=t;function n(m){return m.length>1&&m[0]==="-"}let a=m=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(m)?!this._getCommandAndAncestors().some(h=>h.options.map(g=>g.short).some(g=>/^-\d$/.test(g))):!1,u=null,c=null,p=0;for(;p<e.length||c;){let m=c??e[p++];if(c=null,m==="--"){o===s&&o.push(m),o.push(...e.slice(p));break}if(u&&(!n(m)||a(m))){this.emit(`option:${u.name()}`,m);continue}if(u=null,n(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&&(!n(e[p])||a(e[p]))&&(g=e[p++]),this.emit(`option:${h.name()}`,g)}else this.emit(`option:${h.name()}`);u=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()}`),c=`-${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(o===t&&n(m)&&!(this.commands.length===0&&a(m))&&(o=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){o.push(m,...e.slice(p));break}o.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 o=this.options[s].attributeName();e[o]=o===this._versionOptionName?this._version:this[o]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
|
|
22
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||{},o=s.exitCode||1,n=s.code||"commander.error";this._exit(o,n,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in
|
|
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 o=[s.name()].concat(s.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${o}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(t=>this.alias(t)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(s=>
|
|
24
|
+
`),this.outputHelp({error:!0}));let s=t||{},o=s.exitCode||1,n=s.code||"commander.error";this._exit(o,n,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in Q.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()}`,Q.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new vc(this.options),t=s=>this.getOptionValue(s)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(s));this.options.filter(s=>s.implied!==void 0&&t(s.attributeName())&&e.valueFromOption(this.getOptionValue(s.attributeName()),s)).forEach(s=>{Object.keys(s.implied).filter(o=>!t(o)).forEach(o=>{this.setOptionValueWithSource(o,s.implied[o],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let s=a=>{let u=a.attributeName(),c=this.getOptionValue(u),p=this.options.find(h=>h.negate&&u===h.attributeName()),m=this.options.find(h=>!h.negate&&u===h.attributeName());return p&&(p.presetArg===void 0&&c===!1||p.presetArg!==void 0&&c===p.presetArg)?p:m||a},o=a=>{let u=s(a),c=u.attributeName();return this.getOptionValueSource(c)==="env"?`environment variable '${u.envVar}'`:`option '${u.flags}'`},n=`error: ${o(e)} cannot be used with ${o(t)}`;this.error(n,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let o=[],n=this;do{let a=n.createHelp().visibleOptions(n).filter(u=>u.long).map(u=>u.long);o=o.concat(a),n=n.parent}while(n&&!n._enablePositionalOptions);t=kr(e,o)}let s=`error: unknown option '${e}'${t}`;this.error(s,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,s=t===1?"":"s",n=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${s} but got ${e.length}.`;this.error(n,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let o=[];this.createHelp().visibleCommands(this).forEach(n=>{o.push(n.name()),n.alias()&&o.push(n.alias())}),t=kr(e,o)}let s=`error: unknown command '${e}'${t}`;this.error(s,{code:"commander.unknownCommand"})}version(e,t,s){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",s=s||"output the version number";let o=this.createOption(t,s);return this._versionOptionName=o.attributeName(),this._registerOption(o),this.on("option:"+o.name(),()=>{this._outputConfiguration.writeOut(`${e}
|
|
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 o=[s.name()].concat(s.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${o}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(t=>this.alias(t)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(s=>kc(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=ut.basename(e,ut.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp(),s=this._getOutputContext(e);t.prepareContext({error:s.error,helpWidth:s.helpWidth,outputHasColors:s.hasColors});let o=t.formatHelp(this,t);return s.hasColors?o:this._outputConfiguration.stripColor(o)}_getOutputContext(e){e=e||{};let t=!!e.error,s,o,n;return t?(s=u=>this._outputConfiguration.writeErr(u),o=this._outputConfiguration.getErrHasColors(),n=this._outputConfiguration.getErrHelpWidth()):(s=u=>this._outputConfiguration.writeOut(u),o=this._outputConfiguration.getOutHasColors(),n=this._outputConfiguration.getOutHelpWidth()),{error:t,write:u=>(o||(u=this._outputConfiguration.stripColor(u)),s(u)),hasColors:o,helpWidth:n}}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let s=this._getOutputContext(e),o={error:s.error,write:s.write,command:this};this._getCommandAndAncestors().reverse().forEach(a=>a.emit("beforeAllHelp",o)),this.emit("beforeHelp",o);let n=this.helpInformation({error:s.error});if(t&&(n=t(n),typeof n!="string"&&!Buffer.isBuffer(n)))throw new Error("outputHelp callback must return a string or a Buffer");s.write(n),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",o),this._getCommandAndAncestors().forEach(a=>a.emit("afterAllHelp",o))}helpOption(e,t){return typeof e=="boolean"?(e?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(e??"-h, --help",t??"display help for command"),(e||t)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this._initOptionGroup(e),this}help(e){this.outputHelp(e);let t=Number(Q.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
26
|
Expecting one of '${s.join("', '")}'`);let o=`${e}Help`;return this.on(o,n=>{let a;typeof t=="function"?a=t({error:n.error,command:n.command}):a=t,a&&n.write(`${a}
|
|
27
|
-
`)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(o=>t.is(o))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function ar(r){return r.map(e=>{if(!e.startsWith("--inspect"))return e;let t,s="127.0.0.1",o="9229",n;return(n=e.match(/^(--inspect(-brk)?)$/))!==null?t=n[1]:(n=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=n[1],/^\d+$/.test(n[3])?o=n[3]:s=n[3]):(n=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=n[1],s=n[3],o=n[4]),t&&o!=="0"?`${t}=${s}:${parseInt(o)+1}`:e})}function Tn(){if(H.env.NO_COLOR||H.env.FORCE_COLOR==="0"||H.env.FORCE_COLOR==="false")return!1;if(H.env.FORCE_COLOR||H.env.CLICOLOR_FORCE!==void 0)return!0}xn.Command=vn;xn.useColor=Tn});var pr=oe($e=>{var{Argument:cr}=Xs(),{Command:Pn}=lr(),{CommanderError:oc,InvalidArgumentError:ur}=ms(),{Help:nc}=yn(),{Option:dr}=wn();$e.program=new Pn;$e.createCommand=r=>new Pn(r);$e.createOption=(r,e)=>new dr(r,e);$e.createArgument=(r,e)=>new cr(r,e);$e.Command=Pn;$e.Option=dr;$e.Argument=cr;$e.Help=nc;$e.CommanderError=oc;$e.InvalidArgumentError=ur;$e.InvalidOptionArgumentError=ur});var Un=oe((ao,Rt)=>{var io=void 0,ro=function(r){return io||(io=new Promise(function(e,t){var s=typeof r<"u"?r:{},o=s.onAbort;s.onAbort=function(i){t(new Error(i)),o&&o(i)},s.postRun=s.postRun||[],s.postRun.push(function(){e(s)}),Rt=void 0;var n;n||=typeof s<"u"?s:{};var a=!!globalThis.window,d=!!globalThis.WorkerGlobalScope,c=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";n.onRuntimeInitialized=function(){function i(S,E){switch(typeof E){case"boolean":Fl(S,E?1:0);break;case"number":Ol(S,E);break;case"string":Ul(S,E,-1,-1);break;case"object":if(E===null)Yi(S);else if(E.length!=null){var O=Vs(E.length);D.set(E,O),Rl(S,O,E.length,-1),ps(O)}else Ys(S,"Wrong API use : tried to return a value of an unknown type ("+E+").",-1);break;default:Yi(S)}}function l(S,E){for(var O=[],U=0;U<S;U+=1){var B=ae(E+4*U,"i32"),Y=Ml(B);if(Y===1||Y===2)B=Il(B);else if(Y===3)B=El(B);else if(Y===4){Y=B,B=Al(Y),Y=Dl(Y);for(var Ge=new Uint8Array(B),Ne=0;Ne<B;Ne+=1)Ge[Ne]=D[Y+Ne];B=Ge}else B=null;O.push(B)}return O}function u(S,E){this.Qa=S,this.db=E,this.Oa=1,this.mb=[]}function f(S,E){if(this.db=E,this.fb=Ws(S),this.fb===null)throw Error("Unable to allocate memory for the SQL string");this.lb=this.fb,this.$a=this.sb=null}function _(S){if(this.filename="dbfile_"+(4294967295*Math.random()>>>0),S!=null){var E=this.filename,O="/",U=E;if(O&&(O=typeof O=="string"?O:Yo(O),U=E?He(O+"/"+E):O),E=ki(!0,!0),U=ol(U,E),S){if(typeof S=="string"){O=Array(S.length);for(var B=0,Y=S.length;B<Y;++B)O[B]=S.charCodeAt(B);S=O}qs(U,E|146),O=Yt(U,577),$i(O,S,0,S.length,0),sn(O),qs(U,E)}}this.handleError(j(this.filename,T)),this.db=ae(T,"i32"),Xi(this.db),this.gb={},this.Sa={}}var T=Ot(4),A=n.cwrap,j=A("sqlite3_open","number",["string","number"]),K=A("sqlite3_close_v2","number",["number"]),q=A("sqlite3_exec","number",["number","string","number","number","number"]),se=A("sqlite3_changes","number",["number"]),he=A("sqlite3_prepare_v2","number",["number","string","number","number","number"]),Wi=A("sqlite3_sql","string",["number"]),dl=A("sqlite3_normalized_sql","string",["number"]),Vi=A("sqlite3_prepare_v2","number",["number","number","number","number","number"]),pl=A("sqlite3_bind_text","number",["number","number","number","number","number"]),Hi=A("sqlite3_bind_blob","number",["number","number","number","number","number"]),ml=A("sqlite3_bind_double","number",["number","number","number"]),hl=A("sqlite3_bind_int","number",["number","number","number"]),fl=A("sqlite3_bind_parameter_index","number",["number","string"]),gl=A("sqlite3_step","number",["number"]),yl=A("sqlite3_errmsg","string",["number"]),_l=A("sqlite3_column_count","number",["number"]),bl=A("sqlite3_data_count","number",["number"]),Cl=A("sqlite3_column_double","number",["number","number"]),Ji=A("sqlite3_column_text","string",["number","number"]),wl=A("sqlite3_column_blob","number",["number","number"]),Sl=A("sqlite3_column_bytes","number",["number","number"]),kl=A("sqlite3_column_type","number",["number","number"]),vl=A("sqlite3_column_name","string",["number","number"]),Tl=A("sqlite3_reset","number",["number"]),xl=A("sqlite3_clear_bindings","number",["number"]),Pl=A("sqlite3_finalize","number",["number"]),Ki=A("sqlite3_create_function_v2","number","number string number number number number number number number".split(" ")),Ml=A("sqlite3_value_type","number",["number"]),Al=A("sqlite3_value_bytes","number",["number"]),El=A("sqlite3_value_text","string",["number"]),Dl=A("sqlite3_value_blob","number",["number"]),Il=A("sqlite3_value_double","number",["number"]),Ol=A("sqlite3_result_double","",["number","number"]),Yi=A("sqlite3_result_null","",["number"]),Ul=A("sqlite3_result_text","",["number","string","number","number"]),Rl=A("sqlite3_result_blob","",["number","number","number","number"]),Fl=A("sqlite3_result_int","",["number","number"]),Ys=A("sqlite3_result_error","",["number","string","number"]),Qi=A("sqlite3_aggregate_context","number",["number","number"]),Xi=A("RegisterExtensionFunctions","number",["number"]),Zi=A("sqlite3_update_hook","number",["number","number","number"]);u.prototype.bind=function(S){if(!this.Qa)throw"Statement closed";return this.reset(),Array.isArray(S)?this.Gb(S):S!=null&&typeof S=="object"?this.Hb(S):!0},u.prototype.step=function(){if(!this.Qa)throw"Statement closed";this.Oa=1;var S=gl(this.Qa);switch(S){case 100:return!0;case 101:return!1;default:throw this.db.handleError(S)}},u.prototype.Ab=function(S){return S==null&&(S=this.Oa,this.Oa+=1),Cl(this.Qa,S)},u.prototype.Ob=function(S){if(S==null&&(S=this.Oa,this.Oa+=1),S=Ji(this.Qa,S),typeof BigInt!="function")throw Error("BigInt is not supported");return BigInt(S)},u.prototype.Tb=function(S){return S==null&&(S=this.Oa,this.Oa+=1),Ji(this.Qa,S)},u.prototype.getBlob=function(S){S==null&&(S=this.Oa,this.Oa+=1);var E=Sl(this.Qa,S);S=wl(this.Qa,S);for(var O=new Uint8Array(E),U=0;U<E;U+=1)O[U]=D[S+U];return O},u.prototype.get=function(S,E){E=E||{},S!=null&&this.bind(S)&&this.step(),S=[];for(var O=bl(this.Qa),U=0;U<O;U+=1)switch(kl(this.Qa,U)){case 1:var B=E.useBigInt?this.Ob(U):this.Ab(U);S.push(B);break;case 2:S.push(this.Ab(U));break;case 3:S.push(this.Tb(U));break;case 4:S.push(this.getBlob(U));break;default:S.push(null)}return S},u.prototype.qb=function(){for(var S=[],E=_l(this.Qa),O=0;O<E;O+=1)S.push(vl(this.Qa,O));return S},u.prototype.zb=function(S,E){S=this.get(S,E),E=this.qb();for(var O={},U=0;U<E.length;U+=1)O[E[U]]=S[U];return O},u.prototype.Sb=function(){return Wi(this.Qa)},u.prototype.Pb=function(){return dl(this.Qa)},u.prototype.run=function(S){return S!=null&&this.bind(S),this.step(),this.reset()},u.prototype.wb=function(S,E){E==null&&(E=this.Oa,this.Oa+=1),S=Ws(S),this.mb.push(S),this.db.handleError(pl(this.Qa,E,S,-1,0))},u.prototype.Fb=function(S,E){E==null&&(E=this.Oa,this.Oa+=1);var O=Vs(S.length);D.set(S,O),this.mb.push(O),this.db.handleError(Hi(this.Qa,E,O,S.length,0))},u.prototype.vb=function(S,E){E==null&&(E=this.Oa,this.Oa+=1),this.db.handleError((S===(S|0)?hl:ml)(this.Qa,E,S))},u.prototype.Ib=function(S){S==null&&(S=this.Oa,this.Oa+=1),Hi(this.Qa,S,0,0,0)},u.prototype.xb=function(S,E){switch(E==null&&(E=this.Oa,this.Oa+=1),typeof S){case"string":this.wb(S,E);return;case"number":this.vb(S,E);return;case"bigint":this.wb(S.toString(),E);return;case"boolean":this.vb(S+0,E);return;case"object":if(S===null){this.Ib(E);return}if(S.length!=null){this.Fb(S,E);return}}throw"Wrong API use : tried to bind a value of an unknown type ("+S+")."},u.prototype.Hb=function(S){var E=this;return Object.keys(S).forEach(function(O){var U=fl(E.Qa,O);U!==0&&E.xb(S[O],U)}),!0},u.prototype.Gb=function(S){for(var E=0;E<S.length;E+=1)this.xb(S[E],E+1);return!0},u.prototype.reset=function(){return this.freemem(),xl(this.Qa)===0&&Tl(this.Qa)===0},u.prototype.freemem=function(){for(var S;(S=this.mb.pop())!==void 0;)ps(S)},u.prototype.Ya=function(){this.freemem();var S=Pl(this.Qa)===0;return delete this.db.gb[this.Qa],this.Qa=0,S},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 S=Js(),E=Ot(4);Wt(T),Wt(E);try{this.db.handleError(Vi(this.db.db,this.lb,-1,T,E)),this.lb=ae(E,"i32");var O=ae(T,"i32");return O===0?(this.ob(),{done:!0}):(this.$a=new u(O,this.db),this.db.gb[O]=this.$a,{value:this.$a,done:!1})}catch(U){throw this.sb=ne(this.lb),this.ob(),U}finally{Hs(S)}},f.prototype.ob=function(){ps(this.fb),this.fb=null},f.prototype.Qb=function(){return this.sb!==null?this.sb:ne(this.lb)},typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"&&(f.prototype[Symbol.iterator]=function(){return this}),_.prototype.run=function(S,E){if(!this.db)throw"Database closed";if(E){S=this.tb(S,E);try{S.step()}finally{S.Ya()}}else this.handleError(q(this.db,S,0,0,T));return this},_.prototype.exec=function(S,E,O){if(!this.db)throw"Database closed";var U=null,B=null,Y=null;try{Y=B=Ws(S);var Ge=Ot(4);for(S=[];ae(Y,"i8")!==0;){Wt(T),Wt(Ge),this.handleError(Vi(this.db,Y,-1,T,Ge));var Ne=ae(T,"i32");if(Y=ae(Ge,"i32"),Ne!==0){var Ee=null;for(U=new u(Ne,this),E!=null&&U.bind(E);U.step();)Ee===null&&(Ee={columns:U.qb(),values:[]},S.push(Ee)),Ee.values.push(U.get(null,O));U.Ya()}}return S}catch(Be){throw U&&U.Ya(),Be}finally{B&&ps(B)}},_.prototype.Mb=function(S,E,O,U,B){typeof E=="function"&&(U=O,O=E,E=void 0),S=this.tb(S,E);try{for(;S.step();)O(S.zb(null,B))}finally{S.Ya()}if(typeof U=="function")return U()},_.prototype.tb=function(S,E){if(Wt(T),this.handleError(he(this.db,S,-1,T,0)),S=ae(T,"i32"),S===0)throw"Nothing to prepare";var O=new u(S,this);return E!=null&&O.bind(E),this.gb[S]=O},_.prototype.Ub=function(S){return new f(S,this)},_.prototype.Nb=function(){Object.values(this.gb).forEach(function(E){E.Ya()}),Object.values(this.Sa).forEach(Ct),this.Sa={},this.handleError(K(this.db));var S=nl(this.filename);return this.handleError(j(this.filename,T)),this.db=ae(T,"i32"),Xi(this.db),S},_.prototype.close=function(){this.db!==null&&(Object.values(this.gb).forEach(function(S){S.Ya()}),Object.values(this.Sa).forEach(Ct),this.Sa={},this.Za&&(Ct(this.Za),this.Za=void 0),this.handleError(K(this.db)),Oi("/"+this.filename),this.db=null)},_.prototype.handleError=function(S){if(S===0)return null;throw S=yl(this.db),Error(S)},_.prototype.Rb=function(){return se(this.db)},_.prototype.Kb=function(S,E){Object.prototype.hasOwnProperty.call(this.Sa,S)&&(Ct(this.Sa[S]),delete this.Sa[S]);var O=ds(function(U,B,Y){B=l(B,Y);try{var Ge=E.apply(null,B)}catch(Ne){Ys(U,Ne,-1);return}i(U,Ge)},"viii");return this.Sa[S]=O,this.handleError(Ki(this.db,S,E.length,1,0,O,0,0,0)),this},_.prototype.Jb=function(S,E){var O=E.init||function(){return null},U=E.finalize||function(Ee){return Ee},B=E.step;if(!B)throw"An aggregate function must have a step function in "+S;var Y={};Object.hasOwnProperty.call(this.Sa,S)&&(Ct(this.Sa[S]),delete this.Sa[S]),E=S+"__finalize",Object.hasOwnProperty.call(this.Sa,E)&&(Ct(this.Sa[E]),delete this.Sa[E]);var Ge=ds(function(Ee,Be,un){var Ut=Qi(Ee,1);Object.hasOwnProperty.call(Y,Ut)||(Y[Ut]=O()),Be=l(Be,un),Be=[Y[Ut]].concat(Be);try{Y[Ut]=B.apply(null,Be)}catch(Nl){delete Y[Ut],Ys(Ee,Nl,-1)}},"viii"),Ne=ds(function(Ee){var Be=Qi(Ee,1);try{var un=U(Y[Be])}catch(Ut){delete Y[Be],Ys(Ee,Ut,-1);return}i(Ee,un),delete Y[Be]},"vi");return this.Sa[S]=Ge,this.Sa[E]=Ne,this.handleError(Ki(this.db,S,B.length-1,1,0,0,Ge,Ne,0)),this},_.prototype.Zb=function(S){return this.Za&&(Zi(this.db,0,0),Ct(this.Za),this.Za=void 0),S?(this.Za=ds(function(E,O,U,B,Y){switch(O){case 18:E="insert";break;case 23:E="update";break;case 9:E="delete";break;default:throw"unknown operationCode in updateHook callback: "+O}if(U=ne(U),B=ne(B),Y>Number.MAX_SAFE_INTEGER)throw"rowId too big to fit inside a Number";S(E,U,B,Number(Y))},"viiiij"),Zi(this.db,this.Za,0),this):this},u.prototype.bind=u.prototype.bind,u.prototype.step=u.prototype.step,u.prototype.get=u.prototype.get,u.prototype.getColumnNames=u.prototype.qb,u.prototype.getAsObject=u.prototype.zb,u.prototype.getSQL=u.prototype.Sb,u.prototype.getNormalizedSQL=u.prototype.Pb,u.prototype.run=u.prototype.run,u.prototype.reset=u.prototype.reset,u.prototype.freemem=u.prototype.freemem,u.prototype.free=u.prototype.Ya,f.prototype.next=f.prototype.next,f.prototype.getRemainingSQL=f.prototype.Qb,_.prototype.run=_.prototype.run,_.prototype.exec=_.prototype.exec,_.prototype.each=_.prototype.Mb,_.prototype.prepare=_.prototype.tb,_.prototype.iterateStatements=_.prototype.Ub,_.prototype.export=_.prototype.Nb,_.prototype.close=_.prototype.close,_.prototype.handleError=_.prototype.handleError,_.prototype.getRowsModified=_.prototype.Rb,_.prototype.create_function=_.prototype.Kb,_.prototype.create_aggregate=_.prototype.Jb,_.prototype.updateHook=_.prototype.Zb,n.Database=_};var h="./this.program",m=(i,l)=>{throw l},p=globalThis.document?.currentScript?.src;typeof __filename<"u"?p=__filename:d&&(p=self.location.href);var g="",w,k;if(c){var b=require("node:fs");g=__dirname+"/",k=i=>(i=F(i)?new URL(i):i,b.readFileSync(i)),w=async i=>(i=F(i)?new URL(i):i,b.readFileSync(i,void 0)),1<process.argv.length&&(h=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),typeof Rt<"u"&&(Rt.exports=n),m=(i,l)=>{throw process.exitCode=i,l}}else if(a||d){try{g=new URL(".",p).href}catch{}d&&(k=i=>{var l=new XMLHttpRequest;return l.open("GET",i,!1),l.responseType="arraybuffer",l.send(null),new Uint8Array(l.response)}),w=async i=>{if(F(i))return new Promise((u,f)=>{var _=new XMLHttpRequest;_.open("GET",i,!0),_.responseType="arraybuffer",_.onload=()=>{_.status==200||_.status==0&&_.response?u(_.response):f(_.status)},_.onerror=f,_.send(null)});var l=await fetch(i,{credentials:"same-origin"});if(l.ok)return l.arrayBuffer();throw Error(l.status+" : "+l.url)}}var y=console.log.bind(console),v=console.error.bind(console),C,P=!1,M,F=i=>i.startsWith("file://"),D,N,V,J,W,Me,ve,Z;function Ue(){var i=Ks.buffer;D=new Int8Array(i),V=new Int16Array(i),N=new Uint8Array(i),new Uint16Array(i),J=new Int32Array(i),W=new Uint32Array(i),Me=new Float32Array(i),ve=new Float64Array(i),Z=new BigInt64Array(i),new BigUint64Array(i)}function Ae(i){throw n.onAbort?.(i),i="Aborted("+i+")",v(i),P=!0,new WebAssembly.RuntimeError(i+". Build with -sASSERTIONS for more info.")}var tt;async function ft(i){if(!C)try{var l=await w(i);return new Uint8Array(l)}catch{}if(i==tt&&C)i=new Uint8Array(C);else if(k)i=k(i);else throw"both async and sync fetching of the wasm failed";return i}async function Ve(i,l){try{var u=await ft(i);return await WebAssembly.instantiate(u,l)}catch(f){v(`failed to asynchronously prepare wasm: ${f}`),Ae(f)}}async function de(i){var l=tt;if(!C&&!F(l)&&!c)try{var u=fetch(l,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(u,i)}catch(f){v(`wasm streaming compile failed: ${f}`),v("falling back to ArrayBuffer instantiation")}return Ve(l,i)}class Mt{name="ExitStatus";constructor(l){this.message=`Program terminated with exit(${l})`,this.status=l}}var fe=i=>{for(;0<i.length;)i.shift()(n)},be=[],ls=[],zt=()=>{var i=n.preRun.shift();ls.push(i)},Ce=0,Re=null;function ae(i,l="i8"){switch(l.endsWith("*")&&(l="*"),l){case"i1":return D[i];case"i8":return D[i];case"i16":return V[i>>1];case"i32":return J[i>>2];case"i64":return Z[i>>3];case"float":return Me[i>>2];case"double":return ve[i>>3];case"*":return W[i>>2];default:Ae(`invalid type for getValue: ${l}`)}}var st=!0;function Wt(i){var l="i32";switch(l.endsWith("*")&&(l="*"),l){case"i1":D[i]=0;break;case"i8":D[i]=0;break;case"i16":V[i>>1]=0;break;case"i32":J[i>>2]=0;break;case"i64":Z[i>>3]=BigInt(0);break;case"float":Me[i>>2]=0;break;case"double":ve[i>>3]=0;break;case"*":W[i>>2]=0;break;default:Ae(`invalid type for setValue: ${l}`)}}var gt=new TextDecoder,Vt=(i,l,u,f)=>{if(u=l+u,f)return u;for(;i[l]&&!(l>=u);)++l;return l},ne=(i,l,u)=>i?gt.decode(N.subarray(i,Vt(N,i,l,u))):"",G=(i,l)=>{for(var u=0,f=i.length-1;0<=f;f--){var _=i[f];_==="."?i.splice(f,1):_===".."?(i.splice(f,1),u++):u&&(i.splice(f,1),u--)}if(l)for(;u;u--)i.unshift("..");return i},He=i=>{var l=i.charAt(0)==="/",u=i.slice(-1)==="/";return(i=G(i.split("/").filter(f=>!!f),!l).join("/"))||l||(i="."),i&&u&&(i+="/"),(l?"/":"")+i},ot=i=>{var l=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(i).slice(1);return i=l[0],l=l[1],!i&&!l?".":(l&&=l.slice(0,-1),i+l)},yt=i=>i&&i.match(/([^\/]+|\/)\/*$/)[1],ue=()=>{if(c){var i=require("node:crypto");return l=>i.randomFillSync(l)}return l=>crypto.getRandomValues(l)},le=i=>{(le=ue())(i)},Je=(...i)=>{for(var l="",u=!1,f=i.length-1;-1<=f&&!u;f--){if(u=0<=f?i[f]:"/",typeof u!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!u)return"";l=u+"/"+l,u=u.charAt(0)==="/"}return l=G(l.split("/").filter(_=>!!_),!u).join("/"),(u?"/":"")+l||"."},At=i=>{var l=Vt(i,0);return gt.decode(i.buffer?i.subarray(0,l):new Uint8Array(i.slice(0,l)))},Jo=[],Ht=i=>{for(var l=0,u=0;u<i.length;++u){var f=i.charCodeAt(u);127>=f?l++:2047>=f?l+=2:55296<=f&&57343>=f?(l+=4,++u):l+=3}return l},Ke=(i,l,u,f)=>{if(!(0<f))return 0;var _=u;f=u+f-1;for(var T=0;T<i.length;++T){var A=i.codePointAt(T);if(127>=A){if(u>=f)break;l[u++]=A}else if(2047>=A){if(u+1>=f)break;l[u++]=192|A>>6,l[u++]=128|A&63}else if(65535>=A){if(u+2>=f)break;l[u++]=224|A>>12,l[u++]=128|A>>6&63,l[u++]=128|A&63}else{if(u+3>=f)break;l[u++]=240|A>>18,l[u++]=128|A>>12&63,l[u++]=128|A>>6&63,l[u++]=128|A&63,T++}}return l[u]=0,u-_},wi=[];function Si(i,l){wi[i]={input:[],output:[],eb:l},en(i,Ka)}var Ka={open(i){var l=wi[i.node.rdev];if(!l)throw new I(43);i.tty=l,i.seekable=!1},close(i){i.tty.eb.fsync(i.tty)},fsync(i){i.tty.eb.fsync(i.tty)},read(i,l,u,f){if(!i.tty||!i.tty.eb.Bb)throw new I(60);for(var _=0,T=0;T<f;T++){try{var A=i.tty.eb.Bb(i.tty)}catch{throw new I(29)}if(A===void 0&&_===0)throw new I(6);if(A==null)break;_++,l[u+T]=A}return _&&(i.node.atime=Date.now()),_},write(i,l,u,f){if(!i.tty||!i.tty.eb.ub)throw new I(60);try{for(var _=0;_<f;_++)i.tty.eb.ub(i.tty,l[u+_])}catch{throw new I(29)}return f&&(i.node.mtime=i.node.ctime=Date.now()),_}},Ya={Bb(){e:{if(!Jo.length){var i=null;if(c){var l=Buffer.alloc(256),u=0,f=process.stdin.fd;try{u=b.readSync(f,l,0,256)}catch(_){if(_.toString().includes("EOF"))u=0;else throw _}0<u&&(i=l.slice(0,u).toString("utf-8"))}else globalThis.window?.prompt&&(i=window.prompt("Input: "),i!==null&&(i+=`
|
|
28
|
-
`));if(!i){i=null;break e}l=Array(Ht(i)+1),i=Ke(i,l,0,l.length),l.length=i,Jo=l}i=Jo.shift()}return i},ub(i,l){l===null||l===10?(y(At(i.output)),i.output=[]):l!=0&&i.output.push(l)},fsync(i){0<i.output?.length&&(y(At(i.output)),i.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]}},Qa={ub(i,l){l===null||l===10?(v(At(i.output)),i.output=[]):l!=0&&i.output.push(l)},fsync(i){0<i.output?.length&&(v(At(i.output)),i.output=[])}},L={Wa:null,Xa(){return L.createNode(null,"/",16895,0)},createNode(i,l,u,f){if((u&61440)===24576||(u&61440)===4096)throw new I(63);return L.Wa||(L.Wa={dir:{node:{Ta:L.La.Ta,Ua:L.La.Ua,lookup:L.La.lookup,ib:L.La.ib,rename:L.La.rename,unlink:L.La.unlink,rmdir:L.La.rmdir,readdir:L.La.readdir,symlink:L.La.symlink},stream:{Va:L.Ma.Va}},file:{node:{Ta:L.La.Ta,Ua:L.La.Ua},stream:{Va:L.Ma.Va,read:L.Ma.read,write:L.Ma.write,jb:L.Ma.jb,kb:L.Ma.kb}},link:{node:{Ta:L.La.Ta,Ua:L.La.Ua,readlink:L.La.readlink},stream:{}},yb:{node:{Ta:L.La.Ta,Ua:L.La.Ua},stream:sl}}),u=Pi(i,l,u,f),Te(u.mode)?(u.La=L.Wa.dir.node,u.Ma=L.Wa.dir.stream,u.Na={}):(u.mode&61440)===32768?(u.La=L.Wa.file.node,u.Ma=L.Wa.file.stream,u.Ra=0,u.Na=null):(u.mode&61440)===40960?(u.La=L.Wa.link.node,u.Ma=L.Wa.link.stream):(u.mode&61440)===8192&&(u.La=L.Wa.yb.node,u.Ma=L.Wa.yb.stream),u.atime=u.mtime=u.ctime=Date.now(),i&&(i.Na[l]=u,i.atime=i.mtime=i.ctime=u.atime),u},fc(i){return i.Na?i.Na.subarray?i.Na.subarray(0,i.Ra):new Uint8Array(i.Na):new Uint8Array(0)},La:{Ta(i){var l={};return l.dev=(i.mode&61440)===8192?i.id:1,l.ino=i.id,l.mode=i.mode,l.nlink=1,l.uid=0,l.gid=0,l.rdev=i.rdev,Te(i.mode)?l.size=4096:(i.mode&61440)===32768?l.size=i.Ra:(i.mode&61440)===40960?l.size=i.link.length:l.size=0,l.atime=new Date(i.atime),l.mtime=new Date(i.mtime),l.ctime=new Date(i.ctime),l.blksize=4096,l.blocks=Math.ceil(l.size/l.blksize),l},Ua(i,l){for(var u of["mode","atime","mtime","ctime"])l[u]!=null&&(i[u]=l[u]);l.size!==void 0&&(l=l.size,i.Ra!=l&&(l==0?(i.Na=null,i.Ra=0):(u=i.Na,i.Na=new Uint8Array(l),u&&i.Na.set(u.subarray(0,Math.min(l,i.Ra))),i.Ra=l)))},lookup(){throw L.nb||(L.nb=new I(44),L.nb.stack="<generic error, no stack>"),L.nb},ib(i,l,u,f){return L.createNode(i,l,u,f)},rename(i,l,u){try{var f=Et(l,u)}catch{}if(f){if(Te(i.mode))for(var _ in f.Na)throw new I(55);Xo(f)}delete i.parent.Na[i.name],l.Na[u]=i,i.name=u,l.ctime=l.mtime=i.parent.ctime=i.parent.mtime=Date.now()},unlink(i,l){delete i.Na[l],i.ctime=i.mtime=Date.now()},rmdir(i,l){var u=Et(i,l),f;for(f in u.Na)throw new I(55);delete i.Na[l],i.ctime=i.mtime=Date.now()},readdir(i){return[".","..",...Object.keys(i.Na)]},symlink(i,l,u){return i=L.createNode(i,l,41471,0),i.link=u,i},readlink(i){if((i.mode&61440)!==40960)throw new I(28);return i.link}},Ma:{read(i,l,u,f,_){var T=i.node.Na;if(_>=i.node.Ra)return 0;if(i=Math.min(i.node.Ra-_,f),8<i&&T.subarray)l.set(T.subarray(_,_+i),u);else for(f=0;f<i;f++)l[u+f]=T[_+f];return i},write(i,l,u,f,_,T){if(l.buffer===D.buffer&&(T=!1),!f)return 0;if(i=i.node,i.mtime=i.ctime=Date.now(),l.subarray&&(!i.Na||i.Na.subarray)){if(T)return i.Na=l.subarray(u,u+f),i.Ra=f;if(i.Ra===0&&_===0)return i.Na=l.slice(u,u+f),i.Ra=f;if(_+f<=i.Ra)return i.Na.set(l.subarray(u,u+f),_),f}T=_+f;var A=i.Na?i.Na.length:0;if(A>=T||(T=Math.max(T,A*(1048576>A?2:1.125)>>>0),A!=0&&(T=Math.max(T,256)),A=i.Na,i.Na=new Uint8Array(T),0<i.Ra&&i.Na.set(A.subarray(0,i.Ra),0)),i.Na.subarray&&l.subarray)i.Na.set(l.subarray(u,u+f),_);else for(T=0;T<f;T++)i.Na[_+T]=l[u+T];return i.Ra=Math.max(i.Ra,_+f),f},Va(i,l,u){if(u===1?l+=i.position:u===2&&(i.node.mode&61440)===32768&&(l+=i.node.Ra),0>l)throw new I(28);return l},jb(i,l,u,f,_){if((i.node.mode&61440)!==32768)throw new I(43);if(i=i.node.Na,_&2||!i||i.buffer!==D.buffer){_=!0,f=65536*Math.ceil(l/65536);var T=Bi(65536,f);if(T&&N.fill(0,T,T+f),f=T,!f)throw new I(48);i&&((0<u||u+l<i.length)&&(i.subarray?i=i.subarray(u,u+l):i=Array.prototype.slice.call(i,u,u+l)),D.set(i,f))}else _=!1,f=i.byteOffset;return{Xb:f,Eb:_}},kb(i,l,u,f){return L.Ma.write(i,l,0,f,u,!1),0}}},ki=(i,l)=>{var u=0;return i&&(u|=365),l&&(u|=146),u},Ko=null,vi={},Jt=[],Xa=1,_t=null,Ti=!1,xi=!0,I=class{name="ErrnoError";constructor(i){this.Pa=i}},Za=class{hb={};node=null;get flags(){return this.hb.flags}set flags(i){this.hb.flags=i}get position(){return this.hb.position}set position(i){this.hb.position=i}},el=class{La={};Ma={};bb=null;constructor(i,l,u,f){i||=this,this.parent=i,this.Xa=i.Xa,this.id=Xa++,this.name=l,this.mode=u,this.rdev=f,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&365)===365}set read(i){i?this.mode|=365:this.mode&=-366}get write(){return(this.mode&146)===146}set write(i){i?this.mode|=146:this.mode&=-147}};function Fe(i,l={}){if(!i)throw new I(44);l.pb??(l.pb=!0),i.charAt(0)==="/"||(i="//"+i);var u=0;e:for(;40>u;u++){i=i.split("/").filter(j=>!!j);for(var f=Ko,_="/",T=0;T<i.length;T++){var A=T===i.length-1;if(A&&l.parent)break;if(i[T]!==".")if(i[T]==="..")if(_=ot(_),f===f.parent){i=_+"/"+i.slice(T+1).join("/"),u--;continue e}else f=f.parent;else{_=He(_+"/"+i[T]);try{f=Et(f,i[T])}catch(j){if(j?.Pa===44&&A&&l.Wb)return{path:_};throw j}if(!f.bb||A&&!l.pb||(f=f.bb.root),(f.mode&61440)===40960&&(!A||l.ab)){if(!f.La.readlink)throw new I(52);f=f.La.readlink(f),f.charAt(0)==="/"||(f=ot(_)+"/"+f),i=f+"/"+i.slice(T+1).join("/");continue e}}}return{path:_,node:f}}throw new I(32)}function Yo(i){for(var l;;){if(i===i.parent)return i=i.Xa.Db,l?i[i.length-1]!=="/"?`${i}/${l}`:i+l:i;l=l?`${i.name}/${l}`:i.name,i=i.parent}}function Qo(i,l){for(var u=0,f=0;f<l.length;f++)u=(u<<5)-u+l.charCodeAt(f)|0;return(i+u>>>0)%_t.length}function Xo(i){var l=Qo(i.parent.id,i.name);if(_t[l]===i)_t[l]=i.cb;else for(l=_t[l];l;){if(l.cb===i){l.cb=i.cb;break}l=l.cb}}function Et(i,l){var u=Te(i.mode)?(u=Kt(i,"x"))?u:i.La.lookup?0:2:54;if(u)throw new I(u);for(u=_t[Qo(i.id,l)];u;u=u.cb){var f=u.name;if(u.parent.id===i.id&&f===l)return u}return i.La.lookup(i,l)}function Pi(i,l,u,f){return i=new el(i,l,u,f),l=Qo(i.parent.id,i.name),i.cb=_t[l],_t[l]=i}function Te(i){return(i&61440)===16384}function Kt(i,l){return xi?0:l.includes("r")&&!(i.mode&292)||l.includes("w")&&!(i.mode&146)||l.includes("x")&&!(i.mode&73)?2:0}function Mi(i,l){if(!Te(i.mode))return 54;try{return Et(i,l),20}catch{}return Kt(i,"wx")}function Ai(i,l,u){try{var f=Et(i,l)}catch(_){return _.Pa}if(i=Kt(i,"wx"))return i;if(u){if(!Te(f.mode))return 54;if(f===f.parent||Yo(f)==="/")return 10}else if(Te(f.mode))return 31;return 0}function $s(i){if(!i)throw new I(63);return i}function we(i){if(i=Jt[i],!i)throw new I(8);return i}function Ei(i,l=-1){if(i=Object.assign(new Za,i),l==-1)e:{for(l=0;4096>=l;l++)if(!Jt[l])break e;throw new I(33)}return i.fd=l,Jt[l]=i}function tl(i,l=-1){return i=Ei(i,l),i.Ma?.ec?.(i),i}function Zo(i,l,u){var f=i?.Ma.Ua;i=f?i:l,f??=l.La.Ua,$s(f),f(i,u)}var sl={open(i){i.Ma=vi[i.node.rdev].Ma,i.Ma.open?.(i)},Va(){throw new I(70)}};function en(i,l){vi[i]={Ma:l}}function Di(i,l){var u=l==="/";if(u&&Ko)throw new I(10);if(!u&&l){var f=Fe(l,{pb:!1});if(l=f.path,f=f.node,f.bb)throw new I(10);if(!Te(f.mode))throw new I(54)}l={type:i,kc:{},Db:l,Vb:[]},i=i.Xa(l),i.Xa=l,l.root=i,u?Ko=i:f&&(f.bb=l,f.Xa&&f.Xa.Vb.push(l))}function js(i,l,u){var f=Fe(i,{parent:!0}).node;if(i=yt(i),!i)throw new I(28);if(i==="."||i==="..")throw new I(20);var _=Mi(f,i);if(_)throw new I(_);if(!f.La.ib)throw new I(63);return f.La.ib(f,i,l,u)}function ol(i,l=438){return js(i,l&4095|32768,0)}function Ye(i,l=511){return js(i,l&1023|16384,0)}function Ls(i,l,u){typeof u>"u"&&(u=l,l=438),js(i,l|8192,u)}function tn(i,l){if(!Je(i))throw new I(44);var u=Fe(l,{parent:!0}).node;if(!u)throw new I(44);l=yt(l);var f=Mi(u,l);if(f)throw new I(f);if(!u.La.symlink)throw new I(63);u.La.symlink(u,l,i)}function Ii(i){var l=Fe(i,{parent:!0}).node;i=yt(i);var u=Et(l,i),f=Ai(l,i,!0);if(f)throw new I(f);if(!l.La.rmdir)throw new I(63);if(u.bb)throw new I(10);l.La.rmdir(l,i),Xo(u)}function Oi(i){var l=Fe(i,{parent:!0}).node;if(!l)throw new I(44);i=yt(i);var u=Et(l,i),f=Ai(l,i,!1);if(f)throw new I(f);if(!l.La.unlink)throw new I(63);if(u.bb)throw new I(10);l.La.unlink(l,i),Xo(u)}function cs(i,l){return i=Fe(i,{ab:!l}).node,$s(i.La.Ta)(i)}function Ui(i,l,u,f){Zo(i,l,{mode:u&4095|l.mode&-4096,ctime:Date.now(),Lb:f})}function qs(i,l){i=typeof i=="string"?Fe(i,{ab:!0}).node:i,Ui(null,i,l)}function Ri(i,l,u){if(Te(l.mode))throw new I(31);if((l.mode&61440)!==32768)throw new I(28);var f=Kt(l,"w");if(f)throw new I(f);Zo(i,l,{size:u,timestamp:Date.now()})}function Yt(i,l,u=438){if(i==="")throw new I(44);if(typeof l=="string"){var f={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[l];if(typeof f>"u")throw Error(`Unknown file open mode: ${l}`);l=f}if(u=l&64?u&4095|32768:0,typeof i=="object")f=i;else{var _=i.endsWith("/"),T=Fe(i,{ab:!(l&131072),Wb:!0});f=T.node,i=T.path}if(T=!1,l&64)if(f){if(l&128)throw new I(20)}else{if(_)throw new I(31);f=js(i,u|511,0),T=!0}if(!f)throw new I(44);if((f.mode&61440)===8192&&(l&=-513),l&65536&&!Te(f.mode))throw new I(54);if(!T&&(f?(f.mode&61440)===40960?_=32:(_=["r","w","rw"][l&3],l&512&&(_+="w"),_=Te(f.mode)&&(_!=="r"||l&576)?31:Kt(f,_)):_=44,_))throw new I(_);return l&512&&!T&&(_=f,_=typeof _=="string"?Fe(_,{ab:!0}).node:_,Ri(null,_,0)),l=Ei({node:f,path:Yo(f),flags:l&-131713,seekable:!0,position:0,Ma:f.Ma,Yb:[],error:!1}),l.Ma.open&&l.Ma.open(l),T&&qs(f,u&511),l}function sn(i){if(i.fd===null)throw new I(8);i.rb&&(i.rb=null);try{i.Ma.close&&i.Ma.close(i)}catch(l){throw l}finally{Jt[i.fd]=null}i.fd=null}function Fi(i,l,u){if(i.fd===null)throw new I(8);if(!i.seekable||!i.Ma.Va)throw new I(70);if(u!=0&&u!=1&&u!=2)throw new I(28);i.position=i.Ma.Va(i,l,u),i.Yb=[]}function Ni(i,l,u,f,_){if(0>f||0>_)throw new I(28);if(i.fd===null)throw new I(8);if((i.flags&2097155)===1)throw new I(8);if(Te(i.node.mode))throw new I(31);if(!i.Ma.read)throw new I(28);var T=typeof _<"u";if(!T)_=i.position;else if(!i.seekable)throw new I(70);return l=i.Ma.read(i,l,u,f,_),T||(i.position+=l),l}function $i(i,l,u,f,_){if(0>f||0>_)throw new I(28);if(i.fd===null)throw new I(8);if((i.flags&2097155)===0)throw new I(8);if(Te(i.node.mode))throw new I(31);if(!i.Ma.write)throw new I(28);i.seekable&&i.flags&1024&&Fi(i,0,2);var T=typeof _<"u";if(!T)_=i.position;else if(!i.seekable)throw new I(70);return l=i.Ma.write(i,l,u,f,_,void 0),T||(i.position+=l),l}function nl(i){var l=l||0,u="binary";u!=="utf8"&&u!=="binary"&&Ae(`Invalid encoding type "${u}"`),l=Yt(i,l),i=cs(i).size;var f=new Uint8Array(i);return Ni(l,f,0,i,0),u==="utf8"&&(f=At(f)),sn(l),f}function bt(i,l,u){i=He("/dev/"+i);var f=ki(!!l,!!u);bt.Cb??(bt.Cb=64);var _=bt.Cb++<<8|0;en(_,{open(T){T.seekable=!1},close(){u?.buffer?.length&&u(10)},read(T,A,j,K){for(var q=0,se=0;se<K;se++){try{var he=l()}catch{throw new I(29)}if(he===void 0&&q===0)throw new I(6);if(he==null)break;q++,A[j+se]=he}return q&&(T.node.atime=Date.now()),q},write(T,A,j,K){for(var q=0;q<K;q++)try{u(A[j+q])}catch{throw new I(29)}return K&&(T.node.mtime=T.node.ctime=Date.now()),q}}),Ls(i,f,_)}var te={};function Dt(i,l,u){if(l.charAt(0)==="/")return l;if(i=i===-100?"/":we(i).path,l.length==0){if(!u)throw new I(44);return i}return i+"/"+l}function Gs(i,l){W[i>>2]=l.dev,W[i+4>>2]=l.mode,W[i+8>>2]=l.nlink,W[i+12>>2]=l.uid,W[i+16>>2]=l.gid,W[i+20>>2]=l.rdev,Z[i+24>>3]=BigInt(l.size),J[i+32>>2]=4096,J[i+36>>2]=l.blocks;var u=l.atime.getTime(),f=l.mtime.getTime(),_=l.ctime.getTime();return Z[i+40>>3]=BigInt(Math.floor(u/1e3)),W[i+48>>2]=u%1e3*1e6,Z[i+56>>3]=BigInt(Math.floor(f/1e3)),W[i+64>>2]=f%1e3*1e6,Z[i+72>>3]=BigInt(Math.floor(_/1e3)),W[i+80>>2]=_%1e3*1e6,Z[i+88>>3]=BigInt(l.ino),0}var Bs=void 0,zs=()=>{var i=J[+Bs>>2];return Bs+=4,i},on=0,il=[0,31,60,91,121,152,182,213,244,274,305,335],rl=[0,31,59,90,120,151,181,212,243,273,304,334],us={},ji=i=>{M=i,st||0<on||(n.onExit?.(i),P=!0),m(i,new Mt(i))},al=i=>{if(!P)try{i()}catch(l){l instanceof Mt||l=="unwind"||m(1,l)}finally{if(!(st||0<on))try{M=i=M,ji(i)}catch(l){l instanceof Mt||l=="unwind"||m(1,l)}}},nn={},Li=()=>{if(!rn){var i={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:h||"./this.program"},l;for(l in nn)nn[l]===void 0?delete i[l]:i[l]=nn[l];var u=[];for(l in i)u.push(`${l}=${i[l]}`);rn=u}return rn},rn,ll=(i,l,u,f)=>{var _={string:q=>{var se=0;if(q!=null&&q!==0){se=Ht(q)+1;var he=Ot(se);Ke(q,N,he,se),se=he}return se},array:q=>{var se=Ot(q.length);return D.set(q,se),se}};i=n["_"+i];var T=[],A=0;if(f)for(var j=0;j<f.length;j++){var K=_[u[j]];K?(A===0&&(A=Js()),T[j]=K(f[j])):T[j]=f[j]}return u=i(...T),u=(function(q){return A!==0&&Hs(A),l==="string"?ne(q):l==="boolean"?!!q:q})(u)},Ws=i=>{var l=Ht(i)+1,u=Vs(l);return u&&Ke(i,N,u,l),u},It,an=[],Ct=i=>{It.delete(wt.get(i)),wt.set(i,null),an.push(i)},qi=i=>{let l=i.length;return[l%128|128,l>>7,...i]},cl={i:127,p:127,j:126,f:125,d:124,e:111},Gi=i=>qi(Array.from(i,l=>cl[l])),ds=(i,l)=>{if(!It){It=new WeakMap;var u=wt.length;if(It)for(var f=0;f<0+u;f++){var _=wt.get(f);_&&It.set(_,f)}}if(u=It.get(i)||0)return u;u=an.length?an.pop():wt.grow(1);try{wt.set(u,i)}catch(T){if(!(T instanceof TypeError))throw T;l=Uint8Array.of(0,97,115,109,1,0,0,0,1,...qi([1,96,...Gi(l.slice(1)),...Gi(l[0]==="v"?"":l[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),l=new WebAssembly.Module(l),l=new WebAssembly.Instance(l,{e:{f:i}}).exports.f,wt.set(u,l)}return It.set(i,u),u};if(_t=Array(4096),Di(L,"/"),Ye("/tmp"),Ye("/home"),Ye("/home/web_user"),(function(){Ye("/dev"),en(259,{read:()=>0,write:(f,_,T,A)=>A,Va:()=>0}),Ls("/dev/null",259),Si(1280,Ya),Si(1536,Qa),Ls("/dev/tty",1280),Ls("/dev/tty1",1536);var i=new Uint8Array(1024),l=0,u=()=>(l===0&&(le(i),l=i.byteLength),i[--l]);bt("random",u),bt("urandom",u),Ye("/dev/shm"),Ye("/dev/shm/tmp")})(),(function(){Ye("/proc");var i=Ye("/proc/self");Ye("/proc/self/fd"),Di({Xa(){var l=Pi(i,"fd",16895,73);return l.Ma={Va:L.Ma.Va},l.La={lookup(u,f){u=+f;var _=we(u);return u={parent:null,Xa:{Db:"fake"},La:{readlink:()=>_.path},id:u+1},u.parent=u},readdir(){return Array.from(Jt.entries()).filter(([,u])=>u).map(([u])=>u.toString())}},l}},"/proc/self/fd")})(),n.noExitRuntime&&(st=n.noExitRuntime),n.print&&(y=n.print),n.printErr&&(v=n.printErr),n.wasmBinary&&(C=n.wasmBinary),n.thisProgram&&(h=n.thisProgram),n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);0<n.preInit.length;)n.preInit.shift()();n.stackSave=()=>Js(),n.stackRestore=i=>Hs(i),n.stackAlloc=i=>Ot(i),n.cwrap=(i,l,u,f)=>{var _=!u||u.every(T=>T==="number"||T==="boolean");return l!=="string"&&_&&!f?n["_"+i]:(...T)=>ll(i,l,u,T)},n.addFunction=ds,n.removeFunction=Ct,n.UTF8ToString=ne,n.stringToNewUTF8=Ws,n.writeArrayToMemory=(i,l)=>{D.set(i,l)};var Vs,ps,Bi,zi,Hs,Ot,Js,Ks,wt,ul={a:(i,l,u,f)=>Ae(`Assertion failed: ${ne(i)}, at: `+[l?ne(l):"unknown filename",u,f?ne(f):"unknown function"]),i:function(i,l){try{return i=ne(i),qs(i,l),0}catch(u){if(typeof te>"u"||u.name!=="ErrnoError")throw u;return-u.Pa}},L:function(i,l,u){try{if(l=ne(l),l=Dt(i,l),u&-8)return-28;var f=Fe(l,{ab:!0}).node;return f?(i="",u&4&&(i+="r"),u&2&&(i+="w"),u&1&&(i+="x"),i&&Kt(f,i)?-2:0):-44}catch(_){if(typeof te>"u"||_.name!=="ErrnoError")throw _;return-_.Pa}},j:function(i,l){try{var u=we(i);return Ui(u,u.node,l,!1),0}catch(f){if(typeof te>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},h:function(i){try{var l=we(i);return Zo(l,l.node,{timestamp:Date.now(),Lb:!1}),0}catch(u){if(typeof te>"u"||u.name!=="ErrnoError")throw u;return-u.Pa}},b:function(i,l,u){Bs=u;try{var f=we(i);switch(l){case 0:var _=zs();if(0>_)break;for(;Jt[_];)_++;return tl(f,_).fd;case 1:case 2:return 0;case 3:return f.flags;case 4:return _=zs(),f.flags|=_,0;case 12:return _=zs(),V[_+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(T){if(typeof te>"u"||T.name!=="ErrnoError")throw T;return-T.Pa}},g:function(i,l){try{var u=we(i),f=u.node,_=u.Ma.Ta;i=_?u:f,_??=f.La.Ta,$s(_);var T=_(i);return Gs(l,T)}catch(A){if(typeof te>"u"||A.name!=="ErrnoError")throw A;return-A.Pa}},H:function(i,l){l=-9007199254740992>l||9007199254740992<l?NaN:Number(l);try{if(isNaN(l))return-61;var u=we(i);if(0>l||(u.flags&2097155)===0)throw new I(28);return Ri(u,u.node,l),0}catch(f){if(typeof te>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},G:function(i,l){try{if(l===0)return-28;var u=Ht("/")+1;return l<u?-68:(Ke("/",N,i,l),u)}catch(f){if(typeof te>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},K:function(i,l){try{return i=ne(i),Gs(l,cs(i,!0))}catch(u){if(typeof te>"u"||u.name!=="ErrnoError")throw u;return-u.Pa}},C:function(i,l,u){try{return l=ne(l),l=Dt(i,l),Ye(l,u),0}catch(f){if(typeof te>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},J:function(i,l,u,f){try{l=ne(l);var _=f&256;return l=Dt(i,l,f&4096),Gs(u,_?cs(l,!0):cs(l))}catch(T){if(typeof te>"u"||T.name!=="ErrnoError")throw T;return-T.Pa}},x:function(i,l,u,f){Bs=f;try{l=ne(l),l=Dt(i,l);var _=f?zs():0;return Yt(l,u,_).fd}catch(T){if(typeof te>"u"||T.name!=="ErrnoError")throw T;return-T.Pa}},v:function(i,l,u,f){try{if(l=ne(l),l=Dt(i,l),0>=f)return-28;var _=Fe(l).node;if(!_)throw new I(44);if(!_.La.readlink)throw new I(28);var T=_.La.readlink(_),A=Math.min(f,Ht(T)),j=D[u+A];return Ke(T,N,u,f+1),D[u+A]=j,A}catch(K){if(typeof te>"u"||K.name!=="ErrnoError")throw K;return-K.Pa}},u:function(i){try{return i=ne(i),Ii(i),0}catch(l){if(typeof te>"u"||l.name!=="ErrnoError")throw l;return-l.Pa}},f:function(i,l){try{return i=ne(i),Gs(l,cs(i))}catch(u){if(typeof te>"u"||u.name!=="ErrnoError")throw u;return-u.Pa}},r:function(i,l,u){try{if(l=ne(l),l=Dt(i,l),u)if(u===512)Ii(l);else return-28;else Oi(l);return 0}catch(f){if(typeof te>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},q:function(i,l,u){try{l=ne(l),l=Dt(i,l,!0);var f=Date.now(),_,T;if(u){var A=W[u>>2]+4294967296*J[u+4>>2],j=J[u+8>>2];j==1073741823?_=f:j==1073741822?_=null:_=1e3*A+j/1e6,u+=16,A=W[u>>2]+4294967296*J[u+4>>2],j=J[u+8>>2],j==1073741823?T=f:j==1073741822?T=null:T=1e3*A+j/1e6}else T=_=f;if((T??_)!==null){i=_;var K=Fe(l,{ab:!0}).node;$s(K.La.Ua)(K,{atime:i,mtime:T})}return 0}catch(q){if(typeof te>"u"||q.name!=="ErrnoError")throw q;return-q.Pa}},m:()=>Ae(""),l:()=>{st=!1,on=0},A:function(i,l){i=-9007199254740992>i||9007199254740992<i?NaN:Number(i),i=new Date(1e3*i),J[l>>2]=i.getSeconds(),J[l+4>>2]=i.getMinutes(),J[l+8>>2]=i.getHours(),J[l+12>>2]=i.getDate(),J[l+16>>2]=i.getMonth(),J[l+20>>2]=i.getFullYear()-1900,J[l+24>>2]=i.getDay();var u=i.getFullYear();J[l+28>>2]=(u%4!==0||u%100===0&&u%400!==0?rl:il)[i.getMonth()]+i.getDate()-1|0,J[l+36>>2]=-(60*i.getTimezoneOffset()),u=new Date(i.getFullYear(),6,1).getTimezoneOffset();var f=new Date(i.getFullYear(),0,1).getTimezoneOffset();J[l+32>>2]=(u!=f&&i.getTimezoneOffset()==Math.min(f,u))|0},y:function(i,l,u,f,_,T,A){_=-9007199254740992>_||9007199254740992<_?NaN:Number(_);try{var j=we(f);if((l&2)!==0&&(u&2)===0&&(j.flags&2097155)!==2)throw new I(2);if((j.flags&2097155)===1)throw new I(2);if(!j.Ma.jb)throw new I(43);if(!i)throw new I(28);var K=j.Ma.jb(j,i,_,l,u),q=K.Xb;return J[T>>2]=K.Eb,W[A>>2]=q,0}catch(se){if(typeof te>"u"||se.name!=="ErrnoError")throw se;return-se.Pa}},z:function(i,l,u,f,_,T){T=-9007199254740992>T||9007199254740992<T?NaN:Number(T);try{var A=we(_);if(u&2){if(u=T,(A.node.mode&61440)!==32768)throw new I(43);if(!(f&2)){var j=N.slice(i,i+l);A.Ma.kb&&A.Ma.kb(A,j,u,l,f)}}}catch(K){if(typeof te>"u"||K.name!=="ErrnoError")throw K;return-K.Pa}},n:(i,l)=>{if(us[i]&&(clearTimeout(us[i].id),delete us[i]),!l)return 0;var u=setTimeout(()=>{delete us[i],al(()=>zi(i,performance.now()))},l);return us[i]={id:u,lc:l},0},B:(i,l,u,f)=>{var _=new Date().getFullYear(),T=new Date(_,0,1).getTimezoneOffset();_=new Date(_,6,1).getTimezoneOffset(),W[i>>2]=60*Math.max(T,_),J[l>>2]=+(T!=_),l=A=>{var j=Math.abs(A);return`UTC${0<=A?"-":"+"}${String(Math.floor(j/60)).padStart(2,"0")}${String(j%60).padStart(2,"0")}`},i=l(T),l=l(_),_<T?(Ke(i,N,u,17),Ke(l,N,f,17)):(Ke(i,N,f,17),Ke(l,N,u,17))},d:()=>Date.now(),s:()=>2147483648,c:()=>performance.now(),o:i=>{var l=N.length;if(i>>>=0,2147483648<i)return!1;for(var u=1;4>=u;u*=2){var f=l*(1+.2/u);f=Math.min(f,i+100663296);e:{f=(Math.min(2147483648,65536*Math.ceil(Math.max(i,f)/65536))-Ks.buffer.byteLength+65535)/65536|0;try{Ks.grow(f),Ue();var _=1;break e}catch{}_=void 0}if(_)return!0}return!1},E:(i,l)=>{var u=0,f=0,_;for(_ of Li()){var T=l+u;W[i+f>>2]=T,u+=Ke(_,N,T,1/0)+1,f+=4}return 0},F:(i,l)=>{var u=Li();W[i>>2]=u.length,i=0;for(var f of u)i+=Ht(f)+1;return W[l>>2]=i,0},e:function(i){try{var l=we(i);return sn(l),0}catch(u){if(typeof te>"u"||u.name!=="ErrnoError")throw u;return u.Pa}},p:function(i,l){try{var u=we(i);return D[l]=u.tty?2:Te(u.mode)?3:(u.mode&61440)===40960?7:4,V[l+2>>1]=0,Z[l+8>>3]=BigInt(0),Z[l+16>>3]=BigInt(0),0}catch(f){if(typeof te>"u"||f.name!=="ErrnoError")throw f;return f.Pa}},w:function(i,l,u,f){try{e:{var _=we(i);i=l;for(var T,A=l=0;A<u;A++){var j=W[i>>2],K=W[i+4>>2];i+=8;var q=Ni(_,D,j,K,T);if(0>q){var se=-1;break e}if(l+=q,q<K)break;typeof T<"u"&&(T+=q)}se=l}return W[f>>2]=se,0}catch(he){if(typeof te>"u"||he.name!=="ErrnoError")throw he;return he.Pa}},D:function(i,l,u,f){l=-9007199254740992>l||9007199254740992<l?NaN:Number(l);try{if(isNaN(l))return 61;var _=we(i);return Fi(_,l,u),Z[f>>3]=BigInt(_.position),_.rb&&l===0&&u===0&&(_.rb=null),0}catch(T){if(typeof te>"u"||T.name!=="ErrnoError")throw T;return T.Pa}},I:function(i){try{var l=we(i);return l.Ma?.fsync?.(l)}catch(u){if(typeof te>"u"||u.name!=="ErrnoError")throw u;return u.Pa}},t:function(i,l,u,f){try{e:{var _=we(i);i=l;for(var T,A=l=0;A<u;A++){var j=W[i>>2],K=W[i+4>>2];i+=8;var q=$i(_,D,j,K,T);if(0>q){var se=-1;break e}if(l+=q,q<K)break;typeof T<"u"&&(T+=q)}se=l}return W[f>>2]=se,0}catch(he){if(typeof te>"u"||he.name!=="ErrnoError")throw he;return he.Pa}},k:ji};function ln(){function i(){if(n.calledRun=!0,!P){if(!n.noFSInit&&!Ti){var l,u;Ti=!0,l??=n.stdin,u??=n.stdout,f??=n.stderr,l?bt("stdin",l):tn("/dev/tty","/dev/stdin"),u?bt("stdout",null,u):tn("/dev/tty","/dev/stdout"),f?bt("stderr",null,f):tn("/dev/tty1","/dev/stderr"),Yt("/dev/stdin",0),Yt("/dev/stdout",1),Yt("/dev/stderr",1)}if(cn.N(),xi=!1,n.onRuntimeInitialized?.(),n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;){var f=n.postRun.shift();be.push(f)}fe(be)}}if(0<Ce)Re=ln;else{if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)zt();fe(ls),0<Ce?Re=ln:n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),i()},1)):i()}}var cn;return(async function(){function i(u){return u=cn=u.exports,n._sqlite3_free=u.P,n._sqlite3_value_text=u.Q,n._sqlite3_prepare_v2=u.R,n._sqlite3_step=u.S,n._sqlite3_reset=u.T,n._sqlite3_exec=u.U,n._sqlite3_finalize=u.V,n._sqlite3_column_name=u.W,n._sqlite3_column_text=u.X,n._sqlite3_column_type=u.Y,n._sqlite3_errmsg=u.Z,n._sqlite3_clear_bindings=u._,n._sqlite3_value_blob=u.$,n._sqlite3_value_bytes=u.aa,n._sqlite3_value_double=u.ba,n._sqlite3_value_int=u.ca,n._sqlite3_value_type=u.da,n._sqlite3_result_blob=u.ea,n._sqlite3_result_double=u.fa,n._sqlite3_result_error=u.ga,n._sqlite3_result_int=u.ha,n._sqlite3_result_int64=u.ia,n._sqlite3_result_null=u.ja,n._sqlite3_result_text=u.ka,n._sqlite3_aggregate_context=u.la,n._sqlite3_column_count=u.ma,n._sqlite3_data_count=u.na,n._sqlite3_column_blob=u.oa,n._sqlite3_column_bytes=u.pa,n._sqlite3_column_double=u.qa,n._sqlite3_bind_blob=u.ra,n._sqlite3_bind_double=u.sa,n._sqlite3_bind_int=u.ta,n._sqlite3_bind_text=u.ua,n._sqlite3_bind_parameter_index=u.va,n._sqlite3_sql=u.wa,n._sqlite3_normalized_sql=u.xa,n._sqlite3_changes=u.ya,n._sqlite3_close_v2=u.za,n._sqlite3_create_function_v2=u.Aa,n._sqlite3_update_hook=u.Ba,n._sqlite3_open=u.Ca,Vs=n._malloc=u.Da,ps=n._free=u.Ea,n._RegisterExtensionFunctions=u.Fa,Bi=u.Ga,zi=u.Ha,Hs=u.Ia,Ot=u.Ja,Js=u.Ka,Ks=u.M,wt=u.O,Ue(),Ce--,n.monitorRunDependencies?.(Ce),Ce==0&&Re&&(u=Re,Re=null,u()),cn}Ce++,n.monitorRunDependencies?.(Ce);var l={a:ul};return n.instantiateWasm?new Promise(u=>{n.instantiateWasm(l,(f,_)=>{u(i(f,_))})}):(tt??=n.locateFile?n.locateFile("sql-wasm.wasm",g):g+"sql-wasm.wasm",i((await de(l)).instance))})(),ln(),s}),io)};typeof ao=="object"&&typeof Rt=="object"?(Rt.exports=ro,Rt.exports.default=ro):typeof define=="function"&&define.amd?define([],function(){return ro}):typeof ao=="object"&&(ao.Module=ro)});var mo=oe(it=>{"use strict";Object.defineProperty(it,"__esModule",{value:!0});it.utf8Count=Cc;it.utf8EncodeJs=Ir;it.utf8EncodeTE=Or;it.utf8Encode=kc;it.utf8DecodeJs=Ur;it.utf8DecodeTD=Rr;it.utf8Decode=Pc;function Cc(r){let e=r.length,t=0,s=0;for(;s<e;){let o=r.charCodeAt(s++);if((o&4294967168)===0){t++;continue}else if((o&4294965248)===0)t+=2;else{if(o>=55296&&o<=56319&&s<e){let n=r.charCodeAt(s);(n&64512)===56320&&(++s,o=((o&1023)<<10)+(n&1023)+65536)}(o&4294901760)===0?t+=3:t+=4}}return t}function Ir(r,e,t){let s=r.length,o=t,n=0;for(;n<s;){let a=r.charCodeAt(n++);if((a&4294967168)===0){e[o++]=a;continue}else if((a&4294965248)===0)e[o++]=a>>6&31|192;else{if(a>=55296&&a<=56319&&n<s){let d=r.charCodeAt(n);(d&64512)===56320&&(++n,a=((a&1023)<<10)+(d&1023)+65536)}(a&4294901760)===0?(e[o++]=a>>12&15|224,e[o++]=a>>6&63|128):(e[o++]=a>>18&7|240,e[o++]=a>>12&63|128,e[o++]=a>>6&63|128)}e[o++]=a&63|128}}var wc=new TextEncoder,Sc=50;function Or(r,e,t){wc.encodeInto(r,e.subarray(t))}function kc(r,e,t){r.length>Sc?Or(r,e,t):Ir(r,e,t)}var vc=4096;function Ur(r,e,t){let s=e,o=s+t,n=[],a="";for(;s<o;){let d=r[s++];if((d&128)===0)n.push(d);else if((d&224)===192){let c=r[s++]&63;n.push((d&31)<<6|c)}else if((d&240)===224){let c=r[s++]&63,h=r[s++]&63;n.push((d&31)<<12|c<<6|h)}else if((d&248)===240){let c=r[s++]&63,h=r[s++]&63,m=r[s++]&63,p=(d&7)<<18|c<<12|h<<6|m;p>65535&&(p-=65536,n.push(p>>>10&1023|55296),p=56320|p&1023),n.push(p)}else n.push(d);n.length>=vc&&(a+=String.fromCharCode(...n),n.length=0)}return n.length>0&&(a+=String.fromCharCode(...n)),a}var Tc=new TextDecoder,xc=200;function Rr(r,e,t){let s=r.subarray(e,e+t);return Tc.decode(s)}function Pc(r,e,t){return t>xc?Rr(r,e,t):Ur(r,e,t)}});var Fn=oe(ho=>{"use strict";Object.defineProperty(ho,"__esModule",{value:!0});ho.ExtData=void 0;var Rn=class{type;data;constructor(e,t){this.type=e,this.data=t}};ho.ExtData=Rn});var go=oe(fo=>{"use strict";Object.defineProperty(fo,"__esModule",{value:!0});fo.DecodeError=void 0;var Nn=class r extends Error{constructor(e){super(e);let t=Object.create(r.prototype);Object.setPrototypeOf(this,t),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:r.name})}};fo.DecodeError=Nn});var yo=oe(St=>{"use strict";Object.defineProperty(St,"__esModule",{value:!0});St.UINT32_MAX=void 0;St.setUint64=Mc;St.setInt64=Ac;St.getInt64=Ec;St.getUint64=Dc;St.UINT32_MAX=4294967295;function Mc(r,e,t){let s=t/4294967296,o=t;r.setUint32(e,s),r.setUint32(e+4,o)}function Ac(r,e,t){let s=Math.floor(t/4294967296),o=t;r.setUint32(e,s),r.setUint32(e+4,o)}function Ec(r,e){let t=r.getInt32(e),s=r.getUint32(e+4);return t*4294967296+s}function Dc(r,e){let t=r.getUint32(e),s=r.getUint32(e+4);return t*4294967296+s}});var $n=oe(Le=>{"use strict";Object.defineProperty(Le,"__esModule",{value:!0});Le.timestampExtension=Le.EXT_TIMESTAMP=void 0;Le.encodeTimeSpecToTimestamp=Nr;Le.encodeDateToTimeSpec=$r;Le.encodeTimestampExtension=jr;Le.decodeTimestampToTimeSpec=Lr;Le.decodeTimestampExtension=qr;var Ic=go(),Fr=yo();Le.EXT_TIMESTAMP=-1;var Oc=4294967296-1,Uc=17179869184-1;function Nr({sec:r,nsec:e}){if(r>=0&&e>=0&&r<=Uc)if(e===0&&r<=Oc){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,r),t}else{let t=r/4294967296,s=r&4294967295,o=new Uint8Array(8),n=new DataView(o.buffer);return n.setUint32(0,e<<2|t&3),n.setUint32(4,s),o}else{let t=new Uint8Array(12),s=new DataView(t.buffer);return s.setUint32(0,e),(0,Fr.setInt64)(s,4,r),t}}function $r(r){let e=r.getTime(),t=Math.floor(e/1e3),s=(e-t*1e3)*1e6,o=Math.floor(s/1e9);return{sec:t+o,nsec:s-o*1e9}}function jr(r){if(r instanceof Date){let e=$r(r);return Nr(e)}else return null}function Lr(r){let e=new DataView(r.buffer,r.byteOffset,r.byteLength);switch(r.byteLength){case 4:return{sec:e.getUint32(0),nsec:0};case 8:{let t=e.getUint32(0),s=e.getUint32(4),o=(t&3)*4294967296+s,n=t>>>2;return{sec:o,nsec:n}}case 12:{let t=(0,Fr.getInt64)(e,4),s=e.getUint32(0);return{sec:t,nsec:s}}default:throw new Ic.DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${r.length}`)}}function qr(r){let e=Lr(r);return new Date(e.sec*1e3+e.nsec/1e6)}Le.timestampExtension={type:Le.EXT_TIMESTAMP,encode:jr,decode:qr}});var Co=oe(bo=>{"use strict";Object.defineProperty(bo,"__esModule",{value:!0});bo.ExtensionCodec=void 0;var _o=Fn(),Rc=$n(),jn=class r{static defaultCodec=new r;__brand;builtInEncoders=[];builtInDecoders=[];encoders=[];decoders=[];constructor(){this.register(Rc.timestampExtension)}register({type:e,encode:t,decode:s}){if(e>=0)this.encoders[e]=t,this.decoders[e]=s;else{let o=-1-e;this.builtInEncoders[o]=t,this.builtInDecoders[o]=s}}tryToEncode(e,t){for(let s=0;s<this.builtInEncoders.length;s++){let o=this.builtInEncoders[s];if(o!=null){let n=o(e,t);if(n!=null){let a=-1-s;return new _o.ExtData(a,n)}}}for(let s=0;s<this.encoders.length;s++){let o=this.encoders[s];if(o!=null){let n=o(e,t);if(n!=null){let a=s;return new _o.ExtData(a,n)}}}return e instanceof _o.ExtData?e:null}decode(e,t,s){let o=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return o?o(e,t,s):new _o.ExtData(t,e)}};bo.ExtensionCodec=jn});var qn=oe(Ln=>{"use strict";Object.defineProperty(Ln,"__esModule",{value:!0});Ln.ensureUint8Array=Nc;function Fc(r){return r instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&r instanceof SharedArrayBuffer}function Nc(r){return r instanceof Uint8Array?r:ArrayBuffer.isView(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):Fc(r)?new Uint8Array(r):Uint8Array.from(r)}});var Bn=oe(Qe=>{"use strict";Object.defineProperty(Qe,"__esModule",{value:!0});Qe.Encoder=Qe.DEFAULT_INITIAL_BUFFER_SIZE=Qe.DEFAULT_MAX_DEPTH=void 0;var Gr=mo(),$c=Co(),Br=yo(),jc=qn();Qe.DEFAULT_MAX_DEPTH=100;Qe.DEFAULT_INITIAL_BUFFER_SIZE=2048;var Gn=class r{extensionCodec;context;useBigInt64;maxDepth;initialBufferSize;sortKeys;forceFloat32;ignoreUndefined;forceIntegerToFloat;pos;view;bytes;entered=!1;constructor(e){this.extensionCodec=e?.extensionCodec??$c.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 r({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,maxDepth:this.maxDepth,initialBufferSize:this.initialBufferSize,sortKeys:this.sortKeys,forceFloat32:this.forceFloat32,ignoreUndefined:this.ignoreUndefined,forceIntegerToFloat:this.forceIntegerToFloat})}reinitializeState(){this.pos=0}encodeSharedRef(e){if(this.entered)return this.clone().encodeSharedRef(e);try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.subarray(0,this.pos)}finally{this.entered=!1}}encode(e){if(this.entered)return this.clone().encode(e);try{return this.entered=!0,this.reinitializeState(),this.doEncode(e,1),this.bytes.slice(0,this.pos)}finally{this.entered=!1}}doEncode(e,t){if(t>this.maxDepth)throw new Error(`Too deep objects in depth ${t}`);e==null?this.encodeNil():typeof e=="boolean"?this.encodeBoolean(e):typeof e=="number"?this.forceIntegerToFloat?this.encodeNumberAsFloat(e):this.encodeNumber(e):typeof e=="string"?this.encodeString(e):this.useBigInt64&&typeof e=="bigint"?this.encodeBigInt64(e):this.encodeObject(e,t)}ensureBufferSizeToWrite(e){let t=this.pos+e;this.view.byteLength<t&&this.resizeBuffer(t*2)}resizeBuffer(e){let t=new ArrayBuffer(e),s=new Uint8Array(t),o=new DataView(t);s.set(this.bytes),this.view=o,this.bytes=s}encodeNil(){this.writeU8(192)}encodeBoolean(e){e===!1?this.writeU8(194):this.writeU8(195)}encodeNumber(e){!this.forceIntegerToFloat&&Number.isSafeInteger(e)?e>=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(211),this.writeI64(e)):this.encodeNumberAsFloat(e)}encodeNumberAsFloat(e){this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))}encodeBigInt64(e){e>=BigInt(0)?(this.writeU8(207),this.writeBigUint64(e)):(this.writeU8(211),this.writeBigInt64(e))}writeStringHeader(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else if(e<4294967296)this.writeU8(219),this.writeU32(e);else throw new Error(`Too long string: ${e} bytes in UTF-8`)}encodeString(e){let s=(0,Gr.utf8Count)(e);this.ensureBufferSizeToWrite(5+s),this.writeStringHeader(s),(0,Gr.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,jc.ensureUint8Array)(e);this.writeU8a(s)}encodeArray(e,t){let s=e.length;if(s<16)this.writeU8(144+s);else if(s<65536)this.writeU8(220),this.writeU16(s);else if(s<4294967296)this.writeU8(221),this.writeU32(s);else throw new Error(`Too large array: ${s}`);for(let o of e)this.doEncode(o,t+1)}countWithoutUndefined(e,t){let s=0;for(let o of t)e[o]!==void 0&&s++;return s}encodeMap(e,t){let s=Object.keys(e);this.sortKeys&&s.sort();let o=this.ignoreUndefined?this.countWithoutUndefined(e,s):s.length;if(o<16)this.writeU8(128+o);else if(o<65536)this.writeU8(222),this.writeU16(o);else if(o<4294967296)this.writeU8(223),this.writeU32(o);else throw new Error(`Too large map object: ${o}`);for(let n of s){let a=e[n];this.ignoreUndefined&&a===void 0||(this.encodeString(n),this.doEncode(a,t+1))}}encodeExtension(e){if(typeof e.data=="function"){let s=e.data(this.pos+6),o=s.length;if(o>=4294967296)throw new Error(`Too large extension object: ${o}`);this.writeU8(201),this.writeU32(o),this.writeI8(e.type),this.writeU8a(s);return}let t=e.data.length;if(t===1)this.writeU8(212);else if(t===2)this.writeU8(213);else if(t===4)this.writeU8(214);else if(t===8)this.writeU8(215);else if(t===16)this.writeU8(216);else if(t<256)this.writeU8(199),this.writeU8(t);else if(t<65536)this.writeU8(200),this.writeU16(t);else if(t<4294967296)this.writeU8(201),this.writeU32(t);else throw new Error(`Too large extension object: ${t}`);this.writeI8(e.type),this.writeU8a(e.data)}writeU8(e){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,e),this.pos++}writeU8a(e){let t=e.length;this.ensureBufferSizeToWrite(t),this.bytes.set(e,this.pos),this.pos+=t}writeI8(e){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,e),this.pos++}writeU16(e){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,e),this.pos+=2}writeI16(e){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,e),this.pos+=2}writeU32(e){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,e),this.pos+=4}writeI32(e){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,e),this.pos+=4}writeF32(e){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,e),this.pos+=4}writeF64(e){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,e),this.pos+=8}writeU64(e){this.ensureBufferSizeToWrite(8),(0,Br.setUint64)(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),(0,Br.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=Gn});var zr=oe(zn=>{"use strict";Object.defineProperty(zn,"__esModule",{value:!0});zn.encode=qc;var Lc=Bn();function qc(r,e){return new Lc.Encoder(e).encodeSharedRef(r)}});var Wr=oe(Wn=>{"use strict";Object.defineProperty(Wn,"__esModule",{value:!0});Wn.prettyByte=Gc;function Gc(r){return`${r<0?"-":""}0x${Math.abs(r).toString(16).padStart(2,"0")}`}});var Vr=oe(wo=>{"use strict";Object.defineProperty(wo,"__esModule",{value:!0});wo.CachedKeyDecoder=void 0;var Bc=mo(),zc=16,Wc=16,Vn=class{hit=0;miss=0;caches;maxKeyLength;maxLengthPerKey;constructor(e=zc,t=Wc){this.maxKeyLength=e,this.maxLengthPerKey=t,this.caches=[];for(let s=0;s<this.maxKeyLength;s++)this.caches.push([])}canBeCached(e){return e>0&&e<=this.maxKeyLength}find(e,t,s){let o=this.caches[s-1];e:for(let n of o){let a=n.bytes;for(let d=0;d<s;d++)if(a[d]!==e[t+d])continue e;return n.str}return null}store(e,t){let s=this.caches[e.length-1],o={bytes:e,str:t};s.length>=this.maxLengthPerKey?s[Math.random()*s.length|0]=o:s.push(o)}decode(e,t,s){let o=this.find(e,t,s);if(o!=null)return this.hit++,o;this.miss++;let n=(0,Bc.utf8DecodeJs)(e,t,s),a=Uint8Array.prototype.slice.call(e,t,t+s);return this.store(a,n),n}};wo.CachedKeyDecoder=Vn});var ko=oe(So=>{"use strict";Object.defineProperty(So,"__esModule",{value:!0});So.Decoder=void 0;var Hn=Wr(),Vc=Co(),jt=yo(),Hc=mo(),Hr=qn(),Jc=Vr(),rt=go(),Jn="array",bs="map_key",Kr="map_value",Kc=r=>{if(typeof r=="string"||typeof r=="number")return r;throw new rt.DecodeError("The type of key must be string or number but "+typeof r)},Kn=class{stack=[];stackHeadPosition=-1;get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(e){let t=this.getUninitializedStateFromPool();t.type=Jn,t.position=0,t.size=e,t.array=new Array(e)}pushMapState(e){let t=this.getUninitializedStateFromPool();t.type=bs,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===Jn){let s=e;s.size=0,s.array=void 0,s.position=0,s.type=void 0}if(e.type===bs||e.type===Kr){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}},_s=-1,Qn=new DataView(new ArrayBuffer(0)),Yc=new Uint8Array(Qn.buffer);try{Qn.getInt8(0)}catch(r){if(!(r 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 Jr=new RangeError("Insufficient data"),Qc=new Jc.CachedKeyDecoder,Yn=class r{extensionCodec;context;useBigInt64;rawStrings;maxStrLength;maxBinLength;maxArrayLength;maxMapLength;maxExtLength;keyDecoder;mapKeyConverter;totalPos=0;pos=0;view=Qn;bytes=Yc;headByte=_s;stack=new Kn;entered=!1;constructor(e){this.extensionCodec=e?.extensionCodec??Vc.ExtensionCodec.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.rawStrings=e?.rawStrings??!1,this.maxStrLength=e?.maxStrLength??jt.UINT32_MAX,this.maxBinLength=e?.maxBinLength??jt.UINT32_MAX,this.maxArrayLength=e?.maxArrayLength??jt.UINT32_MAX,this.maxMapLength=e?.maxMapLength??jt.UINT32_MAX,this.maxExtLength=e?.maxExtLength??jt.UINT32_MAX,this.keyDecoder=e?.keyDecoder!==void 0?e.keyDecoder:Qc,this.mapKeyConverter=e?.mapKeyConverter??Kc}clone(){return new r({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=_s,this.stack.reset()}setBuffer(e){let t=(0,Hr.ensureUint8Array)(e);this.bytes=t,this.view=new DataView(t.buffer,t.byteOffset,t.byteLength),this.pos=0}appendBuffer(e){if(this.headByte===_s&&!this.hasRemaining(1))this.setBuffer(e);else{let t=this.bytes.subarray(this.pos),s=(0,Hr.ensureUint8Array)(e),o=new Uint8Array(t.length+s.length);o.set(t),o.set(s,t.length),this.setBuffer(o)}}hasRemaining(e){return this.view.byteLength-this.pos>=e}createExtraByteError(e){let{view:t,pos:s}=this;return new RangeError(`Extra ${t.byteLength-s} of ${t.byteLength} byte(s) found at buffer[${e}]`)}decode(e){if(this.entered)return this.clone().decode(e);try{this.entered=!0,this.reinitializeState(),this.setBuffer(e);let t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t}finally{this.entered=!1}}*decodeMulti(e){if(this.entered){yield*this.clone().decodeMulti(e);return}try{for(this.entered=!0,this.reinitializeState(),this.setBuffer(e);this.hasRemaining(1);)yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync(e){if(this.entered)return this.clone().decodeAsync(e);try{this.entered=!0;let t=!1,s;for await(let d of e){if(t)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(d);try{s=this.doDecodeSync(),t=!0}catch(c){if(!(c instanceof RangeError))throw c}this.totalPos+=this.pos}if(t){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return s}let{headByte:o,pos:n,totalPos:a}=this;throw new RangeError(`Insufficient data in parsing ${(0,Hn.prettyByte)(o)} at ${a} (${n} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream(e){return this.decodeMultiAsync(e,!0)}decodeStream(e){return this.decodeMultiAsync(e,!1)}async*decodeMultiAsync(e,t){if(this.entered){yield*this.clone().decodeMultiAsync(e,t);return}try{this.entered=!0;let s=t,o=-1;for await(let n of e){if(t&&o===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(n),s&&(o=this.readArraySize(),s=!1,this.complete());try{for(;yield this.doDecodeSync(),--o!==0;);}catch(a){if(!(a instanceof RangeError))throw a}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){e:for(;;){let e=this.readHeadByte(),t;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){let o=e-128;if(o!==0){this.pushMapState(o),this.complete();continue e}else t={}}else if(e<160){let o=e-144;if(o!==0){this.pushArrayState(o),this.complete();continue e}else t=[]}else{let o=e-160;t=this.decodeString(o,0)}else if(e===192)t=null;else if(e===194)t=!1;else if(e===195)t=!0;else if(e===202)t=this.readF32();else if(e===203)t=this.readF64();else if(e===204)t=this.readU8();else if(e===205)t=this.readU16();else if(e===206)t=this.readU32();else if(e===207)this.useBigInt64?t=this.readU64AsBigInt():t=this.readU64();else if(e===208)t=this.readI8();else if(e===209)t=this.readI16();else if(e===210)t=this.readI32();else if(e===211)this.useBigInt64?t=this.readI64AsBigInt():t=this.readI64();else if(e===217){let o=this.lookU8();t=this.decodeString(o,1)}else if(e===218){let o=this.lookU16();t=this.decodeString(o,2)}else if(e===219){let o=this.lookU32();t=this.decodeString(o,4)}else if(e===220){let o=this.readU16();if(o!==0){this.pushArrayState(o),this.complete();continue e}else t=[]}else if(e===221){let o=this.readU32();if(o!==0){this.pushArrayState(o),this.complete();continue e}else t=[]}else if(e===222){let o=this.readU16();if(o!==0){this.pushMapState(o),this.complete();continue e}else t={}}else if(e===223){let o=this.readU32();if(o!==0){this.pushMapState(o),this.complete();continue e}else t={}}else if(e===196){let o=this.lookU8();t=this.decodeBinary(o,1)}else if(e===197){let o=this.lookU16();t=this.decodeBinary(o,2)}else if(e===198){let o=this.lookU32();t=this.decodeBinary(o,4)}else if(e===212)t=this.decodeExtension(1,0);else if(e===213)t=this.decodeExtension(2,0);else if(e===214)t=this.decodeExtension(4,0);else if(e===215)t=this.decodeExtension(8,0);else if(e===216)t=this.decodeExtension(16,0);else if(e===199){let o=this.lookU8();t=this.decodeExtension(o,1)}else if(e===200){let o=this.lookU16();t=this.decodeExtension(o,2)}else if(e===201){let o=this.lookU32();t=this.decodeExtension(o,4)}else throw new rt.DecodeError(`Unrecognized type byte: ${(0,Hn.prettyByte)(e)}`);this.complete();let s=this.stack;for(;s.length>0;){let o=s.top();if(o.type===Jn)if(o.array[o.position]=t,o.position++,o.position===o.size)t=o.array,s.release(o);else continue e;else if(o.type===bs){if(t==="__proto__")throw new rt.DecodeError("The key __proto__ is not allowed");o.key=this.mapKeyConverter(t),o.type=Kr;continue e}else if(o.map[o.key]=t,o.readCount++,o.readCount===o.size)t=o.map,s.release(o);else{o.key=null,o.type=bs;continue e}}return t}}readHeadByte(){return this.headByte===_s&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=_s}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 rt.DecodeError(`Unrecognized array type byte: ${(0,Hn.prettyByte)(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new rt.DecodeError(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(e)}pushArrayState(e){if(e>this.maxArrayLength)throw new rt.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 rt.DecodeError(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw Jr;let s=this.pos+t,o;return this.stateIsMapKey()&&this.keyDecoder?.canBeCached(e)?o=this.keyDecoder.decode(this.bytes,s,e):o=(0,Hc.utf8Decode)(this.bytes,s,e),this.pos+=t+e,o}stateIsMapKey(){return this.stack.length>0?this.stack.top().type===bs:!1}decodeBinary(e,t){if(e>this.maxBinLength)throw new rt.DecodeError(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw Jr;let s=this.pos+t,o=this.bytes.subarray(s,s+e);return this.pos+=t+e,o}decodeExtension(e,t){if(e>this.maxExtLength)throw new rt.DecodeError(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);let s=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,s,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let e=this.view.getUint8(this.pos);return this.pos++,e}readI8(){let e=this.view.getInt8(this.pos);return this.pos++,e}readU16(){let e=this.view.getUint16(this.pos);return this.pos+=2,e}readI16(){let e=this.view.getInt16(this.pos);return this.pos+=2,e}readU32(){let e=this.view.getUint32(this.pos);return this.pos+=4,e}readI32(){let e=this.view.getInt32(this.pos);return this.pos+=4,e}readU64(){let e=(0,jt.getUint64)(this.view,this.pos);return this.pos+=8,e}readI64(){let e=(0,jt.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}};So.Decoder=Yn});var Qr=oe(vo=>{"use strict";Object.defineProperty(vo,"__esModule",{value:!0});vo.decode=Xc;vo.decodeMulti=Zc;var Yr=ko();function Xc(r,e){return new Yr.Decoder(e).decode(r)}function Zc(r,e){return new Yr.Decoder(e).decodeMulti(r)}});var ea=oe(Cs=>{"use strict";Object.defineProperty(Cs,"__esModule",{value:!0});Cs.isAsyncIterable=Xr;Cs.asyncIterableFromStream=Zr;Cs.ensureAsyncIterable=eu;function Xr(r){return r[Symbol.asyncIterator]!=null}async function*Zr(r){let e=r.getReader();try{for(;;){let{done:t,value:s}=await e.read();if(t)return;yield s}}finally{e.releaseLock()}}function eu(r){return Xr(r)?r:Zr(r)}});var ta=oe(ws=>{"use strict";Object.defineProperty(ws,"__esModule",{value:!0});ws.decodeAsync=tu;ws.decodeArrayStream=su;ws.decodeMultiStream=ou;var Xn=ko(),Zn=ea();async function tu(r,e){let t=(0,Zn.ensureAsyncIterable)(r);return new Xn.Decoder(e).decodeAsync(t)}function su(r,e){let t=(0,Zn.ensureAsyncIterable)(r);return new Xn.Decoder(e).decodeArrayStream(t)}function ou(r,e){let t=(0,Zn.ensureAsyncIterable)(r);return new Xn.Decoder(e).decodeStream(t)}});var oa=oe(z=>{"use strict";Object.defineProperty(z,"__esModule",{value:!0});z.decodeTimestampExtension=z.encodeTimestampExtension=z.decodeTimestampToTimeSpec=z.encodeTimeSpecToTimestamp=z.encodeDateToTimeSpec=z.EXT_TIMESTAMP=z.ExtData=z.ExtensionCodec=z.Encoder=z.DecodeError=z.Decoder=z.decodeMultiStream=z.decodeArrayStream=z.decodeAsync=z.decodeMulti=z.decode=z.encode=void 0;var nu=zr();Object.defineProperty(z,"encode",{enumerable:!0,get:function(){return nu.encode}});var sa=Qr();Object.defineProperty(z,"decode",{enumerable:!0,get:function(){return sa.decode}});Object.defineProperty(z,"decodeMulti",{enumerable:!0,get:function(){return sa.decodeMulti}});var ei=ta();Object.defineProperty(z,"decodeAsync",{enumerable:!0,get:function(){return ei.decodeAsync}});Object.defineProperty(z,"decodeArrayStream",{enumerable:!0,get:function(){return ei.decodeArrayStream}});Object.defineProperty(z,"decodeMultiStream",{enumerable:!0,get:function(){return ei.decodeMultiStream}});var iu=ko();Object.defineProperty(z,"Decoder",{enumerable:!0,get:function(){return iu.Decoder}});var ru=go();Object.defineProperty(z,"DecodeError",{enumerable:!0,get:function(){return ru.DecodeError}});var au=Bn();Object.defineProperty(z,"Encoder",{enumerable:!0,get:function(){return au.Encoder}});var lu=Co();Object.defineProperty(z,"ExtensionCodec",{enumerable:!0,get:function(){return lu.ExtensionCodec}});var cu=Fn();Object.defineProperty(z,"ExtData",{enumerable:!0,get:function(){return cu.ExtData}});var es=$n();Object.defineProperty(z,"EXT_TIMESTAMP",{enumerable:!0,get:function(){return es.EXT_TIMESTAMP}});Object.defineProperty(z,"encodeDateToTimeSpec",{enumerable:!0,get:function(){return es.encodeDateToTimeSpec}});Object.defineProperty(z,"encodeTimeSpecToTimestamp",{enumerable:!0,get:function(){return es.encodeTimeSpecToTimestamp}});Object.defineProperty(z,"decodeTimestampToTimeSpec",{enumerable:!0,get:function(){return es.decodeTimestampToTimeSpec}});Object.defineProperty(z,"encodeTimestampExtension",{enumerable:!0,get:function(){return es.encodeTimestampExtension}});Object.defineProperty(z,"decodeTimestampExtension",{enumerable:!0,get:function(){return es.decodeTimestampExtension}})});var Ja=oe((gh,sd)=>{sd.exports={name:"@rajbos/ai-engineering-fluency",version:"0.0.11",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/github-copilot-token-usage.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:{commander:"^14.0.3",chalk:"^5.6.2",esbuild:"^0.28.0",typescript:"^6.0.2","@types/node":"^25.5.0","sql.js":"^1.12.0"},engines:{node:">=22.14.0"}}});var mr=R(pr(),1),{program:pd,createCommand:md,createArgument:hd,createOption:fd,CommanderError:gd,InvalidArgumentError:yd,InvalidOptionArgumentError:_d,Command:pe,Argument:bd,Option:Cd,Help:wd}=mr.default;var hr=(r=0)=>e=>`\x1B[${e+r}m`,fr=(r=0)=>e=>`\x1B[${38+r};5;${e}m`,gr=(r=0)=>(e,t,s)=>`\x1B[${38+r};2;${e};${t};${s}m`,ie={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},kd=Object.keys(ie.modifier),ic=Object.keys(ie.color),rc=Object.keys(ie.bgColor),vd=[...ic,...rc];function ac(){let r=new Map;for(let[e,t]of Object.entries(ie)){for(let[s,o]of Object.entries(t))ie[s]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},t[s]=ie[s],r.set(o[0],o[1]);Object.defineProperty(ie,e,{value:t,enumerable:!1})}return Object.defineProperty(ie,"codes",{value:r,enumerable:!1}),ie.color.close="\x1B[39m",ie.bgColor.close="\x1B[49m",ie.color.ansi=hr(),ie.color.ansi256=fr(),ie.color.ansi16m=gr(),ie.bgColor.ansi=hr(10),ie.bgColor.ansi256=fr(10),ie.bgColor.ansi16m=gr(10),Object.defineProperties(ie,{rgbToAnsi256:{value(e,t,s){return e===t&&t===s?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(s/255*5)},enumerable:!1},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[s]=t;s.length===3&&(s=[...s].map(n=>n+n).join(""));let o=Number.parseInt(s,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:e=>ie.rgbToAnsi256(...ie.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,s,o;if(e>=232)t=((e-232)*10+8)/255,s=t,o=t;else{e-=16;let d=e%36;t=Math.floor(e/36)/5,s=Math.floor(d/6)/5,o=d%6/5}let n=Math.max(t,s,o)*2;if(n===0)return 30;let a=30+(Math.round(o)<<2|Math.round(s)<<1|Math.round(t));return n===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,t,s)=>ie.ansi256ToAnsi(ie.rgbToAnsi256(e,t,s)),enumerable:!1},hexToAnsi:{value:e=>ie.ansi256ToAnsi(ie.hexToAnsi256(e)),enumerable:!1}}),ie}var lc=ac(),ze=lc;var to=R(require("node:process"),1),_r=R(require("node:os"),1),Mn=R(require("node:tty"),1);function je(r,e=globalThis.Deno?globalThis.Deno.args:to.default.argv){let t=r.startsWith("-")?"":r.length===1?"-":"--",s=e.indexOf(t+r),o=e.indexOf("--");return s!==-1&&(o===-1||s<o)}var{env:re}=to.default,eo;je("no-color")||je("no-colors")||je("color=false")||je("color=never")?eo=0:(je("color")||je("colors")||je("color=true")||je("color=always"))&&(eo=1);function cc(){if("FORCE_COLOR"in re)return re.FORCE_COLOR==="true"?1:re.FORCE_COLOR==="false"?0:re.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(re.FORCE_COLOR,10),3)}function uc(r){return r===0?!1:{level:r,hasBasic:!0,has256:r>=2,has16m:r>=3}}function dc(r,{streamIsTTY:e,sniffFlags:t=!0}={}){let s=cc();s!==void 0&&(eo=s);let o=t?eo:s;if(o===0)return 0;if(t){if(je("color=16m")||je("color=full")||je("color=truecolor"))return 3;if(je("color=256"))return 2}if("TF_BUILD"in re&&"AGENT_NAME"in re)return 1;if(r&&!e&&o===void 0)return 0;let n=o||0;if(re.TERM==="dumb")return n;if(to.default.platform==="win32"){let a=_r.default.release().split(".");return Number(a[0])>=10&&Number(a[2])>=10586?Number(a[2])>=14931?3:2:1}if("CI"in re)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(a=>a in re)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(a=>a in re)||re.CI_NAME==="codeship"?1:n;if("TEAMCITY_VERSION"in re)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(re.TEAMCITY_VERSION)?1:0;if(re.COLORTERM==="truecolor"||re.TERM==="xterm-kitty"||re.TERM==="xterm-ghostty"||re.TERM==="wezterm")return 3;if("TERM_PROGRAM"in re){let a=Number.parseInt((re.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(re.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(re.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(re.TERM)||"COLORTERM"in re?1:n}function yr(r,e={}){let t=dc(r,{streamIsTTY:r&&r.isTTY,...e});return uc(t)}var pc={stdout:yr({isTTY:Mn.default.isatty(1)}),stderr:yr({isTTY:Mn.default.isatty(2)})},br=pc;function Cr(r,e,t){let s=r.indexOf(e);if(s===-1)return r;let o=e.length,n=0,a="";do a+=r.slice(n,s)+e+t,n=s+o,s=r.indexOf(e,n);while(s!==-1);return a+=r.slice(n),a}function wr(r,e,t,s){let o=0,n="";do{let a=r[s-1]==="\r";n+=r.slice(o,a?s-1:s)+e+(a?`\r
|
|
27
|
+
`)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(o=>t.is(o))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function wr(i){return i.map(e=>{if(!e.startsWith("--inspect"))return e;let t,s="127.0.0.1",o="9229",n;return(n=e.match(/^(--inspect(-brk)?)$/))!==null?t=n[1]:(n=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=n[1],/^\d+$/.test(n[3])?o=n[3]:s=n[3]):(n=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=n[1],s=n[3],o=n[4]),t&&o!=="0"?`${t}=${s}:${parseInt(o)+1}`:e})}function jn(){if(Q.env.NO_COLOR||Q.env.FORCE_COLOR==="0"||Q.env.FORCE_COLOR==="false")return!1;if(Q.env.FORCE_COLOR||Q.env.CLICOLOR_FORCE!==void 0)return!0}Ln.Command=Nn;Ln.useColor=jn});var xr=ie(qe=>{var{Argument:vr}=co(),{Command:$n}=Sr(),{CommanderError:Tc,InvalidArgumentError:Tr}=bs(),{Help:Pc}=Dn(),{Option:Pr}=Rn();qe.program=new $n;qe.createCommand=i=>new $n(i);qe.createOption=(i,e)=>new Pr(i,e);qe.createArgument=(i,e)=>new vr(i,e);qe.Command=$n;qe.Option=Pr;qe.Argument=vr;qe.Help=Pc;qe.CommanderError=Tc;qe.InvalidArgumentError=Tr;qe.InvalidOptionArgumentError=Tr});var Vn=ie((Co,Gt)=>{var yo=void 0,_o=function(i){return yo||(yo=new Promise(function(e,t){var s=typeof i<"u"?i:{},o=s.onAbort;s.onAbort=function(r){t(new Error(r)),o&&o(r)},s.postRun=s.postRun||[],s.postRun.push(function(){e(s)}),Gt=void 0;var n;n||=typeof s<"u"?s:{};var a=!!globalThis.window,u=!!globalThis.WorkerGlobalScope,c=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";n.onRuntimeInitialized=function(){function r(T,I){switch(typeof I){case"boolean":nc(T,I?1:0);break;case"number":tc(T,I);break;case"string":sc(T,I,-1,-1);break;case"object":if(I===null)dr(T);else if(I.length!=null){var F=oo(I.length);A.set(I,F),oc(T,F,I.length,-1),Cs(F)}else ao(T,"Wrong API use : tried to return a value of an unknown type ("+I+").",-1);break;default:dr(T)}}function l(T,I){for(var F=[],j=0;j<T;j+=1){var H=ce(I+4*j,"i32"),ee=Yl(H);if(ee===1||ee===2)H=ec(H);else if(ee===3)H=Xl(H);else if(ee===4){ee=H,H=Ql(ee),ee=Zl(ee);for(var Je=new Uint8Array(H),Ge=0;Ge<H;Ge+=1)Je[Ge]=A[ee+Ge];H=Je}else H=null;F.push(H)}return F}function d(T,I){this.Qa=T,this.db=I,this.Oa=1,this.mb=[]}function f(T,I){if(this.db=I,this.fb=so(T),this.fb===null)throw Error("Unable to allocate memory for the SQL string");this.lb=this.fb,this.$a=this.sb=null}function k(T){if(this.filename="dbfile_"+(4294967295*Math.random()>>>0),T!=null){var I=this.filename,F="/",j=I;if(F&&(F=typeof F=="string"?F:un(F),j=I?Ze(F+"/"+I):F),I=ji(!0,!0),j=Tl(j,I),T){if(typeof T=="string"){F=Array(T.length);for(var H=0,ee=T.length;H<ee;++H)F[H]=T.charCodeAt(H);T=F}Xs(j,I|146),F=os(j,577),Zi(F,T,0,T.length,0),gn(F),Xs(j,I)}}this.handleError(G(this.filename,x)),this.db=ce(x,"i32"),mr(this.db),this.gb={},this.Sa={}}var x=Lt(4),E=n.cwrap,G=E("sqlite3_open","number",["string","number"]),Z=E("sqlite3_close_v2","number",["number"]),z=E("sqlite3_exec","number",["number","string","number","number","number"]),ne=E("sqlite3_changes","number",["number"]),be=E("sqlite3_prepare_v2","number",["number","string","number","number","number"]),rr=E("sqlite3_sql","string",["number"]),Ul=E("sqlite3_normalized_sql","string",["number"]),ar=E("sqlite3_prepare_v2","number",["number","number","number","number","number"]),Rl=E("sqlite3_bind_text","number",["number","number","number","number","number"]),lr=E("sqlite3_bind_blob","number",["number","number","number","number","number"]),Ol=E("sqlite3_bind_double","number",["number","number","number"]),Fl=E("sqlite3_bind_int","number",["number","number","number"]),Nl=E("sqlite3_bind_parameter_index","number",["number","string"]),jl=E("sqlite3_step","number",["number"]),Ll=E("sqlite3_errmsg","string",["number"]),$l=E("sqlite3_column_count","number",["number"]),Gl=E("sqlite3_data_count","number",["number"]),ql=E("sqlite3_column_double","number",["number","number"]),cr=E("sqlite3_column_text","string",["number","number"]),Bl=E("sqlite3_column_blob","number",["number","number"]),zl=E("sqlite3_column_bytes","number",["number","number"]),Wl=E("sqlite3_column_type","number",["number","number"]),Hl=E("sqlite3_column_name","string",["number","number"]),Vl=E("sqlite3_reset","number",["number"]),Jl=E("sqlite3_clear_bindings","number",["number"]),Kl=E("sqlite3_finalize","number",["number"]),ur=E("sqlite3_create_function_v2","number","number string number number number number number number number".split(" ")),Yl=E("sqlite3_value_type","number",["number"]),Ql=E("sqlite3_value_bytes","number",["number"]),Xl=E("sqlite3_value_text","string",["number"]),Zl=E("sqlite3_value_blob","number",["number"]),ec=E("sqlite3_value_double","number",["number"]),tc=E("sqlite3_result_double","",["number","number"]),dr=E("sqlite3_result_null","",["number"]),sc=E("sqlite3_result_text","",["number","string","number","number"]),oc=E("sqlite3_result_blob","",["number","number","number","number"]),nc=E("sqlite3_result_int","",["number","number"]),ao=E("sqlite3_result_error","",["number","string","number"]),pr=E("sqlite3_aggregate_context","number",["number","number"]),mr=E("RegisterExtensionFunctions","number",["number"]),hr=E("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=jl(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),ql(this.Qa,T)},d.prototype.Ob=function(T){if(T==null&&(T=this.Oa,this.Oa+=1),T=cr(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),cr(this.Qa,T)},d.prototype.getBlob=function(T){T==null&&(T=this.Oa,this.Oa+=1);var I=zl(this.Qa,T);T=Bl(this.Qa,T);for(var F=new Uint8Array(I),j=0;j<I;j+=1)F[j]=A[T+j];return F},d.prototype.get=function(T,I){I=I||{},T!=null&&this.bind(T)&&this.step(),T=[];for(var F=Gl(this.Qa),j=0;j<F;j+=1)switch(Wl(this.Qa,j)){case 1:var H=I.useBigInt?this.Ob(j):this.Ab(j);T.push(H);break;case 2:T.push(this.Ab(j));break;case 3:T.push(this.Tb(j));break;case 4:T.push(this.getBlob(j));break;default:T.push(null)}return T},d.prototype.qb=function(){for(var T=[],I=$l(this.Qa),F=0;F<I;F+=1)T.push(Hl(this.Qa,F));return T},d.prototype.zb=function(T,I){T=this.get(T,I),I=this.qb();for(var F={},j=0;j<I.length;j+=1)F[I[j]]=T[j];return F},d.prototype.Sb=function(){return rr(this.Qa)},d.prototype.Pb=function(){return Ul(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=so(T),this.mb.push(T),this.db.handleError(Rl(this.Qa,I,T,-1,0))},d.prototype.Fb=function(T,I){I==null&&(I=this.Oa,this.Oa+=1);var F=oo(T.length);A.set(T,F),this.mb.push(F),this.db.handleError(lr(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)?Fl:Ol)(this.Qa,I,T))},d.prototype.Ib=function(T){T==null&&(T=this.Oa,this.Oa+=1),lr(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 j=Nl(I.Qa,F);j!==0&&I.xb(T[F],j)}),!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(),Jl(this.Qa)===0&&Vl(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=Kl(this.Qa)===0;return delete this.db.gb[this.Qa],this.Qa=0,T},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 T=io(),I=Lt(4);Xt(x),Xt(I);try{this.db.handleError(ar(this.db.db,this.lb,-1,x,I)),this.lb=ce(I,"i32");var F=ce(x,"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(j){throw this.sb=re(this.lb),this.ob(),j}finally{no(T)}},f.prototype.ob=function(){Cs(this.fb),this.fb=null},f.prototype.Qb=function(){return this.sb!==null?this.sb:re(this.lb)},typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"&&(f.prototype[Symbol.iterator]=function(){return this}),k.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,x));return this},k.prototype.exec=function(T,I,F){if(!this.db)throw"Database closed";var j=null,H=null,ee=null;try{ee=H=so(T);var Je=Lt(4);for(T=[];ce(ee,"i8")!==0;){Xt(x),Xt(Je),this.handleError(ar(this.db,ee,-1,x,Je));var Ge=ce(x,"i32");if(ee=ce(Je,"i32"),Ge!==0){var Fe=null;for(j=new d(Ge,this),I!=null&&j.bind(I);j.step();)Fe===null&&(Fe={columns:j.qb(),values:[]},T.push(Fe)),Fe.values.push(j.get(null,F));j.Ya()}}return T}catch(Ke){throw j&&j.Ya(),Ke}finally{H&&Cs(H)}},k.prototype.Mb=function(T,I,F,j,H){typeof I=="function"&&(j=F,F=I,I=void 0),T=this.tb(T,I);try{for(;T.step();)F(T.zb(null,H))}finally{T.Ya()}if(typeof j=="function")return j()},k.prototype.tb=function(T,I){if(Xt(x),this.handleError(be(this.db,T,-1,x,0)),T=ce(x,"i32"),T===0)throw"Nothing to prepare";var F=new d(T,this);return I!=null&&F.bind(I),this.gb[T]=F},k.prototype.Ub=function(T){return new f(T,this)},k.prototype.Nb=function(){Object.values(this.gb).forEach(function(I){I.Ya()}),Object.values(this.Sa).forEach(xt),this.Sa={},this.handleError(Z(this.db));var T=Pl(this.filename);return this.handleError(G(this.filename,x)),this.db=ce(x,"i32"),mr(this.db),T},k.prototype.close=function(){this.db!==null&&(Object.values(this.gb).forEach(function(T){T.Ya()}),Object.values(this.Sa).forEach(xt),this.Sa={},this.Za&&(xt(this.Za),this.Za=void 0),this.handleError(Z(this.db)),Ji("/"+this.filename),this.db=null)},k.prototype.handleError=function(T){if(T===0)return null;throw T=Ll(this.db),Error(T)},k.prototype.Rb=function(){return ne(this.db)},k.prototype.Kb=function(T,I){Object.prototype.hasOwnProperty.call(this.Sa,T)&&(xt(this.Sa[T]),delete this.Sa[T]);var F=_s(function(j,H,ee){H=l(H,ee);try{var Je=I.apply(null,H)}catch(Ge){ao(j,Ge,-1);return}r(j,Je)},"viii");return this.Sa[T]=F,this.handleError(ur(this.db,T,I.length,1,0,F,0,0,0)),this},k.prototype.Jb=function(T,I){var F=I.init||function(){return null},j=I.finalize||function(Fe){return Fe},H=I.step;if(!H)throw"An aggregate function must have a step function in "+T;var ee={};Object.hasOwnProperty.call(this.Sa,T)&&(xt(this.Sa[T]),delete this.Sa[T]),I=T+"__finalize",Object.hasOwnProperty.call(this.Sa,I)&&(xt(this.Sa[I]),delete this.Sa[I]);var Je=_s(function(Fe,Ke,Sn){var $t=pr(Fe,1);Object.hasOwnProperty.call(ee,$t)||(ee[$t]=F()),Ke=l(Ke,Sn),Ke=[ee[$t]].concat(Ke);try{ee[$t]=H.apply(null,Ke)}catch(ic){delete ee[$t],ao(Fe,ic,-1)}},"viii"),Ge=_s(function(Fe){var Ke=pr(Fe,1);try{var Sn=j(ee[Ke])}catch($t){delete ee[Ke],ao(Fe,$t,-1);return}r(Fe,Sn),delete ee[Ke]},"vi");return this.Sa[T]=Je,this.Sa[I]=Ge,this.handleError(ur(this.db,T,H.length-1,1,0,0,Je,Ge,0)),this},k.prototype.Zb=function(T){return this.Za&&(hr(this.db,0,0),xt(this.Za),this.Za=void 0),T?(this.Za=_s(function(I,F,j,H,ee){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(j=re(j),H=re(H),ee>Number.MAX_SAFE_INTEGER)throw"rowId too big to fit inside a Number";T(I,j,H,Number(ee))},"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,k.prototype.run=k.prototype.run,k.prototype.exec=k.prototype.exec,k.prototype.each=k.prototype.Mb,k.prototype.prepare=k.prototype.tb,k.prototype.iterateStatements=k.prototype.Ub,k.prototype.export=k.prototype.Nb,k.prototype.close=k.prototype.close,k.prototype.handleError=k.prototype.handleError,k.prototype.getRowsModified=k.prototype.Rb,k.prototype.create_function=k.prototype.Kb,k.prototype.create_aggregate=k.prototype.Jb,k.prototype.updateHook=k.prototype.Zb,n.Database=k};var p="./this.program",m=(r,l)=>{throw l},h=globalThis.document?.currentScript?.src;typeof __filename<"u"?h=__filename:u&&(h=self.location.href);var g="",b,y;if(c){var _=require("node:fs");g=__dirname+"/",y=r=>(r=M(r)?new URL(r):r,_.readFileSync(r)),b=async r=>(r=M(r)?new URL(r):r,_.readFileSync(r,void 0)),1<process.argv.length&&(p=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),typeof Gt<"u"&&(Gt.exports=n),m=(r,l)=>{throw process.exitCode=r,l}}else if(a||u){try{g=new URL(".",h).href}catch{}u&&(y=r=>{var l=new XMLHttpRequest;return l.open("GET",r,!1),l.responseType="arraybuffer",l.send(null),new Uint8Array(l.response)}),b=async r=>{if(M(r))return new Promise((d,f)=>{var k=new XMLHttpRequest;k.open("GET",r,!0),k.responseType="arraybuffer",k.onload=()=>{k.status==200||k.status==0&&k.response?d(k.response):f(k.status)},k.onerror=f,k.send(null)});var l=await fetch(r,{credentials:"same-origin"});if(l.ok)return l.arrayBuffer();throw Error(l.status+" : "+l.url)}}var C=console.log.bind(console),S=console.error.bind(console),w,P=!1,v,M=r=>r.startsWith("file://"),A,U,O,$,q,ve,Ce,te;function Te(){var r=ro.buffer;A=new Int8Array(r),O=new Int16Array(r),U=new Uint8Array(r),new Uint16Array(r),$=new Int32Array(r),q=new Uint32Array(r),ve=new Float32Array(r),Ce=new Float64Array(r),te=new BigInt64Array(r),new BigUint64Array(r)}function Pe(r){throw n.onAbort?.(r),r="Aborted("+r+")",S(r),P=!0,new WebAssembly.RuntimeError(r+". Build with -sASSERTIONS for more info.")}var xe;async function Ve(r){if(!w)try{var l=await b(r);return new Uint8Array(l)}catch{}if(r==xe&&w)r=new Uint8Array(w);else if(y)r=y(r);else throw"both async and sync fetching of the wasm failed";return r}async function Oe(r,l){try{var d=await Ve(r);return await WebAssembly.instantiate(d,l)}catch(f){S(`failed to asynchronously prepare wasm: ${f}`),Pe(f)}}async function he(r){var l=xe;if(!w&&!M(l)&&!c)try{var d=fetch(l,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(d,r)}catch(f){S(`wasm streaming compile failed: ${f}`),S("falling back to ArrayBuffer instantiation")}return Oe(l,r)}class K{name="ExitStatus";constructor(l){this.message=`Program terminated with exit(${l})`,this.status=l}}var X=r=>{for(;0<r.length;)r.shift()(n)},me=[],at=[],Xe=()=>{var r=n.preRun.shift();at.push(r)},Me=0,Le=null;function ce(r,l="i8"){switch(l.endsWith("*")&&(l="*"),l){case"i1":return A[r];case"i8":return A[r];case"i16":return O[r>>1];case"i32":return $[r>>2];case"i64":return te[r>>3];case"float":return ve[r>>2];case"double":return Ce[r>>3];case"*":return q[r>>2];default:Pe(`invalid type for getValue: ${l}`)}}var lt=!0;function Xt(r){var l="i32";switch(l.endsWith("*")&&(l="*"),l){case"i1":A[r]=0;break;case"i8":A[r]=0;break;case"i16":O[r>>1]=0;break;case"i32":$[r>>2]=0;break;case"i64":te[r>>3]=BigInt(0);break;case"float":ve[r>>2]=0;break;case"double":Ce[r>>3]=0;break;case"*":q[r>>2]=0;break;default:Pe(`invalid type for setValue: ${l}`)}}var St=new TextDecoder,Zt=(r,l,d,f)=>{if(d=l+d,f)return d;for(;r[l]&&!(l>=d);)++l;return l},re=(r,l,d)=>r?St.decode(U.subarray(r,Zt(U,r,l,d))):"",W=(r,l)=>{for(var d=0,f=r.length-1;0<=f;f--){var k=r[f];k==="."?r.splice(f,1):k===".."?(r.splice(f,1),d++):d&&(r.splice(f,1),d--)}if(l)for(;d;d--)r.unshift("..");return r},Ze=r=>{var l=r.charAt(0)==="/",d=r.slice(-1)==="/";return(r=W(r.split("/").filter(f=>!!f),!l).join("/"))||l||(r="."),r&&d&&(r+="/"),(l?"/":"")+r},ct=r=>{var l=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(r).slice(1);return r=l[0],l=l[1],!r&&!l?".":(l&&=l.slice(0,-1),r+l)},vt=r=>r&&r.match(/([^\/]+|\/)\/*$/)[1],fe=()=>{if(c){var r=require("node:crypto");return l=>r.randomFillSync(l)}return l=>crypto.getRandomValues(l)},ue=r=>{(ue=fe())(r)},et=(...r)=>{for(var l="",d=!1,f=r.length-1;-1<=f&&!d;f--){if(d=0<=f?r[f]:"/",typeof d!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!d)return"";l=d+"/"+l,d=d.charAt(0)==="/"}return l=W(l.split("/").filter(k=>!!k),!d).join("/"),(d?"/":"")+l||"."},Ot=r=>{var l=Zt(r,0);return St.decode(r.buffer?r.subarray(0,l):new Uint8Array(r.slice(0,l)))},ln=[],es=r=>{for(var l=0,d=0;d<r.length;++d){var f=r.charCodeAt(d);127>=f?l++:2047>=f?l+=2:55296<=f&&57343>=f?(l+=4,++d):l+=3}return l},tt=(r,l,d,f)=>{if(!(0<f))return 0;var k=d;f=d+f-1;for(var x=0;x<r.length;++x){var E=r.codePointAt(x);if(127>=E){if(d>=f)break;l[d++]=E}else if(2047>=E){if(d+1>=f)break;l[d++]=192|E>>6,l[d++]=128|E&63}else if(65535>=E){if(d+2>=f)break;l[d++]=224|E>>12,l[d++]=128|E>>6&63,l[d++]=128|E&63}else{if(d+3>=f)break;l[d++]=240|E>>18,l[d++]=128|E>>12&63,l[d++]=128|E>>6&63,l[d++]=128|E&63,x++}}return l[d]=0,d-k},Fi=[];function Ni(r,l){Fi[r]={input:[],output:[],eb:l},hn(r,yl)}var yl={open(r){var l=Fi[r.node.rdev];if(!l)throw new R(43);r.tty=l,r.seekable=!1},close(r){r.tty.eb.fsync(r.tty)},fsync(r){r.tty.eb.fsync(r.tty)},read(r,l,d,f){if(!r.tty||!r.tty.eb.Bb)throw new R(60);for(var k=0,x=0;x<f;x++){try{var E=r.tty.eb.Bb(r.tty)}catch{throw new R(29)}if(E===void 0&&k===0)throw new R(6);if(E==null)break;k++,l[d+x]=E}return k&&(r.node.atime=Date.now()),k},write(r,l,d,f){if(!r.tty||!r.tty.eb.ub)throw new R(60);try{for(var k=0;k<f;k++)r.tty.eb.ub(r.tty,l[d+k])}catch{throw new R(29)}return f&&(r.node.mtime=r.node.ctime=Date.now()),k}},_l={Bb(){e:{if(!ln.length){var r=null;if(c){var l=Buffer.alloc(256),d=0,f=process.stdin.fd;try{d=_.readSync(f,l,0,256)}catch(k){if(k.toString().includes("EOF"))d=0;else throw k}0<d&&(r=l.slice(0,d).toString("utf-8"))}else globalThis.window?.prompt&&(r=window.prompt("Input: "),r!==null&&(r+=`
|
|
28
|
+
`));if(!r){r=null;break e}l=Array(es(r)+1),r=tt(r,l,0,l.length),l.length=r,ln=l}r=ln.shift()}return r},ub(r,l){l===null||l===10?(C(Ot(r.output)),r.output=[]):l!=0&&r.output.push(l)},fsync(r){0<r.output?.length&&(C(Ot(r.output)),r.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]}},Cl={ub(r,l){l===null||l===10?(S(Ot(r.output)),r.output=[]):l!=0&&r.output.push(l)},fsync(r){0<r.output?.length&&(S(Ot(r.output)),r.output=[])}},B={Wa:null,Xa(){return B.createNode(null,"/",16895,0)},createNode(r,l,d,f){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:vl}}),d=qi(r,l,d,f),Ie(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(),r&&(r.Na[l]=d,r.atime=r.mtime=r.ctime=d.atime),d},fc(r){return r.Na?r.Na.subarray?r.Na.subarray(0,r.Ra):new Uint8Array(r.Na):new Uint8Array(0)},La:{Ta(r){var l={};return l.dev=(r.mode&61440)===8192?r.id:1,l.ino=r.id,l.mode=r.mode,l.nlink=1,l.uid=0,l.gid=0,l.rdev=r.rdev,Ie(r.mode)?l.size=4096:(r.mode&61440)===32768?l.size=r.Ra:(r.mode&61440)===40960?l.size=r.link.length:l.size=0,l.atime=new Date(r.atime),l.mtime=new Date(r.mtime),l.ctime=new Date(r.ctime),l.blksize=4096,l.blocks=Math.ceil(l.size/l.blksize),l},Ua(r,l){for(var d of["mode","atime","mtime","ctime"])l[d]!=null&&(r[d]=l[d]);l.size!==void 0&&(l=l.size,r.Ra!=l&&(l==0?(r.Na=null,r.Ra=0):(d=r.Na,r.Na=new Uint8Array(l),d&&r.Na.set(d.subarray(0,Math.min(l,r.Ra))),r.Ra=l)))},lookup(){throw B.nb||(B.nb=new R(44),B.nb.stack="<generic error, no stack>"),B.nb},ib(r,l,d,f){return B.createNode(r,l,d,f)},rename(r,l,d){try{var f=Ft(l,d)}catch{}if(f){if(Ie(r.mode))for(var k in f.Na)throw new R(55);pn(f)}delete r.parent.Na[r.name],l.Na[d]=r,r.name=d,l.ctime=l.mtime=r.parent.ctime=r.parent.mtime=Date.now()},unlink(r,l){delete r.Na[l],r.ctime=r.mtime=Date.now()},rmdir(r,l){var d=Ft(r,l),f;for(f in d.Na)throw new R(55);delete r.Na[l],r.ctime=r.mtime=Date.now()},readdir(r){return[".","..",...Object.keys(r.Na)]},symlink(r,l,d){return r=B.createNode(r,l,41471,0),r.link=d,r},readlink(r){if((r.mode&61440)!==40960)throw new R(28);return r.link}},Ma:{read(r,l,d,f,k){var x=r.node.Na;if(k>=r.node.Ra)return 0;if(r=Math.min(r.node.Ra-k,f),8<r&&x.subarray)l.set(x.subarray(k,k+r),d);else for(f=0;f<r;f++)l[d+f]=x[k+f];return r},write(r,l,d,f,k,x){if(l.buffer===A.buffer&&(x=!1),!f)return 0;if(r=r.node,r.mtime=r.ctime=Date.now(),l.subarray&&(!r.Na||r.Na.subarray)){if(x)return r.Na=l.subarray(d,d+f),r.Ra=f;if(r.Ra===0&&k===0)return r.Na=l.slice(d,d+f),r.Ra=f;if(k+f<=r.Ra)return r.Na.set(l.subarray(d,d+f),k),f}x=k+f;var E=r.Na?r.Na.length:0;if(E>=x||(x=Math.max(x,E*(1048576>E?2:1.125)>>>0),E!=0&&(x=Math.max(x,256)),E=r.Na,r.Na=new Uint8Array(x),0<r.Ra&&r.Na.set(E.subarray(0,r.Ra),0)),r.Na.subarray&&l.subarray)r.Na.set(l.subarray(d,d+f),k);else for(x=0;x<f;x++)r.Na[k+x]=l[d+x];return r.Ra=Math.max(r.Ra,k+f),f},Va(r,l,d){if(d===1?l+=r.position:d===2&&(r.node.mode&61440)===32768&&(l+=r.node.Ra),0>l)throw new R(28);return l},jb(r,l,d,f,k){if((r.node.mode&61440)!==32768)throw new R(43);if(r=r.node.Na,k&2||!r||r.buffer!==A.buffer){k=!0,f=65536*Math.ceil(l/65536);var x=nr(65536,f);if(x&&U.fill(0,x,x+f),f=x,!f)throw new R(48);r&&((0<d||d+l<r.length)&&(r.subarray?r=r.subarray(d,d+l):r=Array.prototype.slice.call(r,d,d+l)),A.set(r,f))}else k=!1,f=r.byteOffset;return{Xb:f,Eb:k}},kb(r,l,d,f){return B.Ma.write(r,l,0,f,d,!1),0}}},ji=(r,l)=>{var d=0;return r&&(d|=365),l&&(d|=146),d},cn=null,Li={},ts=[],bl=1,Tt=null,$i=!1,Gi=!0,R=class{name="ErrnoError";constructor(r){this.Pa=r}},kl=class{hb={};node=null;get flags(){return this.hb.flags}set flags(r){this.hb.flags=r}get position(){return this.hb.position}set position(r){this.hb.position=r}},wl=class{La={};Ma={};bb=null;constructor(r,l,d,f){r||=this,this.parent=r,this.Xa=r.Xa,this.id=bl++,this.name=l,this.mode=d,this.rdev=f,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&365)===365}set read(r){r?this.mode|=365:this.mode&=-366}get write(){return(this.mode&146)===146}set write(r){r?this.mode|=146:this.mode&=-147}};function $e(r,l={}){if(!r)throw new R(44);l.pb??(l.pb=!0),r.charAt(0)==="/"||(r="//"+r);var d=0;e:for(;40>d;d++){r=r.split("/").filter(G=>!!G);for(var f=cn,k="/",x=0;x<r.length;x++){var E=x===r.length-1;if(E&&l.parent)break;if(r[x]!==".")if(r[x]==="..")if(k=ct(k),f===f.parent){r=k+"/"+r.slice(x+1).join("/"),d--;continue e}else f=f.parent;else{k=Ze(k+"/"+r[x]);try{f=Ft(f,r[x])}catch(G){if(G?.Pa===44&&E&&l.Wb)return{path:k};throw G}if(!f.bb||E&&!l.pb||(f=f.bb.root),(f.mode&61440)===40960&&(!E||l.ab)){if(!f.La.readlink)throw new R(52);f=f.La.readlink(f),f.charAt(0)==="/"||(f=ct(k)+"/"+f),r=f+"/"+r.slice(x+1).join("/");continue e}}}return{path:k,node:f}}throw new R(32)}function un(r){for(var l;;){if(r===r.parent)return r=r.Xa.Db,l?r[r.length-1]!=="/"?`${r}/${l}`:r+l:r;l=l?`${r.name}/${l}`:r.name,r=r.parent}}function dn(r,l){for(var d=0,f=0;f<l.length;f++)d=(d<<5)-d+l.charCodeAt(f)|0;return(r+d>>>0)%Tt.length}function pn(r){var l=dn(r.parent.id,r.name);if(Tt[l]===r)Tt[l]=r.cb;else for(l=Tt[l];l;){if(l.cb===r){l.cb=r.cb;break}l=l.cb}}function Ft(r,l){var d=Ie(r.mode)?(d=ss(r,"x"))?d:r.La.lookup?0:2:54;if(d)throw new R(d);for(d=Tt[dn(r.id,l)];d;d=d.cb){var f=d.name;if(d.parent.id===r.id&&f===l)return d}return r.La.lookup(r,l)}function qi(r,l,d,f){return r=new wl(r,l,d,f),l=dn(r.parent.id,r.name),r.cb=Tt[l],Tt[l]=r}function Ie(r){return(r&61440)===16384}function ss(r,l){return Gi?0:l.includes("r")&&!(r.mode&292)||l.includes("w")&&!(r.mode&146)||l.includes("x")&&!(r.mode&73)?2:0}function Bi(r,l){if(!Ie(r.mode))return 54;try{return Ft(r,l),20}catch{}return ss(r,"wx")}function zi(r,l,d){try{var f=Ft(r,l)}catch(k){return k.Pa}if(r=ss(r,"wx"))return r;if(d){if(!Ie(f.mode))return 54;if(f===f.parent||un(f)==="/")return 10}else if(Ie(f.mode))return 31;return 0}function Ks(r){if(!r)throw new R(63);return r}function Ae(r){if(r=ts[r],!r)throw new R(8);return r}function Wi(r,l=-1){if(r=Object.assign(new kl,r),l==-1)e:{for(l=0;4096>=l;l++)if(!ts[l])break e;throw new R(33)}return r.fd=l,ts[l]=r}function Sl(r,l=-1){return r=Wi(r,l),r.Ma?.ec?.(r),r}function mn(r,l,d){var f=r?.Ma.Ua;r=f?r:l,f??=l.La.Ua,Ks(f),f(r,d)}var vl={open(r){r.Ma=Li[r.node.rdev].Ma,r.Ma.open?.(r)},Va(){throw new R(70)}};function hn(r,l){Li[r]={Ma:l}}function Hi(r,l){var d=l==="/";if(d&&cn)throw new R(10);if(!d&&l){var f=$e(l,{pb:!1});if(l=f.path,f=f.node,f.bb)throw new R(10);if(!Ie(f.mode))throw new R(54)}l={type:r,kc:{},Db:l,Vb:[]},r=r.Xa(l),r.Xa=l,l.root=r,d?cn=r:f&&(f.bb=l,f.Xa&&f.Xa.Vb.push(l))}function Ys(r,l,d){var f=$e(r,{parent:!0}).node;if(r=vt(r),!r)throw new R(28);if(r==="."||r==="..")throw new R(20);var k=Bi(f,r);if(k)throw new R(k);if(!f.La.ib)throw new R(63);return f.La.ib(f,r,l,d)}function Tl(r,l=438){return Ys(r,l&4095|32768,0)}function st(r,l=511){return Ys(r,l&1023|16384,0)}function Qs(r,l,d){typeof d>"u"&&(d=l,l=438),Ys(r,l|8192,d)}function fn(r,l){if(!et(r))throw new R(44);var d=$e(l,{parent:!0}).node;if(!d)throw new R(44);l=vt(l);var f=Bi(d,l);if(f)throw new R(f);if(!d.La.symlink)throw new R(63);d.La.symlink(d,l,r)}function Vi(r){var l=$e(r,{parent:!0}).node;r=vt(r);var d=Ft(l,r),f=zi(l,r,!0);if(f)throw new R(f);if(!l.La.rmdir)throw new R(63);if(d.bb)throw new R(10);l.La.rmdir(l,r),pn(d)}function Ji(r){var l=$e(r,{parent:!0}).node;if(!l)throw new R(44);r=vt(r);var d=Ft(l,r),f=zi(l,r,!1);if(f)throw new R(f);if(!l.La.unlink)throw new R(63);if(d.bb)throw new R(10);l.La.unlink(l,r),pn(d)}function gs(r,l){return r=$e(r,{ab:!l}).node,Ks(r.La.Ta)(r)}function Ki(r,l,d,f){mn(r,l,{mode:d&4095|l.mode&-4096,ctime:Date.now(),Lb:f})}function Xs(r,l){r=typeof r=="string"?$e(r,{ab:!0}).node:r,Ki(null,r,l)}function Yi(r,l,d){if(Ie(l.mode))throw new R(31);if((l.mode&61440)!==32768)throw new R(28);var f=ss(l,"w");if(f)throw new R(f);mn(r,l,{size:d,timestamp:Date.now()})}function os(r,l,d=438){if(r==="")throw new R(44);if(typeof l=="string"){var f={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[l];if(typeof f>"u")throw Error(`Unknown file open mode: ${l}`);l=f}if(d=l&64?d&4095|32768:0,typeof r=="object")f=r;else{var k=r.endsWith("/"),x=$e(r,{ab:!(l&131072),Wb:!0});f=x.node,r=x.path}if(x=!1,l&64)if(f){if(l&128)throw new R(20)}else{if(k)throw new R(31);f=Ys(r,d|511,0),x=!0}if(!f)throw new R(44);if((f.mode&61440)===8192&&(l&=-513),l&65536&&!Ie(f.mode))throw new R(54);if(!x&&(f?(f.mode&61440)===40960?k=32:(k=["r","w","rw"][l&3],l&512&&(k+="w"),k=Ie(f.mode)&&(k!=="r"||l&576)?31:ss(f,k)):k=44,k))throw new R(k);return l&512&&!x&&(k=f,k=typeof k=="string"?$e(k,{ab:!0}).node:k,Yi(null,k,0)),l=Wi({node:f,path:un(f),flags:l&-131713,seekable:!0,position:0,Ma:f.Ma,Yb:[],error:!1}),l.Ma.open&&l.Ma.open(l),x&&Xs(f,d&511),l}function gn(r){if(r.fd===null)throw new R(8);r.rb&&(r.rb=null);try{r.Ma.close&&r.Ma.close(r)}catch(l){throw l}finally{ts[r.fd]=null}r.fd=null}function Qi(r,l,d){if(r.fd===null)throw new R(8);if(!r.seekable||!r.Ma.Va)throw new R(70);if(d!=0&&d!=1&&d!=2)throw new R(28);r.position=r.Ma.Va(r,l,d),r.Yb=[]}function Xi(r,l,d,f,k){if(0>f||0>k)throw new R(28);if(r.fd===null)throw new R(8);if((r.flags&2097155)===1)throw new R(8);if(Ie(r.node.mode))throw new R(31);if(!r.Ma.read)throw new R(28);var x=typeof k<"u";if(!x)k=r.position;else if(!r.seekable)throw new R(70);return l=r.Ma.read(r,l,d,f,k),x||(r.position+=l),l}function Zi(r,l,d,f,k){if(0>f||0>k)throw new R(28);if(r.fd===null)throw new R(8);if((r.flags&2097155)===0)throw new R(8);if(Ie(r.node.mode))throw new R(31);if(!r.Ma.write)throw new R(28);r.seekable&&r.flags&1024&&Qi(r,0,2);var x=typeof k<"u";if(!x)k=r.position;else if(!r.seekable)throw new R(70);return l=r.Ma.write(r,l,d,f,k,void 0),x||(r.position+=l),l}function Pl(r){var l=l||0,d="binary";d!=="utf8"&&d!=="binary"&&Pe(`Invalid encoding type "${d}"`),l=os(r,l),r=gs(r).size;var f=new Uint8Array(r);return Xi(l,f,0,r,0),d==="utf8"&&(f=Ot(f)),gn(l),f}function Pt(r,l,d){r=Ze("/dev/"+r);var f=ji(!!l,!!d);Pt.Cb??(Pt.Cb=64);var k=Pt.Cb++<<8|0;hn(k,{open(x){x.seekable=!1},close(){d?.buffer?.length&&d(10)},read(x,E,G,Z){for(var z=0,ne=0;ne<Z;ne++){try{var be=l()}catch{throw new R(29)}if(be===void 0&&z===0)throw new R(6);if(be==null)break;z++,E[G+ne]=be}return z&&(x.node.atime=Date.now()),z},write(x,E,G,Z){for(var z=0;z<Z;z++)try{d(E[G+z])}catch{throw new R(29)}return Z&&(x.node.mtime=x.node.ctime=Date.now()),z}}),Qs(r,f,k)}var oe={};function Nt(r,l,d){if(l.charAt(0)==="/")return l;if(r=r===-100?"/":Ae(r).path,l.length==0){if(!d)throw new R(44);return r}return r+"/"+l}function Zs(r,l){q[r>>2]=l.dev,q[r+4>>2]=l.mode,q[r+8>>2]=l.nlink,q[r+12>>2]=l.uid,q[r+16>>2]=l.gid,q[r+20>>2]=l.rdev,te[r+24>>3]=BigInt(l.size),$[r+32>>2]=4096,$[r+36>>2]=l.blocks;var d=l.atime.getTime(),f=l.mtime.getTime(),k=l.ctime.getTime();return te[r+40>>3]=BigInt(Math.floor(d/1e3)),q[r+48>>2]=d%1e3*1e6,te[r+56>>3]=BigInt(Math.floor(f/1e3)),q[r+64>>2]=f%1e3*1e6,te[r+72>>3]=BigInt(Math.floor(k/1e3)),q[r+80>>2]=k%1e3*1e6,te[r+88>>3]=BigInt(l.ino),0}var eo=void 0,to=()=>{var r=$[+eo>>2];return eo+=4,r},yn=0,xl=[0,31,60,91,121,152,182,213,244,274,305,335],Ml=[0,31,59,90,120,151,181,212,243,273,304,334],ys={},er=r=>{v=r,lt||0<yn||(n.onExit?.(r),P=!0),m(r,new K(r))},Al=r=>{if(!P)try{r()}catch(l){l instanceof K||l=="unwind"||m(1,l)}finally{if(!(lt||0<yn))try{v=r=v,er(r)}catch(l){l instanceof K||l=="unwind"||m(1,l)}}},_n={},tr=()=>{if(!Cn){var r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:p||"./this.program"},l;for(l in _n)_n[l]===void 0?delete r[l]:r[l]=_n[l];var d=[];for(l in r)d.push(`${l}=${r[l]}`);Cn=d}return Cn},Cn,Dl=(r,l,d,f)=>{var k={string:z=>{var ne=0;if(z!=null&&z!==0){ne=es(z)+1;var be=Lt(ne);tt(z,U,be,ne),ne=be}return ne},array:z=>{var ne=Lt(z.length);return A.set(z,ne),ne}};r=n["_"+r];var x=[],E=0;if(f)for(var G=0;G<f.length;G++){var Z=k[d[G]];Z?(E===0&&(E=io()),x[G]=Z(f[G])):x[G]=f[G]}return d=r(...x),d=(function(z){return E!==0&&no(E),l==="string"?re(z):l==="boolean"?!!z:z})(d)},so=r=>{var l=es(r)+1,d=oo(l);return d&&tt(r,U,d,l),d},jt,bn=[],xt=r=>{jt.delete(Mt.get(r)),Mt.set(r,null),bn.push(r)},sr=r=>{let l=r.length;return[l%128|128,l>>7,...r]},El={i:127,p:127,j:126,f:125,d:124,e:111},or=r=>sr(Array.from(r,l=>El[l])),_s=(r,l)=>{if(!jt){jt=new WeakMap;var d=Mt.length;if(jt)for(var f=0;f<0+d;f++){var k=Mt.get(f);k&&jt.set(k,f)}}if(d=jt.get(r)||0)return d;d=bn.length?bn.pop():Mt.grow(1);try{Mt.set(d,r)}catch(x){if(!(x instanceof TypeError))throw x;l=Uint8Array.of(0,97,115,109,1,0,0,0,1,...sr([1,96,...or(l.slice(1)),...or(l[0]==="v"?"":l[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),l=new WebAssembly.Module(l),l=new WebAssembly.Instance(l,{e:{f:r}}).exports.f,Mt.set(d,l)}return jt.set(r,d),d};if(Tt=Array(4096),Hi(B,"/"),st("/tmp"),st("/home"),st("/home/web_user"),(function(){st("/dev"),hn(259,{read:()=>0,write:(f,k,x,E)=>E,Va:()=>0}),Qs("/dev/null",259),Ni(1280,_l),Ni(1536,Cl),Qs("/dev/tty",1280),Qs("/dev/tty1",1536);var r=new Uint8Array(1024),l=0,d=()=>(l===0&&(ue(r),l=r.byteLength),r[--l]);Pt("random",d),Pt("urandom",d),st("/dev/shm"),st("/dev/shm/tmp")})(),(function(){st("/proc");var r=st("/proc/self");st("/proc/self/fd"),Hi({Xa(){var l=qi(r,"fd",16895,73);return l.Ma={Va:B.Ma.Va},l.La={lookup(d,f){d=+f;var k=Ae(d);return d={parent:null,Xa:{Db:"fake"},La:{readlink:()=>k.path},id:d+1},d.parent=d},readdir(){return Array.from(ts.entries()).filter(([,d])=>d).map(([d])=>d.toString())}},l}},"/proc/self/fd")})(),n.noExitRuntime&&(lt=n.noExitRuntime),n.print&&(C=n.print),n.printErr&&(S=n.printErr),n.wasmBinary&&(w=n.wasmBinary),n.thisProgram&&(p=n.thisProgram),n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);0<n.preInit.length;)n.preInit.shift()();n.stackSave=()=>io(),n.stackRestore=r=>no(r),n.stackAlloc=r=>Lt(r),n.cwrap=(r,l,d,f)=>{var k=!d||d.every(x=>x==="number"||x==="boolean");return l!=="string"&&k&&!f?n["_"+r]:(...x)=>Dl(r,l,d,x)},n.addFunction=_s,n.removeFunction=xt,n.UTF8ToString=re,n.stringToNewUTF8=so,n.writeArrayToMemory=(r,l)=>{A.set(r,l)};var oo,Cs,nr,ir,no,Lt,io,ro,Mt,Il={a:(r,l,d,f)=>Pe(`Assertion failed: ${re(r)}, at: `+[l?re(l):"unknown filename",d,f?re(f):"unknown function"]),i:function(r,l){try{return r=re(r),Xs(r,l),0}catch(d){if(typeof oe>"u"||d.name!=="ErrnoError")throw d;return-d.Pa}},L:function(r,l,d){try{if(l=re(l),l=Nt(r,l),d&-8)return-28;var f=$e(l,{ab:!0}).node;return f?(r="",d&4&&(r+="r"),d&2&&(r+="w"),d&1&&(r+="x"),r&&ss(f,r)?-2:0):-44}catch(k){if(typeof oe>"u"||k.name!=="ErrnoError")throw k;return-k.Pa}},j:function(r,l){try{var d=Ae(r);return Ki(d,d.node,l,!1),0}catch(f){if(typeof oe>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},h:function(r){try{var l=Ae(r);return mn(l,l.node,{timestamp:Date.now(),Lb:!1}),0}catch(d){if(typeof oe>"u"||d.name!=="ErrnoError")throw d;return-d.Pa}},b:function(r,l,d){eo=d;try{var f=Ae(r);switch(l){case 0:var k=to();if(0>k)break;for(;ts[k];)k++;return Sl(f,k).fd;case 1:case 2:return 0;case 3:return f.flags;case 4:return k=to(),f.flags|=k,0;case 12:return k=to(),O[k+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(x){if(typeof oe>"u"||x.name!=="ErrnoError")throw x;return-x.Pa}},g:function(r,l){try{var d=Ae(r),f=d.node,k=d.Ma.Ta;r=k?d:f,k??=f.La.Ta,Ks(k);var x=k(r);return Zs(l,x)}catch(E){if(typeof oe>"u"||E.name!=="ErrnoError")throw E;return-E.Pa}},H:function(r,l){l=-9007199254740992>l||9007199254740992<l?NaN:Number(l);try{if(isNaN(l))return-61;var d=Ae(r);if(0>l||(d.flags&2097155)===0)throw new R(28);return Yi(d,d.node,l),0}catch(f){if(typeof oe>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},G:function(r,l){try{if(l===0)return-28;var d=es("/")+1;return l<d?-68:(tt("/",U,r,l),d)}catch(f){if(typeof oe>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},K:function(r,l){try{return r=re(r),Zs(l,gs(r,!0))}catch(d){if(typeof oe>"u"||d.name!=="ErrnoError")throw d;return-d.Pa}},C:function(r,l,d){try{return l=re(l),l=Nt(r,l),st(l,d),0}catch(f){if(typeof oe>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},J:function(r,l,d,f){try{l=re(l);var k=f&256;return l=Nt(r,l,f&4096),Zs(d,k?gs(l,!0):gs(l))}catch(x){if(typeof oe>"u"||x.name!=="ErrnoError")throw x;return-x.Pa}},x:function(r,l,d,f){eo=f;try{l=re(l),l=Nt(r,l);var k=f?to():0;return os(l,d,k).fd}catch(x){if(typeof oe>"u"||x.name!=="ErrnoError")throw x;return-x.Pa}},v:function(r,l,d,f){try{if(l=re(l),l=Nt(r,l),0>=f)return-28;var k=$e(l).node;if(!k)throw new R(44);if(!k.La.readlink)throw new R(28);var x=k.La.readlink(k),E=Math.min(f,es(x)),G=A[d+E];return tt(x,U,d,f+1),A[d+E]=G,E}catch(Z){if(typeof oe>"u"||Z.name!=="ErrnoError")throw Z;return-Z.Pa}},u:function(r){try{return r=re(r),Vi(r),0}catch(l){if(typeof oe>"u"||l.name!=="ErrnoError")throw l;return-l.Pa}},f:function(r,l){try{return r=re(r),Zs(l,gs(r))}catch(d){if(typeof oe>"u"||d.name!=="ErrnoError")throw d;return-d.Pa}},r:function(r,l,d){try{if(l=re(l),l=Nt(r,l),d)if(d===512)Vi(l);else return-28;else Ji(l);return 0}catch(f){if(typeof oe>"u"||f.name!=="ErrnoError")throw f;return-f.Pa}},q:function(r,l,d){try{l=re(l),l=Nt(r,l,!0);var f=Date.now(),k,x;if(d){var E=q[d>>2]+4294967296*$[d+4>>2],G=$[d+8>>2];G==1073741823?k=f:G==1073741822?k=null:k=1e3*E+G/1e6,d+=16,E=q[d>>2]+4294967296*$[d+4>>2],G=$[d+8>>2],G==1073741823?x=f:G==1073741822?x=null:x=1e3*E+G/1e6}else x=k=f;if((x??k)!==null){r=k;var Z=$e(l,{ab:!0}).node;Ks(Z.La.Ua)(Z,{atime:r,mtime:x})}return 0}catch(z){if(typeof oe>"u"||z.name!=="ErrnoError")throw z;return-z.Pa}},m:()=>Pe(""),l:()=>{lt=!1,yn=0},A:function(r,l){r=-9007199254740992>r||9007199254740992<r?NaN:Number(r),r=new Date(1e3*r),$[l>>2]=r.getSeconds(),$[l+4>>2]=r.getMinutes(),$[l+8>>2]=r.getHours(),$[l+12>>2]=r.getDate(),$[l+16>>2]=r.getMonth(),$[l+20>>2]=r.getFullYear()-1900,$[l+24>>2]=r.getDay();var d=r.getFullYear();$[l+28>>2]=(d%4!==0||d%100===0&&d%400!==0?Ml:xl)[r.getMonth()]+r.getDate()-1|0,$[l+36>>2]=-(60*r.getTimezoneOffset()),d=new Date(r.getFullYear(),6,1).getTimezoneOffset();var f=new Date(r.getFullYear(),0,1).getTimezoneOffset();$[l+32>>2]=(d!=f&&r.getTimezoneOffset()==Math.min(f,d))|0},y:function(r,l,d,f,k,x,E){k=-9007199254740992>k||9007199254740992<k?NaN:Number(k);try{var G=Ae(f);if((l&2)!==0&&(d&2)===0&&(G.flags&2097155)!==2)throw new R(2);if((G.flags&2097155)===1)throw new R(2);if(!G.Ma.jb)throw new R(43);if(!r)throw new R(28);var Z=G.Ma.jb(G,r,k,l,d),z=Z.Xb;return $[x>>2]=Z.Eb,q[E>>2]=z,0}catch(ne){if(typeof oe>"u"||ne.name!=="ErrnoError")throw ne;return-ne.Pa}},z:function(r,l,d,f,k,x){x=-9007199254740992>x||9007199254740992<x?NaN:Number(x);try{var E=Ae(k);if(d&2){if(d=x,(E.node.mode&61440)!==32768)throw new R(43);if(!(f&2)){var G=U.slice(r,r+l);E.Ma.kb&&E.Ma.kb(E,G,d,l,f)}}}catch(Z){if(typeof oe>"u"||Z.name!=="ErrnoError")throw Z;return-Z.Pa}},n:(r,l)=>{if(ys[r]&&(clearTimeout(ys[r].id),delete ys[r]),!l)return 0;var d=setTimeout(()=>{delete ys[r],Al(()=>ir(r,performance.now()))},l);return ys[r]={id:d,lc:l},0},B:(r,l,d,f)=>{var k=new Date().getFullYear(),x=new Date(k,0,1).getTimezoneOffset();k=new Date(k,6,1).getTimezoneOffset(),q[r>>2]=60*Math.max(x,k),$[l>>2]=+(x!=k),l=E=>{var G=Math.abs(E);return`UTC${0<=E?"-":"+"}${String(Math.floor(G/60)).padStart(2,"0")}${String(G%60).padStart(2,"0")}`},r=l(x),l=l(k),k<x?(tt(r,U,d,17),tt(l,U,f,17)):(tt(r,U,f,17),tt(l,U,d,17))},d:()=>Date.now(),s:()=>2147483648,c:()=>performance.now(),o:r=>{var l=U.length;if(r>>>=0,2147483648<r)return!1;for(var d=1;4>=d;d*=2){var f=l*(1+.2/d);f=Math.min(f,r+100663296);e:{f=(Math.min(2147483648,65536*Math.ceil(Math.max(r,f)/65536))-ro.buffer.byteLength+65535)/65536|0;try{ro.grow(f),Te();var k=1;break e}catch{}k=void 0}if(k)return!0}return!1},E:(r,l)=>{var d=0,f=0,k;for(k of tr()){var x=l+d;q[r+f>>2]=x,d+=tt(k,U,x,1/0)+1,f+=4}return 0},F:(r,l)=>{var d=tr();q[r>>2]=d.length,r=0;for(var f of d)r+=es(f)+1;return q[l>>2]=r,0},e:function(r){try{var l=Ae(r);return gn(l),0}catch(d){if(typeof oe>"u"||d.name!=="ErrnoError")throw d;return d.Pa}},p:function(r,l){try{var d=Ae(r);return A[l]=d.tty?2:Ie(d.mode)?3:(d.mode&61440)===40960?7:4,O[l+2>>1]=0,te[l+8>>3]=BigInt(0),te[l+16>>3]=BigInt(0),0}catch(f){if(typeof oe>"u"||f.name!=="ErrnoError")throw f;return f.Pa}},w:function(r,l,d,f){try{e:{var k=Ae(r);r=l;for(var x,E=l=0;E<d;E++){var G=q[r>>2],Z=q[r+4>>2];r+=8;var z=Xi(k,A,G,Z,x);if(0>z){var ne=-1;break e}if(l+=z,z<Z)break;typeof x<"u"&&(x+=z)}ne=l}return q[f>>2]=ne,0}catch(be){if(typeof oe>"u"||be.name!=="ErrnoError")throw be;return be.Pa}},D:function(r,l,d,f){l=-9007199254740992>l||9007199254740992<l?NaN:Number(l);try{if(isNaN(l))return 61;var k=Ae(r);return Qi(k,l,d),te[f>>3]=BigInt(k.position),k.rb&&l===0&&d===0&&(k.rb=null),0}catch(x){if(typeof oe>"u"||x.name!=="ErrnoError")throw x;return x.Pa}},I:function(r){try{var l=Ae(r);return l.Ma?.fsync?.(l)}catch(d){if(typeof oe>"u"||d.name!=="ErrnoError")throw d;return d.Pa}},t:function(r,l,d,f){try{e:{var k=Ae(r);r=l;for(var x,E=l=0;E<d;E++){var G=q[r>>2],Z=q[r+4>>2];r+=8;var z=Zi(k,A,G,Z,x);if(0>z){var ne=-1;break e}if(l+=z,z<Z)break;typeof x<"u"&&(x+=z)}ne=l}return q[f>>2]=ne,0}catch(be){if(typeof oe>"u"||be.name!=="ErrnoError")throw be;return be.Pa}},k:er};function kn(){function r(){if(n.calledRun=!0,!P){if(!n.noFSInit&&!$i){var l,d;$i=!0,l??=n.stdin,d??=n.stdout,f??=n.stderr,l?Pt("stdin",l):fn("/dev/tty","/dev/stdin"),d?Pt("stdout",null,d):fn("/dev/tty","/dev/stdout"),f?Pt("stderr",null,f):fn("/dev/tty1","/dev/stderr"),os("/dev/stdin",0),os("/dev/stdout",1),os("/dev/stderr",1)}if(wn.N(),Gi=!1,n.onRuntimeInitialized?.(),n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;){var f=n.postRun.shift();me.push(f)}X(me)}}if(0<Me)Le=kn;else{if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Xe();X(at),0<Me?Le=kn:n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),r()},1)):r()}}var wn;return(async function(){function r(d){return d=wn=d.exports,n._sqlite3_free=d.P,n._sqlite3_value_text=d.Q,n._sqlite3_prepare_v2=d.R,n._sqlite3_step=d.S,n._sqlite3_reset=d.T,n._sqlite3_exec=d.U,n._sqlite3_finalize=d.V,n._sqlite3_column_name=d.W,n._sqlite3_column_text=d.X,n._sqlite3_column_type=d.Y,n._sqlite3_errmsg=d.Z,n._sqlite3_clear_bindings=d._,n._sqlite3_value_blob=d.$,n._sqlite3_value_bytes=d.aa,n._sqlite3_value_double=d.ba,n._sqlite3_value_int=d.ca,n._sqlite3_value_type=d.da,n._sqlite3_result_blob=d.ea,n._sqlite3_result_double=d.fa,n._sqlite3_result_error=d.ga,n._sqlite3_result_int=d.ha,n._sqlite3_result_int64=d.ia,n._sqlite3_result_null=d.ja,n._sqlite3_result_text=d.ka,n._sqlite3_aggregate_context=d.la,n._sqlite3_column_count=d.ma,n._sqlite3_data_count=d.na,n._sqlite3_column_blob=d.oa,n._sqlite3_column_bytes=d.pa,n._sqlite3_column_double=d.qa,n._sqlite3_bind_blob=d.ra,n._sqlite3_bind_double=d.sa,n._sqlite3_bind_int=d.ta,n._sqlite3_bind_text=d.ua,n._sqlite3_bind_parameter_index=d.va,n._sqlite3_sql=d.wa,n._sqlite3_normalized_sql=d.xa,n._sqlite3_changes=d.ya,n._sqlite3_close_v2=d.za,n._sqlite3_create_function_v2=d.Aa,n._sqlite3_update_hook=d.Ba,n._sqlite3_open=d.Ca,oo=n._malloc=d.Da,Cs=n._free=d.Ea,n._RegisterExtensionFunctions=d.Fa,nr=d.Ga,ir=d.Ha,no=d.Ia,Lt=d.Ja,io=d.Ka,ro=d.M,Mt=d.O,Te(),Me--,n.monitorRunDependencies?.(Me),Me==0&&Le&&(d=Le,Le=null,d()),wn}Me++,n.monitorRunDependencies?.(Me);var l={a:Il};return n.instantiateWasm?new Promise(d=>{n.instantiateWasm(l,(f,k)=>{d(r(f,k))})}):(xe??=n.locateFile?n.locateFile("sql-wasm.wasm",g):g+"sql-wasm.wasm",r((await he(l)).instance))})(),kn(),s}),yo)};typeof Co=="object"&&typeof Gt=="object"?(Gt.exports=_o,Gt.exports.default=_o):typeof define=="function"&&define.amd?define([],function(){return _o}):typeof Co=="object"&&(Co.Module=_o)});var vo=ie(dt=>{"use strict";Object.defineProperty(dt,"__esModule",{value:!0});dt.utf8Count=qc;dt.utf8EncodeJs=Vr;dt.utf8EncodeTE=Jr;dt.utf8Encode=Wc;dt.utf8DecodeJs=Kr;dt.utf8DecodeTD=Yr;dt.utf8Decode=Kc;function qc(i){let e=i.length,t=0,s=0;for(;s<e;){let o=i.charCodeAt(s++);if((o&4294967168)===0){t++;continue}else if((o&4294965248)===0)t+=2;else{if(o>=55296&&o<=56319&&s<e){let n=i.charCodeAt(s);(n&64512)===56320&&(++s,o=((o&1023)<<10)+(n&1023)+65536)}(o&4294901760)===0?t+=3:t+=4}}return t}function Vr(i,e,t){let s=i.length,o=t,n=0;for(;n<s;){let a=i.charCodeAt(n++);if((a&4294967168)===0){e[o++]=a;continue}else if((a&4294965248)===0)e[o++]=a>>6&31|192;else{if(a>=55296&&a<=56319&&n<s){let u=i.charCodeAt(n);(u&64512)===56320&&(++n,a=((a&1023)<<10)+(u&1023)+65536)}(a&4294901760)===0?(e[o++]=a>>12&15|224,e[o++]=a>>6&63|128):(e[o++]=a>>18&7|240,e[o++]=a>>12&63|128,e[o++]=a>>6&63|128)}e[o++]=a&63|128}}var Bc=new TextEncoder,zc=50;function Jr(i,e,t){Bc.encodeInto(i,e.subarray(t))}function Wc(i,e,t){i.length>zc?Jr(i,e,t):Vr(i,e,t)}var Hc=4096;function Kr(i,e,t){let s=e,o=s+t,n=[],a="";for(;s<o;){let u=i[s++];if((u&128)===0)n.push(u);else if((u&224)===192){let c=i[s++]&63;n.push((u&31)<<6|c)}else if((u&240)===224){let c=i[s++]&63,p=i[s++]&63;n.push((u&31)<<12|c<<6|p)}else if((u&248)===240){let c=i[s++]&63,p=i[s++]&63,m=i[s++]&63,h=(u&7)<<18|c<<12|p<<6|m;h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|h&1023),n.push(h)}else n.push(u);n.length>=Hc&&(a+=String.fromCharCode(...n),n.length=0)}return n.length>0&&(a+=String.fromCharCode(...n)),a}var Vc=new TextDecoder,Jc=200;function Yr(i,e,t){let s=i.subarray(e,e+t);return Vc.decode(s)}function Kc(i,e,t){return t>Jc?Yr(i,e,t):Kr(i,e,t)}});var Kn=ie(To=>{"use strict";Object.defineProperty(To,"__esModule",{value:!0});To.ExtData=void 0;var Jn=class{type;data;constructor(e,t){this.type=e,this.data=t}};To.ExtData=Jn});var xo=ie(Po=>{"use strict";Object.defineProperty(Po,"__esModule",{value:!0});Po.DecodeError=void 0;var Yn=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})}};Po.DecodeError=Yn});var Mo=ie(At=>{"use strict";Object.defineProperty(At,"__esModule",{value:!0});At.UINT32_MAX=void 0;At.setUint64=Yc;At.setInt64=Qc;At.getInt64=Xc;At.getUint64=Zc;At.UINT32_MAX=4294967295;function Yc(i,e,t){let s=t/4294967296,o=t;i.setUint32(e,s),i.setUint32(e+4,o)}function Qc(i,e,t){let s=Math.floor(t/4294967296),o=t;i.setUint32(e,s),i.setUint32(e+4,o)}function Xc(i,e){let t=i.getInt32(e),s=i.getUint32(e+4);return t*4294967296+s}function Zc(i,e){let t=i.getUint32(e),s=i.getUint32(e+4);return t*4294967296+s}});var Qn=ie(ze=>{"use strict";Object.defineProperty(ze,"__esModule",{value:!0});ze.timestampExtension=ze.EXT_TIMESTAMP=void 0;ze.encodeTimeSpecToTimestamp=Xr;ze.encodeDateToTimeSpec=Zr;ze.encodeTimestampExtension=ea;ze.decodeTimestampToTimeSpec=ta;ze.decodeTimestampExtension=sa;var eu=xo(),Qr=Mo();ze.EXT_TIMESTAMP=-1;var tu=4294967296-1,su=17179869184-1;function Xr({sec:i,nsec:e}){if(i>=0&&e>=0&&i<=su)if(e===0&&i<=tu){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,i),t}else{let t=i/4294967296,s=i&4294967295,o=new Uint8Array(8),n=new DataView(o.buffer);return n.setUint32(0,e<<2|t&3),n.setUint32(4,s),o}else{let t=new Uint8Array(12),s=new DataView(t.buffer);return s.setUint32(0,e),(0,Qr.setInt64)(s,4,i),t}}function Zr(i){let e=i.getTime(),t=Math.floor(e/1e3),s=(e-t*1e3)*1e6,o=Math.floor(s/1e9);return{sec:t+o,nsec:s-o*1e9}}function ea(i){if(i instanceof Date){let e=Zr(i);return Xr(e)}else return null}function ta(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),o=(t&3)*4294967296+s,n=t>>>2;return{sec:o,nsec:n}}case 12:{let t=(0,Qr.getInt64)(e,4),s=e.getUint32(0);return{sec:t,nsec:s}}default:throw new eu.DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${i.length}`)}}function sa(i){let e=ta(i);return new Date(e.sec*1e3+e.nsec/1e6)}ze.timestampExtension={type:ze.EXT_TIMESTAMP,encode:ea,decode:sa}});var Eo=ie(Do=>{"use strict";Object.defineProperty(Do,"__esModule",{value:!0});Do.ExtensionCodec=void 0;var Ao=Kn(),ou=Qn(),Xn=class i{static defaultCodec=new i;__brand;builtInEncoders=[];builtInDecoders=[];encoders=[];decoders=[];constructor(){this.register(ou.timestampExtension)}register({type:e,encode:t,decode:s}){if(e>=0)this.encoders[e]=t,this.decoders[e]=s;else{let o=-1-e;this.builtInEncoders[o]=t,this.builtInDecoders[o]=s}}tryToEncode(e,t){for(let s=0;s<this.builtInEncoders.length;s++){let o=this.builtInEncoders[s];if(o!=null){let n=o(e,t);if(n!=null){let a=-1-s;return new Ao.ExtData(a,n)}}}for(let s=0;s<this.encoders.length;s++){let o=this.encoders[s];if(o!=null){let n=o(e,t);if(n!=null){let a=s;return new Ao.ExtData(a,n)}}}return e instanceof Ao.ExtData?e:null}decode(e,t,s){let o=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return o?o(e,t,s):new Ao.ExtData(t,e)}};Do.ExtensionCodec=Xn});var ei=ie(Zn=>{"use strict";Object.defineProperty(Zn,"__esModule",{value:!0});Zn.ensureUint8Array=iu;function nu(i){return i instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&i instanceof SharedArrayBuffer}function iu(i){return i instanceof Uint8Array?i:ArrayBuffer.isView(i)?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):nu(i)?new Uint8Array(i):Uint8Array.from(i)}});var si=ie(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.Encoder=ot.DEFAULT_INITIAL_BUFFER_SIZE=ot.DEFAULT_MAX_DEPTH=void 0;var oa=vo(),ru=Eo(),na=Mo(),au=ei();ot.DEFAULT_MAX_DEPTH=100;ot.DEFAULT_INITIAL_BUFFER_SIZE=2048;var ti=class i{extensionCodec;context;useBigInt64;maxDepth;initialBufferSize;sortKeys;forceFloat32;ignoreUndefined;forceIntegerToFloat;pos;view;bytes;entered=!1;constructor(e){this.extensionCodec=e?.extensionCodec??ru.ExtensionCodec.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.maxDepth=e?.maxDepth??ot.DEFAULT_MAX_DEPTH,this.initialBufferSize=e?.initialBufferSize??ot.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),o=new DataView(t);s.set(this.bytes),this.view=o,this.bytes=s}encodeNil(){this.writeU8(192)}encodeBoolean(e){e===!1?this.writeU8(194):this.writeU8(195)}encodeNumber(e){!this.forceIntegerToFloat&&Number.isSafeInteger(e)?e>=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):this.useBigInt64?this.encodeNumberAsFloat(e):(this.writeU8(211),this.writeI64(e)):this.encodeNumberAsFloat(e)}encodeNumberAsFloat(e){this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))}encodeBigInt64(e){e>=BigInt(0)?(this.writeU8(207),this.writeBigUint64(e)):(this.writeU8(211),this.writeBigInt64(e))}writeStringHeader(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else if(e<4294967296)this.writeU8(219),this.writeU32(e);else throw new Error(`Too long string: ${e} bytes in UTF-8`)}encodeString(e){let s=(0,oa.utf8Count)(e);this.ensureBufferSizeToWrite(5+s),this.writeStringHeader(s),(0,oa.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,au.ensureUint8Array)(e);this.writeU8a(s)}encodeArray(e,t){let s=e.length;if(s<16)this.writeU8(144+s);else if(s<65536)this.writeU8(220),this.writeU16(s);else if(s<4294967296)this.writeU8(221),this.writeU32(s);else throw new Error(`Too large array: ${s}`);for(let o of e)this.doEncode(o,t+1)}countWithoutUndefined(e,t){let s=0;for(let o of t)e[o]!==void 0&&s++;return s}encodeMap(e,t){let s=Object.keys(e);this.sortKeys&&s.sort();let o=this.ignoreUndefined?this.countWithoutUndefined(e,s):s.length;if(o<16)this.writeU8(128+o);else if(o<65536)this.writeU8(222),this.writeU16(o);else if(o<4294967296)this.writeU8(223),this.writeU32(o);else throw new Error(`Too large map object: ${o}`);for(let n of s){let a=e[n];this.ignoreUndefined&&a===void 0||(this.encodeString(n),this.doEncode(a,t+1))}}encodeExtension(e){if(typeof e.data=="function"){let s=e.data(this.pos+6),o=s.length;if(o>=4294967296)throw new Error(`Too large extension object: ${o}`);this.writeU8(201),this.writeU32(o),this.writeI8(e.type),this.writeU8a(s);return}let t=e.data.length;if(t===1)this.writeU8(212);else if(t===2)this.writeU8(213);else if(t===4)this.writeU8(214);else if(t===8)this.writeU8(215);else if(t===16)this.writeU8(216);else if(t<256)this.writeU8(199),this.writeU8(t);else if(t<65536)this.writeU8(200),this.writeU16(t);else if(t<4294967296)this.writeU8(201),this.writeU32(t);else throw new Error(`Too large extension object: ${t}`);this.writeI8(e.type),this.writeU8a(e.data)}writeU8(e){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,e),this.pos++}writeU8a(e){let t=e.length;this.ensureBufferSizeToWrite(t),this.bytes.set(e,this.pos),this.pos+=t}writeI8(e){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,e),this.pos++}writeU16(e){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,e),this.pos+=2}writeI16(e){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,e),this.pos+=2}writeU32(e){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,e),this.pos+=4}writeI32(e){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,e),this.pos+=4}writeF32(e){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,e),this.pos+=4}writeF64(e){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,e),this.pos+=8}writeU64(e){this.ensureBufferSizeToWrite(8),(0,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}};ot.Encoder=ti});var ia=ie(oi=>{"use strict";Object.defineProperty(oi,"__esModule",{value:!0});oi.encode=cu;var lu=si();function cu(i,e){return new lu.Encoder(e).encodeSharedRef(i)}});var ra=ie(ni=>{"use strict";Object.defineProperty(ni,"__esModule",{value:!0});ni.prettyByte=uu;function uu(i){return`${i<0?"-":""}0x${Math.abs(i).toString(16).padStart(2,"0")}`}});var aa=ie(Io=>{"use strict";Object.defineProperty(Io,"__esModule",{value:!0});Io.CachedKeyDecoder=void 0;var du=vo(),pu=16,mu=16,ii=class{hit=0;miss=0;caches;maxKeyLength;maxLengthPerKey;constructor(e=pu,t=mu){this.maxKeyLength=e,this.maxLengthPerKey=t,this.caches=[];for(let s=0;s<this.maxKeyLength;s++)this.caches.push([])}canBeCached(e){return e>0&&e<=this.maxKeyLength}find(e,t,s){let o=this.caches[s-1];e:for(let n of o){let a=n.bytes;for(let u=0;u<s;u++)if(a[u]!==e[t+u])continue e;return n.str}return null}store(e,t){let s=this.caches[e.length-1],o={bytes:e,str:t};s.length>=this.maxLengthPerKey?s[Math.random()*s.length|0]=o:s.push(o)}decode(e,t,s){let o=this.find(e,t,s);if(o!=null)return this.hit++,o;this.miss++;let n=(0,du.utf8DecodeJs)(e,t,s),a=Uint8Array.prototype.slice.call(e,t,t+s);return this.store(a,n),n}};Io.CachedKeyDecoder=ii});var Ro=ie(Uo=>{"use strict";Object.defineProperty(Uo,"__esModule",{value:!0});Uo.Decoder=void 0;var ri=ra(),hu=Eo(),Wt=Mo(),fu=vo(),la=ei(),gu=aa(),pt=xo(),ai="array",Ps="map_key",ua="map_value",yu=i=>{if(typeof i=="string"||typeof i=="number")return i;throw new pt.DecodeError("The type of key must be string or number but "+typeof i)},li=class{stack=[];stackHeadPosition=-1;get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(e){let t=this.getUninitializedStateFromPool();t.type=ai,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===ai){let s=e;s.size=0,s.array=void 0,s.position=0,s.type=void 0}if(e.type===Ps||e.type===ua){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,ui=new DataView(new ArrayBuffer(0)),_u=new Uint8Array(ui.buffer);try{ui.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 ca=new RangeError("Insufficient data"),Cu=new gu.CachedKeyDecoder,ci=class i{extensionCodec;context;useBigInt64;rawStrings;maxStrLength;maxBinLength;maxArrayLength;maxMapLength;maxExtLength;keyDecoder;mapKeyConverter;totalPos=0;pos=0;view=ui;bytes=_u;headByte=Ts;stack=new li;entered=!1;constructor(e){this.extensionCodec=e?.extensionCodec??hu.ExtensionCodec.defaultCodec,this.context=e?.context,this.useBigInt64=e?.useBigInt64??!1,this.rawStrings=e?.rawStrings??!1,this.maxStrLength=e?.maxStrLength??Wt.UINT32_MAX,this.maxBinLength=e?.maxBinLength??Wt.UINT32_MAX,this.maxArrayLength=e?.maxArrayLength??Wt.UINT32_MAX,this.maxMapLength=e?.maxMapLength??Wt.UINT32_MAX,this.maxExtLength=e?.maxExtLength??Wt.UINT32_MAX,this.keyDecoder=e?.keyDecoder!==void 0?e.keyDecoder:Cu,this.mapKeyConverter=e?.mapKeyConverter??yu}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=Ts,this.stack.reset()}setBuffer(e){let t=(0,la.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,la.ensureUint8Array)(e),o=new Uint8Array(t.length+s.length);o.set(t),o.set(s,t.length),this.setBuffer(o)}}hasRemaining(e){return this.view.byteLength-this.pos>=e}createExtraByteError(e){let{view:t,pos:s}=this;return new RangeError(`Extra ${t.byteLength-s} of ${t.byteLength} byte(s) found at buffer[${e}]`)}decode(e){if(this.entered)return this.clone().decode(e);try{this.entered=!0,this.reinitializeState(),this.setBuffer(e);let t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t}finally{this.entered=!1}}*decodeMulti(e){if(this.entered){yield*this.clone().decodeMulti(e);return}try{for(this.entered=!0,this.reinitializeState(),this.setBuffer(e);this.hasRemaining(1);)yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync(e){if(this.entered)return this.clone().decodeAsync(e);try{this.entered=!0;let t=!1,s;for await(let u of e){if(t)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(u);try{s=this.doDecodeSync(),t=!0}catch(c){if(!(c instanceof RangeError))throw c}this.totalPos+=this.pos}if(t){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return s}let{headByte:o,pos:n,totalPos:a}=this;throw new RangeError(`Insufficient data in parsing ${(0,ri.prettyByte)(o)} at ${a} (${n} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream(e){return this.decodeMultiAsync(e,!0)}decodeStream(e){return this.decodeMultiAsync(e,!1)}async*decodeMultiAsync(e,t){if(this.entered){yield*this.clone().decodeMultiAsync(e,t);return}try{this.entered=!0;let s=t,o=-1;for await(let n of e){if(t&&o===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(n),s&&(o=this.readArraySize(),s=!1,this.complete());try{for(;yield this.doDecodeSync(),--o!==0;);}catch(a){if(!(a instanceof RangeError))throw a}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){e:for(;;){let e=this.readHeadByte(),t;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){let o=e-128;if(o!==0){this.pushMapState(o),this.complete();continue e}else t={}}else if(e<160){let o=e-144;if(o!==0){this.pushArrayState(o),this.complete();continue e}else t=[]}else{let o=e-160;t=this.decodeString(o,0)}else if(e===192)t=null;else if(e===194)t=!1;else if(e===195)t=!0;else if(e===202)t=this.readF32();else if(e===203)t=this.readF64();else if(e===204)t=this.readU8();else if(e===205)t=this.readU16();else if(e===206)t=this.readU32();else if(e===207)this.useBigInt64?t=this.readU64AsBigInt():t=this.readU64();else if(e===208)t=this.readI8();else if(e===209)t=this.readI16();else if(e===210)t=this.readI32();else if(e===211)this.useBigInt64?t=this.readI64AsBigInt():t=this.readI64();else if(e===217){let o=this.lookU8();t=this.decodeString(o,1)}else if(e===218){let o=this.lookU16();t=this.decodeString(o,2)}else if(e===219){let o=this.lookU32();t=this.decodeString(o,4)}else if(e===220){let o=this.readU16();if(o!==0){this.pushArrayState(o),this.complete();continue e}else t=[]}else if(e===221){let o=this.readU32();if(o!==0){this.pushArrayState(o),this.complete();continue e}else t=[]}else if(e===222){let o=this.readU16();if(o!==0){this.pushMapState(o),this.complete();continue e}else t={}}else if(e===223){let o=this.readU32();if(o!==0){this.pushMapState(o),this.complete();continue e}else t={}}else if(e===196){let o=this.lookU8();t=this.decodeBinary(o,1)}else if(e===197){let o=this.lookU16();t=this.decodeBinary(o,2)}else if(e===198){let o=this.lookU32();t=this.decodeBinary(o,4)}else if(e===212)t=this.decodeExtension(1,0);else if(e===213)t=this.decodeExtension(2,0);else if(e===214)t=this.decodeExtension(4,0);else if(e===215)t=this.decodeExtension(8,0);else if(e===216)t=this.decodeExtension(16,0);else if(e===199){let o=this.lookU8();t=this.decodeExtension(o,1)}else if(e===200){let o=this.lookU16();t=this.decodeExtension(o,2)}else if(e===201){let o=this.lookU32();t=this.decodeExtension(o,4)}else throw new pt.DecodeError(`Unrecognized type byte: ${(0,ri.prettyByte)(e)}`);this.complete();let s=this.stack;for(;s.length>0;){let o=s.top();if(o.type===ai)if(o.array[o.position]=t,o.position++,o.position===o.size)t=o.array,s.release(o);else continue e;else if(o.type===Ps){if(t==="__proto__")throw new pt.DecodeError("The key __proto__ is not allowed");o.key=this.mapKeyConverter(t),o.type=ua;continue e}else if(o.map[o.key]=t,o.readCount++,o.readCount===o.size)t=o.map,s.release(o);else{o.key=null,o.type=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 pt.DecodeError(`Unrecognized array type byte: ${(0,ri.prettyByte)(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new pt.DecodeError(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(e)}pushArrayState(e){if(e>this.maxArrayLength)throw new pt.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 pt.DecodeError(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw ca;let s=this.pos+t,o;return this.stateIsMapKey()&&this.keyDecoder?.canBeCached(e)?o=this.keyDecoder.decode(this.bytes,s,e):o=(0,fu.utf8Decode)(this.bytes,s,e),this.pos+=t+e,o}stateIsMapKey(){return this.stack.length>0?this.stack.top().type===Ps:!1}decodeBinary(e,t){if(e>this.maxBinLength)throw new pt.DecodeError(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw ca;let s=this.pos+t,o=this.bytes.subarray(s,s+e);return this.pos+=t+e,o}decodeExtension(e,t){if(e>this.maxExtLength)throw new pt.DecodeError(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);let s=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,s,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let e=this.view.getUint8(this.pos);return this.pos++,e}readI8(){let e=this.view.getInt8(this.pos);return this.pos++,e}readU16(){let e=this.view.getUint16(this.pos);return this.pos+=2,e}readI16(){let e=this.view.getInt16(this.pos);return this.pos+=2,e}readU32(){let e=this.view.getUint32(this.pos);return this.pos+=4,e}readI32(){let e=this.view.getInt32(this.pos);return this.pos+=4,e}readU64(){let e=(0,Wt.getUint64)(this.view,this.pos);return this.pos+=8,e}readI64(){let e=(0,Wt.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}};Uo.Decoder=ci});var pa=ie(Oo=>{"use strict";Object.defineProperty(Oo,"__esModule",{value:!0});Oo.decode=bu;Oo.decodeMulti=ku;var da=Ro();function bu(i,e){return new da.Decoder(e).decode(i)}function ku(i,e){return new da.Decoder(e).decodeMulti(i)}});var fa=ie(xs=>{"use strict";Object.defineProperty(xs,"__esModule",{value:!0});xs.isAsyncIterable=ma;xs.asyncIterableFromStream=ha;xs.ensureAsyncIterable=wu;function ma(i){return i[Symbol.asyncIterator]!=null}async function*ha(i){let e=i.getReader();try{for(;;){let{done:t,value:s}=await e.read();if(t)return;yield s}}finally{e.releaseLock()}}function wu(i){return ma(i)?i:ha(i)}});var ga=ie(Ms=>{"use strict";Object.defineProperty(Ms,"__esModule",{value:!0});Ms.decodeAsync=Su;Ms.decodeArrayStream=vu;Ms.decodeMultiStream=Tu;var di=Ro(),pi=fa();async function Su(i,e){let t=(0,pi.ensureAsyncIterable)(i);return new di.Decoder(e).decodeAsync(t)}function vu(i,e){let t=(0,pi.ensureAsyncIterable)(i);return new di.Decoder(e).decodeArrayStream(t)}function Tu(i,e){let t=(0,pi.ensureAsyncIterable)(i);return new di.Decoder(e).decodeStream(t)}});var _a=ie(V=>{"use strict";Object.defineProperty(V,"__esModule",{value:!0});V.decodeTimestampExtension=V.encodeTimestampExtension=V.decodeTimestampToTimeSpec=V.encodeTimeSpecToTimestamp=V.encodeDateToTimeSpec=V.EXT_TIMESTAMP=V.ExtData=V.ExtensionCodec=V.Encoder=V.DecodeError=V.Decoder=V.decodeMultiStream=V.decodeArrayStream=V.decodeAsync=V.decodeMulti=V.decode=V.encode=void 0;var Pu=ia();Object.defineProperty(V,"encode",{enumerable:!0,get:function(){return Pu.encode}});var ya=pa();Object.defineProperty(V,"decode",{enumerable:!0,get:function(){return ya.decode}});Object.defineProperty(V,"decodeMulti",{enumerable:!0,get:function(){return ya.decodeMulti}});var mi=ga();Object.defineProperty(V,"decodeAsync",{enumerable:!0,get:function(){return mi.decodeAsync}});Object.defineProperty(V,"decodeArrayStream",{enumerable:!0,get:function(){return mi.decodeArrayStream}});Object.defineProperty(V,"decodeMultiStream",{enumerable:!0,get:function(){return mi.decodeMultiStream}});var xu=Ro();Object.defineProperty(V,"Decoder",{enumerable:!0,get:function(){return xu.Decoder}});var Mu=xo();Object.defineProperty(V,"DecodeError",{enumerable:!0,get:function(){return Mu.DecodeError}});var Au=si();Object.defineProperty(V,"Encoder",{enumerable:!0,get:function(){return Au.Encoder}});var Du=Eo();Object.defineProperty(V,"ExtensionCodec",{enumerable:!0,get:function(){return Du.ExtensionCodec}});var Eu=Kn();Object.defineProperty(V,"ExtData",{enumerable:!0,get:function(){return Eu.ExtData}});var as=Qn();Object.defineProperty(V,"EXT_TIMESTAMP",{enumerable:!0,get:function(){return as.EXT_TIMESTAMP}});Object.defineProperty(V,"encodeDateToTimeSpec",{enumerable:!0,get:function(){return as.encodeDateToTimeSpec}});Object.defineProperty(V,"encodeTimeSpecToTimestamp",{enumerable:!0,get:function(){return as.encodeTimeSpecToTimestamp}});Object.defineProperty(V,"decodeTimestampToTimeSpec",{enumerable:!0,get:function(){return as.decodeTimestampToTimeSpec}});Object.defineProperty(V,"encodeTimestampExtension",{enumerable:!0,get:function(){return as.encodeTimestampExtension}});Object.defineProperty(V,"decodeTimestampExtension",{enumerable:!0,get:function(){return as.decodeTimestampExtension}})});var gl=ie((nf,xd)=>{xd.exports={name:"@rajbos/ai-engineering-fluency",version:"0.1.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 Mr=N(xr(),1),{program:Nd,createCommand:jd,createArgument:Ld,createOption:$d,CommanderError:Gd,InvalidArgumentError:qd,InvalidOptionArgumentError:Bd,Command:ge,Argument:zd,Option:Wd,Help:Hd}=Mr.default;var Ar=(i=0)=>e=>`\x1B[${e+i}m`,Dr=(i=0)=>e=>`\x1B[${38+i};5;${e}m`,Er=(i=0)=>(e,t,s)=>`\x1B[${38+i};2;${e};${t};${s}m`,ae={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]}},Jd=Object.keys(ae.modifier),xc=Object.keys(ae.color),Mc=Object.keys(ae.bgColor),Kd=[...xc,...Mc];function Ac(){let i=new Map;for(let[e,t]of Object.entries(ae)){for(let[s,o]of Object.entries(t))ae[s]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},t[s]=ae[s],i.set(o[0],o[1]);Object.defineProperty(ae,e,{value:t,enumerable:!1})}return Object.defineProperty(ae,"codes",{value:i,enumerable:!1}),ae.color.close="\x1B[39m",ae.bgColor.close="\x1B[49m",ae.color.ansi=Ar(),ae.color.ansi256=Dr(),ae.color.ansi16m=Er(),ae.bgColor.ansi=Ar(10),ae.bgColor.ansi256=Dr(10),ae.bgColor.ansi16m=Er(10),Object.defineProperties(ae,{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(n=>n+n).join(""));let o=Number.parseInt(s,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:e=>ae.rgbToAnsi256(...ae.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,s,o;if(e>=232)t=((e-232)*10+8)/255,s=t,o=t;else{e-=16;let u=e%36;t=Math.floor(e/36)/5,s=Math.floor(u/6)/5,o=u%6/5}let n=Math.max(t,s,o)*2;if(n===0)return 30;let a=30+(Math.round(o)<<2|Math.round(s)<<1|Math.round(t));return n===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,t,s)=>ae.ansi256ToAnsi(ae.rgbToAnsi256(e,t,s)),enumerable:!1},hexToAnsi:{value:e=>ae.ansi256ToAnsi(ae.hexToAnsi256(e)),enumerable:!1}}),ae}var Dc=Ac(),Ye=Dc;var mo=N(require("node:process"),1),Ur=N(require("node:os"),1),Gn=N(require("node:tty"),1);function Be(i,e=globalThis.Deno?globalThis.Deno.args:mo.default.argv){let t=i.startsWith("-")?"":i.length===1?"-":"--",s=e.indexOf(t+i),o=e.indexOf("--");return s!==-1&&(o===-1||s<o)}var{env:le}=mo.default,po;Be("no-color")||Be("no-colors")||Be("color=false")||Be("color=never")?po=0:(Be("color")||Be("colors")||Be("color=true")||Be("color=always"))&&(po=1);function Ec(){if("FORCE_COLOR"in le)return le.FORCE_COLOR==="true"?1:le.FORCE_COLOR==="false"?0:le.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(le.FORCE_COLOR,10),3)}function Ic(i){return i===0?!1:{level:i,hasBasic:!0,has256:i>=2,has16m:i>=3}}function Uc(i,{streamIsTTY:e,sniffFlags:t=!0}={}){let s=Ec();s!==void 0&&(po=s);let o=t?po:s;if(o===0)return 0;if(t){if(Be("color=16m")||Be("color=full")||Be("color=truecolor"))return 3;if(Be("color=256"))return 2}if("TF_BUILD"in le&&"AGENT_NAME"in le)return 1;if(i&&!e&&o===void 0)return 0;let n=o||0;if(le.TERM==="dumb")return n;if(mo.default.platform==="win32"){let a=Ur.default.release().split(".");return Number(a[0])>=10&&Number(a[2])>=10586?Number(a[2])>=14931?3:2:1}if("CI"in le)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(a=>a in le)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(a=>a in le)||le.CI_NAME==="codeship"?1:n;if("TEAMCITY_VERSION"in le)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(le.TEAMCITY_VERSION)?1:0;if(le.COLORTERM==="truecolor"||le.TERM==="xterm-kitty"||le.TERM==="xterm-ghostty"||le.TERM==="wezterm")return 3;if("TERM_PROGRAM"in le){let a=Number.parseInt((le.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(le.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(le.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(le.TERM)||"COLORTERM"in le?1:n}function Ir(i,e={}){let t=Uc(i,{streamIsTTY:i&&i.isTTY,...e});return Ic(t)}var Rc={stdout:Ir({isTTY:Gn.default.isatty(1)}),stderr:Ir({isTTY:Gn.default.isatty(2)})},Rr=Rc;function Or(i,e,t){let s=i.indexOf(e);if(s===-1)return i;let o=e.length,n=0,a="";do a+=i.slice(n,s)+e+t,n=s+o,s=i.indexOf(e,n);while(s!==-1);return a+=i.slice(n),a}function Fr(i,e,t,s){let o=0,n="";do{let a=i[s-1]==="\r";n+=i.slice(o,a?s-1:s)+e+(a?`\r
|
|
29
29
|
`:`
|
|
30
|
-
`)+t,o=s+1,s=
|
|
31
|
-
`,o)}while(s!==-1);return n+=
|
|
32
|
-
`);return n!==-1&&(e=wr(e,o,s,n)),s+e+o};Object.defineProperties(fs.prototype,Xt);var _c=fs(),Dd=fs({level:kr?kr.level:0});var x=_c;var et=R(require("fs")),Ie=R(require("path")),Ea=R(require("os"));var Tr={getConfiguration:()=>({get:()=>{}})},In={getExtension:()=>{}},Zt=class r{fsPath;scheme;path;constructor(e){this.fsPath=e,this.scheme="file",this.path=e}static file(e){return new r(e)}static joinPath(e,...t){let s=[e.fsPath,...t].join("/");return new r(s)}toString(){return this.fsPath}};var gs=R(require("fs")),Pr=R(require("os")),Mr=R(require("path"));function oo(r){return typeof r.discover=="function"}function xr(r){return typeof r.analyzeUsage=="function"}function bc(r){let e=r.replace(/\\/g,"/");return Pr.platform()==="linux"?e:e.toLowerCase()}var no=class r{deps;_sessionFilesCache=null;_sessionFilesCacheTime=0;static SESSION_FILES_CACHE_TTL=6e4;constructor(e){this.deps=e}clearCache(){this._sessionFilesCache=null,this._sessionFilesCacheTime=0}async pathExists(e){try{return await gs.promises.access(e),!0}catch{return!1}}getDiagnosticCandidatePaths(){let e=[];for(let t of this.deps.ecosystems)if(oo(t))try{let s=t.getCandidatePaths();for(let o of s){let n=!1;try{n=gs.existsSync(o.path)}catch{}e.push({path:o.path,exists:n,source:o.source})}}catch{}return e}checkCopilotExtension(){let e=In.getExtension("GitHub.copilot"),t=In.getExtension("GitHub.copilot-chat");if(!e&&!t)this.deps.log("\u26A0\uFE0F GitHub Copilot extensions not found");else{let o=e?e.isActive?"\u2705 Active":"\u23F3 Loading":"\u274C Not found",n=t?t.isActive?"\u2705 Active":"\u23F3 Loading":"\u274C Not found";this.deps.log(`GitHub Copilot: ${o}, Chat: ${n}`)}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<r.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;let t=this.deps.sampleDataDirectoryOverride?.()??Tr.getConfiguration("aiEngineeringFluency").get("sampleDataDirectory");if(t&&t.trim().length>0){let o=t.trim();try{if(await this.pathExists(o)){let n=(await gs.promises.readdir(o)).filter(a=>a.endsWith(".json")||a.endsWith(".jsonl")).map(a=>Mr.join(o,a));return this.deps.log(`\u{1F4F8} Sample data mode: using ${n.length} file(s) from ${o}`),this._sessionFilesCache=n,this._sessionFilesCacheTime=e,n}else this.deps.warn(`Sample data directory not found: ${o}`)}catch(n){this.deps.warn(`Error reading sample data directory: ${n}`)}}let s=[];try{this.deps.log(`\u{1F50D} Searching for session files via ${this.deps.ecosystems.filter(oo).length} discoverable ecosystem adapter(s)`);for(let d of this.deps.ecosystems)if(oo(d))try{let c=await d.discover(this.deps.log);s.push(...c.sessionFiles)}catch(c){this.deps.warn(`Could not discover ${d.displayName} sessions: ${c}`)}let o=new Set,n=[];for(let d of s){let c=bc(d);o.has(c)||(o.add(c),n.push(d))}let a=s.length-n.length;return a>0&&this.deps.log(`\u{1F9F9} Deduplicated ${a} duplicate session path(s)`),this.deps.log(`\u2728 Total: ${n.length} session file(s) discovered`),n.length===0&&this.deps.warn("\u26A0\uFE0F No session files found - Have you used GitHub Copilot Chat yet?"),this._sessionFilesCache=n,this._sessionFilesCacheTime=Date.now(),n}catch(o){return this.deps.error("Error getting session files:",o),s}}};var ce=R(require("fs")),ge=R(require("path")),co=R(require("os")),Ar=R(Un()),lo=class{_sqlJsModule=null;extensionUri;constructor(e){this.extensionUri=e}getOpenCodeDataDir(){let e=co.platform(),t=co.homedir();if(e==="win32")return ge.join(t,".local","share","opencode");let s=process.env.XDG_DATA_HOME||ge.join(t,".local","share");return ge.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=ge.join(__dirname,"sql-wasm.wasm"),t;return ce.existsSync(e)&&(t=ce.readFileSync(e)),this._sqlJsModule=await(0,Ar.default)(t?{wasmBinary:t}:void 0),this._sqlJsModule}async readOpenCodeDbSession(e){let t=ge.join(this.getOpenCodeDataDir(),"opencode.db");if(!ce.existsSync(t))return null;try{let s=await this.initSqlJs(),o=ce.readFileSync(t),n=new s.Database(o);try{let a=n.exec("SELECT id, slug, title, time_created, time_updated, project_id, directory FROM session WHERE id = ?",[e]);if(a.length===0||a[0].values.length===0)return null;let d=a[0].values[0],c=a[0].columns,h={};for(let m=0;m<c.length;m++)h[c[m]]=d[m];return{id:h.id,slug:h.slug,title:h.title,projectID:h.project_id,directory:h.directory,time:{created:h.time_created,updated:h.time_updated}}}finally{n.close()}}catch{return null}}async readOpenCodeDbMessages(e){let t=ge.join(this.getOpenCodeDataDir(),"opencode.db");if(!ce.existsSync(t))return[];try{let s=await this.initSqlJs(),o=ce.readFileSync(t),n=new s.Database(o);try{let a=n.exec("SELECT id, data, time_created FROM message WHERE session_id = ? ORDER BY time_created ASC",[e]);return a.length===0?[]:a[0].values.map(d=>{let c=JSON.parse(d[1]);return c.id=d[0],c.time=c.time||{},c.time.created=c.time.created||d[2],c})}finally{n.close()}}catch{return[]}}async readOpenCodeDbParts(e){let t=ge.join(this.getOpenCodeDataDir(),"opencode.db");if(!ce.existsSync(t))return[];try{let s=await this.initSqlJs(),o=ce.readFileSync(t),n=new s.Database(o);try{let a=n.exec("SELECT id, data, time_created FROM part WHERE message_id = ? ORDER BY time_created ASC",[e]);return a.length===0?[]:a[0].values.map(d=>{let c=JSON.parse(d[1]);return c.id=d[0],c.time=c.time||{},c.time.created=c.time.created||d[2],c})}finally{n.close()}}catch{return[]}}async discoverOpenCodeDbSessions(){let e=ge.join(this.getOpenCodeDataDir(),"opencode.db");if(!ce.existsSync(e))return[];try{let t=await this.initSqlJs(),s=ce.readFileSync(e),o=new t.Database(s);try{let n=o.exec("SELECT id FROM session");return n.length===0?[]:n[0].values.map(a=>a[0])}finally{o.close()}}catch{return[]}}async statSessionFile(e){if(this.isOpenCodeDbSession(e)){let t=ge.join(this.getOpenCodeDataDir(),"opencode.db");return ce.promises.stat(t)}return ce.promises.stat(e)}readOpenCodeMessages(e){let t=this.getOpenCodeDataDir(),s=ge.join(t,"storage","message",e),o=[];try{if(!ce.existsSync(s))return o;let n=ce.readdirSync(s,{withFileTypes:!0});for(let a of n)if(!(!a.isFile()||!a.name.endsWith(".json")))try{let d=ce.readFileSync(ge.join(s,a.name),"utf8"),c=JSON.parse(d);o.push(c)}catch{}}catch{}return o.sort((n,a)=>(n.time?.created||0)-(a.time?.created||0)),o}readOpenCodeParts(e){let t=this.getOpenCodeDataDir(),s=ge.join(t,"storage","part",e),o=[];try{if(!ce.existsSync(s))return o;let n=ce.readdirSync(s,{withFileTypes:!0});for(let a of n)if(!(!a.isFile()||!a.name.endsWith(".json")))try{let d=ce.readFileSync(ge.join(s,a.name),"utf8"),c=JSON.parse(d);o.push(c)}catch{}}catch{}return o.sort((n,a)=>(n.time?.start||0)-(a.time?.start||0)),o}getOpenCodeSessionId(e){let t=e.indexOf("opencode.db#");if(t!==-1)return e.substring(t+12);let s=ge.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),s=0,o=0;for(let n of t)n.role==="assistant"&&n.tokens&&(typeof n.tokens.total=="number"&&(o=n.tokens.total),s+=n.tokens.reasoning||0);return{tokens:o,thinkingTokens:s}}async countOpenCodeInteractions(e){return(await this.getOpenCodeMessagesForSession(e)).filter(s=>s.role==="user").length}async getOpenCodeModelUsage(e){let t={},s=await this.getOpenCodeMessagesForSession(e),o=0;for(let n=0;n<s.length;n++){let a=s[n];if(a.role!=="user")continue;let d=s.filter((b,y)=>y>n&&b.role==="assistant"&&b.parentID===a.id);if(d.length===0)continue;let c=o;for(let b of d)typeof b.tokens?.total=="number"&&(c=Math.max(c,b.tokens.total));let h=c-o;if(h<=0){o=c;continue}let m=d[0].modelID||d[0].model?.modelID||"unknown";t[m]||(t[m]={inputTokens:0,outputTokens:0});let p=d.reduce((b,y)=>b+(y.tokens?.output||0)+(y.tokens?.reasoning||0),0),g=Math.max(0,h-p);t[m].inputTokens+=g,t[m].outputTokens+=p;let w=d.reduce((b,y)=>b+(y.tokens?.cache?.read||0),0),k=d.reduce((b,y)=>b+(y.tokens?.cache?.write||0),0);w>0&&(t[m].cachedReadTokens=(t[m].cachedReadTokens??0)+w),k>0&&(t[m].cacheCreationTokens=(t[m].cacheCreationTokens??0)+k),o=c}return t}async getOpenCodeSessionData(e){let t=await this.getOpenCodeMessagesForSession(e),s=Date.now();t.length>0&&t[0].time_created&&(s=t[0].time_created);let{tokens:o}=await this.getTokensFromOpenCodeSession(e),n=await this.countOpenCodeInteractions(e),a=await this.getOpenCodeModelUsage(e),d={},c=0;for(let m=0;m<t.length;m++){let p=t[m];if(p.role!=="user")continue;let g=t.filter((k,b)=>b>m&&k.role==="assistant"&&k.parentID===p.id);if(g.length===0)continue;let w=g[0].modelID||g[0].model?.modelID||"unknown";d[w]=(d[w]||0)+1}let h={};for(let[m,p]of Object.entries(a))h[m]={...p,interactions:d[m]||0};return{tokens:o,interactions:n,modelUsage:h,timestamp:s}}};var xe=R(require("fs")),Ft=R(require("path")),ys=R(require("os")),Er=R(Un()),uo=class{_sqlJsModule=null;extensionUri;constructor(e){this.extensionUri=e}getCrushConfigDir(){if(ys.platform()==="win32"){let s=process.env.LOCALAPPDATA||Ft.join(ys.homedir(),"AppData","Local");return Ft.join(s,"crush")}let t=process.env.XDG_CONFIG_HOME||Ft.join(ys.homedir(),".config");return Ft.join(t,"crush")}readCrushProjects(){let e=Ft.join(this.getCrushConfigDir(),"projects.json");if(!xe.existsSync(e))return[];try{let t=xe.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=Ft.join(__dirname,"sql-wasm.wasm"),t;return xe.existsSync(e)&&(t=xe.readFileSync(e)),this._sqlJsModule=await(0,Er.default)(t?{wasmBinary:t}:void 0),this._sqlJsModule}async statSessionFile(e){let t=this.getCrushDbPath(e);return xe.promises.stat(t)}async discoverSessionsInDb(e){if(!xe.existsSync(e))return[];try{let t=await this.initSqlJs(),s=xe.readFileSync(e),o=new t.Database(s);try{let n=o.exec("SELECT id FROM sessions");return n.length===0?[]:n[0].values.map(a=>a[0])}finally{o.close()}}catch{return[]}}async readCrushSession(e){let t=this.getCrushDbPath(e),s=this.getCrushSessionId(e);if(!s||!xe.existsSync(t))return null;try{let o=await this.initSqlJs(),n=xe.readFileSync(t),a=new o.Database(n);try{let d=a.exec("SELECT id, title, message_count, prompt_tokens, completion_tokens, created_at, updated_at FROM sessions WHERE id = ?",[s]);if(d.length===0||d[0].values.length===0)return null;let c=d[0].columns,h=d[0].values[0],m={};return c.forEach((p,g)=>{m[p]=h[g]}),m}finally{a.close()}}catch{return null}}async getCrushMessages(e){let t=this.getCrushDbPath(e),s=this.getCrushSessionId(e);if(!s||!xe.existsSync(t))return[];try{let o=await this.initSqlJs(),n=xe.readFileSync(t),a=new o.Database(n);try{let d=a.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(d.length===0)return[];let c=d[0].columns;return d[0].values.map(h=>{let m={};if(c.forEach((p,g)=>{m[p]=h[g]}),typeof m.parts=="string")try{m.parts=JSON.parse(m.parts)}catch{m.parts=[]}return m})}finally{a.close()}}catch{return[]}}async getTokensFromCrushSession(e){let t=await this.readCrushSession(e);if(!t)return{tokens:0,thinkingTokens:0};let s=typeof t.prompt_tokens=="number"?t.prompt_tokens:0,o=typeof t.completion_tokens=="number"?t.completion_tokens:0;return{tokens:s+o,thinkingTokens:0}}async countCrushInteractions(e){return(await this.getCrushMessages(e)).filter(s=>s.role==="user").length}async getCrushModelUsage(e){let t={},s=await this.readCrushSession(e);if(!s)return t;let o=typeof s.prompt_tokens=="number"?s.prompt_tokens:0,n=typeof s.completion_tokens=="number"?s.completion_tokens:0;if(o+n===0)return t;let d=(await this.getCrushMessages(e)).filter(m=>m.role==="assistant"&&m.model);if(d.length===0)return t.unknown={inputTokens:o,outputTokens:n},t;let c={};for(let m of d){let p=m.model||"unknown";c[p]=(c[p]||0)+1}let h=d.length;for(let[m,p]of Object.entries(c)){let g=p/h;t[m]={inputTokens:Math.round(o*g),outputTokens:Math.round(n*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,o=typeof t.completion_tokens=="number"?t.completion_tokens:0,n=s+o,a=typeof t.created_at=="number"?t.created_at*1e3:Date.now(),d=await this.getCrushModelUsage(e),h=(await this.getCrushMessages(e)).filter(g=>g.role==="user").length,m=s+o,p={};for(let[g,w]of Object.entries(d)){let k=w.inputTokens+w.outputTokens,b=m>0?k/m:0;p[g]={inputTokens:w.inputTokens,outputTokens:w.outputTokens,interactions:Math.round(h*b)}}return{tokens:n,interactions:h,modelUsage:p,timestamp:a}}getToolCallsFromMessages(e){let t=[];for(let s of e)if(!(s.role!=="assistant"||!Array.isArray(s.parts)))for(let o of s.parts)o?.type==="tool_call"&&o?.data?.name&&t.push(o.data.name);return t}};var $t=R(require("fs")),Nt=R(require("path")),Dr=R(require("os")),po=class{getContinueDataDir(){return Nt.join(Dr.homedir(),".continue")}getContinueSessionsDir(){return Nt.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(!$t.existsSync(e))return[];try{return $t.readdirSync(e).filter(t=>t.endsWith(".json")&&t!=="sessions.json").map(t=>Nt.join(e,t))}catch{return[]}}readSessionFile(e){try{let t=$t.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,o=0;for(let n of t.history)if(Array.isArray(n.promptLogs))for(let a of n.promptLogs)s+=this.estimateTokens(a.prompt||""),o+=this.estimateTokens(a.completion||"");return{tokens:s+o,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 o of t.history)if(Array.isArray(o.promptLogs))for(let n of o.promptLogs){let a=n.modelTitle||t.chatModelTitle||"unknown";s[a]||(s[a]={inputTokens:0,outputTokens:0}),s[a].inputTokens+=this.estimateTokens(n.prompt||""),s[a].outputTokens+=this.estimateTokens(n.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=Nt.join(this.getContinueSessionsDir(),"sessions.json"),t=new Map;try{let s=$t.readFileSync(e,"utf8"),o=JSON.parse(s);if(!Array.isArray(o))return t;for(let n of o)n.sessionId&&t.set(n.sessionId,{dateCreated:n.dateCreated?Number(n.dateCreated):void 0,title:n.title,workspaceDirectory:n.workspaceDirectory})}catch{}return t}getContinueSessionId(e){return Nt.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,o=[],n=0;for(;n<s.length;){let a=s[n];if(a.message?.role!=="user"){n++;continue}let
|
|
34
|
-
`)){let
|
|
35
|
-
`)}extractContextText(e){if(!Array.isArray(e))return"";let t=[];for(let s of e){let o=s?.ValueContainer;if(!Array.isArray(o)||o.length<2)continue;let n=o[1];if(!n||typeof n!="object")continue;let a=Object.keys(n);if(a.length!==0)if(isNaN(Number(a[0])))n.Content&&typeof n.Content=="string"&&t.push(n.Content);else try{let
|
|
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),o=0;for(let n=1;n<s.length;n++){let a=s[n]?.[1];if(!a?.Content)continue;let
|
|
37
|
-
`),o=[];for(let n of s)if(n.trim())try{o.push(JSON.parse(n))}catch{}return o}catch{return[]}}getTokensFromClaudeCodeSession(e){let t=this.readSessionEvents(e),s=0,o=0,n=new Set;for(let a of t){if(a.type!=="assistant")continue;let
|
|
38
|
-
`),o=[];for(let n of s)if(n.trim())try{o.push(JSON.parse(n))}catch{}return o}catch{return[]}}getTokensFromCoworkSession(e){let t=this.readCoworkEvents(e),s=0,o=0,n=new Set;for(let a of t){if(a.type!=="assistant")continue;let
|
|
39
|
-
`),n=[];for(let a of o)if(a.trim())try{n.push(JSON.parse(a))}catch{}return n}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,o=typeof t.stats.session_completion_tokens=="number"?t.stats.session_completion_tokens:0;return{tokens:s+o,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,o=typeof t.stats?.session_completion_tokens=="number"?t.stats.session_completion_tokens:0;return s+o===0?{}:{[t.config?.active_model||"devstral"]:{inputTokens:s,outputTokens:o}}}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),o=this.countInteractions(e),n=this.getModelUsage(e),a={};for(let[c,
|
|
40
|
-
`),o={},n=!1,a=0,
|
|
30
|
+
`)+t,o=s+1,s=i.indexOf(`
|
|
31
|
+
`,o)}while(s!==-1);return n+=i.slice(o),n}var{stdout:Nr,stderr:jr}=Rr,qn=Symbol("GENERATOR"),ns=Symbol("STYLER"),ks=Symbol("IS_EMPTY"),Lr=["ansi","ansi","ansi256","ansi16m"],is=Object.create(null),Oc=(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=Nr?Nr.level:0;i.level=e.level===void 0?t:e.level};var Fc=i=>{let e=(...t)=>t.join(" ");return Oc(e,i),Object.setPrototypeOf(e,ws.prototype),e};function ws(i){return Fc(i)}Object.setPrototypeOf(ws.prototype,Function.prototype);for(let[i,e]of Object.entries(Ye))is[i]={get(){let t=ho(this,zn(e.open,e.close,this[ns]),this[ks]);return Object.defineProperty(this,i,{value:t}),t}};is.visible={get(){let i=ho(this,this[ns],!0);return Object.defineProperty(this,"visible",{value:i}),i}};var Bn=(i,e,t,...s)=>i==="rgb"?e==="ansi16m"?Ye[t].ansi16m(...s):e==="ansi256"?Ye[t].ansi256(Ye.rgbToAnsi256(...s)):Ye[t].ansi(Ye.rgbToAnsi(...s)):i==="hex"?Bn("rgb",e,t,...Ye.hexToRgb(...s)):Ye[t][i](...s),Nc=["rgb","hex","ansi256"];for(let i of Nc){is[i]={get(){let{level:t}=this;return function(...s){let o=zn(Bn(i,Lr[t],"color",...s),Ye.color.close,this[ns]);return ho(this,o,this[ks])}}};let e="bg"+i[0].toUpperCase()+i.slice(1);is[e]={get(){let{level:t}=this;return function(...s){let o=zn(Bn(i,Lr[t],"bgColor",...s),Ye.bgColor.close,this[ns]);return ho(this,o,this[ks])}}}}var jc=Object.defineProperties(()=>{},{...is,level:{enumerable:!0,get(){return this[qn].level},set(i){this[qn].level=i}}}),zn=(i,e,t)=>{let s,o;return t===void 0?(s=i,o=e):(s=t.openAll+i,o=e+t.closeAll),{open:i,close:e,openAll:s,closeAll:o,parent:t}},ho=(i,e,t)=>{let s=(...o)=>Lc(s,o.length===1?""+o[0]:o.join(" "));return Object.setPrototypeOf(s,jc),s[qn]=i,s[ns]=e,s[ks]=t,s},Lc=(i,e)=>{if(i.level<=0||!e)return i[ks]?"":e;let t=i[ns];if(t===void 0)return e;let{openAll:s,closeAll:o}=t;if(e.includes("\x1B"))for(;t!==void 0;)e=Or(e,t.close,t.open),t=t.parent;let n=e.indexOf(`
|
|
32
|
+
`);return n!==-1&&(e=Fr(e,o,s,n)),s+e+o};Object.defineProperties(ws.prototype,is);var $c=ws(),sp=ws({level:jr?jr.level:0});var D=$c;var rt=N(require("fs")),Ne=N(require("path")),Qa=N(require("os"));var $r={getConfiguration:()=>({get:()=>{}})},Wn={getExtension:()=>{}},rs=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 Ss=N(require("fs")),qr=N(require("os")),Br=N(require("path"));function fo(i){return typeof i.discover=="function"}function Gr(i){return typeof i.analyzeUsage=="function"}function Gc(i){let e=i.replace(/\\/g,"/");return qr.platform()==="linux"?e:e.toLowerCase()}var go=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 Ss.promises.access(e),!0}catch{return!1}}getDiagnosticCandidatePaths(){let e=[];for(let t of this.deps.ecosystems)if(fo(t))try{let s=t.getCandidatePaths();for(let o of s){let n=!1;try{n=Ss.existsSync(o.path)}catch{}e.push({path:o.path,exists:n,source:o.source})}}catch{}return e}checkCopilotExtension(){let e=Wn.getExtension("GitHub.copilot"),t=Wn.getExtension("GitHub.copilot-chat");if(!e&&!t)this.deps.log("\u26A0\uFE0F GitHub Copilot extensions not found");else{let o=e?e.isActive?"\u2705 Active":"\u23F3 Loading":"\u274C Not found",n=t?t.isActive?"\u2705 Active":"\u23F3 Loading":"\u274C Not found";this.deps.log(`GitHub Copilot: ${o}, Chat: ${n}`)}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?.()??$r.getConfiguration("aiEngineeringFluency").get("sampleDataDirectory");if(t&&t.trim().length>0){let o=t.trim();try{if(await this.pathExists(o)){let n=(await Ss.promises.readdir(o)).filter(a=>a.endsWith(".json")||a.endsWith(".jsonl")).map(a=>Br.join(o,a));return this.deps.log(`\u{1F4F8} Sample data mode: using ${n.length} file(s) from ${o}`),this._sessionFilesCache=n,this._sessionFilesCacheTime=e,this._lastDiscoveryFilesCount=n.length,n}else this.deps.warn(`Sample data directory not found: ${o}`)}catch(n){this.deps.warn(`Error reading sample data directory: ${n}`)}}let s=[];try{this.deps.log(`\u{1F50D} Searching for session files via ${this.deps.ecosystems.filter(fo).length} discoverable ecosystem adapter(s)`);for(let u of this.deps.ecosystems)if(fo(u))try{let c=await u.discover(this.deps.log);s.push(...c.sessionFiles)}catch(c){this.deps.warn(`Could not discover ${u.displayName} sessions: ${c}`),this._lastDiscoveryHadError=!0}let o=new Set,n=[];for(let u of s){let c=Gc(u);o.has(c)||(o.add(c),n.push(u))}let a=s.length-n.length;return a>0&&this.deps.log(`\u{1F9F9} Deduplicated ${a} duplicate session path(s)`),this.deps.log(`\u2728 Total: ${n.length} session file(s) discovered`),n.length===0&&this.deps.warn("\u26A0\uFE0F No session files found - Have you used GitHub Copilot Chat yet?"),this._sessionFilesCache=n,this._sessionFilesCacheTime=Date.now(),this._lastDiscoveryFilesCount=n.length,n}catch(o){return this.deps.error("Error getting session files:",o),this._lastDiscoveryHadError=!0,this._lastDiscoveryFilesCount=s.length,s}}};var de=N(require("fs")),we=N(require("path")),ko=N(require("os")),zr=N(Vn()),bo=class{_sqlJsModule=null;extensionUri;constructor(e){this.extensionUri=e}getOpenCodeDataDir(){let e=ko.platform(),t=ko.homedir();if(e==="win32")return we.join(t,".local","share","opencode");let s=process.env.XDG_DATA_HOME||we.join(t,".local","share");return we.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=we.join(__dirname,"sql-wasm.wasm"),t;return de.existsSync(e)&&(t=de.readFileSync(e)),this._sqlJsModule=await(0,zr.default)(t?{wasmBinary:t}:void 0),this._sqlJsModule}async readOpenCodeDbSession(e){let t=we.join(this.getOpenCodeDataDir(),"opencode.db");if(!de.existsSync(t))return null;try{let s=await this.initSqlJs(),o=de.readFileSync(t),n=new s.Database(o);try{let a=n.exec("SELECT id, slug, title, time_created, time_updated, project_id, directory FROM session WHERE id = ?",[e]);if(a.length===0||a[0].values.length===0)return null;let u=a[0].values[0],c=a[0].columns,p={};for(let m=0;m<c.length;m++)p[c[m]]=u[m];return{id:p.id,slug:p.slug,title:p.title,projectID:p.project_id,directory:p.directory,time:{created:p.time_created,updated:p.time_updated}}}finally{n.close()}}catch{return null}}async readOpenCodeDbMessages(e){let t=we.join(this.getOpenCodeDataDir(),"opencode.db");if(!de.existsSync(t))return[];try{let s=await this.initSqlJs(),o=de.readFileSync(t),n=new s.Database(o);try{let a=n.exec("SELECT id, data, time_created FROM message WHERE session_id = ? ORDER BY time_created ASC",[e]);return a.length===0?[]:a[0].values.map(u=>{let c=JSON.parse(u[1]);return c.id=u[0],c.time=c.time||{},c.time.created=c.time.created||u[2],c})}finally{n.close()}}catch{return[]}}async readOpenCodeDbParts(e){let t=we.join(this.getOpenCodeDataDir(),"opencode.db");if(!de.existsSync(t))return[];try{let s=await this.initSqlJs(),o=de.readFileSync(t),n=new s.Database(o);try{let a=n.exec("SELECT id, data, time_created FROM part WHERE message_id = ? ORDER BY time_created ASC",[e]);return a.length===0?[]:a[0].values.map(u=>{let c=JSON.parse(u[1]);return c.id=u[0],c.time=c.time||{},c.time.created=c.time.created||u[2],c})}finally{n.close()}}catch{return[]}}async discoverOpenCodeDbSessions(){let e=we.join(this.getOpenCodeDataDir(),"opencode.db");if(!de.existsSync(e))return[];try{let t=await this.initSqlJs(),s=de.readFileSync(e),o=new t.Database(s);try{let n=o.exec("SELECT id FROM session");return n.length===0?[]:n[0].values.map(a=>a[0])}finally{o.close()}}catch{return[]}}async statSessionFile(e){if(this.isOpenCodeDbSession(e)){let t=we.join(this.getOpenCodeDataDir(),"opencode.db");return de.promises.stat(t)}return de.promises.stat(e)}readOpenCodeMessages(e){let t=this.getOpenCodeDataDir(),s=we.join(t,"storage","message",e),o=[];try{if(!de.existsSync(s))return o;let n=de.readdirSync(s,{withFileTypes:!0});for(let a of n)if(!(!a.isFile()||!a.name.endsWith(".json")))try{let u=de.readFileSync(we.join(s,a.name),"utf8"),c=JSON.parse(u);o.push(c)}catch{}}catch{}return o.sort((n,a)=>(n.time?.created||0)-(a.time?.created||0)),o}readOpenCodeParts(e){let t=this.getOpenCodeDataDir(),s=we.join(t,"storage","part",e),o=[];try{if(!de.existsSync(s))return o;let n=de.readdirSync(s,{withFileTypes:!0});for(let a of n)if(!(!a.isFile()||!a.name.endsWith(".json")))try{let u=de.readFileSync(we.join(s,a.name),"utf8"),c=JSON.parse(u);o.push(c)}catch{}}catch{}return o.sort((n,a)=>(n.time?.start||0)-(a.time?.start||0)),o}getOpenCodeSessionId(e){let t=e.indexOf("opencode.db#");if(t!==-1)return e.substring(t+12);let s=we.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),s=0,o=0;for(let n of t)n.role==="assistant"&&n.tokens&&(typeof n.tokens.total=="number"&&(o=n.tokens.total),s+=n.tokens.reasoning||0);return{tokens:o,thinkingTokens:s}}async countOpenCodeInteractions(e){return(await this.getOpenCodeMessagesForSession(e)).filter(s=>s.role==="user").length}async getOpenCodeModelUsage(e){let t={},s=await this.getOpenCodeMessagesForSession(e),o=0;for(let n=0;n<s.length;n++){let a=s[n];if(a.role!=="user")continue;let u=s.filter((_,C)=>C>n&&_.role==="assistant"&&_.parentID===a.id);if(u.length===0)continue;let c=o;for(let _ of u)typeof _.tokens?.total=="number"&&(c=Math.max(c,_.tokens.total));let p=c-o;if(p<=0){o=c;continue}let m=u[0].modelID||u[0].model?.modelID||"unknown";t[m]||(t[m]={inputTokens:0,outputTokens:0});let h=u.reduce((_,C)=>_+(C.tokens?.output||0)+(C.tokens?.reasoning||0),0),g=Math.max(0,p-h);t[m].inputTokens+=g,t[m].outputTokens+=h;let b=u.reduce((_,C)=>_+(C.tokens?.cache?.read||0),0),y=u.reduce((_,C)=>_+(C.tokens?.cache?.write||0),0);b>0&&(t[m].cachedReadTokens=(t[m].cachedReadTokens??0)+b),y>0&&(t[m].cacheCreationTokens=(t[m].cacheCreationTokens??0)+y),o=c}return t}async getOpenCodeSessionData(e){let t=await this.getOpenCodeMessagesForSession(e),s=Date.now();t.length>0&&t[0].time_created&&(s=t[0].time_created);let{tokens:o}=await this.getTokensFromOpenCodeSession(e),n=await this.countOpenCodeInteractions(e),a=await this.getOpenCodeModelUsage(e),u={},c=0;for(let m=0;m<t.length;m++){let h=t[m];if(h.role!=="user")continue;let g=t.filter((y,_)=>_>m&&y.role==="assistant"&&y.parentID===h.id);if(g.length===0)continue;let b=g[0].modelID||g[0].model?.modelID||"unknown";u[b]=(u[b]||0)+1}let p={};for(let[m,h]of Object.entries(a))p[m]={...h,interactions:u[m]||0};return{tokens:o,interactions:n,modelUsage:p,timestamp:s}}};var Ue=N(require("fs")),qt=N(require("path")),vs=N(require("os")),Wr=N(Vn()),wo=class{_sqlJsModule=null;extensionUri;constructor(e){this.extensionUri=e}getCrushConfigDir(){if(vs.platform()==="win32"){let s=process.env.LOCALAPPDATA||qt.join(vs.homedir(),"AppData","Local");return qt.join(s,"crush")}let t=process.env.XDG_CONFIG_HOME||qt.join(vs.homedir(),".config");return qt.join(t,"crush")}readCrushProjects(){let e=qt.join(this.getCrushConfigDir(),"projects.json");if(!Ue.existsSync(e))return[];try{let t=Ue.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=qt.join(__dirname,"sql-wasm.wasm"),t;return Ue.existsSync(e)&&(t=Ue.readFileSync(e)),this._sqlJsModule=await(0,Wr.default)(t?{wasmBinary:t}:void 0),this._sqlJsModule}async statSessionFile(e){let t=this.getCrushDbPath(e);return Ue.promises.stat(t)}async discoverSessionsInDb(e){if(!Ue.existsSync(e))return[];try{let t=await this.initSqlJs(),s=Ue.readFileSync(e),o=new t.Database(s);try{let n=o.exec("SELECT id FROM sessions");return n.length===0?[]:n[0].values.map(a=>a[0])}finally{o.close()}}catch{return[]}}async readCrushSession(e){let t=this.getCrushDbPath(e),s=this.getCrushSessionId(e);if(!s||!Ue.existsSync(t))return null;try{let o=await this.initSqlJs(),n=Ue.readFileSync(t),a=new o.Database(n);try{let u=a.exec("SELECT id, title, message_count, prompt_tokens, completion_tokens, created_at, updated_at FROM sessions WHERE id = ?",[s]);if(u.length===0||u[0].values.length===0)return null;let c=u[0].columns,p=u[0].values[0],m={};return c.forEach((h,g)=>{m[h]=p[g]}),m}finally{a.close()}}catch{return null}}async getCrushMessages(e){let t=this.getCrushDbPath(e),s=this.getCrushSessionId(e);if(!s||!Ue.existsSync(t))return[];try{let o=await this.initSqlJs(),n=Ue.readFileSync(t),a=new o.Database(n);try{let u=a.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(u.length===0)return[];let c=u[0].columns;return u[0].values.map(p=>{let m={};if(c.forEach((h,g)=>{m[h]=p[g]}),typeof m.parts=="string")try{m.parts=JSON.parse(m.parts)}catch{m.parts=[]}return m})}finally{a.close()}}catch{return[]}}async getTokensFromCrushSession(e){let t=await this.readCrushSession(e);if(!t)return{tokens:0,thinkingTokens:0};let s=typeof t.prompt_tokens=="number"?t.prompt_tokens:0,o=typeof t.completion_tokens=="number"?t.completion_tokens:0;return{tokens:s+o,thinkingTokens:0}}async countCrushInteractions(e){return(await this.getCrushMessages(e)).filter(s=>s.role==="user").length}async getCrushModelUsage(e){let t={},s=await this.readCrushSession(e);if(!s)return t;let o=typeof s.prompt_tokens=="number"?s.prompt_tokens:0,n=typeof s.completion_tokens=="number"?s.completion_tokens:0;if(o+n===0)return t;let u=(await this.getCrushMessages(e)).filter(m=>m.role==="assistant"&&m.model);if(u.length===0)return t.unknown={inputTokens:o,outputTokens:n},t;let c={};for(let m of u){let h=m.model||"unknown";c[h]=(c[h]||0)+1}let p=u.length;for(let[m,h]of Object.entries(c)){let g=h/p;t[m]={inputTokens:Math.round(o*g),outputTokens:Math.round(n*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,o=typeof t.completion_tokens=="number"?t.completion_tokens:0,n=s+o,a=typeof t.created_at=="number"?t.created_at*1e3:Date.now(),u=await this.getCrushModelUsage(e),p=(await this.getCrushMessages(e)).filter(g=>g.role==="user").length,m=s+o,h={};for(let[g,b]of Object.entries(u)){let y=b.inputTokens+b.outputTokens,_=m>0?y/m:0;h[g]={inputTokens:b.inputTokens,outputTokens:b.outputTokens,interactions:Math.round(p*_)}}return{tokens:n,interactions:p,modelUsage:h,timestamp:a}}getToolCallsFromMessages(e){let t=[];for(let s of e)if(!(s.role!=="assistant"||!Array.isArray(s.parts)))for(let o of s.parts)o?.type==="tool_call"&&o?.data?.name&&t.push(o.data.name);return t}};var zt=N(require("fs")),Bt=N(require("path")),Hr=N(require("os")),So=class{getContinueDataDir(){return Bt.join(Hr.homedir(),".continue")}getContinueSessionsDir(){return Bt.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(!zt.existsSync(e))return[];try{return zt.readdirSync(e).filter(t=>t.endsWith(".json")&&t!=="sessions.json").map(t=>Bt.join(e,t))}catch{return[]}}readSessionFile(e){try{let t=zt.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,o=0;for(let n of t.history)if(Array.isArray(n.promptLogs))for(let a of n.promptLogs)s+=this.estimateTokens(a.prompt||""),o+=this.estimateTokens(a.completion||"");return{tokens:s+o,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 o of t.history)if(Array.isArray(o.promptLogs))for(let n of o.promptLogs){let a=n.modelTitle||t.chatModelTitle||"unknown";s[a]||(s[a]={inputTokens:0,outputTokens:0}),s[a].inputTokens+=this.estimateTokens(n.prompt||""),s[a].outputTokens+=this.estimateTokens(n.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=Bt.join(this.getContinueSessionsDir(),"sessions.json"),t=new Map;try{let s=zt.readFileSync(e,"utf8"),o=JSON.parse(s);if(!Array.isArray(o))return t;for(let n of o)n.sessionId&&t.set(n.sessionId,{dateCreated:n.dateCreated?Number(n.dateCreated):void 0,title:n.title,workspaceDirectory:n.workspaceDirectory})}catch{}return t}getContinueSessionId(e){return Bt.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,o=[],n=0;for(;n<s.length;){let a=s[n];if(a.message?.role!=="user"){n++;continue}let u=this.extractUserText(a.message.content),c="",p=[],m=t.chatModelTitle||null,h=0,g=0,b=new Map,y=n+1;for(;y<s.length&&s[y].message?.role!=="user";){let _=s[y],C=_.message?.role;if(C==="assistant"){if(typeof _.message.content=="string"&&_.message.content&&(c+=_.message.content),Array.isArray(_.promptLogs)&&_.promptLogs.length>0){let S=_.promptLogs[0];S.modelTitle&&(m=S.modelTitle);for(let w of _.promptLogs)h+=this.estimateTokens(w.prompt||""),g+=this.estimateTokens(w.completion||"")}if(Array.isArray(_.message.toolCalls))for(let S of _.message.toolCalls){let w=S.function?.name||S.name||"unknown",P=S.function?.arguments,v=S.id||w;b.set(v,{toolName:w,arguments:P})}}else if(C==="tool"){let S=_.message.toolCallId||"",w=this.extractUserText(_.message.content),P=b.get(S);P?(p.push({...P,result:w}),b.delete(S)):p.push({toolName:"unknown",result:w})}y++}for(let[,_]of b)p.push(_);o.push({userText:u,assistantText:c,model:m,toolCalls:p,inputTokens:h,outputTokens:g}),n=y}return o}};var De=N(require("fs")),Dt=N(require("path")),As=N(require("os")),No=N(_a()),Iu=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"]),Fo=class{isVSSessionFile(e){let t=e.replace(/\\/g,"/");return t.includes("/.vs/")&&t.includes("/copilot-chat/")&&t.includes("/sessions/")}async statSessionFile(e){return De.promises.stat(e)}getLogDir(){let e=process.env.LOCALAPPDATA||Dt.join(As.homedir(),"AppData","Local");return Dt.join(e,"Temp","VSGitHubCopilotLogs")}discoverSessions(){let e=new Set,t=[];return this._discoverFromLogs(e,t),this._discoverFromFilesystem(e,t),t}_discoverFromLogs(e,t){let s=this.getLogDir();if(!De.existsSync(s))return;let o;try{o=De.readdirSync(s).filter(a=>a.endsWith(".chat.log")).map(a=>Dt.join(s,a))}catch{return}let n=/Updating session file '([^']+)'/;for(let a of o)try{let u=De.readFileSync(a,"utf8");for(let c of u.split(`
|
|
34
|
+
`)){let p=n.exec(c);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(As.platform()!=="win32")return;let s=As.homedir(),o=["C","D"],n=[s];for(let a of o)for(let u of["repos","code","src","projects","dev"]){let c=a+":\\"+u;try{De.existsSync(c)&&n.push(c)}catch{}}for(let a of n){let u=a===s?7:5;this._scanForVsDirs(a,0,u,e,t)}}_scanForVsDirs(e,t,s,o,n){if(t>s)return;let a;try{a=De.readdirSync(e,{withFileTypes:!0})}catch{return}for(let u of a){if(!u.isDirectory())continue;let c=u.name;if(Iu.has(c)||c.startsWith(".")&&c!==".vs")continue;let p=Dt.join(e,c);c===".vs"?this._findSessionsInVsDir(p,o,n):this._scanForVsDirs(p,t+1,s,o,n)}}_findSessionsInVsDir(e,t,s){let o;try{o=De.readdirSync(e,{withFileTypes:!0})}catch{return}for(let n of o){if(!n.isDirectory())continue;let a=Dt.join(e,n.name,"copilot-chat"),u;try{u=De.readdirSync(a,{withFileTypes:!0})}catch{continue}for(let c of u){if(!c.isDirectory())continue;let p=Dt.join(a,c.name,"sessions"),m;try{m=De.readdirSync(p,{withFileTypes:!0})}catch{continue}for(let h of m){if(!h.isFile())continue;let g=Dt.join(p,h.name);t.has(g)||(t.add(g),s.push(g))}}}}decodeSessionFile(e){try{let t=De.readFileSync(e);return t.length<2?[]:Array.from((0,No.decodeMulti)(t.slice(1)))}catch{return[]}}getSessionTitle(e){let s=e.find((n,a)=>a>0&&a%2===1)?.[1];if(!s?.Content)return;let o=this.extractTextFromContent(s.Content).trim();if(o)return o.length>80?o.substring(0,80)+"\u2026":o}getSessionTimestamps(e){let t=e[0];return t?{timeCreated:t.TimeCreated?new Date(t.TimeCreated).toISOString():null,timeUpdated:t.TimeUpdated?new Date(t.TimeUpdated).toISOString():null}:{timeCreated:null,timeUpdated:null}}countInteractions(e){return e.filter((t,s)=>s>0&&s%2===1).length}extractTextFromContent(e){if(!Array.isArray(e))return"";let t=[];for(let s of e){let o=s?.[1];o&&typeof o.Content=="string"&&o.Content&&t.push(o.Content)}return t.join(`
|
|
35
|
+
`)}extractContextText(e){if(!Array.isArray(e))return"";let t=[];for(let s of e){let o=s?.ValueContainer;if(!Array.isArray(o)||o.length<2)continue;let n=o[1];if(!n||typeof n!="object")continue;let a=Object.keys(n);if(a.length!==0)if(isNaN(Number(a[0])))n.Content&&typeof n.Content=="string"&&t.push(n.Content);else try{let u=a.map(Number).sort((h,g)=>h-g),c=Buffer.from(u.map(h=>n[h])),p=(0,No.decode)(c),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),o=0;for(let n=1;n<s.length;n++){let a=s[n]?.[1];if(!a?.Content)continue;let u=this.extractTextFromContent(a.Content),c=n%2===1,p=c?this.extractContextText(a.Context):"";if(!u&&!p)continue;let m=this.getModelId(a,c)||void 0;o+=t(u+p,m)}return{tokens:o,thinkingTokens:0}}getModelUsage(e,t){let s={},o=this.decodeSessionFile(e),n={};for(let a=1;a<o.length;a++){let u=o[a]?.[1];if(!u?.Content)continue;let c=this.extractTextFromContent(u.Content),p=a%2===1,m=p?this.extractContextText(u.Context):"";if(!c&&!m)continue;let h=this.getModelId(u,p)||"unknown";n[h]||(n[h]={input:"",output:""}),p?n[h].input+=c+m:n[h].output+=c}for(let[a,u]of Object.entries(n))s[a]={inputTokens:t(u.input,a),outputTokens:t(u.output,a)};return s}};var mt=N(require("fs")),Ht=N(require("path")),Lo=N(require("os"));function Vt(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 jo=class{getClaudeCodeDataDir(){return Ht.join(Lo.homedir(),".claude")}getClaudeCodeProjectsDir(){return Ht.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(!mt.existsSync(e))return[];let t=[];try{let s=mt.readdirSync(e,{withFileTypes:!0});for(let o of s){if(!o.isDirectory())continue;let n=Ht.join(e,o.name);try{let a=mt.readdirSync(n,{withFileTypes:!0});for(let u of a)if(!u.isDirectory()&&u.name.endsWith(".jsonl")){let c=Ht.join(n,u.name);try{mt.statSync(c).size>0&&t.push(c)}catch{}}}catch{}}}catch{}return t}readSessionEvents(e){try{let s=mt.readFileSync(e,"utf8").trim().split(`
|
|
37
|
+
`),o=[];for(let n of s)if(n.trim())try{o.push(JSON.parse(n))}catch{}return o}catch{return[]}}getTokensFromClaudeCodeSession(e){let t=this.readSessionEvents(e),s=0,o=0,n=new Set;for(let a of t){if(a.type!=="assistant")continue;let u=a.message?.usage;if(!u)continue;let c=a.requestId;if(c){if(a.message?.stop_reason===null||a.message?.stop_reason===void 0||n.has(c))continue;n.add(c)}let p=(typeof u.input_tokens=="number"?u.input_tokens:0)+(typeof u.cache_creation_input_tokens=="number"?u.cache_creation_input_tokens:0)+(typeof u.cache_read_input_tokens=="number"?u.cache_read_input_tokens:0),m=typeof u.output_tokens=="number"?u.output_tokens:0;s+=p,o+=m}return{tokens:s+o,thinkingTokens:0}}countClaudeCodeInteractions(e){let t=this.readSessionEvents(e),s=0;for(let o of t)if(o.type==="user"&&!o.isSidechain&&o.message?.role==="user"){let n=o.message?.content;(typeof n=="string"||Array.isArray(n)&&n.some(u=>u.type==="text")&&!n.some(u=>u.type==="tool_result"))&&s++}return s}getClaudeCodeModelUsage(e){let t=this.readSessionEvents(e),s={},o=new Set;for(let n of t){if(n.type!=="assistant")continue;let a=n.message?.usage;if(!a)continue;let u=n.requestId;if(u){if(n.message?.stop_reason===null||n.message?.stop_reason===void 0||o.has(u))continue;o.add(u)}let c=Vt(n.message?.model||"unknown");s[c]||(s[c]={inputTokens:0,outputTokens:0});let p=typeof a.cache_creation_input_tokens=="number"?a.cache_creation_input_tokens:0,m=typeof a.cache_read_input_tokens=="number"?a.cache_read_input_tokens:0,h=(typeof a.input_tokens=="number"?a.input_tokens:0)+p+m,g=typeof a.output_tokens=="number"?a.output_tokens:0;s[c].inputTokens+=h,s[c].outputTokens+=g,p>0&&(s[c].cacheCreationTokens=(s[c].cacheCreationTokens??0)+p),m>0&&(s[c].cachedReadTokens=(s[c].cachedReadTokens??0)+m)}return s}getClaudeCodeSessionMeta(e){let t=this.readSessionEvents(e);if(t.length===0)return null;let s,o,n,a=[];for(let p of t)if(p.type==="ai-title"&&p.aiTitle&&(s=p.aiTitle),!o&&p.entrypoint&&(o=p.entrypoint),!n&&p.cwd&&(n=p.cwd),p.timestamp){let m=new Date(p.timestamp).getTime();isNaN(m)||a.push(m)}let u,c;return a.length>0&&(a.sort((p,m)=>p-m),u=new Date(a[0]).toISOString(),c=new Date(a[a.length-1]).toISOString()),{title:s,entrypoint:o,firstInteraction:u,lastInteraction:c,cwd:n}}getClaudeCodeSessionId(e){return Ht.basename(e,".jsonl")}getProjectPathFromHash(e){if(Lo.platform()==="win32"){let s=e.split("-");if(s.length>=2&&s[0].length===1&&s[1]===""){let o=s[0].toUpperCase(),n=s.slice(2).join("\\");return`${o}:\\${n}`}}return"/"+e.replace(/-/g,"/")}};var ht=N(require("fs")),Ds=N(require("path")),Es=N(require("os"));var Uu="Claude_pzs8sxrjxfjjc",$o=class{getCoworkBaseDir(){let e=Es.platform();if(e==="win32"){let t=process.env.LOCALAPPDATA||Ds.join(Es.homedir(),"AppData","Local");return Ds.join(t,"Packages",Uu,"LocalCache","Roaming","Claude","local-agent-mode-sessions")}return e==="darwin"?Ds.join(Es.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||!ht.existsSync(e))return[];let t=[];try{this.walkForJsonlFiles(e,t,0,8)}catch{}return t}walkForJsonlFiles(e,t,s,o){if(s>o)return;let n;try{n=ht.readdirSync(e,{withFileTypes:!0})}catch{return}for(let a of n){let u=Ds.join(e,a.name);if(a.isDirectory()){if(a.name==="agent")continue;this.walkForJsonlFiles(u,t,s+1,o)}else if(a.name.endsWith(".jsonl")&&a.name!=="audit.jsonl")try{ht.statSync(u).size>0&&t.push(u)}catch{}}}readCoworkEvents(e){try{let s=ht.readFileSync(e,"utf8").trim().split(`
|
|
38
|
+
`),o=[];for(let n of s)if(n.trim())try{o.push(JSON.parse(n))}catch{}return o}catch{return[]}}getTokensFromCoworkSession(e){let t=this.readCoworkEvents(e),s=0,o=0,n=new Set;for(let a of t){if(a.type!=="assistant")continue;let u=a.message?.usage;if(!u)continue;let c=a.requestId;if(c){if(!a.message?.stop_reason||n.has(c))continue;n.add(c)}let p=(typeof u.input_tokens=="number"?u.input_tokens:0)+(typeof u.cache_creation_input_tokens=="number"?u.cache_creation_input_tokens:0)+(typeof u.cache_read_input_tokens=="number"?u.cache_read_input_tokens:0),m=typeof u.output_tokens=="number"?u.output_tokens:0;s+=p,o+=m}return{tokens:s+o,thinkingTokens:0}}countCoworkInteractions(e){let t=this.readCoworkEvents(e),s=0;for(let o of t)if(o.type==="user"&&!o.isSidechain&&o.message?.role==="user"){let n=o.message?.content;(typeof n=="string"||Array.isArray(n)&&n.some(u=>u.type==="text")&&!n.some(u=>u.type==="tool_result"))&&s++}return s}getCoworkModelUsage(e){let t=this.readCoworkEvents(e),s={},o=new Set;for(let n of t){if(n.type!=="assistant")continue;let a=n.message?.usage;if(!a)continue;let u=n.requestId;if(u){if(!n.message?.stop_reason||o.has(u))continue;o.add(u)}let c=Vt(n.message?.model||"unknown");s[c]||(s[c]={inputTokens:0,outputTokens:0});let p=typeof a.cache_creation_input_tokens=="number"?a.cache_creation_input_tokens:0,m=typeof a.cache_read_input_tokens=="number"?a.cache_read_input_tokens:0,h=(typeof a.input_tokens=="number"?a.input_tokens:0)+p+m,g=typeof a.output_tokens=="number"?a.output_tokens:0;s[c].inputTokens+=h,s[c].outputTokens+=g,p>0&&(s[c].cacheCreationTokens=(s[c].cacheCreationTokens??0)+p),m>0&&(s[c].cachedReadTokens=(s[c].cachedReadTokens??0)+m)}return s}getMetadataPathFromJsonl(e){let s=e.replace(/\\/g,"/").split("/"),o=s.lastIndexOf(".claude");if(o<1)return null;let n=s[o-1];return n.startsWith("local_")?`${s.slice(0,o-1).join("/")}/${n}.json`:null}getCoworkSessionMeta(e){let t=this.getMetadataPathFromJsonl(e);if(!t)return null;try{let s=ht.readFileSync(t,"utf8"),o=JSON.parse(s),n=o.createdAt?new Date(o.createdAt).toISOString():void 0,a=o.lastActivityAt?new Date(o.lastActivityAt).toISOString():void 0,u=Array.isArray(o.userSelectedFolders)&&o.userSelectedFolders.length>0?o.userSelectedFolders[0]:o.cwd;return{title:o.title||void 0,firstInteraction:n,lastInteraction:a,cwd:typeof u=="string"?u:void 0}}catch{return null}}};var gt=N(require("fs")),ft=N(require("path")),hi=N(require("os")),Go=class{getVibeHomeDir(){let e=process.env.VIBE_HOME;return e?ft.resolve(e.replace(/^~/,hi.homedir())):ft.join(hi.homedir(),".vibe")}getSessionLogDir(){return ft.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 ft.dirname(e)}discoverSessions(){let e=this.getSessionLogDir();if(!gt.existsSync(e))return[];try{let t=gt.readdirSync(e,{withFileTypes:!0}),s=[];for(let o of t){if(!o.isDirectory())continue;let n=ft.join(e,o.name,"meta.json");gt.existsSync(n)&&s.push(n)}return s}catch{return[]}}readSessionMeta(e){try{let t=gt.readFileSync(e,"utf8");return JSON.parse(t)}catch{return null}}readSessionMessages(e){let t=ft.join(this.getSessionDir(e),"messages.jsonl");if(!gt.existsSync(t))return[];try{let o=gt.readFileSync(t,"utf8").trim().split(`
|
|
39
|
+
`),n=[];for(let a of o)if(a.trim())try{n.push(JSON.parse(a))}catch{}return n}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,o=typeof t.stats.session_completion_tokens=="number"?t.stats.session_completion_tokens:0;return{tokens:s+o,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,o=typeof t.stats?.session_completion_tokens=="number"?t.stats.session_completion_tokens:0;return s+o===0?{}:{[t.config?.active_model||"devstral"]:{inputTokens:s,outputTokens:o}}}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),o=this.countInteractions(e),n=this.getModelUsage(e),a={};for(let[c,p]of Object.entries(n))a[c]={...p,interactions:o};let u=t.start_time?new Date(t.start_time).getTime():0;return{tokens:s,interactions:o,modelUsage:a,timestamp:u}}};var We=N(require("fs")),yi=N(require("os")),Ct=N(require("path"));function Y(i,e="gpt-4",t={}){let s=.25;for(let[o,n]of Object.entries(t))if(e.includes(o)||e.includes(o.replace("-",""))){s=n;break}return Math.ceil(i.length*s)}function Ru(i){return i.trim().toLowerCase().replace(/\s+/g,"-")}function Et(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 o=typeof s.prompt=="string"?s.prompt:"",n="",a=s.result;if(typeof a=="string")n=a;else if(a&&typeof a=="object"){let p=Object.entries(a);p.sort(([m],[h])=>Number(m)-Number(h)),n=p.map(([,m])=>typeof m=="string"?m:"").join("")}let u=typeof s.modelName=="string"?s.modelName:"",c=u?Ru(u):"";return o||n?{prompt:o,result:n,modelName:c}:null}function qo(i){let e=0,t=0,s=i.trim().split(`
|
|
40
|
+
`),o={},n=!1,a=0,u=0,c=0,p=null,m={};for(let b of s)if(b.trim())try{let y=JSON.parse(b);if(typeof y.kind=="number"&&(n=!0,o=Is(o,y)),y.type==="session.shutdown"&&y.data?.modelMetrics){p||(p={});let _=0;for(let[C,S]of Object.entries(y.data.modelMetrics)){let w=S?.usage;if(w){let P=typeof w.inputTokens=="number"?w.inputTokens:0,v=typeof w.outputTokens=="number"?w.outputTokens:0,M=typeof w.cacheReadTokens=="number"?w.cacheReadTokens:0;u+=P+v,c+=M,_+=P+v,p[C]||(p[C]={inputTokens:0,outputTokens:0}),p[C].inputTokens+=P,p[C].outputTokens+=v}}if(_>0&&y.timestamp){let C=new Date(y.timestamp).toISOString().slice(0,10);C&&C!=="Inval"&&(m[C]=(m[C]||0)+_)}}if(y.type==="user.message"&&y.data?.content)e+=Y(y.data.content);else if(y.type==="user.message_rendered"&&y.data?.renderedMessage)e+=Y(y.data.renderedMessage);else if(y.type==="assistant.message"&&y.data?.content)e+=Y(y.data.content);else if(y.type==="tool.execution_complete"&&y.data?.result){let _=y.data.result,C=typeof _.detailedContent=="string"?_.detailedContent:typeof _.content=="string"?_.content:"";C&&(e+=Y(C))}else y.content&&(e+=Y(y.content));if(y.kind===2&&y.k?.[0]==="requests"&&Array.isArray(y.v))for(let _ of y.v)_.message?.text&&(e+=Y(_.message.text));if(y.kind===2&&y.k?.includes("response")&&Array.isArray(y.v))for(let _ of y.v){if(_.kind==="thinking"&&_.value){t+=Y(_.value);continue}Et(_)||(_.value?e+=Y(_.value):_.kind==="markdownContent"&&_.content?.value&&(e+=Y(_.content.value)))}}catch{a++}let h=0;if(n){let b=a>0?fi(s):new Map,y=o.requests&&Array.isArray(o.requests)?o.requests:[],_=y.length;for(let C of b.keys())C+1>_&&(_=C+1);for(let C=0;C<_;C++){let S=y[C],w=!1;if(S?.result){let P=S.result;if(typeof P.promptTokens=="number"&&typeof P.outputTokens=="number")h+=P.promptTokens+P.outputTokens,w=!0;else if(P.metadata&&typeof P.metadata.promptTokens=="number"&&typeof P.metadata.outputTokens=="number")h+=P.metadata.promptTokens+P.metadata.outputTokens,w=!0;else if(P.usage){let v=P.usage,M=typeof v.promptTokens=="number"?v.promptTokens:0,A=typeof v.completionTokens=="number"?v.completionTokens:0;h+=M+A,w=!0}}if(!w){let P=b.get(C);P&&(h+=P.promptTokens+P.outputTokens)}}}let g=!n&&u>0?u:h;if(n){let b=Array.isArray(o.requests)?o.requests:[];for(let y of b)if(!(!y?.response||!Array.isArray(y.response)))for(let _ of y.response){let C=Et(_);C&&(C.prompt&&(e+=Y(C.prompt)),C.result&&(e+=Y(C.result)))}}return{tokens:e+t,thinkingTokens:t,actualTokens:g,cacheReadTokens:c,modelUsage:p??{},dailyActualTokens:m}}function Ca(i){let e=new Map,t=null,s=null,o=0;function n(a){if(!a||typeof a!="object")return null;let c=a.metadata;if(!c||typeof c!="object")return null;let m=c.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 _=y;return typeof _.default=="string"?_.default:null}for(let a of i){if(!a.trim())continue;let u;try{u=JSON.parse(a)}catch{continue}if(typeof u.kind=="number"){if(u.kind===0){let c=u.v?.inputState?.selectedModel,p=n(c);p!==null&&(t=p,s=p)}else if(u.kind===1){let c=u.k;if(Array.isArray(c)&&c[0]==="inputState"&&c[1]==="selectedModel"){let p=n(u.v);p!==null&&p!==t&&(t!==null&&o++,t=p)}}else if(u.kind===2){let c=u.k;if(Array.isArray(c)&&c[0]==="requests"&&typeof c[1]=="number"&&t!==null){let p=u.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:o}}function fi(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 o=parseInt(s[1],10),n=t.match(/"promptTokens":(\d+)/),a=t.match(/"outputTokens":(\d+)/),u=t.match(/"completionTokens":(\d+)/);n&&(a||u)&&e.set(o,{promptTokens:parseInt(n[1],10),outputTokens:parseInt(a?.[1]||u[1],10)})}return e}function It(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[o,n]of Object.entries(e))if(n.displayNames)for(let a of n.displayNames)t[a]=o;let s=Object.keys(t).sort((o,n)=>n.length-o.length);for(let o of s)if(i.result.details.includes(o))return t[o]}return"gpt-4"}function yt(i){let e=i.trim();if(!e.includes(`
|
|
41
41
|
`))return!1;let t=e.split(`
|
|
42
|
-
`).filter(n=>n.trim());if(t.length<2)return!1;let s=t[0].trim(),o=t[1].trim();return s.startsWith("{")&&s.endsWith("}")&&o.startsWith("{")&&o.endsWith("}")}function ts(r){let e=r.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 ks(r,e){if(typeof e!="object"||e===null)return r;let{kind:t,k:s,v:o}=e;if(t===0)return o;if(!Array.isArray(s)||s.length===0)return r;let n=s.map(String),a=typeof r=="object"&&r!==null?r:{},d=a;for(let h=0;h<n.length-1;h++){let m=n[h],p=n[h+1],g=/^\d+$/.test(p);if(Array.isArray(d)){let w=Number(m);(!d[w]||typeof d[w]!="object")&&(d[w]=g?[]:{}),d=d[w]}else(!d[m]||typeof d[m]!="object")&&(d[m]=g?[]:{}),d=d[m]}let c=n[n.length-1];if(t===1)return Array.isArray(d)?d[Number(c)]=o:d[c]=o,a;if(t===2){let h;if(Array.isArray(d)){let m=Number(c);Array.isArray(d[m])||(d[m]=[]),h=d[m]}else Array.isArray(d[c])||(d[c]=[]),h=d[c];return Array.isArray(o)?h.push(...o):h.push(o),a}return a}function pt(r,e={}){let t=e[r];if(t&&typeof t.multiplier=="number")return t.multiplier===0?"standard":"premium";for(let[s,o]of Object.entries(e))if((r.includes(s)||s.includes(r))&&typeof o.multiplier=="number")return o.multiplier===0?"standard":"premium";return"unknown"}function oi(r,e={},t="provider"){let s=0;for(let[o,n]of Object.entries(r)){let a=e[o]??e["gpt-4o-mini"];if(!a)continue;let d=t==="copilot"&&a.copilotPricing?a.copilotPricing:a,c=n.cachedReadTokens??0,h=n.cacheCreationTokens??0,p=Math.max(0,n.inputTokens-c-h)/1e6*d.inputCostPerMillion,g=c/1e6*(d.cachedInputCostPerMillion??d.inputCostPerMillion),w=h/1e6*(d.cacheCreationCostPerMillion??d.inputCostPerMillion),k=n.outputTokens/1e6*d.outputCostPerMillion;s+=p+g+w+k}return s}function ye(){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,byKind:{},copilotInstructions:0,agentsMd:0,byPath:{}}}var Bt=R(require("fs"));function Uo(r){return!r||!r.kind?"ask":r.kind==="edit"?"edit":r.kind==="ask"?"ask":r.kind==="agent"?!r.id||r.id==="agent"?"agent":typeof r.id=="string"&&r.id.includes("plan-agent/Plan.agent.md")?"plan":typeof r.id=="string"&&r.id.includes(".agent.md")?"customAgent":"agent":"ask"}function Xe(r){return r.startsWith("mcp.")||r.startsWith("mcp_")||r.startsWith("mcp__")}function Gt(r){return r.startsWith("mcp_github_github_")?"mcp_io_github_git_"+r.substring(18):r.startsWith("mcp.github.github.")?"mcp.io.github.git."+r.substring(18):r}function Ze(r,e={}){let t=e[r]??e[r.toLowerCase()];if(t&&t.includes(":"))return t.split(":")[0].trim();if(r.startsWith("mcp_io_github_git_")||r.startsWith("mcp.io.github.git."))return"GitHub MCP (Local)";if(r.startsWith("mcp_github_github_")||r.startsWith("mcp.github.github."))return"GitHub MCP (Remote)";if(r.startsWith("mcp__")){let n=r.slice(5),a=n.indexOf("__");return(a>=0?n.slice(0,a):n)||"unknown"}return r.replace(/^mcp[._]/,"").split(/[._]/)[0]||"unknown"}function Ro(r,e){r.toolCalls.total+=e.toolCalls.total;for(let[t,s]of Object.entries(e.toolCalls.byTool))r.toolCalls.byTool[t]=(r.toolCalls.byTool[t]||0)+s;r.modeUsage.ask+=e.modeUsage.ask,r.modeUsage.edit+=e.modeUsage.edit,r.modeUsage.agent+=e.modeUsage.agent,r.modeUsage.plan+=e.modeUsage.plan,r.modeUsage.customAgent+=e.modeUsage.customAgent,r.modeUsage.cli+=e.modeUsage.cli,r.contextReferences.file+=e.contextReferences.file,r.contextReferences.selection+=e.contextReferences.selection,r.contextReferences.implicitSelection+=e.contextReferences.implicitSelection||0,r.contextReferences.symbol+=e.contextReferences.symbol,r.contextReferences.codebase+=e.contextReferences.codebase,r.contextReferences.workspace+=e.contextReferences.workspace,r.contextReferences.terminal+=e.contextReferences.terminal,r.contextReferences.vscode+=e.contextReferences.vscode,r.contextReferences.terminalLastCommand+=e.contextReferences.terminalLastCommand||0,r.contextReferences.terminalSelection+=e.contextReferences.terminalSelection||0,r.contextReferences.clipboard+=e.contextReferences.clipboard||0,r.contextReferences.changes+=e.contextReferences.changes||0,r.contextReferences.outputPanel+=e.contextReferences.outputPanel||0,r.contextReferences.problemsPanel+=e.contextReferences.problemsPanel||0,r.contextReferences.copilotInstructions+=e.contextReferences.copilotInstructions||0,r.contextReferences.agentsMd+=e.contextReferences.agentsMd||0;for(let[t,s]of Object.entries(e.contextReferences.byKind||{}))r.contextReferences.byKind[t]=(r.contextReferences.byKind[t]||0)+s;for(let[t,s]of Object.entries(e.contextReferences.byPath||{}))r.contextReferences.byPath[t]=(r.contextReferences.byPath[t]||0)+s;r.mcpTools.total+=e.mcpTools.total;for(let[t,s]of Object.entries(e.mcpTools.byServer))r.mcpTools.byServer[t]=(r.mcpTools.byServer[t]||0)+s;for(let[t,s]of Object.entries(e.mcpTools.byTool))r.mcpTools.byTool[t]=(r.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){r.modelSwitching.totalSessions++,r.modelSwitching.modelsPerSession.push(e.modelSwitching.modelCount);for(let t of e.modelSwitching.tiers.standard)r.modelSwitching.standardModels.includes(t)||r.modelSwitching.standardModels.push(t);for(let t of e.modelSwitching.tiers.premium)r.modelSwitching.premiumModels.includes(t)||r.modelSwitching.premiumModels.push(t);for(let t of e.modelSwitching.tiers.unknown)r.modelSwitching.unknownModels.includes(t)||r.modelSwitching.unknownModels.push(t);if(e.modelSwitching.hasMixedTiers&&r.modelSwitching.mixedTierSessions++,r.modelSwitching.standardRequests+=e.modelSwitching.standardRequests||0,r.modelSwitching.premiumRequests+=e.modelSwitching.premiumRequests||0,r.modelSwitching.unknownRequests+=e.modelSwitching.unknownRequests||0,r.modelSwitching.totalRequests+=e.modelSwitching.totalRequests||0,r.modelSwitching.modelsPerSession.length>0){let t=r.modelSwitching.modelsPerSession;r.modelSwitching.averageModelsPerSession=t.reduce((s,o)=>s+o,0)/t.length,r.modelSwitching.maxModelsPerSession=Math.max(...t),r.modelSwitching.minModelsPerSession=Math.min(...t),r.modelSwitching.switchingFrequency=t.filter(s=>s>1).length/t.length*100}}if(e.editScope){r.editScope.singleFileEdits+=e.editScope.singleFileEdits,r.editScope.multiFileEdits+=e.editScope.multiFileEdits,r.editScope.totalEditedFiles+=e.editScope.totalEditedFiles;let t=r.editScope.singleFileEdits+r.editScope.multiFileEdits;r.editScope.avgFilesPerSession=t>0?r.editScope.totalEditedFiles/t:0}if(e.applyUsage&&(r.applyUsage.totalApplies+=e.applyUsage.totalApplies,r.applyUsage.totalCodeBlocks+=e.applyUsage.totalCodeBlocks,r.applyUsage.applyRate=r.applyUsage.totalCodeBlocks>0?r.applyUsage.totalApplies/r.applyUsage.totalCodeBlocks*100:0),e.sessionDuration){r.sessionDuration.totalDurationMs+=e.sessionDuration.totalDurationMs;let t=r.sessions;if(t>0){r.sessionDuration.avgDurationMs=r.sessionDuration.totalDurationMs/t;let s=r.sessionDuration.avgFirstProgressMs*(t-1);r.sessionDuration.avgFirstProgressMs=(s+e.sessionDuration.avgFirstProgressMs)/t;let o=r.sessionDuration.avgTotalElapsedMs*(t-1);r.sessionDuration.avgTotalElapsedMs=(o+e.sessionDuration.avgTotalElapsedMs)/t;let n=r.sessionDuration.avgWaitTimeMs*(t-1);r.sessionDuration.avgWaitTimeMs=(n+e.sessionDuration.avgWaitTimeMs)/t}}if(e.conversationPatterns){r.conversationPatterns.multiTurnSessions+=e.conversationPatterns.multiTurnSessions,r.conversationPatterns.singleTurnSessions+=e.conversationPatterns.singleTurnSessions,r.conversationPatterns.maxTurnsInSession=Math.max(r.conversationPatterns.maxTurnsInSession,e.conversationPatterns.maxTurnsInSession);let t=r.conversationPatterns.multiTurnSessions+r.conversationPatterns.singleTurnSessions;if(t>0){let o=r.conversationPatterns.avgTurnsPerSession*(t-1)+e.conversationPatterns.avgTurnsPerSession;r.conversationPatterns.avgTurnsPerSession=o/t}}if(e.agentTypes&&(r.agentTypes.editsAgent+=e.agentTypes.editsAgent,r.agentTypes.defaultAgent+=e.agentTypes.defaultAgent,r.agentTypes.workspaceAgent+=e.agentTypes.workspaceAgent,r.agentTypes.other+=e.agentTypes.other),e.thinkingEffort){r.thinkingEffortUsage||(r.thinkingEffortUsage={byEffort:{},sessionCount:0,switchCount:0}),r.thinkingEffortUsage.sessionCount++,r.thinkingEffortUsage.switchCount+=e.thinkingEffort.switchCount;for(let[t,s]of Object.entries(e.thinkingEffort.byEffort))r.thinkingEffortUsage.byEffort[t]=(r.thinkingEffortUsage.byEffort[t]||0)+s}}function ia(r,e){let t=r.match(/#file/gi);t&&(e.file+=t.length);let s=r.match(/#selection/gi);s&&(e.selection+=s.length);let o=r.match(/#symbol/gi),n=r.match(/#sym(?![:\w])/gi);o&&(e.symbol+=o.length),n&&(e.symbol+=n.length);let a=r.match(/#codebase/gi);a&&(e.codebase+=a.length);let d=r.match(/#terminalLastCommand/gi);d&&(e.terminalLastCommand+=d.length);let c=r.match(/#terminalSelection/gi);c&&(e.terminalSelection+=c.length);let h=r.match(/#clipboard/gi);h&&(e.clipboard+=h.length);let m=r.match(/#changes/gi);m&&(e.changes+=m.length);let p=r.match(/#outputPanel/gi);p&&(e.outputPanel+=p.length);let g=r.match(/#problemsPanel/gi);g&&(e.problemsPanel+=g.length);let w=r.match(/@workspace/gi);w&&(e.workspace+=w.length);let k=r.match(/@terminal/gi);k&&(e.terminal+=k.length);let b=r.match(/@vscode/gi);b&&(e.vscode+=b.length)}function ii(r,e){if(Array.isArray(r))for(let t of r){if(!t||typeof t!="object")continue;let s=t.kind;typeof s=="string"&&(e.byKind[s]=(e.byKind[s]||0)+1);let o=null;if(s==="reference"&&t.reference?o=t.reference:s==="inlineReference"&&t.inlineReference&&(o=t.inlineReference),o){let n=o.fsPath||o.path;if(typeof n=="string"){let d=n.replace(/\\/g,"/").toLowerCase();d.endsWith("/.github/copilot-instructions.md")||d.includes(".github/copilot-instructions.md")?e.copilotInstructions++:d.endsWith("/agents.md")||d.match(/\/agents\.md$/i)?e.agentsMd++:d.endsWith(".instructions.md")||d.includes(".instructions.md")?e.copilotInstructions++:e.file++;let c=n.length>100?"..."+n.substring(n.length-97):n;e.byPath[c]=(e.byPath[c]||0)+1}let a=o.name;if(typeof a=="string"&&s==="reference"){e.symbol++;let d=`#sym:${a}`;e.byPath[d]=(e.byPath[d]||0)+1}}}}function aa(r,e){if(!(!r||!Array.isArray(r.variables)))for(let t of r.variables){if(!t||typeof t!="object")continue;let s=t.kind;if(typeof s=="string"&&(e.byKind[s]=(e.byKind[s]||0)+1),s==="generic"&&typeof t.name=="string"&&t.name.startsWith("sym:")){e.symbol++;let o=`#${t.name}`;e.byPath[o]=(e.byPath[o]||0)+1}if(s==="promptFile"&&t.value){let o=t.value,n=o.fsPath||o.path||o.external;if(typeof n=="string"){let a=n.replace(/\\/g,"/").toLowerCase();a.endsWith("/.github/copilot-instructions.md")||a.includes(".github/copilot-instructions.md")||a.endsWith("/agents.md")||a.match(/\/agents\.md$/i)}}}}function ri(r){let e=r.modeUsage.ask+r.modeUsage.edit+r.modeUsage.agent+r.modeUsage.cli;r.conversationPatterns={multiTurnSessions:e>1?1:0,singleTurnSessions:e===1?1:0,avgTurnsPerSession:e,maxTurnsInSession:e}}function ni(r,e){if(r.message&&(r.message.text&&ia(r.message.text,e),r.message.parts))for(let t of r.message.parts)t.text&&ia(t.text,e);r.contentReferences&&Array.isArray(r.contentReferences)&&ii(r.contentReferences,e),r.variableData&&aa(r.variableData,e)}function Fo(r){try{let t=Bt.readFileSync(r,"utf8").trim().split(`
|
|
43
|
-
|
|
44
|
-
`),
|
|
45
|
-
|
|
46
|
-
`).
|
|
47
|
-
`),h="gpt-4o",m={},p=!1,g=null;for(let k of c)if(k.trim())try{let b=JSON.parse(k);if(typeof b.kind=="number"&&(p=!0,m=ks(m,b)),b.type==="session.start"&&typeof b.data?.selectedModel=="string"&&(h=b.data.selectedModel),b.kind===0){let v=b.v?.selectedModel?.identifier||b.v?.selectedModel?.metadata?.id||b.v?.inputState?.selectedModel?.metadata?.id;v&&(h=v.replace(/^copilot\//,""))}if(b.kind===2&&b.k?.[0]==="selectedModel"){let v=b.v?.identifier||b.v?.metadata?.id;v&&(h=v.replace(/^copilot\//,""))}let y=b.model||h;if(s[y]||(s[y]={inputTokens:0,outputTokens:0}),!p)if(b.type==="session.shutdown"&&b.data?.modelMetrics){g||(g={});for(let[v,C]of Object.entries(b.data.modelMetrics)){let P=C?.usage;P&&(g[v]||(g[v]={inputTokens:0,outputTokens:0}),g[v].inputTokens+=typeof P.inputTokens=="number"?P.inputTokens:0,g[v].outputTokens+=typeof P.outputTokens=="number"?P.outputTokens:0)}}else b.type==="user.message"&&b.data?.content?s[y].inputTokens+=ee(b.data.content,y,r.tokenEstimators):b.type==="assistant.message"&&b.data?.content?s[y].outputTokens+=ee(b.data.content,y,r.tokenEstimators):b.type==="tool.result"&&b.data?.output&&(s[y].inputTokens+=ee(b.data.output,y,r.tokenEstimators))}catch{}if(!p&&g)return g;if(p&&m.requests&&Array.isArray(m.requests))for(let k of m.requests){if(!k||!k.requestId)continue;let b=h;if(k.modelId?b=k.modelId.replace(/^copilot\//,""):k.result?.metadata?.modelId?b=k.result.metadata.modelId.replace(/^copilot\//,""):k.result?.details&&(b=Tt(k,r.modelPricing)),s[b]||(s[b]={inputTokens:0,outputTokens:0}),k.result?.usage){let y=k.result.usage;s[b].inputTokens+=typeof y.promptTokens=="number"?y.promptTokens:0,s[b].outputTokens+=typeof y.completionTokens=="number"?y.completionTokens:0}else if(typeof k.result?.promptTokens=="number"&&typeof k.result?.outputTokens=="number")s[b].inputTokens+=k.result.promptTokens,s[b].outputTokens+=k.result.outputTokens;else if(k.result?.metadata&&typeof k.result.metadata.promptTokens=="number"&&typeof k.result.metadata.outputTokens=="number")s[b].inputTokens+=k.result.metadata.promptTokens,s[b].outputTokens+=k.result.metadata.outputTokens;else if(k.message?.text&&(s[b].inputTokens+=ee(k.message.text,b,r.tokenEstimators)),k.response&&Array.isArray(k.response))for(let y of k.response)y?.value&&(s[b].outputTokens+=ee(y.value,b,r.tokenEstimators));if(k.response&&Array.isArray(k.response))for(let y of k.response){let v=vt(y);if(v){let C=v.modelName||b;s[C]||(s[C]={inputTokens:0,outputTokens:0}),v.prompt&&(s[C].inputTokens+=ee(v.prompt,C,r.tokenEstimators)),v.result&&(s[C].outputTokens+=ee(v.result,C,r.tokenEstimators))}}}let w=si(c);for(let[k,b]of w){let y=m.requests?.[k];if(!y||y.result?.usage||typeof y.result?.promptTokens=="number"||y.result?.metadata&&typeof y.result.metadata.promptTokens=="number")continue;let v=h;y.modelId&&(v=y.modelId.replace(/^copilot\//,"")),s[v]||(s[v]={inputTokens:0,outputTokens:0}),s[v].inputTokens+=b.promptTokens,s[v].outputTokens+=b.outputTokens}return s}let d=JSON.parse(n);if(d.requests&&Array.isArray(d.requests))for(let c of d.requests){let h=Tt(c,r.modelPricing);if(s[h]||(s[h]={inputTokens:0,outputTokens:0}),c.result?.usage){let m=c.result.usage;s[h].inputTokens+=typeof m.promptTokens=="number"?m.promptTokens:0,s[h].outputTokens+=typeof m.completionTokens=="number"?m.completionTokens:0}else if(typeof c.result?.promptTokens=="number"&&typeof c.result?.outputTokens=="number")s[h].inputTokens+=c.result.promptTokens,s[h].outputTokens+=c.result.outputTokens;else if(c.result?.metadata&&typeof c.result.metadata.promptTokens=="number"&&typeof c.result.metadata.outputTokens=="number")s[h].inputTokens+=c.result.metadata.promptTokens,s[h].outputTokens+=c.result.metadata.outputTokens;else{if(c.message&&c.message.parts){for(let m of c.message.parts)if(m.text){let p=ee(m.text,h,r.tokenEstimators);s[h].inputTokens+=p}}if(c.response&&Array.isArray(c.response)){for(let m of c.response)if(m?.value){let p=ee(m.value,h,r.tokenEstimators);s[h].outputTokens+=p}}}if(c.response&&Array.isArray(c.response))for(let m of c.response){let p=vt(m);if(p){let g=p.modelName||h;s[g]||(s[g]={inputTokens:0,outputTokens:0}),p.prompt&&(s[g].inputTokens+=ee(p.prompt,g,r.tokenEstimators)),p.result&&(s[g].outputTokens+=ee(p.result,g,r.tokenEstimators))}}}}catch(n){r.warn(`Error getting model usage from ${e}: ${n}`)}return s}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)?mt.join(this.openCode.getOpenCodeDataDir(),"opencode.db"):e}async stat(e){return this.openCode.statSessionFile(e)}async getTokens(e){let t=await this.openCode.getTokensFromOpenCodeSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return this.openCode.countOpenCodeInteractions(e)}async getModelUsage(e){return this.openCode.getOpenCodeModelUsage(e)}async getMeta(e){let t=[],s,o,n=this.openCode.getOpenCodeSessionId(e),a=null;if(this.openCode.isOpenCodeDbSession(e)&&n)a=await this.openCode.readOpenCodeDbSession(n);else try{let c=await ss.promises.readFile(e,"utf8");a=JSON.parse(c)}catch{}a&&(s=a.title||a.slug,o=a.directory||void 0,a.time?.created&&t.push(a.time.created),a.time?.updated&&t.push(a.time.updated));let d=await this.openCode.getOpenCodeMessagesForSession(e);for(let c of d)c.time?.created&&t.push(c.time.created),c.time?.completed&&t.push(c.time.completed);return t.sort((c,h)=>c-h),{title:s,firstInteraction:t.length>0?new Date(t[0]).toISOString():null,lastInteraction:t.length>0?new Date(t[t.length-1]).toISOString():null,workspacePath:o}}getEditorRoot(e){return this.openCode.getOpenCodeDataDir()}async discover(e){let t=this.getCandidatePaths(),s=[],o=this.openCode.getOpenCodeDataDir(),n=mt.join(o,"storage","session"),a=mt.join(o,"opencode.db");e(`\u{1F4C1} Checking OpenCode JSON path: ${n}`),e(`\u{1F4C1} Checking OpenCode DB path: ${a}`);try{await ss.promises.access(n);let d=async h=>{try{let m=await ss.promises.readdir(h,{withFileTypes:!0});for(let p of m)if(p.isDirectory())await d(mt.join(h,p.name));else if(p.name.startsWith("ses_")&&p.name.endsWith(".json")){let g=mt.join(h,p.name);try{(await ss.promises.stat(g)).size>0&&s.push(g)}catch{}}}catch{}};await d(n);let c=s.length;c>0&&e(`\u{1F4C4} Found ${c} session files in OpenCode storage`)}catch{}try{await ss.promises.access(a);let d=new Set(s.filter(m=>this.openCode.isOpenCodeSessionFile(m)).map(m=>this.openCode.getOpenCodeSessionId(m)).filter(Boolean)),c=await this.openCode.discoverOpenCodeDbSessions(),h=0;for(let m of c)d.has(m)||(s.push(mt.join(o,`opencode.db#${m}`)),h++);h>0&&e(`\u{1F4C4} Found ${h} additional session(s) in OpenCode database`)}catch{}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){let e=this.openCode.getOpenCodeDataDir();return[{path:mt.join(e,"storage","session"),source:"OpenCode (JSON)"},{path:mt.join(e,"opencode.db"),source:"OpenCode (DB)"}]}async buildTurns(e){let t=[],s=await this.openCode.getOpenCodeMessagesForSession(e);if(s.length>0){let o=0,n=0;for(let a=0;a<s.length;a++){let d=s[a];if(d.role!=="user")continue;o++;let c=s.filter((P,M)=>M>a&&P.role==="assistant"&&P.parentID===d.id),m=(await this.openCode.getOpenCodePartsForMessage(d.id)).filter(P=>P.type==="text").map(P=>P.text||"").join(`
|
|
48
|
-
`),
|
|
49
|
-
`),
|
|
50
|
-
`)
|
|
51
|
-
`):"",m="",p=0,g=0,w=null,k=[],b=[];for(let C of n){let P=C.message;!w&&P?.model&&(w=P.model);let M=P?.usage;M&&(p+=(M.input_tokens||0)+(M.cache_creation_input_tokens||0)+(M.cache_read_input_tokens||0),g+=M.output_tokens||0);let F=Array.isArray(P?.content)?P.content:[];for(let D of F)if(D.type==="text")m+=D.text||"";else if(D.type==="tool_use"){let N=D.name||"unknown";this.isMcpToolFn(N)?b.push({server:this.extractMcpServerNameFn(N),tool:N}):k.push({toolName:N,arguments:D.input?JSON.stringify(D.input):void 0})}}let y=w||"claude-sonnet-4-6",v=p>0||g>0?{promptTokens:p,completionTokens:g}:void 0;t.push({turnNumber:t.length+1,timestamp:o.timestamp?new Date(o.timestamp).toISOString():null,mode:"agent",userMessage:h,assistantResponse:m,model:y,toolCalls:k,contextReferences:ye(),mcpTools:b,inputTokensEstimate:p||this.estimateTokensFn(h,y),outputTokensEstimate:g||this.estimateTokensFn(m,y),thinkingTokensEstimate:0,actualUsage:v})},d=c=>{let h=c.message?.content;if(typeof h=="string")return!!h.trim();if(!Array.isArray(h))return!1;let m=h.some(g=>g.type==="text"),p=h.some(g=>g.type==="tool_result");return m&&!p};for(let c of s)c.type==="user"&&!c.isSidechain&&c.message?.role==="user"&&d(c)?(a(),o=c,n.length=0):c.type==="assistant"&&c.message?.stop_reason&&c.message?.role==="assistant"&&n.push(c);return a(),{turns:t}}async analyzeUsage(e,t){let s=ke(),o=await Fo(e),n=[];for(let c of o)if(c.type==="user"&&c.message?.role==="user"&&!c.isSidechain){s.modeUsage.ask++;let h=li(c.message?.content);if(h){let m=`__slash__${h}`;s.toolCalls.byTool[m]=(s.toolCalls.byTool[m]||0)+1}}else if(c.type==="assistant"){let h=qt(c.message?.model||"unknown");n.push(h);let m=Array.isArray(c.message?.content)?c.message.content:[];for(let p of m)if(p?.type==="tool_use"){s.toolCalls.total++;let g=String(p.name||"tool");s.toolCalls.byTool[g]=(s.toolCalls.byTool[g]||0)+1}}let a=[...new Set(n)];s.modelSwitching.uniqueModels=a,s.modelSwitching.modelCount=a.length,s.modelSwitching.totalRequests=n.length;let d=0;for(let c=1;c<n.length;c++)n[c]!==n[c-1]&&d++;return s.modelSwitching.switchCount=d,De(t.modelPricing,a,n,s),s}};var pa=R(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)}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),o=this.visualStudio.getSessionTimestamps(t),n=[];return o.timeCreated&&n.push(new Date(o.timeCreated).getTime()),o.timeUpdated&&n.push(new Date(o.timeUpdated).getTime()),n.sort((a,d)=>a-d),{title:s,firstInteraction:n.length>0?new Date(n[0]).toISOString():null,lastInteraction:n.length>0?new Date(n[n.length-1]).toISOString():null}}getEditorRoot(e){return pa.dirname(e)}skipBackendSync=!0;async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=this.visualStudio.discoverSessions();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Visual Studio Copilot`),s.push(...o))}catch(o){e(`Could not read Visual Studio session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.visualStudio.getLogDir(),source:"Visual Studio (log dir)"}]}getRawFileContent(e){let s=this.visualStudio.decodeSessionFile(e).map((o,n)=>n===0?o:o?.[1]??o);return JSON.stringify(s,null,2)}async buildTurns(e){let t=[],s=this.visualStudio.decodeSessionFile(e),o=0;for(let n=1;n<s.length;n+=2){let a=s[n],d=s[n+1];if(!a)continue;let c=a[1],h=d?.[1];o++;let m=this.visualStudio.extractTextFromContent(c?.Content||[]),p=d?this.visualStudio.extractTextFromContent(h?.Content||[]):"",g=this.visualStudio.getModelId(h??c,!h),w=this.visualStudio.extractContextText(c?.Context),k=this.estimateTokens(m+w,g??"gpt-4"),b=d?this.estimateTokens(p,g??"gpt-4"):0,y=[];for(let v of h?.Content||[]){let C=Array.isArray(v)?v[1]:null;C?.Function&&y.push({toolName:String(C.Function.Description||"tool"),result:typeof C.Function.Result=="string"?C.Function.Result:void 0})}t.push({turnNumber:o,timestamp:c?.Timestamp?new Date(c.Timestamp).toISOString():null,mode:"ask",userMessage:m,assistantResponse:p,model:g,toolCalls:y,contextReferences:ye(),mcpTools:[],inputTokensEstimate:k,outputTokensEstimate:b,thinkingTokensEstimate:0})}return{turns:t}}async analyzeUsage(e,t){let s=ke(),o=this.visualStudio.decodeSessionFile(e),n=[];for(let c=1;c<o.length;c++){let h=c%2===1,m=o[c]?.[1];if(h)s.modeUsage.ask++;else{let p=this.visualStudio.getModelId(m,!1);p&&n.push(p);for(let g of m?.Content??[]){let w=Array.isArray(g)?g[1]:null;if(w?.Function){s.toolCalls.total++;let k=String(w.Function.Name||w.Function.Description||"tool");if(Xe(k)){s.mcpTools.total++;let b=Ze(k,t.toolNameMap);s.mcpTools.byServer[b]=(s.mcpTools.byServer[b]||0)+1;let y=Gt(k);s.mcpTools.byTool[y]=(s.mcpTools.byTool[y]||0)+1,s.toolCalls.total--}else s.toolCalls.byTool[k]=(s.toolCalls.byTool[k]||0)+1}}}}let a=[...new Set(n)];s.modelSwitching.uniqueModels=a,s.modelSwitching.modelCount=a.length,s.modelSwitching.totalRequests=n.length;let d=0;for(let c=1;c<n.length;c++)n[c]!==n[c-1]&&d++;return s.modelSwitching.switchCount=d,De(t.modelPricing,a,n,s),s}};var ma=R(require("fs"));var Es=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 ma.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 o=this.mistralVibe.discoverSessions();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Mistral Vibe (~/.vibe/logs/session)`),s.push(...o))}catch(o){e(`Could not read Mistral Vibe session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.mistralVibe.getSessionLogDir(),source:"Mistral Vibe"}]}async buildTurns(e){let t=[],s=this.mistralVibe.readSessionMessages(e),o=this.mistralVibe.getSessionMeta(e),n=this.mistralVibe.getTokensFromSession(e),a=o.model||"devstral",d=[];for(let c=0;c<s.length;c++)s[c].role==="user"&&s[c].injected!==!0&&d.push(c);for(let c=0;c<d.length;c++){let h=d[c],m=c+1<d.length?d[c+1]:s.length,p=s[h],g=typeof p.content=="string"?p.content:"",w="",k=[];for(let b=h+1;b<m;b++){let y=s[b];if(y.role==="assistant"){if(typeof y.content=="string"&&(w+=y.content),Array.isArray(y.tool_calls))for(let v of y.tool_calls)k.push({toolName:v.function?.name||v.name||"unknown",arguments:v.function?.arguments?JSON.stringify(v.function.arguments):void 0})}else if(y.role==="tool"){let v=k[k.length-1];v&&(v.result=typeof y.content=="string"?y.content:void 0)}}t.push({turnNumber:c+1,timestamp:o.firstInteraction,mode:"cli",userMessage:g,assistantResponse:w,model:a,toolCalls:k,contextReferences:ye(),mcpTools:[],inputTokensEstimate:0,outputTokensEstimate:0,thinkingTokensEstimate:0})}return{turns:t,actualTokens:n.tokens}}async analyzeUsage(e,t){let s=ke(),o=this.mistralVibe.readSessionMessages(e),a=this.mistralVibe.getSessionMeta(e).model||"devstral",d=[];for(let h of o)if(h.role==="user"&&h.injected!==!0)s.modeUsage.cli++;else if(h.role==="assistant"&&(d.push(a),Array.isArray(h.tool_calls)))for(let m of h.tool_calls){s.toolCalls.total++;let p=String(m.function?.name||m.name||"tool");s.toolCalls.byTool[p]=(s.toolCalls.byTool[p]||0)+1}let c=[...new Set(d)];return s.modelSwitching.uniqueModels=c,s.modelSwitching.modelCount=c.length,s.modelSwitching.totalRequests=d.length,s.modelSwitching.switchCount=0,De(t.modelPricing,c,d,s),s}};var qe=R(require("fs")),Q=R(require("path")),Us=R(require("os"));var Is=["Code","Code - Insiders","Code - Exploration","VSCodium","Cursor"],ga=new Set(["Public","Default","Default User","All Users"]);function ci(){return Us.platform()==="linux"&&(typeof process.env.WSL_DISTRO_NAME=="string"||typeof process.env.WSL_INTEROP=="string")}function ha(){let r=Us.platform(),e=Us.homedir(),t=[];if(r==="win32"){let s=process.env.APPDATA||Q.join(e,"AppData","Roaming");for(let o of Is)t.push(Q.join(s,o,"User"))}else if(r==="darwin")for(let s of Is)t.push(Q.join(e,"Library","Application Support",s,"User"));else{let s=process.env.XDG_CONFIG_HOME||Q.join(e,".config");for(let o of Is)t.push(Q.join(s,o,"User"))}return t.push(Q.join(e,".vscode-server","data","User"),Q.join(e,".vscode-server-insiders","data","User"),Q.join(e,".vscode-remote","data","User"),Q.join("/tmp",".vscode-server","data","User"),Q.join("/workspace",".vscode-server","data","User")),t}async function gu(){if(!ci())return[];let r=[],e=[],t=process.env.USERPROFILE;if(t){let o=t.match(/^\/mnt\/[a-z]\/Users\/([^/]+)/);o&&e.push(o[1])}let s="/mnt/c/Users";try{let o=await qe.promises.readdir(s,{withFileTypes:!0});for(let n of o){if(!n.isDirectory())continue;let a=n.name;ga.has(a)||a.startsWith(".")||e.includes(a)||e.push(a)}}catch{return[]}for(let o of e){let n=Q.join(s,o,"AppData","Roaming");for(let a of Is)r.push(Q.join(n,a,"User"))}return r}function yu(){if(!ci())return[];let r=[],e="/mnt/c/Users";try{let t=qe.readdirSync(e,{withFileTypes:!0});for(let s of t)if(!(!s.isDirectory()||s.name.startsWith(".")||ga.has(s.name)))for(let o of Is)r.push(Q.join(e,s.name,"AppData","Roaming",o,"User"))}catch{}return r}var _u=["embeddings","index","cache","preferences","settings","config","workspacesessions","globalsessions","api.json"];function bu(r){let e=r.toLowerCase();return _u.some(t=>e.includes(t))}async function Ds(r){try{return await qe.promises.access(r),!0}catch{return!1}}async function fa(r,e,t,s){if(r.length===0)return;let o=0,n=Array.from({length:Math.min(t,r.length)},async()=>{for(;o<r.length;){let a=o++;try{await e(r[a],a)}catch(d){s?.(r[a],a,d)}}});await Promise.all(n)}async function ya(r,e,t){let s;try{s=await qe.promises.readdir(r,{withFileTypes:!0})}catch(o){t(`Could not scan directory ${r}: ${o}`);return}for(let o of s){let n=Q.join(r,o.name);if(o.isDirectory()){await ya(n,e,t);continue}if(!(!o.name.endsWith(".json")&&!o.name.endsWith(".jsonl"))&&!bu(o.name))try{(await qe.promises.stat(n)).size>0&&e.push(n)}catch{}}}var Os=class{id="copilotchat";displayName="GitHub Copilot Chat";handles(e){return!1}getBackingPath(e){return e}async stat(e){return qe.promises.stat(e)}async getTokens(e){try{let t=await qe.promises.readFile(e,"utf8");return ts(t)?{tokens:0,thinkingTokens:0,actualTokens:0}:e.endsWith(".jsonl")||dt(t)?Oo(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):Q.dirname(e)}getCandidatePaths(){let e=[];for(let t of ha())e.push({path:t,source:"VS Code"});for(let t of yu())e.push({path:t,source:"VS Code (Windows via WSL)"});return e}async discover(e){let t=this.getCandidatePaths(),s=[],o=ha();if(ci()){e("\u{1FA9F} WSL environment detected \u2014 probing Windows-side VS Code paths");let d=await gu();d.length>0?(e(`\u{1FA9F} Adding ${d.length} Windows-side candidate paths from WSL`),o.push(...d)):e("\u{1FA9F} No Windows-side paths found (Windows drive may not be mounted)")}e(`\u{1F4C2} Considering ${o.length} candidate VS Code paths`);let n=await Promise.all(o.map(d=>Ds(d).catch(()=>!1))),a=o.filter((d,c)=>n[c]);return e(`\u2705 Found ${a.length} of ${o.length} VS Code paths exist on disk`),await fa(a,async d=>{let c=Q.basename(Q.dirname(d)),h=Q.join(d,"workspaceStorage");try{if(await Ds(h)){let p=await qe.promises.readdir(h);await fa(p,async g=>{let w=[Q.join(h,g,"chatSessions"),Q.join(h,g,"GitHub.copilot-chat","chatSessions"),Q.join(h,g,"github.copilot-chat","chatSessions"),Q.join(h,g,"GitHub.copilot","chatSessions"),Q.join(h,g,"github.copilot","chatSessions")];for(let k of w)try{if(!await Ds(k))continue;let b=(await qe.promises.readdir(k)).filter(y=>y.endsWith(".json")||y.endsWith(".jsonl")).map(y=>Q.join(k,y));b.length>0&&(e(`\u{1F4C4} Found ${b.length} session files in ${c}/workspaceStorage/${g}`),s.push(...b))}catch{}},6)}}catch(p){e(`Could not check workspace storage path ${h}: ${p}`)}let m=Q.join(d,"globalStorage","emptyWindowChatSessions");try{if(await Ds(m)){let p=(await qe.promises.readdir(m)).filter(g=>g.endsWith(".json")||g.endsWith(".jsonl")).map(g=>Q.join(m,g));p.length>0&&(e(`\u{1F4C4} Found ${p.length} session files in ${c}/globalStorage/emptyWindowChatSessions`),s.push(...p))}}catch(p){e(`Could not check global storage path ${m}: ${p}`)}for(let p of["GitHub.copilot-chat","github.copilot-chat","GitHub.copilot","github.copilot"]){let g=Q.join(d,"globalStorage",p);try{await Ds(g)&&(e(`\u{1F4C4} Scanning ${c}/globalStorage/${p}`),await ya(g,s,e))}catch(w){e(`Could not check Copilot Chat global storage path ${g}: ${w}`)}}},4,(d,c,h)=>{e(`Failed to scan VS Code user path ${d}: ${h instanceof Error?h.message:String(h)}`)}),{sessionFiles:s,candidatePaths:t}}};var Rs=R(require("fs")),No=R(require("path")),_a=R(require("os"));function ui(){return No.join(_a.homedir(),".copilot","session-state")}async function Cu(r){try{return await Rs.promises.access(r),!0}catch{return!1}}var Fs=class{id="copilotcli";displayName="GitHub Copilot CLI";handles(e){return!1}getBackingPath(e){return e}async stat(e){return Rs.promises.stat(e)}async getTokens(e){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){return ui()}getCandidatePaths(){return[{path:ui(),source:"Copilot CLI"}]}async discover(e){let t=this.getCandidatePaths(),s=[],o=ui();try{if(!await Cu(o))return{sessionFiles:s,candidatePaths:t};let n;try{n=await Rs.promises.readdir(o,{withFileTypes:!0})}catch(h){return e(`Could not read Copilot CLI session path in ${o}: ${h}`),{sessionFiles:s,candidatePaths:t}}let a=n.filter(h=>!h.isDirectory()&&(h.name.endsWith(".json")||h.name.endsWith(".jsonl"))).map(h=>No.join(o,h.name));a.length>0&&(e(`\u{1F4C4} Found ${a.length} session files in Copilot CLI directory`),s.push(...a));let d=n.filter(h=>h.isDirectory()),c=(await Promise.all(d.map(async h=>{let m=No.join(o,h.name,"events.jsonl");try{return(await Rs.promises.stat(m)).size>0?m:null}catch{return null}}))).filter(h=>h!==null);c.length>0&&(e(`\u{1F4C4} Found ${c.length} session files in Copilot CLI subdirectories`),s.push(...c))}catch(n){e(`Could not check Copilot CLI session path ${o}: ${n}`)}return{sessionFiles:s,candidatePaths:t}}};function Pe(r){return typeof r=="object"&&r!==null}function wu(r){return typeof r!="string"?!1:!["__proto__","prototype","constructor","hasOwnProperty"].includes(r)&&!r.startsWith("__")}function Ns(r){return/^\d+$/.test(r)}function di(r,e){if(typeof r!="string")return e;let t=r.trim();return t?t.startsWith("copilot/")?t.substring(8):t:e}function Su(r,e){if(!Pe(e))return r;let t=e.kind,s=e.k,o=e.v;if(t===0)return o;if(!Array.isArray(s)||s.length===0)return r;let n=s.map(String);for(let m of n)if(!wu(m))return r;let a=Pe(r)?r:Object.create(null),d=a,c=(m,p,g)=>{let w=Ns(g),k=m[p];return Pe(k)||(k=w?[]:Object.create(null),m[p]=k),k};for(let m=0;m<n.length-1;m++){let p=n[m],g=n[m+1];if(Array.isArray(d)&&Ns(p)){let w=Number(p),k=d[w];Pe(k)||(k=Ns(g)?[]:Object.create(null),d[w]=k),d=k;continue}if(!Pe(d))return a;d=c(d,p,g)}let h=n[n.length-1];if(t===1)return Array.isArray(d)&&Ns(h)?(d[Number(h)]=o,a):(Pe(d)&&Object.defineProperty(d,h,{value:o,writable:!0,enumerable:!0,configurable:!0}),a);if(t===2){let m;if(Array.isArray(d)&&Ns(h)){let p=Number(h);Array.isArray(d[p])||(d[p]=[]),m=d[p]}else Pe(d)&&(Array.isArray(d[h])||Object.defineProperty(d,h,{value:[],writable:!0,enumerable:!0,configurable:!0}),m=d[h]);return Array.isArray(m)&&(Array.isArray(o)?m.push(...o):m.push(o)),a}return a}function ku(r){if(!Array.isArray(r))return{responseText:"",thinkingText:""};let e="",t="";for(let s of r){if(!Pe(s))continue;if(s.kind==="thinking"){let a=s.value;typeof a=="string"&&a&&(t+=a);continue}let o=Pe(s.content)?s.content.value:void 0,n=s.value;if(typeof o=="string"&&o){e+=o;continue}typeof n=="string"&&n&&(e+=n)}return{responseText:e,thinkingText:t}}function ba(r,e,t,s){let o={},n=0,a=0,d=0,c=0,h=0,m,p="gpt-4o",g=y=>typeof y=="string"&&y?y:p,w=(y,v)=>{let C=g(y);o[C]||(o[C]={inputTokens:0,outputTokens:0});let P=t(v,C);o[C].inputTokens+=P,a+=P},k=(y,v)=>{let C=g(y);o[C]||(o[C]={inputTokens:0,outputTokens:0});let P=t(v,C);o[C].outputTokens+=P,d+=P};if(r.endsWith(".jsonl")){let y=e.split(/\r?\n/).filter(C=>C.trim()),v=!1;if(y.length>0)try{let C=JSON.parse(y[0]);C&&typeof C.kind=="number"&&(v=!0)}catch{}if(v){let C=Object.create(null);for(let M of y)try{let F=JSON.parse(M);C=Su(C,F)}catch{}let P=Pe(C)&&Array.isArray(C.requests)?C.requests:[];if(P.length>0){n=P.filter(M=>Pe(M)&&Pe(M.message)&&typeof M.message.text=="string"&&M.message.text.trim()).length;for(let M of P){if(!Pe(M))continue;let F=di(M.modelId??M.selectedModel?.identifier??M.model,p),D=s?s(M):void 0,N=di(D,""),V=N&&N!==p?N:F,J=M.message;Pe(J)&&typeof J.text=="string"&&w(V,J.text);let{responseText:W,thinkingText:Me}=ku(M.response);W&&k(V,W),Me&&(c+=t(Me,V));let ve=M.response;if(Array.isArray(ve))for(let Z of ve){let Ue=vt(Z);if(Ue){let Ae=Ue.modelName||V;Ue.prompt&&w(Ae,Ue.prompt),Ue.result&&k(Ae,Ue.result)}}}}return{tokens:a+d+c,interactions:n,modelUsage:o,thinkingTokens:c,actualTokens:0}}try{m=JSON.parse(e.trim())}catch{return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0}}}if(!m)try{m=JSON.parse(e)}catch{return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0}}let b=Array.isArray(m.requests)?m.requests:Array.isArray(m.history)?m.history:[];n=b.length;for(let y of b){let v=s?s(y):y?.model||p,C=di(v,p);if(o[C]||(o[C]={inputTokens:0,outputTokens:0}),y?.message?.parts){for(let M of y.message.parts)if(typeof M?.text=="string"&&M.text){let F=t(M.text,C);o[C].inputTokens+=F,a+=F}}else if(typeof y?.message?.text=="string"){let M=t(y.message.text,C);o[C].inputTokens+=M,a+=M}let P=Array.isArray(y?.response)?y.response:Array.isArray(y?.responses)?y.responses:[];for(let M of P){if(M?.kind==="thinking"&&typeof M?.value=="string"&&M.value){c+=t(M.value,C);continue}let F=vt(M);if(F){let D=F.modelName||C;F.prompt&&w(D,F.prompt),F.result&&k(D,F.result);continue}if(typeof M?.value=="string"&&M.value){let D=t(M.value,C);o[C].outputTokens+=D,d+=D}if(M?.message?.parts){for(let D of M.message.parts)if(typeof D?.text=="string"&&D.text){let N=t(D.text,C);o[C].outputTokens+=N,d+=N}}}if(y?.result?.usage){let M=y.result.usage,F=typeof M.promptTokens=="number"?M.promptTokens:0,D=typeof M.completionTokens=="number"?M.completionTokens:0;h+=F+D}else typeof y?.result?.promptTokens=="number"&&typeof y?.result?.outputTokens=="number"?h+=y.result.promptTokens+y.result.outputTokens:y?.result?.metadata&&typeof y?.result?.metadata?.promptTokens=="number"&&typeof y?.result?.metadata?.outputTokens=="number"&&(h+=y.result.metadata.promptTokens+y.result.metadata.outputTokens)}return{tokens:a+d+c,interactions:n,modelUsage:o,thinkingTokens:c,actualTokens:h}}var xt=R(require("fs")),mi=R(require("path")),wa=R(require("os")),Sa=2,Ca=2e3,ka=mi.join(wa.homedir(),".copilot-token-tracker"),pi=mi.join(ka,"cli-cache.json"),We=new Map,os=!0,va=!1;function hi(){os=!1,We.clear()}function fi(){if(os)try{if(!xt.existsSync(pi))return;let r=xt.readFileSync(pi,"utf-8"),e=JSON.parse(r);if(e.version!==Sa){We.clear();return}We=new Map(Object.entries(e.entries))}catch{We.clear()}}function gi(){if(!(!os||!va))try{if(We.size>Ca){let e=[...We.entries()].sort((t,s)=>s[1].mtime-t[1].mtime);We=new Map(e.slice(0,Ca))}xt.mkdirSync(ka,{recursive:!0});let r={version:Sa,entries:Object.fromEntries(We)};xt.writeFileSync(pi,JSON.stringify(r),"utf-8")}catch{}}function Ta(r,e,t){if(!os)return null;let s=We.get(r);return!s||s.mtime!==e||s.size!==t?null:{...s.data,lastModified:new Date(s.data.lastModified)}}function yi(r,e,t,s){os&&(va=!0,We.set(r,{mtime:e,size:t,data:{...s,lastModified:s.lastModified.toISOString()}}))}function _i(){return{entries:We.size,enabled:os}}var xa={$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}};var Pa={$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-04-27",sources:[{name:"OpenAI API Pricing",url:"https://developers.openai.com/api/docs/pricing",retrievedDate:"2026-04-24"},{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},"gpt-5-mini":{inputCostPerMillion:.25,outputCostPerMillion:2,category:"GPT-5 models",tier:"standard",multiplier:0,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},"gpt-5.1-codex":{inputCostPerMillion:1.25,outputCostPerMillion:10,category:"GPT-5 models",tier:"premium",multiplier:1},"gpt-5.1-codex-max":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"premium",multiplier:1},"gpt-5.1-codex-mini":{inputCostPerMillion:.25,outputCostPerMillion:2,category:"GPT-5 models",tier:"premium",multiplier:.33},"gpt-5.2":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"premium",multiplier:1,copilotPricing:{inputCostPerMillion:1.75,cachedInputCostPerMillion:.175,outputCostPerMillion:14,releaseStatus:"GA",category:"Versatile"}},"gpt-5.2-codex":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"premium",multiplier:1,copilotPricing:{inputCostPerMillion:1.75,cachedInputCostPerMillion:.175,outputCostPerMillion:14,releaseStatus:"GA",category:"Powerful"}},"gpt-5.2-pro":{inputCostPerMillion:21,outputCostPerMillion:168,category:"GPT-5 models",tier:"premium",multiplier:1},"gpt-5.3-codex":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"premium",multiplier:1,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:"standard",multiplier:0,displayNames:["GPT-5.4 mini"],copilotPricing:{inputCostPerMillion:.75,cachedInputCostPerMillion:.075,outputCostPerMillion:4.5,releaseStatus:"GA",category:"Lightweight"}},"gpt-5.4-nano":{inputCostPerMillion:.2,cachedInputCostPerMillion:.02,outputCostPerMillion:1.25,category:"GPT-5 models",tier:"standard",multiplier:0,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:"GA",category:"Versatile"}},"gpt-4.1-mini":{inputCostPerMillion:.4,cachedInputCostPerMillion:.1,outputCostPerMillion:1.6,category:"GPT-4 models",tier:"standard",multiplier:0},"gpt-4.1-nano":{inputCostPerMillion:.1,cachedInputCostPerMillion:.025,outputCostPerMillion:.4,category:"GPT-4 models",tier:"standard",multiplier:0},"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,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:3,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},"claude-haiku-4.5":{inputCostPerMillion:1,outputCostPerMillion:5,cachedInputCostPerMillion:.1,cacheCreationCostPerMillion:1.25,category:"Claude models (Anthropic)",tier:"premium",multiplier:.33,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},"claude-opus-4.5":{inputCostPerMillion:5,outputCostPerMillion:25,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,category:"Claude models (Anthropic)",tier:"premium",multiplier:3,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,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:3,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,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,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},"gemini-2.5-flash-lite":{inputCostPerMillion:.1,outputCostPerMillion:.4,category:"Google Gemini models",tier:"unknown",multiplier:1},"gemini-2.0-flash":{inputCostPerMillion:.1,outputCostPerMillion:.4,category:"Google Gemini models",tier:"standard",multiplier:0},"gemini-2.0-flash-lite":{inputCostPerMillion:.075,outputCostPerMillion:.3,category:"Google Gemini models",tier:"standard",multiplier:0},"gemini-3-flash":{inputCostPerMillion:.5,outputCostPerMillion:3,category:"Google Gemini models",tier:"premium",multiplier:.33,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,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,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"}}}};var Ma={unknown:"Unknown",run_in_terminal:"Run In Terminal",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_list_tags:"GitHub MCP (Local): List Tags",mcp_io_github_git_search_repositories:"GitHub MCP (Local): Search Repositories",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-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_docs_search:"Microsoft Docs MCP: 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_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_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",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",search_subagent:"Search Subagent",execution_subagent:"Execution Subagent",apply_patch:"Apply Patch",ask_questions:"Ask Questions",AskUserQuestion:"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_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",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_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_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",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",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__tabs_context_mcp:"Claude in Chrome MCP: Tabs Context",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",invalid:"Invalid"};var Da=.2,Ia=21e3,Oa=.3,qo=xa.estimators,ns=Pa.pricing,Pu=Ma,Mu=r=>{},Ua=r=>{},Au=(r,e)=>console.error(x.red(r),e||"");function Eu(){let r=Zt.file(__dirname);return new lo(r)}function Du(){let r=Zt.file(__dirname);return new uo(r)}function Iu(){return new po}function Ou(){return new To}function Uu(){return new Po}function Ru(){return new Eo}function Fu(){return new Io}var Nu=Eu(),$u=Du(),ju=Iu(),Lu=Ou(),qu=Uu(),Gu=Ru(),Bu=Fu(),Go=[new vs(Nu),new Ts($u),new As(Lu,(r,e)=>ee(r,e??"gpt-4",qo)),new xs(ju),new Ms(Gu,Xe,Ze,(r,e)=>ee(r,e??"gpt-4",qo)),new Ps(qu),new Es(Bu),new Os,new Fs];function Ra(){return new no({log:Mu,warn:Ua,error:Au,ecosystems:Go})}async function _e(){return Ra().getCopilotSessionFiles()}async function Bo(r){let e=new Set,t=Ie.join(Ea.homedir(),".claude","projects");for(let o of r){if(o.startsWith(t+Ie.sep)||o.startsWith(t+"/")){try{let h=(await et.promises.readFile(o,"utf-8")).split(`
|
|
52
|
-
`)
|
|
53
|
-
`);for(let
|
|
42
|
+
`).filter(n=>n.trim());if(t.length<2)return!1;let s=t[0].trim(),o=t[1].trim();return s.startsWith("{")&&s.endsWith("}")&&o.startsWith("{")&&o.endsWith("}")}function ls(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 Is(i,e){if(typeof e!="object"||e===null)return i;let{kind:t,k:s,v:o}=e;if(t===0)return o;if(!Array.isArray(s)||s.length===0)return i;let n=s.map(String),a=typeof i=="object"&&i!==null?i:{},u=a;for(let p=0;p<n.length-1;p++){let m=n[p],h=n[p+1],g=/^\d+$/.test(h);if(Array.isArray(u)){let b=Number(m);(!u[b]||typeof u[b]!="object")&&(u[b]=g?[]:{}),u=u[b]}else(!u[m]||typeof u[m]!="object")&&(u[m]=g?[]:{}),u=u[m]}let c=n[n.length-1];if(t===1)return Array.isArray(u)?u[Number(c)]=o:u[c]=o,a;if(t===2){let p;if(Array.isArray(u)){let m=Number(c);Array.isArray(u[m])||(u[m]=[]),p=u[m]}else Array.isArray(u[c])||(u[c]=[]),p=u[c];return Array.isArray(o)?p.push(...o):p.push(o),a}return a}function _t(i,e={}){let t=e[i];if(t&&typeof t.multiplier=="number")return t.multiplier===0?"standard":"premium";for(let[s,o]of Object.entries(e))if((i.includes(s)||s.includes(i))&&typeof o.multiplier=="number")return o.multiplier===0?"standard":"premium";return"unknown"}function Bo(i,e={},t="provider"){let s=0;for(let[o,n]of Object.entries(i)){let a=e[o]??e["gpt-4o-mini"];if(!a)continue;let u=t==="copilot"&&a.copilotPricing?a.copilotPricing:a,c=n.cachedReadTokens??0,p=n.cacheCreationTokens??0,h=Math.max(0,n.inputTokens-c-p)/1e6*u.inputCostPerMillion,g=c/1e6*(u.cachedInputCostPerMillion??u.inputCostPerMillion),b=p/1e6*(u.cacheCreationCostPerMillion??u.inputCostPerMillion),y=n.outputTokens/1e6*u.outputCostPerMillion;s+=h+g+b+y}return s}function ye(){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 pe(i){return typeof i=="string"&&i.trim().length>0}function cs(i){return typeof i=="number"&&Number.isFinite(i)?i:0}function us(i){if(!pe(i))return null;let e=Date.parse(i);return Number.isFinite(e)?e:null}function gi(i,e){let t=us(i.timestamp),s=us(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 zo(i){if(!i)return i;let e=i.trim();return e==="gemini-3-flash-preview"?"gemini-3-flash":e}var Wo=class{getGeminiDataDir(){return Ct.join(yi.homedir(),".gemini")}getGeminiTmpDir(){return Ct.join(this.getGeminiDataDir(),"tmp")}getGeminiProjectsPath(){return Ct.join(this.getGeminiDataDir(),"projects.json")}getGeminiLogsPath(){return Ct.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(!We.existsSync(e))return[];let t=[];try{let s=We.readdirSync(e,{withFileTypes:!0});for(let o of s){if(!o.isDirectory())continue;let n=Ct.join(e,o.name,"chats");if(We.existsSync(n))try{let a=We.readdirSync(n,{withFileTypes:!0});for(let u of a){if(u.isDirectory()||!u.name.startsWith("session-")||!u.name.endsWith(".jsonl"))continue;let c=Ct.join(n,u.name);try{We.statSync(c).size>0&&t.push(c)}catch{}}}catch{}}}catch{return[]}return t}readGeminiCliSession(e){let t=[],s=new Map,o=new Set,n=null,a,u=0,c=this.readJsonlLines(e);for(let g=0;g<c.length;g++){let b=c[g],y;try{y=JSON.parse(b)}catch{continue}if(!n&&pe(y?.sessionId)){n={sessionId:y.sessionId,projectHash:pe(y.projectHash)?y.projectHash:void 0,startTime:pe(y.startTime)?y.startTime:void 0,lastUpdated:pe(y.lastUpdated)?y.lastUpdated:void 0,kind:pe(y.kind)?y.kind:void 0};continue}if(pe(y?.$set?.lastUpdated)){a=y.$set.lastUpdated;continue}if(y?.type==="user"){let _=pe(y.id)?y.id:`__user_${g}`;if(o.has(_))continue;o.add(_),t.push({id:pe(y.id)?y.id:void 0,timestamp:pe(y.timestamp)?y.timestamp:void 0,type:"user",content:y.content,lineNumber:g});continue}if(y?.type==="gemini"){let _=pe(y.id)?y.id:`__assistant_${u++}_${g}`;s.set(_,{id:pe(y.id)?y.id:void 0,timestamp:pe(y.timestamp)?y.timestamp:void 0,type:"gemini",content:y.content,thoughts:Array.isArray(y.thoughts)?y.thoughts:[],tokens:y.tokens,model:pe(y.model)?y.model:void 0,toolCalls:Array.isArray(y.toolCalls)?y.toolCalls:[],lineNumber:g})}}n&&a&&(n.lastUpdated=a),t.sort(gi);let p=Array.from(s.values()).sort(gi),m=this.getProjectBucketFromPath(e)||n?.projectHash,h=this.resolveWorkspacePath(m,n?.projectHash);return{header:n,projectBucket:m,workspacePath:h??m,userRecords:t,assistantRecords:p}}getTokensFromGeminiCliSession(e){let t=this.readGeminiCliSession(e),s=0,o=0;for(let n of t.assistantRecords){let a=this.getTokenBreakdown(n.tokens);s+=a.total,o+=a.thinking}return{tokens:s,thinkingTokens:o}}countGeminiCliInteractions(e){return this.readGeminiCliSession(e).userRecords.length}getGeminiCliModelUsage(e){let t=this.readGeminiCliSession(e),s={};for(let o of t.assistantRecords){let n=zo(o.model||"unknown"),a=this.getTokenBreakdown(o.tokens);s[n]||(s[n]={inputTokens:0,outputTokens:0}),s[n].inputTokens+=a.input,s[n].outputTokens+=a.output+a.thinking+a.tool,a.cached>0&&(s[n].cachedReadTokens=(s[n].cachedReadTokens??0)+a.cached)}return s}getGeminiCliSessionMeta(e){let t=this.readGeminiCliSession(e),s=[],o=n=>{let a=us(n);a!==null&&s.push(a)};o(t.header?.startTime),o(t.header?.lastUpdated);for(let n of t.userRecords)o(n.timestamp);for(let n of t.assistantRecords)o(n.timestamp);return s.sort((n,a)=>n-a),{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),o=[],n=0;for(let a of s){let u=[],c=[],p=null,m=0,h=0,g=0,b=0,y=0;for(let C of a.assistants){let S=this.getTokenBreakdown(C.tokens);n+=S.total,m+=S.input,h+=S.output,g+=S.thinking,b+=S.tool,y+=S.cached;let w=pe(C.content)?C.content.trim():"";w.length>0&&u.push(w);for(let P of this.toDisplayToolCalls(C.toolCalls))c.push(P);pe(C.model)&&(p=zo(C.model))}let _=m>0||h>0||g>0||b>0?{promptTokens:m,completionTokens:h+g+b,promptTokenDetails:this.buildPromptTokenDetails(m,y)}:void 0;o.push({turnNumber:o.length+1,timestamp:this.pickTurnTimestamp(a.user?.timestamp,a.assistants),mode:"cli",userMessage:this.extractUserText(a.user?.content),assistantResponse:u.join(`
|
|
43
|
+
|
|
44
|
+
`),model:p,toolCalls:c,contextReferences:ye(),mcpTools:[],inputTokensEstimate:m,outputTokensEstimate:h+b,thinkingTokensEstimate:g,actualUsage:_})}return{turns:o,actualTokens:n}}getGeminiCliDailyFractions(e){let t=this.readGeminiCliSession(e),s=t.userRecords.map(u=>this.toUtcDayKey(u.timestamp)).filter(u=>!!u);if(s.length===0)for(let u of t.assistantRecords){let c=this.toUtcDayKey(u.timestamp);c&&s.push(c)}if(s.length===0)return{[this.toUtcDayKey(t.header?.startTime)??this.toUtcDayKey(t.header?.lastUpdated)??new Date().toISOString().slice(0,10)]:1};let o=new Map;for(let u of s)o.set(u,(o.get(u)??0)+1);let n=s.length,a={};for(let[u,c]of o.entries())a[u]=c/n;return a}readJsonlLines(e){try{return We.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(a=>a.length>0),o=s.lastIndexOf("chats");if(o>0)return s[o-1];let n=s.lastIndexOf("tmp");if(n>=0&&n+1<s.length)return s[n+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(!We.existsSync(t))return e;try{let s=JSON.parse(We.readFileSync(t,"utf8"));if(Array.isArray(s)){for(let o of s)this.addProjectMapping(e,void 0,o);return e}if(s&&typeof s=="object")for(let[o,n]of Object.entries(s))this.addProjectMapping(e,o,n)}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 o=s,n=this.pickString(o,["projectHash","projectBucket","bucket","slug","name","id"]),a=this.pickString(o,["workspacePath","path","directory","cwd","rootPath","repoPath","workspace","root"]);n&&a&&this.looksLikePath(a)&&e.set(n,this.normalizeWorkspacePath(a)),t&&this.looksLikePath(t)&&n&&e.set(n,this.normalizeWorkspacePath(t)),t&&!this.looksLikePath(t)&&a&&this.looksLikePath(a)&&e.set(t,this.normalizeWorkspacePath(a))}pickString(e,t){for(let s of t)if(pe(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(/^~(?=[/\\]|$)/,yi.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 Ct.normalize(t)}getTokenBreakdown(e){let t=cs(e?.input),s=cs(e?.output),o=cs(e?.cached),n=cs(e?.thoughts),a=cs(e?.tool),u=cs(e?.total)||t+s+n+a;return{input:t,output:s,cached:o,thinking:n,tool:a,total:u}}deriveSessionTitle(e){for(let t of e.userRecords){let s=this.extractUserText(t.content).split(/\r?\n/).map(o=>o.trim()).find(o=>o.length>0);if(s)return s.length>80?`${s.slice(0,77)}...`:s}return e.projectBucket}extractUserText(e){if(pe(e))return e.trim();if(!Array.isArray(e))return"";let t=[];for(let s of e)s&&typeof s=="object"&&pe(s.text)&&t.push(s.text.trim());return t.join(`
|
|
45
|
+
|
|
46
|
+
`).trim()}toDisplayToolCalls(e){if(!Array.isArray(e))return[];let t=[];for(let s of e){let o=pe(s?.name)?s.name.trim():"",a=(pe(s?.displayName)?s.displayName.trim():"")||o;a&&t.push({toolName:a,arguments:s.args!==void 0?this.safeStringify(s.args):void 0,result:pe(s.resultDisplay)?s.resultDisplay:s.result!==void 0?this.safeStringify(s.result):void 0})}return t}safeStringify(e){if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}buildPromptTokenDetails(e,t){if(e<=0)return;let s=[],o=Math.min(t,e);o>0&&s.push({category:"cached",label:"Cache reads",percentageOfPrompt:o/e*100});let n=e-o;return n>0&&s.push({category:"prompt",label:"Prompt tokens",percentageOfPrompt:n/e*100}),s.length>0?s:void 0}groupConversationTurns(e){let t=[...e.userRecords.map(a=>({kind:"user",record:a})),...e.assistantRecords.map(a=>({kind:"assistant",record:a}))].sort((a,u)=>gi(a.record,u.record)),s=[],o=null,n=[];for(let a of t)a.kind==="user"?((o||n.length>0)&&(s.push({user:o,assistants:n}),n=[]),o=a.record):n.push(a.record);return(o||n.length>0)&&s.push({user:o,assistants:n}),s}pickTurnTimestamp(e,t){let s=us(e);if(s!==null)return new Date(s).toISOString();for(let o of t){let n=us(o.timestamp);if(n!==null)return new Date(n).toISOString()}return null}toUtcDayKey(e){let t=us(e);return t!==null?new Date(t).toISOString().slice(0,10):null}};var ds=N(require("fs")),bt=N(require("path"));var Yt=N(require("fs"));function Ho(i){return!i||!i.kind?"ask":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"}function nt(i){return i.startsWith("mcp.")||i.startsWith("mcp_")||i.startsWith("mcp__")}function Jt(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 it(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 n=i.slice(5),a=n.indexOf("__");return(a>=0?n.slice(0,a):n)||"unknown"}return i.replace(/^mcp[._]/,"").split(/[._]/)[0]||"unknown"}var Kt=N(require("fs")),Vo=N(require("path")),wa=N(require("os"));function Ou(i){return!i||typeof i!="string"?null:i.startsWith("toolu_")?"claude":i.startsWith("call_")?"gpt":null}function ba(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,o=0,n=null,a=null,u=null,c=null,p=!1,m=new Map,h=[],g=new Set;for(let b of e)if(b)try{let y=JSON.parse(b);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 b of h)switch(b.type){case"partition.created":{b.data?.conversationId&&(t.conversationId=String(b.data.conversationId)),b.data?.source&&(t.source=String(b.data.source));break}case"user.message":{t.interactions++,typeof b.timestamp=="string"&&n===null&&(n=b.timestamp);let y=b.data?.turnId;typeof b.data?.content=="string"&&(typeof y!="string"||!g.has(y))&&(s+=Y(b.data.content));break}case"user.message_rendered":{let y=b.data?.renderedMessage;typeof y=="string"&&(s+=Y(y));break}case"assistant.turn_start":{typeof b.data?.model=="string"&&!u&&(u=b.data.model);break}case"assistant.message":{typeof b.data?.text=="string"&&b.data.text&&(o+=Y(b.data.text));let y=b.data?.thinking?.text;typeof y=="string"&&y&&(t.thinkingTokens+=Y(y)),typeof b.timestamp=="string"&&(a=b.timestamp);break}case"tool.execution_start":{if(p=!0,!c){let S=Ou(b.data?.toolCallId);S&&(c=S)}let y=typeof b.data?.toolName=="string"?b.data.toolName:"unknown",_={toolName:y};if(b.data?.arguments!==void 0)try{_.arguments=JSON.stringify(b.data.arguments)}catch{}t.toolCalls.push(_),t.toolCounts[y]=(t.toolCounts[y]||0)+1;let C=b.data?.toolCallId;typeof C=="string"&&m.set(C,_);break}case"tool.execution_complete":{let y=b.data?.result?.result,_="";if(Array.isArray(y))for(let S of y)S&&typeof S.value=="string"&&(o+=Y(S.value),_+=(_?`
|
|
47
|
+
`:"")+S.value);let C=b.data?.toolCallId;if(typeof C=="string"){let S=m.get(C);S&&(typeof b.data?.success=="boolean"&&(S.success=b.data.success),_&&(S.result=_))}break}case"assistant.turn_end":{typeof b.timestamp=="string"&&(a=b.timestamp);break}}return t.mode=p?"agent":"ask",t.modelHint=u||c||"unknown",t.tokens=s+o,t.firstInteraction=n,t.lastInteraction=a,t.tokens>0&&t.modelHint!=="unknown"&&(t.modelUsage[t.modelHint]={inputTokens:s,outputTokens:o}),t}function ka(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 _i(){return Vo.join(wa.homedir(),".copilot","jb")}function Sa(i){let e=i.replace(/\\/g,"/");return e.includes("/.copilot/jb/")&&/\/partition-\d+\.jsonl$/.test(e)}async function Fu(i){try{return await Kt.promises.access(i),!0}catch{return!1}}var Us=class{id="jetbrains";displayName="JetBrains IDE";handles(e){return!1}getBackingPath(e){return e}async stat(e){return Kt.promises.stat(e)}async parsePartition(e){try{let t=await Kt.promises.readFile(e,"utf8");return ba(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=[],o=_i();try{if(!await Fu(o))return{sessionFiles:s,candidatePaths:t};let n;try{n=await Kt.promises.readdir(o,{withFileTypes:!0})}catch(c){return e(`Could not read JetBrains session path in ${o}: ${c}`),{sessionFiles:s,candidatePaths:t}}let a=n.filter(c=>c.isDirectory()),u=(await Promise.all(a.map(async c=>{let p=Vo.join(o,c.name),m;try{m=await Kt.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 b=Vo.join(p,g.name);try{(await Kt.promises.stat(b)).size>0&&h.push(b)}catch{}}return h}))).flat();u.length>0&&(e(`\u{1F4C4} Found ${u.length} session file(s) in JetBrains IDE Copilot`),s.push(...u))}catch(n){e(`Could not check JetBrains session path ${o}: ${n}`)}return{sessionFiles:s,candidatePaths:t}}};function Jo(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,o)=>s+o,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 o=i.sessionDuration.avgTotalElapsedMs*(t-1);i.sessionDuration.avgTotalElapsedMs=(o+e.sessionDuration.avgTotalElapsedMs)/t;let n=i.sessionDuration.avgWaitTimeMs*(t-1);i.sessionDuration.avgWaitTimeMs=(n+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 o=i.conversationPatterns.avgTurnsPerSession*(t-1)+e.conversationPatterns.avgTurnsPerSession;i.conversationPatterns.avgTurnsPerSession=o/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 va(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 o=i.match(/#symbol/gi),n=i.match(/#sym(?![:\w])/gi);o&&(e.symbol+=o.length),n&&(e.symbol+=n.length);let a=i.match(/#codebase/gi);a&&(e.codebase+=a.length);let u=i.match(/#terminalLastCommand/gi);u&&(e.terminalLastCommand+=u.length);let c=i.match(/#terminalSelection/gi);c&&(e.terminalSelection+=c.length);let p=i.match(/#clipboard/gi);p&&(e.clipboard+=p.length);let m=i.match(/#changes/gi);m&&(e.changes+=m.length);let h=i.match(/#outputPanel/gi);h&&(e.outputPanel+=h.length);let g=i.match(/#problemsPanel\b/gi);g&&(e.problemsPanel+=g.length);let b=i.match(/#pr\b/gi);b&&(e.pullRequest+=b.length);let y=i.match(/#pullRequest\b/gi);y&&(e.pullRequest+=y.length);let _=i.match(/@workspace/gi);_&&(e.workspace+=_.length);let C=i.match(/@terminal/gi);C&&(e.terminal+=C.length);let S=i.match(/@vscode/gi);S&&(e.vscode+=S.length)}function bi(i,e){if(Array.isArray(i))for(let t of i){if(!t||typeof t!="object")continue;let s=t.kind;typeof s=="string"&&(e.byKind[s]=(e.byKind[s]||0)+1);let o=null;if(s==="reference"&&t.reference?o=t.reference:s==="inlineReference"&&t.inlineReference&&(o=t.inlineReference),s==="pullRequest"){e.pullRequest++;continue}if(o){let n=o.fsPath||o.path;if(typeof n=="string"){let u=n.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 c=n.length>100?"..."+n.substring(n.length-97):n;e.byPath[c]=(e.byPath[c]||0)+1}let a=o.name;if(typeof a=="string"&&s==="reference"){e.symbol++;let u=`#sym:${a}`;e.byPath[u]=(e.byPath[u]||0)+1}}}}function Pa(i,e){if(!(!i||!Array.isArray(i.variables)))for(let t of i.variables){if(!t||typeof t!="object")continue;let s=t.kind;if(typeof s=="string"&&(e.byKind[s]=(e.byKind[s]||0)+1),s==="generic"&&typeof t.name=="string"&&t.name.startsWith("sym:")){e.symbol++;let o=`#${t.name}`;e.byPath[o]=(e.byPath[o]||0)+1}if(s==="promptFile"&&t.value){let o=t.value,n=o.fsPath||o.path||o.external;if(typeof n=="string"){let a=n.replace(/\\/g,"/").toLowerCase();a.endsWith("/.github/copilot-instructions.md")||a.includes(".github/copilot-instructions.md")||a.endsWith("/agents.md")||a.match(/\/agents\.md$/i)}}}}function ki(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 Ci(i,e){if(i.message&&(i.message.text&&va(i.message.text,e),i.message.parts))for(let t of i.message.parts)t.text&&va(t.text,e);i.contentReferences&&Array.isArray(i.contentReferences)&&bi(i.contentReferences,e),i.variableData&&Pa(i.variableData,e)}function Ko(i){try{let t=Yt.readFileSync(i,"utf8").trim().split(`
|
|
48
|
+
`),s=[];for(let o of t)if(o.trim())try{s.push(JSON.parse(o))}catch{}return s}catch{return[]}}function Ee(i,e,t,s){let o=[],n=[],a=[];for(let m of e){let h=_t(m,i);h==="standard"?o.push(m):h==="premium"?n.push(m):a.push(m)}s.modelSwitching.tiers={standard:o,premium:n,unknown:a},s.modelSwitching.hasMixedTiers=o.length>0&&n.length>0;let u=0,c=0,p=0;for(let m of t){let h=_t(m,i);h==="standard"?u++:h==="premium"?c++:p++}s.modelSwitching.standardRequests=u,s.modelSwitching.premiumRequests=c,s.modelSwitching.unknownRequests=p}async function Ta(i,e,t,s){try{let o=await ju(i,e,s),n=o?Object.keys(o).length:0;if(!o||n===0)return;let a=Object.keys(o);t.modelSwitching.uniqueModels=a,t.modelSwitching.modelCount=a.length;let u=[],c=[],p=[];for(let g of a){let b=_t(g,i.modelPricing);b==="standard"?u.push(g):b==="premium"?c.push(g):p.push(g)}t.modelSwitching.tiers={standard:u,premium:c,unknown:p},t.modelSwitching.hasMixedTiers=u.length>0&&c.length>0;let m=s??await Yt.promises.readFile(e,"utf8");if(ls(m))return;if(e.endsWith(".jsonl")||yt(m)){let g=m.trim().split(`
|
|
49
|
+
`),b={standard:0,premium:0,unknown:0},y="gpt-4o";for(let _ of g)if(_.trim())try{let C=JSON.parse(_);if(C.kind===0){let S=C.v?.selectedModel?.identifier||C.v?.selectedModel?.metadata?.id||C.v?.inputState?.selectedModel?.metadata?.id;S&&(y=S.replace(/^copilot\//,""))}if(C.kind===2&&C.k?.[0]==="selectedModel"){let S=C.v?.identifier||C.v?.metadata?.id;S&&(y=S.replace(/^copilot\//,""))}if(C.type==="user.message"){let S=C.model||y,w=_t(S,i.modelPricing);w==="standard"?b.standard++:w==="premium"?b.premium++:b.unknown++}if(C.kind===2&&C.k?.[0]==="requests"&&Array.isArray(C.v))for(let S of C.v){let w=y;S.modelId?w=S.modelId.replace(/^copilot\//,""):S.result?.metadata?.modelId?w=S.result.metadata.modelId.replace(/^copilot\//,""):S.result?.details&&(w=It(S,i.modelPricing));let P=_t(w,i.modelPricing);P==="standard"?b.standard++:P==="premium"?b.premium++:b.unknown++}}catch{}t.modelSwitching.standardRequests=b.standard,t.modelSwitching.premiumRequests=b.premium,t.modelSwitching.unknownRequests=b.unknown,t.modelSwitching.totalRequests=b.standard+b.premium+b.unknown}else{let g=JSON.parse(m);if(g.requests&&Array.isArray(g.requests)){let b=null,y=0,_={standard:0,premium:0,unknown:0};for(let C of g.requests){let S=It(C,i.modelPricing);b&&S!==b&&y++,b=S;let w=_t(S,i.modelPricing);w==="standard"?_.standard++:w==="premium"?_.premium++:_.unknown++}t.modelSwitching.switchCount=y,t.modelSwitching.standardRequests=_.standard,t.modelSwitching.premiumRequests=_.premium,t.modelSwitching.unknownRequests=_.unknown,t.modelSwitching.totalRequests=_.standard+_.premium+_.unknown}}}catch(o){i.warn(`Error calculating model switching for ${e}: ${o}`)}}async function Nu(i,e,t,s){try{let o=s??await Yt.promises.readFile(e,"utf8");if(ls(o))return;let n=e.endsWith(".jsonl")||yt(o),a=new Set,u=0,c=0,p=[],m=[],h=[],g={editsAgent:0,defaultAgent:0,workspaceAgent:0,other:0};if(n){let w=o.trim().split(`
|
|
50
|
+
`).filter(v=>v.trim()),P=!1;if(w.length>0)try{let v=JSON.parse(w[0]);v&&typeof v.kind=="number"&&(P=!0)}catch{}if(P){let v={};for(let A of w)try{let U=JSON.parse(A);v=Is(v,U)}catch{}v.creationDate&&p.push(v.creationDate),v.lastMessageDate&&p.push(v.lastMessageDate);let M=v.requests||[];for(let A of M)if(A){if(A.timestamp&&p.push(A.timestamp),A.result?.timings&&m.push(A.result.timings),A.timeSpentWaiting!==void 0&&h.push(A.timeSpentWaiting),A.agent?.id){let U=A.agent.id;U.includes("edit")?g.editsAgent++:U.includes("default")?g.defaultAgent++:U.includes("workspace")?g.workspaceAgent++:g.other++}if(A.response&&Array.isArray(A.response)){for(let U of A.response)if(U){if(U.kind==="textEditGroup"&&U.uri){let O=U.uri.path||JSON.stringify(U.uri);a.add(O)}U.kind==="codeblockUri"&&(c++,U.isEdit===!0&&u++)}}}}}else{let w=JSON.parse(o);if(w.creationDate&&p.push(w.creationDate),w.lastMessageDate&&p.push(w.lastMessageDate),w.requests&&Array.isArray(w.requests))for(let P of w.requests){if(P.timestamp&&p.push(P.timestamp),P.result?.timings&&m.push(P.result.timings),P.timeSpentWaiting!==void 0&&h.push(P.timeSpentWaiting),P.agent?.id){let v=P.agent.id;v.includes("edit")?g.editsAgent++:v.includes("default")?g.defaultAgent++:v.includes("workspace")?g.workspaceAgent++:g.other++}if(P.response&&Array.isArray(P.response)){for(let v of P.response)if(v){if(v.kind==="textEditGroup"&&v.uri){let M=v.uri.path||JSON.stringify(v.uri);a.add(M)}v.kind==="codeblockUri"&&(c++,v.isEdit===!0&&u++)}}}}let b=a.size>0?1:0;t.editScope={singleFileEdits:a.size===1?1:0,multiFileEdits:a.size>1?1:0,totalEditedFiles:a.size,avgFilesPerSession:b>0?a.size/b:0},t.applyUsage={totalApplies:u,totalCodeBlocks:c,applyRate:c>0?u/c*100:0};let y=p.length>=2?Math.max(...p)-Math.min(...p):0,_=m.length>0?m.reduce((w,P)=>w+(P.firstProgress||0),0)/m.length:0,C=m.length>0?m.reduce((w,P)=>w+(P.totalElapsed||0),0)/m.length:0,S=h.length>0?h.reduce((w,P)=>w+P,0)/h.length:0;t.sessionDuration={totalDurationMs:y,avgDurationMs:y,avgFirstProgressMs:_,avgTotalElapsedMs:C,avgWaitTimeMs:S},ki(t),t.agentTypes=g}catch(o){i.warn(`Error tracking enhanced metrics from ${e}: ${o}`)}}function ke(){return{toolCalls:{total:0,byTool:{}},modeUsage:{ask:0,edit:0,agent:0,plan:0,customAgent:0,cli:0},contextReferences:ye(),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 xa(i,e,t){let s=ke();try{let o=i.ecosystems.find(c=>c.handles(e));if(o&&Gr(o))return o.analyzeUsage(e,{modelPricing:i.modelPricing,toolNameMap:i.toolNameMap});let n=t??await Yt.promises.readFile(e,"utf8");if(e.endsWith(".jsonl")||yt(n)){let c=n.trim().split(`
|
|
51
|
+
`).filter(S=>S.trim()),p=!1;if(c.length>0)try{let S=JSON.parse(c[0]);S&&typeof S.kind=="number"&&(p=!0)}catch{}if(p){let S={};for(let v of c)try{let M=JSON.parse(v);S=Is(S,M)}catch{}let w=S.inputState?.mode?Ho(S.inputState.mode):"ask";if(S.inputState?.selections&&Array.isArray(S.inputState.selections)){for(let v of S.inputState.selections)if(v&&(v.startLineNumber!==v.endLineNumber||v.startColumn!==v.endColumn)){s.contextReferences.implicitSelection++;break}}let P=S.requests||[];for(let v of P)if(!(!v||!v.requestId)){if(w==="agent"?s.modeUsage.agent++:w==="edit"?s.modeUsage.edit++:w==="plan"?s.modeUsage.plan++:w==="customAgent"?s.modeUsage.customAgent++:s.modeUsage.ask++,v.agent?.id){let M=v.agent.id;s.toolCalls.total++,s.toolCalls.byTool[M]=(s.toolCalls.byTool[M]||0)+1}if(Ci(v,s.contextReferences),v.response&&Array.isArray(v.response)){for(let M of v.response)if(M&&(M.kind==="toolInvocationSerialized"||M.kind==="prepareToolInvocation")){let A=M.toolId||M.toolName||M.invocationMessage?.toolName||M.toolSpecificData?.kind||"unknown";if(nt(A)){s.mcpTools.total++;let U=it(A,i.toolNameMap);s.mcpTools.byServer[U]=(s.mcpTools.byServer[U]||0)+1;let O=Jt(A);s.mcpTools.byTool[O]=(s.mcpTools.byTool[O]||0)+1}else s.toolCalls.total++,s.toolCalls.byTool[A]=(s.toolCalls.byTool[A]||0)+1}}}{let v=(S.selectedModel?.identifier||S.selectedModel?.metadata?.id||S.inputState?.selectedModel?.metadata?.id||"gpt-4o").replace(/^copilot\//,""),M=[];for(let O of P){if(!O||!O.requestId)continue;let $=v;O.modelId?$=O.modelId.replace(/^copilot\//,""):O.result?.metadata?.modelId?$=O.result.metadata.modelId.replace(/^copilot\//,""):O.result?.details&&($=It(O,i.modelPricing)),M.push($)}let A=[...new Set(M)];s.modelSwitching.uniqueModels=A,s.modelSwitching.modelCount=A.length,s.modelSwitching.totalRequests=M.length;let U=0;for(let O=1;O<M.length;O++)M[O]!==M[O-1]&&U++;s.modelSwitching.switchCount=U,Ee(i.modelPricing,A,M,s)}{let{effortByRequestId:v,defaultEffort:M,switchCount:A}=Ca(c);if(M!==null||v.size>0){let U={};for(let[,O]of v)U[O]=(U[O]||0)+1;v.size===0&&M!==null&&(U[M]=P.length),s.thinkingEffort={byEffort:U,switchCount:A,defaultEffort:M}}}return ki(s),s}let m="ask",h="gpt-4o",g=null,b=0,y={},C=Sa(e)?ka(n):null;for(let S of c)if(S.trim())try{let w=JSON.parse(S);if(w.type==="session.start"&&w.data&&(typeof w.data.selectedModel=="string"&&(h=w.data.selectedModel),typeof w.data.reasoningEffort=="string"&&(g=w.data.reasoningEffort)),w.type==="user.message"){b++;let P=typeof w.data?.reasoningEffort=="string"?w.data.reasoningEffort:g;P&&(y[P]=(y[P]||0)+1)}if(w.kind===0&&w.v?.inputState?.mode&&(m=Ho(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){s.contextReferences.implicitSelection++;break}}if(w.kind===1&&w.k?.includes("mode")&&w.v&&(m=Ho(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)){s.contextReferences.implicitSelection++;break}}if(w.kind===1&&w.k?.includes("contentReferences")&&Array.isArray(w.v)&&bi(w.v,s.contextReferences),w.kind===1&&w.k?.includes("variableData")&&w.v&&Pa(w.v,s.contextReferences),w.kind===2&&w.k?.[0]==="requests"&&Array.isArray(w.v))for(let P of w.v){if(P.requestId&&(m==="agent"?s.modeUsage.agent++:m==="edit"?s.modeUsage.edit++:m==="plan"?s.modeUsage.plan++:m==="customAgent"?s.modeUsage.customAgent++:s.modeUsage.ask++),P.agent?.id){let v=P.agent.id;s.toolCalls.total++,s.toolCalls.byTool[v]=(s.toolCalls.byTool[v]||0)+1}if(Ci(P,s.contextReferences),P.response&&Array.isArray(P.response)){for(let v of P.response)if(v&&(v.kind==="toolInvocationSerialized"||v.kind==="prepareToolInvocation")){s.toolCalls.total++;let M=v.toolId||v.toolName||v.invocationMessage?.toolName||v.toolSpecificData?.kind||"unknown";s.toolCalls.byTool[M]=(s.toolCalls.byTool[M]||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"){s.toolCalls.total++;let v=P.toolId||P.toolName||P.invocationMessage?.toolName||P.toolSpecificData?.kind||"unknown";s.toolCalls.byTool[v]=(s.toolCalls.byTool[v]||0)+1}}if(w.type==="user.message"&&(C==="agent"?s.modeUsage.agent++:C==="ask"?s.modeUsage.ask++:s.modeUsage.cli++),w.type==="tool.call"||w.type==="tool.result"||w.type==="tool.execution_start"){let P=w.data?.toolName||w.toolName||"unknown";if(nt(P)){s.mcpTools.total++;let v=it(P,i.toolNameMap);s.mcpTools.byServer[v]=(s.mcpTools.byServer[v]||0)+1;let M=Jt(P);s.mcpTools.byTool[M]=(s.mcpTools.byTool[M]||0)+1}else s.toolCalls.total++,s.toolCalls.byTool[P]=(s.toolCalls.byTool[P]||0)+1}if(w.type==="mcp.tool.call"||w.data?.mcpServer){s.mcpTools.total++;let P=w.data?.mcpServer||"unknown",v=w.data?.toolName||w.toolName||"unknown";s.mcpTools.byServer[P]=(s.mcpTools.byServer[P]||0)+1;let M=Jt(v);s.mcpTools.byTool[M]=(s.mcpTools.byTool[M]||0)+1}}catch{}if(g!==null||Object.keys(y).length>0){let S=Object.keys(y).length>0?y:g!==null?{[g]:b}:{};s.thinkingEffort={byEffort:S,switchCount:0,defaultEffort:g}}return await Ta(i,e,s,n),ki(s),s}let u=JSON.parse(n);if(u.requests&&Array.isArray(u.requests))for(let c of u.requests){let p="ask";if(c.agent?.id){let m=c.agent.id.toLowerCase();m.includes("edit")?p="edit":m.includes("agent")&&(p="agent")}else if(u.mode?.id){let m=u.mode.id.toLowerCase();m.includes("agent")?p="agent":m.includes("edit")&&(p="edit")}if(p==="agent"?s.modeUsage.agent++:p==="edit"?s.modeUsage.edit++:s.modeUsage.ask++,Ci(c,s.contextReferences),c.response&&Array.isArray(c.response)){for(let m of c.response)if(m){if(m.kind==="toolInvocationSerialized"||m.kind==="prepareToolInvocation"){let h=m.toolId||m.toolName||m.invocationMessage?.toolName||"unknown";if(nt(h)){s.mcpTools.total++;let g=it(h,i.toolNameMap);s.mcpTools.byServer[g]=(s.mcpTools.byServer[g]||0)+1;let b=Jt(h);s.mcpTools.byTool[b]=(s.mcpTools.byTool[b]||0)+1}else s.toolCalls.total++,s.toolCalls.byTool[h]=(s.toolCalls.byTool[h]||0)+1}if(m.kind==="mcpServersStarting"&&m.didStartServerIds)for(let h of m.didStartServerIds)s.mcpTools.total++,s.mcpTools.byServer[h]=(s.mcpTools.byServer[h]||0)+1;m.kind==="inlineReference"&&m.inlineReference&&bi([m],s.contextReferences)}}}await Ta(i,e,s,n),await Nu(i,e,s,n)}catch(o){i.warn(`Error analyzing session usage from ${e}: ${o}`)}return s}async function ju(i,e,t){let s={};if(i.ecosystems){let n=i.ecosystems.find(a=>a.handles(e));if(n)return n.getModelUsage(e)}let o=e.split(/[/\\]/).pop()||e;try{let n=t??await Yt.promises.readFile(e,"utf8");if(ls(n))return s;if(e.endsWith(".jsonl")||yt(n)){let c=n.trim().split(`
|
|
52
|
+
`),p="gpt-4o",m={},h=!1,g=null;for(let y of c)if(y.trim())try{let _=JSON.parse(y);if(typeof _.kind=="number"&&(h=!0,m=Is(m,_)),_.type==="session.start"&&typeof _.data?.selectedModel=="string"&&(p=_.data.selectedModel),_.kind===0){let S=_.v?.selectedModel?.identifier||_.v?.selectedModel?.metadata?.id||_.v?.inputState?.selectedModel?.metadata?.id;S&&(p=S.replace(/^copilot\//,""))}if(_.kind===2&&_.k?.[0]==="selectedModel"){let S=_.v?.identifier||_.v?.metadata?.id;S&&(p=S.replace(/^copilot\//,""))}let C=_.model||p;if(s[C]||(s[C]={inputTokens:0,outputTokens:0}),!h)if(_.type==="session.shutdown"&&_.data?.modelMetrics){g||(g={});for(let[S,w]of Object.entries(_.data.modelMetrics)){let P=w?.usage;P&&(g[S]||(g[S]={inputTokens:0,outputTokens:0}),g[S].inputTokens+=typeof P.inputTokens=="number"?P.inputTokens:0,g[S].outputTokens+=typeof P.outputTokens=="number"?P.outputTokens:0)}}else _.type==="user.message"&&_.data?.content?s[C].inputTokens+=Y(_.data.content,C,i.tokenEstimators):_.type==="assistant.message"&&_.data?.content?s[C].outputTokens+=Y(_.data.content,C,i.tokenEstimators):_.type==="tool.result"&&_.data?.output&&(s[C].inputTokens+=Y(_.data.output,C,i.tokenEstimators))}catch{}if(!h&&g)return g;if(h&&m.requests&&Array.isArray(m.requests))for(let y of m.requests){if(!y||!y.requestId)continue;let _=p;if(y.modelId?_=y.modelId.replace(/^copilot\//,""):y.result?.metadata?.modelId?_=y.result.metadata.modelId.replace(/^copilot\//,""):y.result?.details&&(_=It(y,i.modelPricing)),s[_]||(s[_]={inputTokens:0,outputTokens:0}),y.result?.usage){let C=y.result.usage;s[_].inputTokens+=typeof C.promptTokens=="number"?C.promptTokens:0,s[_].outputTokens+=typeof C.completionTokens=="number"?C.completionTokens:0}else if(typeof y.result?.promptTokens=="number"&&typeof y.result?.outputTokens=="number")s[_].inputTokens+=y.result.promptTokens,s[_].outputTokens+=y.result.outputTokens;else if(y.result?.metadata&&typeof y.result.metadata.promptTokens=="number"&&typeof y.result.metadata.outputTokens=="number")s[_].inputTokens+=y.result.metadata.promptTokens,s[_].outputTokens+=y.result.metadata.outputTokens;else if(y.message?.text&&(s[_].inputTokens+=Y(y.message.text,_,i.tokenEstimators)),y.response&&Array.isArray(y.response))for(let C of y.response)C?.value&&(s[_].outputTokens+=Y(C.value,_,i.tokenEstimators));if(y.response&&Array.isArray(y.response))for(let C of y.response){let S=Et(C);if(S){let w=S.modelName||_;s[w]||(s[w]={inputTokens:0,outputTokens:0}),S.prompt&&(s[w].inputTokens+=Y(S.prompt,w,i.tokenEstimators)),S.result&&(s[w].outputTokens+=Y(S.result,w,i.tokenEstimators))}}}let b=fi(c);for(let[y,_]of b){let C=m.requests?.[y];if(!C||C.result?.usage||typeof C.result?.promptTokens=="number"||C.result?.metadata&&typeof C.result.metadata.promptTokens=="number")continue;let S=p;C.modelId&&(S=C.modelId.replace(/^copilot\//,"")),s[S]||(s[S]={inputTokens:0,outputTokens:0}),s[S].inputTokens+=_.promptTokens,s[S].outputTokens+=_.outputTokens}return s}let u=JSON.parse(n);if(u.requests&&Array.isArray(u.requests))for(let c of u.requests){let p=It(c,i.modelPricing);if(s[p]||(s[p]={inputTokens:0,outputTokens:0}),c.result?.usage){let m=c.result.usage;s[p].inputTokens+=typeof m.promptTokens=="number"?m.promptTokens:0,s[p].outputTokens+=typeof m.completionTokens=="number"?m.completionTokens:0}else if(typeof c.result?.promptTokens=="number"&&typeof c.result?.outputTokens=="number")s[p].inputTokens+=c.result.promptTokens,s[p].outputTokens+=c.result.outputTokens;else if(c.result?.metadata&&typeof c.result.metadata.promptTokens=="number"&&typeof c.result.metadata.outputTokens=="number")s[p].inputTokens+=c.result.metadata.promptTokens,s[p].outputTokens+=c.result.metadata.outputTokens;else{if(c.message&&c.message.parts){for(let m of c.message.parts)if(m.text){let h=Y(m.text,p,i.tokenEstimators);s[p].inputTokens+=h}}if(c.response&&Array.isArray(c.response)){for(let m of c.response)if(m?.value){let h=Y(m.value,p,i.tokenEstimators);s[p].outputTokens+=h}}}if(c.response&&Array.isArray(c.response))for(let m of c.response){let h=Et(m);if(h){let g=h.modelName||p;s[g]||(s[g]={inputTokens:0,outputTokens:0}),h.prompt&&(s[g].inputTokens+=Y(h.prompt,g,i.tokenEstimators)),h.result&&(s[g].outputTokens+=Y(h.result,g,i.tokenEstimators))}}}}catch(n){i.warn(`Error getting model usage from ${e}: ${n}`)}return s}var Rs=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)?bt.join(this.openCode.getOpenCodeDataDir(),"opencode.db"):e}async stat(e){return this.openCode.statSessionFile(e)}async getTokens(e){let t=await this.openCode.getTokensFromOpenCodeSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return this.openCode.countOpenCodeInteractions(e)}async getModelUsage(e){return this.openCode.getOpenCodeModelUsage(e)}async getMeta(e){let t=[],s,o,n=this.openCode.getOpenCodeSessionId(e),a=null;if(this.openCode.isOpenCodeDbSession(e)&&n)a=await this.openCode.readOpenCodeDbSession(n);else try{let c=await ds.promises.readFile(e,"utf8");a=JSON.parse(c)}catch{}a&&(s=a.title||a.slug,o=a.directory||void 0,a.time?.created&&t.push(a.time.created),a.time?.updated&&t.push(a.time.updated));let u=await this.openCode.getOpenCodeMessagesForSession(e);for(let c of u)c.time?.created&&t.push(c.time.created),c.time?.completed&&t.push(c.time.completed);return t.sort((c,p)=>c-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:o}}getEditorRoot(e){return this.openCode.getOpenCodeDataDir()}async discover(e){let t=this.getCandidatePaths(),s=[],o=this.openCode.getOpenCodeDataDir(),n=bt.join(o,"storage","session"),a=bt.join(o,"opencode.db");e(`\u{1F4C1} Checking OpenCode JSON path: ${n}`),e(`\u{1F4C1} Checking OpenCode DB path: ${a}`);try{await ds.promises.access(n);let u=async p=>{try{let m=await ds.promises.readdir(p,{withFileTypes:!0});for(let h of m)if(h.isDirectory())await u(bt.join(p,h.name));else if(h.name.startsWith("ses_")&&h.name.endsWith(".json")){let g=bt.join(p,h.name);try{(await ds.promises.stat(g)).size>0&&s.push(g)}catch{}}}catch{}};await u(n);let c=s.length;c>0&&e(`\u{1F4C4} Found ${c} session files in OpenCode storage`)}catch{}try{await ds.promises.access(a);let u=new Set(s.filter(m=>this.openCode.isOpenCodeSessionFile(m)).map(m=>this.openCode.getOpenCodeSessionId(m)).filter(Boolean)),c=await this.openCode.discoverOpenCodeDbSessions(),p=0;for(let m of c)u.has(m)||(s.push(bt.join(o,`opencode.db#${m}`)),p++);p>0&&e(`\u{1F4C4} Found ${p} additional session(s) in OpenCode database`)}catch{}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){let e=this.openCode.getOpenCodeDataDir();return[{path:bt.join(e,"storage","session"),source:"OpenCode (JSON)"},{path:bt.join(e,"opencode.db"),source:"OpenCode (DB)"}]}async buildTurns(e){let t=[],s=await this.openCode.getOpenCodeMessagesForSession(e);if(s.length>0){let o=0,n=0;for(let a=0;a<s.length;a++){let u=s[a];if(u.role!=="user")continue;o++;let c=s.filter((P,v)=>v>a&&P.role==="assistant"&&P.parentID===u.id),m=(await this.openCode.getOpenCodePartsForMessage(u.id)).filter(P=>P.type==="text").map(P=>P.text||"").join(`
|
|
53
|
+
`),h="",g=[],b=null,y=0,_=n;for(let P of c){b||(b=P.modelID||null),y+=P.tokens?.reasoning||0,typeof P.tokens?.total=="number"&&(_=Math.max(_,P.tokens.total));let v=await this.openCode.getOpenCodePartsForMessage(P.id);for(let M of v)M.type==="text"&&M.text?h+=M.text:M.type==="tool"&&M.tool&&g.push({toolName:M.tool,arguments:M.state?.input?JSON.stringify(M.state.input):void 0,result:M.state?.output||void 0})}let C=_-n,S=c.reduce((P,v)=>P+(v.tokens?.output||0)+(v.tokens?.reasoning||0),0),w=Math.max(0,C-S);t.push({turnNumber:o,timestamp:u.time?.created?new Date(u.time.created).toISOString():null,mode:"cli",userMessage:m,assistantResponse:h,model:b,toolCalls:g,contextReferences:ye(),mcpTools:[],inputTokensEstimate:w,outputTokensEstimate:S-y,thinkingTokensEstimate:y}),n=_}}return{turns:t}}async getSyncData(e){return this.openCode.getOpenCodeSessionData(e)}async analyzeUsage(e,t){let s=ke(),o=await this.openCode.getOpenCodeMessagesForSession(e);if(o.length>0){let n=[];for(let c of o)if(c.role==="user"&&s.modeUsage.cli++,c.role==="assistant"){let p=c.modelID||"unknown";n.push(p);let m=await this.openCode.getOpenCodePartsForMessage(c.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 a=[...new Set(n)];s.modelSwitching.uniqueModels=a,s.modelSwitching.modelCount=a.length,s.modelSwitching.totalRequests=n.length;let u=0;for(let c=1;c<n.length;c++)n[c]!==n[c-1]&&u++;s.modelSwitching.switchCount=u}return s}};var Ma=N(require("fs")),kt=N(require("path"));var Os=class{constructor(e){this.crush=e}crush;id="crush";displayName="Crush";handles(e){return this.crush.isCrushSessionFile(e)}getBackingPath(e){return this.crush.getCrushDbPath(e)}async stat(e){return this.crush.statSessionFile(e)}async getTokens(e){let t=await this.crush.getTokensFromCrushSession(e);return{...t,actualTokens:t.tokens}}async countInteractions(e){return this.crush.countCrushInteractions(e)}async getModelUsage(e){return this.crush.getCrushModelUsage(e)}async getMeta(e){let t=[],s=await this.crush.readCrushSession(e),o;s&&(o=s.title||void 0,s.created_at&&t.push(s.created_at*1e3),s.updated_at&&t.push(s.updated_at*1e3));let n=await this.crush.getCrushMessages(e);for(let a of n)a.created_at&&t.push(a.created_at*1e3),a.finished_at&&t.push(a.finished_at*1e3);return t.sort((a,u)=>a-u),{title:o,firstInteraction:t.length>0?new Date(t[0]).toISOString():null,lastInteraction:t.length>0?new Date(t[t.length-1]).toISOString():null}}getEditorRoot(e){return kt.dirname(this.crush.getCrushDbPath(e))}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=this.crush.readCrushProjects();e(`\u{1F4C1} Crush: found ${o.length} project(s) in projects.json`);let n=await Promise.all(o.map(async u=>{let c=kt.join(u.data_dir,"crush.db");e(`\u{1F4C1} Checking Crush DB path: ${c}`);try{return await Ma.promises.access(c),(await this.crush.discoverSessionsInDb(c)).map(m=>kt.join(u.data_dir,`crush.db#${m}`))}catch(p){e(`Could not read Crush database for ${u.path}: ${p}`)}return[]})),a=n.reduce((u,c)=>u+c.length,0);a>0&&e(`\u{1F4C4} Found ${a} session(s) in Crush database(s)`),s.push(...n.flat())}catch(o){e(`Could not read Crush projects: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){let e=this.crush.getCrushConfigDir(),t=[{path:kt.join(e,"projects.json"),source:"Crush (projects.json)"}];try{let s=this.crush.readCrushProjects();for(let o of s)t.push({path:kt.join(o.data_dir,"crush.db"),source:`Crush (${kt.basename(o.path)})`})}catch{}return t}async buildTurns(e){let t=[],s=await this.crush.getCrushMessages(e),o=await this.crush.readCrushSession(e),a=s.filter(c=>c.role==="user").length,u=0;for(let c=0;c<s.length;c++){let p=s[c];if(p.role!=="user")continue;u++;let m=[];for(let w=c+1;w<s.length&&s[w].role!=="user";w++)s[w].role==="assistant"&&m.push(s[w]);let g=(Array.isArray(p.parts)?p.parts:[]).filter(w=>w?.type==="text"&&w?.text).map(w=>w.text).join(`
|
|
54
|
+
`),b="",y=[],_=null;for(let w of m){_||(_=w.model||null);let P=Array.isArray(w.parts)?w.parts:[];for(let v of P)v?.type==="text"&&v?.text?b+=v.text:v?.type==="tool_call"&&v?.data?.name&&y.push({toolName:v.data.name,arguments:v.data.arguments?JSON.stringify(v.data.arguments):void 0})}let C=o?.prompt_tokens&&a>0?Math.round(o.prompt_tokens/a):0,S=o?.completion_tokens&&a>0?Math.round(o.completion_tokens/a):0;t.push({turnNumber:u,timestamp:p.created_at?new Date(p.created_at*1e3).toISOString():null,mode:"cli",userMessage:g,assistantResponse:b,model:_,toolCalls:y,contextReferences:ye(),mcpTools:[],inputTokensEstimate:C,outputTokensEstimate:S,thinkingTokensEstimate:0})}return{turns:t}}async getSyncData(e){return this.crush.getCrushSessionData(e)}async analyzeUsage(e,t){let s=ke(),o=await this.crush.getCrushMessages(e),n=[];for(let c of o)if(c.role==="user"&&s.modeUsage.cli++,c.role==="assistant"){let p=c.model||"unknown";n.push(p);let m=Array.isArray(c.parts)?c.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 a=[...new Set(n)];s.modelSwitching.uniqueModels=a,s.modelSwitching.modelCount=a.length,s.modelSwitching.totalRequests=n.length;let u=0;for(let c=1;c<n.length;c++)n[c]!==n[c-1]&&u++;return s.modelSwitching.switchCount=u,Ee(t.modelPricing,a,n,s),s}};var wi=N(require("fs"));var Fs=class{constructor(e){this.continue_=e}continue_;id="continue";displayName="Continue";handles(e){return this.continue_.isContinueSessionFile(e)}getBackingPath(e){return e}async stat(e){return wi.promises.stat(e)}async getTokens(e){let t=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),o=this.continue_.readSessionsIndex().get(s),n=null,a=null;if(o?.dateCreated){n=new Date(o.dateCreated).toISOString();try{a=(await wi.promises.stat(e)).mtime.toISOString()}catch{}}let u;if(t?.workspaceDirectory)try{u=decodeURIComponent(t.workspaceDirectory.replace(/^file:\/\/\//,"").replace(/^file:\/\//,""))}catch{}return{title:t?.title,firstInteraction:n,lastInteraction:a,workspacePath:u}}getEditorRoot(e){return this.continue_.getContinueDataDir()}async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=this.continue_.getContinueSessionFiles();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Continue (~/.continue/sessions)`),s.push(...o))}catch(o){e(`Could not read Continue session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.continue_.getContinueSessionsDir(),source:"Continue"}]}async buildTurns(e){let t=[],s=this.continue_.buildContinueTurns(e),o=ye();for(let n of s)t.push({turnNumber:t.length+1,timestamp:null,mode:"ask",userMessage:n.userText,assistantResponse:n.assistantText,model:n.model,toolCalls:n.toolCalls,contextReferences:o,mcpTools:[],inputTokensEstimate:n.inputTokens,outputTokensEstimate:n.outputTokens,thinkingTokensEstimate:0});return{turns:t}}async analyzeUsage(e,t){let s=ke(),o=this.continue_.buildContinueTurns(e),n=this.continue_.getContinueSessionMeta(e),a=[];for(let p of o){s.modeUsage.ask++,p.model&&a.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(n?.mode==="agent")for(let p=0;p<o.length;p++)s.modeUsage.ask--,s.modeUsage.agent++;let u=[...new Set(a)];s.modelSwitching.uniqueModels=u,s.modelSwitching.modelCount=u.length,s.modelSwitching.totalRequests=a.length;let c=0;for(let p=1;p<a.length;p++)a[p]!==a[p-1]&&c++;return s.modelSwitching.switchCount=c,Ee(t.modelPricing,u,a,s),s}};var Da=N(require("fs"));var Aa=N(require("fs"));var Lu=new Set(["review","bug","think","compact","pr_comments"]);function Si(i){let e="";if(typeof i=="string")e=i;else if(Array.isArray(i)){for(let n of i)if(n?.type==="text"&&typeof n.text=="string"){e=n.text;break}}let s=e.trimStart().split(`
|
|
55
|
+
`)[0].trim().match(/^\/([a-z_]+)(?:\s|$)/i);if(!s)return null;let o=s[1].toLowerCase();return Lu.has(o)?o:null}var Ns=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 Aa.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 o=this.claudeCode.getClaudeCodeSessionFiles();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Claude Code (~/.claude/projects)`),s.push(...o))}catch(o){e(`Could not read Claude Code session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.claudeCode.getClaudeCodeProjectsDir(),source:"Claude Code"}]}async analyzeUsage(e,t){let s=ke(),o=await Ko(e),n=[];for(let c of o)if(c.type==="user"&&c.message?.role==="user"&&!c.isSidechain){s.modeUsage.cli++;let p=Si(c.message?.content);if(p){let m=`__slash__${p}`;s.toolCalls.byTool[m]=(s.toolCalls.byTool[m]||0)+1}}else if(c.type==="assistant"){let p=Vt(c.message?.model||"unknown");n.push(p);let m=Array.isArray(c.message?.content)?c.message.content:[];for(let h of m)if(h?.type==="tool_use"){let g=String(h.name||"tool");if(nt(g)){let b=it(g,t.toolNameMap);s.mcpTools.total++,s.mcpTools.byServer[b]=(s.mcpTools.byServer[b]||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 a=[...new Set(n)];s.modelSwitching.uniqueModels=a,s.modelSwitching.modelCount=a.length,s.modelSwitching.totalRequests=n.length;let u=0;for(let c=1;c<n.length;c++)n[c]!==n[c-1]&&u++;return s.modelSwitching.switchCount=u,Ee(t.modelPricing,a,n,s),s}};var js=class{constructor(e,t,s,o){this.claudeDesktopCowork=e;this.isMcpToolFn=t;this.extractMcpServerNameFn=s;this.estimateTokensFn=o}claudeDesktopCowork;isMcpToolFn;extractMcpServerNameFn;estimateTokensFn;id="claudedesktop";displayName="Claude Desktop Cowork";handles(e){return this.claudeDesktopCowork.isCoworkSessionFile(e)}getBackingPath(e){return e}async stat(e){return Da.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 o=this.claudeDesktopCowork.getCoworkSessionFiles();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Claude Desktop Cowork`),s.push(...o))}catch(o){e(`Could not read Claude Desktop Cowork session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){let e=this.claudeDesktopCowork.getCoworkBaseDir();return e?[{path:e,source:"Claude Desktop (Cowork)"}]:[]}async buildTurns(e){let t=[],s=this.claudeDesktopCowork.readCoworkEvents(e),o=null,n=[],a=()=>{if(!o)return;let c=o.message?.content,p=typeof c=="string"?c:Array.isArray(c)?c.filter(P=>P.type==="text").map(P=>P.text||"").join(`
|
|
56
|
+
`):"",m="",h=0,g=0,b=null,y=[],_=[],C=new Set;for(let P of n){let v=P.message;!b&&v?.model&&(b=v.model);let M=P.requestId,A=!M||!C.has(M);M&&C.add(M);let U=v?.usage;U&&A&&(h+=(U.input_tokens||0)+(U.cache_creation_input_tokens||0)+(U.cache_read_input_tokens||0),g+=U.output_tokens||0);let O=Array.isArray(v?.content)?v.content:[];for(let $ of O)if($.type==="text")m+=$.text||"";else if($.type==="tool_use"){let q=$.name||"unknown";this.isMcpToolFn(q)?_.push({server:this.extractMcpServerNameFn(q),tool:q}):y.push({toolName:q,arguments:$.input?JSON.stringify($.input):void 0})}}let S=b||"claude-sonnet-4-6",w=h>0||g>0?{promptTokens:h,completionTokens:g}:void 0;t.push({turnNumber:t.length+1,timestamp:o.timestamp?new Date(o.timestamp).toISOString():null,mode:"agent",userMessage:p,assistantResponse:m,model:S,toolCalls:y,contextReferences:ye(),mcpTools:_,inputTokensEstimate:h||this.estimateTokensFn(p,S),outputTokensEstimate:g||this.estimateTokensFn(m,S),thinkingTokensEstimate:0,actualUsage:w})},u=c=>{let p=c.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 c of s)c.type==="user"&&!c.isSidechain&&c.message?.role==="user"&&u(c)?(a(),o=c,n.length=0):c.type==="assistant"&&c.message?.stop_reason&&c.message?.role==="assistant"&&n.push(c);return a(),{turns:t}}async analyzeUsage(e,t){let s=ke(),o=await Ko(e),n=[];for(let c of o)if(c.type==="user"&&c.message?.role==="user"&&!c.isSidechain){s.modeUsage.ask++;let p=Si(c.message?.content);if(p){let m=`__slash__${p}`;s.toolCalls.byTool[m]=(s.toolCalls.byTool[m]||0)+1}}else if(c.type==="assistant"){let p=Vt(c.message?.model||"unknown");n.push(p);let m=Array.isArray(c.message?.content)?c.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 a=[...new Set(n)];s.modelSwitching.uniqueModels=a,s.modelSwitching.modelCount=a.length,s.modelSwitching.totalRequests=n.length;let u=0;for(let c=1;c<n.length;c++)n[c]!==n[c-1]&&u++;return s.modelSwitching.switchCount=u,Ee(t.modelPricing,a,n,s),s}};var Ea=N(require("path"));var Ls=class{constructor(e,t){this.visualStudio=e;this.estimateTokens=t}visualStudio;estimateTokens;id="visualstudio";displayName="Visual Studio";handles(e){return this.visualStudio.isVSSessionFile(e)}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),o=this.visualStudio.getSessionTimestamps(t),n=[];return o.timeCreated&&n.push(new Date(o.timeCreated).getTime()),o.timeUpdated&&n.push(new Date(o.timeUpdated).getTime()),n.sort((a,u)=>a-u),{title:s,firstInteraction:n.length>0?new Date(n[0]).toISOString():null,lastInteraction:n.length>0?new Date(n[n.length-1]).toISOString():null}}getEditorRoot(e){return Ea.dirname(e)}skipBackendSync=!0;async discover(e){let t=this.getCandidatePaths(),s=[];try{let o=this.visualStudio.discoverSessions();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Visual Studio Copilot`),s.push(...o))}catch(o){e(`Could not read Visual Studio session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.visualStudio.getLogDir(),source:"Visual Studio (log dir)"}]}getRawFileContent(e){let s=this.visualStudio.decodeSessionFile(e).map((o,n)=>n===0?o:o?.[1]??o);return JSON.stringify(s,null,2)}async buildTurns(e){let t=[],s=this.visualStudio.decodeSessionFile(e),o=0;for(let n=1;n<s.length;n+=2){let a=s[n],u=s[n+1];if(!a)continue;let c=a[1],p=u?.[1];o++;let m=this.visualStudio.extractTextFromContent(c?.Content||[]),h=u?this.visualStudio.extractTextFromContent(p?.Content||[]):"",g=this.visualStudio.getModelId(p??c,!p),b=this.visualStudio.extractContextText(c?.Context),y=this.estimateTokens(m+b,g??"gpt-4"),_=u?this.estimateTokens(h,g??"gpt-4"):0,C=[];for(let S of p?.Content||[]){let w=Array.isArray(S)?S[1]:null;w?.Function&&C.push({toolName:String(w.Function.Description||"tool"),result:typeof w.Function.Result=="string"?w.Function.Result:void 0})}t.push({turnNumber:o,timestamp:c?.Timestamp?new Date(c.Timestamp).toISOString():null,mode:"ask",userMessage:m,assistantResponse:h,model:g,toolCalls:C,contextReferences:ye(),mcpTools:[],inputTokensEstimate:y,outputTokensEstimate:_,thinkingTokensEstimate:0})}return{turns:t}}async analyzeUsage(e,t){let s=ke(),o=this.visualStudio.decodeSessionFile(e),n=[];for(let c=1;c<o.length;c++){let p=c%2===1,m=o[c]?.[1];if(p)s.modeUsage.ask++;else{let h=this.visualStudio.getModelId(m,!1);h&&n.push(h);for(let g of m?.Content??[]){let b=Array.isArray(g)?g[1]:null;if(b?.Function){s.toolCalls.total++;let y=String(b.Function.Name||b.Function.Description||"tool");if(nt(y)){s.mcpTools.total++;let _=it(y,t.toolNameMap);s.mcpTools.byServer[_]=(s.mcpTools.byServer[_]||0)+1;let C=Jt(y);s.mcpTools.byTool[C]=(s.mcpTools.byTool[C]||0)+1,s.toolCalls.total--}else s.toolCalls.byTool[y]=(s.toolCalls.byTool[y]||0)+1}}}}let a=[...new Set(n)];s.modelSwitching.uniqueModels=a,s.modelSwitching.modelCount=a.length,s.modelSwitching.totalRequests=n.length;let u=0;for(let c=1;c<n.length;c++)n[c]!==n[c-1]&&u++;return s.modelSwitching.switchCount=u,Ee(t.modelPricing,a,n,s),s}};var Ia=N(require("fs"));var $s=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 Ia.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 o=this.mistralVibe.discoverSessions();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Mistral Vibe (~/.vibe/logs/session)`),s.push(...o))}catch(o){e(`Could not read Mistral Vibe session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.mistralVibe.getSessionLogDir(),source:"Mistral Vibe"}]}async buildTurns(e){let t=[],s=this.mistralVibe.readSessionMessages(e),o=this.mistralVibe.getSessionMeta(e),n=this.mistralVibe.getTokensFromSession(e),a=o.model||"devstral",u=[];for(let c=0;c<s.length;c++)s[c].role==="user"&&s[c].injected!==!0&&u.push(c);for(let c=0;c<u.length;c++){let p=u[c],m=c+1<u.length?u[c+1]:s.length,h=s[p],g=typeof h.content=="string"?h.content:"",b="",y=[];for(let _=p+1;_<m;_++){let C=s[_];if(C.role==="assistant"){if(typeof C.content=="string"&&(b+=C.content),Array.isArray(C.tool_calls))for(let S of C.tool_calls)y.push({toolName:S.function?.name||S.name||"unknown",arguments:S.function?.arguments?JSON.stringify(S.function.arguments):void 0})}else if(C.role==="tool"){let S=y[y.length-1];S&&(S.result=typeof C.content=="string"?C.content:void 0)}}t.push({turnNumber:c+1,timestamp:o.firstInteraction,mode:"cli",userMessage:g,assistantResponse:b,model:a,toolCalls:y,contextReferences:ye(),mcpTools:[],inputTokensEstimate:0,outputTokensEstimate:0,thinkingTokensEstimate:0})}return{turns:t,actualTokens:n.tokens}}async analyzeUsage(e,t){let s=ke(),o=this.mistralVibe.readSessionMessages(e),a=this.mistralVibe.getSessionMeta(e).model||"devstral",u=[];for(let p of o)if(p.role==="user"&&p.injected!==!0)s.modeUsage.cli++;else if(p.role==="assistant"&&(u.push(a),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 c=[...new Set(u)];return s.modelSwitching.uniqueModels=c,s.modelSwitching.modelCount=c.length,s.modelSwitching.totalRequests=u.length,s.modelSwitching.switchCount=0,Ee(t.modelPricing,c,u,s),s}};var Ua=N(require("fs"));var Gs=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 Ua.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 o=this.geminiCli.getGeminiCliSessionFiles();o.length>0&&(e(`\u{1F4C4} Found ${o.length} session file(s) in Gemini CLI (~/.gemini/tmp/*/chats)`),s.push(...o))}catch(o){e(`Could not read Gemini CLI session files: ${o}`)}return{sessionFiles:s,candidatePaths:t}}getCandidatePaths(){return[{path:this.geminiCli.getGeminiTmpDir(),source:"Gemini CLI (sessions)"},{path:this.geminiCli.getGeminiProjectsPath(),source:"Gemini CLI (projects.json)"},{path:this.geminiCli.getGeminiLogsPath(),source:"Gemini CLI (logs.json)"}]}async buildTurns(e){return Promise.resolve(this.geminiCli.buildGeminiCliTurns(e))}async getDailyFractions(e){return Promise.resolve(this.geminiCli.getGeminiCliDailyFractions(e))}async analyzeUsage(e,t){let s=ke(),o=this.geminiCli.readGeminiCliSession(e),n=[];s.modeUsage.cli+=o.userRecords.length;for(let c of o.assistantRecords){let p=zo(c.model||"unknown");n.push(p);for(let m of Array.isArray(c.toolCalls)?c.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 a=[...new Set(n)];s.modelSwitching.uniqueModels=a,s.modelSwitching.modelCount=a.length,s.modelSwitching.totalRequests=n.length;let u=0;for(let c=1;c<n.length;c++)n[c]!==n[c-1]&&u++;return s.modelSwitching.switchCount=u,Ee(t.modelPricing,a,n,s),s}};var He=N(require("fs")),J=N(require("path")),Ws=N(require("os"));var Bs=["Code","Code - Insiders","Code - Exploration","VSCodium","Cursor"],Fa=new Set(["Public","Default","Default User","All Users"]);function vi(){return Ws.platform()==="linux"&&(typeof process.env.WSL_DISTRO_NAME=="string"||typeof process.env.WSL_INTEROP=="string")}function Ra(){let i=Ws.platform(),e=Ws.homedir(),t=[];if(i==="win32"){let s=process.env.APPDATA||J.join(e,"AppData","Roaming");for(let o of Bs)t.push(J.join(s,o,"User"))}else if(i==="darwin")for(let s of Bs)t.push(J.join(e,"Library","Application Support",s,"User"));else{let s=process.env.XDG_CONFIG_HOME||J.join(e,".config");for(let o of Bs)t.push(J.join(s,o,"User"))}return t.push(J.join(e,".vscode-server","data","User"),J.join(e,".vscode-server-insiders","data","User"),J.join(e,".vscode-remote","data","User"),J.join("/tmp",".vscode-server","data","User"),J.join("/workspace",".vscode-server","data","User")),t}async function $u(){if(!vi())return[];let i=[],e=[],t=process.env.USERPROFILE;if(t){let o=t.match(/^\/mnt\/[a-z]\/Users\/([^/]+)/);o&&e.push(o[1])}let s="/mnt/c/Users";try{let o=await He.promises.readdir(s,{withFileTypes:!0});for(let n of o){if(!n.isDirectory())continue;let a=n.name;Fa.has(a)||a.startsWith(".")||e.includes(a)||e.push(a)}}catch{return[]}for(let o of e){let n=J.join(s,o,"AppData","Roaming");for(let a of Bs)i.push(J.join(n,a,"User"))}return i}function Gu(){if(!vi())return[];let i=[],e="/mnt/c/Users";try{let t=He.readdirSync(e,{withFileTypes:!0});for(let s of t)if(!(!s.isDirectory()||s.name.startsWith(".")||Fa.has(s.name)))for(let o of Bs)i.push(J.join(e,s.name,"AppData","Roaming",o,"User"))}catch{}return i}var qu=["embeddings","index","cache","preferences","settings","config","workspacesessions","globalsessions","api.json"];function Bu(i){let e=i.toLowerCase();return qu.some(t=>e.includes(t))}async function qs(i){try{return await He.promises.access(i),!0}catch{return!1}}async function Oa(i,e,t,s){if(i.length===0)return;let o=0,n=Array.from({length:Math.min(t,i.length)},async()=>{for(;o<i.length;){let a=o++;try{await e(i[a],a)}catch(u){s?.(i[a],a,u)}}});await Promise.all(n)}async function Na(i,e,t){let s;try{s=await He.promises.readdir(i,{withFileTypes:!0})}catch(o){t(`Could not scan directory ${i}: ${o}`);return}for(let o of s){let n=J.join(i,o.name);if(o.isDirectory()){await Na(n,e,t);continue}if(!(!o.name.endsWith(".json")&&!o.name.endsWith(".jsonl"))&&!Bu(o.name))try{(await He.promises.stat(n)).size>0&&e.push(n)}catch{}}}var zs=class{id="copilotchat";displayName="GitHub Copilot Chat";handles(e){return!1}getBackingPath(e){return e}async stat(e){return He.promises.stat(e)}async getTokens(e){try{let t=await He.promises.readFile(e,"utf8");return ls(t)?{tokens:0,thinkingTokens:0,actualTokens:0}:e.endsWith(".jsonl")||yt(t)?qo(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):J.dirname(e)}getCandidatePaths(){let e=[];for(let t of Ra())e.push({path:t,source:"VS Code"});for(let t of Gu())e.push({path:t,source:"VS Code (Windows via WSL)"});return e}async discover(e){let t=this.getCandidatePaths(),s=[],o=Ra();if(vi()){e("\u{1FA9F} WSL environment detected \u2014 probing Windows-side VS Code paths");let u=await $u();u.length>0?(e(`\u{1FA9F} Adding ${u.length} Windows-side candidate paths from WSL`),o.push(...u)):e("\u{1FA9F} No Windows-side paths found (Windows drive may not be mounted)")}e(`\u{1F4C2} Considering ${o.length} candidate VS Code paths`);let n=await Promise.all(o.map(u=>qs(u).catch(()=>!1))),a=o.filter((u,c)=>n[c]);return e(`\u2705 Found ${a.length} of ${o.length} VS Code paths exist on disk`),await Oa(a,async u=>{let c=J.basename(J.dirname(u)),p=J.join(u,"workspaceStorage");try{if(await qs(p)){let h=await He.promises.readdir(p);await Oa(h,async g=>{let b=[J.join(p,g,"chatSessions"),J.join(p,g,"GitHub.copilot-chat","chatSessions"),J.join(p,g,"github.copilot-chat","chatSessions"),J.join(p,g,"GitHub.copilot","chatSessions"),J.join(p,g,"github.copilot","chatSessions"),J.join(p,g,"GitHub.copilot-chat","debug-logs"),J.join(p,g,"github.copilot-chat","debug-logs"),J.join(p,g,"GitHub.copilot","debug-logs"),J.join(p,g,"github.copilot","debug-logs")];for(let y of b)try{if(!await qs(y))continue;let _=(await He.promises.readdir(y)).filter(C=>C.endsWith(".json")||C.endsWith(".jsonl")).map(C=>J.join(y,C));_.length>0&&(e(`\u{1F4C4} Found ${_.length} session files in ${c}/workspaceStorage/${g}`),s.push(..._))}catch{}},6)}}catch(h){e(`Could not check workspace storage path ${p}: ${h}`)}let m=J.join(u,"globalStorage","emptyWindowChatSessions");try{if(await qs(m)){let h=(await He.promises.readdir(m)).filter(g=>g.endsWith(".json")||g.endsWith(".jsonl")).map(g=>J.join(m,g));h.length>0&&(e(`\u{1F4C4} Found ${h.length} session files in ${c}/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=J.join(u,"globalStorage",h);try{await qs(g)&&(e(`\u{1F4C4} Scanning ${c}/globalStorage/${h}`),await Na(g,s,e))}catch(b){e(`Could not check Copilot Chat global storage path ${g}: ${b}`)}}},4,(u,c,p)=>{e(`Failed to scan VS Code user path ${u}: ${p instanceof Error?p.message:String(p)}`)}),{sessionFiles:s,candidatePaths:t}}};var Hs=N(require("fs")),Yo=N(require("path")),ja=N(require("os"));function Ti(){return Yo.join(ja.homedir(),".copilot","session-state")}async function zu(i){try{return await Hs.promises.access(i),!0}catch{return!1}}var Vs=class{id="copilotcli";displayName="GitHub Copilot CLI";handles(e){return!1}getBackingPath(e){return e}async stat(e){return Hs.promises.stat(e)}async getTokens(e){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){return Ti()}getCandidatePaths(){return[{path:Ti(),source:"Copilot CLI"}]}async discover(e){let t=this.getCandidatePaths(),s=[],o=Ti();try{if(!await zu(o))return{sessionFiles:s,candidatePaths:t};let n;try{n=await Hs.promises.readdir(o,{withFileTypes:!0})}catch(p){return e(`Could not read Copilot CLI session path in ${o}: ${p}`),{sessionFiles:s,candidatePaths:t}}let a=n.filter(p=>!p.isDirectory()&&(p.name.endsWith(".json")||p.name.endsWith(".jsonl"))).map(p=>Yo.join(o,p.name));a.length>0&&(e(`\u{1F4C4} Found ${a.length} session files in Copilot CLI directory`),s.push(...a));let u=n.filter(p=>p.isDirectory()),c=(await Promise.all(u.map(async p=>{let m=Yo.join(o,p.name,"events.jsonl");try{return(await Hs.promises.stat(m)).size>0?m:null}catch{return null}}))).filter(p=>p!==null);c.length>0&&(e(`\u{1F4C4} Found ${c.length} session files in Copilot CLI subdirectories`),s.push(...c))}catch(n){e(`Could not check Copilot CLI session path ${o}: ${n}`)}return{sessionFiles:s,candidatePaths:t}}};function Re(i){return typeof i=="object"&&i!==null}function Wu(i){return typeof i!="string"?!1:!["__proto__","prototype","constructor","hasOwnProperty"].includes(i)&&!i.startsWith("__")}function Js(i){return/^\d+$/.test(i)}function Pi(i,e){if(typeof i!="string")return e;let t=i.trim();return t?t.startsWith("copilot/")?t.substring(8):t:e}function Hu(i,e){if(!Re(e))return i;let t=e.kind,s=e.k,o=e.v;if(t===0)return o;if(!Array.isArray(s)||s.length===0)return i;let n=s.map(String);for(let m of n)if(!Wu(m))return i;let a=Re(i)?i:Object.create(null),u=a,c=(m,h,g)=>{let b=Js(g),y=m[h];return Re(y)||(y=b?[]:Object.create(null),m[h]=y),y};for(let m=0;m<n.length-1;m++){let h=n[m],g=n[m+1];if(Array.isArray(u)&&Js(h)){let b=Number(h),y=u[b];Re(y)||(y=Js(g)?[]:Object.create(null),u[b]=y),u=y;continue}if(!Re(u))return a;u=c(u,h,g)}let p=n[n.length-1];if(t===1)return Array.isArray(u)&&Js(p)?(u[Number(p)]=o,a):(Re(u)&&Object.defineProperty(u,p,{value:o,writable:!0,enumerable:!0,configurable:!0}),a);if(t===2){let m;if(Array.isArray(u)&&Js(p)){let h=Number(p);Array.isArray(u[h])||(u[h]=[]),m=u[h]}else Re(u)&&(Array.isArray(u[p])||Object.defineProperty(u,p,{value:[],writable:!0,enumerable:!0,configurable:!0}),m=u[p]);return Array.isArray(m)&&(Array.isArray(o)?m.push(...o):m.push(o)),a}return a}function Vu(i){if(!Array.isArray(i))return{responseText:"",thinkingText:""};let e="",t="";for(let s of i){if(!Re(s))continue;if(s.kind==="thinking"){let a=s.value;typeof a=="string"&&a&&(t+=a);continue}let o=Re(s.content)?s.content.value:void 0,n=s.value;if(typeof o=="string"&&o){e+=o;continue}typeof n=="string"&&n&&(e+=n)}return{responseText:e,thinkingText:t}}function La(i,e,t,s){let o={},n=0,a=0,u=0,c=0,p=0,m,h="gpt-4o",g=C=>typeof C=="string"&&C?C:h,b=(C,S)=>{let w=g(C);o[w]||(o[w]={inputTokens:0,outputTokens:0});let P=t(S,w);o[w].inputTokens+=P,a+=P},y=(C,S)=>{let w=g(C);o[w]||(o[w]={inputTokens:0,outputTokens:0});let P=t(S,w);o[w].outputTokens+=P,u+=P};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 v of C)try{let M=JSON.parse(v);w=Hu(w,M)}catch{}let P=Re(w)&&Array.isArray(w.requests)?w.requests:[];if(P.length>0){n=P.filter(v=>Re(v)&&Re(v.message)&&typeof v.message.text=="string"&&v.message.text.trim()).length;for(let v of P){if(!Re(v))continue;let M=Pi(v.modelId??v.selectedModel?.identifier??v.model,h),A=s?s(v):void 0,U=Pi(A,""),O=U&&U!==h?U:M,$=v.message;Re($)&&typeof $.text=="string"&&b(O,$.text);let{responseText:q,thinkingText:ve}=Vu(v.response);q&&y(O,q),ve&&(c+=t(ve,O));let Ce=v.response;if(Array.isArray(Ce))for(let te of Ce){let Te=Et(te);if(Te){let Pe=Te.modelName||O;Te.prompt&&b(Pe,Te.prompt),Te.result&&y(Pe,Te.result)}}}}return{tokens:a+u+c,interactions:n,modelUsage:o,thinkingTokens:c,actualTokens:0}}try{m=JSON.parse(e.trim())}catch{return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0}}}if(!m)try{m=JSON.parse(e)}catch{return{tokens:0,interactions:0,modelUsage:{},thinkingTokens:0,actualTokens:0}}let _=Array.isArray(m.requests)?m.requests:Array.isArray(m.history)?m.history:[];n=_.length;for(let C of _){let S=s?s(C):C?.model||h,w=Pi(S,h);if(o[w]||(o[w]={inputTokens:0,outputTokens:0}),C?.message?.parts){for(let v of C.message.parts)if(typeof v?.text=="string"&&v.text){let M=t(v.text,w);o[w].inputTokens+=M,a+=M}}else if(typeof C?.message?.text=="string"){let v=t(C.message.text,w);o[w].inputTokens+=v,a+=v}let P=Array.isArray(C?.response)?C.response:Array.isArray(C?.responses)?C.responses:[];for(let v of P){if(v?.kind==="thinking"&&typeof v?.value=="string"&&v.value){c+=t(v.value,w);continue}let M=Et(v);if(M){let A=M.modelName||w;M.prompt&&b(A,M.prompt),M.result&&y(A,M.result);continue}if(typeof v?.value=="string"&&v.value){let A=t(v.value,w);o[w].outputTokens+=A,u+=A}if(v?.message?.parts){for(let A of v.message.parts)if(typeof A?.text=="string"&&A.text){let U=t(A.text,w);o[w].outputTokens+=U,u+=U}}}if(C?.result?.usage){let v=C.result.usage,M=typeof v.promptTokens=="number"?v.promptTokens:0,A=typeof v.completionTokens=="number"?v.completionTokens:0;p+=M+A}else typeof C?.result?.promptTokens=="number"&&typeof C?.result?.outputTokens=="number"?p+=C.result.promptTokens+C.result.outputTokens:C?.result?.metadata&&typeof C?.result?.metadata?.promptTokens=="number"&&typeof C?.result?.metadata?.outputTokens=="number"&&(p+=C.result.metadata.promptTokens+C.result.metadata.outputTokens)}return{tokens:a+u+c,interactions:n,modelUsage:o,thinkingTokens:c,actualTokens:p}}function $a(i,e,t){let s=t.toISOString().slice(0,10),o={};function n(c){if(c==null)return;let p=new Date(c);if(!isNaN(p.getTime())){let m=p.toISOString().slice(0,10);o[m]=(o[m]||0)+1}}if(e){let c={},p=i.trim().split(`
|
|
57
|
+
`);for(let m of p)if(m.trim())try{let h=JSON.parse(m);if(h.type==="user.message"){let _=h.timestamp??h.ts??h.data?.timestamp;n(_);continue}let g=h.kind,b=h.k,y=h.v;if(g===0&&y?.requests&&Array.isArray(y.requests))for(let _ of y.requests){let C=_.timestamp??_.ts;n(C)}else if(g===2&&Array.isArray(b)&&b[0]==="requests"){if(Array.isArray(y))for(let _ of y){let C=_.timestamp??_.ts;n(C)}else if(y&&typeof y=="object"){let _=y.timestamp??y.ts;_!==void 0&&n(_),typeof b[1]=="number"&&(c[b[1]]=_)}}else if(g===1&&Array.isArray(b)&&b.length===3&&b[0]==="requests"&&(b[2]==="timestamp"||b[2]==="ts")&&typeof b[1]=="number"){let _=b[1];c[_]===void 0&&n(y),c[_]=y}}catch{}}else try{let c=JSON.parse(i);if(c.requests&&Array.isArray(c.requests))for(let p of c.requests){let m=p.timestamp??p.ts??p.result?.timestamp;n(m)}}catch{}let a=Object.values(o).reduce((c,p)=>c+p,0);if(a===0)return{[s]:1};let u={};for(let[c,p]of Object.entries(o))u[c]=p/a;return u}var Ut=N(require("fs")),Mi=N(require("path")),qa=N(require("os")),Ba=3,Ga=2e3,za=Mi.join(qa.homedir(),".copilot-token-tracker"),xi=Mi.join(za,"cli-cache.json"),Qe=new Map,ps=!0,Wa=!1;function Ai(){ps=!1,Qe.clear()}function Di(){if(ps)try{if(!Ut.existsSync(xi))return;let i=Ut.readFileSync(xi,"utf-8"),e=JSON.parse(i);if(e.version!==Ba){Qe.clear();return}Qe=new Map(Object.entries(e.entries))}catch{Qe.clear()}}function Ei(){if(!(!ps||!Wa))try{if(Qe.size>Ga){let e=[...Qe.entries()].sort((t,s)=>s[1].mtime-t[1].mtime);Qe=new Map(e.slice(0,Ga))}Ut.mkdirSync(za,{recursive:!0});let i={version:Ba,entries:Object.fromEntries(Qe)};Ut.writeFileSync(xi,JSON.stringify(i),"utf-8")}catch{}}function Ha(i,e,t){if(!ps)return null;let s=Qe.get(i);return!s||s.mtime!==e||s.size!==t?null:{...s.data,lastModified:new Date(s.data.lastModified)}}function Ii(i,e,t,s){ps&&(Wa=!0,Qe.set(i,{mtime:e,size:t,data:{...s,lastModified:s.lastModified.toISOString()}}))}function Ui(){return{entries:Qe.size,enabled:ps}}var Va={$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}};var Ja={$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-06",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},"gpt-5-mini":{inputCostPerMillion:.25,outputCostPerMillion:2,category:"GPT-5 models",tier:"standard",multiplier:0,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},"gpt-5.1-codex":{inputCostPerMillion:1.25,outputCostPerMillion:10,category:"GPT-5 models",tier:"premium",multiplier:1},"gpt-5.1-codex-max":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"premium",multiplier:1},"gpt-5.1-codex-mini":{inputCostPerMillion:.25,outputCostPerMillion:2,category:"GPT-5 models",tier:"premium",multiplier:.33},"gpt-5.2":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"premium",multiplier:1,copilotPricing:{inputCostPerMillion:1.75,cachedInputCostPerMillion:.175,outputCostPerMillion:14,releaseStatus:"GA",category:"Versatile"}},"gpt-5.2-codex":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"premium",multiplier:1,copilotPricing:{inputCostPerMillion:1.75,cachedInputCostPerMillion:.175,outputCostPerMillion:14,releaseStatus:"GA",category:"Powerful"}},"gpt-5.2-pro":{inputCostPerMillion:21,outputCostPerMillion:168,category:"GPT-5 models",tier:"premium",multiplier:1},"gpt-5.3-codex":{inputCostPerMillion:1.75,outputCostPerMillion:14,category:"GPT-5 models",tier:"premium",multiplier:1,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:"GA",category:"Versatile"}},"gpt-4.1-mini":{inputCostPerMillion:.4,cachedInputCostPerMillion:.1,outputCostPerMillion:1.6,category:"GPT-4 models",tier:"standard",multiplier:0},"gpt-4.1-nano":{inputCostPerMillion:.1,cachedInputCostPerMillion:.025,outputCostPerMillion:.4,category:"GPT-4 models",tier:"standard",multiplier:0},"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,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},"claude-haiku-4.5":{inputCostPerMillion:1,outputCostPerMillion:5,cachedInputCostPerMillion:.1,cacheCreationCostPerMillion:1.25,category:"Claude models (Anthropic)",tier:"premium",multiplier:.33,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},"claude-opus-4.5":{inputCostPerMillion:5,outputCostPerMillion:25,cachedInputCostPerMillion:.5,cacheCreationCostPerMillion:6.25,category:"Claude models (Anthropic)",tier:"premium",multiplier:3,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,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,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,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},"gemini-2.5-flash-lite":{inputCostPerMillion:.1,outputCostPerMillion:.4,category:"Google Gemini models",tier:"unknown",multiplier:1},"gemini-2.0-flash":{inputCostPerMillion:.1,outputCostPerMillion:.4,category:"Google Gemini models",tier:"standard",multiplier:0},"gemini-2.0-flash-lite":{inputCostPerMillion:.075,outputCostPerMillion:.3,category:"Google Gemini models",tier:"standard",multiplier:0},"gemini-3-flash":{inputCostPerMillion:.5,outputCostPerMillion:3,category:"Google Gemini models",tier:"premium",multiplier:.33,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,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,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"]}}};var Ka={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_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_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","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","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_git_git_log:"Git MCP: Git Log",mcp_git_git_show:"Git MCP: Git Show",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","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",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_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",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",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",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",plan:"Plan",signal_plan_ready:"Signal Plan Ready",update_plan_progress:"Update Plan Progress",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"};var Xa=.2,Za=21e3,el=.3,en=Va.estimators,Qt=Ja.pricing,Qu=Ka,Xu=i=>{},tl=i=>{},Zu=(i,e)=>console.error(D.red(i),e||"");function ed(){let i=rs.file(__dirname);return new bo(i)}function td(){let i=rs.file(__dirname);return new wo(i)}function sd(){return new So}function od(){return new Fo}function nd(){return new jo}function id(){return new $o}function rd(){return new Go}function ad(){return new Wo}var ld=ed(),cd=td(),ud=sd(),dd=od(),pd=nd(),md=id(),hd=rd(),fd=ad(),tn=[new Rs(ld),new Os(cd),new Ls(dd,(i,e)=>Y(i,e??"gpt-4",en)),new Fs(ud),new js(md,nt,it,(i,e)=>Y(i,e??"gpt-4",en)),new Ns(pd),new $s(hd),new Gs(fd),new zs,new Vs,new Us];function sl(){return new go({log:Xu,warn:tl,error:Zu,ecosystems:tn})}async function Se(){return sl().getCopilotSessionFiles()}async function sn(i){let e=new Set,t=Ne.join(Qa.homedir(),".claude","projects");for(let o of i){if(o.startsWith(t+Ne.sep)||o.startsWith(t+"/")){try{let p=(await rt.promises.readFile(o,"utf-8")).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{}}catch{}continue}let n=Ne.dirname(o);if(Ne.basename(n)!=="chatSessions")continue;let a=Ne.dirname(n),u=Ne.join(a,"workspace.json");try{if(!rt.existsSync(u))continue;let p=JSON.parse(await rt.promises.readFile(u,"utf-8")).folder;if(!p||!p.startsWith("file://"))continue;let m=decodeURIComponent(p.replace(/^file:\/\//,""));/^\/[A-Za-z]:/.test(m)&&(m=m.slice(1)),e.add(m)}catch{}}if(e.size===0)return;let s=0;for(let o of e)try{let n=rt.existsSync(Ne.join(o,".github","copilot-instructions.md")),a=rt.existsSync(Ne.join(o,"agents.md")),u=rt.existsSync(Ne.join(o,"CLAUDE.md"));!n&&!a&&!u&&s++}catch{s++}return{customizationTypes:[],workspaces:[],totalWorkspaces:e.size,workspacesWithIssues:s}}function on(){return sl().getDiagnosticCandidatePaths()}function gd(i,e){return Y(i,e||"gpt-4",en)}function yd(i){return It(i,Qt)}async function ol(i){let e=tn.find(t=>t.handles(i));return e?e.stat(i):rt.promises.stat(i)}function Ya(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 nl(i,e,t=20){if(i.length===0)return[];let s=new Array(i.length),o=0,n=Array.from({length:Math.min(t,i.length)},async()=>{for(;o<i.length;){let a=o++;try{s[a]=await e(i[a],a)}catch{s[a]=void 0}}});return await Promise.all(n),s}function wt(i){return i.actualTokens>0?i.actualTokens:i.tokens}async function ms(i){try{let e=await ol(i),t=Ha(i,e.mtimeMs,e.size);if(t)return t;let s=tn.find(b=>b.handles(i));if(s){let[b,y,_]=await Promise.all([s.getTokens(i),s.countInteractions(i),s.getModelUsage(i)]),C=e.mtime.toISOString().slice(0,10),S={file:i,tokens:b.actualTokens>0?b.actualTokens:b.tokens,thinkingTokens:b.thinkingTokens,actualTokens:b.actualTokens,interactions:y,modelUsage:_,lastModified:e.mtime,editorSource:Ya(i),dailyFractions:await s.getDailyFractions?.(i)??{[C]:1}};return Ii(i,e.mtimeMs,e.size,S),S}let o=await rt.promises.readFile(i,"utf-8");if(!o.trim())return null;let n=i.endsWith(".jsonl")||yt(o),a=0,u=0,c=0,p=0,m={};if(n){let b=qo(o);a=b.actualTokens>0?b.actualTokens:b.tokens,u=b.thinkingTokens,c=b.actualTokens,m=b.modelUsage;let y=o.trim().split(`
|
|
59
|
+
`);for(let _ of y)try{let C=JSON.parse(_);(C.type==="user.message"||C.kind===2&&C.k?.[0]==="requests")&&p++}catch{}}else{let b=La(i,o,gd,yd);a=b.tokens,u=b.thinkingTokens,c=b.actualTokens,p=b.interactions,m=b.modelUsage}let h=$a(o,n,e.mtime),g={file:i,tokens:a,thinkingTokens:u,actualTokens:c,interactions:p,modelUsage:m,lastModified:e.mtime,editorSource:Ya(i),dailyFractions:h};return Ii(i,e.mtimeMs,e.size,g),g}catch{return null}}async function hs(i,e){let t=new Date,s=t.toISOString().slice(0,10),o=t.getUTCFullYear(),n=t.getUTCMonth(),a=`${o}-${String(n+1).padStart(2,"0")}-01`,p=`${n===0?o-1:o}-${String(n===0?12:n).padStart(2,"0")}-01`,h=new Date(Date.UTC(o,n,t.getUTCDate()-30)).toISOString().slice(0,10),g={today:Qo(),month:Qo(),lastMonth:Qo(),last30Days:Qo()},b=0,y=await nl(i,async _=>{let C=await ms(_);return e&&e(++b,i.length),C});for(let _ of y){if(!_||_.tokens===0||!Object.keys(_.dailyFractions).some(M=>M>=p))continue;let S=0,w=0,P=0,v=0;for(let[M,A]of Object.entries(_.dailyFractions))M===s&&(S+=A),M>=a&&(w+=A),M>=p&&M<a&&(P+=A),M>=h&&(v+=A);S>0&&Xo(g.today,_,S),w>0&&Xo(g.month,_,w),P>0&&Xo(g.lastMonth,_,P),v>0&&Xo(g.last30Days,_,v)}for(let _ of Object.values(g))_.sessions>0&&(_.avgTokensPerSession=Math.round(_.tokens/_.sessions)),_.co2=_.tokens/1e3*Xa,_.treesEquivalent=_.co2/Za,_.waterUsage=_.tokens/1e3*el,_.estimatedCost=Bo(_.modelUsage,Qt),_.estimatedCostCopilot=Bo(_.modelUsage,Qt,"copilot");return{...g,lastUpdated:t}}function Qo(){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 Xo(i,e,t){let s=Math.round(wt(e)*t),o=Math.round(e.thinkingTokens*t),n=Math.round(e.actualTokens*t);i.tokens+=s,i.thinkingTokens+=o,i.estimatedTokens+=Math.round(e.tokens*t),i.actualTokens+=n,i.sessions++;for(let[c,p]of Object.entries(e.modelUsage))i.modelUsage[c]||(i.modelUsage[c]={inputTokens:0,outputTokens:0}),i.modelUsage[c].inputTokens+=Math.round(p.inputTokens*t),i.modelUsage[c].outputTokens+=Math.round(p.outputTokens*t);let a=Math.round(e.interactions*t),u=i.avgInteractionsPerSession*(i.sessions-1)+a;i.avgInteractionsPerSession=i.sessions>0?u/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 fs(i){let e={warn:tl,tokenEstimators:en,modelPricing:Qt,toolNameMap:Qu,ecosystems:tn},t=new Date,s=new Date(t.getFullYear(),t.getMonth(),t.getDate()),o=new Date(t.getFullYear(),t.getMonth(),t.getDate()-30),n=new Date(t.getFullYear(),t.getMonth(),1),a=Ri(),u=Ri(),c=Ri();for(let p of i)try{let h=(await ol(p)).mtime;if(h<o)continue;let g=await xa(e,p);h>=o&&(Jo(u,g),u.sessions++),h>=n&&(Jo(c,g),c.sessions++),h>=s&&(Jo(a,g),a.sessions++)}catch{}return{today:a,last30Days:u,month:c,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:ye(),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 nn(i){let e=new Date,t=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()-30)),s=t.toISOString().slice(0,10),o=e.toISOString().slice(0,10),n=new Map,a=new Date(t);for(;a.toISOString().slice(0,10)<=o;){let h=a.toISOString().slice(0,10);n.set(h,{tokens:0,sessions:0,modelUsage:{},editorUsage:{}}),a.setUTCDate(a.getUTCDate()+1)}let u=new Map,c=await nl(i,async h=>ms(h));for(let h of c){if(!h||h.tokens===0||h.interactions===0)continue;let g=wt(h);for(let[b,y]of Object.entries(h.dailyFractions)){let _=Math.round(g*y),C=n.get(b);if(C){C.tokens+=_,C.sessions++;for(let[v,M]of Object.entries(h.modelUsage))C.modelUsage[v]||(C.modelUsage[v]={inputTokens:0,outputTokens:0}),C.modelUsage[v].inputTokens+=Math.round(M.inputTokens*y),C.modelUsage[v].outputTokens+=Math.round(M.outputTokens*y);let P=h.editorSource;C.editorUsage[P]||(C.editorUsage[P]={tokens:0,sessions:0}),C.editorUsage[P].tokens+=_,C.editorUsage[P].sessions++}u.has(b)||u.set(b,{tokens:0,sessions:0,modelUsage:{},editorUsage:{}});let S=u.get(b);S.tokens+=_,S.sessions++;for(let[P,v]of Object.entries(h.modelUsage))S.modelUsage[P]||(S.modelUsage[P]={inputTokens:0,outputTokens:0}),S.modelUsage[P].inputTokens+=Math.round(v.inputTokens*y),S.modelUsage[P].outputTokens+=Math.round(v.outputTokens*y);let w=h.editorSource;S.editorUsage[w]||(S.editorUsage[w]={tokens:0,sessions:0}),S.editorUsage[w].tokens+=_,S.editorUsage[w].sessions++}}let p=Array.from(n.keys()).sort(),m=p.map(h=>n.get(h));return{labels:p,days:m,allDaysMap:u}}var Zo=[{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 rn(i,e,t){let s=M=>`${M.getFullYear()}-${String(M.getMonth()+1).padStart(2,"0")}-${String(M.getDate()).padStart(2,"0")}`,o=M=>{let A=M.map(K=>K.entry),U=M.map(K=>K.label),O=A.map(K=>K.tokens),$=A.map(K=>K.sessions),q=new Set;A.forEach(K=>Object.keys(K.modelUsage).forEach(X=>q.add(X)));let ve=Array.from(q).map((K,X)=>{let me=Zo[X%Zo.length];return{label:K,data:A.map(at=>{let Xe=at.modelUsage[K];return Xe?Xe.inputTokens+Xe.outputTokens:0}),backgroundColor:me.bg,borderColor:me.border,borderWidth:1}}),Ce=new Set;A.forEach(K=>Object.keys(K.editorUsage).forEach(X=>Ce.add(X)));let te=Array.from(Ce).map((K,X)=>{let me=Zo[X%Zo.length];return{label:K,data:A.map(at=>at.editorUsage[K]?.tokens||0),backgroundColor:me.bg,borderColor:me.border,borderWidth:1}}),Te=O.reduce((K,X)=>K+X,0),Pe=$.reduce((K,X)=>K+X,0),xe=M.length,Ve=A.map(K=>Bo(K.modelUsage,Qt)),Oe=Ve.reduce((K,X)=>K+X,0),he=xe>0?Oe/xe:0;return{labels:U,tokensData:O,sessionsData:$,modelDatasets:ve,editorDatasets:te,repositoryDatasets:[],periodCount:xe,totalTokens:Te,totalSessions:Pe,avgPerPeriod:xe>0?Math.round(Te/xe):0,costData:Ve,totalCost:Oe,avgCostPerPeriod:he}},n=(M,A)=>{M.tokens+=A.tokens,M.sessions+=A.sessions;for(let[U,O]of Object.entries(A.modelUsage))M.modelUsage[U]||(M.modelUsage[U]={inputTokens:0,outputTokens:0}),M.modelUsage[U].inputTokens+=O.inputTokens,M.modelUsage[U].outputTokens+=O.outputTokens;for(let[U,O]of Object.entries(A.editorUsage))M.editorUsage[U]||(M.editorUsage[U]={tokens:0,sessions:0}),M.editorUsage[U].tokens+=O.tokens,M.editorUsage[U].sessions+=O.sessions},a=()=>({tokens:0,sessions:0,modelUsage:{},editorUsage:{}}),u=new Date,c=i.map((M,A)=>({label:M,entry:e[A]})),p=o(c),m=M=>{let A=new Date(M);A.setHours(0,0,0,0);let U=A.getDay();return A.setDate(A.getDate()-(U===0?6:U-1)),A},h=M=>{let A=new Date(M);return A.setDate(M.getDate()+6),M.getMonth()===A.getMonth()?`${M.toLocaleDateString("en-US",{month:"short"})} ${M.getDate()}\u2013${A.getDate()}`:`${M.toLocaleDateString("en-US",{month:"short",day:"numeric"})}\u2013${A.toLocaleDateString("en-US",{month:"short",day:"numeric"})}`},g=m(u),b=new Map;for(let M=5;M>=0;M--){let A=new Date(g);A.setDate(g.getDate()-M*7);let U=s(A);b.set(U,{label:h(A),entry:a()})}let y=t||new Map(i.map((M,A)=>[M,e[A]]));for(let[M,A]of y.entries()){let U=m(new Date(M+"T00:00:00")),O=b.get(s(U));O&&n(O.entry,A)}let _=Array.from(b.values()),C=o(_),S=new Map;for(let M=11;M>=0;M--){let A=new Date(u.getFullYear(),u.getMonth()-M,1),U=`${A.getFullYear()}-${String(A.getMonth()+1).padStart(2,"0")}`,O=A.toLocaleDateString("en-US",{month:"short",year:"numeric"});S.set(U,{label:O,entry:a()})}for(let[M,A]of y.entries()){let U=M.slice(0,7),O=S.get(U);O&&n(O.entry,A)}let w=Array.from(S.values()),P=o(w),v={};return e.forEach(M=>{Object.entries(M.editorUsage).forEach(([A,U])=>{v[A]=(v[A]||0)+U.tokens})}),{labels:p.labels,tokensData:p.tokensData,sessionsData:p.sessionsData,modelDatasets:p.modelDatasets,editorDatasets:p.editorDatasets,editorTotalsMap:v,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:C,month:P}}}function se(i){return i.toLocaleString("en-US")}function _e(i){return i>=1e6?`${(i/1e6).toFixed(1)}M`:i>=1e3?`${(i/1e3).toFixed(1)}K`:i.toString()}var Rt={CO2_PER_1K_TOKENS:Xa,CO2_ABSORPTION_PER_TREE_PER_YEAR:Za,WATER_USAGE_PER_1K_TOKENS:el,CO2_PER_KM_DRIVING:120,CO2_PER_PHONE_CHARGE:8.22,WATER_PER_COFFEE_CUP:140,CO2_PER_LED_HOUR:20};var il=new ge("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(D.bold.cyan(`
|
|
54
60
|
\u{1F50D} Copilot Token Tracker - Session Statistics
|
|
55
|
-
`)),
|
|
56
|
-
`));let t=0,s=0,o=0,n=0,a=0,
|
|
61
|
+
`)),i.verbose&&!i.json){let h=on();console.log(D.dim("Search paths:"));for(let g of h){let b=g.exists?D.green("\u2705"):D.dim("\u274C");console.log(` ${b} ${D.dim(g.source)}: ${g.path}`)}console.log()}i.json||process.stdout.write(D.dim("Scanning for session files..."));let e=await Se();if(i.json||process.stdout.write("\r"+" ".repeat(50)+"\r"),e.length===0){i.json?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}i.json||console.log(D.green(`\u{1F4C2} Found ${D.bold(se(e.length))} session file(s)
|
|
62
|
+
`));let t=0,s=0,o=0,n=0,a=0,u={},c={};for(let h=0;h<e.length;h++){let g=await ms(e[h]);if(!g||g.tokens===0){a++;continue}if(n++,t+=wt(g),s+=g.thinkingTokens,o+=g.interactions,u[g.editorSource]||(u[g.editorSource]={files:0,tokens:0,interactions:0}),u[g.editorSource].files++,u[g.editorSource].tokens+=wt(g),u[g.editorSource].interactions+=g.interactions,i.verbose){let b=Cd(e[h]);c[b]||(c[b]={files:0,tokens:0}),c[b].files++,c[b].tokens+=wt(g)}!i.json&&((h+1)%50===0||h===e.length-1)&&process.stdout.write(`\r${D.dim(`Processing: ${h+1}/${e.length}`)}`)}if(i.json||process.stdout.write("\r"+" ".repeat(50)+"\r"),i.json){let h={totalFiles:e.length,processedFiles:n,emptyFiles:a,totalTokens:t,totalThinkingTokens:s,totalInteractions:o,byEditor:u,lastUpdated:new Date().toISOString()};process.stdout.write(JSON.stringify(h));return}console.log(D.bold("\u{1F4CA} Summary")),console.log(D.dim("\u2500".repeat(50))),console.log(` Session files (with data): ${D.bold(se(n))}`),a>0&&console.log(` Empty/skipped files: ${D.dim(se(a))}`),console.log(` Total chat turns: ${D.bold(se(o))}`),console.log(` Total tokens: ${D.bold.yellow(_e(t))}`),s>0&&console.log(` Thinking tokens (included): ${D.dim(_e(s))}`);let p=Ui();p.enabled&&p.entries>0&&console.log(D.dim(` Cache: ${se(p.entries)} entries loaded`)),console.log();let m=Object.entries(u).sort((h,g)=>g[1].tokens-h[1].tokens);if(m.length>0){console.log(D.bold("\u{1F5A5}\uFE0F By Editor")),console.log(D.dim("\u2500".repeat(50)));for(let[h,g]of m){let b=_d(h);console.log(` ${b.padEnd(25)} ${se(g.files).padStart(5)} files ${_e(g.tokens).padStart(8)} tokens ${se(g.interactions).padStart(6)} turns`)}console.log()}if(i.verbose&&Object.keys(c).length>0){let h=Object.entries(c).sort((g,b)=>b[1].tokens-g[1].tokens);console.log(D.bold("\u{1F4C1} By Folder")),console.log(D.dim("\u2500".repeat(70)));for(let[g,b]of h.slice(0,20))console.log(` ${g.substring(0,50).padEnd(50)} ${se(b.files).padStart(5)} files ${_e(b.tokens).padStart(8)} tokens`);h.length>20&&console.log(D.dim(` ... and ${h.length-20} more folders`)),console.log()}});function _d(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 Cd(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 rl=new ge("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 bd(i);if(!e)return;let t=await kd(e,i);if(i.json){let o={today:t.today,month:t.month,lastMonth:t.lastMonth,last30Days:t.last30Days,lastUpdated:t.lastUpdated.toISOString(),backendConfigured:!1};process.stdout.write(JSON.stringify(o));return}console.log(D.bold.cyan(`
|
|
57
63
|
\u{1F4CA} Copilot Token Tracker - Usage Report
|
|
58
|
-
`));let s=[{label:"Today",emoji:"\u{1F4C5}",stats:t.today},{label:"This Month",emoji:"\u{1F4C6}",stats:t.month},{label:"Last Month",emoji:"\u{1F5D3}\uFE0F",stats:t.lastMonth},{label:"Last 30 Days",emoji:"\u{1F4C8}",stats:t.last30Days}];for(let o of s)
|
|
59
|
-
`))});async function
|
|
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 o of s)wd(o.label,o.emoji,o.stats,i);console.log(D.dim(`Last updated: ${t.lastUpdated.toLocaleString()}
|
|
65
|
+
`))});async function bd(i){i.json||process.stdout.write(D.dim("Scanning for session files..."));let e=await Se();return i.json||process.stdout.write("\r"+" ".repeat(50)+"\r"),e.length===0?(i.json?process.stdout.write("{}"):console.log(D.yellow("\u26A0\uFE0F No session files found.")),null):e}async function kd(i,e){e.json||process.stdout.write(D.dim("Calculating token usage..."));let t=await hs(i,e.json?void 0:(s,o)=>{process.stdout.write(`\r${D.dim(`Processing: ${s}/${o} files`)}`)});return e.json||process.stdout.write("\r"+" ".repeat(50)+"\r"),t}function wd(i,e,t,s){if(console.log(D.bold(`${e} ${i}`)),console.log(D.dim("\u2500".repeat(55))),t.sessions===0){console.log(D.dim(" No activity in this period")),console.log();return}if(console.log(` Sessions: ${D.bold(se(t.sessions))}`),console.log(` Avg interactions/sess: ${D.bold(t.avgInteractionsPerSession.toFixed(1))}`),console.log(` Total tokens: ${D.bold.yellow(_e(t.tokens))}`),t.thinkingTokens>0&&console.log(` Thinking tokens: ${D.dim(_e(t.thinkingTokens))} (included in total)`),console.log(` Avg tokens/session: ${D.bold(_e(t.avgTokensPerSession))}`),s.cost&&t.estimatedCost>0&&(console.log(` Estimated cost (est.): ${D.green("$"+t.estimatedCost.toFixed(4))} ${D.dim("(provider API rates)")}`),(t.estimatedCostCopilot??0)>0&&console.log(` Estimated cost (TBB): ${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 o=Object.entries(t.modelUsage).sort((n,a)=>a[1].inputTokens+a[1].outputTokens-(n[1].inputTokens+n[1].outputTokens));for(let[n,a]of o){let u=a.inputTokens+a.outputTokens,c=_t(n,Qt),p=c==="premium"?D.yellow(" \u2B50"):c==="standard"?D.dim(" \u25CB"):"";console.log(` ${(n+p).padEnd(35)} ${_e(a.inputTokens).padStart(8)} in ${_e(a.outputTokens).padStart(8)} out ${_e(u).padStart(8)} total`)}}if(Object.keys(t.editorUsage).length>1){console.log(),console.log(D.dim(" Editor Breakdown:"));let o=Object.entries(t.editorUsage).sort((n,a)=>a[1].tokens-n[1].tokens);for(let[n,a]of o)console.log(` ${n.padEnd(25)} ${se(a.sessions).padStart(5)} sessions ${_e(a.tokens).padStart(8)} tokens`)}console.log()}var al=new ge("environmental").alias("env").description("Show environmental impact of your Copilot usage (CO2, water, trees)").action(async()=>{console.log(D.bold.cyan(`
|
|
60
66
|
\u{1F30D} Copilot Token Tracker - Environmental Impact
|
|
61
|
-
`)),process.stdout.write(
|
|
62
|
-
`));for(let o of t)
|
|
63
|
-
`))});function La(r){return r>=1e3?`${(r/1e3).toFixed(2)} kgCO\u2082e`:`${r.toFixed(3)} gCO\u2082e`}function Xu(r,e,t){if(console.log(x.bold(`${e} ${r}`)),console.log(x.dim("\u2500".repeat(55))),t.sessions===0){console.log(x.dim(" No activity in this period")),console.log();return}if(console.log(` Tokens used: ${x.bold.yellow(me(t.tokens))}`),console.log(` CO\u2082 emissions: ${x.bold(La(t.co2))}`),console.log(` Water usage: ${x.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: ${x.green(s)} trees/year`)}console.log()}var qa=["read_file","copilot_readFile","read","view","view_image","copilot_viewImage","list_dir","ls","copilot_listDirectory","find_files","file_search","file_glob_search","copilot_findFiles","opilot_findFiles","copilot_findTextInFiles","copilot_findTestFiles","test_search","grep_search","grep","glob","semantic_search","copilot_searchCodebase","code_search","copilot_getSearchResults","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","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","copilot_askQuestions","switch_agent","copilot_switchAgent","bash","vscode_editFile_internal","vscode_fetchWebPage_internal","vscode_searchExtensions_internal"];var ed=new Set(qa.map(r=>r.toLowerCase()));function $(r){return r.toLocaleString("en-US")}async function Ho(r,e,t=!0){let s=await e(t),o=s.last30Days,n={1:"Stage 1: AI Skeptic",2:"Stage 2: AI Explorer",3:"Stage 3: AI Collaborator",4:"Stage 4: AI Strategist"},a=[],d=[],c=1,h=o.modeUsage.ask+o.modeUsage.edit+o.modeUsage.agent+o.modeUsage.cli;if(h>0&&a.push(`${$(h)} total interactions`),o.modeUsage.ask>0&&a.push(`${$(o.modeUsage.ask)} ask-mode conversations`),o.modeUsage.agent>0&&a.push(`${$(o.modeUsage.agent)} agent-mode interactions`),o.modeUsage.cli>0&&a.push(`${$(o.modeUsage.cli)} CLI interactions`),o.conversationPatterns){let G=o.sessions>0?Math.round(o.conversationPatterns.multiTurnSessions/o.sessions*100):0;o.conversationPatterns.multiTurnSessions>0&&a.push(`${$(o.conversationPatterns.multiTurnSessions)} multi-turn sessions (${G}%)`),o.conversationPatterns.avgTurnsPerSession>=3&&(a.push(`Avg ${o.conversationPatterns.avgTurnsPerSession.toFixed(1)} exchanges per session`),c=Math.max(c,2)),o.conversationPatterns.avgTurnsPerSession>=5&&(c=Math.max(c,3))}h>=5&&(c=2);let m=["explain","fix","tests","doc","generate","optimize","new","newNotebook","search","fixTestFailure","setupTests"],p=["review","bug","think","compact","pr_comments"],g=[...m.filter(G=>(o.toolCalls.byTool[G]||0)>0),...p.filter(G=>(o.toolCalls.byTool[`__slash__${G}`]||0)>0)];g.length>0&&a.push(`Used slash commands: /${g.join(", /")}`);let w=o.modelSwitching.mixedTierSessions>0||o.modelSwitching.switchingFrequency>0,k=o.modeUsage.agent>0||o.modeUsage.cli>0;h>=30&&(g.length>=2||k)&&(c=3),h>=100&&k&&(w||g.length>=3)&&(c=4),w&&(a.push(`Switched models in ${Math.round(o.modelSwitching.switchingFrequency)}% of sessions`),c<4&&o.modelSwitching.mixedTierSessions>0&&(c=Math.max(c,3))),c<2&&d.push("Try asking Copilot a question using the Chat panel"),c<3&&(k||d.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for multi-file changes"),g.length<2&&d.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")),c<4&&(k||d.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for autonomous, multi-step coding tasks"),w||d.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"),g.length<3&&k&&w&&d.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"));let b=[],y=[],v=1,C=o.contextReferences.file+o.contextReferences.selection+o.contextReferences.symbol+o.contextReferences.codebase+o.contextReferences.workspace,M=[o.contextReferences.file>0,o.contextReferences.selection>0,o.contextReferences.symbol>0,o.contextReferences.codebase>0,o.contextReferences.workspace>0,o.contextReferences.terminal>0,o.contextReferences.vscode>0,o.contextReferences.clipboard>0,o.contextReferences.changes>0,o.contextReferences.problemsPanel>0,o.contextReferences.outputPanel>0,o.contextReferences.terminalLastCommand>0,o.contextReferences.terminalSelection>0].filter(Boolean).length;o.contextReferences.file>0&&b.push(`${$(o.contextReferences.file)} #file references`),o.contextReferences.selection>0&&b.push(`${$(o.contextReferences.selection)} #selection references`),o.contextReferences.codebase>0&&b.push(`${$(o.contextReferences.codebase)} #codebase references`),o.contextReferences.workspace>0&&b.push(`${$(o.contextReferences.workspace)} @workspace references`),o.contextReferences.terminal>0&&b.push(`${$(o.contextReferences.terminal)} @terminal references`),o.contextReferences.vscode>0&&b.push(`${$(o.contextReferences.vscode)} @vscode references`),o.contextReferences.clipboard>0&&b.push(`${$(o.contextReferences.clipboard)} #clipboard references`),o.contextReferences.changes>0&&b.push(`${$(o.contextReferences.changes)} #changes references`),o.contextReferences.problemsPanel>0&&b.push(`${$(o.contextReferences.problemsPanel)} #problemsPanel references`),o.contextReferences.outputPanel>0&&b.push(`${$(o.contextReferences.outputPanel)} #outputPanel references`),o.contextReferences.terminalLastCommand>0&&b.push(`${$(o.contextReferences.terminalLastCommand)} #terminalLastCommand references`),o.contextReferences.terminalSelection>0&&b.push(`${$(o.contextReferences.terminalSelection)} #terminalSelection references`),C>=1&&(v=2),M>=3&&C>=10&&(v=3),M>=5&&C>=30&&(v=4);let F=o.contextReferences.byKind["copilot.image"]||0;if(F>0&&(b.push(`${$(F)} image references (vision)`),v=Math.max(v,3)),v<2&&y.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"),v<3&&y.push("Explore [@workspace, #codebase, and @terminal](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) for broader context"),v<4){let G=Math.max(0,5-M),He=Math.max(0,30-C),ot=[{name:"image attachments",used:F>0},{name:"#changes",used:o.contextReferences.changes>0},{name:"#problemsPanel",used:o.contextReferences.problemsPanel>0},{name:"#outputPanel",used:o.contextReferences.outputPanel>0},{name:"#terminalLastCommand",used:o.contextReferences.terminalLastCommand>0},{name:"#terminalSelection",used:o.contextReferences.terminalSelection>0},{name:"#clipboard",used:o.contextReferences.clipboard>0},{name:"@vscode",used:o.contextReferences.vscode>0}];if(ot.filter(ue=>ue.used).length>=2){let ue=[{name:"#symbol",used:o.contextReferences.symbol>0},{name:"@workspace",used:o.contextReferences.workspace>0},{name:"#codebase",used:o.contextReferences.codebase>0},{name:"@terminal",used:o.contextReferences.terminal>0},...ot].filter(Je=>!Je.used).map(Je=>Je.name),le=[];if(G>0&&le.push(`${$(M)} of 5 different reference types used`),He>0&&le.push(`${$(C)} of 30 total references`),le.length>0){let Je=ue.slice(0,3),At=Je.length>0?` \u2014 try ${Je.join(", ")}`:"";y.push(`Stage 4 needs ${le.join(" and ")}${At}`)}}else{let ue=ot.filter(le=>!le.used).map(le=>le.name);if(ue.length>0){let le=ue.slice(0,3),Je=ue.length>3?` and ${ue.length-3} more`:"";y.push(`Try ${le.join(", ")}${Je} \u2014 see [specialized context variables](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) to reach Stage 4`)}}}let D=[],N=[],V=1;if(o.modeUsage.agent>0&&(D.push(`${$(o.modeUsage.agent)} agent-mode interactions`),V=2),o.modeUsage.cli>0&&(D.push(`${$(o.modeUsage.cli)} CLI interactions`),V=Math.max(V,2)),o.toolCalls.total>0&&D.push(`${$(o.toolCalls.total)} tool calls executed`),o.modeUsage.edit>0&&D.push(`${$(o.modeUsage.edit)} edit-mode interactions`),o.editScope){let G=o.editScope.totalEditedFiles>0?Math.round(o.editScope.multiFileEdits/(o.editScope.singleFileEdits+o.editScope.multiFileEdits)*100):0;o.editScope.multiFileEdits>0&&(D.push(`${$(o.editScope.multiFileEdits)} multi-file edit sessions (${G}%)`),V=Math.max(V,2)),o.editScope.avgFilesPerSession>=3&&(D.push(`Avg ${o.editScope.avgFilesPerSession.toFixed(1)} files per edit session`),V=Math.max(V,3))}o.agentTypes&&o.agentTypes.editsAgent>0&&(D.push(`${$(o.agentTypes.editsAgent)} edits agent sessions`),V=Math.max(V,2));let J=Object.keys(o.toolCalls.byTool).length,W=Object.keys(o.toolCalls.byTool).filter(G=>!ed.has(G.toLowerCase())&&!G.startsWith("__slash__")).length;o.modeUsage.agent+o.modeUsage.cli>=10&&W>=3&&(V=3),o.modeUsage.agent+o.modeUsage.cli>=50&&W>=5&&(V=4),o.editScope&&o.editScope.multiFileEdits>=20&&o.editScope.avgFilesPerSession>=3&&(V=Math.max(V,4)),V<2&&N.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"),V<3&&N.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"),V<4&&N.push("Tackle complex refactoring or debugging tasks in [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for deeper autonomous workflows");let Me=[],ve=[],Z=1;if(W>0){let G=J-W,He=G>0?` (+ ${$(G)} automatic)`:"";Me.push(`${$(W)} intentional tools used${He}`),Z=2}else J>0&&Me.push(`${$(J)} tools used (all automatic \u2014 agent reads/searches)`);o.agentTypes&&o.agentTypes.workspaceAgent>0&&(Me.push(`${$(o.agentTypes.workspaceAgent)} @workspace agent sessions`),Z=Math.max(Z,3));let Ue={github_pull_request:"GitHub Pull Request",github_repo:"GitHub Repository",run_in_terminal:"Run In Terminal",editFiles:"Edit Files",listFiles:"List Files"},Ae=Object.keys(Ue).filter(G=>(o.toolCalls.byTool[G]||0)>0);Ae.length>0&&(Me.push(`Advanced tools: ${Ae.map(G=>Ue[G]).join(", ")}`),Ae.length>=2&&(Z=Math.max(Z,3)));let tt=Object.keys(o.mcpTools.byServer);o.mcpTools.total>0&&(Me.push(`${$(o.mcpTools.total)} MCP tool calls across ${tt.length} server(s)`),Z=Math.max(Z,3),tt.length>=2&&(Z=4)),Z<2&&ve.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"),Z<3&&(tt.length===0?ve.push("Set up [MCP servers](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) to connect Copilot to external tools (databases, APIs, cloud services)"):ve.push("Explore [GitHub integrations](https://code.visualstudio.com/docs/copilot/agents/agent-tools) and advanced tools like editFiles and run_in_terminal")),Z<4&&(tt.length===1?ve.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"):tt.length===0?ve.push("Explore the [VS Code MCP registry](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) for tools that integrate with your workflow"):ve.push("You're using multiple MCP servers - keep exploring advanced tool combinations"));let ft=[],Ve=[],de=1,Mt=r,fe=Mt?.totalWorkspaces??0,be=fe-(Mt?.workspacesWithIssues??0),ls=fe>0?be/fe:0;fe>0&&ft.push(`Worked in ${fe} repositor${fe===1?"y":"ies"}`),be>0&&(de=2),ls>=.3&&be>=2&&(de=3),ls>=.7&&be>=3&&(de=4);let zt=[...new Set([...o.modelSwitching.standardModels,...o.modelSwitching.premiumModels])];if(zt.length>=3){let G=zt.length>=5&&be>=3;ft.push(`Used ${zt.length} different models`),G?de=4:(zt.length>=5,de=Math.max(de,3))}if(de>=4?ft.push(`${$(be)} of ${$(fe)} repos customized (70%+ with 3+ repos \u2192 Stage 4)`):de>=3?ft.push(`${$(be)} of ${$(fe)} repos customized (30%+ with 2+ repos \u2192 Stage 3)`):be>0&&ft.push(`${$(be)} of ${$(fe)} repos with custom instructions or agents.md`),de<2&&Ve.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"),de<3&&Ve.push("Add [custom instructions](https://code.visualstudio.com/docs/copilot/customization/custom-instructions) to more repositories to standardize your Copilot experience"),de<4){let G=fe-be;fe>0&&G>0?Ve.push(`${$(be)} of ${$(fe)} repos have customization \u2014 add [instructions and agents.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions) to the remaining ${$(G)} repo${G===1?"":"s"} for Stage 4`):Ve.push("Aim for consistent customization across all projects with [instructions and agents.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions)")}if(de>=4){let G=fe-be;if(G>0){let ot=(Mt?.workspaces||[]).filter(ue=>Object.values(ue.typeStatuses).every(le=>le==="\u274C")).filter(ue=>!ue.workspacePath.startsWith("<unresolved:")).sort((ue,le)=>le.interactionCount!==ue.interactionCount?le.interactionCount-ue.interactionCount:le.sessionCount-ue.sessionCount).slice(0,3),yt=`${$(G)} repo${G===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(ot.length>0){let ue=ot.map(le=>`${le.workspaceName} (${$(le.interactionCount)} interaction${le.interactionCount===1?"":"s"})`).join(`
|
|
64
|
-
`);
|
|
67
|
+
`)),process.stdout.write(D.dim("Scanning for session files..."));let i=await Se();if(process.stdout.write("\r"+" ".repeat(50)+"\r"),i.length===0){console.log(D.yellow("\u26A0\uFE0F No session files found."));return}process.stdout.write(D.dim("Calculating usage..."));let e=await hs(i,(o,n)=>{process.stdout.write(`\r${D.dim(`Processing: ${o}/${n} 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(D.dim("Methodology: Estimates based on industry averages for AI inference")),console.log(D.dim(` CO\u2082: ${Rt.CO2_PER_1K_TOKENS} gCO\u2082e per 1K tokens`)),console.log(D.dim(` Water: ${Rt.WATER_USAGE_PER_1K_TOKENS} L per 1K tokens`)),console.log(D.dim(` Tree absorption: ${ll(Rt.CO2_ABSORPTION_PER_TREE_PER_YEAR)} CO\u2082/year
|
|
68
|
+
`));for(let o of t)Sd(o.label,o.emoji,o.stats);let s=e.last30Days;if(s.tokens>0){console.log(D.bold("\u{1F504} Context Comparisons (Last 30 Days)")),console.log(D.dim("\u2500".repeat(55)));let o=s.co2,n=s.waterUsage,a=o/Rt.CO2_PER_KM_DRIVING;console.log(` \u{1F697} Equivalent to driving: ${a.toFixed(3)} km`);let u=o/Rt.CO2_PER_PHONE_CHARGE;console.log(` \u{1F4F1} Smartphone charges: ${u.toFixed(1)}`);let c=n/Rt.WATER_PER_COFFEE_CUP;console.log(` \u2615 Cups of coffee (water): ${c.toFixed(4)}`);let p=o/Rt.CO2_PER_LED_HOUR;console.log(` \u{1F4A1} LED bulb hours: ${p.toFixed(2)}`),console.log()}console.log(D.dim(`Last updated: ${e.lastUpdated.toLocaleString()}
|
|
69
|
+
`))});function ll(i){return i>=1e3?`${(i/1e3).toFixed(2)} kgCO\u2082e`:`${i.toFixed(3)} gCO\u2082e`}function Sd(i,e,t){if(console.log(D.bold(`${e} ${i}`)),console.log(D.dim("\u2500".repeat(55))),t.sessions===0){console.log(D.dim(" No activity in this period")),console.log();return}if(console.log(` Tokens used: ${D.bold.yellow(_e(t.tokens))}`),console.log(` CO\u2082 emissions: ${D.bold(ll(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 cl=["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","stop_bash","list_powershell","read_powershell","clarify_requirements","get_tests","ide-get_diagnostics","plan","signal_plan_ready","update_plan_progress","stop_agent","mcp_reload","mcp_validate"];var Td=new Set(cl.map(i=>i.toLowerCase()));function L(i){return i.toLocaleString("en-US")}async function an(i,e,t=!0){let s=await e(t),o=s.last30Days,n={1:"Stage 1: AI Skeptic",2:"Stage 2: AI Explorer",3:"Stage 3: AI Collaborator",4:"Stage 4: AI Strategist"},a=[],u=[],c=1,p=o.modeUsage.ask+o.modeUsage.edit+o.modeUsage.agent+o.modeUsage.cli;if(p>0&&a.push(`${L(p)} total interactions`),o.modeUsage.ask>0&&a.push(`${L(o.modeUsage.ask)} ask-mode conversations`),o.modeUsage.agent>0&&a.push(`${L(o.modeUsage.agent)} agent-mode interactions`),o.modeUsage.cli>0&&a.push(`${L(o.modeUsage.cli)} CLI interactions`),o.conversationPatterns){let W=o.sessions>0?Math.round(o.conversationPatterns.multiTurnSessions/o.sessions*100):0;o.conversationPatterns.multiTurnSessions>0&&a.push(`${L(o.conversationPatterns.multiTurnSessions)} multi-turn sessions (${W}%)`),o.conversationPatterns.avgTurnsPerSession>=3&&(a.push(`Avg ${o.conversationPatterns.avgTurnsPerSession.toFixed(1)} exchanges per session`),c=Math.max(c,2)),o.conversationPatterns.avgTurnsPerSession>=5&&(c=Math.max(c,3))}p>=5&&(c=2);let m=["explain","fix","tests","doc","generate","optimize","new","newNotebook","search","fixTestFailure","setupTests"],h=["review","bug","think","compact","pr_comments"],g=[...m.filter(W=>(o.toolCalls.byTool[W]||0)>0),...h.filter(W=>(o.toolCalls.byTool[`__slash__${W}`]||0)>0)];g.length>0&&a.push(`Used slash commands: /${g.join(", /")}`);let b=o.modelSwitching.mixedTierSessions>0||o.modelSwitching.switchingFrequency>0,y=o.modeUsage.agent>0||o.modeUsage.cli>0;p>=30&&(g.length>=2||y)&&(c=3),p>=100&&y&&(b||g.length>=3)&&(c=4),b&&(a.push(`Switched models in ${Math.round(o.modelSwitching.switchingFrequency)}% of sessions`),c<4&&o.modelSwitching.mixedTierSessions>0&&(c=Math.max(c,3))),c<2&&u.push("Try asking Copilot a question using the Chat panel"),c<3&&(y||u.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for multi-file changes"),g.length<2&&u.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")),c<4&&(y||u.push("Try [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for autonomous, multi-step coding tasks"),b||u.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"),g.length<3&&y&&b&&u.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"));let _=[],C=[],S=1,w=o.contextReferences.file+o.contextReferences.selection+o.contextReferences.symbol+o.contextReferences.codebase+o.contextReferences.workspace,v=[o.contextReferences.file>0,o.contextReferences.selection>0,o.contextReferences.symbol>0,o.contextReferences.codebase>0,o.contextReferences.workspace>0,o.contextReferences.terminal>0,o.contextReferences.vscode>0,o.contextReferences.clipboard>0,o.contextReferences.changes>0,o.contextReferences.problemsPanel>0,o.contextReferences.outputPanel>0,o.contextReferences.terminalLastCommand>0,o.contextReferences.terminalSelection>0].filter(Boolean).length;o.contextReferences.file>0&&_.push(`${L(o.contextReferences.file)} #file references`),o.contextReferences.selection>0&&_.push(`${L(o.contextReferences.selection)} #selection references`),o.contextReferences.codebase>0&&_.push(`${L(o.contextReferences.codebase)} #codebase references`),o.contextReferences.workspace>0&&_.push(`${L(o.contextReferences.workspace)} @workspace references`),o.contextReferences.terminal>0&&_.push(`${L(o.contextReferences.terminal)} @terminal references`),o.contextReferences.vscode>0&&_.push(`${L(o.contextReferences.vscode)} @vscode references`),o.contextReferences.clipboard>0&&_.push(`${L(o.contextReferences.clipboard)} #clipboard references`),o.contextReferences.changes>0&&_.push(`${L(o.contextReferences.changes)} #changes references`),o.contextReferences.problemsPanel>0&&_.push(`${L(o.contextReferences.problemsPanel)} #problemsPanel references`),o.contextReferences.outputPanel>0&&_.push(`${L(o.contextReferences.outputPanel)} #outputPanel references`),o.contextReferences.terminalLastCommand>0&&_.push(`${L(o.contextReferences.terminalLastCommand)} #terminalLastCommand references`),o.contextReferences.terminalSelection>0&&_.push(`${L(o.contextReferences.terminalSelection)} #terminalSelection references`),w>=1&&(S=2),v>=3&&w>=10&&(S=3),v>=5&&w>=30&&(S=4);let M=o.contextReferences.byKind["copilot.image"]||0;if(M>0&&(_.push(`${L(M)} image references (vision)`),S=Math.max(S,3)),S<2&&C.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&&C.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 W=Math.max(0,5-v),Ze=Math.max(0,30-w),ct=[{name:"image attachments",used:M>0},{name:"#changes",used:o.contextReferences.changes>0},{name:"#problemsPanel",used:o.contextReferences.problemsPanel>0},{name:"#outputPanel",used:o.contextReferences.outputPanel>0},{name:"#terminalLastCommand",used:o.contextReferences.terminalLastCommand>0},{name:"#terminalSelection",used:o.contextReferences.terminalSelection>0},{name:"#clipboard",used:o.contextReferences.clipboard>0},{name:"@vscode",used:o.contextReferences.vscode>0}];if(ct.filter(fe=>fe.used).length>=2){let fe=[{name:"#symbol",used:o.contextReferences.symbol>0},{name:"@workspace",used:o.contextReferences.workspace>0},{name:"#codebase",used:o.contextReferences.codebase>0},{name:"@terminal",used:o.contextReferences.terminal>0},...ct].filter(et=>!et.used).map(et=>et.name),ue=[];if(W>0&&ue.push(`${L(v)} of 5 different reference types used`),Ze>0&&ue.push(`${L(w)} of 30 total references`),ue.length>0){let et=fe.slice(0,3),Ot=et.length>0?` \u2014 try ${et.join(", ")}`:"";C.push(`Stage 4 needs ${ue.join(" and ")}${Ot}`)}}else{let fe=ct.filter(ue=>!ue.used).map(ue=>ue.name);if(fe.length>0){let ue=fe.slice(0,3),et=fe.length>3?` and ${fe.length-3} more`:"";C.push(`Try ${ue.join(", ")}${et} \u2014 see [specialized context variables](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) to reach Stage 4`)}}}let A=[],U=[],O=1;if(o.modeUsage.agent>0&&(A.push(`${L(o.modeUsage.agent)} agent-mode interactions`),O=2),o.modeUsage.cli>0&&(A.push(`${L(o.modeUsage.cli)} CLI interactions`),O=Math.max(O,2)),o.toolCalls.total>0&&A.push(`${L(o.toolCalls.total)} tool calls executed`),o.modeUsage.edit>0&&A.push(`${L(o.modeUsage.edit)} edit-mode interactions`),o.editScope){let W=o.editScope.totalEditedFiles>0?Math.round(o.editScope.multiFileEdits/(o.editScope.singleFileEdits+o.editScope.multiFileEdits)*100):0;o.editScope.multiFileEdits>0&&(A.push(`${L(o.editScope.multiFileEdits)} multi-file edit sessions (${W}%)`),O=Math.max(O,2)),o.editScope.avgFilesPerSession>=3&&(A.push(`Avg ${o.editScope.avgFilesPerSession.toFixed(1)} files per edit session`),O=Math.max(O,3))}o.agentTypes&&o.agentTypes.editsAgent>0&&(A.push(`${L(o.agentTypes.editsAgent)} edits agent sessions`),O=Math.max(O,2));let $=Object.keys(o.toolCalls.byTool).length,q=Object.keys(o.toolCalls.byTool).filter(W=>!Td.has(W.toLowerCase())&&!W.startsWith("__slash__")).length;o.modeUsage.agent+o.modeUsage.cli>=10&&q>=3&&(O=3),o.modeUsage.agent+o.modeUsage.cli>=50&&q>=5&&(O=4),o.editScope&&o.editScope.multiFileEdits>=20&&o.editScope.avgFilesPerSession>=3&&(O=Math.max(O,4)),O<2&&U.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"),O<3&&U.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"),O<4&&U.push("Tackle complex refactoring or debugging tasks in [agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) for deeper autonomous workflows");let ve=[],Ce=[],te=1;if(q>0){let W=$-q,Ze=W>0?` (+ ${L(W)} automatic)`:"";ve.push(`${L(q)} intentional tools used${Ze}`),te=2}else $>0&&ve.push(`${L($)} tools used (all automatic \u2014 agent reads/searches)`);o.agentTypes&&o.agentTypes.workspaceAgent>0&&(ve.push(`${L(o.agentTypes.workspaceAgent)} @workspace agent sessions`),te=Math.max(te,3));let Te={github_pull_request:"GitHub Pull Request",github_repo:"GitHub Repository",run_in_terminal:"Run In Terminal",editFiles:"Edit Files",listFiles:"List Files"},Pe=Object.keys(Te).filter(W=>(o.toolCalls.byTool[W]||0)>0);Pe.length>0&&(ve.push(`Advanced tools: ${Pe.map(W=>Te[W]).join(", ")}`),Pe.length>=2&&(te=Math.max(te,3)));let xe=Object.keys(o.mcpTools.byServer);o.mcpTools.total>0&&(ve.push(`${L(o.mcpTools.total)} MCP tool calls across ${xe.length} server(s)`),te=Math.max(te,3),xe.length>=2&&(te=4)),te<2&&Ce.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"),te<3&&(xe.length===0?Ce.push("Set up [MCP servers](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) to connect Copilot to external tools (databases, APIs, cloud services)"):Ce.push("Explore [GitHub integrations](https://code.visualstudio.com/docs/copilot/agents/agent-tools) and advanced tools like editFiles and run_in_terminal")),te<4&&(xe.length===1?Ce.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"):xe.length===0?Ce.push("Explore the [VS Code MCP registry](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) for tools that integrate with your workflow"):Ce.push("You're using multiple MCP servers - keep exploring advanced tool combinations"));let Ve=[],Oe=[],he=1,K=i,X=K?.totalWorkspaces??0,me=X-(K?.workspacesWithIssues??0),at=X>0?me/X:0;X>0&&Ve.push(`Worked in ${X} repositor${X===1?"y":"ies"}`),me>0&&(he=2),at>=.3&&me>=2&&(he=3),at>=.7&&me>=3&&(he=4);let Xe=[...new Set([...o.modelSwitching.standardModels,...o.modelSwitching.premiumModels])];if(Xe.length>=3){let W=Xe.length>=5&&me>=3;Ve.push(`Used ${Xe.length} different models`),W?he=4:(Xe.length>=5,he=Math.max(he,3))}if(he>=4?Ve.push(`${L(me)} of ${L(X)} repos customized (70%+ with 3+ repos \u2192 Stage 4)`):he>=3?Ve.push(`${L(me)} of ${L(X)} repos customized (30%+ with 2+ repos \u2192 Stage 3)`):me>0&&Ve.push(`${L(me)} of ${L(X)} repos with custom instructions or agents.md`),he<2&&Oe.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"),he<3&&Oe.push("Add [custom instructions](https://code.visualstudio.com/docs/copilot/customization/custom-instructions) to more repositories to standardize your Copilot experience"),he<4){let W=X-me;X>0&&W>0?Oe.push(`${L(me)} of ${L(X)} repos have customization \u2014 add [instructions and agents.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions) to the remaining ${L(W)} repo${W===1?"":"s"} for Stage 4`):Oe.push("Aim for consistent customization across all projects with [instructions and agents.md](https://code.visualstudio.com/docs/copilot/customization/custom-instructions)")}if(he>=4){let W=X-me;if(W>0){let ct=(K?.workspaces||[]).filter(fe=>Object.values(fe.typeStatuses).every(ue=>ue==="\u274C")).filter(fe=>!fe.workspacePath.startsWith("<unresolved:")).sort((fe,ue)=>ue.interactionCount!==fe.interactionCount?ue.interactionCount-fe.interactionCount:ue.sessionCount-fe.sessionCount).slice(0,3),vt=`${L(W)} repo${W===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(ct.length>0){let fe=ct.map(ue=>`${ue.workspaceName} (${L(ue.interactionCount)} interaction${ue.interactionCount===1?"":"s"})`).join(`
|
|
70
|
+
`);Oe.push(`${vt}
|
|
65
71
|
|
|
66
72
|
Top repos to customize first:
|
|
67
|
-
${
|
|
73
|
+
${fe}`)}else Oe.push(vt)}else Oe.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")}let Me=[],Le=[],ce=1;if(o.sessions>=3&&(Me.push(`${L(o.sessions)} sessions in the last 30 days`),ce=2),o.applyUsage&&o.applyUsage.totalCodeBlocks>0){let W=Math.round(o.applyUsage.applyRate);Me.push(`${W}% code block apply rate (${L(o.applyUsage.totalApplies)}/${L(o.applyUsage.totalCodeBlocks)})`),W>=50&&(ce=Math.max(ce,2))}if(o.sessionDuration&&o.sessionDuration.avgDurationMs>0){let W=Math.round(o.sessionDuration.avgDurationMs/6e4);Me.push(`Avg ${W}min session duration`)}let lt=[o.modeUsage.ask>0,o.modeUsage.agent>0,o.modeUsage.cli>0].filter(Boolean).length;lt>=2&&(Me.push(`Uses ${lt} modes (ask/agent/cli)`),ce=Math.max(ce,3)),w>=10&&(Me.push(`${L(w)} explicit context references`),w>=20&&(ce=Math.max(ce,3))),o.sessions>=15&<>=2&&w>=20&&(ce=4,Me.push("Deep integration: regular usage with multi-mode and explicit context")),ce<2&&Le.push("Use AI more regularly - even for quick questions"),ce<3&&(lt<2&&Le.push("Combine [ask mode with agent mode](https://code.visualstudio.com/docs/copilot/agents/overview) in your daily workflow"),w<10&&Le.push("Use explicit [context references](https://code.visualstudio.com/docs/copilot/chat/copilot-chat#_add-context-to-your-prompts) like #file, @workspace, and #selection")),ce<4&&(w<20&&Le.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"),Le.push("Make AI part of every coding task: planning, coding, testing, and reviewing"));let St=[c,S,O,te,he,ce].sort((W,Ze)=>W-Ze),Zt=Math.floor(St.length/2),re=St.length%2===0?Math.round((St[Zt-1]+St[Zt])/2):St[Zt];return{overallStage:re,overallLabel:n[re]||`Stage ${re}`,categories:[{category:"Prompt Engineering",icon:"\u{1F4AC}",stage:c,evidence:a,tips:u},{category:"Context Engineering",icon:"\u{1F4CE}",stage:S,evidence:_,tips:C},{category:"Agentic",icon:"\u{1F916}",stage:O,evidence:A,tips:U},{category:"Tool Usage",icon:"\u{1F527}",stage:te,evidence:ve,tips:Ce},{category:"Customization",icon:"\u2699\uFE0F",stage:he,evidence:Ve,tips:Oe},{category:"Workflow Integration",icon:"\u{1F504}",stage:ce,evidence:Me,tips:Le}],period:o,lastUpdated:s.lastUpdated.toISOString()}}var ul=new ge("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(D.bold.cyan(`
|
|
68
74
|
\u{1F3AF} Copilot Token Tracker - Fluency Score
|
|
69
|
-
`)),
|
|
70
|
-
`))});function
|
|
75
|
+
`)),i.json||process.stdout.write(D.dim("Scanning for session files..."));let e=await Se();if(i.json||process.stdout.write("\r"+" ".repeat(50)+"\r"),e.length===0){i.json?process.stdout.write("{}"):console.log(D.yellow("\u26A0\uFE0F No session files found."));return}i.json||process.stdout.write(D.dim("Analyzing usage patterns..."));let t=await fs(e);i.json||process.stdout.write("\r"+" ".repeat(50)+"\r");let s=await sn(e),o=await an(s,async()=>t,!1);if(i.json){let h={overallStage:o.overallStage,overallLabel:o.overallLabel,categories:o.categories,period:o.period,lastUpdated:o.lastUpdated,backendConfigured:!1};process.stdout.write(JSON.stringify(h));return}let n={1:D.red,2:D.yellow,3:D.blue,4:D.green},a=h=>{let g="\u2588".repeat(h),b="\u2591".repeat(4-h);return g+b};console.log(D.bold("Overall Fluency Score")),console.log(D.dim("\u2500".repeat(55)));let u=n[o.overallStage]||D.white;console.log(` ${u(a(o.overallStage))} ${D.bold(o.overallLabel)}`),console.log(),console.log(D.bold("Category Breakdown")),console.log(D.dim("\u2500".repeat(55)));for(let h of o.categories){let g=n[h.stage]||D.white;if(console.log(` ${h.icon} ${D.bold(h.category)}`),console.log(` ${g(a(h.stage))} Stage ${h.stage}/4`),h.evidence.length>0){let b=h.evidence.slice(0,3);for(let y of b)console.log(D.dim(` \u2713 ${y}`));h.evidence.length>3&&console.log(D.dim(` ... and ${h.evidence.length-3} more`))}if(h.tips.length>0&&h.stage<4){console.log(D.yellow(" \u{1F4A1} Tips:"));for(let b of h.tips.slice(0,2)){let y=b.replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/\[▶ [^\]]+\]\([^)]+\)/g,"").trim();console.log(D.yellow(` \u2192 ${y}`))}}console.log()}let c=o.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(se(c.sessions))}`);let p=c.modeUsage.ask+c.modeUsage.edit+c.modeUsage.agent+c.modeUsage.cli;console.log(` Total interactions: ${D.bold(se(p))}`),c.modeUsage.ask>0&&console.log(` Ask mode: ${se(c.modeUsage.ask)}`),c.modeUsage.edit>0&&console.log(` Edit mode: ${se(c.modeUsage.edit)}`),c.modeUsage.agent>0&&console.log(` Agent mode: ${se(c.modeUsage.agent)}`),c.modeUsage.cli>0&&console.log(` CLI: ${se(c.modeUsage.cli)}`),c.toolCalls.total>0&&console.log(` Tool calls: ${se(c.toolCalls.total)}`),c.mcpTools.total>0&&console.log(` MCP tool calls: ${se(c.mcpTools.total)}`);let m=c.contextReferences.file+c.contextReferences.selection+c.contextReferences.codebase+c.contextReferences.workspace+c.contextReferences.terminal+c.contextReferences.vscode;m>0&&console.log(` Context references: ${se(m)}`),console.log(),console.log(D.dim(`Last updated: ${o.lastUpdated}
|
|
76
|
+
`))});function Pd(i,e){let t=i.replace(/\\/g,"/"),s=t.includes("opencode.db#")?t.split("#")[0]:t,o=null,n=0;for(let a of e){let u=a.path.replace(/\\/g,"/");s.startsWith(u)&&u.length>n&&(o={path:a.path,source:a.source},n=u.length)}return o}function Oi(i,e=55){if(i.length<=e)return i;let t=i.replace(/\\/g,"/").split("/"),s=i;for(let o=t.length-1;o>1&&(s="\u2026/"+t.slice(-o).join("/"),!(s.length<=e));o--);return s}function dl(i,e,t){let s=D.dim("\u2500".repeat(t.reduce((n,a)=>n+a+3,-1))),o=i.map((n,a)=>D.bold(n.padEnd(t[a]))).join(" \u2502 ");console.log(" "+o),console.log(" "+s);for(let n of e){let a=n.map((u,c)=>{let p=u.padEnd(t[c]);return c===0?D.dim(p):p}).join(D.dim(" \u2502 "));console.log(" "+a)}console.log(" "+s)}var pl=new ge("diagnostics").description("Show session file search locations and per-location usage stats").action(async()=>{console.log(D.bold.cyan(`
|
|
71
77
|
\u{1F52C} Copilot Token Tracker - Diagnostics
|
|
72
|
-
`));let
|
|
73
|
-
`);return}let e=await
|
|
74
|
-
`);return}let e=await
|
|
75
|
-
`);return}let e=new Date,t=await
|
|
78
|
+
`));let i=on(),e=i.filter(C=>C.exists),t=i.filter(C=>!C.exists);console.log(D.bold(`\u{1F4C2} Search Locations (${e.length} found / ${i.length} total)`)),console.log(D.dim("\u2500".repeat(65)));let s=["Source","Exists","Path"],o=[18,6,55],n=i.map(C=>[C.source,C.exists?D.green("yes"):D.dim("no"),Oi(C.path,55)]);if(dl(s,n,o),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}process.stdout.write(D.dim("Scanning for session files..."));let a=await Se();if(process.stdout.write("\r"+" ".repeat(60)+"\r"),a.length===0){console.log(D.yellow("\u26A0\uFE0F No session files found in any search path."));return}let u=new Map;for(let C of e)u.set(C.path,{label:Oi(C.path,45),source:C.source,files:0,sessions:0,interactions:0,tokens:0});let c=0,p=0,m=0,h=0;for(let C=0;C<a.length;C++){((C+1)%25===0||C===a.length-1)&&process.stdout.write(`\r${D.dim(`Processing: ${C+1}/${a.length} files...`)}`);let S=Pd(a[C],i),w=S?S.path:"__unknown__";u.has(w)||u.set(w,{label:S?Oi(S.path,45):"(unknown)",source:S?S.source:"unknown",files:0,sessions:0,interactions:0,tokens:0});let P=u.get(w);P.files++,c++;let v=await ms(a[C]);v&&v.tokens>0&&(P.sessions++,P.interactions+=v.interactions,P.tokens+=wt(v),p++,m+=v.interactions,h+=wt(v))}process.stdout.write("\r"+" ".repeat(60)+"\r"),console.log(D.bold("\u{1F4CA} Stats per Search Location")),console.log(D.dim("\u2500".repeat(65)));let g=["Source","Files","Sessions","Turns","Tokens"],b=[18,6,9,8,14],y=[],_=[...u.values()].filter(C=>C.files>0).sort((C,S)=>S.tokens-C.tokens||C.source.localeCompare(S.source));for(let C of _)y.push([C.source,se(C.files),se(C.sessions),se(C.interactions),_e(C.tokens)]);y.length===0?console.log(D.dim(" No session data found in any location.")):dl(g,y,b),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(se(c))}`),console.log(` Files with data: ${D.bold(se(p))}`),console.log(` Total chat turns: ${D.bold(se(m))}`),console.log(` Total tokens: ${D.bold.yellow(_e(h))}`),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 ml=new ge("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 Se();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:o}=await nn(e),n=rn(t,s,o);process.stdout.write(JSON.stringify(n))});var hl=new ge("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 Se(),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 o={...await fs(e),locale:Intl.DateTimeFormat().resolvedOptions().locale,lastUpdated:t.toISOString(),backendConfigured:!1};process.stdout.write(JSON.stringify(o))});var fl=new ge("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 Se();if(t.length===0){let _={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(_));return}let[s,{labels:o,days:n,allDaysMap:a},u]=await Promise.all([hs(t),nn(t),fs(t)]),c=rn(o,n,a),p={today:s.today,month:s.month,lastMonth:s.lastMonth,last30Days:s.last30Days,lastUpdated:s.lastUpdated.toISOString(),backendConfigured:!1},m={...u,locale:Intl.DateTimeFormat().resolvedOptions().locale,lastUpdated:e.toISOString(),backendConfigured:!1},h=await sn(t),g=await an(h,async()=>u,!1),b={overallStage:g.overallStage,overallLabel:g.overallLabel,categories:g.categories,period:g.period,lastUpdated:g.lastUpdated,backendConfigured:!1},y={details:p,chart:c,usage:m,fluency:b};process.stdout.write(JSON.stringify(y))});var Md=gl(),je=new ge;je.name("copilot-token-tracker").description("Analyze GitHub Copilot token usage from local session files").version(Md.version).option("--no-cache","Bypass the session file cache and re-parse everything");je.hook("preAction",()=>{je.opts().cache===!1?Ai():Di()});je.hook("postAction",()=>{Ei()});je.addCommand(il);je.addCommand(rl);je.addCommand(al);je.addCommand(ul);je.addCommand(pl);je.addCommand(ml);je.addCommand(hl);je.addCommand(fl);je.parse();
|