@oss-autopilot/core 0.53.0 → 0.54.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,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var tu=Object.create;var Sr=Object.defineProperty;var su=Object.getOwnPropertyDescriptor;var ru=Object.getOwnPropertyNames;var ou=Object.getPrototypeOf,nu=Object.prototype.hasOwnProperty;var P=(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)Sr(r,t,{get:e[t],enumerable:!0})},iu=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ru(e))!nu.call(r,o)&&o!==t&&Sr(r,o,{get:()=>e[o],enumerable:!(s=su(e,o))||s.enumerable});return r};var z=(r,e,t)=>(t=r!=null?tu(ou(r)):{},iu(e||!r||!r.__esModule?Sr(t,"default",{value:r,enumerable:!0}):t,r));var Xt=Je(Pr=>{var vs=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 vs{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Pr.CommanderError=vs;Pr.InvalidArgumentError=Cr});var Ss=Je(Ar=>{var{InvalidArgumentError:au}=Xt(),kr=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 au(`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 cu(r){let e=r.name()+(r.variadic===!0?"...":"");return r.required?"<"+e+">":"["+e+"]"}Ar.Argument=kr;Ar.humanReadableArgName=cu});var $r=Je(Gr=>{var{humanReadableArgName:uu}=Ss(),Or=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=>uu(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,g){return t.formatItem(d,s,g,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,g)=>{let E=d.map(R=>n(t.styleOptionTerm(t.optionTerm(R)),t.styleOptionDescription(t.optionDescription(R))));i=i.concat(this.formatItemList(g,E,t))}),t.showGlobalOptions){let d=t.visibleGlobalOptions(e).map(g=>n(t.styleOptionTerm(t.optionTerm(g)),t.styleOptionDescription(t.optionDescription(g))));i=i.concat(this.formatItemList("Global Options:",d,t))}return this.groupItems(e.commands,t.visibleCommands(e),d=>d.helpGroup()||"Commands:").forEach((d,g)=>{let E=d.map(R=>n(t.styleSubcommandTerm(t.subcommandTerm(R)),t.styleSubcommandDescription(t.subcommandDescription(R))));i=i.concat(this.formatItemList(g,E,t))}),i.join(`
2
+ "use strict";var nu=Object.create;var Sr=Object.defineProperty;var iu=Object.getOwnPropertyDescriptor;var au=Object.getOwnPropertyNames;var cu=Object.getPrototypeOf,uu=Object.prototype.hasOwnProperty;var C=(r,e)=>()=>(r&&(e=r(r=0)),e);var Je=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ae=(r,e)=>{for(var t in e)Sr(r,t,{get:e[t],enumerable:!0})},lu=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of au(e))!uu.call(r,o)&&o!==t&&Sr(r,o,{get:()=>e[o],enumerable:!(s=iu(e,o))||s.enumerable});return r};var z=(r,e,t)=>(t=r!=null?nu(cu(r)):{},lu(e||!r||!r.__esModule?Sr(t,"default",{value:r,enumerable:!0}):t,r));var Xt=Je(Pr=>{var vs=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 vs{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Pr.CommanderError=vs;Pr.InvalidArgumentError=Cr});var Ss=Je(Ar=>{var{InvalidArgumentError:pu}=Xt(),kr=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 pu(`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 du(r){let e=r.name()+(r.variadic===!0?"...":"");return r.required?"<"+e+">":"["+e+"]"}Ar.Argument=kr;Ar.humanReadableArgName=du});var $r=Je(Gr=>{var{humanReadableArgName:gu}=Ss(),Or=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=>gu(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,g){return t.formatItem(d,s,g,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,g)=>{let E=d.map(R=>n(t.styleOptionTerm(t.optionTerm(R)),t.styleOptionDescription(t.optionDescription(R))));i=i.concat(this.formatItemList(g,E,t))}),t.showGlobalOptions){let d=t.visibleGlobalOptions(e).map(g=>n(t.styleOptionTerm(t.optionTerm(g)),t.styleOptionDescription(t.optionDescription(g))));i=i.concat(this.formatItemList("Global Options:",d,t))}return this.groupItems(e.commands,t.visibleCommands(e),d=>d.helpGroup()||"Commands:").forEach((d,g)=>{let E=d.map(R=>n(t.styleSubcommandTerm(t.subcommandTerm(R)),t.styleSubcommandDescription(t.subcommandDescription(R))));i=i.concat(this.formatItemList(g,E,t))}),i.join(`
3
3
  `)}displayWidth(e){return mn(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,l=(this.helpWidth??80)-t-c-2,d;return l<this.minWidthToWrap||o.preformatted(s)?d=s:d=o.boxWrap(s,l).replace(/\n/g,`
4
4
  `+" ".repeat(t+c)),i+a+" ".repeat(c)+d.replace(/\n/g,`
5
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()],u=this.displayWidth(c[0]);a.forEach(l=>{let d=this.displayWidth(l);if(u+d<=t){c.push(l),u+=d;return}n.push(c.join(""));let g=l.trimStart();c=[g],u=this.displayWidth(g)}),n.push(c.join(""))}),n.join(`
6
- `)}};function mn(r){let e=/\x1b\[\d*(;\d*)*m/g;return r.replace(e,"")}Gr.Help=Or;Gr.stripColor=mn});var xr=Je(Fr=>{var{InvalidArgumentError:lu}=Xt(),Dr=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=pu(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 lu(`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?hn(this.name().replace(/^no-/,"")):hn(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}},Ir=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 hn(r){return r.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function pu(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}
6
+ `)}};function mn(r){let e=/\x1b\[\d*(;\d*)*m/g;return r.replace(e,"")}Gr.Help=Or;Gr.stripColor=mn});var xr=Je(Fr=>{var{InvalidArgumentError:mu}=Xt(),Dr=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=hu(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 mu(`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?hn(this.name().replace(/^no-/,"")):hn(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}},Ir=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 hn(r){return r.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function hu(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}}Fr.Option=Dr;Fr.DualOptions=Ir});var bn=Je(fn=>{function du(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 gu(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=du(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}}Fr.Option=Dr;Fr.DualOptions=Ir});var bn=Je(fn=>{function fu(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 bu(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=fu(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]}?)`:""}fn.suggestSimilar=gu});var wn=Je(Nr=>{var mu=require("node:events").EventEmitter,Ur=require("node:child_process"),Ke=require("node:path"),Cs=require("node:fs"),V=require("node:process"),{Argument:hu,humanReadableArgName:fu}=Ss(),{CommanderError:Mr}=Xt(),{Help:bu,stripColor:yu}=$r(),{Option:yn,DualOptions:_u}=xr(),{suggestSimilar:_n}=bn(),Lr=class r extends mu{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=>V.stdout.write(t),writeErr:t=>V.stderr.write(t),outputError:(t,s)=>s(t),getOutHelpWidth:()=>V.stdout.isTTY?V.stdout.columns:void 0,getErrHelpWidth:()=>V.stderr.isTTY?V.stderr.columns:void 0,getOutHasColors:()=>jr()??(V.stdout.isTTY&&V.stdout.hasColors?.()),getErrHasColors:()=>jr()??(V.stderr.isTTY&&V.stderr.hasColors?.()),stripColor:t=>yu(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 bu,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 hu(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}'.
14
+ (Did you mean ${s[0]}?)`:""}fn.suggestSimilar=bu});var wn=Je(Nr=>{var yu=require("node:events").EventEmitter,Ur=require("node:child_process"),Ke=require("node:path"),Cs=require("node:fs"),V=require("node:process"),{Argument:_u,humanReadableArgName:Ru}=Ss(),{CommanderError:Mr}=Xt(),{Help:wu,stripColor:Eu}=$r(),{Option:yn,DualOptions:Tu}=xr(),{suggestSimilar:_n}=bn(),Lr=class r extends yu{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=>V.stdout.write(t),writeErr:t=>V.stderr.write(t),outputError:(t,s)=>s(t),getOutHelpWidth:()=>V.stdout.isTTY?V.stdout.columns:void 0,getErrHelpWidth:()=>V.stderr.isTTY?V.stderr.columns:void 0,getOutHasColors:()=>jr()??(V.stdout.isTTY&&V.stdout.hasColors?.()),getErrHasColors:()=>jr()??(V.stderr.isTTY&&V.stderr.hasColors?.()),stripColor:t=>Eu(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 wu,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 _u(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
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 Mr(e,t,s)),V.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 yn(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
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 yn)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,u)=>{let l=a.exec(c);return l?l[0]:u},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){V.versions?.electron&&(t.from="electron");let o=V.execArgv??[];(o.includes("-e")||o.includes("--eval")||o.includes("-p")||o.includes("--print"))&&(t.from="eval")}e===void 0&&(e=V.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":V.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
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(Cs.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
@@ -21,18 +21,18 @@ Expecting one of '${s.join("', '")}'`);return this._lifeCycleHooks[e]?this._life
21
21
  - ${o}`;throw new Error(n)}_executeSubCommand(e,t){t=t.slice();let s=!1,o=[".js",".ts",".tsx",".mjs",".cjs"];function n(l,d){let g=Ke.resolve(l,d);if(Cs.existsSync(g))return g;if(o.includes(Ke.extname(d)))return;let E=o.find(R=>Cs.existsSync(`${g}${R}`));if(E)return`${g}${E}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let i=e._executableFile||`${this._name}-${e._name}`,a=this._executableDir||"";if(this._scriptPath){let l;try{l=Cs.realpathSync(this._scriptPath)}catch{l=this._scriptPath}a=Ke.resolve(Ke.dirname(l),a)}if(a){let l=n(a,i);if(!l&&!e._executableFile&&this._scriptPath){let d=Ke.basename(this._scriptPath,Ke.extname(this._scriptPath));d!==this._name&&(l=n(a,`${d}-${e._name}`))}i=l||i}s=o.includes(Ke.extname(i));let c;V.platform!=="win32"?s?(t.unshift(i),t=Rn(V.execArgv).concat(t),c=Ur.spawn(V.argv[0],t,{stdio:"inherit"})):c=Ur.spawn(i,t,{stdio:"inherit"}):(this._checkForMissingExecutable(i,a,e._name),t.unshift(i),t=Rn(V.execArgv).concat(t),c=Ur.spawn(V.execPath,t,{stdio:"inherit"})),c.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(d=>{V.on(d,()=>{c.killed===!1&&c.exitCode===null&&c.kill(d)})});let u=this._exitCallback;c.on("close",l=>{l=l??1,u?u(new Mr(l,"commander.executeSubCommandAsync","(close)")):V.exit(l)}),c.on("error",l=>{if(l.code==="ENOENT")this._checkForMissingExecutable(i,a,e._name);else if(l.code==="EACCES")throw new Error(`'${i}' not executable`);if(!u)V.exit(1);else{let d=new Mr(1,"commander.executeSubCommandAsync","(error)");d.nestedError=l,u(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(l){return l.length>1&&l[0]==="-"}let i=l=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(l)?!this._getCommandAndAncestors().some(d=>d.options.map(g=>g.short).some(g=>/^-\d$/.test(g))):!1,a=null,c=null,u=0;for(;u<e.length||c;){let l=c??e[u++];if(c=null,l==="--"){o===s&&o.push(l),o.push(...e.slice(u));break}if(a&&(!n(l)||i(l))){this.emit(`option:${a.name()}`,l);continue}if(a=null,n(l)){let d=this._findOption(l);if(d){if(d.required){let g=e[u++];g===void 0&&this.optionMissingArgument(d),this.emit(`option:${d.name()}`,g)}else if(d.optional){let g=null;u<e.length&&(!n(e[u])||i(e[u]))&&(g=e[u++]),this.emit(`option:${d.name()}`,g)}else this.emit(`option:${d.name()}`);a=d.variadic?d:null;continue}}if(l.length>2&&l[0]==="-"&&l[1]!=="-"){let d=this._findOption(`-${l[1]}`);if(d){d.required||d.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${d.name()}`,l.slice(2)):(this.emit(`option:${d.name()}`),c=`-${l.slice(2)}`);continue}}if(/^--[^=]+=/.test(l)){let d=l.indexOf("="),g=this._findOption(l.slice(0,d));if(g&&(g.required||g.optional)){this.emit(`option:${g.name()}`,l.slice(d+1));continue}}if(o===t&&n(l)&&!(this.commands.length===0&&i(l))&&(o=s),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&s.length===0){if(this._findCommand(l)){t.push(l),s.push(...e.slice(u));break}else if(this._getHelpCommand()&&l===this._getHelpCommand().name()){t.push(l,...e.slice(u));break}else if(this._defaultCommandName){s.push(l,...e.slice(u));break}}if(this._passThroughOptions){o.push(l,...e.slice(u));break}o.push(l)}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 V.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()}`,V.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new _u(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),u=this.options.find(d=>d.negate&&a===d.attributeName()),l=this.options.find(d=>!d.negate&&a===d.attributeName());return u&&(u.presetArg===void 0&&c===!1||u.presetArg!==void 0&&c===u.presetArg)?u:l||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=_n(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=_n(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=>fu(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(V.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 V.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()}`,V.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new Tu(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),u=this.options.find(d=>d.negate&&a===d.attributeName()),l=this.options.find(d=>!d.negate&&a===d.attributeName());return u&&(u.presetArg===void 0&&c===!1||u.presetArg!==void 0&&c===u.presetArg)?u:l||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=_n(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=_n(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=>Ru(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(V.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 Rn(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 jr(){if(V.env.NO_COLOR||V.env.FORCE_COLOR==="0"||V.env.FORCE_COLOR==="false")return!1;if(V.env.FORCE_COLOR||V.env.CLICOLOR_FORCE!==void 0)return!0}Nr.Command=Lr;Nr.useColor=jr});var Sn=Je(Ge=>{var{Argument:En}=Ss(),{Command:Hr}=wn(),{CommanderError:Ru,InvalidArgumentError:Tn}=Xt(),{Help:wu}=$r(),{Option:vn}=xr();Ge.program=new Hr;Ge.createCommand=r=>new Hr(r);Ge.createOption=(r,e)=>new vn(r,e);Ge.createArgument=(r,e)=>new En(r,e);Ge.Command=Hr;Ge.Option=vn;Ge.Argument=En;Ge.Help=wu;Ge.CommanderError=Ru;Ge.InvalidArgumentError=Tn;Ge.InvalidOptionArgumentError=Tn});function Qe(r,e){return r===void 0||r<e}var bt,Ps,qr,Ye=P(()=>{"use strict";bt={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:{},projectCategories:[],preferredOrgs:[]},Ps={version:2,activeIssues:[],repoScores:{},config:bt,events:[],lastRunAt:new Date().toISOString()},qr=["nonprofit","devtools","infrastructure","web-frameworks","data-ml","education"]});function v(r){return r instanceof Error?r.message:String(r)}function Te(r){if(r&&typeof r=="object"&&"status"in r){let e=r.status;return typeof e=="number"&&Number.isFinite(e)?e:void 0}}function lt(r){let e=Te(r);return e===429?!0:e===403?v(r).toLowerCase().includes("rate limit"):!1}function be(r){let e=Te(r);if(e===401||e===429)return!0;if(e===403){let t=v(r).toLowerCase();return t.includes("rate limit")||t.includes("abuse detection")}return!1}var Zt,Xe,X,ae=P(()=>{"use strict";Zt=class extends Error{constructor(t,s){super(t);this.code=s;this.name="OssAutopilotError"}},Xe=class extends Zt{constructor(e){super(e,"CONFIGURATION_ERROR"),this.name="ConfigurationError"}},X=class extends Zt{constructor(e){super(e,"VALIDATION_ERROR"),this.name="ValidationError"}}});function Vr(){Br=!0}function T(r,e,...t){if(!Br)return;let s=new Date().toISOString();console.error(`[${s}] [DEBUG] [${r}] ${e}`,...t)}function pe(r,e,...t){let s=new Date().toISOString();console.error(`[${s}] [INFO] [${r}] ${e}`,...t)}function m(r,e,...t){let s=new Date().toISOString();console.error(`[${s}] [WARN] [${r}] ${e}`,...t)}async function Wr(r,e,t){if(!Br)return t();let s=performance.now();try{let o=await t(),n=(performance.now()-s).toFixed(0);return T(r,`${e} completed in ${n}ms`),o}catch(o){let n=(performance.now()-s).toFixed(0);throw T(r,`${e} failed after ${n}ms`),o}}var Br,le=P(()=>{"use strict";Br=!1});var On={};ie(On,{DEFAULT_CONCURRENCY:()=>pt,byDateDescending:()=>kn,daysBetween:()=>$e,detectGitHubUsername:()=>$s,extractOwnerRepo:()=>Rt,formatRelativeTime:()=>As,getBackupDir:()=>_t,getCLIVersion:()=>We,getCacheDir:()=>ks,getDataDir:()=>xe,getGitHubToken:()=>et,getGitHubTokenAsync:()=>Os,getStatePath:()=>dt,isOwnRepo:()=>Ue,parseGitHubUrl:()=>de,requireGitHubToken:()=>ye,resetGitHubTokenCache:()=>An,splitRepo:()=>Mt,stateFileExists:()=>Gs});function xe(){let r=Ze.join(Jr.homedir(),".oss-autopilot");return Fe.existsSync(r)||Fe.mkdirSync(r,{recursive:!0,mode:448}),r}function dt(){return Ze.join(xe(),"state.json")}function _t(){let r=Ze.join(xe(),"backups");return Fe.existsSync(r)||Fe.mkdirSync(r,{recursive:!0,mode:448}),r}function ks(){let r=Ze.join(xe(),"cache");return Fe.existsSync(r)||Fe.mkdirSync(r,{recursive:!0,mode:448}),r}function zr(r,e){return Eu.test(r)&&Tu.test(e)}function de(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 zr(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 zr(s,o)?{owner:s,repo:o,number:parseInt(t[3],10),type:"issues"}:null}return null}function Rt(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 zr(t,s)?{owner:t,repo:s}:null}function $e(r,e=new Date){return Math.max(0,Math.floor((e.getTime()-r.getTime())/(1e3*60*60*24)))}function Mt(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 Ue(r,e){return r.toLowerCase()===e.toLowerCase()}function We(){try{let r=Ze.join(Ze.dirname(process.argv[1]),"..","package.json");return JSON.parse(Fe.readFileSync(r,"utf-8")).version}catch{return"0.0.0"}}function As(r){let e=new Date(r),t=Date.now()-e.getTime();if(t<0)return"just now";let 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 kn(r){return(e,t)=>{let s=new Date(r(e)||0).getTime();return new Date(r(t)||0).getTime()-s}}function et(){if(Ce)return Ce;if(es)return null;if(es=!0,process.env.GITHUB_TOKEN)return Ce=process.env.GITHUB_TOKEN,Ce;try{let r=(0,ts.execFileSync)("gh",["auth","token"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],timeout:2e3}).trim();if(r&&r.length>0)return Ce=r,T(yt,"Using GitHub token from gh CLI"),Ce}catch(r){T(yt,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}function ye(){let r=et();if(!r)throw new Xe(`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 Rn(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 jr(){if(V.env.NO_COLOR||V.env.FORCE_COLOR==="0"||V.env.FORCE_COLOR==="false")return!1;if(V.env.FORCE_COLOR||V.env.CLICOLOR_FORCE!==void 0)return!0}Nr.Command=Lr;Nr.useColor=jr});var Sn=Je(Ge=>{var{Argument:En}=Ss(),{Command:Hr}=wn(),{CommanderError:vu,InvalidArgumentError:Tn}=Xt(),{Help:Su}=$r(),{Option:vn}=xr();Ge.program=new Hr;Ge.createCommand=r=>new Hr(r);Ge.createOption=(r,e)=>new vn(r,e);Ge.createArgument=(r,e)=>new En(r,e);Ge.Command=Hr;Ge.Option=vn;Ge.Argument=En;Ge.Help=Su;Ge.CommanderError=vu;Ge.InvalidArgumentError=Tn;Ge.InvalidOptionArgumentError=Tn});function Qe(r,e){return r===void 0||r<e}var bt,Ps,qr,Ye=C(()=>{"use strict";bt={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:{},projectCategories:[],preferredOrgs:[]},Ps={version:2,activeIssues:[],repoScores:{},config:bt,events:[],lastRunAt:new Date().toISOString()},qr=["nonprofit","devtools","infrastructure","web-frameworks","data-ml","education"]});function v(r){return r instanceof Error?r.message:String(r)}function Te(r){if(r&&typeof r=="object"&&"status"in r){let e=r.status;return typeof e=="number"&&Number.isFinite(e)?e:void 0}}function lt(r){let e=Te(r);return e===429?!0:e===403?v(r).toLowerCase().includes("rate limit"):!1}function me(r){let e=Te(r);if(e===401||e===429)return!0;if(e===403){let t=v(r).toLowerCase();return t.includes("rate limit")||t.includes("abuse detection")}return!1}var Zt,Xe,Z,ce=C(()=>{"use strict";Zt=class extends Error{constructor(t,s){super(t);this.code=s;this.name="OssAutopilotError"}},Xe=class extends Zt{constructor(e){super(e,"CONFIGURATION_ERROR"),this.name="ConfigurationError"}},Z=class extends Zt{constructor(e){super(e,"VALIDATION_ERROR"),this.name="ValidationError"}}});function Vr(){Br=!0}function T(r,e,...t){if(!Br)return;let s=new Date().toISOString();console.error(`[${s}] [DEBUG] [${r}] ${e}`,...t)}function pe(r,e,...t){let s=new Date().toISOString();console.error(`[${s}] [INFO] [${r}] ${e}`,...t)}function m(r,e,...t){let s=new Date().toISOString();console.error(`[${s}] [WARN] [${r}] ${e}`,...t)}async function Wr(r,e,t){if(!Br)return t();let s=performance.now();try{let o=await t(),n=(performance.now()-s).toFixed(0);return T(r,`${e} completed in ${n}ms`),o}catch(o){let n=(performance.now()-s).toFixed(0);throw T(r,`${e} failed after ${n}ms`),o}}var Br,le=C(()=>{"use strict";Br=!1});var On={};ae(On,{DEFAULT_CONCURRENCY:()=>pt,byDateDescending:()=>kn,daysBetween:()=>$e,detectGitHubUsername:()=>$s,extractOwnerRepo:()=>Rt,formatRelativeTime:()=>As,getBackupDir:()=>_t,getCLIVersion:()=>We,getCacheDir:()=>ks,getDataDir:()=>xe,getGitHubToken:()=>et,getGitHubTokenAsync:()=>Os,getStatePath:()=>dt,isOwnRepo:()=>Ue,parseGitHubUrl:()=>de,requireGitHubToken:()=>ye,resetGitHubTokenCache:()=>An,splitRepo:()=>Mt,stateFileExists:()=>Gs});function xe(){let r=Ze.join(Jr.homedir(),".oss-autopilot");return Fe.existsSync(r)||Fe.mkdirSync(r,{recursive:!0,mode:448}),r}function dt(){return Ze.join(xe(),"state.json")}function _t(){let r=Ze.join(xe(),"backups");return Fe.existsSync(r)||Fe.mkdirSync(r,{recursive:!0,mode:448}),r}function ks(){let r=Ze.join(xe(),"cache");return Fe.existsSync(r)||Fe.mkdirSync(r,{recursive:!0,mode:448}),r}function zr(r,e){return Cu.test(r)&&Pu.test(e)}function de(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 zr(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 zr(s,o)?{owner:s,repo:o,number:parseInt(t[3],10),type:"issues"}:null}return null}function Rt(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 zr(t,s)?{owner:t,repo:s}:null}function $e(r,e=new Date){return Math.max(0,Math.floor((e.getTime()-r.getTime())/(1e3*60*60*24)))}function Mt(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 Ue(r,e){return r.toLowerCase()===e.toLowerCase()}function We(){try{let r=Ze.join(Ze.dirname(process.argv[1]),"..","package.json");return JSON.parse(Fe.readFileSync(r,"utf-8")).version}catch{return"0.0.0"}}function As(r){let e=new Date(r),t=Date.now()-e.getTime();if(t<0)return"just now";let 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 kn(r){return(e,t)=>{let s=new Date(r(e)||0).getTime();return new Date(r(t)||0).getTime()-s}}function et(){if(Ce)return Ce;if(es)return null;if(es=!0,process.env.GITHUB_TOKEN)return Ce=process.env.GITHUB_TOKEN,Ce;try{let r=(0,ts.execFileSync)("gh",["auth","token"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],timeout:2e3}).trim();if(r&&r.length>0)return Ce=r,T(yt,"Using GitHub token from gh CLI"),Ce}catch(r){T(yt,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}function ye(){let r=et();if(!r)throw new Xe(`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}function An(){Ce=null,es=!1}async function Os(){if(Ce)return Ce;if(es)return null;if(es=!0,process.env.GITHUB_TOKEN)return Ce=process.env.GITHUB_TOKEN,Ce;try{let r=await new Promise((e,t)=>{(0,ts.execFile)("gh",["auth","token"],{encoding:"utf-8",timeout:2e3},(s,o)=>{s?t(s):e(o.trim())})});if(r&&r.length>0)return Ce=r,T(yt,"Using GitHub token from gh CLI (async)"),Ce}catch(r){T(yt,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}function Gs(){let r=Ze.join(Jr.homedir(),".oss-autopilot","state.json");return Fe.existsSync(r)}async function $s(){try{let r=await new Promise((e,t)=>{(0,ts.execFile)("gh",["api","user","--jq",".login"],{encoding:"utf-8",timeout:5e3},(s,o)=>{s?t(s):e(o.trim())})});return r&&vu.test(r)?(T(yt,`Detected GitHub username: ${r}`),r):(T(yt,`gh api user returned invalid username: "${r}"`),null)}catch(r){return T(yt,"detectGitHubUsername failed",r),null}}var Fe,Ze,Jr,ts,pt,yt,Ce,es,Eu,Tu,vu,Ee=P(()=>{"use strict";Fe=z(require("fs"),1),Ze=z(require("path"),1),Jr=z(require("os"),1),ts=require("child_process");ae();le();pt=5,yt="utils",Ce=null,es=!1;Eu=/^[a-zA-Z0-9_-]+$/,Tu=/^[a-zA-Z0-9_.-]+$/;vu=/^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$/});function Pu(r){try{let e=JSON.parse(L.readFileSync(r,"utf-8"));return Date.now()-e.timestamp>Cu}catch(e){return T(N,"Lock file unreadable or invalid JSON, treating as stale",e),!0}}function $n(r){let e=JSON.stringify({pid:process.pid,timestamp:Date.now()});try{L.writeFileSync(r,e,{flag:"wx"});return}catch(t){T(N,"Lock file already exists, checking staleness",t)}if(!Pu(r))throw new Error("State file is locked by another process");try{L.unlinkSync(r)}catch(t){T(N,"Stale lock already removed by another process",t)}try{L.writeFileSync(r,e,{flag:"wx"})}catch(t){throw T(N,"Lock re-acquire failed (race condition)",t),new Error("State file is locked by another process",{cause:t})}}function Dn(r){try{JSON.parse(L.readFileSync(r,"utf-8")).pid===process.pid&&L.unlinkSync(r)}catch(e){T(N,"Lock file already removed or unreadable during release",e)}}function rs(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 In(r){T(N,"Migrating state from v1 to v2 (fresh GitHub fetching)...");let e=r.mergedPRs||[],t=r.closedPRs||[],s={...r.repoScores||{}};for(let n of[...e,...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 T(N,`Migration complete. Preserved ${Object.keys(s).length} repo scores.`),o}function Fn(r){if(!r||typeof r!="object")return!1;let e=r;return e.repoScores===void 0&&(e.repoScores={}),e.events===void 0&&(e.events=[]),e.mergedPRs===void 0&&(e.mergedPRs=[]),typeof e.version=="number"&&typeof e.repoScores=="object"&&e.repoScores!==null&&Array.isArray(e.events)&&typeof e.config=="object"&&e.config!==null?e.version===1?Array.isArray(e.activePRs)&&Array.isArray(e.dormantPRs)&&Array.isArray(e.mergedPRs)&&Array.isArray(e.closedPRs):!0:!1}function Is(){return{version:Su,activeIssues:[],repoScores:{},config:{...Ps.config,setupComplete:!1,languages:[...Ps.config.languages],labels:[...Ps.config.labels],excludeRepos:[],trustedProjects:[],shelvedPRUrls:[],dismissedIssues:{}},events:[],lastRunAt:new Date().toISOString()}}function ku(){let r=dt();if(L.existsSync(r)||!L.existsSync(ss))return!1;T(N,"Migrating state from ./data/ to ~/.oss-autopilot/...");try{if(xe(),L.copyFileSync(ss,r),T(N,`Migrated state file to ${r}`),L.existsSync(wt)){let t=_t(),s=L.readdirSync(wt).filter(o=>o.startsWith("state-")&&o.endsWith(".json"));for(let o of s){let n=Me.join(wt,o),i=Me.join(t,o);L.copyFileSync(n,i)}T(N,`Migrated ${s.length} backup files`)}if(L.unlinkSync(ss),T(N,"Removed legacy state file"),L.existsSync(wt)){let t=L.readdirSync(wt);for(let s of t)L.unlinkSync(Me.join(wt,s));L.rmdirSync(wt)}let e=Me.dirname(ss);return L.existsSync(e)&&L.readdirSync(e).length===0&&(L.rmdirSync(e),T(N,"Removed empty legacy data directory")),T(N,"Migration complete!"),!0}catch(e){if(m(N,`Failed to migrate state: ${v(e)}`),L.existsSync(r)&&L.existsSync(ss))try{L.unlinkSync(r),T(N,"Cleaned up partial migration - removed incomplete new state file")}catch(t){m(N,"Could not clean up partial migration file"),T(N,"Partial migration cleanup failed",t)}return m(N,"To resolve this issue:"),m(N," 1. Ensure you have write permissions to ~/.oss-autopilot/"),m(N," 2. Check available disk space"),m(N," 3. Manually copy ./data/state.json to ~/.oss-autopilot/state.json"),m(N," 4. Or delete ./data/state.json to start fresh"),!1}}function Gn(){let r=_t();if(!L.existsSync(r))return null;let e=L.readdirSync(r).filter(t=>t.startsWith("state-")&&t.endsWith(".json")).sort().reverse();for(let t of e){let s=Me.join(r,t);try{let o=L.readFileSync(s,"utf-8"),n=JSON.parse(o);if(Fn(n)){T(N,`Successfully restored state from backup: ${t}`),n.version===1&&(n=In(n));let i=Object.keys(n.repoScores).length;T(N,`Restored state v${n.version}: ${i} repo scores`);let a=dt();return rs(a,JSON.stringify(n,null,2),384),T(N,"Restored backup written to main state file"),n}}catch(o){m(N,`Backup ${t} is corrupted, trying next...`),T(N,`Backup ${t} parse failed`,o)}}return null}function Kr(){ku();let r=dt();try{if(L.existsSync(r)){let e=L.readFileSync(r,"utf-8"),t=JSON.parse(e);if(!Fn(t)){m(N,"Invalid state file structure, attempting to restore from backup...");let n=Gn();if(n){let i=Ds(r);return{state:n,mtimeMs:i}}return m(N,"No valid backup found, starting fresh"),{state:Is(),mtimeMs:0}}t.version===1&&(t=In(t),rs(r,JSON.stringify(t,null,2),384),T(N,"Migrated state saved"));try{let n=!1,i=t.config;if(i.snoozedPRs&&(delete i.snoozedPRs,n=!0),t.config.dismissedIssues){let a=/\/pull\/\d+$/;for(let c of Object.keys(t.config.dismissedIssues))a.test(c)&&(delete t.config.dismissedIssues[c],n=!0)}n&&(rs(r,JSON.stringify(t,null,2),384),m(N,"Cleaned up removed features (snoozedPRs, dismissed PR URLs) from persisted state"))}catch(n){m(N,`Failed to clean up removed features from state: ${v(n)}`)}let s=Ds(r),o=Object.keys(t.repoScores).length;return T(N,`Loaded state v${t.version}: ${o} repo scores tracked`),{state:t,mtimeMs:s}}}catch(e){m(N,"Error loading state:",e),m(N,"Attempting to restore from backup...");let t=Gn();if(t){let s=Ds(r);return{state:t,mtimeMs:s}}m(N,"No valid backup found, starting fresh")}return T(N,"No existing state found, initializing..."),{state:Is(),mtimeMs:0}}function Ds(r){try{return L.statSync(r).mtimeMs}catch(e){return T(N,`Could not read state file mtime (reload detection will always trigger): ${v(e)}`),0}}function Au(){let r=_t();try{let e=L.readdirSync(r).filter(t=>t.startsWith("state-")).sort().reverse();for(let t of e.slice(10))try{L.unlinkSync(Me.join(r,t))}catch(s){m(N,`Could not delete old backup ${t}:`,v(s))}}catch(e){m(N,"Could not clean up backups:",v(e))}}function xn(r){let e=dt(),t=e+".lock",s=_t();$n(t);try{try{if(L.existsSync(e)){let n=new Date().toISOString().replace(/[:.]/g,"-"),i=Math.random().toString(36).slice(2,8).padEnd(6,"0"),a=Me.join(s,`state-${n}-${i}.json`);L.copyFileSync(e,a),L.chmodSync(a,384),Au()}}catch(n){m(N,`Could not create backup before save: ${v(n)}`)}rs(e,JSON.stringify(r,null,2),384);let o=Ds(e);return T(N,"State saved successfully"),o}finally{Dn(t)}}function Un(r){try{let e=dt();if(L.statSync(e).mtimeMs===r)return null;let s=Kr();try{s.mtimeMs=L.statSync(e).mtimeMs}catch(o){T(N,"Could not re-read mtime after reload (will retry next cycle)",o)}return s}catch(e){return m(N,`Failed to reload state from disk: ${v(e)}`),null}}var L,Me,N,Su,Cu,ss,wt,Qr=P(()=>{"use strict";L=z(require("fs"),1),Me=z(require("path"),1);Ye();Ee();ae();le();N="state",Su=2,Cu=3e4,ss=Me.join(process.cwd(),"data","state.json"),wt=Me.join(process.cwd(),"data","backups")});function Gu(r){return{repo:r,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}}}function $u(r){let e=5;if(r.mergedPRCount>0){let s=Math.min(Math.round(Math.log2(r.mergedPRCount+1)*2),5);e+=s}let t=Math.min(r.closedWithoutMergeCount,3);if(e-=t,r.lastMergedAt){let s=new Date(r.lastMergedAt);isNaN(s.getTime())?m(Yr,`Invalid lastMergedAt date for ${r.repo}: "${r.lastMergedAt}". Skipping recency bonus.`):Math.floor((Date.now()-s.getTime())/864e5)<=90&&(e+=1)}return r.signals.isResponsive&&(e+=1),r.signals.hasHostileComments&&(e-=2),Math.max(1,Math.min(10,e))}function Mn(r,e){return r.repoScores[e]}function os(r,e,t){r.repoScores[e]||(r.repoScores[e]=Gu(e));let s=r.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=$u(s),s.lastEvaluatedAt=new Date().toISOString(),T(Yr,`Updated repo score for ${e}: ${s.score}/10`)}function Ln(r,e){let t=(r.repoScores[e]?.mergedPRCount??0)+1;os(r,e,{mergedPRCount:t,lastMergedAt:new Date().toISOString()})}function jn(r,e){let t=(r.repoScores[e]?.closedWithoutMergeCount??0)+1;os(r,e,{closedWithoutMergeCount:t})}function Nn(r,e){os(r,e,{signals:{hasHostileComments:!0}})}function Hn(r){return Object.values(r.repoScores).filter(e=>e.mergedPRCount>0).sort((e,t)=>t.mergedPRCount-e.mergedPRCount).map(e=>e.repo)}function qn(r){return Object.values(r.repoScores).filter(e=>e.mergedPRCount===0&&e.closedWithoutMergeCount===0).sort((e,t)=>t.score-e.score).map(e=>e.repo)}function Bn(r,e){let t=e??r.config.minRepoScoreThreshold;return Object.values(r.repoScores).filter(s=>s.score>=t).sort((s,o)=>o.score-s.score).map(s=>s.repo)}function Vn(r,e){let t=e??r.config.minRepoScoreThreshold,s=Date.now();return Object.values(r.repoScores).filter(o=>{if(o.score>t)return!1;let n=s-new Date(o.lastEvaluatedAt).getTime();return Number.isFinite(n)?n<=Ou:(m(Yr,`Invalid lastEvaluatedAt for repo ${o.repo}: "${o.lastEvaluatedAt}", treating as stale`),!1)}).sort((o,n)=>o.score-n.score).map(o=>o.repo)}function Wn(r){let e=0,t=0,s=0;for(let i of Object.values(r.repoScores))Qe(i.stargazersCount,r.config.minStars??50)||(s++,e+=i.mergedPRCount,t+=i.closedWithoutMergeCount);let o=e+t,n=o>0?e/o*100:0;return{mergedPRs:e,closedPRs:t,activeIssues:0,trustedProjects:r.config.trustedProjects.length,mergeRate:n.toFixed(1)+"%",totalTracked:s,needsResponse:0}}var Yr,Ou,zn=P(()=>{"use strict";Ye();le();Yr="scoring",Ou=720*60*60*1e3});function j(){return Xr||(Xr=new Fs),Xr}var tt,Jn,Fs,Xr,Lt=P(()=>{"use strict";Qr();zn();le();Qr();tt="state",Jn=1e3,Fs=class r{state;inMemoryOnly;lastLoadedMtimeMs=0;constructor(e=!1){if(this.inMemoryOnly=e,e)this.state=Is();else{let t=Kr();this.state=t.state,this.lastLoadedMtimeMs=t.mtimeMs}}isSetupComplete(){return this.state.config.setupComplete===!0}markSetupComplete(){this.state.config.setupComplete=!0,this.state.config.setupCompletedAt=new Date().toISOString()}initializeWithDefaults(e){if(this.state.config.setupComplete){T(tt,`Setup already complete, skipping initializeWithDefaults for "${e}"`);return}this.state.config.githubUsername=e,this.markSetupComplete(),T(tt,`Initialized with defaults for user "${e}"`),this.save()}save(){this.state.lastRunAt=new Date().toISOString(),!this.inMemoryOnly&&(this.lastLoadedMtimeMs=xn(this.state))}getState(){return this.state}reloadIfChanged(){if(this.inMemoryOnly)return!1;let e=Un(this.lastLoadedMtimeMs);return e?(this.state=e.state,this.lastLoadedMtimeMs=e.mtimeMs,!0):!1}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}getMergedPRs(){return this.state.mergedPRs??[]}addMergedPRs(e){if(e.length===0)return;this.state.mergedPRs||(this.state.mergedPRs=[]);let t=new Set(this.state.mergedPRs.map(o=>o.url)),s=e.filter(o=>!t.has(o.url));s.length!==0&&(this.state.mergedPRs.push(...s),this.state.mergedPRs.sort((o,n)=>n.mergedAt.localeCompare(o.mergedAt)),T(tt,`Added ${s.length} merged PRs (total: ${this.state.mergedPRs.length})`))}getMergedPRWatermark(){return this.state.mergedPRs?.[0]?.mergedAt||void 0}getClosedPRs(){return this.state.closedPRs??[]}addClosedPRs(e){if(e.length===0)return;this.state.closedPRs||(this.state.closedPRs=[]);let t=new Set(this.state.closedPRs.map(o=>o.url)),s=e.filter(o=>!t.has(o.url));s.length!==0&&(this.state.closedPRs.push(...s),this.state.closedPRs.sort((o,n)=>n.closedAt.localeCompare(o.closedAt)),T(tt,`Added ${s.length} closed PRs (total: ${this.state.closedPRs.length})`))}getClosedPRWatermark(){return this.state.closedPRs?.[0]?.closedAt||void 0}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>Jn&&(this.state.events=this.state.events.slice(-Jn))}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)){T(tt,`Issue ${e.url} already tracked`);return}this.state.activeIssues.push(e),T(tt,`Added issue: ${e.repo}#${e.number}`)}addTrustedProject(e){this.state.config.trustedProjects.includes(e)||(this.state.config.trustedProjects.push(e),T(tt,`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]))}cleanupExcludedData(e,t){let s=i=>r.matchesExclusion(i,e,t),o=this.state.config.trustedProjects.length;this.state.config.trustedProjects=this.state.config.trustedProjects.filter(i=>!s(i));let n=o-this.state.config.trustedProjects.length;n>0&&T(tt,`Removed ${n} trusted project(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(),T(tt,`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]}setStatusOverride(e,t,s){this.state.config.statusOverrides||(this.state.config.statusOverrides={}),this.state.config.statusOverrides[e]={status:t,setAt:new Date().toISOString(),lastActivityAt:s}}clearStatusOverride(e){return!this.state.config.statusOverrides||!(e in this.state.config.statusOverrides)?!1:(delete this.state.config.statusOverrides[e],!0)}getStatusOverride(e,t){let s=this.state.config.statusOverrides?.[e];if(s){if(t&&t>s.lastActivityAt){this.clearStatusOverride(e);return}return s}}getRepoScore(e){return Mn(this.state,e)}updateRepoScore(e,t){os(this.state,e,t)}incrementMergedCount(e){Ln(this.state,e)}incrementClosedCount(e){jn(this.state,e)}markRepoHostile(e){Nn(this.state,e)}getReposWithMergedPRs(){return Hn(this.state)}getReposWithOpenPRs(){return qn(this.state)}getHighScoringRepos(e){return Bn(this.state,e)}getLowScoringRepos(e){return Vn(this.state,e)}getStats(){return Wn(this.state)}},Xr=null});function gt(){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 ns=P(()=>{});function xs(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)=>xs.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 Kn=P(()=>{});function Qn(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 Yn=P(()=>{});function Xn(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 Zn=P(()=>{});function si(r,e,t){let s=ti(Xn,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]=ti(Qn,null).apply(null,n)})}function Iu(){let r=Symbol("Singular"),e={registry:{}},t=xs.bind(null,e,r);return si(t,e,r),t}function Fu(){let r={registry:{}},e=xs.bind(null,r);return si(e,r),e}var ei,ti,ri,oi=P(()=>{Kn();Yn();Zn();ei=Function.bind,ti=ei.bind(ei);ri={Singular:Iu,Collection:Fu}});function Lu(r){return r?Object.keys(r).reduce((e,t)=>(e[t.toLowerCase()]=r[t],e),{}):{}}function ju(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 ai(r,e){let t=Object.assign({},r);return Object.keys(e).forEach(s=>{ju(e[s])?s in r?t[s]=ai(r[s],e[s]):Object.assign(t,{[s]:e[s]}):Object.assign(t,{[s]:e[s]})}),t}function ni(r){for(let e in r)r[e]===void 0&&delete r[e];return r}function eo(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=Lu(t.headers),ni(t),ni(t.headers);let s=ai(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 Nu(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 qu(r){return r.replace(/(?:^\W+)|(?:(?<!\W)\W+$)/g,"").split(/,/)}function Bu(r){let e=r.match(Hu);return e?e.map(qu).reduce((t,s)=>t.concat(s),[]):[]}function ii(r,e){let t={__proto__:null};for(let s of Object.keys(r))e.indexOf(s)===-1&&(t[s]=r[s]);return t}function ci(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 Nt(r){return encodeURIComponent(r).replace(/[!'()*]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function is(r,e,t){return e=r==="+"||r==="#"?ci(e):Nt(e),t?Nt(t)+"="+e:e}function jt(r){return r!=null}function Zr(r){return r===";"||r==="&"||r==="?"}function Vu(r,e,t,s){var o=r[t],n=[];if(jt(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(is(e,o,Zr(e)?t:""));else if(s==="*")Array.isArray(o)?o.filter(jt).forEach(function(i){n.push(is(e,i,Zr(e)?t:""))}):Object.keys(o).forEach(function(i){jt(o[i])&&n.push(is(e,o[i],i))});else{let i=[];Array.isArray(o)?o.filter(jt).forEach(function(a){i.push(is(e,a))}):Object.keys(o).forEach(function(a){jt(o[a])&&(i.push(Nt(a)),i.push(is(e,o[a].toString())))}),Zr(e)?n.push(Nt(t)+"="+i.join(",")):i.length!==0&&n.push(i.join(","))}else e===";"?jt(o)&&n.push(Nt(t)):o===""&&(e==="&"||e==="?")?n.push(Nt(t)+"="):o===""&&n.push("");return n}function Wu(r){return{expand:zu.bind(null,r)}}function zu(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(u){var l=/([^:\*]*)(?::(\d+)|(\*))?/.exec(u);c.push(Vu(e,a,l[1],l[2]||l[3]))}),a&&a!=="+"){var i=",";return a==="?"?i="&":a!=="#"&&(i=a),(c.length!==0?a:"")+c.join(i)}else return c.join(",")}else return ci(n)}),r==="/"?r:r.replace(/\/$/,"")}function ui(r){let e=r.method.toUpperCase(),t=(r.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),s=Object.assign({},r.headers),o,n=ii(r,["method","baseUrl","url","headers","request","mediaType"]),i=Bu(t);t=Wu(t).expand(n),/^http/.test(t)||(t=r.baseUrl+t);let a=Object.keys(r).filter(l=>i.includes(l)).concat("baseUrl"),c=ii(n,a);if(!/application\/octet-stream/i.test(s.accept)&&(r.mediaType.format&&(s.accept=s.accept.split(/,/).map(l=>l.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${r.mediaType.format}`)).join(",")),t.endsWith("/graphql")&&r.mediaType.previews?.length)){let l=s.accept.match(/(?<![\w-])[\w-]+(?=-preview)/g)||[];s.accept=l.concat(r.mediaType.previews).map(d=>{let g=r.mediaType.format?`.${r.mediaType.format}`:"+json";return`application/vnd.github.${d}-preview${g}`}).join(",")}return["GET","HEAD"].includes(e)?t=Nu(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 Ju(r,e,t){return ui(eo(r,e,t))}function li(r,e){let t=eo(r,e),s=Ju.bind(null,t);return Object.assign(s,{DEFAULTS:t,defaults:li.bind(null,t),merge:eo.bind(null,t),parse:ui})}var xu,Uu,Mu,Hu,pi,di=P(()=>{ns();xu="0.0.0-development",Uu=`octokit-endpoint.js/${xu} ${gt()}`,Mu={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":Uu},mediaType:{format:""}};Hu=/\{[^{}}]+\}/g;pi=li(null,Mu)});var fi=Je((cg,as)=>{"use strict";var Ls=function(){};Ls.prototype=Object.create(null);var Us=/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu,Ms=/\\([\v\u0020-\u00ff])/gu,gi=/^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u,Et={type:"",parameters:new Ls};Object.freeze(Et.parameters);Object.freeze(Et);function mi(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(gi.test(t)===!1)throw new TypeError("invalid media type");let s={type:t.toLowerCase(),parameters:new Ls};if(e===-1)return s;let o,n,i;for(Us.lastIndex=e;n=Us.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),Ms.test(i)&&(i=i.replace(Ms,"$1"))),s.parameters[o]=i}if(e!==r.length)throw new TypeError("invalid parameter format");return s}function hi(r){if(typeof r!="string")return Et;let e=r.indexOf(";"),t=e!==-1?r.slice(0,e).trim():r.trim();if(gi.test(t)===!1)return Et;let s={type:t.toLowerCase(),parameters:new Ls};if(e===-1)return s;let o,n,i;for(Us.lastIndex=e;n=Us.exec(r);){if(n.index!==e)return Et;e+=n[0].length,o=n[1].toLowerCase(),i=n[2],i[0]==='"'&&(i=i.slice(1,i.length-1),Ms.test(i)&&(i=i.replace(Ms,"$1"))),s.parameters[o]=i}return e!==r.length?Et:s}as.exports.default={parse:mi,safeParse:hi};as.exports.parse=mi;as.exports.safeParse=hi;as.exports.defaultContentType=Et});var Ku,_i,to,bi,Qu,Yu,Xu,Ri,Zu,el,tl,wi,yi,sl,rl,Ei,Ti=P(()=>{Ku=/^-?\d+$/,_i=/^-?\d+n+$/,to=JSON.stringify,bi=JSON.parse,Qu=/^-?\d+n$/,Yu=/([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,Xu=/([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,Ri=(r,e,t)=>"rawJSON"in JSON?to(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?to(r,(i,a)=>typeof a=="string"&&!!a.match(_i)||typeof a=="bigint"?a.toString()+"n":typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t).replace(Yu,"$1$2$3").replace(Xu,"$1$2$3"):to(r,e,t),Zu=()=>JSON.parse("1",(r,e,t)=>!!t&&t.source==="1"),el=(r,e,t,s)=>typeof e=="string"&&e.match(Qu)?BigInt(e.slice(0,-1)):typeof e=="string"&&e.match(_i)?e.slice(0,-1):typeof s!="function"?e:s(r,e,t),tl=(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&&Ku.test(o.source);return n&&i?BigInt(o.source):typeof e!="function"?s:e(t,s,o)}),wi=Number.MAX_SAFE_INTEGER.toString(),yi=wi.length,sl=/"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,rl=/^"-?\d+n+"$/,Ei=(r,e)=>{if(!r)return bi(r,e);if(Zu())return tl(r,e);let t=r.replace(sl,(s,o,n,i)=>{let a=s[0]==='"';if(a&&!!s.match(rl))return s.substring(0,s.length-1)+'n"';let u=n||i,l=o&&(o.length<yi||o.length===yi&&o<=wi);return a||u||l?s:'"'+s+'n"'});return bi(t,(s,o,n)=>el(s,o,n,e))}});var Tt,vi=P(()=>{Tt=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 il(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 Ci(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=il(r.body)||Array.isArray(r.body)?Ri(r.body):r.body,n=Object.fromEntries(Object.entries(r.headers).map(([d,g])=>[d,String(g)])),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 g="Unknown Error";if(d instanceof Error){if(d.name==="AbortError")throw d.status=500,d;g=d.message,d.name==="TypeError"&&"cause"in d&&(d.cause instanceof Error?g=d.cause.message:typeof d.cause=="string"&&(g=d.cause))}let E=new Tt(g,500,{request:r});throw E.cause=d,E}let a=i.status,c=i.url,u={};for(let[d,g]of i.headers)u[d]=g;let l={url:c,status:a,headers:u,data:""};if("deprecation"in u){let d=u.link&&u.link.match(/<([^<>]+)>; rel="deprecation"/),g=d&&d.pop();t.warn(`[@octokit/request] "${r.method} ${r.url}" is deprecated. It is scheduled to be removed on ${u.sunset}${g?`. See ${g}`:""}`)}if(a===204||a===205)return l;if(r.method==="HEAD"){if(a<400)return l;throw new Tt(i.statusText,a,{response:l,request:r})}if(a===304)throw l.data=await so(i),new Tt("Not modified",a,{response:l,request:r});if(a>=400)throw l.data=await so(i),new Tt(cl(l.data),a,{response:l,request:r});return l.data=s?await so(i):i.body,l}async function so(r){let e=r.headers.get("content-type");if(!e)return r.text().catch(Si);let t=(0,Pi.safeParse)(e);if(al(t)){let s="";try{return s=await r.text(),Ei(s)}catch{return s}}else return t.type.startsWith("text/")||t.parameters.charset?.toLowerCase()==="utf-8"?r.text().catch(Si):r.arrayBuffer().catch(()=>new ArrayBuffer(0))}function al(r){return r.type==="application/json"||r.type==="application/scim+json"}function cl(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 ro(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 Ci(t.parse(i));let a=(c,u)=>Ci(t.parse(t.merge(c,u)));return Object.assign(a,{endpoint:t,defaults:ro.bind(null,t)}),i.request.hook(a,i)},{endpoint:t,defaults:ro.bind(null,t)})}var Pi,ol,nl,Si,cs,oo=P(()=>{di();ns();Pi=z(fi(),1);Ti();vi();ol="10.0.8",nl={headers:{"user-agent":`octokit-request.js/${ol} ${gt()}`}};Si=()=>"";cs=ro(pi,nl);});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}function An(){Ce=null,es=!1}async function Os(){if(Ce)return Ce;if(es)return null;if(es=!0,process.env.GITHUB_TOKEN)return Ce=process.env.GITHUB_TOKEN,Ce;try{let r=await new Promise((e,t)=>{(0,ts.execFile)("gh",["auth","token"],{encoding:"utf-8",timeout:2e3},(s,o)=>{s?t(s):e(o.trim())})});if(r&&r.length>0)return Ce=r,T(yt,"Using GitHub token from gh CLI (async)"),Ce}catch(r){T(yt,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}function Gs(){let r=Ze.join(Jr.homedir(),".oss-autopilot","state.json");return Fe.existsSync(r)}async function $s(){try{let r=await new Promise((e,t)=>{(0,ts.execFile)("gh",["api","user","--jq",".login"],{encoding:"utf-8",timeout:5e3},(s,o)=>{s?t(s):e(o.trim())})});return r&&ku.test(r)?(T(yt,`Detected GitHub username: ${r}`),r):(T(yt,`gh api user returned invalid username: "${r}"`),null)}catch(r){return T(yt,"detectGitHubUsername failed",r),null}}var Fe,Ze,Jr,ts,pt,yt,Ce,es,Cu,Pu,ku,Ee=C(()=>{"use strict";Fe=z(require("fs"),1),Ze=z(require("path"),1),Jr=z(require("os"),1),ts=require("child_process");ce();le();pt=5,yt="utils",Ce=null,es=!1;Cu=/^[a-zA-Z0-9_-]+$/,Pu=/^[a-zA-Z0-9_.-]+$/;ku=/^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$/});function Gu(r){try{let e=JSON.parse(L.readFileSync(r,"utf-8"));return Date.now()-e.timestamp>Ou}catch(e){return T(N,"Lock file unreadable or invalid JSON, treating as stale",e),!0}}function $n(r){let e=JSON.stringify({pid:process.pid,timestamp:Date.now()});try{L.writeFileSync(r,e,{flag:"wx"});return}catch(t){T(N,"Lock file already exists, checking staleness",t)}if(!Gu(r))throw new Error("State file is locked by another process");try{L.unlinkSync(r)}catch(t){T(N,"Stale lock already removed by another process",t)}try{L.writeFileSync(r,e,{flag:"wx"})}catch(t){throw T(N,"Lock re-acquire failed (race condition)",t),new Error("State file is locked by another process",{cause:t})}}function Dn(r){try{JSON.parse(L.readFileSync(r,"utf-8")).pid===process.pid&&L.unlinkSync(r)}catch(e){T(N,"Lock file already removed or unreadable during release",e)}}function rs(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 In(r){T(N,"Migrating state from v1 to v2 (fresh GitHub fetching)...");let e=r.mergedPRs||[],t=r.closedPRs||[],s={...r.repoScores||{}};for(let n of[...e,...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 T(N,`Migration complete. Preserved ${Object.keys(s).length} repo scores.`),o}function Fn(r){if(!r||typeof r!="object")return!1;let e=r;return e.repoScores===void 0&&(e.repoScores={}),e.events===void 0&&(e.events=[]),e.mergedPRs===void 0&&(e.mergedPRs=[]),typeof e.version=="number"&&typeof e.repoScores=="object"&&e.repoScores!==null&&Array.isArray(e.events)&&typeof e.config=="object"&&e.config!==null?e.version===1?Array.isArray(e.activePRs)&&Array.isArray(e.dormantPRs)&&Array.isArray(e.mergedPRs)&&Array.isArray(e.closedPRs):!0:!1}function Is(){return{version:Au,activeIssues:[],repoScores:{},config:{...Ps.config,setupComplete:!1,languages:[...Ps.config.languages],labels:[...Ps.config.labels],excludeRepos:[],trustedProjects:[],shelvedPRUrls:[],dismissedIssues:{}},events:[],lastRunAt:new Date().toISOString()}}function $u(){let r=dt();if(L.existsSync(r)||!L.existsSync(ss))return!1;T(N,"Migrating state from ./data/ to ~/.oss-autopilot/...");try{if(xe(),L.copyFileSync(ss,r),T(N,`Migrated state file to ${r}`),L.existsSync(wt)){let t=_t(),s=L.readdirSync(wt).filter(o=>o.startsWith("state-")&&o.endsWith(".json"));for(let o of s){let n=Me.join(wt,o),i=Me.join(t,o);L.copyFileSync(n,i)}T(N,`Migrated ${s.length} backup files`)}if(L.unlinkSync(ss),T(N,"Removed legacy state file"),L.existsSync(wt)){let t=L.readdirSync(wt);for(let s of t)L.unlinkSync(Me.join(wt,s));L.rmdirSync(wt)}let e=Me.dirname(ss);return L.existsSync(e)&&L.readdirSync(e).length===0&&(L.rmdirSync(e),T(N,"Removed empty legacy data directory")),T(N,"Migration complete!"),!0}catch(e){if(m(N,`Failed to migrate state: ${v(e)}`),L.existsSync(r)&&L.existsSync(ss))try{L.unlinkSync(r),T(N,"Cleaned up partial migration - removed incomplete new state file")}catch(t){m(N,"Could not clean up partial migration file"),T(N,"Partial migration cleanup failed",t)}return m(N,"To resolve this issue:"),m(N," 1. Ensure you have write permissions to ~/.oss-autopilot/"),m(N," 2. Check available disk space"),m(N," 3. Manually copy ./data/state.json to ~/.oss-autopilot/state.json"),m(N," 4. Or delete ./data/state.json to start fresh"),!1}}function Gn(){let r=_t();if(!L.existsSync(r))return null;let e=L.readdirSync(r).filter(t=>t.startsWith("state-")&&t.endsWith(".json")).sort().reverse();for(let t of e){let s=Me.join(r,t);try{let o=L.readFileSync(s,"utf-8"),n=JSON.parse(o);if(Fn(n)){T(N,`Successfully restored state from backup: ${t}`),n.version===1&&(n=In(n));let i=Object.keys(n.repoScores).length;T(N,`Restored state v${n.version}: ${i} repo scores`);let a=dt();return rs(a,JSON.stringify(n,null,2),384),T(N,"Restored backup written to main state file"),n}}catch(o){m(N,`Backup ${t} is corrupted, trying next...`),T(N,`Backup ${t} parse failed`,o)}}return null}function Kr(){$u();let r=dt();try{if(L.existsSync(r)){let e=L.readFileSync(r,"utf-8"),t=JSON.parse(e);if(!Fn(t)){m(N,"Invalid state file structure, attempting to restore from backup...");let n=Gn();if(n){let i=Ds(r);return{state:n,mtimeMs:i}}return m(N,"No valid backup found, starting fresh"),{state:Is(),mtimeMs:0}}t.version===1&&(t=In(t),rs(r,JSON.stringify(t,null,2),384),T(N,"Migrated state saved"));try{let n=!1,i=t.config;if(i.snoozedPRs&&(delete i.snoozedPRs,n=!0),t.config.dismissedIssues){let a=/\/pull\/\d+$/;for(let c of Object.keys(t.config.dismissedIssues))a.test(c)&&(delete t.config.dismissedIssues[c],n=!0)}n&&(rs(r,JSON.stringify(t,null,2),384),m(N,"Cleaned up removed features (snoozedPRs, dismissed PR URLs) from persisted state"))}catch(n){m(N,`Failed to clean up removed features from state: ${v(n)}`)}let s=Ds(r),o=Object.keys(t.repoScores).length;return T(N,`Loaded state v${t.version}: ${o} repo scores tracked`),{state:t,mtimeMs:s}}}catch(e){m(N,"Error loading state:",e),m(N,"Attempting to restore from backup...");let t=Gn();if(t){let s=Ds(r);return{state:t,mtimeMs:s}}m(N,"No valid backup found, starting fresh")}return T(N,"No existing state found, initializing..."),{state:Is(),mtimeMs:0}}function Ds(r){try{return L.statSync(r).mtimeMs}catch(e){return T(N,`Could not read state file mtime (reload detection will always trigger): ${v(e)}`),0}}function Du(){let r=_t();try{let e=L.readdirSync(r).filter(t=>t.startsWith("state-")).sort().reverse();for(let t of e.slice(10))try{L.unlinkSync(Me.join(r,t))}catch(s){m(N,`Could not delete old backup ${t}:`,v(s))}}catch(e){m(N,"Could not clean up backups:",v(e))}}function xn(r){let e=dt(),t=e+".lock",s=_t();$n(t);try{try{if(L.existsSync(e)){let n=new Date().toISOString().replace(/[:.]/g,"-"),i=Math.random().toString(36).slice(2,8).padEnd(6,"0"),a=Me.join(s,`state-${n}-${i}.json`);L.copyFileSync(e,a),L.chmodSync(a,384),Du()}}catch(n){m(N,`Could not create backup before save: ${v(n)}`)}rs(e,JSON.stringify(r,null,2),384);let o=Ds(e);return T(N,"State saved successfully"),o}finally{Dn(t)}}function Un(r){try{let e=dt();if(L.statSync(e).mtimeMs===r)return null;let s=Kr();try{s.mtimeMs=L.statSync(e).mtimeMs}catch(o){T(N,"Could not re-read mtime after reload (will retry next cycle)",o)}return s}catch(e){return m(N,`Failed to reload state from disk: ${v(e)}`),null}}var L,Me,N,Au,Ou,ss,wt,Qr=C(()=>{"use strict";L=z(require("fs"),1),Me=z(require("path"),1);Ye();Ee();ce();le();N="state",Au=2,Ou=3e4,ss=Me.join(process.cwd(),"data","state.json"),wt=Me.join(process.cwd(),"data","backups")});function Fu(r){return{repo:r,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}}}function xu(r){let e=5;if(r.mergedPRCount>0){let s=Math.min(Math.round(Math.log2(r.mergedPRCount+1)*2),5);e+=s}let t=Math.min(r.closedWithoutMergeCount,3);if(e-=t,r.lastMergedAt){let s=new Date(r.lastMergedAt);isNaN(s.getTime())?m(Yr,`Invalid lastMergedAt date for ${r.repo}: "${r.lastMergedAt}". Skipping recency bonus.`):Math.floor((Date.now()-s.getTime())/864e5)<=90&&(e+=1)}return r.signals.isResponsive&&(e+=1),r.signals.hasHostileComments&&(e-=2),Math.max(1,Math.min(10,e))}function Mn(r,e){return r.repoScores[e]}function os(r,e,t){r.repoScores[e]||(r.repoScores[e]=Fu(e));let s=r.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.language!==void 0&&(s.language=t.language),t.signals&&(s.signals={...s.signals,...t.signals}),s.score=xu(s),s.lastEvaluatedAt=new Date().toISOString(),T(Yr,`Updated repo score for ${e}: ${s.score}/10`)}function Ln(r,e){let t=(r.repoScores[e]?.mergedPRCount??0)+1;os(r,e,{mergedPRCount:t,lastMergedAt:new Date().toISOString()})}function jn(r,e){let t=(r.repoScores[e]?.closedWithoutMergeCount??0)+1;os(r,e,{closedWithoutMergeCount:t})}function Nn(r,e){os(r,e,{signals:{hasHostileComments:!0}})}function Hn(r){return Object.values(r.repoScores).filter(e=>e.mergedPRCount>0).sort((e,t)=>t.mergedPRCount-e.mergedPRCount).map(e=>e.repo)}function qn(r){return Object.values(r.repoScores).filter(e=>e.mergedPRCount===0&&e.closedWithoutMergeCount===0).sort((e,t)=>t.score-e.score).map(e=>e.repo)}function Bn(r,e){let t=e??r.config.minRepoScoreThreshold;return Object.values(r.repoScores).filter(s=>s.score>=t).sort((s,o)=>o.score-s.score).map(s=>s.repo)}function Vn(r,e){let t=e??r.config.minRepoScoreThreshold,s=Date.now();return Object.values(r.repoScores).filter(o=>{if(o.score>t)return!1;let n=s-new Date(o.lastEvaluatedAt).getTime();return Number.isFinite(n)?n<=Iu:(m(Yr,`Invalid lastEvaluatedAt for repo ${o.repo}: "${o.lastEvaluatedAt}", treating as stale`),!1)}).sort((o,n)=>o.score-n.score).map(o=>o.repo)}function Wn(r){let e=0,t=0,s=0;for(let i of Object.values(r.repoScores))Qe(i.stargazersCount,r.config.minStars??50)||(s++,e+=i.mergedPRCount,t+=i.closedWithoutMergeCount);let o=e+t,n=o>0?e/o*100:0;return{mergedPRs:e,closedPRs:t,activeIssues:0,trustedProjects:r.config.trustedProjects.length,mergeRate:n.toFixed(1)+"%",totalTracked:s,needsResponse:0}}var Yr,Iu,zn=C(()=>{"use strict";Ye();le();Yr="scoring",Iu=720*60*60*1e3});function j(){return Xr||(Xr=new Fs),Xr}var tt,Jn,Fs,Xr,Lt=C(()=>{"use strict";Qr();zn();le();Qr();tt="state",Jn=1e3,Fs=class r{state;inMemoryOnly;lastLoadedMtimeMs=0;constructor(e=!1){if(this.inMemoryOnly=e,e)this.state=Is();else{let t=Kr();this.state=t.state,this.lastLoadedMtimeMs=t.mtimeMs}}isSetupComplete(){return this.state.config.setupComplete===!0}markSetupComplete(){this.state.config.setupComplete=!0,this.state.config.setupCompletedAt=new Date().toISOString()}initializeWithDefaults(e){if(this.state.config.setupComplete){T(tt,`Setup already complete, skipping initializeWithDefaults for "${e}"`);return}this.state.config.githubUsername=e,this.markSetupComplete(),T(tt,`Initialized with defaults for user "${e}"`),this.save()}save(){this.state.lastRunAt=new Date().toISOString(),!this.inMemoryOnly&&(this.lastLoadedMtimeMs=xn(this.state))}getState(){return this.state}reloadIfChanged(){if(this.inMemoryOnly)return!1;let e=Un(this.lastLoadedMtimeMs);return e?(this.state=e.state,this.lastLoadedMtimeMs=e.mtimeMs,!0):!1}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}getMergedPRs(){return this.state.mergedPRs??[]}addMergedPRs(e){if(e.length===0)return;this.state.mergedPRs||(this.state.mergedPRs=[]);let t=new Set(this.state.mergedPRs.map(o=>o.url)),s=e.filter(o=>!t.has(o.url));s.length!==0&&(this.state.mergedPRs.push(...s),this.state.mergedPRs.sort((o,n)=>n.mergedAt.localeCompare(o.mergedAt)),T(tt,`Added ${s.length} merged PRs (total: ${this.state.mergedPRs.length})`))}getMergedPRWatermark(){return this.state.mergedPRs?.[0]?.mergedAt||void 0}getClosedPRs(){return this.state.closedPRs??[]}addClosedPRs(e){if(e.length===0)return;this.state.closedPRs||(this.state.closedPRs=[]);let t=new Set(this.state.closedPRs.map(o=>o.url)),s=e.filter(o=>!t.has(o.url));s.length!==0&&(this.state.closedPRs.push(...s),this.state.closedPRs.sort((o,n)=>n.closedAt.localeCompare(o.closedAt)),T(tt,`Added ${s.length} closed PRs (total: ${this.state.closedPRs.length})`))}getClosedPRWatermark(){return this.state.closedPRs?.[0]?.closedAt||void 0}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>Jn&&(this.state.events=this.state.events.slice(-Jn))}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)){T(tt,`Issue ${e.url} already tracked`);return}this.state.activeIssues.push(e),T(tt,`Added issue: ${e.repo}#${e.number}`)}addTrustedProject(e){this.state.config.trustedProjects.includes(e)||(this.state.config.trustedProjects.push(e),T(tt,`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]))}cleanupExcludedData(e,t){let s=i=>r.matchesExclusion(i,e,t),o=this.state.config.trustedProjects.length;this.state.config.trustedProjects=this.state.config.trustedProjects.filter(i=>!s(i));let n=o-this.state.config.trustedProjects.length;n>0&&T(tt,`Removed ${n} trusted project(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(),T(tt,`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]}setStatusOverride(e,t,s){this.state.config.statusOverrides||(this.state.config.statusOverrides={}),this.state.config.statusOverrides[e]={status:t,setAt:new Date().toISOString(),lastActivityAt:s}}clearStatusOverride(e){return!this.state.config.statusOverrides||!(e in this.state.config.statusOverrides)?!1:(delete this.state.config.statusOverrides[e],!0)}getStatusOverride(e,t){let s=this.state.config.statusOverrides?.[e];if(s){if(t&&t>s.lastActivityAt){this.clearStatusOverride(e);return}return s}}getRepoScore(e){return Mn(this.state,e)}updateRepoScore(e,t){os(this.state,e,t)}incrementMergedCount(e){Ln(this.state,e)}incrementClosedCount(e){jn(this.state,e)}markRepoHostile(e){Nn(this.state,e)}getReposWithMergedPRs(){return Hn(this.state)}getReposWithOpenPRs(){return qn(this.state)}getHighScoringRepos(e){return Bn(this.state,e)}getLowScoringRepos(e){return Vn(this.state,e)}getStats(){return Wn(this.state)}},Xr=null});function gt(){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 ns=C(()=>{});function xs(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)=>xs.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 Kn=C(()=>{});function Qn(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 Yn=C(()=>{});function Xn(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 Zn=C(()=>{});function si(r,e,t){let s=ti(Xn,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]=ti(Qn,null).apply(null,n)})}function Mu(){let r=Symbol("Singular"),e={registry:{}},t=xs.bind(null,e,r);return si(t,e,r),t}function Lu(){let r={registry:{}},e=xs.bind(null,r);return si(e,r),e}var ei,ti,ri,oi=C(()=>{Kn();Yn();Zn();ei=Function.bind,ti=ei.bind(ei);ri={Singular:Mu,Collection:Lu}});function qu(r){return r?Object.keys(r).reduce((e,t)=>(e[t.toLowerCase()]=r[t],e),{}):{}}function Bu(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 ai(r,e){let t=Object.assign({},r);return Object.keys(e).forEach(s=>{Bu(e[s])?s in r?t[s]=ai(r[s],e[s]):Object.assign(t,{[s]:e[s]}):Object.assign(t,{[s]:e[s]})}),t}function ni(r){for(let e in r)r[e]===void 0&&delete r[e];return r}function eo(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=qu(t.headers),ni(t),ni(t.headers);let s=ai(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 Vu(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 zu(r){return r.replace(/(?:^\W+)|(?:(?<!\W)\W+$)/g,"").split(/,/)}function Ju(r){let e=r.match(Wu);return e?e.map(zu).reduce((t,s)=>t.concat(s),[]):[]}function ii(r,e){let t={__proto__:null};for(let s of Object.keys(r))e.indexOf(s)===-1&&(t[s]=r[s]);return t}function ci(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 Nt(r){return encodeURIComponent(r).replace(/[!'()*]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function is(r,e,t){return e=r==="+"||r==="#"?ci(e):Nt(e),t?Nt(t)+"="+e:e}function jt(r){return r!=null}function Zr(r){return r===";"||r==="&"||r==="?"}function Ku(r,e,t,s){var o=r[t],n=[];if(jt(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(is(e,o,Zr(e)?t:""));else if(s==="*")Array.isArray(o)?o.filter(jt).forEach(function(i){n.push(is(e,i,Zr(e)?t:""))}):Object.keys(o).forEach(function(i){jt(o[i])&&n.push(is(e,o[i],i))});else{let i=[];Array.isArray(o)?o.filter(jt).forEach(function(a){i.push(is(e,a))}):Object.keys(o).forEach(function(a){jt(o[a])&&(i.push(Nt(a)),i.push(is(e,o[a].toString())))}),Zr(e)?n.push(Nt(t)+"="+i.join(",")):i.length!==0&&n.push(i.join(","))}else e===";"?jt(o)&&n.push(Nt(t)):o===""&&(e==="&"||e==="?")?n.push(Nt(t)+"="):o===""&&n.push("");return n}function Qu(r){return{expand:Yu.bind(null,r)}}function Yu(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(u){var l=/([^:\*]*)(?::(\d+)|(\*))?/.exec(u);c.push(Ku(e,a,l[1],l[2]||l[3]))}),a&&a!=="+"){var i=",";return a==="?"?i="&":a!=="#"&&(i=a),(c.length!==0?a:"")+c.join(i)}else return c.join(",")}else return ci(n)}),r==="/"?r:r.replace(/\/$/,"")}function ui(r){let e=r.method.toUpperCase(),t=(r.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),s=Object.assign({},r.headers),o,n=ii(r,["method","baseUrl","url","headers","request","mediaType"]),i=Ju(t);t=Qu(t).expand(n),/^http/.test(t)||(t=r.baseUrl+t);let a=Object.keys(r).filter(l=>i.includes(l)).concat("baseUrl"),c=ii(n,a);if(!/application\/octet-stream/i.test(s.accept)&&(r.mediaType.format&&(s.accept=s.accept.split(/,/).map(l=>l.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${r.mediaType.format}`)).join(",")),t.endsWith("/graphql")&&r.mediaType.previews?.length)){let l=s.accept.match(/(?<![\w-])[\w-]+(?=-preview)/g)||[];s.accept=l.concat(r.mediaType.previews).map(d=>{let g=r.mediaType.format?`.${r.mediaType.format}`:"+json";return`application/vnd.github.${d}-preview${g}`}).join(",")}return["GET","HEAD"].includes(e)?t=Vu(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 Xu(r,e,t){return ui(eo(r,e,t))}function li(r,e){let t=eo(r,e),s=Xu.bind(null,t);return Object.assign(s,{DEFAULTS:t,defaults:li.bind(null,t),merge:eo.bind(null,t),parse:ui})}var ju,Nu,Hu,Wu,pi,di=C(()=>{ns();ju="0.0.0-development",Nu=`octokit-endpoint.js/${ju} ${gt()}`,Hu={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":Nu},mediaType:{format:""}};Wu=/\{[^{}}]+\}/g;pi=li(null,Hu)});var fi=Je((mg,as)=>{"use strict";var Ls=function(){};Ls.prototype=Object.create(null);var Us=/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu,Ms=/\\([\v\u0020-\u00ff])/gu,gi=/^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u,Et={type:"",parameters:new Ls};Object.freeze(Et.parameters);Object.freeze(Et);function mi(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(gi.test(t)===!1)throw new TypeError("invalid media type");let s={type:t.toLowerCase(),parameters:new Ls};if(e===-1)return s;let o,n,i;for(Us.lastIndex=e;n=Us.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),Ms.test(i)&&(i=i.replace(Ms,"$1"))),s.parameters[o]=i}if(e!==r.length)throw new TypeError("invalid parameter format");return s}function hi(r){if(typeof r!="string")return Et;let e=r.indexOf(";"),t=e!==-1?r.slice(0,e).trim():r.trim();if(gi.test(t)===!1)return Et;let s={type:t.toLowerCase(),parameters:new Ls};if(e===-1)return s;let o,n,i;for(Us.lastIndex=e;n=Us.exec(r);){if(n.index!==e)return Et;e+=n[0].length,o=n[1].toLowerCase(),i=n[2],i[0]==='"'&&(i=i.slice(1,i.length-1),Ms.test(i)&&(i=i.replace(Ms,"$1"))),s.parameters[o]=i}return e!==r.length?Et:s}as.exports.default={parse:mi,safeParse:hi};as.exports.parse=mi;as.exports.safeParse=hi;as.exports.defaultContentType=Et});var Zu,_i,to,bi,el,tl,sl,Ri,rl,ol,nl,wi,yi,il,al,Ei,Ti=C(()=>{Zu=/^-?\d+$/,_i=/^-?\d+n+$/,to=JSON.stringify,bi=JSON.parse,el=/^-?\d+n$/,tl=/([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,sl=/([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,Ri=(r,e,t)=>"rawJSON"in JSON?to(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?to(r,(i,a)=>typeof a=="string"&&!!a.match(_i)||typeof a=="bigint"?a.toString()+"n":typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t).replace(tl,"$1$2$3").replace(sl,"$1$2$3"):to(r,e,t),rl=()=>JSON.parse("1",(r,e,t)=>!!t&&t.source==="1"),ol=(r,e,t,s)=>typeof e=="string"&&e.match(el)?BigInt(e.slice(0,-1)):typeof e=="string"&&e.match(_i)?e.slice(0,-1):typeof s!="function"?e:s(r,e,t),nl=(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&&Zu.test(o.source);return n&&i?BigInt(o.source):typeof e!="function"?s:e(t,s,o)}),wi=Number.MAX_SAFE_INTEGER.toString(),yi=wi.length,il=/"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,al=/^"-?\d+n+"$/,Ei=(r,e)=>{if(!r)return bi(r,e);if(rl())return nl(r,e);let t=r.replace(il,(s,o,n,i)=>{let a=s[0]==='"';if(a&&!!s.match(al))return s.substring(0,s.length-1)+'n"';let u=n||i,l=o&&(o.length<yi||o.length===yi&&o<=wi);return a||u||l?s:'"'+s+'n"'});return bi(t,(s,o,n)=>ol(s,o,n,e))}});var Tt,vi=C(()=>{Tt=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 ll(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 Ci(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=ll(r.body)||Array.isArray(r.body)?Ri(r.body):r.body,n=Object.fromEntries(Object.entries(r.headers).map(([d,g])=>[d,String(g)])),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 g="Unknown Error";if(d instanceof Error){if(d.name==="AbortError")throw d.status=500,d;g=d.message,d.name==="TypeError"&&"cause"in d&&(d.cause instanceof Error?g=d.cause.message:typeof d.cause=="string"&&(g=d.cause))}let E=new Tt(g,500,{request:r});throw E.cause=d,E}let a=i.status,c=i.url,u={};for(let[d,g]of i.headers)u[d]=g;let l={url:c,status:a,headers:u,data:""};if("deprecation"in u){let d=u.link&&u.link.match(/<([^<>]+)>; rel="deprecation"/),g=d&&d.pop();t.warn(`[@octokit/request] "${r.method} ${r.url}" is deprecated. It is scheduled to be removed on ${u.sunset}${g?`. See ${g}`:""}`)}if(a===204||a===205)return l;if(r.method==="HEAD"){if(a<400)return l;throw new Tt(i.statusText,a,{response:l,request:r})}if(a===304)throw l.data=await so(i),new Tt("Not modified",a,{response:l,request:r});if(a>=400)throw l.data=await so(i),new Tt(dl(l.data),a,{response:l,request:r});return l.data=s?await so(i):i.body,l}async function so(r){let e=r.headers.get("content-type");if(!e)return r.text().catch(Si);let t=(0,Pi.safeParse)(e);if(pl(t)){let s="";try{return s=await r.text(),Ei(s)}catch{return s}}else return t.type.startsWith("text/")||t.parameters.charset?.toLowerCase()==="utf-8"?r.text().catch(Si):r.arrayBuffer().catch(()=>new ArrayBuffer(0))}function pl(r){return r.type==="application/json"||r.type==="application/scim+json"}function dl(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 ro(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 Ci(t.parse(i));let a=(c,u)=>Ci(t.parse(t.merge(c,u)));return Object.assign(a,{endpoint:t,defaults:ro.bind(null,t)}),i.request.hook(a,i)},{endpoint:t,defaults:ro.bind(null,t)})}var Pi,cl,ul,Si,cs,oo=C(()=>{di();ns();Pi=z(fi(),1);Ti();vi();cl="10.0.8",ul={headers:{"user-agent":`octokit-request.js/${cl} ${gt()}`}};Si=()=>"";cs=ro(pi,ul);});function ml(r){return`Request failed due to following response errors:
34
34
  `+r.errors.map(e=>` - ${e.message}`).join(`
35
- `)}function ml(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(gl.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)=>dl.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 ki.test(n)&&(o.url=n.replace(ki,"/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 pl(o,a,i.data)}return i.data.data})}function no(r,e){let t=r.defaults(e);return Object.assign((o,n)=>ml(t,o,n),{defaults:no.bind(null,t),endpoint:t.endpoint})}function Ai(r){return no(r,{method:"POST",url:"/graphql"})}var ul,pl,dl,gl,ki,yg,Oi=P(()=>{oo();ns();ul="0.0.0-development";pl=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},dl=["method","baseUrl","url","headers","request","query","mediaType","operationName"],gl=["query","method","url"],ki=/\/api\/v3\/?$/;yg=no(cs,{headers:{"user-agent":`octokit-graphql.js/${ul} ${gt()}`},method:"POST",url:"/graphql"})});async function fl(r){let e=hl(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 bl(r){return r.split(/\./).length===3?`bearer ${r}`:`token ${r}`}async function yl(r,e,t,s){let o=e.endpoint.merge(t,s);return o.headers.authorization=bl(r),e(o)}var io,Gi,$i,hl,Di,Ii=P(()=>{io="(?:[a-zA-Z0-9_-]+)",Gi="\\.",$i=new RegExp(`^${io}${Gi}${io}${Gi}${io}$`),hl=$i.test.bind($i);Di=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(fl.bind(null,e),{hook:yl.bind(null,e)})}});var ao,Fi=P(()=>{ao="7.0.6"});function wl(r={}){return typeof r.debug!="function"&&(r.debug=xi),typeof r.info!="function"&&(r.info=xi),typeof r.warn!="function"&&(r.warn=_l),typeof r.error!="function"&&(r.error=Rl),r}var xi,_l,Rl,Ui,js,Mi=P(()=>{ns();oi();oo();Oi();Ii();Fi();xi=()=>{},_l=console.warn.bind(console),Rl=console.error.bind(console);Ui=`octokit-core.js/${ao} ${gt()}`,js=class{static VERSION=ao;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 ri.Collection,s={baseUrl:cs.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} ${Ui}`:Ui,e.baseUrl&&(s.baseUrl=e.baseUrl),e.previews&&(s.mediaType.previews=e.previews),e.timeZone&&(s.headers["time-zone"]=e.timeZone),this.request=cs.defaults(s),this.graphql=Ai(this.request).defaults(s),this.log=wl(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=Di(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 Li,ji=P(()=>{Li="6.0.0"});function co(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 Ni=P(()=>{ji();co.VERSION=Li});function Tl(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 uo(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}),u=Tl(c);if(a=((u.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!a&&"total_commits"in u.data){let l=new URL(u.url),d=l.searchParams,g=parseInt(d.get("page")||"1",10),E=parseInt(d.get("per_page")||"250",10);g*E<u.data.total_commits&&(d.set("page",String(g+1)),a=l.toString())}return{value:u}}catch(c){if(c.status!==409)throw c;return a="",{value:{status:200,headers:{},data:[]}}}}})}}function Hi(r,e,t,s){return typeof t=="function"&&(s=t,t=void 0),qi(r,[],uo(r,e,t)[Symbol.asyncIterator](),s)}function qi(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:qi(r,e,t,s)})}function lo(r){return{paginate:Object.assign(Hi.bind(null,r),{iterator:uo.bind(null,r)})}}var El,Fg,Bi=P(()=>{El="0.0.0-development";Fg=Object.assign(Hi,{iterator:uo});lo.VERSION=El});var po,Vi=P(()=>{po="17.0.0"});var vl,Wi,zi=P(()=>{vl={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"]}},Wi=vl});function go(r){let e={};for(let t of vt.keys())e[t]=new Proxy({octokit:r,scope:t,cache:{}},Sl);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[u,l]=o.renamed;r.log.warn(`octokit.${e}.${t}() has been renamed to octokit.${u}.${l}()`)}if(o.deprecated&&r.log.warn(o.deprecated),o.renamedParameters){let u=n.endpoint.merge(...a);for(let[l,d]of Object.entries(o.renamedParameters))l in u&&(r.log.warn(`"${l}" parameter is deprecated for "octokit.${e}.${t}()". Use "${d}" instead`),d in u||(u[d]=u[l]),delete u[l]);return n(u)}return n(...a)}return Object.assign(i,n)}var vt,Sl,Ji=P(()=>{zi();vt=new Map;for(let[r,e]of Object.entries(Wi))for(let[t,s]of Object.entries(e)){let[o,n,i]=s,[a,c]=o.split(/ /),u=Object.assign({method:a,url:c},n);vt.has(r)||vt.set(r,new Map),vt.get(r).set(t,{scope:r,methodName:t,endpointDefaults:u,decorations:i})}Sl={has({scope:r},e){return vt.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[...vt.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=vt.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 Pl(r){return{rest:go(r)}}function mo(r){let e=go(r);return{...e,rest:e}}var Ki=P(()=>{Vi();Ji();Pl.VERSION=po;mo.VERSION=po});var Qi,Yi=P(()=>{Qi="22.0.1"});var Xi,Zi=P(()=>{Mi();Ni();Bi();Ki();Yi();Xi=js.plugin(co,mo,lo).defaults({userAgent:`octokit-rest.js/${Qi}`})});var ea=Je((ho,fo)=>{(function(r,e){typeof ho=="object"&&typeof fo<"u"?fo.exports=e():typeof define=="function"&&define.amd?define(e):r.Bottleneck=e()})(ho,(function(){"use strict";var r=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function e(F){return F&&F.default||F}var t=function(F,h,p={}){var f,y,w;for(f in h)w=h[f],p[f]=(y=F[f])!=null?y:w;return p},s=function(F,h,p={}){var f,y;for(f in F)y=F[f],h[f]!==void 0&&(p[f]=y);return p},o={load:t,overwrite:s},n;n=class{constructor(h,p){this.incr=h,this.decr=p,this._first=null,this._last=null,this.length=0}push(h){var p;this.length++,typeof this.incr=="function"&&this.incr(),p={value:h,prev:this._last,next:null},this._last!=null?(this._last.next=p,this._last=p):this._first=this._last=p}shift(){var h;if(this._first!=null)return this.length--,typeof this.decr=="function"&&this.decr(),h=this._first.value,(this._first=this._first.next)!=null?this._first.prev=null:this._last=null,h}first(){if(this._first!=null)return this._first.value}getArray(){var h,p,f;for(h=this._first,f=[];h!=null;)f.push((p=h,h=h.next,p.value));return f}forEachShift(h){var p;for(p=this.shift();p!=null;)h(p),p=this.shift()}debug(){var h,p,f,y,w;for(h=this._first,w=[];h!=null;)w.push((p=h,h=h.next,{value:p.value,prev:(f=p.prev)!=null?f.value:void 0,next:(y=p.next)!=null?y.value:void 0}));return w}};var i=n,a;a=class{constructor(h){if(this.instance=h,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,f)=>this._addListener(p,"many",f),this.instance.once=(p,f)=>this._addListener(p,"once",f),this.instance.removeAllListeners=(p=null)=>p!=null?delete this._events[p]:this._events={}}_addListener(h,p,f){var y;return(y=this._events)[h]==null&&(y[h]=[]),this._events[h].push({cb:f,status:p}),this.instance}listenerCount(h){return this._events[h]!=null?this._events[h].length:0}async trigger(h,...p){var f,y;try{return h!=="debug"&&this.trigger("debug",`Event triggered: ${h}`,p),this._events[h]==null?void 0:(this._events[h]=this._events[h].filter(function(w){return w.status!=="none"}),y=this._events[h].map(async w=>{var S,$;if(w.status!=="none"){w.status==="once"&&(w.status="none");try{return $=typeof w.cb=="function"?w.cb(...p):void 0,typeof $?.then=="function"?await $:$}catch(J){return S=J,this.trigger("error",S),null}}}),(await Promise.all(y)).find(function(w){return w!=null}))}catch(w){return f=w,this.trigger("error",f),null}}};var c=a,u,l,d;u=i,l=c,d=class{constructor(h){var p;this.Events=new l(this),this._length=0,this._lists=(function(){var f,y,w;for(w=[],p=f=1,y=h;1<=y?f<=y:f>=y;p=1<=y?++f:--f)w.push(new u((()=>this.incr()),(()=>this.decr())));return w}).call(this)}incr(){if(this._length++===0)return this.Events.trigger("leftzero")}decr(){if(--this._length===0)return this.Events.trigger("zero")}push(h){return this._lists[h.options.priority].push(h)}queued(h){return h!=null?this._lists[h].length:this._length}shiftAll(h){return this._lists.forEach(function(p){return p.forEachShift(h)})}getFirst(h=this._lists){var p,f,y;for(p=0,f=h.length;p<f;p++)if(y=h[p],y.length>0)return y;return[]}shiftLastFrom(h){return this.getFirst(this._lists.slice(h).reverse()).shift()}};var g=d,E;E=class extends Error{};var R=E,_,C,b,G,x;G=10,C=5,x=o,_=R,b=class{constructor(h,p,f,y,w,S,$,J){this.task=h,this.args=p,this.rejectOnDrop=w,this.Events=S,this._states=$,this.Promise=J,this.options=x.load(f,y),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===y.id&&(this.options.id=`${this.options.id}-${this._randomIndex()}`),this.promise=new this.Promise((fe,Re)=>{this._resolve=fe,this._reject=Re}),this.retryCount=0}_sanitizePriority(h){var p;return p=~~h!==h?C:h,p<0?0:p>G-1?G-1:p}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:h,message:p="This job has been dropped by Bottleneck"}={}){return this._states.remove(this.options.id)?(this.rejectOnDrop&&this._reject(h??new _(p)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0):!1}_assertStatus(h){var p;if(p=this._states.jobStatus(this.options.id),!(p===h||h==="DONE"&&p===null))throw new _(`Invalid job status ${p}, expected ${h}. 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(h,p){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:h,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(h,p,f,y){var w,S,$;this.retryCount===0?(this._assertStatus("RUNNING"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),S={args:this.args,options:this.options,retryCount:this.retryCount},this.Events.trigger("executing",S);try{if($=await(h!=null?h.schedule(this.options,this.task,...this.args):this.task(...this.args)),p())return this.doDone(S),await y(this.options,S),this._assertStatus("DONE"),this._resolve($)}catch(J){return w=J,this._onFailure(w,S,p,f,y)}}doExpire(h,p,f){var y,w;return this._states.jobStatus(this.options.id==="RUNNING")&&this._states.next(this.options.id),this._assertStatus("EXECUTING"),w={args:this.args,options:this.options,retryCount:this.retryCount},y=new _(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(y,w,h,p,f)}async _onFailure(h,p,f,y,w){var S,$;if(f())return S=await this.Events.trigger("failed",h,p),S!=null?($=~~S,this.Events.trigger("retry",`Retrying ${this.options.id} after ${$} ms`,p),this.retryCount++,y($)):(this.doDone(p),await w(this.options,p),this._assertStatus("DONE"),this._reject(h))}doDone(h){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",h)}};var H=b,M,k,O;O=o,M=R,k=class{constructor(h,p,f){this.instance=h,this.storeOptions=p,this.clientId=this.instance._randomIndex(),O.load(f,f,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 h;return this.heartbeat==null&&(this.storeOptions.reservoirRefreshInterval!=null&&this.storeOptions.reservoirRefreshAmount!=null||this.storeOptions.reservoirIncreaseInterval!=null&&this.storeOptions.reservoirIncreaseAmount!=null)?typeof(h=this.heartbeat=setInterval(()=>{var p,f,y,w,S;if(w=Date.now(),this.storeOptions.reservoirRefreshInterval!=null&&w>=this._lastReservoirRefresh+this.storeOptions.reservoirRefreshInterval&&(this._lastReservoirRefresh=w,this.storeOptions.reservoir=this.storeOptions.reservoirRefreshAmount,this.instance._drainAll(this.computeCapacity())),this.storeOptions.reservoirIncreaseInterval!=null&&w>=this._lastReservoirIncrease+this.storeOptions.reservoirIncreaseInterval&&({reservoirIncreaseAmount:p,reservoirIncreaseMaximum:y,reservoir:S}=this.storeOptions,this._lastReservoirIncrease=w,f=y!=null?Math.min(p,y-S):p,f>0))return this.storeOptions.reservoir+=f,this.instance._drainAll(this.computeCapacity())},this.heartbeatInterval)).unref=="function"?h.unref():void 0:clearInterval(this.heartbeat)}async __publish__(h){return await this.yieldLoop(),this.instance.Events.trigger("message",h.toString())}async __disconnect__(h){return await this.yieldLoop(),clearInterval(this.heartbeat),this.Promise.resolve()}yieldLoop(h=0){return new this.Promise(function(p,f){return setTimeout(p,h)})}computePenalty(){var h;return(h=this.storeOptions.penalty)!=null?h:15*this.storeOptions.minTime||5e3}async __updateSettings__(h){return await this.yieldLoop(),O.overwrite(h,h,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__(h){return await this.yieldLoop(),this._nextRequest+this.timeout<h}computeCapacity(){var h,p;return{maxConcurrent:h,reservoir:p}=this.storeOptions,h!=null&&p!=null?Math.min(h-this._running,p):h!=null?h-this._running:p??null}conditionsCheck(h){var p;return p=this.computeCapacity(),p==null||h<=p}async __incrementReservoir__(h){var p;return await this.yieldLoop(),p=this.storeOptions.reservoir+=h,this.instance._drainAll(this.computeCapacity()),p}async __currentReservoir__(){return await this.yieldLoop(),this.storeOptions.reservoir}isBlocked(h){return this._unblockTime>=h}check(h,p){return this.conditionsCheck(h)&&this._nextRequest-p<=0}async __check__(h){var p;return await this.yieldLoop(),p=Date.now(),this.check(h,p)}async __register__(h,p,f){var y,w;return await this.yieldLoop(),y=Date.now(),this.conditionsCheck(p)?(this._running+=p,this.storeOptions.reservoir!=null&&(this.storeOptions.reservoir-=p),w=Math.max(this._nextRequest-y,0),this._nextRequest=y+w+this.storeOptions.minTime,{success:!0,wait:w,reservoir:this.storeOptions.reservoir}):{success:!1}}strategyIsBlock(){return this.storeOptions.strategy===3}async __submit__(h,p){var f,y,w;if(await this.yieldLoop(),this.storeOptions.maxConcurrent!=null&&p>this.storeOptions.maxConcurrent)throw new M(`Impossible to add a job having a weight of ${p} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);return y=Date.now(),w=this.storeOptions.highWater!=null&&h===this.storeOptions.highWater&&!this.check(p,y),f=this.strategyIsBlock()&&(w||this.isBlocked(y)),f&&(this._unblockTime=y+this.computePenalty(),this._nextRequest=this._unblockTime+this.storeOptions.minTime,this.instance._dropAllQueued()),{reachedHWM:w,blocked:f,strategy:this.storeOptions.strategy}}async __free__(h,p){return await this.yieldLoop(),this._running-=p,this._done+=p,this.instance._drainAll(this.computeCapacity()),{running:this._running}}};var q=k,U,ce;U=R,ce=class{constructor(h){this.status=h,this._jobs={},this.counts=this.status.map(function(){return 0})}next(h){var p,f;if(p=this._jobs[h],f=p+1,p!=null&&f<this.status.length)return this.counts[p]--,this.counts[f]++,this._jobs[h]++;if(p!=null)return this.counts[p]--,delete this._jobs[h]}start(h){var p;return p=0,this._jobs[h]=p,this.counts[p]++}remove(h){var p;return p=this._jobs[h],p!=null&&(this.counts[p]--,delete this._jobs[h]),p!=null}jobStatus(h){var p;return(p=this.status[this._jobs[h]])!=null?p:null}statusJobs(h){var p,f,y,w,S;if(h!=null){if(f=this.status.indexOf(h),f<0)throw new U(`status must be one of ${this.status.join(", ")}`);y=this._jobs,w=[];for(p in y)S=y[p],S===f&&w.push(p);return w}else return Object.keys(this._jobs)}statusCounts(){return this.counts.reduce(((h,p,f)=>(h[this.status[f]]=p,h)),{})}};var _e=ce,A,ee;A=i,ee=class{constructor(h,p){this.schedule=this.schedule.bind(this),this.name=h,this.Promise=p,this._running=0,this._queue=new A}isEmpty(){return this._queue.length===0}async _tryToRun(){var h,p,f,y,w,S,$;if(this._running<1&&this._queue.length>0)return this._running++,{task:$,args:h,resolve:w,reject:y}=this._queue.shift(),p=await(async function(){try{return S=await $(...h),function(){return w(S)}}catch(J){return f=J,function(){return y(f)}}})(),this._running--,this._tryToRun(),p()}schedule(h,...p){var f,y,w;return w=y=null,f=new this.Promise(function(S,$){return w=S,y=$}),this._queue.push({task:h,args:p,resolve:w,reject:y}),this._tryToRun(),f}};var De=ee,Ae="2.19.5",ct={version:Ae},Oe=Object.freeze({version:Ae,default:ct}),Ie=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),qe=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),D=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),I,B,Y,ue,te,re;re=o,I=c,ue=Ie,Y=qe,te=D,B=(function(){class F{constructor(p={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=p,re.load(this.limiterOptions,this.defaults,this),this.Events=new I(this),this.instances={},this.Bottleneck=dn,this._startAutoCleanup(),this.sharedConnection=this.connection!=null,this.connection==null&&(this.limiterOptions.datastore==="redis"?this.connection=new ue(Object.assign({},this.limiterOptions,{Events:this.Events})):this.limiterOptions.datastore==="ioredis"&&(this.connection=new Y(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(p=""){var f;return(f=this.instances[p])!=null?f:(()=>{var y;return y=this.instances[p]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${p}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",y,p),y})()}async deleteKey(p=""){var f,y;return y=this.instances[p],this.connection&&(f=await this.connection.__runCommand__(["del",...te.allKeys(`${this.id}-${p}`)])),y!=null&&(delete this.instances[p],await y.disconnect()),y!=null||f>0}limiters(){var p,f,y,w;f=this.instances,y=[];for(p in f)w=f[p],y.push({key:p,limiter:w});return y}keys(){return Object.keys(this.instances)}async clusterKeys(){var p,f,y,w,S,$,J,fe,Re;if(this.connection==null)return this.Promise.resolve(this.keys());for($=[],p=null,Re=`b_${this.id}-`.length,f=9;p!==0;)for([fe,y]=await this.connection.__runCommand__(["scan",p??0,"match",`b_${this.id}-*_settings`,"count",1e4]),p=~~fe,w=0,J=y.length;w<J;w++)S=y[w],$.push(S.slice(Re,-f));return $}_startAutoCleanup(){var p;return clearInterval(this.interval),typeof(p=this.interval=setInterval(async()=>{var f,y,w,S,$,J;$=Date.now(),w=this.instances,S=[];for(y in w){J=w[y];try{await J._store.__groupCheck__($)?S.push(this.deleteKey(y)):S.push(void 0)}catch(fe){f=fe,S.push(J.Events.trigger("error",f))}}return S},this.timeout/2)).unref=="function"?p.unref():void 0}updateSettings(p={}){if(re.overwrite(p,this.defaults,this),re.overwrite(p,p,this.limiterOptions),p.timeout!=null)return this._startAutoCleanup()}disconnect(p=!0){var f;if(!this.sharedConnection)return(f=this.connection)!=null?f.disconnect(p):void 0}}return F.prototype.defaults={timeout:1e3*60*5,connection:null,Promise,id:"group-key"},F}).call(r);var Se=B,Be,Ut,ut;ut=o,Ut=c,Be=(function(){class F{constructor(p={}){this.options=p,ut.load(this.options,this.defaults,this),this.Events=new Ut(this),this._arr=[],this._resetPromise(),this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise((p,f)=>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 f;return this._arr.push(p),f=this._promise,this._arr.length===this.maxSize?this._flush():this.maxTime!=null&&this._arr.length===1&&(this._timeout=setTimeout(()=>this._flush(),this.maxTime)),f}}return F.prototype.defaults={maxTime:null,maxSize:null,Promise},F}).call(r);var Qt=Be,Yc=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),Xc=e(Oe),on,nn,wr,Er,an,Tr,cn,un,ln,vr,Ve,pn=[].splice;Tr=10,nn=5,Ve=o,cn=g,Er=H,an=q,un=Yc,wr=c,ln=_e,vr=De,on=(function(){class F{constructor(p={},...f){var y,w;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(p,f),Ve.load(p,this.instanceDefaults,this),this._queues=new cn(Tr),this._scheduled={},this._states=new ln(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new wr(this),this._submitLock=new vr("submit",this.Promise),this._registerLock=new vr("register",this.Promise),w=Ve.load(p,this.storeDefaults,{}),this._store=(function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null)return y=Ve.load(p,this.redisStoreDefaults,{}),new un(this,w,y);if(this.datastore==="local")return y=Ve.load(p,this.localStoreDefaults,{}),new an(this,w,y);throw new F.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}).call(this),this._queues.on("leftzero",()=>{var S;return(S=this._store.heartbeat)!=null&&typeof S.ref=="function"?S.ref():void 0}),this._queues.on("zero",()=>{var S;return(S=this._store.heartbeat)!=null&&typeof S.unref=="function"?S.unref():void 0})}_validateOptions(p,f){if(!(p!=null&&typeof p=="object"&&f.length===0))throw new F.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,f,y,w){var S,$;try{if({running:$}=await this._store.__free__(p,y.weight),this.Events.trigger("debug",`Freed ${y.id}`,w),$===0&&this.empty())return this.Events.trigger("idle")}catch(J){return S=J,this.Events.trigger("error",S)}}_run(p,f,y){var w,S,$;return f.doRun(),w=this._clearGlobalState.bind(this,p),$=this._run.bind(this,p,f),S=this._free.bind(this,p,f),this._scheduled[p]={timeout:setTimeout(()=>f.doExecute(this._limiter,w,$,S),y),expiration:f.options.expiration!=null?setTimeout(function(){return f.doExpire(w,$,S)},y+f.options.expiration):void 0,job:f}}_drainOne(p){return this._registerLock.schedule(()=>{var f,y,w,S,$;return this.queued()===0?this.Promise.resolve(null):($=this._queues.getFirst(),{options:S,args:f}=w=$.first(),p!=null&&S.weight>p?this.Promise.resolve(null):(this.Events.trigger("debug",`Draining ${S.id}`,{args:f,options:S}),y=this._randomIndex(),this._store.__register__(y,S.weight,S.expiration).then(({success:J,wait:fe,reservoir:Re})=>{var Yt;return this.Events.trigger("debug",`Drained ${S.id}`,{success:J,args:f,options:S}),J?($.shift(),Yt=this.empty(),Yt&&this.Events.trigger("empty"),Re===0&&this.Events.trigger("depleted",Yt),this._run(y,w,fe),this.Promise.resolve(S.weight)):this.Promise.resolve(null)})))})}_drainAll(p,f=0){return this._drainOne(p).then(y=>{var w;return y!=null?(w=p!=null?p-y:p,this._drainAll(w,f+y)):this.Promise.resolve(f)}).catch(y=>this.Events.trigger("error",y))}_dropAllQueued(p){return this._queues.shiftAll(function(f){return f.doDrop({message:p})})}stop(p={}){var f,y;return p=Ve.load(p,this.stopDefaults),y=w=>{var S;return S=()=>{var $;return $=this._states.counts,$[0]+$[1]+$[2]+$[3]===w},new this.Promise(($,J)=>S()?$():this.on("done",()=>{if(S())return this.removeAllListeners("done"),$()}))},f=p.dropWaitingJobs?(this._run=function(w,S){return S.doDrop({message:p.dropErrorMessage})},this._drainOne=()=>this.Promise.resolve(null),this._registerLock.schedule(()=>this._submitLock.schedule(()=>{var w,S,$;S=this._scheduled;for(w in S)$=S[w],this.jobStatus($.job.options.id)==="RUNNING"&&(clearTimeout($.timeout),clearTimeout($.expiration),$.job.doDrop({message:p.dropErrorMessage}));return this._dropAllQueued(p.dropErrorMessage),y(0)}))):this.schedule({priority:Tr-1,weight:0},()=>y(1)),this._receive=function(w){return w._reject(new F.prototype.BottleneckError(p.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new F.prototype.BottleneckError("stop() has already been called")),f}async _addToQueue(p){var f,y,w,S,$,J,fe;({args:f,options:S}=p);try{({reachedHWM:$,blocked:y,strategy:fe}=await this._store.__submit__(this.queued(),S.weight))}catch(Re){return w=Re,this.Events.trigger("debug",`Could not queue ${S.id}`,{args:f,options:S,error:w}),p.doDrop({error:w}),!1}return y?(p.doDrop(),!0):$&&(J=fe===F.prototype.strategy.LEAK?this._queues.shiftLastFrom(S.priority):fe===F.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(S.priority+1):fe===F.prototype.strategy.OVERFLOW?p:void 0,J?.doDrop(),J==null||fe===F.prototype.strategy.OVERFLOW)?(J==null&&p.doDrop(),$):(p.doQueue($,y),this._queues.push(p),await this._drainAll(),$)}_receive(p){return this._states.jobStatus(p.options.id)!=null?(p._reject(new F.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 f,y,w,S,$,J,fe;return typeof p[0]=="function"?($=p,[y,...p]=$,[f]=pn.call(p,-1),S=Ve.load({},this.jobDefaults)):(J=p,[S,y,...p]=J,[f]=pn.call(p,-1),S=Ve.load(S,this.jobDefaults)),fe=(...Re)=>new this.Promise(function(Yt,eu){return y(...Re,function(...gn){return(gn[0]!=null?eu:Yt)(gn)})}),w=new Er(fe,p,S,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),w.promise.then(function(Re){return typeof f=="function"?f(...Re):void 0}).catch(function(Re){return Array.isArray(Re)?typeof f=="function"?f(...Re):void 0:typeof f=="function"?f(Re):void 0}),this._receive(w)}schedule(...p){var f,y,w;return typeof p[0]=="function"?([w,...p]=p,y={}):[y,w,...p]=p,f=new Er(w,p,y,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(f),f.promise}wrap(p){var f,y;return f=this.schedule.bind(this),y=function(...w){return f(p.bind(this),...w)},y.withOptions=function(w,...S){return f(w,p,...S)},y}async updateSettings(p={}){return await this._store.__updateSettings__(Ve.overwrite(p,this.storeDefaults)),Ve.overwrite(p,this.instanceDefaults,this),this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(p=0){return this._store.__incrementReservoir__(p)}}return F.default=F,F.Events=wr,F.version=F.prototype.version=Xc.version,F.strategy=F.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},F.BottleneckError=F.prototype.BottleneckError=R,F.Group=F.prototype.Group=Se,F.RedisConnection=F.prototype.RedisConnection=Ie,F.IORedisConnection=F.prototype.IORedisConnection=qe,F.Batcher=F.prototype.Batcher=Qt,F.prototype.jobDefaults={priority:nn,weight:1,expiration:null,id:"<no-id>"},F.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:F.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},F.prototype.localStoreDefaults={Promise,timeout:null,heartbeatInterval:250},F.prototype.redisStoreDefaults={Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},F.prototype.instanceDefaults={datastore:"local",connection:null,id:"<no-id>",rejectOnDrop:!0,trackDoneStatus:!1,Promise},F.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},F}).call(r);var dn=on,Zc=dn;return Zc}))});function Al(r,e,t){return r.retryLimiter.schedule(Ol,r,e,t)}async function Ol(r,e,t){let{pathname:s}=new URL(t.url,"http://github.test"),o=Gl(t.method,s),n=!o&&t.method!=="GET"&&t.method!=="HEAD",i=t.method==="GET"&&s.startsWith("/search/"),a=s.startsWith("/graphql"),u=~~e.retryCount>0?{priority:0,weight:0}:{};r.clustering&&(u.expiration=1e3*60),(n||a)&&await r.write.key(r.id).schedule(u,bo),n&&r.triggersNotification(s)&&await r.notifications.key(r.id).schedule(u,bo),i&&await r.search.key(r.id).schedule(u,bo);let l=(o?r.auth:r.global).key(r.id).schedule(u,e,t);if(a){let d=await l;if(d.data.errors!=null&&d.data.errors.some(g=>g.type==="RATE_LIMITED"))throw Object.assign(new Error("GraphQL Rate Limit Exceeded"),{response:d,data:d.data})}return l}function Gl(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 Dl(r){let t=`^(?:${r.map(s=>s.split("/").map(o=>o.startsWith("{")?"(?:.+?)":o).join("/")).map(s=>`(?:${s})`).join("|")})[^/]*$`;return new RegExp(t,"i")}function Ns(r,e){let{enabled:t=!0,Bottleneck:s=sa.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),St.global==null&&Il(s,a);let c=Object.assign({clustering:i!=null,triggersNotification:ra,fallbackSecondaryRateRetryAfter:60,retryAfterBaseValue:1e3,retryLimiter:new s,id:o,...St},e.throttle);if(typeof c.onSecondaryRateLimit!="function"||typeof c.onRateLimit!="function")throw new Error(`octokit/plugin-throttling error:
35
+ `)}function yl(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(bl.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)=>fl.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 ki.test(n)&&(o.url=n.replace(ki,"/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 hl(o,a,i.data)}return i.data.data})}function no(r,e){let t=r.defaults(e);return Object.assign((o,n)=>yl(t,o,n),{defaults:no.bind(null,t),endpoint:t.endpoint})}function Ai(r){return no(r,{method:"POST",url:"/graphql"})}var gl,hl,fl,bl,ki,vg,Oi=C(()=>{oo();ns();gl="0.0.0-development";hl=class extends Error{constructor(r,e,t){super(ml(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},fl=["method","baseUrl","url","headers","request","query","mediaType","operationName"],bl=["query","method","url"],ki=/\/api\/v3\/?$/;vg=no(cs,{headers:{"user-agent":`octokit-graphql.js/${gl} ${gt()}`},method:"POST",url:"/graphql"})});async function Rl(r){let e=_l(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 wl(r){return r.split(/\./).length===3?`bearer ${r}`:`token ${r}`}async function El(r,e,t,s){let o=e.endpoint.merge(t,s);return o.headers.authorization=wl(r),e(o)}var io,Gi,$i,_l,Di,Ii=C(()=>{io="(?:[a-zA-Z0-9_-]+)",Gi="\\.",$i=new RegExp(`^${io}${Gi}${io}${Gi}${io}$`),_l=$i.test.bind($i);Di=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(Rl.bind(null,e),{hook:El.bind(null,e)})}});var ao,Fi=C(()=>{ao="7.0.6"});function Sl(r={}){return typeof r.debug!="function"&&(r.debug=xi),typeof r.info!="function"&&(r.info=xi),typeof r.warn!="function"&&(r.warn=Tl),typeof r.error!="function"&&(r.error=vl),r}var xi,Tl,vl,Ui,js,Mi=C(()=>{ns();oi();oo();Oi();Ii();Fi();xi=()=>{},Tl=console.warn.bind(console),vl=console.error.bind(console);Ui=`octokit-core.js/${ao} ${gt()}`,js=class{static VERSION=ao;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 ri.Collection,s={baseUrl:cs.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} ${Ui}`:Ui,e.baseUrl&&(s.baseUrl=e.baseUrl),e.previews&&(s.mediaType.previews=e.previews),e.timeZone&&(s.headers["time-zone"]=e.timeZone),this.request=cs.defaults(s),this.graphql=Ai(this.request).defaults(s),this.log=Sl(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=Di(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 Li,ji=C(()=>{Li="6.0.0"});function co(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 Ni=C(()=>{ji();co.VERSION=Li});function Pl(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 uo(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}),u=Pl(c);if(a=((u.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!a&&"total_commits"in u.data){let l=new URL(u.url),d=l.searchParams,g=parseInt(d.get("page")||"1",10),E=parseInt(d.get("per_page")||"250",10);g*E<u.data.total_commits&&(d.set("page",String(g+1)),a=l.toString())}return{value:u}}catch(c){if(c.status!==409)throw c;return a="",{value:{status:200,headers:{},data:[]}}}}})}}function Hi(r,e,t,s){return typeof t=="function"&&(s=t,t=void 0),qi(r,[],uo(r,e,t)[Symbol.asyncIterator](),s)}function qi(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:qi(r,e,t,s)})}function lo(r){return{paginate:Object.assign(Hi.bind(null,r),{iterator:uo.bind(null,r)})}}var Cl,Ng,Bi=C(()=>{Cl="0.0.0-development";Ng=Object.assign(Hi,{iterator:uo});lo.VERSION=Cl});var po,Vi=C(()=>{po="17.0.0"});var kl,Wi,zi=C(()=>{kl={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"]}},Wi=kl});function go(r){let e={};for(let t of vt.keys())e[t]=new Proxy({octokit:r,scope:t,cache:{}},Al);return e}function Ol(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[u,l]=o.renamed;r.log.warn(`octokit.${e}.${t}() has been renamed to octokit.${u}.${l}()`)}if(o.deprecated&&r.log.warn(o.deprecated),o.renamedParameters){let u=n.endpoint.merge(...a);for(let[l,d]of Object.entries(o.renamedParameters))l in u&&(r.log.warn(`"${l}" parameter is deprecated for "octokit.${e}.${t}()". Use "${d}" instead`),d in u||(u[d]=u[l]),delete u[l]);return n(u)}return n(...a)}return Object.assign(i,n)}var vt,Al,Ji=C(()=>{zi();vt=new Map;for(let[r,e]of Object.entries(Wi))for(let[t,s]of Object.entries(e)){let[o,n,i]=s,[a,c]=o.split(/ /),u=Object.assign({method:a,url:c},n);vt.has(r)||vt.set(r,new Map),vt.get(r).set(t,{scope:r,methodName:t,endpointDefaults:u,decorations:i})}Al={has({scope:r},e){return vt.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[...vt.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=vt.get(e).get(s);if(!o)return;let{endpointDefaults:n,decorations:i}=o;return i?t[s]=Ol(r,e,s,n,i):t[s]=r.request.defaults(n),t[s]}}});function Gl(r){return{rest:go(r)}}function mo(r){let e=go(r);return{...e,rest:e}}var Ki=C(()=>{Vi();Ji();Gl.VERSION=po;mo.VERSION=po});var Qi,Yi=C(()=>{Qi="22.0.1"});var Xi,Zi=C(()=>{Mi();Ni();Bi();Ki();Yi();Xi=js.plugin(co,mo,lo).defaults({userAgent:`octokit-rest.js/${Qi}`})});var ea=Je((ho,fo)=>{(function(r,e){typeof ho=="object"&&typeof fo<"u"?fo.exports=e():typeof define=="function"&&define.amd?define(e):r.Bottleneck=e()})(ho,(function(){"use strict";var r=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function e(F){return F&&F.default||F}var t=function(F,h,p={}){var f,y,_;for(f in h)_=h[f],p[f]=(y=F[f])!=null?y:_;return p},s=function(F,h,p={}){var f,y;for(f in F)y=F[f],h[f]!==void 0&&(p[f]=y);return p},o={load:t,overwrite:s},n;n=class{constructor(h,p){this.incr=h,this.decr=p,this._first=null,this._last=null,this.length=0}push(h){var p;this.length++,typeof this.incr=="function"&&this.incr(),p={value:h,prev:this._last,next:null},this._last!=null?(this._last.next=p,this._last=p):this._first=this._last=p}shift(){var h;if(this._first!=null)return this.length--,typeof this.decr=="function"&&this.decr(),h=this._first.value,(this._first=this._first.next)!=null?this._first.prev=null:this._last=null,h}first(){if(this._first!=null)return this._first.value}getArray(){var h,p,f;for(h=this._first,f=[];h!=null;)f.push((p=h,h=h.next,p.value));return f}forEachShift(h){var p;for(p=this.shift();p!=null;)h(p),p=this.shift()}debug(){var h,p,f,y,_;for(h=this._first,_=[];h!=null;)_.push((p=h,h=h.next,{value:p.value,prev:(f=p.prev)!=null?f.value:void 0,next:(y=p.next)!=null?y.value:void 0}));return _}};var i=n,a;a=class{constructor(h){if(this.instance=h,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,f)=>this._addListener(p,"many",f),this.instance.once=(p,f)=>this._addListener(p,"once",f),this.instance.removeAllListeners=(p=null)=>p!=null?delete this._events[p]:this._events={}}_addListener(h,p,f){var y;return(y=this._events)[h]==null&&(y[h]=[]),this._events[h].push({cb:f,status:p}),this.instance}listenerCount(h){return this._events[h]!=null?this._events[h].length:0}async trigger(h,...p){var f,y;try{return h!=="debug"&&this.trigger("debug",`Event triggered: ${h}`,p),this._events[h]==null?void 0:(this._events[h]=this._events[h].filter(function(_){return _.status!=="none"}),y=this._events[h].map(async _=>{var S,$;if(_.status!=="none"){_.status==="once"&&(_.status="none");try{return $=typeof _.cb=="function"?_.cb(...p):void 0,typeof $?.then=="function"?await $:$}catch(J){return S=J,this.trigger("error",S),null}}}),(await Promise.all(y)).find(function(_){return _!=null}))}catch(_){return f=_,this.trigger("error",f),null}}};var c=a,u,l,d;u=i,l=c,d=class{constructor(h){var p;this.Events=new l(this),this._length=0,this._lists=(function(){var f,y,_;for(_=[],p=f=1,y=h;1<=y?f<=y:f>=y;p=1<=y?++f:--f)_.push(new u((()=>this.incr()),(()=>this.decr())));return _}).call(this)}incr(){if(this._length++===0)return this.Events.trigger("leftzero")}decr(){if(--this._length===0)return this.Events.trigger("zero")}push(h){return this._lists[h.options.priority].push(h)}queued(h){return h!=null?this._lists[h].length:this._length}shiftAll(h){return this._lists.forEach(function(p){return p.forEachShift(h)})}getFirst(h=this._lists){var p,f,y;for(p=0,f=h.length;p<f;p++)if(y=h[p],y.length>0)return y;return[]}shiftLastFrom(h){return this.getFirst(this._lists.slice(h).reverse()).shift()}};var g=d,E;E=class extends Error{};var R=E,w,P,b,G,x;G=10,P=5,x=o,w=R,b=class{constructor(h,p,f,y,_,S,$,J){this.task=h,this.args=p,this.rejectOnDrop=_,this.Events=S,this._states=$,this.Promise=J,this.options=x.load(f,y),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===y.id&&(this.options.id=`${this.options.id}-${this._randomIndex()}`),this.promise=new this.Promise((be,Re)=>{this._resolve=be,this._reject=Re}),this.retryCount=0}_sanitizePriority(h){var p;return p=~~h!==h?P:h,p<0?0:p>G-1?G-1:p}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:h,message:p="This job has been dropped by Bottleneck"}={}){return this._states.remove(this.options.id)?(this.rejectOnDrop&&this._reject(h??new w(p)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0):!1}_assertStatus(h){var p;if(p=this._states.jobStatus(this.options.id),!(p===h||h==="DONE"&&p===null))throw new w(`Invalid job status ${p}, expected ${h}. 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(h,p){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:h,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(h,p,f,y){var _,S,$;this.retryCount===0?(this._assertStatus("RUNNING"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),S={args:this.args,options:this.options,retryCount:this.retryCount},this.Events.trigger("executing",S);try{if($=await(h!=null?h.schedule(this.options,this.task,...this.args):this.task(...this.args)),p())return this.doDone(S),await y(this.options,S),this._assertStatus("DONE"),this._resolve($)}catch(J){return _=J,this._onFailure(_,S,p,f,y)}}doExpire(h,p,f){var y,_;return this._states.jobStatus(this.options.id==="RUNNING")&&this._states.next(this.options.id),this._assertStatus("EXECUTING"),_={args:this.args,options:this.options,retryCount:this.retryCount},y=new w(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(y,_,h,p,f)}async _onFailure(h,p,f,y,_){var S,$;if(f())return S=await this.Events.trigger("failed",h,p),S!=null?($=~~S,this.Events.trigger("retry",`Retrying ${this.options.id} after ${$} ms`,p),this.retryCount++,y($)):(this.doDone(p),await _(this.options,p),this._assertStatus("DONE"),this._reject(h))}doDone(h){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",h)}};var B=b,D,k,O;O=o,D=R,k=class{constructor(h,p,f){this.instance=h,this.storeOptions=p,this.clientId=this.instance._randomIndex(),O.load(f,f,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 h;return this.heartbeat==null&&(this.storeOptions.reservoirRefreshInterval!=null&&this.storeOptions.reservoirRefreshAmount!=null||this.storeOptions.reservoirIncreaseInterval!=null&&this.storeOptions.reservoirIncreaseAmount!=null)?typeof(h=this.heartbeat=setInterval(()=>{var p,f,y,_,S;if(_=Date.now(),this.storeOptions.reservoirRefreshInterval!=null&&_>=this._lastReservoirRefresh+this.storeOptions.reservoirRefreshInterval&&(this._lastReservoirRefresh=_,this.storeOptions.reservoir=this.storeOptions.reservoirRefreshAmount,this.instance._drainAll(this.computeCapacity())),this.storeOptions.reservoirIncreaseInterval!=null&&_>=this._lastReservoirIncrease+this.storeOptions.reservoirIncreaseInterval&&({reservoirIncreaseAmount:p,reservoirIncreaseMaximum:y,reservoir:S}=this.storeOptions,this._lastReservoirIncrease=_,f=y!=null?Math.min(p,y-S):p,f>0))return this.storeOptions.reservoir+=f,this.instance._drainAll(this.computeCapacity())},this.heartbeatInterval)).unref=="function"?h.unref():void 0:clearInterval(this.heartbeat)}async __publish__(h){return await this.yieldLoop(),this.instance.Events.trigger("message",h.toString())}async __disconnect__(h){return await this.yieldLoop(),clearInterval(this.heartbeat),this.Promise.resolve()}yieldLoop(h=0){return new this.Promise(function(p,f){return setTimeout(p,h)})}computePenalty(){var h;return(h=this.storeOptions.penalty)!=null?h:15*this.storeOptions.minTime||5e3}async __updateSettings__(h){return await this.yieldLoop(),O.overwrite(h,h,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__(h){return await this.yieldLoop(),this._nextRequest+this.timeout<h}computeCapacity(){var h,p;return{maxConcurrent:h,reservoir:p}=this.storeOptions,h!=null&&p!=null?Math.min(h-this._running,p):h!=null?h-this._running:p??null}conditionsCheck(h){var p;return p=this.computeCapacity(),p==null||h<=p}async __incrementReservoir__(h){var p;return await this.yieldLoop(),p=this.storeOptions.reservoir+=h,this.instance._drainAll(this.computeCapacity()),p}async __currentReservoir__(){return await this.yieldLoop(),this.storeOptions.reservoir}isBlocked(h){return this._unblockTime>=h}check(h,p){return this.conditionsCheck(h)&&this._nextRequest-p<=0}async __check__(h){var p;return await this.yieldLoop(),p=Date.now(),this.check(h,p)}async __register__(h,p,f){var y,_;return await this.yieldLoop(),y=Date.now(),this.conditionsCheck(p)?(this._running+=p,this.storeOptions.reservoir!=null&&(this.storeOptions.reservoir-=p),_=Math.max(this._nextRequest-y,0),this._nextRequest=y+_+this.storeOptions.minTime,{success:!0,wait:_,reservoir:this.storeOptions.reservoir}):{success:!1}}strategyIsBlock(){return this.storeOptions.strategy===3}async __submit__(h,p){var f,y,_;if(await this.yieldLoop(),this.storeOptions.maxConcurrent!=null&&p>this.storeOptions.maxConcurrent)throw new D(`Impossible to add a job having a weight of ${p} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);return y=Date.now(),_=this.storeOptions.highWater!=null&&h===this.storeOptions.highWater&&!this.check(p,y),f=this.strategyIsBlock()&&(_||this.isBlocked(y)),f&&(this._unblockTime=y+this.computePenalty(),this._nextRequest=this._unblockTime+this.storeOptions.minTime,this.instance._dropAllQueued()),{reachedHWM:_,blocked:f,strategy:this.storeOptions.strategy}}async __free__(h,p){return await this.yieldLoop(),this._running-=p,this._done+=p,this.instance._drainAll(this.computeCapacity()),{running:this._running}}};var H=k,U,ue;U=R,ue=class{constructor(h){this.status=h,this._jobs={},this.counts=this.status.map(function(){return 0})}next(h){var p,f;if(p=this._jobs[h],f=p+1,p!=null&&f<this.status.length)return this.counts[p]--,this.counts[f]++,this._jobs[h]++;if(p!=null)return this.counts[p]--,delete this._jobs[h]}start(h){var p;return p=0,this._jobs[h]=p,this.counts[p]++}remove(h){var p;return p=this._jobs[h],p!=null&&(this.counts[p]--,delete this._jobs[h]),p!=null}jobStatus(h){var p;return(p=this.status[this._jobs[h]])!=null?p:null}statusJobs(h){var p,f,y,_,S;if(h!=null){if(f=this.status.indexOf(h),f<0)throw new U(`status must be one of ${this.status.join(", ")}`);y=this._jobs,_=[];for(p in y)S=y[p],S===f&&_.push(p);return _}else return Object.keys(this._jobs)}statusCounts(){return this.counts.reduce(((h,p,f)=>(h[this.status[f]]=p,h)),{})}};var _e=ue,A,te;A=i,te=class{constructor(h,p){this.schedule=this.schedule.bind(this),this.name=h,this.Promise=p,this._running=0,this._queue=new A}isEmpty(){return this._queue.length===0}async _tryToRun(){var h,p,f,y,_,S,$;if(this._running<1&&this._queue.length>0)return this._running++,{task:$,args:h,resolve:_,reject:y}=this._queue.shift(),p=await(async function(){try{return S=await $(...h),function(){return _(S)}}catch(J){return f=J,function(){return y(f)}}})(),this._running--,this._tryToRun(),p()}schedule(h,...p){var f,y,_;return _=y=null,f=new this.Promise(function(S,$){return _=S,y=$}),this._queue.push({task:h,args:p,resolve:_,reject:y}),this._tryToRun(),f}};var De=te,Ae="2.19.5",ct={version:Ae},Oe=Object.freeze({version:Ae,default:ct}),Ie=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),qe=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),I=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),q,M,K,X,se,oe;oe=o,q=c,X=Ie,K=qe,se=I,M=(function(){class F{constructor(p={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=p,oe.load(this.limiterOptions,this.defaults,this),this.Events=new q(this),this.instances={},this.Bottleneck=dn,this._startAutoCleanup(),this.sharedConnection=this.connection!=null,this.connection==null&&(this.limiterOptions.datastore==="redis"?this.connection=new X(Object.assign({},this.limiterOptions,{Events:this.Events})):this.limiterOptions.datastore==="ioredis"&&(this.connection=new K(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(p=""){var f;return(f=this.instances[p])!=null?f:(()=>{var y;return y=this.instances[p]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${p}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",y,p),y})()}async deleteKey(p=""){var f,y;return y=this.instances[p],this.connection&&(f=await this.connection.__runCommand__(["del",...se.allKeys(`${this.id}-${p}`)])),y!=null&&(delete this.instances[p],await y.disconnect()),y!=null||f>0}limiters(){var p,f,y,_;f=this.instances,y=[];for(p in f)_=f[p],y.push({key:p,limiter:_});return y}keys(){return Object.keys(this.instances)}async clusterKeys(){var p,f,y,_,S,$,J,be,Re;if(this.connection==null)return this.Promise.resolve(this.keys());for($=[],p=null,Re=`b_${this.id}-`.length,f=9;p!==0;)for([be,y]=await this.connection.__runCommand__(["scan",p??0,"match",`b_${this.id}-*_settings`,"count",1e4]),p=~~be,_=0,J=y.length;_<J;_++)S=y[_],$.push(S.slice(Re,-f));return $}_startAutoCleanup(){var p;return clearInterval(this.interval),typeof(p=this.interval=setInterval(async()=>{var f,y,_,S,$,J;$=Date.now(),_=this.instances,S=[];for(y in _){J=_[y];try{await J._store.__groupCheck__($)?S.push(this.deleteKey(y)):S.push(void 0)}catch(be){f=be,S.push(J.Events.trigger("error",f))}}return S},this.timeout/2)).unref=="function"?p.unref():void 0}updateSettings(p={}){if(oe.overwrite(p,this.defaults,this),oe.overwrite(p,p,this.limiterOptions),p.timeout!=null)return this._startAutoCleanup()}disconnect(p=!0){var f;if(!this.sharedConnection)return(f=this.connection)!=null?f.disconnect(p):void 0}}return F.prototype.defaults={timeout:1e3*60*5,connection:null,Promise,id:"group-key"},F}).call(r);var Se=M,Be,Ut,ut;ut=o,Ut=c,Be=(function(){class F{constructor(p={}){this.options=p,ut.load(this.options,this.defaults,this),this.Events=new Ut(this),this._arr=[],this._resetPromise(),this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise((p,f)=>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 f;return this._arr.push(p),f=this._promise,this._arr.length===this.maxSize?this._flush():this.maxTime!=null&&this._arr.length===1&&(this._timeout=setTimeout(()=>this._flush(),this.maxTime)),f}}return F.prototype.defaults={maxTime:null,maxSize:null,Promise},F}).call(r);var Qt=Be,tu=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),su=e(Oe),on,nn,wr,Er,an,Tr,cn,un,ln,vr,Ve,pn=[].splice;Tr=10,nn=5,Ve=o,cn=g,Er=B,an=H,un=tu,wr=c,ln=_e,vr=De,on=(function(){class F{constructor(p={},...f){var y,_;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(p,f),Ve.load(p,this.instanceDefaults,this),this._queues=new cn(Tr),this._scheduled={},this._states=new ln(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new wr(this),this._submitLock=new vr("submit",this.Promise),this._registerLock=new vr("register",this.Promise),_=Ve.load(p,this.storeDefaults,{}),this._store=(function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null)return y=Ve.load(p,this.redisStoreDefaults,{}),new un(this,_,y);if(this.datastore==="local")return y=Ve.load(p,this.localStoreDefaults,{}),new an(this,_,y);throw new F.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}).call(this),this._queues.on("leftzero",()=>{var S;return(S=this._store.heartbeat)!=null&&typeof S.ref=="function"?S.ref():void 0}),this._queues.on("zero",()=>{var S;return(S=this._store.heartbeat)!=null&&typeof S.unref=="function"?S.unref():void 0})}_validateOptions(p,f){if(!(p!=null&&typeof p=="object"&&f.length===0))throw new F.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,f,y,_){var S,$;try{if({running:$}=await this._store.__free__(p,y.weight),this.Events.trigger("debug",`Freed ${y.id}`,_),$===0&&this.empty())return this.Events.trigger("idle")}catch(J){return S=J,this.Events.trigger("error",S)}}_run(p,f,y){var _,S,$;return f.doRun(),_=this._clearGlobalState.bind(this,p),$=this._run.bind(this,p,f),S=this._free.bind(this,p,f),this._scheduled[p]={timeout:setTimeout(()=>f.doExecute(this._limiter,_,$,S),y),expiration:f.options.expiration!=null?setTimeout(function(){return f.doExpire(_,$,S)},y+f.options.expiration):void 0,job:f}}_drainOne(p){return this._registerLock.schedule(()=>{var f,y,_,S,$;return this.queued()===0?this.Promise.resolve(null):($=this._queues.getFirst(),{options:S,args:f}=_=$.first(),p!=null&&S.weight>p?this.Promise.resolve(null):(this.Events.trigger("debug",`Draining ${S.id}`,{args:f,options:S}),y=this._randomIndex(),this._store.__register__(y,S.weight,S.expiration).then(({success:J,wait:be,reservoir:Re})=>{var Yt;return this.Events.trigger("debug",`Drained ${S.id}`,{success:J,args:f,options:S}),J?($.shift(),Yt=this.empty(),Yt&&this.Events.trigger("empty"),Re===0&&this.Events.trigger("depleted",Yt),this._run(y,_,be),this.Promise.resolve(S.weight)):this.Promise.resolve(null)})))})}_drainAll(p,f=0){return this._drainOne(p).then(y=>{var _;return y!=null?(_=p!=null?p-y:p,this._drainAll(_,f+y)):this.Promise.resolve(f)}).catch(y=>this.Events.trigger("error",y))}_dropAllQueued(p){return this._queues.shiftAll(function(f){return f.doDrop({message:p})})}stop(p={}){var f,y;return p=Ve.load(p,this.stopDefaults),y=_=>{var S;return S=()=>{var $;return $=this._states.counts,$[0]+$[1]+$[2]+$[3]===_},new this.Promise(($,J)=>S()?$():this.on("done",()=>{if(S())return this.removeAllListeners("done"),$()}))},f=p.dropWaitingJobs?(this._run=function(_,S){return S.doDrop({message:p.dropErrorMessage})},this._drainOne=()=>this.Promise.resolve(null),this._registerLock.schedule(()=>this._submitLock.schedule(()=>{var _,S,$;S=this._scheduled;for(_ in S)$=S[_],this.jobStatus($.job.options.id)==="RUNNING"&&(clearTimeout($.timeout),clearTimeout($.expiration),$.job.doDrop({message:p.dropErrorMessage}));return this._dropAllQueued(p.dropErrorMessage),y(0)}))):this.schedule({priority:Tr-1,weight:0},()=>y(1)),this._receive=function(_){return _._reject(new F.prototype.BottleneckError(p.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new F.prototype.BottleneckError("stop() has already been called")),f}async _addToQueue(p){var f,y,_,S,$,J,be;({args:f,options:S}=p);try{({reachedHWM:$,blocked:y,strategy:be}=await this._store.__submit__(this.queued(),S.weight))}catch(Re){return _=Re,this.Events.trigger("debug",`Could not queue ${S.id}`,{args:f,options:S,error:_}),p.doDrop({error:_}),!1}return y?(p.doDrop(),!0):$&&(J=be===F.prototype.strategy.LEAK?this._queues.shiftLastFrom(S.priority):be===F.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(S.priority+1):be===F.prototype.strategy.OVERFLOW?p:void 0,J?.doDrop(),J==null||be===F.prototype.strategy.OVERFLOW)?(J==null&&p.doDrop(),$):(p.doQueue($,y),this._queues.push(p),await this._drainAll(),$)}_receive(p){return this._states.jobStatus(p.options.id)!=null?(p._reject(new F.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 f,y,_,S,$,J,be;return typeof p[0]=="function"?($=p,[y,...p]=$,[f]=pn.call(p,-1),S=Ve.load({},this.jobDefaults)):(J=p,[S,y,...p]=J,[f]=pn.call(p,-1),S=Ve.load(S,this.jobDefaults)),be=(...Re)=>new this.Promise(function(Yt,ou){return y(...Re,function(...gn){return(gn[0]!=null?ou:Yt)(gn)})}),_=new Er(be,p,S,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),_.promise.then(function(Re){return typeof f=="function"?f(...Re):void 0}).catch(function(Re){return Array.isArray(Re)?typeof f=="function"?f(...Re):void 0:typeof f=="function"?f(Re):void 0}),this._receive(_)}schedule(...p){var f,y,_;return typeof p[0]=="function"?([_,...p]=p,y={}):[y,_,...p]=p,f=new Er(_,p,y,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(f),f.promise}wrap(p){var f,y;return f=this.schedule.bind(this),y=function(..._){return f(p.bind(this),..._)},y.withOptions=function(_,...S){return f(_,p,...S)},y}async updateSettings(p={}){return await this._store.__updateSettings__(Ve.overwrite(p,this.storeDefaults)),Ve.overwrite(p,this.instanceDefaults,this),this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(p=0){return this._store.__incrementReservoir__(p)}}return F.default=F,F.Events=wr,F.version=F.prototype.version=su.version,F.strategy=F.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},F.BottleneckError=F.prototype.BottleneckError=R,F.Group=F.prototype.Group=Se,F.RedisConnection=F.prototype.RedisConnection=Ie,F.IORedisConnection=F.prototype.IORedisConnection=qe,F.Batcher=F.prototype.Batcher=Qt,F.prototype.jobDefaults={priority:nn,weight:1,expiration:null,id:"<no-id>"},F.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:F.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},F.prototype.localStoreDefaults={Promise,timeout:null,heartbeatInterval:250},F.prototype.redisStoreDefaults={Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},F.prototype.instanceDefaults={datastore:"local",connection:null,id:"<no-id>",rejectOnDrop:!0,trackDoneStatus:!1,Promise},F.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},F}).call(r);var dn=on,ru=dn;return ru}))});function Dl(r,e,t){return r.retryLimiter.schedule(Il,r,e,t)}async function Il(r,e,t){let{pathname:s}=new URL(t.url,"http://github.test"),o=Fl(t.method,s),n=!o&&t.method!=="GET"&&t.method!=="HEAD",i=t.method==="GET"&&s.startsWith("/search/"),a=s.startsWith("/graphql"),u=~~e.retryCount>0?{priority:0,weight:0}:{};r.clustering&&(u.expiration=1e3*60),(n||a)&&await r.write.key(r.id).schedule(u,bo),n&&r.triggersNotification(s)&&await r.notifications.key(r.id).schedule(u,bo),i&&await r.search.key(r.id).schedule(u,bo);let l=(o?r.auth:r.global).key(r.id).schedule(u,e,t);if(a){let d=await l;if(d.data.errors!=null&&d.data.errors.some(g=>g.type==="RATE_LIMITED"))throw Object.assign(new Error("GraphQL Rate Limit Exceeded"),{response:d,data:d.data})}return l}function Fl(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 Ul(r){let t=`^(?:${r.map(s=>s.split("/").map(o=>o.startsWith("{")?"(?:.+?)":o).join("/")).map(s=>`(?:${s})`).join("|")})[^/]*$`;return new RegExp(t,"i")}function Ns(r,e){let{enabled:t=!0,Bottleneck:s=sa.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),St.global==null&&Ml(s,a);let c=Object.assign({clustering:i!=null,triggersNotification:ra,fallbackSecondaryRateRetryAfter:60,retryAfterBaseValue:1e3,retryLimiter:new s,id:o,...St},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}funct
42
42
  onRateLimit: (retryAfter, options) => {/* ... */}
43
43
  }
44
44
  })
45
- `);let u={},l=new s.Events(u);return u.on("secondary-limit",c.onSecondaryRateLimit),u.on("rate-limit",c.onRateLimit),u.on("error",d=>r.log.warn("Error in throttling-plugin limit handler",d)),c.retryLimiter.on("failed",async function(d,g){let[E,R,_]=g.args,{pathname:C}=new URL(_.url,"http://github.test");if(!(C.startsWith("/graphql")&&d.status!==401||d.status===403||d.status===429))return;let G=~~R.retryCount;R.retryCount=G,_.request.retryCount=G;let{wantRetry:x,retryAfter:H=0}=await(async function(){if(/\bsecondary rate\b/i.test(d.message)){let M=Number(d.response.headers["retry-after"])||E.fallbackSecondaryRateRetryAfter;return{wantRetry:await l.trigger("secondary-limit",M,_,r,G),retryAfter:M}}if(d.response.headers!=null&&d.response.headers["x-ratelimit-remaining"]==="0"||(d.response.data?.errors??[]).some(M=>M.type==="RATE_LIMITED")){let M=new Date(~~d.response.headers["x-ratelimit-reset"]*1e3).getTime(),k=Math.max(Math.ceil((M-Date.now())/1e3)+1,0);return{wantRetry:await l.trigger("rate-limit",k,_,r,G),retryAfter:k}}return{}})();if(x)return R.retryCount++,H*E.retryAfterBaseValue}),r.hook.wrap("request",Al.bind(null,c)),{}}var sa,kl,bo,$l,ta,ra,St,Il,oa=P(()=>{sa=z(ea(),1),kl="0.0.0-development",bo=()=>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"];ta=Dl($l),ra=ta.test.bind(ta),St={},Il=function(r,e){St.global=new r.Group({id:"octokit-global",maxConcurrent:10,...e}),St.auth=new r.Group({id:"octokit-auth",maxConcurrent:1,...e}),St.search=new r.Group({id:"octokit-search",maxConcurrent:1,minTime:2e3,...e}),St.write=new r.Group({id:"octokit-write",maxConcurrent:1,minTime:1e3,...e}),St.notifications=new r.Group({id:"octokit-notifications",maxConcurrent:1,minTime:3e3,...e})};Ns.VERSION=kl;Ns.triggersNotification=ra});function Bs(r){return r.toLocaleTimeString("en-US",{hour12:!1})}function xl(){return{onRateLimit:(r,e,t,s)=>{let o=e,n=new Date(Date.now()+r*1e3);return s<2?(m(Hs,`Rate limit hit (retry ${s+1}/2, waiting ${r}s, resets at ${Bs(n)}) \u2014 ${o.method} ${o.url}`),!0):(m(Hs,`Rate limit exceeded, not retrying \u2014 ${o.method} ${o.url} (resets at ${Bs(n)})`),!1)},onSecondaryRateLimit:(r,e,t,s)=>{let o=e,n=new Date(Date.now()+r*1e3);return s<1?(m(Hs,`Secondary rate limit hit (retry ${s+1}/1, waiting ${r}s, resets at ${Bs(n)}) \u2014 ${o.method} ${o.url}`),!0):(m(Hs,`Secondary rate limit exceeded, not retrying \u2014 ${o.method} ${o.url} (resets at ${Bs(n)})`),!1)}}}function me(r){if(qs&&na===r)return qs;let e=xl();return qs=new Fl({auth:r,throttle:e}),na=r,qs}async function yo(r){let e=me(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 Hs,Fl,qs,na,Ht=P(()=>{"use strict";Zi();oa();le();Hs="github",Fl=Xi.plugin(Ns),qs=null,na=null});function Ll(r,e){if(!r||!e)return!0;let t=r.toLowerCase();return Ul.has(t)?!0:t===e.toLowerCase()}function jl(r,e){let t=new Date(r).getTime(),s=new Date(e).getTime();return Number.isNaN(t)||Number.isNaN(s)?r>e:t-s>=Ml}function _o(r){let{ciStatus:e,hasMergeConflict:t,hasUnrespondedComment:s,hasIncompleteChecklist:o,reviewDecision:n,daysSinceActivity:i,dormantThreshold:a,approachingThreshold:c,latestCommitDate:u,latestCommitAuthor:l,contributorUsername:d,lastMaintainerCommentDate:g,latestChangesRequestedDate:E,hasActionableCIFailure:R=!0}=r,_="active";i>=a?_="dormant":i>=c&&(_="approaching_dormant");let C=u&&Ll(l,d)?u:void 0;return s?C&&g&&jl(C,g)?E&&C<E?{status:"needs_addressing",actionReason:"needs_response",stalenessTier:_}:e==="failing"&&R?{status:"needs_addressing",actionReason:"failing_ci",stalenessTier:_}:{status:"waiting_on_maintainer",waitReason:"changes_addressed",stalenessTier:_}:{status:"needs_addressing",actionReason:"needs_response",stalenessTier:_}:n==="changes_requested"&&E?!C||C<E?{status:"needs_addressing",actionReason:"needs_changes",stalenessTier:_}:e==="failing"&&R?{status:"needs_addressing",actionReason:"failing_ci",stalenessTier:_}:{status:"waiting_on_maintainer",waitReason:"changes_addressed",stalenessTier:_}:e==="failing"?R?{status:"needs_addressing",actionReason:"failing_ci",stalenessTier:_}:{status:"waiting_on_maintainer",waitReason:"ci_blocked",stalenessTier:_}:t?{status:"needs_addressing",actionReason:"merge_conflict",stalenessTier:_}:o?{status:"needs_addressing",actionReason:"incomplete_checklist",stalenessTier:_}:n==="approved"&&(e==="passing"||e==="unknown")?{status:"waiting_on_maintainer",waitReason:"pending_merge",stalenessTier:_}:{status:"waiting_on_maintainer",waitReason:"pending_review",stalenessTier:_}}var Ul,Ml,Ro=P(()=>{"use strict";Ul=new Set(["autofix-ci[bot]","prettier-ci[bot]","pre-commit-ci[bot]"]),Ml=120*1e3});async function Vs(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 wo=P(()=>{"use strict"});async function Le(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 us=P(()=>{"use strict"});function st(){return Eo||(Eo=new zs),Eo}async function ls(r,e,t){let s=r.getInflight(e);if(s)return T(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 u=await t(a),l=u.headers?.etag;return l&&r.set(e,l,u.data),u.data}catch(u){if(Hl(u)){let l=r.get(e);if(l)return T(mt,`304 cache hit for ${e}`),l.body}throw u}})(),i=r.setInflight(e,n);try{return await n}finally{i()}}async function Js(r,e,t,s){let o=r.getIfFresh(e,t);if(o)return T(mt,`Time-based cache hit for ${e}`),o;let n=await s();return r.set(e,"",n),n}function Hl(r){return Te(r)===304}var Pe,Ws,ia,mt,Nl,zs,Eo,qt=P(()=>{"use strict";Pe=z(require("fs"),1),Ws=z(require("path"),1),ia=z(require("crypto"),1);Ee();le();ae();mt="http-cache",Nl=1440*60*1e3,zs=class{cacheDir;inflightRequests=new Map;constructor(e){this.cacheDir=e??ks()}keyFor(e){return ia.createHash("sha256").update(e).digest("hex")}pathFor(e){return Ws.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=Pe.readFileSync(t,"utf-8"),o=JSON.parse(s);return o.url!==e?(T(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{Pe.writeFileSync(this.pathFor(e),JSON.stringify(o),{encoding:"utf-8",mode:384}),T(mt,`Cached response for ${e}`)}catch(n){T(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=Nl){let t=0;try{let s=Pe.readdirSync(this.cacheDir),o=Date.now();for(let n of s){if(!n.endsWith(".json"))continue;let i=Ws.join(this.cacheDir,n);try{let a=Pe.readFileSync(i,"utf-8"),c=JSON.parse(a);o-new Date(c.cachedAt).getTime()>e&&(Pe.unlinkSync(i),t++)}catch{try{Pe.unlinkSync(i),t++}catch{}}}}catch{}return t>0&&T(mt,`Evicted ${t} stale cache entries`),t}clear(){try{let e=Pe.readdirSync(this.cacheDir);for(let t of e)t.endsWith(".json")&&Pe.unlinkSync(Ws.join(this.cacheDir,t));T(mt,"Cache cleared")}catch{}}size(){try{return Pe.readdirSync(this.cacheDir).filter(e=>e.endsWith(".json")).length}catch{return 0}}},Eo=null});function To(r,e,t){if(t==="cancelled"||t==="timed_out")return"infrastructure";let s=r.toLowerCase();if(ca.some(o=>o.test(s)))return"auth_gate";if(aa.some(o=>o.test(s)))return"fork_limitation";if(ua.some(o=>o.test(s)))return"infrastructure";if(e){let o=e.toLowerCase();if(ca.some(n=>n.test(o)))return"auth_gate";if(aa.some(n=>n.test(o)))return"fork_limitation";if(ua.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:To(t,void 0,s),conclusion:s}})}function la(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 pa(r){let e=r.statuses.filter(c=>{let u=(c.description||"").toLowerCase();return!(c.state==="failure"&&(u.includes("authorization required")||u.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 da(r,e,t){let{hasFailingChecks:s,hasPendingChecks:o,hasSuccessfulChecks:n,failingCheckNames:i,failingCheckConclusions:a}=r,{effectiveCombinedState:c,hasStatuses:u,failingStatusNames:l}=e,d=[...i,...l];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}:!u&&t===0?{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}:{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}}var aa,ca,ua,vo=P(()=>{"use strict";aa=[/vercel/i,/netlify/i,/\bpreview\s*deploy/i,/\bdeploy\s*preview/i,/storybook/i,/chromatic/i,/percy/i,/cloudflare pages/i],ca=[/authoriz/i,/approval/i,/\bcla\b/i,/license\/cla/i],ua=[/\binstall\s*(os\s*)?dep(endenc|s\b)/i,/\bsetup\s+fail(ed|ure)?\b/i,/\bservice\s*unavailable/i,/\binfrastructure/i]});function Bt(r){return r.includes("[bot]")||ql.has(r.toLowerCase())}function ps(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 ql,Qs=P(()=>{"use strict";ql=new Set(["allcontributors","changeset-bot","claassistant","codecov-commenter","greenkeeper","imgbot","netlify","renovate","snyk-bot","sonarcloud","stale","vercel"])});function ga(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 ma(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 Bl(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||!o.body||o.body.includes("?"))})}function Vl(r,e){return e.find(t=>t.pull_request_review_id===r&&t.body?.trim())?.body?.trim()}function ha(r,e,t,s){let o=[],n=s.toLowerCase();for(let c of r){let u=c.user?.login||"unknown";o.push({author:u,body:c.body||"",createdAt:c.created_at,isUser:u.toLowerCase()===n})}for(let c of e){if(!c.submitted_at)continue;let u=(c.body||"").trim();if(!u&&c.state!=="COMMENTED"&&c.state!=="CHANGES_REQUESTED")continue;let l=c.user?.login||"unknown";if(!u&&c.state==="COMMENTED"&&c.id!=null&&Bl(c.id,t))continue;let d=u||(c.id!=null?Vl(c.id,t):void 0)||(c.state==="CHANGES_REQUESTED"?"(requested changes via inline review comments)":"(posted inline review comments)");o.push({author:l,body:d,createdAt:c.submitted_at,isUser:l.toLowerCase()===n})}o.sort((c,u)=>new Date(c.createdAt).getTime()-new Date(u.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"||Bt(c.author))continue;let u=new Date(c.createdAt);(!i||u>i)&&(a={author:c.author,body:c.body.slice(0,200)+(c.body.length>200?"...":""),createdAt:c.createdAt})}return a&&ps(a.body)&&(a=void 0),{hasUnrespondedComment:!!a,lastMaintainerComment:a}}var fa=P(()=>{"use strict";Qs()});function ba(r){return Wl.test(r.toLowerCase())}function ya(r){if(!r)return{hasIncompleteChecklist:!1};let e=/- \[x\]/gi,t=/^.*- \[ \].*$/gm,s=r.match(e)||[],o=r.match(t)||[],n=s.length;if(n+o.length===0)return{hasIncompleteChecklist:!1};let a=o.filter(u=>!ba(u)),c=n+a.length;return{hasIncompleteChecklist:a.length>0,checklistStats:{checked:n,total:c}}}var Wl,So=P(()=>{"use strict";Wl=/\(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 _a(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 Ra=P(()=>{"use strict"});function Ys(r){if(r.status==="needs_addressing"&&r.actionReason){let e=zl[r.actionReason];if(e)return{displayLabel:e.label,displayDescription:e.description(r)}}if(r.status==="waiting_on_maintainer"&&r.waitReason){let e=Jl[r.waitReason];if(e)return{displayLabel:e.label,displayDescription:e.description(r)}}return m("display-utils",`PR ${r.url} has status "${r.status}" but no matching reason (actionReason=${r.actionReason}, waitReason=${r.waitReason})`),r.status==="needs_addressing"?{displayLabel:"[Needs Addressing]",displayDescription:"Action required"}:{displayLabel:"[Waiting on Maintainer]",displayDescription:"Awaiting maintainer action"}}var zl,Jl,Co=P(()=>{"use strict";le();zl={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"}},merge_conflict:{label:"[Merge Conflict]",description:()=>"PR has merge conflicts with the base branch"},incomplete_checklist:{label:"[Incomplete Checklist]",description:r=>r.checklistStats?`${r.checklistStats.checked}/${r.checklistStats.total} items checked`:"PR body has unchecked required checkboxes"},ci_not_running:{label:"[CI Not Running]",description:()=>"No CI checks have been triggered"},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"}},Jl={pending_review:{label:"[Waiting on Maintainer]",description:()=>"Awaiting review"},pending_merge:{label:"[Waiting on Maintainer]",description:()=>"Approved and CI passes \u2014 waiting for merge"},changes_addressed:{label:"[Waiting on Maintainer]",description:r=>r.hasUnrespondedComment&&r.lastMaintainerComment?`Changes addressed \u2014 waiting for @${r.lastMaintainerComment.author} to re-review`:"Changes addressed \u2014 awaiting re-review"},ci_blocked:{label:"[CI Blocked]",description:r=>{let e=r.classifiedChecks||[];return e.length>0&&e.every(t=>t.category!=="actionable")?`All failing checks are non-actionable (${[...new Set(e.map(s=>s.category))].join(", ")})`:"CI checks are failing but no action is needed from you"}}}});function Pt(){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 wa(r,e,t,s,o,n){if(!e)return Pt();let i=st(),a=n?`:stars${n.minStars}`:"",c=`pr-counts:v3:${s}:${e}${a}`,u=i.getIfFresh(c,Kl);if(u&&Ql(u))return T(oe,`Using cached ${s} PR counts for @${e}`),{repos:new Map(u.reposEntries),monthlyCounts:u.monthlyCounts,monthlyOpenedCounts:u.monthlyOpenedCounts,dailyActivityCounts:u.dailyActivityCounts};T(oe,`Fetching ${s} PR counts for @${e}...`);let l=new Map,d={},g={},E={},R=1,_=0,C;for(;;){let{data:b}=await r.search.issuesAndPullRequests({q:`is:pr ${t} author:${e} -user:${e}`,sort:"updated",order:"desc",per_page:100,page:R});C=b.total_count;for(let G of b.items){let x=Rt(G.html_url);if(!x){m(oe,`Skipping ${s} PR with unparseable URL: ${G.html_url}`);continue}let{owner:H}=x,M=`${H}/${x.repo}`;if(Ue(H,e)||n&&Qe(n.knownStarCounts.get(M),n.minStars))continue;let k=o(l,M,G);if(k){let O=k.slice(0,7);d[O]=(d[O]||0)+1;let q=k.slice(0,10);q.length===10&&(E[q]=(E[q]||0)+1)}if(G.created_at){let O=G.created_at.slice(0,7);g[O]=(g[O]||0)+1;let q=G.created_at.slice(0,10);q.length===10&&(E[q]=(E[q]||0)+1)}}if(_+=b.items.length,_>=b.total_count||_>=1e3||b.items.length===0||R>=Ct)break;R++}return _<C&&R>=Ct&&m(oe,`Pagination capped at ${Ct} pages: fetched ${_} of ${C} ${s} PRs. Stats may be incomplete for prolific contributors.`),T(oe,`Found ${_} ${s} PRs across ${l.size} repos`),i.set(c,"",{reposEntries:Array.from(l.entries()),monthlyCounts:d,monthlyOpenedCounts:g,dailyActivityCounts:E}),{repos:l,monthlyCounts:d,monthlyOpenedCounts:g,dailyActivityCounts:E}}function Ea(r,e,t){return wa(r,e,"is:merged","merged",(s,o,n)=>{n.pull_request?.merged_at||m(oe,`merged_at missing for merged PR ${n.html_url}${n.closed_at?", falling back to closed_at":", no date available"}`);let i=n.pull_request?.merged_at||n.closed_at||"",a=s.get(o);return a?(a.count+=1,i&&i>a.lastMergedAt&&(a.lastMergedAt=i)):s.set(o,{count:1,lastMergedAt:i}),i},t)}function Ta(r,e,t){return wa(r,e,"is:closed is:unmerged","closed",(s,o,n)=>(s.set(o,(s.get(o)||0)+1),n.closed_at||""),t)}async function va(r,e,t,s,o,n){if(!e.githubUsername)return m(oe,`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];T(oe,`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}),u=[];for(let l of c.items){let d=de(l.html_url);if(!d){m(oe,`Could not parse GitHub URL from API response: ${l.html_url}`);continue}let g=`${d.owner}/${d.repo}`;Ue(d.owner,e.githubUsername)||u.push(n(l,{owner:d.owner,repo:g,number:d.number}))}return T(oe,`Found ${u.length} recently ${s} PRs`),u}async function Sa(r,e,t=7){return va(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 Ca(r,e,t=7){return va(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||m(oe,`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||""}})}async function Pa(r,e,t){if(!e.githubUsername)return m(oe,"Skipping merged PRs fetch: no githubUsername configured."),[];let s=t?` merged:>${t}`:"",o=`is:pr is:merged author:${e.githubUsername} -user:${e.githubUsername}${s}`;T(oe,`Fetching merged PRs${t?` since ${t}`:" (all time)"}...`);let n=[],i=1,a=0;for(;;){let{data:c}=await r.search.issuesAndPullRequests({q:o,sort:"updated",order:"desc",per_page:100,page:i});for(let u of c.items){let l=de(u.html_url);if(!l){m(oe,`Skipping merged PR with unparseable URL: ${u.html_url}`);continue}if(Ue(l.owner,e.githubUsername))continue;let d=u.pull_request?.merged_at||u.closed_at||"";if(!d){m(oe,`Skipping merged PR with no merge date: ${u.html_url}`);continue}n.push({url:u.html_url,title:u.title,mergedAt:d})}if(a+=c.items.length,a>=c.total_count||a>=1e3||c.items.length===0||i>=Ct)break;i++}return T(oe,`Fetched ${n.length} merged PRs${t?" (incremental)":" (initial)"}`),n}async function ka(r,e,t){if(!e.githubUsername)return m(oe,"Skipping closed PRs fetch: no githubUsername configured."),[];let s=t?` closed:>${t}`:"",o=`is:pr is:closed is:unmerged author:${e.githubUsername} -user:${e.githubUsername}${s}`;T(oe,`Fetching closed PRs${t?` since ${t}`:" (all time)"}...`);let n=[],i=1,a=0,c;for(;;){let{data:u}=await r.search.issuesAndPullRequests({q:o,sort:"updated",order:"desc",per_page:100,page:i});c=u.total_count;for(let l of u.items){let d=de(l.html_url);if(!d){m(oe,`Skipping closed PR with unparseable URL: ${l.html_url}`);continue}if(Ue(d.owner,e.githubUsername))continue;let g=l.closed_at||"";if(!g){m(oe,`Skipping closed PR with no close date: ${l.html_url}`);continue}n.push({url:l.html_url,title:l.title,closedAt:g})}if(a+=u.items.length,a>=c||a>=1e3||u.items.length===0||i>=Ct)break;i++}return a<c&&i>=Ct&&m(oe,`Pagination capped at ${Ct} pages: fetched ${a} of ${c} closed PRs. Oldest PRs may be missing.`),T(oe,`Fetched ${n.length} closed PRs${t?" (incremental)":" (initial)"}`),n}var oe,Kl,Ct,Xs=P(()=>{"use strict";Ee();Ye();le();qt();oe="github-stats",Kl=1440*60*1e3,Ct=3});var Zs,Yl,kt,Aa=P(()=>{"use strict";Ht();Lt();Ee();Ro();wo();ae();us();le();qt();vo();fa();So();Ra();Co();Xs();Co();vo();So();Ro();Zs="pr-monitor",Yl=pt,kt=class{octokit;stateManager;constructor(e){this.octokit=me(e),this.stateManager=j()}async fetchUserOpenPRs(){let e=this.stateManager.getState().config;if(!e.githubUsername)throw new Xe("No GitHub username configured. Run setup first.");T("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;T("pr-monitor",`Found ${i} open PRs`);let a=Math.min(Math.ceil(i/o),10);for(;s<a;){s++;let d=await this.octokit.search.issuesAndPullRequests({q:`is:pr is:open author:${e.githubUsername}`,sort:"updated",order:"desc",per_page:o,page:s});t.push(...d.data.items)}let c=[],u=[],l=t.filter(d=>{if(!d.pull_request)return!1;let g=Rt(d.html_url);return g?!Ue(g.owner,e.githubUsername):(m("pr-monitor",`Skipping PR with unparseable URL: ${d.html_url}`),!1)});return T("pr-monitor",`Filtered to ${l.length} PRs after excluding own repos`),await Wr("pr-monitor",`Fetch details for ${l.length} PRs`,async()=>{await Vs(l,async d=>{try{T("pr-monitor",`Fetching details for ${d.html_url}`);let g=await this.fetchPRDetails(d.html_url);g&&c.push(g)}catch(g){let E=v(g);m("pr-monitor",`Error fetching ${d.html_url}: ${E}`),u.push({prUrl:d.html_url,error:E})}},Yl)}),c.sort((d,g)=>d.status===g.status?0:d.status==="needs_addressing"?-1:1),{prs:c,failures:u}}async fetchPRDetails(e){let t=de(e);if(!t||t.type!=="pull")throw new X(`Invalid PR URL format: ${e}`);let{owner:s,repo:o,number:n}=t,i=this.stateManager.getState().config,[a,c,u,l]=await Promise.all([this.octokit.pulls.get({owner:s,repo:o,pull_number:n}),Le(I=>this.octokit.issues.listComments({owner:s,repo:o,issue_number:n,per_page:100,page:I})),this.octokit.pulls.listReviews({owner:s,repo:o,pull_number:n}),Le(I=>this.octokit.pulls.listReviewComments({owner:s,repo:o,pull_number:n,per_page:100,page:I})).catch(I=>{let B=Te(I);if(B===429)throw I;if(B===403){let Y=v(I).toLowerCase();if(Y.includes("rate limit")||Y.includes("abuse detection"))throw I;return m("pr-monitor",`403 fetching review comments for ${s}/${o}#${n}: ${Y}`),[]}return B===404?T("pr-monitor",`Review comments 404 for ${s}/${o}#${n} (likely no inline comments)`):m("pr-monitor",`Failed to fetch review comments for ${s}/${o}#${n} (status ${B??"unknown"}): self-reply detection will be skipped`),[]})]),d=a.data,g=u.data,E=ga(g),R=this.hasMergeConflict(d.mergeable,d.mergeable_state),{hasUnrespondedComment:_,lastMaintainerComment:C}=ha(c,g,l,i.githubUsername),b=this.getCIStatus(s,o,d.head.sha),x=_||E==="changes_requested"?this.octokit.repos.getCommit({owner:s,repo:o,ref:d.head.sha}).then(I=>({date:I.data.commit.author?.date,author:I.data.author?.login})).catch(I=>{let B=Te(I);if(B===429)throw I;if(B===403){let Y=v(I).toLowerCase();if(Y.includes("rate limit")||Y.includes("abuse detection"))throw I;m("pr-monitor",`403 fetching commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${v(I)}`);return}m("pr-monitor",`Failed to fetch commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${v(I)}`)}):Promise.resolve(void 0),[{status:H,failingCheckNames:M,failingCheckConclusions:k},O]=await Promise.all([b,x]),q=O?.date,U=O?.author,{hasIncompleteChecklist:ce,checklistStats:_e}=ya(d.body||""),A=_a(C?.body,E),ee=$e(new Date(d.updated_at),new Date),De=ma(g),Ae=Ks(M,k),ct=H==="failing"&&Ae.some(I=>I.category==="actionable"),{status:Oe,actionReason:Ie,waitReason:qe,stalenessTier:D}=_o({ciStatus:H,hasMergeConflict:R,hasUnrespondedComment:_,hasIncompleteChecklist:ce,reviewDecision:E,daysSinceActivity:ee,dormantThreshold:i.dormantThresholdDays,approachingThreshold:i.approachingDormantDays,latestCommitDate:q,latestCommitAuthor:U,contributorUsername:i.githubUsername,lastMaintainerCommentDate:C?.createdAt,latestChangesRequestedDate:De,hasActionableCIFailure:ct});return this.buildFetchedPR({id:d.id,url:e,repo:`${s}/${o}`,number:n,title:d.title,status:Oe,actionReason:Ie,waitReason:qe,stalenessTier:D,createdAt:d.created_at,updatedAt:d.updated_at,daysSinceActivity:ee,ciStatus:H,failingCheckNames:M,classifiedChecks:Ae,hasMergeConflict:R,reviewDecision:E,hasUnrespondedComment:_,lastMaintainerComment:C,latestCommitDate:q,hasIncompleteChecklist:ce,checklistStats:_e,maintainerActionHints:A})}buildFetchedPR(e){let t={...e,displayLabel:"",displayDescription:""},{displayLabel:s,displayDescription:o}=Ys(t);return t.displayLabel=s,t.displayDescription=o,t}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(g=>{let E=Te(g);if(E===429)throw g;if(E===403){let R=v(g).toLowerCase();if(R.includes("rate limit")||R.includes("abuse detection"))throw g}return E===404?T("pr-monitor",`Check runs 404 for ${e}/${t}@${s.slice(0,7)} (no checks configured)`):m("pr-monitor",`Non-404 error fetching check runs for ${e}/${t}@${s.slice(0,7)}: ${E??g}`),null})]),i=o.data,a=n?.data?.check_runs||[],c=new Map;for(let g of a){let E=c.get(g.name);(!E||new Date(g.started_at??0)>new Date(E.started_at??0))&&c.set(g.name,g)}let u=[...c.values()],l=la(u),d=pa(i);return da(l,d,u.length)}catch(o){let n=Te(o);if(n===401||n===403||n===429)throw o;return n===404?(T("pr-monitor",`CI check 404 for ${e}/${t} (no CI configured)`),{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}):(m("pr-monitor",`Failed to check CI for ${e}/${t}@${s.slice(0,7)}: ${v(o)}`),{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map})}}async fetchUserMergedPRCounts(e){let t=this.stateManager.getState().config;return Ea(this.octokit,t.githubUsername,e)}async fetchUserClosedPRCounts(e){let t=this.stateManager.getState().config;return Ta(this.octokit,t.githubUsername,e)}async fetchRepoStarCounts(e){if(e.length===0)return new Map;T(Zs,`Fetching star counts for ${e.length} repos...`);let t=new Map,s=st(),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 l=>{let d=l.split("/");if(d.length!==2||!d[0]||!d[1])throw new X(`Malformed repo identifier: "${l}"`);let[g,E]=d,R=`/repos/${g}/${E}`,_=await ls(s,R,C=>this.octokit.repos.get({owner:g,repo:E,headers:C}));return{repo:l,stars:_.stargazers_count}})),u=0;for(let l=0;l<c.length;l++){let d=c[l];d.status==="fulfilled"?t.set(d.value.repo,d.value.stars):(u++,m(Zs,`Failed to fetch stars for ${a[l]}: ${v(d.reason)}`))}if(u===a.length&&a.length>0){let l=o.length-i-n;l>0&&m(Zs,`Entire chunk failed, aborting remaining ${l} repos`);break}}return T(Zs,`Fetched star counts for ${t.size}/${e.length} repos`),t}async fetchRecentlyClosedPRs(e=7){let t=this.stateManager.getState().config;return Sa(this.octokit,t,e)}async fetchRecentlyMergedPRs(e=7){let t=this.stateManager.getState().config;return Ca(this.octokit,t,e)}generateDigest(e,t=[],s=[]){let o=new Date().toISOString(),n=e.filter(c=>c.status==="needs_addressing"),i=e.filter(c=>c.status==="waiting_on_maintainer"),a=this.stateManager.getStats();return{generatedAt:o,openPRs:e,needsAddressingPRs:n,waitingOnMaintainerPRs:i,recentlyClosedPRs:t,recentlyMergedPRs:s,shelvedPRs:[],autoUnshelvedPRs:[],summary:{totalActivePRs:e.length,totalNeedingAttention:n.length,totalMergedAllTime:a.mergedPRs,mergeRate:parseFloat(a.mergeRate)}}}async updateRepoScoreFromObservedPR(e,t){t?this.stateManager.incrementMergedCount(e):this.stateManager.incrementClosedCount(e)}}});function er(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=>Po.has(s))}function Ga(r){return!r.labels||!Array.isArray(r.labels)?!1:r.labels.map(s=>(typeof s=="string"?s:s.name||"").toLowerCase()).filter(s=>Oa.has(s)).length>=5}function $a(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 ko(r){let e=new Set,t=new Map;for(let s of r){let o=s.repository_url.split("/").slice(-2).join("/");if(Ga(s)){e.add(o);continue}s.title&&$a(s.title)&&t.set(o,(t.get(o)||0)+1)}for(let[s,o]of t)o>=3&&e.add(s);return e}function tr(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 Po,Oa,Ao=P(()=>{"use strict";Po=new Set(["documentation","docs","typo","spelling"]);Oa=new Set(["good first issue","hacktoberfest","easy","up-for-grabs","first-timers-only","beginner-friendly","beginner","starter","newbie","low-hanging-fruit","community"])});function Oo(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 ds(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=$e(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.matchesPreferredCategory&&(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 sr=P(()=>{"use strict";Ee()});function Da(r,e){if(e.length===0)return!1;let t=r.split("/")[0]?.toLowerCase();if(!t)return!1;for(let s of e){let o=Zl[s];if(o&&o.some(n=>n.toLowerCase()===t))return!0}return!1}function Ia(r){let e=new Set;for(let t of r){let s=Xl[t];if(s)for(let o of s)e.add(o)}return[...e]}var Xl,Zl,Go=P(()=>{"use strict";Xl={nonprofit:["nonprofit","social-good","humanitarian","charity","social-impact","civic-tech"],devtools:["developer-tools","devtools","cli","sdk","linter","formatter","build-tool"],infrastructure:["infrastructure","cloud","kubernetes","docker","devops","monitoring","observability"],"web-frameworks":["web-framework","frontend","backend","fullstack","nextjs","react","vue"],"data-ml":["machine-learning","data-science","deep-learning","nlp","data-pipeline","analytics"],education:["education","learning","tutorial","courseware","edtech","teaching"]},Zl={nonprofit:["code-for-america","opengovfoundation","ushahidi","hotosm","openfn","democracyearth"],devtools:["eslint","prettier","vitejs","biomejs","oxc-project","ast-grep","turbot"],infrastructure:["kubernetes","hashicorp","grafana","prometheus","open-telemetry","envoyproxy","cncf"],"web-frameworks":["vercel","remix-run","sveltejs","nuxt","astro","redwoodjs","blitz-js"],"data-ml":["huggingface","mlflow","apache","dbt-labs","dagster-io","prefecthq","langchain-ai"],education:["freeCodeCamp","TheOdinProject","exercism","codecademy","oppia","Khan"]}});function xa(){let r=Date.now();for(let[e,t]of rt.entries())r-t.fetchedAt>Ua&&rt.delete(e);if(rt.size>Fa){let t=Array.from(rt.entries()).sort((s,o)=>s[1].fetchedAt-o[1].fetchedAt).slice(0,rt.size-Fa);for(let[s]of t)rt.delete(s)}}var ht,ep,rt,Ua,tp,Fa,rr,Ma=P(()=>{"use strict";us();Ee();ae();le();qt();sr();Go();ht="issue-vetting",ep=pt,rt=new Map,Ua=3600*1e3,tp=14400*1e3,Fa=100;rr=class{octokit;stateManager;constructor(e,t){this.octokit=e,this.stateManager=t}async vetIssue(e){let t=de(e);if(!t||t.type!=="issues")throw new X(`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,u,l,d,g]=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)]),E=c.passed,R=u.passed,_=this.analyzeRequirements(a.body||""),C=l.checkFailed?!0:l.isActive,b={passedAllChecks:E&&R&&C&&_,checks:{noExistingPR:E,notClaimed:R,projectActive:C,clearRequirements:_,contributionGuidelinesFound:!!d},contributionGuidelines:d,notes:[]};E||b.notes.push("Existing PR found for this issue"),R||b.notes.push("Issue appears to be claimed by someone"),c.inconclusive&&b.notes.push(`Could not verify absence of existing PRs: ${c.reason||"API error"}`),u.inconclusive&&b.notes.push(`Could not verify claim status: ${u.reason||"API error"}`),l.checkFailed?b.notes.push(`Could not verify project activity: ${l.failureReason||"API error"}`):l.isActive||b.notes.push("Project may be inactive"),_||b.notes.push("Issue requirements are unclear"),d||b.notes.push("No CONTRIBUTING.md found");let G={id:a.id,url:e,repo:i,number:n,title:a.title,status:"candidate",labels:a.labels.map(D=>typeof D=="string"?D:D.name||""),createdAt:a.created_at,updatedAt:a.updated_at,vetted:!0,vettingResult:b},x=[],H=[];E||x.push("Has existing PR"),R||x.push("Already claimed"),!l.isActive&&!l.checkFailed&&x.push("Inactive project"),_||x.push("Unclear requirements"),E&&H.push("No existing PR"),R&&H.push("Not claimed"),l.isActive&&!l.checkFailed&&H.push("Active project"),_&&H.push("Clear requirements"),d&&H.push("Has contribution guidelines");let M=this.stateManager.getState().config,k=this.stateManager.getRepoScore(i),O=k&&k.mergedPRCount>0?k.mergedPRCount:g;O>0?H.push(`Trusted project (${O} PR${O>1?"s":""} merged)`):M.trustedProjects.includes(i)&&H.push("Trusted project (previous PR merged)"),k&&(k.closedWithoutMergeCount>0&&O===0?x.push("User has rejected PR(s) in this repo with no successful merges"):k.closedWithoutMergeCount>0&&O>0&&b.notes.push(`Mixed history: ${O} merged, ${k.closedWithoutMergeCount} closed without merge`));let q=i.split("/")[0],U=!1;q&&i.includes("/")&&(U=Object.values(this.stateManager.getState().repoScores).some(D=>D.repo&&D.mergedPRCount>0&&D.repo.startsWith(q+"/")&&D.repo!==i)),U&&H.push(`Org affinity (merged PRs in other ${q} repos)`);let ce=M.projectCategories??[],_e=Da(i,ce);_e&&H.push("Matches preferred project category");let A;b.passedAllChecks?A="approve":x.length>2?A="skip":A="needs_review";let ee=l.checkFailed||c.inconclusive||u.inconclusive;A==="approve"&&ee&&(A="needs_review",b.notes.push("Recommendation downgraded: one or more checks were inconclusive"));let De=Oo(l.stargazersCount??0,l.forksCount??0);l.checkFailed&&De===0&&b.notes.push("Repo quality bonus unavailable: could not fetch star/fork counts due to API error");let Ae=this.getRepoScore(i),ct=ds({repoScore:Ae,hasExistingPR:!E,isClaimed:!R,clearRequirements:_,hasContributionGuidelines:!!d,issueUpdatedAt:a.updated_at,closedWithoutMergeCount:k?.closedWithoutMergeCount??0,mergedPRCount:O,orgHasMergedPRs:U,repoQualityBonus:De,matchesPreferredCategory:_e}),Oe=this.stateManager.getStarredRepos(),Ie=M.preferredOrgs??[],qe="normal";return O>0?qe="merged_pr":Ie.some(D=>D.toLowerCase()===q?.toLowerCase())?qe="preferred_org":Oe.includes(i)&&(qe="starred"),{issue:G,vettingResult:b,projectHealth:l,recommendation:A,reasonsToSkip:x,reasonsToApprove:H,viabilityScore:ct,searchPriority:qe}}async vetIssuesParallel(e,t,s){let o=[],n=new Map,i=0,a=0,c=0;for(let l of e){if(o.length>=t)break;c++;let d=this.vetIssue(l).then(g=>{o.length<t&&(s&&(g.searchPriority=s),o.push(g))}).catch(g=>{i++,lt(g)&&a++,m(ht,`Error vetting issue ${l}:`,v(g))}).finally(()=>n.delete(l));n.set(l,d),n.size>=ep&&await Promise.race(n.values())}await Promise.allSettled(n.values());let u=i===c&&c>0;return u&&m(ht,`All ${c} issue(s) failed vetting. This may indicate a systemic issue (rate limit, auth, network).`),{candidates:o.slice(0,t),allFailed:u,rateLimitHit:a>0}}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 Le(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=v(o);return m(ht,`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=v(s);return m(ht,`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 u=(c.body||"").toLowerCase();if(a.some(l=>u.includes(l)))return{passed:!1}}return{passed:!0}}catch(n){let i=v(n);return m(ht,`Failed to check claim status on ${e}/${t}#${s}: ${i}. Assuming not claimed.`),{passed:!0,inconclusive:!0,reason:i}}}async checkProjectHealth(e,t){let s=st(),o=`health:${e}/${t}`;try{return await Js(s,o,tp,async()=>{let n=`/repos/${e}/${t}`,i=await ls(s,n,g=>this.octokit.repos.get({owner:e,repo:t,headers:g})),{data:a}=await this.octokit.repos.listCommits({owner:e,repo:t,per_page:1}),u=a[0]?.commit?.author?.date||i.pushed_at,l=$e(new Date(u)),d="unknown";try{let{data:g}=await this.octokit.actions.listRepoWorkflows({owner:e,repo:t,per_page:1});g.total_count>0&&(d="passing")}catch(g){let E=v(g);m(ht,`Failed to check CI status for ${e}/${t}: ${E}. Defaulting to unknown.`)}return{repo:`${e}/${t}`,lastCommitAt:u,daysSinceLastCommit:l,openIssuesCount:i.open_issues_count,avgIssueResponseDays:0,ciStatus:d,isActive:l<30,stargazersCount:i.stargazers_count,forksCount:i.forks_count}})}catch(n){let i=v(n);return m(ht,`Error checking project health for ${e}/${t}: ${i}`),{repo:`${e}/${t}`,lastCommitAt:"",daysSinceLastCommit:999,openIssuesCount:0,avgIssueResponseDays:0,ciStatus:"unknown",isActive:!1,checkFailed:!0,failureReason:i}}}async fetchContributionGuidelines(e,t){let s=`${e}/${t}`,o=rt.get(s);if(o&&Date.now()-o.fetchedAt<Ua)return o.guidelines;let n=["CONTRIBUTING.md",".github/CONTRIBUTING.md","docs/CONTRIBUTING.md","contributing.md"],i=await Promise.allSettled(n.map(a=>this.octokit.repos.getContent({owner:e,repo:t,path:a}).then(({data:c})=>"content"in c?Buffer.from(c.content,"base64").toString("utf-8"):null)));for(let a=0;a<i.length;a++){let c=i[a];if(c.status==="fulfilled"&&c.value){let u=this.parseContributionGuidelines(c.value);return rt.set(s,{guidelines:u,fetchedAt:Date.now()}),xa(),u}if(c.status==="rejected"){let u=c.reason instanceof Error?c.reason.message:String(c.reason);!u.includes("404")&&!u.includes("Not Found")&&m(ht,`Unexpected error fetching ${n[a]} from ${e}/${t}: ${u}`)}}rt.set(s,{guidelines:void 0,fetchedAt:Date.now()}),xa()}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 La,ja,W,sp,At,Na=P(()=>{"use strict";La=z(require("fs"),1),ja=z(require("path"),1);Ht();Lt();Ee();Ye();ae();le();qt();Ao();Ma();sr();Go();Ao();sr();W="issue-discovery",sp=900*1e3,At=class{octokit;stateManager;githubToken;vetter;rateLimitWarning=null;constructor(e){this.githubToken=e,this.octokit=me(e),this.stateManager=j(),this.vetter=new rr(this.octokit,this.stateManager)}async cachedSearch(e){let t=`search:${e.q}:${e.sort}:${e.order}:${e.per_page}`;return Js(st(),t,sp,async()=>{let{data:s}=await this.octokit.search.issuesAndPullRequests(e);return s})}async fetchStarredRepos(){pe(W,"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){pe(W,"Reached pagination limit for starred repos (500)");break}}return pe(W,`Fetched ${e.length} starred repositories`),this.stateManager.setStarredRepos(e),e}catch(t){let s=this.stateManager.getStarredRepos(),o=v(t);return m(W,"Error fetching starred repos:",o),s.length===0?m(W,`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.`):m(W,`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=ko(e);if(a.size>0){let R=e.filter(_=>a.has(_.repository_url.split("/").slice(-2).join("/"))).length;T(W,`[SPAM_FILTER] Filtered ${R} issues from ${a.size} label-farming repos: ${[...a].join(", ")}`)}let c=t(e).filter(R=>{let _=R.repository_url.split("/").slice(-2).join("/");return a.has(_)?!1:s.every(C=>!C.has(_))}).slice(0,o*2);if(c.length===0)return T(W,`[${i}] All ${e.length} items filtered before vetting`),{candidates:[],allVetFailed:!1,rateLimitHit:!1};let{candidates:u,allFailed:l,rateLimitHit:d}=await this.vetter.vetIssuesParallel(c.map(R=>R.html_url),o,"normal"),g=u.filter(R=>R.projectHealth.checkFailed?!0:(R.projectHealth.stargazersCount??0)>=n),E=u.length-g.length;return E>0&&T(W,`[STAR_FILTER] Filtered ${E} ${i} candidates below ${n} stars`),{candidates:g,allVetFailed:l,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,u=null,l=!1;this.rateLimitWarning=null;try{let D=await yo(this.githubToken);if(D.remaining<5){let I=new Date(D.resetAt).toLocaleTimeString("en-US",{hour12:!1});this.rateLimitWarning=`GitHub search API quota low (${D.remaining}/${D.limit} remaining, resets at ${I}). Search may be slow.`,m(W,this.rateLimitWarning)}}catch(D){if(Te(D)===401)throw D;m(W,"Could not check rate limit:",v(D))}let d=this.stateManager.getReposWithMergedPRs(),g=new Set(d),E=this.stateManager.getReposWithOpenPRs(),R=await this.getStarredReposWithRefresh(),_=new Set(R),C=new Set(this.stateManager.getLowScoringRepos(3)),b=new Set(this.stateManager.getState().activeIssues.map(D=>D.url)),G=new Set(t.excludeRepos),x=t.maxIssueAgeDays||90,H=new Date,M=o.map(D=>`label:"${D}"`).join(" "),O=s.some(D=>D.toLowerCase()==="any")?"":s.map(D=>`language:${D}`).join(" "),q=`is:issue is:open ${O} no:assignee`.replace(/ +/g," ").trim(),U=`is:issue is:open ${M} ${O} no:assignee`.replace(/ +/g," ").trim(),ce=t.includeDocIssues??!0,_e=new Set(t.aiPolicyBlocklist??bt.aiPolicyBlocklist??[]);_e.size>0&&T(W,`[AI_POLICY_FILTER] Filtering issues from ${_e.size} blocklisted repo(s): ${[..._e].join(", ")}`);let A=D=>D.filter(I=>{if(b.has(I.html_url))return!1;let B=I.repository_url.split("/").slice(-2).join("/");if(G.has(B)||_e.has(B)||C.has(B))return!1;let Y=new Date(I.updated_at);return!($e(Y,H)>x||!ce&&er(I))}),ee=[...d,...E.filter(D=>!g.has(D))].slice(0,10),De=new Set(ee);if(ee.length>0){let D=Math.min(d.length,ee.length),I=ee.length-D;pe(W,`Phase 0: Searching issues in ${ee.length} repos (${D} merged-PR, ${I} open-PR, no label filter)...`);let B=ee.slice(0,D);if(B.length>0){let ue=n-a.length;if(ue>0){let{candidates:te,allBatchesFailed:re,rateLimitHit:Se}=await this.searchInRepos(B,q,ue,"merged_pr",A);a.push(...te),re&&(c="All merged-PR repo batches failed"),Se&&(l=!0),pe(W,`Found ${te.length} candidates from merged-PR repos`)}}let Y=ee.slice(D);if(Y.length>0&&a.length<n){let ue=n-a.length;if(ue>0){let{candidates:te,allBatchesFailed:re,rateLimitHit:Se}=await this.searchInRepos(Y,q,ue,"starred",A);if(a.push(...te),re){let Be="All open-PR repo batches failed";c=c?`${c}; ${Be}`:Be}Se&&(l=!0),pe(W,`Found ${te.length} candidates from open-PR repos`)}}}let Ae=null,ct=t.preferredOrgs??[];if(a.length<n&&ct.length>0){let D=new Set(ee.map(B=>B.split("/")[0]?.toLowerCase())),I=ct.filter(B=>!D.has(B.toLowerCase())).slice(0,5);if(I.length>0){pe(W,`Phase 0.5: Searching issues in ${I.length} preferred org(s)...`);let B=n-a.length,Y=I.map(te=>`org:${te}`).join(" OR "),ue=`${U} (${Y})`;try{let te=await this.cachedSearch({q:ue,sort:"created",order:"desc",per_page:B*3});if(te.items.length>0){let re=A(te.items).filter(ut=>{let Qt=ut.repository_url.split("/").slice(-2).join("/");return!De.has(Qt)}),{candidates:Se,allFailed:Be,rateLimitHit:Ut}=await this.vetter.vetIssuesParallel(re.slice(0,B*2).map(ut=>ut.html_url),B,"preferred_org");a.push(...Se),Be&&(Ae="All preferred org issue vetting failed"),Ut&&(l=!0),pe(W,`Found ${Se.length} candidates from preferred orgs`)}}catch(te){let re=v(te);Ae=re,lt(te)&&(l=!0),m(W,`Error searching preferred orgs: ${re}`)}}}if(a.length<n&&R.length>0){let D=R.filter(I=>!De.has(I));if(D.length>0){pe(W,`Phase 1: Searching issues in ${D.length} starred repos...`);let I=n-a.length;if(I>0){let{candidates:B,allBatchesFailed:Y,rateLimitHit:ue}=await this.searchInRepos(D.slice(0,10),U,I,"starred",A);a.push(...B),Y&&(u="All starred repo batches failed"),ue&&(l=!0),pe(W,`Found ${B.length} candidates from starred repos`)}}}let Oe=null;if(a.length<n){pe(W,"Phase 2: General issue search...");let D=n-a.length;try{let I=await this.cachedSearch({q:U,sort:"created",order:"desc",per_page:D*3});pe(W,`Found ${I.total_count} issues in general search, processing top ${I.items.length}...`);let B=new Set(a.map(re=>re.issue.repo)),{candidates:Y,allVetFailed:ue,rateLimitHit:te}=await this.filterVetAndScore(I.items,A,[De,_,B],D,i,"Phase 2");a.push(...Y),ue&&(Oe=(Oe?Oe+"; ":"")+"all vetting failed"),te&&(l=!0),pe(W,`Found ${Y.length} candidates from general search`)}catch(I){let B=v(I);Oe=B,lt(I)&&(l=!0),m(W,`Error in general issue search: ${B}`)}}let Ie=null;if(a.length<n){pe(W,"Phase 3: Searching actively maintained repos...");let D=n-a.length,I=new Date;I.setDate(I.getDate()-30);let B=I.toISOString().split("T")[0],Y=Ia(t.projectCategories??[]),ue=Y.length>0?`topic:${Y[0]}`:"",te=`is:issue is:open no:assignee ${O} ${ue} stars:>=${i} pushed:>=${B} archived:false`.replace(/ +/g," ").trim();try{let re=await this.cachedSearch({q:te,sort:"updated",order:"desc",per_page:D*3});pe(W,`Found ${re.total_count} issues in maintained-repo search, processing top ${re.items.length}...`);let Se=new Set(a.map(Qt=>Qt.issue.repo)),{candidates:Be,allVetFailed:Ut,rateLimitHit:ut}=await this.filterVetAndScore(re.items,A,[De,_,Se],D,i,"Phase 3");a.push(...Be),Ut&&(Ie="all vetting failed"),ut&&(l=!0),pe(W,`Found ${Be.length} candidates from maintained-repo search`)}catch(re){let Se=v(re);Ie=Se,lt(re)&&(l=!0),m(W,`Error in maintained-repo search: ${Se}`)}}if(a.length===0){let D=[c?`Phase 0 (merged-PR repos): ${c}`:null,Ae?`Phase 0.5 (preferred orgs): ${Ae}`:null,u?`Phase 1 (starred repos): ${u}`:null,Oe?`Phase 2 (general): ${Oe}`:null,Ie?`Phase 3 (maintained repos): ${Ie}`:null].filter(Boolean),I=D.length>0?` ${D.join(". ")}.`:"";if(l)return this.rateLimitWarning=`Search returned no results due to GitHub API rate limits.${I} Try again after the rate limit resets.`,[];throw new X(`No issue candidates found across all search phases.${I} Try adjusting your search criteria (languages, labels) or check your network connection.`)}return l&&(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((D,I)=>{let B={merged_pr:0,preferred_org:1,starred:2,normal:3},Y=B[D.searchPriority]-B[I.searchPriority];if(Y!==0)return Y;let ue={approve:0,needs_review:1,skip:2},te=ue[D.recommendation]-ue[I.recommendation];return te!==0?te:I.viabilityScore-D.viabilityScore}),tr(a,2).slice(0,n)}async searchInRepos(e,t,s,o,n){let i=[],c=this.batchRepos(e,5),u=0,l=0;for(let E of c){if(i.length>=s)break;try{let R=E.map(b=>`repo:${b}`).join(" OR "),_=`${t} (${R})`,C=await this.cachedSearch({q:_,sort:"created",order:"desc",per_page:Math.min(30,(s-i.length)*3)});if(C.items.length>0){let b=n(C.items),G=s-i.length,{candidates:x}=await this.vetter.vetIssuesParallel(b.slice(0,G*2).map(H=>H.html_url),G,o);i.push(...x)}}catch(R){u++,lt(R)&&l++;let _=E.join(", ");m(W,`Error searching issues in batch [${_}]:`,v(R))}}let d=u===c.length&&c.length>0,g=l>0;return d&&m(W,`All ${c.length} batch(es) failed for ${o} phase. This may indicate a systemic issue (rate limit, auth, network).`),{candidates:i,allBatchesFailed:d,rateLimitHit:g}}batchRepos(e,t){let s=[];for(let o=0;o<e.length;o+=t)s.push(e.slice(o,o+t));return s}async vetIssue(e){return this.vetter.vetIssue(e)}analyzeRequirements(e){return this.vetter.analyzeRequirements(e)}calculateViabilityScore(e){return ds(e)}saveSearchResults(e){let t=[...e].sort((a,c)=>c.viabilityScore-a.viabilityScore),s=xe(),o=ja.join(s,"found-issues.md"),n=new Date().toISOString(),i=`# Found Issues
45
+ `);let u={},l=new s.Events(u);return u.on("secondary-limit",c.onSecondaryRateLimit),u.on("rate-limit",c.onRateLimit),u.on("error",d=>r.log.warn("Error in throttling-plugin limit handler",d)),c.retryLimiter.on("failed",async function(d,g){let[E,R,w]=g.args,{pathname:P}=new URL(w.url,"http://github.test");if(!(P.startsWith("/graphql")&&d.status!==401||d.status===403||d.status===429))return;let G=~~R.retryCount;R.retryCount=G,w.request.retryCount=G;let{wantRetry:x,retryAfter:B=0}=await(async function(){if(/\bsecondary rate\b/i.test(d.message)){let D=Number(d.response.headers["retry-after"])||E.fallbackSecondaryRateRetryAfter;return{wantRetry:await l.trigger("secondary-limit",D,w,r,G),retryAfter:D}}if(d.response.headers!=null&&d.response.headers["x-ratelimit-remaining"]==="0"||(d.response.data?.errors??[]).some(D=>D.type==="RATE_LIMITED")){let D=new Date(~~d.response.headers["x-ratelimit-reset"]*1e3).getTime(),k=Math.max(Math.ceil((D-Date.now())/1e3)+1,0);return{wantRetry:await l.trigger("rate-limit",k,w,r,G),retryAfter:k}}return{}})();if(x)return R.retryCount++,B*E.retryAfterBaseValue}),r.hook.wrap("request",Dl.bind(null,c)),{}}var sa,$l,bo,xl,ta,ra,St,Ml,oa=C(()=>{sa=z(ea(),1),$l="0.0.0-development",bo=()=>Promise.resolve();xl=["/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"];ta=Ul(xl),ra=ta.test.bind(ta),St={},Ml=function(r,e){St.global=new r.Group({id:"octokit-global",maxConcurrent:10,...e}),St.auth=new r.Group({id:"octokit-auth",maxConcurrent:1,...e}),St.search=new r.Group({id:"octokit-search",maxConcurrent:1,minTime:2e3,...e}),St.write=new r.Group({id:"octokit-write",maxConcurrent:1,minTime:1e3,...e}),St.notifications=new r.Group({id:"octokit-notifications",maxConcurrent:1,minTime:3e3,...e})};Ns.VERSION=$l;Ns.triggersNotification=ra});function Bs(r){return r.toLocaleTimeString("en-US",{hour12:!1})}function jl(){return{onRateLimit:(r,e,t,s)=>{let o=e,n=new Date(Date.now()+r*1e3);return s<2?(m(Hs,`Rate limit hit (retry ${s+1}/2, waiting ${r}s, resets at ${Bs(n)}) \u2014 ${o.method} ${o.url}`),!0):(m(Hs,`Rate limit exceeded, not retrying \u2014 ${o.method} ${o.url} (resets at ${Bs(n)})`),!1)},onSecondaryRateLimit:(r,e,t,s)=>{let o=e,n=new Date(Date.now()+r*1e3);return s<1?(m(Hs,`Secondary rate limit hit (retry ${s+1}/1, waiting ${r}s, resets at ${Bs(n)}) \u2014 ${o.method} ${o.url}`),!0):(m(Hs,`Secondary rate limit exceeded, not retrying \u2014 ${o.method} ${o.url} (resets at ${Bs(n)})`),!1)}}}function he(r){if(qs&&na===r)return qs;let e=jl();return qs=new Ll({auth:r,throttle:e}),na=r,qs}async function yo(r){let e=he(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 Hs,Ll,qs,na,Ht=C(()=>{"use strict";Zi();oa();le();Hs="github",Ll=Xi.plugin(Ns),qs=null,na=null});function ql(r,e){if(!r||!e)return!0;let t=r.toLowerCase();return Nl.has(t)?!0:t===e.toLowerCase()}function Bl(r,e){let t=new Date(r).getTime(),s=new Date(e).getTime();return Number.isNaN(t)||Number.isNaN(s)?r>e:t-s>=Hl}function ia(r){let{latestCommitDate:e,latestCommitAuthor:t,contributorUsername:s}=r;if(e)return ql(t,s)?e:void 0}function aa(r,e,t){return!(!r||!e||!Bl(r,e)||t&&r<t)}function ca(r,e){return!r||!e?!1:r>=e}function Vl(r){let{ciStatus:e,hasMergeConflict:t,hasUnrespondedComment:s,hasIncompleteChecklist:o,reviewDecision:n,lastMaintainerCommentDate:i,latestChangesRequestedDate:a,hasActionableCIFailure:c=!0}=r,u=ia(r),l=[];return s&&!aa(u,i,a)&&l.push("needs_response"),n==="changes_requested"&&a&&!ca(u,a)&&l.push("needs_changes"),e==="failing"&&c&&l.push("failing_ci"),t&&l.push("merge_conflict"),o&&l.push("incomplete_checklist"),l.length>0?l:void 0}function _o(r){let e=Wl(r),t=Vl(r);return t?{...e,actionReasons:t}:e}function Wl(r){let{ciStatus:e,hasMergeConflict:t,hasUnrespondedComment:s,hasIncompleteChecklist:o,reviewDecision:n,daysSinceActivity:i,dormantThreshold:a,approachingThreshold:c,lastMaintainerCommentDate:u,latestChangesRequestedDate:l,hasActionableCIFailure:d=!0}=r,g="active";i>=a?g="dormant":i>=c&&(g="approaching_dormant");let E=ia(r);return s?aa(E,u,l)?e==="failing"&&d?{status:"needs_addressing",actionReason:"failing_ci",stalenessTier:g}:{status:"waiting_on_maintainer",waitReason:"changes_addressed",stalenessTier:g}:{status:"needs_addressing",actionReason:"needs_response",stalenessTier:g}:n==="changes_requested"&&l?ca(E,l)?e==="failing"&&d?{status:"needs_addressing",actionReason:"failing_ci",stalenessTier:g}:{status:"waiting_on_maintainer",waitReason:"changes_addressed",stalenessTier:g}:{status:"needs_addressing",actionReason:"needs_changes",stalenessTier:g}:e==="failing"?d?i>=5?{status:"waiting_on_maintainer",waitReason:"stale_ci_failure",stalenessTier:g}:{status:"needs_addressing",actionReason:"failing_ci",stalenessTier:g}:{status:"waiting_on_maintainer",waitReason:"ci_blocked",stalenessTier:g}:t?{status:"needs_addressing",actionReason:"merge_conflict",stalenessTier:g}:o?{status:"needs_addressing",actionReason:"incomplete_checklist",stalenessTier:g}:n==="approved"&&(e==="passing"||e==="unknown")?{status:"waiting_on_maintainer",waitReason:"pending_merge",stalenessTier:g}:{status:"waiting_on_maintainer",waitReason:"pending_review",stalenessTier:g}}var Nl,Hl,Ro=C(()=>{"use strict";Nl=new Set(["autofix-ci[bot]","prettier-ci[bot]","pre-commit-ci[bot]"]),Hl=120*1e3});async function Vs(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 wo=C(()=>{"use strict"});async function Le(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 us=C(()=>{"use strict"});function st(){return Eo||(Eo=new zs),Eo}async function ls(r,e,t){let s=r.getInflight(e);if(s)return T(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 u=await t(a),l=u.headers?.etag;return l&&r.set(e,l,u.data),u.data}catch(u){if(Jl(u)){let l=r.get(e);if(l)return T(mt,`304 cache hit for ${e}`),l.body}throw u}})(),i=r.setInflight(e,n);try{return await n}finally{i()}}async function Js(r,e,t,s){let o=r.getIfFresh(e,t);if(o)return T(mt,`Time-based cache hit for ${e}`),o;let n=await s();return r.set(e,"",n),n}function Jl(r){return Te(r)===304}var Pe,Ws,ua,mt,zl,zs,Eo,qt=C(()=>{"use strict";Pe=z(require("fs"),1),Ws=z(require("path"),1),ua=z(require("crypto"),1);Ee();le();ce();mt="http-cache",zl=1440*60*1e3,zs=class{cacheDir;inflightRequests=new Map;constructor(e){this.cacheDir=e??ks()}keyFor(e){return ua.createHash("sha256").update(e).digest("hex")}pathFor(e){return Ws.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=Pe.readFileSync(t,"utf-8"),o=JSON.parse(s);return o.url!==e?(T(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{Pe.writeFileSync(this.pathFor(e),JSON.stringify(o),{encoding:"utf-8",mode:384}),T(mt,`Cached response for ${e}`)}catch(n){T(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=zl){let t=0;try{let s=Pe.readdirSync(this.cacheDir),o=Date.now();for(let n of s){if(!n.endsWith(".json"))continue;let i=Ws.join(this.cacheDir,n);try{let a=Pe.readFileSync(i,"utf-8"),c=JSON.parse(a);o-new Date(c.cachedAt).getTime()>e&&(Pe.unlinkSync(i),t++)}catch{try{Pe.unlinkSync(i),t++}catch{}}}}catch{}return t>0&&T(mt,`Evicted ${t} stale cache entries`),t}clear(){try{let e=Pe.readdirSync(this.cacheDir);for(let t of e)t.endsWith(".json")&&Pe.unlinkSync(Ws.join(this.cacheDir,t));T(mt,"Cache cleared")}catch{}}size(){try{return Pe.readdirSync(this.cacheDir).filter(e=>e.endsWith(".json")).length}catch{return 0}}},Eo=null});function To(r,e,t){if(t==="cancelled"||t==="timed_out")return"infrastructure";let s=r.toLowerCase();if(pa.some(o=>o.test(s)))return"auth_gate";if(la.some(o=>o.test(s)))return"fork_limitation";if(da.some(o=>o.test(s)))return"infrastructure";if(e){let o=e.toLowerCase();if(pa.some(n=>n.test(o)))return"auth_gate";if(la.some(n=>n.test(o)))return"fork_limitation";if(da.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:To(t,void 0,s),conclusion:s}})}function ga(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 ma(r){let e=r.statuses.filter(c=>{let u=(c.description||"").toLowerCase();return!(c.state==="failure"&&(u.includes("authorization required")||u.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 ha(r,e,t){let{hasFailingChecks:s,hasPendingChecks:o,hasSuccessfulChecks:n,failingCheckNames:i,failingCheckConclusions:a}=r,{effectiveCombinedState:c,hasStatuses:u,failingStatusNames:l}=e,d=[...i,...l];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}:!u&&t===0?{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}:{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}}var la,pa,da,vo=C(()=>{"use strict";la=[/vercel/i,/netlify/i,/\bpreview\s*deploy/i,/\bdeploy\s*preview/i,/storybook/i,/chromatic/i,/percy/i,/cloudflare pages/i,/\binternal\b/i],pa=[/authoriz/i,/approval/i,/\bcla\b/i,/license\/cla/i],da=[/\binstall\s*(os\s*)?dep(endenc|s\b)/i,/\bsetup\s+fail(ed|ure)?\b/i,/\bservice\s*unavailable/i,/\binfrastructure/i,/\bblacksmith\b/i]});function Bt(r){return r.includes("[bot]")||Kl.has(r.toLowerCase())}function ps(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 Kl,Qs=C(()=>{"use strict";Kl=new Set(["allcontributors","changeset-bot","claassistant","codecov-commenter","greenkeeper","imgbot","netlify","renovate","snyk-bot","sonarcloud","stale","vercel"])});function fa(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 ba(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 Ql(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||!o.body||o.body.includes("?"))})}function Yl(r,e){return e.find(t=>t.pull_request_review_id===r&&t.body?.trim())?.body?.trim()}function ya(r,e,t,s){let o=[],n=s.toLowerCase();for(let c of r){let u=c.user?.login||"unknown";o.push({author:u,body:c.body||"",createdAt:c.created_at,isUser:u.toLowerCase()===n})}for(let c of e){if(!c.submitted_at)continue;let u=(c.body||"").trim();if(!u&&c.state!=="COMMENTED"&&c.state!=="CHANGES_REQUESTED")continue;let l=c.user?.login||"unknown";if(!u&&c.state==="COMMENTED"&&c.id!=null&&Ql(c.id,t))continue;let d=u||(c.id!=null?Yl(c.id,t):void 0)||(c.state==="CHANGES_REQUESTED"?"(requested changes via inline review comments)":"(posted inline review comments)");o.push({author:l,body:d,createdAt:c.submitted_at,isUser:l.toLowerCase()===n})}o.sort((c,u)=>new Date(c.createdAt).getTime()-new Date(u.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"||Bt(c.author))continue;let u=new Date(c.createdAt);(!i||u>i)&&(a={author:c.author,body:c.body.slice(0,200)+(c.body.length>200?"...":""),createdAt:c.createdAt})}return a&&ps(a.body)&&(a=void 0),{hasUnrespondedComment:!!a,lastMaintainerComment:a}}var _a=C(()=>{"use strict";Qs()});function Ra(r){return Xl.test(r.toLowerCase())}function wa(r){if(!r)return{hasIncompleteChecklist:!1};let e=/- \[x\]/gi,t=/^.*- \[ \].*$/gm,s=r.match(e)||[],o=r.match(t)||[],n=s.length;if(n+o.length===0)return{hasIncompleteChecklist:!1};let a=o.filter(u=>!Ra(u)),c=n+a.length;return{hasIncompleteChecklist:a.length>0,checklistStats:{checked:n,total:c}}}var Xl,So=C(()=>{"use strict";Xl=/\(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 Ea(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 Ta=C(()=>{"use strict"});function ep(r){let e=va[r]?.label;return e?e.replace(/[[\]]/g,"").toLowerCase():r}function Ys(r){if(r.status==="needs_addressing"&&r.actionReason){let e=va[r.actionReason];if(e){let t=e.description(r);if(r.actionReasons&&r.actionReasons.length>1){let s=r.actionReasons.filter(o=>o!==r.actionReason).map(ep);s.length>0&&(t+=` (also: ${s.join(", ")})`)}return{displayLabel:e.label,displayDescription:t}}}if(r.status==="waiting_on_maintainer"&&r.waitReason){let e=Zl[r.waitReason];if(e)return{displayLabel:e.label,displayDescription:e.description(r)}}return m("display-utils",`PR ${r.url} has status "${r.status}" but no matching reason (actionReason=${r.actionReason}, waitReason=${r.waitReason})`),r.status==="needs_addressing"?{displayLabel:"[Needs Addressing]",displayDescription:"Action required"}:{displayLabel:"[Waiting on Maintainer]",displayDescription:"Awaiting maintainer action"}}var va,Zl,Co=C(()=>{"use strict";le();va={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"}},merge_conflict:{label:"[Merge Conflict]",description:()=>"PR has merge conflicts with the base branch"},incomplete_checklist:{label:"[Incomplete Checklist]",description:r=>r.checklistStats?`${r.checklistStats.checked}/${r.checklistStats.total} items checked`:"PR body has unchecked required checkboxes"},ci_not_running:{label:"[CI Not Running]",description:()=>"No CI checks have been triggered"},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"}},Zl={pending_review:{label:"[Waiting on Maintainer]",description:()=>"Awaiting review"},pending_merge:{label:"[Waiting on Maintainer]",description:()=>"Approved and CI passes \u2014 waiting for merge"},changes_addressed:{label:"[Waiting on Maintainer]",description:r=>r.hasUnrespondedComment&&r.lastMaintainerComment?`Changes addressed \u2014 waiting for @${r.lastMaintainerComment.author} to re-review`:"Changes addressed \u2014 awaiting re-review"},ci_blocked:{label:"[CI Blocked]",description:r=>{let e=r.classifiedChecks||[];return e.length>0&&e.every(t=>t.category!=="actionable")?`All failing checks are non-actionable (${[...new Set(e.map(s=>s.category))].join(", ")})`:"CI checks are failing but no action is needed from you"}},stale_ci_failure:{label:"[Stale CI Failure]",description:r=>`CI failing for ${r.daysSinceActivity}+ days \u2014 likely pre-existing or non-actionable`}}});function Pt(){return{repos:new Map,monthlyCounts:{},monthlyOpenedCounts:{},dailyActivityCounts:{}}}function sp(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 Sa(r,e,t,s,o,n){if(!e)return Pt();let i=st(),a=n?`:stars${n.minStars}`:"",c=`pr-counts:v3:${s}:${e}${a}`,u=i.getIfFresh(c,tp);if(u&&sp(u))return T(ne,`Using cached ${s} PR counts for @${e}`),{repos:new Map(u.reposEntries),monthlyCounts:u.monthlyCounts,monthlyOpenedCounts:u.monthlyOpenedCounts,dailyActivityCounts:u.dailyActivityCounts};T(ne,`Fetching ${s} PR counts for @${e}...`);let l=new Map,d={},g={},E={},R=1,w=0,P;for(;;){let{data:b}=await r.search.issuesAndPullRequests({q:`is:pr ${t} author:${e} -user:${e}`,sort:"updated",order:"desc",per_page:100,page:R});P=b.total_count;for(let G of b.items){let x=Rt(G.html_url);if(!x){m(ne,`Skipping ${s} PR with unparseable URL: ${G.html_url}`);continue}let{owner:B}=x,D=`${B}/${x.repo}`;if(Ue(B,e)||n&&Qe(n.knownStarCounts.get(D),n.minStars))continue;let k=o(l,D,G);if(k){let O=k.slice(0,7);d[O]=(d[O]||0)+1;let H=k.slice(0,10);H.length===10&&(E[H]=(E[H]||0)+1)}if(G.created_at){let O=G.created_at.slice(0,7);g[O]=(g[O]||0)+1;let H=G.created_at.slice(0,10);H.length===10&&(E[H]=(E[H]||0)+1)}}if(w+=b.items.length,w>=b.total_count||w>=1e3||b.items.length===0||R>=Ct)break;R++}return w<P&&R>=Ct&&m(ne,`Pagination capped at ${Ct} pages: fetched ${w} of ${P} ${s} PRs. Stats may be incomplete for prolific contributors.`),T(ne,`Found ${w} ${s} PRs across ${l.size} repos`),i.set(c,"",{reposEntries:Array.from(l.entries()),monthlyCounts:d,monthlyOpenedCounts:g,dailyActivityCounts:E}),{repos:l,monthlyCounts:d,monthlyOpenedCounts:g,dailyActivityCounts:E}}function Ca(r,e,t){return Sa(r,e,"is:merged","merged",(s,o,n)=>{n.pull_request?.merged_at||m(ne,`merged_at missing for merged PR ${n.html_url}${n.closed_at?", falling back to closed_at":", no date available"}`);let i=n.pull_request?.merged_at||n.closed_at||"",a=s.get(o);return a?(a.count+=1,i&&i>a.lastMergedAt&&(a.lastMergedAt=i)):s.set(o,{count:1,lastMergedAt:i}),i},t)}function Pa(r,e,t){return Sa(r,e,"is:closed is:unmerged","closed",(s,o,n)=>(s.set(o,(s.get(o)||0)+1),n.closed_at||""),t)}async function ka(r,e,t,s,o,n){if(!e.githubUsername)return m(ne,`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];T(ne,`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}),u=[];for(let l of c.items){let d=de(l.html_url);if(!d){m(ne,`Could not parse GitHub URL from API response: ${l.html_url}`);continue}let g=`${d.owner}/${d.repo}`;Ue(d.owner,e.githubUsername)||u.push(n(l,{owner:d.owner,repo:g,number:d.number}))}return T(ne,`Found ${u.length} recently ${s} PRs`),u}async function Aa(r,e,t=7){return ka(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 Oa(r,e,t=7){return ka(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||m(ne,`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||""}})}async function Ga(r,e,t){if(!e.githubUsername)return m(ne,"Skipping merged PRs fetch: no githubUsername configured."),[];let s=t?` merged:>${t}`:"",o=`is:pr is:merged author:${e.githubUsername} -user:${e.githubUsername}${s}`;T(ne,`Fetching merged PRs${t?` since ${t}`:" (all time)"}...`);let n=[],i=1,a=0;for(;;){let{data:c}=await r.search.issuesAndPullRequests({q:o,sort:"updated",order:"desc",per_page:100,page:i});for(let u of c.items){let l=de(u.html_url);if(!l){m(ne,`Skipping merged PR with unparseable URL: ${u.html_url}`);continue}if(Ue(l.owner,e.githubUsername))continue;let d=u.pull_request?.merged_at||u.closed_at||"";if(!d){m(ne,`Skipping merged PR with no merge date: ${u.html_url}`);continue}n.push({url:u.html_url,title:u.title,mergedAt:d})}if(a+=c.items.length,a>=c.total_count||a>=1e3||c.items.length===0||i>=Ct)break;i++}return T(ne,`Fetched ${n.length} merged PRs${t?" (incremental)":" (initial)"}`),n}async function $a(r,e,t){if(!e.githubUsername)return m(ne,"Skipping closed PRs fetch: no githubUsername configured."),[];let s=t?` closed:>${t}`:"",o=`is:pr is:closed is:unmerged author:${e.githubUsername} -user:${e.githubUsername}${s}`;T(ne,`Fetching closed PRs${t?` since ${t}`:" (all time)"}...`);let n=[],i=1,a=0,c;for(;;){let{data:u}=await r.search.issuesAndPullRequests({q:o,sort:"updated",order:"desc",per_page:100,page:i});c=u.total_count;for(let l of u.items){let d=de(l.html_url);if(!d){m(ne,`Skipping closed PR with unparseable URL: ${l.html_url}`);continue}if(Ue(d.owner,e.githubUsername))continue;let g=l.closed_at||"";if(!g){m(ne,`Skipping closed PR with no close date: ${l.html_url}`);continue}n.push({url:l.html_url,title:l.title,closedAt:g})}if(a+=u.items.length,a>=c||a>=1e3||u.items.length===0||i>=Ct)break;i++}return a<c&&i>=Ct&&m(ne,`Pagination capped at ${Ct} pages: fetched ${a} of ${c} closed PRs. Oldest PRs may be missing.`),T(ne,`Fetched ${n.length} closed PRs${t?" (incremental)":" (initial)"}`),n}var ne,tp,Ct,Xs=C(()=>{"use strict";Ee();Ye();le();qt();ne="github-stats",tp=1440*60*1e3,Ct=3});var Zs,rp,kt,Da=C(()=>{"use strict";Ht();Lt();Ee();Ro();wo();ce();us();le();qt();vo();_a();So();Ta();Co();Xs();Co();vo();So();Ro();Zs="pr-monitor",rp=pt,kt=class{octokit;stateManager;constructor(e){this.octokit=he(e),this.stateManager=j()}async fetchUserOpenPRs(){let e=this.stateManager.getState().config;if(!e.githubUsername)throw new Xe("No GitHub username configured. Run setup first.");T("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;T("pr-monitor",`Found ${i} open PRs`);let a=Math.min(Math.ceil(i/o),10);for(;s<a;){s++;let d=await this.octokit.search.issuesAndPullRequests({q:`is:pr is:open author:${e.githubUsername}`,sort:"updated",order:"desc",per_page:o,page:s});t.push(...d.data.items)}let c=[],u=[],l=t.filter(d=>{if(!d.pull_request)return!1;let g=Rt(d.html_url);return g?!Ue(g.owner,e.githubUsername):(m("pr-monitor",`Skipping PR with unparseable URL: ${d.html_url}`),!1)});return T("pr-monitor",`Filtered to ${l.length} PRs after excluding own repos`),await Wr("pr-monitor",`Fetch details for ${l.length} PRs`,async()=>{await Vs(l,async d=>{try{T("pr-monitor",`Fetching details for ${d.html_url}`);let g=await this.fetchPRDetails(d.html_url);g&&c.push(g)}catch(g){let E=v(g);m("pr-monitor",`Error fetching ${d.html_url}: ${E}`),u.push({prUrl:d.html_url,error:E})}},rp)}),c.sort((d,g)=>d.status===g.status?0:d.status==="needs_addressing"?-1:1),{prs:c,failures:u}}async fetchPRDetails(e){let t=de(e);if(!t||t.type!=="pull")throw new Z(`Invalid PR URL format: ${e}`);let{owner:s,repo:o,number:n}=t,i=this.stateManager.getState().config,[a,c,u,l]=await Promise.all([this.octokit.pulls.get({owner:s,repo:o,pull_number:n}),Le(M=>this.octokit.issues.listComments({owner:s,repo:o,issue_number:n,per_page:100,page:M})),this.octokit.pulls.listReviews({owner:s,repo:o,pull_number:n}),Le(M=>this.octokit.pulls.listReviewComments({owner:s,repo:o,pull_number:n,per_page:100,page:M})).catch(M=>{let K=Te(M);if(K===429)throw M;if(K===403){let X=v(M).toLowerCase();if(X.includes("rate limit")||X.includes("abuse detection"))throw M;return m("pr-monitor",`403 fetching review comments for ${s}/${o}#${n}: ${X}`),[]}return K===404?T("pr-monitor",`Review comments 404 for ${s}/${o}#${n} (likely no inline comments)`):m("pr-monitor",`Failed to fetch review comments for ${s}/${o}#${n} (status ${K??"unknown"}): self-reply detection will be skipped`),[]})]),d=a.data,g=u.data,E=fa(g),R=this.hasMergeConflict(d.mergeable,d.mergeable_state),{hasUnrespondedComment:w,lastMaintainerComment:P}=ya(c,g,l,i.githubUsername),b=this.getCIStatus(s,o,d.head.sha),x=w||E==="changes_requested"?this.octokit.repos.getCommit({owner:s,repo:o,ref:d.head.sha}).then(M=>({date:M.data.commit.author?.date,author:M.data.author?.login})).catch(M=>{let K=Te(M);if(K===429)throw M;if(K===403){let X=v(M).toLowerCase();if(X.includes("rate limit")||X.includes("abuse detection"))throw M;m("pr-monitor",`403 fetching commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${v(M)}`);return}m("pr-monitor",`Failed to fetch commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${v(M)}`)}):Promise.resolve(void 0),[{status:B,failingCheckNames:D,failingCheckConclusions:k},O]=await Promise.all([b,x]),H=O?.date,U=O?.author,{hasIncompleteChecklist:ue,checklistStats:_e}=wa(d.body||""),A=Ea(P?.body,E),te=$e(new Date(d.updated_at),new Date),De=ba(g),Ae=Ks(D,k),ct=B==="failing"&&Ae.some(M=>M.category==="actionable"),{status:Oe,actionReason:Ie,waitReason:qe,stalenessTier:I,actionReasons:q}=_o({ciStatus:B,hasMergeConflict:R,hasUnrespondedComment:w,hasIncompleteChecklist:ue,reviewDecision:E,daysSinceActivity:te,dormantThreshold:i.dormantThresholdDays,approachingThreshold:i.approachingDormantDays,latestCommitDate:H,latestCommitAuthor:U,contributorUsername:i.githubUsername,lastMaintainerCommentDate:P?.createdAt,latestChangesRequestedDate:De,hasActionableCIFailure:ct});return this.buildFetchedPR({id:d.id,url:e,repo:`${s}/${o}`,number:n,title:d.title,status:Oe,actionReason:Ie,waitReason:qe,stalenessTier:I,actionReasons:q,createdAt:d.created_at,updatedAt:d.updated_at,daysSinceActivity:te,ciStatus:B,failingCheckNames:D,classifiedChecks:Ae,hasMergeConflict:R,reviewDecision:E,hasUnrespondedComment:w,lastMaintainerComment:P,latestCommitDate:H,hasIncompleteChecklist:ue,checklistStats:_e,maintainerActionHints:A})}buildFetchedPR(e){let t={...e,displayLabel:"",displayDescription:""},{displayLabel:s,displayDescription:o}=Ys(t);return t.displayLabel=s,t.displayDescription=o,t}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(g=>{let E=Te(g);if(E===429)throw g;if(E===403){let R=v(g).toLowerCase();if(R.includes("rate limit")||R.includes("abuse detection"))throw g}return E===404?T("pr-monitor",`Check runs 404 for ${e}/${t}@${s.slice(0,7)} (no checks configured)`):m("pr-monitor",`Non-404 error fetching check runs for ${e}/${t}@${s.slice(0,7)}: ${E??g}`),null})]),i=o.data,a=n?.data?.check_runs||[],c=new Map;for(let g of a){let E=c.get(g.name);(!E||new Date(g.started_at??0)>new Date(E.started_at??0))&&c.set(g.name,g)}let u=[...c.values()],l=ga(u),d=ma(i);return ha(l,d,u.length)}catch(o){let n=Te(o);if(n===401||n===403||n===429)throw o;return n===404?(T("pr-monitor",`CI check 404 for ${e}/${t} (no CI configured)`),{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}):(m("pr-monitor",`Failed to check CI for ${e}/${t}@${s.slice(0,7)}: ${v(o)}`),{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map})}}async fetchUserMergedPRCounts(e){let t=this.stateManager.getState().config;return Ca(this.octokit,t.githubUsername,e)}async fetchUserClosedPRCounts(e){let t=this.stateManager.getState().config;return Pa(this.octokit,t.githubUsername,e)}async fetchRepoMetadata(e){if(e.length===0)return new Map;T(Zs,`Fetching repo metadata for ${e.length} repos...`);let t=new Map,s=st(),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 l=>{let d=l.split("/");if(d.length!==2||!d[0]||!d[1])throw new Z(`Malformed repo identifier: "${l}"`);let[g,E]=d,R=`/repos/${g}/${E}`,w=await ls(s,R,b=>this.octokit.repos.get({owner:g,repo:E,headers:b})),P={stars:w.stargazers_count,language:w.language??null};return{repo:l,metadata:P}})),u=0;for(let l=0;l<c.length;l++){let d=c[l];d.status==="fulfilled"?t.set(d.value.repo,d.value.metadata):(u++,m(Zs,`Failed to fetch metadata for ${a[l]}: ${v(d.reason)}`))}if(u===a.length&&a.length>0){let l=o.length-i-n;l>0&&m(Zs,`Entire chunk failed, aborting remaining ${l} repos`);break}}return T(Zs,`Fetched repo metadata for ${t.size}/${e.length} repos`),t}async fetchRecentlyClosedPRs(e=7){let t=this.stateManager.getState().config;return Aa(this.octokit,t,e)}async fetchRecentlyMergedPRs(e=7){let t=this.stateManager.getState().config;return Oa(this.octokit,t,e)}generateDigest(e,t=[],s=[]){let o=new Date().toISOString(),n=e.filter(c=>c.status==="needs_addressing"),i=e.filter(c=>c.status==="waiting_on_maintainer"),a=this.stateManager.getStats();return{generatedAt:o,openPRs:e,needsAddressingPRs:n,waitingOnMaintainerPRs:i,recentlyClosedPRs:t,recentlyMergedPRs:s,shelvedPRs:[],autoUnshelvedPRs:[],summary:{totalActivePRs:e.length,totalNeedingAttention:n.length,totalMergedAllTime:a.mergedPRs,mergeRate:parseFloat(a.mergeRate)}}}async updateRepoScoreFromObservedPR(e,t){t?this.stateManager.incrementMergedCount(e):this.stateManager.incrementClosedCount(e)}}});function er(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=>Po.has(s))}function Fa(r){return!r.labels||!Array.isArray(r.labels)?!1:r.labels.map(s=>(typeof s=="string"?s:s.name||"").toLowerCase()).filter(s=>Ia.has(s)).length>=5}function xa(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 ko(r){let e=new Set,t=new Map;for(let s of r){let o=s.repository_url.split("/").slice(-2).join("/");if(Fa(s)){e.add(o);continue}s.title&&xa(s.title)&&t.set(o,(t.get(o)||0)+1)}for(let[s,o]of t)o>=3&&e.add(s);return e}function tr(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 Po,Ia,Ao=C(()=>{"use strict";Po=new Set(["documentation","docs","typo","spelling"]);Ia=new Set(["good first issue","hacktoberfest","easy","up-for-grabs","first-timers-only","beginner-friendly","beginner","starter","newbie","low-hanging-fruit","community"])});function Oo(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 ds(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=$e(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.matchesPreferredCategory&&(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 sr=C(()=>{"use strict";Ee()});function Ua(r,e){if(e.length===0)return!1;let t=r.split("/")[0]?.toLowerCase();if(!t)return!1;for(let s of e){let o=np[s];if(o&&o.some(n=>n.toLowerCase()===t))return!0}return!1}function Ma(r){let e=new Set;for(let t of r){let s=op[t];if(s)for(let o of s)e.add(o)}return[...e]}var op,np,Go=C(()=>{"use strict";op={nonprofit:["nonprofit","social-good","humanitarian","charity","social-impact","civic-tech"],devtools:["developer-tools","devtools","cli","sdk","linter","formatter","build-tool"],infrastructure:["infrastructure","cloud","kubernetes","docker","devops","monitoring","observability"],"web-frameworks":["web-framework","frontend","backend","fullstack","nextjs","react","vue"],"data-ml":["machine-learning","data-science","deep-learning","nlp","data-pipeline","analytics"],education:["education","learning","tutorial","courseware","edtech","teaching"]},np={nonprofit:["code-for-america","opengovfoundation","ushahidi","hotosm","openfn","democracyearth"],devtools:["eslint","prettier","vitejs","biomejs","oxc-project","ast-grep","turbot"],infrastructure:["kubernetes","hashicorp","grafana","prometheus","open-telemetry","envoyproxy","cncf"],"web-frameworks":["vercel","remix-run","sveltejs","nuxt","astro","redwoodjs","blitz-js"],"data-ml":["huggingface","mlflow","apache","dbt-labs","dagster-io","prefecthq","langchain-ai"],education:["freeCodeCamp","TheOdinProject","exercism","codecademy","oppia","Khan"]}});function ja(){let r=Date.now();for(let[e,t]of rt.entries())r-t.fetchedAt>Na&&rt.delete(e);if(rt.size>La){let t=Array.from(rt.entries()).sort((s,o)=>s[1].fetchedAt-o[1].fetchedAt).slice(0,rt.size-La);for(let[s]of t)rt.delete(s)}}var ht,ip,rt,Na,ap,La,rr,Ha=C(()=>{"use strict";us();Ee();ce();le();qt();sr();Go();ht="issue-vetting",ip=pt,rt=new Map,Na=3600*1e3,ap=14400*1e3,La=100;rr=class{octokit;stateManager;constructor(e,t){this.octokit=e,this.stateManager=t}async vetIssue(e){let t=de(e);if(!t||t.type!=="issues")throw new Z(`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,u,l,d,g]=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)]),E=c.passed,R=u.passed,w=this.analyzeRequirements(a.body||""),P=l.checkFailed?!0:l.isActive,b={passedAllChecks:E&&R&&P&&w,checks:{noExistingPR:E,notClaimed:R,projectActive:P,clearRequirements:w,contributionGuidelinesFound:!!d},contributionGuidelines:d,notes:[]};E||b.notes.push("Existing PR found for this issue"),R||b.notes.push("Issue appears to be claimed by someone"),c.inconclusive&&b.notes.push(`Could not verify absence of existing PRs: ${c.reason||"API error"}`),u.inconclusive&&b.notes.push(`Could not verify claim status: ${u.reason||"API error"}`),l.checkFailed?b.notes.push(`Could not verify project activity: ${l.failureReason||"API error"}`):l.isActive||b.notes.push("Project may be inactive"),w||b.notes.push("Issue requirements are unclear"),d||b.notes.push("No CONTRIBUTING.md found");let G={id:a.id,url:e,repo:i,number:n,title:a.title,status:"candidate",labels:a.labels.map(I=>typeof I=="string"?I:I.name||""),createdAt:a.created_at,updatedAt:a.updated_at,vetted:!0,vettingResult:b},x=[],B=[];E||x.push("Has existing PR"),R||x.push("Already claimed"),!l.isActive&&!l.checkFailed&&x.push("Inactive project"),w||x.push("Unclear requirements"),E&&B.push("No existing PR"),R&&B.push("Not claimed"),l.isActive&&!l.checkFailed&&B.push("Active project"),w&&B.push("Clear requirements"),d&&B.push("Has contribution guidelines");let D=this.stateManager.getState().config,k=this.stateManager.getRepoScore(i),O=k&&k.mergedPRCount>0?k.mergedPRCount:g;O>0?B.push(`Trusted project (${O} PR${O>1?"s":""} merged)`):D.trustedProjects.includes(i)&&B.push("Trusted project (previous PR merged)"),k&&(k.closedWithoutMergeCount>0&&O===0?x.push("User has rejected PR(s) in this repo with no successful merges"):k.closedWithoutMergeCount>0&&O>0&&b.notes.push(`Mixed history: ${O} merged, ${k.closedWithoutMergeCount} closed without merge`));let H=i.split("/")[0],U=!1;H&&i.includes("/")&&(U=Object.values(this.stateManager.getState().repoScores).some(I=>I.repo&&I.mergedPRCount>0&&I.repo.startsWith(H+"/")&&I.repo!==i)),U&&B.push(`Org affinity (merged PRs in other ${H} repos)`);let ue=D.projectCategories??[],_e=Ua(i,ue);_e&&B.push("Matches preferred project category");let A;b.passedAllChecks?A="approve":x.length>2?A="skip":A="needs_review";let te=l.checkFailed||c.inconclusive||u.inconclusive;A==="approve"&&te&&(A="needs_review",b.notes.push("Recommendation downgraded: one or more checks were inconclusive"));let De=Oo(l.stargazersCount??0,l.forksCount??0);l.checkFailed&&De===0&&b.notes.push("Repo quality bonus unavailable: could not fetch star/fork counts due to API error");let Ae=this.getRepoScore(i),ct=ds({repoScore:Ae,hasExistingPR:!E,isClaimed:!R,clearRequirements:w,hasContributionGuidelines:!!d,issueUpdatedAt:a.updated_at,closedWithoutMergeCount:k?.closedWithoutMergeCount??0,mergedPRCount:O,orgHasMergedPRs:U,repoQualityBonus:De,matchesPreferredCategory:_e}),Oe=this.stateManager.getStarredRepos(),Ie=D.preferredOrgs??[],qe="normal";return O>0?qe="merged_pr":Ie.some(I=>I.toLowerCase()===H?.toLowerCase())?qe="preferred_org":Oe.includes(i)&&(qe="starred"),{issue:G,vettingResult:b,projectHealth:l,recommendation:A,reasonsToSkip:x,reasonsToApprove:B,viabilityScore:ct,searchPriority:qe}}async vetIssuesParallel(e,t,s){let o=[],n=new Map,i=0,a=0,c=0;for(let l of e){if(o.length>=t)break;c++;let d=this.vetIssue(l).then(g=>{o.length<t&&(s&&(g.searchPriority=s),o.push(g))}).catch(g=>{i++,lt(g)&&a++,m(ht,`Error vetting issue ${l}:`,v(g))}).finally(()=>n.delete(l));n.set(l,d),n.size>=ip&&await Promise.race(n.values())}await Promise.allSettled(n.values());let u=i===c&&c>0;return u&&m(ht,`All ${c} issue(s) failed vetting. This may indicate a systemic issue (rate limit, auth, network).`),{candidates:o.slice(0,t),allFailed:u,rateLimitHit:a>0}}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 Le(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=v(o);return m(ht,`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=v(s);return m(ht,`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 u=(c.body||"").toLowerCase();if(a.some(l=>u.includes(l)))return{passed:!1}}return{passed:!0}}catch(n){let i=v(n);return m(ht,`Failed to check claim status on ${e}/${t}#${s}: ${i}. Assuming not claimed.`),{passed:!0,inconclusive:!0,reason:i}}}async checkProjectHealth(e,t){let s=st(),o=`health:${e}/${t}`;try{return await Js(s,o,ap,async()=>{let n=`/repos/${e}/${t}`,i=await ls(s,n,g=>this.octokit.repos.get({owner:e,repo:t,headers:g})),{data:a}=await this.octokit.repos.listCommits({owner:e,repo:t,per_page:1}),u=a[0]?.commit?.author?.date||i.pushed_at,l=$e(new Date(u)),d="unknown";try{let{data:g}=await this.octokit.actions.listRepoWorkflows({owner:e,repo:t,per_page:1});g.total_count>0&&(d="passing")}catch(g){let E=v(g);m(ht,`Failed to check CI status for ${e}/${t}: ${E}. Defaulting to unknown.`)}return{repo:`${e}/${t}`,lastCommitAt:u,daysSinceLastCommit:l,openIssuesCount:i.open_issues_count,avgIssueResponseDays:0,ciStatus:d,isActive:l<30,stargazersCount:i.stargazers_count,forksCount:i.forks_count}})}catch(n){let i=v(n);return m(ht,`Error checking project health for ${e}/${t}: ${i}`),{repo:`${e}/${t}`,lastCommitAt:"",daysSinceLastCommit:999,openIssuesCount:0,avgIssueResponseDays:0,ciStatus:"unknown",isActive:!1,checkFailed:!0,failureReason:i}}}async fetchContributionGuidelines(e,t){let s=`${e}/${t}`,o=rt.get(s);if(o&&Date.now()-o.fetchedAt<Na)return o.guidelines;let n=["CONTRIBUTING.md",".github/CONTRIBUTING.md","docs/CONTRIBUTING.md","contributing.md"],i=await Promise.allSettled(n.map(a=>this.octokit.repos.getContent({owner:e,repo:t,path:a}).then(({data:c})=>"content"in c?Buffer.from(c.content,"base64").toString("utf-8"):null)));for(let a=0;a<i.length;a++){let c=i[a];if(c.status==="fulfilled"&&c.value){let u=this.parseContributionGuidelines(c.value);return rt.set(s,{guidelines:u,fetchedAt:Date.now()}),ja(),u}if(c.status==="rejected"){let u=c.reason instanceof Error?c.reason.message:String(c.reason);!u.includes("404")&&!u.includes("Not Found")&&m(ht,`Unexpected error fetching ${n[a]} from ${e}/${t}: ${u}`)}}rt.set(s,{guidelines:void 0,fetchedAt:Date.now()}),ja()}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 qa,Ba,W,cp,At,Va=C(()=>{"use strict";qa=z(require("fs"),1),Ba=z(require("path"),1);Ht();Lt();Ee();Ye();ce();le();qt();Ao();Ha();sr();Go();Ao();sr();W="issue-discovery",cp=900*1e3,At=class{octokit;stateManager;githubToken;vetter;rateLimitWarning=null;constructor(e){this.githubToken=e,this.octokit=he(e),this.stateManager=j(),this.vetter=new rr(this.octokit,this.stateManager)}async cachedSearch(e){let t=`search:${e.q}:${e.sort}:${e.order}:${e.per_page}`;return Js(st(),t,cp,async()=>{let{data:s}=await this.octokit.search.issuesAndPullRequests(e);return s})}async fetchStarredRepos(){pe(W,"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){pe(W,"Reached pagination limit for starred repos (500)");break}}return pe(W,`Fetched ${e.length} starred repositories`),this.stateManager.setStarredRepos(e),e}catch(t){let s=this.stateManager.getStarredRepos(),o=v(t);return m(W,"Error fetching starred repos:",o),s.length===0?m(W,`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.`):m(W,`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=ko(e);if(a.size>0){let R=e.filter(w=>a.has(w.repository_url.split("/").slice(-2).join("/"))).length;T(W,`[SPAM_FILTER] Filtered ${R} issues from ${a.size} label-farming repos: ${[...a].join(", ")}`)}let c=t(e).filter(R=>{let w=R.repository_url.split("/").slice(-2).join("/");return a.has(w)?!1:s.every(P=>!P.has(w))}).slice(0,o*2);if(c.length===0)return T(W,`[${i}] All ${e.length} items filtered before vetting`),{candidates:[],allVetFailed:!1,rateLimitHit:!1};let{candidates:u,allFailed:l,rateLimitHit:d}=await this.vetter.vetIssuesParallel(c.map(R=>R.html_url),o,"normal"),g=u.filter(R=>R.projectHealth.checkFailed?!0:(R.projectHealth.stargazersCount??0)>=n),E=u.length-g.length;return E>0&&T(W,`[STAR_FILTER] Filtered ${E} ${i} candidates below ${n} stars`),{candidates:g,allVetFailed:l,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,u=null,l=!1;this.rateLimitWarning=null;try{let I=await yo(this.githubToken);if(I.remaining<5){let q=new Date(I.resetAt).toLocaleTimeString("en-US",{hour12:!1});this.rateLimitWarning=`GitHub search API quota low (${I.remaining}/${I.limit} remaining, resets at ${q}). Search may be slow.`,m(W,this.rateLimitWarning)}}catch(I){if(Te(I)===401)throw I;m(W,"Could not check rate limit:",v(I))}let d=this.stateManager.getReposWithMergedPRs(),g=new Set(d),E=this.stateManager.getReposWithOpenPRs(),R=await this.getStarredReposWithRefresh(),w=new Set(R),P=new Set(this.stateManager.getLowScoringRepos(3)),b=new Set(this.stateManager.getState().activeIssues.map(I=>I.url)),G=new Set(t.excludeRepos),x=t.maxIssueAgeDays||90,B=new Date,D=o.map(I=>`label:"${I}"`).join(" "),O=s.some(I=>I.toLowerCase()==="any")?"":s.map(I=>`language:${I}`).join(" "),H=`is:issue is:open ${O} no:assignee`.replace(/ +/g," ").trim(),U=`is:issue is:open ${D} ${O} no:assignee`.replace(/ +/g," ").trim(),ue=t.includeDocIssues??!0,_e=new Set(t.aiPolicyBlocklist??bt.aiPolicyBlocklist??[]);_e.size>0&&T(W,`[AI_POLICY_FILTER] Filtering issues from ${_e.size} blocklisted repo(s): ${[..._e].join(", ")}`);let A=I=>I.filter(q=>{if(b.has(q.html_url))return!1;let M=q.repository_url.split("/").slice(-2).join("/");if(G.has(M)||_e.has(M)||P.has(M))return!1;let K=new Date(q.updated_at);return!($e(K,B)>x||!ue&&er(q))}),te=[...d,...E.filter(I=>!g.has(I))].slice(0,10),De=new Set(te);if(te.length>0){let I=Math.min(d.length,te.length),q=te.length-I;pe(W,`Phase 0: Searching issues in ${te.length} repos (${I} merged-PR, ${q} open-PR, no label filter)...`);let M=te.slice(0,I);if(M.length>0){let X=n-a.length;if(X>0){let{candidates:se,allBatchesFailed:oe,rateLimitHit:Se}=await this.searchInRepos(M,H,X,"merged_pr",A);a.push(...se),oe&&(c="All merged-PR repo batches failed"),Se&&(l=!0),pe(W,`Found ${se.length} candidates from merged-PR repos`)}}let K=te.slice(I);if(K.length>0&&a.length<n){let X=n-a.length;if(X>0){let{candidates:se,allBatchesFailed:oe,rateLimitHit:Se}=await this.searchInRepos(K,H,X,"starred",A);if(a.push(...se),oe){let Be="All open-PR repo batches failed";c=c?`${c}; ${Be}`:Be}Se&&(l=!0),pe(W,`Found ${se.length} candidates from open-PR repos`)}}}let Ae=null,ct=t.preferredOrgs??[];if(a.length<n&&ct.length>0){let I=new Set(te.map(M=>M.split("/")[0]?.toLowerCase())),q=ct.filter(M=>!I.has(M.toLowerCase())).slice(0,5);if(q.length>0){pe(W,`Phase 0.5: Searching issues in ${q.length} preferred org(s)...`);let M=n-a.length,K=q.map(se=>`org:${se}`).join(" OR "),X=`${U} (${K})`;try{let se=await this.cachedSearch({q:X,sort:"created",order:"desc",per_page:M*3});if(se.items.length>0){let oe=A(se.items).filter(ut=>{let Qt=ut.repository_url.split("/").slice(-2).join("/");return!De.has(Qt)}),{candidates:Se,allFailed:Be,rateLimitHit:Ut}=await this.vetter.vetIssuesParallel(oe.slice(0,M*2).map(ut=>ut.html_url),M,"preferred_org");a.push(...Se),Be&&(Ae="All preferred org issue vetting failed"),Ut&&(l=!0),pe(W,`Found ${Se.length} candidates from preferred orgs`)}}catch(se){let oe=v(se);Ae=oe,lt(se)&&(l=!0),m(W,`Error searching preferred orgs: ${oe}`)}}}if(a.length<n&&R.length>0){let I=R.filter(q=>!De.has(q));if(I.length>0){pe(W,`Phase 1: Searching issues in ${I.length} starred repos...`);let q=n-a.length;if(q>0){let{candidates:M,allBatchesFailed:K,rateLimitHit:X}=await this.searchInRepos(I.slice(0,10),U,q,"starred",A);a.push(...M),K&&(u="All starred repo batches failed"),X&&(l=!0),pe(W,`Found ${M.length} candidates from starred repos`)}}}let Oe=null;if(a.length<n){pe(W,"Phase 2: General issue search...");let I=n-a.length;try{let q=await this.cachedSearch({q:U,sort:"created",order:"desc",per_page:I*3});pe(W,`Found ${q.total_count} issues in general search, processing top ${q.items.length}...`);let M=new Set(a.map(oe=>oe.issue.repo)),{candidates:K,allVetFailed:X,rateLimitHit:se}=await this.filterVetAndScore(q.items,A,[De,w,M],I,i,"Phase 2");a.push(...K),X&&(Oe=(Oe?Oe+"; ":"")+"all vetting failed"),se&&(l=!0),pe(W,`Found ${K.length} candidates from general search`)}catch(q){let M=v(q);Oe=M,lt(q)&&(l=!0),m(W,`Error in general issue search: ${M}`)}}let Ie=null;if(a.length<n){pe(W,"Phase 3: Searching actively maintained repos...");let I=n-a.length,q=new Date;q.setDate(q.getDate()-30);let M=q.toISOString().split("T")[0],K=Ma(t.projectCategories??[]),X=K.length>0?`topic:${K[0]}`:"",se=`is:issue is:open no:assignee ${O} ${X} stars:>=${i} pushed:>=${M} archived:false`.replace(/ +/g," ").trim();try{let oe=await this.cachedSearch({q:se,sort:"updated",order:"desc",per_page:I*3});pe(W,`Found ${oe.total_count} issues in maintained-repo search, processing top ${oe.items.length}...`);let Se=new Set(a.map(Qt=>Qt.issue.repo)),{candidates:Be,allVetFailed:Ut,rateLimitHit:ut}=await this.filterVetAndScore(oe.items,A,[De,w,Se],I,i,"Phase 3");a.push(...Be),Ut&&(Ie="all vetting failed"),ut&&(l=!0),pe(W,`Found ${Be.length} candidates from maintained-repo search`)}catch(oe){let Se=v(oe);Ie=Se,lt(oe)&&(l=!0),m(W,`Error in maintained-repo search: ${Se}`)}}if(a.length===0){let I=[c?`Phase 0 (merged-PR repos): ${c}`:null,Ae?`Phase 0.5 (preferred orgs): ${Ae}`:null,u?`Phase 1 (starred repos): ${u}`:null,Oe?`Phase 2 (general): ${Oe}`:null,Ie?`Phase 3 (maintained repos): ${Ie}`:null].filter(Boolean),q=I.length>0?` ${I.join(". ")}.`:"";if(l)return this.rateLimitWarning=`Search returned no results due to GitHub API rate limits.${q} Try again after the rate limit resets.`,[];throw new Z(`No issue candidates found across all search phases.${q} Try adjusting your search criteria (languages, labels) or check your network connection.`)}return l&&(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((I,q)=>{let M={merged_pr:0,preferred_org:1,starred:2,normal:3},K=M[I.searchPriority]-M[q.searchPriority];if(K!==0)return K;let X={approve:0,needs_review:1,skip:2},se=X[I.recommendation]-X[q.recommendation];return se!==0?se:q.viabilityScore-I.viabilityScore}),tr(a,2).slice(0,n)}async searchInRepos(e,t,s,o,n){let i=[],c=this.batchRepos(e,5),u=0,l=0;for(let E of c){if(i.length>=s)break;try{let R=E.map(b=>`repo:${b}`).join(" OR "),w=`${t} (${R})`,P=await this.cachedSearch({q:w,sort:"created",order:"desc",per_page:Math.min(30,(s-i.length)*3)});if(P.items.length>0){let b=n(P.items),G=s-i.length,{candidates:x}=await this.vetter.vetIssuesParallel(b.slice(0,G*2).map(B=>B.html_url),G,o);i.push(...x)}}catch(R){u++,lt(R)&&l++;let w=E.join(", ");m(W,`Error searching issues in batch [${w}]:`,v(R))}}let d=u===c.length&&c.length>0,g=l>0;return d&&m(W,`All ${c.length} batch(es) failed for ${o} phase. This may indicate a systemic issue (rate limit, auth, network).`),{candidates:i,allBatchesFailed:d,rateLimitHit:g}}batchRepos(e,t){let s=[];for(let o=0;o<e.length;o+=t)s.push(e.slice(o,o+t));return s}async vetIssue(e){return this.vetter.vetIssue(e)}analyzeRequirements(e){return this.vetter.analyzeRequirements(e)}calculateViabilityScore(e){return ds(e)}saveSearchResults(e){let t=[...e].sort((a,c)=>c.viabilityScore-a.viabilityScore),s=xe(),o=Ba.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:u,recommendation:l}=a,d=c.labels.slice(0,3).join(", "),g=d.length>30?d.substring(0,27)+"...":d,E=c.title.length>50?c.title.substring(0,47)+"...":c.title,R=new Date(c.updatedAt).toLocaleDateString(),_=l==="approve"?"Y":l==="skip"?"N":"?";i+=`| ${u} | ${c.repo} | [#${c.number}](${c.url}) | ${E} | ${g} | ${R} | ${_} |
52
+ `;for(let a of t){let{issue:c,viabilityScore:u,recommendation:l}=a,d=c.labels.slice(0,3).join(", "),g=d.length>30?d.substring(0,27)+"...":d,E=c.title.length>50?c.title.substring(0,47)+"...":c.title,R=new Date(c.updatedAt).toLocaleDateString(),w=l==="approve"?"Y":l==="skip"?"N":"?";i+=`| ${u} | ${c.repo} | [#${c.number}](${c.url}) | ${E} | ${g} | ${R} | ${w} |
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
- `,La.writeFileSync(o,i,"utf-8"),pe(W,`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
+ `,qa.writeFileSync(o,i,"utf-8"),pe(W,`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}
@@ -85,34 +85,34 @@ ${s.notes.length>0?`
85
85
  **Notes:**
86
86
  ${s.notes.map(u=>`- ${u}`).join(`
87
87
  `)}`:""}
88
- `}}});var ot,rp,Ha,Ot,qa=P(()=>{"use strict";Ht();Qs();us();Lt();Ee();wo();ae();le();ot="issue-conversation",rp=pt,Ha=new Set(["OWNER","MEMBER","COLLABORATOR"]),Ot=class{octokit;stateManager;constructor(e){this.octokit=me(e),this.stateManager=j()}async fetchCommentedIssues(e=30){let t=this.stateManager.getState().config;if(!t.githubUsername)throw new Xe("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];T(ot,`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&&m(ot,`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(R=>R.status==="claimed"||R.status==="in_progress"||R.status==="pr_submitted").map(R=>`${R.repo}#${R.number}`)),u=new Set((t.aiPolicyBlocklist||[]).map(R=>R.toLowerCase())),l=[];for(let R of i.items){if(R.pull_request)continue;let _=Rt(R.html_url);if(!_){m(ot,`Skipping issue with unparseable URL: ${R.html_url}`);continue}let{owner:C,repo:b}=_,G=`${C}/${b}`;Ue(C,s)||R.user?.login?.toLowerCase()!==s.toLowerCase()&&(t.excludeRepos.includes(G)||t.excludeOrgs?.some(x=>C.toLowerCase()===x.toLowerCase())||u.has(G.toLowerCase())||c.has(`${G}#${R.number}`)||l.push({item:R,repoFullName:G}))}T(ot,`Found ${l.length} commented issues to check`);let d=[],g=[];await Vs(l,async({item:R,repoFullName:_})=>{try{let C=await this.analyzeIssueConversation(R,_,s);C?d.push(C):g.push({issueUrl:R.html_url,error:"No user comment found despite commenter: search match (possible pagination or eventual consistency)"})}catch(C){let b=v(C);g.push({issueUrl:R.html_url,error:b}),m(ot,`Error analyzing issue ${R.html_url}: ${b}`)}},rp),g.length>0&&m(ot,`${g.length}/${l.length} issue analysis call(s) failed`),g.length===l.length&&l.length>0&&m(ot,`All ${l.length} issue analysis call(s) failed. Possible systemic issue (rate limit, auth, network).`);let E={new_response:0,waiting:1,acknowledged:2};return d.sort((R,_)=>E[R.status]-E[_.status]),T(ot,`Analyzed ${d.length} issue conversations (${d.filter(R=>R.status==="new_response").length} with new responses)`),{issues:d,failures:g}}async analyzeIssueConversation(e,t,s){let{owner:o,repo:n}=Mt(t),i=await Le(b=>this.octokit.issues.listComments({owner:o,repo:n,issue_number:e.number,per_page:100,page:b})),a=[];for(let b of i){if(!b.user?.login)continue;let G=b.user.login;a.push({author:G,body:b.body||"",createdAt:b.created_at,isUser:G.toLowerCase()===s.toLowerCase(),authorAssociation:String(b.author_association??"")})}a.sort((b,G)=>new Date(b.createdAt).getTime()-new Date(G.createdAt).getTime());let c;for(let b of a)b.isUser&&(c=b);if(!c)return m(ot,`No user comment found for ${e.html_url} despite commenter: search match`),null;let u=new Date(c.createdAt),l=`@${s.toLowerCase()}`;function d(b){return Ha.has(b.authorAssociation)||b.body.toLowerCase().includes(l)}let g;for(let b of a){if(b.isUser||Bt(b.author))continue;if(new Date(b.createdAt)>u){if(ps(b.body)||!d(b))continue;g={author:b.author,body:b.body.slice(0,200)+(b.body.length>200?"...":""),createdAt:b.createdAt,authorAssociation:b.authorAssociation}}}let E=(e.labels||[]).map(b=>b.name||"").filter(Boolean),R={repo:t,number:e.number,title:e.title,url:e.html_url,userLastCommentedAt:c.createdAt,labels:E,daysSinceUserComment:$e(u,new Date)};if(g)return{...R,status:"new_response",lastResponseAuthor:g.author,lastResponseBody:g.body,lastResponseAt:g.createdAt,isFromMaintainer:Ha.has(g.authorAssociation)};let C=[...a].reverse().find(b=>Bt(b.author)?!1:b.isUser?!0:d(b))?.isUser?"acknowledged":"waiting";return{...R,status:C}}}});function Gt(r,e){let t=e.config.statusOverrides;if(!t||Object.keys(t).length===0)return r;let s=j(),o=new Set(Object.keys(t)),n=!1,i=r.map(a=>{try{let c=s.getStatusOverride(a.url,a.updatedAt);return c?np.has(c.status)?c.status===a.status?a:c.status==="waiting_on_maintainer"?{...a,status:c.status,actionReason:void 0,waitReason:"pending_review"}:{...a,status:c.status,waitReason:void 0,actionReason:"needs_response"}:(m("daily-logic",`Invalid override status "${c.status}" for ${a.url} \u2014 ignoring`),a):(o.has(a.url)&&(n=!0),a)}catch(c){return m("daily-logic",`Failed to apply status override for ${a.url}: ${v(c)}`),a}});if(n)try{s.save()}catch(a){m("daily-logic",`Failed to persist auto-cleared overrides \u2014 they may reappear on restart: ${v(a)}`)}return i}function Va(r,e){let t=new Map;for(let s of r){if(!s.repo){m(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 nt(r){return{number:r.number,url:r.url,title:r.title,repo:r.repo,daysSinceActivity:r.daysSinceActivity,status:r.status}}function gs(r){let e=Va(r,"GROUP_BY_REPO"),t=[];for(let[s,o]of e)t.push({repo:s,prs:o});return t}function ms(r){let e=Va(r,"COMPUTE_SIGNALS"),t=new Map;for(let[s,o]of e){let n=o.some(a=>a.lastMaintainerComment&&!Ba.has(a.stalenessTier)),i=o.some(a=>!Ba.has(a.stalenessTier));t.set(s,{isResponsive:n,hasActiveMaintainers:i})}return t}function hs(r,e,t){let s=r.length,o=r.filter(l=>l.status==="needs_addressing"&&l.actionReason&&op.has(l.actionReason)).length,n=s<e,i=o===0,a=n&&i,c,u=t>0?` + ${t} shelved`:"";if(a)c=`You have capacity: ${s}/${e} active PRs${u}, no critical issues`;else{let l=[];n||l.push(`at PR limit (${s}/${e}${u})`),i||l.push(`${o} critical issue${o===1?"":"s"} need attention`),c=`No capacity: ${l.join(", ")}`}return{hasCapacity:a,activePRCount:s,maxActivePRs:e,shelvedPRCount:t,criticalIssueCount:o,reason:c}}function fs(r,e){let t=[],s=r.filter(i=>i.status==="needs_addressing"),o=e?new Date(e).getTime():NaN,n=["needs_response","needs_changes","failing_ci","merge_conflict","incomplete_checklist"];for(let i of n)for(let a of s){if(a.actionReason!==i)continue;let c,u;switch(i){case"needs_response":c="[Needs Response]",u="needs_response";break;case"needs_changes":c="[Needs Changes]",u="needs_changes";break;case"failing_ci":{c=`[CI Failing${a.failingCheckNames.length>0?` (${a.failingCheckNames.join(", ")})`:""}]`,u="ci_failing";break}case"merge_conflict":c="[Merge Conflict]",u="merge_conflict";break;case"incomplete_checklist":{c=`[Incomplete Checklist${a.checklistStats?` (${a.checklistStats.checked}/${a.checklistStats.total})`:""}]`,u="incomplete_checklist";break}default:m("daily-logic",`Unhandled ActionReason "${i}" for PR ${a.url} \u2014 falling back to needs_response`),c=`[${i}]`,u="needs_response"}let l=new Date(a.createdAt).getTime(),d;isNaN(l)?(m("daily-logic",`Invalid createdAt "${a.createdAt}" for PR ${a.url}, assuming new contribution`),d=!0):d=isNaN(o)||l>o,t.push({type:u,pr:a,label:c,isNewContribution:d})}return t}function bs(r,e,t=[]){let s=t.filter(a=>a.status==="new_response"),o=[],n=r.length>0,i=s.length>0;if(n){let a=r.length===1;o.push({key:"address_all",label:a?"Address this issue (Recommended)":`Work through all ${r.length} issues (Recommended)`,description:a?"Fix the issue blocking your PR":"Run maintenance in parallel, then address code changes one at a time"})}return 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 ys(r,e,t=0){let s=e>0?`${e} need${e===1?"s":""} attention`:"all on track",o=t>0?` | ${t} issue repl${t===1?"y":"ies"}`:"";return`\u{1F4CA} ${r.summary.totalActivePRs} Active PRs | ${s}${o}`}function _s(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.needsAddressingPRs.length>0){s.push("### \u274C Needs Addressing");for(let a of r.needsAddressingPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),s.push(` \u2514\u2500 ${a.displayLabel} ${a.displayDescription}`);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}`),s.push(` \u2514\u2500 ${a.displayDescription}`);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=As(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 ot,up,Wa,Ot,za=C(()=>{"use strict";Ht();Qs();us();Lt();Ee();wo();ce();le();ot="issue-conversation",up=pt,Wa=new Set(["OWNER","MEMBER","COLLABORATOR"]),Ot=class{octokit;stateManager;constructor(e){this.octokit=he(e),this.stateManager=j()}async fetchCommentedIssues(e=30){let t=this.stateManager.getState().config;if(!t.githubUsername)throw new Xe("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];T(ot,`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&&m(ot,`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(R=>R.status==="claimed"||R.status==="in_progress"||R.status==="pr_submitted").map(R=>`${R.repo}#${R.number}`)),u=new Set((t.aiPolicyBlocklist||[]).map(R=>R.toLowerCase())),l=[];for(let R of i.items){if(R.pull_request)continue;let w=Rt(R.html_url);if(!w){m(ot,`Skipping issue with unparseable URL: ${R.html_url}`);continue}let{owner:P,repo:b}=w,G=`${P}/${b}`;Ue(P,s)||R.user?.login?.toLowerCase()!==s.toLowerCase()&&(t.excludeRepos.includes(G)||t.excludeOrgs?.some(x=>P.toLowerCase()===x.toLowerCase())||u.has(G.toLowerCase())||c.has(`${G}#${R.number}`)||l.push({item:R,repoFullName:G}))}T(ot,`Found ${l.length} commented issues to check`);let d=[],g=[];await Vs(l,async({item:R,repoFullName:w})=>{try{let P=await this.analyzeIssueConversation(R,w,s);P?d.push(P):g.push({issueUrl:R.html_url,error:"No user comment found despite commenter: search match (possible pagination or eventual consistency)"})}catch(P){let b=v(P);g.push({issueUrl:R.html_url,error:b}),m(ot,`Error analyzing issue ${R.html_url}: ${b}`)}},up),g.length>0&&m(ot,`${g.length}/${l.length} issue analysis call(s) failed`),g.length===l.length&&l.length>0&&m(ot,`All ${l.length} issue analysis call(s) failed. Possible systemic issue (rate limit, auth, network).`);let E={new_response:0,waiting:1,acknowledged:2};return d.sort((R,w)=>E[R.status]-E[w.status]),T(ot,`Analyzed ${d.length} issue conversations (${d.filter(R=>R.status==="new_response").length} with new responses)`),{issues:d,failures:g}}async analyzeIssueConversation(e,t,s){let{owner:o,repo:n}=Mt(t),i=await Le(b=>this.octokit.issues.listComments({owner:o,repo:n,issue_number:e.number,per_page:100,page:b})),a=[];for(let b of i){if(!b.user?.login)continue;let G=b.user.login;a.push({author:G,body:b.body||"",createdAt:b.created_at,isUser:G.toLowerCase()===s.toLowerCase(),authorAssociation:String(b.author_association??"")})}a.sort((b,G)=>new Date(b.createdAt).getTime()-new Date(G.createdAt).getTime());let c;for(let b of a)b.isUser&&(c=b);if(!c)return m(ot,`No user comment found for ${e.html_url} despite commenter: search match`),null;let u=new Date(c.createdAt),l=`@${s.toLowerCase()}`;function d(b){return Wa.has(b.authorAssociation)||b.body.toLowerCase().includes(l)}let g;for(let b of a){if(b.isUser||Bt(b.author))continue;if(new Date(b.createdAt)>u){if(ps(b.body)||!d(b))continue;g={author:b.author,body:b.body.slice(0,200)+(b.body.length>200?"...":""),createdAt:b.createdAt,authorAssociation:b.authorAssociation}}}let E=(e.labels||[]).map(b=>b.name||"").filter(Boolean),R={repo:t,number:e.number,title:e.title,url:e.html_url,userLastCommentedAt:c.createdAt,labels:E,daysSinceUserComment:$e(u,new Date)};if(g)return{...R,status:"new_response",lastResponseAuthor:g.author,lastResponseBody:g.body,lastResponseAt:g.createdAt,isFromMaintainer:Wa.has(g.authorAssociation)};let P=[...a].reverse().find(b=>Bt(b.author)?!1:b.isUser?!0:d(b))?.isUser?"acknowledged":"waiting";return{...R,status:P}}}});function Gt(r,e){let t=e.config.statusOverrides;if(!t||Object.keys(t).length===0)return r;let s=j(),o=new Set(Object.keys(t)),n=!1,i=r.map(a=>{try{let c=s.getStatusOverride(a.url,a.updatedAt);return c?pp.has(c.status)?c.status===a.status?a:c.status==="waiting_on_maintainer"?{...a,status:c.status,actionReason:void 0,waitReason:"pending_review"}:{...a,status:c.status,waitReason:void 0,actionReason:"needs_response"}:(m("daily-logic",`Invalid override status "${c.status}" for ${a.url} \u2014 ignoring`),a):(o.has(a.url)&&(n=!0),a)}catch(c){return m("daily-logic",`Failed to apply status override for ${a.url}: ${v(c)}`),a}});if(n)try{s.save()}catch(a){m("daily-logic",`Failed to persist auto-cleared overrides \u2014 they may reappear on restart: ${v(a)}`)}return i}function Ka(r,e){let t=new Map;for(let s of r){if(!s.repo){m(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 nt(r){return{number:r.number,url:r.url,title:r.title,repo:r.repo,daysSinceActivity:r.daysSinceActivity,status:r.status}}function gs(r){let e=Ka(r,"GROUP_BY_REPO"),t=[];for(let[s,o]of e)t.push({repo:s,prs:o});return t}function ms(r){let e=Ka(r,"COMPUTE_SIGNALS"),t=new Map;for(let[s,o]of e){let n=o.some(a=>a.lastMaintainerComment&&!Ja.has(a.stalenessTier)),i=o.some(a=>!Ja.has(a.stalenessTier));t.set(s,{isResponsive:n,hasActiveMaintainers:i})}return t}function hs(r,e,t){let s=r.length,o=r.filter(l=>l.status==="needs_addressing"&&l.actionReason&&lp.has(l.actionReason)).length,n=s<e,i=o===0,a=n&&i,c,u=t>0?` + ${t} shelved`:"";if(a)c=`You have capacity: ${s}/${e} active PRs${u}, no critical issues`;else{let l=[];n||l.push(`at PR limit (${s}/${e}${u})`),i||l.push(`${o} critical issue${o===1?"":"s"} need attention`),c=`No capacity: ${l.join(", ")}`}return{hasCapacity:a,activePRCount:s,maxActivePRs:e,shelvedPRCount:t,criticalIssueCount:o,reason:c}}function fs(r,e){let t=[],s=r.filter(i=>i.status==="needs_addressing"),o=e?new Date(e).getTime():NaN,n=["needs_response","needs_changes","failing_ci","merge_conflict","incomplete_checklist"];for(let i of n)for(let a of s){if(a.actionReason!==i)continue;let c,u;switch(i){case"needs_response":c="[Needs Response]",u="needs_response";break;case"needs_changes":c="[Needs Changes]",u="needs_changes";break;case"failing_ci":{c=`[CI Failing${a.failingCheckNames.length>0?` (${a.failingCheckNames.join(", ")})`:""}]`,u="ci_failing";break}case"merge_conflict":c="[Merge Conflict]",u="merge_conflict";break;case"incomplete_checklist":{c=`[Incomplete Checklist${a.checklistStats?` (${a.checklistStats.checked}/${a.checklistStats.total})`:""}]`,u="incomplete_checklist";break}default:m("daily-logic",`Unhandled ActionReason "${i}" for PR ${a.url} \u2014 falling back to needs_response`),c=`[${i}]`,u="needs_response"}let l=new Date(a.createdAt).getTime(),d;isNaN(l)?(m("daily-logic",`Invalid createdAt "${a.createdAt}" for PR ${a.url}, assuming new contribution`),d=!0):d=isNaN(o)||l>o,t.push({type:u,pr:a,label:c,isNewContribution:d})}return t}function bs(r,e,t=[]){let s=t.filter(a=>a.status==="new_response"),o=[],n=r.length>0,i=s.length>0;if(n){let a=r.length===1;o.push({key:"address_all",label:a?"Address this issue (Recommended)":`Work through all ${r.length} issues (Recommended)`,description:a?"Fix the issue blocking your PR":"Run maintenance in parallel, then address code changes one at a time"})}return 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 ys(r,e,t=0){let s=e>0?`${e} need${e===1?"s":""} attention`:"all on track",o=t>0?` | ${t} issue repl${t===1?"y":"ies"}`:"";return`\u{1F4CA} ${r.summary.totalActivePRs} Active PRs | ${s}${o}`}function _s(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.needsAddressingPRs.length>0){s.push("### \u274C Needs Addressing");for(let a of r.needsAddressingPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),s.push(` \u2514\u2500 ${a.displayLabel} ${a.displayDescription}`);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}`),s.push(` \u2514\u2500 ${a.displayDescription}`);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=As(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 $o(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.needsAddressingPRs.length>0){console.log("\u274C Needs Addressing:");for(let o of r.needsAddressingPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` ${o.displayLabel} ${o.displayDescription}`);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}`),console.log(` ${o.displayDescription}`);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 Vt,op,Ba,np,Wa=P(()=>{"use strict";Ee();le();ae();Lt();Vt=new Set(["needs_addressing"]),op=new Set(["needs_response","needs_changes","failing_ci","merge_conflict"]),Ba=new Set(["dormant","approaching_dormant"]),np=new Set(["needs_addressing","waiting_on_maintainer"])});function Do(r){let{repoScores:e,activePRCount:t}=r,s=0,o=0,n=[];for(let c of Object.values(e))s+=c.mergedPRCount,o+=c.closedWithoutMergeCount,c.mergedPRCount>0&&n.push({repo:c.repo,mergedCount:c.mergedPRCount});let i=s+o,a=i>0?s/i:0;return n.sort((c,u)=>u.mergedCount-c.mergedCount),{totalMerged:s,totalClosed:o,mergeRate:a,activePRs:t,reposContributed:n.length,topRepos:n.slice(0,10)}}var Io=P(()=>{"use strict"});async function Fo(r,e,t){for(let s of ip)try{T($t,`Checking ${e}/${t} for template at ${s}`);let{data:o}=await r.repos.getContent({owner:e,repo:t,path:s});if(Array.isArray(o)){T($t,`${s} is a directory (multiple templates?), skipping`);continue}if(o.type!=="file"){T($t,`${s} is type "${o.type}", skipping`);continue}if(!o.content){T($t,`${s} has no content, skipping`);continue}let n=Buffer.from(o.content,"base64").toString("utf-8");return T($t,`Found PR template at ${s} (${n.length} chars)`),{template:n,source:s}}catch(o){if(Te(o)===404)continue;if(be(o))throw o;let n=v(o);return m($t,`Error checking ${e}/${t}/${s}: ${n}`),{template:null,source:null,error:n}}return T($t,`No PR template found for ${e}/${t}`),{template:null,source:null}}var $t,ip,xo=P(()=>{"use strict";le();ae();$t="pr-template",ip=[".github/PULL_REQUEST_TEMPLATE.md",".github/pull_request_template.md","docs/pull_request_template.md","pull_request_template.md"]});var se=P(()=>{"use strict";Lt();Aa();Na();qa();Qs();Ht();Ee();ae();le();qt();Wa();Io();xo();Ye()});function za(r){let e=t=>t.map(s=>s.url);return{generatedAt:r.generatedAt,openPRs:r.openPRs,needsAddressingPRs:e(r.needsAddressingPRs),waitingOnMaintainerPRs:e(r.waitingOnMaintainerPRs),recentlyClosedPRs:r.recentlyClosedPRs,recentlyMergedPRs:r.recentlyMergedPRs,shelvedPRs:r.shelvedPRs,autoUnshelvedPRs:r.autoUnshelvedPRs,summary:r.summary}}function Ja(r){return r.map(e=>({type:e.type,prUrl:e.pr.url,label:e.label,isNewContribution:e.isNewContribution}))}function Ka(r){return r.map(e=>({repo:e.repo,prUrls:e.prs.map(t=>t.url)}))}function ap(r){return{success:!0,data:r,timestamp:new Date().toISOString()}}function cp(r){return{success:!1,error:r,timestamp:new Date().toISOString()}}function K(r){console.log(JSON.stringify(ap(r),null,2))}function Qa(r){console.log(JSON.stringify(cp(r),null,2))}var Uo=P(()=>{"use strict"});function Ya(r,e,t,s){let o=r.summary||{totalActivePRs:0,totalMergedAllTime:0,mergeRate:0,totalNeedingAttention:0},n=e.config.minStars??50,i=t!==void 0?Math.max(t,o.totalMergedAllTime):o.totalMergedAllTime,a=Object.values(e.repoScores||{}).reduce((u,l)=>u+(Qe(l.stargazersCount,n)?0:l.closedWithoutMergeCount||0),0),c=s!==void 0?Math.max(s,a):a;return{activePRs:o.totalActivePRs,shelvedPRs:(r.shelvedPRs||[]).length,mergedPRs:i,closedPRs:c,mergeRate:`${(o.mergeRate??0).toFixed(1)}%`}}function Mo(r,e){let t={...r};for(let[s,o]of Object.entries(e))t[s]=o;return t}function Lo(r,e,t,s,o){let n=j(),i=n.getState();try{Object.keys(e).length>0&&n.setMonthlyMergedCounts(Mo(i.monthlyMergedCounts||{},e))}catch(a){m(ge,`Failed to store monthly merged counts: ${v(a)}`)}try{Object.keys(t).length>0&&n.setMonthlyClosedCounts(Mo(i.monthlyClosedCounts||{},t))}catch(a){m(ge,`Failed to store monthly closed counts: ${v(a)}`)}try{let a={...s};for(let[c,u]of Object.entries(o))a[c]=(a[c]||0)+u;for(let c of r)if(c.createdAt){let u=c.createdAt.slice(0,7);a[u]=(a[u]||0)+1}Object.keys(a).length>0&&n.setMonthlyOpenedCounts(Mo(i.monthlyOpenedCounts||{},a))}catch(a){m(ge,`Failed to store monthly opened counts: ${v(a)}`)}}async function jo(r){let e=j(),t=new kt(r),s=new Ot(r),o=me(r),n=e.getState().config,i=or(e.getState()),a=e.getMergedPRWatermark(),c=e.getClosedPRWatermark(),[{prs:u,failures:l},d,g,E,R,_,C,b]=await Promise.all([t.fetchUserOpenPRs(),t.fetchRecentlyClosedPRs().catch(A=>{if(be(A))throw A;return m(ge,`Failed to fetch recently closed PRs: ${v(A)}`),[]}),t.fetchRecentlyMergedPRs().catch(A=>{if(be(A))throw A;return m(ge,`Failed to fetch recently merged PRs: ${v(A)}`),[]}),t.fetchUserMergedPRCounts(i).catch(A=>{if(be(A))throw A;return m(ge,`Failed to fetch merged PR counts: ${v(A)}`),Pt()}),t.fetchUserClosedPRCounts(i).catch(A=>{if(be(A))throw A;return m(ge,`Failed to fetch closed PR counts: ${v(A)}`),Pt()}),s.fetchCommentedIssues().catch(A=>{if(be(A))throw A;let ee=v(A);return ee.includes("No GitHub username configured")?m(ge,`Issue conversation tracking requires setup: ${ee}`):m(ge,`Issue conversation fetch failed: ${ee}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${ee}`}]}}),Pa(o,n,a).catch(A=>{if(be(A))throw A;return m(ge,`Failed to fetch merged PRs for storage: ${v(A)}`),[]}),ka(o,n,c).catch(A=>{if(be(A))throw A;return m(ge,`Failed to fetch closed PRs for storage: ${v(A)}`),[]})]),G=_.issues;_.failures.length>0&&m(ge,`${_.failures.length} issue conversation check(s) failed`),l.length>0&&m(ge,`${l.length} PR fetch(es) failed`);try{e.addMergedPRs(C)}catch(A){m(ge,`Failed to store merged PRs: ${v(A)}`)}try{e.addClosedPRs(b)}catch(A){m(ge,`Failed to store closed PRs: ${v(A)}`)}let x=No(e.getMergedPRs()),H=Ho(e.getClosedPRs()),{monthlyCounts:M,monthlyOpenedCounts:k}=E,{monthlyCounts:O,monthlyOpenedCounts:q}=R;Lo(u,M,O,k,q);let U=t.generateDigest(u,d,g),ce=new Set(e.getState().config.shelvedPRUrls||[]),_e=u.filter(A=>ce.has(A.url)||A.stalenessTier==="dormant"&&A.status!=="needs_addressing");U.shelvedPRs=_e.map(nt),U.autoUnshelvedPRs=[],U.summary.totalActivePRs=u.length-_e.length,e.setLastDigest(U);try{e.save()}catch(A){m(ge,`Failed to save dashboard digest to state: ${v(A)}`)}return m(ge,`Refreshed: ${u.length} PRs fetched`),{digest:U,commentedIssues:G,allMergedPRs:x,allClosedPRs:H}}function No(r){let e=[],t=0;for(let s of r){let o=de(s.url);if(!o){t++;continue}e.push({url:s.url,repo:`${o.owner}/${o.repo}`,number:o.number,title:s.title,mergedAt:s.mergedAt})}return t>0&&m(ge,`Skipped ${t} stored merged PR(s) with unparseable URLs`),e}function Ho(r){let e=[],t=0;for(let s of r){let o=de(s.url);if(!o){t++;continue}e.push({url:s.url,repo:`${o.owner}/${o.repo}`,number:o.number,title:s.title,closedAt:s.closedAt})}return t>0&&m(ge,`Skipped ${t} stored closed PR(s) with unparseable URLs`),e}function Xa(r,e){let t={};for(let o of r.openPRs||[])t[o.repo]||(t[o.repo]={active:0,merged:0,closed:0}),t[o.repo].active++;let s=e.config.minStars??50;for(let[o,n]of Object.entries(e.repoScores||{}))Qe(n.stargazersCount,s)||(t[o]||(t[o]={active:0,merged:0,closed:0}),t[o].merged=n.mergedPRCount,t[o].closed=n.closedWithoutMergeCount);return t}function Za(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 ec(r){return{monthlyMerged:r.monthlyMergedCounts||{},monthlyClosed:r.monthlyClosedCounts||{},monthlyOpened:r.monthlyOpenedCounts||{}}}var ge,qo=P(()=>{"use strict";se();ae();le();Xs();Ee();Ye();Rs();ge="dashboard-data"});var Bo={};ie(Bo,{CRITICAL_STATUSES:()=>Vt,applyStatusOverrides:()=>Gt,assessCapacity:()=>hs,buildStarFilter:()=>or,collectActionableIssues:()=>fs,computeActionMenu:()=>bs,computeRepoSignals:()=>ms,executeDailyCheck:()=>nr,formatBriefSummary:()=>ys,formatSummary:()=>_s,groupPRsByRepo:()=>gs,printDigest:()=>$o,runDaily:()=>mp,runDailyForDisplay:()=>hp,toShelvedPRRef:()=>nt});function or(r){let e=r.config.minStars??50,t=new Map;for(let[s,o]of Object.entries(r.repoScores))o.stargazersCount!==void 0&&t.set(s,o.stargazersCount);if(t.size!==0)return{minStars:e,knownStarCounts:t}}async function up(r,e){let{prs:t,failures:s}=await r.fetchUserOpenPRs();s.length>0&&m(Z,`${s.length} PR fetch(es) failed`);let o=j().getState(),n=or(o),i=new Ot(e),[a,c,u,l,d]=await Promise.all([r.fetchUserMergedPRCounts(n).catch(x=>{if(be(x))throw x;return m(Z,`Failed to fetch merged PR counts: ${v(x)}`),Pt()}),r.fetchUserClosedPRCounts(n).catch(x=>{if(be(x))throw x;return m(Z,`Failed to fetch closed PR counts: ${v(x)}`),Pt()}),r.fetchRecentlyClosedPRs().catch(x=>{if(be(x))throw x;return m(Z,`Failed to fetch recently closed PRs: ${v(x)}`),[]}),r.fetchRecentlyMergedPRs().catch(x=>{if(be(x))throw x;return m(Z,`Failed to fetch recently merged PRs: ${v(x)}`),[]}),i.fetchCommentedIssues().catch(x=>{if(be(x))throw x;let H=v(x);return H.includes("No GitHub username configured")?m(Z,`Issue conversation tracking requires setup: ${H}`):m(Z,`Issue conversation fetch failed: ${H}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${H}`}]}})]),g=d.issues;d.failures.length>0&&m(Z,`${d.failures.length} issue conversation check(s) failed`);let{repos:E,monthlyCounts:R,monthlyOpenedCounts:_}=a,{repos:C,monthlyCounts:b,monthlyOpenedCounts:G}=c;return{prs:t,failures:s,mergedCounts:E,closedCounts:C,monthlyCounts:R,monthlyClosedCounts:b,openedFromMerged:_,openedFromClosed:G,recentlyClosedPRs:u,recentlyMergedPRs:l,commentedIssues:g}}async function lp(r,e,t,s){let o=j(),n=Object.values(o.getState().repoScores).filter(_=>_.mergedPRCount>0);if(t.size===0&&n.length>0)m(Z,`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 _ of Object.values(o.getState().repoScores))t.has(_.repo)||o.updateRepoScore(_.repo,{mergedPRCount:0});let i=0;for(let[_,{count:C,lastMergedAt:b}]of t)try{o.updateRepoScore(_,{mergedPRCount:C,lastMergedAt:b||void 0})}catch(G){i++,m(Z,`Failed to update merged count for ${_}: ${v(G)}`)}i===t.size&&t.size>0&&m(Z,`[ALL_MERGED_COUNT_UPDATES_FAILED] All ${t.size} merged count update(s) failed.`);let a=Object.values(o.getState().repoScores).filter(_=>(_.closedWithoutMergeCount||0)>0);s.size===0&&a.length>0&&m(Z,`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[_,C]of s)try{o.updateRepoScore(_,{closedWithoutMergeCount:C})}catch(b){c++,m(Z,`Failed to update closed count for ${_}: ${v(b)}`)}c===s.size&&s.size>0&&m(Z,`[ALL_CLOSED_COUNT_UPDATES_FAILED] All ${s.size} closed count update(s) failed.`);let u=ms(e),l=0;for(let[_,C]of u)try{o.updateRepoScore(_,{signals:C})}catch(b){l++,m(Z,`Failed to update signals for ${_}: ${v(b)}`)}l===u.size&&u.size>0&&m(Z,`[ALL_SIGNAL_UPDATES_FAILED] All ${u.size} signal update(s) failed. This may indicate corrupted state.`);let d=Object.keys(o.getState().repoScores),g;try{g=await r.fetchRepoStarCounts(d)}catch(_){m(Z,`Failed to fetch repo star counts: ${v(_)}`),m(Z,"Repos without cached star data will be excluded from stats until star counts are fetched on the next successful run."),g=new Map}let E=0;for(let[_,C]of g)try{o.updateRepoScore(_,{stargazersCount:C})}catch(b){E++,m(Z,`Failed to update star count for ${_}: ${v(b)}`)}E===g.size&&g.size>0&&m(Z,`[ALL_STAR_COUNT_UPDATES_FAILED] All ${g.size} star count update(s) failed.`);let R=0;for(let[_]of t)try{o.addTrustedProject(_)}catch(C){R++,m(Z,`Failed to sync trusted project ${_}: ${v(C)}`)}R===t.size&&t.size>0&&m(Z,`[ALL_TRUST_SYNCS_FAILED] All ${t.size} trusted project sync(s) failed. This may indicate corrupted state.`)}function pp(r,e,t,s){let o=j(),n=Gt(e,o.getState()),i=[],a=[],c=[];for(let l of n)o.isPRShelved(l.url)?Vt.has(l.status)?(o.unshelvePR(l.url),a.push(nt(l)),c.push(l)):i.push(nt(l)):l.stalenessTier==="dormant"&&!Vt.has(l.status)?i.push(nt(l)):c.push(l);let u=r.generateDigest(n,t,s);return u.shelvedPRs=i,u.autoUnshelvedPRs=a,u.summary.totalActivePRs=c.length,o.setLastDigest(u),o.save(),{activePRs:c,shelvedPRs:i,autoUnshelvedPRs:a,digest:u}}function dp(r,e,t,s,o,n){let i=j(),a=hs(e,i.getState().config.maxActivePRs,t.length),c=!1,u=s.filter(C=>{let b=i.getIssueDismissedAt(C.url);if(!b)return!0;if(C.status==="new_response"){let G=new Date(C.lastResponseAt).getTime(),x=new Date(b).getTime();if(isNaN(G)||isNaN(x))return m(Z,`Invalid timestamp in dismiss check for ${C.url}, including issue`),!0;if(G>x)return m(Z,`Auto-undismissing issue ${C.url}: new response at ${C.lastResponseAt} after dismiss at ${b}`),i.undismissIssue(C.url),c=!0,!0}return!1}),l=u.filter(C=>C.status==="new_response"),d=_s(r,a,l);if(c)try{i.save()}catch(C){m(Z,`Failed to persist auto-undismissed state: ${v(C)}`)}let g=fs(e,n);r.summary.totalNeedingAttention=g.length;let E=ys(r,g.length,l.length),R=bs(g,a,u),_=gs(e);return{digest:r,capacity:a,summary:d,briefSummary:E,actionableIssues:g,actionMenu:R,commentedIssues:u,repoGroups:_,failures:o}}function gp(r){return{digest:za(r.digest),capacity:r.capacity,summary:r.summary,briefSummary:r.briefSummary,actionableIssues:Ja(r.actionableIssues),actionMenu:r.actionMenu,commentedIssues:r.commentedIssues,repoGroups:Ka(r.repoGroups),failures:r.failures}}async function nr(r){let e=await tc(r);return gp(e)}async function tc(r){let e=new kt(r),{prs:t,failures:s,mergedCounts:o,closedCounts:n,monthlyCounts:i,monthlyClosedCounts:a,openedFromMerged:c,openedFromClosed:u,recentlyClosedPRs:l,recentlyMergedPRs:d,commentedIssues:g}=await up(e,r);await lp(e,t,o,n),Lo(t,i,a,c,u);let E=j().getState().lastDigestAt,{activePRs:R,shelvedPRs:_,digest:C}=pp(e,t,l,d);return dp(C,R,_,g,s,E)}async function mp(){let r=ye();return nr(r)}async function hp(){let r=ye();return tc(r)}var Z,Rs=P(()=>{"use strict";se();ae();le();Xs();qo();Uo();se();Z="daily"});var sc={};ie(sc,{runStatus:()=>fp});async function fp(r){let e=j(),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 rc=P(()=>{"use strict";se()});var oc={};ie(oc,{runSearch:()=>bp});async function bp(r){let e=ye(),t=new At(e),s=await t.searchIssues({maxResults:r.maxResults}),o=j(),{config:n}=o.getState(),i=n.excludeRepos||[],a=n.aiPolicyBlocklist??bt.aiPolicyBlocklist??[],c={candidates:s.map(u=>{let l=o.getRepoScore(u.issue.repo);return{issue:{repo:u.issue.repo,number:u.issue.number,title:u.issue.title,url:u.issue.url,labels:u.issue.labels},recommendation:u.recommendation,reasonsToApprove:u.reasonsToApprove,reasonsToSkip:u.reasonsToSkip,searchPriority:u.searchPriority,viabilityScore:u.viabilityScore,repoScore:l?{score:l.score,mergedPRCount:l.mergedPRCount,closedWithoutMergeCount:l.closedWithoutMergeCount,isResponsive:l.signals?.isResponsive??!1,lastMergedAt:l.lastMergedAt}:void 0}}),excludedRepos:i,aiPolicyBlocklist:a};return t.rateLimitWarning&&(c.rateLimitWarning=t.rateLimitWarning),c}var nc=P(()=>{"use strict";se()});function we(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 X(`Invalid ${t} URL: ${r}. Expected format: ${s[t]}`)}function he(r){if(r.length>ic)throw new X(`URL exceeds maximum length of ${ic} characters`);return r}function Vo(r){if(r.length>ac)throw new X(`Message exceeds maximum length of ${ac} characters`);return r}function Wt(r){if(!r||r.trim().length===0)throw new X("GitHub username cannot be empty.");let e=r.trim();if(e.length>cc)throw new X(`GitHub username must be at most ${cc} characters (got ${e.length}).`);if(!yp.test(e))throw new X("GitHub username can only contain alphanumeric characters and hyphens.");if(e.startsWith("-"))throw new X("GitHub username cannot start with a hyphen.");if(e.endsWith("-"))throw new X("GitHub username cannot end with a hyphen.");if(_p.test(e))throw new X("GitHub username cannot contain consecutive hyphens.");return e}var it,at,uc,ic,ac,cc,yp,_p,je=P(()=>{"use strict";ae();it=/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\/\d+$/,at=/^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\/\d+$/,uc=/^https:\/\/github\.com\/[^/]+\/[^/]+\/(issues|pull)\/\d+$/,ic=2048,ac=1e3;cc=39,yp=/^[a-zA-Z0-9-]+$/,_p=/--/});var lc={};ie(lc,{runVet:()=>Rp});async function Rp(r){he(r.issueUrl),we(r.issueUrl,at,"issue");let e=ye(),s=await new At(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 pc=P(()=>{"use strict";se();je()});var Wo={};ie(Wo,{runTrack:()=>wp,runUntrack:()=>Ep});async function wp(r){he(r.prUrl),we(r.prUrl,it,"PR");let e=ye(),t=me(e),s=de(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 Ep(r){return he(r.prUrl),we(r.prUrl,it,"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 zo=P(()=>{"use strict";se();je();Ee()});var dc={};ie(dc,{runRead:()=>Tp});async function Tp(r){if(!r.all&&!r.prUrl)throw new Error("PR URL or --all flag required");return r.prUrl&&he(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 gc=P(()=>{"use strict";je()});var ir={};ie(ir,{runClaim:()=>Cp,runComments:()=>vp,runPost:()=>Sp});async function vp(r){he(r.prUrl),we(r.prUrl,it,"PR");let e=ye(),t=j(),s=me(e),o=de(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}),[u,l,d]=await Promise.all([Le(b=>s.pulls.listReviewComments({owner:n,repo:i,pull_number:a,per_page:100,page:b})),Le(b=>s.issues.listComments({owner:n,repo:i,issue_number:a,per_page:100,page:b})),Le(b=>s.pulls.listReviews({owner:n,repo:i,pull_number:a,per_page:100,page:b}))]),g=t.getState().config.githubUsername,E=b=>!(!b.user||b.user.login===g||b.user.type==="Bot"&&!r.showBots),R=u.filter(E).sort((b,G)=>new Date(G.created_at).getTime()-new Date(b.created_at).getTime()),_=l.filter(E).sort((b,G)=>new Date(G.created_at).getTime()-new Date(b.created_at).getTime()),C=d.filter(b=>E(b)&&b.body&&b.body.trim()).sort((b,G)=>new Date(G.submitted_at||0).getTime()-new Date(b.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(b=>({user:b.user?.login,state:b.state,body:b.body??null,submittedAt:b.submitted_at??null})),reviewComments:R.map(b=>({user:b.user?.login,body:b.body,path:b.path,createdAt:b.created_at})),issueComments:_.map(b=>({user:b.user?.login,body:b.body,createdAt:b.created_at})),summary:{reviewCount:C.length,inlineCommentCount:R.length,discussionCommentCount:_.length}}}async function Sp(r){if(he(r.url),we(r.url,uc,"issue or PR"),!r.message.trim())throw new Error("No message provided");Vo(r.message);let e=ye(),t=de(r.url);if(!t)throw new Error("Invalid GitHub URL format");let{owner:s,repo:o,number:n}=t,i=me(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 Cp(r){he(r.issueUrl),we(r.issueUrl,at,"issue");let e=ye(),t=r.message||"Hi! I'd like to work on this issue. Could you assign it to me?";Vo(t);let s=de(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=me(e),{data:c}=await a.issues.createComment({owner:o,repo:n,issue_number:i,body:t});try{let u=j();u.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}),u.save()}catch(u){console.error(`Warning: Comment posted on ${r.issueUrl} but failed to save to local state: ${u instanceof Error?u.message:u}`)}return{commentUrl:c.html_url,issueUrl:r.issueUrl}}var ar=P(()=>{"use strict";se();us();je()});var mc={};ie(mc,{runConfig:()=>Pp});async function Pp(r){let e=j(),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:Wt(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 hc=P(()=>{"use strict";se();je()});var fc={};ie(fc,{runInit:()=>kp});async function kp(r){Wt(r.username);let e=j();return e.updateConfig({githubUsername:r.username}),e.save(),{username:r.username,message:"Username saved. Run `daily` to fetch your open PRs from GitHub."}}var bc=P(()=>{"use strict";se();je()});var Ko={};ie(Ko,{runCheckSetup:()=>Op,runSetup:()=>Ap});function Jo(r,e){let t=Number(r);if(!Number.isFinite(t)||t<1||!Number.isInteger(t))throw new X(`Invalid value for ${e}: "${r}". Must be a positive integer.`);return t}async function Ap(r){let e=j(),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":Wt(c),e.updateConfig({githubUsername:c}),s[i]=c;break;case"maxActivePRs":{let u=Jo(c,"maxActivePRs");e.updateConfig({maxActivePRs:u}),s[i]=String(u);break}case"dormantDays":{let u=Jo(c,"dormantDays");e.updateConfig({dormantThresholdDays:u}),s[i]=String(u);break}case"approachingDays":{let u=Jo(c,"approachingDays");e.updateConfig({approachingDormantDays:u}),s[i]=String(u);break}case"languages":e.updateConfig({languages:c.split(",").map(u=>u.trim())}),s[i]=c;break;case"labels":e.updateConfig({labels:c.split(",").map(u=>u.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 u=Number(c);if(!Number.isFinite(u)||!Number.isInteger(u)||u<0)throw new X(`Invalid value for minStars: "${c}". Must be a non-negative integer.`);e.updateConfig({minStars:u}),s[i]=String(u);break}case"includeDocIssues":e.updateConfig({includeDocIssues:c==="true"}),s[i]=c==="true"?"true":"false";break;case"aiPolicyBlocklist":{let u=c.split(",").map(g=>g.trim()).filter(Boolean),l=[],d=[];for(let g of u){let E=g.replace(/\s+/g,"");/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/.test(E)?l.push(E):d.push(g)}if(d.length>0&&(o.push(`Warning: Skipping invalid entries (expected "owner/repo" format): ${d.join(", ")}`),s.aiPolicyBlocklist_invalidEntries=d.join(", ")),l.length===0&&u.length>0){o.push("Warning: All entries were invalid. Blocklist not updated."),s[i]="(all entries invalid)";break}e.updateConfig({aiPolicyBlocklist:l}),s[i]=l.length>0?l.join(", "):"(empty)";break}case"projectCategories":{let u=c.split(",").map(E=>E.trim()).filter(Boolean),l=[],d=[];for(let E of u)qr.includes(E)?l.push(E):d.push(E);d.length>0&&o.push(`Unknown project categories: ${d.join(", ")}. Valid: ${qr.join(", ")}`);let g=[...new Set(l)];e.updateConfig({projectCategories:g}),s[i]=g.length>0?g.join(", "):"(empty)";break}case"preferredOrgs":{let u=c.split(",").map(g=>g.trim()).filter(Boolean),l=[];for(let g of u)g.includes("/")?o.push(`"${g}" looks like a repo path. Use org name only (e.g., "vercel" not "vercel/next.js").`):/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$/.test(g)?l.push(g.toLowerCase()):o.push(`"${g}" is not a valid GitHub organization name. Skipping.`);let d=[...new Set(l)];e.updateConfig({preferredOrgs:d}),s[i]=d.length>0?d.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,projectCategories:t.projectCategories??[],preferredOrgs:t.preferredOrgs??[]}}:{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??bt.aiPolicyBlocklist??null,default:["matplotlib/matplotlib"],type:"list"},{setting:"projectCategories",prompt:"What types of projects interest you? (nonprofit, devtools, infrastructure, web-frameworks, data-ml, education)",current:t.projectCategories??[],default:[],type:"list"},{setting:"preferredOrgs",prompt:"Any GitHub organizations to prioritize? (org names, comma-separated)",current:t.preferredOrgs??[],default:[],type:"list"}]}}async function Op(){let r=j();return{setupComplete:r.isSetupComplete(),username:r.getState().config.githubUsername}}var Qo=P(()=>{"use strict";se();ae();je();Ye()});function ws(){return _c.join(xe(),"dashboard-server.pid")}function ur(r){zt.writeFileSync(ws(),JSON.stringify(r),{mode:384})}function Jt(){try{let r=zt.readFileSync(ws(),"utf-8"),e=JSON.parse(r);return typeof e!="object"||e===null||typeof e.pid!="number"||!Number.isInteger(e.pid)||e.pid<=0||typeof e.port!="number"||typeof e.startedAt!="string"?(m(cr,"PID file has invalid structure, ignoring"),null):e}catch(r){return r.code!=="ENOENT"&&m(cr,`Failed to read PID file: ${r.message}`),null}}function ft(){try{zt.unlinkSync(ws())}catch(r){r.code!=="ENOENT"&&m(cr,`Failed to remove PID file: ${r.message}`)}}function Es(r){return new Promise(e=>{let t=yc.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 lr(){let r=Jt();if(!r)return null;try{process.kill(r.pid,0)}catch(e){let t=e.code;return t!=="ESRCH"&&t!=="EPERM"&&m(cr,`Unexpected error checking PID ${r.pid}: ${e.message}`),ft(),null}return await Es(r.port)?{port:r.port,url:`http://oss.localhost:${r.port}`}:(ft(),null)}var yc,zt,_c,cr,pr=P(()=>{"use strict";yc=z(require("http"),1),zt=z(require("fs"),1),_c=z(require("path"),1);se();le();cr="dashboard-server"});function Ip(r){return new Promise(e=>setTimeout(e,r))}async function wc(r){if(!dr())return null;let t=await lr();if(t){let c=Jt(),u=We();if(c)if(c.version&&u!=="0.0.0"&&c.version!==u){console.error(`[STARTUP] Dashboard server version mismatch (running: ${c.version}, current: ${u}). Restarting...`);let l=!1;try{process.kill(c.pid,"SIGTERM"),l=!0}catch(d){d.code==="ESRCH"?l=!0:console.error(`[STARTUP] Could not kill outdated dashboard (PID ${c.pid}): ${d.message}`)}if(l)ft();else return{url:t.url,port:t.port,alreadyRunning:!0}}else return{url:t.url,port:t.port,alreadyRunning:!0}}let s=r?.port??Gp,o=process.argv[1],n=(0,Rc.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<Dp;c++){if(await Ip($p),i||a)return null;let u=Jt();if(u&&await Es(u.port))return{url:`http://oss.localhost:${u.port}`,port:u.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 Rc,Gp,$p,Dp,Ec=P(()=>{"use strict";Rc=require("child_process");pr();Yo();se();Gp=3e3,$p=200,Dp=25});var Pc={};ie(Pc,{countIssueListItems:()=>Sc,detectIssueList:()=>Cc,openInBrowser:()=>gr,parseIssueListPathFromConfig:()=>vc,runStartup:()=>Fp});function vc(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 Sc(r){let e=0,t=0,s=r.split(`
94
- `);for(let o of s)/^\s*- (?:~~)?\[/.test(o)&&(/~~|\*\*Done\*\*/.test(o)?t++:e++);return{availableCount:e,completedCount:t}}function Cc(){let r="",e="auto-detected",t=".claude/oss-autopilot/config.md";if(Dt.existsSync(t))try{let s=Dt.readFileSync(t,"utf-8"),o=vc(s);o&&Dt.existsSync(o)&&(r=o,e="configured")}catch(s){console.error("[STARTUP] Failed to read config:",v(s))}if(!r){let s=["open-source/potential-issue-list.md","oss/issue-list.md","issues.md"];for(let o of s)if(Dt.existsSync(o)){r=o,e="auto-detected";break}}if(r)try{let s=Dt.readFileSync(r,"utf-8"),{availableCount:o,completedCount:n}=Sc(s);return{path:r,source:e,availableCount:o,completedCount:n}}catch(s){return console.error(`[STARTUP] Failed to read issue list at ${r}:`,v(s)),{path:r,source:e,availableCount:0,completedCount:0}}}function gr(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,Tc.execFile)(e,t,s=>{s&&console.error(`[STARTUP] Failed to open dashboard in browser: ${s.message}`)})}async function Fp(){let r=We(),e=j(),t=!1;if(!e.isSetupComplete()){let c=await $s();if(c)try{e.initializeWithDefaults(c),t=!0}catch(u){return console.error(`[STARTUP] Auto-detected username "${c}" but failed to save config:`,v(u)),{version:r,setupComplete:!1}}else return{version:r,setupComplete:!1}}let s=et();if(!s)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 o=await nr(s),n,i=!1;if(o.digest.summary.totalActivePRs>0)try{let c=await wc();c?(n=c.url,gr(c.url),i=!0):console.error("[STARTUP] Dashboard SPA assets not found. Build with: cd packages/dashboard && pnpm run build")}catch(c){console.error("[STARTUP] SPA dashboard launch failed:",v(c))}i&&(o.briefSummary+=" | Dashboard opened in browser");let a=Cc();return{version:r,setupComplete:!0,autoDetected:t,daily:o,dashboardUrl:n,issueList:a}}var Dt,Tc,Xo=P(()=>{"use strict";Dt=z(require("fs"),1),Tc=require("child_process");se();ae();Rs();Ec()});var Kt,kc=P(()=>{"use strict";Kt=class{maxRequests;windowMs;timestamps=[];constructor(e){this.maxRequests=e.maxRequests,this.windowMs=e.windowMs}check(){let e=Date.now(),t=e-this.windowMs;if(this.timestamps=this.timestamps.filter(s=>s>t),this.timestamps.length>=this.maxRequests){let o=this.timestamps[0]+this.windowMs-e;return{allowed:!1,retryAfterSeconds:Math.ceil(o/1e3)}}return this.timestamps.push(e),{allowed:!0}}}});var It={};ie(It,{VALID_TARGETS:()=>Zo,runMove:()=>xp});async function xp(r){he(r.prUrl),we(r.prUrl,it,"PR");let e=r.target;if(!Zo.includes(e))throw new Error(`Invalid target "${r.target}". Must be one of: ${Zo.join(", ")}`);let t=j();switch(e){case"attention":case"waiting":{let s=e==="attention"?"needs_addressing":"waiting_on_maintainer",o=e==="attention"?"Need Attention":"Waiting on Maintainer",n=new Date().toISOString();return t.setStatusOverride(r.prUrl,s,n),t.unshelvePR(r.prUrl),t.save(),{url:r.prUrl,target:e,description:`Moved to ${o}`}}case"shelved":return t.shelvePR(r.prUrl),t.clearStatusOverride(r.prUrl),t.save(),{url:r.prUrl,target:e,description:"Shelved \u2014 excluded from capacity and actionable items"};case"auto":{let s=t.clearStatusOverride(r.prUrl),o=t.unshelvePR(r.prUrl);return(s||o)&&t.save(),{url:r.prUrl,target:e,description:"Reset to computed status"}}default:{let s=e;throw new Error(`Unhandled move target: ${s}`)}}}var Zo,Ft=P(()=>{"use strict";se();je();Zo=["attention","waiting","shelved","auto"]});var Dc={};ie(Dc,{findRunningDashboardServer:()=>lr,getDashboardPidPath:()=>ws,isDashboardServerRunning:()=>Es,readDashboardServerInfo:()=>Jt,removeDashboardServerInfo:()=>ft,startDashboardServer:()=>Np,writeDashboardServerInfo:()=>ur});function Ts(r,e,t,s,o){let n=Xa(r,e),i=Za(n),{monthlyMerged:a,monthlyOpened:c,monthlyClosed:u}=ec(e),l=s??No(j().getMergedPRs()),d=o??Ho(j().getClosedPRs()),g=e.config.minStars??50,E=e.repoScores||{},R=H=>!Qe(E[H.repo]?.stargazersCount,g),_=l.filter(R),C=d.filter(R),b=Ya(r,e,_.length,C.length),G=e.config.dismissedIssues||{},x=t.filter(H=>H.status==="new_response"&&!(H.url in G));return{stats:b,prsByRepo:n,topRepos:i.map(([H,M])=>({repo:H,...M})),monthlyMerged:a,monthlyOpened:c,monthlyClosed:u,activePRs:Gt(r.openPRs||[],e),shelvedPRUrls:e.config.shelvedPRUrls||[],recentlyMergedPRs:r.recentlyMergedPRs||[],recentlyClosedPRs:r.recentlyClosedPRs||[],autoUnshelvedPRs:r.autoUnshelvedPRs||[],commentedIssues:t,issueResponses:x,allMergedPRs:_,allClosedPRs:C}}function jp(r,e=Up){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 $c(r){r.setHeader("X-Content-Type-Options","nosniff"),r.setHeader("X-Frame-Options","DENY"),r.setHeader("Content-Security-Policy","default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'"),r.setHeader("Referrer-Policy","strict-origin-when-cross-origin")}function Oc(r,e){let t=r.headers.origin;return t?[`http://localhost:${e}`,`http://127.0.0.1:${e}`,`http://oss.localhost:${e}`].includes(t):!0}function mr(r,e,t){$c(r),r.setHeader("Cache-Control","no-store");let s=JSON.stringify(t);r.writeHead(e,{"Content-Type":"application/json","Content-Length":Buffer.byteLength(s)}),r.end(s)}function ne(r,e,t){mr(r,e,{error:t})}async function Np(r){let{port:e,assetsDir:t,token:s,open:o}=r,n=j(),i=ze.resolve(t),a=n.getState().lastDigest,c=[];if(!a)throw new Error("No dashboard data available. Run the daily check first: GITHUB_TOKEN=$(gh auth token) npm start -- daily");let u;try{u=Ts(a,n.getState(),c)}catch(M){throw new Error(`Failed to build dashboard data: ${v(M)}. State data may be corrupted \u2014 try running: daily --json`,{cause:M})}let l=new Kt({maxRequests:30,windowMs:6e4}),d=new Kt({maxRequests:10,windowMs:6e4}),g=new Kt({maxRequests:6,windowMs:6e4}),E=Gc.createServer(async(M,k)=>{let O=M.method||"GET",q=M.url||"/";try{if(q==="/api/data"&&O==="GET"){let U=l.check();if(!U.allowed){k.setHeader("Retry-After",String(U.retryAfterSeconds)),ne(k,429,"Too many requests");return}if(n.reloadIfChanged())try{u=Ts(a,n.getState(),c)}catch(ce){m(ve,`Failed to rebuild dashboard data after state reload: ${v(ce)}`)}mr(k,200,u);return}if(q==="/api/action"&&O==="POST"){if(!Oc(M,G)){ne(k,403,"Invalid origin");return}let U=d.check();if(!U.allowed){k.setHeader("Retry-After",String(U.retryAfterSeconds)),ne(k,429,"Too many requests");return}await R(M,k);return}if(q==="/api/refresh"&&O==="POST"){if(!Oc(M,G)){ne(k,403,"Invalid origin");return}let U=g.check();if(!U.allowed){k.setHeader("Retry-After",String(U.retryAfterSeconds)),ne(k,429,"Too many requests");return}await _(M,k);return}if(O==="GET"){C(q,k);return}ne(k,405,"Method not allowed")}catch(U){m(ve,`Unhandled request error: ${O} ${q} ${v(U)}`),k.headersSent||ne(k,500,"Internal server error")}});E.requestTimeout=Mp;async function R(M,k){n.reloadIfChanged();let O;try{let U=await jp(M);O=JSON.parse(U)}catch(U){let ce=U instanceof Error&&U.message==="Body too large";ne(k,ce?413:400,ce?"Request body too large":"Invalid JSON body");return}if(!O.action||!Ac.has(O.action)){ne(k,400,`Invalid action. Must be one of: ${[...Ac].join(", ")}`);return}if(!O.url||typeof O.url!="string"){ne(k,400,'Missing or invalid "url" field');return}let q=O.action==="dismiss_issue_response";try{he(O.url),we(O.url,q?at:it,q?"issue":"PR")}catch(U){U instanceof X?ne(k,400,U.message):(m(ve,`Unexpected error during URL validation: ${v(U)}`),ne(k,400,"Invalid URL"));return}try{if(O.action==="move"){let{VALID_TARGETS:U,runMove:ce}=await Promise.resolve().then(()=>(Ft(),It));if(!O.target||!U.includes(O.target)){ne(k,400,`move requires a valid "target" field (${U.join(", ")})`);return}await ce({prUrl:O.url,target:O.target})}else n.dismissIssue(O.url,new Date().toISOString()),n.save()}catch(U){m(ve,`Action failed: ${O.action} ${O.url} ${v(U)}`),ne(k,500,"Action failed");return}u=Ts(a,n.getState(),c),mr(k,200,u)}async function _(M,k){let O=s||et();if(!O){ne(k,401,"No GitHub token available. Cannot refresh data.");return}try{n.reloadIfChanged(),m(ve,"Refreshing dashboard data from GitHub...");let q=await jo(O);a=q.digest,c=q.commentedIssues,u=Ts(a,n.getState(),c,q.allMergedPRs,q.allClosedPRs),mr(k,200,u)}catch(q){m(ve,`Dashboard refresh failed: ${v(q)}`),ne(k,500,"Refresh failed")}}function C(M,k){let O;try{O=decodeURIComponent(M.split("?")[0])}catch{m(ve,`Malformed URL received: ${M}`),ne(k,400,"Malformed URL");return}if(O.includes("..")){ne(k,403,"Forbidden");return}let q=O==="/"?"index.html":O.replace(/^\/+/,""),U=ze.join(i,q);if(!U.startsWith(i+ze.sep)&&U!==i){ne(k,403,"Forbidden");return}try{hr.statSync(U).isDirectory()&&(U=ze.join(i,"index.html"))}catch(A){if(A.code==="ENOENT")U=ze.join(i,"index.html");else{m(ve,`Failed to stat file: ${U}`),ne(k,500,"Internal server error");return}}let ce=ze.extname(U).toLowerCase(),_e=Lp[ce]||"application/octet-stream";try{let A=hr.readFileSync(U);$c(k),k.writeHead(200,{"Content-Type":_e,"Content-Length":A.length,"Cache-Control":"public, max-age=3600"}),k.end(A)}catch(A){A.code==="ENOENT"?ne(k,404,"Not found"):(m(ve,`Failed to serve static file: ${U}`),ne(k,500,"Failed to read file"))}}let b=10,G=e;for(let M=0;M<b;M++)try{await new Promise((k,O)=>{E.once("error",O),E.listen(G,"127.0.0.1",()=>k())});break}catch(k){let O=k;if(O.code==="EADDRINUSE"&&M<b-1){m(ve,`Port ${G} is in use, trying ${G+1}...`),G++;continue}throw new Error(`Failed to start server: ${O.message}`,{cause:k})}ur({pid:process.pid,port:G,startedAt:new Date().toISOString(),version:We()});let x=`http://oss.localhost:${G}`;m(ve,`Dashboard server running at ${x} (also: http://localhost:${G})`),s&&jo(s).then(M=>{n.reloadIfChanged(),a=M.digest,c=M.commentedIssues,u=Ts(a,n.getState(),c,M.allMergedPRs,M.allClosedPRs),m(ve,"Background data refresh complete")}).catch(M=>{m(ve,`Background data refresh failed (serving cached data): ${v(M)}`)}),o&&gr(x);let H=()=>{m(ve,"Shutting down dashboard server..."),ft(),E.close(()=>{process.exit(0)}),setTimeout(()=>process.exit(0),3e3).unref()};process.on("SIGINT",H),process.on("SIGTERM",H)}var Gc,hr,ze,Ac,ve,Up,Mp,Lp,Ic=P(()=>{"use strict";Gc=z(require("http"),1),hr=z(require("fs"),1),ze=z(require("path"),1);se();ae();le();je();qo();Xo();pr();kc();Ye();pr();Ac=new Set(["move","dismiss_issue_response"]),ve="dashboard-server",Up=10240,Mp=3e4,Lp={".html":"text/html",".js":"application/javascript",".css":"text/css",".svg":"image/svg+xml",".json":"application/json",".png":"image/png",".ico":"image/x-icon"}});var Fc={};ie(Fc,{resolveAssetsDir:()=>dr,serveDashboard:()=>Hp});function dr(){let r=Ne.resolve(__dirname,"../../dashboard/dist");if(fr.existsSync(Ne.join(r,"index.html")))return r;let e=Ne.resolve(Ne.dirname(process.argv[1]),"../../dashboard/dist");if(fr.existsSync(Ne.join(e,"index.html")))return e;try{let t=require.resolve("@oss-autopilot/dashboard/package.json"),s=Ne.join(Ne.dirname(t),"dist");if(fr.existsSync(Ne.join(s,"index.html")))return s}catch(t){t.code!=="MODULE_NOT_FOUND"&&console.error("Error resolving dashboard package:",t)}return null}async function Hp(r){let e=dr();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=et(),{startDashboardServer:s}=await Promise.resolve().then(()=>(Ic(),Dc));await s({port:r.port,assetsDir:e,token:t,open:r.open})}var fr,Ne,Yo=P(()=>{"use strict";fr=z(require("fs"),1),Ne=z(require("path"),1);se()});var Mc={};ie(Mc,{parseIssueList:()=>Uc,runParseList:()=>Wp});function qp(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 Bp(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 Vp(r){return!!(/~~.+~~/.test(r)||/\[[xX]\]/.test(r)||/\bdone\b/i.test(r))}function Uc(r){let e=r.split(`
95
- `),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=qp(n);if(!a)continue;let c=Bp(n),u={repo:a.repo,number:a.number,title:c||`#${a.number}`,tier:o,url:a.url};Vp(n)?s.push(u):t.push(u)}return{available:t,completed:s,availableCount:t.length,completedCount:s.length}}async function Wp(r){let e=xc.resolve(r.filePath);if(!br.existsSync(e))throw new Error(`File not found: ${e}`);let t;try{t=br.readFileSync(e,"utf-8")}catch(s){let o=v(s);throw new Error(`Failed to read file: ${o}`,{cause:s})}return Uc(t)}var br,xc,Lc=P(()=>{"use strict";br=z(require("fs"),1),xc=z(require("path"),1);ae()});var jc={};ie(jc,{runCheckIntegration:()=>Yp});function Kp(r){let e=ke.extname(r),t=ke.basename(r,e);return t==="index"?ke.basename(ke.dirname(r)):t}function Qp(r,e){let t=ke.dirname(r),s=[];for(let n of[".ts",".tsx",".js",".jsx"]){let i=ke.join(t,`index${n}`);e.includes(i)&&s.push(i)}let o=ke.dirname(t);for(let n of[".ts",".tsx",".js",".jsx"]){let i=ke.join(o,`index${n}`);e.includes(i)&&s.push(i)}return[...new Set(s)]}async function Yp(r){let e=r.base,t;try{let a=(0,yr.execFileSync)("git",["diff","--name-only","--diff-filter=A",`${e}...HEAD`],{encoding:"utf-8",timeout:1e4}).trim();t=a?a.split(`
96
- `).filter(Boolean):[]}catch(a){let c=v(a);throw new Error(`Failed to run git diff: ${c}`,{cause:a})}let s=t.filter(a=>{let c=ke.extname(a);return zp.has(c)?!Jp.some(u=>u.test(a)):!1});if(s.length===0)return{newFiles:[],unreferencedCount:0};let o;try{o=(0,yr.execFileSync)("git",["ls-files"],{encoding:"utf-8",timeout:1e4}).trim().split(`
97
- `).filter(Boolean)}catch(a){T("check-integration","git ls-files failed, reference checking will be skipped",a),o=[]}let n=[];for(let a of s){let c=Kp(a),u=a.replace(/\.[^.]+$/,""),l=[],d=[c];u.includes("/")&&d.push(u);for(let R of d)try{let _=(0,yr.execFileSync)("git",["grep","-l","--",R],{encoding:"utf-8",timeout:1e4}).trim();if(_){let C=_.split(`
98
- `).filter(b=>b!==a);l.push(...C)}}catch(_){let C=_&&typeof _=="object"&&"status"in _?_.status:void 0;if(C!==void 0&&C!==1){let b=v(_);T("check-integration",`git grep failed for "${R}": ${b}`)}}l=[...new Set(l)];let g=l.length>0,E={path:a,referencedBy:l,isIntegrated:g};g||(E.suggestedEntryPoints=Qp(a,o)),n.push(E)}let i=n.filter(a=>!a.isIntegrated).length;return{newFiles:n,unreferencedCount:i}}var ke,yr,zp,Jp,Nc=P(()=>{"use strict";ke=z(require("path"),1),yr=require("child_process");se();ae();zp=new Set([".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".rb",".go",".rs",".java",".kt",".vue",".svelte"]),Jp=[/^\./,/\.(test|spec|e2e)\.[^.]+$/,/\.(config|rc)\.[^.]+$/,/__tests__\//,/\.d\.ts$/,/\.md$/,/\.json$/,/\.ya?ml$/]});var qc={};ie(qc,{runLocalRepos:()=>td,scanForRepos:()=>Hc});function Zp(r){try{let e=(0,_r.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 T("local-repos",`Failed to get GitHub remote for ${r}`,e),null}}function ed(r){try{return(0,_r.execFileSync)("git",["-C",r,"branch","--show-current"],{encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}).trim()||null}catch(e){return T("local-repos",`Failed to get current branch for ${r}`,e),null}}function Hc(r){let e={};for(let t of r){if(!en.existsSync(t))continue;let s;try{let o=(0,_r.execFileSync)("find",[t,"-maxdepth","4","-name",".git","-type","d"],{encoding:"utf-8",timeout:3e4,stdio:["pipe","pipe","pipe"]}).trim();s=o?o.split(`
99
- `).filter(Boolean):[]}catch(o){T("local-repos",`find failed for scan path ${t}`,o);continue}for(let o of s){let n=He.dirname(o),i=Zp(n);if(!i)continue;let a=ed(n);e[i]={path:n,exists:!0,currentBranch:a}}}return e}async function td(r){let e=j(),t=e.getState(),s=r.paths?.map(i=>He.resolve(i))??t.config.localRepoScanPaths??Xp.filter(i=>en.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=Hc(s),n=new Date().toISOString();try{e.setLocalRepoCache({repos:o,scanPaths:s,cachedAt:n}),e.save()}catch(i){let a=v(i);console.error(`Warning: Failed to cache scan results: ${a}`)}return{repos:o,scanPaths:s,cachedAt:n,fromCache:!1}}var en,He,xt,_r,Xp,Bc=P(()=>{"use strict";en=z(require("fs"),1),He=z(require("path"),1),xt=z(require("os"),1),_r=require("child_process");se();ae();Xp=[He.join(xt.homedir(),"Documents","oss"),He.join(xt.homedir(),"dev"),He.join(xt.homedir(),"projects"),He.join(xt.homedir(),"src"),He.join(xt.homedir(),"code"),He.join(xt.homedir(),"repos")]});var tn={};ie(tn,{runDismiss:()=>sd,runUndismiss:()=>rd});async function sd(r){he(r.url),we(r.url,at,"issue");let e=j(),t=e.dismissIssue(r.url,new Date().toISOString());return t&&e.save(),{dismissed:t,url:r.url}}async function rd(r){he(r.url),we(r.url,at,"issue");let e=j(),t=e.undismissIssue(r.url);return t&&e.save(),{undismissed:t,url:r.url}}var sn=P(()=>{"use strict";se();je()});var Vc={};ie(Vc,{runPRTemplate:()=>od});async function od(r){let{owner:e,repo:t}=Mt(r.repo),s=ye(),o=me(s);return Fo(o,e,t)}var Wc=P(()=>{"use strict";Ht();Ee();xo()});var zc={};ie(zc,{formatStatsBadge:()=>cd,formatStatsMarkdown:()=>id,runStats:()=>nd});async function nd(){let e=j().getState(),t=e.lastDigest?.summary?.totalActivePRs??0,s=Do({repoScores:e.repoScores??{},activePRCount:t});return{...s,mergeRateFormatted:`${(s.mergeRate*100).toFixed(1)}%`,username:e.config.githubUsername}}function id(r){let e=[`# OSS Contribution Stats for @${r.username}`,"","| Metric | Value |","|--------|-------|",`| Merged PRs | ${r.totalMerged} |`,`| Merge Rate | ${r.mergeRateFormatted} |`,`| Active PRs | ${r.activePRs} |`,`| Repos Contributed | ${r.reposContributed} |`,""];if(r.topRepos.length>0){e.push("## Top Repos","","| Repo | Merged PRs |","|------|-----------|");for(let t of r.topRepos)e.push(`| ${t.repo} | ${t.mergedCount} |`);e.push("")}return e.push("---","*Generated by [OSS Autopilot](https://github.com/costajohnt/oss-autopilot)*"),e.join(`
100
- `)}function ad(r){return r.totalMerged===0?"blue":r.mergeRate>=.8?"brightgreen":r.mergeRate>=.6?"green":r.mergeRate>=.4?"yellow":"orange"}function cd(r){return{schemaVersion:1,label:"OSS Contributions",message:r.totalMerged>0?`${r.mergeRateFormatted} merge rate | ${r.totalMerged} merged`:"Getting Started",color:ad(r)}}var Jc=P(()=>{"use strict";se();Io()});var Cn=z(Sn(),1),{program:wd,createCommand:Ed,createArgument:Td,createOption:vd,CommanderError:Sd,InvalidArgumentError:Cd,InvalidOptionArgumentError:Pd,Command:Pn,Argument:kd,Option:Ad,Help:Od}=Cn.default;se();ae();Uo();function Q(r,e){let t=v(r);e?Qa(t):console.error(`Error: ${t}`),process.exit(1)}function Kc(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}`)}}var rn=[{name:"daily",register(r){r.command("daily").description("Run daily check on all tracked PRs").option("--json","Output as JSON").action(async e=>{try{if(e.json){let{runDaily:t}=await Promise.resolve().then(()=>(Rs(),Bo)),s=await t();K(s)}else{let{runDailyForDisplay:t,printDigest:s}=await Promise.resolve().then(()=>(Rs(),Bo)),o=await t();s(o.digest,o.capacity,o.commentedIssues)}}catch(t){Q(t,e.json)}})}},{name:"status",localOnly:!0,register(r){r.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 e=>{try{let{runStatus:t}=await Promise.resolve().then(()=>(rc(),sc)),s=await t({offline:e.offline});e.json?K(s):(console.log(`
93
+ `),r.needsAddressingPRs.length>0){console.log("\u274C Needs Addressing:");for(let o of r.needsAddressingPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` ${o.displayLabel} ${o.displayDescription}`);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}`),console.log(` ${o.displayDescription}`);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 Vt,lp,Ja,pp,Qa=C(()=>{"use strict";Ee();le();ce();Lt();Vt=new Set(["needs_addressing"]),lp=new Set(["needs_response","needs_changes","failing_ci","merge_conflict"]),Ja=new Set(["dormant","approaching_dormant"]),pp=new Set(["needs_addressing","waiting_on_maintainer"])});function Do(r){let{repoScores:e,activePRCount:t}=r,s=0,o=0,n=[];for(let c of Object.values(e))s+=c.mergedPRCount,o+=c.closedWithoutMergeCount,c.mergedPRCount>0&&n.push({repo:c.repo,mergedCount:c.mergedPRCount});let i=s+o,a=i>0?s/i:0;return n.sort((c,u)=>u.mergedCount-c.mergedCount),{totalMerged:s,totalClosed:o,mergeRate:a,activePRs:t,reposContributed:n.length,topRepos:n.slice(0,10)}}var Io=C(()=>{"use strict"});async function Fo(r,e,t){for(let s of dp)try{T($t,`Checking ${e}/${t} for template at ${s}`);let{data:o}=await r.repos.getContent({owner:e,repo:t,path:s});if(Array.isArray(o)){T($t,`${s} is a directory (multiple templates?), skipping`);continue}if(o.type!=="file"){T($t,`${s} is type "${o.type}", skipping`);continue}if(!o.content){T($t,`${s} has no content, skipping`);continue}let n=Buffer.from(o.content,"base64").toString("utf-8");return T($t,`Found PR template at ${s} (${n.length} chars)`),{template:n,source:s}}catch(o){if(Te(o)===404)continue;if(me(o))throw o;let n=v(o);return m($t,`Error checking ${e}/${t}/${s}: ${n}`),{template:null,source:null,error:n}}return T($t,`No PR template found for ${e}/${t}`),{template:null,source:null}}var $t,dp,xo=C(()=>{"use strict";le();ce();$t="pr-template",dp=[".github/PULL_REQUEST_TEMPLATE.md",".github/pull_request_template.md","docs/pull_request_template.md","pull_request_template.md"]});var re=C(()=>{"use strict";Lt();Da();Va();za();Qs();Ht();Ee();ce();le();qt();Qa();Io();xo();Ye()});function Ya(r){let e=t=>t.map(s=>s.url);return{generatedAt:r.generatedAt,openPRs:r.openPRs,needsAddressingPRs:e(r.needsAddressingPRs),waitingOnMaintainerPRs:e(r.waitingOnMaintainerPRs),recentlyClosedPRs:r.recentlyClosedPRs,recentlyMergedPRs:r.recentlyMergedPRs,shelvedPRs:r.shelvedPRs,autoUnshelvedPRs:r.autoUnshelvedPRs,summary:r.summary}}function Xa(r){return r.map(e=>({type:e.type,prUrl:e.pr.url,label:e.label,isNewContribution:e.isNewContribution}))}function Za(r){return r.map(e=>({repo:e.repo,prUrls:e.prs.map(t=>t.url)}))}function gp(r){return{success:!0,data:r,timestamp:new Date().toISOString()}}function mp(r){return{success:!1,error:r,timestamp:new Date().toISOString()}}function Q(r){console.log(JSON.stringify(gp(r),null,2))}function ec(r){console.log(JSON.stringify(mp(r),null,2))}var Uo=C(()=>{"use strict"});function tc(r,e,t,s){let o=r.summary||{totalActivePRs:0,totalMergedAllTime:0,mergeRate:0,totalNeedingAttention:0},n=e.config.minStars??50,i=t!==void 0?Math.max(t,o.totalMergedAllTime):o.totalMergedAllTime,a=Object.values(e.repoScores||{}).reduce((u,l)=>u+(Qe(l.stargazersCount,n)?0:l.closedWithoutMergeCount||0),0),c=s!==void 0?Math.max(s,a):a;return{activePRs:o.totalActivePRs,shelvedPRs:(r.shelvedPRs||[]).length,mergedPRs:i,closedPRs:c,mergeRate:`${(o.mergeRate??0).toFixed(1)}%`}}function Mo(r,e){let t={...r};for(let[s,o]of Object.entries(e))t[s]=o;return t}function Lo(r,e,t,s,o){let n=j(),i=n.getState();try{Object.keys(e).length>0&&n.setMonthlyMergedCounts(Mo(i.monthlyMergedCounts||{},e))}catch(a){m(ge,`Failed to store monthly merged counts: ${v(a)}`)}try{Object.keys(t).length>0&&n.setMonthlyClosedCounts(Mo(i.monthlyClosedCounts||{},t))}catch(a){m(ge,`Failed to store monthly closed counts: ${v(a)}`)}try{let a={...s};for(let[c,u]of Object.entries(o))a[c]=(a[c]||0)+u;for(let c of r)if(c.createdAt){let u=c.createdAt.slice(0,7);a[u]=(a[u]||0)+1}Object.keys(a).length>0&&n.setMonthlyOpenedCounts(Mo(i.monthlyOpenedCounts||{},a))}catch(a){m(ge,`Failed to store monthly opened counts: ${v(a)}`)}}async function jo(r){let e=j(),t=new kt(r),s=new Ot(r),o=he(r),n=e.getState().config,i=or(e.getState()),a=e.getMergedPRWatermark(),c=e.getClosedPRWatermark(),[{prs:u,failures:l},d,g,E,R,w,P,b]=await Promise.all([t.fetchUserOpenPRs(),t.fetchRecentlyClosedPRs().catch(A=>{if(me(A))throw A;return m(ge,`Failed to fetch recently closed PRs: ${v(A)}`),[]}),t.fetchRecentlyMergedPRs().catch(A=>{if(me(A))throw A;return m(ge,`Failed to fetch recently merged PRs: ${v(A)}`),[]}),t.fetchUserMergedPRCounts(i).catch(A=>{if(me(A))throw A;return m(ge,`Failed to fetch merged PR counts: ${v(A)}`),Pt()}),t.fetchUserClosedPRCounts(i).catch(A=>{if(me(A))throw A;return m(ge,`Failed to fetch closed PR counts: ${v(A)}`),Pt()}),s.fetchCommentedIssues().catch(A=>{if(me(A))throw A;let te=v(A);return te.includes("No GitHub username configured")?m(ge,`Issue conversation tracking requires setup: ${te}`):m(ge,`Issue conversation fetch failed: ${te}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${te}`}]}}),Ga(o,n,a).catch(A=>{if(me(A))throw A;return m(ge,`Failed to fetch merged PRs for storage: ${v(A)}`),[]}),$a(o,n,c).catch(A=>{if(me(A))throw A;return m(ge,`Failed to fetch closed PRs for storage: ${v(A)}`),[]})]),G=w.issues;w.failures.length>0&&m(ge,`${w.failures.length} issue conversation check(s) failed`),l.length>0&&m(ge,`${l.length} PR fetch(es) failed`);try{e.addMergedPRs(P)}catch(A){m(ge,`Failed to store merged PRs: ${v(A)}`)}try{e.addClosedPRs(b)}catch(A){m(ge,`Failed to store closed PRs: ${v(A)}`)}let x=No(e.getMergedPRs()),B=Ho(e.getClosedPRs()),{monthlyCounts:D,monthlyOpenedCounts:k}=E,{monthlyCounts:O,monthlyOpenedCounts:H}=R;Lo(u,D,O,k,H);let U=t.generateDigest(u,d,g),ue=new Set(e.getState().config.shelvedPRUrls||[]),_e=u.filter(A=>ue.has(A.url)||A.stalenessTier==="dormant"&&A.status!=="needs_addressing");U.shelvedPRs=_e.map(nt),U.autoUnshelvedPRs=[],U.summary.totalActivePRs=u.length-_e.length,e.setLastDigest(U);try{e.save()}catch(A){m(ge,`Failed to save dashboard digest to state: ${v(A)}`)}return m(ge,`Refreshed: ${u.length} PRs fetched`),{digest:U,commentedIssues:G,allMergedPRs:x,allClosedPRs:B}}function No(r){let e=[],t=0;for(let s of r){let o=de(s.url);if(!o){t++;continue}e.push({url:s.url,repo:`${o.owner}/${o.repo}`,number:o.number,title:s.title,mergedAt:s.mergedAt})}return t>0&&m(ge,`Skipped ${t} stored merged PR(s) with unparseable URLs`),e}function Ho(r){let e=[],t=0;for(let s of r){let o=de(s.url);if(!o){t++;continue}e.push({url:s.url,repo:`${o.owner}/${o.repo}`,number:o.number,title:s.title,closedAt:s.closedAt})}return t>0&&m(ge,`Skipped ${t} stored closed PR(s) with unparseable URLs`),e}function sc(r,e){let t={};for(let o of r.openPRs||[])t[o.repo]||(t[o.repo]={active:0,merged:0,closed:0}),t[o.repo].active++;let s=e.config.minStars??50;for(let[o,n]of Object.entries(e.repoScores||{}))Qe(n.stargazersCount,s)||(t[o]||(t[o]={active:0,merged:0,closed:0}),t[o].merged=n.mergedPRCount,t[o].closed=n.closedWithoutMergeCount);return t}function rc(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 oc(r){return{monthlyMerged:r.monthlyMergedCounts||{},monthlyClosed:r.monthlyClosedCounts||{},monthlyOpened:r.monthlyOpenedCounts||{}}}var ge,qo=C(()=>{"use strict";re();ce();le();Xs();Ee();Ye();Rs();ge="dashboard-data"});var Bo={};ae(Bo,{CRITICAL_STATUSES:()=>Vt,applyStatusOverrides:()=>Gt,assessCapacity:()=>hs,buildStarFilter:()=>or,collectActionableIssues:()=>fs,computeActionMenu:()=>bs,computeRepoSignals:()=>ms,executeDailyCheck:()=>nr,formatBriefSummary:()=>ys,formatSummary:()=>_s,groupPRsByRepo:()=>gs,printDigest:()=>$o,runDaily:()=>Rp,runDailyForDisplay:()=>wp,toShelvedPRRef:()=>nt});function or(r){let e=r.config.minStars??50,t=new Map;for(let[s,o]of Object.entries(r.repoScores))o.stargazersCount!==void 0&&t.set(s,o.stargazersCount);if(t.size!==0)return{minStars:e,knownStarCounts:t}}async function hp(r,e){let{prs:t,failures:s}=await r.fetchUserOpenPRs();s.length>0&&m(ee,`${s.length} PR fetch(es) failed`);let o=j().getState(),n=or(o),i=new Ot(e),[a,c,u,l,d]=await Promise.all([r.fetchUserMergedPRCounts(n).catch(x=>{if(me(x))throw x;return m(ee,`Failed to fetch merged PR counts: ${v(x)}`),Pt()}),r.fetchUserClosedPRCounts(n).catch(x=>{if(me(x))throw x;return m(ee,`Failed to fetch closed PR counts: ${v(x)}`),Pt()}),r.fetchRecentlyClosedPRs().catch(x=>{if(me(x))throw x;return m(ee,`Failed to fetch recently closed PRs: ${v(x)}`),[]}),r.fetchRecentlyMergedPRs().catch(x=>{if(me(x))throw x;return m(ee,`Failed to fetch recently merged PRs: ${v(x)}`),[]}),i.fetchCommentedIssues().catch(x=>{if(me(x))throw x;let B=v(x);return B.includes("No GitHub username configured")?m(ee,`Issue conversation tracking requires setup: ${B}`):m(ee,`Issue conversation fetch failed: ${B}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${B}`}]}})]),g=d.issues;d.failures.length>0&&m(ee,`${d.failures.length} issue conversation check(s) failed`);let{repos:E,monthlyCounts:R,monthlyOpenedCounts:w}=a,{repos:P,monthlyCounts:b,monthlyOpenedCounts:G}=c;return{prs:t,failures:s,mergedCounts:E,closedCounts:P,monthlyCounts:R,monthlyClosedCounts:b,openedFromMerged:w,openedFromClosed:G,recentlyClosedPRs:u,recentlyMergedPRs:l,commentedIssues:g}}async function fp(r,e,t,s){let o=j(),n=Object.values(o.getState().repoScores).filter(w=>w.mergedPRCount>0);if(t.size===0&&n.length>0)m(ee,`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 w of Object.values(o.getState().repoScores))t.has(w.repo)||o.updateRepoScore(w.repo,{mergedPRCount:0});let i=0;for(let[w,{count:P,lastMergedAt:b}]of t)try{o.updateRepoScore(w,{mergedPRCount:P,lastMergedAt:b||void 0})}catch(G){i++,m(ee,`Failed to update merged count for ${w}: ${v(G)}`)}i===t.size&&t.size>0&&m(ee,`[ALL_MERGED_COUNT_UPDATES_FAILED] All ${t.size} merged count update(s) failed.`);let a=Object.values(o.getState().repoScores).filter(w=>(w.closedWithoutMergeCount||0)>0);s.size===0&&a.length>0&&m(ee,`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[w,P]of s)try{o.updateRepoScore(w,{closedWithoutMergeCount:P})}catch(b){c++,m(ee,`Failed to update closed count for ${w}: ${v(b)}`)}c===s.size&&s.size>0&&m(ee,`[ALL_CLOSED_COUNT_UPDATES_FAILED] All ${s.size} closed count update(s) failed.`);let u=ms(e),l=0;for(let[w,P]of u)try{o.updateRepoScore(w,{signals:P})}catch(b){l++,m(ee,`Failed to update signals for ${w}: ${v(b)}`)}l===u.size&&u.size>0&&m(ee,`[ALL_SIGNAL_UPDATES_FAILED] All ${u.size} signal update(s) failed. This may indicate corrupted state.`);let d=Object.keys(o.getState().repoScores),g;try{g=await r.fetchRepoMetadata(d)}catch(w){if(me(w))throw w;m(ee,`Failed to fetch repo metadata: ${v(w)}`),m(ee,"Repos without cached metadata will be excluded from dashboard stats and metadata badges until fetched on the next successful run."),g=new Map}let E=0;for(let[w,{stars:P,language:b}]of g)try{o.updateRepoScore(w,{stargazersCount:P,language:b})}catch(G){E++,m(ee,`Failed to update metadata for ${w}: ${v(G)}`)}E===g.size&&g.size>0&&m(ee,`[ALL_METADATA_UPDATES_FAILED] All ${g.size} metadata update(s) failed.`);let R=0;for(let[w]of t)try{o.addTrustedProject(w)}catch(P){R++,m(ee,`Failed to sync trusted project ${w}: ${v(P)}`)}R===t.size&&t.size>0&&m(ee,`[ALL_TRUST_SYNCS_FAILED] All ${t.size} trusted project sync(s) failed. This may indicate corrupted state.`)}function bp(r,e,t,s){let o=j(),n=Gt(e,o.getState()),i=[],a=[],c=[];for(let l of n)o.isPRShelved(l.url)?Vt.has(l.status)?(o.unshelvePR(l.url),a.push(nt(l)),c.push(l)):i.push(nt(l)):l.stalenessTier==="dormant"&&!Vt.has(l.status)?i.push(nt(l)):c.push(l);let u=r.generateDigest(n,t,s);return u.shelvedPRs=i,u.autoUnshelvedPRs=a,u.summary.totalActivePRs=c.length,o.setLastDigest(u),o.save(),{activePRs:c,shelvedPRs:i,autoUnshelvedPRs:a,digest:u}}function yp(r,e,t,s,o,n){let i=j(),a=hs(e,i.getState().config.maxActivePRs,t.length),c=!1,u=s.filter(P=>{let b=i.getIssueDismissedAt(P.url);if(!b)return!0;if(P.status==="new_response"){let G=new Date(P.lastResponseAt).getTime(),x=new Date(b).getTime();if(isNaN(G)||isNaN(x))return m(ee,`Invalid timestamp in dismiss check for ${P.url}, including issue`),!0;if(G>x)return m(ee,`Auto-undismissing issue ${P.url}: new response at ${P.lastResponseAt} after dismiss at ${b}`),i.undismissIssue(P.url),c=!0,!0}return!1}),l=u.filter(P=>P.status==="new_response"),d=_s(r,a,l);if(c)try{i.save()}catch(P){m(ee,`Failed to persist auto-undismissed state: ${v(P)}`)}let g=fs(e,n);r.summary.totalNeedingAttention=g.length;let E=ys(r,g.length,l.length),R=bs(g,a,u),w=gs(e);return{digest:r,capacity:a,summary:d,briefSummary:E,actionableIssues:g,actionMenu:R,commentedIssues:u,repoGroups:w,failures:o}}function _p(r){return{digest:Ya(r.digest),capacity:r.capacity,summary:r.summary,briefSummary:r.briefSummary,actionableIssues:Xa(r.actionableIssues),actionMenu:r.actionMenu,commentedIssues:r.commentedIssues,repoGroups:Za(r.repoGroups),failures:r.failures}}async function nr(r){let e=await nc(r);return _p(e)}async function nc(r){let e=new kt(r),{prs:t,failures:s,mergedCounts:o,closedCounts:n,monthlyCounts:i,monthlyClosedCounts:a,openedFromMerged:c,openedFromClosed:u,recentlyClosedPRs:l,recentlyMergedPRs:d,commentedIssues:g}=await hp(e,r);await fp(e,t,o,n),Lo(t,i,a,c,u);let E=j().getState().lastDigestAt,{activePRs:R,shelvedPRs:w,digest:P}=bp(e,t,l,d);return yp(P,R,w,g,s,E)}async function Rp(){let r=ye();return nr(r)}async function wp(){let r=ye();return nc(r)}var ee,Rs=C(()=>{"use strict";re();ce();le();Xs();qo();Uo();re();ee="daily"});var ic={};ae(ic,{runStatus:()=>Ep});async function Ep(r){let e=j(),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 ac=C(()=>{"use strict";re()});var cc={};ae(cc,{runSearch:()=>Tp});async function Tp(r){let e=ye(),t=new At(e),s=await t.searchIssues({maxResults:r.maxResults}),o=j(),{config:n}=o.getState(),i=n.excludeRepos||[],a=n.aiPolicyBlocklist??bt.aiPolicyBlocklist??[],c={candidates:s.map(u=>{let l=o.getRepoScore(u.issue.repo);return{issue:{repo:u.issue.repo,number:u.issue.number,title:u.issue.title,url:u.issue.url,labels:u.issue.labels},recommendation:u.recommendation,reasonsToApprove:u.reasonsToApprove,reasonsToSkip:u.reasonsToSkip,searchPriority:u.searchPriority,viabilityScore:u.viabilityScore,repoScore:l?{score:l.score,mergedPRCount:l.mergedPRCount,closedWithoutMergeCount:l.closedWithoutMergeCount,isResponsive:l.signals?.isResponsive??!1,lastMergedAt:l.lastMergedAt}:void 0}}),excludedRepos:i,aiPolicyBlocklist:a};return t.rateLimitWarning&&(c.rateLimitWarning=t.rateLimitWarning),c}var uc=C(()=>{"use strict";re()});function we(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 Z(`Invalid ${t} URL: ${r}. Expected format: ${s[t]}`)}function fe(r){if(r.length>lc)throw new Z(`URL exceeds maximum length of ${lc} characters`);return r}function Vo(r){if(r.length>pc)throw new Z(`Message exceeds maximum length of ${pc} characters`);return r}function Wt(r){if(!r||r.trim().length===0)throw new Z("GitHub username cannot be empty.");let e=r.trim();if(e.length>dc)throw new Z(`GitHub username must be at most ${dc} characters (got ${e.length}).`);if(!vp.test(e))throw new Z("GitHub username can only contain alphanumeric characters and hyphens.");if(e.startsWith("-"))throw new Z("GitHub username cannot start with a hyphen.");if(e.endsWith("-"))throw new Z("GitHub username cannot end with a hyphen.");if(Sp.test(e))throw new Z("GitHub username cannot contain consecutive hyphens.");return e}var it,at,gc,lc,pc,dc,vp,Sp,je=C(()=>{"use strict";ce();it=/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\/\d+$/,at=/^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\/\d+$/,gc=/^https:\/\/github\.com\/[^/]+\/[^/]+\/(issues|pull)\/\d+$/,lc=2048,pc=1e3;dc=39,vp=/^[a-zA-Z0-9-]+$/,Sp=/--/});var mc={};ae(mc,{runVet:()=>Cp});async function Cp(r){fe(r.issueUrl),we(r.issueUrl,at,"issue");let e=ye(),s=await new At(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 hc=C(()=>{"use strict";re();je()});var Wo={};ae(Wo,{runTrack:()=>Pp,runUntrack:()=>kp});async function Pp(r){fe(r.prUrl),we(r.prUrl,it,"PR");let e=ye(),t=he(e),s=de(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 kp(r){return fe(r.prUrl),we(r.prUrl,it,"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 zo=C(()=>{"use strict";re();je();Ee()});var fc={};ae(fc,{runRead:()=>Ap});async function Ap(r){if(!r.all&&!r.prUrl)throw new Error("PR URL or --all flag required");return r.prUrl&&fe(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 bc=C(()=>{"use strict";je()});var ir={};ae(ir,{runClaim:()=>$p,runComments:()=>Op,runPost:()=>Gp});async function Op(r){fe(r.prUrl),we(r.prUrl,it,"PR");let e=ye(),t=j(),s=he(e),o=de(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}),[u,l,d]=await Promise.all([Le(b=>s.pulls.listReviewComments({owner:n,repo:i,pull_number:a,per_page:100,page:b})),Le(b=>s.issues.listComments({owner:n,repo:i,issue_number:a,per_page:100,page:b})),Le(b=>s.pulls.listReviews({owner:n,repo:i,pull_number:a,per_page:100,page:b}))]),g=t.getState().config.githubUsername,E=b=>!(!b.user||b.user.login===g||b.user.type==="Bot"&&!r.showBots),R=u.filter(E).sort((b,G)=>new Date(G.created_at).getTime()-new Date(b.created_at).getTime()),w=l.filter(E).sort((b,G)=>new Date(G.created_at).getTime()-new Date(b.created_at).getTime()),P=d.filter(b=>E(b)&&b.body&&b.body.trim()).sort((b,G)=>new Date(G.submitted_at||0).getTime()-new Date(b.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:P.map(b=>({user:b.user?.login,state:b.state,body:b.body??null,submittedAt:b.submitted_at??null})),reviewComments:R.map(b=>({user:b.user?.login,body:b.body,path:b.path,createdAt:b.created_at})),issueComments:w.map(b=>({user:b.user?.login,body:b.body,createdAt:b.created_at})),summary:{reviewCount:P.length,inlineCommentCount:R.length,discussionCommentCount:w.length}}}async function Gp(r){if(fe(r.url),we(r.url,gc,"issue or PR"),!r.message.trim())throw new Error("No message provided");Vo(r.message);let e=ye(),t=de(r.url);if(!t)throw new Error("Invalid GitHub URL format");let{owner:s,repo:o,number:n}=t,i=he(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 $p(r){fe(r.issueUrl),we(r.issueUrl,at,"issue");let e=ye(),t=r.message||"Hi! I'd like to work on this issue. Could you assign it to me?";Vo(t);let s=de(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=he(e),{data:c}=await a.issues.createComment({owner:o,repo:n,issue_number:i,body:t});try{let u=j();u.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}),u.save()}catch(u){console.error(`Warning: Comment posted on ${r.issueUrl} but failed to save to local state: ${u instanceof Error?u.message:u}`)}return{commentUrl:c.html_url,issueUrl:r.issueUrl}}var ar=C(()=>{"use strict";re();us();je()});var yc={};ae(yc,{runConfig:()=>Dp});async function Dp(r){let e=j(),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:Wt(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 _c=C(()=>{"use strict";re();je()});var Rc={};ae(Rc,{runInit:()=>Ip});async function Ip(r){Wt(r.username);let e=j();return e.updateConfig({githubUsername:r.username}),e.save(),{username:r.username,message:"Username saved. Run `daily` to fetch your open PRs from GitHub."}}var wc=C(()=>{"use strict";re();je()});var Ko={};ae(Ko,{runCheckSetup:()=>xp,runSetup:()=>Fp});function Jo(r,e){let t=Number(r);if(!Number.isFinite(t)||t<1||!Number.isInteger(t))throw new Z(`Invalid value for ${e}: "${r}". Must be a positive integer.`);return t}async function Fp(r){let e=j(),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":Wt(c),e.updateConfig({githubUsername:c}),s[i]=c;break;case"maxActivePRs":{let u=Jo(c,"maxActivePRs");e.updateConfig({maxActivePRs:u}),s[i]=String(u);break}case"dormantDays":{let u=Jo(c,"dormantDays");e.updateConfig({dormantThresholdDays:u}),s[i]=String(u);break}case"approachingDays":{let u=Jo(c,"approachingDays");e.updateConfig({approachingDormantDays:u}),s[i]=String(u);break}case"languages":e.updateConfig({languages:c.split(",").map(u=>u.trim())}),s[i]=c;break;case"labels":e.updateConfig({labels:c.split(",").map(u=>u.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 u=Number(c);if(!Number.isFinite(u)||!Number.isInteger(u)||u<0)throw new Z(`Invalid value for minStars: "${c}". Must be a non-negative integer.`);e.updateConfig({minStars:u}),s[i]=String(u);break}case"includeDocIssues":e.updateConfig({includeDocIssues:c==="true"}),s[i]=c==="true"?"true":"false";break;case"aiPolicyBlocklist":{let u=c.split(",").map(g=>g.trim()).filter(Boolean),l=[],d=[];for(let g of u){let E=g.replace(/\s+/g,"");/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/.test(E)?l.push(E):d.push(g)}if(d.length>0&&(o.push(`Warning: Skipping invalid entries (expected "owner/repo" format): ${d.join(", ")}`),s.aiPolicyBlocklist_invalidEntries=d.join(", ")),l.length===0&&u.length>0){o.push("Warning: All entries were invalid. Blocklist not updated."),s[i]="(all entries invalid)";break}e.updateConfig({aiPolicyBlocklist:l}),s[i]=l.length>0?l.join(", "):"(empty)";break}case"projectCategories":{let u=c.split(",").map(E=>E.trim()).filter(Boolean),l=[],d=[];for(let E of u)qr.includes(E)?l.push(E):d.push(E);d.length>0&&o.push(`Unknown project categories: ${d.join(", ")}. Valid: ${qr.join(", ")}`);let g=[...new Set(l)];e.updateConfig({projectCategories:g}),s[i]=g.length>0?g.join(", "):"(empty)";break}case"preferredOrgs":{let u=c.split(",").map(g=>g.trim()).filter(Boolean),l=[];for(let g of u)g.includes("/")?o.push(`"${g}" looks like a repo path. Use org name only (e.g., "vercel" not "vercel/next.js").`):/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$/.test(g)?l.push(g.toLowerCase()):o.push(`"${g}" is not a valid GitHub organization name. Skipping.`);let d=[...new Set(l)];e.updateConfig({preferredOrgs:d}),s[i]=d.length>0?d.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,projectCategories:t.projectCategories??[],preferredOrgs:t.preferredOrgs??[]}}:{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??bt.aiPolicyBlocklist??null,default:["matplotlib/matplotlib"],type:"list"},{setting:"projectCategories",prompt:"What types of projects interest you? (nonprofit, devtools, infrastructure, web-frameworks, data-ml, education)",current:t.projectCategories??[],default:[],type:"list"},{setting:"preferredOrgs",prompt:"Any GitHub organizations to prioritize? (org names, comma-separated)",current:t.preferredOrgs??[],default:[],type:"list"}]}}async function xp(){let r=j();return{setupComplete:r.isSetupComplete(),username:r.getState().config.githubUsername}}var Qo=C(()=>{"use strict";re();ce();je();Ye()});function ws(){return Tc.join(xe(),"dashboard-server.pid")}function ur(r){zt.writeFileSync(ws(),JSON.stringify(r),{mode:384})}function Jt(){try{let r=zt.readFileSync(ws(),"utf-8"),e=JSON.parse(r);return typeof e!="object"||e===null||typeof e.pid!="number"||!Number.isInteger(e.pid)||e.pid<=0||typeof e.port!="number"||typeof e.startedAt!="string"?(m(cr,"PID file has invalid structure, ignoring"),null):e}catch(r){return r.code!=="ENOENT"&&m(cr,`Failed to read PID file: ${r.message}`),null}}function ft(){try{zt.unlinkSync(ws())}catch(r){r.code!=="ENOENT"&&m(cr,`Failed to remove PID file: ${r.message}`)}}function Es(r){return new Promise(e=>{let t=Ec.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 lr(){let r=Jt();if(!r)return null;try{process.kill(r.pid,0)}catch(e){let t=e.code;return t!=="ESRCH"&&t!=="EPERM"&&m(cr,`Unexpected error checking PID ${r.pid}: ${e.message}`),ft(),null}return await Es(r.port)?{port:r.port,url:`http://oss.localhost:${r.port}`}:(ft(),null)}var Ec,zt,Tc,cr,pr=C(()=>{"use strict";Ec=z(require("http"),1),zt=z(require("fs"),1),Tc=z(require("path"),1);re();le();cr="dashboard-server"});function jp(r){return new Promise(e=>setTimeout(e,r))}async function Sc(r){if(!dr())return null;let t=await lr();if(t){let c=Jt(),u=We();if(c)if(c.version&&u!=="0.0.0"&&c.version!==u){console.error(`[STARTUP] Dashboard server version mismatch (running: ${c.version}, current: ${u}). Restarting...`);let l=!1;try{process.kill(c.pid,"SIGTERM"),l=!0}catch(d){d.code==="ESRCH"?l=!0:console.error(`[STARTUP] Could not kill outdated dashboard (PID ${c.pid}): ${d.message}`)}if(l)ft();else return{url:t.url,port:t.port,alreadyRunning:!0}}else return{url:t.url,port:t.port,alreadyRunning:!0}}let s=r?.port??Up,o=process.argv[1],n=(0,vc.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<Lp;c++){if(await jp(Mp),i||a)return null;let u=Jt();if(u&&await Es(u.port))return{url:`http://oss.localhost:${u.port}`,port:u.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 vc,Up,Mp,Lp,Cc=C(()=>{"use strict";vc=require("child_process");pr();Yo();re();Up=3e3,Mp=200,Lp=25});var Gc={};ae(Gc,{countIssueListItems:()=>Ac,detectIssueList:()=>Oc,openInBrowser:()=>gr,parseIssueListPathFromConfig:()=>kc,runStartup:()=>Np});function kc(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 Ac(r){let e=0,t=0,s=r.split(`
94
+ `);for(let o of s)/^\s*- (?:~~)?\[/.test(o)&&(/~~|\*\*Done\*\*/.test(o)?t++:e++);return{availableCount:e,completedCount:t}}function Oc(){let r="",e="auto-detected",t=".claude/oss-autopilot/config.md";if(Dt.existsSync(t))try{let s=Dt.readFileSync(t,"utf-8"),o=kc(s);o&&Dt.existsSync(o)&&(r=o,e="configured")}catch(s){console.error("[STARTUP] Failed to read config:",v(s))}if(!r){let s=["open-source/potential-issue-list.md","oss/issue-list.md","issues.md"];for(let o of s)if(Dt.existsSync(o)){r=o,e="auto-detected";break}}if(r)try{let s=Dt.readFileSync(r,"utf-8"),{availableCount:o,completedCount:n}=Ac(s);return{path:r,source:e,availableCount:o,completedCount:n}}catch(s){return console.error(`[STARTUP] Failed to read issue list at ${r}:`,v(s)),{path:r,source:e,availableCount:0,completedCount:0}}}function gr(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,Pc.execFile)(e,t,s=>{s&&console.error(`[STARTUP] Failed to open dashboard in browser: ${s.message}`)})}async function Np(){let r=We(),e=j(),t=!1;if(!e.isSetupComplete()){let c=await $s();if(c)try{e.initializeWithDefaults(c),t=!0}catch(u){return console.error(`[STARTUP] Auto-detected username "${c}" but failed to save config:`,v(u)),{version:r,setupComplete:!1}}else return{version:r,setupComplete:!1}}let s=et();if(!s)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 o=await nr(s),n,i=!1;if(o.digest.summary.totalActivePRs>0)try{let c=await Sc();c?(n=c.url,gr(c.url),i=!0):console.error("[STARTUP] Dashboard SPA assets not found. Build with: cd packages/dashboard && pnpm run build")}catch(c){console.error("[STARTUP] SPA dashboard launch failed:",v(c))}i&&(o.briefSummary+=" | Dashboard opened in browser");let a=Oc();return{version:r,setupComplete:!0,autoDetected:t,daily:o,dashboardUrl:n,issueList:a}}var Dt,Pc,Xo=C(()=>{"use strict";Dt=z(require("fs"),1),Pc=require("child_process");re();ce();Rs();Cc()});var Kt,$c=C(()=>{"use strict";Kt=class{maxRequests;windowMs;timestamps=[];constructor(e){this.maxRequests=e.maxRequests,this.windowMs=e.windowMs}check(){let e=Date.now(),t=e-this.windowMs;if(this.timestamps=this.timestamps.filter(s=>s>t),this.timestamps.length>=this.maxRequests){let o=this.timestamps[0]+this.windowMs-e;return{allowed:!1,retryAfterSeconds:Math.ceil(o/1e3)}}return this.timestamps.push(e),{allowed:!0}}}});var It={};ae(It,{VALID_TARGETS:()=>Zo,runMove:()=>Hp});async function Hp(r){fe(r.prUrl),we(r.prUrl,it,"PR");let e=r.target;if(!Zo.includes(e))throw new Error(`Invalid target "${r.target}". Must be one of: ${Zo.join(", ")}`);let t=j();switch(e){case"attention":case"waiting":{let s=e==="attention"?"needs_addressing":"waiting_on_maintainer",o=e==="attention"?"Need Attention":"Waiting on Maintainer",n=new Date().toISOString();return t.setStatusOverride(r.prUrl,s,n),t.unshelvePR(r.prUrl),t.save(),{url:r.prUrl,target:e,description:`Moved to ${o}`}}case"shelved":return t.shelvePR(r.prUrl),t.clearStatusOverride(r.prUrl),t.save(),{url:r.prUrl,target:e,description:"Shelved \u2014 excluded from capacity and actionable items"};case"auto":{let s=t.clearStatusOverride(r.prUrl),o=t.unshelvePR(r.prUrl);return(s||o)&&t.save(),{url:r.prUrl,target:e,description:"Reset to computed status"}}default:{let s=e;throw new Error(`Unhandled move target: ${s}`)}}}var Zo,Ft=C(()=>{"use strict";re();je();Zo=["attention","waiting","shelved","auto"]});var Uc={};ae(Uc,{findRunningDashboardServer:()=>lr,getDashboardPidPath:()=>ws,isDashboardServerRunning:()=>Es,readDashboardServerInfo:()=>Jt,removeDashboardServerInfo:()=>ft,startDashboardServer:()=>zp,writeDashboardServerInfo:()=>ur});function Ts(r,e,t,s,o){let n=sc(r,e),i=rc(n),{monthlyMerged:a,monthlyOpened:c,monthlyClosed:u}=oc(e),l=s??No(j().getMergedPRs()),d=o??Ho(j().getClosedPRs()),g=e.config.minStars??50,E=e.repoScores||{},R=D=>!Qe(E[D.repo]?.stargazersCount,g),w=l.filter(R),P=d.filter(R),b=tc(r,e,w.length,P.length),G=e.config.dismissedIssues||{},x=t.filter(D=>D.status==="new_response"&&!(D.url in G)),B={};for(let[D,k]of Object.entries(E))(k.stargazersCount!==void 0||k.language!==void 0)&&(B[D]={stars:k.stargazersCount,language:k.language});return{stats:b,prsByRepo:n,topRepos:i.map(([D,k])=>({repo:D,...k})),monthlyMerged:a,monthlyOpened:c,monthlyClosed:u,activePRs:Gt(r.openPRs||[],e),shelvedPRUrls:e.config.shelvedPRUrls||[],recentlyMergedPRs:r.recentlyMergedPRs||[],recentlyClosedPRs:r.recentlyClosedPRs||[],autoUnshelvedPRs:r.autoUnshelvedPRs||[],commentedIssues:t,issueResponses:x,allMergedPRs:w,allClosedPRs:P,repoMetadata:B}}function Wp(r,e=qp){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 xc(r){r.setHeader("X-Content-Type-Options","nosniff"),r.setHeader("X-Frame-Options","DENY"),r.setHeader("Content-Security-Policy","default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'"),r.setHeader("Referrer-Policy","strict-origin-when-cross-origin")}function Ic(r,e){let t=r.headers.origin;return t?[`http://localhost:${e}`,`http://127.0.0.1:${e}`,`http://oss.localhost:${e}`].includes(t):!0}function mr(r,e,t){xc(r),r.setHeader("Cache-Control","no-store");let s=JSON.stringify(t);r.writeHead(e,{"Content-Type":"application/json","Content-Length":Buffer.byteLength(s)}),r.end(s)}function ie(r,e,t){mr(r,e,{error:t})}async function zp(r){let{port:e,assetsDir:t,token:s,open:o}=r,n=j(),i=ze.resolve(t),a=n.getState().lastDigest,c=[];if(!a)throw new Error("No dashboard data available. Run the daily check first: GITHUB_TOKEN=$(gh auth token) npm start -- daily");let u;try{u=Ts(a,n.getState(),c)}catch(D){throw new Error(`Failed to build dashboard data: ${v(D)}. State data may be corrupted \u2014 try running: daily --json`,{cause:D})}let l=new Kt({maxRequests:30,windowMs:6e4}),d=new Kt({maxRequests:10,windowMs:6e4}),g=new Kt({maxRequests:6,windowMs:6e4}),E=Fc.createServer(async(D,k)=>{let O=D.method||"GET",H=D.url||"/";try{if(H==="/api/data"&&O==="GET"){let U=l.check();if(!U.allowed){k.setHeader("Retry-After",String(U.retryAfterSeconds)),ie(k,429,"Too many requests");return}if(n.reloadIfChanged())try{u=Ts(a,n.getState(),c)}catch(ue){m(ve,`Failed to rebuild dashboard data after state reload: ${v(ue)}`)}mr(k,200,u);return}if(H==="/api/action"&&O==="POST"){if(!Ic(D,G)){ie(k,403,"Invalid origin");return}let U=d.check();if(!U.allowed){k.setHeader("Retry-After",String(U.retryAfterSeconds)),ie(k,429,"Too many requests");return}await R(D,k);return}if(H==="/api/refresh"&&O==="POST"){if(!Ic(D,G)){ie(k,403,"Invalid origin");return}let U=g.check();if(!U.allowed){k.setHeader("Retry-After",String(U.retryAfterSeconds)),ie(k,429,"Too many requests");return}await w(D,k);return}if(O==="GET"){P(H,k);return}ie(k,405,"Method not allowed")}catch(U){m(ve,`Unhandled request error: ${O} ${H} ${v(U)}`),k.headersSent||ie(k,500,"Internal server error")}});E.requestTimeout=Bp;async function R(D,k){n.reloadIfChanged();let O;try{let U=await Wp(D);O=JSON.parse(U)}catch(U){let ue=U instanceof Error&&U.message==="Body too large";ie(k,ue?413:400,ue?"Request body too large":"Invalid JSON body");return}if(!O.action||!Dc.has(O.action)){ie(k,400,`Invalid action. Must be one of: ${[...Dc].join(", ")}`);return}if(!O.url||typeof O.url!="string"){ie(k,400,'Missing or invalid "url" field');return}let H=O.action==="dismiss_issue_response";try{fe(O.url),we(O.url,H?at:it,H?"issue":"PR")}catch(U){U instanceof Z?ie(k,400,U.message):(m(ve,`Unexpected error during URL validation: ${v(U)}`),ie(k,400,"Invalid URL"));return}try{if(O.action==="move"){let{VALID_TARGETS:U,runMove:ue}=await Promise.resolve().then(()=>(Ft(),It));if(!O.target||!U.includes(O.target)){ie(k,400,`move requires a valid "target" field (${U.join(", ")})`);return}await ue({prUrl:O.url,target:O.target})}else n.dismissIssue(O.url,new Date().toISOString()),n.save()}catch(U){m(ve,`Action failed: ${O.action} ${O.url} ${v(U)}`),ie(k,500,"Action failed");return}u=Ts(a,n.getState(),c),mr(k,200,u)}async function w(D,k){let O=s||et();if(!O){ie(k,401,"No GitHub token available. Cannot refresh data.");return}try{n.reloadIfChanged(),m(ve,"Refreshing dashboard data from GitHub...");let H=await jo(O);a=H.digest,c=H.commentedIssues,u=Ts(a,n.getState(),c,H.allMergedPRs,H.allClosedPRs),mr(k,200,u)}catch(H){m(ve,`Dashboard refresh failed: ${v(H)}`),ie(k,500,"Refresh failed")}}function P(D,k){let O;try{O=decodeURIComponent(D.split("?")[0])}catch{m(ve,`Malformed URL received: ${D}`),ie(k,400,"Malformed URL");return}if(O.includes("..")){ie(k,403,"Forbidden");return}let H=O==="/"?"index.html":O.replace(/^\/+/,""),U=ze.join(i,H);if(!U.startsWith(i+ze.sep)&&U!==i){ie(k,403,"Forbidden");return}try{hr.statSync(U).isDirectory()&&(U=ze.join(i,"index.html"))}catch(A){if(A.code==="ENOENT")U=ze.join(i,"index.html");else{m(ve,`Failed to stat file: ${U}`),ie(k,500,"Internal server error");return}}let ue=ze.extname(U).toLowerCase(),_e=Vp[ue]||"application/octet-stream";try{let A=hr.readFileSync(U);xc(k),k.writeHead(200,{"Content-Type":_e,"Content-Length":A.length,"Cache-Control":"public, max-age=3600"}),k.end(A)}catch(A){A.code==="ENOENT"?ie(k,404,"Not found"):(m(ve,`Failed to serve static file: ${U}`),ie(k,500,"Failed to read file"))}}let b=10,G=e;for(let D=0;D<b;D++)try{await new Promise((k,O)=>{E.once("error",O),E.listen(G,"127.0.0.1",()=>k())});break}catch(k){let O=k;if(O.code==="EADDRINUSE"&&D<b-1){m(ve,`Port ${G} is in use, trying ${G+1}...`),G++;continue}throw new Error(`Failed to start server: ${O.message}`,{cause:k})}ur({pid:process.pid,port:G,startedAt:new Date().toISOString(),version:We()});let x=`http://oss.localhost:${G}`;m(ve,`Dashboard server running at ${x} (also: http://localhost:${G})`),s&&jo(s).then(D=>{n.reloadIfChanged(),a=D.digest,c=D.commentedIssues,u=Ts(a,n.getState(),c,D.allMergedPRs,D.allClosedPRs),m(ve,"Background data refresh complete")}).catch(D=>{m(ve,`Background data refresh failed (serving cached data): ${v(D)}`)}),o&&gr(x);let B=()=>{m(ve,"Shutting down dashboard server..."),ft(),E.close(()=>{process.exit(0)}),setTimeout(()=>process.exit(0),3e3).unref()};process.on("SIGINT",B),process.on("SIGTERM",B)}var Fc,hr,ze,Dc,ve,qp,Bp,Vp,Mc=C(()=>{"use strict";Fc=z(require("http"),1),hr=z(require("fs"),1),ze=z(require("path"),1);re();ce();le();je();qo();Xo();pr();$c();Ye();pr();Dc=new Set(["move","dismiss_issue_response"]),ve="dashboard-server",qp=10240,Bp=3e4,Vp={".html":"text/html",".js":"application/javascript",".css":"text/css",".svg":"image/svg+xml",".json":"application/json",".png":"image/png",".ico":"image/x-icon"}});var Lc={};ae(Lc,{resolveAssetsDir:()=>dr,serveDashboard:()=>Jp});function dr(){let r=Ne.resolve(__dirname,"../../dashboard/dist");if(fr.existsSync(Ne.join(r,"index.html")))return r;let e=Ne.resolve(Ne.dirname(process.argv[1]),"../../dashboard/dist");if(fr.existsSync(Ne.join(e,"index.html")))return e;try{let t=require.resolve("@oss-autopilot/dashboard/package.json"),s=Ne.join(Ne.dirname(t),"dist");if(fr.existsSync(Ne.join(s,"index.html")))return s}catch(t){t.code!=="MODULE_NOT_FOUND"&&console.error("Error resolving dashboard package:",t)}return null}async function Jp(r){let e=dr();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=et(),{startDashboardServer:s}=await Promise.resolve().then(()=>(Mc(),Uc));await s({port:r.port,assetsDir:e,token:t,open:r.open})}var fr,Ne,Yo=C(()=>{"use strict";fr=z(require("fs"),1),Ne=z(require("path"),1);re()});var Hc={};ae(Hc,{parseIssueList:()=>Nc,runParseList:()=>Xp});function Kp(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 Qp(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 Yp(r){return!!(/~~.+~~/.test(r)||/\[[xX]\]/.test(r)||/\bdone\b/i.test(r))}function Nc(r){let e=r.split(`
95
+ `),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=Kp(n);if(!a)continue;let c=Qp(n),u={repo:a.repo,number:a.number,title:c||`#${a.number}`,tier:o,url:a.url};Yp(n)?s.push(u):t.push(u)}return{available:t,completed:s,availableCount:t.length,completedCount:s.length}}async function Xp(r){let e=jc.resolve(r.filePath);if(!br.existsSync(e))throw new Error(`File not found: ${e}`);let t;try{t=br.readFileSync(e,"utf-8")}catch(s){let o=v(s);throw new Error(`Failed to read file: ${o}`,{cause:s})}return Nc(t)}var br,jc,qc=C(()=>{"use strict";br=z(require("fs"),1),jc=z(require("path"),1);ce()});var Bc={};ae(Bc,{runCheckIntegration:()=>rd});function td(r){let e=ke.extname(r),t=ke.basename(r,e);return t==="index"?ke.basename(ke.dirname(r)):t}function sd(r,e){let t=ke.dirname(r),s=[];for(let n of[".ts",".tsx",".js",".jsx"]){let i=ke.join(t,`index${n}`);e.includes(i)&&s.push(i)}let o=ke.dirname(t);for(let n of[".ts",".tsx",".js",".jsx"]){let i=ke.join(o,`index${n}`);e.includes(i)&&s.push(i)}return[...new Set(s)]}async function rd(r){let e=r.base,t;try{let a=(0,yr.execFileSync)("git",["diff","--name-only","--diff-filter=A",`${e}...HEAD`],{encoding:"utf-8",timeout:1e4}).trim();t=a?a.split(`
96
+ `).filter(Boolean):[]}catch(a){let c=v(a);throw new Error(`Failed to run git diff: ${c}`,{cause:a})}let s=t.filter(a=>{let c=ke.extname(a);return Zp.has(c)?!ed.some(u=>u.test(a)):!1});if(s.length===0)return{newFiles:[],unreferencedCount:0};let o;try{o=(0,yr.execFileSync)("git",["ls-files"],{encoding:"utf-8",timeout:1e4}).trim().split(`
97
+ `).filter(Boolean)}catch(a){T("check-integration","git ls-files failed, reference checking will be skipped",a),o=[]}let n=[];for(let a of s){let c=td(a),u=a.replace(/\.[^.]+$/,""),l=[],d=[c];u.includes("/")&&d.push(u);for(let R of d)try{let w=(0,yr.execFileSync)("git",["grep","-l","--",R],{encoding:"utf-8",timeout:1e4}).trim();if(w){let P=w.split(`
98
+ `).filter(b=>b!==a);l.push(...P)}}catch(w){let P=w&&typeof w=="object"&&"status"in w?w.status:void 0;if(P!==void 0&&P!==1){let b=v(w);T("check-integration",`git grep failed for "${R}": ${b}`)}}l=[...new Set(l)];let g=l.length>0,E={path:a,referencedBy:l,isIntegrated:g};g||(E.suggestedEntryPoints=sd(a,o)),n.push(E)}let i=n.filter(a=>!a.isIntegrated).length;return{newFiles:n,unreferencedCount:i}}var ke,yr,Zp,ed,Vc=C(()=>{"use strict";ke=z(require("path"),1),yr=require("child_process");re();ce();Zp=new Set([".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".rb",".go",".rs",".java",".kt",".vue",".svelte"]),ed=[/^\./,/\.(test|spec|e2e)\.[^.]+$/,/\.(config|rc)\.[^.]+$/,/__tests__\//,/\.d\.ts$/,/\.md$/,/\.json$/,/\.ya?ml$/]});var zc={};ae(zc,{runLocalRepos:()=>ad,scanForRepos:()=>Wc});function nd(r){try{let e=(0,_r.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 T("local-repos",`Failed to get GitHub remote for ${r}`,e),null}}function id(r){try{return(0,_r.execFileSync)("git",["-C",r,"branch","--show-current"],{encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}).trim()||null}catch(e){return T("local-repos",`Failed to get current branch for ${r}`,e),null}}function Wc(r){let e={};for(let t of r){if(!en.existsSync(t))continue;let s;try{let o=(0,_r.execFileSync)("find",[t,"-maxdepth","4","-name",".git","-type","d"],{encoding:"utf-8",timeout:3e4,stdio:["pipe","pipe","pipe"]}).trim();s=o?o.split(`
99
+ `).filter(Boolean):[]}catch(o){T("local-repos",`find failed for scan path ${t}`,o);continue}for(let o of s){let n=He.dirname(o),i=nd(n);if(!i)continue;let a=id(n);e[i]={path:n,exists:!0,currentBranch:a}}}return e}async function ad(r){let e=j(),t=e.getState(),s=r.paths?.map(i=>He.resolve(i))??t.config.localRepoScanPaths??od.filter(i=>en.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=Wc(s),n=new Date().toISOString();try{e.setLocalRepoCache({repos:o,scanPaths:s,cachedAt:n}),e.save()}catch(i){let a=v(i);console.error(`Warning: Failed to cache scan results: ${a}`)}return{repos:o,scanPaths:s,cachedAt:n,fromCache:!1}}var en,He,xt,_r,od,Jc=C(()=>{"use strict";en=z(require("fs"),1),He=z(require("path"),1),xt=z(require("os"),1),_r=require("child_process");re();ce();od=[He.join(xt.homedir(),"Documents","oss"),He.join(xt.homedir(),"dev"),He.join(xt.homedir(),"projects"),He.join(xt.homedir(),"src"),He.join(xt.homedir(),"code"),He.join(xt.homedir(),"repos")]});var tn={};ae(tn,{runDismiss:()=>cd,runUndismiss:()=>ud});async function cd(r){fe(r.url),we(r.url,at,"issue");let e=j(),t=e.dismissIssue(r.url,new Date().toISOString());return t&&e.save(),{dismissed:t,url:r.url}}async function ud(r){fe(r.url),we(r.url,at,"issue");let e=j(),t=e.undismissIssue(r.url);return t&&e.save(),{undismissed:t,url:r.url}}var sn=C(()=>{"use strict";re();je()});var Kc={};ae(Kc,{runPRTemplate:()=>ld});async function ld(r){let{owner:e,repo:t}=Mt(r.repo),s=ye(),o=he(s);return Fo(o,e,t)}var Qc=C(()=>{"use strict";Ht();Ee();xo()});var Yc={};ae(Yc,{formatStatsBadge:()=>md,formatStatsMarkdown:()=>dd,runStats:()=>pd});async function pd(){let e=j().getState(),t=e.lastDigest?.summary?.totalActivePRs??0,s=Do({repoScores:e.repoScores??{},activePRCount:t});return{...s,mergeRateFormatted:`${(s.mergeRate*100).toFixed(1)}%`,username:e.config.githubUsername}}function dd(r){let e=[`# OSS Contribution Stats for @${r.username}`,"","| Metric | Value |","|--------|-------|",`| Merged PRs | ${r.totalMerged} |`,`| Merge Rate | ${r.mergeRateFormatted} |`,`| Active PRs | ${r.activePRs} |`,`| Repos Contributed | ${r.reposContributed} |`,""];if(r.topRepos.length>0){e.push("## Top Repos","","| Repo | Merged PRs |","|------|-----------|");for(let t of r.topRepos)e.push(`| ${t.repo} | ${t.mergedCount} |`);e.push("")}return e.push("---","*Generated by [OSS Autopilot](https://github.com/costajohnt/oss-autopilot)*"),e.join(`
100
+ `)}function gd(r){return r.totalMerged===0?"blue":r.mergeRate>=.8?"brightgreen":r.mergeRate>=.6?"green":r.mergeRate>=.4?"yellow":"orange"}function md(r){return{schemaVersion:1,label:"OSS Contributions",message:r.totalMerged>0?`${r.mergeRateFormatted} merge rate | ${r.totalMerged} merged`:"Getting Started",color:gd(r)}}var Xc=C(()=>{"use strict";re();Io()});var Cn=z(Sn(),1),{program:Pd,createCommand:kd,createArgument:Ad,createOption:Od,CommanderError:Gd,InvalidArgumentError:$d,InvalidOptionArgumentError:Dd,Command:Pn,Argument:Id,Option:Fd,Help:xd}=Cn.default;re();ce();Uo();function Y(r,e){let t=v(r);e?ec(t):console.error(`Error: ${t}`),process.exit(1)}function Zc(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}`)}}var rn=[{name:"daily",register(r){r.command("daily").description("Run daily check on all tracked PRs").option("--json","Output as JSON").action(async e=>{try{if(e.json){let{runDaily:t}=await Promise.resolve().then(()=>(Rs(),Bo)),s=await t();Q(s)}else{let{runDailyForDisplay:t,printDigest:s}=await Promise.resolve().then(()=>(Rs(),Bo)),o=await t();s(o.digest,o.capacity,o.commentedIssues)}}catch(t){Y(t,e.json)}})}},{name:"status",localOnly:!0,register(r){r.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 e=>{try{let{runStatus:t}=await Promise.resolve().then(()=>(ac(),ic)),s=await t({offline:e.offline});e.json?Q(s):(console.log(`
101
101
  \u{1F4CA} OSS Status
102
102
  `),console.log(`Merged PRs: ${s.stats.mergedPRs}`),console.log(`Closed PRs: ${s.stats.closedPRs}`),console.log(`Merge Rate: ${s.stats.mergeRate}`),console.log(`Needs Response: ${s.stats.needsResponse}`),s.offline?(console.log(`
103
103
  Last Updated: ${s.lastUpdated||"Never"}`),console.log("(Offline mode: showing cached data)")):console.log(`
104
104
  Last Run: ${s.lastRunAt||"Never"}`),console.log(`
105
- Run with --json for structured output`))}catch(t){Q(t,e.json)}})}},{name:"search",register(r){r.command("search [count]").description("Search for new issues to work on").option("--json","Output as JSON").action(async(e,t)=>{try{let{runSearch:s}=await Promise.resolve().then(()=>(nc(),oc)),o=5;if(e!==void 0){let a=Number(e);if(!Number.isFinite(a)||a<1||!Number.isInteger(a))throw new Error(`Invalid count "${e}". Must be a positive integer.`);o=a}let n=100;o>n&&(console.warn(`Capping search to ${n} results (requested: ${o})`),o=n),t.json||console.log(`
105
+ Run with --json for structured output`))}catch(t){Y(t,e.json)}})}},{name:"search",register(r){r.command("search [count]").description("Search for new issues to work on").option("--json","Output as JSON").action(async(e,t)=>{try{let{runSearch:s}=await Promise.resolve().then(()=>(uc(),cc)),o=5;if(e!==void 0){let a=Number(e);if(!Number.isFinite(a)||a<1||!Number.isInteger(a))throw new Error(`Invalid count "${e}". Must be a positive integer.`);o=a}let n=100;o>n&&(console.warn(`Capping search to ${n} results (requested: ${o})`),o=n),t.json||console.log(`
106
106
  Searching for issues (max ${o})...
107
- `);let i=await s({maxResults:o});if(t.json)K(i);else{if(i.candidates.length===0){i.rateLimitWarning?console.warn(`
107
+ `);let i=await s({maxResults:o});if(t.json)Q(i);else{if(i.candidates.length===0){i.rateLimitWarning?console.warn(`
108
108
  ${i.rateLimitWarning}
109
109
  `):console.log("No matching issues found.");return}i.rateLimitWarning&&console.warn(`
110
110
  ${i.rateLimitWarning}
111
111
  `),console.log(`Found ${i.candidates.length} candidates:
112
- `);for(let a of i.candidates){let{issue:c,recommendation:u,reasonsToApprove:l,reasonsToSkip:d,viabilityScore:g}=a;console.log(`[${u.toUpperCase()}] ${c.repo}#${c.number}: ${c.title}`),console.log(` URL: ${c.url}`),console.log(` Viability: ${g}/100`),l.length>0&&console.log(` Approve: ${l.join(", ")}`),d.length>0&&console.log(` Skip: ${d.join(", ")}`),console.log("---")}}}catch(s){Q(s,t.json)}})}},{name:"vet",register(r){r.command("vet <issue-url>").description("Vet a specific issue before working on it").option("--json","Output as JSON").action(async(e,t)=>{try{let{runVet:s}=await Promise.resolve().then(()=>(pc(),lc)),o=await s({issueUrl:e});if(t.json)K(o);else{let{issue:n,recommendation:i,reasonsToApprove:a,reasonsToSkip:c}=o;console.log(`
112
+ `);for(let a of i.candidates){let{issue:c,recommendation:u,reasonsToApprove:l,reasonsToSkip:d,viabilityScore:g}=a;console.log(`[${u.toUpperCase()}] ${c.repo}#${c.number}: ${c.title}`),console.log(` URL: ${c.url}`),console.log(` Viability: ${g}/100`),l.length>0&&console.log(` Approve: ${l.join(", ")}`),d.length>0&&console.log(` Skip: ${d.join(", ")}`),console.log("---")}}}catch(s){Y(s,t.json)}})}},{name:"vet",register(r){r.command("vet <issue-url>").description("Vet a specific issue before working on it").option("--json","Output as JSON").action(async(e,t)=>{try{let{runVet:s}=await Promise.resolve().then(()=>(hc(),mc)),o=await s({issueUrl:e});if(t.json)Q(o);else{let{issue:n,recommendation:i,reasonsToApprove:a,reasonsToSkip:c}=o;console.log(`
113
113
  Vetting issue: ${e}
114
- `),console.log(`[${i.toUpperCase()}] ${n.repo}#${n.number}: ${n.title}`),console.log(` URL: ${n.url}`),a.length>0&&console.log(` Approve: ${a.join(", ")}`),c.length>0&&console.log(` Skip: ${c.join(", ")}`)}}catch(s){Q(s,t.json)}})}},{name:"track",register(r){r.command("track <pr-url>").description("Add a PR to track").option("--json","Output as JSON").action(async(e,t)=>{try{let{runTrack:s}=await Promise.resolve().then(()=>(zo(),Wo)),o=await s({prUrl:e});t.json?K(o):(console.log(`
115
- PR: ${o.pr.repo}#${o.pr.number} - ${o.pr.title}`),console.log("Note: In v2, PRs are tracked automatically via the daily run."))}catch(s){Q(s,t.json)}})}},{name:"untrack",localOnly:!0,register(r){r.command("untrack <pr-url>").description("Stop tracking a PR").option("--json","Output as JSON").action(async(e,t)=>{try{let{runUntrack:s}=await Promise.resolve().then(()=>(zo(),Wo)),o=await s({prUrl:e});t.json?K(o):(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(s){Q(s,t.json)}})}},{name:"read",localOnly:!0,register(r){r.command("read [pr-url]").description("Mark PR comments as read").option("--all","Mark all PRs as read").option("--json","Output as JSON").action(async(e,t)=>{try{let{runRead:s}=await Promise.resolve().then(()=>(gc(),dc)),o=await s({prUrl:e,all:t.all});t.json?K(o):console.log("Note: In v2, PR read state is not tracked locally. PRs are fetched fresh on each daily run.")}catch(s){Q(s,t.json)}})}},{name:"comments",register(r){r.command("comments <pr-url>").description("Show all comments on a PR").option("--bots","Include bot comments").option("--json","Output as JSON").action(async(e,t)=>{try{let{runComments:s}=await Promise.resolve().then(()=>(ar(),ir)),o=await s({prUrl:e,showBots:t.bots});if(t.json)K(o);else{let{formatRelativeTime:n}=await Promise.resolve().then(()=>(Ee(),On));console.log(`
114
+ `),console.log(`[${i.toUpperCase()}] ${n.repo}#${n.number}: ${n.title}`),console.log(` URL: ${n.url}`),a.length>0&&console.log(` Approve: ${a.join(", ")}`),c.length>0&&console.log(` Skip: ${c.join(", ")}`)}}catch(s){Y(s,t.json)}})}},{name:"track",register(r){r.command("track <pr-url>").description("Add a PR to track").option("--json","Output as JSON").action(async(e,t)=>{try{let{runTrack:s}=await Promise.resolve().then(()=>(zo(),Wo)),o=await s({prUrl:e});t.json?Q(o):(console.log(`
115
+ PR: ${o.pr.repo}#${o.pr.number} - ${o.pr.title}`),console.log("Note: In v2, PRs are tracked automatically via the daily run."))}catch(s){Y(s,t.json)}})}},{name:"untrack",localOnly:!0,register(r){r.command("untrack <pr-url>").description("Stop tracking a PR").option("--json","Output as JSON").action(async(e,t)=>{try{let{runUntrack:s}=await Promise.resolve().then(()=>(zo(),Wo)),o=await s({prUrl:e});t.json?Q(o):(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(s){Y(s,t.json)}})}},{name:"read",localOnly:!0,register(r){r.command("read [pr-url]").description("Mark PR comments as read").option("--all","Mark all PRs as read").option("--json","Output as JSON").action(async(e,t)=>{try{let{runRead:s}=await Promise.resolve().then(()=>(bc(),fc)),o=await s({prUrl:e,all:t.all});t.json?Q(o):console.log("Note: In v2, PR read state is not tracked locally. PRs are fetched fresh on each daily run.")}catch(s){Y(s,t.json)}})}},{name:"comments",register(r){r.command("comments <pr-url>").description("Show all comments on a PR").option("--bots","Include bot comments").option("--json","Output as JSON").action(async(e,t)=>{try{let{runComments:s}=await Promise.resolve().then(()=>(ar(),ir)),o=await s({prUrl:e,showBots:t.bots});if(t.json)Q(o);else{let{formatRelativeTime:n}=await Promise.resolve().then(()=>(Ee(),On));console.log(`
116
116
  Fetching comments for: ${e}
117
117
  `),console.log(`## ${o.pr.title}
118
118
  `),console.log(`**Status:** ${o.pr.state} | **Mergeable:** ${o.pr.mergeable??"checking..."}`),console.log(`**Branch:** ${o.pr.head} -> ${o.pr.base}`),console.log(`**URL:** ${o.pr.url}
@@ -128,36 +128,36 @@ Fetching comments for: ${e}
128
128
  `).join(`
129
129
  > `)}
130
130
  `)}}o.reviewComments.length===0&&o.issueComments.length===0&&o.reviews.length===0&&console.log(`No comments from other users.
131
- `),console.log("---"),console.log(`**Summary:** ${o.summary.reviewCount} reviews, ${o.summary.inlineCommentCount} inline comments, ${o.summary.discussionCommentCount} discussion comments`)}}catch(s){Q(s,t.json)}})}},{name:"post",register(r){r.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(e,t,s)=>{try{let o;if(s.stdin){let a=[];for await(let c of process.stdin)a.push(c);o=Buffer.concat(a).toString("utf-8").trim()}else o=t.join(" ");let{runPost:n}=await Promise.resolve().then(()=>(ar(),ir)),i=await n({url:e,message:o});s.json?K(i):console.log(`Comment posted: ${i.commentUrl}`)}catch(o){Q(o,s.json)}})}},{name:"claim",register(r){r.command("claim <issue-url> [message...]").description("Claim an issue by posting a comment").option("--json","Output as JSON").action(async(e,t,s)=>{try{let{runClaim:o}=await Promise.resolve().then(()=>(ar(),ir)),n=t.length>0?t.join(" "):void 0,i=await o({issueUrl:e,message:n});s.json?K(i):console.log(`Issue claimed: ${i.commentUrl}`)}catch(o){Q(o,s.json)}})}},{name:"config",localOnly:!0,register(r){r.command("config [key] [value]").description("Show or update configuration").option("--json","Output as JSON").action(async(e,t,s)=>{try{let{runConfig:o}=await Promise.resolve().then(()=>(hc(),mc)),n=await o({key:e,value:t});s.json?K(n):"config"in n?(console.log(`
131
+ `),console.log("---"),console.log(`**Summary:** ${o.summary.reviewCount} reviews, ${o.summary.inlineCommentCount} inline comments, ${o.summary.discussionCommentCount} discussion comments`)}}catch(s){Y(s,t.json)}})}},{name:"post",register(r){r.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(e,t,s)=>{try{let o;if(s.stdin){let a=[];for await(let c of process.stdin)a.push(c);o=Buffer.concat(a).toString("utf-8").trim()}else o=t.join(" ");let{runPost:n}=await Promise.resolve().then(()=>(ar(),ir)),i=await n({url:e,message:o});s.json?Q(i):console.log(`Comment posted: ${i.commentUrl}`)}catch(o){Y(o,s.json)}})}},{name:"claim",register(r){r.command("claim <issue-url> [message...]").description("Claim an issue by posting a comment").option("--json","Output as JSON").action(async(e,t,s)=>{try{let{runClaim:o}=await Promise.resolve().then(()=>(ar(),ir)),n=t.length>0?t.join(" "):void 0,i=await o({issueUrl:e,message:n});s.json?Q(i):console.log(`Issue claimed: ${i.commentUrl}`)}catch(o){Y(o,s.json)}})}},{name:"config",localOnly:!0,register(r){r.command("config [key] [value]").description("Show or update configuration").option("--json","Output as JSON").action(async(e,t,s)=>{try{let{runConfig:o}=await Promise.resolve().then(()=>(_c(),yc)),n=await o({key:e,value:t});s.json?Q(n):"config"in n?(console.log(`
132
132
  \u2699\uFE0F Current Configuration:
133
- `),console.log(JSON.stringify(n.config,null,2))):console.log(`Set ${n.key} to: ${n.value}`)}catch(o){Q(o,s.json)}})}},{name:"init",register(r){r.command("init <username>").description("Initialize with your GitHub username and import open PRs").option("--json","Output as JSON").action(async(e,t)=>{try{let{runInit:s}=await Promise.resolve().then(()=>(bc(),fc)),o=await s({username:e});t.json?K(o):(console.log(`
134
- Username set to @${o.username}.`),console.log("Run `oss-autopilot daily` to fetch your open PRs from GitHub."))}catch(s){Q(s,t.json)}})}},{name:"setup",localOnly:!0,register(r){r.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 e=>{try{let{runSetup:t}=await Promise.resolve().then(()=>(Qo(),Ko)),s=await t({reset:e.reset,set:e.set});if(e.json)K(s);else if("success"in s){for(let[o,n]of Object.entries(s.settings))console.log(`\u2713 ${o}: ${n}`);if(s.warnings)for(let o of s.warnings)console.warn(o)}else if("setupComplete"in s&&s.setupComplete)console.log(`
133
+ `),console.log(JSON.stringify(n.config,null,2))):console.log(`Set ${n.key} to: ${n.value}`)}catch(o){Y(o,s.json)}})}},{name:"init",register(r){r.command("init <username>").description("Initialize with your GitHub username and import open PRs").option("--json","Output as JSON").action(async(e,t)=>{try{let{runInit:s}=await Promise.resolve().then(()=>(wc(),Rc)),o=await s({username:e});t.json?Q(o):(console.log(`
134
+ Username set to @${o.username}.`),console.log("Run `oss-autopilot daily` to fetch your open PRs from GitHub."))}catch(s){Y(s,t.json)}})}},{name:"setup",localOnly:!0,register(r){r.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 e=>{try{let{runSetup:t}=await Promise.resolve().then(()=>(Qo(),Ko)),s=await t({reset:e.reset,set:e.set});if(e.json)Q(s);else if("success"in s){for(let[o,n]of Object.entries(s.settings))console.log(`\u2713 ${o}: ${n}`);if(s.warnings)for(let o of s.warnings)console.warn(o)}else if("setupComplete"in s&&s.setupComplete)console.log(`
135
135
  \u2699\uFE0F OSS Autopilot Setup
136
136
  `),console.log(`\u2713 Setup already complete!
137
137
  `),console.log("Current settings:"),console.log(` GitHub username: ${s.config.githubUsername||"(not set)"}`),console.log(` Max active PRs: ${s.config.maxActivePRs}`),console.log(` Dormant threshold: ${s.config.dormantThresholdDays} days`),console.log(` Approaching dormant: ${s.config.approachingDormantDays} days`),console.log(` Languages: ${s.config.languages.join(", ")}`),console.log(` Labels: ${s.config.labels.join(", ")}`),console.log(`
138
138
  Run 'setup --reset' to reconfigure.`);else if("setupRequired"in s){console.log(`
139
139
  \u2699\uFE0F OSS Autopilot Setup
140
140
  `),console.log("SETUP_REQUIRED"),console.log("---"),console.log(`Please configure the following settings:
141
- `);for(let o of s.prompts){console.log(`SETTING: ${o.setting}`),console.log(`PROMPT: ${o.prompt}`);let n=Array.isArray(o.current)?o.current.join(", "):o.current;if(console.log(`CURRENT: ${n??"(not set)"}`),o.required&&console.log("REQUIRED: true"),o.default!==void 0){let i=Array.isArray(o.default)?o.default.join(", "):o.default;console.log(`DEFAULT: ${i}`)}o.type&&console.log(`TYPE: ${o.type}`),console.log("")}console.log("---"),console.log("END_SETUP_PROMPTS")}}catch(t){Q(t,e.json)}})}},{name:"checkSetup",localOnly:!0,register(r){r.command("checkSetup").description("Check if setup is complete").option("--json","Output as JSON").action(async e=>{try{let{runCheckSetup:t}=await Promise.resolve().then(()=>(Qo(),Ko)),s=await t();e.json?K(s):s.setupComplete?(console.log("SETUP_COMPLETE"),console.log(`username=${s.username}`)):console.log("SETUP_INCOMPLETE")}catch(t){Q(t,e.json)}})}},{name:"serve",localOnly:!0,register(r){r.command("dashboard").description("Dashboard commands").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 t=>{try{let s=parseInt(t.port,10);(isNaN(s)||s<1||s>65535)&&(console.error(`Invalid port number: "${t.port}". Must be an integer between 1 and 65535.`),process.exit(1));let{serveDashboard:o}=await Promise.resolve().then(()=>(Yo(),Fc));await o({port:s,open:t.open})}catch(s){Q(s)}})}},{name:"parse-issue-list",localOnly:!0,register(r){r.command("parse-issue-list <path>").description("Parse a markdown issue list into structured JSON").option("--json","Output as JSON").action(async(e,t)=>{try{let{runParseList:s}=await Promise.resolve().then(()=>(Lc(),Mc)),o=await s({filePath:e});if(t.json)K(o);else{let i=(await import("path")).resolve(e);if(console.log(`
141
+ `);for(let o of s.prompts){console.log(`SETTING: ${o.setting}`),console.log(`PROMPT: ${o.prompt}`);let n=Array.isArray(o.current)?o.current.join(", "):o.current;if(console.log(`CURRENT: ${n??"(not set)"}`),o.required&&console.log("REQUIRED: true"),o.default!==void 0){let i=Array.isArray(o.default)?o.default.join(", "):o.default;console.log(`DEFAULT: ${i}`)}o.type&&console.log(`TYPE: ${o.type}`),console.log("")}console.log("---"),console.log("END_SETUP_PROMPTS")}}catch(t){Y(t,e.json)}})}},{name:"checkSetup",localOnly:!0,register(r){r.command("checkSetup").description("Check if setup is complete").option("--json","Output as JSON").action(async e=>{try{let{runCheckSetup:t}=await Promise.resolve().then(()=>(Qo(),Ko)),s=await t();e.json?Q(s):s.setupComplete?(console.log("SETUP_COMPLETE"),console.log(`username=${s.username}`)):console.log("SETUP_INCOMPLETE")}catch(t){Y(t,e.json)}})}},{name:"serve",localOnly:!0,register(r){r.command("dashboard").description("Dashboard commands").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 t=>{try{let s=parseInt(t.port,10);(isNaN(s)||s<1||s>65535)&&(console.error(`Invalid port number: "${t.port}". Must be an integer between 1 and 65535.`),process.exit(1));let{serveDashboard:o}=await Promise.resolve().then(()=>(Yo(),Lc));await o({port:s,open:t.open})}catch(s){Y(s)}})}},{name:"parse-issue-list",localOnly:!0,register(r){r.command("parse-issue-list <path>").description("Parse a markdown issue list into structured JSON").option("--json","Output as JSON").action(async(e,t)=>{try{let{runParseList:s}=await Promise.resolve().then(()=>(qc(),Hc)),o=await s({filePath:e});if(t.json)Q(o);else{let i=(await import("path")).resolve(e);if(console.log(`
142
142
  \u{1F4CB} Issue List: ${i}
143
143
  `),console.log(`Available: ${o.availableCount} | Completed: ${o.completedCount}
144
144
  `),o.available.length>0){console.log("--- Available ---");for(let a of o.available)console.log(` [${a.tier}] ${a.repo}#${a.number}: ${a.title}`)}if(o.completed.length>0){console.log(`
145
- --- Completed ---`);for(let a of o.completed)console.log(` [${a.tier}] ${a.repo}#${a.number}: ${a.title}`)}}}catch(s){Q(s,t.json)}})}},{name:"check-integration",localOnly:!0,register(r){r.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 e=>{try{let{runCheckIntegration:t}=await Promise.resolve().then(()=>(Nc(),jc)),s=await t({base:e.base});if(e.json)K(s);else if(s.newFiles.length===0)console.log(`
145
+ --- Completed ---`);for(let a of o.completed)console.log(` [${a.tier}] ${a.repo}#${a.number}: ${a.title}`)}}}catch(s){Y(s,t.json)}})}},{name:"check-integration",localOnly:!0,register(r){r.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 e=>{try{let{runCheckIntegration:t}=await Promise.resolve().then(()=>(Vc(),Bc)),s=await t({base:e.base});if(e.json)Q(s);else if(s.newFiles.length===0)console.log(`
146
146
  No new code files to check.`);else{console.log(`
147
147
  \u{1F50D} Integration Check (base: ${e.base})
148
148
  `),console.log(`New files: ${s.newFiles.length} | Unreferenced: ${s.unreferencedCount}
149
- `);for(let o of s.newFiles){let n=o.isIntegrated?"\u2705":"\u26A0\uFE0F";console.log(`${n} ${o.path}`),o.isIntegrated?console.log(` Referenced by: ${o.referencedBy.join(", ")}`):(console.log(" Not referenced by any file"),o.suggestedEntryPoints&&o.suggestedEntryPoints.length>0&&console.log(` Suggested entry points: ${o.suggestedEntryPoints.join(", ")}`))}}}catch(t){Q(t,e.json)}})}},{name:"local-repos",localOnly:!0,register(r){r.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 e=>{try{let{runLocalRepos:t}=await Promise.resolve().then(()=>(Bc(),qc)),s=await t({scan:e.scan,paths:e.paths});e.json?K(s):s.fromCache?(console.log(`
149
+ `);for(let o of s.newFiles){let n=o.isIntegrated?"\u2705":"\u26A0\uFE0F";console.log(`${n} ${o.path}`),o.isIntegrated?console.log(` Referenced by: ${o.referencedBy.join(", ")}`):(console.log(" Not referenced by any file"),o.suggestedEntryPoints&&o.suggestedEntryPoints.length>0&&console.log(` Suggested entry points: ${o.suggestedEntryPoints.join(", ")}`))}}}catch(t){Y(t,e.json)}})}},{name:"local-repos",localOnly:!0,register(r){r.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 e=>{try{let{runLocalRepos:t}=await Promise.resolve().then(()=>(Jc(),zc)),s=await t({scan:e.scan,paths:e.paths});e.json?Q(s):s.fromCache?(console.log(`
150
150
  \u{1F4C1} Local Repos (cached ${s.cachedAt})
151
- `),Kc(s.repos)):(console.log(`Found ${Object.keys(s.repos).length} repos:
152
- `),Kc(s.repos))}catch(t){Q(t,e.json)}})}},{name:"startup",localOnly:!0,register(r){r.command("startup").description("Run all pre-flight checks and daily fetch in one call").option("--json","Output as JSON").action(async e=>{try{let{runStartup:t}=await Promise.resolve().then(()=>(Xo(),Pc)),s=await t();e.json?K(s):s.setupComplete?s.authError?console.error(`Error: ${s.authError}`):(console.log(`OSS Autopilot v${s.version}`),console.log(s.daily?.briefSummary??"")):console.log("Setup incomplete. Run /setup-oss first.")}catch(t){Q(t,e.json)}})}},{name:"shelve",localOnly:!0,register(r){r.command("shelve <pr-url>").description("Shelve a PR (exclude from capacity and actionable issues)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runMove:s}=await Promise.resolve().then(()=>(Ft(),It)),o=await s({prUrl:e,target:"shelved"});t.json?K(o):console.log(o.description)}catch(s){Q(s,t.json)}})}},{name:"unshelve",localOnly:!0,register(r){r.command("unshelve <pr-url>").description("Unshelve a PR (include in capacity and actionable issues again)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runMove:s}=await Promise.resolve().then(()=>(Ft(),It)),o=await s({prUrl:e,target:"auto"});t.json?K(o):console.log(o.description)}catch(s){Q(s,t.json)}})}},{name:"move",localOnly:!0,register(r){r.command("move <pr-url> <target>").description("Move a PR between states: attention, waiting, shelved, or auto (reset to computed)").option("--json","Output as JSON").action(async(e,t,s)=>{try{let{runMove:o}=await Promise.resolve().then(()=>(Ft(),It)),n=await o({prUrl:e,target:t});s.json?K(n):console.log(n.description)}catch(o){Q(o,s.json)}})}},{name:"dismiss",localOnly:!0,register(r){r.command("dismiss <url>").description("Dismiss notifications for an issue (resurfaces on new activity)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runDismiss:s}=await Promise.resolve().then(()=>(sn(),tn)),o=await s({url:e});t.json?K(o):o.dismissed?(console.log(`Dismissed: ${e}`),console.log("Notifications are now muted."),console.log("New responses after this point will resurface automatically.")):console.log("Already dismissed.")}catch(s){Q(s,t.json)}})}},{name:"undismiss",localOnly:!0,register(r){r.command("undismiss <url>").description("Undismiss an issue (re-enable notifications)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runUndismiss:s}=await Promise.resolve().then(()=>(sn(),tn)),o=await s({url:e});t.json?K(o):o.undismissed?(console.log(`Undismissed: ${e}`),console.log("Notifications are active again.")):console.log("Was not dismissed.")}catch(s){Q(s,t.json)}})}},{name:"override",localOnly:!0,register(r){r.command("override <pr-url> <status>").description("Manually override PR status (needs_addressing or waiting_on_maintainer)").option("--json","Output as JSON").action(async(e,t,s)=>{try{let{runMove:o}=await Promise.resolve().then(()=>(Ft(),It)),n=["needs_addressing","waiting_on_maintainer"];if(!n.includes(t))throw new Error(`Invalid status "${t}". Must be one of: ${n.join(", ")}`);let a=await o({prUrl:e,target:t==="needs_addressing"?"attention":"waiting"});s.json?K(a):console.log(a.description)}catch(o){Q(o,s.json)}})}},{name:"clear-override",localOnly:!0,register(r){r.command("clear-override <pr-url>").description("Clear a manual status override for a PR").option("--json","Output as JSON").action(async(e,t)=>{try{let{runMove:s}=await Promise.resolve().then(()=>(Ft(),It)),o=await s({prUrl:e,target:"auto"});t.json?K(o):console.log(o.description)}catch(s){Q(s,t.json)}})}},{name:"pr-template",register(r){r.command("pr-template <repo>").description("Fetch a repository's PR description template").option("--json","Output as JSON").action(async(e,t)=>{try{let{runPRTemplate:s}=await Promise.resolve().then(()=>(Wc(),Vc)),o=await s({repo:e});t.json?K(o):o.template?(console.log(`
151
+ `),Zc(s.repos)):(console.log(`Found ${Object.keys(s.repos).length} repos:
152
+ `),Zc(s.repos))}catch(t){Y(t,e.json)}})}},{name:"startup",localOnly:!0,register(r){r.command("startup").description("Run all pre-flight checks and daily fetch in one call").option("--json","Output as JSON").action(async e=>{try{let{runStartup:t}=await Promise.resolve().then(()=>(Xo(),Gc)),s=await t();e.json?Q(s):s.setupComplete?s.authError?console.error(`Error: ${s.authError}`):(console.log(`OSS Autopilot v${s.version}`),console.log(s.daily?.briefSummary??"")):console.log("Setup incomplete. Run /setup-oss first.")}catch(t){Y(t,e.json)}})}},{name:"shelve",localOnly:!0,register(r){r.command("shelve <pr-url>").description("Shelve a PR (exclude from capacity and actionable issues)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runMove:s}=await Promise.resolve().then(()=>(Ft(),It)),o=await s({prUrl:e,target:"shelved"});t.json?Q(o):console.log(o.description)}catch(s){Y(s,t.json)}})}},{name:"unshelve",localOnly:!0,register(r){r.command("unshelve <pr-url>").description("Unshelve a PR (include in capacity and actionable issues again)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runMove:s}=await Promise.resolve().then(()=>(Ft(),It)),o=await s({prUrl:e,target:"auto"});t.json?Q(o):console.log(o.description)}catch(s){Y(s,t.json)}})}},{name:"move",localOnly:!0,register(r){r.command("move <pr-url> <target>").description("Move a PR between states: attention, waiting, shelved, or auto (reset to computed)").option("--json","Output as JSON").action(async(e,t,s)=>{try{let{runMove:o}=await Promise.resolve().then(()=>(Ft(),It)),n=await o({prUrl:e,target:t});s.json?Q(n):console.log(n.description)}catch(o){Y(o,s.json)}})}},{name:"dismiss",localOnly:!0,register(r){r.command("dismiss <url>").description("Dismiss notifications for an issue (resurfaces on new activity)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runDismiss:s}=await Promise.resolve().then(()=>(sn(),tn)),o=await s({url:e});t.json?Q(o):o.dismissed?(console.log(`Dismissed: ${e}`),console.log("Notifications are now muted."),console.log("New responses after this point will resurface automatically.")):console.log("Already dismissed.")}catch(s){Y(s,t.json)}})}},{name:"undismiss",localOnly:!0,register(r){r.command("undismiss <url>").description("Undismiss an issue (re-enable notifications)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runUndismiss:s}=await Promise.resolve().then(()=>(sn(),tn)),o=await s({url:e});t.json?Q(o):o.undismissed?(console.log(`Undismissed: ${e}`),console.log("Notifications are active again.")):console.log("Was not dismissed.")}catch(s){Y(s,t.json)}})}},{name:"override",localOnly:!0,register(r){r.command("override <pr-url> <status>").description("Manually override PR status (needs_addressing or waiting_on_maintainer)").option("--json","Output as JSON").action(async(e,t,s)=>{try{let{runMove:o}=await Promise.resolve().then(()=>(Ft(),It)),n=["needs_addressing","waiting_on_maintainer"];if(!n.includes(t))throw new Error(`Invalid status "${t}". Must be one of: ${n.join(", ")}`);let a=await o({prUrl:e,target:t==="needs_addressing"?"attention":"waiting"});s.json?Q(a):console.log(a.description)}catch(o){Y(o,s.json)}})}},{name:"clear-override",localOnly:!0,register(r){r.command("clear-override <pr-url>").description("Clear a manual status override for a PR").option("--json","Output as JSON").action(async(e,t)=>{try{let{runMove:s}=await Promise.resolve().then(()=>(Ft(),It)),o=await s({prUrl:e,target:"auto"});t.json?Q(o):console.log(o.description)}catch(s){Y(s,t.json)}})}},{name:"pr-template",register(r){r.command("pr-template <repo>").description("Fetch a repository's PR description template").option("--json","Output as JSON").action(async(e,t)=>{try{let{runPRTemplate:s}=await Promise.resolve().then(()=>(Qc(),Kc)),o=await s({repo:e});t.json?Q(o):o.template?(console.log(`
153
153
  PR template found at: ${o.source}
154
154
  `),console.log(o.template)):o.error?console.error(`
155
155
  Warning: Could not check for PR template: ${o.error}`):console.log(`
156
- No PR template found for this repository.`)}catch(s){Q(s,t.json)}})}},{name:"stats",localOnly:!0,register(r){r.command("stats").description("Show contribution statistics").option("--json","Output as JSON").option("--markdown","Output as shareable markdown report").option("--badge","Output as shields.io endpoint JSON").action(async e=>{try{let{runStats:t,formatStatsMarkdown:s,formatStatsBadge:o}=await Promise.resolve().then(()=>(Jc(),zc)),n=await t();if(e.badge)console.log(JSON.stringify(o(n),null,2));else if(e.markdown)console.log(s(n));else if(e.json)K(n);else{if(console.log(`
156
+ No PR template found for this repository.`)}catch(s){Y(s,t.json)}})}},{name:"stats",localOnly:!0,register(r){r.command("stats").description("Show contribution statistics").option("--json","Output as JSON").option("--markdown","Output as shareable markdown report").option("--badge","Output as shields.io endpoint JSON").action(async e=>{try{let{runStats:t,formatStatsMarkdown:s,formatStatsBadge:o}=await Promise.resolve().then(()=>(Xc(),Yc)),n=await t();if(e.badge)console.log(JSON.stringify(o(n),null,2));else if(e.markdown)console.log(s(n));else if(e.json)Q(n);else{if(console.log(`
157
157
  OSS Contribution Stats (@${n.username})
158
158
  `),console.log(` Merged PRs: ${n.totalMerged}`),console.log(` Closed PRs: ${n.totalClosed}`),console.log(` Merge Rate: ${n.mergeRateFormatted}`),console.log(` Active PRs: ${n.activePRs}`),console.log(` Repos Contributed: ${n.reposContributed}`),n.topRepos.length>0){console.log(`
159
159
  Top Repos:`);for(let i of n.topRepos.slice(0,5))console.log(` ${i.repo}: ${i.mergedCount} merged`)}console.log(`
160
- Use --markdown for a shareable report or --badge for shields.io`)}}catch(t){Q(t,e.json)}})}}];var ud=We(),Rr=new Pn;Rr.name("oss-autopilot").description("AI-powered autopilot for managing open source contributions").version(ud).option("--debug","Enable debug logging");var ld=new Set(rn.filter(r=>r.localOnly).map(r=>r.name));for(let r of rn)r.register(Rr);Rr.hook("preAction",async(r,e)=>{r.opts().debug&&(Vr(),T("cli",`Running command: ${e.name()}`));let s=e.name();ld.has(s)||await Os()||(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))});var Qc=process.argv.slice(2),pd=Qc.some(r=>!r.startsWith("-")),dd=Qc.some(r=>r==="--help"||r==="-h"||r==="--version"||r==="-V");!pd&&!dd&&!Gs()&&(console.log(`
160
+ Use --markdown for a shareable report or --badge for shields.io`)}}catch(t){Y(t,e.json)}})}}];var hd=We(),Rr=new Pn;Rr.name("oss-autopilot").description("AI-powered autopilot for managing open source contributions").version(hd).option("--debug","Enable debug logging");var fd=new Set(rn.filter(r=>r.localOnly).map(r=>r.name));for(let r of rn)r.register(Rr);Rr.hook("preAction",async(r,e)=>{r.opts().debug&&(Vr(),T("cli",`Running command: ${e.name()}`));let s=e.name();fd.has(s)||await Os()||(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))});var eu=process.argv.slice(2),bd=eu.some(r=>!r.startsWith("-")),yd=eu.some(r=>r==="--help"||r==="-h"||r==="--version"||r==="-V");!bd&&!yd&&!Gs()&&(console.log(`
161
161
  OSS Autopilot \u2014 AI copilot for open source contributions
162
162
 
163
163
  Looks like this is your first run! Quick start: