@oss-autopilot/core 0.43.1 → 0.44.0

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.
@@ -1,38 +1,38 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var nc=Object.create;var cr=Object.defineProperty;var ic=Object.getOwnPropertyDescriptor;var ac=Object.getOwnPropertyNames;var cc=Object.getPrototypeOf,lc=Object.prototype.hasOwnProperty;var $=(r,e)=>()=>(r&&(e=r(r=0)),e);var Je=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ie=(r,e)=>{for(var t in e)cr(r,t,{get:e[t],enumerable:!0})},uc=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ac(e))!lc.call(r,o)&&o!==t&&cr(r,o,{get:()=>e[o],enumerable:!(s=ic(e,o))||s.enumerable});return r};var J=(r,e,t)=>(t=r!=null?nc(cc(r)):{},uc(e||!r||!r.__esModule?cr(t,"default",{value:r,enumerable:!0}):t,r));var Ft=Je(ur=>{var us=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}},lr=class extends us{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};ur.CommanderError=us;ur.InvalidArgumentError=lr});var ps=Je(dr=>{var{InvalidArgumentError:pc}=Ft(),pr=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 dc(r){let e=r.name()+(r.variadic===!0?"...":"");return r.required?"<"+e+">":"["+e+"]"}dr.Argument=pr;dr.humanReadableArgName=dc});var hr=Je(mr=>{var{humanReadableArgName:gc}=ps(),gr=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=>gc(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 i=s(n);o.has(i)||o.set(i,[])}),t.forEach(n=>{let i=s(n);o.has(i)||o.set(i,[]),o.get(i).push(n)}),o}formatHelp(e,t){let s=t.padWidth(e,t),o=t.helpWidth??80;function n(d,m){return t.formatItem(d,s,m,t)}let i=[`${t.styleTitle("Usage:")} ${t.styleUsage(t.commandUsage(e))}`,""],a=t.commandDescription(e);a.length>0&&(i=i.concat([t.boxWrap(t.styleCommandDescription(a),o),""]));let c=t.visibleArguments(e).map(d=>n(t.styleArgumentTerm(t.argumentTerm(d)),t.styleArgumentDescription(t.argumentDescription(d))));if(i=i.concat(this.formatItemList("Arguments:",c,t)),this.groupItems(e.options,t.visibleOptions(e),d=>d.helpGroupHeading??"Options:").forEach((d,m)=>{let w=d.map(y=>n(t.styleOptionTerm(t.optionTerm(y)),t.styleOptionDescription(t.optionDescription(y))));i=i.concat(this.formatItemList(m,w,t))}),t.showGlobalOptions){let d=t.visibleGlobalOptions(e).map(m=>n(t.styleOptionTerm(t.optionTerm(m)),t.styleOptionDescription(t.optionDescription(m))));i=i.concat(this.formatItemList("Global Options:",d,t))}return this.groupItems(e.commands,t.visibleCommands(e),d=>d.helpGroup()||"Commands:").forEach((d,m)=>{let w=d.map(y=>n(t.styleSubcommandTerm(t.subcommandTerm(y)),t.styleSubcommandDescription(t.subcommandDescription(y))));i=i.concat(this.formatItemList(m,w,t))}),i.join(`
3
- `)}displayWidth(e){return Wo(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 i=" ".repeat(2);if(!s)return i+e;let a=e.padEnd(t+e.length-o.displayWidth(e)),c=2,u=(this.helpWidth??80)-t-c-2,d;return u<this.minWidthToWrap||o.preformatted(s)?d=s:d=o.boxWrap(s,u).replace(/\n/g,`
2
+ "use strict";var oc=Object.create;var ar=Object.defineProperty;var nc=Object.getOwnPropertyDescriptor;var ic=Object.getOwnPropertyNames;var ac=Object.getPrototypeOf,cc=Object.prototype.hasOwnProperty;var G=(r,e)=>()=>(r&&(e=r(r=0)),e);var We=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ne=(r,e)=>{for(var t in e)ar(r,t,{get:e[t],enumerable:!0})},lc=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ic(e))!cc.call(r,o)&&o!==t&&ar(r,o,{get:()=>e[o],enumerable:!(s=nc(e,o))||s.enumerable});return r};var Q=(r,e,t)=>(t=r!=null?oc(ac(r)):{},lc(e||!r||!r.__esModule?ar(t,"default",{value:r,enumerable:!0}):t,r));var Dt=We(lr=>{var as=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}},cr=class extends as{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};lr.CommanderError=as;lr.InvalidArgumentError=cr});var cs=We(pr=>{var{InvalidArgumentError:uc}=Dt(),ur=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 uc(`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 pc(r){let e=r.name()+(r.variadic===!0?"...":"");return r.required?"<"+e+">":"["+e+"]"}pr.Argument=ur;pr.humanReadableArgName=pc});var mr=We(gr=>{var{humanReadableArgName:dc}=cs(),dr=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=>dc(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 i=s(n);o.has(i)||o.set(i,[])}),t.forEach(n=>{let i=s(n);o.has(i)||o.set(i,[]),o.get(i).push(n)}),o}formatHelp(e,t){let s=t.padWidth(e,t),o=t.helpWidth??80;function n(d,m){return t.formatItem(d,s,m,t)}let i=[`${t.styleTitle("Usage:")} ${t.styleUsage(t.commandUsage(e))}`,""],a=t.commandDescription(e);a.length>0&&(i=i.concat([t.boxWrap(t.styleCommandDescription(a),o),""]));let c=t.visibleArguments(e).map(d=>n(t.styleArgumentTerm(t.argumentTerm(d)),t.styleArgumentDescription(t.argumentDescription(d))));if(i=i.concat(this.formatItemList("Arguments:",c,t)),this.groupItems(e.options,t.visibleOptions(e),d=>d.helpGroupHeading??"Options:").forEach((d,m)=>{let _=d.map(y=>n(t.styleOptionTerm(t.optionTerm(y)),t.styleOptionDescription(t.optionDescription(y))));i=i.concat(this.formatItemList(m,_,t))}),t.showGlobalOptions){let d=t.visibleGlobalOptions(e).map(m=>n(t.styleOptionTerm(t.optionTerm(m)),t.styleOptionDescription(t.optionDescription(m))));i=i.concat(this.formatItemList("Global Options:",d,t))}return this.groupItems(e.commands,t.visibleCommands(e),d=>d.helpGroup()||"Commands:").forEach((d,m)=>{let _=d.map(y=>n(t.styleSubcommandTerm(t.subcommandTerm(y)),t.styleSubcommandDescription(t.subcommandDescription(y))));i=i.concat(this.formatItemList(m,_,t))}),i.join(`
3
+ `)}displayWidth(e){return Vo(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 i=" ".repeat(2);if(!s)return i+e;let a=e.padEnd(t+e.length-o.displayWidth(e)),c=2,p=(this.helpWidth??80)-t-c-2,d;return p<this.minWidthToWrap||o.preformatted(s)?d=s:d=o.boxWrap(s,p).replace(/\n/g,`
4
4
  `+" ".repeat(t+c)),i+a+" ".repeat(c)+d.replace(/\n/g,`
5
- ${i}`)}boxWrap(e,t){if(t<this.minWidthToWrap)return e;let s=e.split(/\r\n|\n/),o=/[\s]*[^\s]+/g,n=[];return s.forEach(i=>{let a=i.match(o);if(a===null){n.push("");return}let c=[a.shift()],l=this.displayWidth(c[0]);a.forEach(u=>{let d=this.displayWidth(u);if(l+d<=t){c.push(u),l+=d;return}n.push(c.join(""));let m=u.trimStart();c=[m],l=this.displayWidth(m)}),n.push(c.join(""))}),n.join(`
6
- `)}};function Wo(r){let e=/\x1b\[\d*(;\d*)*m/g;return r.replace(e,"")}mr.Help=gr;mr.stripColor=Wo});var vr=Je(yr=>{var{InvalidArgumentError:mc}=Ft(),fr=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=hc(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 mc(`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?Jo(this.name().replace(/^no-/,"")):Jo(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}},br=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 Jo(r){return r.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function hc(r){let e,t,s=/^-[^-]$/,o=/^--[^-]/,n=r.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 i=n[0],a=`option creation failed due to '${i}' in option flags '${r}'`;throw/^-[^-][^-]/.test(i)?new Error(`${a}
5
+ ${i}`)}boxWrap(e,t){if(t<this.minWidthToWrap)return e;let s=e.split(/\r\n|\n/),o=/[\s]*[^\s]+/g,n=[];return s.forEach(i=>{let a=i.match(o);if(a===null){n.push("");return}let c=[a.shift()],l=this.displayWidth(c[0]);a.forEach(p=>{let d=this.displayWidth(p);if(l+d<=t){c.push(p),l+=d;return}n.push(c.join(""));let m=p.trimStart();c=[m],l=this.displayWidth(m)}),n.push(c.join(""))}),n.join(`
6
+ `)}};function Vo(r){let e=/\x1b\[\d*(;\d*)*m/g;return r.replace(e,"")}gr.Help=dr;gr.stripColor=Vo});var yr=We(br=>{var{InvalidArgumentError:gc}=Dt(),hr=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=mc(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 gc(`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?zo(this.name().replace(/^no-/,"")):zo(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}},fr=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 zo(r){return r.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function mc(r){let e,t,s=/^-[^-]$/,o=/^--[^-]/,n=r.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 i=n[0],a=`option creation failed due to '${i}' in option flags '${r}'`;throw/^-[^-][^-]/.test(i)?new Error(`${a}
7
7
  - a short flag is a single dash and a single character
8
8
  - either use a single dash and a single character (for a short flag)
9
9
  - or use a double dash for a long option (and can have two, like '--ws, --workspace')`):s.test(i)?new Error(`${a}
10
10
  - too many short flags`):o.test(i)?new Error(`${a}
11
11
  - too many long flags`):new Error(`${a}
12
- - unrecognised flag format`)}if(e===void 0&&t===void 0)throw new Error(`option creation failed due to no flags found in '${r}'.`);return{shortFlag:e,longFlag:t}}yr.Option=fr;yr.DualOptions=br});var Qo=Je(Ko=>{function fc(r,e){if(Math.abs(r.length-e.length)>3)return Math.max(r.length,e.length);let t=[];for(let s=0;s<=r.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<=r.length;o++){let n=1;r[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&&r[o-1]===e[s-2]&&r[o-2]===e[s-1]&&(t[o][s]=Math.min(t[o][s],t[o-2][s-2]+1))}return t[r.length][e.length]}function bc(r,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=r.startsWith("--");t&&(r=r.slice(2),e=e.map(i=>i.slice(2)));let s=[],o=3,n=.4;return e.forEach(i=>{if(i.length<=1)return;let a=fc(r,i),c=Math.max(r.length,i.length);(c-a)/c>n&&(a<o?(o=a,s=[i]):a===o&&s.push(i))}),s.sort((i,a)=>i.localeCompare(a)),t&&(s=s.map(i=>`--${i}`)),s.length>1?`
12
+ - unrecognised flag format`)}if(e===void 0&&t===void 0)throw new Error(`option creation failed due to no flags found in '${r}'.`);return{shortFlag:e,longFlag:t}}br.Option=hr;br.DualOptions=fr});var Jo=We(Wo=>{function hc(r,e){if(Math.abs(r.length-e.length)>3)return Math.max(r.length,e.length);let t=[];for(let s=0;s<=r.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<=r.length;o++){let n=1;r[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&&r[o-1]===e[s-2]&&r[o-2]===e[s-1]&&(t[o][s]=Math.min(t[o][s],t[o-2][s-2]+1))}return t[r.length][e.length]}function fc(r,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=r.startsWith("--");t&&(r=r.slice(2),e=e.map(i=>i.slice(2)));let s=[],o=3,n=.4;return e.forEach(i=>{if(i.length<=1)return;let a=hc(r,i),c=Math.max(r.length,i.length);(c-a)/c>n&&(a<o?(o=a,s=[i]):a===o&&s.push(i))}),s.sort((i,a)=>i.localeCompare(a)),t&&(s=s.map(i=>`--${i}`)),s.length>1?`
13
13
  (Did you mean one of ${s.join(", ")}?)`:s.length===1?`
14
- (Did you mean ${s[0]}?)`:""}Ko.suggestSimilar=bc});var en=Je(Tr=>{var yc=require("node:events").EventEmitter,_r=require("node:child_process"),Ke=require("node:path"),ds=require("node:fs"),q=require("node:process"),{Argument:vc,humanReadableArgName:_c}=ps(),{CommanderError:wr}=Ft(),{Help:wc,stripColor:Rc}=hr(),{Option:Yo,DualOptions:Ec}=vr(),{suggestSimilar:Xo}=Qo(),Rr=class r extends yc{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:()=>Er()??(q.stdout.isTTY&&q.stdout.hasColors?.()),getErrHasColors:()=>Er()??(q.stderr.isTTY&&q.stderr.hasColors?.()),stripColor:t=>Rc(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[,i,a]=e.match(/([^ ]+) *(.*)/),c=this.createCommand(i);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,a&&c.arguments(a),this._registerCommand(c),c.parent=this,c.copyInheritedSettings(this),o?this:c}createCommand(e){return new r(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 vc(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(/([^ ]+) *(.*)/),i=t??"display help for command",a=this.createCommand(o);return a.helpOption(!1),n&&a.arguments(n),i&&a.description(i),this._addImplicitHelpCommand=!0,this._helpCommand=a,(e||t)&&this._initCommandGroup(a),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 wr(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 Yo(e,t)}_callParseArg(e,t,s,o){try{return e.parseArg(t,s)}catch(n){if(n.code==="commander.invalidArgument"){let i=`${o} ${n.message}`;this.error(i,{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,i,a)=>{n==null&&e.presetArg!==void 0&&(n=e.presetArg);let c=this.getOptionValue(s);n!==null&&e.parseArg?n=this._callParseArg(e,n,c,i):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,a)};return this.on("option:"+t,n=>{let i=`error: option '${e.flags}' argument '${n}' is invalid.`;o(n,i,"cli")}),e.envVar&&this.on("optionEnv:"+t,n=>{let i=`error: option '${e.flags}' value '${n}' from env '${e.envVar}' is invalid.`;o(n,i,"env")}),this}_optionEx(e,t,s,o,n){if(typeof t=="object"&&t instanceof Yo)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let i=this.createOption(t,s);if(i.makeOptionMandatory(!!e.mandatory),typeof o=="function")i.default(n).argParser(o);else if(o instanceof RegExp){let a=o;o=(c,l)=>{let u=a.exec(c);return u?u[0]:l},i.default(n).argParser(o)}else i.default(o);return this.addOption(i)}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(ds.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
14
+ (Did you mean ${s[0]}?)`:""}Wo.suggestSimilar=fc});var Xo=We(Er=>{var bc=require("node:events").EventEmitter,vr=require("node:child_process"),Je=require("node:path"),ls=require("node:fs"),q=require("node:process"),{Argument:yc,humanReadableArgName:vc}=cs(),{CommanderError:_r}=Dt(),{Help:_c,stripColor:wc}=mr(),{Option:Ko,DualOptions:Rc}=yr(),{suggestSimilar:Qo}=Jo(),wr=class r extends bc{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:()=>Rr()??(q.stdout.isTTY&&q.stdout.hasColors?.()),getErrHasColors:()=>Rr()??(q.stderr.isTTY&&q.stderr.hasColors?.()),stripColor:t=>wc(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[,i,a]=e.match(/([^ ]+) *(.*)/),c=this.createCommand(i);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,a&&c.arguments(a),this._registerCommand(c),c.parent=this,c.copyInheritedSettings(this),o?this:c}createCommand(e){return new r(e)}createHelp(){return Object.assign(new _c,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 yc(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(/([^ ]+) *(.*)/),i=t??"display help for command",a=this.createCommand(o);return a.helpOption(!1),n&&a.arguments(n),i&&a.description(i),this._addImplicitHelpCommand=!0,this._helpCommand=a,(e||t)&&this._initCommandGroup(a),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 _r(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 Ko(e,t)}_callParseArg(e,t,s,o){try{return e.parseArg(t,s)}catch(n){if(n.code==="commander.invalidArgument"){let i=`${o} ${n.message}`;this.error(i,{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,i,a)=>{n==null&&e.presetArg!==void 0&&(n=e.presetArg);let c=this.getOptionValue(s);n!==null&&e.parseArg?n=this._callParseArg(e,n,c,i):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,a)};return this.on("option:"+t,n=>{let i=`error: option '${e.flags}' argument '${n}' is invalid.`;o(n,i,"cli")}),e.envVar&&this.on("optionEnv:"+t,n=>{let i=`error: option '${e.flags}' value '${n}' from env '${e.envVar}' is invalid.`;o(n,i,"env")}),this}_optionEx(e,t,s,o,n){if(typeof t=="object"&&t instanceof Ko)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let i=this.createOption(t,s);if(i.makeOptionMandatory(!!e.mandatory),typeof o=="function")i.default(n).argParser(o);else if(o instanceof RegExp){let a=o;o=(c,l)=>{let p=a.exec(c);return p?p[0]:l},i.default(n).argParser(o)}else i.default(o);return this.addOption(i)}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(ls.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(u,d){let m=Ke.resolve(u,d);if(ds.existsSync(m))return m;if(o.includes(Ke.extname(d)))return;let w=o.find(y=>ds.existsSync(`${m}${y}`));if(w)return`${m}${w}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let i=e._executableFile||`${this._name}-${e._name}`,a=this._executableDir||"";if(this._scriptPath){let u;try{u=ds.realpathSync(this._scriptPath)}catch{u=this._scriptPath}a=Ke.resolve(Ke.dirname(u),a)}if(a){let u=n(a,i);if(!u&&!e._executableFile&&this._scriptPath){let d=Ke.basename(this._scriptPath,Ke.extname(this._scriptPath));d!==this._name&&(u=n(a,`${d}-${e._name}`))}i=u||i}s=o.includes(Ke.extname(i));let c;q.platform!=="win32"?s?(t.unshift(i),t=Zo(q.execArgv).concat(t),c=_r.spawn(q.argv[0],t,{stdio:"inherit"})):c=_r.spawn(i,t,{stdio:"inherit"}):(this._checkForMissingExecutable(i,a,e._name),t.unshift(i),t=Zo(q.execArgv).concat(t),c=_r.spawn(q.execPath,t,{stdio:"inherit"})),c.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(d=>{q.on(d,()=>{c.killed===!1&&c.exitCode===null&&c.kill(d)})});let l=this._exitCallback;c.on("close",u=>{u=u??1,l?l(new wr(u,"commander.executeSubCommandAsync","(close)")):q.exit(u)}),c.on("error",u=>{if(u.code==="ENOENT")this._checkForMissingExecutable(i,a,e._name);else if(u.code==="EACCES")throw new Error(`'${i}' not executable`);if(!l)q.exit(1);else{let d=new wr(1,"commander.executeSubCommandAsync","(error)");d.nestedError=u,l(d)}}),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 i=o;if(o!==null&&s.parseArg){let a=`error: command-argument value '${o}' is invalid for argument '${s.name()}'.`;i=this._callParseArg(s,o,n,a)}return i};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((i,a)=>e(s,a,i),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(i=>{o.push({hookedCommand:n,callback:i})})}),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 i;return i=this._chainOrCallHooks(i,"preAction"),i=this._chainOrCall(i,()=>this._actionHandler(this.processedArgs)),this.parent&&(i=this._chainOrCall(i,()=>{this.parent.emit(n,e,t)})),i=this._chainOrCallHooks(i,"postAction"),i}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(u){return u.length>1&&u[0]==="-"}let i=u=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(u)?!this._getCommandAndAncestors().some(d=>d.options.map(m=>m.short).some(m=>/^-\d$/.test(m))):!1,a=null,c=null,l=0;for(;l<e.length||c;){let u=c??e[l++];if(c=null,u==="--"){o===s&&o.push(u),o.push(...e.slice(l));break}if(a&&(!n(u)||i(u))){this.emit(`option:${a.name()}`,u);continue}if(a=null,n(u)){let d=this._findOption(u);if(d){if(d.required){let m=e[l++];m===void 0&&this.optionMissingArgument(d),this.emit(`option:${d.name()}`,m)}else if(d.optional){let m=null;l<e.length&&(!n(e[l])||i(e[l]))&&(m=e[l++]),this.emit(`option:${d.name()}`,m)}else this.emit(`option:${d.name()}`);a=d.variadic?d:null;continue}}if(u.length>2&&u[0]==="-"&&u[1]!=="-"){let d=this._findOption(`-${u[1]}`);if(d){d.required||d.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${d.name()}`,u.slice(2)):(this.emit(`option:${d.name()}`),c=`-${u.slice(2)}`);continue}}if(/^--[^=]+=/.test(u)){let d=u.indexOf("="),m=this._findOption(u.slice(0,d));if(m&&(m.required||m.optional)){this.emit(`option:${m.name()}`,u.slice(d+1));continue}}if(o===t&&n(u)&&!(this.commands.length===0&&i(u))&&(o=s),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&s.length===0){if(this._findCommand(u)){t.push(u),s.push(...e.slice(l));break}else if(this._getHelpCommand()&&u===this._getHelpCommand().name()){t.push(u,...e.slice(l));break}else if(this._defaultCommandName){s.push(u,...e.slice(l));break}}if(this._passThroughOptions){o.push(u,...e.slice(l));break}o.push(u)}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}
21
+ - ${o}`;throw new Error(n)}_executeSubCommand(e,t){t=t.slice();let s=!1,o=[".js",".ts",".tsx",".mjs",".cjs"];function n(p,d){let m=Je.resolve(p,d);if(ls.existsSync(m))return m;if(o.includes(Je.extname(d)))return;let _=o.find(y=>ls.existsSync(`${m}${y}`));if(_)return`${m}${_}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let i=e._executableFile||`${this._name}-${e._name}`,a=this._executableDir||"";if(this._scriptPath){let p;try{p=ls.realpathSync(this._scriptPath)}catch{p=this._scriptPath}a=Je.resolve(Je.dirname(p),a)}if(a){let p=n(a,i);if(!p&&!e._executableFile&&this._scriptPath){let d=Je.basename(this._scriptPath,Je.extname(this._scriptPath));d!==this._name&&(p=n(a,`${d}-${e._name}`))}i=p||i}s=o.includes(Je.extname(i));let c;q.platform!=="win32"?s?(t.unshift(i),t=Yo(q.execArgv).concat(t),c=vr.spawn(q.argv[0],t,{stdio:"inherit"})):c=vr.spawn(i,t,{stdio:"inherit"}):(this._checkForMissingExecutable(i,a,e._name),t.unshift(i),t=Yo(q.execArgv).concat(t),c=vr.spawn(q.execPath,t,{stdio:"inherit"})),c.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(d=>{q.on(d,()=>{c.killed===!1&&c.exitCode===null&&c.kill(d)})});let l=this._exitCallback;c.on("close",p=>{p=p??1,l?l(new _r(p,"commander.executeSubCommandAsync","(close)")):q.exit(p)}),c.on("error",p=>{if(p.code==="ENOENT")this._checkForMissingExecutable(i,a,e._name);else if(p.code==="EACCES")throw new Error(`'${i}' not executable`);if(!l)q.exit(1);else{let d=new _r(1,"commander.executeSubCommandAsync","(error)");d.nestedError=p,l(d)}}),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 i=o;if(o!==null&&s.parseArg){let a=`error: command-argument value '${o}' is invalid for argument '${s.name()}'.`;i=this._callParseArg(s,o,n,a)}return i};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((i,a)=>e(s,a,i),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(i=>{o.push({hookedCommand:n,callback:i})})}),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 i;return i=this._chainOrCallHooks(i,"preAction"),i=this._chainOrCall(i,()=>this._actionHandler(this.processedArgs)),this.parent&&(i=this._chainOrCall(i,()=>{this.parent.emit(n,e,t)})),i=this._chainOrCallHooks(i,"postAction"),i}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(p){return p.length>1&&p[0]==="-"}let i=p=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(p)?!this._getCommandAndAncestors().some(d=>d.options.map(m=>m.short).some(m=>/^-\d$/.test(m))):!1,a=null,c=null,l=0;for(;l<e.length||c;){let p=c??e[l++];if(c=null,p==="--"){o===s&&o.push(p),o.push(...e.slice(l));break}if(a&&(!n(p)||i(p))){this.emit(`option:${a.name()}`,p);continue}if(a=null,n(p)){let d=this._findOption(p);if(d){if(d.required){let m=e[l++];m===void 0&&this.optionMissingArgument(d),this.emit(`option:${d.name()}`,m)}else if(d.optional){let m=null;l<e.length&&(!n(e[l])||i(e[l]))&&(m=e[l++]),this.emit(`option:${d.name()}`,m)}else this.emit(`option:${d.name()}`);a=d.variadic?d:null;continue}}if(p.length>2&&p[0]==="-"&&p[1]!=="-"){let d=this._findOption(`-${p[1]}`);if(d){d.required||d.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${d.name()}`,p.slice(2)):(this.emit(`option:${d.name()}`),c=`-${p.slice(2)}`);continue}}if(/^--[^=]+=/.test(p)){let d=p.indexOf("="),m=this._findOption(p.slice(0,d));if(m&&(m.required||m.optional)){this.emit(`option:${m.name()}`,p.slice(d+1));continue}}if(o===t&&n(p)&&!(this.commands.length===0&&i(p))&&(o=s),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&s.length===0){if(this._findCommand(p)){t.push(p),s.push(...e.slice(l));break}else if(this._getHelpCommand()&&p===this._getHelpCommand().name()){t.push(p,...e.slice(l));break}else if(this._defaultCommandName){s.push(p,...e.slice(l));break}}if(this._passThroughOptions){o.push(p,...e.slice(l));break}o.push(p)}return{operands:t,unknown:s}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let s=0;s<t;s++){let o=this.options[s].attributeName();e[o]=o===this._versionOptionName?this._version:this[o]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
22
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 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 Ec(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=i=>{let a=i.attributeName(),c=this.getOptionValue(a),l=this.options.find(d=>d.negate&&a===d.attributeName()),u=this.options.find(d=>!d.negate&&a===d.attributeName());return l&&(l.presetArg===void 0&&c===!1||l.presetArg!==void 0&&c===l.presetArg)?l:u||i},o=i=>{let a=s(i),c=a.attributeName();return this.getOptionValueSource(c)==="env"?`environment variable '${a.envVar}'`:`option '${a.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 i=n.createHelp().visibleOptions(n).filter(a=>a.long).map(a=>a.long);o=o.concat(i),n=n.parent}while(n&&!n._enablePositionalOptions);t=Xo(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=Xo(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=>_c(s));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}helpGroup(e){return e===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=e,this)}commandsGroup(e){return e===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=e,this)}optionsGroup(e){return e===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=e,this)}_initOptionGroup(e){this._defaultOptionGroup&&!e.helpGroupHeading&&e.helpGroup(this._defaultOptionGroup)}_initCommandGroup(e){this._defaultCommandGroup&&!e.helpGroup()&&e.helpGroup(this._defaultCommandGroup)}nameFromFilename(e){return this._name=Ke.basename(e,Ke.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=a=>this._outputConfiguration.writeErr(a),o=this._outputConfiguration.getErrHasColors(),n=this._outputConfiguration.getErrHelpWidth()):(s=a=>this._outputConfiguration.writeOut(a),o=this._outputConfiguration.getOutHasColors(),n=this._outputConfiguration.getOutHelpWidth()),{error:t,write:a=>(o||(a=this._outputConfiguration.stripColor(a)),s(a)),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(i=>i.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(i=>i.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.
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 Rc(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=i=>{let a=i.attributeName(),c=this.getOptionValue(a),l=this.options.find(d=>d.negate&&a===d.attributeName()),p=this.options.find(d=>!d.negate&&a===d.attributeName());return l&&(l.presetArg===void 0&&c===!1||l.presetArg!==void 0&&c===l.presetArg)?l:p||i},o=i=>{let a=s(i),c=a.attributeName();return this.getOptionValueSource(c)==="env"?`environment variable '${a.envVar}'`:`option '${a.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 i=n.createHelp().visibleOptions(n).filter(a=>a.long).map(a=>a.long);o=o.concat(i),n=n.parent}while(n&&!n._enablePositionalOptions);t=Qo(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=Qo(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=>vc(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=Je.basename(e,Je.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=a=>this._outputConfiguration.writeErr(a),o=this._outputConfiguration.getErrHasColors(),n=this._outputConfiguration.getErrHelpWidth()):(s=a=>this._outputConfiguration.writeOut(a),o=this._outputConfiguration.getOutHasColors(),n=this._outputConfiguration.getOutHelpWidth()),{error:t,write:a=>(o||(a=this._outputConfiguration.stripColor(a)),s(a)),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(i=>i.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(i=>i.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 i;typeof t=="function"?i=t({error:n.error,command:n.command}):i=t,i&&n.write(`${i}
27
- `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(o=>t.is(o))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Zo(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 Er(){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}Tr.Command=Rr;Tr.useColor=Er});var on=Je(ke=>{var{Argument:tn}=ps(),{Command:Cr}=en(),{CommanderError:Tc,InvalidArgumentError:sn}=Ft(),{Help:Cc}=hr(),{Option:rn}=vr();ke.program=new Cr;ke.createCommand=r=>new Cr(r);ke.createOption=(r,e)=>new rn(r,e);ke.createArgument=(r,e)=>new tn(r,e);ke.Command=Cr;ke.Option=rn;ke.Argument=tn;ke.Help=Cc;ke.CommanderError=Tc;ke.InvalidArgumentError=sn;ke.InvalidOptionArgumentError=sn});var ct,gs,ms=$(()=>{"use strict";ct={setupComplete:!1,maxActivePRs:10,dormantThresholdDays:30,approachingDormantDays:25,maxIssueAgeDays:90,languages:["typescript","javascript"],labels:["good first issue","help wanted"],excludeRepos:[],trustedProjects:[],githubUsername:"",minRepoScoreThreshold:4,starredRepos:[],squashByDefault:!0,minStars:50,includeDocIssues:!0,aiPolicyBlocklist:["matplotlib/matplotlib"],shelvedPRUrls:[],dismissedIssues:{},snoozedPRs:{}},gs={version:2,activeIssues:[],repoScores:{},config:ct,events:[],lastRunAt:new Date().toISOString()}});function A(r){return r instanceof Error?r.message:String(r)}function ve(r){if(r&&typeof r=="object"&&"status"in r){let e=r.status;return typeof e=="number"&&Number.isFinite(e)?e:void 0}}var Ut,Qe,K,oe=$(()=>{"use strict";Ut=class extends Error{constructor(t,s){super(t);this.code=s;this.name="OssAutopilotError"}},Qe=class extends Ut{constructor(e){super(e,"CONFIGURATION_ERROR"),this.name="ConfigurationError"}},K=class extends Ut{constructor(e){super(e,"VALIDATION_ERROR"),this.name="ValidationError"}}});function Pr(){Sr=!0}function k(r,e,...t){if(!Sr)return;let s=new Date().toISOString();console.error(`[${s}] [DEBUG] [${r}] ${e}`,...t)}function me(r,e,...t){let s=new Date().toISOString();console.error(`[${s}] [INFO] [${r}] ${e}`,...t)}function T(r,e,...t){let s=new Date().toISOString();console.error(`[${s}] [WARN] [${r}] ${e}`,...t)}async function kr(r,e,t){if(!Sr)return t();let s=performance.now();try{let o=await t(),n=(performance.now()-s).toFixed(0);return k(r,`${e} completed in ${n}ms`),o}catch(o){let n=(performance.now()-s).toFixed(0);throw k(r,`${e} failed after ${n}ms`),o}}var Sr,be=$(()=>{"use strict";Sr=!1});function De(){let r=Ye.join(cn.homedir(),".oss-autopilot");return Be.existsSync(r)||Be.mkdirSync(r,{recursive:!0,mode:448}),r}function Xe(){return Ye.join(De(),"state.json")}function St(){let r=Ye.join(De(),"backups");return Be.existsSync(r)||Be.mkdirSync(r,{recursive:!0,mode:448}),r}function Or(){let r=Ye.join(De(),"cache");return Be.existsSync(r)||Be.mkdirSync(r,{recursive:!0,mode:448}),r}function lt(){return Ye.join(De(),"dashboard.html")}function Ar(r,e){return Sc.test(r)&&Pc.test(e)}function Te(r){if(!r.startsWith("https://github.com/"))return null;let e=r.match(/github\.com\/([^/]+)\/([^/]+)\/pull\/(\d+)/);if(e){let s=e[1],o=e[2];return Ar(s,o)?{owner:s,repo:o,number:parseInt(e[3],10),type:"pull"}:null}let t=r.match(/github\.com\/([^/]+)\/([^/]+)\/issues\/(\d+)/);if(t){let s=t[1],o=t[2];return Ar(s,o)?{owner:s,repo:o,number:parseInt(t[3],10),type:"issues"}:null}return null}function Pt(r){if(!r.startsWith("https://github.com/"))return null;let e=r.match(/github\.com\/([^/]+)\/([^/]+)/);if(!e)return null;let t=e[1],s=e[2];return Ar(t,s)?{owner:t,repo:s}:null}function Ie(r,e=new Date){return Math.floor((e.getTime()-r.getTime())/(1e3*60*60*24))}function $r(r){let[e,t]=r.split("/");if(!e||!t)throw new Error(`Invalid repo format: expected "owner/repo", got "${r}"`);return{owner:e,repo:t}}function kt(r,e){return r.toLowerCase()===e.toLowerCase()}function Mt(){try{let r=Ye.join(Ye.dirname(process.argv[1]),"..","package.json");return JSON.parse(Be.readFileSync(r,"utf-8")).version}catch{return"0.0.0"}}function ut(r){let e=new Date(r),t=Date.now()-e.getTime(),s=Math.floor(t/6e4),o=Math.floor(t/36e5),n=Math.floor(t/864e5);return s<60?`${s}m ago`:o<24?`${o}h ago`:n<30?`${n}d ago`:e.toLocaleDateString()}function Ze(){if(Ae)return Ae;if(fs)return null;if(fs=!0,process.env.GITHUB_TOKEN)return Ae=process.env.GITHUB_TOKEN,Ae;try{let r=(0,bs.execFileSync)("gh",["auth","token"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],timeout:2e3}).trim();if(r&&r.length>0)return Ae=r,k(hs,"Using GitHub token from gh CLI"),Ae}catch(r){k(hs,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}function _e(){let r=Ze();if(!r)throw new Qe(`GitHub authentication required.
27
+ `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(o=>t.is(o))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Yo(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 Rr(){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}Er.Command=wr;Er.useColor=Rr});var sn=We(ke=>{var{Argument:Zo}=cs(),{Command:Tr}=Xo(),{CommanderError:Ec,InvalidArgumentError:en}=Dt(),{Help:Tc}=mr(),{Option:tn}=yr();ke.program=new Tr;ke.createCommand=r=>new Tr(r);ke.createOption=(r,e)=>new tn(r,e);ke.createArgument=(r,e)=>new Zo(r,e);ke.Command=Tr;ke.Option=tn;ke.Argument=Zo;ke.Help=Tc;ke.CommanderError=Ec;ke.InvalidArgumentError=en;ke.InvalidOptionArgumentError=en});var it,us,ps=G(()=>{"use strict";it={setupComplete:!1,maxActivePRs:10,dormantThresholdDays:30,approachingDormantDays:25,maxIssueAgeDays:90,languages:["typescript","javascript"],labels:["good first issue","help wanted"],excludeRepos:[],trustedProjects:[],githubUsername:"",minRepoScoreThreshold:4,starredRepos:[],squashByDefault:!0,minStars:50,includeDocIssues:!0,aiPolicyBlocklist:["matplotlib/matplotlib"],shelvedPRUrls:[],dismissedIssues:{},snoozedPRs:{}},us={version:2,activeIssues:[],repoScores:{},config:it,events:[],lastRunAt:new Date().toISOString()}});function A(r){return r instanceof Error?r.message:String(r)}function fe(r){if(r&&typeof r=="object"&&"status"in r){let e=r.status;return typeof e=="number"&&Number.isFinite(e)?e:void 0}}var It,Ke,W,ie=G(()=>{"use strict";It=class extends Error{constructor(t,s){super(t);this.code=s;this.name="OssAutopilotError"}},Ke=class extends It{constructor(e){super(e,"CONFIGURATION_ERROR"),this.name="ConfigurationError"}},W=class extends It{constructor(e){super(e,"VALIDATION_ERROR"),this.name="ValidationError"}}});function Pr(){Cr=!0}function S(r,e,...t){if(!Cr)return;let s=new Date().toISOString();console.error(`[${s}] [DEBUG] [${r}] ${e}`,...t)}function me(r,e,...t){let s=new Date().toISOString();console.error(`[${s}] [INFO] [${r}] ${e}`,...t)}function T(r,e,...t){let s=new Date().toISOString();console.error(`[${s}] [WARN] [${r}] ${e}`,...t)}async function Sr(r,e,t){if(!Cr)return t();let s=performance.now();try{let o=await t(),n=(performance.now()-s).toFixed(0);return S(r,`${e} completed in ${n}ms`),o}catch(o){let n=(performance.now()-s).toFixed(0);throw S(r,`${e} failed after ${n}ms`),o}}var Cr,ve=G(()=>{"use strict";Cr=!1});function De(){let r=Qe.join(nn.homedir(),".oss-autopilot");return qe.existsSync(r)||qe.mkdirSync(r,{recursive:!0,mode:448}),r}function at(){return Qe.join(De(),"state.json")}function Tt(){let r=Qe.join(De(),"backups");return qe.existsSync(r)||qe.mkdirSync(r,{recursive:!0,mode:448}),r}function Ar(){let r=Qe.join(De(),"cache");return qe.existsSync(r)||qe.mkdirSync(r,{recursive:!0,mode:448}),r}function Or(){return Qe.join(De(),"dashboard.html")}function kr(r,e){return Cc.test(r)&&Pc.test(e)}function Te(r){if(!r.startsWith("https://github.com/"))return null;let e=r.match(/github\.com\/([^/]+)\/([^/]+)\/pull\/(\d+)/);if(e){let s=e[1],o=e[2];return kr(s,o)?{owner:s,repo:o,number:parseInt(e[3],10),type:"pull"}:null}let t=r.match(/github\.com\/([^/]+)\/([^/]+)\/issues\/(\d+)/);if(t){let s=t[1],o=t[2];return kr(s,o)?{owner:s,repo:o,number:parseInt(t[3],10),type:"issues"}:null}return null}function Ct(r){if(!r.startsWith("https://github.com/"))return null;let e=r.match(/github\.com\/([^/]+)\/([^/]+)/);if(!e)return null;let t=e[1],s=e[2];return kr(t,s)?{owner:t,repo:s}:null}function Ie(r,e=new Date){return Math.floor((e.getTime()-r.getTime())/(1e3*60*60*24))}function Gr(r){let[e,t]=r.split("/");if(!e||!t)throw new Error(`Invalid repo format: expected "owner/repo", got "${r}"`);return{owner:e,repo:t}}function Pt(r,e){return r.toLowerCase()===e.toLowerCase()}function Ft(){try{let r=Qe.join(Qe.dirname(process.argv[1]),"..","package.json");return JSON.parse(qe.readFileSync(r,"utf-8")).version}catch{return"0.0.0"}}function ct(r){let e=new Date(r),t=Date.now()-e.getTime(),s=Math.floor(t/6e4),o=Math.floor(t/36e5),n=Math.floor(t/864e5);return s<60?`${s}m ago`:o<24?`${o}h ago`:n<30?`${n}d ago`:e.toLocaleDateString()}function st(){if(Ae)return Ae;if(gs)return null;if(gs=!0,process.env.GITHUB_TOKEN)return Ae=process.env.GITHUB_TOKEN,Ae;try{let r=(0,ms.execFileSync)("gh",["auth","token"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],timeout:2e3}).trim();if(r&&r.length>0)return Ae=r,S(ds,"Using GitHub token from gh CLI"),Ae}catch(r){S(ds,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}function _e(){let r=st();if(!r)throw new Ke(`GitHub authentication required.
28
28
 
29
29
  Options:
30
30
  1. Use gh CLI: gh auth login
31
31
  2. Set GITHUB_TOKEN environment variable
32
32
 
33
- The gh CLI is recommended - install from https://cli.github.com`);return r}async function Gr(){if(Ae)return Ae;if(fs)return null;if(fs=!0,process.env.GITHUB_TOKEN)return Ae=process.env.GITHUB_TOKEN,Ae;try{let r=await new Promise((e,t)=>{(0,bs.execFile)("gh",["auth","token"],{encoding:"utf-8",timeout:2e3},(s,o)=>{s?t(s):e(o.trim())})});if(r&&r.length>0)return Ae=r,k(hs,"Using GitHub token from gh CLI (async)"),Ae}catch(r){k(hs,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}var Be,Ye,cn,bs,hs,Ae,fs,Sc,Pc,Oe=$(()=>{"use strict";Be=J(require("fs"),1),Ye=J(require("path"),1),cn=J(require("os"),1),bs=require("child_process");oe();be();hs="utils",Ae=null,fs=!1;Sc=/^[a-zA-Z0-9_-]+$/,Pc=/^[a-zA-Z0-9_.-]+$/});function Oc(r){try{let e=JSON.parse(L.readFileSync(r,"utf-8"));return Date.now()-e.timestamp>Ac}catch(e){return k(I,"Lock file unreadable or invalid JSON, treating as stale",e),!0}}function $c(r){let e=JSON.stringify({pid:process.pid,timestamp:Date.now()});try{L.writeFileSync(r,e,{flag:"wx"});return}catch(t){k(I,"Lock file already exists, checking staleness",t)}if(!Oc(r))throw new Error("State file is locked by another process");try{L.unlinkSync(r)}catch(t){k(I,"Stale lock already removed by another process",t)}try{L.writeFileSync(r,e,{flag:"wx"})}catch(t){throw k(I,"Lock re-acquire failed (race condition)",t),new Error("State file is locked by another process",{cause:t})}}function Gc(r){try{JSON.parse(L.readFileSync(r,"utf-8")).pid===process.pid&&L.unlinkSync(r)}catch(e){k(I,"Lock file already removed or unreadable during release",e)}}function xr(r,e,t){let s=r+".tmp";L.writeFileSync(s,e,{mode:t??384}),L.renameSync(s,r),t!==void 0&&L.chmodSync(r,t)}function un(r){k(I,"Migrating state from v1 to v2 (fresh GitHub fetching)...");let e=r.mergedPRs||[],t=r.closedPRs||[],s={...r.repoScores||{}};for(let n of e)s[n.repo]||(s[n.repo]={repo:n.repo,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}});for(let n of t)s[n.repo]||(s[n.repo]={repo:n.repo,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}});let o={version:2,activeIssues:r.activeIssues||[],repoScores:s,config:r.config,events:r.events||[],lastRunAt:new Date().toISOString()};return k(I,`Migration complete. Preserved ${Object.keys(s).length} repo scores.`),o}function U(){return Dr||(Dr=new ys),Dr}var L,Fe,I,kc,ln,Ac,Lt,pt,ys,Dr,jt=$(()=>{"use strict";L=J(require("fs"),1),Fe=J(require("path"),1);ms();Oe();oe();be();I="state",kc=2,ln=1e3,Ac=3e4,Lt=Fe.join(process.cwd(),"data","state.json"),pt=Fe.join(process.cwd(),"data","backups");ys=class r{state;inMemoryOnly;constructor(e=!1){this.inMemoryOnly=e,this.state=e?this.createFreshState():this.load()}createFreshState(){return{version:kc,activeIssues:[],repoScores:{},config:{...gs.config,setupComplete:!1,languages:[...gs.config.languages],labels:[...gs.config.labels],excludeRepos:[],trustedProjects:[],shelvedPRUrls:[],dismissedIssues:{},snoozedPRs:{}},events:[],lastRunAt:new Date().toISOString()}}isSetupComplete(){return this.state.config.setupComplete===!0}markSetupComplete(){this.state.config.setupComplete=!0,this.state.config.setupCompletedAt=new Date().toISOString()}migrateFromLegacyLocation(){let e=Xe();if(L.existsSync(e)||!L.existsSync(Lt))return!1;k(I,"Migrating state from ./data/ to ~/.oss-autopilot/...");try{if(De(),L.copyFileSync(Lt,e),k(I,`Migrated state file to ${e}`),L.existsSync(pt)){let s=St(),o=L.readdirSync(pt).filter(n=>n.startsWith("state-")&&n.endsWith(".json"));for(let n of o){let i=Fe.join(pt,n),a=Fe.join(s,n);L.copyFileSync(i,a)}k(I,`Migrated ${o.length} backup files`)}if(L.unlinkSync(Lt),k(I,"Removed legacy state file"),L.existsSync(pt)){let s=L.readdirSync(pt);for(let o of s)L.unlinkSync(Fe.join(pt,o));L.rmdirSync(pt)}let t=Fe.dirname(Lt);return L.existsSync(t)&&L.readdirSync(t).length===0&&(L.rmdirSync(t),k(I,"Removed empty legacy data directory")),k(I,"Migration complete!"),!0}catch(t){T(I,`Failed to migrate state: ${A(t)}`);let s=Xe();if(L.existsSync(s)&&L.existsSync(Lt))try{L.unlinkSync(s),k(I,"Cleaned up partial migration - removed incomplete new state file")}catch(o){T(I,"Could not clean up partial migration file"),k(I,"Partial migration cleanup failed",o)}return T(I,"To resolve this issue:"),T(I," 1. Ensure you have write permissions to ~/.oss-autopilot/"),T(I," 2. Check available disk space"),T(I," 3. Manually copy ./data/state.json to ~/.oss-autopilot/state.json"),T(I," 4. Or delete ./data/state.json to start fresh"),!1}}load(){this.migrateFromLegacyLocation();let e=Xe();try{if(L.existsSync(e)){let t=L.readFileSync(e,"utf-8"),s=JSON.parse(t);if(!this.isValidState(s)){T(I,"Invalid state file structure, attempting to restore from backup...");let n=this.tryRestoreFromBackup();return n||(T(I,"No valid backup found, starting fresh"),this.createFreshState())}s.version===1&&(s=un(s),xr(e,JSON.stringify(s,null,2),384),k(I,"Migrated state saved"));let o=Object.keys(s.repoScores).length;return k(I,`Loaded state v${s.version}: ${o} repo scores tracked`),s}}catch(t){T(I,"Error loading state:",t),T(I,"Attempting to restore from backup...");let s=this.tryRestoreFromBackup();if(s)return s;T(I,"No valid backup found, starting fresh")}return k(I,"No existing state found, initializing..."),this.createFreshState()}tryRestoreFromBackup(){let e=St();if(!L.existsSync(e))return null;let t=L.readdirSync(e).filter(s=>s.startsWith("state-")&&s.endsWith(".json")).sort().reverse();for(let s of t){let o=Fe.join(e,s);try{let n=L.readFileSync(o,"utf-8"),i=JSON.parse(n);if(this.isValidState(i)){k(I,`Successfully restored state from backup: ${s}`),i.version===1&&(i=un(i));let a=Object.keys(i.repoScores).length;k(I,`Restored state v${i.version}: ${a} repo scores`);let c=Xe();return xr(c,JSON.stringify(i,null,2),384),k(I,"Restored backup written to main state file"),i}}catch(n){T(I,`Backup ${s} is corrupted, trying next...`),k(I,`Backup ${s} parse failed`,n)}}return null}isValidState(e){if(!e||typeof e!="object")return!1;let t=e;return t.repoScores===void 0&&(t.repoScores={}),t.events===void 0&&(t.events=[]),typeof t.version=="number"&&typeof t.repoScores=="object"&&t.repoScores!==null&&Array.isArray(t.events)&&typeof t.config=="object"&&t.config!==null?t.version===1?Array.isArray(t.activePRs)&&Array.isArray(t.dormantPRs)&&Array.isArray(t.mergedPRs)&&Array.isArray(t.closedPRs):!0:!1}save(){if(this.state.lastRunAt=new Date().toISOString(),this.inMemoryOnly)return;let e=Xe(),t=e+".lock",s=St();$c(t);try{if(L.existsSync(e)){let o=new Date().toISOString().replace(/[:.]/g,"-"),n=Math.random().toString(36).slice(2,8).padEnd(6,"0"),i=Fe.join(s,`state-${o}-${n}.json`);L.copyFileSync(e,i),L.chmodSync(i,384),this.cleanupBackups()}xr(e,JSON.stringify(this.state,null,2),384),k(I,"State saved successfully")}finally{Gc(t)}}cleanupBackups(){let e=St();try{let t=L.readdirSync(e).filter(s=>s.startsWith("state-")).sort().reverse();for(let s of t.slice(10))try{L.unlinkSync(Fe.join(e,s))}catch(o){T(I,`Could not delete old backup ${s}:`,A(o))}}catch(t){T(I,"Could not clean up backups:",A(t))}}getState(){return this.state}setLastDigest(e){this.state.lastDigest=e,this.state.lastDigestAt=e.generatedAt}setMonthlyMergedCounts(e){this.state.monthlyMergedCounts=e}setMonthlyClosedCounts(e){this.state.monthlyClosedCounts=e}setMonthlyOpenedCounts(e){this.state.monthlyOpenedCounts=e}setDailyActivityCounts(e){this.state.dailyActivityCounts=e}setLocalRepoCache(e){this.state.localRepoCache=e}updateConfig(e){this.state.config={...this.state.config,...e}}appendEvent(e,t){let s={id:`evt_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,type:e,at:new Date().toISOString(),data:t};this.state.events.push(s),this.state.events.length>ln&&(this.state.events=this.state.events.slice(-ln))}getEventsByType(e){return this.state.events.filter(t=>t.type===e)}getEventsInRange(e,t=new Date){return this.state.events.filter(s=>{let o=new Date(s.at);return o>=e&&o<=t})}addIssue(e){if(this.state.activeIssues.find(s=>s.url===e.url)){k(I,`Issue ${e.url} already tracked`);return}this.state.activeIssues.push(e),k(I,`Added issue: ${e.repo}#${e.number}`)}addTrustedProject(e){this.state.config.trustedProjects.includes(e)||(this.state.config.trustedProjects.push(e),k(I,`Added trusted project: ${e}`))}static matchesExclusion(e,t,s){let o=e.toLowerCase();return!!(t.some(n=>n.toLowerCase()===o)||s?.some(n=>n.toLowerCase()===o.split("/")[0]))}isExcluded(e){let{excludeRepos:t,excludeOrgs:s}=this.state.config;return r.matchesExclusion(e,t,s)}cleanupExcludedData(e,t){let s=a=>r.matchesExclusion(a,e,t),o=this.state.config.trustedProjects.length;this.state.config.trustedProjects=this.state.config.trustedProjects.filter(a=>!s(a));let n=o-this.state.config.trustedProjects.length,i=0;for(let a of Object.keys(this.state.repoScores))s(a)&&(delete this.state.repoScores[a],i++);(n>0||i>0)&&k(I,`Removed ${n} trusted project(s) and ${i} repo score(s) for excluded repos/orgs`)}getStarredRepos(){return this.state.config.starredRepos||[]}setStarredRepos(e){this.state.config.starredRepos=e,this.state.config.starredReposLastFetched=new Date().toISOString(),k(I,`Updated starred repos: ${e.length} repositories`)}isStarredReposStale(){let e=this.state.config.starredReposLastFetched;if(!e)return!0;let t=1440*60*1e3,s=new Date(e);return new Date().getTime()-s.getTime()>t}shelvePR(e){return this.state.config.shelvedPRUrls||(this.state.config.shelvedPRUrls=[]),this.state.config.shelvedPRUrls.includes(e)?!1:(this.state.config.shelvedPRUrls.push(e),!0)}unshelvePR(e){if(!this.state.config.shelvedPRUrls)return!1;let t=this.state.config.shelvedPRUrls.indexOf(e);return t===-1?!1:(this.state.config.shelvedPRUrls.splice(t,1),!0)}isPRShelved(e){return this.state.config.shelvedPRUrls?.includes(e)??!1}dismissIssue(e,t){return this.state.config.dismissedIssues||(this.state.config.dismissedIssues={}),e in this.state.config.dismissedIssues?!1:(this.state.config.dismissedIssues[e]=t,!0)}undismissIssue(e){return!this.state.config.dismissedIssues||!(e in this.state.config.dismissedIssues)?!1:(delete this.state.config.dismissedIssues[e],!0)}getIssueDismissedAt(e){return this.state.config.dismissedIssues?.[e]}snoozePR(e,t,s){if(!Number.isFinite(s)||s<=0)throw new K(`Invalid snooze duration: ${s}. Must be a positive finite number.`);if(this.state.config.snoozedPRs||(this.state.config.snoozedPRs={}),e in this.state.config.snoozedPRs)return!1;let o=new Date,n=new Date(o.getTime()+s*24*60*60*1e3);return this.state.config.snoozedPRs[e]={reason:t,snoozedAt:o.toISOString(),expiresAt:n.toISOString()},!0}unsnoozePR(e){return!this.state.config.snoozedPRs||!(e in this.state.config.snoozedPRs)?!1:(delete this.state.config.snoozedPRs[e],!0)}isSnoozed(e){let t=this.getSnoozeInfo(e);if(!t)return!1;let s=new Date(t.expiresAt).getTime();return isNaN(s)?(T(I,`Invalid expiresAt for snoozed PR ${e}: "${t.expiresAt}". Treating as not snoozed.`),!1):s>Date.now()}getSnoozeInfo(e){return this.state.config.snoozedPRs?.[e]}expireSnoozes(){if(!this.state.config.snoozedPRs)return[];let e=[],t=Date.now();for(let[s,o]of Object.entries(this.state.config.snoozedPRs)){let n=new Date(o.expiresAt).getTime();(isNaN(n)||n<=t)&&e.push(s)}for(let s of e)delete this.state.config.snoozedPRs[s];return e}getRepoScore(e){return this.state.repoScores[e]}createDefaultRepoScore(e){return{repo:e,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}}}calculateScore(e){let t=5;if(e.mergedPRCount>0){let o=Math.min(Math.round(Math.log2(e.mergedPRCount+1)*2),5);t+=o}let s=Math.min(e.closedWithoutMergeCount,3);if(t-=s,e.lastMergedAt){let o=new Date(e.lastMergedAt);isNaN(o.getTime())?T(I,`Invalid lastMergedAt date for ${e.repo}: "${e.lastMergedAt}". Skipping recency bonus.`):Math.floor((Date.now()-o.getTime())/864e5)<=90&&(t+=1)}return e.signals.isResponsive&&(t+=1),e.signals.hasHostileComments&&(t-=2),Math.max(1,Math.min(10,t))}updateRepoScore(e,t){this.state.repoScores[e]||(this.state.repoScores[e]=this.createDefaultRepoScore(e));let s=this.state.repoScores[e];t.mergedPRCount!==void 0&&(s.mergedPRCount=t.mergedPRCount),t.closedWithoutMergeCount!==void 0&&(s.closedWithoutMergeCount=t.closedWithoutMergeCount),t.avgResponseDays!==void 0&&(s.avgResponseDays=t.avgResponseDays),t.lastMergedAt!==void 0&&(s.lastMergedAt=t.lastMergedAt),t.stargazersCount!==void 0&&(s.stargazersCount=t.stargazersCount),t.signals&&(s.signals={...s.signals,...t.signals}),s.score=this.calculateScore(s),s.lastEvaluatedAt=new Date().toISOString(),k(I,`Updated repo score for ${e}: ${s.score}/10`)}incrementMergedCount(e){let s=(this.state.repoScores[e]?.mergedPRCount??0)+1;this.updateRepoScore(e,{mergedPRCount:s,lastMergedAt:new Date().toISOString()}),k(I,`Incremented merged count for ${e}: ${s}`)}incrementClosedCount(e){let s=(this.state.repoScores[e]?.closedWithoutMergeCount??0)+1;this.updateRepoScore(e,{closedWithoutMergeCount:s}),k(I,`Incremented closed count for ${e}: ${s}`)}markRepoHostile(e){this.updateRepoScore(e,{signals:{hasHostileComments:!0}}),k(I,`Marked ${e} as hostile, score: ${this.state.repoScores[e].score}/10`)}getReposWithMergedPRs(){return Object.values(this.state.repoScores).filter(e=>e.mergedPRCount>0).sort((e,t)=>t.mergedPRCount-e.mergedPRCount).map(e=>e.repo)}getReposWithOpenPRs(){return Object.values(this.state.repoScores).filter(e=>e.mergedPRCount===0&&e.closedWithoutMergeCount===0).sort((e,t)=>t.score-e.score).map(e=>e.repo)}getHighScoringRepos(e){let t=e??this.state.config.minRepoScoreThreshold;return Object.values(this.state.repoScores).filter(s=>s.score>=t).sort((s,o)=>o.score-s.score).map(s=>s.repo)}getLowScoringRepos(e){let t=e??this.state.config.minRepoScoreThreshold;return Object.values(this.state.repoScores).filter(s=>s.score<=t).sort((s,o)=>s.score-o.score).map(s=>s.repo)}getStats(){let e=0,t=0,s=0;for(let[i,a]of Object.entries(this.state.repoScores))this.isExcluded(i)||(s++,e+=a.mergedPRCount,t+=a.closedWithoutMergeCount);let o=e+t,n=o>0?e/o*100:0;return{mergedPRs:e,closedPRs:t,activeIssues:0,trustedProjects:this.state.config.trustedProjects.filter(i=>!this.isExcluded(i)).length,mergeRate:n.toFixed(1)+"%",totalTracked:s,needsResponse:0}}},Dr=null});function nt(){return typeof navigator=="object"&&"userAgent"in navigator?navigator.userAgent:typeof process=="object"&&process.version!==void 0?`Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`:"<environment undetectable>"}var Nt=$(()=>{});function vs(r,e,t,s){if(typeof t!="function")throw new Error("method for before hook must be a function");return s||(s={}),Array.isArray(e)?e.reverse().reduce((o,n)=>vs.bind(null,r,n,o,s),t)():Promise.resolve().then(()=>r.registry[e]?r.registry[e].reduce((o,n)=>n.hook.bind(null,o,s),t)():t(s))}var pn=$(()=>{});function dn(r,e,t,s){let o=s;r.registry[t]||(r.registry[t]=[]),e==="before"&&(s=(n,i)=>Promise.resolve().then(o.bind(null,i)).then(n.bind(null,i))),e==="after"&&(s=(n,i)=>{let a;return Promise.resolve().then(n.bind(null,i)).then(c=>(a=c,o(a,i))).then(()=>a)}),e==="error"&&(s=(n,i)=>Promise.resolve().then(n.bind(null,i)).catch(a=>o(a,i))),r.registry[t].push({hook:s,orig:o})}var gn=$(()=>{});function mn(r,e,t){if(!r.registry[e])return;let s=r.registry[e].map(o=>o.orig).indexOf(t);s!==-1&&r.registry[e].splice(s,1)}var hn=$(()=>{});function yn(r,e,t){let s=bn(mn,null).apply(null,t?[e,t]:[e]);r.api={remove:s},r.remove=s,["before","error","after","wrap"].forEach(o=>{let n=t?[e,o,t]:[e,o];r[o]=r.api[o]=bn(dn,null).apply(null,n)})}function xc(){let r=Symbol("Singular"),e={registry:{}},t=vs.bind(null,e,r);return yn(t,e,r),t}function Dc(){let r={registry:{}},e=vs.bind(null,r);return yn(e,r),e}var fn,bn,vn,_n=$(()=>{pn();gn();hn();fn=Function.bind,bn=fn.bind(fn);vn={Singular:xc,Collection:Dc}});function Mc(r){return r?Object.keys(r).reduce((e,t)=>(e[t.toLowerCase()]=r[t],e),{}):{}}function Lc(r){if(typeof r!="object"||r===null||Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);if(e===null)return!0;let t=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&Function.prototype.call(t)===Function.prototype.call(r)}function En(r,e){let t=Object.assign({},r);return Object.keys(e).forEach(s=>{Lc(e[s])?s in r?t[s]=En(r[s],e[s]):Object.assign(t,{[s]:e[s]}):Object.assign(t,{[s]:e[s]})}),t}function wn(r){for(let e in r)r[e]===void 0&&delete r[e];return r}function Fr(r,e,t){if(typeof e=="string"){let[o,n]=e.split(" ");t=Object.assign(n?{method:o,url:n}:{url:o},t)}else t=Object.assign({},e);t.headers=Mc(t.headers),wn(t),wn(t.headers);let s=En(r||{},t);return t.url==="/graphql"&&(r&&r.mediaType.previews?.length&&(s.mediaType.previews=r.mediaType.previews.filter(o=>!s.mediaType.previews.includes(o)).concat(s.mediaType.previews)),s.mediaType.previews=(s.mediaType.previews||[]).map(o=>o.replace(/-preview/,""))),s}function jc(r,e){let t=/\?/.test(r)?"&":"?",s=Object.keys(e);return s.length===0?r:r+t+s.map(o=>o==="q"?"q="+e.q.split("+").map(encodeURIComponent).join("+"):`${o}=${encodeURIComponent(e[o])}`).join("&")}function Hc(r){return r.replace(/(?:^\W+)|(?:(?<!\W)\W+$)/g,"").split(/,/)}function qc(r){let e=r.match(Nc);return e?e.map(Hc).reduce((t,s)=>t.concat(s),[]):[]}function Rn(r,e){let t={__proto__:null};for(let s of Object.keys(r))e.indexOf(s)===-1&&(t[s]=r[s]);return t}function Tn(r){return r.split(/(%[0-9A-Fa-f]{2})/g).map(function(e){return/%[0-9A-Fa-f]/.test(e)||(e=encodeURI(e).replace(/%5B/g,"[").replace(/%5D/g,"]")),e}).join("")}function Ot(r){return encodeURIComponent(r).replace(/[!'()*]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function Ht(r,e,t){return e=r==="+"||r==="#"?Tn(e):Ot(e),t?Ot(t)+"="+e:e}function At(r){return r!=null}function Ir(r){return r===";"||r==="&"||r==="?"}function Bc(r,e,t,s){var o=r[t],n=[];if(At(o)&&o!=="")if(typeof o=="string"||typeof o=="number"||typeof o=="bigint"||typeof o=="boolean")o=o.toString(),s&&s!=="*"&&(o=o.substring(0,parseInt(s,10))),n.push(Ht(e,o,Ir(e)?t:""));else if(s==="*")Array.isArray(o)?o.filter(At).forEach(function(i){n.push(Ht(e,i,Ir(e)?t:""))}):Object.keys(o).forEach(function(i){At(o[i])&&n.push(Ht(e,o[i],i))});else{let i=[];Array.isArray(o)?o.filter(At).forEach(function(a){i.push(Ht(e,a))}):Object.keys(o).forEach(function(a){At(o[a])&&(i.push(Ot(a)),i.push(Ht(e,o[a].toString())))}),Ir(e)?n.push(Ot(t)+"="+i.join(",")):i.length!==0&&n.push(i.join(","))}else e===";"?At(o)&&n.push(Ot(t)):o===""&&(e==="&"||e==="?")?n.push(Ot(t)+"="):o===""&&n.push("");return n}function Vc(r){return{expand:zc.bind(null,r)}}function zc(r,e){var t=["+","#",".","/",";","?","&"];return r=r.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(s,o,n){if(o){let a="",c=[];if(t.indexOf(o.charAt(0))!==-1&&(a=o.charAt(0),o=o.substr(1)),o.split(/,/g).forEach(function(l){var u=/([^:\*]*)(?::(\d+)|(\*))?/.exec(l);c.push(Bc(e,a,u[1],u[2]||u[3]))}),a&&a!=="+"){var i=",";return a==="?"?i="&":a!=="#"&&(i=a),(c.length!==0?a:"")+c.join(i)}else return c.join(",")}else return Tn(n)}),r==="/"?r:r.replace(/\/$/,"")}function Cn(r){let e=r.method.toUpperCase(),t=(r.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),s=Object.assign({},r.headers),o,n=Rn(r,["method","baseUrl","url","headers","request","mediaType"]),i=qc(t);t=Vc(t).expand(n),/^http/.test(t)||(t=r.baseUrl+t);let a=Object.keys(r).filter(u=>i.includes(u)).concat("baseUrl"),c=Rn(n,a);if(!/application\/octet-stream/i.test(s.accept)&&(r.mediaType.format&&(s.accept=s.accept.split(/,/).map(u=>u.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${r.mediaType.format}`)).join(",")),t.endsWith("/graphql")&&r.mediaType.previews?.length)){let u=s.accept.match(/(?<![\w-])[\w-]+(?=-preview)/g)||[];s.accept=u.concat(r.mediaType.previews).map(d=>{let m=r.mediaType.format?`.${r.mediaType.format}`:"+json";return`application/vnd.github.${d}-preview${m}`}).join(",")}return["GET","HEAD"].includes(e)?t=jc(t,c):"data"in c?o=c.data:Object.keys(c).length&&(o=c),!s["content-type"]&&typeof o<"u"&&(s["content-type"]="application/json; charset=utf-8"),["PATCH","PUT"].includes(e)&&typeof o>"u"&&(o=""),Object.assign({method:e,url:t,headers:s},typeof o<"u"?{body:o}:null,r.request?{request:r.request}:null)}function Wc(r,e,t){return Cn(Fr(r,e,t))}function Sn(r,e){let t=Fr(r,e),s=Wc.bind(null,t);return Object.assign(s,{DEFAULTS:t,defaults:Sn.bind(null,t),merge:Fr.bind(null,t),parse:Cn})}var Ic,Fc,Uc,Nc,Pn,kn=$(()=>{Nt();Ic="0.0.0-development",Fc=`octokit-endpoint.js/${Ic} ${nt()}`,Uc={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":Fc},mediaType:{format:""}};Nc=/\{[^{}}]+\}/g;Pn=Sn(null,Uc)});var Gn=Je((Yp,qt)=>{"use strict";var Rs=function(){};Rs.prototype=Object.create(null);var _s=/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu,ws=/\\([\v\u0020-\u00ff])/gu,An=/^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u,dt={type:"",parameters:new Rs};Object.freeze(dt.parameters);Object.freeze(dt);function On(r){if(typeof r!="string")throw new TypeError("argument header is required and must be a string");let e=r.indexOf(";"),t=e!==-1?r.slice(0,e).trim():r.trim();if(An.test(t)===!1)throw new TypeError("invalid media type");let s={type:t.toLowerCase(),parameters:new Rs};if(e===-1)return s;let o,n,i;for(_s.lastIndex=e;n=_s.exec(r);){if(n.index!==e)throw new TypeError("invalid parameter format");e+=n[0].length,o=n[1].toLowerCase(),i=n[2],i[0]==='"'&&(i=i.slice(1,i.length-1),ws.test(i)&&(i=i.replace(ws,"$1"))),s.parameters[o]=i}if(e!==r.length)throw new TypeError("invalid parameter format");return s}function $n(r){if(typeof r!="string")return dt;let e=r.indexOf(";"),t=e!==-1?r.slice(0,e).trim():r.trim();if(An.test(t)===!1)return dt;let s={type:t.toLowerCase(),parameters:new Rs};if(e===-1)return s;let o,n,i;for(_s.lastIndex=e;n=_s.exec(r);){if(n.index!==e)return dt;e+=n[0].length,o=n[1].toLowerCase(),i=n[2],i[0]==='"'&&(i=i.slice(1,i.length-1),ws.test(i)&&(i=i.replace(ws,"$1"))),s.parameters[o]=i}return e!==r.length?dt:s}qt.exports.default={parse:On,safeParse:$n};qt.exports.parse=On;qt.exports.safeParse=$n;qt.exports.defaultContentType=dt});var Jc,In,Ur,xn,Kc,Qc,Yc,Fn,Xc,Zc,el,Un,Dn,tl,sl,Mn,Ln=$(()=>{Jc=/^-?\d+$/,In=/^-?\d+n+$/,Ur=JSON.stringify,xn=JSON.parse,Kc=/^-?\d+n$/,Qc=/([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,Yc=/([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,Fn=(r,e,t)=>"rawJSON"in JSON?Ur(r,(i,a)=>typeof a=="bigint"?JSON.rawJSON(a.toString()):typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t):r?Ur(r,(i,a)=>typeof a=="string"&&!!a.match(In)||typeof a=="bigint"?a.toString()+"n":typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t).replace(Qc,"$1$2$3").replace(Yc,"$1$2$3"):Ur(r,e,t),Xc=()=>JSON.parse("1",(r,e,t)=>!!t&&t.source==="1"),Zc=(r,e,t,s)=>typeof e=="string"&&e.match(Kc)?BigInt(e.slice(0,-1)):typeof e=="string"&&e.match(In)?e.slice(0,-1):typeof s!="function"?e:s(r,e,t),el=(r,e)=>JSON.parse(r,(t,s,o)=>{let n=typeof s=="number"&&(s>Number.MAX_SAFE_INTEGER||s<Number.MIN_SAFE_INTEGER),i=o&&Jc.test(o.source);return n&&i?BigInt(o.source):typeof e!="function"?s:e(t,s,o)}),Un=Number.MAX_SAFE_INTEGER.toString(),Dn=Un.length,tl=/"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,sl=/^"-?\d+n+"$/,Mn=(r,e)=>{if(!r)return xn(r,e);if(Xc())return el(r,e);let t=r.replace(tl,(s,o,n,i)=>{let a=s[0]==='"';if(a&&!!s.match(sl))return s.substring(0,s.length-1)+'n"';let l=n||i,u=o&&(o.length<Dn||o.length===Dn&&o<=Un);return a||l||u?s:'"'+s+'n"'});return xn(t,(s,o,n)=>Zc(s,o,n,e))}});var gt,jn=$(()=>{gt=class extends Error{name;status;request;response;constructor(e,t,s){super(e,{cause:s.cause}),this.name="HttpError",this.status=Number.parseInt(t),Number.isNaN(this.status)&&(this.status=0);"response"in s&&(this.response=s.response);let o=Object.assign({},s.request);s.request.headers.authorization&&(o.headers=Object.assign({},s.request.headers,{authorization:s.request.headers.authorization.replace(/(?<! ) .*$/," [REDACTED]")})),o.url=o.url.replace(/\bclient_secret=\w+/g,"client_secret=[REDACTED]").replace(/\baccess_token=\w+/g,"access_token=[REDACTED]"),this.request=o}}});function nl(r){if(typeof r!="object"||r===null||Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);if(e===null)return!0;let t=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&Function.prototype.call(t)===Function.prototype.call(r)}async function Hn(r){let e=r.request?.fetch||globalThis.fetch;if(!e)throw new Error("fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing");let t=r.request?.log||console,s=r.request?.parseSuccessResponseBody!==!1,o=nl(r.body)||Array.isArray(r.body)?Fn(r.body):r.body,n=Object.fromEntries(Object.entries(r.headers).map(([d,m])=>[d,String(m)])),i;try{i=await e(r.url,{method:r.method,body:o,redirect:r.request?.redirect,headers:n,signal:r.request?.signal,...r.body&&{duplex:"half"}})}catch(d){let m="Unknown Error";if(d instanceof Error){if(d.name==="AbortError")throw d.status=500,d;m=d.message,d.name==="TypeError"&&"cause"in d&&(d.cause instanceof Error?m=d.cause.message:typeof d.cause=="string"&&(m=d.cause))}let w=new gt(m,500,{request:r});throw w.cause=d,w}let a=i.status,c=i.url,l={};for(let[d,m]of i.headers)l[d]=m;let u={url:c,status:a,headers:l,data:""};if("deprecation"in l){let d=l.link&&l.link.match(/<([^<>]+)>; rel="deprecation"/),m=d&&d.pop();t.warn(`[@octokit/request] "${r.method} ${r.url}" is deprecated. It is scheduled to be removed on ${l.sunset}${m?`. See ${m}`:""}`)}if(a===204||a===205)return u;if(r.method==="HEAD"){if(a<400)return u;throw new gt(i.statusText,a,{response:u,request:r})}if(a===304)throw u.data=await Mr(i),new gt("Not modified",a,{response:u,request:r});if(a>=400)throw u.data=await Mr(i),new gt(al(u.data),a,{response:u,request:r});return u.data=s?await Mr(i):i.body,u}async function Mr(r){let e=r.headers.get("content-type");if(!e)return r.text().catch(Nn);let t=(0,qn.safeParse)(e);if(il(t)){let s="";try{return s=await r.text(),Mn(s)}catch{return s}}else return t.type.startsWith("text/")||t.parameters.charset?.toLowerCase()==="utf-8"?r.text().catch(Nn):r.arrayBuffer().catch(()=>new ArrayBuffer(0))}function il(r){return r.type==="application/json"||r.type==="application/scim+json"}function al(r){if(typeof r=="string")return r;if(r instanceof ArrayBuffer)return"Unknown error";if("message"in r){let e="documentation_url"in r?` - ${r.documentation_url}`:"";return Array.isArray(r.errors)?`${r.message}: ${r.errors.map(t=>JSON.stringify(t)).join(", ")}${e}`:`${r.message}${e}`}return`Unknown error: ${JSON.stringify(r)}`}function Lr(r,e){let t=r.defaults(e);return Object.assign(function(o,n){let i=t.merge(o,n);if(!i.request||!i.request.hook)return Hn(t.parse(i));let a=(c,l)=>Hn(t.parse(t.merge(c,l)));return Object.assign(a,{endpoint:t,defaults:Lr.bind(null,t)}),i.request.hook(a,i)},{endpoint:t,defaults:Lr.bind(null,t)})}var qn,rl,ol,Nn,Bt,jr=$(()=>{kn();Nt();qn=J(Gn(),1);Ln();jn();rl="10.0.8",ol={headers:{"user-agent":`octokit-request.js/${rl} ${nt()}`}};Nn=()=>"";Bt=Lr(Pn,ol);});function ll(r){return`Request failed due to following response errors:
33
+ The gh CLI is recommended - install from https://cli.github.com`);return r}async function $r(){if(Ae)return Ae;if(gs)return null;if(gs=!0,process.env.GITHUB_TOKEN)return Ae=process.env.GITHUB_TOKEN,Ae;try{let r=await new Promise((e,t)=>{(0,ms.execFile)("gh",["auth","token"],{encoding:"utf-8",timeout:2e3},(s,o)=>{s?t(s):e(o.trim())})});if(r&&r.length>0)return Ae=r,S(ds,"Using GitHub token from gh CLI (async)"),Ae}catch(r){S(ds,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}var qe,Qe,nn,ms,ds,Ae,gs,Cc,Pc,Oe=G(()=>{"use strict";qe=Q(require("fs"),1),Qe=Q(require("path"),1),nn=Q(require("os"),1),ms=require("child_process");ie();ve();ds="utils",Ae=null,gs=!1;Cc=/^[a-zA-Z0-9_-]+$/,Pc=/^[a-zA-Z0-9_.-]+$/});function Ac(r){try{let e=JSON.parse(M.readFileSync(r,"utf-8"));return Date.now()-e.timestamp>kc}catch(e){return S(I,"Lock file unreadable or invalid JSON, treating as stale",e),!0}}function Oc(r){let e=JSON.stringify({pid:process.pid,timestamp:Date.now()});try{M.writeFileSync(r,e,{flag:"wx"});return}catch(t){S(I,"Lock file already exists, checking staleness",t)}if(!Ac(r))throw new Error("State file is locked by another process");try{M.unlinkSync(r)}catch(t){S(I,"Stale lock already removed by another process",t)}try{M.writeFileSync(r,e,{flag:"wx"})}catch(t){throw S(I,"Lock re-acquire failed (race condition)",t),new Error("State file is locked by another process",{cause:t})}}function Gc(r){try{JSON.parse(M.readFileSync(r,"utf-8")).pid===process.pid&&M.unlinkSync(r)}catch(e){S(I,"Lock file already removed or unreadable during release",e)}}function xr(r,e,t){let s=r+".tmp";M.writeFileSync(s,e,{mode:t??384}),M.renameSync(s,r),t!==void 0&&M.chmodSync(r,t)}function cn(r){S(I,"Migrating state from v1 to v2 (fresh GitHub fetching)...");let e=r.mergedPRs||[],t=r.closedPRs||[],s={...r.repoScores||{}};for(let n of e)s[n.repo]||(s[n.repo]={repo:n.repo,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}});for(let n of t)s[n.repo]||(s[n.repo]={repo:n.repo,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}});let o={version:2,activeIssues:r.activeIssues||[],repoScores:s,config:r.config,events:r.events||[],lastRunAt:new Date().toISOString()};return S(I,`Migration complete. Preserved ${Object.keys(s).length} repo scores.`),o}function L(){return Dr||(Dr=new hs),Dr}var M,Fe,I,Sc,an,kc,Ut,lt,hs,Dr,Mt=G(()=>{"use strict";M=Q(require("fs"),1),Fe=Q(require("path"),1);ps();Oe();ie();ve();I="state",Sc=2,an=1e3,kc=3e4,Ut=Fe.join(process.cwd(),"data","state.json"),lt=Fe.join(process.cwd(),"data","backups");hs=class r{state;inMemoryOnly;constructor(e=!1){this.inMemoryOnly=e,this.state=e?this.createFreshState():this.load()}createFreshState(){return{version:Sc,activeIssues:[],repoScores:{},config:{...us.config,setupComplete:!1,languages:[...us.config.languages],labels:[...us.config.labels],excludeRepos:[],trustedProjects:[],shelvedPRUrls:[],dismissedIssues:{},snoozedPRs:{}},events:[],lastRunAt:new Date().toISOString()}}isSetupComplete(){return this.state.config.setupComplete===!0}markSetupComplete(){this.state.config.setupComplete=!0,this.state.config.setupCompletedAt=new Date().toISOString()}migrateFromLegacyLocation(){let e=at();if(M.existsSync(e)||!M.existsSync(Ut))return!1;S(I,"Migrating state from ./data/ to ~/.oss-autopilot/...");try{if(De(),M.copyFileSync(Ut,e),S(I,`Migrated state file to ${e}`),M.existsSync(lt)){let s=Tt(),o=M.readdirSync(lt).filter(n=>n.startsWith("state-")&&n.endsWith(".json"));for(let n of o){let i=Fe.join(lt,n),a=Fe.join(s,n);M.copyFileSync(i,a)}S(I,`Migrated ${o.length} backup files`)}if(M.unlinkSync(Ut),S(I,"Removed legacy state file"),M.existsSync(lt)){let s=M.readdirSync(lt);for(let o of s)M.unlinkSync(Fe.join(lt,o));M.rmdirSync(lt)}let t=Fe.dirname(Ut);return M.existsSync(t)&&M.readdirSync(t).length===0&&(M.rmdirSync(t),S(I,"Removed empty legacy data directory")),S(I,"Migration complete!"),!0}catch(t){T(I,`Failed to migrate state: ${A(t)}`);let s=at();if(M.existsSync(s)&&M.existsSync(Ut))try{M.unlinkSync(s),S(I,"Cleaned up partial migration - removed incomplete new state file")}catch(o){T(I,"Could not clean up partial migration file"),S(I,"Partial migration cleanup failed",o)}return T(I,"To resolve this issue:"),T(I," 1. Ensure you have write permissions to ~/.oss-autopilot/"),T(I," 2. Check available disk space"),T(I," 3. Manually copy ./data/state.json to ~/.oss-autopilot/state.json"),T(I," 4. Or delete ./data/state.json to start fresh"),!1}}load(){this.migrateFromLegacyLocation();let e=at();try{if(M.existsSync(e)){let t=M.readFileSync(e,"utf-8"),s=JSON.parse(t);if(!this.isValidState(s)){T(I,"Invalid state file structure, attempting to restore from backup...");let n=this.tryRestoreFromBackup();return n||(T(I,"No valid backup found, starting fresh"),this.createFreshState())}s.version===1&&(s=cn(s),xr(e,JSON.stringify(s,null,2),384),S(I,"Migrated state saved"));let o=Object.keys(s.repoScores).length;return S(I,`Loaded state v${s.version}: ${o} repo scores tracked`),s}}catch(t){T(I,"Error loading state:",t),T(I,"Attempting to restore from backup...");let s=this.tryRestoreFromBackup();if(s)return s;T(I,"No valid backup found, starting fresh")}return S(I,"No existing state found, initializing..."),this.createFreshState()}tryRestoreFromBackup(){let e=Tt();if(!M.existsSync(e))return null;let t=M.readdirSync(e).filter(s=>s.startsWith("state-")&&s.endsWith(".json")).sort().reverse();for(let s of t){let o=Fe.join(e,s);try{let n=M.readFileSync(o,"utf-8"),i=JSON.parse(n);if(this.isValidState(i)){S(I,`Successfully restored state from backup: ${s}`),i.version===1&&(i=cn(i));let a=Object.keys(i.repoScores).length;S(I,`Restored state v${i.version}: ${a} repo scores`);let c=at();return xr(c,JSON.stringify(i,null,2),384),S(I,"Restored backup written to main state file"),i}}catch(n){T(I,`Backup ${s} is corrupted, trying next...`),S(I,`Backup ${s} parse failed`,n)}}return null}isValidState(e){if(!e||typeof e!="object")return!1;let t=e;return t.repoScores===void 0&&(t.repoScores={}),t.events===void 0&&(t.events=[]),typeof t.version=="number"&&typeof t.repoScores=="object"&&t.repoScores!==null&&Array.isArray(t.events)&&typeof t.config=="object"&&t.config!==null?t.version===1?Array.isArray(t.activePRs)&&Array.isArray(t.dormantPRs)&&Array.isArray(t.mergedPRs)&&Array.isArray(t.closedPRs):!0:!1}save(){if(this.state.lastRunAt=new Date().toISOString(),this.inMemoryOnly)return;let e=at(),t=e+".lock",s=Tt();Oc(t);try{if(M.existsSync(e)){let o=new Date().toISOString().replace(/[:.]/g,"-"),n=Math.random().toString(36).slice(2,8).padEnd(6,"0"),i=Fe.join(s,`state-${o}-${n}.json`);M.copyFileSync(e,i),M.chmodSync(i,384),this.cleanupBackups()}xr(e,JSON.stringify(this.state,null,2),384),S(I,"State saved successfully")}finally{Gc(t)}}cleanupBackups(){let e=Tt();try{let t=M.readdirSync(e).filter(s=>s.startsWith("state-")).sort().reverse();for(let s of t.slice(10))try{M.unlinkSync(Fe.join(e,s))}catch(o){T(I,`Could not delete old backup ${s}:`,A(o))}}catch(t){T(I,"Could not clean up backups:",A(t))}}getState(){return this.state}setLastDigest(e){this.state.lastDigest=e,this.state.lastDigestAt=e.generatedAt}setMonthlyMergedCounts(e){this.state.monthlyMergedCounts=e}setMonthlyClosedCounts(e){this.state.monthlyClosedCounts=e}setMonthlyOpenedCounts(e){this.state.monthlyOpenedCounts=e}setDailyActivityCounts(e){this.state.dailyActivityCounts=e}setLocalRepoCache(e){this.state.localRepoCache=e}updateConfig(e){this.state.config={...this.state.config,...e}}appendEvent(e,t){let s={id:`evt_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,type:e,at:new Date().toISOString(),data:t};this.state.events.push(s),this.state.events.length>an&&(this.state.events=this.state.events.slice(-an))}getEventsByType(e){return this.state.events.filter(t=>t.type===e)}getEventsInRange(e,t=new Date){return this.state.events.filter(s=>{let o=new Date(s.at);return o>=e&&o<=t})}addIssue(e){if(this.state.activeIssues.find(s=>s.url===e.url)){S(I,`Issue ${e.url} already tracked`);return}this.state.activeIssues.push(e),S(I,`Added issue: ${e.repo}#${e.number}`)}addTrustedProject(e){this.state.config.trustedProjects.includes(e)||(this.state.config.trustedProjects.push(e),S(I,`Added trusted project: ${e}`))}static matchesExclusion(e,t,s){let o=e.toLowerCase();return!!(t.some(n=>n.toLowerCase()===o)||s?.some(n=>n.toLowerCase()===o.split("/")[0]))}isExcluded(e){let{excludeRepos:t,excludeOrgs:s}=this.state.config;return r.matchesExclusion(e,t,s)}cleanupExcludedData(e,t){let s=a=>r.matchesExclusion(a,e,t),o=this.state.config.trustedProjects.length;this.state.config.trustedProjects=this.state.config.trustedProjects.filter(a=>!s(a));let n=o-this.state.config.trustedProjects.length,i=0;for(let a of Object.keys(this.state.repoScores))s(a)&&(delete this.state.repoScores[a],i++);(n>0||i>0)&&S(I,`Removed ${n} trusted project(s) and ${i} repo score(s) for excluded repos/orgs`)}getStarredRepos(){return this.state.config.starredRepos||[]}setStarredRepos(e){this.state.config.starredRepos=e,this.state.config.starredReposLastFetched=new Date().toISOString(),S(I,`Updated starred repos: ${e.length} repositories`)}isStarredReposStale(){let e=this.state.config.starredReposLastFetched;if(!e)return!0;let t=1440*60*1e3,s=new Date(e);return new Date().getTime()-s.getTime()>t}shelvePR(e){return this.state.config.shelvedPRUrls||(this.state.config.shelvedPRUrls=[]),this.state.config.shelvedPRUrls.includes(e)?!1:(this.state.config.shelvedPRUrls.push(e),!0)}unshelvePR(e){if(!this.state.config.shelvedPRUrls)return!1;let t=this.state.config.shelvedPRUrls.indexOf(e);return t===-1?!1:(this.state.config.shelvedPRUrls.splice(t,1),!0)}isPRShelved(e){return this.state.config.shelvedPRUrls?.includes(e)??!1}dismissIssue(e,t){return this.state.config.dismissedIssues||(this.state.config.dismissedIssues={}),e in this.state.config.dismissedIssues?!1:(this.state.config.dismissedIssues[e]=t,!0)}undismissIssue(e){return!this.state.config.dismissedIssues||!(e in this.state.config.dismissedIssues)?!1:(delete this.state.config.dismissedIssues[e],!0)}getIssueDismissedAt(e){return this.state.config.dismissedIssues?.[e]}snoozePR(e,t,s){if(!Number.isFinite(s)||s<=0)throw new W(`Invalid snooze duration: ${s}. Must be a positive finite number.`);if(this.state.config.snoozedPRs||(this.state.config.snoozedPRs={}),e in this.state.config.snoozedPRs)return!1;let o=new Date,n=new Date(o.getTime()+s*24*60*60*1e3);return this.state.config.snoozedPRs[e]={reason:t,snoozedAt:o.toISOString(),expiresAt:n.toISOString()},!0}unsnoozePR(e){return!this.state.config.snoozedPRs||!(e in this.state.config.snoozedPRs)?!1:(delete this.state.config.snoozedPRs[e],!0)}isSnoozed(e){let t=this.getSnoozeInfo(e);if(!t)return!1;let s=new Date(t.expiresAt).getTime();return isNaN(s)?(T(I,`Invalid expiresAt for snoozed PR ${e}: "${t.expiresAt}". Treating as not snoozed.`),!1):s>Date.now()}getSnoozeInfo(e){return this.state.config.snoozedPRs?.[e]}expireSnoozes(){if(!this.state.config.snoozedPRs)return[];let e=[],t=Date.now();for(let[s,o]of Object.entries(this.state.config.snoozedPRs)){let n=new Date(o.expiresAt).getTime();(isNaN(n)||n<=t)&&e.push(s)}for(let s of e)delete this.state.config.snoozedPRs[s];return e}getRepoScore(e){return this.state.repoScores[e]}createDefaultRepoScore(e){return{repo:e,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}}}calculateScore(e){let t=5;if(e.mergedPRCount>0){let o=Math.min(Math.round(Math.log2(e.mergedPRCount+1)*2),5);t+=o}let s=Math.min(e.closedWithoutMergeCount,3);if(t-=s,e.lastMergedAt){let o=new Date(e.lastMergedAt);isNaN(o.getTime())?T(I,`Invalid lastMergedAt date for ${e.repo}: "${e.lastMergedAt}". Skipping recency bonus.`):Math.floor((Date.now()-o.getTime())/864e5)<=90&&(t+=1)}return e.signals.isResponsive&&(t+=1),e.signals.hasHostileComments&&(t-=2),Math.max(1,Math.min(10,t))}updateRepoScore(e,t){this.state.repoScores[e]||(this.state.repoScores[e]=this.createDefaultRepoScore(e));let s=this.state.repoScores[e];t.mergedPRCount!==void 0&&(s.mergedPRCount=t.mergedPRCount),t.closedWithoutMergeCount!==void 0&&(s.closedWithoutMergeCount=t.closedWithoutMergeCount),t.avgResponseDays!==void 0&&(s.avgResponseDays=t.avgResponseDays),t.lastMergedAt!==void 0&&(s.lastMergedAt=t.lastMergedAt),t.stargazersCount!==void 0&&(s.stargazersCount=t.stargazersCount),t.signals&&(s.signals={...s.signals,...t.signals}),s.score=this.calculateScore(s),s.lastEvaluatedAt=new Date().toISOString(),S(I,`Updated repo score for ${e}: ${s.score}/10`)}incrementMergedCount(e){let s=(this.state.repoScores[e]?.mergedPRCount??0)+1;this.updateRepoScore(e,{mergedPRCount:s,lastMergedAt:new Date().toISOString()}),S(I,`Incremented merged count for ${e}: ${s}`)}incrementClosedCount(e){let s=(this.state.repoScores[e]?.closedWithoutMergeCount??0)+1;this.updateRepoScore(e,{closedWithoutMergeCount:s}),S(I,`Incremented closed count for ${e}: ${s}`)}markRepoHostile(e){this.updateRepoScore(e,{signals:{hasHostileComments:!0}}),S(I,`Marked ${e} as hostile, score: ${this.state.repoScores[e].score}/10`)}getReposWithMergedPRs(){return Object.values(this.state.repoScores).filter(e=>e.mergedPRCount>0).sort((e,t)=>t.mergedPRCount-e.mergedPRCount).map(e=>e.repo)}getReposWithOpenPRs(){return Object.values(this.state.repoScores).filter(e=>e.mergedPRCount===0&&e.closedWithoutMergeCount===0).sort((e,t)=>t.score-e.score).map(e=>e.repo)}getHighScoringRepos(e){let t=e??this.state.config.minRepoScoreThreshold;return Object.values(this.state.repoScores).filter(s=>s.score>=t).sort((s,o)=>o.score-s.score).map(s=>s.repo)}getLowScoringRepos(e){let t=e??this.state.config.minRepoScoreThreshold;return Object.values(this.state.repoScores).filter(s=>s.score<=t).sort((s,o)=>s.score-o.score).map(s=>s.repo)}getStats(){let e=0,t=0,s=0;for(let[i,a]of Object.entries(this.state.repoScores))this.isExcluded(i)||(s++,e+=a.mergedPRCount,t+=a.closedWithoutMergeCount);let o=e+t,n=o>0?e/o*100:0;return{mergedPRs:e,closedPRs:t,activeIssues:0,trustedProjects:this.state.config.trustedProjects.filter(i=>!this.isExcluded(i)).length,mergeRate:n.toFixed(1)+"%",totalTracked:s,needsResponse:0}}},Dr=null});function rt(){return typeof navigator=="object"&&"userAgent"in navigator?navigator.userAgent:typeof process=="object"&&process.version!==void 0?`Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`:"<environment undetectable>"}var Lt=G(()=>{});function fs(r,e,t,s){if(typeof t!="function")throw new Error("method for before hook must be a function");return s||(s={}),Array.isArray(e)?e.reverse().reduce((o,n)=>fs.bind(null,r,n,o,s),t)():Promise.resolve().then(()=>r.registry[e]?r.registry[e].reduce((o,n)=>n.hook.bind(null,o,s),t)():t(s))}var ln=G(()=>{});function un(r,e,t,s){let o=s;r.registry[t]||(r.registry[t]=[]),e==="before"&&(s=(n,i)=>Promise.resolve().then(o.bind(null,i)).then(n.bind(null,i))),e==="after"&&(s=(n,i)=>{let a;return Promise.resolve().then(n.bind(null,i)).then(c=>(a=c,o(a,i))).then(()=>a)}),e==="error"&&(s=(n,i)=>Promise.resolve().then(n.bind(null,i)).catch(a=>o(a,i))),r.registry[t].push({hook:s,orig:o})}var pn=G(()=>{});function dn(r,e,t){if(!r.registry[e])return;let s=r.registry[e].map(o=>o.orig).indexOf(t);s!==-1&&r.registry[e].splice(s,1)}var gn=G(()=>{});function fn(r,e,t){let s=hn(dn,null).apply(null,t?[e,t]:[e]);r.api={remove:s},r.remove=s,["before","error","after","wrap"].forEach(o=>{let n=t?[e,o,t]:[e,o];r[o]=r.api[o]=hn(un,null).apply(null,n)})}function $c(){let r=Symbol("Singular"),e={registry:{}},t=fs.bind(null,e,r);return fn(t,e,r),t}function xc(){let r={registry:{}},e=fs.bind(null,r);return fn(e,r),e}var mn,hn,bn,yn=G(()=>{ln();pn();gn();mn=Function.bind,hn=mn.bind(mn);bn={Singular:$c,Collection:xc}});function Uc(r){return r?Object.keys(r).reduce((e,t)=>(e[t.toLowerCase()]=r[t],e),{}):{}}function Mc(r){if(typeof r!="object"||r===null||Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);if(e===null)return!0;let t=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&Function.prototype.call(t)===Function.prototype.call(r)}function wn(r,e){let t=Object.assign({},r);return Object.keys(e).forEach(s=>{Mc(e[s])?s in r?t[s]=wn(r[s],e[s]):Object.assign(t,{[s]:e[s]}):Object.assign(t,{[s]:e[s]})}),t}function vn(r){for(let e in r)r[e]===void 0&&delete r[e];return r}function Fr(r,e,t){if(typeof e=="string"){let[o,n]=e.split(" ");t=Object.assign(n?{method:o,url:n}:{url:o},t)}else t=Object.assign({},e);t.headers=Uc(t.headers),vn(t),vn(t.headers);let s=wn(r||{},t);return t.url==="/graphql"&&(r&&r.mediaType.previews?.length&&(s.mediaType.previews=r.mediaType.previews.filter(o=>!s.mediaType.previews.includes(o)).concat(s.mediaType.previews)),s.mediaType.previews=(s.mediaType.previews||[]).map(o=>o.replace(/-preview/,""))),s}function Lc(r,e){let t=/\?/.test(r)?"&":"?",s=Object.keys(e);return s.length===0?r:r+t+s.map(o=>o==="q"?"q="+e.q.split("+").map(encodeURIComponent).join("+"):`${o}=${encodeURIComponent(e[o])}`).join("&")}function Nc(r){return r.replace(/(?:^\W+)|(?:(?<!\W)\W+$)/g,"").split(/,/)}function Hc(r){let e=r.match(jc);return e?e.map(Nc).reduce((t,s)=>t.concat(s),[]):[]}function _n(r,e){let t={__proto__:null};for(let s of Object.keys(r))e.indexOf(s)===-1&&(t[s]=r[s]);return t}function Rn(r){return r.split(/(%[0-9A-Fa-f]{2})/g).map(function(e){return/%[0-9A-Fa-f]/.test(e)||(e=encodeURI(e).replace(/%5B/g,"[").replace(/%5D/g,"]")),e}).join("")}function kt(r){return encodeURIComponent(r).replace(/[!'()*]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function jt(r,e,t){return e=r==="+"||r==="#"?Rn(e):kt(e),t?kt(t)+"="+e:e}function St(r){return r!=null}function Ir(r){return r===";"||r==="&"||r==="?"}function qc(r,e,t,s){var o=r[t],n=[];if(St(o)&&o!=="")if(typeof o=="string"||typeof o=="number"||typeof o=="bigint"||typeof o=="boolean")o=o.toString(),s&&s!=="*"&&(o=o.substring(0,parseInt(s,10))),n.push(jt(e,o,Ir(e)?t:""));else if(s==="*")Array.isArray(o)?o.filter(St).forEach(function(i){n.push(jt(e,i,Ir(e)?t:""))}):Object.keys(o).forEach(function(i){St(o[i])&&n.push(jt(e,o[i],i))});else{let i=[];Array.isArray(o)?o.filter(St).forEach(function(a){i.push(jt(e,a))}):Object.keys(o).forEach(function(a){St(o[a])&&(i.push(kt(a)),i.push(jt(e,o[a].toString())))}),Ir(e)?n.push(kt(t)+"="+i.join(",")):i.length!==0&&n.push(i.join(","))}else e===";"?St(o)&&n.push(kt(t)):o===""&&(e==="&"||e==="?")?n.push(kt(t)+"="):o===""&&n.push("");return n}function Bc(r){return{expand:Vc.bind(null,r)}}function Vc(r,e){var t=["+","#",".","/",";","?","&"];return r=r.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(s,o,n){if(o){let a="",c=[];if(t.indexOf(o.charAt(0))!==-1&&(a=o.charAt(0),o=o.substr(1)),o.split(/,/g).forEach(function(l){var p=/([^:\*]*)(?::(\d+)|(\*))?/.exec(l);c.push(qc(e,a,p[1],p[2]||p[3]))}),a&&a!=="+"){var i=",";return a==="?"?i="&":a!=="#"&&(i=a),(c.length!==0?a:"")+c.join(i)}else return c.join(",")}else return Rn(n)}),r==="/"?r:r.replace(/\/$/,"")}function En(r){let e=r.method.toUpperCase(),t=(r.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),s=Object.assign({},r.headers),o,n=_n(r,["method","baseUrl","url","headers","request","mediaType"]),i=Hc(t);t=Bc(t).expand(n),/^http/.test(t)||(t=r.baseUrl+t);let a=Object.keys(r).filter(p=>i.includes(p)).concat("baseUrl"),c=_n(n,a);if(!/application\/octet-stream/i.test(s.accept)&&(r.mediaType.format&&(s.accept=s.accept.split(/,/).map(p=>p.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${r.mediaType.format}`)).join(",")),t.endsWith("/graphql")&&r.mediaType.previews?.length)){let p=s.accept.match(/(?<![\w-])[\w-]+(?=-preview)/g)||[];s.accept=p.concat(r.mediaType.previews).map(d=>{let m=r.mediaType.format?`.${r.mediaType.format}`:"+json";return`application/vnd.github.${d}-preview${m}`}).join(",")}return["GET","HEAD"].includes(e)?t=Lc(t,c):"data"in c?o=c.data:Object.keys(c).length&&(o=c),!s["content-type"]&&typeof o<"u"&&(s["content-type"]="application/json; charset=utf-8"),["PATCH","PUT"].includes(e)&&typeof o>"u"&&(o=""),Object.assign({method:e,url:t,headers:s},typeof o<"u"?{body:o}:null,r.request?{request:r.request}:null)}function zc(r,e,t){return En(Fr(r,e,t))}function Tn(r,e){let t=Fr(r,e),s=zc.bind(null,t);return Object.assign(s,{DEFAULTS:t,defaults:Tn.bind(null,t),merge:Fr.bind(null,t),parse:En})}var Dc,Ic,Fc,jc,Cn,Pn=G(()=>{Lt();Dc="0.0.0-development",Ic=`octokit-endpoint.js/${Dc} ${rt()}`,Fc={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":Ic},mediaType:{format:""}};jc=/\{[^{}}]+\}/g;Cn=Tn(null,Fc)});var On=We((Kp,Nt)=>{"use strict";var vs=function(){};vs.prototype=Object.create(null);var bs=/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu,ys=/\\([\v\u0020-\u00ff])/gu,Sn=/^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u,ut={type:"",parameters:new vs};Object.freeze(ut.parameters);Object.freeze(ut);function kn(r){if(typeof r!="string")throw new TypeError("argument header is required and must be a string");let e=r.indexOf(";"),t=e!==-1?r.slice(0,e).trim():r.trim();if(Sn.test(t)===!1)throw new TypeError("invalid media type");let s={type:t.toLowerCase(),parameters:new vs};if(e===-1)return s;let o,n,i;for(bs.lastIndex=e;n=bs.exec(r);){if(n.index!==e)throw new TypeError("invalid parameter format");e+=n[0].length,o=n[1].toLowerCase(),i=n[2],i[0]==='"'&&(i=i.slice(1,i.length-1),ys.test(i)&&(i=i.replace(ys,"$1"))),s.parameters[o]=i}if(e!==r.length)throw new TypeError("invalid parameter format");return s}function An(r){if(typeof r!="string")return ut;let e=r.indexOf(";"),t=e!==-1?r.slice(0,e).trim():r.trim();if(Sn.test(t)===!1)return ut;let s={type:t.toLowerCase(),parameters:new vs};if(e===-1)return s;let o,n,i;for(bs.lastIndex=e;n=bs.exec(r);){if(n.index!==e)return ut;e+=n[0].length,o=n[1].toLowerCase(),i=n[2],i[0]==='"'&&(i=i.slice(1,i.length-1),ys.test(i)&&(i=i.replace(ys,"$1"))),s.parameters[o]=i}return e!==r.length?ut:s}Nt.exports.default={parse:kn,safeParse:An};Nt.exports.parse=kn;Nt.exports.safeParse=An;Nt.exports.defaultContentType=ut});var Wc,xn,Ur,Gn,Jc,Kc,Qc,Dn,Yc,Xc,Zc,In,$n,el,tl,Fn,Un=G(()=>{Wc=/^-?\d+$/,xn=/^-?\d+n+$/,Ur=JSON.stringify,Gn=JSON.parse,Jc=/^-?\d+n$/,Kc=/([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,Qc=/([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,Dn=(r,e,t)=>"rawJSON"in JSON?Ur(r,(i,a)=>typeof a=="bigint"?JSON.rawJSON(a.toString()):typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t):r?Ur(r,(i,a)=>typeof a=="string"&&!!a.match(xn)||typeof a=="bigint"?a.toString()+"n":typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t).replace(Kc,"$1$2$3").replace(Qc,"$1$2$3"):Ur(r,e,t),Yc=()=>JSON.parse("1",(r,e,t)=>!!t&&t.source==="1"),Xc=(r,e,t,s)=>typeof e=="string"&&e.match(Jc)?BigInt(e.slice(0,-1)):typeof e=="string"&&e.match(xn)?e.slice(0,-1):typeof s!="function"?e:s(r,e,t),Zc=(r,e)=>JSON.parse(r,(t,s,o)=>{let n=typeof s=="number"&&(s>Number.MAX_SAFE_INTEGER||s<Number.MIN_SAFE_INTEGER),i=o&&Wc.test(o.source);return n&&i?BigInt(o.source):typeof e!="function"?s:e(t,s,o)}),In=Number.MAX_SAFE_INTEGER.toString(),$n=In.length,el=/"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,tl=/^"-?\d+n+"$/,Fn=(r,e)=>{if(!r)return Gn(r,e);if(Yc())return Zc(r,e);let t=r.replace(el,(s,o,n,i)=>{let a=s[0]==='"';if(a&&!!s.match(tl))return s.substring(0,s.length-1)+'n"';let l=n||i,p=o&&(o.length<$n||o.length===$n&&o<=In);return a||l||p?s:'"'+s+'n"'});return Gn(t,(s,o,n)=>Xc(s,o,n,e))}});var pt,Mn=G(()=>{pt=class extends Error{name;status;request;response;constructor(e,t,s){super(e,{cause:s.cause}),this.name="HttpError",this.status=Number.parseInt(t),Number.isNaN(this.status)&&(this.status=0);"response"in s&&(this.response=s.response);let o=Object.assign({},s.request);s.request.headers.authorization&&(o.headers=Object.assign({},s.request.headers,{authorization:s.request.headers.authorization.replace(/(?<! ) .*$/," [REDACTED]")})),o.url=o.url.replace(/\bclient_secret=\w+/g,"client_secret=[REDACTED]").replace(/\baccess_token=\w+/g,"access_token=[REDACTED]"),this.request=o}}});function ol(r){if(typeof r!="object"||r===null||Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);if(e===null)return!0;let t=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&Function.prototype.call(t)===Function.prototype.call(r)}async function jn(r){let e=r.request?.fetch||globalThis.fetch;if(!e)throw new Error("fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing");let t=r.request?.log||console,s=r.request?.parseSuccessResponseBody!==!1,o=ol(r.body)||Array.isArray(r.body)?Dn(r.body):r.body,n=Object.fromEntries(Object.entries(r.headers).map(([d,m])=>[d,String(m)])),i;try{i=await e(r.url,{method:r.method,body:o,redirect:r.request?.redirect,headers:n,signal:r.request?.signal,...r.body&&{duplex:"half"}})}catch(d){let m="Unknown Error";if(d instanceof Error){if(d.name==="AbortError")throw d.status=500,d;m=d.message,d.name==="TypeError"&&"cause"in d&&(d.cause instanceof Error?m=d.cause.message:typeof d.cause=="string"&&(m=d.cause))}let _=new pt(m,500,{request:r});throw _.cause=d,_}let a=i.status,c=i.url,l={};for(let[d,m]of i.headers)l[d]=m;let p={url:c,status:a,headers:l,data:""};if("deprecation"in l){let d=l.link&&l.link.match(/<([^<>]+)>; rel="deprecation"/),m=d&&d.pop();t.warn(`[@octokit/request] "${r.method} ${r.url}" is deprecated. It is scheduled to be removed on ${l.sunset}${m?`. See ${m}`:""}`)}if(a===204||a===205)return p;if(r.method==="HEAD"){if(a<400)return p;throw new pt(i.statusText,a,{response:p,request:r})}if(a===304)throw p.data=await Mr(i),new pt("Not modified",a,{response:p,request:r});if(a>=400)throw p.data=await Mr(i),new pt(il(p.data),a,{response:p,request:r});return p.data=s?await Mr(i):i.body,p}async function Mr(r){let e=r.headers.get("content-type");if(!e)return r.text().catch(Ln);let t=(0,Nn.safeParse)(e);if(nl(t)){let s="";try{return s=await r.text(),Fn(s)}catch{return s}}else return t.type.startsWith("text/")||t.parameters.charset?.toLowerCase()==="utf-8"?r.text().catch(Ln):r.arrayBuffer().catch(()=>new ArrayBuffer(0))}function nl(r){return r.type==="application/json"||r.type==="application/scim+json"}function il(r){if(typeof r=="string")return r;if(r instanceof ArrayBuffer)return"Unknown error";if("message"in r){let e="documentation_url"in r?` - ${r.documentation_url}`:"";return Array.isArray(r.errors)?`${r.message}: ${r.errors.map(t=>JSON.stringify(t)).join(", ")}${e}`:`${r.message}${e}`}return`Unknown error: ${JSON.stringify(r)}`}function Lr(r,e){let t=r.defaults(e);return Object.assign(function(o,n){let i=t.merge(o,n);if(!i.request||!i.request.hook)return jn(t.parse(i));let a=(c,l)=>jn(t.parse(t.merge(c,l)));return Object.assign(a,{endpoint:t,defaults:Lr.bind(null,t)}),i.request.hook(a,i)},{endpoint:t,defaults:Lr.bind(null,t)})}var Nn,sl,rl,Ln,Ht,jr=G(()=>{Pn();Lt();Nn=Q(On(),1);Un();Mn();sl="10.0.8",rl={headers:{"user-agent":`octokit-request.js/${sl} ${rt()}`}};Ln=()=>"";Ht=Lr(Cn,rl);});function cl(r){return`Request failed due to following response errors:
34
34
  `+r.errors.map(e=>` - ${e.message}`).join(`
35
- `)}function gl(r,e,t){if(t){if(typeof e=="string"&&"query"in t)return Promise.reject(new Error('[@octokit/graphql] "query" cannot be used as variable name'));for(let i in t)if(dl.includes(i))return Promise.reject(new Error(`[@octokit/graphql] "${i}" cannot be used as variable name`))}let s=typeof e=="string"?Object.assign({query:e},t):e,o=Object.keys(s).reduce((i,a)=>pl.includes(a)?(i[a]=s[a],i):(i.variables||(i.variables={}),i.variables[a]=s[a],i),{}),n=s.baseUrl||r.endpoint.DEFAULTS.baseUrl;return Bn.test(n)&&(o.url=n.replace(Bn,"/api/graphql")),r(o).then(i=>{if(i.data.errors){let a={};for(let c of Object.keys(i.headers))a[c]=i.headers[c];throw new ul(o,a,i.data)}return i.data.data})}function Nr(r,e){let t=r.defaults(e);return Object.assign((o,n)=>gl(t,o,n),{defaults:Nr.bind(null,t),endpoint:t.endpoint})}function Vn(r){return Nr(r,{method:"POST",url:"/graphql"})}var cl,ul,pl,dl,Bn,ad,zn=$(()=>{jr();Nt();cl="0.0.0-development";ul=class extends Error{constructor(r,e,t){super(ll(t)),this.request=r,this.headers=e,this.response=t,this.errors=t.errors,this.data=t.data,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}name="GraphqlResponseError";errors;data},pl=["method","baseUrl","url","headers","request","query","mediaType","operationName"],dl=["query","method","url"],Bn=/\/api\/v3\/?$/;ad=Nr(Bt,{headers:{"user-agent":`octokit-graphql.js/${cl} ${nt()}`},method:"POST",url:"/graphql"})});async function hl(r){let e=ml(r),t=r.startsWith("v1.")||r.startsWith("ghs_"),s=r.startsWith("ghu_");return{type:"token",token:r,tokenType:e?"app":t?"installation":s?"user-to-server":"oauth"}}function fl(r){return r.split(/\./).length===3?`bearer ${r}`:`token ${r}`}async function bl(r,e,t,s){let o=e.endpoint.merge(t,s);return o.headers.authorization=fl(r),e(o)}var Hr,Wn,Jn,ml,Kn,Qn=$(()=>{Hr="(?:[a-zA-Z0-9_-]+)",Wn="\\.",Jn=new RegExp(`^${Hr}${Wn}${Hr}${Wn}${Hr}$`),ml=Jn.test.bind(Jn);Kn=function(e){if(!e)throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");if(typeof e!="string")throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");return e=e.replace(/^(token|bearer) +/i,""),Object.assign(hl.bind(null,e),{hook:bl.bind(null,e)})}});var qr,Yn=$(()=>{qr="7.0.6"});function _l(r={}){return typeof r.debug!="function"&&(r.debug=Xn),typeof r.info!="function"&&(r.info=Xn),typeof r.warn!="function"&&(r.warn=yl),typeof r.error!="function"&&(r.error=vl),r}var Xn,yl,vl,Zn,Es,ei=$(()=>{Nt();_n();jr();zn();Qn();Yn();Xn=()=>{},yl=console.warn.bind(console),vl=console.error.bind(console);Zn=`octokit-core.js/${qr} ${nt()}`,Es=class{static VERSION=qr;static defaults(e){return class extends this{constructor(...s){let o=s[0]||{};if(typeof e=="function"){super(e(o));return}super(Object.assign({},e,o,o.userAgent&&e.userAgent?{userAgent:`${o.userAgent} ${e.userAgent}`}:null))}}}static plugins=[];static plugin(...e){let t=this.plugins;return class extends this{static plugins=t.concat(e.filter(o=>!t.includes(o)))}}constructor(e={}){let t=new vn.Collection,s={baseUrl:Bt.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},e.request,{hook:t.bind(null,"request")}),mediaType:{previews:[],format:""}};if(s.headers["user-agent"]=e.userAgent?`${e.userAgent} ${Zn}`:Zn,e.baseUrl&&(s.baseUrl=e.baseUrl),e.previews&&(s.mediaType.previews=e.previews),e.timeZone&&(s.headers["time-zone"]=e.timeZone),this.request=Bt.defaults(s),this.graphql=Vn(this.request).defaults(s),this.log=_l(e.log),this.hook=t,e.authStrategy){let{authStrategy:n,...i}=e,a=n(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:i},e.auth));t.wrap("request",a.hook),this.auth=a}else if(!e.auth)this.auth=async()=>({type:"unauthenticated"});else{let n=Kn(e.auth);t.wrap("request",n.hook),this.auth=n}let o=this.constructor;for(let n=0;n<o.plugins.length;++n)Object.assign(this,o.plugins[n](this,e))}request;graphql;log;hook;auth}});var ti,si=$(()=>{ti="6.0.0"});function Br(r){r.hook.wrap("request",(e,t)=>{r.log.debug("request",t);let s=Date.now(),o=r.request.endpoint.parse(t),n=o.url.replace(t.baseUrl,"");return e(t).then(i=>{let a=i.headers["x-github-request-id"];return r.log.info(`${o.method} ${n} - ${i.status} with id ${a} in ${Date.now()-s}ms`),i}).catch(i=>{let a=i.response?.headers["x-github-request-id"]||"UNKNOWN";throw r.log.error(`${o.method} ${n} - ${i.status} with id ${a} in ${Date.now()-s}ms`),i})})}var ri=$(()=>{si();Br.VERSION=ti});function Rl(r){if(!r.data)return{...r,data:[]};if(!(("total_count"in r.data||"total_commits"in r.data)&&!("url"in r.data)))return r;let t=r.data.incomplete_results,s=r.data.repository_selection,o=r.data.total_count,n=r.data.total_commits;delete r.data.incomplete_results,delete r.data.repository_selection,delete r.data.total_count,delete r.data.total_commits;let i=Object.keys(r.data)[0],a=r.data[i];return r.data=a,typeof t<"u"&&(r.data.incomplete_results=t),typeof s<"u"&&(r.data.repository_selection=s),r.data.total_count=o,r.data.total_commits=n,r}function Vr(r,e,t){let s=typeof e=="function"?e.endpoint(t):r.request.endpoint(e,t),o=typeof e=="function"?e:r.request,n=s.method,i=s.headers,a=s.url;return{[Symbol.asyncIterator]:()=>({async next(){if(!a)return{done:!0};try{let c=await o({method:n,url:a,headers:i}),l=Rl(c);if(a=((l.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!a&&"total_commits"in l.data){let u=new URL(l.url),d=u.searchParams,m=parseInt(d.get("page")||"1",10),w=parseInt(d.get("per_page")||"250",10);m*w<l.data.total_commits&&(d.set("page",String(m+1)),a=u.toString())}return{value:l}}catch(c){if(c.status!==409)throw c;return a="",{value:{status:200,headers:{},data:[]}}}}})}}function oi(r,e,t,s){return typeof t=="function"&&(s=t,t=void 0),ni(r,[],Vr(r,e,t)[Symbol.asyncIterator](),s)}function ni(r,e,t,s){return t.next().then(o=>{if(o.done)return e;let n=!1;function i(){n=!0}return e=e.concat(s?s(o.value,i):o.value.data),n?e:ni(r,e,t,s)})}function zr(r){return{paginate:Object.assign(oi.bind(null,r),{iterator:Vr.bind(null,r)})}}var wl,Td,ii=$(()=>{wl="0.0.0-development";Td=Object.assign(oi,{iterator:Vr});zr.VERSION=wl});var Wr,ai=$(()=>{Wr="17.0.0"});var El,ci,li=$(()=>{El={actions:{addCustomLabelsToSelfHostedRunnerForOrg:["POST /orgs/{org}/actions/runners/{runner_id}/labels"],addCustomLabelsToSelfHostedRunnerForRepo:["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],addRepoAccessToSelfHostedRunnerGroupInOrg:["PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],approveWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],cancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],createEnvironmentVariable:["POST /repos/{owner}/{repo}/environments/{environment_name}/variables"],createHostedRunnerForOrg:["POST /orgs/{org}/actions/hosted-runners"],createOrUpdateEnvironmentSecret:["PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],createOrgVariable:["POST /orgs/{org}/actions/variables"],createRegistrationTokenForOrg:["POST /orgs/{org}/actions/runners/registration-token"],createRegistrationTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/registration-token"],createRemoveTokenForOrg:["POST /orgs/{org}/actions/runners/remove-token"],createRemoveTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/remove-token"],createRepoVariable:["POST /repos/{owner}/{repo}/actions/variables"],createWorkflowDispatch:["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],deleteActionsCacheById:["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"],deleteActionsCacheByKey:["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"],deleteArtifact:["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],deleteCustomImageFromOrg:["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"],deleteCustomImageVersionFromOrg:["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"],deleteEnvironmentSecret:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],deleteEnvironmentVariable:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],deleteHostedRunnerForOrg:["DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],deleteOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}"],deleteOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],deleteRepoVariable:["DELETE /repos/{owner}/{repo}/actions/variables/{name}"],deleteSelfHostedRunnerFromOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}"],deleteSelfHostedRunnerFromRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"],deleteWorkflowRun:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],deleteWorkflowRunLogs:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],disableSelectedRepositoryGithubActionsOrganization:["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"],disableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"],downloadArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"],downloadJobLogsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"],downloadWorkflowRunAttemptLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"],downloadWorkflowRunLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],enableSelectedRepositoryGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"],enableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"],forceCancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"],generateRunnerJitconfigForOrg:["POST /orgs/{org}/actions/runners/generate-jitconfig"],generateRunnerJitconfigForRepo:["POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"],getActionsCacheList:["GET /repos/{owner}/{repo}/actions/caches"],getActionsCacheUsage:["GET /repos/{owner}/{repo}/actions/cache/usage"],getActionsCacheUsageByRepoForOrg:["GET /orgs/{org}/actions/cache/usage-by-repository"],getActionsCacheUsageForOrg:["GET /orgs/{org}/actions/cache/usage"],getAllowedActionsOrganization:["GET /orgs/{org}/actions/permissions/selected-actions"],getAllowedActionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],getArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],getCustomImageForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"],getCustomImageVersionForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"],getCustomOidcSubClaimForRepo:["GET /repos/{owner}/{repo}/actions/oidc/customization/sub"],getEnvironmentPublicKey:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key"],getEnvironmentSecret:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],getEnvironmentVariable:["GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],getGithubActionsDefaultWorkflowPermissionsOrganization:["GET /orgs/{org}/actions/permissions/workflow"],getGithubActionsDefaultWorkflowPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/workflow"],getGithubActionsPermissionsOrganization:["GET /orgs/{org}/actions/permissions"],getGithubActionsPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions"],getHostedRunnerForOrg:["GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],getHostedRunnersGithubOwnedImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/github-owned"],getHostedRunnersLimitsForOrg:["GET /orgs/{org}/actions/hosted-runners/limits"],getHostedRunnersMachineSpecsForOrg:["GET /orgs/{org}/actions/hosted-runners/machine-sizes"],getHostedRunnersPartnerImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/partner"],getHostedRunnersPlatformsForOrg:["GET /orgs/{org}/actions/hosted-runners/platforms"],getJobForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],getOrgPublicKey:["GET /orgs/{org}/actions/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}"],getOrgVariable:["GET /orgs/{org}/actions/variables/{name}"],getPendingDeploymentsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],getRepoPermissions:["GET /repos/{owner}/{repo}/actions/permissions",{},{renamed:["actions","getGithubActionsPermissionsRepository"]}],getRepoPublicKey:["GET /repos/{owner}/{repo}/actions/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],getRepoVariable:["GET /repos/{owner}/{repo}/actions/variables/{name}"],getReviewsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"],getSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}"],getSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],getWorkflow:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],getWorkflowAccessToRepository:["GET /repos/{owner}/{repo}/actions/permissions/access"],getWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],getWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"],getWorkflowRunUsage:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],getWorkflowUsage:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],listArtifactsForRepo:["GET /repos/{owner}/{repo}/actions/artifacts"],listCustomImageVersionsForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions"],listCustomImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom"],listEnvironmentSecrets:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"],listEnvironmentVariables:["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"],listGithubHostedRunnersInGroupForOrg:["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners"],listHostedRunnersForOrg:["GET /orgs/{org}/actions/hosted-runners"],listJobsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],listJobsForWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"],listLabelsForSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}/labels"],listLabelsForSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],listOrgSecrets:["GET /orgs/{org}/actions/secrets"],listOrgVariables:["GET /orgs/{org}/actions/variables"],listRepoOrganizationSecrets:["GET /repos/{owner}/{repo}/actions/organization-secrets"],listRepoOrganizationVariables:["GET /repos/{owner}/{repo}/actions/organization-variables"],listRepoSecrets:["GET /repos/{owner}/{repo}/actions/secrets"],listRepoVariables:["GET /repos/{owner}/{repo}/actions/variables"],listRepoWorkflows:["GET /repos/{owner}/{repo}/actions/workflows"],listRunnerApplicationsForOrg:["GET /orgs/{org}/actions/runners/downloads"],listRunnerApplicationsForRepo:["GET /repos/{owner}/{repo}/actions/runners/downloads"],listSelectedReposForOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"],listSelectedReposForOrgVariable:["GET /orgs/{org}/actions/variables/{name}/repositories"],listSelectedRepositoriesEnabledGithubActionsOrganization:["GET /orgs/{org}/actions/permissions/repositories"],listSelfHostedRunnersForOrg:["GET /orgs/{org}/actions/runners"],listSelfHostedRunnersForRepo:["GET /repos/{owner}/{repo}/actions/runners"],listWorkflowRunArtifacts:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"],listWorkflowRuns:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"],listWorkflowRunsForRepo:["GET /repos/{owner}/{repo}/actions/runs"],reRunJobForWorkflowRun:["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"],reRunWorkflow:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],reRunWorkflowFailedJobs:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"],removeAllCustomLabelsFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"],removeAllCustomLabelsFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],removeCustomLabelFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"],removeCustomLabelFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],reviewCustomGatesForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"],reviewPendingDeploymentsForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],setAllowedActionsOrganization:["PUT /orgs/{org}/actions/permissions/selected-actions"],setAllowedActionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],setCustomLabelsForSelfHostedRunnerForOrg:["PUT /orgs/{org}/actions/runners/{runner_id}/labels"],setCustomLabelsForSelfHostedRunnerForRepo:["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],setCustomOidcSubClaimForRepo:["PUT /repos/{owner}/{repo}/actions/oidc/customization/sub"],setGithubActionsDefaultWorkflowPermissionsOrganization:["PUT /orgs/{org}/actions/permissions/workflow"],setGithubActionsDefaultWorkflowPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/workflow"],setGithubActionsPermissionsOrganization:["PUT /orgs/{org}/actions/permissions"],setGithubActionsPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"],setSelectedReposForOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories"],setSelectedRepositoriesEnabledGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories"],setWorkflowAccessToRepository:["PUT /repos/{owner}/{repo}/actions/permissions/access"],updateEnvironmentVariable:["PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],updateHostedRunnerForOrg:["PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],updateOrgVariable:["PATCH /orgs/{org}/actions/variables/{name}"],updateRepoVariable:["PATCH /repos/{owner}/{repo}/actions/variables/{name}"]},activity:{checkRepoIsStarredByAuthenticatedUser:["GET /user/starred/{owner}/{repo}"],deleteRepoSubscription:["DELETE /repos/{owner}/{repo}/subscription"],deleteThreadSubscription:["DELETE /notifications/threads/{thread_id}/subscription"],getFeeds:["GET /feeds"],getRepoSubscription:["GET /repos/{owner}/{repo}/subscription"],getThread:["GET /notifications/threads/{thread_id}"],getThreadSubscriptionForAuthenticatedUser:["GET /notifications/threads/{thread_id}/subscription"],listEventsForAuthenticatedUser:["GET /users/{username}/events"],listNotificationsForAuthenticatedUser:["GET /notifications"],listOrgEventsForAuthenticatedUser:["GET /users/{username}/events/orgs/{org}"],listPublicEvents:["GET /events"],listPublicEventsForRepoNetwork:["GET /networks/{owner}/{repo}/events"],listPublicEventsForUser:["GET /users/{username}/events/public"],listPublicOrgEvents:["GET /orgs/{org}/events"],listReceivedEventsForUser:["GET /users/{username}/received_events"],listReceivedPublicEventsForUser:["GET /users/{username}/received_events/public"],listRepoEvents:["GET /repos/{owner}/{repo}/events"],listRepoNotificationsForAuthenticatedUser:["GET /repos/{owner}/{repo}/notifications"],listReposStarredByAuthenticatedUser:["GET /user/starred"],listReposStarredByUser:["GET /users/{username}/starred"],listReposWatchedByUser:["GET /users/{username}/subscriptions"],listStargazersForRepo:["GET /repos/{owner}/{repo}/stargazers"],listWatchedReposForAuthenticatedUser:["GET /user/subscriptions"],listWatchersForRepo:["GET /repos/{owner}/{repo}/subscribers"],markNotificationsAsRead:["PUT /notifications"],markRepoNotificationsAsRead:["PUT /repos/{owner}/{repo}/notifications"],markThreadAsDone:["DELETE /notifications/threads/{thread_id}"],markThreadAsRead:["PATCH /notifications/threads/{thread_id}"],setRepoSubscription:["PUT /repos/{owner}/{repo}/subscription"],setThreadSubscription:["PUT /notifications/threads/{thread_id}/subscription"],starRepoForAuthenticatedUser:["PUT /user/starred/{owner}/{repo}"],unstarRepoForAuthenticatedUser:["DELETE /user/starred/{owner}/{repo}"]},apps:{addRepoToInstallation:["PUT /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","addRepoToInstallationForAuthenticatedUser"]}],addRepoToInstallationForAuthenticatedUser:["PUT /user/installations/{installation_id}/repositories/{repository_id}"],checkToken:["POST /applications/{client_id}/token"],createFromManifest:["POST /app-manifests/{code}/conversions"],createInstallationAccessToken:["POST /app/installations/{installation_id}/access_tokens"],deleteAuthorization:["DELETE /applications/{client_id}/grant"],deleteInstallation:["DELETE /app/installations/{installation_id}"],deleteToken:["DELETE /applications/{client_id}/token"],getAuthenticated:["GET /app"],getBySlug:["GET /apps/{app_slug}"],getInstallation:["GET /app/installations/{installation_id}"],getOrgInstallation:["GET /orgs/{org}/installation"],getRepoInstallation:["GET /repos/{owner}/{repo}/installation"],getSubscriptionPlanForAccount:["GET /marketplace_listing/accounts/{account_id}"],getSubscriptionPlanForAccountStubbed:["GET /marketplace_listing/stubbed/accounts/{account_id}"],getUserInstallation:["GET /users/{username}/installation"],getWebhookConfigForApp:["GET /app/hook/config"],getWebhookDelivery:["GET /app/hook/deliveries/{delivery_id}"],listAccountsForPlan:["GET /marketplace_listing/plans/{plan_id}/accounts"],listAccountsForPlanStubbed:["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"],listInstallationReposForAuthenticatedUser:["GET /user/installations/{installation_id}/repositories"],listInstallationRequestsForAuthenticatedApp:["GET /app/installation-requests"],listInstallations:["GET /app/installations"],listInstallationsForAuthenticatedUser:["GET /user/installations"],listPlans:["GET /marketplace_listing/plans"],listPlansStubbed:["GET /marketplace_listing/stubbed/plans"],listReposAccessibleToInstallation:["GET /installation/repositories"],listSubscriptionsForAuthenticatedUser:["GET /user/marketplace_purchases"],listSubscriptionsForAuthenticatedUserStubbed:["GET /user/marketplace_purchases/stubbed"],listWebhookDeliveries:["GET /app/hook/deliveries"],redeliverWebhookDelivery:["POST /app/hook/deliveries/{delivery_id}/attempts"],removeRepoFromInstallation:["DELETE /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","removeRepoFromInstallationForAuthenticatedUser"]}],removeRepoFromInstallationForAuthenticatedUser:["DELETE /user/installations/{installation_id}/repositories/{repository_id}"],resetToken:["PATCH /applications/{client_id}/token"],revokeInstallationAccessToken:["DELETE /installation/token"],scopeToken:["POST /applications/{client_id}/token/scoped"],suspendInstallation:["PUT /app/installations/{installation_id}/suspended"],unsuspendInstallation:["DELETE /app/installations/{installation_id}/suspended"],updateWebhookConfigForApp:["PATCH /app/hook/config"]},billing:{getGithubActionsBillingOrg:["GET /orgs/{org}/settings/billing/actions"],getGithubActionsBillingUser:["GET /users/{username}/settings/billing/actions"],getGithubBillingPremiumRequestUsageReportOrg:["GET /organizations/{org}/settings/billing/premium_request/usage"],getGithubBillingPremiumRequestUsageReportUser:["GET /users/{username}/settings/billing/premium_request/usage"],getGithubBillingUsageReportOrg:["GET /organizations/{org}/settings/billing/usage"],getGithubBillingUsageReportUser:["GET /users/{username}/settings/billing/usage"],getGithubPackagesBillingOrg:["GET /orgs/{org}/settings/billing/packages"],getGithubPackagesBillingUser:["GET /users/{username}/settings/billing/packages"],getSharedStorageBillingOrg:["GET /orgs/{org}/settings/billing/shared-storage"],getSharedStorageBillingUser:["GET /users/{username}/settings/billing/shared-storage"]},campaigns:{createCampaign:["POST /orgs/{org}/campaigns"],deleteCampaign:["DELETE /orgs/{org}/campaigns/{campaign_number}"],getCampaignSummary:["GET /orgs/{org}/campaigns/{campaign_number}"],listOrgCampaigns:["GET /orgs/{org}/campaigns"],updateCampaign:["PATCH /orgs/{org}/campaigns/{campaign_number}"]},checks:{create:["POST /repos/{owner}/{repo}/check-runs"],createSuite:["POST /repos/{owner}/{repo}/check-suites"],get:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],getSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],listAnnotations:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"],listForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],listForSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"],listSuitesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],rerequestRun:["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"],rerequestSuite:["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"],setSuitesPreferences:["PATCH /repos/{owner}/{repo}/check-suites/preferences"],update:["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]},codeScanning:{commitAutofix:["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits"],createAutofix:["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"],createVariantAnalysis:["POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses"],deleteAnalysis:["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"],deleteCodeqlDatabase:["DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getAlert:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}",{},{renamedParameters:{alert_id:"alert_number"}}],getAnalysis:["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"],getAutofix:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"],getCodeqlDatabase:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getDefaultSetup:["GET /repos/{owner}/{repo}/code-scanning/default-setup"],getSarif:["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],getVariantAnalysis:["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}"],getVariantAnalysisRepoTask:["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}"],listAlertInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"],listAlertsForOrg:["GET /orgs/{org}/code-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/code-scanning/alerts"],listAlertsInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",{},{renamed:["codeScanning","listAlertInstances"]}],listCodeqlDatabases:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"],listRecentAnalyses:["GET /repos/{owner}/{repo}/code-scanning/analyses"],updateAlert:["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"],updateDefaultSetup:["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"],uploadSarif:["POST /repos/{owner}/{repo}/code-scanning/sarifs"]},codeSecurity:{attachConfiguration:["POST /orgs/{org}/code-security/configurations/{configuration_id}/attach"],attachEnterpriseConfiguration:["POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach"],createConfiguration:["POST /orgs/{org}/code-security/configurations"],createConfigurationForEnterprise:["POST /enterprises/{enterprise}/code-security/configurations"],deleteConfiguration:["DELETE /orgs/{org}/code-security/configurations/{configuration_id}"],deleteConfigurationForEnterprise:["DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}"],detachConfiguration:["DELETE /orgs/{org}/code-security/configurations/detach"],getConfiguration:["GET /orgs/{org}/code-security/configurations/{configuration_id}"],getConfigurationForRepository:["GET /repos/{owner}/{repo}/code-security-configuration"],getConfigurationsForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations"],getConfigurationsForOrg:["GET /orgs/{org}/code-security/configurations"],getDefaultConfigurations:["GET /orgs/{org}/code-security/configurations/defaults"],getDefaultConfigurationsForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations/defaults"],getRepositoriesForConfiguration:["GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories"],getRepositoriesForEnterpriseConfiguration:["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories"],getSingleConfigurationForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}"],setConfigurationAsDefault:["PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults"],setConfigurationAsDefaultForEnterprise:["PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults"],updateConfiguration:["PATCH /orgs/{org}/code-security/configurations/{configuration_id}"],updateEnterpriseConfiguration:["PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}"]},codesOfConduct:{getAllCodesOfConduct:["GET /codes_of_conduct"],getConductCode:["GET /codes_of_conduct/{key}"]},codespaces:{addRepositoryForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],checkPermissionsForDevcontainer:["GET /repos/{owner}/{repo}/codespaces/permissions_check"],codespaceMachinesForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/machines"],createForAuthenticatedUser:["POST /user/codespaces"],createOrUpdateOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],createOrUpdateSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}"],createWithPrForAuthenticatedUser:["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"],createWithRepoForAuthenticatedUser:["POST /repos/{owner}/{repo}/codespaces"],deleteForAuthenticatedUser:["DELETE /user/codespaces/{codespace_name}"],deleteFromOrganization:["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"],deleteOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],deleteSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}"],exportForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/exports"],getCodespacesForUserInOrg:["GET /orgs/{org}/members/{username}/codespaces"],getExportDetailsForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/exports/{export_id}"],getForAuthenticatedUser:["GET /user/codespaces/{codespace_name}"],getOrgPublicKey:["GET /orgs/{org}/codespaces/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}"],getPublicKeyForAuthenticatedUser:["GET /user/codespaces/secrets/public-key"],getRepoPublicKey:["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],getSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}"],listDevcontainersInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/devcontainers"],listForAuthenticatedUser:["GET /user/codespaces"],listInOrganization:["GET /orgs/{org}/codespaces",{},{renamedParameters:{org_id:"org"}}],listInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces"],listOrgSecrets:["GET /orgs/{org}/codespaces/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/codespaces/secrets"],listRepositoriesForSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}/repositories"],listSecretsForAuthenticatedUser:["GET /user/codespaces/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],preFlightWithRepoForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/new"],publishForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/publish"],removeRepositoryForSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],repoMachinesForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/machines"],setRepositoriesForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],startForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/start"],stopForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/stop"],stopInOrganization:["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"],updateForAuthenticatedUser:["PATCH /user/codespaces/{codespace_name}"]},copilot:{addCopilotSeatsForTeams:["POST /orgs/{org}/copilot/billing/selected_teams"],addCopilotSeatsForUsers:["POST /orgs/{org}/copilot/billing/selected_users"],cancelCopilotSeatAssignmentForTeams:["DELETE /orgs/{org}/copilot/billing/selected_teams"],cancelCopilotSeatAssignmentForUsers:["DELETE /orgs/{org}/copilot/billing/selected_users"],copilotMetricsForOrganization:["GET /orgs/{org}/copilot/metrics"],copilotMetricsForTeam:["GET /orgs/{org}/team/{team_slug}/copilot/metrics"],getCopilotOrganizationDetails:["GET /orgs/{org}/copilot/billing"],getCopilotSeatDetailsForUser:["GET /orgs/{org}/members/{username}/copilot"],listCopilotSeats:["GET /orgs/{org}/copilot/billing/seats"]},credentials:{revoke:["POST /credentials/revoke"]},dependabot:{addSelectedRepoToOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],deleteOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],getAlert:["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],getOrgPublicKey:["GET /orgs/{org}/dependabot/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}"],getRepoPublicKey:["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],listAlertsForEnterprise:["GET /enterprises/{enterprise}/dependabot/alerts"],listAlertsForOrg:["GET /orgs/{org}/dependabot/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/dependabot/alerts"],listOrgSecrets:["GET /orgs/{org}/dependabot/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/dependabot/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],repositoryAccessForOrg:["GET /organizations/{org}/dependabot/repository-access"],setRepositoryAccessDefaultLevel:["PUT /organizations/{org}/dependabot/repository-access/default-level"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],updateAlert:["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],updateRepositoryAccessForOrg:["PATCH /organizations/{org}/dependabot/repository-access"]},dependencyGraph:{createRepositorySnapshot:["POST /repos/{owner}/{repo}/dependency-graph/snapshots"],diffRange:["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"],exportSbom:["GET /repos/{owner}/{repo}/dependency-graph/sbom"]},emojis:{get:["GET /emojis"]},enterpriseTeamMemberships:{add:["PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"],bulkAdd:["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add"],bulkRemove:["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove"],get:["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"],list:["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships"],remove:["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"]},enterpriseTeamOrganizations:{add:["PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],bulkAdd:["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add"],bulkRemove:["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove"],delete:["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],getAssignment:["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],getAssignments:["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations"]},enterpriseTeams:{create:["POST /enterprises/{enterprise}/teams"],delete:["DELETE /enterprises/{enterprise}/teams/{team_slug}"],get:["GET /enterprises/{enterprise}/teams/{team_slug}"],list:["GET /enterprises/{enterprise}/teams"],update:["PATCH /enterprises/{enterprise}/teams/{team_slug}"]},gists:{checkIsStarred:["GET /gists/{gist_id}/star"],create:["POST /gists"],createComment:["POST /gists/{gist_id}/comments"],delete:["DELETE /gists/{gist_id}"],deleteComment:["DELETE /gists/{gist_id}/comments/{comment_id}"],fork:["POST /gists/{gist_id}/forks"],get:["GET /gists/{gist_id}"],getComment:["GET /gists/{gist_id}/comments/{comment_id}"],getRevision:["GET /gists/{gist_id}/{sha}"],list:["GET /gists"],listComments:["GET /gists/{gist_id}/comments"],listCommits:["GET /gists/{gist_id}/commits"],listForUser:["GET /users/{username}/gists"],listForks:["GET /gists/{gist_id}/forks"],listPublic:["GET /gists/public"],listStarred:["GET /gists/starred"],star:["PUT /gists/{gist_id}/star"],unstar:["DELETE /gists/{gist_id}/star"],update:["PATCH /gists/{gist_id}"],updateComment:["PATCH /gists/{gist_id}/comments/{comment_id}"]},git:{createBlob:["POST /repos/{owner}/{repo}/git/blobs"],createCommit:["POST /repos/{owner}/{repo}/git/commits"],createRef:["POST /repos/{owner}/{repo}/git/refs"],createTag:["POST /repos/{owner}/{repo}/git/tags"],createTree:["POST /repos/{owner}/{repo}/git/trees"],deleteRef:["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],getBlob:["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],getCommit:["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],getRef:["GET /repos/{owner}/{repo}/git/ref/{ref}"],getTag:["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],getTree:["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],listMatchingRefs:["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],updateRef:["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]},gitignore:{getAllTemplates:["GET /gitignore/templates"],getTemplate:["GET /gitignore/templates/{name}"]},hostedCompute:{createNetworkConfigurationForOrg:["POST /orgs/{org}/settings/network-configurations"],deleteNetworkConfigurationFromOrg:["DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}"],getNetworkConfigurationForOrg:["GET /orgs/{org}/settings/network-configurations/{network_configuration_id}"],getNetworkSettingsForOrg:["GET /orgs/{org}/settings/network-settings/{network_settings_id}"],listNetworkConfigurationsForOrg:["GET /orgs/{org}/settings/network-configurations"],updateNetworkConfigurationForOrg:["PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}"]},interactions:{getRestrictionsForAuthenticatedUser:["GET /user/interaction-limits"],getRestrictionsForOrg:["GET /orgs/{org}/interaction-limits"],getRestrictionsForRepo:["GET /repos/{owner}/{repo}/interaction-limits"],getRestrictionsForYourPublicRepos:["GET /user/interaction-limits",{},{renamed:["interactions","getRestrictionsForAuthenticatedUser"]}],removeRestrictionsForAuthenticatedUser:["DELETE /user/interaction-limits"],removeRestrictionsForOrg:["DELETE /orgs/{org}/interaction-limits"],removeRestrictionsForRepo:["DELETE /repos/{owner}/{repo}/interaction-limits"],removeRestrictionsForYourPublicRepos:["DELETE /user/interaction-limits",{},{renamed:["interactions","removeRestrictionsForAuthenticatedUser"]}],setRestrictionsForAuthenticatedUser:["PUT /user/interaction-limits"],setRestrictionsForOrg:["PUT /orgs/{org}/interaction-limits"],setRestrictionsForRepo:["PUT /repos/{owner}/{repo}/interaction-limits"],setRestrictionsForYourPublicRepos:["PUT /user/interaction-limits",{},{renamed:["interactions","setRestrictionsForAuthenticatedUser"]}]},issues:{addAssignees:["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"],addBlockedByDependency:["POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"],addLabels:["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],addSubIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"],checkUserCanBeAssigned:["GET /repos/{owner}/{repo}/assignees/{assignee}"],checkUserCanBeAssignedToIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"],create:["POST /repos/{owner}/{repo}/issues"],createComment:["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"],createLabel:["POST /repos/{owner}/{repo}/labels"],createMilestone:["POST /repos/{owner}/{repo}/milestones"],deleteComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"],deleteLabel:["DELETE /repos/{owner}/{repo}/labels/{name}"],deleteMilestone:["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"],get:["GET /repos/{owner}/{repo}/issues/{issue_number}"],getComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],getEvent:["GET /repos/{owner}/{repo}/issues/events/{event_id}"],getLabel:["GET /repos/{owner}/{repo}/labels/{name}"],getMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],getParent:["GET /repos/{owner}/{repo}/issues/{issue_number}/parent"],list:["GET /issues"],listAssignees:["GET /repos/{owner}/{repo}/assignees"],listComments:["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],listCommentsForRepo:["GET /repos/{owner}/{repo}/issues/comments"],listDependenciesBlockedBy:["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"],listDependenciesBlocking:["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking"],listEvents:["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],listEventsForRepo:["GET /repos/{owner}/{repo}/issues/events"],listEventsForTimeline:["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"],listForAuthenticatedUser:["GET /user/issues"],listForOrg:["GET /orgs/{org}/issues"],listForRepo:["GET /repos/{owner}/{repo}/issues"],listLabelsForMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"],listLabelsForRepo:["GET /repos/{owner}/{repo}/labels"],listLabelsOnIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"],listMilestones:["GET /repos/{owner}/{repo}/milestones"],listSubIssues:["GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"],lock:["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],removeAllLabels:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"],removeAssignees:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"],removeDependencyBlockedBy:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}"],removeLabel:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"],removeSubIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue"],reprioritizeSubIssue:["PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority"],setLabels:["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],unlock:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],update:["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],updateComment:["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],updateLabel:["PATCH /repos/{owner}/{repo}/labels/{name}"],updateMilestone:["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]},licenses:{get:["GET /licenses/{license}"],getAllCommonlyUsed:["GET /licenses"],getForRepo:["GET /repos/{owner}/{repo}/license"]},markdown:{render:["POST /markdown"],renderRaw:["POST /markdown/raw",{headers:{"content-type":"text/plain; charset=utf-8"}}]},meta:{get:["GET /meta"],getAllVersions:["GET /versions"],getOctocat:["GET /octocat"],getZen:["GET /zen"],root:["GET /"]},migrations:{deleteArchiveForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/archive"],deleteArchiveForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/archive"],downloadArchiveForOrg:["GET /orgs/{org}/migrations/{migration_id}/archive"],getArchiveForAuthenticatedUser:["GET /user/migrations/{migration_id}/archive"],getStatusForAuthenticatedUser:["GET /user/migrations/{migration_id}"],getStatusForOrg:["GET /orgs/{org}/migrations/{migration_id}"],listForAuthenticatedUser:["GET /user/migrations"],listForOrg:["GET /orgs/{org}/migrations"],listReposForAuthenticatedUser:["GET /user/migrations/{migration_id}/repositories"],listReposForOrg:["GET /orgs/{org}/migrations/{migration_id}/repositories"],listReposForUser:["GET /user/migrations/{migration_id}/repositories",{},{renamed:["migrations","listReposForAuthenticatedUser"]}],startForAuthenticatedUser:["POST /user/migrations"],startForOrg:["POST /orgs/{org}/migrations"],unlockRepoForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"],unlockRepoForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"]},oidc:{getOidcCustomSubTemplateForOrg:["GET /orgs/{org}/actions/oidc/customization/sub"],updateOidcCustomSubTemplateForOrg:["PUT /orgs/{org}/actions/oidc/customization/sub"]},orgs:{addSecurityManagerTeam:["PUT /orgs/{org}/security-managers/teams/{team_slug}",{},{deprecated:"octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team"}],assignTeamToOrgRole:["PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"],assignUserToOrgRole:["PUT /orgs/{org}/organization-roles/users/{username}/{role_id}"],blockUser:["PUT /orgs/{org}/blocks/{username}"],cancelInvitation:["DELETE /orgs/{org}/invitations/{invitation_id}"],checkBlockedUser:["GET /orgs/{org}/blocks/{username}"],checkMembershipForUser:["GET /orgs/{org}/members/{username}"],checkPublicMembershipForUser:["GET /orgs/{org}/public_members/{username}"],convertMemberToOutsideCollaborator:["PUT /orgs/{org}/outside_collaborators/{username}"],createArtifactStorageRecord:["POST /orgs/{org}/artifacts/metadata/storage-record"],createInvitation:["POST /orgs/{org}/invitations"],createIssueType:["POST /orgs/{org}/issue-types"],createWebhook:["POST /orgs/{org}/hooks"],customPropertiesForOrgsCreateOrUpdateOrganizationValues:["PATCH /organizations/{org}/org-properties/values"],customPropertiesForOrgsGetOrganizationValues:["GET /organizations/{org}/org-properties/values"],customPropertiesForReposCreateOrUpdateOrganizationDefinition:["PUT /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposCreateOrUpdateOrganizationDefinitions:["PATCH /orgs/{org}/properties/schema"],customPropertiesForReposCreateOrUpdateOrganizationValues:["PATCH /orgs/{org}/properties/values"],customPropertiesForReposDeleteOrganizationDefinition:["DELETE /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposGetOrganizationDefinition:["GET /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposGetOrganizationDefinitions:["GET /orgs/{org}/properties/schema"],customPropertiesForReposGetOrganizationValues:["GET /orgs/{org}/properties/values"],delete:["DELETE /orgs/{org}"],deleteAttestationsBulk:["POST /orgs/{org}/attestations/delete-request"],deleteAttestationsById:["DELETE /orgs/{org}/attestations/{attestation_id}"],deleteAttestationsBySubjectDigest:["DELETE /orgs/{org}/attestations/digest/{subject_digest}"],deleteIssueType:["DELETE /orgs/{org}/issue-types/{issue_type_id}"],deleteWebhook:["DELETE /orgs/{org}/hooks/{hook_id}"],disableSelectedRepositoryImmutableReleasesOrganization:["DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"],enableSelectedRepositoryImmutableReleasesOrganization:["PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"],get:["GET /orgs/{org}"],getImmutableReleasesSettings:["GET /orgs/{org}/settings/immutable-releases"],getImmutableReleasesSettingsRepositories:["GET /orgs/{org}/settings/immutable-releases/repositories"],getMembershipForAuthenticatedUser:["GET /user/memberships/orgs/{org}"],getMembershipForUser:["GET /orgs/{org}/memberships/{username}"],getOrgRole:["GET /orgs/{org}/organization-roles/{role_id}"],getOrgRulesetHistory:["GET /orgs/{org}/rulesets/{ruleset_id}/history"],getOrgRulesetVersion:["GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}"],getWebhook:["GET /orgs/{org}/hooks/{hook_id}"],getWebhookConfigForOrg:["GET /orgs/{org}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"],list:["GET /organizations"],listAppInstallations:["GET /orgs/{org}/installations"],listArtifactStorageRecords:["GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records"],listAttestationRepositories:["GET /orgs/{org}/attestations/repositories"],listAttestations:["GET /orgs/{org}/attestations/{subject_digest}"],listAttestationsBulk:["POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}"],listBlockedUsers:["GET /orgs/{org}/blocks"],listFailedInvitations:["GET /orgs/{org}/failed_invitations"],listForAuthenticatedUser:["GET /user/orgs"],listForUser:["GET /users/{username}/orgs"],listInvitationTeams:["GET /orgs/{org}/invitations/{invitation_id}/teams"],listIssueTypes:["GET /orgs/{org}/issue-types"],listMembers:["GET /orgs/{org}/members"],listMembershipsForAuthenticatedUser:["GET /user/memberships/orgs"],listOrgRoleTeams:["GET /orgs/{org}/organization-roles/{role_id}/teams"],listOrgRoleUsers:["GET /orgs/{org}/organization-roles/{role_id}/users"],listOrgRoles:["GET /orgs/{org}/organization-roles"],listOrganizationFineGrainedPermissions:["GET /orgs/{org}/organization-fine-grained-permissions"],listOutsideCollaborators:["GET /orgs/{org}/outside_collaborators"],listPatGrantRepositories:["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"],listPatGrantRequestRepositories:["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"],listPatGrantRequests:["GET /orgs/{org}/personal-access-token-requests"],listPatGrants:["GET /orgs/{org}/personal-access-tokens"],listPendingInvitations:["GET /orgs/{org}/invitations"],listPublicMembers:["GET /orgs/{org}/public_members"],listSecurityManagerTeams:["GET /orgs/{org}/security-managers",{},{deprecated:"octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams"}],listWebhookDeliveries:["GET /orgs/{org}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /orgs/{org}/hooks"],pingWebhook:["POST /orgs/{org}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeMember:["DELETE /orgs/{org}/members/{username}"],removeMembershipForUser:["DELETE /orgs/{org}/memberships/{username}"],removeOutsideCollaborator:["DELETE /orgs/{org}/outside_collaborators/{username}"],removePublicMembershipForAuthenticatedUser:["DELETE /orgs/{org}/public_members/{username}"],removeSecurityManagerTeam:["DELETE /orgs/{org}/security-managers/teams/{team_slug}",{},{deprecated:"octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team"}],reviewPatGrantRequest:["POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"],reviewPatGrantRequestsInBulk:["POST /orgs/{org}/personal-access-token-requests"],revokeAllOrgRolesTeam:["DELETE /orgs/{org}/organization-roles/teams/{team_slug}"],revokeAllOrgRolesUser:["DELETE /orgs/{org}/organization-roles/users/{username}"],revokeOrgRoleTeam:["DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"],revokeOrgRoleUser:["DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}"],setImmutableReleasesSettings:["PUT /orgs/{org}/settings/immutable-releases"],setImmutableReleasesSettingsRepositories:["PUT /orgs/{org}/settings/immutable-releases/repositories"],setMembershipForUser:["PUT /orgs/{org}/memberships/{username}"],setPublicMembershipForAuthenticatedUser:["PUT /orgs/{org}/public_members/{username}"],unblockUser:["DELETE /orgs/{org}/blocks/{username}"],update:["PATCH /orgs/{org}"],updateIssueType:["PUT /orgs/{org}/issue-types/{issue_type_id}"],updateMembershipForAuthenticatedUser:["PATCH /user/memberships/orgs/{org}"],updatePatAccess:["POST /orgs/{org}/personal-access-tokens/{pat_id}"],updatePatAccesses:["POST /orgs/{org}/personal-access-tokens"],updateWebhook:["PATCH /orgs/{org}/hooks/{hook_id}"],updateWebhookConfigForOrg:["PATCH /orgs/{org}/hooks/{hook_id}/config"]},packages:{deletePackageForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}"],deletePackageForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}"],deletePackageForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}"],deletePackageVersionForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getAllPackageVersionsForAPackageOwnedByAnOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByOrg"]}],getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]}],getAllPackageVersionsForPackageOwnedByAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions"],getPackageForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}"],getPackageForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}"],getPackageForUser:["GET /users/{username}/packages/{package_type}/{package_name}"],getPackageVersionForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],listDockerMigrationConflictingPackagesForAuthenticatedUser:["GET /user/docker/conflicts"],listDockerMigrationConflictingPackagesForOrganization:["GET /orgs/{org}/docker/conflicts"],listDockerMigrationConflictingPackagesForUser:["GET /users/{username}/docker/conflicts"],listPackagesForAuthenticatedUser:["GET /user/packages"],listPackagesForOrganization:["GET /orgs/{org}/packages"],listPackagesForUser:["GET /users/{username}/packages"],restorePackageForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForUser:["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageVersionForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForUser:["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]},privateRegistries:{createOrgPrivateRegistry:["POST /orgs/{org}/private-registries"],deleteOrgPrivateRegistry:["DELETE /orgs/{org}/private-registries/{secret_name}"],getOrgPrivateRegistry:["GET /orgs/{org}/private-registries/{secret_name}"],getOrgPublicKey:["GET /orgs/{org}/private-registries/public-key"],listOrgPrivateRegistries:["GET /orgs/{org}/private-registries"],updateOrgPrivateRegistry:["PATCH /orgs/{org}/private-registries/{secret_name}"]},projects:{addItemForOrg:["POST /orgs/{org}/projectsV2/{project_number}/items"],addItemForUser:["POST /users/{username}/projectsV2/{project_number}/items"],deleteItemForOrg:["DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],deleteItemForUser:["DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}"],getFieldForOrg:["GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}"],getFieldForUser:["GET /users/{username}/projectsV2/{project_number}/fields/{field_id}"],getForOrg:["GET /orgs/{org}/projectsV2/{project_number}"],getForUser:["GET /users/{username}/projectsV2/{project_number}"],getOrgItem:["GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],getUserItem:["GET /users/{username}/projectsV2/{project_number}/items/{item_id}"],listFieldsForOrg:["GET /orgs/{org}/projectsV2/{project_number}/fields"],listFieldsForUser:["GET /users/{username}/projectsV2/{project_number}/fields"],listForOrg:["GET /orgs/{org}/projectsV2"],listForUser:["GET /users/{username}/projectsV2"],listItemsForOrg:["GET /orgs/{org}/projectsV2/{project_number}/items"],listItemsForUser:["GET /users/{username}/projectsV2/{project_number}/items"],updateItemForOrg:["PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],updateItemForUser:["PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}"]},pulls:{checkIfMerged:["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],create:["POST /repos/{owner}/{repo}/pulls"],createReplyForReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"],createReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],createReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"],deletePendingReview:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],deleteReviewComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"],dismissReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"],get:["GET /repos/{owner}/{repo}/pulls/{pull_number}"],getReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],getReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],list:["GET /repos/{owner}/{repo}/pulls"],listCommentsForReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"],listCommits:["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],listFiles:["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],listRequestedReviewers:["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],listReviewComments:["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"],listReviewCommentsForRepo:["GET /repos/{owner}/{repo}/pulls/comments"],listReviews:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],merge:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],removeRequestedReviewers:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],requestReviewers:["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],submitReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"],update:["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],updateBranch:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"],updateReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],updateReviewComment:["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]},rateLimit:{get:["GET /rate_limit"]},reactions:{createForCommitComment:["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"],createForIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"],createForIssueComment:["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],createForPullRequestReviewComment:["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],createForRelease:["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"],createForTeamDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],createForTeamDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"],deleteForCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"],deleteForIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"],deleteForIssueComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"],deleteForPullRequestComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"],deleteForRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"],deleteForTeamDiscussion:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"],deleteForTeamDiscussionComment:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"],listForCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"],listForIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],listForIssueComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],listForPullRequestReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],listForRelease:["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"],listForTeamDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],listForTeamDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]},repos:{acceptInvitation:["PATCH /user/repository_invitations/{invitation_id}",{},{renamed:["repos","acceptInvitationForAuthenticatedUser"]}],acceptInvitationForAuthenticatedUser:["PATCH /user/repository_invitations/{invitation_id}"],addAppAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],addCollaborator:["PUT /repos/{owner}/{repo}/collaborators/{username}"],addStatusCheckContexts:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],addTeamAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],addUserAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],cancelPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel"],checkAutomatedSecurityFixes:["GET /repos/{owner}/{repo}/automated-security-fixes"],checkCollaborator:["GET /repos/{owner}/{repo}/collaborators/{username}"],checkImmutableReleases:["GET /repos/{owner}/{repo}/immutable-releases"],checkPrivateVulnerabilityReporting:["GET /repos/{owner}/{repo}/private-vulnerability-reporting"],checkVulnerabilityAlerts:["GET /repos/{owner}/{repo}/vulnerability-alerts"],codeownersErrors:["GET /repos/{owner}/{repo}/codeowners/errors"],compareCommits:["GET /repos/{owner}/{repo}/compare/{base}...{head}"],compareCommitsWithBasehead:["GET /repos/{owner}/{repo}/compare/{basehead}"],createAttestation:["POST /repos/{owner}/{repo}/attestations"],createAutolink:["POST /repos/{owner}/{repo}/autolinks"],createCommitComment:["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"],createCommitSignatureProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],createCommitStatus:["POST /repos/{owner}/{repo}/statuses/{sha}"],createDeployKey:["POST /repos/{owner}/{repo}/keys"],createDeployment:["POST /repos/{owner}/{repo}/deployments"],createDeploymentBranchPolicy:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],createDeploymentProtectionRule:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],createDeploymentStatus:["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],createDispatchEvent:["POST /repos/{owner}/{repo}/dispatches"],createForAuthenticatedUser:["POST /user/repos"],createFork:["POST /repos/{owner}/{repo}/forks"],createInOrg:["POST /orgs/{org}/repos"],createOrUpdateEnvironment:["PUT /repos/{owner}/{repo}/environments/{environment_name}"],createOrUpdateFileContents:["PUT /repos/{owner}/{repo}/contents/{path}"],createOrgRuleset:["POST /orgs/{org}/rulesets"],createPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployments"],createPagesSite:["POST /repos/{owner}/{repo}/pages"],createRelease:["POST /repos/{owner}/{repo}/releases"],createRepoRuleset:["POST /repos/{owner}/{repo}/rulesets"],createUsingTemplate:["POST /repos/{template_owner}/{template_repo}/generate"],createWebhook:["POST /repos/{owner}/{repo}/hooks"],customPropertiesForReposCreateOrUpdateRepositoryValues:["PATCH /repos/{owner}/{repo}/properties/values"],customPropertiesForReposGetRepositoryValues:["GET /repos/{owner}/{repo}/properties/values"],declineInvitation:["DELETE /user/repository_invitations/{invitation_id}",{},{renamed:["repos","declineInvitationForAuthenticatedUser"]}],declineInvitationForAuthenticatedUser:["DELETE /user/repository_invitations/{invitation_id}"],delete:["DELETE /repos/{owner}/{repo}"],deleteAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],deleteAdminBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],deleteAnEnvironment:["DELETE /repos/{owner}/{repo}/environments/{environment_name}"],deleteAutolink:["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],deleteBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],deleteCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],deleteCommitSignatureProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],deleteDeployKey:["DELETE /repos/{owner}/{repo}/keys/{key_id}"],deleteDeployment:["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"],deleteDeploymentBranchPolicy:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],deleteFile:["DELETE /repos/{owner}/{repo}/contents/{path}"],deleteInvitation:["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"],deleteOrgRuleset:["DELETE /orgs/{org}/rulesets/{ruleset_id}"],deletePagesSite:["DELETE /repos/{owner}/{repo}/pages"],deletePullRequestReviewProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],deleteRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}"],deleteReleaseAsset:["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"],deleteRepoRuleset:["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"],deleteWebhook:["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],disableAutomatedSecurityFixes:["DELETE /repos/{owner}/{repo}/automated-security-fixes"],disableDeploymentProtectionRule:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],disableImmutableReleases:["DELETE /repos/{owner}/{repo}/immutable-releases"],disablePrivateVulnerabilityReporting:["DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"],disableVulnerabilityAlerts:["DELETE /repos/{owner}/{repo}/vulnerability-alerts"],downloadArchive:["GET /repos/{owner}/{repo}/zipball/{ref}",{},{renamed:["repos","downloadZipballArchive"]}],downloadTarballArchive:["GET /repos/{owner}/{repo}/tarball/{ref}"],downloadZipballArchive:["GET /repos/{owner}/{repo}/zipball/{ref}"],enableAutomatedSecurityFixes:["PUT /repos/{owner}/{repo}/automated-security-fixes"],enableImmutableReleases:["PUT /repos/{owner}/{repo}/immutable-releases"],enablePrivateVulnerabilityReporting:["PUT /repos/{owner}/{repo}/private-vulnerability-reporting"],enableVulnerabilityAlerts:["PUT /repos/{owner}/{repo}/vulnerability-alerts"],generateReleaseNotes:["POST /repos/{owner}/{repo}/releases/generate-notes"],get:["GET /repos/{owner}/{repo}"],getAccessRestrictions:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],getAdminBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],getAllDeploymentProtectionRules:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],getAllEnvironments:["GET /repos/{owner}/{repo}/environments"],getAllStatusCheckContexts:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],getAllTopics:["GET /repos/{owner}/{repo}/topics"],getAppsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"],getAutolink:["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],getBranch:["GET /repos/{owner}/{repo}/branches/{branch}"],getBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection"],getBranchRules:["GET /repos/{owner}/{repo}/rules/branches/{branch}"],getClones:["GET /repos/{owner}/{repo}/traffic/clones"],getCodeFrequencyStats:["GET /repos/{owner}/{repo}/stats/code_frequency"],getCollaboratorPermissionLevel:["GET /repos/{owner}/{repo}/collaborators/{username}/permission"],getCombinedStatusForRef:["GET /repos/{owner}/{repo}/commits/{ref}/status"],getCommit:["GET /repos/{owner}/{repo}/commits/{ref}"],getCommitActivityStats:["GET /repos/{owner}/{repo}/stats/commit_activity"],getCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}"],getCommitSignatureProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],getCommunityProfileMetrics:["GET /repos/{owner}/{repo}/community/profile"],getContent:["GET /repos/{owner}/{repo}/contents/{path}"],getContributorsStats:["GET /repos/{owner}/{repo}/stats/contributors"],getCustomDeploymentProtectionRule:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],getDeployKey:["GET /repos/{owner}/{repo}/keys/{key_id}"],getDeployment:["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],getDeploymentBranchPolicy:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],getDeploymentStatus:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],getEnvironment:["GET /repos/{owner}/{repo}/environments/{environment_name}"],getLatestPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/latest"],getLatestRelease:["GET /repos/{owner}/{repo}/releases/latest"],getOrgRuleSuite:["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"],getOrgRuleSuites:["GET /orgs/{org}/rulesets/rule-suites"],getOrgRuleset:["GET /orgs/{org}/rulesets/{ruleset_id}"],getOrgRulesets:["GET /orgs/{org}/rulesets"],getPages:["GET /repos/{owner}/{repo}/pages"],getPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],getPagesDeployment:["GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}"],getPagesHealthCheck:["GET /repos/{owner}/{repo}/pages/health"],getParticipationStats:["GET /repos/{owner}/{repo}/stats/participation"],getPullRequestReviewProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],getPunchCardStats:["GET /repos/{owner}/{repo}/stats/punch_card"],getReadme:["GET /repos/{owner}/{repo}/readme"],getReadmeInDirectory:["GET /repos/{owner}/{repo}/readme/{dir}"],getRelease:["GET /repos/{owner}/{repo}/releases/{release_id}"],getReleaseAsset:["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],getReleaseByTag:["GET /repos/{owner}/{repo}/releases/tags/{tag}"],getRepoRuleSuite:["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"],getRepoRuleSuites:["GET /repos/{owner}/{repo}/rulesets/rule-suites"],getRepoRuleset:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],getRepoRulesetHistory:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history"],getRepoRulesetVersion:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}"],getRepoRulesets:["GET /repos/{owner}/{repo}/rulesets"],getStatusChecksProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],getTeamsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"],getTopPaths:["GET /repos/{owner}/{repo}/traffic/popular/paths"],getTopReferrers:["GET /repos/{owner}/{repo}/traffic/popular/referrers"],getUsersWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"],getViews:["GET /repos/{owner}/{repo}/traffic/views"],getWebhook:["GET /repos/{owner}/{repo}/hooks/{hook_id}"],getWebhookConfigForRepo:["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"],listActivities:["GET /repos/{owner}/{repo}/activity"],listAttestations:["GET /repos/{owner}/{repo}/attestations/{subject_digest}"],listAutolinks:["GET /repos/{owner}/{repo}/autolinks"],listBranches:["GET /repos/{owner}/{repo}/branches"],listBranchesForHeadCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"],listCollaborators:["GET /repos/{owner}/{repo}/collaborators"],listCommentsForCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"],listCommitCommentsForRepo:["GET /repos/{owner}/{repo}/comments"],listCommitStatusesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/statuses"],listCommits:["GET /repos/{owner}/{repo}/commits"],listContributors:["GET /repos/{owner}/{repo}/contributors"],listCustomDeploymentRuleIntegrations:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"],listDeployKeys:["GET /repos/{owner}/{repo}/keys"],listDeploymentBranchPolicies:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],listDeploymentStatuses:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],listDeployments:["GET /repos/{owner}/{repo}/deployments"],listForAuthenticatedUser:["GET /user/repos"],listForOrg:["GET /orgs/{org}/repos"],listForUser:["GET /users/{username}/repos"],listForks:["GET /repos/{owner}/{repo}/forks"],listInvitations:["GET /repos/{owner}/{repo}/invitations"],listInvitationsForAuthenticatedUser:["GET /user/repository_invitations"],listLanguages:["GET /repos/{owner}/{repo}/languages"],listPagesBuilds:["GET /repos/{owner}/{repo}/pages/builds"],listPublic:["GET /repositories"],listPullRequestsAssociatedWithCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"],listReleaseAssets:["GET /repos/{owner}/{repo}/releases/{release_id}/assets"],listReleases:["GET /repos/{owner}/{repo}/releases"],listTags:["GET /repos/{owner}/{repo}/tags"],listTeams:["GET /repos/{owner}/{repo}/teams"],listWebhookDeliveries:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /repos/{owner}/{repo}/hooks"],merge:["POST /repos/{owner}/{repo}/merges"],mergeUpstream:["POST /repos/{owner}/{repo}/merge-upstream"],pingWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeAppAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],removeCollaborator:["DELETE /repos/{owner}/{repo}/collaborators/{username}"],removeStatusCheckContexts:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],removeStatusCheckProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],removeTeamAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],removeUserAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],renameBranch:["POST /repos/{owner}/{repo}/branches/{branch}/rename"],replaceAllTopics:["PUT /repos/{owner}/{repo}/topics"],requestPagesBuild:["POST /repos/{owner}/{repo}/pages/builds"],setAdminBranchProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],setAppAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],setStatusCheckContexts:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],setTeamAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],setUserAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],testPushWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],transfer:["POST /repos/{owner}/{repo}/transfer"],update:["PATCH /repos/{owner}/{repo}"],updateBranchProtection:["PUT /repos/{owner}/{repo}/branches/{branch}/protection"],updateCommitComment:["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],updateDeploymentBranchPolicy:["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],updateInformationAboutPagesSite:["PUT /repos/{owner}/{repo}/pages"],updateInvitation:["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"],updateOrgRuleset:["PUT /orgs/{org}/rulesets/{ruleset_id}"],updatePullRequestReviewProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],updateRelease:["PATCH /repos/{owner}/{repo}/releases/{release_id}"],updateReleaseAsset:["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"],updateRepoRuleset:["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"],updateStatusCheckPotection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",{},{renamed:["repos","updateStatusCheckProtection"]}],updateStatusCheckProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],updateWebhook:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],updateWebhookConfigForRepo:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"],uploadReleaseAsset:["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",{baseUrl:"https://uploads.github.com"}]},search:{code:["GET /search/code"],commits:["GET /search/commits"],issuesAndPullRequests:["GET /search/issues"],labels:["GET /search/labels"],repos:["GET /search/repositories"],topics:["GET /search/topics"],users:["GET /search/users"]},secretScanning:{createPushProtectionBypass:["POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses"],getAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],getScanHistory:["GET /repos/{owner}/{repo}/secret-scanning/scan-history"],listAlertsForOrg:["GET /orgs/{org}/secret-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/secret-scanning/alerts"],listLocationsForAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"],listOrgPatternConfigs:["GET /orgs/{org}/secret-scanning/pattern-configurations"],updateAlert:["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],updateOrgPatternConfigs:["PATCH /orgs/{org}/secret-scanning/pattern-configurations"]},securityAdvisories:{createFork:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks"],createPrivateVulnerabilityReport:["POST /repos/{owner}/{repo}/security-advisories/reports"],createRepositoryAdvisory:["POST /repos/{owner}/{repo}/security-advisories"],createRepositoryAdvisoryCveRequest:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"],getGlobalAdvisory:["GET /advisories/{ghsa_id}"],getRepositoryAdvisory:["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"],listGlobalAdvisories:["GET /advisories"],listOrgRepositoryAdvisories:["GET /orgs/{org}/security-advisories"],listRepositoryAdvisories:["GET /repos/{owner}/{repo}/security-advisories"],updateRepositoryAdvisory:["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]},teams:{addOrUpdateMembershipForUserInOrg:["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"],addOrUpdateRepoPermissionsInOrg:["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],checkPermissionsForRepoInOrg:["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],create:["POST /orgs/{org}/teams"],createDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],createDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions"],deleteDiscussionCommentInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],deleteDiscussionInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],deleteInOrg:["DELETE /orgs/{org}/teams/{team_slug}"],getByName:["GET /orgs/{org}/teams/{team_slug}"],getDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],getDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],getMembershipForUserInOrg:["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"],list:["GET /orgs/{org}/teams"],listChildInOrg:["GET /orgs/{org}/teams/{team_slug}/teams"],listDiscussionCommentsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],listDiscussionsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions"],listForAuthenticatedUser:["GET /user/teams"],listMembersInOrg:["GET /orgs/{org}/teams/{team_slug}/members"],listPendingInvitationsInOrg:["GET /orgs/{org}/teams/{team_slug}/invitations"],listReposInOrg:["GET /orgs/{org}/teams/{team_slug}/repos"],removeMembershipForUserInOrg:["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"],removeRepoInOrg:["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],updateDiscussionCommentInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],updateDiscussionInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],updateInOrg:["PATCH /orgs/{org}/teams/{team_slug}"]},users:{addEmailForAuthenticated:["POST /user/emails",{},{renamed:["users","addEmailForAuthenticatedUser"]}],addEmailForAuthenticatedUser:["POST /user/emails"],addSocialAccountForAuthenticatedUser:["POST /user/social_accounts"],block:["PUT /user/blocks/{username}"],checkBlocked:["GET /user/blocks/{username}"],checkFollowingForUser:["GET /users/{username}/following/{target_user}"],checkPersonIsFollowedByAuthenticated:["GET /user/following/{username}"],createGpgKeyForAuthenticated:["POST /user/gpg_keys",{},{renamed:["users","createGpgKeyForAuthenticatedUser"]}],createGpgKeyForAuthenticatedUser:["POST /user/gpg_keys"],createPublicSshKeyForAuthenticated:["POST /user/keys",{},{renamed:["users","createPublicSshKeyForAuthenticatedUser"]}],createPublicSshKeyForAuthenticatedUser:["POST /user/keys"],createSshSigningKeyForAuthenticatedUser:["POST /user/ssh_signing_keys"],deleteAttestationsBulk:["POST /users/{username}/attestations/delete-request"],deleteAttestationsById:["DELETE /users/{username}/attestations/{attestation_id}"],deleteAttestationsBySubjectDigest:["DELETE /users/{username}/attestations/digest/{subject_digest}"],deleteEmailForAuthenticated:["DELETE /user/emails",{},{renamed:["users","deleteEmailForAuthenticatedUser"]}],deleteEmailForAuthenticatedUser:["DELETE /user/emails"],deleteGpgKeyForAuthenticated:["DELETE /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","deleteGpgKeyForAuthenticatedUser"]}],deleteGpgKeyForAuthenticatedUser:["DELETE /user/gpg_keys/{gpg_key_id}"],deletePublicSshKeyForAuthenticated:["DELETE /user/keys/{key_id}",{},{renamed:["users","deletePublicSshKeyForAuthenticatedUser"]}],deletePublicSshKeyForAuthenticatedUser:["DELETE /user/keys/{key_id}"],deleteSocialAccountForAuthenticatedUser:["DELETE /user/social_accounts"],deleteSshSigningKeyForAuthenticatedUser:["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"],follow:["PUT /user/following/{username}"],getAuthenticated:["GET /user"],getById:["GET /user/{account_id}"],getByUsername:["GET /users/{username}"],getContextForUser:["GET /users/{username}/hovercard"],getGpgKeyForAuthenticated:["GET /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","getGpgKeyForAuthenticatedUser"]}],getGpgKeyForAuthenticatedUser:["GET /user/gpg_keys/{gpg_key_id}"],getPublicSshKeyForAuthenticated:["GET /user/keys/{key_id}",{},{renamed:["users","getPublicSshKeyForAuthenticatedUser"]}],getPublicSshKeyForAuthenticatedUser:["GET /user/keys/{key_id}"],getSshSigningKeyForAuthenticatedUser:["GET /user/ssh_signing_keys/{ssh_signing_key_id}"],list:["GET /users"],listAttestations:["GET /users/{username}/attestations/{subject_digest}"],listAttestationsBulk:["POST /users/{username}/attestations/bulk-list{?per_page,before,after}"],listBlockedByAuthenticated:["GET /user/blocks",{},{renamed:["users","listBlockedByAuthenticatedUser"]}],listBlockedByAuthenticatedUser:["GET /user/blocks"],listEmailsForAuthenticated:["GET /user/emails",{},{renamed:["users","listEmailsForAuthenticatedUser"]}],listEmailsForAuthenticatedUser:["GET /user/emails"],listFollowedByAuthenticated:["GET /user/following",{},{renamed:["users","listFollowedByAuthenticatedUser"]}],listFollowedByAuthenticatedUser:["GET /user/following"],listFollowersForAuthenticatedUser:["GET /user/followers"],listFollowersForUser:["GET /users/{username}/followers"],listFollowingForUser:["GET /users/{username}/following"],listGpgKeysForAuthenticated:["GET /user/gpg_keys",{},{renamed:["users","listGpgKeysForAuthenticatedUser"]}],listGpgKeysForAuthenticatedUser:["GET /user/gpg_keys"],listGpgKeysForUser:["GET /users/{username}/gpg_keys"],listPublicEmailsForAuthenticated:["GET /user/public_emails",{},{renamed:["users","listPublicEmailsForAuthenticatedUser"]}],listPublicEmailsForAuthenticatedUser:["GET /user/public_emails"],listPublicKeysForUser:["GET /users/{username}/keys"],listPublicSshKeysForAuthenticated:["GET /user/keys",{},{renamed:["users","listPublicSshKeysForAuthenticatedUser"]}],listPublicSshKeysForAuthenticatedUser:["GET /user/keys"],listSocialAccountsForAuthenticatedUser:["GET /user/social_accounts"],listSocialAccountsForUser:["GET /users/{username}/social_accounts"],listSshSigningKeysForAuthenticatedUser:["GET /user/ssh_signing_keys"],listSshSigningKeysForUser:["GET /users/{username}/ssh_signing_keys"],setPrimaryEmailVisibilityForAuthenticated:["PATCH /user/email/visibility",{},{renamed:["users","setPrimaryEmailVisibilityForAuthenticatedUser"]}],setPrimaryEmailVisibilityForAuthenticatedUser:["PATCH /user/email/visibility"],unblock:["DELETE /user/blocks/{username}"],unfollow:["DELETE /user/following/{username}"],updateAuthenticated:["PATCH /user"]}},ci=El});function Jr(r){let e={};for(let t of mt.keys())e[t]=new Proxy({octokit:r,scope:t,cache:{}},Tl);return e}function Cl(r,e,t,s,o){let n=r.request.defaults(s);function i(...a){let c=n.endpoint.merge(...a);if(o.mapToData)return c=Object.assign({},c,{data:c[o.mapToData],[o.mapToData]:void 0}),n(c);if(o.renamed){let[l,u]=o.renamed;r.log.warn(`octokit.${e}.${t}() has been renamed to octokit.${l}.${u}()`)}if(o.deprecated&&r.log.warn(o.deprecated),o.renamedParameters){let l=n.endpoint.merge(...a);for(let[u,d]of Object.entries(o.renamedParameters))u in l&&(r.log.warn(`"${u}" parameter is deprecated for "octokit.${e}.${t}()". Use "${d}" instead`),d in l||(l[d]=l[u]),delete l[u]);return n(l)}return n(...a)}return Object.assign(i,n)}var mt,Tl,ui=$(()=>{li();mt=new Map;for(let[r,e]of Object.entries(ci))for(let[t,s]of Object.entries(e)){let[o,n,i]=s,[a,c]=o.split(/ /),l=Object.assign({method:a,url:c},n);mt.has(r)||mt.set(r,new Map),mt.get(r).set(t,{scope:r,methodName:t,endpointDefaults:l,decorations:i})}Tl={has({scope:r},e){return mt.get(r).has(e)},getOwnPropertyDescriptor(r,e){return{value:this.get(r,e),configurable:!0,writable:!0,enumerable:!0}},defineProperty(r,e,t){return Object.defineProperty(r.cache,e,t),!0},deleteProperty(r,e){return delete r.cache[e],!0},ownKeys({scope:r}){return[...mt.get(r).keys()]},set(r,e,t){return r.cache[e]=t},get({octokit:r,scope:e,cache:t},s){if(t[s])return t[s];let o=mt.get(e).get(s);if(!o)return;let{endpointDefaults:n,decorations:i}=o;return i?t[s]=Cl(r,e,s,n,i):t[s]=r.request.defaults(n),t[s]}}});function Sl(r){return{rest:Jr(r)}}function Kr(r){let e=Jr(r);return{...e,rest:e}}var pi=$(()=>{ai();ui();Sl.VERSION=Wr;Kr.VERSION=Wr});var di,gi=$(()=>{di="22.0.1"});var mi,hi=$(()=>{ei();ri();ii();pi();gi();mi=Es.plugin(Br,Kr,zr).defaults({userAgent:`octokit-rest.js/${di}`})});var fi=Je((Qr,Yr)=>{(function(r,e){typeof Qr=="object"&&typeof Yr<"u"?Yr.exports=e():typeof define=="function"&&define.amd?define(e):r.Bottleneck=e()})(Qr,(function(){"use strict";var r=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function e(D){return D&&D.default||D}var t=function(D,f,p={}){var b,v,E;for(b in f)E=f[b],p[b]=(v=D[b])!=null?v:E;return p},s=function(D,f,p={}){var b,v;for(b in D)v=D[b],f[b]!==void 0&&(p[b]=v);return p},o={load:t,overwrite:s},n;n=class{constructor(f,p){this.incr=f,this.decr=p,this._first=null,this._last=null,this.length=0}push(f){var p;this.length++,typeof this.incr=="function"&&this.incr(),p={value:f,prev:this._last,next:null},this._last!=null?(this._last.next=p,this._last=p):this._first=this._last=p}shift(){var f;if(this._first!=null)return this.length--,typeof this.decr=="function"&&this.decr(),f=this._first.value,(this._first=this._first.next)!=null?this._first.prev=null:this._last=null,f}first(){if(this._first!=null)return this._first.value}getArray(){var f,p,b;for(f=this._first,b=[];f!=null;)b.push((p=f,f=f.next,p.value));return b}forEachShift(f){var p;for(p=this.shift();p!=null;)f(p),p=this.shift()}debug(){var f,p,b,v,E;for(f=this._first,E=[];f!=null;)E.push((p=f,f=f.next,{value:p.value,prev:(b=p.prev)!=null?b.value:void 0,next:(v=p.next)!=null?v.value:void 0}));return E}};var i=n,a;a=class{constructor(f){if(this.instance=f,this._events={},this.instance.on!=null||this.instance.once!=null||this.instance.removeAllListeners!=null)throw new Error("An Emitter already exists for this object");this.instance.on=(p,b)=>this._addListener(p,"many",b),this.instance.once=(p,b)=>this._addListener(p,"once",b),this.instance.removeAllListeners=(p=null)=>p!=null?delete this._events[p]:this._events={}}_addListener(f,p,b){var v;return(v=this._events)[f]==null&&(v[f]=[]),this._events[f].push({cb:b,status:p}),this.instance}listenerCount(f){return this._events[f]!=null?this._events[f].length:0}async trigger(f,...p){var b,v;try{return f!=="debug"&&this.trigger("debug",`Event triggered: ${f}`,p),this._events[f]==null?void 0:(this._events[f]=this._events[f].filter(function(E){return E.status!=="none"}),v=this._events[f].map(async E=>{var P,x;if(E.status!=="none"){E.status==="once"&&(E.status="none");try{return x=typeof E.cb=="function"?E.cb(...p):void 0,typeof x?.then=="function"?await x:x}catch(V){return P=V,this.trigger("error",P),null}}}),(await Promise.all(v)).find(function(E){return E!=null}))}catch(E){return b=E,this.trigger("error",b),null}}};var c=a,l,u,d;l=i,u=c,d=class{constructor(f){var p;this.Events=new u(this),this._length=0,this._lists=(function(){var b,v,E;for(E=[],p=b=1,v=f;1<=v?b<=v:b>=v;p=1<=v?++b:--b)E.push(new l((()=>this.incr()),(()=>this.decr())));return E}).call(this)}incr(){if(this._length++===0)return this.Events.trigger("leftzero")}decr(){if(--this._length===0)return this.Events.trigger("zero")}push(f){return this._lists[f.options.priority].push(f)}queued(f){return f!=null?this._lists[f].length:this._length}shiftAll(f){return this._lists.forEach(function(p){return p.forEachShift(f)})}getFirst(f=this._lists){var p,b,v;for(p=0,b=f.length;p<b;p++)if(v=f[p],v.length>0)return v;return[]}shiftLastFrom(f){return this.getFirst(this._lists.slice(f).reverse()).shift()}};var m=d,w;w=class extends Error{};var y=w,g,R,h,S,C;S=10,R=5,C=o,g=y,h=class{constructor(f,p,b,v,E,P,x,V){this.task=f,this.args=p,this.rejectOnDrop=E,this.Events=P,this._states=x,this.Promise=V,this.options=C.load(b,v),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===v.id&&(this.options.id=`${this.options.id}-${this._randomIndex()}`),this.promise=new this.Promise((ge,he)=>{this._resolve=ge,this._reject=he}),this.retryCount=0}_sanitizePriority(f){var p;return p=~~f!==f?R:f,p<0?0:p>S-1?S-1:p}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:f,message:p="This job has been dropped by Bottleneck"}={}){return this._states.remove(this.options.id)?(this.rejectOnDrop&&this._reject(f??new g(p)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0):!1}_assertStatus(f){var p;if(p=this._states.jobStatus(this.options.id),!(p===f||f==="DONE"&&p===null))throw new g(`Invalid job status ${p}, expected ${f}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`)}doReceive(){return this._states.start(this.options.id),this.Events.trigger("received",{args:this.args,options:this.options})}doQueue(f,p){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:f,blocked:p})}doRun(){return this.retryCount===0?(this._assertStatus("QUEUED"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),this.Events.trigger("scheduled",{args:this.args,options:this.options})}async doExecute(f,p,b,v){var E,P,x;this.retryCount===0?(this._assertStatus("RUNNING"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),P={args:this.args,options:this.options,retryCount:this.retryCount},this.Events.trigger("executing",P);try{if(x=await(f!=null?f.schedule(this.options,this.task,...this.args):this.task(...this.args)),p())return this.doDone(P),await v(this.options,P),this._assertStatus("DONE"),this._resolve(x)}catch(V){return E=V,this._onFailure(E,P,p,b,v)}}doExpire(f,p,b){var v,E;return this._states.jobStatus(this.options.id==="RUNNING")&&this._states.next(this.options.id),this._assertStatus("EXECUTING"),E={args:this.args,options:this.options,retryCount:this.retryCount},v=new g(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(v,E,f,p,b)}async _onFailure(f,p,b,v,E){var P,x;if(b())return P=await this.Events.trigger("failed",f,p),P!=null?(x=~~P,this.Events.trigger("retry",`Retrying ${this.options.id} after ${x} ms`,p),this.retryCount++,v(x)):(this.doDone(p),await E(this.options,p),this._assertStatus("DONE"),this._reject(f))}doDone(f){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",f)}};var _=h,G,O,F;F=o,G=y,O=class{constructor(f,p,b){this.instance=f,this.storeOptions=p,this.clientId=this.instance._randomIndex(),F.load(b,b,this),this._nextRequest=this._lastReservoirRefresh=this._lastReservoirIncrease=Date.now(),this._running=0,this._done=0,this._unblockTime=0,this.ready=this.Promise.resolve(),this.clients={},this._startHeartbeat()}_startHeartbeat(){var f;return this.heartbeat==null&&(this.storeOptions.reservoirRefreshInterval!=null&&this.storeOptions.reservoirRefreshAmount!=null||this.storeOptions.reservoirIncreaseInterval!=null&&this.storeOptions.reservoirIncreaseAmount!=null)?typeof(f=this.heartbeat=setInterval(()=>{var p,b,v,E,P;if(E=Date.now(),this.storeOptions.reservoirRefreshInterval!=null&&E>=this._lastReservoirRefresh+this.storeOptions.reservoirRefreshInterval&&(this._lastReservoirRefresh=E,this.storeOptions.reservoir=this.storeOptions.reservoirRefreshAmount,this.instance._drainAll(this.computeCapacity())),this.storeOptions.reservoirIncreaseInterval!=null&&E>=this._lastReservoirIncrease+this.storeOptions.reservoirIncreaseInterval&&({reservoirIncreaseAmount:p,reservoirIncreaseMaximum:v,reservoir:P}=this.storeOptions,this._lastReservoirIncrease=E,b=v!=null?Math.min(p,v-P):p,b>0))return this.storeOptions.reservoir+=b,this.instance._drainAll(this.computeCapacity())},this.heartbeatInterval)).unref=="function"?f.unref():void 0:clearInterval(this.heartbeat)}async __publish__(f){return await this.yieldLoop(),this.instance.Events.trigger("message",f.toString())}async __disconnect__(f){return await this.yieldLoop(),clearInterval(this.heartbeat),this.Promise.resolve()}yieldLoop(f=0){return new this.Promise(function(p,b){return setTimeout(p,f)})}computePenalty(){var f;return(f=this.storeOptions.penalty)!=null?f:15*this.storeOptions.minTime||5e3}async __updateSettings__(f){return await this.yieldLoop(),F.overwrite(f,f,this.storeOptions),this._startHeartbeat(),this.instance._drainAll(this.computeCapacity()),!0}async __running__(){return await this.yieldLoop(),this._running}async __queued__(){return await this.yieldLoop(),this.instance.queued()}async __done__(){return await this.yieldLoop(),this._done}async __groupCheck__(f){return await this.yieldLoop(),this._nextRequest+this.timeout<f}computeCapacity(){var f,p;return{maxConcurrent:f,reservoir:p}=this.storeOptions,f!=null&&p!=null?Math.min(f-this._running,p):f!=null?f-this._running:p??null}conditionsCheck(f){var p;return p=this.computeCapacity(),p==null||f<=p}async __incrementReservoir__(f){var p;return await this.yieldLoop(),p=this.storeOptions.reservoir+=f,this.instance._drainAll(this.computeCapacity()),p}async __currentReservoir__(){return await this.yieldLoop(),this.storeOptions.reservoir}isBlocked(f){return this._unblockTime>=f}check(f,p){return this.conditionsCheck(f)&&this._nextRequest-p<=0}async __check__(f){var p;return await this.yieldLoop(),p=Date.now(),this.check(f,p)}async __register__(f,p,b){var v,E;return await this.yieldLoop(),v=Date.now(),this.conditionsCheck(p)?(this._running+=p,this.storeOptions.reservoir!=null&&(this.storeOptions.reservoir-=p),E=Math.max(this._nextRequest-v,0),this._nextRequest=v+E+this.storeOptions.minTime,{success:!0,wait:E,reservoir:this.storeOptions.reservoir}):{success:!1}}strategyIsBlock(){return this.storeOptions.strategy===3}async __submit__(f,p){var b,v,E;if(await this.yieldLoop(),this.storeOptions.maxConcurrent!=null&&p>this.storeOptions.maxConcurrent)throw new G(`Impossible to add a job having a weight of ${p} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);return v=Date.now(),E=this.storeOptions.highWater!=null&&f===this.storeOptions.highWater&&!this.check(p,v),b=this.strategyIsBlock()&&(E||this.isBlocked(v)),b&&(this._unblockTime=v+this.computePenalty(),this._nextRequest=this._unblockTime+this.storeOptions.minTime,this.instance._dropAllQueued()),{reachedHWM:E,blocked:b,strategy:this.storeOptions.strategy}}async __free__(f,p){return await this.yieldLoop(),this._running-=p,this._done+=p,this.instance._drainAll(this.computeCapacity()),{running:this._running}}};var Z=O,W,fe;W=y,fe=class{constructor(f){this.status=f,this._jobs={},this.counts=this.status.map(function(){return 0})}next(f){var p,b;if(p=this._jobs[f],b=p+1,p!=null&&b<this.status.length)return this.counts[p]--,this.counts[b]++,this._jobs[f]++;if(p!=null)return this.counts[p]--,delete this._jobs[f]}start(f){var p;return p=0,this._jobs[f]=p,this.counts[p]++}remove(f){var p;return p=this._jobs[f],p!=null&&(this.counts[p]--,delete this._jobs[f]),p!=null}jobStatus(f){var p;return(p=this.status[this._jobs[f]])!=null?p:null}statusJobs(f){var p,b,v,E,P;if(f!=null){if(b=this.status.indexOf(f),b<0)throw new W(`status must be one of ${this.status.join(", ")}`);v=this._jobs,E=[];for(p in v)P=v[p],P===b&&E.push(p);return E}else return Object.keys(this._jobs)}statusCounts(){return this.counts.reduce(((f,p,b)=>(f[this.status[b]]=p,f)),{})}};var Ge=fe,Ee,ye;Ee=i,ye=class{constructor(f,p){this.schedule=this.schedule.bind(this),this.name=f,this.Promise=p,this._running=0,this._queue=new Ee}isEmpty(){return this._queue.length===0}async _tryToRun(){var f,p,b,v,E,P,x;if(this._running<1&&this._queue.length>0)return this._running++,{task:x,args:f,resolve:E,reject:v}=this._queue.shift(),p=await(async function(){try{return P=await x(...f),function(){return E(P)}}catch(V){return b=V,function(){return v(b)}}})(),this._running--,this._tryToRun(),p()}schedule(f,...p){var b,v,E;return E=v=null,b=new this.Promise(function(P,x){return E=P,v=x}),this._queue.push({task:f,args:p,resolve:E,reject:v}),this._tryToRun(),b}};var ze=ye,B="2.19.5",le={version:B},ue=Object.freeze({version:B,default:le}),M=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),N=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),se=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),de,ee,pe,xe,ot,We;We=o,de=c,xe=M,pe=N,ot=se,ee=(function(){class D{constructor(p={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=p,We.load(this.limiterOptions,this.defaults,this),this.Events=new de(this),this.instances={},this.Bottleneck=Vo,this._startAutoCleanup(),this.sharedConnection=this.connection!=null,this.connection==null&&(this.limiterOptions.datastore==="redis"?this.connection=new xe(Object.assign({},this.limiterOptions,{Events:this.Events})):this.limiterOptions.datastore==="ioredis"&&(this.connection=new pe(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(p=""){var b;return(b=this.instances[p])!=null?b:(()=>{var v;return v=this.instances[p]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${p}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",v,p),v})()}async deleteKey(p=""){var b,v;return v=this.instances[p],this.connection&&(b=await this.connection.__runCommand__(["del",...ot.allKeys(`${this.id}-${p}`)])),v!=null&&(delete this.instances[p],await v.disconnect()),v!=null||b>0}limiters(){var p,b,v,E;b=this.instances,v=[];for(p in b)E=b[p],v.push({key:p,limiter:E});return v}keys(){return Object.keys(this.instances)}async clusterKeys(){var p,b,v,E,P,x,V,ge,he;if(this.connection==null)return this.Promise.resolve(this.keys());for(x=[],p=null,he=`b_${this.id}-`.length,b=9;p!==0;)for([ge,v]=await this.connection.__runCommand__(["scan",p??0,"match",`b_${this.id}-*_settings`,"count",1e4]),p=~~ge,E=0,V=v.length;E<V;E++)P=v[E],x.push(P.slice(he,-b));return x}_startAutoCleanup(){var p;return clearInterval(this.interval),typeof(p=this.interval=setInterval(async()=>{var b,v,E,P,x,V;x=Date.now(),E=this.instances,P=[];for(v in E){V=E[v];try{await V._store.__groupCheck__(x)?P.push(this.deleteKey(v)):P.push(void 0)}catch(ge){b=ge,P.push(V.Events.trigger("error",b))}}return P},this.timeout/2)).unref=="function"?p.unref():void 0}updateSettings(p={}){if(We.overwrite(p,this.defaults,this),We.overwrite(p,p,this.limiterOptions),p.timeout!=null)return this._startAutoCleanup()}disconnect(p=!0){var b;if(!this.sharedConnection)return(b=this.connection)!=null?b.disconnect(p):void 0}}return D.prototype.defaults={timeout:1e3*60*5,connection:null,Promise,id:"group-key"},D}).call(r);var rr=ee,Io,Fo,Uo;Uo=o,Fo=c,Io=(function(){class D{constructor(p={}){this.options=p,Uo.load(this.options,this.defaults,this),this.Events=new Fo(this),this._arr=[],this._resetPromise(),this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise((p,b)=>this._resolve=p)}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(p){var b;return this._arr.push(p),b=this._promise,this._arr.length===this.maxSize?this._flush():this.maxTime!=null&&this._arr.length===1&&(this._timeout=setTimeout(()=>this._flush(),this.maxTime)),b}}return D.prototype.defaults={maxTime:null,maxSize:null,Promise},D}).call(r);var ec=Io,tc=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),sc=e(ue),Mo,Lo,or,nr,jo,ir,No,Ho,qo,ar,qe,Bo=[].splice;ir=10,Lo=5,qe=o,No=m,nr=_,jo=Z,Ho=tc,or=c,qo=Ge,ar=ze,Mo=(function(){class D{constructor(p={},...b){var v,E;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(p,b),qe.load(p,this.instanceDefaults,this),this._queues=new No(ir),this._scheduled={},this._states=new qo(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new or(this),this._submitLock=new ar("submit",this.Promise),this._registerLock=new ar("register",this.Promise),E=qe.load(p,this.storeDefaults,{}),this._store=(function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null)return v=qe.load(p,this.redisStoreDefaults,{}),new Ho(this,E,v);if(this.datastore==="local")return v=qe.load(p,this.localStoreDefaults,{}),new jo(this,E,v);throw new D.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}).call(this),this._queues.on("leftzero",()=>{var P;return(P=this._store.heartbeat)!=null&&typeof P.ref=="function"?P.ref():void 0}),this._queues.on("zero",()=>{var P;return(P=this._store.heartbeat)!=null&&typeof P.unref=="function"?P.unref():void 0})}_validateOptions(p,b){if(!(p!=null&&typeof p=="object"&&b.length===0))throw new D.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(p){return this._store.__publish__(p)}disconnect(p=!0){return this._store.__disconnect__(p)}chain(p){return this._limiter=p,this}queued(p){return this._queues.queued(p)}clusterQueued(){return this._store.__queued__()}empty(){return this.queued()===0&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(p){return this._states.jobStatus(p)}jobs(p){return this._states.statusJobs(p)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(p=1){return this._store.__check__(p)}_clearGlobalState(p){return this._scheduled[p]!=null?(clearTimeout(this._scheduled[p].expiration),delete this._scheduled[p],!0):!1}async _free(p,b,v,E){var P,x;try{if({running:x}=await this._store.__free__(p,v.weight),this.Events.trigger("debug",`Freed ${v.id}`,E),x===0&&this.empty())return this.Events.trigger("idle")}catch(V){return P=V,this.Events.trigger("error",P)}}_run(p,b,v){var E,P,x;return b.doRun(),E=this._clearGlobalState.bind(this,p),x=this._run.bind(this,p,b),P=this._free.bind(this,p,b),this._scheduled[p]={timeout:setTimeout(()=>b.doExecute(this._limiter,E,x,P),v),expiration:b.options.expiration!=null?setTimeout(function(){return b.doExpire(E,x,P)},v+b.options.expiration):void 0,job:b}}_drainOne(p){return this._registerLock.schedule(()=>{var b,v,E,P,x;return this.queued()===0?this.Promise.resolve(null):(x=this._queues.getFirst(),{options:P,args:b}=E=x.first(),p!=null&&P.weight>p?this.Promise.resolve(null):(this.Events.trigger("debug",`Draining ${P.id}`,{args:b,options:P}),v=this._randomIndex(),this._store.__register__(v,P.weight,P.expiration).then(({success:V,wait:ge,reservoir:he})=>{var It;return this.Events.trigger("debug",`Drained ${P.id}`,{success:V,args:b,options:P}),V?(x.shift(),It=this.empty(),It&&this.Events.trigger("empty"),he===0&&this.Events.trigger("depleted",It),this._run(v,E,ge),this.Promise.resolve(P.weight)):this.Promise.resolve(null)})))})}_drainAll(p,b=0){return this._drainOne(p).then(v=>{var E;return v!=null?(E=p!=null?p-v:p,this._drainAll(E,b+v)):this.Promise.resolve(b)}).catch(v=>this.Events.trigger("error",v))}_dropAllQueued(p){return this._queues.shiftAll(function(b){return b.doDrop({message:p})})}stop(p={}){var b,v;return p=qe.load(p,this.stopDefaults),v=E=>{var P;return P=()=>{var x;return x=this._states.counts,x[0]+x[1]+x[2]+x[3]===E},new this.Promise((x,V)=>P()?x():this.on("done",()=>{if(P())return this.removeAllListeners("done"),x()}))},b=p.dropWaitingJobs?(this._run=function(E,P){return P.doDrop({message:p.dropErrorMessage})},this._drainOne=()=>this.Promise.resolve(null),this._registerLock.schedule(()=>this._submitLock.schedule(()=>{var E,P,x;P=this._scheduled;for(E in P)x=P[E],this.jobStatus(x.job.options.id)==="RUNNING"&&(clearTimeout(x.timeout),clearTimeout(x.expiration),x.job.doDrop({message:p.dropErrorMessage}));return this._dropAllQueued(p.dropErrorMessage),v(0)}))):this.schedule({priority:ir-1,weight:0},()=>v(1)),this._receive=function(E){return E._reject(new D.prototype.BottleneckError(p.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new D.prototype.BottleneckError("stop() has already been called")),b}async _addToQueue(p){var b,v,E,P,x,V,ge;({args:b,options:P}=p);try{({reachedHWM:x,blocked:v,strategy:ge}=await this._store.__submit__(this.queued(),P.weight))}catch(he){return E=he,this.Events.trigger("debug",`Could not queue ${P.id}`,{args:b,options:P,error:E}),p.doDrop({error:E}),!1}return v?(p.doDrop(),!0):x&&(V=ge===D.prototype.strategy.LEAK?this._queues.shiftLastFrom(P.priority):ge===D.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(P.priority+1):ge===D.prototype.strategy.OVERFLOW?p:void 0,V?.doDrop(),V==null||ge===D.prototype.strategy.OVERFLOW)?(V==null&&p.doDrop(),x):(p.doQueue(x,v),this._queues.push(p),await this._drainAll(),x)}_receive(p){return this._states.jobStatus(p.options.id)!=null?(p._reject(new D.prototype.BottleneckError(`A job with the same id already exists (id=${p.options.id})`)),!1):(p.doReceive(),this._submitLock.schedule(this._addToQueue,p))}submit(...p){var b,v,E,P,x,V,ge;return typeof p[0]=="function"?(x=p,[v,...p]=x,[b]=Bo.call(p,-1),P=qe.load({},this.jobDefaults)):(V=p,[P,v,...p]=V,[b]=Bo.call(p,-1),P=qe.load(P,this.jobDefaults)),ge=(...he)=>new this.Promise(function(It,oc){return v(...he,function(...zo){return(zo[0]!=null?oc:It)(zo)})}),E=new nr(ge,p,P,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),E.promise.then(function(he){return typeof b=="function"?b(...he):void 0}).catch(function(he){return Array.isArray(he)?typeof b=="function"?b(...he):void 0:typeof b=="function"?b(he):void 0}),this._receive(E)}schedule(...p){var b,v,E;return typeof p[0]=="function"?([E,...p]=p,v={}):[v,E,...p]=p,b=new nr(E,p,v,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(b),b.promise}wrap(p){var b,v;return b=this.schedule.bind(this),v=function(...E){return b(p.bind(this),...E)},v.withOptions=function(E,...P){return b(E,p,...P)},v}async updateSettings(p={}){return await this._store.__updateSettings__(qe.overwrite(p,this.storeDefaults)),qe.overwrite(p,this.instanceDefaults,this),this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(p=0){return this._store.__incrementReservoir__(p)}}return D.default=D,D.Events=or,D.version=D.prototype.version=sc.version,D.strategy=D.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},D.BottleneckError=D.prototype.BottleneckError=y,D.Group=D.prototype.Group=rr,D.RedisConnection=D.prototype.RedisConnection=M,D.IORedisConnection=D.prototype.IORedisConnection=N,D.Batcher=D.prototype.Batcher=ec,D.prototype.jobDefaults={priority:Lo,weight:1,expiration:null,id:"<no-id>"},D.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:D.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},D.prototype.localStoreDefaults={Promise,timeout:null,heartbeatInterval:250},D.prototype.redisStoreDefaults={Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},D.prototype.instanceDefaults={datastore:"local",connection:null,id:"<no-id>",rejectOnDrop:!0,trackDoneStatus:!1,Promise},D.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},D}).call(r);var Vo=Mo,rc=Vo;return rc}))});function kl(r,e,t){return r.retryLimiter.schedule(Al,r,e,t)}async function Al(r,e,t){let{pathname:s}=new URL(t.url,"http://github.test"),o=Ol(t.method,s),n=!o&&t.method!=="GET"&&t.method!=="HEAD",i=t.method==="GET"&&s.startsWith("/search/"),a=s.startsWith("/graphql"),l=~~e.retryCount>0?{priority:0,weight:0}:{};r.clustering&&(l.expiration=1e3*60),(n||a)&&await r.write.key(r.id).schedule(l,Xr),n&&r.triggersNotification(s)&&await r.notifications.key(r.id).schedule(l,Xr),i&&await r.search.key(r.id).schedule(l,Xr);let u=(o?r.auth:r.global).key(r.id).schedule(l,e,t);if(a){let d=await u;if(d.data.errors!=null&&d.data.errors.some(m=>m.type==="RATE_LIMITED"))throw Object.assign(new Error("GraphQL Rate Limit Exceeded"),{response:d,data:d.data})}return u}function Ol(r,e){return r==="PATCH"&&/^\/applications\/[^/]+\/token\/scoped$/.test(e)||r==="POST"&&(/^\/applications\/[^/]+\/token$/.test(e)||/^\/app\/installations\/[^/]+\/access_tokens$/.test(e)||e==="/login/oauth/access_token")}function Gl(r){let t=`^(?:${r.map(s=>s.split("/").map(o=>o.startsWith("{")?"(?:.+?)":o).join("/")).map(s=>`(?:${s})`).join("|")})[^/]*$`;return new RegExp(t,"i")}function Ts(r,e){let{enabled:t=!0,Bottleneck:s=yi.default,id:o="no-id",timeout:n=1e3*60*2,connection:i}=e.throttle||{};if(!t)return{};let a={timeout:n};typeof i<"u"&&(a.connection=i),ht.global==null&&xl(s,a);let c=Object.assign({clustering:i!=null,triggersNotification:vi,fallbackSecondaryRateRetryAfter:60,retryAfterBaseValue:1e3,retryLimiter:new s,id:o,...ht},e.throttle);if(typeof c.onSecondaryRateLimit!="function"||typeof c.onRateLimit!="function")throw new Error(`octokit/plugin-throttling error:
35
+ `)}function dl(r,e,t){if(t){if(typeof e=="string"&&"query"in t)return Promise.reject(new Error('[@octokit/graphql] "query" cannot be used as variable name'));for(let i in t)if(pl.includes(i))return Promise.reject(new Error(`[@octokit/graphql] "${i}" cannot be used as variable name`))}let s=typeof e=="string"?Object.assign({query:e},t):e,o=Object.keys(s).reduce((i,a)=>ul.includes(a)?(i[a]=s[a],i):(i.variables||(i.variables={}),i.variables[a]=s[a],i),{}),n=s.baseUrl||r.endpoint.DEFAULTS.baseUrl;return Hn.test(n)&&(o.url=n.replace(Hn,"/api/graphql")),r(o).then(i=>{if(i.data.errors){let a={};for(let c of Object.keys(i.headers))a[c]=i.headers[c];throw new ll(o,a,i.data)}return i.data.data})}function Nr(r,e){let t=r.defaults(e);return Object.assign((o,n)=>dl(t,o,n),{defaults:Nr.bind(null,t),endpoint:t.endpoint})}function qn(r){return Nr(r,{method:"POST",url:"/graphql"})}var al,ll,ul,pl,Hn,nd,Bn=G(()=>{jr();Lt();al="0.0.0-development";ll=class extends Error{constructor(r,e,t){super(cl(t)),this.request=r,this.headers=e,this.response=t,this.errors=t.errors,this.data=t.data,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}name="GraphqlResponseError";errors;data},ul=["method","baseUrl","url","headers","request","query","mediaType","operationName"],pl=["query","method","url"],Hn=/\/api\/v3\/?$/;nd=Nr(Ht,{headers:{"user-agent":`octokit-graphql.js/${al} ${rt()}`},method:"POST",url:"/graphql"})});async function ml(r){let e=gl(r),t=r.startsWith("v1.")||r.startsWith("ghs_"),s=r.startsWith("ghu_");return{type:"token",token:r,tokenType:e?"app":t?"installation":s?"user-to-server":"oauth"}}function hl(r){return r.split(/\./).length===3?`bearer ${r}`:`token ${r}`}async function fl(r,e,t,s){let o=e.endpoint.merge(t,s);return o.headers.authorization=hl(r),e(o)}var Hr,Vn,zn,gl,Wn,Jn=G(()=>{Hr="(?:[a-zA-Z0-9_-]+)",Vn="\\.",zn=new RegExp(`^${Hr}${Vn}${Hr}${Vn}${Hr}$`),gl=zn.test.bind(zn);Wn=function(e){if(!e)throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");if(typeof e!="string")throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");return e=e.replace(/^(token|bearer) +/i,""),Object.assign(ml.bind(null,e),{hook:fl.bind(null,e)})}});var qr,Kn=G(()=>{qr="7.0.6"});function vl(r={}){return typeof r.debug!="function"&&(r.debug=Qn),typeof r.info!="function"&&(r.info=Qn),typeof r.warn!="function"&&(r.warn=bl),typeof r.error!="function"&&(r.error=yl),r}var Qn,bl,yl,Yn,_s,Xn=G(()=>{Lt();yn();jr();Bn();Jn();Kn();Qn=()=>{},bl=console.warn.bind(console),yl=console.error.bind(console);Yn=`octokit-core.js/${qr} ${rt()}`,_s=class{static VERSION=qr;static defaults(e){return class extends this{constructor(...s){let o=s[0]||{};if(typeof e=="function"){super(e(o));return}super(Object.assign({},e,o,o.userAgent&&e.userAgent?{userAgent:`${o.userAgent} ${e.userAgent}`}:null))}}}static plugins=[];static plugin(...e){let t=this.plugins;return class extends this{static plugins=t.concat(e.filter(o=>!t.includes(o)))}}constructor(e={}){let t=new bn.Collection,s={baseUrl:Ht.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},e.request,{hook:t.bind(null,"request")}),mediaType:{previews:[],format:""}};if(s.headers["user-agent"]=e.userAgent?`${e.userAgent} ${Yn}`:Yn,e.baseUrl&&(s.baseUrl=e.baseUrl),e.previews&&(s.mediaType.previews=e.previews),e.timeZone&&(s.headers["time-zone"]=e.timeZone),this.request=Ht.defaults(s),this.graphql=qn(this.request).defaults(s),this.log=vl(e.log),this.hook=t,e.authStrategy){let{authStrategy:n,...i}=e,a=n(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:i},e.auth));t.wrap("request",a.hook),this.auth=a}else if(!e.auth)this.auth=async()=>({type:"unauthenticated"});else{let n=Wn(e.auth);t.wrap("request",n.hook),this.auth=n}let o=this.constructor;for(let n=0;n<o.plugins.length;++n)Object.assign(this,o.plugins[n](this,e))}request;graphql;log;hook;auth}});var Zn,ei=G(()=>{Zn="6.0.0"});function Br(r){r.hook.wrap("request",(e,t)=>{r.log.debug("request",t);let s=Date.now(),o=r.request.endpoint.parse(t),n=o.url.replace(t.baseUrl,"");return e(t).then(i=>{let a=i.headers["x-github-request-id"];return r.log.info(`${o.method} ${n} - ${i.status} with id ${a} in ${Date.now()-s}ms`),i}).catch(i=>{let a=i.response?.headers["x-github-request-id"]||"UNKNOWN";throw r.log.error(`${o.method} ${n} - ${i.status} with id ${a} in ${Date.now()-s}ms`),i})})}var ti=G(()=>{ei();Br.VERSION=Zn});function wl(r){if(!r.data)return{...r,data:[]};if(!(("total_count"in r.data||"total_commits"in r.data)&&!("url"in r.data)))return r;let t=r.data.incomplete_results,s=r.data.repository_selection,o=r.data.total_count,n=r.data.total_commits;delete r.data.incomplete_results,delete r.data.repository_selection,delete r.data.total_count,delete r.data.total_commits;let i=Object.keys(r.data)[0],a=r.data[i];return r.data=a,typeof t<"u"&&(r.data.incomplete_results=t),typeof s<"u"&&(r.data.repository_selection=s),r.data.total_count=o,r.data.total_commits=n,r}function Vr(r,e,t){let s=typeof e=="function"?e.endpoint(t):r.request.endpoint(e,t),o=typeof e=="function"?e:r.request,n=s.method,i=s.headers,a=s.url;return{[Symbol.asyncIterator]:()=>({async next(){if(!a)return{done:!0};try{let c=await o({method:n,url:a,headers:i}),l=wl(c);if(a=((l.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!a&&"total_commits"in l.data){let p=new URL(l.url),d=p.searchParams,m=parseInt(d.get("page")||"1",10),_=parseInt(d.get("per_page")||"250",10);m*_<l.data.total_commits&&(d.set("page",String(m+1)),a=p.toString())}return{value:l}}catch(c){if(c.status!==409)throw c;return a="",{value:{status:200,headers:{},data:[]}}}}})}}function si(r,e,t,s){return typeof t=="function"&&(s=t,t=void 0),ri(r,[],Vr(r,e,t)[Symbol.asyncIterator](),s)}function ri(r,e,t,s){return t.next().then(o=>{if(o.done)return e;let n=!1;function i(){n=!0}return e=e.concat(s?s(o.value,i):o.value.data),n?e:ri(r,e,t,s)})}function zr(r){return{paginate:Object.assign(si.bind(null,r),{iterator:Vr.bind(null,r)})}}var _l,Rd,oi=G(()=>{_l="0.0.0-development";Rd=Object.assign(si,{iterator:Vr});zr.VERSION=_l});var Wr,ni=G(()=>{Wr="17.0.0"});var Rl,ii,ai=G(()=>{Rl={actions:{addCustomLabelsToSelfHostedRunnerForOrg:["POST /orgs/{org}/actions/runners/{runner_id}/labels"],addCustomLabelsToSelfHostedRunnerForRepo:["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],addRepoAccessToSelfHostedRunnerGroupInOrg:["PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],approveWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],cancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],createEnvironmentVariable:["POST /repos/{owner}/{repo}/environments/{environment_name}/variables"],createHostedRunnerForOrg:["POST /orgs/{org}/actions/hosted-runners"],createOrUpdateEnvironmentSecret:["PUT /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],createOrgVariable:["POST /orgs/{org}/actions/variables"],createRegistrationTokenForOrg:["POST /orgs/{org}/actions/runners/registration-token"],createRegistrationTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/registration-token"],createRemoveTokenForOrg:["POST /orgs/{org}/actions/runners/remove-token"],createRemoveTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/remove-token"],createRepoVariable:["POST /repos/{owner}/{repo}/actions/variables"],createWorkflowDispatch:["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],deleteActionsCacheById:["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"],deleteActionsCacheByKey:["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"],deleteArtifact:["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],deleteCustomImageFromOrg:["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"],deleteCustomImageVersionFromOrg:["DELETE /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"],deleteEnvironmentSecret:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],deleteEnvironmentVariable:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],deleteHostedRunnerForOrg:["DELETE /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],deleteOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}"],deleteOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],deleteRepoVariable:["DELETE /repos/{owner}/{repo}/actions/variables/{name}"],deleteSelfHostedRunnerFromOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}"],deleteSelfHostedRunnerFromRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"],deleteWorkflowRun:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],deleteWorkflowRunLogs:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],disableSelectedRepositoryGithubActionsOrganization:["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"],disableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"],downloadArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"],downloadJobLogsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"],downloadWorkflowRunAttemptLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"],downloadWorkflowRunLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],enableSelectedRepositoryGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"],enableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"],forceCancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"],generateRunnerJitconfigForOrg:["POST /orgs/{org}/actions/runners/generate-jitconfig"],generateRunnerJitconfigForRepo:["POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"],getActionsCacheList:["GET /repos/{owner}/{repo}/actions/caches"],getActionsCacheUsage:["GET /repos/{owner}/{repo}/actions/cache/usage"],getActionsCacheUsageByRepoForOrg:["GET /orgs/{org}/actions/cache/usage-by-repository"],getActionsCacheUsageForOrg:["GET /orgs/{org}/actions/cache/usage"],getAllowedActionsOrganization:["GET /orgs/{org}/actions/permissions/selected-actions"],getAllowedActionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],getArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],getCustomImageForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}"],getCustomImageVersionForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions/{version}"],getCustomOidcSubClaimForRepo:["GET /repos/{owner}/{repo}/actions/oidc/customization/sub"],getEnvironmentPublicKey:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/public-key"],getEnvironmentSecret:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets/{secret_name}"],getEnvironmentVariable:["GET /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],getGithubActionsDefaultWorkflowPermissionsOrganization:["GET /orgs/{org}/actions/permissions/workflow"],getGithubActionsDefaultWorkflowPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/workflow"],getGithubActionsPermissionsOrganization:["GET /orgs/{org}/actions/permissions"],getGithubActionsPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions"],getHostedRunnerForOrg:["GET /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],getHostedRunnersGithubOwnedImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/github-owned"],getHostedRunnersLimitsForOrg:["GET /orgs/{org}/actions/hosted-runners/limits"],getHostedRunnersMachineSpecsForOrg:["GET /orgs/{org}/actions/hosted-runners/machine-sizes"],getHostedRunnersPartnerImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/partner"],getHostedRunnersPlatformsForOrg:["GET /orgs/{org}/actions/hosted-runners/platforms"],getJobForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],getOrgPublicKey:["GET /orgs/{org}/actions/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}"],getOrgVariable:["GET /orgs/{org}/actions/variables/{name}"],getPendingDeploymentsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],getRepoPermissions:["GET /repos/{owner}/{repo}/actions/permissions",{},{renamed:["actions","getGithubActionsPermissionsRepository"]}],getRepoPublicKey:["GET /repos/{owner}/{repo}/actions/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],getRepoVariable:["GET /repos/{owner}/{repo}/actions/variables/{name}"],getReviewsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"],getSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}"],getSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],getWorkflow:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],getWorkflowAccessToRepository:["GET /repos/{owner}/{repo}/actions/permissions/access"],getWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],getWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"],getWorkflowRunUsage:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],getWorkflowUsage:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],listArtifactsForRepo:["GET /repos/{owner}/{repo}/actions/artifacts"],listCustomImageVersionsForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom/{image_definition_id}/versions"],listCustomImagesForOrg:["GET /orgs/{org}/actions/hosted-runners/images/custom"],listEnvironmentSecrets:["GET /repos/{owner}/{repo}/environments/{environment_name}/secrets"],listEnvironmentVariables:["GET /repos/{owner}/{repo}/environments/{environment_name}/variables"],listGithubHostedRunnersInGroupForOrg:["GET /orgs/{org}/actions/runner-groups/{runner_group_id}/hosted-runners"],listHostedRunnersForOrg:["GET /orgs/{org}/actions/hosted-runners"],listJobsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],listJobsForWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"],listLabelsForSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}/labels"],listLabelsForSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],listOrgSecrets:["GET /orgs/{org}/actions/secrets"],listOrgVariables:["GET /orgs/{org}/actions/variables"],listRepoOrganizationSecrets:["GET /repos/{owner}/{repo}/actions/organization-secrets"],listRepoOrganizationVariables:["GET /repos/{owner}/{repo}/actions/organization-variables"],listRepoSecrets:["GET /repos/{owner}/{repo}/actions/secrets"],listRepoVariables:["GET /repos/{owner}/{repo}/actions/variables"],listRepoWorkflows:["GET /repos/{owner}/{repo}/actions/workflows"],listRunnerApplicationsForOrg:["GET /orgs/{org}/actions/runners/downloads"],listRunnerApplicationsForRepo:["GET /repos/{owner}/{repo}/actions/runners/downloads"],listSelectedReposForOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"],listSelectedReposForOrgVariable:["GET /orgs/{org}/actions/variables/{name}/repositories"],listSelectedRepositoriesEnabledGithubActionsOrganization:["GET /orgs/{org}/actions/permissions/repositories"],listSelfHostedRunnersForOrg:["GET /orgs/{org}/actions/runners"],listSelfHostedRunnersForRepo:["GET /repos/{owner}/{repo}/actions/runners"],listWorkflowRunArtifacts:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"],listWorkflowRuns:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"],listWorkflowRunsForRepo:["GET /repos/{owner}/{repo}/actions/runs"],reRunJobForWorkflowRun:["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"],reRunWorkflow:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],reRunWorkflowFailedJobs:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"],removeAllCustomLabelsFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"],removeAllCustomLabelsFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],removeCustomLabelFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"],removeCustomLabelFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],reviewCustomGatesForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"],reviewPendingDeploymentsForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],setAllowedActionsOrganization:["PUT /orgs/{org}/actions/permissions/selected-actions"],setAllowedActionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],setCustomLabelsForSelfHostedRunnerForOrg:["PUT /orgs/{org}/actions/runners/{runner_id}/labels"],setCustomLabelsForSelfHostedRunnerForRepo:["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],setCustomOidcSubClaimForRepo:["PUT /repos/{owner}/{repo}/actions/oidc/customization/sub"],setGithubActionsDefaultWorkflowPermissionsOrganization:["PUT /orgs/{org}/actions/permissions/workflow"],setGithubActionsDefaultWorkflowPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/workflow"],setGithubActionsPermissionsOrganization:["PUT /orgs/{org}/actions/permissions"],setGithubActionsPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"],setSelectedReposForOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories"],setSelectedRepositoriesEnabledGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories"],setWorkflowAccessToRepository:["PUT /repos/{owner}/{repo}/actions/permissions/access"],updateEnvironmentVariable:["PATCH /repos/{owner}/{repo}/environments/{environment_name}/variables/{name}"],updateHostedRunnerForOrg:["PATCH /orgs/{org}/actions/hosted-runners/{hosted_runner_id}"],updateOrgVariable:["PATCH /orgs/{org}/actions/variables/{name}"],updateRepoVariable:["PATCH /repos/{owner}/{repo}/actions/variables/{name}"]},activity:{checkRepoIsStarredByAuthenticatedUser:["GET /user/starred/{owner}/{repo}"],deleteRepoSubscription:["DELETE /repos/{owner}/{repo}/subscription"],deleteThreadSubscription:["DELETE /notifications/threads/{thread_id}/subscription"],getFeeds:["GET /feeds"],getRepoSubscription:["GET /repos/{owner}/{repo}/subscription"],getThread:["GET /notifications/threads/{thread_id}"],getThreadSubscriptionForAuthenticatedUser:["GET /notifications/threads/{thread_id}/subscription"],listEventsForAuthenticatedUser:["GET /users/{username}/events"],listNotificationsForAuthenticatedUser:["GET /notifications"],listOrgEventsForAuthenticatedUser:["GET /users/{username}/events/orgs/{org}"],listPublicEvents:["GET /events"],listPublicEventsForRepoNetwork:["GET /networks/{owner}/{repo}/events"],listPublicEventsForUser:["GET /users/{username}/events/public"],listPublicOrgEvents:["GET /orgs/{org}/events"],listReceivedEventsForUser:["GET /users/{username}/received_events"],listReceivedPublicEventsForUser:["GET /users/{username}/received_events/public"],listRepoEvents:["GET /repos/{owner}/{repo}/events"],listRepoNotificationsForAuthenticatedUser:["GET /repos/{owner}/{repo}/notifications"],listReposStarredByAuthenticatedUser:["GET /user/starred"],listReposStarredByUser:["GET /users/{username}/starred"],listReposWatchedByUser:["GET /users/{username}/subscriptions"],listStargazersForRepo:["GET /repos/{owner}/{repo}/stargazers"],listWatchedReposForAuthenticatedUser:["GET /user/subscriptions"],listWatchersForRepo:["GET /repos/{owner}/{repo}/subscribers"],markNotificationsAsRead:["PUT /notifications"],markRepoNotificationsAsRead:["PUT /repos/{owner}/{repo}/notifications"],markThreadAsDone:["DELETE /notifications/threads/{thread_id}"],markThreadAsRead:["PATCH /notifications/threads/{thread_id}"],setRepoSubscription:["PUT /repos/{owner}/{repo}/subscription"],setThreadSubscription:["PUT /notifications/threads/{thread_id}/subscription"],starRepoForAuthenticatedUser:["PUT /user/starred/{owner}/{repo}"],unstarRepoForAuthenticatedUser:["DELETE /user/starred/{owner}/{repo}"]},apps:{addRepoToInstallation:["PUT /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","addRepoToInstallationForAuthenticatedUser"]}],addRepoToInstallationForAuthenticatedUser:["PUT /user/installations/{installation_id}/repositories/{repository_id}"],checkToken:["POST /applications/{client_id}/token"],createFromManifest:["POST /app-manifests/{code}/conversions"],createInstallationAccessToken:["POST /app/installations/{installation_id}/access_tokens"],deleteAuthorization:["DELETE /applications/{client_id}/grant"],deleteInstallation:["DELETE /app/installations/{installation_id}"],deleteToken:["DELETE /applications/{client_id}/token"],getAuthenticated:["GET /app"],getBySlug:["GET /apps/{app_slug}"],getInstallation:["GET /app/installations/{installation_id}"],getOrgInstallation:["GET /orgs/{org}/installation"],getRepoInstallation:["GET /repos/{owner}/{repo}/installation"],getSubscriptionPlanForAccount:["GET /marketplace_listing/accounts/{account_id}"],getSubscriptionPlanForAccountStubbed:["GET /marketplace_listing/stubbed/accounts/{account_id}"],getUserInstallation:["GET /users/{username}/installation"],getWebhookConfigForApp:["GET /app/hook/config"],getWebhookDelivery:["GET /app/hook/deliveries/{delivery_id}"],listAccountsForPlan:["GET /marketplace_listing/plans/{plan_id}/accounts"],listAccountsForPlanStubbed:["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"],listInstallationReposForAuthenticatedUser:["GET /user/installations/{installation_id}/repositories"],listInstallationRequestsForAuthenticatedApp:["GET /app/installation-requests"],listInstallations:["GET /app/installations"],listInstallationsForAuthenticatedUser:["GET /user/installations"],listPlans:["GET /marketplace_listing/plans"],listPlansStubbed:["GET /marketplace_listing/stubbed/plans"],listReposAccessibleToInstallation:["GET /installation/repositories"],listSubscriptionsForAuthenticatedUser:["GET /user/marketplace_purchases"],listSubscriptionsForAuthenticatedUserStubbed:["GET /user/marketplace_purchases/stubbed"],listWebhookDeliveries:["GET /app/hook/deliveries"],redeliverWebhookDelivery:["POST /app/hook/deliveries/{delivery_id}/attempts"],removeRepoFromInstallation:["DELETE /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","removeRepoFromInstallationForAuthenticatedUser"]}],removeRepoFromInstallationForAuthenticatedUser:["DELETE /user/installations/{installation_id}/repositories/{repository_id}"],resetToken:["PATCH /applications/{client_id}/token"],revokeInstallationAccessToken:["DELETE /installation/token"],scopeToken:["POST /applications/{client_id}/token/scoped"],suspendInstallation:["PUT /app/installations/{installation_id}/suspended"],unsuspendInstallation:["DELETE /app/installations/{installation_id}/suspended"],updateWebhookConfigForApp:["PATCH /app/hook/config"]},billing:{getGithubActionsBillingOrg:["GET /orgs/{org}/settings/billing/actions"],getGithubActionsBillingUser:["GET /users/{username}/settings/billing/actions"],getGithubBillingPremiumRequestUsageReportOrg:["GET /organizations/{org}/settings/billing/premium_request/usage"],getGithubBillingPremiumRequestUsageReportUser:["GET /users/{username}/settings/billing/premium_request/usage"],getGithubBillingUsageReportOrg:["GET /organizations/{org}/settings/billing/usage"],getGithubBillingUsageReportUser:["GET /users/{username}/settings/billing/usage"],getGithubPackagesBillingOrg:["GET /orgs/{org}/settings/billing/packages"],getGithubPackagesBillingUser:["GET /users/{username}/settings/billing/packages"],getSharedStorageBillingOrg:["GET /orgs/{org}/settings/billing/shared-storage"],getSharedStorageBillingUser:["GET /users/{username}/settings/billing/shared-storage"]},campaigns:{createCampaign:["POST /orgs/{org}/campaigns"],deleteCampaign:["DELETE /orgs/{org}/campaigns/{campaign_number}"],getCampaignSummary:["GET /orgs/{org}/campaigns/{campaign_number}"],listOrgCampaigns:["GET /orgs/{org}/campaigns"],updateCampaign:["PATCH /orgs/{org}/campaigns/{campaign_number}"]},checks:{create:["POST /repos/{owner}/{repo}/check-runs"],createSuite:["POST /repos/{owner}/{repo}/check-suites"],get:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],getSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],listAnnotations:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"],listForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],listForSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"],listSuitesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],rerequestRun:["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"],rerequestSuite:["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"],setSuitesPreferences:["PATCH /repos/{owner}/{repo}/check-suites/preferences"],update:["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]},codeScanning:{commitAutofix:["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix/commits"],createAutofix:["POST /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"],createVariantAnalysis:["POST /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses"],deleteAnalysis:["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"],deleteCodeqlDatabase:["DELETE /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getAlert:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}",{},{renamedParameters:{alert_id:"alert_number"}}],getAnalysis:["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"],getAutofix:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/autofix"],getCodeqlDatabase:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getDefaultSetup:["GET /repos/{owner}/{repo}/code-scanning/default-setup"],getSarif:["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],getVariantAnalysis:["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}"],getVariantAnalysisRepoTask:["GET /repos/{owner}/{repo}/code-scanning/codeql/variant-analyses/{codeql_variant_analysis_id}/repos/{repo_owner}/{repo_name}"],listAlertInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"],listAlertsForOrg:["GET /orgs/{org}/code-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/code-scanning/alerts"],listAlertsInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",{},{renamed:["codeScanning","listAlertInstances"]}],listCodeqlDatabases:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"],listRecentAnalyses:["GET /repos/{owner}/{repo}/code-scanning/analyses"],updateAlert:["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"],updateDefaultSetup:["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"],uploadSarif:["POST /repos/{owner}/{repo}/code-scanning/sarifs"]},codeSecurity:{attachConfiguration:["POST /orgs/{org}/code-security/configurations/{configuration_id}/attach"],attachEnterpriseConfiguration:["POST /enterprises/{enterprise}/code-security/configurations/{configuration_id}/attach"],createConfiguration:["POST /orgs/{org}/code-security/configurations"],createConfigurationForEnterprise:["POST /enterprises/{enterprise}/code-security/configurations"],deleteConfiguration:["DELETE /orgs/{org}/code-security/configurations/{configuration_id}"],deleteConfigurationForEnterprise:["DELETE /enterprises/{enterprise}/code-security/configurations/{configuration_id}"],detachConfiguration:["DELETE /orgs/{org}/code-security/configurations/detach"],getConfiguration:["GET /orgs/{org}/code-security/configurations/{configuration_id}"],getConfigurationForRepository:["GET /repos/{owner}/{repo}/code-security-configuration"],getConfigurationsForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations"],getConfigurationsForOrg:["GET /orgs/{org}/code-security/configurations"],getDefaultConfigurations:["GET /orgs/{org}/code-security/configurations/defaults"],getDefaultConfigurationsForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations/defaults"],getRepositoriesForConfiguration:["GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories"],getRepositoriesForEnterpriseConfiguration:["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}/repositories"],getSingleConfigurationForEnterprise:["GET /enterprises/{enterprise}/code-security/configurations/{configuration_id}"],setConfigurationAsDefault:["PUT /orgs/{org}/code-security/configurations/{configuration_id}/defaults"],setConfigurationAsDefaultForEnterprise:["PUT /enterprises/{enterprise}/code-security/configurations/{configuration_id}/defaults"],updateConfiguration:["PATCH /orgs/{org}/code-security/configurations/{configuration_id}"],updateEnterpriseConfiguration:["PATCH /enterprises/{enterprise}/code-security/configurations/{configuration_id}"]},codesOfConduct:{getAllCodesOfConduct:["GET /codes_of_conduct"],getConductCode:["GET /codes_of_conduct/{key}"]},codespaces:{addRepositoryForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],checkPermissionsForDevcontainer:["GET /repos/{owner}/{repo}/codespaces/permissions_check"],codespaceMachinesForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/machines"],createForAuthenticatedUser:["POST /user/codespaces"],createOrUpdateOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],createOrUpdateSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}"],createWithPrForAuthenticatedUser:["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"],createWithRepoForAuthenticatedUser:["POST /repos/{owner}/{repo}/codespaces"],deleteForAuthenticatedUser:["DELETE /user/codespaces/{codespace_name}"],deleteFromOrganization:["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"],deleteOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],deleteSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}"],exportForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/exports"],getCodespacesForUserInOrg:["GET /orgs/{org}/members/{username}/codespaces"],getExportDetailsForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/exports/{export_id}"],getForAuthenticatedUser:["GET /user/codespaces/{codespace_name}"],getOrgPublicKey:["GET /orgs/{org}/codespaces/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}"],getPublicKeyForAuthenticatedUser:["GET /user/codespaces/secrets/public-key"],getRepoPublicKey:["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],getSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}"],listDevcontainersInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/devcontainers"],listForAuthenticatedUser:["GET /user/codespaces"],listInOrganization:["GET /orgs/{org}/codespaces",{},{renamedParameters:{org_id:"org"}}],listInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces"],listOrgSecrets:["GET /orgs/{org}/codespaces/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/codespaces/secrets"],listRepositoriesForSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}/repositories"],listSecretsForAuthenticatedUser:["GET /user/codespaces/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],preFlightWithRepoForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/new"],publishForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/publish"],removeRepositoryForSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],repoMachinesForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/machines"],setRepositoriesForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],startForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/start"],stopForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/stop"],stopInOrganization:["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"],updateForAuthenticatedUser:["PATCH /user/codespaces/{codespace_name}"]},copilot:{addCopilotSeatsForTeams:["POST /orgs/{org}/copilot/billing/selected_teams"],addCopilotSeatsForUsers:["POST /orgs/{org}/copilot/billing/selected_users"],cancelCopilotSeatAssignmentForTeams:["DELETE /orgs/{org}/copilot/billing/selected_teams"],cancelCopilotSeatAssignmentForUsers:["DELETE /orgs/{org}/copilot/billing/selected_users"],copilotMetricsForOrganization:["GET /orgs/{org}/copilot/metrics"],copilotMetricsForTeam:["GET /orgs/{org}/team/{team_slug}/copilot/metrics"],getCopilotOrganizationDetails:["GET /orgs/{org}/copilot/billing"],getCopilotSeatDetailsForUser:["GET /orgs/{org}/members/{username}/copilot"],listCopilotSeats:["GET /orgs/{org}/copilot/billing/seats"]},credentials:{revoke:["POST /credentials/revoke"]},dependabot:{addSelectedRepoToOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],deleteOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],getAlert:["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],getOrgPublicKey:["GET /orgs/{org}/dependabot/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}"],getRepoPublicKey:["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],listAlertsForEnterprise:["GET /enterprises/{enterprise}/dependabot/alerts"],listAlertsForOrg:["GET /orgs/{org}/dependabot/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/dependabot/alerts"],listOrgSecrets:["GET /orgs/{org}/dependabot/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/dependabot/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],repositoryAccessForOrg:["GET /organizations/{org}/dependabot/repository-access"],setRepositoryAccessDefaultLevel:["PUT /organizations/{org}/dependabot/repository-access/default-level"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],updateAlert:["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],updateRepositoryAccessForOrg:["PATCH /organizations/{org}/dependabot/repository-access"]},dependencyGraph:{createRepositorySnapshot:["POST /repos/{owner}/{repo}/dependency-graph/snapshots"],diffRange:["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"],exportSbom:["GET /repos/{owner}/{repo}/dependency-graph/sbom"]},emojis:{get:["GET /emojis"]},enterpriseTeamMemberships:{add:["PUT /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"],bulkAdd:["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/add"],bulkRemove:["POST /enterprises/{enterprise}/teams/{enterprise-team}/memberships/remove"],get:["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"],list:["GET /enterprises/{enterprise}/teams/{enterprise-team}/memberships"],remove:["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/memberships/{username}"]},enterpriseTeamOrganizations:{add:["PUT /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],bulkAdd:["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/add"],bulkRemove:["POST /enterprises/{enterprise}/teams/{enterprise-team}/organizations/remove"],delete:["DELETE /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],getAssignment:["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations/{org}"],getAssignments:["GET /enterprises/{enterprise}/teams/{enterprise-team}/organizations"]},enterpriseTeams:{create:["POST /enterprises/{enterprise}/teams"],delete:["DELETE /enterprises/{enterprise}/teams/{team_slug}"],get:["GET /enterprises/{enterprise}/teams/{team_slug}"],list:["GET /enterprises/{enterprise}/teams"],update:["PATCH /enterprises/{enterprise}/teams/{team_slug}"]},gists:{checkIsStarred:["GET /gists/{gist_id}/star"],create:["POST /gists"],createComment:["POST /gists/{gist_id}/comments"],delete:["DELETE /gists/{gist_id}"],deleteComment:["DELETE /gists/{gist_id}/comments/{comment_id}"],fork:["POST /gists/{gist_id}/forks"],get:["GET /gists/{gist_id}"],getComment:["GET /gists/{gist_id}/comments/{comment_id}"],getRevision:["GET /gists/{gist_id}/{sha}"],list:["GET /gists"],listComments:["GET /gists/{gist_id}/comments"],listCommits:["GET /gists/{gist_id}/commits"],listForUser:["GET /users/{username}/gists"],listForks:["GET /gists/{gist_id}/forks"],listPublic:["GET /gists/public"],listStarred:["GET /gists/starred"],star:["PUT /gists/{gist_id}/star"],unstar:["DELETE /gists/{gist_id}/star"],update:["PATCH /gists/{gist_id}"],updateComment:["PATCH /gists/{gist_id}/comments/{comment_id}"]},git:{createBlob:["POST /repos/{owner}/{repo}/git/blobs"],createCommit:["POST /repos/{owner}/{repo}/git/commits"],createRef:["POST /repos/{owner}/{repo}/git/refs"],createTag:["POST /repos/{owner}/{repo}/git/tags"],createTree:["POST /repos/{owner}/{repo}/git/trees"],deleteRef:["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],getBlob:["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],getCommit:["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],getRef:["GET /repos/{owner}/{repo}/git/ref/{ref}"],getTag:["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],getTree:["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],listMatchingRefs:["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],updateRef:["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]},gitignore:{getAllTemplates:["GET /gitignore/templates"],getTemplate:["GET /gitignore/templates/{name}"]},hostedCompute:{createNetworkConfigurationForOrg:["POST /orgs/{org}/settings/network-configurations"],deleteNetworkConfigurationFromOrg:["DELETE /orgs/{org}/settings/network-configurations/{network_configuration_id}"],getNetworkConfigurationForOrg:["GET /orgs/{org}/settings/network-configurations/{network_configuration_id}"],getNetworkSettingsForOrg:["GET /orgs/{org}/settings/network-settings/{network_settings_id}"],listNetworkConfigurationsForOrg:["GET /orgs/{org}/settings/network-configurations"],updateNetworkConfigurationForOrg:["PATCH /orgs/{org}/settings/network-configurations/{network_configuration_id}"]},interactions:{getRestrictionsForAuthenticatedUser:["GET /user/interaction-limits"],getRestrictionsForOrg:["GET /orgs/{org}/interaction-limits"],getRestrictionsForRepo:["GET /repos/{owner}/{repo}/interaction-limits"],getRestrictionsForYourPublicRepos:["GET /user/interaction-limits",{},{renamed:["interactions","getRestrictionsForAuthenticatedUser"]}],removeRestrictionsForAuthenticatedUser:["DELETE /user/interaction-limits"],removeRestrictionsForOrg:["DELETE /orgs/{org}/interaction-limits"],removeRestrictionsForRepo:["DELETE /repos/{owner}/{repo}/interaction-limits"],removeRestrictionsForYourPublicRepos:["DELETE /user/interaction-limits",{},{renamed:["interactions","removeRestrictionsForAuthenticatedUser"]}],setRestrictionsForAuthenticatedUser:["PUT /user/interaction-limits"],setRestrictionsForOrg:["PUT /orgs/{org}/interaction-limits"],setRestrictionsForRepo:["PUT /repos/{owner}/{repo}/interaction-limits"],setRestrictionsForYourPublicRepos:["PUT /user/interaction-limits",{},{renamed:["interactions","setRestrictionsForAuthenticatedUser"]}]},issues:{addAssignees:["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"],addBlockedByDependency:["POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"],addLabels:["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],addSubIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"],checkUserCanBeAssigned:["GET /repos/{owner}/{repo}/assignees/{assignee}"],checkUserCanBeAssignedToIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"],create:["POST /repos/{owner}/{repo}/issues"],createComment:["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"],createLabel:["POST /repos/{owner}/{repo}/labels"],createMilestone:["POST /repos/{owner}/{repo}/milestones"],deleteComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"],deleteLabel:["DELETE /repos/{owner}/{repo}/labels/{name}"],deleteMilestone:["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"],get:["GET /repos/{owner}/{repo}/issues/{issue_number}"],getComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],getEvent:["GET /repos/{owner}/{repo}/issues/events/{event_id}"],getLabel:["GET /repos/{owner}/{repo}/labels/{name}"],getMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],getParent:["GET /repos/{owner}/{repo}/issues/{issue_number}/parent"],list:["GET /issues"],listAssignees:["GET /repos/{owner}/{repo}/assignees"],listComments:["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],listCommentsForRepo:["GET /repos/{owner}/{repo}/issues/comments"],listDependenciesBlockedBy:["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by"],listDependenciesBlocking:["GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocking"],listEvents:["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],listEventsForRepo:["GET /repos/{owner}/{repo}/issues/events"],listEventsForTimeline:["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"],listForAuthenticatedUser:["GET /user/issues"],listForOrg:["GET /orgs/{org}/issues"],listForRepo:["GET /repos/{owner}/{repo}/issues"],listLabelsForMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"],listLabelsForRepo:["GET /repos/{owner}/{repo}/labels"],listLabelsOnIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"],listMilestones:["GET /repos/{owner}/{repo}/milestones"],listSubIssues:["GET /repos/{owner}/{repo}/issues/{issue_number}/sub_issues"],lock:["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],removeAllLabels:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"],removeAssignees:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"],removeDependencyBlockedBy:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}"],removeLabel:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"],removeSubIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/sub_issue"],reprioritizeSubIssue:["PATCH /repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority"],setLabels:["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],unlock:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],update:["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],updateComment:["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],updateLabel:["PATCH /repos/{owner}/{repo}/labels/{name}"],updateMilestone:["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]},licenses:{get:["GET /licenses/{license}"],getAllCommonlyUsed:["GET /licenses"],getForRepo:["GET /repos/{owner}/{repo}/license"]},markdown:{render:["POST /markdown"],renderRaw:["POST /markdown/raw",{headers:{"content-type":"text/plain; charset=utf-8"}}]},meta:{get:["GET /meta"],getAllVersions:["GET /versions"],getOctocat:["GET /octocat"],getZen:["GET /zen"],root:["GET /"]},migrations:{deleteArchiveForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/archive"],deleteArchiveForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/archive"],downloadArchiveForOrg:["GET /orgs/{org}/migrations/{migration_id}/archive"],getArchiveForAuthenticatedUser:["GET /user/migrations/{migration_id}/archive"],getStatusForAuthenticatedUser:["GET /user/migrations/{migration_id}"],getStatusForOrg:["GET /orgs/{org}/migrations/{migration_id}"],listForAuthenticatedUser:["GET /user/migrations"],listForOrg:["GET /orgs/{org}/migrations"],listReposForAuthenticatedUser:["GET /user/migrations/{migration_id}/repositories"],listReposForOrg:["GET /orgs/{org}/migrations/{migration_id}/repositories"],listReposForUser:["GET /user/migrations/{migration_id}/repositories",{},{renamed:["migrations","listReposForAuthenticatedUser"]}],startForAuthenticatedUser:["POST /user/migrations"],startForOrg:["POST /orgs/{org}/migrations"],unlockRepoForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"],unlockRepoForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"]},oidc:{getOidcCustomSubTemplateForOrg:["GET /orgs/{org}/actions/oidc/customization/sub"],updateOidcCustomSubTemplateForOrg:["PUT /orgs/{org}/actions/oidc/customization/sub"]},orgs:{addSecurityManagerTeam:["PUT /orgs/{org}/security-managers/teams/{team_slug}",{},{deprecated:"octokit.rest.orgs.addSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#add-a-security-manager-team"}],assignTeamToOrgRole:["PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"],assignUserToOrgRole:["PUT /orgs/{org}/organization-roles/users/{username}/{role_id}"],blockUser:["PUT /orgs/{org}/blocks/{username}"],cancelInvitation:["DELETE /orgs/{org}/invitations/{invitation_id}"],checkBlockedUser:["GET /orgs/{org}/blocks/{username}"],checkMembershipForUser:["GET /orgs/{org}/members/{username}"],checkPublicMembershipForUser:["GET /orgs/{org}/public_members/{username}"],convertMemberToOutsideCollaborator:["PUT /orgs/{org}/outside_collaborators/{username}"],createArtifactStorageRecord:["POST /orgs/{org}/artifacts/metadata/storage-record"],createInvitation:["POST /orgs/{org}/invitations"],createIssueType:["POST /orgs/{org}/issue-types"],createWebhook:["POST /orgs/{org}/hooks"],customPropertiesForOrgsCreateOrUpdateOrganizationValues:["PATCH /organizations/{org}/org-properties/values"],customPropertiesForOrgsGetOrganizationValues:["GET /organizations/{org}/org-properties/values"],customPropertiesForReposCreateOrUpdateOrganizationDefinition:["PUT /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposCreateOrUpdateOrganizationDefinitions:["PATCH /orgs/{org}/properties/schema"],customPropertiesForReposCreateOrUpdateOrganizationValues:["PATCH /orgs/{org}/properties/values"],customPropertiesForReposDeleteOrganizationDefinition:["DELETE /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposGetOrganizationDefinition:["GET /orgs/{org}/properties/schema/{custom_property_name}"],customPropertiesForReposGetOrganizationDefinitions:["GET /orgs/{org}/properties/schema"],customPropertiesForReposGetOrganizationValues:["GET /orgs/{org}/properties/values"],delete:["DELETE /orgs/{org}"],deleteAttestationsBulk:["POST /orgs/{org}/attestations/delete-request"],deleteAttestationsById:["DELETE /orgs/{org}/attestations/{attestation_id}"],deleteAttestationsBySubjectDigest:["DELETE /orgs/{org}/attestations/digest/{subject_digest}"],deleteIssueType:["DELETE /orgs/{org}/issue-types/{issue_type_id}"],deleteWebhook:["DELETE /orgs/{org}/hooks/{hook_id}"],disableSelectedRepositoryImmutableReleasesOrganization:["DELETE /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"],enableSelectedRepositoryImmutableReleasesOrganization:["PUT /orgs/{org}/settings/immutable-releases/repositories/{repository_id}"],get:["GET /orgs/{org}"],getImmutableReleasesSettings:["GET /orgs/{org}/settings/immutable-releases"],getImmutableReleasesSettingsRepositories:["GET /orgs/{org}/settings/immutable-releases/repositories"],getMembershipForAuthenticatedUser:["GET /user/memberships/orgs/{org}"],getMembershipForUser:["GET /orgs/{org}/memberships/{username}"],getOrgRole:["GET /orgs/{org}/organization-roles/{role_id}"],getOrgRulesetHistory:["GET /orgs/{org}/rulesets/{ruleset_id}/history"],getOrgRulesetVersion:["GET /orgs/{org}/rulesets/{ruleset_id}/history/{version_id}"],getWebhook:["GET /orgs/{org}/hooks/{hook_id}"],getWebhookConfigForOrg:["GET /orgs/{org}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"],list:["GET /organizations"],listAppInstallations:["GET /orgs/{org}/installations"],listArtifactStorageRecords:["GET /orgs/{org}/artifacts/{subject_digest}/metadata/storage-records"],listAttestationRepositories:["GET /orgs/{org}/attestations/repositories"],listAttestations:["GET /orgs/{org}/attestations/{subject_digest}"],listAttestationsBulk:["POST /orgs/{org}/attestations/bulk-list{?per_page,before,after}"],listBlockedUsers:["GET /orgs/{org}/blocks"],listFailedInvitations:["GET /orgs/{org}/failed_invitations"],listForAuthenticatedUser:["GET /user/orgs"],listForUser:["GET /users/{username}/orgs"],listInvitationTeams:["GET /orgs/{org}/invitations/{invitation_id}/teams"],listIssueTypes:["GET /orgs/{org}/issue-types"],listMembers:["GET /orgs/{org}/members"],listMembershipsForAuthenticatedUser:["GET /user/memberships/orgs"],listOrgRoleTeams:["GET /orgs/{org}/organization-roles/{role_id}/teams"],listOrgRoleUsers:["GET /orgs/{org}/organization-roles/{role_id}/users"],listOrgRoles:["GET /orgs/{org}/organization-roles"],listOrganizationFineGrainedPermissions:["GET /orgs/{org}/organization-fine-grained-permissions"],listOutsideCollaborators:["GET /orgs/{org}/outside_collaborators"],listPatGrantRepositories:["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"],listPatGrantRequestRepositories:["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"],listPatGrantRequests:["GET /orgs/{org}/personal-access-token-requests"],listPatGrants:["GET /orgs/{org}/personal-access-tokens"],listPendingInvitations:["GET /orgs/{org}/invitations"],listPublicMembers:["GET /orgs/{org}/public_members"],listSecurityManagerTeams:["GET /orgs/{org}/security-managers",{},{deprecated:"octokit.rest.orgs.listSecurityManagerTeams() is deprecated, see https://docs.github.com/rest/orgs/security-managers#list-security-manager-teams"}],listWebhookDeliveries:["GET /orgs/{org}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /orgs/{org}/hooks"],pingWebhook:["POST /orgs/{org}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeMember:["DELETE /orgs/{org}/members/{username}"],removeMembershipForUser:["DELETE /orgs/{org}/memberships/{username}"],removeOutsideCollaborator:["DELETE /orgs/{org}/outside_collaborators/{username}"],removePublicMembershipForAuthenticatedUser:["DELETE /orgs/{org}/public_members/{username}"],removeSecurityManagerTeam:["DELETE /orgs/{org}/security-managers/teams/{team_slug}",{},{deprecated:"octokit.rest.orgs.removeSecurityManagerTeam() is deprecated, see https://docs.github.com/rest/orgs/security-managers#remove-a-security-manager-team"}],reviewPatGrantRequest:["POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"],reviewPatGrantRequestsInBulk:["POST /orgs/{org}/personal-access-token-requests"],revokeAllOrgRolesTeam:["DELETE /orgs/{org}/organization-roles/teams/{team_slug}"],revokeAllOrgRolesUser:["DELETE /orgs/{org}/organization-roles/users/{username}"],revokeOrgRoleTeam:["DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"],revokeOrgRoleUser:["DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}"],setImmutableReleasesSettings:["PUT /orgs/{org}/settings/immutable-releases"],setImmutableReleasesSettingsRepositories:["PUT /orgs/{org}/settings/immutable-releases/repositories"],setMembershipForUser:["PUT /orgs/{org}/memberships/{username}"],setPublicMembershipForAuthenticatedUser:["PUT /orgs/{org}/public_members/{username}"],unblockUser:["DELETE /orgs/{org}/blocks/{username}"],update:["PATCH /orgs/{org}"],updateIssueType:["PUT /orgs/{org}/issue-types/{issue_type_id}"],updateMembershipForAuthenticatedUser:["PATCH /user/memberships/orgs/{org}"],updatePatAccess:["POST /orgs/{org}/personal-access-tokens/{pat_id}"],updatePatAccesses:["POST /orgs/{org}/personal-access-tokens"],updateWebhook:["PATCH /orgs/{org}/hooks/{hook_id}"],updateWebhookConfigForOrg:["PATCH /orgs/{org}/hooks/{hook_id}/config"]},packages:{deletePackageForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}"],deletePackageForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}"],deletePackageForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}"],deletePackageVersionForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getAllPackageVersionsForAPackageOwnedByAnOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByOrg"]}],getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]}],getAllPackageVersionsForPackageOwnedByAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions"],getPackageForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}"],getPackageForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}"],getPackageForUser:["GET /users/{username}/packages/{package_type}/{package_name}"],getPackageVersionForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],listDockerMigrationConflictingPackagesForAuthenticatedUser:["GET /user/docker/conflicts"],listDockerMigrationConflictingPackagesForOrganization:["GET /orgs/{org}/docker/conflicts"],listDockerMigrationConflictingPackagesForUser:["GET /users/{username}/docker/conflicts"],listPackagesForAuthenticatedUser:["GET /user/packages"],listPackagesForOrganization:["GET /orgs/{org}/packages"],listPackagesForUser:["GET /users/{username}/packages"],restorePackageForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForUser:["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageVersionForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForUser:["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]},privateRegistries:{createOrgPrivateRegistry:["POST /orgs/{org}/private-registries"],deleteOrgPrivateRegistry:["DELETE /orgs/{org}/private-registries/{secret_name}"],getOrgPrivateRegistry:["GET /orgs/{org}/private-registries/{secret_name}"],getOrgPublicKey:["GET /orgs/{org}/private-registries/public-key"],listOrgPrivateRegistries:["GET /orgs/{org}/private-registries"],updateOrgPrivateRegistry:["PATCH /orgs/{org}/private-registries/{secret_name}"]},projects:{addItemForOrg:["POST /orgs/{org}/projectsV2/{project_number}/items"],addItemForUser:["POST /users/{username}/projectsV2/{project_number}/items"],deleteItemForOrg:["DELETE /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],deleteItemForUser:["DELETE /users/{username}/projectsV2/{project_number}/items/{item_id}"],getFieldForOrg:["GET /orgs/{org}/projectsV2/{project_number}/fields/{field_id}"],getFieldForUser:["GET /users/{username}/projectsV2/{project_number}/fields/{field_id}"],getForOrg:["GET /orgs/{org}/projectsV2/{project_number}"],getForUser:["GET /users/{username}/projectsV2/{project_number}"],getOrgItem:["GET /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],getUserItem:["GET /users/{username}/projectsV2/{project_number}/items/{item_id}"],listFieldsForOrg:["GET /orgs/{org}/projectsV2/{project_number}/fields"],listFieldsForUser:["GET /users/{username}/projectsV2/{project_number}/fields"],listForOrg:["GET /orgs/{org}/projectsV2"],listForUser:["GET /users/{username}/projectsV2"],listItemsForOrg:["GET /orgs/{org}/projectsV2/{project_number}/items"],listItemsForUser:["GET /users/{username}/projectsV2/{project_number}/items"],updateItemForOrg:["PATCH /orgs/{org}/projectsV2/{project_number}/items/{item_id}"],updateItemForUser:["PATCH /users/{username}/projectsV2/{project_number}/items/{item_id}"]},pulls:{checkIfMerged:["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],create:["POST /repos/{owner}/{repo}/pulls"],createReplyForReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"],createReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],createReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"],deletePendingReview:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],deleteReviewComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"],dismissReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"],get:["GET /repos/{owner}/{repo}/pulls/{pull_number}"],getReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],getReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],list:["GET /repos/{owner}/{repo}/pulls"],listCommentsForReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"],listCommits:["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],listFiles:["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],listRequestedReviewers:["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],listReviewComments:["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"],listReviewCommentsForRepo:["GET /repos/{owner}/{repo}/pulls/comments"],listReviews:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],merge:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],removeRequestedReviewers:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],requestReviewers:["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],submitReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"],update:["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],updateBranch:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"],updateReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],updateReviewComment:["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]},rateLimit:{get:["GET /rate_limit"]},reactions:{createForCommitComment:["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"],createForIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"],createForIssueComment:["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],createForPullRequestReviewComment:["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],createForRelease:["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"],createForTeamDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],createForTeamDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"],deleteForCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"],deleteForIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"],deleteForIssueComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"],deleteForPullRequestComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"],deleteForRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"],deleteForTeamDiscussion:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"],deleteForTeamDiscussionComment:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"],listForCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"],listForIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],listForIssueComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],listForPullRequestReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],listForRelease:["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"],listForTeamDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],listForTeamDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]},repos:{acceptInvitation:["PATCH /user/repository_invitations/{invitation_id}",{},{renamed:["repos","acceptInvitationForAuthenticatedUser"]}],acceptInvitationForAuthenticatedUser:["PATCH /user/repository_invitations/{invitation_id}"],addAppAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],addCollaborator:["PUT /repos/{owner}/{repo}/collaborators/{username}"],addStatusCheckContexts:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],addTeamAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],addUserAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],cancelPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel"],checkAutomatedSecurityFixes:["GET /repos/{owner}/{repo}/automated-security-fixes"],checkCollaborator:["GET /repos/{owner}/{repo}/collaborators/{username}"],checkImmutableReleases:["GET /repos/{owner}/{repo}/immutable-releases"],checkPrivateVulnerabilityReporting:["GET /repos/{owner}/{repo}/private-vulnerability-reporting"],checkVulnerabilityAlerts:["GET /repos/{owner}/{repo}/vulnerability-alerts"],codeownersErrors:["GET /repos/{owner}/{repo}/codeowners/errors"],compareCommits:["GET /repos/{owner}/{repo}/compare/{base}...{head}"],compareCommitsWithBasehead:["GET /repos/{owner}/{repo}/compare/{basehead}"],createAttestation:["POST /repos/{owner}/{repo}/attestations"],createAutolink:["POST /repos/{owner}/{repo}/autolinks"],createCommitComment:["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"],createCommitSignatureProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],createCommitStatus:["POST /repos/{owner}/{repo}/statuses/{sha}"],createDeployKey:["POST /repos/{owner}/{repo}/keys"],createDeployment:["POST /repos/{owner}/{repo}/deployments"],createDeploymentBranchPolicy:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],createDeploymentProtectionRule:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],createDeploymentStatus:["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],createDispatchEvent:["POST /repos/{owner}/{repo}/dispatches"],createForAuthenticatedUser:["POST /user/repos"],createFork:["POST /repos/{owner}/{repo}/forks"],createInOrg:["POST /orgs/{org}/repos"],createOrUpdateEnvironment:["PUT /repos/{owner}/{repo}/environments/{environment_name}"],createOrUpdateFileContents:["PUT /repos/{owner}/{repo}/contents/{path}"],createOrgRuleset:["POST /orgs/{org}/rulesets"],createPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployments"],createPagesSite:["POST /repos/{owner}/{repo}/pages"],createRelease:["POST /repos/{owner}/{repo}/releases"],createRepoRuleset:["POST /repos/{owner}/{repo}/rulesets"],createUsingTemplate:["POST /repos/{template_owner}/{template_repo}/generate"],createWebhook:["POST /repos/{owner}/{repo}/hooks"],customPropertiesForReposCreateOrUpdateRepositoryValues:["PATCH /repos/{owner}/{repo}/properties/values"],customPropertiesForReposGetRepositoryValues:["GET /repos/{owner}/{repo}/properties/values"],declineInvitation:["DELETE /user/repository_invitations/{invitation_id}",{},{renamed:["repos","declineInvitationForAuthenticatedUser"]}],declineInvitationForAuthenticatedUser:["DELETE /user/repository_invitations/{invitation_id}"],delete:["DELETE /repos/{owner}/{repo}"],deleteAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],deleteAdminBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],deleteAnEnvironment:["DELETE /repos/{owner}/{repo}/environments/{environment_name}"],deleteAutolink:["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],deleteBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],deleteCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],deleteCommitSignatureProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],deleteDeployKey:["DELETE /repos/{owner}/{repo}/keys/{key_id}"],deleteDeployment:["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"],deleteDeploymentBranchPolicy:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],deleteFile:["DELETE /repos/{owner}/{repo}/contents/{path}"],deleteInvitation:["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"],deleteOrgRuleset:["DELETE /orgs/{org}/rulesets/{ruleset_id}"],deletePagesSite:["DELETE /repos/{owner}/{repo}/pages"],deletePullRequestReviewProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],deleteRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}"],deleteReleaseAsset:["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"],deleteRepoRuleset:["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"],deleteWebhook:["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],disableAutomatedSecurityFixes:["DELETE /repos/{owner}/{repo}/automated-security-fixes"],disableDeploymentProtectionRule:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],disableImmutableReleases:["DELETE /repos/{owner}/{repo}/immutable-releases"],disablePrivateVulnerabilityReporting:["DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"],disableVulnerabilityAlerts:["DELETE /repos/{owner}/{repo}/vulnerability-alerts"],downloadArchive:["GET /repos/{owner}/{repo}/zipball/{ref}",{},{renamed:["repos","downloadZipballArchive"]}],downloadTarballArchive:["GET /repos/{owner}/{repo}/tarball/{ref}"],downloadZipballArchive:["GET /repos/{owner}/{repo}/zipball/{ref}"],enableAutomatedSecurityFixes:["PUT /repos/{owner}/{repo}/automated-security-fixes"],enableImmutableReleases:["PUT /repos/{owner}/{repo}/immutable-releases"],enablePrivateVulnerabilityReporting:["PUT /repos/{owner}/{repo}/private-vulnerability-reporting"],enableVulnerabilityAlerts:["PUT /repos/{owner}/{repo}/vulnerability-alerts"],generateReleaseNotes:["POST /repos/{owner}/{repo}/releases/generate-notes"],get:["GET /repos/{owner}/{repo}"],getAccessRestrictions:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],getAdminBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],getAllDeploymentProtectionRules:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],getAllEnvironments:["GET /repos/{owner}/{repo}/environments"],getAllStatusCheckContexts:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],getAllTopics:["GET /repos/{owner}/{repo}/topics"],getAppsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"],getAutolink:["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],getBranch:["GET /repos/{owner}/{repo}/branches/{branch}"],getBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection"],getBranchRules:["GET /repos/{owner}/{repo}/rules/branches/{branch}"],getClones:["GET /repos/{owner}/{repo}/traffic/clones"],getCodeFrequencyStats:["GET /repos/{owner}/{repo}/stats/code_frequency"],getCollaboratorPermissionLevel:["GET /repos/{owner}/{repo}/collaborators/{username}/permission"],getCombinedStatusForRef:["GET /repos/{owner}/{repo}/commits/{ref}/status"],getCommit:["GET /repos/{owner}/{repo}/commits/{ref}"],getCommitActivityStats:["GET /repos/{owner}/{repo}/stats/commit_activity"],getCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}"],getCommitSignatureProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],getCommunityProfileMetrics:["GET /repos/{owner}/{repo}/community/profile"],getContent:["GET /repos/{owner}/{repo}/contents/{path}"],getContributorsStats:["GET /repos/{owner}/{repo}/stats/contributors"],getCustomDeploymentProtectionRule:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],getDeployKey:["GET /repos/{owner}/{repo}/keys/{key_id}"],getDeployment:["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],getDeploymentBranchPolicy:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],getDeploymentStatus:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],getEnvironment:["GET /repos/{owner}/{repo}/environments/{environment_name}"],getLatestPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/latest"],getLatestRelease:["GET /repos/{owner}/{repo}/releases/latest"],getOrgRuleSuite:["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"],getOrgRuleSuites:["GET /orgs/{org}/rulesets/rule-suites"],getOrgRuleset:["GET /orgs/{org}/rulesets/{ruleset_id}"],getOrgRulesets:["GET /orgs/{org}/rulesets"],getPages:["GET /repos/{owner}/{repo}/pages"],getPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],getPagesDeployment:["GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}"],getPagesHealthCheck:["GET /repos/{owner}/{repo}/pages/health"],getParticipationStats:["GET /repos/{owner}/{repo}/stats/participation"],getPullRequestReviewProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],getPunchCardStats:["GET /repos/{owner}/{repo}/stats/punch_card"],getReadme:["GET /repos/{owner}/{repo}/readme"],getReadmeInDirectory:["GET /repos/{owner}/{repo}/readme/{dir}"],getRelease:["GET /repos/{owner}/{repo}/releases/{release_id}"],getReleaseAsset:["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],getReleaseByTag:["GET /repos/{owner}/{repo}/releases/tags/{tag}"],getRepoRuleSuite:["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"],getRepoRuleSuites:["GET /repos/{owner}/{repo}/rulesets/rule-suites"],getRepoRuleset:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],getRepoRulesetHistory:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history"],getRepoRulesetVersion:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}/history/{version_id}"],getRepoRulesets:["GET /repos/{owner}/{repo}/rulesets"],getStatusChecksProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],getTeamsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"],getTopPaths:["GET /repos/{owner}/{repo}/traffic/popular/paths"],getTopReferrers:["GET /repos/{owner}/{repo}/traffic/popular/referrers"],getUsersWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"],getViews:["GET /repos/{owner}/{repo}/traffic/views"],getWebhook:["GET /repos/{owner}/{repo}/hooks/{hook_id}"],getWebhookConfigForRepo:["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"],listActivities:["GET /repos/{owner}/{repo}/activity"],listAttestations:["GET /repos/{owner}/{repo}/attestations/{subject_digest}"],listAutolinks:["GET /repos/{owner}/{repo}/autolinks"],listBranches:["GET /repos/{owner}/{repo}/branches"],listBranchesForHeadCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"],listCollaborators:["GET /repos/{owner}/{repo}/collaborators"],listCommentsForCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"],listCommitCommentsForRepo:["GET /repos/{owner}/{repo}/comments"],listCommitStatusesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/statuses"],listCommits:["GET /repos/{owner}/{repo}/commits"],listContributors:["GET /repos/{owner}/{repo}/contributors"],listCustomDeploymentRuleIntegrations:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"],listDeployKeys:["GET /repos/{owner}/{repo}/keys"],listDeploymentBranchPolicies:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],listDeploymentStatuses:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],listDeployments:["GET /repos/{owner}/{repo}/deployments"],listForAuthenticatedUser:["GET /user/repos"],listForOrg:["GET /orgs/{org}/repos"],listForUser:["GET /users/{username}/repos"],listForks:["GET /repos/{owner}/{repo}/forks"],listInvitations:["GET /repos/{owner}/{repo}/invitations"],listInvitationsForAuthenticatedUser:["GET /user/repository_invitations"],listLanguages:["GET /repos/{owner}/{repo}/languages"],listPagesBuilds:["GET /repos/{owner}/{repo}/pages/builds"],listPublic:["GET /repositories"],listPullRequestsAssociatedWithCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"],listReleaseAssets:["GET /repos/{owner}/{repo}/releases/{release_id}/assets"],listReleases:["GET /repos/{owner}/{repo}/releases"],listTags:["GET /repos/{owner}/{repo}/tags"],listTeams:["GET /repos/{owner}/{repo}/teams"],listWebhookDeliveries:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /repos/{owner}/{repo}/hooks"],merge:["POST /repos/{owner}/{repo}/merges"],mergeUpstream:["POST /repos/{owner}/{repo}/merge-upstream"],pingWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeAppAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],removeCollaborator:["DELETE /repos/{owner}/{repo}/collaborators/{username}"],removeStatusCheckContexts:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],removeStatusCheckProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],removeTeamAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],removeUserAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],renameBranch:["POST /repos/{owner}/{repo}/branches/{branch}/rename"],replaceAllTopics:["PUT /repos/{owner}/{repo}/topics"],requestPagesBuild:["POST /repos/{owner}/{repo}/pages/builds"],setAdminBranchProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],setAppAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],setStatusCheckContexts:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],setTeamAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],setUserAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],testPushWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],transfer:["POST /repos/{owner}/{repo}/transfer"],update:["PATCH /repos/{owner}/{repo}"],updateBranchProtection:["PUT /repos/{owner}/{repo}/branches/{branch}/protection"],updateCommitComment:["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],updateDeploymentBranchPolicy:["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],updateInformationAboutPagesSite:["PUT /repos/{owner}/{repo}/pages"],updateInvitation:["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"],updateOrgRuleset:["PUT /orgs/{org}/rulesets/{ruleset_id}"],updatePullRequestReviewProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],updateRelease:["PATCH /repos/{owner}/{repo}/releases/{release_id}"],updateReleaseAsset:["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"],updateRepoRuleset:["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"],updateStatusCheckPotection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",{},{renamed:["repos","updateStatusCheckProtection"]}],updateStatusCheckProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],updateWebhook:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],updateWebhookConfigForRepo:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"],uploadReleaseAsset:["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",{baseUrl:"https://uploads.github.com"}]},search:{code:["GET /search/code"],commits:["GET /search/commits"],issuesAndPullRequests:["GET /search/issues"],labels:["GET /search/labels"],repos:["GET /search/repositories"],topics:["GET /search/topics"],users:["GET /search/users"]},secretScanning:{createPushProtectionBypass:["POST /repos/{owner}/{repo}/secret-scanning/push-protection-bypasses"],getAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],getScanHistory:["GET /repos/{owner}/{repo}/secret-scanning/scan-history"],listAlertsForOrg:["GET /orgs/{org}/secret-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/secret-scanning/alerts"],listLocationsForAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"],listOrgPatternConfigs:["GET /orgs/{org}/secret-scanning/pattern-configurations"],updateAlert:["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],updateOrgPatternConfigs:["PATCH /orgs/{org}/secret-scanning/pattern-configurations"]},securityAdvisories:{createFork:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks"],createPrivateVulnerabilityReport:["POST /repos/{owner}/{repo}/security-advisories/reports"],createRepositoryAdvisory:["POST /repos/{owner}/{repo}/security-advisories"],createRepositoryAdvisoryCveRequest:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"],getGlobalAdvisory:["GET /advisories/{ghsa_id}"],getRepositoryAdvisory:["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"],listGlobalAdvisories:["GET /advisories"],listOrgRepositoryAdvisories:["GET /orgs/{org}/security-advisories"],listRepositoryAdvisories:["GET /repos/{owner}/{repo}/security-advisories"],updateRepositoryAdvisory:["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]},teams:{addOrUpdateMembershipForUserInOrg:["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"],addOrUpdateRepoPermissionsInOrg:["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],checkPermissionsForRepoInOrg:["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],create:["POST /orgs/{org}/teams"],createDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],createDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions"],deleteDiscussionCommentInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],deleteDiscussionInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],deleteInOrg:["DELETE /orgs/{org}/teams/{team_slug}"],getByName:["GET /orgs/{org}/teams/{team_slug}"],getDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],getDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],getMembershipForUserInOrg:["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"],list:["GET /orgs/{org}/teams"],listChildInOrg:["GET /orgs/{org}/teams/{team_slug}/teams"],listDiscussionCommentsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],listDiscussionsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions"],listForAuthenticatedUser:["GET /user/teams"],listMembersInOrg:["GET /orgs/{org}/teams/{team_slug}/members"],listPendingInvitationsInOrg:["GET /orgs/{org}/teams/{team_slug}/invitations"],listReposInOrg:["GET /orgs/{org}/teams/{team_slug}/repos"],removeMembershipForUserInOrg:["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"],removeRepoInOrg:["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],updateDiscussionCommentInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],updateDiscussionInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],updateInOrg:["PATCH /orgs/{org}/teams/{team_slug}"]},users:{addEmailForAuthenticated:["POST /user/emails",{},{renamed:["users","addEmailForAuthenticatedUser"]}],addEmailForAuthenticatedUser:["POST /user/emails"],addSocialAccountForAuthenticatedUser:["POST /user/social_accounts"],block:["PUT /user/blocks/{username}"],checkBlocked:["GET /user/blocks/{username}"],checkFollowingForUser:["GET /users/{username}/following/{target_user}"],checkPersonIsFollowedByAuthenticated:["GET /user/following/{username}"],createGpgKeyForAuthenticated:["POST /user/gpg_keys",{},{renamed:["users","createGpgKeyForAuthenticatedUser"]}],createGpgKeyForAuthenticatedUser:["POST /user/gpg_keys"],createPublicSshKeyForAuthenticated:["POST /user/keys",{},{renamed:["users","createPublicSshKeyForAuthenticatedUser"]}],createPublicSshKeyForAuthenticatedUser:["POST /user/keys"],createSshSigningKeyForAuthenticatedUser:["POST /user/ssh_signing_keys"],deleteAttestationsBulk:["POST /users/{username}/attestations/delete-request"],deleteAttestationsById:["DELETE /users/{username}/attestations/{attestation_id}"],deleteAttestationsBySubjectDigest:["DELETE /users/{username}/attestations/digest/{subject_digest}"],deleteEmailForAuthenticated:["DELETE /user/emails",{},{renamed:["users","deleteEmailForAuthenticatedUser"]}],deleteEmailForAuthenticatedUser:["DELETE /user/emails"],deleteGpgKeyForAuthenticated:["DELETE /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","deleteGpgKeyForAuthenticatedUser"]}],deleteGpgKeyForAuthenticatedUser:["DELETE /user/gpg_keys/{gpg_key_id}"],deletePublicSshKeyForAuthenticated:["DELETE /user/keys/{key_id}",{},{renamed:["users","deletePublicSshKeyForAuthenticatedUser"]}],deletePublicSshKeyForAuthenticatedUser:["DELETE /user/keys/{key_id}"],deleteSocialAccountForAuthenticatedUser:["DELETE /user/social_accounts"],deleteSshSigningKeyForAuthenticatedUser:["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"],follow:["PUT /user/following/{username}"],getAuthenticated:["GET /user"],getById:["GET /user/{account_id}"],getByUsername:["GET /users/{username}"],getContextForUser:["GET /users/{username}/hovercard"],getGpgKeyForAuthenticated:["GET /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","getGpgKeyForAuthenticatedUser"]}],getGpgKeyForAuthenticatedUser:["GET /user/gpg_keys/{gpg_key_id}"],getPublicSshKeyForAuthenticated:["GET /user/keys/{key_id}",{},{renamed:["users","getPublicSshKeyForAuthenticatedUser"]}],getPublicSshKeyForAuthenticatedUser:["GET /user/keys/{key_id}"],getSshSigningKeyForAuthenticatedUser:["GET /user/ssh_signing_keys/{ssh_signing_key_id}"],list:["GET /users"],listAttestations:["GET /users/{username}/attestations/{subject_digest}"],listAttestationsBulk:["POST /users/{username}/attestations/bulk-list{?per_page,before,after}"],listBlockedByAuthenticated:["GET /user/blocks",{},{renamed:["users","listBlockedByAuthenticatedUser"]}],listBlockedByAuthenticatedUser:["GET /user/blocks"],listEmailsForAuthenticated:["GET /user/emails",{},{renamed:["users","listEmailsForAuthenticatedUser"]}],listEmailsForAuthenticatedUser:["GET /user/emails"],listFollowedByAuthenticated:["GET /user/following",{},{renamed:["users","listFollowedByAuthenticatedUser"]}],listFollowedByAuthenticatedUser:["GET /user/following"],listFollowersForAuthenticatedUser:["GET /user/followers"],listFollowersForUser:["GET /users/{username}/followers"],listFollowingForUser:["GET /users/{username}/following"],listGpgKeysForAuthenticated:["GET /user/gpg_keys",{},{renamed:["users","listGpgKeysForAuthenticatedUser"]}],listGpgKeysForAuthenticatedUser:["GET /user/gpg_keys"],listGpgKeysForUser:["GET /users/{username}/gpg_keys"],listPublicEmailsForAuthenticated:["GET /user/public_emails",{},{renamed:["users","listPublicEmailsForAuthenticatedUser"]}],listPublicEmailsForAuthenticatedUser:["GET /user/public_emails"],listPublicKeysForUser:["GET /users/{username}/keys"],listPublicSshKeysForAuthenticated:["GET /user/keys",{},{renamed:["users","listPublicSshKeysForAuthenticatedUser"]}],listPublicSshKeysForAuthenticatedUser:["GET /user/keys"],listSocialAccountsForAuthenticatedUser:["GET /user/social_accounts"],listSocialAccountsForUser:["GET /users/{username}/social_accounts"],listSshSigningKeysForAuthenticatedUser:["GET /user/ssh_signing_keys"],listSshSigningKeysForUser:["GET /users/{username}/ssh_signing_keys"],setPrimaryEmailVisibilityForAuthenticated:["PATCH /user/email/visibility",{},{renamed:["users","setPrimaryEmailVisibilityForAuthenticatedUser"]}],setPrimaryEmailVisibilityForAuthenticatedUser:["PATCH /user/email/visibility"],unblock:["DELETE /user/blocks/{username}"],unfollow:["DELETE /user/following/{username}"],updateAuthenticated:["PATCH /user"]}},ii=Rl});function Jr(r){let e={};for(let t of dt.keys())e[t]=new Proxy({octokit:r,scope:t,cache:{}},El);return e}function Tl(r,e,t,s,o){let n=r.request.defaults(s);function i(...a){let c=n.endpoint.merge(...a);if(o.mapToData)return c=Object.assign({},c,{data:c[o.mapToData],[o.mapToData]:void 0}),n(c);if(o.renamed){let[l,p]=o.renamed;r.log.warn(`octokit.${e}.${t}() has been renamed to octokit.${l}.${p}()`)}if(o.deprecated&&r.log.warn(o.deprecated),o.renamedParameters){let l=n.endpoint.merge(...a);for(let[p,d]of Object.entries(o.renamedParameters))p in l&&(r.log.warn(`"${p}" parameter is deprecated for "octokit.${e}.${t}()". Use "${d}" instead`),d in l||(l[d]=l[p]),delete l[p]);return n(l)}return n(...a)}return Object.assign(i,n)}var dt,El,ci=G(()=>{ai();dt=new Map;for(let[r,e]of Object.entries(ii))for(let[t,s]of Object.entries(e)){let[o,n,i]=s,[a,c]=o.split(/ /),l=Object.assign({method:a,url:c},n);dt.has(r)||dt.set(r,new Map),dt.get(r).set(t,{scope:r,methodName:t,endpointDefaults:l,decorations:i})}El={has({scope:r},e){return dt.get(r).has(e)},getOwnPropertyDescriptor(r,e){return{value:this.get(r,e),configurable:!0,writable:!0,enumerable:!0}},defineProperty(r,e,t){return Object.defineProperty(r.cache,e,t),!0},deleteProperty(r,e){return delete r.cache[e],!0},ownKeys({scope:r}){return[...dt.get(r).keys()]},set(r,e,t){return r.cache[e]=t},get({octokit:r,scope:e,cache:t},s){if(t[s])return t[s];let o=dt.get(e).get(s);if(!o)return;let{endpointDefaults:n,decorations:i}=o;return i?t[s]=Tl(r,e,s,n,i):t[s]=r.request.defaults(n),t[s]}}});function Cl(r){return{rest:Jr(r)}}function Kr(r){let e=Jr(r);return{...e,rest:e}}var li=G(()=>{ni();ci();Cl.VERSION=Wr;Kr.VERSION=Wr});var ui,pi=G(()=>{ui="22.0.1"});var di,gi=G(()=>{Xn();ti();oi();li();pi();di=_s.plugin(Br,Kr,zr).defaults({userAgent:`octokit-rest.js/${ui}`})});var mi=We((Qr,Yr)=>{(function(r,e){typeof Qr=="object"&&typeof Yr<"u"?Yr.exports=e():typeof define=="function"&&define.amd?define(e):r.Bottleneck=e()})(Qr,(function(){"use strict";var r=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function e(D){return D&&D.default||D}var t=function(D,f,u={}){var b,v,R;for(b in f)R=f[b],u[b]=(v=D[b])!=null?v:R;return u},s=function(D,f,u={}){var b,v;for(b in D)v=D[b],f[b]!==void 0&&(u[b]=v);return u},o={load:t,overwrite:s},n;n=class{constructor(f,u){this.incr=f,this.decr=u,this._first=null,this._last=null,this.length=0}push(f){var u;this.length++,typeof this.incr=="function"&&this.incr(),u={value:f,prev:this._last,next:null},this._last!=null?(this._last.next=u,this._last=u):this._first=this._last=u}shift(){var f;if(this._first!=null)return this.length--,typeof this.decr=="function"&&this.decr(),f=this._first.value,(this._first=this._first.next)!=null?this._first.prev=null:this._last=null,f}first(){if(this._first!=null)return this._first.value}getArray(){var f,u,b;for(f=this._first,b=[];f!=null;)b.push((u=f,f=f.next,u.value));return b}forEachShift(f){var u;for(u=this.shift();u!=null;)f(u),u=this.shift()}debug(){var f,u,b,v,R;for(f=this._first,R=[];f!=null;)R.push((u=f,f=f.next,{value:u.value,prev:(b=u.prev)!=null?b.value:void 0,next:(v=u.next)!=null?v.value:void 0}));return R}};var i=n,a;a=class{constructor(f){if(this.instance=f,this._events={},this.instance.on!=null||this.instance.once!=null||this.instance.removeAllListeners!=null)throw new Error("An Emitter already exists for this object");this.instance.on=(u,b)=>this._addListener(u,"many",b),this.instance.once=(u,b)=>this._addListener(u,"once",b),this.instance.removeAllListeners=(u=null)=>u!=null?delete this._events[u]:this._events={}}_addListener(f,u,b){var v;return(v=this._events)[f]==null&&(v[f]=[]),this._events[f].push({cb:b,status:u}),this.instance}listenerCount(f){return this._events[f]!=null?this._events[f].length:0}async trigger(f,...u){var b,v;try{return f!=="debug"&&this.trigger("debug",`Event triggered: ${f}`,u),this._events[f]==null?void 0:(this._events[f]=this._events[f].filter(function(R){return R.status!=="none"}),v=this._events[f].map(async R=>{var P,$;if(R.status!=="none"){R.status==="once"&&(R.status="none");try{return $=typeof R.cb=="function"?R.cb(...u):void 0,typeof $?.then=="function"?await $:$}catch(V){return P=V,this.trigger("error",P),null}}}),(await Promise.all(v)).find(function(R){return R!=null}))}catch(R){return b=R,this.trigger("error",b),null}}};var c=a,l,p,d;l=i,p=c,d=class{constructor(f){var u;this.Events=new p(this),this._length=0,this._lists=(function(){var b,v,R;for(R=[],u=b=1,v=f;1<=v?b<=v:b>=v;u=1<=v?++b:--b)R.push(new l((()=>this.incr()),(()=>this.decr())));return R}).call(this)}incr(){if(this._length++===0)return this.Events.trigger("leftzero")}decr(){if(--this._length===0)return this.Events.trigger("zero")}push(f){return this._lists[f.options.priority].push(f)}queued(f){return f!=null?this._lists[f].length:this._length}shiftAll(f){return this._lists.forEach(function(u){return u.forEachShift(f)})}getFirst(f=this._lists){var u,b,v;for(u=0,b=f.length;u<b;u++)if(v=f[u],v.length>0)return v;return[]}shiftLastFrom(f){return this.getFirst(this._lists.slice(f).reverse()).shift()}};var m=d,_;_=class extends Error{};var y=_,g,C,h,k,E;k=10,C=5,E=o,g=y,h=class{constructor(f,u,b,v,R,P,$,V){this.task=f,this.args=u,this.rejectOnDrop=R,this.Events=P,this._states=$,this.Promise=V,this.options=E.load(b,v),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===v.id&&(this.options.id=`${this.options.id}-${this._randomIndex()}`),this.promise=new this.Promise((ge,he)=>{this._resolve=ge,this._reject=he}),this.retryCount=0}_sanitizePriority(f){var u;return u=~~f!==f?C:f,u<0?0:u>k-1?k-1:u}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:f,message:u="This job has been dropped by Bottleneck"}={}){return this._states.remove(this.options.id)?(this.rejectOnDrop&&this._reject(f??new g(u)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0):!1}_assertStatus(f){var u;if(u=this._states.jobStatus(this.options.id),!(u===f||f==="DONE"&&u===null))throw new g(`Invalid job status ${u}, expected ${f}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`)}doReceive(){return this._states.start(this.options.id),this.Events.trigger("received",{args:this.args,options:this.options})}doQueue(f,u){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:f,blocked:u})}doRun(){return this.retryCount===0?(this._assertStatus("QUEUED"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),this.Events.trigger("scheduled",{args:this.args,options:this.options})}async doExecute(f,u,b,v){var R,P,$;this.retryCount===0?(this._assertStatus("RUNNING"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),P={args:this.args,options:this.options,retryCount:this.retryCount},this.Events.trigger("executing",P);try{if($=await(f!=null?f.schedule(this.options,this.task,...this.args):this.task(...this.args)),u())return this.doDone(P),await v(this.options,P),this._assertStatus("DONE"),this._resolve($)}catch(V){return R=V,this._onFailure(R,P,u,b,v)}}doExpire(f,u,b){var v,R;return this._states.jobStatus(this.options.id==="RUNNING")&&this._states.next(this.options.id),this._assertStatus("EXECUTING"),R={args:this.args,options:this.options,retryCount:this.retryCount},v=new g(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(v,R,f,u,b)}async _onFailure(f,u,b,v,R){var P,$;if(b())return P=await this.Events.trigger("failed",f,u),P!=null?($=~~P,this.Events.trigger("retry",`Retrying ${this.options.id} after ${$} ms`,u),this.retryCount++,v($)):(this.doDone(u),await R(this.options,u),this._assertStatus("DONE"),this._reject(f))}doDone(f){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",f)}};var w=h,x,O,F;F=o,x=y,O=class{constructor(f,u,b){this.instance=f,this.storeOptions=u,this.clientId=this.instance._randomIndex(),F.load(b,b,this),this._nextRequest=this._lastReservoirRefresh=this._lastReservoirIncrease=Date.now(),this._running=0,this._done=0,this._unblockTime=0,this.ready=this.Promise.resolve(),this.clients={},this._startHeartbeat()}_startHeartbeat(){var f;return this.heartbeat==null&&(this.storeOptions.reservoirRefreshInterval!=null&&this.storeOptions.reservoirRefreshAmount!=null||this.storeOptions.reservoirIncreaseInterval!=null&&this.storeOptions.reservoirIncreaseAmount!=null)?typeof(f=this.heartbeat=setInterval(()=>{var u,b,v,R,P;if(R=Date.now(),this.storeOptions.reservoirRefreshInterval!=null&&R>=this._lastReservoirRefresh+this.storeOptions.reservoirRefreshInterval&&(this._lastReservoirRefresh=R,this.storeOptions.reservoir=this.storeOptions.reservoirRefreshAmount,this.instance._drainAll(this.computeCapacity())),this.storeOptions.reservoirIncreaseInterval!=null&&R>=this._lastReservoirIncrease+this.storeOptions.reservoirIncreaseInterval&&({reservoirIncreaseAmount:u,reservoirIncreaseMaximum:v,reservoir:P}=this.storeOptions,this._lastReservoirIncrease=R,b=v!=null?Math.min(u,v-P):u,b>0))return this.storeOptions.reservoir+=b,this.instance._drainAll(this.computeCapacity())},this.heartbeatInterval)).unref=="function"?f.unref():void 0:clearInterval(this.heartbeat)}async __publish__(f){return await this.yieldLoop(),this.instance.Events.trigger("message",f.toString())}async __disconnect__(f){return await this.yieldLoop(),clearInterval(this.heartbeat),this.Promise.resolve()}yieldLoop(f=0){return new this.Promise(function(u,b){return setTimeout(u,f)})}computePenalty(){var f;return(f=this.storeOptions.penalty)!=null?f:15*this.storeOptions.minTime||5e3}async __updateSettings__(f){return await this.yieldLoop(),F.overwrite(f,f,this.storeOptions),this._startHeartbeat(),this.instance._drainAll(this.computeCapacity()),!0}async __running__(){return await this.yieldLoop(),this._running}async __queued__(){return await this.yieldLoop(),this.instance.queued()}async __done__(){return await this.yieldLoop(),this._done}async __groupCheck__(f){return await this.yieldLoop(),this._nextRequest+this.timeout<f}computeCapacity(){var f,u;return{maxConcurrent:f,reservoir:u}=this.storeOptions,f!=null&&u!=null?Math.min(f-this._running,u):f!=null?f-this._running:u??null}conditionsCheck(f){var u;return u=this.computeCapacity(),u==null||f<=u}async __incrementReservoir__(f){var u;return await this.yieldLoop(),u=this.storeOptions.reservoir+=f,this.instance._drainAll(this.computeCapacity()),u}async __currentReservoir__(){return await this.yieldLoop(),this.storeOptions.reservoir}isBlocked(f){return this._unblockTime>=f}check(f,u){return this.conditionsCheck(f)&&this._nextRequest-u<=0}async __check__(f){var u;return await this.yieldLoop(),u=Date.now(),this.check(f,u)}async __register__(f,u,b){var v,R;return await this.yieldLoop(),v=Date.now(),this.conditionsCheck(u)?(this._running+=u,this.storeOptions.reservoir!=null&&(this.storeOptions.reservoir-=u),R=Math.max(this._nextRequest-v,0),this._nextRequest=v+R+this.storeOptions.minTime,{success:!0,wait:R,reservoir:this.storeOptions.reservoir}):{success:!1}}strategyIsBlock(){return this.storeOptions.strategy===3}async __submit__(f,u){var b,v,R;if(await this.yieldLoop(),this.storeOptions.maxConcurrent!=null&&u>this.storeOptions.maxConcurrent)throw new x(`Impossible to add a job having a weight of ${u} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);return v=Date.now(),R=this.storeOptions.highWater!=null&&f===this.storeOptions.highWater&&!this.check(u,v),b=this.strategyIsBlock()&&(R||this.isBlocked(v)),b&&(this._unblockTime=v+this.computePenalty(),this._nextRequest=this._unblockTime+this.storeOptions.minTime,this.instance._dropAllQueued()),{reachedHWM:R,blocked:b,strategy:this.storeOptions.strategy}}async __free__(f,u){return await this.yieldLoop(),this._running-=u,this._done+=u,this.instance._drainAll(this.computeCapacity()),{running:this._running}}};var Y=O,z,be;z=y,be=class{constructor(f){this.status=f,this._jobs={},this.counts=this.status.map(function(){return 0})}next(f){var u,b;if(u=this._jobs[f],b=u+1,u!=null&&b<this.status.length)return this.counts[u]--,this.counts[b]++,this._jobs[f]++;if(u!=null)return this.counts[u]--,delete this._jobs[f]}start(f){var u;return u=0,this._jobs[f]=u,this.counts[u]++}remove(f){var u;return u=this._jobs[f],u!=null&&(this.counts[u]--,delete this._jobs[f]),u!=null}jobStatus(f){var u;return(u=this.status[this._jobs[f]])!=null?u:null}statusJobs(f){var u,b,v,R,P;if(f!=null){if(b=this.status.indexOf(f),b<0)throw new z(`status must be one of ${this.status.join(", ")}`);v=this._jobs,R=[];for(u in v)P=v[u],P===b&&R.push(u);return R}else return Object.keys(this._jobs)}statusCounts(){return this.counts.reduce(((f,u,b)=>(f[this.status[b]]=u,f)),{})}};var $e=be,Ee,ye;Ee=i,ye=class{constructor(f,u){this.schedule=this.schedule.bind(this),this.name=f,this.Promise=u,this._running=0,this._queue=new Ee}isEmpty(){return this._queue.length===0}async _tryToRun(){var f,u,b,v,R,P,$;if(this._running<1&&this._queue.length>0)return this._running++,{task:$,args:f,resolve:R,reject:v}=this._queue.shift(),u=await(async function(){try{return P=await $(...f),function(){return R(P)}}catch(V){return b=V,function(){return v(b)}}})(),this._running--,this._tryToRun(),u()}schedule(f,...u){var b,v,R;return R=v=null,b=new this.Promise(function(P,$){return R=P,v=$}),this._queue.push({task:f,args:u,resolve:R,reject:v}),this._tryToRun(),b}};var Ve=ye,B="2.19.5",le={version:B},ue=Object.freeze({version:B,default:le}),U=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),N=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),se=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),de,ee,pe,xe,tt,ze;ze=o,de=c,xe=U,pe=N,tt=se,ee=(function(){class D{constructor(u={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=u,ze.load(this.limiterOptions,this.defaults,this),this.Events=new de(this),this.instances={},this.Bottleneck=qo,this._startAutoCleanup(),this.sharedConnection=this.connection!=null,this.connection==null&&(this.limiterOptions.datastore==="redis"?this.connection=new xe(Object.assign({},this.limiterOptions,{Events:this.Events})):this.limiterOptions.datastore==="ioredis"&&(this.connection=new pe(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(u=""){var b;return(b=this.instances[u])!=null?b:(()=>{var v;return v=this.instances[u]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${u}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",v,u),v})()}async deleteKey(u=""){var b,v;return v=this.instances[u],this.connection&&(b=await this.connection.__runCommand__(["del",...tt.allKeys(`${this.id}-${u}`)])),v!=null&&(delete this.instances[u],await v.disconnect()),v!=null||b>0}limiters(){var u,b,v,R;b=this.instances,v=[];for(u in b)R=b[u],v.push({key:u,limiter:R});return v}keys(){return Object.keys(this.instances)}async clusterKeys(){var u,b,v,R,P,$,V,ge,he;if(this.connection==null)return this.Promise.resolve(this.keys());for($=[],u=null,he=`b_${this.id}-`.length,b=9;u!==0;)for([ge,v]=await this.connection.__runCommand__(["scan",u??0,"match",`b_${this.id}-*_settings`,"count",1e4]),u=~~ge,R=0,V=v.length;R<V;R++)P=v[R],$.push(P.slice(he,-b));return $}_startAutoCleanup(){var u;return clearInterval(this.interval),typeof(u=this.interval=setInterval(async()=>{var b,v,R,P,$,V;$=Date.now(),R=this.instances,P=[];for(v in R){V=R[v];try{await V._store.__groupCheck__($)?P.push(this.deleteKey(v)):P.push(void 0)}catch(ge){b=ge,P.push(V.Events.trigger("error",b))}}return P},this.timeout/2)).unref=="function"?u.unref():void 0}updateSettings(u={}){if(ze.overwrite(u,this.defaults,this),ze.overwrite(u,u,this.limiterOptions),u.timeout!=null)return this._startAutoCleanup()}disconnect(u=!0){var b;if(!this.sharedConnection)return(b=this.connection)!=null?b.disconnect(u):void 0}}return D.prototype.defaults={timeout:1e3*60*5,connection:null,Promise,id:"group-key"},D}).call(r);var sr=ee,xo,Do,Io;Io=o,Do=c,xo=(function(){class D{constructor(u={}){this.options=u,Io.load(this.options,this.defaults,this),this.Events=new Do(this),this._arr=[],this._resetPromise(),this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise((u,b)=>this._resolve=u)}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(u){var b;return this._arr.push(u),b=this._promise,this._arr.length===this.maxSize?this._flush():this.maxTime!=null&&this._arr.length===1&&(this._timeout=setTimeout(()=>this._flush(),this.maxTime)),b}}return D.prototype.defaults={maxTime:null,maxSize:null,Promise},D}).call(r);var Za=xo,ec=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),tc=e(ue),Fo,Uo,rr,or,Mo,nr,Lo,jo,No,ir,He,Ho=[].splice;nr=10,Uo=5,He=o,Lo=m,or=w,Mo=Y,jo=ec,rr=c,No=$e,ir=Ve,Fo=(function(){class D{constructor(u={},...b){var v,R;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(u,b),He.load(u,this.instanceDefaults,this),this._queues=new Lo(nr),this._scheduled={},this._states=new No(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new rr(this),this._submitLock=new ir("submit",this.Promise),this._registerLock=new ir("register",this.Promise),R=He.load(u,this.storeDefaults,{}),this._store=(function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null)return v=He.load(u,this.redisStoreDefaults,{}),new jo(this,R,v);if(this.datastore==="local")return v=He.load(u,this.localStoreDefaults,{}),new Mo(this,R,v);throw new D.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}).call(this),this._queues.on("leftzero",()=>{var P;return(P=this._store.heartbeat)!=null&&typeof P.ref=="function"?P.ref():void 0}),this._queues.on("zero",()=>{var P;return(P=this._store.heartbeat)!=null&&typeof P.unref=="function"?P.unref():void 0})}_validateOptions(u,b){if(!(u!=null&&typeof u=="object"&&b.length===0))throw new D.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(u){return this._store.__publish__(u)}disconnect(u=!0){return this._store.__disconnect__(u)}chain(u){return this._limiter=u,this}queued(u){return this._queues.queued(u)}clusterQueued(){return this._store.__queued__()}empty(){return this.queued()===0&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(u){return this._states.jobStatus(u)}jobs(u){return this._states.statusJobs(u)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(u=1){return this._store.__check__(u)}_clearGlobalState(u){return this._scheduled[u]!=null?(clearTimeout(this._scheduled[u].expiration),delete this._scheduled[u],!0):!1}async _free(u,b,v,R){var P,$;try{if({running:$}=await this._store.__free__(u,v.weight),this.Events.trigger("debug",`Freed ${v.id}`,R),$===0&&this.empty())return this.Events.trigger("idle")}catch(V){return P=V,this.Events.trigger("error",P)}}_run(u,b,v){var R,P,$;return b.doRun(),R=this._clearGlobalState.bind(this,u),$=this._run.bind(this,u,b),P=this._free.bind(this,u,b),this._scheduled[u]={timeout:setTimeout(()=>b.doExecute(this._limiter,R,$,P),v),expiration:b.options.expiration!=null?setTimeout(function(){return b.doExpire(R,$,P)},v+b.options.expiration):void 0,job:b}}_drainOne(u){return this._registerLock.schedule(()=>{var b,v,R,P,$;return this.queued()===0?this.Promise.resolve(null):($=this._queues.getFirst(),{options:P,args:b}=R=$.first(),u!=null&&P.weight>u?this.Promise.resolve(null):(this.Events.trigger("debug",`Draining ${P.id}`,{args:b,options:P}),v=this._randomIndex(),this._store.__register__(v,P.weight,P.expiration).then(({success:V,wait:ge,reservoir:he})=>{var xt;return this.Events.trigger("debug",`Drained ${P.id}`,{success:V,args:b,options:P}),V?($.shift(),xt=this.empty(),xt&&this.Events.trigger("empty"),he===0&&this.Events.trigger("depleted",xt),this._run(v,R,ge),this.Promise.resolve(P.weight)):this.Promise.resolve(null)})))})}_drainAll(u,b=0){return this._drainOne(u).then(v=>{var R;return v!=null?(R=u!=null?u-v:u,this._drainAll(R,b+v)):this.Promise.resolve(b)}).catch(v=>this.Events.trigger("error",v))}_dropAllQueued(u){return this._queues.shiftAll(function(b){return b.doDrop({message:u})})}stop(u={}){var b,v;return u=He.load(u,this.stopDefaults),v=R=>{var P;return P=()=>{var $;return $=this._states.counts,$[0]+$[1]+$[2]+$[3]===R},new this.Promise(($,V)=>P()?$():this.on("done",()=>{if(P())return this.removeAllListeners("done"),$()}))},b=u.dropWaitingJobs?(this._run=function(R,P){return P.doDrop({message:u.dropErrorMessage})},this._drainOne=()=>this.Promise.resolve(null),this._registerLock.schedule(()=>this._submitLock.schedule(()=>{var R,P,$;P=this._scheduled;for(R in P)$=P[R],this.jobStatus($.job.options.id)==="RUNNING"&&(clearTimeout($.timeout),clearTimeout($.expiration),$.job.doDrop({message:u.dropErrorMessage}));return this._dropAllQueued(u.dropErrorMessage),v(0)}))):this.schedule({priority:nr-1,weight:0},()=>v(1)),this._receive=function(R){return R._reject(new D.prototype.BottleneckError(u.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new D.prototype.BottleneckError("stop() has already been called")),b}async _addToQueue(u){var b,v,R,P,$,V,ge;({args:b,options:P}=u);try{({reachedHWM:$,blocked:v,strategy:ge}=await this._store.__submit__(this.queued(),P.weight))}catch(he){return R=he,this.Events.trigger("debug",`Could not queue ${P.id}`,{args:b,options:P,error:R}),u.doDrop({error:R}),!1}return v?(u.doDrop(),!0):$&&(V=ge===D.prototype.strategy.LEAK?this._queues.shiftLastFrom(P.priority):ge===D.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(P.priority+1):ge===D.prototype.strategy.OVERFLOW?u:void 0,V?.doDrop(),V==null||ge===D.prototype.strategy.OVERFLOW)?(V==null&&u.doDrop(),$):(u.doQueue($,v),this._queues.push(u),await this._drainAll(),$)}_receive(u){return this._states.jobStatus(u.options.id)!=null?(u._reject(new D.prototype.BottleneckError(`A job with the same id already exists (id=${u.options.id})`)),!1):(u.doReceive(),this._submitLock.schedule(this._addToQueue,u))}submit(...u){var b,v,R,P,$,V,ge;return typeof u[0]=="function"?($=u,[v,...u]=$,[b]=Ho.call(u,-1),P=He.load({},this.jobDefaults)):(V=u,[P,v,...u]=V,[b]=Ho.call(u,-1),P=He.load(P,this.jobDefaults)),ge=(...he)=>new this.Promise(function(xt,rc){return v(...he,function(...Bo){return(Bo[0]!=null?rc:xt)(Bo)})}),R=new or(ge,u,P,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),R.promise.then(function(he){return typeof b=="function"?b(...he):void 0}).catch(function(he){return Array.isArray(he)?typeof b=="function"?b(...he):void 0:typeof b=="function"?b(he):void 0}),this._receive(R)}schedule(...u){var b,v,R;return typeof u[0]=="function"?([R,...u]=u,v={}):[v,R,...u]=u,b=new or(R,u,v,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(b),b.promise}wrap(u){var b,v;return b=this.schedule.bind(this),v=function(...R){return b(u.bind(this),...R)},v.withOptions=function(R,...P){return b(R,u,...P)},v}async updateSettings(u={}){return await this._store.__updateSettings__(He.overwrite(u,this.storeDefaults)),He.overwrite(u,this.instanceDefaults,this),this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(u=0){return this._store.__incrementReservoir__(u)}}return D.default=D,D.Events=rr,D.version=D.prototype.version=tc.version,D.strategy=D.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},D.BottleneckError=D.prototype.BottleneckError=y,D.Group=D.prototype.Group=sr,D.RedisConnection=D.prototype.RedisConnection=U,D.IORedisConnection=D.prototype.IORedisConnection=N,D.Batcher=D.prototype.Batcher=Za,D.prototype.jobDefaults={priority:Uo,weight:1,expiration:null,id:"<no-id>"},D.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:D.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},D.prototype.localStoreDefaults={Promise,timeout:null,heartbeatInterval:250},D.prototype.redisStoreDefaults={Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},D.prototype.instanceDefaults={datastore:"local",connection:null,id:"<no-id>",rejectOnDrop:!0,trackDoneStatus:!1,Promise},D.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},D}).call(r);var qo=Fo,sc=qo;return sc}))});function Sl(r,e,t){return r.retryLimiter.schedule(kl,r,e,t)}async function kl(r,e,t){let{pathname:s}=new URL(t.url,"http://github.test"),o=Al(t.method,s),n=!o&&t.method!=="GET"&&t.method!=="HEAD",i=t.method==="GET"&&s.startsWith("/search/"),a=s.startsWith("/graphql"),l=~~e.retryCount>0?{priority:0,weight:0}:{};r.clustering&&(l.expiration=1e3*60),(n||a)&&await r.write.key(r.id).schedule(l,Xr),n&&r.triggersNotification(s)&&await r.notifications.key(r.id).schedule(l,Xr),i&&await r.search.key(r.id).schedule(l,Xr);let p=(o?r.auth:r.global).key(r.id).schedule(l,e,t);if(a){let d=await p;if(d.data.errors!=null&&d.data.errors.some(m=>m.type==="RATE_LIMITED"))throw Object.assign(new Error("GraphQL Rate Limit Exceeded"),{response:d,data:d.data})}return p}function Al(r,e){return r==="PATCH"&&/^\/applications\/[^/]+\/token\/scoped$/.test(e)||r==="POST"&&(/^\/applications\/[^/]+\/token$/.test(e)||/^\/app\/installations\/[^/]+\/access_tokens$/.test(e)||e==="/login/oauth/access_token")}function Gl(r){let t=`^(?:${r.map(s=>s.split("/").map(o=>o.startsWith("{")?"(?:.+?)":o).join("/")).map(s=>`(?:${s})`).join("|")})[^/]*$`;return new RegExp(t,"i")}function ws(r,e){let{enabled:t=!0,Bottleneck:s=fi.default,id:o="no-id",timeout:n=1e3*60*2,connection:i}=e.throttle||{};if(!t)return{};let a={timeout:n};typeof i<"u"&&(a.connection=i),gt.global==null&&$l(s,a);let c=Object.assign({clustering:i!=null,triggersNotification:bi,fallbackSecondaryRateRetryAfter:60,retryAfterBaseValue:1e3,retryLimiter:new s,id:o,...gt},e.throttle);if(typeof c.onSecondaryRateLimit!="function"||typeof c.onRateLimit!="function")throw new Error(`octokit/plugin-throttling error:
36
36
  You must pass the onSecondaryRateLimit and onRateLimit error handlers.
37
37
  See https://octokit.github.io/rest.js/#throttling
38
38
 
@@ -42,20 +42,20 @@ The gh CLI is recommended - install from https://cli.github.com`);return r}async
42
42
  onRateLimit: (retryAfter, options) => {/* ... */}
43
43
  }
44
44
  })
45
- `);let l={},u=new s.Events(l);return l.on("secondary-limit",c.onSecondaryRateLimit),l.on("rate-limit",c.onRateLimit),l.on("error",d=>r.log.warn("Error in throttling-plugin limit handler",d)),c.retryLimiter.on("failed",async function(d,m){let[w,y,g]=m.args,{pathname:R}=new URL(g.url,"http://github.test");if(!(R.startsWith("/graphql")&&d.status!==401||d.status===403||d.status===429))return;let S=~~y.retryCount;y.retryCount=S,g.request.retryCount=S;let{wantRetry:C,retryAfter:_=0}=await(async function(){if(/\bsecondary rate\b/i.test(d.message)){let G=Number(d.response.headers["retry-after"])||w.fallbackSecondaryRateRetryAfter;return{wantRetry:await u.trigger("secondary-limit",G,g,r,S),retryAfter:G}}if(d.response.headers!=null&&d.response.headers["x-ratelimit-remaining"]==="0"||(d.response.data?.errors??[]).some(G=>G.type==="RATE_LIMITED")){let G=new Date(~~d.response.headers["x-ratelimit-reset"]*1e3).getTime(),O=Math.max(Math.ceil((G-Date.now())/1e3)+1,0);return{wantRetry:await u.trigger("rate-limit",O,g,r,S),retryAfter:O}}return{}})();if(C)return y.retryCount++,_*w.retryAfterBaseValue}),r.hook.wrap("request",kl.bind(null,c)),{}}var yi,Pl,Xr,$l,bi,vi,ht,xl,_i=$(()=>{yi=J(fi(),1),Pl="0.0.0-development",Xr=()=>Promise.resolve();$l=["/orgs/{org}/invitations","/orgs/{org}/invitations/{invitation_id}","/orgs/{org}/teams/{team_slug}/discussions","/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments","/repos/{owner}/{repo}/collaborators/{username}","/repos/{owner}/{repo}/commits/{commit_sha}/comments","/repos/{owner}/{repo}/issues","/repos/{owner}/{repo}/issues/{issue_number}/comments","/repos/{owner}/{repo}/issues/{issue_number}/sub_issue","/repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority","/repos/{owner}/{repo}/pulls","/repos/{owner}/{repo}/pulls/{pull_number}/comments","/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies","/repos/{owner}/{repo}/pulls/{pull_number}/merge","/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers","/repos/{owner}/{repo}/pulls/{pull_number}/reviews","/repos/{owner}/{repo}/releases","/teams/{team_id}/discussions","/teams/{team_id}/discussions/{discussion_number}/comments"];bi=Gl($l),vi=bi.test.bind(bi),ht={},xl=function(r,e){ht.global=new r.Group({id:"octokit-global",maxConcurrent:10,...e}),ht.auth=new r.Group({id:"octokit-auth",maxConcurrent:1,...e}),ht.search=new r.Group({id:"octokit-search",maxConcurrent:1,minTime:2e3,...e}),ht.write=new r.Group({id:"octokit-write",maxConcurrent:1,minTime:1e3,...e}),ht.notifications=new r.Group({id:"octokit-notifications",maxConcurrent:1,minTime:3e3,...e})};Ts.VERSION=Pl;Ts.triggersNotification=vi});function Ps(r){return r.toLocaleTimeString("en-US",{hour12:!1})}function we(r){return Ss&&wi===r||(Ss=new Dl({auth:r,throttle:{onRateLimit:(e,t,s,o)=>{let n=t,i=new Date(Date.now()+e*1e3);return o<2?(T(Cs,`Rate limit hit (retry ${o+1}/2, waiting ${e}s, resets at ${Ps(i)}) \u2014 ${n.method} ${n.url}`),!0):(T(Cs,`Rate limit exceeded, not retrying \u2014 ${n.method} ${n.url} (resets at ${Ps(i)})`),!1)},onSecondaryRateLimit:(e,t,s,o)=>{let n=t,i=new Date(Date.now()+e*1e3);return o<1?(T(Cs,`Secondary rate limit hit (retry ${o+1}/1, waiting ${e}s, resets at ${Ps(i)}) \u2014 ${n.method} ${n.url}`),!0):(T(Cs,`Secondary rate limit exceeded, not retrying \u2014 ${n.method} ${n.url} (resets at ${Ps(i)})`),!1)}}}),wi=r),Ss}async function Zr(r){let e=we(r),{data:t}=await e.rateLimit.get(),s=t.resources.search;return{remaining:s.remaining,limit:s.limit,resetAt:new Date(s.reset*1e3).toISOString()}}var Cs,Dl,Ss,wi,Vt=$(()=>{"use strict";hi();_i();be();Cs="github",Dl=mi.plugin(Ts),Ss=null,wi=null});async function ks(r,e,t){let s=0,o=!1,n=async()=>{for(;s<r.length&&!o;){let a=r[s++];try{await e(a)}catch(c){throw o=!0,c}}},i=Math.min(t,r.length);await Promise.all(Array.from({length:i},()=>n()))}var eo=$(()=>{"use strict"});async function Ue(r,e=100,t=10){let s=[];for(let o=1;o<=t;o++){let{data:n}=await r(o);if(s.push(...n),n.length<e)break}return s}var zt=$(()=>{"use strict"});function bt(){return to||(to=new Os),to}async function Wt(r,e,t){let s=r.getInflight(e);if(s)return k(ft,`Dedup hit for ${e}`),await s;let n=(async()=>{let a={},c=r.get(e);c&&(a["if-none-match"]=c.etag);try{let l=await t(a),u=l.headers?.etag;return u&&r.set(e,u,l.data),l.data}catch(l){if(Fl(l)){let u=r.get(e);if(u)return k(ft,`304 cache hit for ${e}`),u.body}throw l}})(),i=r.setInflight(e,n);try{return await n}finally{i()}}function Fl(r){return ve(r)===304}var Ce,As,Ri,ft,Il,Os,to,Jt=$(()=>{"use strict";Ce=J(require("fs"),1),As=J(require("path"),1),Ri=J(require("crypto"),1);Oe();be();oe();ft="http-cache",Il=1440*60*1e3,Os=class{cacheDir;inflightRequests=new Map;constructor(e){this.cacheDir=e??Or()}keyFor(e){return Ri.createHash("sha256").update(e).digest("hex")}pathFor(e){return As.join(this.cacheDir,`${this.keyFor(e)}.json`)}getIfFresh(e,t){let s=this.get(e);if(!s)return null;let o=Date.now()-new Date(s.cachedAt).getTime();return!Number.isFinite(o)||o<0||o>t?null:s.body}get(e){let t=this.pathFor(e);try{let s=Ce.readFileSync(t,"utf-8"),o=JSON.parse(s);return o.url!==e?(k(ft,`Cache collision detected for ${e}, ignoring`),null):o}catch{return null}}set(e,t,s){let o={etag:t,url:e,body:s,cachedAt:new Date().toISOString()};try{Ce.writeFileSync(this.pathFor(e),JSON.stringify(o),{encoding:"utf-8",mode:384}),k(ft,`Cached response for ${e}`)}catch(n){k(ft,`Failed to write cache for ${e}`,n)}}hasInflight(e){return this.inflightRequests.has(e)}getInflight(e){return this.inflightRequests.get(e)}setInflight(e,t){return this.inflightRequests.set(e,t),()=>{this.inflightRequests.delete(e)}}evictStale(e=Il){let t=0;try{let s=Ce.readdirSync(this.cacheDir),o=Date.now();for(let n of s){if(!n.endsWith(".json"))continue;let i=As.join(this.cacheDir,n);try{let a=Ce.readFileSync(i,"utf-8"),c=JSON.parse(a);o-new Date(c.cachedAt).getTime()>e&&(Ce.unlinkSync(i),t++)}catch{try{Ce.unlinkSync(i),t++}catch{}}}}catch{}return t>0&&k(ft,`Evicted ${t} stale cache entries`),t}clear(){try{let e=Ce.readdirSync(this.cacheDir);for(let t of e)t.endsWith(".json")&&Ce.unlinkSync(As.join(this.cacheDir,t));k(ft,"Cache cleared")}catch{}}size(){try{return Ce.readdirSync(this.cacheDir).filter(e=>e.endsWith(".json")).length}catch{return 0}}},to=null});function so(r,e,t){if(t==="cancelled"||t==="timed_out")return"infrastructure";let s=r.toLowerCase();if(Ti.some(o=>o.test(s)))return"auth_gate";if(Ei.some(o=>o.test(s)))return"fork_limitation";if(Ci.some(o=>o.test(s)))return"infrastructure";if(e){let o=e.toLowerCase();if(Ti.some(n=>n.test(o)))return"auth_gate";if(Ei.some(n=>n.test(o)))return"fork_limitation";if(Ci.some(n=>n.test(o)))return"infrastructure"}return"actionable"}function $s(r,e){return r.map(t=>{let s=e?.get(t);return{name:t,category:so(t,void 0,s),conclusion:s}})}function Si(r){let e=!1,t=!1,s=!1,o=[],n=new Map;for(let i of r)i.conclusion==="failure"||i.conclusion==="cancelled"||i.conclusion==="timed_out"?(e=!0,o.push(i.name),n.set(i.name,i.conclusion)):i.conclusion==="action_required"||i.status==="in_progress"||i.status==="queued"?t=!0:i.conclusion==="success"&&(s=!0);return{hasFailingChecks:e,hasPendingChecks:t,hasSuccessfulChecks:s,failingCheckNames:o,failingCheckConclusions:n}}function Pi(r){let e=r.statuses.filter(c=>{let l=(c.description||"").toLowerCase();return!(c.state==="failure"&&(l.includes("authorization required")||l.includes("authorize")))}),t=e.some(c=>c.state==="failure"||c.state==="error"),s=e.some(c=>c.state==="pending"),o=e.some(c=>c.state==="success"),n=t?"failure":s?"pending":o||e.length===0?"success":r.state,i=r.statuses.length>0,a=[];for(let c of e)(c.state==="failure"||c.state==="error")&&a.push(c.context);return{effectiveCombinedState:n,hasStatuses:i,failingStatusNames:a}}function ki(r,e,t){let{hasFailingChecks:s,hasPendingChecks:o,hasSuccessfulChecks:n,failingCheckNames:i,failingCheckConclusions:a}=r,{effectiveCombinedState:c,hasStatuses:l,failingStatusNames:u}=e,d=[...i,...u];return s||c==="failure"||c==="error"?{status:"failing",failingCheckNames:d,failingCheckConclusions:a}:o||c==="pending"?{status:"pending",failingCheckNames:[],failingCheckConclusions:new Map}:n||c==="success"?{status:"passing",failingCheckNames:[],failingCheckConclusions:new Map}:!l&&t===0?{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}:{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}}var Ei,Ti,Ci,ro=$(()=>{"use strict";Ei=[/vercel/i,/netlify/i,/\bpreview\s*deploy/i,/\bdeploy\s*preview/i,/storybook/i,/chromatic/i,/percy/i,/cloudflare pages/i],Ti=[/authoriz/i,/approval/i,/\bcla\b/i,/license\/cla/i],Ci=[/\binstall\s*(os\s*)?dep(endenc|s\b)/i,/\bsetup\s+fail(ed|ure)?\b/i,/\bservice\s*unavailable/i,/\binfrastructure/i]});function $t(r){return r.includes("[bot]")||Ul.has(r.toLowerCase())}function Kt(r){if(!r||r.length>100||r.includes("?"))return!1;let e=r.toLowerCase();return["thanks","thank you","lgtm","looks good","will review","we'll review","we'll get to this","noted","got it","will look","will check"].some(s=>e.includes(s))}var Ul,Gs=$(()=>{"use strict";Ul=new Set(["allcontributors","changeset-bot","claassistant","codecov-commenter","greenkeeper","imgbot","netlify","renovate","snyk-bot","sonarcloud","stale","vercel"])});function Ai(r){if(r.length===0)return"review_required";let e=new Map;for(let s of r){let o=s.user?.login,n=s.state;o&&n&&e.set(o,n)}let t=Array.from(e.values());return t.includes("CHANGES_REQUESTED")?"changes_requested":t.includes("APPROVED")?"approved":"review_required"}function Oi(r){let e;for(let t of r)t.state==="CHANGES_REQUESTED"&&t.submitted_at&&(!e||t.submitted_at>e)&&(e=t.submitted_at);return e}function Ml(r,e){let t=e.filter(o=>o.pull_request_review_id===r);if(t.length===0)return!1;let s=new Map;for(let o of e)o.user?.login&&s.set(o.id,o.user.login.toLowerCase());return t.every(o=>{if(!o.in_reply_to_id)return!1;let n=s.get(o.in_reply_to_id),i=o.user?.login?.toLowerCase();return n!=null&&i!=null&&n===i})}function Ll(r,e){return e.find(t=>t.pull_request_review_id===r&&t.body?.trim())?.body?.trim()}function $i(r,e,t,s){let o=[],n=s.toLowerCase();for(let c of r){let l=c.user?.login||"unknown";o.push({author:l,body:c.body||"",createdAt:c.created_at,isUser:l.toLowerCase()===n})}for(let c of e){if(!c.submitted_at)continue;let l=(c.body||"").trim();if(!l&&c.state!=="COMMENTED"&&c.state!=="CHANGES_REQUESTED")continue;let u=c.user?.login||"unknown";if(!l&&c.state==="COMMENTED"&&c.id!=null&&Ml(c.id,t))continue;let d=l||(c.id!=null?Ll(c.id,t):void 0)||(c.state==="CHANGES_REQUESTED"?"(requested changes via inline review comments)":"(posted inline review comments)");o.push({author:u,body:d,createdAt:c.submitted_at,isUser:u.toLowerCase()===n})}o.sort((c,l)=>new Date(c.createdAt).getTime()-new Date(l.createdAt).getTime());let i=null;for(let c of o)c.isUser&&(i=new Date(c.createdAt));let a;for(let c of o){if(c.isUser||c.author==="unknown"||$t(c.author))continue;let l=new Date(c.createdAt);(!i||l>i)&&(a={author:c.author,body:c.body.slice(0,200)+(c.body.length>200?"...":""),createdAt:c.createdAt})}return a&&Kt(a.body)&&(a=void 0),{hasUnrespondedComment:!!a,lastMaintainerComment:a}}var Gi=$(()=>{"use strict";Gs()});function xi(r){return jl.test(r.toLowerCase())}function Di(r){if(!r)return{hasIncompleteChecklist:!1};let e=/- \[x\]/gi,t=/^.*- \[ \].*$/gm,s=r.match(e)||[],o=r.match(t)||[],n=s.length,i=n+o.length;return i===0?{hasIncompleteChecklist:!1}:{hasIncompleteChecklist:o.filter(c=>!xi(c)).length>0,checklistStats:{checked:n,total:i}}}var jl,oo=$(()=>{"use strict";jl=/\(if\s|\bif applicable\b|\bif needed\b|\bif relevant\b|\bonly if\b|\bwhen applicable\b|\(optional\)|- \[ \]\s*optional\b|\bn\/a\b|\bnot applicable\b|\bif required\b|\bif necessary\b/});function Ii(r,e){let t=[];if(e==="changes_requested"&&t.push("changes_requested"),!r)return t;let s=r.toLowerCase();return["screenshot","demo","recording","screen recording","before/after","before and after","gif","video","screencast","show me","can you show"].some(c=>s.includes(c))&&t.push("demo_requested"),["add test","test coverage","unit test","missing test","add a test","write test","needs test","need test"].some(c=>s.includes(c))&&t.push("tests_requested"),["documentation","readme","jsdoc","docstring","add docs","update docs","document this"].some(c=>s.includes(c))&&t.push("docs_requested"),["rebase","merge conflict","out of date","behind main","behind master"].some(c=>s.includes(c))&&t.push("rebase_requested"),t}var Fi=$(()=>{"use strict"});function xs(r){let e=Hl[r.status];return e?{displayLabel:e.label,displayDescription:e.description(r)}:(T(Nl,`Unknown status "${r.status}" for PR #${r.number} (${r.url})`),{displayLabel:`[${r.status}]`,displayDescription:"Unknown status"})}var Nl,Hl,no=$(()=>{"use strict";be();Nl="display-utils",Hl={needs_response:{label:"[Needs Response]",description:r=>r.lastMaintainerComment?`@${r.lastMaintainerComment.author} commented`:"Maintainer awaiting response"},needs_changes:{label:"[Needs Changes]",description:()=>"Review requested changes \u2014 push commits to address"},failing_ci:{label:"[CI Failing]",description:r=>{let e=r.classifiedChecks||[],t=e.filter(n=>n.category==="actionable");if(t.length>0)return`${t.length} check${t.length===1?"":"s"} failed: ${t.map(n=>n.name).join(", ")}`;let s=e.filter(n=>n.category==="infrastructure");if(s.length>0)return`${s.length} check${s.length===1?"":"s"} cancelled/timed out (infrastructure)`;let o=r.failingCheckNames||[];return o.length>0?`${o.length} check${o.length===1?"":"s"} failed`:"One or more CI checks are failing"}},ci_blocked:{label:"[CI Blocked]",description:()=>"CI cannot run (first-time contributor approval needed)"},ci_not_running:{label:"[CI Not Running]",description:()=>"No CI checks have been triggered"},merge_conflict:{label:"[Merge Conflict]",description:()=>"PR has merge conflicts with the base branch"},needs_rebase:{label:"[Needs Rebase]",description:()=>"PR branch is significantly behind upstream"},missing_required_files:{label:"[Missing Files]",description:r=>r.missingRequiredFiles?`Missing: ${r.missingRequiredFiles.join(", ")}`:"Required files are missing"},incomplete_checklist:{label:"[Incomplete Checklist]",description:r=>r.checklistStats?`${r.checklistStats.checked}/${r.checklistStats.total} items checked`:"PR body has unchecked required checkboxes"},changes_addressed:{label:"[Changes Addressed]",description:r=>r.lastMaintainerComment?`Waiting for @${r.lastMaintainerComment.author} to re-review`:"Waiting for maintainer re-review"},waiting:{label:"[Waiting]",description:()=>"CI pending or awaiting review"},waiting_on_maintainer:{label:"[Waiting on Maintainer]",description:()=>"Approved and CI passes \u2014 waiting for merge"},healthy:{label:"[Healthy]",description:()=>"Everything looks good \u2014 normal review cycle"},approaching_dormant:{label:"[Approaching Dormant]",description:r=>`No activity for ${r.daysSinceActivity} days`},dormant:{label:"[Dormant]",description:r=>`No activity for ${r.daysSinceActivity} days`}}});function yt(){return{repos:new Map,monthlyCounts:{},monthlyOpenedCounts:{},dailyActivityCounts:{}}}function Bl(r){if(typeof r!="object"||r===null)return!1;let e=r;return Array.isArray(e.reposEntries)&&typeof e.monthlyCounts=="object"&&e.monthlyCounts!==null&&typeof e.monthlyOpenedCounts=="object"&&e.monthlyOpenedCounts!==null&&typeof e.dailyActivityCounts=="object"&&e.dailyActivityCounts!==null}async function Ui(r,e,t,s,o){if(!e)return yt();let n=bt(),i=`pr-counts:${s}:${e}`,a=n.getIfFresh(i,ql);if(a&&Bl(a))return k(Me,`Using cached ${s} PR counts for @${e}`),{repos:new Map(a.reposEntries),monthlyCounts:a.monthlyCounts,monthlyOpenedCounts:a.monthlyOpenedCounts,dailyActivityCounts:a.dailyActivityCounts};k(Me,`Fetching ${s} PR counts for @${e}...`);let c=new Map,l={},u={},d={},m=1,w=0,y;for(;;){let{data:g}=await r.search.issuesAndPullRequests({q:`is:pr ${t} author:${e}`,sort:"updated",order:"desc",per_page:100,page:m});y=g.total_count;for(let R of g.items){let h=Pt(R.html_url);if(!h){T(Me,`Skipping ${s} PR with unparseable URL: ${R.html_url}`);continue}let{owner:S}=h,C=`${S}/${h.repo}`;if(kt(S,e))continue;let _=o(c,C,R);if(_){let G=_.slice(0,7);l[G]=(l[G]||0)+1;let O=_.slice(0,10);O.length===10&&(d[O]=(d[O]||0)+1)}if(R.created_at){let G=R.created_at.slice(0,7);u[G]=(u[G]||0)+1;let O=R.created_at.slice(0,10);O.length===10&&(d[O]=(d[O]||0)+1)}}if(w+=g.items.length,w>=g.total_count||w>=1e3||g.items.length===0||m>=io)break;m++}return w<y&&m>=io&&T(Me,`Pagination capped at ${io} pages: fetched ${w} of ${y} ${s} PRs. Stats may be incomplete for prolific contributors.`),k(Me,`Found ${w} ${s} PRs across ${c.size} repos`),n.set(i,"",{reposEntries:Array.from(c.entries()),monthlyCounts:l,monthlyOpenedCounts:u,dailyActivityCounts:d}),{repos:c,monthlyCounts:l,monthlyOpenedCounts:u,dailyActivityCounts:d}}function Mi(r,e){return Ui(r,e,"is:merged","merged",(t,s,o)=>{o.pull_request?.merged_at||T(Me,`merged_at missing for merged PR ${o.html_url}${o.closed_at?", falling back to closed_at":", no date available"}`);let n=o.pull_request?.merged_at||o.closed_at||"",i=t.get(s);return i?(i.count+=1,n&&n>i.lastMergedAt&&(i.lastMergedAt=n)):t.set(s,{count:1,lastMergedAt:n}),n})}function Li(r,e){return Ui(r,e,"is:closed is:unmerged","closed",(t,s,o)=>(t.set(s,(t.get(s)||0)+1),o.closed_at||""))}async function ji(r,e,t,s,o,n){if(!e.githubUsername)return T(Me,`Skipping recently ${s} PRs fetch: no githubUsername configured. Run /setup-oss to configure.`),[];let i=new Date;i.setDate(i.getDate()-o);let a=i.toISOString().split("T")[0];k(Me,`Fetching recently ${s} PRs for @${e.githubUsername} (since ${a})...`);let{data:c}=await r.search.issuesAndPullRequests({q:t.replace("{username}",e.githubUsername).replace("{since}",a),sort:"updated",order:"desc",per_page:100}),l=[];for(let u of c.items){let d=Te(u.html_url);if(!d){T(Me,`Could not parse GitHub URL from API response: ${u.html_url}`);continue}let m=`${d.owner}/${d.repo}`;kt(d.owner,e.githubUsername)||e.excludeRepos.includes(m)||e.excludeOrgs?.some(w=>d.owner.toLowerCase()===w.toLowerCase())||l.push(n(u,{owner:d.owner,repo:m,number:d.number}))}return k(Me,`Found ${l.length} recently ${s} PRs`),l}async function Ni(r,e,t=7){return ji(r,e,"is:pr is:closed is:unmerged author:{username} closed:>={since}","closed",t,(s,{repo:o,number:n})=>({url:s.html_url,repo:o,number:n,title:s.title,closedAt:s.closed_at||""}))}async function Hi(r,e,t=7){return ji(r,e,"is:pr is:merged author:{username} merged:>={since}","merged",t,(s,{repo:o,number:n})=>{let i=s.pull_request?.merged_at;return i||T(Me,`merged_at missing for merged PR ${s.html_url}${s.closed_at?", falling back to closed_at":", no date available"}`),{url:s.html_url,repo:o,number:n,title:s.title,mergedAt:i||s.closed_at||""}})}var Me,ql,io,Ds=$(()=>{"use strict";Oe();be();Jt();Me="github-stats",ql=1440*60*1e3,io=3});var Is,Vl,vt,qi=$(()=>{"use strict";Vt();jt();Oe();eo();oe();zt();be();Jt();ro();Gi();oo();Fi();no();Ds();no();ro();oo();Is="pr-monitor",Vl=5,vt=class{octokit;stateManager;constructor(e){this.octokit=we(e),this.stateManager=U()}async fetchUserOpenPRs(){let e=this.stateManager.getState().config;if(!e.githubUsername)throw new Qe("No GitHub username configured. Run setup first.");k("pr-monitor",`Fetching open PRs for @${e.githubUsername}...`);let t=[],s=1,o=100,n=await this.octokit.search.issuesAndPullRequests({q:`is:pr is:open author:${e.githubUsername}`,sort:"updated",order:"desc",per_page:o,page:1});t.push(...n.data.items);let i=n.data.total_count;k("pr-monitor",`Found ${i} open PRs`);let a=Math.min(Math.ceil(i/o),10);for(;s<a;){s++;let m=await this.octokit.search.issuesAndPullRequests({q:`is:pr is:open author:${e.githubUsername}`,sort:"updated",order:"desc",per_page:o,page:s});t.push(...m.data.items)}let c=[],l=[],u=new Set(e.shelvedPRUrls||[]),d=t.filter(m=>{if(!m.pull_request)return!1;let w=Pt(m.html_url);if(!w)return T("pr-monitor",`Skipping PR with unparseable URL: ${m.html_url}`),!1;let y=w.owner.toLowerCase();if(y===e.githubUsername.toLowerCase())return!1;let g=`${w.owner}/${w.repo}`,R=u.has(m.html_url);return!(e.excludeRepos.includes(g)&&!R||e.excludeOrgs?.some(h=>y===h.toLowerCase())&&!R)});return k("pr-monitor",`Filtered to ${d.length} PRs after excluding own repos, shelved, and excluded orgs/repos`),await kr("pr-monitor",`Fetch details for ${d.length} PRs`,async()=>{await ks(d,async m=>{try{k("pr-monitor",`Fetching details for ${m.html_url}`);let w=await this.fetchPRDetails(m.html_url);w&&c.push(w)}catch(w){let y=A(w);T("pr-monitor",`Error fetching ${m.html_url}: ${y}`),l.push({prUrl:m.html_url,error:y})}},Vl)}),c.sort((m,w)=>{let y={needs_response:0,needs_changes:1,failing_ci:2,ci_blocked:3,ci_not_running:4,merge_conflict:5,needs_rebase:6,missing_required_files:7,incomplete_checklist:8,changes_addressed:9,approaching_dormant:10,dormant:11,waiting:12,waiting_on_maintainer:13,healthy:14};return y[m.status]-y[w.status]}),{prs:c,failures:l}}async fetchPRDetails(e){let t=Te(e);if(!t||t.type!=="pull")throw new K(`Invalid PR URL format: ${e}`);let{owner:s,repo:o,number:n}=t,i=this.stateManager.getState().config,[a,c,l,u]=await Promise.all([this.octokit.pulls.get({owner:s,repo:o,pull_number:n}),Ue(B=>this.octokit.issues.listComments({owner:s,repo:o,issue_number:n,per_page:100,page:B})),this.octokit.pulls.listReviews({owner:s,repo:o,pull_number:n}),Ue(B=>this.octokit.pulls.listReviewComments({owner:s,repo:o,pull_number:n,per_page:100,page:B})).catch(B=>{let le=ve(B);if(le===429)throw B;if(le===403){let ue=A(B).toLowerCase();if(ue.includes("rate limit")||ue.includes("abuse detection"))throw B;return T("pr-monitor",`403 fetching review comments for ${s}/${o}#${n}: ${ue}`),[]}return le===404?k("pr-monitor",`Review comments 404 for ${s}/${o}#${n} (likely no inline comments)`):T("pr-monitor",`Failed to fetch review comments for ${s}/${o}#${n} (status ${le??"unknown"}): self-reply detection will be skipped`),[]})]),d=a.data,m=l.data,w=Ai(m),y=this.hasMergeConflict(d.mergeable,d.mergeable_state),{hasUnrespondedComment:g,lastMaintainerComment:R}=$i(c,m,u,i.githubUsername),h=this.getCIStatus(s,o,d.head.sha),C=g||w==="changes_requested"?this.octokit.repos.getCommit({owner:s,repo:o,ref:d.head.sha}).then(B=>B.data.commit.author?.date).catch(B=>{let le=ve(B);if(le===429)throw B;if(le===403){let ue=A(B).toLowerCase();if(ue.includes("rate limit")||ue.includes("abuse detection"))throw B;T("pr-monitor",`403 fetching commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${A(B)}`);return}T("pr-monitor",`Failed to fetch commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${A(B)}`)}):Promise.resolve(void 0),[{status:_,failingCheckNames:G,failingCheckConclusions:O},F]=await Promise.all([h,C]),{hasIncompleteChecklist:Z,checklistStats:W}=Di(d.body||""),fe=Ii(R?.body,w),Ge=Ie(new Date(d.updated_at),new Date),Ee=Oi(m),ye=this.determineStatus({ciStatus:_,hasMergeConflict:y,hasUnrespondedComment:g,hasIncompleteChecklist:Z,reviewDecision:w,daysSinceActivity:Ge,dormantThreshold:i.dormantThresholdDays,approachingThreshold:i.approachingDormantDays,latestCommitDate:F,lastMaintainerCommentDate:R?.createdAt,latestChangesRequestedDate:Ee}),ze=$s(G,O);return this.buildFetchedPR({id:d.id,url:e,repo:`${s}/${o}`,number:n,title:d.title,status:ye,createdAt:d.created_at,updatedAt:d.updated_at,daysSinceActivity:Ge,ciStatus:_,failingCheckNames:G,classifiedChecks:ze,hasMergeConflict:y,reviewDecision:w,hasUnrespondedComment:g,lastMaintainerComment:R,latestCommitDate:F,hasIncompleteChecklist:Z,checklistStats:W,maintainerActionHints:fe})}buildFetchedPR(e){let t={...e,displayLabel:"",displayDescription:""},{displayLabel:s,displayDescription:o}=xs(t);return t.displayLabel=s,t.displayDescription=o,t}determineStatus(e){let{ciStatus:t,hasMergeConflict:s,hasUnrespondedComment:o,hasIncompleteChecklist:n,reviewDecision:i,daysSinceActivity:a,dormantThreshold:c,approachingThreshold:l,latestCommitDate:u,lastMaintainerCommentDate:d,latestChangesRequestedDate:m}=e;return o?u&&d&&u>d?m&&u<m?"needs_response":t==="failing"?"failing_ci":"changes_addressed":"needs_response":i==="changes_requested"&&m?!u||u<m?"needs_changes":t==="failing"?"failing_ci":"changes_addressed":t==="failing"?"failing_ci":s?"merge_conflict":n?"incomplete_checklist":a>=c?"dormant":a>=l?"approaching_dormant":i==="approved"&&(t==="passing"||t==="unknown")?"waiting_on_maintainer":t==="pending"?"waiting":"healthy"}hasMergeConflict(e,t){return e===!1||t==="dirty"}async getCIStatus(e,t,s){if(!s)return{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map};try{let[o,n]=await Promise.all([this.octokit.repos.getCombinedStatusForRef({owner:e,repo:t,ref:s}),this.octokit.checks.listForRef({owner:e,repo:t,ref:s}).catch(m=>{let w=ve(m);if(w===429)throw m;if(w===403){let y=A(m).toLowerCase();if(y.includes("rate limit")||y.includes("abuse detection"))throw m}return w===404?k("pr-monitor",`Check runs 404 for ${e}/${t}@${s.slice(0,7)} (no checks configured)`):T("pr-monitor",`Non-404 error fetching check runs for ${e}/${t}@${s.slice(0,7)}: ${w??m}`),null})]),i=o.data,a=n?.data?.check_runs||[],c=new Map;for(let m of a){let w=c.get(m.name);(!w||new Date(m.started_at??0)>new Date(w.started_at??0))&&c.set(m.name,m)}let l=[...c.values()],u=Si(l),d=Pi(i);return ki(u,d,l.length)}catch(o){let n=ve(o);if(n===401||n===403||n===429)throw o;return n===404?(k("pr-monitor",`CI check 404 for ${e}/${t} (no CI configured)`),{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}):(T("pr-monitor",`Failed to check CI for ${e}/${t}@${s.slice(0,7)}: ${A(o)}`),{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map})}}async fetchUserMergedPRCounts(){let e=this.stateManager.getState().config;return Mi(this.octokit,e.githubUsername)}async fetchUserClosedPRCounts(){let e=this.stateManager.getState().config;return Li(this.octokit,e.githubUsername)}async fetchRepoStarCounts(e){if(e.length===0)return new Map;k(Is,`Fetching star counts for ${e.length} repos...`);let t=new Map,s=bt(),o=[...new Set(e)],n=10;for(let i=0;i<o.length;i+=n){let a=o.slice(i,i+n),c=await Promise.allSettled(a.map(async u=>{let d=u.split("/");if(d.length!==2||!d[0]||!d[1])throw new K(`Malformed repo identifier: "${u}"`);let[m,w]=d,y=`/repos/${m}/${w}`,g=await Wt(s,y,R=>this.octokit.repos.get({owner:m,repo:w,headers:R}));return{repo:u,stars:g.stargazers_count}})),l=0;for(let u=0;u<c.length;u++){let d=c[u];d.status==="fulfilled"?t.set(d.value.repo,d.value.stars):(l++,T(Is,`Failed to fetch stars for ${a[u]}: ${A(d.reason)}`))}if(l===a.length&&a.length>0){let u=e.length-i-n;u>0&&T(Is,`Entire chunk failed, aborting remaining ${u} repos`);break}}return k(Is,`Fetched star counts for ${t.size}/${e.length} repos`),t}async fetchRecentlyClosedPRs(e=7){let t=this.stateManager.getState().config;return Ni(this.octokit,t,e)}async fetchRecentlyMergedPRs(e=7){let t=this.stateManager.getState().config;return Hi(this.octokit,t,e)}generateDigest(e,t=[],s=[]){let o=new Date().toISOString(),n=e.filter(_=>_.status==="needs_response"),i=e.filter(_=>_.status==="failing_ci"),a=e.filter(_=>_.status==="merge_conflict"),c=e.filter(_=>_.status==="approaching_dormant"),l=e.filter(_=>_.status==="dormant"),u=e.filter(_=>_.status==="healthy"||_.status==="waiting"),d=this.stateManager.getStats(),m=e.filter(_=>_.status==="ci_blocked"),w=e.filter(_=>_.status==="ci_not_running"),y=e.filter(_=>_.status==="needs_rebase"),g=e.filter(_=>_.status==="missing_required_files"),R=e.filter(_=>_.status==="incomplete_checklist"),h=e.filter(_=>_.status==="needs_changes"),S=e.filter(_=>_.status==="changes_addressed"),C=e.filter(_=>_.status==="waiting_on_maintainer");return{generatedAt:o,openPRs:e,prsNeedingResponse:n,ciFailingPRs:i,ciBlockedPRs:m,ciNotRunningPRs:w,mergeConflictPRs:a,needsRebasePRs:y,missingRequiredFilesPRs:g,incompleteChecklistPRs:R,needsChangesPRs:h,changesAddressedPRs:S,waitingOnMaintainerPRs:C,approachingDormant:c,dormantPRs:l,healthyPRs:u,recentlyClosedPRs:t,recentlyMergedPRs:s,shelvedPRs:[],autoUnshelvedPRs:[],summary:{totalActivePRs:e.length,totalNeedingAttention:n.length+h.length+i.length+a.length+y.length+g.length+R.length,totalMergedAllTime:d.mergedPRs,mergeRate:parseFloat(d.mergeRate)}}}async updateRepoScoreFromObservedPR(e,t){t?this.stateManager.incrementMergedCount(e):this.stateManager.incrementClosedCount(e)}}});function Fs(r){if(!r.labels||!Array.isArray(r.labels)||r.labels.length===0)return!1;let t=r.labels.map(s=>(typeof s=="string"?s:s.name||"").toLowerCase()).filter(s=>s.length>0);return t.length===0?!1:t.every(s=>ao.has(s))}function Vi(r){return!r.labels||!Array.isArray(r.labels)?!1:r.labels.map(s=>(typeof s=="string"?s:s.name||"").toLowerCase()).filter(s=>Bi.has(s)).length>=5}function zi(r){return r?/^.+\s+(question|fact|point|item|task|entry|post|challenge|exercise|example|problem|tip|recipe|snippet)\s+#?\d+$/i.test(r):!1}function co(r){let e=new Set,t=new Map;for(let s of r){let o=s.repository_url.split("/").slice(-2).join("/");if(Vi(s)){e.add(o);continue}s.title&&zi(s.title)&&t.set(o,(t.get(o)||0)+1)}for(let[s,o]of t)o>=3&&e.add(s);return e}function Us(r,e){let t=new Map,s=[];for(let o of r){let n=t.get(o.issue.repo)||0;n<e&&(s.push(o),t.set(o.issue.repo,n+1))}return s}var ao,Bi,lo=$(()=>{"use strict";ao=new Set(["documentation","docs","typo","spelling"]);Bi=new Set(["good first issue","hacktoberfest","easy","up-for-grabs","first-timers-only","beginner-friendly","beginner","starter","newbie","low-hanging-fruit","community"])});function uo(r,e){let t=0;return r>=5e3?t+=8:r>=500?t+=5:r>=50&&(t+=3),e>=500?t+=4:e>=50&&(t+=2),t}function Qt(r){let e=50;r.repoScore!==null&&(e+=r.repoScore*2),e+=r.repoQualityBonus??0,r.mergedPRCount>0&&(e+=15),r.clearRequirements&&(e+=15);let t=new Date(r.issueUpdatedAt),s=Ie(t);return s<=14?e+=15:s<=30&&(e+=Math.round(15*(1-(s-14)/16))),r.hasContributionGuidelines&&(e+=10),r.orgHasMergedPRs&&(e+=5),r.hasExistingPR&&(e-=30),r.isClaimed&&(e-=20),r.closedWithoutMergeCount>0&&r.mergedPRCount===0&&(e-=15),Math.max(0,Math.min(100,e))}var Ms=$(()=>{"use strict";Oe()});function Ji(){let r=Date.now();for(let[e,t]of et.entries())r-t.fetchedAt>Ki&&et.delete(e);if(et.size>Wi){let t=Array.from(et.entries()).sort((s,o)=>s[1].fetchedAt-o[1].fetchedAt).slice(0,et.size-Wi);for(let[s]of t)et.delete(s)}}var it,zl,et,Ki,Wi,at,Qi=$(()=>{"use strict";zt();Oe();oe();be();Jt();Ms();it="issue-vetting",zl=5,et=new Map,Ki=3600*1e3,Wi=100;at=class r{octokit;stateManager;constructor(e,t){this.octokit=e,this.stateManager=t}async vetIssue(e){let t=Te(e);if(!t||t.type!=="issues")throw new K(`Invalid issue URL: ${e}`);let{owner:s,repo:o,number:n}=t,i=`${s}/${o}`,{data:a}=await this.octokit.issues.get({owner:s,repo:o,issue_number:n}),[c,l,u,d,m]=await Promise.all([this.checkNoExistingPR(s,o,n),this.checkNotClaimed(s,o,n,a.comments),this.checkProjectHealth(s,o),this.fetchContributionGuidelines(s,o),this.checkUserMergedPRsInRepo(s,o)]),w=c.passed,y=l.passed,g=this.analyzeRequirements(a.body||""),R=u.checkFailed?!0:u.isActive,h={passedAllChecks:w&&y&&R&&g,checks:{noExistingPR:w,notClaimed:y,projectActive:R,clearRequirements:g,contributionGuidelinesFound:!!d},contributionGuidelines:d,notes:[]};w||h.notes.push("Existing PR found for this issue"),y||h.notes.push("Issue appears to be claimed by someone"),c.inconclusive&&h.notes.push(`Could not verify absence of existing PRs: ${c.reason||"API error"}`),l.inconclusive&&h.notes.push(`Could not verify claim status: ${l.reason||"API error"}`),u.checkFailed?h.notes.push(`Could not verify project activity: ${u.failureReason||"API error"}`):u.isActive||h.notes.push("Project may be inactive"),g||h.notes.push("Issue requirements are unclear"),d||h.notes.push("No CONTRIBUTING.md found");let S={id:a.id,url:e,repo:i,number:n,title:a.title,status:"candidate",labels:a.labels.map(ue=>typeof ue=="string"?ue:ue.name||""),createdAt:a.created_at,updatedAt:a.updated_at,vetted:!0,vettingResult:h},C=[],_=[];w||C.push("Has existing PR"),y||C.push("Already claimed"),!u.isActive&&!u.checkFailed&&C.push("Inactive project"),g||C.push("Unclear requirements"),w&&_.push("No existing PR"),y&&_.push("Not claimed"),u.isActive&&!u.checkFailed&&_.push("Active project"),g&&_.push("Clear requirements"),d&&_.push("Has contribution guidelines");let G=this.stateManager.getState().config,O=this.stateManager.getRepoScore(i),F=O&&O.mergedPRCount>0?O.mergedPRCount:m;F>0?_.push(`Trusted project (${F} PR${F>1?"s":""} merged)`):G.trustedProjects.includes(i)&&_.push("Trusted project (previous PR merged)"),O&&(O.closedWithoutMergeCount>0&&F===0?C.push("User has rejected PR(s) in this repo with no successful merges"):O.closedWithoutMergeCount>0&&F>0&&h.notes.push(`Mixed history: ${F} merged, ${O.closedWithoutMergeCount} closed without merge`));let Z=i.split("/")[0],W=!1;Z&&i.includes("/")&&(W=Object.values(this.stateManager.getState().repoScores).some(ue=>ue.repo&&ue.mergedPRCount>0&&ue.repo.startsWith(Z+"/")&&ue.repo!==i)),W&&_.push(`Org affinity (merged PRs in other ${Z} repos)`);let fe;h.passedAllChecks?fe="approve":C.length>2?fe="skip":fe="needs_review";let Ge=u.checkFailed||c.inconclusive||l.inconclusive;fe==="approve"&&Ge&&(fe="needs_review",h.notes.push("Recommendation downgraded: one or more checks were inconclusive"));let Ee=uo(u.stargazersCount??0,u.forksCount??0);u.checkFailed&&Ee===0&&h.notes.push("Repo quality bonus unavailable: could not fetch star/fork counts due to API error");let ye=this.getRepoScore(i),ze=Qt({repoScore:ye,hasExistingPR:!w,isClaimed:!y,clearRequirements:g,hasContributionGuidelines:!!d,issueUpdatedAt:a.updated_at,closedWithoutMergeCount:O?.closedWithoutMergeCount??0,mergedPRCount:F,orgHasMergedPRs:W,repoQualityBonus:Ee}),B=this.stateManager.getStarredRepos(),le="normal";return F>0?le="merged_pr":B.includes(i)&&(le="starred"),{issue:S,vettingResult:h,projectHealth:u,recommendation:fe,reasonsToSkip:C,reasonsToApprove:_,viabilityScore:ze,searchPriority:le}}async vetIssuesParallel(e,t,s){let o=[],n=[],i=0,a=0,c=0;for(let u of e){if(o.length>=t)break;c++;let d=this.vetIssue(u).then(m=>{o.length<t&&(s&&(m.searchPriority=s),o.push(m))}).catch(m=>{i++,r.isRateLimitError(m)&&a++,T(it,`Error vetting issue ${u}:`,A(m))});if(n.push(d),n.length>=zl){let m=await Promise.race(n.map((w,y)=>w.then(()=>y)));n.splice(m,1)}}await Promise.allSettled(n);let l=i===c&&c>0;return l&&T(it,`All ${c} issue(s) failed vetting. This may indicate a systemic issue (rate limit, auth, network).`),{candidates:o.slice(0,t),allFailed:l,rateLimitHit:a>0}}static isRateLimitError(e){let t=ve(e);return t===429?!0:t===403?A(e).toLowerCase().includes("rate limit"):!1}async checkNoExistingPR(e,t,s){try{let{data:o}=await this.octokit.search.issuesAndPullRequests({q:`repo:${e}/${t} is:pr ${s}`,per_page:5}),i=(await Ue(a=>this.octokit.issues.listEventsForTimeline({owner:e,repo:t,issue_number:s,per_page:100,page:a}))).filter(a=>{let c=a;return c.event==="cross-referenced"&&c.source?.issue?.pull_request});return{passed:o.total_count===0&&i.length===0}}catch(o){let n=A(o);return T(it,`Failed to check for existing PRs on ${e}/${t}#${s}: ${n}. Assuming no existing PR.`),{passed:!0,inconclusive:!0,reason:n}}}async checkUserMergedPRsInRepo(e,t){try{let{data:s}=await this.octokit.search.issuesAndPullRequests({q:`repo:${e}/${t} is:pr is:merged author:@me`,per_page:1});return s.total_count}catch(s){let o=A(s);return T(it,`Could not check merged PRs in ${e}/${t}: ${o}. Defaulting to 0.`),0}}async checkNotClaimed(e,t,s,o){if(o===0)return{passed:!0};try{let i=(await this.octokit.paginate(this.octokit.issues.listComments,{owner:e,repo:t,issue_number:s,per_page:100},c=>c.data)).slice(-100),a=["i'm working on this","i am working on this","i'll take this","i will take this","working on it","i'd like to work on","i would like to work on","can i work on","may i work on","assigned to me","i'm on it","i'll submit a pr","i will submit a pr","working on a fix","working on a pr"];for(let c of i){let l=(c.body||"").toLowerCase();if(a.some(u=>l.includes(u)))return{passed:!1}}return{passed:!0}}catch(n){let i=A(n);return T(it,`Failed to check claim status on ${e}/${t}#${s}: ${i}. Assuming not claimed.`),{passed:!0,inconclusive:!0,reason:i}}}async checkProjectHealth(e,t){try{let s=bt(),o=`/repos/${e}/${t}`,n=await Wt(s,o,d=>this.octokit.repos.get({owner:e,repo:t,headers:d})),{data:i}=await this.octokit.repos.listCommits({owner:e,repo:t,per_page:1}),c=i[0]?.commit?.author?.date||n.pushed_at,l=Ie(new Date(c)),u="unknown";try{let{data:d}=await this.octokit.actions.listRepoWorkflows({owner:e,repo:t,per_page:1});d.total_count>0&&(u="passing")}catch(d){let m=A(d);T(it,`Failed to check CI status for ${e}/${t}: ${m}. Defaulting to unknown.`)}return{repo:`${e}/${t}`,lastCommitAt:c,daysSinceLastCommit:l,openIssuesCount:n.open_issues_count,avgIssueResponseDays:0,ciStatus:u,isActive:l<30,stargazersCount:n.stargazers_count,forksCount:n.forks_count}}catch(s){let o=A(s);return T(it,`Error checking project health for ${e}/${t}: ${o}`),{repo:`${e}/${t}`,lastCommitAt:"",daysSinceLastCommit:999,openIssuesCount:0,avgIssueResponseDays:0,ciStatus:"unknown",isActive:!1,checkFailed:!0,failureReason:o}}}async fetchContributionGuidelines(e,t){let s=`${e}/${t}`,o=et.get(s);if(o&&Date.now()-o.fetchedAt<Ki)return o.guidelines;let n=["CONTRIBUTING.md",".github/CONTRIBUTING.md","docs/CONTRIBUTING.md","contributing.md"];for(let i of n)try{let{data:a}=await this.octokit.repos.getContent({owner:e,repo:t,path:i});if("content"in a){let c=Buffer.from(a.content,"base64").toString("utf-8"),l=this.parseContributionGuidelines(c);return et.set(s,{guidelines:l,fetchedAt:Date.now()}),Ji(),l}}catch(a){a instanceof Error&&!a.message.includes("404")&&!a.message.includes("Not Found")&&T(it,`Unexpected error fetching ${i} from ${e}/${t}: ${a.message}`)}et.set(s,{guidelines:void 0,fetchedAt:Date.now()}),Ji()}parseContributionGuidelines(e){let t={rawContent:e},s=e.toLowerCase();if(s.includes("branch")){let o=e.match(/branch[^\n]*(?:named?|format|convention)[^\n]*[`"]([^`"]+)[`"]/i);o&&(t.branchNamingConvention=o[1])}if(s.includes("conventional commit"))t.commitMessageFormat="conventional commits";else if(s.includes("commit message")){let o=e.match(/commit message[^\n]*[`"]([^`"]+)[`"]/i);o&&(t.commitMessageFormat=o[1])}return s.includes("jest")?t.testFramework="Jest":s.includes("rspec")?t.testFramework="RSpec":s.includes("pytest")?t.testFramework="pytest":s.includes("mocha")&&(t.testFramework="Mocha"),s.includes("eslint")?t.linter="ESLint":s.includes("rubocop")?t.linter="RuboCop":s.includes("prettier")&&(t.formatter="Prettier"),(s.includes("cla")||s.includes("contributor license agreement"))&&(t.claRequired=!0),t}analyzeRequirements(e){if(!e||e.length<50)return!1;let t=/\d+\.|[-*]\s/.test(e),s=/```/.test(e),o=/expect|should|must|want/i.test(e);return[t,s,o,e.length>200].filter(Boolean).length>=2}getRepoScore(e){return this.stateManager.getState().repoScores?.[e]?.score??null}}});var Yi,Xi,Q,_t,Zi=$(()=>{"use strict";Yi=J(require("fs"),1),Xi=J(require("path"),1);Vt();jt();Oe();ms();oe();be();lo();Qi();Ms();lo();Ms();Q="issue-discovery",_t=class{octokit;stateManager;githubToken;vetter;rateLimitWarning=null;constructor(e){this.githubToken=e,this.octokit=we(e),this.stateManager=U(),this.vetter=new at(this.octokit,this.stateManager)}async fetchStarredRepos(){me(Q,"Fetching starred repositories...");let e=[];try{let t=this.octokit.paginate.iterator(this.octokit.activity.listReposStarredByAuthenticatedUser,{per_page:100}),s=0;for await(let{data:o}of t){for(let n of o){let i;"full_name"in n&&typeof n.full_name=="string"?i=n.full_name:"repo"in n&&n.repo&&typeof n.repo=="object"&&"full_name"in n.repo&&(i=n.repo.full_name),i&&e.push(i)}if(s++,s>=5){me(Q,"Reached pagination limit for starred repos (500)");break}}return me(Q,`Fetched ${e.length} starred repositories`),this.stateManager.setStarredRepos(e),e}catch(t){let s=this.stateManager.getStarredRepos(),o=A(t);return T(Q,"Error fetching starred repos:",o),s.length===0?T(Q,`Failed to fetch starred repositories from GitHub API. No cached repos available. Error: ${o}
46
- Tip: Ensure your GITHUB_TOKEN has the 'read:user' scope and try again.`):T(Q,`Failed to fetch starred repositories from GitHub API. Using ${s.length} cached repos instead. Error: ${o}`),s}}async getStarredReposWithRefresh(){return this.stateManager.isStarredReposStale()?this.fetchStarredRepos():this.stateManager.getStarredRepos()}async filterVetAndScore(e,t,s,o,n,i){let a=co(e);if(a.size>0){let y=e.filter(g=>a.has(g.repository_url.split("/").slice(-2).join("/"))).length;k(Q,`[SPAM_FILTER] Filtered ${y} issues from ${a.size} label-farming repos: ${[...a].join(", ")}`)}let c=t(e).filter(y=>{let g=y.repository_url.split("/").slice(-2).join("/");return a.has(g)?!1:s.every(R=>!R.has(g))}).slice(0,o*2);if(c.length===0)return k(Q,`[${i}] All ${e.length} items filtered before vetting`),{candidates:[],allVetFailed:!1,rateLimitHit:!1};let{candidates:l,allFailed:u,rateLimitHit:d}=await this.vetter.vetIssuesParallel(c.map(y=>y.html_url),o,"normal"),m=l.filter(y=>y.projectHealth.checkFailed?!0:(y.projectHealth.stargazersCount??0)>=n),w=l.length-m.length;return w>0&&k(Q,`[STAR_FILTER] Filtered ${w} ${i} candidates below ${n} stars`),{candidates:m,allVetFailed:u,rateLimitHit:d}}async searchIssues(e={}){let t=this.stateManager.getState().config,s=e.languages||t.languages,o=e.labels||t.labels,n=e.maxResults||10,i=t.minStars??50,a=[],c=null,l=null,u=!1;this.rateLimitWarning=null;try{let M=await Zr(this.githubToken);if(M.remaining<5){let N=new Date(M.resetAt).toLocaleTimeString("en-US",{hour12:!1});this.rateLimitWarning=`GitHub search API quota low (${M.remaining}/${M.limit} remaining, resets at ${N}). Search may be slow.`,T(Q,this.rateLimitWarning)}}catch(M){if(ve(M)===401)throw M;T(Q,"Could not check rate limit:",A(M))}let d=this.stateManager.getReposWithMergedPRs(),m=new Set(d),w=this.stateManager.getReposWithOpenPRs(),y=await this.getStarredReposWithRefresh(),g=new Set(y),R=new Set(this.stateManager.getLowScoringRepos(3)),h=new Set(this.stateManager.getState().activeIssues.map(M=>M.url)),S=new Set(t.excludeRepos),C=t.maxIssueAgeDays||90,_=new Date,G=o.map(M=>`label:"${M}"`).join(" "),F=s.some(M=>M.toLowerCase()==="any")?"":s.map(M=>`language:${M}`).join(" "),Z=`is:issue is:open ${F} no:assignee`.replace(/ +/g," ").trim(),W=`is:issue is:open ${G} ${F} no:assignee`.replace(/ +/g," ").trim(),fe=t.includeDocIssues??!0,Ge=new Set(t.aiPolicyBlocklist??ct.aiPolicyBlocklist??[]);Ge.size>0&&k(Q,`[AI_POLICY_FILTER] Filtering issues from ${Ge.size} blocklisted repo(s): ${[...Ge].join(", ")}`);let Ee=M=>M.filter(N=>{if(h.has(N.html_url))return!1;let se=N.repository_url.split("/").slice(-2).join("/");if(S.has(se)||Ge.has(se)||R.has(se))return!1;let de=new Date(N.updated_at);return!(Ie(de,_)>C||!fe&&Fs(N))}),ye=[...d,...w.filter(M=>!m.has(M))].slice(0,10),ze=new Set(ye);if(ye.length>0){let M=Math.min(d.length,ye.length),N=ye.length-M;me(Q,`Phase 0: Searching issues in ${ye.length} repos (${M} merged-PR, ${N} open-PR, no label filter)...`);let se=ye.slice(0,M);if(se.length>0){let ee=n-a.length;if(ee>0){let{candidates:pe,allBatchesFailed:xe,rateLimitHit:ot}=await this.searchInRepos(se,Z,ee,"merged_pr",Ee);a.push(...pe),xe&&(c="All merged-PR repo batches failed"),ot&&(u=!0),me(Q,`Found ${pe.length} candidates from merged-PR repos`)}}let de=ye.slice(M);if(de.length>0&&a.length<n){let ee=n-a.length;if(ee>0){let{candidates:pe,allBatchesFailed:xe,rateLimitHit:ot}=await this.searchInRepos(de,Z,ee,"starred",Ee);if(a.push(...pe),xe){let We="All open-PR repo batches failed";c=c?`${c}; ${We}`:We}ot&&(u=!0),me(Q,`Found ${pe.length} candidates from open-PR repos`)}}}if(a.length<n&&y.length>0){let M=y.filter(N=>!ze.has(N));if(M.length>0){me(Q,`Phase 1: Searching issues in ${M.length} starred repos...`);let N=n-a.length;if(N>0){let{candidates:se,allBatchesFailed:de,rateLimitHit:ee}=await this.searchInRepos(M.slice(0,10),W,N,"starred",Ee);a.push(...se),de&&(l="All starred repo batches failed"),ee&&(u=!0),me(Q,`Found ${se.length} candidates from starred repos`)}}}let B=null;if(a.length<n){me(Q,"Phase 2: General issue search...");let M=n-a.length;try{let{data:N}=await this.octokit.search.issuesAndPullRequests({q:W,sort:"created",order:"desc",per_page:M*3});me(Q,`Found ${N.total_count} issues in general search, processing top ${N.items.length}...`);let se=new Set(a.map(xe=>xe.issue.repo)),{candidates:de,allVetFailed:ee,rateLimitHit:pe}=await this.filterVetAndScore(N.items,Ee,[ze,g,se],M,i,"Phase 2");a.push(...de),ee&&(B=(B?B+"; ":"")+"all vetting failed"),pe&&(u=!0),me(Q,`Found ${de.length} candidates from general search`)}catch(N){let se=A(N);B=se,at.isRateLimitError(N)&&(u=!0),T(Q,`Error in general issue search: ${se}`)}}let le=null;if(a.length<n){me(Q,"Phase 3: Searching actively maintained repos...");let M=n-a.length,N=new Date;N.setDate(N.getDate()-30);let se=N.toISOString().split("T")[0],de=`is:issue is:open no:assignee ${F} stars:>=${i} pushed:>=${se} archived:false`.replace(/ +/g," ").trim();try{let{data:ee}=await this.octokit.search.issuesAndPullRequests({q:de,sort:"updated",order:"desc",per_page:M*3});me(Q,`Found ${ee.total_count} issues in maintained-repo search, processing top ${ee.items.length}...`);let pe=new Set(a.map(rr=>rr.issue.repo)),{candidates:xe,allVetFailed:ot,rateLimitHit:We}=await this.filterVetAndScore(ee.items,Ee,[ze,g,pe],M,i,"Phase 3");a.push(...xe),ot&&(le="all vetting failed"),We&&(u=!0),me(Q,`Found ${xe.length} candidates from maintained-repo search`)}catch(ee){let pe=A(ee);le=pe,at.isRateLimitError(ee)&&(u=!0),T(Q,`Error in maintained-repo search: ${pe}`)}}if(a.length===0){let M=[c?`Phase 0 (merged-PR repos): ${c}`:null,l?`Phase 1 (starred repos): ${l}`:null,B?`Phase 2 (general): ${B}`:null,le?`Phase 3 (maintained repos): ${le}`:null].filter(Boolean),N=M.length>0?` ${M.join(". ")}.`:"";if(u)return this.rateLimitWarning=`Search returned no results due to GitHub API rate limits.${N} Try again after the rate limit resets.`,[];throw new K(`No issue candidates found across all search phases.${N} Try adjusting your search criteria (languages, labels) or check your network connection.`)}return u&&(this.rateLimitWarning=`Search results may be incomplete: GitHub API rate limits were hit during search. Found ${a.length} candidate${a.length===1?"":"s"} but some search phases failed. Try again after the rate limit resets for complete results.`),a.sort((M,N)=>{let se={merged_pr:0,starred:1,normal:2},de=se[M.searchPriority]-se[N.searchPriority];if(de!==0)return de;let ee={approve:0,needs_review:1,skip:2},pe=ee[M.recommendation]-ee[N.recommendation];return pe!==0?pe:N.viabilityScore-M.viabilityScore}),Us(a,2).slice(0,n)}async searchInRepos(e,t,s,o,n){let i=[],c=this.batchRepos(e,5),l=0,u=0;for(let w of c){if(i.length>=s)break;try{let y=w.map(h=>`repo:${h}`).join(" OR "),g=`${t} (${y})`,{data:R}=await this.octokit.search.issuesAndPullRequests({q:g,sort:"created",order:"desc",per_page:Math.min(30,(s-i.length)*3)});if(R.items.length>0){let h=n(R.items),S=s-i.length,{candidates:C}=await this.vetter.vetIssuesParallel(h.slice(0,S*2).map(_=>_.html_url),S,o);i.push(...C)}}catch(y){l++,at.isRateLimitError(y)&&u++;let g=w.join(", ");T(Q,`Error searching issues in batch [${g}]:`,A(y))}}let d=l===c.length&&c.length>0,m=u>0;return d&&T(Q,`All ${c.length} batch(es) failed for ${o} phase. This may indicate a systemic issue (rate limit, auth, network).`),{candidates:i,allBatchesFailed:d,rateLimitHit:m}}batchRepos(e,t){let s=[];for(let o=0;o<e.length;o+=t)s.push(e.slice(o,o+t));return s}static isRateLimitError(e){return at.isRateLimitError(e)}async vetIssue(e){return this.vetter.vetIssue(e)}analyzeRequirements(e){return this.vetter.analyzeRequirements(e)}calculateViabilityScore(e){return Qt(e)}saveSearchResults(e){let t=[...e].sort((a,c)=>c.viabilityScore-a.viabilityScore),s=De(),o=Xi.join(s,"found-issues.md"),n=new Date().toISOString(),i=`# Found Issues
45
+ `);let l={},p=new s.Events(l);return l.on("secondary-limit",c.onSecondaryRateLimit),l.on("rate-limit",c.onRateLimit),l.on("error",d=>r.log.warn("Error in throttling-plugin limit handler",d)),c.retryLimiter.on("failed",async function(d,m){let[_,y,g]=m.args,{pathname:C}=new URL(g.url,"http://github.test");if(!(C.startsWith("/graphql")&&d.status!==401||d.status===403||d.status===429))return;let k=~~y.retryCount;y.retryCount=k,g.request.retryCount=k;let{wantRetry:E,retryAfter:w=0}=await(async function(){if(/\bsecondary rate\b/i.test(d.message)){let x=Number(d.response.headers["retry-after"])||_.fallbackSecondaryRateRetryAfter;return{wantRetry:await p.trigger("secondary-limit",x,g,r,k),retryAfter:x}}if(d.response.headers!=null&&d.response.headers["x-ratelimit-remaining"]==="0"||(d.response.data?.errors??[]).some(x=>x.type==="RATE_LIMITED")){let x=new Date(~~d.response.headers["x-ratelimit-reset"]*1e3).getTime(),O=Math.max(Math.ceil((x-Date.now())/1e3)+1,0);return{wantRetry:await p.trigger("rate-limit",O,g,r,k),retryAfter:O}}return{}})();if(E)return y.retryCount++,w*_.retryAfterBaseValue}),r.hook.wrap("request",Sl.bind(null,c)),{}}var fi,Pl,Xr,Ol,hi,bi,gt,$l,yi=G(()=>{fi=Q(mi(),1),Pl="0.0.0-development",Xr=()=>Promise.resolve();Ol=["/orgs/{org}/invitations","/orgs/{org}/invitations/{invitation_id}","/orgs/{org}/teams/{team_slug}/discussions","/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments","/repos/{owner}/{repo}/collaborators/{username}","/repos/{owner}/{repo}/commits/{commit_sha}/comments","/repos/{owner}/{repo}/issues","/repos/{owner}/{repo}/issues/{issue_number}/comments","/repos/{owner}/{repo}/issues/{issue_number}/sub_issue","/repos/{owner}/{repo}/issues/{issue_number}/sub_issues/priority","/repos/{owner}/{repo}/pulls","/repos/{owner}/{repo}/pulls/{pull_number}/comments","/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies","/repos/{owner}/{repo}/pulls/{pull_number}/merge","/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers","/repos/{owner}/{repo}/pulls/{pull_number}/reviews","/repos/{owner}/{repo}/releases","/teams/{team_id}/discussions","/teams/{team_id}/discussions/{discussion_number}/comments"];hi=Gl(Ol),bi=hi.test.bind(hi),gt={},$l=function(r,e){gt.global=new r.Group({id:"octokit-global",maxConcurrent:10,...e}),gt.auth=new r.Group({id:"octokit-auth",maxConcurrent:1,...e}),gt.search=new r.Group({id:"octokit-search",maxConcurrent:1,minTime:2e3,...e}),gt.write=new r.Group({id:"octokit-write",maxConcurrent:1,minTime:1e3,...e}),gt.notifications=new r.Group({id:"octokit-notifications",maxConcurrent:1,minTime:3e3,...e})};ws.VERSION=Pl;ws.triggersNotification=bi});function Ts(r){return r.toLocaleTimeString("en-US",{hour12:!1})}function we(r){return Es&&vi===r||(Es=new xl({auth:r,throttle:{onRateLimit:(e,t,s,o)=>{let n=t,i=new Date(Date.now()+e*1e3);return o<2?(T(Rs,`Rate limit hit (retry ${o+1}/2, waiting ${e}s, resets at ${Ts(i)}) \u2014 ${n.method} ${n.url}`),!0):(T(Rs,`Rate limit exceeded, not retrying \u2014 ${n.method} ${n.url} (resets at ${Ts(i)})`),!1)},onSecondaryRateLimit:(e,t,s,o)=>{let n=t,i=new Date(Date.now()+e*1e3);return o<1?(T(Rs,`Secondary rate limit hit (retry ${o+1}/1, waiting ${e}s, resets at ${Ts(i)}) \u2014 ${n.method} ${n.url}`),!0):(T(Rs,`Secondary rate limit exceeded, not retrying \u2014 ${n.method} ${n.url} (resets at ${Ts(i)})`),!1)}}}),vi=r),Es}async function Zr(r){let e=we(r),{data:t}=await e.rateLimit.get(),s=t.resources.search;return{remaining:s.remaining,limit:s.limit,resetAt:new Date(s.reset*1e3).toISOString()}}var Rs,xl,Es,vi,qt=G(()=>{"use strict";gi();yi();ve();Rs="github",xl=di.plugin(ws),Es=null,vi=null});async function Cs(r,e,t){let s=0,o=!1,n=async()=>{for(;s<r.length&&!o;){let a=r[s++];try{await e(a)}catch(c){throw o=!0,c}}},i=Math.min(t,r.length);await Promise.all(Array.from({length:i},()=>n()))}var eo=G(()=>{"use strict"});async function Ue(r,e=100,t=10){let s=[];for(let o=1;o<=t;o++){let{data:n}=await r(o);if(s.push(...n),n.length<e)break}return s}var Bt=G(()=>{"use strict"});function ht(){return to||(to=new Ss),to}async function Vt(r,e,t){let s=r.getInflight(e);if(s)return S(mt,`Dedup hit for ${e}`),await s;let n=(async()=>{let a={},c=r.get(e);c&&(a["if-none-match"]=c.etag);try{let l=await t(a),p=l.headers?.etag;return p&&r.set(e,p,l.data),l.data}catch(l){if(Il(l)){let p=r.get(e);if(p)return S(mt,`304 cache hit for ${e}`),p.body}throw l}})(),i=r.setInflight(e,n);try{return await n}finally{i()}}function Il(r){return fe(r)===304}var Ce,Ps,_i,mt,Dl,Ss,to,zt=G(()=>{"use strict";Ce=Q(require("fs"),1),Ps=Q(require("path"),1),_i=Q(require("crypto"),1);Oe();ve();ie();mt="http-cache",Dl=1440*60*1e3,Ss=class{cacheDir;inflightRequests=new Map;constructor(e){this.cacheDir=e??Ar()}keyFor(e){return _i.createHash("sha256").update(e).digest("hex")}pathFor(e){return Ps.join(this.cacheDir,`${this.keyFor(e)}.json`)}getIfFresh(e,t){let s=this.get(e);if(!s)return null;let o=Date.now()-new Date(s.cachedAt).getTime();return!Number.isFinite(o)||o<0||o>t?null:s.body}get(e){let t=this.pathFor(e);try{let s=Ce.readFileSync(t,"utf-8"),o=JSON.parse(s);return o.url!==e?(S(mt,`Cache collision detected for ${e}, ignoring`),null):o}catch{return null}}set(e,t,s){let o={etag:t,url:e,body:s,cachedAt:new Date().toISOString()};try{Ce.writeFileSync(this.pathFor(e),JSON.stringify(o),{encoding:"utf-8",mode:384}),S(mt,`Cached response for ${e}`)}catch(n){S(mt,`Failed to write cache for ${e}`,n)}}hasInflight(e){return this.inflightRequests.has(e)}getInflight(e){return this.inflightRequests.get(e)}setInflight(e,t){return this.inflightRequests.set(e,t),()=>{this.inflightRequests.delete(e)}}evictStale(e=Dl){let t=0;try{let s=Ce.readdirSync(this.cacheDir),o=Date.now();for(let n of s){if(!n.endsWith(".json"))continue;let i=Ps.join(this.cacheDir,n);try{let a=Ce.readFileSync(i,"utf-8"),c=JSON.parse(a);o-new Date(c.cachedAt).getTime()>e&&(Ce.unlinkSync(i),t++)}catch{try{Ce.unlinkSync(i),t++}catch{}}}}catch{}return t>0&&S(mt,`Evicted ${t} stale cache entries`),t}clear(){try{let e=Ce.readdirSync(this.cacheDir);for(let t of e)t.endsWith(".json")&&Ce.unlinkSync(Ps.join(this.cacheDir,t));S(mt,"Cache cleared")}catch{}}size(){try{return Ce.readdirSync(this.cacheDir).filter(e=>e.endsWith(".json")).length}catch{return 0}}},to=null});function so(r,e,t){if(t==="cancelled"||t==="timed_out")return"infrastructure";let s=r.toLowerCase();if(Ri.some(o=>o.test(s)))return"auth_gate";if(wi.some(o=>o.test(s)))return"fork_limitation";if(Ei.some(o=>o.test(s)))return"infrastructure";if(e){let o=e.toLowerCase();if(Ri.some(n=>n.test(o)))return"auth_gate";if(wi.some(n=>n.test(o)))return"fork_limitation";if(Ei.some(n=>n.test(o)))return"infrastructure"}return"actionable"}function ks(r,e){return r.map(t=>{let s=e?.get(t);return{name:t,category:so(t,void 0,s),conclusion:s}})}function Ti(r){let e=!1,t=!1,s=!1,o=[],n=new Map;for(let i of r)i.conclusion==="failure"||i.conclusion==="cancelled"||i.conclusion==="timed_out"?(e=!0,o.push(i.name),n.set(i.name,i.conclusion)):i.conclusion==="action_required"||i.status==="in_progress"||i.status==="queued"?t=!0:i.conclusion==="success"&&(s=!0);return{hasFailingChecks:e,hasPendingChecks:t,hasSuccessfulChecks:s,failingCheckNames:o,failingCheckConclusions:n}}function Ci(r){let e=r.statuses.filter(c=>{let l=(c.description||"").toLowerCase();return!(c.state==="failure"&&(l.includes("authorization required")||l.includes("authorize")))}),t=e.some(c=>c.state==="failure"||c.state==="error"),s=e.some(c=>c.state==="pending"),o=e.some(c=>c.state==="success"),n=t?"failure":s?"pending":o||e.length===0?"success":r.state,i=r.statuses.length>0,a=[];for(let c of e)(c.state==="failure"||c.state==="error")&&a.push(c.context);return{effectiveCombinedState:n,hasStatuses:i,failingStatusNames:a}}function Pi(r,e,t){let{hasFailingChecks:s,hasPendingChecks:o,hasSuccessfulChecks:n,failingCheckNames:i,failingCheckConclusions:a}=r,{effectiveCombinedState:c,hasStatuses:l,failingStatusNames:p}=e,d=[...i,...p];return s||c==="failure"||c==="error"?{status:"failing",failingCheckNames:d,failingCheckConclusions:a}:o||c==="pending"?{status:"pending",failingCheckNames:[],failingCheckConclusions:new Map}:n||c==="success"?{status:"passing",failingCheckNames:[],failingCheckConclusions:new Map}:!l&&t===0?{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}:{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}}var wi,Ri,Ei,ro=G(()=>{"use strict";wi=[/vercel/i,/netlify/i,/\bpreview\s*deploy/i,/\bdeploy\s*preview/i,/storybook/i,/chromatic/i,/percy/i,/cloudflare pages/i],Ri=[/authoriz/i,/approval/i,/\bcla\b/i,/license\/cla/i],Ei=[/\binstall\s*(os\s*)?dep(endenc|s\b)/i,/\bsetup\s+fail(ed|ure)?\b/i,/\bservice\s*unavailable/i,/\binfrastructure/i]});function At(r){return r.includes("[bot]")||Fl.has(r.toLowerCase())}function Wt(r){if(!r||r.length>100||r.includes("?"))return!1;let e=r.toLowerCase();return["thanks","thank you","lgtm","looks good","will review","we'll review","we'll get to this","noted","got it","will look","will check"].some(s=>e.includes(s))}var Fl,As=G(()=>{"use strict";Fl=new Set(["allcontributors","changeset-bot","claassistant","codecov-commenter","greenkeeper","imgbot","netlify","renovate","snyk-bot","sonarcloud","stale","vercel"])});function Si(r){if(r.length===0)return"review_required";let e=new Map;for(let s of r){let o=s.user?.login,n=s.state;o&&n&&e.set(o,n)}let t=Array.from(e.values());return t.includes("CHANGES_REQUESTED")?"changes_requested":t.includes("APPROVED")?"approved":"review_required"}function ki(r){let e;for(let t of r)t.state==="CHANGES_REQUESTED"&&t.submitted_at&&(!e||t.submitted_at>e)&&(e=t.submitted_at);return e}function Ul(r,e){let t=e.filter(o=>o.pull_request_review_id===r);if(t.length===0)return!1;let s=new Map;for(let o of e)o.user?.login&&s.set(o.id,o.user.login.toLowerCase());return t.every(o=>{if(!o.in_reply_to_id)return!1;let n=s.get(o.in_reply_to_id),i=o.user?.login?.toLowerCase();return n!=null&&i!=null&&n===i})}function Ml(r,e){return e.find(t=>t.pull_request_review_id===r&&t.body?.trim())?.body?.trim()}function Ai(r,e,t,s){let o=[],n=s.toLowerCase();for(let c of r){let l=c.user?.login||"unknown";o.push({author:l,body:c.body||"",createdAt:c.created_at,isUser:l.toLowerCase()===n})}for(let c of e){if(!c.submitted_at)continue;let l=(c.body||"").trim();if(!l&&c.state!=="COMMENTED"&&c.state!=="CHANGES_REQUESTED")continue;let p=c.user?.login||"unknown";if(!l&&c.state==="COMMENTED"&&c.id!=null&&Ul(c.id,t))continue;let d=l||(c.id!=null?Ml(c.id,t):void 0)||(c.state==="CHANGES_REQUESTED"?"(requested changes via inline review comments)":"(posted inline review comments)");o.push({author:p,body:d,createdAt:c.submitted_at,isUser:p.toLowerCase()===n})}o.sort((c,l)=>new Date(c.createdAt).getTime()-new Date(l.createdAt).getTime());let i=null;for(let c of o)c.isUser&&(i=new Date(c.createdAt));let a;for(let c of o){if(c.isUser||c.author==="unknown"||At(c.author))continue;let l=new Date(c.createdAt);(!i||l>i)&&(a={author:c.author,body:c.body.slice(0,200)+(c.body.length>200?"...":""),createdAt:c.createdAt})}return a&&Wt(a.body)&&(a=void 0),{hasUnrespondedComment:!!a,lastMaintainerComment:a}}var Oi=G(()=>{"use strict";As()});function Gi(r){return Ll.test(r.toLowerCase())}function $i(r){if(!r)return{hasIncompleteChecklist:!1};let e=/- \[x\]/gi,t=/^.*- \[ \].*$/gm,s=r.match(e)||[],o=r.match(t)||[],n=s.length,i=n+o.length;return i===0?{hasIncompleteChecklist:!1}:{hasIncompleteChecklist:o.filter(c=>!Gi(c)).length>0,checklistStats:{checked:n,total:i}}}var Ll,oo=G(()=>{"use strict";Ll=/\(if\s|\bif applicable\b|\bif needed\b|\bif relevant\b|\bonly if\b|\bwhen applicable\b|\(optional\)|- \[ \]\s*optional\b|\bn\/a\b|\bnot applicable\b|\bif required\b|\bif necessary\b/});function xi(r,e){let t=[];if(e==="changes_requested"&&t.push("changes_requested"),!r)return t;let s=r.toLowerCase();return["screenshot","demo","recording","screen recording","before/after","before and after","gif","video","screencast","show me","can you show"].some(c=>s.includes(c))&&t.push("demo_requested"),["add test","test coverage","unit test","missing test","add a test","write test","needs test","need test"].some(c=>s.includes(c))&&t.push("tests_requested"),["documentation","readme","jsdoc","docstring","add docs","update docs","document this"].some(c=>s.includes(c))&&t.push("docs_requested"),["rebase","merge conflict","out of date","behind main","behind master"].some(c=>s.includes(c))&&t.push("rebase_requested"),t}var Di=G(()=>{"use strict"});function Os(r){let e=Nl[r.status];return e?{displayLabel:e.label,displayDescription:e.description(r)}:(T(jl,`Unknown status "${r.status}" for PR #${r.number} (${r.url})`),{displayLabel:`[${r.status}]`,displayDescription:"Unknown status"})}var jl,Nl,no=G(()=>{"use strict";ve();jl="display-utils",Nl={needs_response:{label:"[Needs Response]",description:r=>r.lastMaintainerComment?`@${r.lastMaintainerComment.author} commented`:"Maintainer awaiting response"},needs_changes:{label:"[Needs Changes]",description:()=>"Review requested changes \u2014 push commits to address"},failing_ci:{label:"[CI Failing]",description:r=>{let e=r.classifiedChecks||[],t=e.filter(n=>n.category==="actionable");if(t.length>0)return`${t.length} check${t.length===1?"":"s"} failed: ${t.map(n=>n.name).join(", ")}`;let s=e.filter(n=>n.category==="infrastructure");if(s.length>0)return`${s.length} check${s.length===1?"":"s"} cancelled/timed out (infrastructure)`;let o=r.failingCheckNames||[];return o.length>0?`${o.length} check${o.length===1?"":"s"} failed`:"One or more CI checks are failing"}},ci_blocked:{label:"[CI Blocked]",description:()=>"CI cannot run (first-time contributor approval needed)"},ci_not_running:{label:"[CI Not Running]",description:()=>"No CI checks have been triggered"},merge_conflict:{label:"[Merge Conflict]",description:()=>"PR has merge conflicts with the base branch"},needs_rebase:{label:"[Needs Rebase]",description:()=>"PR branch is significantly behind upstream"},missing_required_files:{label:"[Missing Files]",description:r=>r.missingRequiredFiles?`Missing: ${r.missingRequiredFiles.join(", ")}`:"Required files are missing"},incomplete_checklist:{label:"[Incomplete Checklist]",description:r=>r.checklistStats?`${r.checklistStats.checked}/${r.checklistStats.total} items checked`:"PR body has unchecked required checkboxes"},changes_addressed:{label:"[Changes Addressed]",description:r=>r.lastMaintainerComment?`Waiting for @${r.lastMaintainerComment.author} to re-review`:"Waiting for maintainer re-review"},waiting:{label:"[Waiting]",description:()=>"CI pending or awaiting review"},waiting_on_maintainer:{label:"[Waiting on Maintainer]",description:()=>"Approved and CI passes \u2014 waiting for merge"},healthy:{label:"[Healthy]",description:()=>"Everything looks good \u2014 normal review cycle"},approaching_dormant:{label:"[Approaching Dormant]",description:r=>`No activity for ${r.daysSinceActivity} days`},dormant:{label:"[Dormant]",description:r=>`No activity for ${r.daysSinceActivity} days`}}});function ft(){return{repos:new Map,monthlyCounts:{},monthlyOpenedCounts:{},dailyActivityCounts:{}}}function ql(r){if(typeof r!="object"||r===null)return!1;let e=r;return Array.isArray(e.reposEntries)&&typeof e.monthlyCounts=="object"&&e.monthlyCounts!==null&&typeof e.monthlyOpenedCounts=="object"&&e.monthlyOpenedCounts!==null&&typeof e.dailyActivityCounts=="object"&&e.dailyActivityCounts!==null}async function Ii(r,e,t,s,o){if(!e)return ft();let n=ht(),i=`pr-counts:${s}:${e}`,a=n.getIfFresh(i,Hl);if(a&&ql(a))return S(Me,`Using cached ${s} PR counts for @${e}`),{repos:new Map(a.reposEntries),monthlyCounts:a.monthlyCounts,monthlyOpenedCounts:a.monthlyOpenedCounts,dailyActivityCounts:a.dailyActivityCounts};S(Me,`Fetching ${s} PR counts for @${e}...`);let c=new Map,l={},p={},d={},m=1,_=0,y;for(;;){let{data:g}=await r.search.issuesAndPullRequests({q:`is:pr ${t} author:${e}`,sort:"updated",order:"desc",per_page:100,page:m});y=g.total_count;for(let C of g.items){let h=Ct(C.html_url);if(!h){T(Me,`Skipping ${s} PR with unparseable URL: ${C.html_url}`);continue}let{owner:k}=h,E=`${k}/${h.repo}`;if(Pt(k,e))continue;let w=o(c,E,C);if(w){let x=w.slice(0,7);l[x]=(l[x]||0)+1;let O=w.slice(0,10);O.length===10&&(d[O]=(d[O]||0)+1)}if(C.created_at){let x=C.created_at.slice(0,7);p[x]=(p[x]||0)+1;let O=C.created_at.slice(0,10);O.length===10&&(d[O]=(d[O]||0)+1)}}if(_+=g.items.length,_>=g.total_count||_>=1e3||g.items.length===0||m>=io)break;m++}return _<y&&m>=io&&T(Me,`Pagination capped at ${io} pages: fetched ${_} of ${y} ${s} PRs. Stats may be incomplete for prolific contributors.`),S(Me,`Found ${_} ${s} PRs across ${c.size} repos`),n.set(i,"",{reposEntries:Array.from(c.entries()),monthlyCounts:l,monthlyOpenedCounts:p,dailyActivityCounts:d}),{repos:c,monthlyCounts:l,monthlyOpenedCounts:p,dailyActivityCounts:d}}function Fi(r,e){return Ii(r,e,"is:merged","merged",(t,s,o)=>{o.pull_request?.merged_at||T(Me,`merged_at missing for merged PR ${o.html_url}${o.closed_at?", falling back to closed_at":", no date available"}`);let n=o.pull_request?.merged_at||o.closed_at||"",i=t.get(s);return i?(i.count+=1,n&&n>i.lastMergedAt&&(i.lastMergedAt=n)):t.set(s,{count:1,lastMergedAt:n}),n})}function Ui(r,e){return Ii(r,e,"is:closed is:unmerged","closed",(t,s,o)=>(t.set(s,(t.get(s)||0)+1),o.closed_at||""))}async function Mi(r,e,t,s,o,n){if(!e.githubUsername)return T(Me,`Skipping recently ${s} PRs fetch: no githubUsername configured. Run /setup-oss to configure.`),[];let i=new Date;i.setDate(i.getDate()-o);let a=i.toISOString().split("T")[0];S(Me,`Fetching recently ${s} PRs for @${e.githubUsername} (since ${a})...`);let{data:c}=await r.search.issuesAndPullRequests({q:t.replace("{username}",e.githubUsername).replace("{since}",a),sort:"updated",order:"desc",per_page:100}),l=[];for(let p of c.items){let d=Te(p.html_url);if(!d){T(Me,`Could not parse GitHub URL from API response: ${p.html_url}`);continue}let m=`${d.owner}/${d.repo}`;Pt(d.owner,e.githubUsername)||e.excludeRepos.includes(m)||e.excludeOrgs?.some(_=>d.owner.toLowerCase()===_.toLowerCase())||l.push(n(p,{owner:d.owner,repo:m,number:d.number}))}return S(Me,`Found ${l.length} recently ${s} PRs`),l}async function Li(r,e,t=7){return Mi(r,e,"is:pr is:closed is:unmerged author:{username} closed:>={since}","closed",t,(s,{repo:o,number:n})=>({url:s.html_url,repo:o,number:n,title:s.title,closedAt:s.closed_at||""}))}async function ji(r,e,t=7){return Mi(r,e,"is:pr is:merged author:{username} merged:>={since}","merged",t,(s,{repo:o,number:n})=>{let i=s.pull_request?.merged_at;return i||T(Me,`merged_at missing for merged PR ${s.html_url}${s.closed_at?", falling back to closed_at":", no date available"}`),{url:s.html_url,repo:o,number:n,title:s.title,mergedAt:i||s.closed_at||""}})}var Me,Hl,io,Gs=G(()=>{"use strict";Oe();ve();zt();Me="github-stats",Hl=1440*60*1e3,io=3});var $s,Bl,bt,Ni=G(()=>{"use strict";qt();Mt();Oe();eo();ie();Bt();ve();zt();ro();Oi();oo();Di();no();Gs();no();ro();oo();$s="pr-monitor",Bl=5,bt=class{octokit;stateManager;constructor(e){this.octokit=we(e),this.stateManager=L()}async fetchUserOpenPRs(){let e=this.stateManager.getState().config;if(!e.githubUsername)throw new Ke("No GitHub username configured. Run setup first.");S("pr-monitor",`Fetching open PRs for @${e.githubUsername}...`);let t=[],s=1,o=100,n=await this.octokit.search.issuesAndPullRequests({q:`is:pr is:open author:${e.githubUsername}`,sort:"updated",order:"desc",per_page:o,page:1});t.push(...n.data.items);let i=n.data.total_count;S("pr-monitor",`Found ${i} open PRs`);let a=Math.min(Math.ceil(i/o),10);for(;s<a;){s++;let m=await this.octokit.search.issuesAndPullRequests({q:`is:pr is:open author:${e.githubUsername}`,sort:"updated",order:"desc",per_page:o,page:s});t.push(...m.data.items)}let c=[],l=[],p=new Set(e.shelvedPRUrls||[]),d=t.filter(m=>{if(!m.pull_request)return!1;let _=Ct(m.html_url);if(!_)return T("pr-monitor",`Skipping PR with unparseable URL: ${m.html_url}`),!1;let y=_.owner.toLowerCase();if(y===e.githubUsername.toLowerCase())return!1;let g=`${_.owner}/${_.repo}`,C=p.has(m.html_url);return!(e.excludeRepos.includes(g)&&!C||e.excludeOrgs?.some(h=>y===h.toLowerCase())&&!C)});return S("pr-monitor",`Filtered to ${d.length} PRs after excluding own repos, shelved, and excluded orgs/repos`),await Sr("pr-monitor",`Fetch details for ${d.length} PRs`,async()=>{await Cs(d,async m=>{try{S("pr-monitor",`Fetching details for ${m.html_url}`);let _=await this.fetchPRDetails(m.html_url);_&&c.push(_)}catch(_){let y=A(_);T("pr-monitor",`Error fetching ${m.html_url}: ${y}`),l.push({prUrl:m.html_url,error:y})}},Bl)}),c.sort((m,_)=>{let y={needs_response:0,needs_changes:1,failing_ci:2,ci_blocked:3,ci_not_running:4,merge_conflict:5,needs_rebase:6,missing_required_files:7,incomplete_checklist:8,changes_addressed:9,approaching_dormant:10,dormant:11,waiting:12,waiting_on_maintainer:13,healthy:14};return y[m.status]-y[_.status]}),{prs:c,failures:l}}async fetchPRDetails(e){let t=Te(e);if(!t||t.type!=="pull")throw new W(`Invalid PR URL format: ${e}`);let{owner:s,repo:o,number:n}=t,i=this.stateManager.getState().config,[a,c,l,p]=await Promise.all([this.octokit.pulls.get({owner:s,repo:o,pull_number:n}),Ue(B=>this.octokit.issues.listComments({owner:s,repo:o,issue_number:n,per_page:100,page:B})),this.octokit.pulls.listReviews({owner:s,repo:o,pull_number:n}),Ue(B=>this.octokit.pulls.listReviewComments({owner:s,repo:o,pull_number:n,per_page:100,page:B})).catch(B=>{let le=fe(B);if(le===429)throw B;if(le===403){let ue=A(B).toLowerCase();if(ue.includes("rate limit")||ue.includes("abuse detection"))throw B;return T("pr-monitor",`403 fetching review comments for ${s}/${o}#${n}: ${ue}`),[]}return le===404?S("pr-monitor",`Review comments 404 for ${s}/${o}#${n} (likely no inline comments)`):T("pr-monitor",`Failed to fetch review comments for ${s}/${o}#${n} (status ${le??"unknown"}): self-reply detection will be skipped`),[]})]),d=a.data,m=l.data,_=Si(m),y=this.hasMergeConflict(d.mergeable,d.mergeable_state),{hasUnrespondedComment:g,lastMaintainerComment:C}=Ai(c,m,p,i.githubUsername),h=this.getCIStatus(s,o,d.head.sha),E=g||_==="changes_requested"?this.octokit.repos.getCommit({owner:s,repo:o,ref:d.head.sha}).then(B=>B.data.commit.author?.date).catch(B=>{let le=fe(B);if(le===429)throw B;if(le===403){let ue=A(B).toLowerCase();if(ue.includes("rate limit")||ue.includes("abuse detection"))throw B;T("pr-monitor",`403 fetching commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${A(B)}`);return}T("pr-monitor",`Failed to fetch commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${A(B)}`)}):Promise.resolve(void 0),[{status:w,failingCheckNames:x,failingCheckConclusions:O},F]=await Promise.all([h,E]),{hasIncompleteChecklist:Y,checklistStats:z}=$i(d.body||""),be=xi(C?.body,_),$e=Ie(new Date(d.updated_at),new Date),Ee=ki(m),ye=this.determineStatus({ciStatus:w,hasMergeConflict:y,hasUnrespondedComment:g,hasIncompleteChecklist:Y,reviewDecision:_,daysSinceActivity:$e,dormantThreshold:i.dormantThresholdDays,approachingThreshold:i.approachingDormantDays,latestCommitDate:F,lastMaintainerCommentDate:C?.createdAt,latestChangesRequestedDate:Ee}),Ve=ks(x,O);return this.buildFetchedPR({id:d.id,url:e,repo:`${s}/${o}`,number:n,title:d.title,status:ye,createdAt:d.created_at,updatedAt:d.updated_at,daysSinceActivity:$e,ciStatus:w,failingCheckNames:x,classifiedChecks:Ve,hasMergeConflict:y,reviewDecision:_,hasUnrespondedComment:g,lastMaintainerComment:C,latestCommitDate:F,hasIncompleteChecklist:Y,checklistStats:z,maintainerActionHints:be})}buildFetchedPR(e){let t={...e,displayLabel:"",displayDescription:""},{displayLabel:s,displayDescription:o}=Os(t);return t.displayLabel=s,t.displayDescription=o,t}determineStatus(e){let{ciStatus:t,hasMergeConflict:s,hasUnrespondedComment:o,hasIncompleteChecklist:n,reviewDecision:i,daysSinceActivity:a,dormantThreshold:c,approachingThreshold:l,latestCommitDate:p,lastMaintainerCommentDate:d,latestChangesRequestedDate:m}=e;return o?p&&d&&p>d?m&&p<m?"needs_response":t==="failing"?"failing_ci":"changes_addressed":"needs_response":i==="changes_requested"&&m?!p||p<m?"needs_changes":t==="failing"?"failing_ci":"changes_addressed":t==="failing"?"failing_ci":s?"merge_conflict":n?"incomplete_checklist":a>=c?"dormant":a>=l?"approaching_dormant":i==="approved"&&(t==="passing"||t==="unknown")?"waiting_on_maintainer":t==="pending"?"waiting":"healthy"}hasMergeConflict(e,t){return e===!1||t==="dirty"}async getCIStatus(e,t,s){if(!s)return{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map};try{let[o,n]=await Promise.all([this.octokit.repos.getCombinedStatusForRef({owner:e,repo:t,ref:s}),this.octokit.checks.listForRef({owner:e,repo:t,ref:s}).catch(m=>{let _=fe(m);if(_===429)throw m;if(_===403){let y=A(m).toLowerCase();if(y.includes("rate limit")||y.includes("abuse detection"))throw m}return _===404?S("pr-monitor",`Check runs 404 for ${e}/${t}@${s.slice(0,7)} (no checks configured)`):T("pr-monitor",`Non-404 error fetching check runs for ${e}/${t}@${s.slice(0,7)}: ${_??m}`),null})]),i=o.data,a=n?.data?.check_runs||[],c=new Map;for(let m of a){let _=c.get(m.name);(!_||new Date(m.started_at??0)>new Date(_.started_at??0))&&c.set(m.name,m)}let l=[...c.values()],p=Ti(l),d=Ci(i);return Pi(p,d,l.length)}catch(o){let n=fe(o);if(n===401||n===403||n===429)throw o;return n===404?(S("pr-monitor",`CI check 404 for ${e}/${t} (no CI configured)`),{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}):(T("pr-monitor",`Failed to check CI for ${e}/${t}@${s.slice(0,7)}: ${A(o)}`),{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map})}}async fetchUserMergedPRCounts(){let e=this.stateManager.getState().config;return Fi(this.octokit,e.githubUsername)}async fetchUserClosedPRCounts(){let e=this.stateManager.getState().config;return Ui(this.octokit,e.githubUsername)}async fetchRepoStarCounts(e){if(e.length===0)return new Map;S($s,`Fetching star counts for ${e.length} repos...`);let t=new Map,s=ht(),o=[...new Set(e)],n=10;for(let i=0;i<o.length;i+=n){let a=o.slice(i,i+n),c=await Promise.allSettled(a.map(async p=>{let d=p.split("/");if(d.length!==2||!d[0]||!d[1])throw new W(`Malformed repo identifier: "${p}"`);let[m,_]=d,y=`/repos/${m}/${_}`,g=await Vt(s,y,C=>this.octokit.repos.get({owner:m,repo:_,headers:C}));return{repo:p,stars:g.stargazers_count}})),l=0;for(let p=0;p<c.length;p++){let d=c[p];d.status==="fulfilled"?t.set(d.value.repo,d.value.stars):(l++,T($s,`Failed to fetch stars for ${a[p]}: ${A(d.reason)}`))}if(l===a.length&&a.length>0){let p=e.length-i-n;p>0&&T($s,`Entire chunk failed, aborting remaining ${p} repos`);break}}return S($s,`Fetched star counts for ${t.size}/${e.length} repos`),t}async fetchRecentlyClosedPRs(e=7){let t=this.stateManager.getState().config;return Li(this.octokit,t,e)}async fetchRecentlyMergedPRs(e=7){let t=this.stateManager.getState().config;return ji(this.octokit,t,e)}generateDigest(e,t=[],s=[]){let o=new Date().toISOString(),n=e.filter(w=>w.status==="needs_response"),i=e.filter(w=>w.status==="failing_ci"),a=e.filter(w=>w.status==="merge_conflict"),c=e.filter(w=>w.status==="approaching_dormant"),l=e.filter(w=>w.status==="dormant"),p=e.filter(w=>w.status==="healthy"||w.status==="waiting"),d=this.stateManager.getStats(),m=e.filter(w=>w.status==="ci_blocked"),_=e.filter(w=>w.status==="ci_not_running"),y=e.filter(w=>w.status==="needs_rebase"),g=e.filter(w=>w.status==="missing_required_files"),C=e.filter(w=>w.status==="incomplete_checklist"),h=e.filter(w=>w.status==="needs_changes"),k=e.filter(w=>w.status==="changes_addressed"),E=e.filter(w=>w.status==="waiting_on_maintainer");return{generatedAt:o,openPRs:e,prsNeedingResponse:n,ciFailingPRs:i,ciBlockedPRs:m,ciNotRunningPRs:_,mergeConflictPRs:a,needsRebasePRs:y,missingRequiredFilesPRs:g,incompleteChecklistPRs:C,needsChangesPRs:h,changesAddressedPRs:k,waitingOnMaintainerPRs:E,approachingDormant:c,dormantPRs:l,healthyPRs:p,recentlyClosedPRs:t,recentlyMergedPRs:s,shelvedPRs:[],autoUnshelvedPRs:[],summary:{totalActivePRs:e.length,totalNeedingAttention:n.length+h.length+i.length+a.length+y.length+g.length+C.length,totalMergedAllTime:d.mergedPRs,mergeRate:parseFloat(d.mergeRate)}}}async updateRepoScoreFromObservedPR(e,t){t?this.stateManager.incrementMergedCount(e):this.stateManager.incrementClosedCount(e)}}});function xs(r){if(!r.labels||!Array.isArray(r.labels)||r.labels.length===0)return!1;let t=r.labels.map(s=>(typeof s=="string"?s:s.name||"").toLowerCase()).filter(s=>s.length>0);return t.length===0?!1:t.every(s=>ao.has(s))}function qi(r){return!r.labels||!Array.isArray(r.labels)?!1:r.labels.map(s=>(typeof s=="string"?s:s.name||"").toLowerCase()).filter(s=>Hi.has(s)).length>=5}function Bi(r){return r?/^.+\s+(question|fact|point|item|task|entry|post|challenge|exercise|example|problem|tip|recipe|snippet)\s+#?\d+$/i.test(r):!1}function co(r){let e=new Set,t=new Map;for(let s of r){let o=s.repository_url.split("/").slice(-2).join("/");if(qi(s)){e.add(o);continue}s.title&&Bi(s.title)&&t.set(o,(t.get(o)||0)+1)}for(let[s,o]of t)o>=3&&e.add(s);return e}function Ds(r,e){let t=new Map,s=[];for(let o of r){let n=t.get(o.issue.repo)||0;n<e&&(s.push(o),t.set(o.issue.repo,n+1))}return s}var ao,Hi,lo=G(()=>{"use strict";ao=new Set(["documentation","docs","typo","spelling"]);Hi=new Set(["good first issue","hacktoberfest","easy","up-for-grabs","first-timers-only","beginner-friendly","beginner","starter","newbie","low-hanging-fruit","community"])});function uo(r,e){let t=0;return r>=5e3?t+=8:r>=500?t+=5:r>=50&&(t+=3),e>=500?t+=4:e>=50&&(t+=2),t}function Jt(r){let e=50;r.repoScore!==null&&(e+=r.repoScore*2),e+=r.repoQualityBonus??0,r.mergedPRCount>0&&(e+=15),r.clearRequirements&&(e+=15);let t=new Date(r.issueUpdatedAt),s=Ie(t);return s<=14?e+=15:s<=30&&(e+=Math.round(15*(1-(s-14)/16))),r.hasContributionGuidelines&&(e+=10),r.orgHasMergedPRs&&(e+=5),r.hasExistingPR&&(e-=30),r.isClaimed&&(e-=20),r.closedWithoutMergeCount>0&&r.mergedPRCount===0&&(e-=15),Math.max(0,Math.min(100,e))}var Is=G(()=>{"use strict";Oe()});function zi(){let r=Date.now();for(let[e,t]of Ye.entries())r-t.fetchedAt>Wi&&Ye.delete(e);if(Ye.size>Vi){let t=Array.from(Ye.entries()).sort((s,o)=>s[1].fetchedAt-o[1].fetchedAt).slice(0,Ye.size-Vi);for(let[s]of t)Ye.delete(s)}}var ot,Vl,Ye,Wi,Vi,nt,Ji=G(()=>{"use strict";Bt();Oe();ie();ve();zt();Is();ot="issue-vetting",Vl=5,Ye=new Map,Wi=3600*1e3,Vi=100;nt=class r{octokit;stateManager;constructor(e,t){this.octokit=e,this.stateManager=t}async vetIssue(e){let t=Te(e);if(!t||t.type!=="issues")throw new W(`Invalid issue URL: ${e}`);let{owner:s,repo:o,number:n}=t,i=`${s}/${o}`,{data:a}=await this.octokit.issues.get({owner:s,repo:o,issue_number:n}),[c,l,p,d,m]=await Promise.all([this.checkNoExistingPR(s,o,n),this.checkNotClaimed(s,o,n,a.comments),this.checkProjectHealth(s,o),this.fetchContributionGuidelines(s,o),this.checkUserMergedPRsInRepo(s,o)]),_=c.passed,y=l.passed,g=this.analyzeRequirements(a.body||""),C=p.checkFailed?!0:p.isActive,h={passedAllChecks:_&&y&&C&&g,checks:{noExistingPR:_,notClaimed:y,projectActive:C,clearRequirements:g,contributionGuidelinesFound:!!d},contributionGuidelines:d,notes:[]};_||h.notes.push("Existing PR found for this issue"),y||h.notes.push("Issue appears to be claimed by someone"),c.inconclusive&&h.notes.push(`Could not verify absence of existing PRs: ${c.reason||"API error"}`),l.inconclusive&&h.notes.push(`Could not verify claim status: ${l.reason||"API error"}`),p.checkFailed?h.notes.push(`Could not verify project activity: ${p.failureReason||"API error"}`):p.isActive||h.notes.push("Project may be inactive"),g||h.notes.push("Issue requirements are unclear"),d||h.notes.push("No CONTRIBUTING.md found");let k={id:a.id,url:e,repo:i,number:n,title:a.title,status:"candidate",labels:a.labels.map(ue=>typeof ue=="string"?ue:ue.name||""),createdAt:a.created_at,updatedAt:a.updated_at,vetted:!0,vettingResult:h},E=[],w=[];_||E.push("Has existing PR"),y||E.push("Already claimed"),!p.isActive&&!p.checkFailed&&E.push("Inactive project"),g||E.push("Unclear requirements"),_&&w.push("No existing PR"),y&&w.push("Not claimed"),p.isActive&&!p.checkFailed&&w.push("Active project"),g&&w.push("Clear requirements"),d&&w.push("Has contribution guidelines");let x=this.stateManager.getState().config,O=this.stateManager.getRepoScore(i),F=O&&O.mergedPRCount>0?O.mergedPRCount:m;F>0?w.push(`Trusted project (${F} PR${F>1?"s":""} merged)`):x.trustedProjects.includes(i)&&w.push("Trusted project (previous PR merged)"),O&&(O.closedWithoutMergeCount>0&&F===0?E.push("User has rejected PR(s) in this repo with no successful merges"):O.closedWithoutMergeCount>0&&F>0&&h.notes.push(`Mixed history: ${F} merged, ${O.closedWithoutMergeCount} closed without merge`));let Y=i.split("/")[0],z=!1;Y&&i.includes("/")&&(z=Object.values(this.stateManager.getState().repoScores).some(ue=>ue.repo&&ue.mergedPRCount>0&&ue.repo.startsWith(Y+"/")&&ue.repo!==i)),z&&w.push(`Org affinity (merged PRs in other ${Y} repos)`);let be;h.passedAllChecks?be="approve":E.length>2?be="skip":be="needs_review";let $e=p.checkFailed||c.inconclusive||l.inconclusive;be==="approve"&&$e&&(be="needs_review",h.notes.push("Recommendation downgraded: one or more checks were inconclusive"));let Ee=uo(p.stargazersCount??0,p.forksCount??0);p.checkFailed&&Ee===0&&h.notes.push("Repo quality bonus unavailable: could not fetch star/fork counts due to API error");let ye=this.getRepoScore(i),Ve=Jt({repoScore:ye,hasExistingPR:!_,isClaimed:!y,clearRequirements:g,hasContributionGuidelines:!!d,issueUpdatedAt:a.updated_at,closedWithoutMergeCount:O?.closedWithoutMergeCount??0,mergedPRCount:F,orgHasMergedPRs:z,repoQualityBonus:Ee}),B=this.stateManager.getStarredRepos(),le="normal";return F>0?le="merged_pr":B.includes(i)&&(le="starred"),{issue:k,vettingResult:h,projectHealth:p,recommendation:be,reasonsToSkip:E,reasonsToApprove:w,viabilityScore:Ve,searchPriority:le}}async vetIssuesParallel(e,t,s){let o=[],n=[],i=0,a=0,c=0;for(let p of e){if(o.length>=t)break;c++;let d=this.vetIssue(p).then(m=>{o.length<t&&(s&&(m.searchPriority=s),o.push(m))}).catch(m=>{i++,r.isRateLimitError(m)&&a++,T(ot,`Error vetting issue ${p}:`,A(m))});if(n.push(d),n.length>=Vl){let m=await Promise.race(n.map((_,y)=>_.then(()=>y)));n.splice(m,1)}}await Promise.allSettled(n);let l=i===c&&c>0;return l&&T(ot,`All ${c} issue(s) failed vetting. This may indicate a systemic issue (rate limit, auth, network).`),{candidates:o.slice(0,t),allFailed:l,rateLimitHit:a>0}}static isRateLimitError(e){let t=fe(e);return t===429?!0:t===403?A(e).toLowerCase().includes("rate limit"):!1}async checkNoExistingPR(e,t,s){try{let{data:o}=await this.octokit.search.issuesAndPullRequests({q:`repo:${e}/${t} is:pr ${s}`,per_page:5}),i=(await Ue(a=>this.octokit.issues.listEventsForTimeline({owner:e,repo:t,issue_number:s,per_page:100,page:a}))).filter(a=>{let c=a;return c.event==="cross-referenced"&&c.source?.issue?.pull_request});return{passed:o.total_count===0&&i.length===0}}catch(o){let n=A(o);return T(ot,`Failed to check for existing PRs on ${e}/${t}#${s}: ${n}. Assuming no existing PR.`),{passed:!0,inconclusive:!0,reason:n}}}async checkUserMergedPRsInRepo(e,t){try{let{data:s}=await this.octokit.search.issuesAndPullRequests({q:`repo:${e}/${t} is:pr is:merged author:@me`,per_page:1});return s.total_count}catch(s){let o=A(s);return T(ot,`Could not check merged PRs in ${e}/${t}: ${o}. Defaulting to 0.`),0}}async checkNotClaimed(e,t,s,o){if(o===0)return{passed:!0};try{let i=(await this.octokit.paginate(this.octokit.issues.listComments,{owner:e,repo:t,issue_number:s,per_page:100},c=>c.data)).slice(-100),a=["i'm working on this","i am working on this","i'll take this","i will take this","working on it","i'd like to work on","i would like to work on","can i work on","may i work on","assigned to me","i'm on it","i'll submit a pr","i will submit a pr","working on a fix","working on a pr"];for(let c of i){let l=(c.body||"").toLowerCase();if(a.some(p=>l.includes(p)))return{passed:!1}}return{passed:!0}}catch(n){let i=A(n);return T(ot,`Failed to check claim status on ${e}/${t}#${s}: ${i}. Assuming not claimed.`),{passed:!0,inconclusive:!0,reason:i}}}async checkProjectHealth(e,t){try{let s=ht(),o=`/repos/${e}/${t}`,n=await Vt(s,o,d=>this.octokit.repos.get({owner:e,repo:t,headers:d})),{data:i}=await this.octokit.repos.listCommits({owner:e,repo:t,per_page:1}),c=i[0]?.commit?.author?.date||n.pushed_at,l=Ie(new Date(c)),p="unknown";try{let{data:d}=await this.octokit.actions.listRepoWorkflows({owner:e,repo:t,per_page:1});d.total_count>0&&(p="passing")}catch(d){let m=A(d);T(ot,`Failed to check CI status for ${e}/${t}: ${m}. Defaulting to unknown.`)}return{repo:`${e}/${t}`,lastCommitAt:c,daysSinceLastCommit:l,openIssuesCount:n.open_issues_count,avgIssueResponseDays:0,ciStatus:p,isActive:l<30,stargazersCount:n.stargazers_count,forksCount:n.forks_count}}catch(s){let o=A(s);return T(ot,`Error checking project health for ${e}/${t}: ${o}`),{repo:`${e}/${t}`,lastCommitAt:"",daysSinceLastCommit:999,openIssuesCount:0,avgIssueResponseDays:0,ciStatus:"unknown",isActive:!1,checkFailed:!0,failureReason:o}}}async fetchContributionGuidelines(e,t){let s=`${e}/${t}`,o=Ye.get(s);if(o&&Date.now()-o.fetchedAt<Wi)return o.guidelines;let n=["CONTRIBUTING.md",".github/CONTRIBUTING.md","docs/CONTRIBUTING.md","contributing.md"];for(let i of n)try{let{data:a}=await this.octokit.repos.getContent({owner:e,repo:t,path:i});if("content"in a){let c=Buffer.from(a.content,"base64").toString("utf-8"),l=this.parseContributionGuidelines(c);return Ye.set(s,{guidelines:l,fetchedAt:Date.now()}),zi(),l}}catch(a){a instanceof Error&&!a.message.includes("404")&&!a.message.includes("Not Found")&&T(ot,`Unexpected error fetching ${i} from ${e}/${t}: ${a.message}`)}Ye.set(s,{guidelines:void 0,fetchedAt:Date.now()}),zi()}parseContributionGuidelines(e){let t={rawContent:e},s=e.toLowerCase();if(s.includes("branch")){let o=e.match(/branch[^\n]*(?:named?|format|convention)[^\n]*[`"]([^`"]+)[`"]/i);o&&(t.branchNamingConvention=o[1])}if(s.includes("conventional commit"))t.commitMessageFormat="conventional commits";else if(s.includes("commit message")){let o=e.match(/commit message[^\n]*[`"]([^`"]+)[`"]/i);o&&(t.commitMessageFormat=o[1])}return s.includes("jest")?t.testFramework="Jest":s.includes("rspec")?t.testFramework="RSpec":s.includes("pytest")?t.testFramework="pytest":s.includes("mocha")&&(t.testFramework="Mocha"),s.includes("eslint")?t.linter="ESLint":s.includes("rubocop")?t.linter="RuboCop":s.includes("prettier")&&(t.formatter="Prettier"),(s.includes("cla")||s.includes("contributor license agreement"))&&(t.claRequired=!0),t}analyzeRequirements(e){if(!e||e.length<50)return!1;let t=/\d+\.|[-*]\s/.test(e),s=/```/.test(e),o=/expect|should|must|want/i.test(e);return[t,s,o,e.length>200].filter(Boolean).length>=2}getRepoScore(e){return this.stateManager.getState().repoScores?.[e]?.score??null}}});var Ki,Qi,J,yt,Yi=G(()=>{"use strict";Ki=Q(require("fs"),1),Qi=Q(require("path"),1);qt();Mt();Oe();ps();ie();ve();lo();Ji();Is();lo();Is();J="issue-discovery",yt=class{octokit;stateManager;githubToken;vetter;rateLimitWarning=null;constructor(e){this.githubToken=e,this.octokit=we(e),this.stateManager=L(),this.vetter=new nt(this.octokit,this.stateManager)}async fetchStarredRepos(){me(J,"Fetching starred repositories...");let e=[];try{let t=this.octokit.paginate.iterator(this.octokit.activity.listReposStarredByAuthenticatedUser,{per_page:100}),s=0;for await(let{data:o}of t){for(let n of o){let i;"full_name"in n&&typeof n.full_name=="string"?i=n.full_name:"repo"in n&&n.repo&&typeof n.repo=="object"&&"full_name"in n.repo&&(i=n.repo.full_name),i&&e.push(i)}if(s++,s>=5){me(J,"Reached pagination limit for starred repos (500)");break}}return me(J,`Fetched ${e.length} starred repositories`),this.stateManager.setStarredRepos(e),e}catch(t){let s=this.stateManager.getStarredRepos(),o=A(t);return T(J,"Error fetching starred repos:",o),s.length===0?T(J,`Failed to fetch starred repositories from GitHub API. No cached repos available. Error: ${o}
46
+ Tip: Ensure your GITHUB_TOKEN has the 'read:user' scope and try again.`):T(J,`Failed to fetch starred repositories from GitHub API. Using ${s.length} cached repos instead. Error: ${o}`),s}}async getStarredReposWithRefresh(){return this.stateManager.isStarredReposStale()?this.fetchStarredRepos():this.stateManager.getStarredRepos()}async filterVetAndScore(e,t,s,o,n,i){let a=co(e);if(a.size>0){let y=e.filter(g=>a.has(g.repository_url.split("/").slice(-2).join("/"))).length;S(J,`[SPAM_FILTER] Filtered ${y} issues from ${a.size} label-farming repos: ${[...a].join(", ")}`)}let c=t(e).filter(y=>{let g=y.repository_url.split("/").slice(-2).join("/");return a.has(g)?!1:s.every(C=>!C.has(g))}).slice(0,o*2);if(c.length===0)return S(J,`[${i}] All ${e.length} items filtered before vetting`),{candidates:[],allVetFailed:!1,rateLimitHit:!1};let{candidates:l,allFailed:p,rateLimitHit:d}=await this.vetter.vetIssuesParallel(c.map(y=>y.html_url),o,"normal"),m=l.filter(y=>y.projectHealth.checkFailed?!0:(y.projectHealth.stargazersCount??0)>=n),_=l.length-m.length;return _>0&&S(J,`[STAR_FILTER] Filtered ${_} ${i} candidates below ${n} stars`),{candidates:m,allVetFailed:p,rateLimitHit:d}}async searchIssues(e={}){let t=this.stateManager.getState().config,s=e.languages||t.languages,o=e.labels||t.labels,n=e.maxResults||10,i=t.minStars??50,a=[],c=null,l=null,p=!1;this.rateLimitWarning=null;try{let U=await Zr(this.githubToken);if(U.remaining<5){let N=new Date(U.resetAt).toLocaleTimeString("en-US",{hour12:!1});this.rateLimitWarning=`GitHub search API quota low (${U.remaining}/${U.limit} remaining, resets at ${N}). Search may be slow.`,T(J,this.rateLimitWarning)}}catch(U){if(fe(U)===401)throw U;T(J,"Could not check rate limit:",A(U))}let d=this.stateManager.getReposWithMergedPRs(),m=new Set(d),_=this.stateManager.getReposWithOpenPRs(),y=await this.getStarredReposWithRefresh(),g=new Set(y),C=new Set(this.stateManager.getLowScoringRepos(3)),h=new Set(this.stateManager.getState().activeIssues.map(U=>U.url)),k=new Set(t.excludeRepos),E=t.maxIssueAgeDays||90,w=new Date,x=o.map(U=>`label:"${U}"`).join(" "),F=s.some(U=>U.toLowerCase()==="any")?"":s.map(U=>`language:${U}`).join(" "),Y=`is:issue is:open ${F} no:assignee`.replace(/ +/g," ").trim(),z=`is:issue is:open ${x} ${F} no:assignee`.replace(/ +/g," ").trim(),be=t.includeDocIssues??!0,$e=new Set(t.aiPolicyBlocklist??it.aiPolicyBlocklist??[]);$e.size>0&&S(J,`[AI_POLICY_FILTER] Filtering issues from ${$e.size} blocklisted repo(s): ${[...$e].join(", ")}`);let Ee=U=>U.filter(N=>{if(h.has(N.html_url))return!1;let se=N.repository_url.split("/").slice(-2).join("/");if(k.has(se)||$e.has(se)||C.has(se))return!1;let de=new Date(N.updated_at);return!(Ie(de,w)>E||!be&&xs(N))}),ye=[...d,..._.filter(U=>!m.has(U))].slice(0,10),Ve=new Set(ye);if(ye.length>0){let U=Math.min(d.length,ye.length),N=ye.length-U;me(J,`Phase 0: Searching issues in ${ye.length} repos (${U} merged-PR, ${N} open-PR, no label filter)...`);let se=ye.slice(0,U);if(se.length>0){let ee=n-a.length;if(ee>0){let{candidates:pe,allBatchesFailed:xe,rateLimitHit:tt}=await this.searchInRepos(se,Y,ee,"merged_pr",Ee);a.push(...pe),xe&&(c="All merged-PR repo batches failed"),tt&&(p=!0),me(J,`Found ${pe.length} candidates from merged-PR repos`)}}let de=ye.slice(U);if(de.length>0&&a.length<n){let ee=n-a.length;if(ee>0){let{candidates:pe,allBatchesFailed:xe,rateLimitHit:tt}=await this.searchInRepos(de,Y,ee,"starred",Ee);if(a.push(...pe),xe){let ze="All open-PR repo batches failed";c=c?`${c}; ${ze}`:ze}tt&&(p=!0),me(J,`Found ${pe.length} candidates from open-PR repos`)}}}if(a.length<n&&y.length>0){let U=y.filter(N=>!Ve.has(N));if(U.length>0){me(J,`Phase 1: Searching issues in ${U.length} starred repos...`);let N=n-a.length;if(N>0){let{candidates:se,allBatchesFailed:de,rateLimitHit:ee}=await this.searchInRepos(U.slice(0,10),z,N,"starred",Ee);a.push(...se),de&&(l="All starred repo batches failed"),ee&&(p=!0),me(J,`Found ${se.length} candidates from starred repos`)}}}let B=null;if(a.length<n){me(J,"Phase 2: General issue search...");let U=n-a.length;try{let{data:N}=await this.octokit.search.issuesAndPullRequests({q:z,sort:"created",order:"desc",per_page:U*3});me(J,`Found ${N.total_count} issues in general search, processing top ${N.items.length}...`);let se=new Set(a.map(xe=>xe.issue.repo)),{candidates:de,allVetFailed:ee,rateLimitHit:pe}=await this.filterVetAndScore(N.items,Ee,[Ve,g,se],U,i,"Phase 2");a.push(...de),ee&&(B=(B?B+"; ":"")+"all vetting failed"),pe&&(p=!0),me(J,`Found ${de.length} candidates from general search`)}catch(N){let se=A(N);B=se,nt.isRateLimitError(N)&&(p=!0),T(J,`Error in general issue search: ${se}`)}}let le=null;if(a.length<n){me(J,"Phase 3: Searching actively maintained repos...");let U=n-a.length,N=new Date;N.setDate(N.getDate()-30);let se=N.toISOString().split("T")[0],de=`is:issue is:open no:assignee ${F} stars:>=${i} pushed:>=${se} archived:false`.replace(/ +/g," ").trim();try{let{data:ee}=await this.octokit.search.issuesAndPullRequests({q:de,sort:"updated",order:"desc",per_page:U*3});me(J,`Found ${ee.total_count} issues in maintained-repo search, processing top ${ee.items.length}...`);let pe=new Set(a.map(sr=>sr.issue.repo)),{candidates:xe,allVetFailed:tt,rateLimitHit:ze}=await this.filterVetAndScore(ee.items,Ee,[Ve,g,pe],U,i,"Phase 3");a.push(...xe),tt&&(le="all vetting failed"),ze&&(p=!0),me(J,`Found ${xe.length} candidates from maintained-repo search`)}catch(ee){let pe=A(ee);le=pe,nt.isRateLimitError(ee)&&(p=!0),T(J,`Error in maintained-repo search: ${pe}`)}}if(a.length===0){let U=[c?`Phase 0 (merged-PR repos): ${c}`:null,l?`Phase 1 (starred repos): ${l}`:null,B?`Phase 2 (general): ${B}`:null,le?`Phase 3 (maintained repos): ${le}`:null].filter(Boolean),N=U.length>0?` ${U.join(". ")}.`:"";if(p)return this.rateLimitWarning=`Search returned no results due to GitHub API rate limits.${N} Try again after the rate limit resets.`,[];throw new W(`No issue candidates found across all search phases.${N} Try adjusting your search criteria (languages, labels) or check your network connection.`)}return p&&(this.rateLimitWarning=`Search results may be incomplete: GitHub API rate limits were hit during search. Found ${a.length} candidate${a.length===1?"":"s"} but some search phases failed. Try again after the rate limit resets for complete results.`),a.sort((U,N)=>{let se={merged_pr:0,starred:1,normal:2},de=se[U.searchPriority]-se[N.searchPriority];if(de!==0)return de;let ee={approve:0,needs_review:1,skip:2},pe=ee[U.recommendation]-ee[N.recommendation];return pe!==0?pe:N.viabilityScore-U.viabilityScore}),Ds(a,2).slice(0,n)}async searchInRepos(e,t,s,o,n){let i=[],c=this.batchRepos(e,5),l=0,p=0;for(let _ of c){if(i.length>=s)break;try{let y=_.map(h=>`repo:${h}`).join(" OR "),g=`${t} (${y})`,{data:C}=await this.octokit.search.issuesAndPullRequests({q:g,sort:"created",order:"desc",per_page:Math.min(30,(s-i.length)*3)});if(C.items.length>0){let h=n(C.items),k=s-i.length,{candidates:E}=await this.vetter.vetIssuesParallel(h.slice(0,k*2).map(w=>w.html_url),k,o);i.push(...E)}}catch(y){l++,nt.isRateLimitError(y)&&p++;let g=_.join(", ");T(J,`Error searching issues in batch [${g}]:`,A(y))}}let d=l===c.length&&c.length>0,m=p>0;return d&&T(J,`All ${c.length} batch(es) failed for ${o} phase. This may indicate a systemic issue (rate limit, auth, network).`),{candidates:i,allBatchesFailed:d,rateLimitHit:m}}batchRepos(e,t){let s=[];for(let o=0;o<e.length;o+=t)s.push(e.slice(o,o+t));return s}static isRateLimitError(e){return nt.isRateLimitError(e)}async vetIssue(e){return this.vetter.vetIssue(e)}analyzeRequirements(e){return this.vetter.analyzeRequirements(e)}calculateViabilityScore(e){return Jt(e)}saveSearchResults(e){let t=[...e].sort((a,c)=>c.viabilityScore-a.viabilityScore),s=De(),o=Qi.join(s,"found-issues.md"),n=new Date().toISOString(),i=`# Found Issues
47
47
 
48
48
  `;i+=`> Generated at: ${n}
49
49
 
50
50
  `,i+=`| Score | Repo | Issue | Title | Labels | Updated | Recommendation |
51
51
  `,i+=`|-------|------|-------|-------|--------|---------|----------------|
52
- `;for(let a of t){let{issue:c,viabilityScore:l,recommendation:u}=a,d=c.labels.slice(0,3).join(", "),m=d.length>30?d.substring(0,27)+"...":d,w=c.title.length>50?c.title.substring(0,47)+"...":c.title,y=new Date(c.updatedAt).toLocaleDateString(),g=u==="approve"?"Y":u==="skip"?"N":"?";i+=`| ${l} | ${c.repo} | [#${c.number}](${c.url}) | ${w} | ${m} | ${y} | ${g} |
52
+ `;for(let a of t){let{issue:c,viabilityScore:l,recommendation:p}=a,d=c.labels.slice(0,3).join(", "),m=d.length>30?d.substring(0,27)+"...":d,_=c.title.length>50?c.title.substring(0,47)+"...":c.title,y=new Date(c.updatedAt).toLocaleDateString(),g=p==="approve"?"Y":p==="skip"?"N":"?";i+=`| ${l} | ${c.repo} | [#${c.number}](${c.url}) | ${_} | ${m} | ${y} | ${g} |
53
53
  `}return i+=`
54
54
  ## Legend
55
55
 
56
56
  `,i+=`- **Score**: Viability score (0-100)
57
57
  `,i+=`- **Recommendation**: Y = approve, N = skip, ? = needs_review
58
- `,Yi.writeFileSync(o,i,"utf-8"),me(Q,`Saved ${t.length} issues to ${o}`),o}formatCandidate(e){let{issue:t,vettingResult:s,projectHealth:o,recommendation:n,reasonsToApprove:i,reasonsToSkip:a}=e;return`
58
+ `,Ki.writeFileSync(o,i,"utf-8"),me(J,`Saved ${t.length} issues to ${o}`),o}formatCandidate(e){let{issue:t,vettingResult:s,projectHealth:o,recommendation:n,reasonsToApprove:i,reasonsToSkip:a}=e;return`
59
59
  ## ${n==="approve"?"\u2705":n==="skip"?"\u274C":"\u26A0\uFE0F"} Issue Candidate: ${t.repo}#${t.number}
60
60
 
61
61
  **Title:** ${t.title}
@@ -64,7 +64,7 @@ Tip: Ensure your GITHUB_TOKEN has the 'read:user' scope and try again.`):T(Q,`Fa
64
64
  **URL:** ${t.url}
65
65
 
66
66
  ### Vetting Results
67
- ${Object.entries(s.checks).map(([l,u])=>`- ${u?"\u2713":"\u2717"} ${l.replace(/([A-Z])/g," $1").toLowerCase()}`).join(`
67
+ ${Object.entries(s.checks).map(([l,p])=>`- ${p?"\u2713":"\u2717"} ${l.replace(/([A-Z])/g," $1").toLowerCase()}`).join(`
68
68
  `)}
69
69
 
70
70
  ### Project Health
@@ -85,14 +85,14 @@ ${s.notes.length>0?`
85
85
  **Notes:**
86
86
  ${s.notes.map(l=>`- ${l}`).join(`
87
87
  `)}`:""}
88
- `}}});var tt,Wl,ea,wt,ta=$(()=>{"use strict";Vt();Gs();zt();jt();Oe();eo();oe();be();tt="issue-conversation",Wl=5,ea=new Set(["OWNER","MEMBER","COLLABORATOR"]),wt=class{octokit;stateManager;constructor(e){this.octokit=we(e),this.stateManager=U()}async fetchCommentedIssues(e=30){let t=this.stateManager.getState().config;if(!t.githubUsername)throw new Qe("No GitHub username configured. Run setup first.");let s=t.githubUsername,o=new Date;o.setDate(o.getDate()-e);let n=o.toISOString().split("T")[0];k(tt,`Fetching commented issues for @${s} (last ${e} days)...`);let{data:i}=await this.octokit.search.issuesAndPullRequests({q:`commenter:${s} type:issue state:open updated:>=${n}`,sort:"updated",order:"desc",per_page:100});i.total_count>100&&T(tt,`Search returned ${i.total_count} results but only first 100 were fetched. Some commented issues may be missing.`);let a=this.stateManager.getState().activeIssues||[],c=new Set(a.filter(y=>y.status==="claimed"||y.status==="in_progress"||y.status==="pr_submitted").map(y=>`${y.repo}#${y.number}`)),l=new Set((t.aiPolicyBlocklist||[]).map(y=>y.toLowerCase())),u=[];for(let y of i.items){if(y.pull_request)continue;let g=Pt(y.html_url);if(!g){T(tt,`Skipping issue with unparseable URL: ${y.html_url}`);continue}let{owner:R,repo:h}=g,S=`${R}/${h}`;kt(R,s)||y.user?.login?.toLowerCase()!==s.toLowerCase()&&(t.excludeRepos.includes(S)||t.excludeOrgs?.some(C=>R.toLowerCase()===C.toLowerCase())||l.has(S.toLowerCase())||c.has(`${S}#${y.number}`)||u.push({item:y,repoFullName:S}))}k(tt,`Found ${u.length} commented issues to check`);let d=[],m=[];await ks(u,async({item:y,repoFullName:g})=>{try{let R=await this.analyzeIssueConversation(y,g,s);R?d.push(R):m.push({issueUrl:y.html_url,error:"No user comment found despite commenter: search match (possible pagination or eventual consistency)"})}catch(R){let h=A(R);m.push({issueUrl:y.html_url,error:h}),T(tt,`Error analyzing issue ${y.html_url}: ${h}`)}},Wl),m.length>0&&T(tt,`${m.length}/${u.length} issue analysis call(s) failed`),m.length===u.length&&u.length>0&&T(tt,`All ${u.length} issue analysis call(s) failed. Possible systemic issue (rate limit, auth, network).`);let w={new_response:0,waiting:1,acknowledged:2};return d.sort((y,g)=>w[y.status]-w[g.status]),k(tt,`Analyzed ${d.length} issue conversations (${d.filter(y=>y.status==="new_response").length} with new responses)`),{issues:d,failures:m}}async analyzeIssueConversation(e,t,s){let{owner:o,repo:n}=$r(t),i=await Ue(h=>this.octokit.issues.listComments({owner:o,repo:n,issue_number:e.number,per_page:100,page:h})),a=[];for(let h of i){if(!h.user?.login)continue;let S=h.user.login;a.push({author:S,body:h.body||"",createdAt:h.created_at,isUser:S.toLowerCase()===s.toLowerCase(),authorAssociation:String(h.author_association??"")})}a.sort((h,S)=>new Date(h.createdAt).getTime()-new Date(S.createdAt).getTime());let c;for(let h of a)h.isUser&&(c=h);if(!c)return T(tt,`No user comment found for ${e.html_url} despite commenter: search match`),null;let l=new Date(c.createdAt),u=`@${s.toLowerCase()}`;function d(h){return ea.has(h.authorAssociation)||h.body.toLowerCase().includes(u)}let m;for(let h of a){if(h.isUser||$t(h.author))continue;if(new Date(h.createdAt)>l){if(Kt(h.body)||!d(h))continue;m={author:h.author,body:h.body.slice(0,200)+(h.body.length>200?"...":""),createdAt:h.createdAt,authorAssociation:h.authorAssociation}}}let w=(e.labels||[]).map(h=>h.name||"").filter(Boolean),y={repo:t,number:e.number,title:e.title,url:e.html_url,userLastCommentedAt:c.createdAt,labels:w,daysSinceUserComment:Ie(l,new Date)};if(m)return{...y,status:"new_response",lastResponseAuthor:m.author,lastResponseBody:m.body,lastResponseAt:m.createdAt,isFromMaintainer:ea.has(m.authorAssociation)};let R=[...a].reverse().find(h=>$t(h.author)?!1:h.isUser?!0:d(h))?.isUser?"acknowledged":"waiting";return{...y,status:R}}}});function sa(r,e){let t=new Map;for(let s of r){if(!s.repo){T(e,`Skipping PR #${s.number} (${s.url}) with empty repo field`);continue}let o=t.get(s.repo)||[];o.push(s),t.set(s.repo,o)}return t}function st(r){return{number:r.number,url:r.url,title:r.title,repo:r.repo,daysSinceActivity:r.daysSinceActivity,status:r.status}}function Yt(r){let e=sa(r,"GROUP_BY_REPO"),t=[];for(let[s,o]of e)t.push({repo:s,prs:o});return t}function Xt(r){let e=sa(r,"COMPUTE_SIGNALS"),t=new Map;for(let[s,o]of e){let n=o.some(a=>a.lastMaintainerComment&&!Kl.has(a.status)),i=o.some(a=>Jl.has(a.status));t.set(s,{isResponsive:n,hasActiveMaintainers:i})}return t}function Zt(r,e,t){let s=r.length,o=r.filter(u=>Gt.has(u.status)).length,n=s<e,i=o===0,a=n&&i,c,l=t>0?` + ${t} shelved`:"";if(a)c=`You have capacity: ${s}/${e} active PRs${l}, no critical issues`;else{let u=[];n||u.push(`at PR limit (${s}/${e}${l})`),i||u.push(`${o} critical issue${o===1?"":"s"} need attention`),c=`No capacity: ${u.join(", ")}`}return{hasCapacity:a,activePRCount:s,maxActivePRs:e,shelvedPRCount:t,criticalIssueCount:o,reason:c}}function es(r,e=new Set){let t=[];for(let s of r)s.status==="needs_response"&&t.push({type:"needs_response",pr:s,label:"[Needs Response]"});for(let s of r)s.status==="needs_changes"&&t.push({type:"needs_changes",pr:s,label:"[Needs Changes]"});for(let s of r)if(s.status==="failing_ci"&&!e.has(s.url)){let o=s.failingCheckNames.length>0?` (${s.failingCheckNames.join(", ")})`:"";t.push({type:"ci_failing",pr:s,label:`[CI Failing${o}]`})}for(let s of r)s.status==="merge_conflict"&&t.push({type:"merge_conflict",pr:s,label:"[Merge Conflict]"});for(let s of r)if(s.status==="incomplete_checklist"){let o=s.checklistStats?` (${s.checklistStats.checked}/${s.checklistStats.total})`:"";t.push({type:"incomplete_checklist",pr:s,label:`[Incomplete Checklist${o}]`})}return t}function po(r){switch(r){case"demo_requested":return"demo/screenshot requested";case"tests_requested":return"tests requested";case"changes_requested":return"code changes requested";case"docs_requested":return"documentation requested";case"rebase_requested":return"rebase requested"}}function ts(r,e,t=[]){let s=t.filter(a=>a.status==="new_response"),o=[],n=r.length>0,i=s.length>0;return n&&o.push({key:"address_all",label:`Work through all ${r.length} issue${r.length===1?"":"s"} (Recommended)`,description:"Run maintenance in parallel, then address code changes one at a time"}),i&&o.push({key:"issue_replies",label:`Review ${s.length} issue repl${s.length===1?"y":"ies"}`,description:"Maintainers responded to your comments on issues"}),o.push({key:"search",label:"Search for new issues",description:"Look for new contribution opportunities"}),o.push({key:"done",label:"Done for now",description:"End session with summary"}),{items:o,context:{hasActionableIssues:n,actionableCount:r.length,hasCapacity:e.hasCapacity,hasIssueResponses:i,issueResponseCount:s.length}}}function ss(r,e,t=0){let s=e>0?`${e} need${e===1?"s":""} attention`:"all healthy",o=t>0?` | ${t} issue repl${t===1?"y":"ies"}`:"";return`\u{1F4CA} ${r.summary.totalActivePRs} Active PRs | ${s}${o}`}function rs(r,e,t=[]){let s=[];if(s.push("## OSS Dashboard"),s.push(""),s.push(`\u{1F4CA} **${r.summary.totalActivePRs} Active PRs** | ${r.summary.totalMergedAllTime} Merged | ${r.summary.mergeRate}% Merge Rate`),s.push('\u2713 Dashboard generated \u2014 say "open dashboard" to view in browser'),s.push(""),r.ciFailingPRs.length>0){s.push("### \u274C CI Failing");for(let a of r.ciFailingPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),a.failingCheckNames.length>0&&s.push(` \u2514\u2500 Failing: ${a.failingCheckNames.join(", ")}`);s.push("")}if(r.mergeConflictPRs.length>0){s.push("### \u26A0\uFE0F Merge Conflicts");for(let a of r.mergeConflictPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);s.push("")}if(r.prsNeedingResponse.length>0){s.push("### \u{1F4AC} Needs Response");for(let a of r.prsNeedingResponse){let c=a.lastMaintainerComment?.author||"maintainer";if(s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),s.push(` \u2514\u2500 @${c} commented`),a.maintainerActionHints.length>0){let l=a.maintainerActionHints.map(po).join(", ");s.push(` \u2514\u2500 Action: ${l}`)}}s.push("")}if(r.needsChangesPRs.length>0){s.push("### \u{1F527} Needs Changes");for(let a of r.needsChangesPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),s.push(" \u2514\u2500 Review requested changes \u2014 push commits to address");s.push("")}if(r.incompleteChecklistPRs.length>0){s.push("### \u{1F4CB} Incomplete Checklist");for(let a of r.incompleteChecklistPRs){let c=a.checklistStats?` (${a.checklistStats.checked}/${a.checklistStats.total} checked)`:"";s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}${c}`)}s.push("")}if(r.changesAddressedPRs.length>0){s.push("### \u{1F4E4} Changes Addressed");for(let a of r.changesAddressedPRs){let c=a.lastMaintainerComment?.author||"maintainer";s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),s.push(` \u2514\u2500 Waiting for @${c} to re-review`)}s.push("")}if(r.waitingOnMaintainerPRs.length>0){s.push("### \u23F3 Waiting on Maintainer");for(let a of r.waitingOnMaintainerPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title} (approved)`);s.push("")}if(r.healthyPRs.length>0){s.push("### \u2705 Healthy");for(let a of r.healthyPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);s.push("")}if(r.recentlyMergedPRs.length>0){s.push("### \u{1F389} Recently Merged");for(let a of r.recentlyMergedPRs){let c=a.mergedAt?new Date(a.mergedAt).toLocaleDateString():"";s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}${c?` (merged ${c})`:""}`)}s.push("")}if(r.recentlyClosedPRs.length>0){s.push("### \u{1F6AB} Recently Closed");for(let a of r.recentlyClosedPRs){let c=a.closedAt?new Date(a.closedAt).toLocaleDateString():"";s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}${c?` (closed ${c})`:""}`)}s.push("")}if(r.autoUnshelvedPRs.length>0){s.push("### \u{1F514} Auto-Unshelved"),s.push("> These PRs were shelved but a maintainer engaged \u2014 moved back to active.");for(let a of r.autoUnshelvedPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title} (${a.status.replace(/_/g," ")})`);s.push("")}if(r.shelvedPRs.length>0){s.push("### \u{1F4E6} Shelved");for(let a of r.shelvedPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);s.push("")}if(t.length>0){s.push("### \u{1F4AC} Issue Replies");for(let a of t){s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);let c=ut(a.lastResponseAt);s.push(` \u2514\u2500 @${a.lastResponseAuthor}: "${a.lastResponseBody.slice(0,80)}${a.lastResponseBody.length>80?"...":""}"${c?` (${c})`:""}`)}s.push("")}let o=e.hasCapacity?"\u2705":"\u26A0\uFE0F",n=e.hasCapacity?"Ready for new work":"Focus on existing PRs",i=e.shelvedPRCount>0?` + ${e.shelvedPRCount} shelved`:"";return s.push(`**Capacity:** ${o} ${n} (${e.activePRCount}/${e.maxActivePRs} PRs${i})`),s.join(`
88
+ `}}});var Xe,zl,Xi,vt,Zi=G(()=>{"use strict";qt();As();Bt();Mt();Oe();eo();ie();ve();Xe="issue-conversation",zl=5,Xi=new Set(["OWNER","MEMBER","COLLABORATOR"]),vt=class{octokit;stateManager;constructor(e){this.octokit=we(e),this.stateManager=L()}async fetchCommentedIssues(e=30){let t=this.stateManager.getState().config;if(!t.githubUsername)throw new Ke("No GitHub username configured. Run setup first.");let s=t.githubUsername,o=new Date;o.setDate(o.getDate()-e);let n=o.toISOString().split("T")[0];S(Xe,`Fetching commented issues for @${s} (last ${e} days)...`);let{data:i}=await this.octokit.search.issuesAndPullRequests({q:`commenter:${s} type:issue state:open updated:>=${n}`,sort:"updated",order:"desc",per_page:100});i.total_count>100&&T(Xe,`Search returned ${i.total_count} results but only first 100 were fetched. Some commented issues may be missing.`);let a=this.stateManager.getState().activeIssues||[],c=new Set(a.filter(y=>y.status==="claimed"||y.status==="in_progress"||y.status==="pr_submitted").map(y=>`${y.repo}#${y.number}`)),l=new Set((t.aiPolicyBlocklist||[]).map(y=>y.toLowerCase())),p=[];for(let y of i.items){if(y.pull_request)continue;let g=Ct(y.html_url);if(!g){T(Xe,`Skipping issue with unparseable URL: ${y.html_url}`);continue}let{owner:C,repo:h}=g,k=`${C}/${h}`;Pt(C,s)||y.user?.login?.toLowerCase()!==s.toLowerCase()&&(t.excludeRepos.includes(k)||t.excludeOrgs?.some(E=>C.toLowerCase()===E.toLowerCase())||l.has(k.toLowerCase())||c.has(`${k}#${y.number}`)||p.push({item:y,repoFullName:k}))}S(Xe,`Found ${p.length} commented issues to check`);let d=[],m=[];await Cs(p,async({item:y,repoFullName:g})=>{try{let C=await this.analyzeIssueConversation(y,g,s);C?d.push(C):m.push({issueUrl:y.html_url,error:"No user comment found despite commenter: search match (possible pagination or eventual consistency)"})}catch(C){let h=A(C);m.push({issueUrl:y.html_url,error:h}),T(Xe,`Error analyzing issue ${y.html_url}: ${h}`)}},zl),m.length>0&&T(Xe,`${m.length}/${p.length} issue analysis call(s) failed`),m.length===p.length&&p.length>0&&T(Xe,`All ${p.length} issue analysis call(s) failed. Possible systemic issue (rate limit, auth, network).`);let _={new_response:0,waiting:1,acknowledged:2};return d.sort((y,g)=>_[y.status]-_[g.status]),S(Xe,`Analyzed ${d.length} issue conversations (${d.filter(y=>y.status==="new_response").length} with new responses)`),{issues:d,failures:m}}async analyzeIssueConversation(e,t,s){let{owner:o,repo:n}=Gr(t),i=await Ue(h=>this.octokit.issues.listComments({owner:o,repo:n,issue_number:e.number,per_page:100,page:h})),a=[];for(let h of i){if(!h.user?.login)continue;let k=h.user.login;a.push({author:k,body:h.body||"",createdAt:h.created_at,isUser:k.toLowerCase()===s.toLowerCase(),authorAssociation:String(h.author_association??"")})}a.sort((h,k)=>new Date(h.createdAt).getTime()-new Date(k.createdAt).getTime());let c;for(let h of a)h.isUser&&(c=h);if(!c)return T(Xe,`No user comment found for ${e.html_url} despite commenter: search match`),null;let l=new Date(c.createdAt),p=`@${s.toLowerCase()}`;function d(h){return Xi.has(h.authorAssociation)||h.body.toLowerCase().includes(p)}let m;for(let h of a){if(h.isUser||At(h.author))continue;if(new Date(h.createdAt)>l){if(Wt(h.body)||!d(h))continue;m={author:h.author,body:h.body.slice(0,200)+(h.body.length>200?"...":""),createdAt:h.createdAt,authorAssociation:h.authorAssociation}}}let _=(e.labels||[]).map(h=>h.name||"").filter(Boolean),y={repo:t,number:e.number,title:e.title,url:e.html_url,userLastCommentedAt:c.createdAt,labels:_,daysSinceUserComment:Ie(l,new Date)};if(m)return{...y,status:"new_response",lastResponseAuthor:m.author,lastResponseBody:m.body,lastResponseAt:m.createdAt,isFromMaintainer:Xi.has(m.authorAssociation)};let C=[...a].reverse().find(h=>At(h.author)?!1:h.isUser?!0:d(h))?.isUser?"acknowledged":"waiting";return{...y,status:C}}}});function ea(r,e){let t=new Map;for(let s of r){if(!s.repo){T(e,`Skipping PR #${s.number} (${s.url}) with empty repo field`);continue}let o=t.get(s.repo)||[];o.push(s),t.set(s.repo,o)}return t}function Ze(r){return{number:r.number,url:r.url,title:r.title,repo:r.repo,daysSinceActivity:r.daysSinceActivity,status:r.status}}function Kt(r){let e=ea(r,"GROUP_BY_REPO"),t=[];for(let[s,o]of e)t.push({repo:s,prs:o});return t}function Qt(r){let e=ea(r,"COMPUTE_SIGNALS"),t=new Map;for(let[s,o]of e){let n=o.some(a=>a.lastMaintainerComment&&!Jl.has(a.status)),i=o.some(a=>Wl.has(a.status));t.set(s,{isResponsive:n,hasActiveMaintainers:i})}return t}function Yt(r,e,t){let s=r.length,o=r.filter(p=>Ot.has(p.status)).length,n=s<e,i=o===0,a=n&&i,c,l=t>0?` + ${t} shelved`:"";if(a)c=`You have capacity: ${s}/${e} active PRs${l}, no critical issues`;else{let p=[];n||p.push(`at PR limit (${s}/${e}${l})`),i||p.push(`${o} critical issue${o===1?"":"s"} need attention`),c=`No capacity: ${p.join(", ")}`}return{hasCapacity:a,activePRCount:s,maxActivePRs:e,shelvedPRCount:t,criticalIssueCount:o,reason:c}}function Xt(r,e=new Set){let t=[];for(let s of r)s.status==="needs_response"&&t.push({type:"needs_response",pr:s,label:"[Needs Response]"});for(let s of r)s.status==="needs_changes"&&t.push({type:"needs_changes",pr:s,label:"[Needs Changes]"});for(let s of r)if(s.status==="failing_ci"&&!e.has(s.url)){let o=s.failingCheckNames.length>0?` (${s.failingCheckNames.join(", ")})`:"";t.push({type:"ci_failing",pr:s,label:`[CI Failing${o}]`})}for(let s of r)s.status==="merge_conflict"&&t.push({type:"merge_conflict",pr:s,label:"[Merge Conflict]"});for(let s of r)if(s.status==="incomplete_checklist"){let o=s.checklistStats?` (${s.checklistStats.checked}/${s.checklistStats.total})`:"";t.push({type:"incomplete_checklist",pr:s,label:`[Incomplete Checklist${o}]`})}return t}function po(r){switch(r){case"demo_requested":return"demo/screenshot requested";case"tests_requested":return"tests requested";case"changes_requested":return"code changes requested";case"docs_requested":return"documentation requested";case"rebase_requested":return"rebase requested"}}function Zt(r,e,t=[]){let s=t.filter(a=>a.status==="new_response"),o=[],n=r.length>0,i=s.length>0;return n&&o.push({key:"address_all",label:`Work through all ${r.length} issue${r.length===1?"":"s"} (Recommended)`,description:"Run maintenance in parallel, then address code changes one at a time"}),i&&o.push({key:"issue_replies",label:`Review ${s.length} issue repl${s.length===1?"y":"ies"}`,description:"Maintainers responded to your comments on issues"}),o.push({key:"search",label:"Search for new issues",description:"Look for new contribution opportunities"}),o.push({key:"done",label:"Done for now",description:"End session with summary"}),{items:o,context:{hasActionableIssues:n,actionableCount:r.length,hasCapacity:e.hasCapacity,hasIssueResponses:i,issueResponseCount:s.length}}}function es(r,e,t=0){let s=e>0?`${e} need${e===1?"s":""} attention`:"all healthy",o=t>0?` | ${t} issue repl${t===1?"y":"ies"}`:"";return`\u{1F4CA} ${r.summary.totalActivePRs} Active PRs | ${s}${o}`}function ts(r,e,t=[]){let s=[];if(s.push("## OSS Dashboard"),s.push(""),s.push(`\u{1F4CA} **${r.summary.totalActivePRs} Active PRs** | ${r.summary.totalMergedAllTime} Merged | ${r.summary.mergeRate}% Merge Rate`),s.push('\u2713 Dashboard generated \u2014 say "open dashboard" to view in browser'),s.push(""),r.ciFailingPRs.length>0){s.push("### \u274C CI Failing");for(let a of r.ciFailingPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),a.failingCheckNames.length>0&&s.push(` \u2514\u2500 Failing: ${a.failingCheckNames.join(", ")}`);s.push("")}if(r.mergeConflictPRs.length>0){s.push("### \u26A0\uFE0F Merge Conflicts");for(let a of r.mergeConflictPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);s.push("")}if(r.prsNeedingResponse.length>0){s.push("### \u{1F4AC} Needs Response");for(let a of r.prsNeedingResponse){let c=a.lastMaintainerComment?.author||"maintainer";if(s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),s.push(` \u2514\u2500 @${c} commented`),a.maintainerActionHints.length>0){let l=a.maintainerActionHints.map(po).join(", ");s.push(` \u2514\u2500 Action: ${l}`)}}s.push("")}if(r.needsChangesPRs.length>0){s.push("### \u{1F527} Needs Changes");for(let a of r.needsChangesPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),s.push(" \u2514\u2500 Review requested changes \u2014 push commits to address");s.push("")}if(r.incompleteChecklistPRs.length>0){s.push("### \u{1F4CB} Incomplete Checklist");for(let a of r.incompleteChecklistPRs){let c=a.checklistStats?` (${a.checklistStats.checked}/${a.checklistStats.total} checked)`:"";s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}${c}`)}s.push("")}if(r.changesAddressedPRs.length>0){s.push("### \u{1F4E4} Changes Addressed");for(let a of r.changesAddressedPRs){let c=a.lastMaintainerComment?.author||"maintainer";s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),s.push(` \u2514\u2500 Waiting for @${c} to re-review`)}s.push("")}if(r.waitingOnMaintainerPRs.length>0){s.push("### \u23F3 Waiting on Maintainer");for(let a of r.waitingOnMaintainerPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title} (approved)`);s.push("")}if(r.healthyPRs.length>0){s.push("### \u2705 Healthy");for(let a of r.healthyPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);s.push("")}if(r.recentlyMergedPRs.length>0){s.push("### \u{1F389} Recently Merged");for(let a of r.recentlyMergedPRs){let c=a.mergedAt?new Date(a.mergedAt).toLocaleDateString():"";s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}${c?` (merged ${c})`:""}`)}s.push("")}if(r.recentlyClosedPRs.length>0){s.push("### \u{1F6AB} Recently Closed");for(let a of r.recentlyClosedPRs){let c=a.closedAt?new Date(a.closedAt).toLocaleDateString():"";s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}${c?` (closed ${c})`:""}`)}s.push("")}if(r.autoUnshelvedPRs.length>0){s.push("### \u{1F514} Auto-Unshelved"),s.push("> These PRs were shelved but a maintainer engaged \u2014 moved back to active.");for(let a of r.autoUnshelvedPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title} (${a.status.replace(/_/g," ")})`);s.push("")}if(r.shelvedPRs.length>0){s.push("### \u{1F4E6} Shelved");for(let a of r.shelvedPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);s.push("")}if(t.length>0){s.push("### \u{1F4AC} Issue Replies");for(let a of t){s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);let c=ct(a.lastResponseAt);s.push(` \u2514\u2500 @${a.lastResponseAuthor}: "${a.lastResponseBody.slice(0,80)}${a.lastResponseBody.length>80?"...":""}"${c?` (${c})`:""}`)}s.push("")}let o=e.hasCapacity?"\u2705":"\u26A0\uFE0F",n=e.hasCapacity?"Ready for new work":"Focus on existing PRs",i=e.shelvedPRCount>0?` + ${e.shelvedPRCount} shelved`:"";return s.push(`**Capacity:** ${o} ${n} (${e.activePRCount}/${e.maxActivePRs} PRs${i})`),s.join(`
89
89
  `)}function go(r,e,t=[]){if(console.log(`
90
90
  \u{1F4CA} OSS Daily Check
91
91
  `),console.log(`Active PRs: ${r.summary.totalActivePRs}`),console.log(`Needing Attention: ${r.summary.totalNeedingAttention}`),console.log(`Merged (all time): ${r.summary.totalMergedAllTime}`),console.log(`Merge Rate: ${r.summary.mergeRate}%`),console.log(`
92
92
  Capacity: ${e.hasCapacity?"\u2705 Ready for new work":"\u26A0\uFE0F Focus on existing work"}`),console.log(` ${e.reason}
93
- `),r.ciFailingPRs.length>0){console.log("\u274C CI Failing:");for(let o of r.ciFailingPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`),o.failingCheckNames.length>0&&console.log(` Failing: ${o.failingCheckNames.join(", ")}`);console.log("")}if(r.mergeConflictPRs.length>0){console.log("\u26A0\uFE0F Merge Conflicts:");for(let o of r.mergeConflictPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`);console.log("")}if(r.prsNeedingResponse.length>0){console.log("\u{1F4AC} Needs Response:");for(let o of r.prsNeedingResponse)if(console.log(` - ${o.repo}#${o.number}: ${o.title}`),o.maintainerActionHints.length>0){let n=o.maintainerActionHints.map(po).join(", ");console.log(` Action: ${n}`)}console.log("")}if(r.needsChangesPRs.length>0){console.log("\u{1F527} Needs Changes:");for(let o of r.needsChangesPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(" Review requested changes \u2014 push commits to address");console.log("")}if(r.incompleteChecklistPRs.length>0){console.log("\u{1F4CB} Incomplete Checklist:");for(let o of r.incompleteChecklistPRs){let n=o.checklistStats?` (${o.checklistStats.checked}/${o.checklistStats.total} checked)`:"";console.log(` - ${o.repo}#${o.number}: ${o.title}${n}`)}console.log("")}if(r.changesAddressedPRs.length>0){console.log("\u{1F4E4} Changes Addressed:");for(let o of r.changesAddressedPRs){let n=o.lastMaintainerComment?.author||"maintainer";console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` Waiting for @${n} to re-review`)}console.log("")}if(r.waitingOnMaintainerPRs.length>0){console.log("\u23F3 Waiting on Maintainer:");for(let o of r.waitingOnMaintainerPRs)console.log(` - ${o.repo}#${o.number}: ${o.title} (approved)`);console.log("")}if(r.recentlyMergedPRs.length>0){console.log("\u{1F389} Recently Merged:");for(let o of r.recentlyMergedPRs){let n=o.mergedAt?new Date(o.mergedAt).toLocaleDateString():"";console.log(` - ${o.repo}#${o.number}: ${o.title}${n?` (merged ${n})`:""}`)}console.log("")}if(r.recentlyClosedPRs.length>0){console.log("\u{1F6AB} Recently Closed:");for(let o of r.recentlyClosedPRs){let n=o.closedAt?new Date(o.closedAt).toLocaleDateString():"";console.log(` - ${o.repo}#${o.number}: ${o.title}${n?` (closed ${n})`:""}`)}console.log("")}if(r.autoUnshelvedPRs.length>0){console.log("\u{1F514} Auto-Unshelved:");for(let o of r.autoUnshelvedPRs)console.log(` - ${o.repo}#${o.number}: ${o.title} (${o.status.replace(/_/g," ")})`);console.log("")}if(r.shelvedPRs.length>0){console.log("\u{1F4E6} Shelved:");for(let o of r.shelvedPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`);console.log("")}let s=t.filter(o=>o.status==="new_response");if(s.length>0){console.log("\u{1F4AC} Issue Replies:");for(let o of s)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` @${o.lastResponseAuthor}: ${o.lastResponseBody.slice(0,80)}${o.lastResponseBody.length>80?"...":""}`);console.log("")}console.log("Run with --json for structured output"),console.log('Run "dashboard --open" for browser view')}var Gt,Jl,Kl,ra=$(()=>{"use strict";Oe();be();Gt=new Set(["needs_response","needs_changes","failing_ci","merge_conflict"]),Jl=new Set(["healthy","waiting_on_maintainer","changes_addressed","needs_response","needs_changes"]),Kl=new Set(["dormant","approaching_dormant"])});var re=$(()=>{"use strict";jt();qi();Zi();ta();Gs();Vt();Oe();oe();be();Jt();ra();ms()});function oa(r){let e=t=>t.map(s=>s.url);return{generatedAt:r.generatedAt,openPRs:r.openPRs,prsNeedingResponse:e(r.prsNeedingResponse),ciFailingPRs:e(r.ciFailingPRs),ciBlockedPRs:e(r.ciBlockedPRs),ciNotRunningPRs:e(r.ciNotRunningPRs),mergeConflictPRs:e(r.mergeConflictPRs),needsRebasePRs:e(r.needsRebasePRs),missingRequiredFilesPRs:e(r.missingRequiredFilesPRs),incompleteChecklistPRs:e(r.incompleteChecklistPRs),needsChangesPRs:e(r.needsChangesPRs),changesAddressedPRs:e(r.changesAddressedPRs),waitingOnMaintainerPRs:e(r.waitingOnMaintainerPRs),approachingDormant:e(r.approachingDormant),dormantPRs:e(r.dormantPRs),healthyPRs:e(r.healthyPRs),recentlyClosedPRs:r.recentlyClosedPRs,recentlyMergedPRs:r.recentlyMergedPRs,shelvedPRs:r.shelvedPRs,autoUnshelvedPRs:r.autoUnshelvedPRs,summary:r.summary}}function na(r){return r.map(e=>({type:e.type,prUrl:e.pr.url,label:e.label}))}function ia(r){return r.map(e=>({repo:e.repo,prUrls:e.prs.map(t=>t.url)}))}function Ql(r){return{success:!0,data:r,timestamp:new Date().toISOString()}}function Yl(r){return{success:!1,error:r,timestamp:new Date().toISOString()}}function z(r){console.log(JSON.stringify(Ql(r),null,2))}function aa(r){console.log(JSON.stringify(Yl(r),null,2))}var Ls=$(()=>{"use strict"});var mo={};ie(mo,{CRITICAL_STATUSES:()=>Gt,assessCapacity:()=>Zt,collectActionableIssues:()=>es,computeActionMenu:()=>ts,computeRepoSignals:()=>Xt,executeDailyCheck:()=>js,formatBriefSummary:()=>ss,formatSummary:()=>rs,groupPRsByRepo:()=>Yt,printDigest:()=>go,runDaily:()=>ou,runDailyForDisplay:()=>nu,toShelvedPRRef:()=>st});function os(r){let e=ve(r);if(e===401||e===429)return!0;if(e===403){let t=A(r).toLowerCase();return t.includes("rate limit")||t.includes("abuse detection")}return!1}async function Xl(r,e){let{prs:t,failures:s}=await r.fetchUserOpenPRs();s.length>0&&T(H,`${s.length} PR fetch(es) failed`);let o=new wt(e),[n,i,a,c,l]=await Promise.all([r.fetchUserMergedPRCounts().catch(h=>{if(os(h))throw h;return T(H,`Failed to fetch merged PR counts: ${A(h)}`),yt()}),r.fetchUserClosedPRCounts().catch(h=>{if(os(h))throw h;return T(H,`Failed to fetch closed PR counts: ${A(h)}`),yt()}),r.fetchRecentlyClosedPRs().catch(h=>{if(os(h))throw h;return T(H,`Failed to fetch recently closed PRs: ${A(h)}`),[]}),r.fetchRecentlyMergedPRs().catch(h=>{if(os(h))throw h;return T(H,`Failed to fetch recently merged PRs: ${A(h)}`),[]}),o.fetchCommentedIssues().catch(h=>{if(os(h))throw h;let S=A(h);return S.includes("No GitHub username configured")?T(H,`Issue conversation tracking requires setup: ${S}`):T(H,`Issue conversation fetch failed: ${S}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${S}`}]}})]),u=l.issues;l.failures.length>0&&T(H,`${l.failures.length} issue conversation check(s) failed`);let{repos:d,monthlyCounts:m,monthlyOpenedCounts:w}=n,{repos:y,monthlyCounts:g,monthlyOpenedCounts:R}=i;return{prs:t,failures:s,mergedCounts:d,closedCounts:y,monthlyCounts:m,monthlyClosedCounts:g,openedFromMerged:w,openedFromClosed:R,recentlyClosedPRs:a,recentlyMergedPRs:c,commentedIssues:u}}async function Zl(r,e,t,s){let o=U(),n=Object.values(o.getState().repoScores).filter(g=>g.mergedPRCount>0);if(t.size===0&&n.length>0)T(H,`Skipping stale repo reset: API returned 0 merged PR results but state has ${n.length} repo(s) with merges. Possible API issue.`);else for(let g of Object.values(o.getState().repoScores))t.has(g.repo)||o.updateRepoScore(g.repo,{mergedPRCount:0});let i=0;for(let[g,{count:R,lastMergedAt:h}]of t)try{o.updateRepoScore(g,{mergedPRCount:R,lastMergedAt:h||void 0})}catch(S){i++,T(H,`Failed to update merged count for ${g}: ${A(S)}`)}i===t.size&&t.size>0&&T(H,`[ALL_MERGED_COUNT_UPDATES_FAILED] All ${t.size} merged count update(s) failed.`);let a=Object.values(o.getState().repoScores).filter(g=>(g.closedWithoutMergeCount||0)>0);s.size===0&&a.length>0&&T(H,`API returned 0 closed PR results but state has ${a.length} repo(s) with closed PRs. Possible transient API issue.`);let c=0;for(let[g,R]of s)try{o.updateRepoScore(g,{closedWithoutMergeCount:R})}catch(h){c++,T(H,`Failed to update closed count for ${g}: ${A(h)}`)}c===s.size&&s.size>0&&T(H,`[ALL_CLOSED_COUNT_UPDATES_FAILED] All ${s.size} closed count update(s) failed.`);let l=Xt(e),u=0;for(let[g,R]of l)try{o.updateRepoScore(g,{signals:R})}catch(h){u++,T(H,`Failed to update signals for ${g}: ${A(h)}`)}u===l.size&&l.size>0&&T(H,`[ALL_SIGNAL_UPDATES_FAILED] All ${l.size} signal update(s) failed. This may indicate corrupted state.`);let d=Object.keys(o.getState().repoScores),m;try{m=await r.fetchRepoStarCounts(d)}catch(g){T(H,`Failed to fetch repo star counts: ${A(g)}`),T(H,"Dashboard minStars filter will use cached star counts (or be skipped for repos without cached data)."),m=new Map}let w=0;for(let[g,R]of m)try{o.updateRepoScore(g,{stargazersCount:R})}catch(h){w++,T(H,`Failed to update star count for ${g}: ${A(h)}`)}w===m.size&&m.size>0&&T(H,`[ALL_STAR_COUNT_UPDATES_FAILED] All ${m.size} star count update(s) failed.`);let y=0;for(let[g]of t)try{o.addTrustedProject(g)}catch(R){y++,T(H,`Failed to sync trusted project ${g}: ${A(R)}`)}y===t.size&&t.size>0&&T(H,`[ALL_TRUST_SYNCS_FAILED] All ${t.size} trusted project sync(s) failed. This may indicate corrupted state.`)}function eu(r,e,t,s,o){let n=U();try{Object.keys(e).length>0&&n.setMonthlyMergedCounts(e)}catch(i){T(H,`Failed to store monthly merged counts: ${A(i)}`)}try{Object.keys(t).length>0&&n.setMonthlyClosedCounts(t)}catch(i){T(H,`Failed to store monthly closed counts: ${A(i)}`)}try{let i={...s};for(let[a,c]of Object.entries(o))i[a]=(i[a]||0)+c;for(let a of r)if(a.createdAt){let c=a.createdAt.slice(0,7);i[c]=(i[c]||0)+1}Object.keys(i).length>0&&n.setMonthlyOpenedCounts(i)}catch(i){T(H,`Failed to compute/store monthly opened counts: ${A(i)}`)}}function tu(r,e,t,s){let o=U();try{let l=o.expireSnoozes();if(l.length>0){let u=l.map(d=>` - ${d}`).join(`
93
+ `),r.ciFailingPRs.length>0){console.log("\u274C CI Failing:");for(let o of r.ciFailingPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`),o.failingCheckNames.length>0&&console.log(` Failing: ${o.failingCheckNames.join(", ")}`);console.log("")}if(r.mergeConflictPRs.length>0){console.log("\u26A0\uFE0F Merge Conflicts:");for(let o of r.mergeConflictPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`);console.log("")}if(r.prsNeedingResponse.length>0){console.log("\u{1F4AC} Needs Response:");for(let o of r.prsNeedingResponse)if(console.log(` - ${o.repo}#${o.number}: ${o.title}`),o.maintainerActionHints.length>0){let n=o.maintainerActionHints.map(po).join(", ");console.log(` Action: ${n}`)}console.log("")}if(r.needsChangesPRs.length>0){console.log("\u{1F527} Needs Changes:");for(let o of r.needsChangesPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(" Review requested changes \u2014 push commits to address");console.log("")}if(r.incompleteChecklistPRs.length>0){console.log("\u{1F4CB} Incomplete Checklist:");for(let o of r.incompleteChecklistPRs){let n=o.checklistStats?` (${o.checklistStats.checked}/${o.checklistStats.total} checked)`:"";console.log(` - ${o.repo}#${o.number}: ${o.title}${n}`)}console.log("")}if(r.changesAddressedPRs.length>0){console.log("\u{1F4E4} Changes Addressed:");for(let o of r.changesAddressedPRs){let n=o.lastMaintainerComment?.author||"maintainer";console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` Waiting for @${n} to re-review`)}console.log("")}if(r.waitingOnMaintainerPRs.length>0){console.log("\u23F3 Waiting on Maintainer:");for(let o of r.waitingOnMaintainerPRs)console.log(` - ${o.repo}#${o.number}: ${o.title} (approved)`);console.log("")}if(r.recentlyMergedPRs.length>0){console.log("\u{1F389} Recently Merged:");for(let o of r.recentlyMergedPRs){let n=o.mergedAt?new Date(o.mergedAt).toLocaleDateString():"";console.log(` - ${o.repo}#${o.number}: ${o.title}${n?` (merged ${n})`:""}`)}console.log("")}if(r.recentlyClosedPRs.length>0){console.log("\u{1F6AB} Recently Closed:");for(let o of r.recentlyClosedPRs){let n=o.closedAt?new Date(o.closedAt).toLocaleDateString():"";console.log(` - ${o.repo}#${o.number}: ${o.title}${n?` (closed ${n})`:""}`)}console.log("")}if(r.autoUnshelvedPRs.length>0){console.log("\u{1F514} Auto-Unshelved:");for(let o of r.autoUnshelvedPRs)console.log(` - ${o.repo}#${o.number}: ${o.title} (${o.status.replace(/_/g," ")})`);console.log("")}if(r.shelvedPRs.length>0){console.log("\u{1F4E6} Shelved:");for(let o of r.shelvedPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`);console.log("")}let s=t.filter(o=>o.status==="new_response");if(s.length>0){console.log("\u{1F4AC} Issue Replies:");for(let o of s)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` @${o.lastResponseAuthor}: ${o.lastResponseBody.slice(0,80)}${o.lastResponseBody.length>80?"...":""}`);console.log("")}console.log("Run with --json for structured output"),console.log('Run "dashboard serve" for browser view')}var Ot,Wl,Jl,ta=G(()=>{"use strict";Oe();ve();Ot=new Set(["needs_response","needs_changes","failing_ci","merge_conflict"]),Wl=new Set(["healthy","waiting_on_maintainer","changes_addressed","needs_response","needs_changes"]),Jl=new Set(["dormant","approaching_dormant"])});var re=G(()=>{"use strict";Mt();Ni();Yi();Zi();As();qt();Oe();ie();ve();zt();ta();ps()});function sa(r){let e=t=>t.map(s=>s.url);return{generatedAt:r.generatedAt,openPRs:r.openPRs,prsNeedingResponse:e(r.prsNeedingResponse),ciFailingPRs:e(r.ciFailingPRs),ciBlockedPRs:e(r.ciBlockedPRs),ciNotRunningPRs:e(r.ciNotRunningPRs),mergeConflictPRs:e(r.mergeConflictPRs),needsRebasePRs:e(r.needsRebasePRs),missingRequiredFilesPRs:e(r.missingRequiredFilesPRs),incompleteChecklistPRs:e(r.incompleteChecklistPRs),needsChangesPRs:e(r.needsChangesPRs),changesAddressedPRs:e(r.changesAddressedPRs),waitingOnMaintainerPRs:e(r.waitingOnMaintainerPRs),approachingDormant:e(r.approachingDormant),dormantPRs:e(r.dormantPRs),healthyPRs:e(r.healthyPRs),recentlyClosedPRs:r.recentlyClosedPRs,recentlyMergedPRs:r.recentlyMergedPRs,shelvedPRs:r.shelvedPRs,autoUnshelvedPRs:r.autoUnshelvedPRs,summary:r.summary}}function ra(r){return r.map(e=>({type:e.type,prUrl:e.pr.url,label:e.label}))}function oa(r){return r.map(e=>({repo:e.repo,prUrls:e.prs.map(t=>t.url)}))}function Kl(r){return{success:!0,data:r,timestamp:new Date().toISOString()}}function Ql(r){return{success:!1,error:r,timestamp:new Date().toISOString()}}function X(r){console.log(JSON.stringify(Kl(r),null,2))}function na(r){console.log(JSON.stringify(Ql(r),null,2))}var mo=G(()=>{"use strict"});var ho={};ne(ho,{CRITICAL_STATUSES:()=>Ot,assessCapacity:()=>Yt,collectActionableIssues:()=>Xt,computeActionMenu:()=>Zt,computeRepoSignals:()=>Qt,executeDailyCheck:()=>Fs,formatBriefSummary:()=>es,formatSummary:()=>ts,groupPRsByRepo:()=>Kt,printDigest:()=>go,runDaily:()=>ru,runDailyForDisplay:()=>ou,toShelvedPRRef:()=>Ze});function ss(r){let e=fe(r);if(e===401||e===429)return!0;if(e===403){let t=A(r).toLowerCase();return t.includes("rate limit")||t.includes("abuse detection")}return!1}async function Yl(r,e){let{prs:t,failures:s}=await r.fetchUserOpenPRs();s.length>0&&T(H,`${s.length} PR fetch(es) failed`);let o=new vt(e),[n,i,a,c,l]=await Promise.all([r.fetchUserMergedPRCounts().catch(h=>{if(ss(h))throw h;return T(H,`Failed to fetch merged PR counts: ${A(h)}`),ft()}),r.fetchUserClosedPRCounts().catch(h=>{if(ss(h))throw h;return T(H,`Failed to fetch closed PR counts: ${A(h)}`),ft()}),r.fetchRecentlyClosedPRs().catch(h=>{if(ss(h))throw h;return T(H,`Failed to fetch recently closed PRs: ${A(h)}`),[]}),r.fetchRecentlyMergedPRs().catch(h=>{if(ss(h))throw h;return T(H,`Failed to fetch recently merged PRs: ${A(h)}`),[]}),o.fetchCommentedIssues().catch(h=>{if(ss(h))throw h;let k=A(h);return k.includes("No GitHub username configured")?T(H,`Issue conversation tracking requires setup: ${k}`):T(H,`Issue conversation fetch failed: ${k}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${k}`}]}})]),p=l.issues;l.failures.length>0&&T(H,`${l.failures.length} issue conversation check(s) failed`);let{repos:d,monthlyCounts:m,monthlyOpenedCounts:_}=n,{repos:y,monthlyCounts:g,monthlyOpenedCounts:C}=i;return{prs:t,failures:s,mergedCounts:d,closedCounts:y,monthlyCounts:m,monthlyClosedCounts:g,openedFromMerged:_,openedFromClosed:C,recentlyClosedPRs:a,recentlyMergedPRs:c,commentedIssues:p}}async function Xl(r,e,t,s){let o=L(),n=Object.values(o.getState().repoScores).filter(g=>g.mergedPRCount>0);if(t.size===0&&n.length>0)T(H,`Skipping stale repo reset: API returned 0 merged PR results but state has ${n.length} repo(s) with merges. Possible API issue.`);else for(let g of Object.values(o.getState().repoScores))t.has(g.repo)||o.updateRepoScore(g.repo,{mergedPRCount:0});let i=0;for(let[g,{count:C,lastMergedAt:h}]of t)try{o.updateRepoScore(g,{mergedPRCount:C,lastMergedAt:h||void 0})}catch(k){i++,T(H,`Failed to update merged count for ${g}: ${A(k)}`)}i===t.size&&t.size>0&&T(H,`[ALL_MERGED_COUNT_UPDATES_FAILED] All ${t.size} merged count update(s) failed.`);let a=Object.values(o.getState().repoScores).filter(g=>(g.closedWithoutMergeCount||0)>0);s.size===0&&a.length>0&&T(H,`API returned 0 closed PR results but state has ${a.length} repo(s) with closed PRs. Possible transient API issue.`);let c=0;for(let[g,C]of s)try{o.updateRepoScore(g,{closedWithoutMergeCount:C})}catch(h){c++,T(H,`Failed to update closed count for ${g}: ${A(h)}`)}c===s.size&&s.size>0&&T(H,`[ALL_CLOSED_COUNT_UPDATES_FAILED] All ${s.size} closed count update(s) failed.`);let l=Qt(e),p=0;for(let[g,C]of l)try{o.updateRepoScore(g,{signals:C})}catch(h){p++,T(H,`Failed to update signals for ${g}: ${A(h)}`)}p===l.size&&l.size>0&&T(H,`[ALL_SIGNAL_UPDATES_FAILED] All ${l.size} signal update(s) failed. This may indicate corrupted state.`);let d=Object.keys(o.getState().repoScores),m;try{m=await r.fetchRepoStarCounts(d)}catch(g){T(H,`Failed to fetch repo star counts: ${A(g)}`),T(H,"Dashboard minStars filter will use cached star counts (or be skipped for repos without cached data)."),m=new Map}let _=0;for(let[g,C]of m)try{o.updateRepoScore(g,{stargazersCount:C})}catch(h){_++,T(H,`Failed to update star count for ${g}: ${A(h)}`)}_===m.size&&m.size>0&&T(H,`[ALL_STAR_COUNT_UPDATES_FAILED] All ${m.size} star count update(s) failed.`);let y=0;for(let[g]of t)try{o.addTrustedProject(g)}catch(C){y++,T(H,`Failed to sync trusted project ${g}: ${A(C)}`)}y===t.size&&t.size>0&&T(H,`[ALL_TRUST_SYNCS_FAILED] All ${t.size} trusted project sync(s) failed. This may indicate corrupted state.`)}function Zl(r,e,t,s,o){let n=L();try{Object.keys(e).length>0&&n.setMonthlyMergedCounts(e)}catch(i){T(H,`Failed to store monthly merged counts: ${A(i)}`)}try{Object.keys(t).length>0&&n.setMonthlyClosedCounts(t)}catch(i){T(H,`Failed to store monthly closed counts: ${A(i)}`)}try{let i={...s};for(let[a,c]of Object.entries(o))i[a]=(i[a]||0)+c;for(let a of r)if(a.createdAt){let c=a.createdAt.slice(0,7);i[c]=(i[c]||0)+1}Object.keys(i).length>0&&n.setMonthlyOpenedCounts(i)}catch(i){T(H,`Failed to compute/store monthly opened counts: ${A(i)}`)}}function eu(r,e,t,s){let o=L();try{let l=o.expireSnoozes();if(l.length>0){let p=l.map(d=>` - ${d}`).join(`
94
94
  `);T(H,`${l.length} snoozed PR(s) expired and will resurface:
95
- ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n=[],i=[],a=[];for(let l of e)o.isPRShelved(l.url)?Gt.has(l.status)?(o.unshelvePR(l.url),i.push(st(l)),a.push(l)):n.push(st(l)):l.status==="dormant"?n.push(st(l)):a.push(l);let c=r.generateDigest(e,t,s);return c.shelvedPRs=n,c.autoUnshelvedPRs=i,c.summary.totalActivePRs=a.length,o.setLastDigest(c),o.save(),{activePRs:a,shelvedPRs:n,autoUnshelvedPRs:i,digest:c}}function su(r,e,t,s,o){let n=U(),i=Zt(e,n.getState().config.maxActivePRs,t.length),a=!1,c=s.filter(h=>{let S=n.getIssueDismissedAt(h.url);if(!S)return!0;if(h.status==="new_response"){let C=new Date(h.lastResponseAt).getTime(),_=new Date(S).getTime();if(isNaN(C)||isNaN(_))return T(H,`Invalid timestamp in dismiss check for ${h.url}, including issue`),!0;if(C>_)return T(H,`Auto-undismissing issue ${h.url}: new response at ${h.lastResponseAt} after dismiss at ${S}`),n.undismissIssue(h.url),a=!0,!0}return!1}),l=c.filter(h=>h.status==="new_response"),u=rs(r,i,l),d=new Set(Object.keys(n.getState().config.snoozedPRs??{}).filter(h=>n.isSnoozed(h))),m=e.filter(h=>{let S=n.getIssueDismissedAt(h.url);if(!S)return!0;let C=new Date(h.updatedAt).getTime(),_=new Date(S).getTime();return isNaN(C)||isNaN(_)?(T(H,`Invalid timestamp in PR dismiss check for ${h.url}, including PR`),!0):C>_?(T(H,`Auto-undismissing PR ${h.url}: new activity at ${h.updatedAt} after dismiss at ${S}`),n.undismissIssue(h.url),a=!0,!0):!1});if(a)try{n.save()}catch(h){T(H,`Failed to persist auto-undismissed state: ${A(h)}`)}let w=es(m,d);r.summary.totalNeedingAttention=w.length;let y=ss(r,w.length,l.length),g=ts(w,i,c),R=Yt(e);return{digest:r,capacity:i,summary:u,briefSummary:y,actionableIssues:w,actionMenu:g,commentedIssues:c,repoGroups:R,failures:o}}function ru(r){return{digest:oa(r.digest),capacity:r.capacity,summary:r.summary,briefSummary:r.briefSummary,actionableIssues:na(r.actionableIssues),actionMenu:r.actionMenu,commentedIssues:r.commentedIssues,repoGroups:ia(r.repoGroups),failures:r.failures}}async function js(r){let e=await ca(r);return ru(e)}async function ca(r){let e=new vt(r),{prs:t,failures:s,mergedCounts:o,closedCounts:n,monthlyCounts:i,monthlyClosedCounts:a,openedFromMerged:c,openedFromClosed:l,recentlyClosedPRs:u,recentlyMergedPRs:d,commentedIssues:m}=await Xl(e,r);await Zl(e,t,o,n),eu(t,i,a,c,l);let{activePRs:w,shelvedPRs:y,digest:g}=tu(e,t,u,d);return su(g,w,y,m,s)}async function ou(){let r=_e();return js(r)}async function nu(){let r=_e();return ca(r)}var H,ns=$(()=>{"use strict";re();oe();be();Ds();Ls();re();H="daily"});var la={};ie(la,{runStatus:()=>iu});async function iu(r){let e=U(),t=e.getStats(),s=e.getState(),o=s.lastDigestAt||s.lastRunAt,{totalTracked:n,...i}=t,a={stats:i,lastRunAt:s.lastRunAt};return r.offline&&(a.offline=!0,a.lastUpdated=o),a}var ua=$(()=>{"use strict";re()});var pa={};ie(pa,{runSearch:()=>au});async function au(r){let e=_e(),t=new _t(e),s=await t.searchIssues({maxResults:r.maxResults}),o=U(),{config:n}=o.getState(),i=n.excludeRepos||[],a=n.aiPolicyBlocklist??ct.aiPolicyBlocklist??[],c={candidates:s.map(l=>{let u=o.getRepoScore(l.issue.repo);return{issue:{repo:l.issue.repo,number:l.issue.number,title:l.issue.title,url:l.issue.url,labels:l.issue.labels},recommendation:l.recommendation,reasonsToApprove:l.reasonsToApprove,reasonsToSkip:l.reasonsToSkip,searchPriority:l.searchPriority,viabilityScore:l.viabilityScore,repoScore:u?{score:u.score,mergedPRCount:u.mergedPRCount,closedWithoutMergeCount:u.closedWithoutMergeCount,isResponsive:u.signals?.isResponsive??!1,lastMergedAt:u.lastMergedAt}:void 0}}),excludedRepos:i,aiPolicyBlocklist:a};return t.rateLimitWarning&&(c.rateLimitWarning=t.rateLimitWarning),c}var da=$(()=>{"use strict";re()});function ne(r,e,t){if(e.test(r))return;let s={PR:"https://github.com/owner/repo/pull/123",issue:"https://github.com/owner/repo/issues/123","issue or PR":"https://github.com/owner/repo/issues/123 or https://github.com/owner/repo/pull/123"};throw new K(`Invalid ${t} URL: ${r}. Expected format: ${s[t]}`)}function te(r){if(r.length>ga)throw new K(`URL exceeds maximum length of ${ga} characters`);return r}function Rt(r){if(r.length>ma)throw new K(`Message exceeds maximum length of ${ma} characters`);return r}function xt(r){if(!r||r.trim().length===0)throw new K("GitHub username cannot be empty.");let e=r.trim();if(e.length>ha)throw new K(`GitHub username must be at most ${ha} characters (got ${e.length}).`);if(!cu.test(e))throw new K("GitHub username can only contain alphanumeric characters and hyphens.");if(e.startsWith("-"))throw new K("GitHub username cannot start with a hyphen.");if(e.endsWith("-"))throw new K("GitHub username cannot end with a hyphen.");if(lu.test(e))throw new K("GitHub username cannot contain consecutive hyphens.");return e}var Re,Ns,is,ga,ma,ha,cu,lu,$e=$(()=>{"use strict";oe();Re=/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\/\d+$/,Ns=/^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\/\d+$/,is=/^https:\/\/github\.com\/[^/]+\/[^/]+\/(issues|pull)\/\d+$/,ga=2048,ma=1e3;ha=39,cu=/^[a-zA-Z0-9-]+$/,lu=/--/});var fa={};ie(fa,{runVet:()=>uu});async function uu(r){te(r.issueUrl),ne(r.issueUrl,Ns,"issue");let e=_e(),s=await new _t(e).vetIssue(r.issueUrl);return{issue:{repo:s.issue.repo,number:s.issue.number,title:s.issue.title,url:s.issue.url,labels:s.issue.labels},recommendation:s.recommendation,reasonsToApprove:s.reasonsToApprove,reasonsToSkip:s.reasonsToSkip,projectHealth:s.projectHealth,vettingResult:s.vettingResult}}var ba=$(()=>{"use strict";re();$e()});var ho={};ie(ho,{runTrack:()=>pu,runUntrack:()=>du});async function pu(r){te(r.prUrl),ne(r.prUrl,Re,"PR");let e=_e(),t=we(e),s=Te(r.prUrl);if(!s||s.type!=="pull")throw new Error(`Invalid PR URL: ${r.prUrl}`);let{owner:o,repo:n,number:i}=s,{data:a}=await t.pulls.get({owner:o,repo:n,pull_number:i});return{pr:{repo:`${o}/${n}`,number:i,title:a.title,url:r.prUrl}}}async function du(r){return te(r.prUrl),ne(r.prUrl,Re,"PR"),{removed:!1,url:r.prUrl,message:"In v2, PRs are fetched fresh on each daily run \u2014 there is no local tracking list to remove from."}}var fo=$(()=>{"use strict";re();$e();Oe()});var ya={};ie(ya,{runRead:()=>gu});async function gu(r){if(!r.all&&!r.prUrl)throw new Error("PR URL or --all flag required");return r.prUrl&&te(r.prUrl),r.all?{markedAsRead:0,all:!0,message:"In v2, PR read state is not tracked locally."}:{marked:!1,url:r.prUrl,message:"In v2, PR read state is not tracked locally."}}var va=$(()=>{"use strict";$e()});var Hs={};ie(Hs,{runClaim:()=>fu,runComments:()=>mu,runPost:()=>hu});async function mu(r){te(r.prUrl),ne(r.prUrl,Re,"PR");let e=_e(),t=U(),s=we(e),o=Te(r.prUrl);if(!o||o.type!=="pull")throw new Error("Invalid PR URL format");let{owner:n,repo:i,number:a}=o,{data:c}=await s.pulls.get({owner:n,repo:i,pull_number:a}),[l,u,d]=await Promise.all([Ue(h=>s.pulls.listReviewComments({owner:n,repo:i,pull_number:a,per_page:100,page:h})),Ue(h=>s.issues.listComments({owner:n,repo:i,issue_number:a,per_page:100,page:h})),Ue(h=>s.pulls.listReviews({owner:n,repo:i,pull_number:a,per_page:100,page:h}))]),m=t.getState().config.githubUsername,w=h=>!(!h.user||h.user.login===m||h.user.type==="Bot"&&!r.showBots),y=l.filter(w).sort((h,S)=>new Date(S.created_at).getTime()-new Date(h.created_at).getTime()),g=u.filter(w).sort((h,S)=>new Date(S.created_at).getTime()-new Date(h.created_at).getTime()),R=d.filter(h=>w(h)&&h.body&&h.body.trim()).sort((h,S)=>new Date(S.submitted_at||0).getTime()-new Date(h.submitted_at||0).getTime());return{pr:{title:c.title,state:c.state,mergeable:c.mergeable,head:c.head.ref,base:c.base.ref,url:c.html_url},reviews:R.map(h=>({user:h.user?.login,state:h.state,body:h.body??null,submittedAt:h.submitted_at??null})),reviewComments:y.map(h=>({user:h.user?.login,body:h.body,path:h.path,createdAt:h.created_at})),issueComments:g.map(h=>({user:h.user?.login,body:h.body,createdAt:h.created_at})),summary:{reviewCount:R.length,inlineCommentCount:y.length,discussionCommentCount:g.length}}}async function hu(r){if(te(r.url),ne(r.url,is,"issue or PR"),!r.message.trim())throw new Error("No message provided");Rt(r.message);let e=_e(),t=Te(r.url);if(!t)throw new Error("Invalid GitHub URL format");let{owner:s,repo:o,number:n}=t,i=we(e),{data:a}=await i.issues.createComment({owner:s,repo:o,issue_number:n,body:r.message});return{commentUrl:a.html_url,url:r.url}}async function fu(r){te(r.issueUrl),ne(r.issueUrl,Ns,"issue");let e=_e(),t=r.message||"Hi! I'd like to work on this issue. Could you assign it to me?";Rt(t);let s=Te(r.issueUrl);if(!s||s.type!=="issues")throw new Error("Invalid issue URL format (must be an issue, not a PR)");let{owner:o,repo:n,number:i}=s,a=we(e),{data:c}=await a.issues.createComment({owner:o,repo:n,issue_number:i,body:t});try{let l=U();l.addIssue({id:i,url:r.issueUrl,repo:`${o}/${n}`,number:i,title:"(claimed)",status:"claimed",labels:[],createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),vetted:!1}),l.save()}catch(l){console.error(`Warning: Comment posted on ${r.issueUrl} but failed to save to local state: ${l instanceof Error?l.message:l}`)}return{commentUrl:c.html_url,issueUrl:r.issueUrl}}var qs=$(()=>{"use strict";re();zt();$e()});var _a={};ie(_a,{runConfig:()=>bu});async function bu(r){let e=U(),t=e.getState().config;if(!r.key)return{config:t};if(!r.value)throw new Error("Value required");let s=r.value;switch(r.key){case"username":e.updateConfig({githubUsername:xt(s)});break;case"add-language":t.languages.includes(s)||e.updateConfig({languages:[...t.languages,s]});break;case"add-label":t.labels.includes(s)||e.updateConfig({labels:[...t.labels,s]});break;case"exclude-repo":{let o=s.split("/");if(o.length!==2||!o[0]||!o[1])throw new Error(`Invalid repo format "${s}". Use "owner/repo" format. To exclude an entire org, use: config exclude-org ${s}`);let n=s.toLowerCase();t.excludeRepos.some(i=>i.toLowerCase()===n)||(e.updateConfig({excludeRepos:[...t.excludeRepos,s]}),e.cleanupExcludedData([s],[]));break}case"exclude-org":{if(s.includes("/"))throw new Error(`Invalid org name "${s}". Use just the org name (e.g., "facebook"), not "owner/repo" format. To exclude a specific repo, use: config exclude-repo ${s}`);let o=t.excludeOrgs??[];o.some(n=>n.toLowerCase()===s.toLowerCase())||(e.updateConfig({excludeOrgs:[...o,s]}),e.cleanupExcludedData([],[s]));break}default:throw new Error(`Unknown config key: ${r.key}`)}return e.save(),{success:!0,key:r.key,value:s}}var wa=$(()=>{"use strict";re();$e()});var Ra={};ie(Ra,{runInit:()=>yu});async function yu(r){xt(r.username);let e=U();return e.updateConfig({githubUsername:r.username}),e.save(),{username:r.username,message:"Username saved. Run `daily` to fetch your open PRs from GitHub."}}var Ea=$(()=>{"use strict";re();$e()});var yo={};ie(yo,{runCheckSetup:()=>_u,runSetup:()=>vu});function bo(r,e){let t=Number(r);if(!Number.isFinite(t)||t<1||!Number.isInteger(t))throw new K(`Invalid value for ${e}: "${r}". Must be a positive integer.`);return t}async function vu(r){let e=U(),t=e.getState().config;if(r.set&&r.set.length>0){let s={},o=[];for(let n of r.set){let[i,...a]=n.split("="),c=a.join("=");switch(i){case"username":xt(c),e.updateConfig({githubUsername:c}),s[i]=c;break;case"maxActivePRs":{let l=bo(c,"maxActivePRs");e.updateConfig({maxActivePRs:l}),s[i]=String(l);break}case"dormantDays":{let l=bo(c,"dormantDays");e.updateConfig({dormantThresholdDays:l}),s[i]=String(l);break}case"approachingDays":{let l=bo(c,"approachingDays");e.updateConfig({approachingDormantDays:l}),s[i]=String(l);break}case"languages":e.updateConfig({languages:c.split(",").map(l=>l.trim())}),s[i]=c;break;case"labels":e.updateConfig({labels:c.split(",").map(l=>l.trim())}),s[i]=c;break;case"showHealthCheck":e.updateConfig({showHealthCheck:c!=="false"}),s[i]=c!=="false"?"true":"false";break;case"squashByDefault":c==="ask"?(e.updateConfig({squashByDefault:"ask"}),s[i]="ask"):(e.updateConfig({squashByDefault:c!=="false"}),s[i]=c!=="false"?"true":"false");break;case"minStars":{let l=Number(c);if(!Number.isFinite(l)||!Number.isInteger(l)||l<0)throw new K(`Invalid value for minStars: "${c}". Must be a non-negative integer.`);e.updateConfig({minStars:l}),s[i]=String(l);break}case"includeDocIssues":e.updateConfig({includeDocIssues:c==="true"}),s[i]=c==="true"?"true":"false";break;case"aiPolicyBlocklist":{let l=c.split(",").map(m=>m.trim()).filter(Boolean),u=[],d=[];for(let m of l){let w=m.replace(/\s+/g,"");/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/.test(w)?u.push(w):d.push(m)}if(d.length>0&&(o.push(`Warning: Skipping invalid entries (expected "owner/repo" format): ${d.join(", ")}`),s.aiPolicyBlocklist_invalidEntries=d.join(", ")),u.length===0&&l.length>0){o.push("Warning: All entries were invalid. Blocklist not updated."),s[i]="(all entries invalid)";break}e.updateConfig({aiPolicyBlocklist:u}),s[i]=u.length>0?u.join(", "):"(empty)";break}case"complete":c==="true"&&(e.markSetupComplete(),s[i]="true");break;default:o.push(`Unknown setting: ${i}`)}}return e.save(),{success:!0,settings:s,warnings:o.length>0?o:void 0}}return t.setupComplete&&!r.reset?{setupComplete:!0,config:{githubUsername:t.githubUsername,maxActivePRs:t.maxActivePRs,dormantThresholdDays:t.dormantThresholdDays,approachingDormantDays:t.approachingDormantDays,languages:t.languages,labels:t.labels}}:{setupRequired:!0,prompts:[{setting:"username",prompt:"What is your GitHub username?",current:t.githubUsername||null,required:!0,type:"string"},{setting:"maxActivePRs",prompt:"How many PRs do you want to work on at once?",current:t.maxActivePRs,default:10,type:"number"},{setting:"dormantDays",prompt:"After how many days of inactivity should a PR be considered dormant?",current:t.dormantThresholdDays,default:30,type:"number"},{setting:"approachingDays",prompt:"At how many days should we warn about approaching dormancy?",current:t.approachingDormantDays,default:25,type:"number"},{setting:"languages",prompt:"What programming languages do you want to contribute to?",current:t.languages,default:["typescript","javascript"],type:"list"},{setting:"labels",prompt:"What issue labels should we search for?",current:t.labels,default:["good first issue","help wanted"],type:"list"},{setting:"aiPolicyBlocklist",prompt:"Repos with anti-AI contribution policies to block (owner/repo, comma-separated)?",current:t.aiPolicyBlocklist??ct.aiPolicyBlocklist??null,default:["matplotlib/matplotlib"],type:"list"}]}}async function _u(){let r=U();return{setupComplete:r.isSetupComplete(),username:r.getState().config.githubUsername}}var vo=$(()=>{"use strict";re();oe();$e()});async function as(r){let e=U(),t=new vt(r),s=new wt(r),[{prs:o,failures:n},i,a,c,l,u]=await Promise.all([t.fetchUserOpenPRs(),t.fetchRecentlyClosedPRs().catch(C=>(console.error(`Warning: Failed to fetch recently closed PRs: ${A(C)}`),[])),t.fetchRecentlyMergedPRs().catch(C=>(console.error(`Warning: Failed to fetch recently merged PRs: ${A(C)}`),[])),t.fetchUserMergedPRCounts().catch(C=>(console.error(`Warning: Failed to fetch merged PR counts: ${A(C)}`),yt())),t.fetchUserClosedPRCounts().catch(C=>(console.error(`Warning: Failed to fetch closed PR counts: ${A(C)}`),yt())),s.fetchCommentedIssues().catch(C=>{let _=A(C);return _.includes("No GitHub username configured")?console.error(`[DASHBOARD] Issue conversation tracking requires setup: ${_}`):console.error(`[DASHBOARD] Issue conversation fetch failed: ${_}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${_}`}]}})]),d=u.issues;u.failures.length>0&&console.error(`[DASHBOARD] ${u.failures.length} issue conversation check(s) failed`),n.length>0&&console.error(`Warning: ${n.length} PR fetch(es) failed`);let{monthlyCounts:m,monthlyOpenedCounts:w}=c,{monthlyCounts:y,monthlyOpenedCounts:g}=l;try{Object.keys(m).length>0&&e.setMonthlyMergedCounts(m)}catch(C){console.error("[DASHBOARD] Failed to store monthly merged counts:",A(C))}try{Object.keys(y).length>0&&e.setMonthlyClosedCounts(y)}catch(C){console.error("[DASHBOARD] Failed to store monthly closed counts:",A(C))}try{let C={...w};for(let[_,G]of Object.entries(g))C[_]=(C[_]||0)+G;for(let _ of o)if(_.createdAt){let G=_.createdAt.slice(0,7);C[G]=(C[G]||0)+1}Object.keys(C).length>0&&e.setMonthlyOpenedCounts(C)}catch(C){console.error("[DASHBOARD] Failed to store monthly opened counts:",A(C))}let R=t.generateDigest(o,i,a),h=new Set(e.getState().config.shelvedPRUrls||[]),S=o.filter(C=>h.has(C.url)||C.status==="dormant");R.shelvedPRs=S.map(st),R.autoUnshelvedPRs=[],R.summary.totalActivePRs=o.length-S.length,e.setLastDigest(R);try{e.save()}catch(C){console.error("Warning: Failed to save dashboard digest to state:",A(C))}return console.error(`Refreshed: ${o.length} PRs fetched`),{digest:R,commentedIssues:d}}function Bs(r,e){let t={};for(let s of r.openPRs||[])t[s.repo]||(t[s.repo]={active:0,merged:0,closed:0}),t[s.repo].active++;for(let[s,o]of Object.entries(e.repoScores||{}))t[s]||(t[s]={active:0,merged:0,closed:0}),t[s].merged=o.mergedPRCount,t[s].closed=o.closedWithoutMergeCount;return t}function Vs(r,e=10){return Object.entries(r).sort((t,s)=>s[1].merged+s[1].active+s[1].closed-(t[1].merged+t[1].active+t[1].closed)).slice(0,e)}function cs(r){return{monthlyMerged:r.monthlyMergedCounts||{},monthlyClosed:r.monthlyClosedCounts||{},monthlyOpened:r.monthlyOpenedCounts||{}}}var _o=$(()=>{"use strict";re();oe();Ds();ns()});function j(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Dt(r,e){let t=r.summary||{totalActivePRs:0,totalMergedAllTime:0,mergeRate:0,totalNeedingAttention:0};return{activePRs:t.totalActivePRs,shelvedPRs:(r.shelvedPRs||[]).length,mergedPRs:t.totalMergedAllTime,closedPRs:Object.values(e.repoScores||{}).reduce((s,o)=>s+(o.closedWithoutMergeCount||0),0),mergeRate:`${(t.mergeRate??0).toFixed(1)}%`}}var zs=$(()=>{"use strict"});var Ta,Ca=$(()=>{"use strict";Ta=`
95
+ ${p}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n=[],i=[],a=[];for(let l of e)o.isPRShelved(l.url)?Ot.has(l.status)?(o.unshelvePR(l.url),i.push(Ze(l)),a.push(l)):n.push(Ze(l)):l.status==="dormant"?n.push(Ze(l)):a.push(l);let c=r.generateDigest(e,t,s);return c.shelvedPRs=n,c.autoUnshelvedPRs=i,c.summary.totalActivePRs=a.length,o.setLastDigest(c),o.save(),{activePRs:a,shelvedPRs:n,autoUnshelvedPRs:i,digest:c}}function tu(r,e,t,s,o){let n=L(),i=Yt(e,n.getState().config.maxActivePRs,t.length),a=!1,c=s.filter(h=>{let k=n.getIssueDismissedAt(h.url);if(!k)return!0;if(h.status==="new_response"){let E=new Date(h.lastResponseAt).getTime(),w=new Date(k).getTime();if(isNaN(E)||isNaN(w))return T(H,`Invalid timestamp in dismiss check for ${h.url}, including issue`),!0;if(E>w)return T(H,`Auto-undismissing issue ${h.url}: new response at ${h.lastResponseAt} after dismiss at ${k}`),n.undismissIssue(h.url),a=!0,!0}return!1}),l=c.filter(h=>h.status==="new_response"),p=ts(r,i,l),d=new Set(Object.keys(n.getState().config.snoozedPRs??{}).filter(h=>n.isSnoozed(h))),m=e.filter(h=>{let k=n.getIssueDismissedAt(h.url);if(!k)return!0;let E=new Date(h.updatedAt).getTime(),w=new Date(k).getTime();return isNaN(E)||isNaN(w)?(T(H,`Invalid timestamp in PR dismiss check for ${h.url}, including PR`),!0):E>w?(T(H,`Auto-undismissing PR ${h.url}: new activity at ${h.updatedAt} after dismiss at ${k}`),n.undismissIssue(h.url),a=!0,!0):!1});if(a)try{n.save()}catch(h){T(H,`Failed to persist auto-undismissed state: ${A(h)}`)}let _=Xt(m,d);r.summary.totalNeedingAttention=_.length;let y=es(r,_.length,l.length),g=Zt(_,i,c),C=Kt(e);return{digest:r,capacity:i,summary:p,briefSummary:y,actionableIssues:_,actionMenu:g,commentedIssues:c,repoGroups:C,failures:o}}function su(r){return{digest:sa(r.digest),capacity:r.capacity,summary:r.summary,briefSummary:r.briefSummary,actionableIssues:ra(r.actionableIssues),actionMenu:r.actionMenu,commentedIssues:r.commentedIssues,repoGroups:oa(r.repoGroups),failures:r.failures}}async function Fs(r){let e=await ia(r);return su(e)}async function ia(r){let e=new bt(r),{prs:t,failures:s,mergedCounts:o,closedCounts:n,monthlyCounts:i,monthlyClosedCounts:a,openedFromMerged:c,openedFromClosed:l,recentlyClosedPRs:p,recentlyMergedPRs:d,commentedIssues:m}=await Yl(e,r);await Xl(e,t,o,n),Zl(t,i,a,c,l);let{activePRs:_,shelvedPRs:y,digest:g}=eu(e,t,p,d);return tu(g,_,y,m,s)}async function ru(){let r=_e();return Fs(r)}async function ou(){let r=_e();return ia(r)}var H,rs=G(()=>{"use strict";re();ie();ve();Gs();mo();re();H="daily"});var aa={};ne(aa,{runStatus:()=>nu});async function nu(r){let e=L(),t=e.getStats(),s=e.getState(),o=s.lastDigestAt||s.lastRunAt,{totalTracked:n,...i}=t,a={stats:i,lastRunAt:s.lastRunAt};return r.offline&&(a.offline=!0,a.lastUpdated=o),a}var ca=G(()=>{"use strict";re()});var la={};ne(la,{runSearch:()=>iu});async function iu(r){let e=_e(),t=new yt(e),s=await t.searchIssues({maxResults:r.maxResults}),o=L(),{config:n}=o.getState(),i=n.excludeRepos||[],a=n.aiPolicyBlocklist??it.aiPolicyBlocklist??[],c={candidates:s.map(l=>{let p=o.getRepoScore(l.issue.repo);return{issue:{repo:l.issue.repo,number:l.issue.number,title:l.issue.title,url:l.issue.url,labels:l.issue.labels},recommendation:l.recommendation,reasonsToApprove:l.reasonsToApprove,reasonsToSkip:l.reasonsToSkip,searchPriority:l.searchPriority,viabilityScore:l.viabilityScore,repoScore:p?{score:p.score,mergedPRCount:p.mergedPRCount,closedWithoutMergeCount:p.closedWithoutMergeCount,isResponsive:p.signals?.isResponsive??!1,lastMergedAt:p.lastMergedAt}:void 0}}),excludedRepos:i,aiPolicyBlocklist:a};return t.rateLimitWarning&&(c.rateLimitWarning=t.rateLimitWarning),c}var ua=G(()=>{"use strict";re()});function oe(r,e,t){if(e.test(r))return;let s={PR:"https://github.com/owner/repo/pull/123",issue:"https://github.com/owner/repo/issues/123","issue or PR":"https://github.com/owner/repo/issues/123 or https://github.com/owner/repo/pull/123"};throw new W(`Invalid ${t} URL: ${r}. Expected format: ${s[t]}`)}function te(r){if(r.length>pa)throw new W(`URL exceeds maximum length of ${pa} characters`);return r}function _t(r){if(r.length>da)throw new W(`Message exceeds maximum length of ${da} characters`);return r}function Gt(r){if(!r||r.trim().length===0)throw new W("GitHub username cannot be empty.");let e=r.trim();if(e.length>ga)throw new W(`GitHub username must be at most ${ga} characters (got ${e.length}).`);if(!au.test(e))throw new W("GitHub username can only contain alphanumeric characters and hyphens.");if(e.startsWith("-"))throw new W("GitHub username cannot start with a hyphen.");if(e.endsWith("-"))throw new W("GitHub username cannot end with a hyphen.");if(cu.test(e))throw new W("GitHub username cannot contain consecutive hyphens.");return e}var Re,Us,os,pa,da,ga,au,cu,Ge=G(()=>{"use strict";ie();Re=/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\/\d+$/,Us=/^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\/\d+$/,os=/^https:\/\/github\.com\/[^/]+\/[^/]+\/(issues|pull)\/\d+$/,pa=2048,da=1e3;ga=39,au=/^[a-zA-Z0-9-]+$/,cu=/--/});var ma={};ne(ma,{runVet:()=>lu});async function lu(r){te(r.issueUrl),oe(r.issueUrl,Us,"issue");let e=_e(),s=await new yt(e).vetIssue(r.issueUrl);return{issue:{repo:s.issue.repo,number:s.issue.number,title:s.issue.title,url:s.issue.url,labels:s.issue.labels},recommendation:s.recommendation,reasonsToApprove:s.reasonsToApprove,reasonsToSkip:s.reasonsToSkip,projectHealth:s.projectHealth,vettingResult:s.vettingResult}}var ha=G(()=>{"use strict";re();Ge()});var fo={};ne(fo,{runTrack:()=>uu,runUntrack:()=>pu});async function uu(r){te(r.prUrl),oe(r.prUrl,Re,"PR");let e=_e(),t=we(e),s=Te(r.prUrl);if(!s||s.type!=="pull")throw new Error(`Invalid PR URL: ${r.prUrl}`);let{owner:o,repo:n,number:i}=s,{data:a}=await t.pulls.get({owner:o,repo:n,pull_number:i});return{pr:{repo:`${o}/${n}`,number:i,title:a.title,url:r.prUrl}}}async function pu(r){return te(r.prUrl),oe(r.prUrl,Re,"PR"),{removed:!1,url:r.prUrl,message:"In v2, PRs are fetched fresh on each daily run \u2014 there is no local tracking list to remove from."}}var bo=G(()=>{"use strict";re();Ge();Oe()});var fa={};ne(fa,{runRead:()=>du});async function du(r){if(!r.all&&!r.prUrl)throw new Error("PR URL or --all flag required");return r.prUrl&&te(r.prUrl),r.all?{markedAsRead:0,all:!0,message:"In v2, PR read state is not tracked locally."}:{marked:!1,url:r.prUrl,message:"In v2, PR read state is not tracked locally."}}var ba=G(()=>{"use strict";Ge()});var Ms={};ne(Ms,{runClaim:()=>hu,runComments:()=>gu,runPost:()=>mu});async function gu(r){te(r.prUrl),oe(r.prUrl,Re,"PR");let e=_e(),t=L(),s=we(e),o=Te(r.prUrl);if(!o||o.type!=="pull")throw new Error("Invalid PR URL format");let{owner:n,repo:i,number:a}=o,{data:c}=await s.pulls.get({owner:n,repo:i,pull_number:a}),[l,p,d]=await Promise.all([Ue(h=>s.pulls.listReviewComments({owner:n,repo:i,pull_number:a,per_page:100,page:h})),Ue(h=>s.issues.listComments({owner:n,repo:i,issue_number:a,per_page:100,page:h})),Ue(h=>s.pulls.listReviews({owner:n,repo:i,pull_number:a,per_page:100,page:h}))]),m=t.getState().config.githubUsername,_=h=>!(!h.user||h.user.login===m||h.user.type==="Bot"&&!r.showBots),y=l.filter(_).sort((h,k)=>new Date(k.created_at).getTime()-new Date(h.created_at).getTime()),g=p.filter(_).sort((h,k)=>new Date(k.created_at).getTime()-new Date(h.created_at).getTime()),C=d.filter(h=>_(h)&&h.body&&h.body.trim()).sort((h,k)=>new Date(k.submitted_at||0).getTime()-new Date(h.submitted_at||0).getTime());return{pr:{title:c.title,state:c.state,mergeable:c.mergeable,head:c.head.ref,base:c.base.ref,url:c.html_url},reviews:C.map(h=>({user:h.user?.login,state:h.state,body:h.body??null,submittedAt:h.submitted_at??null})),reviewComments:y.map(h=>({user:h.user?.login,body:h.body,path:h.path,createdAt:h.created_at})),issueComments:g.map(h=>({user:h.user?.login,body:h.body,createdAt:h.created_at})),summary:{reviewCount:C.length,inlineCommentCount:y.length,discussionCommentCount:g.length}}}async function mu(r){if(te(r.url),oe(r.url,os,"issue or PR"),!r.message.trim())throw new Error("No message provided");_t(r.message);let e=_e(),t=Te(r.url);if(!t)throw new Error("Invalid GitHub URL format");let{owner:s,repo:o,number:n}=t,i=we(e),{data:a}=await i.issues.createComment({owner:s,repo:o,issue_number:n,body:r.message});return{commentUrl:a.html_url,url:r.url}}async function hu(r){te(r.issueUrl),oe(r.issueUrl,Us,"issue");let e=_e(),t=r.message||"Hi! I'd like to work on this issue. Could you assign it to me?";_t(t);let s=Te(r.issueUrl);if(!s||s.type!=="issues")throw new Error("Invalid issue URL format (must be an issue, not a PR)");let{owner:o,repo:n,number:i}=s,a=we(e),{data:c}=await a.issues.createComment({owner:o,repo:n,issue_number:i,body:t});try{let l=L();l.addIssue({id:i,url:r.issueUrl,repo:`${o}/${n}`,number:i,title:"(claimed)",status:"claimed",labels:[],createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),vetted:!1}),l.save()}catch(l){console.error(`Warning: Comment posted on ${r.issueUrl} but failed to save to local state: ${l instanceof Error?l.message:l}`)}return{commentUrl:c.html_url,issueUrl:r.issueUrl}}var Ls=G(()=>{"use strict";re();Bt();Ge()});var ya={};ne(ya,{runConfig:()=>fu});async function fu(r){let e=L(),t=e.getState().config;if(!r.key)return{config:t};if(!r.value)throw new Error("Value required");let s=r.value;switch(r.key){case"username":e.updateConfig({githubUsername:Gt(s)});break;case"add-language":t.languages.includes(s)||e.updateConfig({languages:[...t.languages,s]});break;case"add-label":t.labels.includes(s)||e.updateConfig({labels:[...t.labels,s]});break;case"exclude-repo":{let o=s.split("/");if(o.length!==2||!o[0]||!o[1])throw new Error(`Invalid repo format "${s}". Use "owner/repo" format. To exclude an entire org, use: config exclude-org ${s}`);let n=s.toLowerCase();t.excludeRepos.some(i=>i.toLowerCase()===n)||(e.updateConfig({excludeRepos:[...t.excludeRepos,s]}),e.cleanupExcludedData([s],[]));break}case"exclude-org":{if(s.includes("/"))throw new Error(`Invalid org name "${s}". Use just the org name (e.g., "facebook"), not "owner/repo" format. To exclude a specific repo, use: config exclude-repo ${s}`);let o=t.excludeOrgs??[];o.some(n=>n.toLowerCase()===s.toLowerCase())||(e.updateConfig({excludeOrgs:[...o,s]}),e.cleanupExcludedData([],[s]));break}default:throw new Error(`Unknown config key: ${r.key}`)}return e.save(),{success:!0,key:r.key,value:s}}var va=G(()=>{"use strict";re();Ge()});var _a={};ne(_a,{runInit:()=>bu});async function bu(r){Gt(r.username);let e=L();return e.updateConfig({githubUsername:r.username}),e.save(),{username:r.username,message:"Username saved. Run `daily` to fetch your open PRs from GitHub."}}var wa=G(()=>{"use strict";re();Ge()});var vo={};ne(vo,{runCheckSetup:()=>vu,runSetup:()=>yu});function yo(r,e){let t=Number(r);if(!Number.isFinite(t)||t<1||!Number.isInteger(t))throw new W(`Invalid value for ${e}: "${r}". Must be a positive integer.`);return t}async function yu(r){let e=L(),t=e.getState().config;if(r.set&&r.set.length>0){let s={},o=[];for(let n of r.set){let[i,...a]=n.split("="),c=a.join("=");switch(i){case"username":Gt(c),e.updateConfig({githubUsername:c}),s[i]=c;break;case"maxActivePRs":{let l=yo(c,"maxActivePRs");e.updateConfig({maxActivePRs:l}),s[i]=String(l);break}case"dormantDays":{let l=yo(c,"dormantDays");e.updateConfig({dormantThresholdDays:l}),s[i]=String(l);break}case"approachingDays":{let l=yo(c,"approachingDays");e.updateConfig({approachingDormantDays:l}),s[i]=String(l);break}case"languages":e.updateConfig({languages:c.split(",").map(l=>l.trim())}),s[i]=c;break;case"labels":e.updateConfig({labels:c.split(",").map(l=>l.trim())}),s[i]=c;break;case"showHealthCheck":e.updateConfig({showHealthCheck:c!=="false"}),s[i]=c!=="false"?"true":"false";break;case"squashByDefault":c==="ask"?(e.updateConfig({squashByDefault:"ask"}),s[i]="ask"):(e.updateConfig({squashByDefault:c!=="false"}),s[i]=c!=="false"?"true":"false");break;case"minStars":{let l=Number(c);if(!Number.isFinite(l)||!Number.isInteger(l)||l<0)throw new W(`Invalid value for minStars: "${c}". Must be a non-negative integer.`);e.updateConfig({minStars:l}),s[i]=String(l);break}case"includeDocIssues":e.updateConfig({includeDocIssues:c==="true"}),s[i]=c==="true"?"true":"false";break;case"aiPolicyBlocklist":{let l=c.split(",").map(m=>m.trim()).filter(Boolean),p=[],d=[];for(let m of l){let _=m.replace(/\s+/g,"");/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/.test(_)?p.push(_):d.push(m)}if(d.length>0&&(o.push(`Warning: Skipping invalid entries (expected "owner/repo" format): ${d.join(", ")}`),s.aiPolicyBlocklist_invalidEntries=d.join(", ")),p.length===0&&l.length>0){o.push("Warning: All entries were invalid. Blocklist not updated."),s[i]="(all entries invalid)";break}e.updateConfig({aiPolicyBlocklist:p}),s[i]=p.length>0?p.join(", "):"(empty)";break}case"complete":c==="true"&&(e.markSetupComplete(),s[i]="true");break;default:o.push(`Unknown setting: ${i}`)}}return e.save(),{success:!0,settings:s,warnings:o.length>0?o:void 0}}return t.setupComplete&&!r.reset?{setupComplete:!0,config:{githubUsername:t.githubUsername,maxActivePRs:t.maxActivePRs,dormantThresholdDays:t.dormantThresholdDays,approachingDormantDays:t.approachingDormantDays,languages:t.languages,labels:t.labels}}:{setupRequired:!0,prompts:[{setting:"username",prompt:"What is your GitHub username?",current:t.githubUsername||null,required:!0,type:"string"},{setting:"maxActivePRs",prompt:"How many PRs do you want to work on at once?",current:t.maxActivePRs,default:10,type:"number"},{setting:"dormantDays",prompt:"After how many days of inactivity should a PR be considered dormant?",current:t.dormantThresholdDays,default:30,type:"number"},{setting:"approachingDays",prompt:"At how many days should we warn about approaching dormancy?",current:t.approachingDormantDays,default:25,type:"number"},{setting:"languages",prompt:"What programming languages do you want to contribute to?",current:t.languages,default:["typescript","javascript"],type:"list"},{setting:"labels",prompt:"What issue labels should we search for?",current:t.labels,default:["good first issue","help wanted"],type:"list"},{setting:"aiPolicyBlocklist",prompt:"Repos with anti-AI contribution policies to block (owner/repo, comma-separated)?",current:t.aiPolicyBlocklist??it.aiPolicyBlocklist??null,default:["matplotlib/matplotlib"],type:"list"}]}}async function vu(){let r=L();return{setupComplete:r.isSetupComplete(),username:r.getState().config.githubUsername}}var _o=G(()=>{"use strict";re();ie();Ge()});function ns(r,e){let t=r.summary||{totalActivePRs:0,totalMergedAllTime:0,mergeRate:0,totalNeedingAttention:0};return{activePRs:t.totalActivePRs,shelvedPRs:(r.shelvedPRs||[]).length,mergedPRs:t.totalMergedAllTime,closedPRs:Object.values(e.repoScores||{}).reduce((s,o)=>s+(o.closedWithoutMergeCount||0),0),mergeRate:`${(t.mergeRate??0).toFixed(1)}%`}}function js(r){let e=fe(r);if(e===401||e===429)return!0;if(e===403){let t=A(r).toLowerCase();return t.includes("rate limit")||t.includes("abuse detection")}return!1}async function wo(r){let e=L(),t=new bt(r),s=new vt(r),[{prs:o,failures:n},i,a,c,l,p]=await Promise.all([t.fetchUserOpenPRs(),t.fetchRecentlyClosedPRs().catch(E=>{if(js(E))throw E;return console.error(`Warning: Failed to fetch recently closed PRs: ${A(E)}`),[]}),t.fetchRecentlyMergedPRs().catch(E=>{if(js(E))throw E;return console.error(`Warning: Failed to fetch recently merged PRs: ${A(E)}`),[]}),t.fetchUserMergedPRCounts().catch(E=>{if(js(E))throw E;return console.error(`Warning: Failed to fetch merged PR counts: ${A(E)}`),ft()}),t.fetchUserClosedPRCounts().catch(E=>{if(js(E))throw E;return console.error(`Warning: Failed to fetch closed PR counts: ${A(E)}`),ft()}),s.fetchCommentedIssues().catch(E=>{let w=A(E);return w.includes("No GitHub username configured")?console.error(`[DASHBOARD] Issue conversation tracking requires setup: ${w}`):console.error(`[DASHBOARD] Issue conversation fetch failed: ${w}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${w}`}]}})]),d=p.issues;p.failures.length>0&&console.error(`[DASHBOARD] ${p.failures.length} issue conversation check(s) failed`),n.length>0&&console.error(`Warning: ${n.length} PR fetch(es) failed`);let{monthlyCounts:m,monthlyOpenedCounts:_}=c,{monthlyCounts:y,monthlyOpenedCounts:g}=l;try{Object.keys(m).length>0&&e.setMonthlyMergedCounts(m)}catch(E){console.error("[DASHBOARD] Failed to store monthly merged counts:",A(E))}try{Object.keys(y).length>0&&e.setMonthlyClosedCounts(y)}catch(E){console.error("[DASHBOARD] Failed to store monthly closed counts:",A(E))}try{let E={..._};for(let[w,x]of Object.entries(g))E[w]=(E[w]||0)+x;for(let w of o)if(w.createdAt){let x=w.createdAt.slice(0,7);E[x]=(E[x]||0)+1}Object.keys(E).length>0&&e.setMonthlyOpenedCounts(E)}catch(E){console.error("[DASHBOARD] Failed to store monthly opened counts:",A(E))}let C=t.generateDigest(o,i,a),h=new Set(e.getState().config.shelvedPRUrls||[]),k=o.filter(E=>h.has(E.url)||E.status==="dormant");C.shelvedPRs=k.map(Ze),C.autoUnshelvedPRs=[],C.summary.totalActivePRs=o.length-k.length,e.setLastDigest(C);try{e.save()}catch(E){console.error("Warning: Failed to save dashboard digest to state:",A(E))}return console.error(`Refreshed: ${o.length} PRs fetched`),{digest:C,commentedIssues:d}}function Ra(r,e){let t={};for(let s of r.openPRs||[])t[s.repo]||(t[s.repo]={active:0,merged:0,closed:0}),t[s.repo].active++;for(let[s,o]of Object.entries(e.repoScores||{}))t[s]||(t[s]={active:0,merged:0,closed:0}),t[s].merged=o.mergedPRCount,t[s].closed=o.closedWithoutMergeCount;return t}function Ea(r,e=10){return Object.entries(r).sort((t,s)=>s[1].merged+s[1].active+s[1].closed-(t[1].merged+t[1].active+t[1].closed)).slice(0,e)}function Ns(r){return{monthlyMerged:r.monthlyMergedCounts||{},monthlyClosed:r.monthlyClosedCounts||{},monthlyOpened:r.monthlyOpenedCounts||{}}}var Hs=G(()=>{"use strict";re();ie();Gs();rs()});function j(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}var qs=G(()=>{"use strict"});var Ta,Ca=G(()=>{"use strict";Ta=`
96
96
  :root, [data-theme="dark"] {
97
97
  --bg-base: #080b10;
98
98
  --bg-surface: rgba(22, 27, 34, 0.65);
@@ -852,7 +852,7 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
852
852
  .health-item[data-hidden="true"] {
853
853
  display: none;
854
854
  }
855
- `});function Et(r,e=50){let t=r.length<=e?r:r.slice(0,e)+"...";return j(t)}function Se(r,e,t,s,o){return r.map(n=>{let i=typeof s=="string"?s:s(n),a=j(i);return`
855
+ `});function wt(r,e=50){let t=r.length<=e?r:r.slice(0,e)+"...";return j(t)}function Pe(r,e,t,s,o){return r.map(n=>{let i=typeof s=="string"?s:s(n),a=j(i);return`
856
856
  <div class="health-item ${e}" data-status="${e}" data-repo="${j(n.repo)}" data-title="${j(n.title.toLowerCase())}">
857
857
  <div class="health-icon">
858
858
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
@@ -863,7 +863,7 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
863
863
  <div class="health-title"><a href="${j(n.url)}" target="_blank">${j(n.repo)}#${n.number}</a> - ${a}</div>
864
864
  <div class="health-meta">${o(n)}</div>
865
865
  </div>
866
- </div>`}).join("")}function Ve(r){return Et(r.title)}var ae,Sa=$(()=>{"use strict";zs();ae={comment:'<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>',edit:'<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/>',xCircle:'<circle cx="12" cy="12" r="10"/><line x1="15" y1="9" x2="9" y2="15"/><line x1="9" y1="9" x2="15" y2="15"/>',conflict:'<path d="M8 3v3a2 2 0 0 1-2 2H3"/><path d="M21 8h-3a2 2 0 0 1-2-2V3"/><path d="M3 16h3a2 2 0 0 1 2 2v3"/><path d="M16 21v-3a2 2 0 0 1 2-2h3"/>',checklist:'<path d="M9 11l3 3L22 4"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/>',file:'<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="12" y1="18" x2="12" y2="12"/><line x1="9" y1="15" x2="15" y2="15"/>',checkCircle:'<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/>',clock:'<circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/>',lock:'<rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/>',infoCircle:'<circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/>',refresh:'<polyline points="1 4 1 10 7 10"/><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"/>',box:'<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/>',bell:'<path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.73 21a2 2 0 0 1-3.46 0"/>',gitMerge:'<circle cx="7" cy="18" r="3"/><circle cx="7" cy="6" r="3"/><circle cx="17" cy="12" r="3"/><line x1="7" y1="9" x2="7" y2="15"/><path d="M7 9c0 4 10 3 10 3"/>'}});function Pa(r,e,t,s,o,n){let i=`
866
+ </div>`}).join("")}function Be(r){return wt(r.title)}var ae,Pa=G(()=>{"use strict";qs();ae={comment:'<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>',edit:'<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/>',xCircle:'<circle cx="12" cy="12" r="10"/><line x1="15" y1="9" x2="9" y2="15"/><line x1="9" y1="9" x2="15" y2="15"/>',conflict:'<path d="M8 3v3a2 2 0 0 1-2 2H3"/><path d="M21 8h-3a2 2 0 0 1-2-2V3"/><path d="M3 16h3a2 2 0 0 1 2 2v3"/><path d="M16 21v-3a2 2 0 0 1 2-2h3"/>',checklist:'<path d="M9 11l3 3L22 4"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/>',file:'<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="12" y1="18" x2="12" y2="12"/><line x1="9" y1="15" x2="15" y2="15"/>',checkCircle:'<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/>',clock:'<circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/>',lock:'<rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/>',infoCircle:'<circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/>',refresh:'<polyline points="1 4 1 10 7 10"/><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"/>',box:'<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/>',bell:'<path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.73 21a2 2 0 0 1-3.46 0"/>',gitMerge:'<circle cx="7" cy="18" r="3"/><circle cx="7" cy="6" r="3"/><circle cx="17" cy="12" r="3"/><line x1="7" y1="9" x2="7" y2="15"/><path d="M7 9c0 4 10 3 10 3"/>'}});function Sa(r,e,t,s,o,n){let i=`
867
867
  Chart.defaults.color = '#6e7681';
868
868
  Chart.defaults.borderColor = 'rgba(48, 54, 61, 0.4)';
869
869
  Chart.defaults.font.family = "'Geist', sans-serif";
@@ -893,15 +893,15 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
893
893
  }
894
894
  }
895
895
  }
896
- });`,a=(()=>{let{excludeRepos:l=[],excludeOrgs:u,minStars:d}=n.config,m=d??50,w=O=>{let F=O.toLowerCase();if(l.some(W=>W.toLowerCase()===F)||u?.some(W=>W.toLowerCase()===F.split("/")[0]))return!0;let Z=(n.repoScores||{})[O];return Z?.stargazersCount!==void 0&&Z.stargazersCount<m},y=Object.entries((()=>{let O={};for(let F of o.openPRs||[])w(F.repo)||(O[F.repo]||(O[F.repo]={active:0,merged:0,closed:0}),O[F.repo].active++);for(let[F,Z]of Object.entries(n.repoScores||{}))w(F)||(O[F]||(O[F]={active:0,merged:0,closed:0}),O[F].merged=Z.mergedPRCount,O[F].closed=Z.closedWithoutMergeCount);return O})()).sort((O,F)=>{let Z=O[1].merged+O[1].active+O[1].closed;return F[1].merged+F[1].active+F[1].closed-Z}),g=y.slice(0,10),R=y.slice(10),h=y.reduce((O,[,F])=>O+F.merged+F.active+F.closed,0);if(R.length>0){let O=R.reduce((F,[,Z])=>({active:F.active+Z.active,merged:F.merged+Z.merged,closed:F.closed+Z.closed}),{active:0,merged:0,closed:0});g.push(["Other",O])}let S=g.map(([O])=>O==="Other"?"Other":O.split("/")[1]||O),C=g.map(([,O])=>O.merged),_=g.map(([,O])=>O.active),G=g.map(([,O])=>O.closed);return`
896
+ });`,a=(()=>{let{excludeRepos:l=[],excludeOrgs:p,minStars:d}=n.config,m=d??50,_=O=>{let F=O.toLowerCase();if(l.some(z=>z.toLowerCase()===F)||p?.some(z=>z.toLowerCase()===F.split("/")[0]))return!0;let Y=(n.repoScores||{})[O];return Y?.stargazersCount!==void 0&&Y.stargazersCount<m},y=Object.entries((()=>{let O={};for(let F of o.openPRs||[])_(F.repo)||(O[F.repo]||(O[F.repo]={active:0,merged:0,closed:0}),O[F.repo].active++);for(let[F,Y]of Object.entries(n.repoScores||{}))_(F)||(O[F]||(O[F]={active:0,merged:0,closed:0}),O[F].merged=Y.mergedPRCount,O[F].closed=Y.closedWithoutMergeCount);return O})()).sort((O,F)=>{let Y=O[1].merged+O[1].active+O[1].closed;return F[1].merged+F[1].active+F[1].closed-Y}),g=y.slice(0,10),C=y.slice(10),h=y.reduce((O,[,F])=>O+F.merged+F.active+F.closed,0);if(C.length>0){let O=C.reduce((F,[,Y])=>({active:F.active+Y.active,merged:F.merged+Y.merged,closed:F.closed+Y.closed}),{active:0,merged:0,closed:0});g.push(["Other",O])}let k=g.map(([O])=>O==="Other"?"Other":O.split("/")[1]||O),E=g.map(([,O])=>O.merged),w=g.map(([,O])=>O.active),x=g.map(([,O])=>O.closed);return`
897
897
  new Chart(document.getElementById('reposChart'), {
898
898
  type: 'bar',
899
899
  data: {
900
- labels: ${JSON.stringify(S)},
900
+ labels: ${JSON.stringify(k)},
901
901
  datasets: [
902
- { label: 'Merged', data: ${JSON.stringify(C)}, backgroundColor: '#a855f7', borderRadius: 3 },
903
- { label: 'Active', data: ${JSON.stringify(_)}, backgroundColor: '#3fb950', borderRadius: 3 },
904
- { label: 'Closed', data: ${JSON.stringify(G)}, backgroundColor: '#484f58', borderRadius: 3 }
902
+ { label: 'Merged', data: ${JSON.stringify(E)}, backgroundColor: '#a855f7', borderRadius: 3 },
903
+ { label: 'Active', data: ${JSON.stringify(w)}, backgroundColor: '#3fb950', borderRadius: 3 },
904
+ { label: 'Closed', data: ${JSON.stringify(x)}, backgroundColor: '#484f58', borderRadius: 3 }
905
905
  ]
906
906
  },
907
907
  options: {
@@ -917,7 +917,7 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
917
917
  callbacks: {
918
918
  afterBody: function(context) {
919
919
  const idx = context[0].dataIndex;
920
- const total = ${JSON.stringify(C)}[idx] + ${JSON.stringify(_)}[idx] + ${JSON.stringify(G)}[idx];
920
+ const total = ${JSON.stringify(E)}[idx] + ${JSON.stringify(w)}[idx] + ${JSON.stringify(x)}[idx];
921
921
  const pct = ${h} > 0 ? ((total / ${h}) * 100).toFixed(1) : '0.0';
922
922
  return pct + '% of all PRs';
923
923
  }
@@ -925,8 +925,8 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
925
925
  }
926
926
  }
927
927
  }
928
- });`})(),c=(()=>{let l=new Date,u=[];for(let d=5;d>=0;d--){let m=new Date(l.getFullYear(),l.getMonth()-d,1);u.push(`${m.getFullYear()}-${String(m.getMonth()+1).padStart(2,"0")}`)}return`
929
- const timelineMonths = ${JSON.stringify(u)};
928
+ });`})(),c=(()=>{let l=new Date,p=[];for(let d=5;d>=0;d--){let m=new Date(l.getFullYear(),l.getMonth()-d,1);p.push(`${m.getFullYear()}-${String(m.getMonth()+1).padStart(2,"0")}`)}return`
929
+ const timelineMonths = ${JSON.stringify(p)};
930
930
  const openedData = ${JSON.stringify(s)};
931
931
  const mergedData = ${JSON.stringify(e)};
932
932
  const closedData = ${JSON.stringify(t)};
@@ -967,9 +967,9 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
967
967
  },
968
968
  interaction: { intersect: false, mode: 'index' }
969
969
  }
970
- });`})();return wu+i+`
970
+ });`})();return _u+i+`
971
971
  `+a+`
972
- `+c}var wu,ka=$(()=>{"use strict";wu=`
972
+ `+c}var _u,ka=G(()=>{"use strict";_u=`
973
973
  // === Theme Toggle ===
974
974
  (function() {
975
975
  var html = document.documentElement;
@@ -1061,7 +1061,7 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
1061
1061
  statusFilter.addEventListener('change', applyFilters);
1062
1062
  repoFilter.addEventListener('change', applyFilters);
1063
1063
  })();
1064
- `});function wo(r,e,t,s,o,n,i=[]){let a=n.config?.approachingDormantDays??25,c=o.shelvedPRs||[],l=o.autoUnshelvedPRs||[],u=o.recentlyMergedPRs||[],d=new Set(c.map(g=>g.url)),m=(o.openPRs||[]).filter(g=>!d.has(g.url)),w=[...o.prsNeedingResponse||[],...o.needsChangesPRs||[],...o.ciFailingPRs||[],...o.mergeConflictPRs||[],...o.incompleteChecklistPRs||[],...o.missingRequiredFilesPRs||[],...o.needsRebasePRs||[]],y=[...o.changesAddressedPRs||[],...o.waitingOnMaintainerPRs||[],...o.ciBlockedPRs||[],...o.ciNotRunningPRs||[]];return`<!DOCTYPE html>
1064
+ `});function Aa(r,e,t,s,o,n,i=[]){let a=n.config?.approachingDormantDays??25,c=o.shelvedPRs||[],l=o.autoUnshelvedPRs||[],p=o.recentlyMergedPRs||[],d=new Set(c.map(g=>g.url)),m=(o.openPRs||[]).filter(g=>!d.has(g.url)),_=[...o.prsNeedingResponse||[],...o.needsChangesPRs||[],...o.ciFailingPRs||[],...o.mergeConflictPRs||[],...o.incompleteChecklistPRs||[],...o.missingRequiredFilesPRs||[],...o.needsRebasePRs||[]],y=[...o.changesAddressedPRs||[],...o.waitingOnMaintainerPRs||[],...o.ciBlockedPRs||[],...o.ciNotRunningPRs||[]];return`<!DOCTYPE html>
1065
1065
  <html lang="en">
1066
1066
  <head>
1067
1067
  <meta charset="UTF-8">
@@ -1160,13 +1160,13 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
1160
1160
  </select>
1161
1161
  <select class="filter-select" id="repoFilter">
1162
1162
  <option value="all">All Repositories</option>
1163
- ${(()=>{let g=new Set;for(let R of m)g.add(R.repo);for(let R of c)g.add(R.repo);for(let R of w)g.add(R.repo);for(let R of y)g.add(R.repo);for(let R of u)g.add(R.repo);for(let R of o.recentlyClosedPRs||[])g.add(R.repo);for(let R of l)g.add(R.repo);return Array.from(g).sort().map(R=>`<option value="${j(R)}">${j(R)}</option>`).join(`
1163
+ ${(()=>{let g=new Set;for(let C of m)g.add(C.repo);for(let C of c)g.add(C.repo);for(let C of _)g.add(C.repo);for(let C of y)g.add(C.repo);for(let C of p)g.add(C.repo);for(let C of o.recentlyClosedPRs||[])g.add(C.repo);for(let C of l)g.add(C.repo);return Array.from(g).sort().map(C=>`<option value="${j(C)}">${j(C)}</option>`).join(`
1164
1164
  `)})()}
1165
1165
  </select>
1166
1166
  <span class="filter-count" id="filterCount"></span>
1167
1167
  </div>
1168
1168
 
1169
- ${w.length>0?`
1169
+ ${_.length>0?`
1170
1170
  <section class="health-section">
1171
1171
  <div class="health-header">
1172
1172
  <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--accent-warning)" stroke-width="2">
@@ -1175,16 +1175,16 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
1175
1175
  <line x1="12" y1="17" x2="12.01" y2="17"/>
1176
1176
  </svg>
1177
1177
  <h2>Action Required</h2>
1178
- <span class="health-badge">${w.length} issue${w.length!==1?"s":""}</span>
1178
+ <span class="health-badge">${_.length} issue${_.length!==1?"s":""}</span>
1179
1179
  </div>
1180
1180
  <div class="health-items">
1181
- ${Se(o.prsNeedingResponse||[],"needs-response",ae.comment,"Needs Response",g=>g.lastMaintainerComment?`@${j(g.lastMaintainerComment.author)}: ${Et(g.lastMaintainerComment.body,40)}`:Et(g.title))}
1182
- ${Se(o.needsChangesPRs||[],"needs-changes",ae.edit,"Needs Changes",Ve)}
1183
- ${Se(o.ciFailingPRs||[],"ci-failing",ae.xCircle,"CI Failing",Ve)}
1184
- ${Se(o.mergeConflictPRs||[],"conflict",ae.conflict,"Merge Conflict",Ve)}
1185
- ${Se(o.incompleteChecklistPRs||[],"incomplete-checklist",ae.checklist,g=>`Incomplete Checklist${g.checklistStats?` (${g.checklistStats.checked}/${g.checklistStats.total})`:""}`,Ve)}
1186
- ${Se(o.missingRequiredFilesPRs||[],"missing-files",ae.file,"Missing Required Files",g=>g.missingRequiredFiles?j(g.missingRequiredFiles.join(", ")):Et(g.title))}
1187
- ${Se(o.needsRebasePRs||[],"needs-rebase",ae.refresh,g=>`Needs Rebase${g.commitsBehindUpstream?` (${g.commitsBehindUpstream} behind)`:""}`,Ve)}
1181
+ ${Pe(o.prsNeedingResponse||[],"needs-response",ae.comment,"Needs Response",g=>g.lastMaintainerComment?`@${j(g.lastMaintainerComment.author)}: ${wt(g.lastMaintainerComment.body,40)}`:wt(g.title))}
1182
+ ${Pe(o.needsChangesPRs||[],"needs-changes",ae.edit,"Needs Changes",Be)}
1183
+ ${Pe(o.ciFailingPRs||[],"ci-failing",ae.xCircle,"CI Failing",Be)}
1184
+ ${Pe(o.mergeConflictPRs||[],"conflict",ae.conflict,"Merge Conflict",Be)}
1185
+ ${Pe(o.incompleteChecklistPRs||[],"incomplete-checklist",ae.checklist,g=>`Incomplete Checklist${g.checklistStats?` (${g.checklistStats.checked}/${g.checklistStats.total})`:""}`,Be)}
1186
+ ${Pe(o.missingRequiredFilesPRs||[],"missing-files",ae.file,"Missing Required Files",g=>g.missingRequiredFiles?j(g.missingRequiredFiles.join(", ")):wt(g.title))}
1187
+ ${Pe(o.needsRebasePRs||[],"needs-rebase",ae.refresh,g=>`Needs Rebase${g.commitsBehindUpstream?` (${g.commitsBehindUpstream} behind)`:""}`,Be)}
1188
1188
  </div>
1189
1189
  </section>
1190
1190
  `:""}
@@ -1200,15 +1200,15 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
1200
1200
  <span class="health-badge" style="background: var(--accent-info-dim); color: var(--accent-info);">${y.length} PR${y.length!==1?"s":""}</span>
1201
1201
  </div>
1202
1202
  <div class="health-items">
1203
- ${Se(o.changesAddressedPRs||[],"changes-addressed",ae.checkCircle,"Changes Addressed",g=>`Awaiting re-review${g.lastMaintainerComment?` from @${j(g.lastMaintainerComment.author)}`:""}`)}
1204
- ${Se(o.waitingOnMaintainerPRs||[],"waiting-maintainer",ae.clock,"Waiting on Maintainer",Ve)}
1205
- ${Se(o.ciBlockedPRs||[],"ci-blocked",ae.lock,"CI Blocked",Ve)}
1206
- ${Se(o.ciNotRunningPRs||[],"ci-not-running",ae.infoCircle,"CI Not Running",Ve)}
1203
+ ${Pe(o.changesAddressedPRs||[],"changes-addressed",ae.checkCircle,"Changes Addressed",g=>`Awaiting re-review${g.lastMaintainerComment?` from @${j(g.lastMaintainerComment.author)}`:""}`)}
1204
+ ${Pe(o.waitingOnMaintainerPRs||[],"waiting-maintainer",ae.clock,"Waiting on Maintainer",Be)}
1205
+ ${Pe(o.ciBlockedPRs||[],"ci-blocked",ae.lock,"CI Blocked",Be)}
1206
+ ${Pe(o.ciNotRunningPRs||[],"ci-not-running",ae.infoCircle,"CI Not Running",Be)}
1207
1207
  </div>
1208
1208
  </section>
1209
1209
  `:""}
1210
1210
 
1211
- ${w.length===0&&y.length===0?`
1211
+ ${_.length===0&&y.length===0?`
1212
1212
  <section class="health-section">
1213
1213
  <div class="health-header">
1214
1214
  <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--accent-open)" stroke-width="2">
@@ -1223,17 +1223,17 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
1223
1223
  </section>
1224
1224
  `:""}
1225
1225
 
1226
- ${u.length>0?`
1226
+ ${p.length>0?`
1227
1227
  <section class="health-section" style="animation-delay: 0.15s;">
1228
1228
  <div class="health-header">
1229
1229
  <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--accent-merged)" stroke-width="2">
1230
1230
  ${ae.gitMerge}
1231
1231
  </svg>
1232
1232
  <h2>Recently Merged</h2>
1233
- <span class="health-badge" style="background: var(--accent-merged-dim); color: var(--accent-merged);">${u.length} merged</span>
1233
+ <span class="health-badge" style="background: var(--accent-merged-dim); color: var(--accent-merged);">${p.length} merged</span>
1234
1234
  </div>
1235
1235
  <div class="health-items">
1236
- ${u.map(g=>`
1236
+ ${p.map(g=>`
1237
1237
  <div class="health-item" style="border-left-color: var(--accent-merged);" data-status="merged" data-repo="${j(g.repo)}" data-title="${j(g.title.toLowerCase())}">
1238
1238
  <div class="health-icon" style="background: var(--accent-merged-dim); color: var(--accent-merged);">
1239
1239
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
@@ -1242,7 +1242,7 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
1242
1242
  </div>
1243
1243
  <div class="health-content">
1244
1244
  <div class="health-title"><a href="${j(g.url)}" target="_blank">${j(g.repo)}#${g.number}</a> - Merged</div>
1245
- <div class="health-meta">${Et(g.title)}${g.mergedAt?` \xB7 ${new Date(g.mergedAt).toLocaleDateString()}`:""}</div>
1245
+ <div class="health-meta">${wt(g.title)}${g.mergedAt?` \xB7 ${new Date(g.mergedAt).toLocaleDateString()}`:""}</div>
1246
1246
  </div>
1247
1247
  </div>
1248
1248
  `).join("")}
@@ -1273,7 +1273,7 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
1273
1273
  </div>
1274
1274
  <div class="health-content">
1275
1275
  <div class="health-title"><a href="${j(g.url)}" target="_blank">${j(g.repo)}#${g.number}</a> - Closed</div>
1276
- <div class="health-meta">${Et(g.title)}${g.closedAt?` \xB7 ${new Date(g.closedAt).toLocaleDateString()}`:""}</div>
1276
+ <div class="health-meta">${wt(g.title)}${g.closedAt?` \xB7 ${new Date(g.closedAt).toLocaleDateString()}`:""}</div>
1277
1277
  </div>
1278
1278
  </div>
1279
1279
  `).join("")}
@@ -1291,7 +1291,7 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
1291
1291
  <span class="health-badge" style="background: var(--accent-info-dim); color: var(--accent-info);">${l.length} unshelved</span>
1292
1292
  </div>
1293
1293
  <div class="health-items">
1294
- ${Se(l,"auto-unshelved",ae.bell,g=>"Auto-Unshelved ("+g.status.replace(/_/g," ")+")",Ve)}
1294
+ ${Pe(l,"auto-unshelved",ae.bell,g=>"Auto-Unshelved ("+g.status.replace(/_/g," ")+")",Be)}
1295
1295
  </div>
1296
1296
  </section>
1297
1297
  `:""}
@@ -1366,10 +1366,10 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
1366
1366
  <span class="pr-count">${m.length} open</span>
1367
1367
  </div>
1368
1368
  <div class="pr-list">
1369
- ${m.map(g=>{let R=g.ciStatus==="failing"||g.hasMergeConflict||g.hasUnrespondedComment&&g.status!=="changes_addressed"||g.status==="needs_changes",h=g.daysSinceActivity>=a,S=R?"has-issues":h?"stale":"",C=g.ciStatus==="failing"?"ci-failing":g.hasMergeConflict?"conflict":g.hasUnrespondedComment&&g.status!=="changes_addressed"&&g.status!=="failing_ci"?"needs-response":g.status==="needs_changes"?"needs-changes":g.status==="changes_addressed"?"changes-addressed":"active";return`
1370
- <div class="pr-item ${S}" data-status="${C}" data-repo="${j(g.repo)}" data-title="${j(g.title.toLowerCase())}">
1369
+ ${m.map(g=>{let C=g.ciStatus==="failing"||g.hasMergeConflict||g.hasUnrespondedComment&&g.status!=="changes_addressed"||g.status==="needs_changes",h=g.daysSinceActivity>=a,k=C?"has-issues":h?"stale":"",E=g.ciStatus==="failing"?"ci-failing":g.hasMergeConflict?"conflict":g.hasUnrespondedComment&&g.status!=="changes_addressed"&&g.status!=="failing_ci"?"needs-response":g.status==="needs_changes"?"needs-changes":g.status==="changes_addressed"?"changes-addressed":"active";return`
1370
+ <div class="pr-item ${k}" data-status="${E}" data-repo="${j(g.repo)}" data-title="${j(g.title.toLowerCase())}">
1371
1371
  <div class="pr-status-indicator">
1372
- ${R?`
1372
+ ${C?`
1373
1373
  <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
1374
1374
  <circle cx="12" cy="12" r="10"/>
1375
1375
  <line x1="12" y1="8" x2="12" y2="12"/>
@@ -1461,71 +1461,69 @@ ${u}`),o.save()}}catch(l){T(H,`Failed to expire/persist snoozes: ${A(l)}`)}let n
1461
1461
  </div>
1462
1462
 
1463
1463
  <script>
1464
- ${Pa(r,e,t,s,o,n)}
1464
+ ${Sa(r,e,t,s,o,n)}
1465
1465
  </script>
1466
1466
  </body>
1467
- </html>`}var Ro=$(()=>{"use strict";zs();Ca();Sa();ka();zs()});var $a={};ie($a,{findRunningDashboardServer:()=>To,getDashboardPidPath:()=>Qs,isDashboardServerRunning:()=>Xs,readDashboardServerInfo:()=>Ys,removeDashboardServerInfo:()=>Js,startDashboardServer:()=>Cu,writeDashboardServerInfo:()=>Oa});function Qs(){return Le.join(De(),"dashboard-server.pid")}function Oa(r){rt.writeFileSync(Qs(),JSON.stringify(r),{mode:384})}function Ys(){try{let r=rt.readFileSync(Qs(),"utf-8"),e=JSON.parse(r);return typeof e!="object"||e===null||typeof e.pid!="number"||typeof e.port!="number"||typeof e.startedAt!="string"?(console.error("[DASHBOARD] PID file has invalid structure, ignoring"),null):e}catch(r){return r.code!=="ENOENT"&&console.error(`[DASHBOARD] Failed to read PID file: ${r.message}`),null}}function Js(){try{rt.unlinkSync(Qs())}catch(r){r.code!=="ENOENT"&&console.error(`[DASHBOARD] Failed to remove PID file: ${r.message}`)}}function Xs(r){return new Promise(e=>{let t=Ks.get(`http://127.0.0.1:${r}/api/data`,{timeout:2e3},s=>{s.resume(),e(s.statusCode===200)});t.on("error",()=>e(!1)),t.on("timeout",()=>{t.destroy(),e(!1)})})}async function To(){let r=Ys();if(!r)return null;try{process.kill(r.pid,0)}catch(e){let t=e.code;return t!=="ESRCH"&&t!=="EPERM"&&console.error(`[DASHBOARD] Unexpected error checking PID ${r.pid}: ${e.message}`),Js(),null}return await Xs(r.port)?{port:r.port,url:`http://localhost:${r.port}`}:(Js(),null)}function Eo(r,e,t){let s=Bs(r,e),o=Vs(s),{monthlyMerged:n,monthlyOpened:i,monthlyClosed:a}=cs(e),c=Dt(r,e),l=t.filter(u=>u.status==="new_response");return{stats:c,prsByRepo:s,topRepos:o.map(([u,d])=>({repo:u,...d})),monthlyMerged:n,monthlyOpened:i,monthlyClosed:a,activePRs:r.openPRs||[],shelvedPRUrls:e.config.shelvedPRUrls||[],commentedIssues:t,issueResponses:l}}function Tu(r,e=Ru){return new Promise((t,s)=>{let o=[],n=0,i=!1;r.on("data",a=>{if(!i){if(n+=a.length,n>e){i=!0,r.destroy(),s(new Error("Body too large"));return}o.push(a)}}),r.on("end",()=>{i||t(Buffer.concat(o).toString("utf-8"))}),r.on("error",a=>{i||s(a)})})}function Ws(r,e,t){let s=JSON.stringify(t);r.writeHead(e,{"Content-Type":"application/json","Content-Length":Buffer.byteLength(s)}),r.end(s)}function ce(r,e,t){Ws(r,e,{error:t})}async function Cu(r){let{port:e,assetsDir:t,token:s,open:o}=r,n=U(),i=Le.resolve(t),a,c=[];if(s)try{console.error("Fetching dashboard data from GitHub...");let S=await as(s);a=S.digest,c=S.commentedIssues}catch(S){console.error("Failed to fetch data from GitHub:",S),console.error("Falling back to cached data..."),a=n.getState().lastDigest}else a=n.getState().lastDigest;a||(console.error("No dashboard data available. Run the daily check first:"),console.error(" GITHUB_TOKEN=$(gh auth token) npm start -- daily"),process.exit(1));let l;try{l=Eo(a,n.getState(),c)}catch(S){console.error("Failed to build dashboard data from cached digest:",S),console.error("Your state data may be corrupted. Try running: daily --json"),process.exit(1)}let u=Ks.createServer(async(S,C)=>{let _=S.method||"GET",G=S.url||"/";try{if(G==="/api/data"&&_==="GET"){Ws(C,200,l);return}if(G==="/api/action"&&_==="POST"){await d(S,C);return}if(G==="/api/refresh"&&_==="POST"){await m(S,C);return}if(_==="GET"){w(G,C);return}ce(C,405,"Method not allowed")}catch(O){console.error("Unhandled request error:",_,G,O),C.headersSent||ce(C,500,"Internal server error")}});async function d(S,C){let _;try{let G=await Tu(S);_=JSON.parse(G)}catch(G){let O=G instanceof Error&&G.message==="Body too large";ce(C,O?413:400,O?"Request body too large":"Invalid JSON body");return}if(!_.action||!Aa.has(_.action)){ce(C,400,`Invalid action. Must be one of: ${[...Aa].join(", ")}`);return}if(!_.url||typeof _.url!="string"){ce(C,400,'Missing or invalid "url" field');return}try{te(_.url),ne(_.url,Re,"PR")}catch(G){G instanceof K?ce(C,400,G.message):(console.error("Unexpected error during URL validation:",G),ce(C,400,"Invalid URL"));return}if(_.action==="snooze"){let G=_.days??7;if(typeof G!="number"||!Number.isFinite(G)||G<=0){ce(C,400,"Snooze days must be a positive finite number");return}if(_.reason!==void 0)try{Rt(String(_.reason))}catch(O){O instanceof K?ce(C,400,O.message):(console.error("Unexpected error during message validation:",O),ce(C,400,"Invalid reason"));return}}try{switch(_.action){case"shelve":n.shelvePR(_.url);break;case"unshelve":n.unshelvePR(_.url);break;case"snooze":n.snoozePR(_.url,_.reason||"Snoozed via dashboard",_.days??7);break;case"unsnooze":n.unsnoozePR(_.url);break}n.save()}catch(G){console.error("Action failed:",_.action,_.url,G),ce(C,500,`Action failed: ${A(G)}`);return}a&&(l=Eo(a,n.getState(),c)),Ws(C,200,l)}async function m(S,C){let _=s||Ze();if(!_){ce(C,401,"No GitHub token available. Cannot refresh data.");return}try{console.error("Refreshing dashboard data from GitHub...");let G=await as(_);a=G.digest,c=G.commentedIssues,l=Eo(a,n.getState(),c),Ws(C,200,l)}catch(G){console.error("Dashboard refresh failed:",G),ce(C,500,`Refresh failed: ${A(G)}`)}}function w(S,C){let _;try{_=decodeURIComponent(S.split("?")[0])}catch(W){console.error("Malformed URL received:",S,W),ce(C,400,"Malformed URL");return}if(_.includes("..")){ce(C,403,"Forbidden");return}let G=_==="/"?"index.html":_.replace(/^\/+/,""),O=Le.join(i,G);if(!O.startsWith(i+Le.sep)&&O!==i){ce(C,403,"Forbidden");return}try{rt.statSync(O).isDirectory()&&(O=Le.join(i,"index.html"))}catch(W){if(W.code==="ENOENT")O=Le.join(i,"index.html");else{console.error("Failed to stat file:",O,W),ce(C,500,"Internal server error");return}}let F=Le.extname(O).toLowerCase(),Z=Eu[F]||"application/octet-stream";try{let W=rt.readFileSync(O);C.writeHead(200,{"Content-Type":Z,"Content-Length":W.length}),C.end(W)}catch(W){W.code==="ENOENT"?ce(C,404,"Not found"):(console.error("Failed to serve static file:",O,W),ce(C,500,"Failed to read file"))}}let y=10,g=e;for(let S=0;S<y;S++)try{await new Promise((C,_)=>{u.once("error",_),u.listen(g,"127.0.0.1",()=>C())});break}catch(C){let _=C;if(_.code==="EADDRINUSE"&&S<y-1){console.error(`Port ${g} is in use, trying ${g+1}...`),g++;continue}console.error(`Failed to start server: ${_.message}`),process.exit(1)}Oa({pid:process.pid,port:g,startedAt:new Date().toISOString()});let R=`http://localhost:${g}`;if(console.error(`Dashboard server running at ${R}`),o){let{execFile:S}=await import("child_process"),C,_;switch(process.platform){case"darwin":C="open",_=[R];break;case"win32":C="cmd",_=["/c","start","",R];break;default:C="xdg-open",_=[R];break}S(C,_,G=>{G&&(console.error("Failed to open browser:",G.message),console.error(`Open manually: ${R}`))})}let h=()=>{console.error(`
1468
- Shutting down dashboard server...`),Js(),u.close(()=>{process.exit(0)}),setTimeout(()=>process.exit(0),3e3).unref()};process.on("SIGINT",h),process.on("SIGTERM",h)}var Ks,rt,Le,Aa,Ru,Eu,Co=$(()=>{"use strict";Ks=J(require("http"),1),rt=J(require("fs"),1),Le=J(require("path"),1);re();oe();$e();_o();Ro();Aa=new Set(["shelve","unshelve","snooze","unsnooze"]),Ru=10240,Eu={".html":"text/html",".js":"application/javascript",".css":"text/css",".svg":"image/svg+xml",".json":"application/json",".png":"image/png",".ico":"image/x-icon"}});var Po={};ie(Po,{resolveAssetsDir:()=>Zs,runDashboard:()=>Su,serveDashboard:()=>Pu,writeDashboardFromState:()=>So});async function Su(r){let e=U(),t=r.offline?null:Ze(),s,o=[];if(r.offline){let g=e.getState();if(s=g.lastDigest,!s){r.json?z({error:"No cached data found. Run without --offline first.",offline:!0}):console.error("No cached data found. Run without --offline first.");return}let R=s.generatedAt||g.lastDigestAt||g.lastRunAt;console.error(`Offline mode: using cached data from ${R}`)}else if(t){console.error("Fetching fresh data from GitHub...");try{let g=await as(t);s=g.digest,o=g.commentedIssues}catch(g){console.error("Failed to fetch fresh data:",A(g)),console.error("Falling back to cached data (issue conversations unavailable)..."),s=e.getState().lastDigest}}else console.error("Warning: No GitHub token found. Using cached data (may be stale)."),console.error("Set GITHUB_TOKEN or run `gh auth login` for fresh data."),s=e.getState().lastDigest;if(!s){r.json?z({error:"No data available. Run daily check first with GITHUB_TOKEN."}):(console.error("No dashboard data available. Run the daily check first:"),console.error(" GITHUB_TOKEN=$(gh auth token) npm start -- daily"));return}let n=e.getState(),i=Bs(s,n),a=Vs(i),{monthlyMerged:c,monthlyClosed:l,monthlyOpened:u}=cs(n),d=Dt(s,n);if(r.json){let g=o.filter(h=>h.status==="new_response"),R={stats:d,prsByRepo:i,topRepos:a.map(([h,S])=>({repo:h,...S})),monthlyMerged:c,activePRs:s.openPRs||[],commentedIssues:o,issueResponses:g};r.offline&&(R.offline=!0,R.lastUpdated=s.generatedAt||n.lastDigestAt||n.lastRunAt),z(R);return}let m=o.filter(g=>g.status==="new_response"),w=wo(d,c,l,u,s,n,m),y=lt();if(Tt.writeFileSync(y,w,{mode:420}),r.offline){let g=s.generatedAt||n.lastDigestAt||n.lastRunAt;console.log(`
1469
- \u{1F4CA} Dashboard generated (offline, cached data from ${g}): ${y}`)}else console.log(`
1470
- \u{1F4CA} Dashboard generated: ${y}`);if(r.open){let g=process.platform==="win32",R=process.platform==="darwin"?"open":g?"cmd":"xdg-open",h=g?["/c","start","",y]:[y];console.log(`Dashboard: ${y}`),(0,Ga.execFile)(R,h,S=>{S&&(console.error("Failed to open browser:",S.message),console.error(`Open manually: ${y}`))})}else console.log("Run with --open to open in browser")}function So(){let e=U().getState(),t=e.lastDigest;if(!t)throw new Error("No digest data available. Run daily check first.");let{monthlyMerged:s,monthlyClosed:o,monthlyOpened:n}=cs(e),i=Dt(t,e),a=wo(i,s,o,n,t,e),c=lt();return Tt.writeFileSync(c,a,{mode:420}),c}function Zs(){let r=je.resolve(__dirname,"../../dashboard/dist");if(Tt.existsSync(je.join(r,"index.html")))return r;let e=je.resolve(je.dirname(process.argv[1]),"../../dashboard/dist");if(Tt.existsSync(je.join(e,"index.html")))return e;try{let t=require.resolve("@oss-autopilot/dashboard/package.json"),s=je.join(je.dirname(t),"dist");if(Tt.existsSync(je.join(s,"index.html")))return s}catch(t){t.code!=="MODULE_NOT_FOUND"&&console.error("Error resolving dashboard package:",t)}return null}async function Pu(r){let e=Zs();e||(console.error("Could not find dashboard SPA assets."),console.error("Make sure packages/dashboard has been built:"),console.error(" cd packages/dashboard && pnpm run build"),process.exit(1));let t=Ze(),{startDashboardServer:s}=await Promise.resolve().then(()=>(Co(),$a));await s({port:r.port,assetsDir:e,token:t,open:r.open})}var Tt,je,Ga,ls=$(()=>{"use strict";Tt=J(require("fs"),1),je=J(require("path"),1),Ga=require("child_process");re();oe();Ls();_o();Ro()});var Ia={};ie(Ia,{parseIssueList:()=>Da,runParseList:()=>$u});function ku(r){let e=r.match(/https:\/\/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);if(e)return{repo:e[1],number:parseInt(e[2],10),url:e[0]};let t=r.match(/https:\/\/github\.com\/([^/]+\/[^/]+)\/pull\/(\d+)/);return t?{repo:t[1],number:parseInt(t[2],10),url:t[0]}:null}function Au(r){let e=r.replace(/\[([^\]]+)\]\([^)]+\)/g,"$1");return e=e.replace(/https?:\/\/\S+/g,""),e=e.replace(/^\s*[-*+]\s*/,"").replace(/^\s*\d+\.\s*/,""),e=e.replace(/\[[ xX]\]\s*/,""),e=e.replace(/~~/g,""),e=e.replace(/\b(Done|DONE|done)\b/g,""),e=e.replace(/^[\s\-\u2013\u2014:]+/,"").replace(/[\s\-\u2013\u2014:]+$/,""),e.trim()}function Ou(r){return!!(/~~.+~~/.test(r)||/\[[xX]\]/.test(r)||/\bdone\b/i.test(r))}function Da(r){let e=r.split(`
1471
- `),t=[],s=[],o="Uncategorized";for(let n of e){let i=n.match(/^#{1,3}\s+(.+)/);if(i){o=i[1].trim();continue}if(!n.trim()||!/^\s*[-*+]|\s*\d+\.|\s*\[[ xX]\]/.test(n))continue;let a=ku(n);if(!a)continue;let c=Au(n),l={repo:a.repo,number:a.number,title:c||`#${a.number}`,tier:o,url:a.url};Ou(n)?s.push(l):t.push(l)}return{available:t,completed:s,availableCount:t.length,completedCount:s.length}}async function $u(r){let e=xa.resolve(r.filePath);if(!er.existsSync(e))throw new Error(`File not found: ${e}`);let t;try{t=er.readFileSync(e,"utf-8")}catch(s){let o=A(s);throw new Error(`Failed to read file: ${o}`,{cause:s})}return Da(t)}var er,xa,Fa=$(()=>{"use strict";er=J(require("fs"),1),xa=J(require("path"),1);oe()});var Ua={};ie(Ua,{runCheckIntegration:()=>Fu});function Du(r){let e=Pe.extname(r),t=Pe.basename(r,e);return t==="index"?Pe.basename(Pe.dirname(r)):t}function Iu(r,e){let t=Pe.dirname(r),s=[];for(let n of[".ts",".tsx",".js",".jsx"]){let i=Pe.join(t,`index${n}`);e.includes(i)&&s.push(i)}let o=Pe.dirname(t);for(let n of[".ts",".tsx",".js",".jsx"]){let i=Pe.join(o,`index${n}`);e.includes(i)&&s.push(i)}return[...new Set(s)]}async function Fu(r){let e=r.base,t;try{let a=(0,tr.execFileSync)("git",["diff","--name-only","--diff-filter=A",`${e}...HEAD`],{encoding:"utf-8",timeout:1e4}).trim();t=a?a.split(`
1472
- `).filter(Boolean):[]}catch(a){let c=A(a);throw new Error(`Failed to run git diff: ${c}`,{cause:a})}let s=t.filter(a=>{let c=Pe.extname(a);return Gu.has(c)?!xu.some(l=>l.test(a)):!1});if(s.length===0)return{newFiles:[],unreferencedCount:0};let o;try{o=(0,tr.execFileSync)("git",["ls-files"],{encoding:"utf-8",timeout:1e4}).trim().split(`
1473
- `).filter(Boolean)}catch(a){k("check-integration","git ls-files failed, reference checking will be skipped",a),o=[]}let n=[];for(let a of s){let c=Du(a),l=a.replace(/\.[^.]+$/,""),u=[],d=[c];l.includes("/")&&d.push(l);for(let y of d)try{let g=(0,tr.execFileSync)("git",["grep","-l","--",y],{encoding:"utf-8",timeout:1e4}).trim();if(g){let R=g.split(`
1474
- `).filter(h=>h!==a);u.push(...R)}}catch(g){let R=g&&typeof g=="object"&&"status"in g?g.status:void 0;if(R!==void 0&&R!==1){let h=A(g);k("check-integration",`git grep failed for "${y}": ${h}`)}}u=[...new Set(u)];let m=u.length>0,w={path:a,referencedBy:u,isIntegrated:m};m||(w.suggestedEntryPoints=Iu(a,o)),n.push(w)}let i=n.filter(a=>!a.isIntegrated).length;return{newFiles:n,unreferencedCount:i}}var Pe,tr,Gu,xu,Ma=$(()=>{"use strict";Pe=J(require("path"),1),tr=require("child_process");re();oe();Gu=new Set([".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".rb",".go",".rs",".java",".kt",".vue",".svelte"]),xu=[/^\./,/\.(test|spec|e2e)\.[^.]+$/,/\.(config|rc)\.[^.]+$/,/__tests__\//,/\.d\.ts$/,/\.md$/,/\.json$/,/\.ya?ml$/]});var ja={};ie(ja,{runLocalRepos:()=>ju,scanForRepos:()=>La});function Mu(r){try{let e=(0,sr.execFileSync)("git",["-C",r,"remote","get-url","origin"],{encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}).trim(),t=e.match(/github\.com\/([^/]+\/[^/]+?)(?:\.git)?$/);if(t)return t[1];let s=e.match(/github\.com[:/]([^/]+\/[^/]+?)(?:\.git)?$/);return s?s[1]:null}catch(e){return k("local-repos",`Failed to get GitHub remote for ${r}`,e),null}}function Lu(r){try{return(0,sr.execFileSync)("git",["-C",r,"branch","--show-current"],{encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}).trim()||null}catch(e){return k("local-repos",`Failed to get current branch for ${r}`,e),null}}function La(r){let e={};for(let t of r){if(!ko.existsSync(t))continue;let s;try{let o=(0,sr.execFileSync)("find",[t,"-maxdepth","4","-name",".git","-type","d"],{encoding:"utf-8",timeout:3e4,stdio:["pipe","pipe","pipe"]}).trim();s=o?o.split(`
1475
- `).filter(Boolean):[]}catch(o){k("local-repos",`find failed for scan path ${t}`,o);continue}for(let o of s){let n=Ne.dirname(o),i=Mu(n);if(!i)continue;let a=Lu(n);e[i]={path:n,exists:!0,currentBranch:a}}}return e}async function ju(r){let e=U(),t=e.getState(),s=r.paths?.map(i=>Ne.resolve(i))??t.config.localRepoScanPaths??Uu.filter(i=>ko.existsSync(i));if(!r.scan&&t.localRepoCache){let i=t.localRepoCache;return{repos:i.repos,scanPaths:i.scanPaths,cachedAt:i.cachedAt,fromCache:!0}}let o=La(s),n=new Date().toISOString();try{e.setLocalRepoCache({repos:o,scanPaths:s,cachedAt:n}),e.save()}catch(i){let a=A(i);console.error(`Warning: Failed to cache scan results: ${a}`)}return{repos:o,scanPaths:s,cachedAt:n,fromCache:!1}}var ko,Ne,Ct,sr,Uu,Na=$(()=>{"use strict";ko=J(require("fs"),1),Ne=J(require("path"),1),Ct=J(require("os"),1),sr=require("child_process");re();oe();Uu=[Ne.join(Ct.homedir(),"Documents","oss"),Ne.join(Ct.homedir(),"dev"),Ne.join(Ct.homedir(),"projects"),Ne.join(Ct.homedir(),"src"),Ne.join(Ct.homedir(),"code"),Ne.join(Ct.homedir(),"repos")]});function Bu(r){return new Promise(e=>setTimeout(e,r))}async function qa(r){if(!Zs())return null;let t=await To();if(t)return{url:t.url,port:t.port,alreadyRunning:!0};let s=r?.port??Nu,o=process.argv[1],n=(0,Ha.spawn)("node",[o,"dashboard","serve","--port",String(s),"--no-open"],{detached:!0,stdio:"ignore"}),i=!1,a=!1;n.on("error",c=>{i=!0,console.error(`[STARTUP] Failed to spawn dashboard server: ${c.message}`)}),n.on("exit",c=>{a=!0,c!==0&&c!==null&&console.error(`[STARTUP] Dashboard server exited prematurely (code ${c})`)}),n.unref();for(let c=0;c<qu;c++){if(await Bu(Hu),i||a)return null;let l=Ys();if(l&&await Xs(l.port))return{url:`http://localhost:${l.port}`,port:l.port,alreadyRunning:!1}}if(console.error("[STARTUP] Dashboard server failed to start within 5 seconds"),n.pid)try{process.kill(n.pid,"SIGTERM")}catch(c){c.code!=="ESRCH"&&console.error(`[STARTUP] Failed to kill orphan dashboard process (PID ${n.pid}): ${c.message}`)}return null}var Ha,Nu,Hu,qu,Ba=$(()=>{"use strict";Ha=require("child_process");Co();ls();Nu=3e3,Hu=200,qu=25});var Qa={};ie(Qa,{countIssueListItems:()=>Ja,detectIssueList:()=>Ka,parseIssueListPathFromConfig:()=>Wa,runStartup:()=>zu});function Wa(r){let e=r.match(/^---\n([\s\S]*?)\n---/);if(!e)return;let s=e[1].match(/issueListPath:\s*["']?([^"'\n]+)["']?/);return s?s[1].trim():void 0}function Ja(r){let e=0,t=0,s=r.split(`
1476
- `);for(let o of s)/^\s*- (?:~~)?\[/.test(o)&&(/~~|\*\*Done\*\*/.test(o)?t++:e++);return{availableCount:e,completedCount:t}}function Ka(){let r="",e="auto-detected",t=".claude/oss-autopilot/config.md";if(He.existsSync(t))try{let s=He.readFileSync(t,"utf-8"),o=Wa(s);o&&He.existsSync(o)&&(r=o,e="configured")}catch(s){console.error("[STARTUP] Failed to read config:",A(s))}if(!r){let s=["open-source/potential-issue-list.md","oss/issue-list.md","issues.md"];for(let o of s)if(He.existsSync(o)){r=o,e="auto-detected";break}}if(r)try{let s=He.readFileSync(r,"utf-8"),{availableCount:o,completedCount:n}=Ja(s);return{path:r,source:e,availableCount:o,completedCount:n}}catch(s){return console.error(`[STARTUP] Failed to read issue list at ${r}:`,A(s)),{path:r,source:e,availableCount:0,completedCount:0}}}function Va(r){let e,t;switch(process.platform){case"darwin":e="open",t=[r];break;case"win32":e="cmd",t=["/c","start","",r];break;default:e="xdg-open",t=[r];break}(0,za.execFile)(e,t,s=>{s&&console.error(`[STARTUP] Failed to open dashboard in browser: ${s.message}`)})}function Vu(){try{let r=lt();if(!He.existsSync(r))return!1;let e=He.statSync(r).mtimeMs,t=He.statSync(Xe()).mtimeMs;return e>=t}catch(r){return T("startup",`Failed to check dashboard freshness, will regenerate: ${A(r)}`),!1}}async function zu(){let r=Mt();if(!U().isSetupComplete())return{version:r,setupComplete:!1};let t=Ze();if(!t)return{version:r,setupComplete:!0,authError:'GitHub authentication required. Install GitHub CLI (https://cli.github.com/) and run "gh auth login", or set GITHUB_TOKEN.'};let s=await js(t),o;try{Vu()?(o=lt(),console.error("[STARTUP] Dashboard HTML is fresh, skipping regeneration")):o=So()}catch(c){console.error("[STARTUP] Dashboard generation failed:",A(c))}let n,i=!1;if(s.digest.summary.totalActivePRs>0){let c=null;try{c=await qa()}catch(l){console.error("[STARTUP] SPA dashboard launch failed:",A(l))}c?(n=c.url,Va(c.url),i=!0):o&&(Va(o),i=!0)}i&&(s.briefSummary+=" | Dashboard opened in browser");let a=Ka();return{version:r,setupComplete:!0,daily:s,dashboardPath:o,dashboardUrl:n,issueList:a}}var He,za,Ya=$(()=>{"use strict";He=J(require("fs"),1),za=require("child_process");re();oe();be();ns();ls();Ba()});var Ao={};ie(Ao,{PR_URL_PATTERN:()=>Re,runShelve:()=>Wu,runUnshelve:()=>Ju});async function Wu(r){te(r.prUrl),ne(r.prUrl,Re,"PR");let e=U(),t=e.shelvePR(r.prUrl);return t&&e.save(),{shelved:t,url:r.prUrl}}async function Ju(r){te(r.prUrl),ne(r.prUrl,Re,"PR");let e=U(),t=e.unshelvePR(r.prUrl);return t&&e.save(),{unshelved:t,url:r.prUrl}}var Oo=$(()=>{"use strict";re();$e()});var $o={};ie($o,{runDismiss:()=>Ku,runUndismiss:()=>Qu});async function Ku(r){te(r.url),ne(r.url,is,"issue or PR");let e=U(),t=e.dismissIssue(r.url,new Date().toISOString());return t&&e.save(),{dismissed:t,url:r.url}}async function Qu(r){te(r.url),ne(r.url,is,"issue or PR");let e=U(),t=e.undismissIssue(r.url);return t&&e.save(),{undismissed:t,url:r.url}}var Go=$(()=>{"use strict";re();$e()});var xo={};ie(xo,{runSnooze:()=>Xu,runUnsnooze:()=>Zu});async function Xu(r){te(r.prUrl),ne(r.prUrl,Re,"PR"),Rt(r.reason);let e=r.days??Yu;if(!Number.isFinite(e)||e<=0)throw new Error("Snooze duration must be a positive number of days.");let t=U(),s=t.snoozePR(r.prUrl,r.reason,e);s&&t.save();let o=t.getSnoozeInfo(r.prUrl);return{snoozed:s,url:r.prUrl,days:e,reason:r.reason,expiresAt:o?.expiresAt}}async function Zu(r){te(r.prUrl),ne(r.prUrl,Re,"PR");let e=U(),t=e.unsnoozePR(r.prUrl);return t&&e.save(),{unsnoozed:t,url:r.prUrl}}var Yu,Do=$(()=>{"use strict";re();$e();Yu=7});var nn=J(on(),1),{program:up,createCommand:pp,createArgument:dp,createOption:gp,CommanderError:mp,InvalidArgumentError:hp,InvalidOptionArgumentError:fp,Command:an,Argument:bp,Option:yp,Help:vp}=nn.default;re();oe();Ls();function Xa(r){let e=Object.entries(r).sort(([t],[s])=>t.localeCompare(s));for(let[t,s]of e){let o=s.currentBranch?` (${s.currentBranch})`:"";console.log(` ${t}${o}`),console.log(` ${s.path}`)}}function X(r,e){let t=A(r);e?aa(t):console.error(`Error: ${t}`),process.exit(1)}var ep=Mt(),tp=["help","status","config","read","untrack","version","setup","checkSetup","dashboard","serve","parse-issue-list","check-integration","local-repos","startup","shelve","unshelve","dismiss","undismiss","snooze","unsnooze"],Y=new an;Y.name("oss-autopilot").description("AI-powered autopilot for managing open source contributions").version(ep).option("--debug","Enable debug logging");Y.command("daily").description("Run daily check on all tracked PRs").option("--json","Output as JSON").action(async r=>{try{if(r.json){let{runDaily:e}=await Promise.resolve().then(()=>(ns(),mo)),t=await e();z(t)}else{let{runDailyForDisplay:e,printDigest:t}=await Promise.resolve().then(()=>(ns(),mo)),s=await e();t(s.digest,s.capacity,s.commentedIssues)}}catch(e){X(e,r.json)}});Y.command("status").description("Show current status and stats").option("--json","Output as JSON").option("--offline","Use cached data only (no GitHub API calls)").action(async r=>{try{let{runStatus:e}=await Promise.resolve().then(()=>(ua(),la)),t=await e({offline:r.offline});r.json?z(t):(console.log(`
1467
+ </html>`}var Oa=G(()=>{"use strict";qs();Ca();Pa();ka();qs();Hs()});function Tu(r){return new Promise(e=>setTimeout(e,r))}async function $a(r){if(!zs())return null;let t=await Ro();if(t)return{url:t.url,port:t.port,alreadyRunning:!0};let s=r?.port??wu,o=process.argv[1],n=(0,Ga.spawn)("node",[o,"dashboard","serve","--port",String(s),"--no-open"],{detached:!0,stdio:"ignore"}),i=!1,a=!1;n.on("error",c=>{i=!0,console.error(`[STARTUP] Failed to spawn dashboard server: ${c.message}`)}),n.on("exit",c=>{a=!0,c!==0&&c!==null&&console.error(`[STARTUP] Dashboard server exited prematurely (code ${c})`)}),n.unref();for(let c=0;c<Eu;c++){if(await Tu(Ru),i||a)return null;let l=Bs();if(l&&await Vs(l.port))return{url:`http://localhost:${l.port}`,port:l.port,alreadyRunning:!1}}if(console.error("[STARTUP] Dashboard server failed to start within 5 seconds"),n.pid)try{process.kill(n.pid,"SIGTERM")}catch(c){c.code!=="ESRCH"&&console.error(`[STARTUP] Failed to kill orphan dashboard process (PID ${n.pid}): ${c.message}`)}return null}var Ga,wu,Ru,Eu,xa=G(()=>{"use strict";Ga=require("child_process");Eo();Ws();wu=3e3,Ru=200,Eu=25});var Ma={};ne(Ma,{countIssueListItems:()=>Fa,detectIssueList:()=>Ua,openInBrowser:()=>is,parseIssueListPathFromConfig:()=>Ia,runStartup:()=>Cu});function Ia(r){let e=r.match(/^---\n([\s\S]*?)\n---/);if(!e)return;let s=e[1].match(/issueListPath:\s*["']?([^"'\n]+)["']?/);return s?s[1].trim():void 0}function Fa(r){let e=0,t=0,s=r.split(`
1468
+ `);for(let o of s)/^\s*- (?:~~)?\[/.test(o)&&(/~~|\*\*Done\*\*/.test(o)?t++:e++);return{availableCount:e,completedCount:t}}function Ua(){let r="",e="auto-detected",t=".claude/oss-autopilot/config.md";if(Rt.existsSync(t))try{let s=Rt.readFileSync(t,"utf-8"),o=Ia(s);o&&Rt.existsSync(o)&&(r=o,e="configured")}catch(s){console.error("[STARTUP] Failed to read config:",A(s))}if(!r){let s=["open-source/potential-issue-list.md","oss/issue-list.md","issues.md"];for(let o of s)if(Rt.existsSync(o)){r=o,e="auto-detected";break}}if(r)try{let s=Rt.readFileSync(r,"utf-8"),{availableCount:o,completedCount:n}=Fa(s);return{path:r,source:e,availableCount:o,completedCount:n}}catch(s){return console.error(`[STARTUP] Failed to read issue list at ${r}:`,A(s)),{path:r,source:e,availableCount:0,completedCount:0}}}function is(r){let e,t;switch(process.platform){case"darwin":e="open",t=[r];break;case"win32":e="cmd",t=["/c","start","",r];break;default:e="xdg-open",t=[r];break}(0,Da.execFile)(e,t,s=>{s&&console.error(`[STARTUP] Failed to open dashboard in browser: ${s.message}`)})}async function Cu(){let r=Ft();if(!L().isSetupComplete())return{version:r,setupComplete:!1};let t=st();if(!t)return{version:r,setupComplete:!0,authError:'GitHub authentication required. Install GitHub CLI (https://cli.github.com/) and run "gh auth login", or set GITHUB_TOKEN.'};let s=await Fs(t),o,n,i=!1;function a(){try{return n=Co(),is(n),!0}catch(l){return console.error("[STARTUP] Static HTML dashboard fallback also failed:",A(l)),!1}}if(s.digest.summary.totalActivePRs>0)try{let l=await $a();l?(o=l.url,is(l.url),i=!0):(console.error("[STARTUP] Dashboard SPA assets not found, falling back to static HTML dashboard"),i=a())}catch(l){console.error("[STARTUP] SPA dashboard launch failed:",A(l)),i=a()}i&&(s.briefSummary+=" | Dashboard opened in browser");let c=Ua();return{version:r,setupComplete:!0,daily:s,dashboardUrl:o,dashboardPath:n,issueList:c}}var Rt,Da,To=G(()=>{"use strict";Rt=Q(require("fs"),1),Da=require("child_process");re();ie();rs();xa();Ws()});var Na={};ne(Na,{findRunningDashboardServer:()=>Ro,getDashboardPidPath:()=>Xs,isDashboardServerRunning:()=>Vs,readDashboardServerInfo:()=>Bs,removeDashboardServerInfo:()=>Qs,startDashboardServer:()=>Au,writeDashboardServerInfo:()=>ja});function Xs(){return Le.join(De(),"dashboard-server.pid")}function ja(r){et.writeFileSync(Xs(),JSON.stringify(r),{mode:384})}function Bs(){try{let r=et.readFileSync(Xs(),"utf-8"),e=JSON.parse(r);return typeof e!="object"||e===null||typeof e.pid!="number"||typeof e.port!="number"||typeof e.startedAt!="string"?(console.error("[DASHBOARD] PID file has invalid structure, ignoring"),null):e}catch(r){return r.code!=="ENOENT"&&console.error(`[DASHBOARD] Failed to read PID file: ${r.message}`),null}}function Qs(){try{et.unlinkSync(Xs())}catch(r){r.code!=="ENOENT"&&console.error(`[DASHBOARD] Failed to remove PID file: ${r.message}`)}}function Vs(r){return new Promise(e=>{let t=Ys.get(`http://127.0.0.1:${r}/api/data`,{timeout:2e3},s=>{s.resume(),e(s.statusCode===200)});t.on("error",()=>e(!1)),t.on("timeout",()=>{t.destroy(),e(!1)})})}async function Ro(){let r=Bs();if(!r)return null;try{process.kill(r.pid,0)}catch(e){let t=e.code;return t!=="ESRCH"&&t!=="EPERM"&&console.error(`[DASHBOARD] Unexpected error checking PID ${r.pid}: ${e.message}`),Qs(),null}return await Vs(r.port)?{port:r.port,url:`http://localhost:${r.port}`}:(Qs(),null)}function Js(r,e,t){let s=Ra(r,e),o=Ea(s),{monthlyMerged:n,monthlyOpened:i,monthlyClosed:a}=Ns(e),c=ns(r,e),l=t.filter(p=>p.status==="new_response");return{stats:c,prsByRepo:s,topRepos:o.map(([p,d])=>({repo:p,...d})),monthlyMerged:n,monthlyOpened:i,monthlyClosed:a,activePRs:r.openPRs||[],shelvedPRUrls:e.config.shelvedPRUrls||[],recentlyMergedPRs:r.recentlyMergedPRs||[],recentlyClosedPRs:r.recentlyClosedPRs||[],autoUnshelvedPRs:r.autoUnshelvedPRs||[],commentedIssues:t,issueResponses:l}}function ku(r,e=Pu){return new Promise((t,s)=>{let o=[],n=0,i=!1;r.on("data",a=>{if(!i){if(n+=a.length,n>e){i=!0,r.destroy(),s(new Error("Body too large"));return}o.push(a)}}),r.on("end",()=>{i||t(Buffer.concat(o).toString("utf-8"))}),r.on("error",a=>{i||s(a)})})}function Ks(r,e,t){let s=JSON.stringify(t);r.writeHead(e,{"Content-Type":"application/json","Content-Length":Buffer.byteLength(s)}),r.end(s)}function ce(r,e,t){Ks(r,e,{error:t})}async function Au(r){let{port:e,assetsDir:t,token:s,open:o}=r,n=L(),i=Le.resolve(t),a=n.getState().lastDigest,c=[];a||(console.error("No dashboard data available. Run the daily check first:"),console.error(" GITHUB_TOKEN=$(gh auth token) npm start -- daily"),process.exit(1));let l;try{l=Js(a,n.getState(),c)}catch(k){console.error("Failed to build dashboard data from cached digest:",k),console.error("Your state data may be corrupted. Try running: daily --json"),process.exit(1)}let p=Ys.createServer(async(k,E)=>{let w=k.method||"GET",x=k.url||"/";try{if(x==="/api/data"&&w==="GET"){Ks(E,200,l);return}if(x==="/api/action"&&w==="POST"){await d(k,E);return}if(x==="/api/refresh"&&w==="POST"){await m(k,E);return}if(w==="GET"){_(x,E);return}ce(E,405,"Method not allowed")}catch(O){console.error("Unhandled request error:",w,x,O),E.headersSent||ce(E,500,"Internal server error")}});async function d(k,E){let w;try{let x=await ku(k);w=JSON.parse(x)}catch(x){let O=x instanceof Error&&x.message==="Body too large";ce(E,O?413:400,O?"Request body too large":"Invalid JSON body");return}if(!w.action||!La.has(w.action)){ce(E,400,`Invalid action. Must be one of: ${[...La].join(", ")}`);return}if(!w.url||typeof w.url!="string"){ce(E,400,'Missing or invalid "url" field');return}try{te(w.url),oe(w.url,Re,"PR")}catch(x){x instanceof W?ce(E,400,x.message):(console.error("Unexpected error during URL validation:",x),ce(E,400,"Invalid URL"));return}if(w.action==="snooze"){let x=w.days??7;if(typeof x!="number"||!Number.isFinite(x)||x<=0){ce(E,400,"Snooze days must be a positive finite number");return}if(w.reason!==void 0)try{_t(String(w.reason))}catch(O){O instanceof W?ce(E,400,O.message):(console.error("Unexpected error during message validation:",O),ce(E,400,"Invalid reason"));return}}try{switch(w.action){case"shelve":n.shelvePR(w.url);break;case"unshelve":n.unshelvePR(w.url);break;case"snooze":n.snoozePR(w.url,w.reason||"Snoozed via dashboard",w.days??7);break;case"unsnooze":n.unsnoozePR(w.url);break}n.save()}catch(x){console.error("Action failed:",w.action,w.url,x),ce(E,500,`Action failed: ${A(x)}`);return}l=Js(a,n.getState(),c),Ks(E,200,l)}async function m(k,E){let w=s||st();if(!w){ce(E,401,"No GitHub token available. Cannot refresh data.");return}try{console.error("Refreshing dashboard data from GitHub...");let x=await wo(w);a=x.digest,c=x.commentedIssues,l=Js(a,n.getState(),c),Ks(E,200,l)}catch(x){console.error("Dashboard refresh failed:",x),ce(E,500,`Refresh failed: ${A(x)}`)}}function _(k,E){let w;try{w=decodeURIComponent(k.split("?")[0])}catch(z){console.error("Malformed URL received:",k,z),ce(E,400,"Malformed URL");return}if(w.includes("..")){ce(E,403,"Forbidden");return}let x=w==="/"?"index.html":w.replace(/^\/+/,""),O=Le.join(i,x);if(!O.startsWith(i+Le.sep)&&O!==i){ce(E,403,"Forbidden");return}try{et.statSync(O).isDirectory()&&(O=Le.join(i,"index.html"))}catch(z){if(z.code==="ENOENT")O=Le.join(i,"index.html");else{console.error("Failed to stat file:",O,z),ce(E,500,"Internal server error");return}}let F=Le.extname(O).toLowerCase(),Y=Su[F]||"application/octet-stream";try{let z=et.readFileSync(O);E.writeHead(200,{"Content-Type":Y,"Content-Length":z.length}),E.end(z)}catch(z){z.code==="ENOENT"?ce(E,404,"Not found"):(console.error("Failed to serve static file:",O,z),ce(E,500,"Failed to read file"))}}let y=10,g=e;for(let k=0;k<y;k++)try{await new Promise((E,w)=>{p.once("error",w),p.listen(g,"127.0.0.1",()=>E())});break}catch(E){let w=E;if(w.code==="EADDRINUSE"&&k<y-1){console.error(`Port ${g} is in use, trying ${g+1}...`),g++;continue}console.error(`Failed to start server: ${w.message}`),process.exit(1)}ja({pid:process.pid,port:g,startedAt:new Date().toISOString()});let C=`http://localhost:${g}`;console.error(`Dashboard server running at ${C}`),s&&wo(s).then(k=>{a=k.digest,c=k.commentedIssues,l=Js(a,n.getState(),c),console.error("Background data refresh complete")}).catch(k=>{console.error("Background data refresh failed (serving cached data):",A(k))}),o&&is(C);let h=()=>{console.error(`
1469
+ Shutting down dashboard server...`),Qs(),p.close(()=>{process.exit(0)}),setTimeout(()=>process.exit(0),3e3).unref()};process.on("SIGINT",h),process.on("SIGTERM",h)}var Ys,et,Le,La,Pu,Su,Eo=G(()=>{"use strict";Ys=Q(require("http"),1),et=Q(require("fs"),1),Le=Q(require("path"),1);re();ie();Ge();Hs();To();La=new Set(["shelve","unshelve","snooze","unsnooze"]),Pu=10240,Su={".html":"text/html",".js":"application/javascript",".css":"text/css",".svg":"image/svg+xml",".json":"application/json",".png":"image/png",".ico":"image/x-icon"}});var Ha={};ne(Ha,{resolveAssetsDir:()=>zs,serveDashboard:()=>Ou,writeDashboardFromState:()=>Co});function Co(){let e=L().getState(),t=e.lastDigest;if(!t)throw new Error("No digest data available. Run daily check first.");let{monthlyMerged:s,monthlyClosed:o,monthlyOpened:n}=Ns(e),i=ns(t,e),a=Aa(i,s,o,n,t,e),c=Or();return $t.writeFileSync(c,a,{mode:420}),c}function zs(){let r=je.resolve(__dirname,"../../dashboard/dist");if($t.existsSync(je.join(r,"index.html")))return r;let e=je.resolve(je.dirname(process.argv[1]),"../../dashboard/dist");if($t.existsSync(je.join(e,"index.html")))return e;try{let t=require.resolve("@oss-autopilot/dashboard/package.json"),s=je.join(je.dirname(t),"dist");if($t.existsSync(je.join(s,"index.html")))return s}catch(t){t.code!=="MODULE_NOT_FOUND"&&console.error("Error resolving dashboard package:",t)}return null}async function Ou(r){let e=zs();e||(console.error("Could not find dashboard SPA assets."),console.error("Make sure packages/dashboard has been built:"),console.error(" cd packages/dashboard && pnpm run build"),process.exit(1));let t=st(),{startDashboardServer:s}=await Promise.resolve().then(()=>(Eo(),Na));await s({port:r.port,assetsDir:e,token:t,open:r.open})}var $t,je,Ws=G(()=>{"use strict";$t=Q(require("fs"),1),je=Q(require("path"),1);re();Hs();Oa()});var Va={};ne(Va,{parseIssueList:()=>Ba,runParseList:()=>Du});function Gu(r){let e=r.match(/https:\/\/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);if(e)return{repo:e[1],number:parseInt(e[2],10),url:e[0]};let t=r.match(/https:\/\/github\.com\/([^/]+\/[^/]+)\/pull\/(\d+)/);return t?{repo:t[1],number:parseInt(t[2],10),url:t[0]}:null}function $u(r){let e=r.replace(/\[([^\]]+)\]\([^)]+\)/g,"$1");return e=e.replace(/https?:\/\/\S+/g,""),e=e.replace(/^\s*[-*+]\s*/,"").replace(/^\s*\d+\.\s*/,""),e=e.replace(/\[[ xX]\]\s*/,""),e=e.replace(/~~/g,""),e=e.replace(/\b(Done|DONE|done)\b/g,""),e=e.replace(/^[\s\-\u2013\u2014:]+/,"").replace(/[\s\-\u2013\u2014:]+$/,""),e.trim()}function xu(r){return!!(/~~.+~~/.test(r)||/\[[xX]\]/.test(r)||/\bdone\b/i.test(r))}function Ba(r){let e=r.split(`
1470
+ `),t=[],s=[],o="Uncategorized";for(let n of e){let i=n.match(/^#{1,3}\s+(.+)/);if(i){o=i[1].trim();continue}if(!n.trim()||!/^\s*[-*+]|\s*\d+\.|\s*\[[ xX]\]/.test(n))continue;let a=Gu(n);if(!a)continue;let c=$u(n),l={repo:a.repo,number:a.number,title:c||`#${a.number}`,tier:o,url:a.url};xu(n)?s.push(l):t.push(l)}return{available:t,completed:s,availableCount:t.length,completedCount:s.length}}async function Du(r){let e=qa.resolve(r.filePath);if(!Zs.existsSync(e))throw new Error(`File not found: ${e}`);let t;try{t=Zs.readFileSync(e,"utf-8")}catch(s){let o=A(s);throw new Error(`Failed to read file: ${o}`,{cause:s})}return Ba(t)}var Zs,qa,za=G(()=>{"use strict";Zs=Q(require("fs"),1),qa=Q(require("path"),1);ie()});var Wa={};ne(Wa,{runCheckIntegration:()=>Lu});function Uu(r){let e=Se.extname(r),t=Se.basename(r,e);return t==="index"?Se.basename(Se.dirname(r)):t}function Mu(r,e){let t=Se.dirname(r),s=[];for(let n of[".ts",".tsx",".js",".jsx"]){let i=Se.join(t,`index${n}`);e.includes(i)&&s.push(i)}let o=Se.dirname(t);for(let n of[".ts",".tsx",".js",".jsx"]){let i=Se.join(o,`index${n}`);e.includes(i)&&s.push(i)}return[...new Set(s)]}async function Lu(r){let e=r.base,t;try{let a=(0,er.execFileSync)("git",["diff","--name-only","--diff-filter=A",`${e}...HEAD`],{encoding:"utf-8",timeout:1e4}).trim();t=a?a.split(`
1471
+ `).filter(Boolean):[]}catch(a){let c=A(a);throw new Error(`Failed to run git diff: ${c}`,{cause:a})}let s=t.filter(a=>{let c=Se.extname(a);return Iu.has(c)?!Fu.some(l=>l.test(a)):!1});if(s.length===0)return{newFiles:[],unreferencedCount:0};let o;try{o=(0,er.execFileSync)("git",["ls-files"],{encoding:"utf-8",timeout:1e4}).trim().split(`
1472
+ `).filter(Boolean)}catch(a){S("check-integration","git ls-files failed, reference checking will be skipped",a),o=[]}let n=[];for(let a of s){let c=Uu(a),l=a.replace(/\.[^.]+$/,""),p=[],d=[c];l.includes("/")&&d.push(l);for(let y of d)try{let g=(0,er.execFileSync)("git",["grep","-l","--",y],{encoding:"utf-8",timeout:1e4}).trim();if(g){let C=g.split(`
1473
+ `).filter(h=>h!==a);p.push(...C)}}catch(g){let C=g&&typeof g=="object"&&"status"in g?g.status:void 0;if(C!==void 0&&C!==1){let h=A(g);S("check-integration",`git grep failed for "${y}": ${h}`)}}p=[...new Set(p)];let m=p.length>0,_={path:a,referencedBy:p,isIntegrated:m};m||(_.suggestedEntryPoints=Mu(a,o)),n.push(_)}let i=n.filter(a=>!a.isIntegrated).length;return{newFiles:n,unreferencedCount:i}}var Se,er,Iu,Fu,Ja=G(()=>{"use strict";Se=Q(require("path"),1),er=require("child_process");re();ie();Iu=new Set([".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".rb",".go",".rs",".java",".kt",".vue",".svelte"]),Fu=[/^\./,/\.(test|spec|e2e)\.[^.]+$/,/\.(config|rc)\.[^.]+$/,/__tests__\//,/\.d\.ts$/,/\.md$/,/\.json$/,/\.ya?ml$/]});var Qa={};ne(Qa,{runLocalRepos:()=>qu,scanForRepos:()=>Ka});function Nu(r){try{let e=(0,tr.execFileSync)("git",["-C",r,"remote","get-url","origin"],{encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}).trim(),t=e.match(/github\.com\/([^/]+\/[^/]+?)(?:\.git)?$/);if(t)return t[1];let s=e.match(/github\.com[:/]([^/]+\/[^/]+?)(?:\.git)?$/);return s?s[1]:null}catch(e){return S("local-repos",`Failed to get GitHub remote for ${r}`,e),null}}function Hu(r){try{return(0,tr.execFileSync)("git",["-C",r,"branch","--show-current"],{encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}).trim()||null}catch(e){return S("local-repos",`Failed to get current branch for ${r}`,e),null}}function Ka(r){let e={};for(let t of r){if(!Po.existsSync(t))continue;let s;try{let o=(0,tr.execFileSync)("find",[t,"-maxdepth","4","-name",".git","-type","d"],{encoding:"utf-8",timeout:3e4,stdio:["pipe","pipe","pipe"]}).trim();s=o?o.split(`
1474
+ `).filter(Boolean):[]}catch(o){S("local-repos",`find failed for scan path ${t}`,o);continue}for(let o of s){let n=Ne.dirname(o),i=Nu(n);if(!i)continue;let a=Hu(n);e[i]={path:n,exists:!0,currentBranch:a}}}return e}async function qu(r){let e=L(),t=e.getState(),s=r.paths?.map(i=>Ne.resolve(i))??t.config.localRepoScanPaths??ju.filter(i=>Po.existsSync(i));if(!r.scan&&t.localRepoCache){let i=t.localRepoCache;return{repos:i.repos,scanPaths:i.scanPaths,cachedAt:i.cachedAt,fromCache:!0}}let o=Ka(s),n=new Date().toISOString();try{e.setLocalRepoCache({repos:o,scanPaths:s,cachedAt:n}),e.save()}catch(i){let a=A(i);console.error(`Warning: Failed to cache scan results: ${a}`)}return{repos:o,scanPaths:s,cachedAt:n,fromCache:!1}}var Po,Ne,Et,tr,ju,Ya=G(()=>{"use strict";Po=Q(require("fs"),1),Ne=Q(require("path"),1),Et=Q(require("os"),1),tr=require("child_process");re();ie();ju=[Ne.join(Et.homedir(),"Documents","oss"),Ne.join(Et.homedir(),"dev"),Ne.join(Et.homedir(),"projects"),Ne.join(Et.homedir(),"src"),Ne.join(Et.homedir(),"code"),Ne.join(Et.homedir(),"repos")]});var So={};ne(So,{PR_URL_PATTERN:()=>Re,runShelve:()=>Bu,runUnshelve:()=>Vu});async function Bu(r){te(r.prUrl),oe(r.prUrl,Re,"PR");let e=L(),t=e.shelvePR(r.prUrl);return t&&e.save(),{shelved:t,url:r.prUrl}}async function Vu(r){te(r.prUrl),oe(r.prUrl,Re,"PR");let e=L(),t=e.unshelvePR(r.prUrl);return t&&e.save(),{unshelved:t,url:r.prUrl}}var ko=G(()=>{"use strict";re();Ge()});var Ao={};ne(Ao,{runDismiss:()=>zu,runUndismiss:()=>Wu});async function zu(r){te(r.url),oe(r.url,os,"issue or PR");let e=L(),t=e.dismissIssue(r.url,new Date().toISOString());return t&&e.save(),{dismissed:t,url:r.url}}async function Wu(r){te(r.url),oe(r.url,os,"issue or PR");let e=L(),t=e.undismissIssue(r.url);return t&&e.save(),{undismissed:t,url:r.url}}var Oo=G(()=>{"use strict";re();Ge()});var Go={};ne(Go,{runSnooze:()=>Ku,runUnsnooze:()=>Qu});async function Ku(r){te(r.prUrl),oe(r.prUrl,Re,"PR"),_t(r.reason);let e=r.days??Ju;if(!Number.isFinite(e)||e<=0)throw new Error("Snooze duration must be a positive number of days.");let t=L(),s=t.snoozePR(r.prUrl,r.reason,e);s&&t.save();let o=t.getSnoozeInfo(r.prUrl);return{snoozed:s,url:r.prUrl,days:e,reason:r.reason,expiresAt:o?.expiresAt}}async function Qu(r){te(r.prUrl),oe(r.prUrl,Re,"PR");let e=L(),t=e.unsnoozePR(r.prUrl);return t&&e.save(),{unsnoozed:t,url:r.prUrl}}var Ju,$o=G(()=>{"use strict";re();Ge();Ju=7});var rn=Q(sn(),1),{program:cp,createCommand:lp,createArgument:up,createOption:pp,CommanderError:dp,InvalidArgumentError:gp,InvalidOptionArgumentError:mp,Command:on,Argument:hp,Option:fp,Help:bp}=rn.default;re();ie();mo();function Xa(r){let e=Object.entries(r).sort(([t],[s])=>t.localeCompare(s));for(let[t,s]of e){let o=s.currentBranch?` (${s.currentBranch})`:"";console.log(` ${t}${o}`),console.log(` ${s.path}`)}}function Z(r,e){let t=A(r);e?na(t):console.error(`Error: ${t}`),process.exit(1)}var Yu=Ft(),Xu=["help","status","config","read","untrack","version","setup","checkSetup","serve","parse-issue-list","check-integration","local-repos","startup","shelve","unshelve","dismiss","undismiss","snooze","unsnooze"],K=new on;K.name("oss-autopilot").description("AI-powered autopilot for managing open source contributions").version(Yu).option("--debug","Enable debug logging");K.command("daily").description("Run daily check on all tracked PRs").option("--json","Output as JSON").action(async r=>{try{if(r.json){let{runDaily:e}=await Promise.resolve().then(()=>(rs(),ho)),t=await e();X(t)}else{let{runDailyForDisplay:e,printDigest:t}=await Promise.resolve().then(()=>(rs(),ho)),s=await e();t(s.digest,s.capacity,s.commentedIssues)}}catch(e){Z(e,r.json)}});K.command("status").description("Show current status and stats").option("--json","Output as JSON").option("--offline","Use cached data only (no GitHub API calls)").action(async r=>{try{let{runStatus:e}=await Promise.resolve().then(()=>(ca(),aa)),t=await e({offline:r.offline});r.json?X(t):(console.log(`
1477
1475
  \u{1F4CA} OSS Status
1478
1476
  `),console.log(`Merged PRs: ${t.stats.mergedPRs}`),console.log(`Closed PRs: ${t.stats.closedPRs}`),console.log(`Merge Rate: ${t.stats.mergeRate}`),console.log(`Needs Response: ${t.stats.needsResponse}`),t.offline?(console.log(`
1479
1477
  Last Updated: ${t.lastUpdated||"Never"}`),console.log("(Offline mode: showing cached data)")):console.log(`
1480
1478
  Last Run: ${t.lastRunAt||"Never"}`),console.log(`
1481
- Run with --json for structured output`))}catch(e){X(e,r.json)}});Y.command("search [count]").description("Search for new issues to work on").option("--json","Output as JSON").action(async(r,e)=>{try{let{runSearch:t}=await Promise.resolve().then(()=>(da(),pa)),s=5;if(r!==void 0){let n=Number(r);if(!Number.isFinite(n)||n<1||!Number.isInteger(n))throw new Error(`Invalid count "${r}". Must be a positive integer.`);s=n}e.json||console.log(`
1479
+ Run with --json for structured output`))}catch(e){Z(e,r.json)}});K.command("search [count]").description("Search for new issues to work on").option("--json","Output as JSON").action(async(r,e)=>{try{let{runSearch:t}=await Promise.resolve().then(()=>(ua(),la)),s=5;if(r!==void 0){let n=Number(r);if(!Number.isFinite(n)||n<1||!Number.isInteger(n))throw new Error(`Invalid count "${r}". Must be a positive integer.`);s=n}e.json||console.log(`
1482
1480
  Searching for issues (max ${s})...
1483
- `);let o=await t({maxResults:s});if(e.json)z(o);else{if(o.candidates.length===0){o.rateLimitWarning?console.warn(`
1481
+ `);let o=await t({maxResults:s});if(e.json)X(o);else{if(o.candidates.length===0){o.rateLimitWarning?console.warn(`
1484
1482
  ${o.rateLimitWarning}
1485
1483
  `):console.log("No matching issues found.");return}o.rateLimitWarning&&console.warn(`
1486
1484
  ${o.rateLimitWarning}
1487
1485
  `),console.log(`Found ${o.candidates.length} candidates:
1488
- `);for(let n of o.candidates){let{issue:i,recommendation:a,reasonsToApprove:c,reasonsToSkip:l,viabilityScore:u}=n;console.log(`[${a.toUpperCase()}] ${i.repo}#${i.number}: ${i.title}`),console.log(` URL: ${i.url}`),console.log(` Viability: ${u}/100`),c.length>0&&console.log(` Approve: ${c.join(", ")}`),l.length>0&&console.log(` Skip: ${l.join(", ")}`),console.log("---")}}}catch(t){X(t,e.json)}});Y.command("vet <issue-url>").description("Vet a specific issue before working on it").option("--json","Output as JSON").action(async(r,e)=>{try{let{runVet:t}=await Promise.resolve().then(()=>(ba(),fa)),s=await t({issueUrl:r});if(e.json)z(s);else{let{issue:o,recommendation:n,reasonsToApprove:i,reasonsToSkip:a}=s;console.log(`
1486
+ `);for(let n of o.candidates){let{issue:i,recommendation:a,reasonsToApprove:c,reasonsToSkip:l,viabilityScore:p}=n;console.log(`[${a.toUpperCase()}] ${i.repo}#${i.number}: ${i.title}`),console.log(` URL: ${i.url}`),console.log(` Viability: ${p}/100`),c.length>0&&console.log(` Approve: ${c.join(", ")}`),l.length>0&&console.log(` Skip: ${l.join(", ")}`),console.log("---")}}}catch(t){Z(t,e.json)}});K.command("vet <issue-url>").description("Vet a specific issue before working on it").option("--json","Output as JSON").action(async(r,e)=>{try{let{runVet:t}=await Promise.resolve().then(()=>(ha(),ma)),s=await t({issueUrl:r});if(e.json)X(s);else{let{issue:o,recommendation:n,reasonsToApprove:i,reasonsToSkip:a}=s;console.log(`
1489
1487
  Vetting issue: ${r}
1490
- `),console.log(`[${n.toUpperCase()}] ${o.repo}#${o.number}: ${o.title}`),console.log(` URL: ${o.url}`),i.length>0&&console.log(` Approve: ${i.join(", ")}`),a.length>0&&console.log(` Skip: ${a.join(", ")}`)}}catch(t){X(t,e.json)}});Y.command("track <pr-url>").description("Add a PR to track").option("--json","Output as JSON").action(async(r,e)=>{try{let{runTrack:t}=await Promise.resolve().then(()=>(fo(),ho)),s=await t({prUrl:r});e.json?z(s):(console.log(`
1491
- PR: ${s.pr.repo}#${s.pr.number} - ${s.pr.title}`),console.log("Note: In v2, PRs are tracked automatically via the daily run."))}catch(t){X(t,e.json)}});Y.command("untrack <pr-url>").description("Stop tracking a PR").option("--json","Output as JSON").action(async(r,e)=>{try{let{runUntrack:t}=await Promise.resolve().then(()=>(fo(),ho)),s=await t({prUrl:r});e.json?z(s):(console.log("Note: In v2, PRs are fetched fresh on each daily run \u2014 there is no local tracking list to remove from."),console.log("Use `shelve` to temporarily hide a PR from the daily summary."))}catch(t){X(t,e.json)}});Y.command("read [pr-url]").description("Mark PR comments as read").option("--all","Mark all PRs as read").option("--json","Output as JSON").action(async(r,e)=>{try{let{runRead:t}=await Promise.resolve().then(()=>(va(),ya)),s=await t({prUrl:r,all:e.all});e.json?z(s):console.log("Note: In v2, PR read state is not tracked locally. PRs are fetched fresh on each daily run.")}catch(t){X(t,e.json)}});Y.command("comments <pr-url>").description("Show all comments on a PR").option("--bots","Include bot comments").option("--json","Output as JSON").action(async(r,e)=>{try{let{runComments:t}=await Promise.resolve().then(()=>(qs(),Hs)),s=await t({prUrl:r,showBots:e.bots});if(e.json)z(s);else{console.log(`
1488
+ `),console.log(`[${n.toUpperCase()}] ${o.repo}#${o.number}: ${o.title}`),console.log(` URL: ${o.url}`),i.length>0&&console.log(` Approve: ${i.join(", ")}`),a.length>0&&console.log(` Skip: ${a.join(", ")}`)}}catch(t){Z(t,e.json)}});K.command("track <pr-url>").description("Add a PR to track").option("--json","Output as JSON").action(async(r,e)=>{try{let{runTrack:t}=await Promise.resolve().then(()=>(bo(),fo)),s=await t({prUrl:r});e.json?X(s):(console.log(`
1489
+ PR: ${s.pr.repo}#${s.pr.number} - ${s.pr.title}`),console.log("Note: In v2, PRs are tracked automatically via the daily run."))}catch(t){Z(t,e.json)}});K.command("untrack <pr-url>").description("Stop tracking a PR").option("--json","Output as JSON").action(async(r,e)=>{try{let{runUntrack:t}=await Promise.resolve().then(()=>(bo(),fo)),s=await t({prUrl:r});e.json?X(s):(console.log("Note: In v2, PRs are fetched fresh on each daily run \u2014 there is no local tracking list to remove from."),console.log("Use `shelve` to temporarily hide a PR from the daily summary."))}catch(t){Z(t,e.json)}});K.command("read [pr-url]").description("Mark PR comments as read").option("--all","Mark all PRs as read").option("--json","Output as JSON").action(async(r,e)=>{try{let{runRead:t}=await Promise.resolve().then(()=>(ba(),fa)),s=await t({prUrl:r,all:e.all});e.json?X(s):console.log("Note: In v2, PR read state is not tracked locally. PRs are fetched fresh on each daily run.")}catch(t){Z(t,e.json)}});K.command("comments <pr-url>").description("Show all comments on a PR").option("--bots","Include bot comments").option("--json","Output as JSON").action(async(r,e)=>{try{let{runComments:t}=await Promise.resolve().then(()=>(Ls(),Ms)),s=await t({prUrl:r,showBots:e.bots});if(e.json)X(s);else{console.log(`
1492
1490
  Fetching comments for: ${r}
1493
1491
  `),console.log(`## ${s.pr.title}
1494
1492
  `),console.log(`**Status:** ${s.pr.state} | **Mergeable:** ${s.pr.mergeable??"checking..."}`),console.log(`**Branch:** ${s.pr.head} -> ${s.pr.base}`),console.log(`**URL:** ${s.pr.url}
1495
1493
  `);let o={APPROVED:"[Approved]",CHANGES_REQUESTED:"[Changes]"};if(s.reviews.length>0){console.log(`### Reviews (newest first)
1496
- `);for(let n of s.reviews){let i=o[n.state]??"[Comment]",a=n.submittedAt?ut(n.submittedAt):"";console.log(`${i} **@${n.user}** (${n.state}) - ${a}`),n.body&&console.log(`> ${n.body.split(`
1494
+ `);for(let n of s.reviews){let i=o[n.state]??"[Comment]",a=n.submittedAt?ct(n.submittedAt):"";console.log(`${i} **@${n.user}** (${n.state}) - ${a}`),n.body&&console.log(`> ${n.body.split(`
1497
1495
  `).join(`
1498
1496
  > `)}
1499
1497
  `)}}if(s.reviewComments.length>0){console.log(`### Inline Comments (newest first)
1500
- `);for(let n of s.reviewComments){let i=ut(n.createdAt);console.log(`**@${n.user}** on \`${n.path}\` - ${i}`),console.log(`> ${n.body.split(`
1498
+ `);for(let n of s.reviewComments){let i=ct(n.createdAt);console.log(`**@${n.user}** on \`${n.path}\` - ${i}`),console.log(`> ${n.body.split(`
1501
1499
  `).join(`
1502
1500
  > `)}`),console.log("")}}if(s.issueComments.length>0){console.log(`### Discussion (newest first)
1503
- `);for(let n of s.issueComments){let i=ut(n.createdAt);console.log(`**@${n.user}** - ${i}`),console.log(`> ${n.body?.split(`
1501
+ `);for(let n of s.issueComments){let i=ct(n.createdAt);console.log(`**@${n.user}** - ${i}`),console.log(`> ${n.body?.split(`
1504
1502
  `).join(`
1505
1503
  > `)}
1506
1504
  `)}}s.reviewComments.length===0&&s.issueComments.length===0&&s.reviews.length===0&&console.log(`No comments from other users.
1507
- `),console.log("---"),console.log(`**Summary:** ${s.summary.reviewCount} reviews, ${s.summary.inlineCommentCount} inline comments, ${s.summary.discussionCommentCount} discussion comments`)}}catch(t){X(t,e.json)}});Y.command("post <url> [message...]").description("Post a comment to a PR or issue").option("--stdin","Read message from stdin").option("--json","Output as JSON").action(async(r,e,t)=>{try{let s;if(t.stdin){let i=[];for await(let a of process.stdin)i.push(a);s=Buffer.concat(i).toString("utf-8").trim()}else s=e.join(" ");let{runPost:o}=await Promise.resolve().then(()=>(qs(),Hs)),n=await o({url:r,message:s});t.json?z(n):console.log(`Comment posted: ${n.commentUrl}`)}catch(s){X(s,t.json)}});Y.command("claim <issue-url> [message...]").description("Claim an issue by posting a comment").option("--json","Output as JSON").action(async(r,e,t)=>{try{let{runClaim:s}=await Promise.resolve().then(()=>(qs(),Hs)),o=e.length>0?e.join(" "):void 0,n=await s({issueUrl:r,message:o});t.json?z(n):console.log(`Issue claimed: ${n.commentUrl}`)}catch(s){X(s,t.json)}});Y.command("config [key] [value]").description("Show or update configuration").option("--json","Output as JSON").action(async(r,e,t)=>{try{let{runConfig:s}=await Promise.resolve().then(()=>(wa(),_a)),o=await s({key:r,value:e});t.json?z(o):"config"in o?(console.log(`
1505
+ `),console.log("---"),console.log(`**Summary:** ${s.summary.reviewCount} reviews, ${s.summary.inlineCommentCount} inline comments, ${s.summary.discussionCommentCount} discussion comments`)}}catch(t){Z(t,e.json)}});K.command("post <url> [message...]").description("Post a comment to a PR or issue").option("--stdin","Read message from stdin").option("--json","Output as JSON").action(async(r,e,t)=>{try{let s;if(t.stdin){let i=[];for await(let a of process.stdin)i.push(a);s=Buffer.concat(i).toString("utf-8").trim()}else s=e.join(" ");let{runPost:o}=await Promise.resolve().then(()=>(Ls(),Ms)),n=await o({url:r,message:s});t.json?X(n):console.log(`Comment posted: ${n.commentUrl}`)}catch(s){Z(s,t.json)}});K.command("claim <issue-url> [message...]").description("Claim an issue by posting a comment").option("--json","Output as JSON").action(async(r,e,t)=>{try{let{runClaim:s}=await Promise.resolve().then(()=>(Ls(),Ms)),o=e.length>0?e.join(" "):void 0,n=await s({issueUrl:r,message:o});t.json?X(n):console.log(`Issue claimed: ${n.commentUrl}`)}catch(s){Z(s,t.json)}});K.command("config [key] [value]").description("Show or update configuration").option("--json","Output as JSON").action(async(r,e,t)=>{try{let{runConfig:s}=await Promise.resolve().then(()=>(va(),ya)),o=await s({key:r,value:e});t.json?X(o):"config"in o?(console.log(`
1508
1506
  \u2699\uFE0F Current Configuration:
1509
- `),console.log(JSON.stringify(o.config,null,2))):console.log(`Set ${o.key} to: ${o.value}`)}catch(s){X(s,t.json)}});Y.command("init <username>").description("Initialize with your GitHub username and import open PRs").option("--json","Output as JSON").action(async(r,e)=>{try{let{runInit:t}=await Promise.resolve().then(()=>(Ea(),Ra)),s=await t({username:r});e.json?z(s):(console.log(`
1510
- Username set to @${s.username}.`),console.log("Run `oss-autopilot daily` to fetch your open PRs from GitHub."))}catch(t){X(t,e.json)}});Y.command("setup").description("Interactive setup / configuration").option("--reset","Re-run setup even if already complete").option("--set <settings...>","Set specific values (key=value)").option("--json","Output as JSON").action(async r=>{try{let{runSetup:e}=await Promise.resolve().then(()=>(vo(),yo)),t=await e({reset:r.reset,set:r.set});if(r.json)z(t);else if("success"in t){for(let[s,o]of Object.entries(t.settings))console.log(`\u2713 ${s}: ${o}`);if(t.warnings)for(let s of t.warnings)console.warn(s)}else if("setupComplete"in t&&t.setupComplete)console.log(`
1507
+ `),console.log(JSON.stringify(o.config,null,2))):console.log(`Set ${o.key} to: ${o.value}`)}catch(s){Z(s,t.json)}});K.command("init <username>").description("Initialize with your GitHub username and import open PRs").option("--json","Output as JSON").action(async(r,e)=>{try{let{runInit:t}=await Promise.resolve().then(()=>(wa(),_a)),s=await t({username:r});e.json?X(s):(console.log(`
1508
+ Username set to @${s.username}.`),console.log("Run `oss-autopilot daily` to fetch your open PRs from GitHub."))}catch(t){Z(t,e.json)}});K.command("setup").description("Interactive setup / configuration").option("--reset","Re-run setup even if already complete").option("--set <settings...>","Set specific values (key=value)").option("--json","Output as JSON").action(async r=>{try{let{runSetup:e}=await Promise.resolve().then(()=>(_o(),vo)),t=await e({reset:r.reset,set:r.set});if(r.json)X(t);else if("success"in t){for(let[s,o]of Object.entries(t.settings))console.log(`\u2713 ${s}: ${o}`);if(t.warnings)for(let s of t.warnings)console.warn(s)}else if("setupComplete"in t&&t.setupComplete)console.log(`
1511
1509
  \u2699\uFE0F OSS Autopilot Setup
1512
1510
  `),console.log(`\u2713 Setup already complete!
1513
1511
  `),console.log("Current settings:"),console.log(` GitHub username: ${t.config.githubUsername||"(not set)"}`),console.log(` Max active PRs: ${t.config.maxActivePRs}`),console.log(` Dormant threshold: ${t.config.dormantThresholdDays} days`),console.log(` Approaching dormant: ${t.config.approachingDormantDays} days`),console.log(` Languages: ${t.config.languages.join(", ")}`),console.log(` Labels: ${t.config.labels.join(", ")}`),console.log(`
1514
1512
  Run 'setup --reset' to reconfigure.`);else if("setupRequired"in t){console.log(`
1515
1513
  \u2699\uFE0F OSS Autopilot Setup
1516
1514
  `),console.log("SETUP_REQUIRED"),console.log("---"),console.log(`Please configure the following settings:
1517
- `);for(let s of t.prompts){console.log(`SETTING: ${s.setting}`),console.log(`PROMPT: ${s.prompt}`);let o=Array.isArray(s.current)?s.current.join(", "):s.current;if(console.log(`CURRENT: ${o??"(not set)"}`),s.required&&console.log("REQUIRED: true"),s.default!==void 0){let n=Array.isArray(s.default)?s.default.join(", "):s.default;console.log(`DEFAULT: ${n}`)}s.type&&console.log(`TYPE: ${s.type}`),console.log("")}console.log("---"),console.log("END_SETUP_PROMPTS")}}catch(e){X(e,r.json)}});Y.command("checkSetup").description("Check if setup is complete").option("--json","Output as JSON").action(async r=>{try{let{runCheckSetup:e}=await Promise.resolve().then(()=>(vo(),yo)),t=await e();r.json?z(t):t.setupComplete?(console.log("SETUP_COMPLETE"),console.log(`username=${t.username}`)):console.log("SETUP_INCOMPLETE")}catch(e){X(e,r.json)}});var Za=Y.command("dashboard").description("Dashboard commands");Za.command("serve").description("Start interactive dashboard server").option("--port <port>","Port to listen on","3000").option("--no-open","Do not open browser automatically").action(async r=>{try{let e=parseInt(r.port,10);(isNaN(e)||e<1||e>65535)&&(console.error(`Invalid port number: "${r.port}". Must be an integer between 1 and 65535.`),process.exit(1));let{serveDashboard:t}=await Promise.resolve().then(()=>(ls(),Po));await t({port:e,open:r.open})}catch(e){X(e)}});Za.option("--open","Open in browser").option("--json","Output as JSON").option("--offline","Use cached data only (no GitHub API calls)").action(async r=>{try{let{runDashboard:e}=await Promise.resolve().then(()=>(ls(),Po));await e({open:r.open,json:r.json,offline:r.offline})}catch(e){X(e,r.json)}});Y.command("parse-issue-list <path>").description("Parse a markdown issue list into structured JSON").option("--json","Output as JSON").action(async(r,e)=>{try{let{runParseList:t}=await Promise.resolve().then(()=>(Fa(),Ia)),s=await t({filePath:r});if(e.json)z(s);else{let n=(await import("path")).resolve(r);if(console.log(`
1515
+ `);for(let s of t.prompts){console.log(`SETTING: ${s.setting}`),console.log(`PROMPT: ${s.prompt}`);let o=Array.isArray(s.current)?s.current.join(", "):s.current;if(console.log(`CURRENT: ${o??"(not set)"}`),s.required&&console.log("REQUIRED: true"),s.default!==void 0){let n=Array.isArray(s.default)?s.default.join(", "):s.default;console.log(`DEFAULT: ${n}`)}s.type&&console.log(`TYPE: ${s.type}`),console.log("")}console.log("---"),console.log("END_SETUP_PROMPTS")}}catch(e){Z(e,r.json)}});K.command("checkSetup").description("Check if setup is complete").option("--json","Output as JSON").action(async r=>{try{let{runCheckSetup:e}=await Promise.resolve().then(()=>(_o(),vo)),t=await e();r.json?X(t):t.setupComplete?(console.log("SETUP_COMPLETE"),console.log(`username=${t.username}`)):console.log("SETUP_INCOMPLETE")}catch(e){Z(e,r.json)}});var Zu=K.command("dashboard").description("Dashboard commands");Zu.command("serve").description("Start interactive dashboard server").option("--port <port>","Port to listen on","3000").option("--no-open","Do not open browser automatically").action(async r=>{try{let e=parseInt(r.port,10);(isNaN(e)||e<1||e>65535)&&(console.error(`Invalid port number: "${r.port}". Must be an integer between 1 and 65535.`),process.exit(1));let{serveDashboard:t}=await Promise.resolve().then(()=>(Ws(),Ha));await t({port:e,open:r.open})}catch(e){Z(e)}});K.command("parse-issue-list <path>").description("Parse a markdown issue list into structured JSON").option("--json","Output as JSON").action(async(r,e)=>{try{let{runParseList:t}=await Promise.resolve().then(()=>(za(),Va)),s=await t({filePath:r});if(e.json)X(s);else{let n=(await import("path")).resolve(r);if(console.log(`
1518
1516
  \u{1F4CB} Issue List: ${n}
1519
1517
  `),console.log(`Available: ${s.availableCount} | Completed: ${s.completedCount}
1520
1518
  `),s.available.length>0){console.log("--- Available ---");for(let i of s.available)console.log(` [${i.tier}] ${i.repo}#${i.number}: ${i.title}`)}if(s.completed.length>0){console.log(`
1521
- --- Completed ---`);for(let i of s.completed)console.log(` [${i.tier}] ${i.repo}#${i.number}: ${i.title}`)}}}catch(t){X(t,e.json)}});Y.command("check-integration").description("Detect new files not referenced by the codebase").option("--base <branch>","Base branch to compare against","main").option("--json","Output as JSON").action(async r=>{try{let{runCheckIntegration:e}=await Promise.resolve().then(()=>(Ma(),Ua)),t=await e({base:r.base});if(r.json)z(t);else if(t.newFiles.length===0)console.log(`
1519
+ --- Completed ---`);for(let i of s.completed)console.log(` [${i.tier}] ${i.repo}#${i.number}: ${i.title}`)}}}catch(t){Z(t,e.json)}});K.command("check-integration").description("Detect new files not referenced by the codebase").option("--base <branch>","Base branch to compare against","main").option("--json","Output as JSON").action(async r=>{try{let{runCheckIntegration:e}=await Promise.resolve().then(()=>(Ja(),Wa)),t=await e({base:r.base});if(r.json)X(t);else if(t.newFiles.length===0)console.log(`
1522
1520
  No new code files to check.`);else{console.log(`
1523
1521
  \u{1F50D} Integration Check (base: ${r.base})
1524
1522
  `),console.log(`New files: ${t.newFiles.length} | Unreferenced: ${t.unreferencedCount}
1525
- `);for(let s of t.newFiles){let o=s.isIntegrated?"\u2705":"\u26A0\uFE0F";console.log(`${o} ${s.path}`),s.isIntegrated?console.log(` Referenced by: ${s.referencedBy.join(", ")}`):(console.log(" Not referenced by any file"),s.suggestedEntryPoints&&s.suggestedEntryPoints.length>0&&console.log(` Suggested entry points: ${s.suggestedEntryPoints.join(", ")}`))}}}catch(e){X(e,r.json)}});Y.command("local-repos").description("Scan filesystem for local git clones").option("--scan","Force re-scan (ignores cache)").option("--paths <dirs...>","Directories to scan").option("--json","Output as JSON").action(async r=>{try{let{runLocalRepos:e}=await Promise.resolve().then(()=>(Na(),ja)),t=await e({scan:r.scan,paths:r.paths});r.json?z(t):t.fromCache?(console.log(`
1523
+ `);for(let s of t.newFiles){let o=s.isIntegrated?"\u2705":"\u26A0\uFE0F";console.log(`${o} ${s.path}`),s.isIntegrated?console.log(` Referenced by: ${s.referencedBy.join(", ")}`):(console.log(" Not referenced by any file"),s.suggestedEntryPoints&&s.suggestedEntryPoints.length>0&&console.log(` Suggested entry points: ${s.suggestedEntryPoints.join(", ")}`))}}}catch(e){Z(e,r.json)}});K.command("local-repos").description("Scan filesystem for local git clones").option("--scan","Force re-scan (ignores cache)").option("--paths <dirs...>","Directories to scan").option("--json","Output as JSON").action(async r=>{try{let{runLocalRepos:e}=await Promise.resolve().then(()=>(Ya(),Qa)),t=await e({scan:r.scan,paths:r.paths});r.json?X(t):t.fromCache?(console.log(`
1526
1524
  \u{1F4C1} Local Repos (cached ${t.cachedAt})
1527
1525
  `),Xa(t.repos)):(console.log(`Found ${Object.keys(t.repos).length} repos:
1528
- `),Xa(t.repos))}catch(e){X(e,r.json)}});Y.command("startup").description("Run all pre-flight checks and daily fetch in one call").option("--json","Output as JSON").action(async r=>{try{let{runStartup:e}=await Promise.resolve().then(()=>(Ya(),Qa)),t=await e();r.json?z(t):t.setupComplete?t.authError?console.error(`Error: ${t.authError}`):(console.log(`OSS Autopilot v${t.version}`),console.log(t.daily?.briefSummary??""),t.dashboardPath&&console.log(`Dashboard: ${t.dashboardPath}`)):console.log("Setup incomplete. Run /setup-oss first.")}catch(e){X(e,r.json)}});Y.command("shelve <pr-url>").description("Shelve a PR (exclude from capacity and actionable issues)").option("--json","Output as JSON").action(async(r,e)=>{try{let{runShelve:t}=await Promise.resolve().then(()=>(Oo(),Ao)),s=await t({prUrl:r});e.json?z(s):s.shelved?(console.log(`Shelved: ${r}`),console.log("This PR is now excluded from capacity and actionable issues."),console.log("It will auto-unshelve if a maintainer engages.")):console.log("PR is already shelved.")}catch(t){X(t,e.json)}});Y.command("unshelve <pr-url>").description("Unshelve a PR (include in capacity and actionable issues again)").option("--json","Output as JSON").action(async(r,e)=>{try{let{runUnshelve:t}=await Promise.resolve().then(()=>(Oo(),Ao)),s=await t({prUrl:r});e.json?z(s):s.unshelved?(console.log(`Unshelved: ${r}`),console.log("This PR is now active again.")):console.log("PR was not shelved.")}catch(t){X(t,e.json)}});Y.command("dismiss <url>").description("Dismiss notifications for an issue or PR (resurfaces on new activity)").option("--json","Output as JSON").action(async(r,e)=>{try{let{runDismiss:t}=await Promise.resolve().then(()=>(Go(),$o)),s=await t({url:r});e.json?z(s):s.dismissed?(console.log(`Dismissed: ${r}`),console.log("Notifications are now muted."),console.log("New responses after this point will resurface automatically.")):console.log("Already dismissed.")}catch(t){X(t,e.json)}});Y.command("undismiss <url>").description("Undismiss an issue or PR (re-enable notifications)").option("--json","Output as JSON").action(async(r,e)=>{try{let{runUndismiss:t}=await Promise.resolve().then(()=>(Go(),$o)),s=await t({url:r});e.json?z(s):s.undismissed?(console.log(`Undismissed: ${r}`),console.log("Notifications are active again.")):console.log("Was not dismissed.")}catch(t){X(t,e.json)}});Y.command("snooze <pr-url>").description("Snooze CI failure notifications for a PR").requiredOption("--reason <reason>",'Reason for snoozing (e.g., "upstream infrastructure issue")').option("--days <days>","Number of days to snooze (default: 7)","7").option("--json","Output as JSON").action(async(r,e)=>{try{let{runSnooze:t}=await Promise.resolve().then(()=>(Do(),xo)),s=await t({prUrl:r,reason:e.reason,days:parseInt(e.days,10)});e.json?z(s):s.snoozed?(console.log(`Snoozed: ${r}`),console.log(`Reason: ${s.reason}`),console.log(`Duration: ${s.days} day${s.days===1?"":"s"}`),console.log(`Expires: ${s.expiresAt?new Date(s.expiresAt).toLocaleString():"unknown"}`),console.log("CI failure notifications are now muted for this PR.")):(console.log("PR is already snoozed."),s.expiresAt&&console.log(`Expires: ${new Date(s.expiresAt).toLocaleString()}`))}catch(t){X(t,e.json)}});Y.command("unsnooze <pr-url>").description("Unsnooze a PR (re-enable CI failure notifications)").option("--json","Output as JSON").action(async(r,e)=>{try{let{runUnsnooze:t}=await Promise.resolve().then(()=>(Do(),xo)),s=await t({prUrl:r});e.json?z(s):s.unsnoozed?(console.log(`Unsnoozed: ${r}`),console.log("CI failure notifications are active again for this PR.")):console.log("PR was not snoozed.")}catch(t){X(t,e.json)}});Y.hook("preAction",async(r,e)=>{r.opts().debug&&(Pr(),k("cli",`Running command: ${e.name()}`));let s=e.name();tp.includes(s)||await Gr()||(console.error("Error: GitHub authentication required."),console.error(""),console.error("Option 1 (Recommended): Install and authenticate GitHub CLI"),console.error(" Install: https://cli.github.com/"),console.error(" Then run: gh auth login"),console.error(""),console.error("Option 2: Set GITHUB_TOKEN environment variable"),console.error(' export GITHUB_TOKEN="your-github-token-here"'),console.error(""),console.error("Then run your command again."),process.exit(1))});Y.parse();
1526
+ `),Xa(t.repos))}catch(e){Z(e,r.json)}});K.command("startup").description("Run all pre-flight checks and daily fetch in one call").option("--json","Output as JSON").action(async r=>{try{let{runStartup:e}=await Promise.resolve().then(()=>(To(),Ma)),t=await e();r.json?X(t):t.setupComplete?t.authError?console.error(`Error: ${t.authError}`):(console.log(`OSS Autopilot v${t.version}`),console.log(t.daily?.briefSummary??"")):console.log("Setup incomplete. Run /setup-oss first.")}catch(e){Z(e,r.json)}});K.command("shelve <pr-url>").description("Shelve a PR (exclude from capacity and actionable issues)").option("--json","Output as JSON").action(async(r,e)=>{try{let{runShelve:t}=await Promise.resolve().then(()=>(ko(),So)),s=await t({prUrl:r});e.json?X(s):s.shelved?(console.log(`Shelved: ${r}`),console.log("This PR is now excluded from capacity and actionable issues."),console.log("It will auto-unshelve if a maintainer engages.")):console.log("PR is already shelved.")}catch(t){Z(t,e.json)}});K.command("unshelve <pr-url>").description("Unshelve a PR (include in capacity and actionable issues again)").option("--json","Output as JSON").action(async(r,e)=>{try{let{runUnshelve:t}=await Promise.resolve().then(()=>(ko(),So)),s=await t({prUrl:r});e.json?X(s):s.unshelved?(console.log(`Unshelved: ${r}`),console.log("This PR is now active again.")):console.log("PR was not shelved.")}catch(t){Z(t,e.json)}});K.command("dismiss <url>").description("Dismiss notifications for an issue or PR (resurfaces on new activity)").option("--json","Output as JSON").action(async(r,e)=>{try{let{runDismiss:t}=await Promise.resolve().then(()=>(Oo(),Ao)),s=await t({url:r});e.json?X(s):s.dismissed?(console.log(`Dismissed: ${r}`),console.log("Notifications are now muted."),console.log("New responses after this point will resurface automatically.")):console.log("Already dismissed.")}catch(t){Z(t,e.json)}});K.command("undismiss <url>").description("Undismiss an issue or PR (re-enable notifications)").option("--json","Output as JSON").action(async(r,e)=>{try{let{runUndismiss:t}=await Promise.resolve().then(()=>(Oo(),Ao)),s=await t({url:r});e.json?X(s):s.undismissed?(console.log(`Undismissed: ${r}`),console.log("Notifications are active again.")):console.log("Was not dismissed.")}catch(t){Z(t,e.json)}});K.command("snooze <pr-url>").description("Snooze CI failure notifications for a PR").requiredOption("--reason <reason>",'Reason for snoozing (e.g., "upstream infrastructure issue")').option("--days <days>","Number of days to snooze (default: 7)","7").option("--json","Output as JSON").action(async(r,e)=>{try{let{runSnooze:t}=await Promise.resolve().then(()=>($o(),Go)),s=await t({prUrl:r,reason:e.reason,days:parseInt(e.days,10)});e.json?X(s):s.snoozed?(console.log(`Snoozed: ${r}`),console.log(`Reason: ${s.reason}`),console.log(`Duration: ${s.days} day${s.days===1?"":"s"}`),console.log(`Expires: ${s.expiresAt?new Date(s.expiresAt).toLocaleString():"unknown"}`),console.log("CI failure notifications are now muted for this PR.")):(console.log("PR is already snoozed."),s.expiresAt&&console.log(`Expires: ${new Date(s.expiresAt).toLocaleString()}`))}catch(t){Z(t,e.json)}});K.command("unsnooze <pr-url>").description("Unsnooze a PR (re-enable CI failure notifications)").option("--json","Output as JSON").action(async(r,e)=>{try{let{runUnsnooze:t}=await Promise.resolve().then(()=>($o(),Go)),s=await t({prUrl:r});e.json?X(s):s.unsnoozed?(console.log(`Unsnoozed: ${r}`),console.log("CI failure notifications are active again for this PR.")):console.log("PR was not snoozed.")}catch(t){Z(t,e.json)}});K.hook("preAction",async(r,e)=>{r.opts().debug&&(Pr(),S("cli",`Running command: ${e.name()}`));let s=e.name();Xu.includes(s)||await $r()||(console.error("Error: GitHub authentication required."),console.error(""),console.error("Option 1 (Recommended): Install and authenticate GitHub CLI"),console.error(" Install: https://cli.github.com/"),console.error(" Then run: gh auth login"),console.error(""),console.error("Option 2: Set GITHUB_TOKEN environment variable"),console.error(' export GITHUB_TOKEN="your-github-token-here"'),console.error(""),console.error("Then run your command again."),process.exit(1))});K.parse();
1529
1527
  /*! Bundled license information:
1530
1528
 
1531
1529
  @octokit/request-error/dist-src/index.js: