@oss-autopilot/core 0.57.0 → 0.59.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.
Files changed (51) hide show
  1. package/dist/cli-registry.js +54 -0
  2. package/dist/cli.bundle.cjs +49 -45
  3. package/dist/commands/comments.d.ts +28 -0
  4. package/dist/commands/comments.js +28 -0
  5. package/dist/commands/config.d.ts +11 -0
  6. package/dist/commands/config.js +11 -0
  7. package/dist/commands/daily.d.ts +26 -2
  8. package/dist/commands/daily.js +26 -2
  9. package/dist/commands/detect-formatters.d.ts +11 -0
  10. package/dist/commands/detect-formatters.js +24 -0
  11. package/dist/commands/dismiss.d.ts +17 -0
  12. package/dist/commands/dismiss.js +17 -0
  13. package/dist/commands/index.d.ts +3 -1
  14. package/dist/commands/index.js +2 -0
  15. package/dist/commands/init.d.ts +8 -0
  16. package/dist/commands/init.js +8 -0
  17. package/dist/commands/move.d.ts +10 -0
  18. package/dist/commands/move.js +10 -0
  19. package/dist/commands/search.d.ts +18 -0
  20. package/dist/commands/search.js +18 -0
  21. package/dist/commands/setup.d.ts +17 -0
  22. package/dist/commands/setup.js +17 -0
  23. package/dist/commands/shelve.d.ts +16 -0
  24. package/dist/commands/shelve.js +16 -0
  25. package/dist/commands/startup.d.ts +16 -7
  26. package/dist/commands/startup.js +16 -7
  27. package/dist/commands/status.d.ts +8 -0
  28. package/dist/commands/status.js +8 -0
  29. package/dist/commands/track.d.ts +16 -0
  30. package/dist/commands/track.js +16 -0
  31. package/dist/commands/vet.d.ts +8 -0
  32. package/dist/commands/vet.js +8 -0
  33. package/dist/core/daily-logic.d.ts +60 -7
  34. package/dist/core/daily-logic.js +52 -7
  35. package/dist/core/formatter-detection.d.ts +61 -0
  36. package/dist/core/formatter-detection.js +360 -0
  37. package/dist/core/github.d.ts +25 -2
  38. package/dist/core/github.js +25 -2
  39. package/dist/core/index.d.ts +1 -0
  40. package/dist/core/index.js +1 -0
  41. package/dist/core/issue-discovery.d.ts +46 -6
  42. package/dist/core/issue-discovery.js +46 -6
  43. package/dist/core/logger.d.ts +13 -0
  44. package/dist/core/logger.js +13 -0
  45. package/dist/core/pr-monitor.d.ts +43 -8
  46. package/dist/core/pr-monitor.js +43 -8
  47. package/dist/core/state.d.ts +167 -0
  48. package/dist/core/state.js +167 -0
  49. package/dist/core/types.d.ts +2 -8
  50. package/dist/formatters/json.d.ts +5 -0
  51. package/package.json +6 -3
@@ -1,38 +1,38 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var Eu=Object.create;var Or=Object.defineProperty;var Tu=Object.getOwnPropertyDescriptor;var vu=Object.getOwnPropertyNames;var Su=Object.getPrototypeOf,Cu=Object.prototype.hasOwnProperty;var P=(s,e)=>()=>(s&&(e=s(s=0)),e);var Xe=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),le=(s,e)=>{for(var t in e)Or(s,t,{get:e[t],enumerable:!0})},Pu=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of vu(e))!Cu.call(s,o)&&o!==t&&Or(s,o,{get:()=>e[o],enumerable:!(r=Tu(e,o))||r.enumerable});return s};var V=(s,e,t)=>(t=s!=null?Eu(Su(s)):{},Pu(e||!s||!s.__esModule?Or(t,"default",{value:s,enumerable:!0}):t,s));var Zt=Xe($r=>{var ks=class extends Error{constructor(e,t,r){super(r),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},Gr=class extends ks{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};$r.CommanderError=ks;$r.InvalidArgumentError=Gr});var As=Xe(Ir=>{var{InvalidArgumentError:ku}=Zt(),Dr=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,r)=>{if(!this.argChoices.includes(t))throw new ku(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(t,r):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function Au(s){let e=s.name()+(s.variadic===!0?"...":"");return s.required?"<"+e+">":"["+e+"]"}Ir.Argument=Dr;Ir.humanReadableArgName=Au});var Ur=Xe(xr=>{var{humanReadableArgName:Ou}=As(),Fr=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),r=e._getHelpCommand();return r&&!r._hidden&&t.push(r),this.sortSubcommands&&t.sort((o,n)=>o.name().localeCompare(n.name())),t}compareOptions(e,t){let r=o=>o.short?o.short.replace(/^-/,""):o.long.replace(/^--/,"");return r(e).localeCompare(r(t))}visibleOptions(e){let t=e.options.filter(o=>!o.hidden),r=e._getHelpOption();if(r&&!r.hidden){let o=r.short&&e._findOption(r.short),n=r.long&&e._findOption(r.long);!o&&!n?t.push(r):r.long&&!n?t.push(e.createOption(r.long,r.description)):r.short&&!o&&t.push(e.createOption(r.short,r.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let r=e.parent;r;r=r.parent){let o=r.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(r=>Ou(r)).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((r,o)=>Math.max(r,this.displayWidth(t.styleSubcommandTerm(t.subcommandTerm(o)))),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((r,o)=>Math.max(r,this.displayWidth(t.styleOptionTerm(t.optionTerm(o)))),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((r,o)=>Math.max(r,this.displayWidth(t.styleOptionTerm(t.optionTerm(o)))),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((r,o)=>Math.max(r,this.displayWidth(t.styleArgumentTerm(t.argumentTerm(o)))),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let r="";for(let o=e.parent;o;o=o.parent)r=o.name()+" "+r;return r+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(r=>JSON.stringify(r)).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 r=`(${t.join(", ")})`;return e.description?`${e.description} ${r}`:r}return e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let r=`(${t.join(", ")})`;return e.description?`${e.description} ${r}`:r}return e.description}formatItemList(e,t,r){return t.length===0?[]:[r.styleTitle(e),...t,""]}groupItems(e,t,r){let o=new Map;return e.forEach(n=>{let i=r(n);o.has(i)||o.set(i,[])}),t.forEach(n=>{let i=r(n);o.has(i)||o.set(i,[]),o.get(i).push(n)}),o}formatHelp(e,t){let r=t.padWidth(e,t),o=t.helpWidth??80;function n(p,g){return t.formatItem(p,r,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(p=>n(t.styleArgumentTerm(t.argumentTerm(p)),t.styleArgumentDescription(t.argumentDescription(p))));if(i=i.concat(this.formatItemList("Arguments:",c,t)),this.groupItems(e.options,t.visibleOptions(e),p=>p.helpGroupHeading??"Options:").forEach((p,g)=>{let b=p.map(E=>n(t.styleOptionTerm(t.optionTerm(E)),t.styleOptionDescription(t.optionDescription(E))));i=i.concat(this.formatItemList(g,b,t))}),t.showGlobalOptions){let p=t.visibleGlobalOptions(e).map(g=>n(t.styleOptionTerm(t.optionTerm(g)),t.styleOptionDescription(t.optionDescription(g))));i=i.concat(this.formatItemList("Global Options:",p,t))}return this.groupItems(e.commands,t.visibleCommands(e),p=>p.helpGroup()||"Commands:").forEach((p,g)=>{let b=p.map(E=>n(t.styleSubcommandTerm(t.subcommandTerm(E)),t.styleSubcommandDescription(t.subcommandDescription(E))));i=i.concat(this.formatItemList(g,b,t))}),i.join(`
3
- `)}displayWidth(e){return wn(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,r,o){let i=" ".repeat(2);if(!r)return i+e;let a=e.padEnd(t+e.length-o.displayWidth(e)),c=2,l=(this.helpWidth??80)-t-c-2,p;return l<this.minWidthToWrap||o.preformatted(r)?p=r:p=o.boxWrap(r,l).replace(/\n/g,`
2
+ "use strict";var Fu=Object.create;var Fr=Object.defineProperty;var Iu=Object.getOwnPropertyDescriptor;var xu=Object.getOwnPropertyNames;var Uu=Object.getPrototypeOf,Mu=Object.prototype.hasOwnProperty;var P=(s,e)=>()=>(s&&(e=s(s=0)),e);var et=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),ce=(s,e)=>{for(var t in e)Fr(s,t,{get:e[t],enumerable:!0})},Lu=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of xu(e))!Mu.call(s,o)&&o!==t&&Fr(s,o,{get:()=>e[o],enumerable:!(r=Iu(e,o))||r.enumerable});return s};var B=(s,e,t)=>(t=s!=null?Fu(Uu(s)):{},Lu(e||!s||!s.__esModule?Fr(t,"default",{value:s,enumerable:!0}):t,s));var ts=et(xr=>{var Os=class extends Error{constructor(e,t,r){super(r),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},Ir=class extends Os{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};xr.CommanderError=Os;xr.InvalidArgumentError=Ir});var Gs=et(Mr=>{var{InvalidArgumentError:ju}=ts(),Ur=class{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:(t.push(e),t)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new ju(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(t,r):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function Nu(s){let e=s.name()+(s.variadic===!0?"...":"");return s.required?"<"+e+">":"["+e+"]"}Mr.Argument=Ur;Mr.humanReadableArgName=Nu});var Nr=et(jr=>{var{humanReadableArgName:Hu}=Gs(),Lr=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),r=e._getHelpCommand();return r&&!r._hidden&&t.push(r),this.sortSubcommands&&t.sort((o,n)=>o.name().localeCompare(n.name())),t}compareOptions(e,t){let r=o=>o.short?o.short.replace(/^-/,""):o.long.replace(/^--/,"");return r(e).localeCompare(r(t))}visibleOptions(e){let t=e.options.filter(o=>!o.hidden),r=e._getHelpOption();if(r&&!r.hidden){let o=r.short&&e._findOption(r.short),n=r.long&&e._findOption(r.long);!o&&!n?t.push(r):r.long&&!n?t.push(e.createOption(r.long,r.description)):r.short&&!o&&t.push(e.createOption(r.short,r.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let r=e.parent;r;r=r.parent){let o=r.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(r=>Hu(r)).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((r,o)=>Math.max(r,this.displayWidth(t.styleSubcommandTerm(t.subcommandTerm(o)))),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((r,o)=>Math.max(r,this.displayWidth(t.styleOptionTerm(t.optionTerm(o)))),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((r,o)=>Math.max(r,this.displayWidth(t.styleOptionTerm(t.optionTerm(o)))),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((r,o)=>Math.max(r,this.displayWidth(t.styleArgumentTerm(t.argumentTerm(o)))),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let r="";for(let o=e.parent;o;o=o.parent)r=o.name()+" "+r;return r+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(r=>JSON.stringify(r)).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 r=`(${t.join(", ")})`;return e.description?`${e.description} ${r}`:r}return e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let r=`(${t.join(", ")})`;return e.description?`${e.description} ${r}`:r}return e.description}formatItemList(e,t,r){return t.length===0?[]:[r.styleTitle(e),...t,""]}groupItems(e,t,r){let o=new Map;return e.forEach(n=>{let i=r(n);o.has(i)||o.set(i,[])}),t.forEach(n=>{let i=r(n);o.has(i)||o.set(i,[]),o.get(i).push(n)}),o}formatHelp(e,t){let r=t.padWidth(e,t),o=t.helpWidth??80;function n(p,g){return t.formatItem(p,r,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(p=>n(t.styleArgumentTerm(t.argumentTerm(p)),t.styleArgumentDescription(t.argumentDescription(p))));if(i=i.concat(this.formatItemList("Arguments:",c,t)),this.groupItems(e.options,t.visibleOptions(e),p=>p.helpGroupHeading??"Options:").forEach((p,g)=>{let b=p.map(T=>n(t.styleOptionTerm(t.optionTerm(T)),t.styleOptionDescription(t.optionDescription(T))));i=i.concat(this.formatItemList(g,b,t))}),t.showGlobalOptions){let p=t.visibleGlobalOptions(e).map(g=>n(t.styleOptionTerm(t.optionTerm(g)),t.styleOptionDescription(t.optionDescription(g))));i=i.concat(this.formatItemList("Global Options:",p,t))}return this.groupItems(e.commands,t.visibleCommands(e),p=>p.helpGroup()||"Commands:").forEach((p,g)=>{let b=p.map(T=>n(t.styleSubcommandTerm(t.subcommandTerm(T)),t.styleSubcommandDescription(t.subcommandDescription(T))));i=i.concat(this.formatItemList(g,b,t))}),i.join(`
3
+ `)}displayWidth(e){return An(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,r,o){let i=" ".repeat(2);if(!r)return i+e;let a=e.padEnd(t+e.length-o.displayWidth(e)),c=2,l=(this.helpWidth??80)-t-c-2,p;return l<this.minWidthToWrap||o.preformatted(r)?p=r:p=o.boxWrap(r,l).replace(/\n/g,`
4
4
  `+" ".repeat(t+c)),i+a+" ".repeat(c)+p.replace(/\n/g,`
5
5
  ${i}`)}boxWrap(e,t){if(t<this.minWidthToWrap)return e;let r=e.split(/\r\n|\n/),o=/[\s]*[^\s]+/g,n=[];return r.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 p=this.displayWidth(l);if(u+p<=t){c.push(l),u+=p;return}n.push(c.join(""));let g=l.trimStart();c=[g],u=this.displayWidth(g)}),n.push(c.join(""))}),n.join(`
6
- `)}};function wn(s){let e=/\x1b\[\d*(;\d*)*m/g;return s.replace(e,"")}xr.Help=Fr;xr.stripColor=wn});var Nr=Xe(jr=>{var{InvalidArgumentError:Gu}=Zt(),Mr=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 r=$u(e);this.short=r.shortFlag,this.long=r.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,r)=>{if(!this.argChoices.includes(t))throw new Gu(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(t,r):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?En(this.name().replace(/^no-/,"")):En(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}},Lr=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,r)=>{this.positiveOptions.has(r)&&this.dualOptions.add(r)})}valueFromOption(e,t){let r=t.attributeName();if(!this.dualOptions.has(r))return!0;let o=this.negativeOptions.get(r).presetArg,n=o!==void 0?o:!1;return t.negate===(n===e)}};function En(s){return s.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function $u(s){let e,t,r=/^-[^-]$/,o=/^--[^-]/,n=s.split(/[ |,]+/).concat("guard");if(r.test(n[0])&&(e=n.shift()),o.test(n[0])&&(t=n.shift()),!e&&r.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 '${s}'`;throw/^-[^-][^-]/.test(i)?new Error(`${a}
6
+ `)}};function An(s){let e=/\x1b\[\d*(;\d*)*m/g;return s.replace(e,"")}jr.Help=Lr;jr.stripColor=An});var Vr=et(Br=>{var{InvalidArgumentError:qu}=ts(),Hr=class{constructor(e,t){this.flags=e,this.description=t||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let r=Bu(e);this.short=r.shortFlag,this.long=r.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,r)=>{if(!this.argChoices.includes(t))throw new qu(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(t,r):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?On(this.name().replace(/^no-/,"")):On(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}},qr=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,r)=>{this.positiveOptions.has(r)&&this.dualOptions.add(r)})}valueFromOption(e,t){let r=t.attributeName();if(!this.dualOptions.has(r))return!0;let o=this.negativeOptions.get(r).presetArg,n=o!==void 0?o:!1;return t.negate===(n===e)}};function On(s){return s.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function Bu(s){let e,t,r=/^-[^-]$/,o=/^--[^-]/,n=s.split(/[ |,]+/).concat("guard");if(r.test(n[0])&&(e=n.shift()),o.test(n[0])&&(t=n.shift()),!e&&r.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 '${s}'`;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')`):r.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 '${s}'.`);return{shortFlag:e,longFlag:t}}jr.Option=Mr;jr.DualOptions=Lr});var vn=Xe(Tn=>{function Du(s,e){if(Math.abs(s.length-e.length)>3)return Math.max(s.length,e.length);let t=[];for(let r=0;r<=s.length;r++)t[r]=[r];for(let r=0;r<=e.length;r++)t[0][r]=r;for(let r=1;r<=e.length;r++)for(let o=1;o<=s.length;o++){let n=1;s[o-1]===e[r-1]?n=0:n=1,t[o][r]=Math.min(t[o-1][r]+1,t[o][r-1]+1,t[o-1][r-1]+n),o>1&&r>1&&s[o-1]===e[r-2]&&s[o-2]===e[r-1]&&(t[o][r]=Math.min(t[o][r],t[o-2][r-2]+1))}return t[s.length][e.length]}function Iu(s,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=s.startsWith("--");t&&(s=s.slice(2),e=e.map(i=>i.slice(2)));let r=[],o=3,n=.4;return e.forEach(i=>{if(i.length<=1)return;let a=Du(s,i),c=Math.max(s.length,i.length);(c-a)/c>n&&(a<o?(o=a,r=[i]):a===o&&r.push(i))}),r.sort((i,a)=>i.localeCompare(a)),t&&(r=r.map(i=>`--${i}`)),r.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 '${s}'.`);return{shortFlag:e,longFlag:t}}Br.Option=Hr;Br.DualOptions=qr});var $n=et(Gn=>{function Vu(s,e){if(Math.abs(s.length-e.length)>3)return Math.max(s.length,e.length);let t=[];for(let r=0;r<=s.length;r++)t[r]=[r];for(let r=0;r<=e.length;r++)t[0][r]=r;for(let r=1;r<=e.length;r++)for(let o=1;o<=s.length;o++){let n=1;s[o-1]===e[r-1]?n=0:n=1,t[o][r]=Math.min(t[o-1][r]+1,t[o][r-1]+1,t[o-1][r-1]+n),o>1&&r>1&&s[o-1]===e[r-2]&&s[o-2]===e[r-1]&&(t[o][r]=Math.min(t[o][r],t[o-2][r-2]+1))}return t[s.length][e.length]}function Wu(s,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=s.startsWith("--");t&&(s=s.slice(2),e=e.map(i=>i.slice(2)));let r=[],o=3,n=.4;return e.forEach(i=>{if(i.length<=1)return;let a=Vu(s,i),c=Math.max(s.length,i.length);(c-a)/c>n&&(a<o?(o=a,r=[i]):a===o&&r.push(i))}),r.sort((i,a)=>i.localeCompare(a)),t&&(r=r.map(i=>`--${i}`)),r.length>1?`
13
13
  (Did you mean one of ${r.join(", ")}?)`:r.length===1?`
14
- (Did you mean ${r[0]}?)`:""}Tn.suggestSimilar=Iu});var kn=Xe(Wr=>{var Fu=require("node:events").EventEmitter,Hr=require("node:child_process"),Ze=require("node:path"),Os=require("node:fs"),B=require("node:process"),{Argument:xu,humanReadableArgName:Uu}=As(),{CommanderError:qr}=Zt(),{Help:Mu,stripColor:Lu}=Ur(),{Option:Sn,DualOptions:ju}=Nr(),{suggestSimilar:Cn}=vn(),Br=class s extends Fu{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=>B.stdout.write(t),writeErr:t=>B.stderr.write(t),outputError:(t,r)=>r(t),getOutHelpWidth:()=>B.stdout.isTTY?B.stdout.columns:void 0,getErrHelpWidth:()=>B.stderr.isTTY?B.stderr.columns:void 0,getOutHasColors:()=>Vr()??(B.stdout.isTTY&&B.stdout.hasColors?.()),getErrHasColors:()=>Vr()??(B.stderr.isTTY&&B.stderr.hasColors?.()),stripColor:t=>Lu(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,r){let o=t,n=r;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 s(e)}createHelp(){return Object.assign(new Mu,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 xu(e,t)}argument(e,t,r,o){let n=this.createArgument(e,t);return typeof r=="function"?n.default(o).argParser(r):n.default(r),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 r=e??"help [command]",[,o,n]=r.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 r=["preSubcommand","preAction","postAction"];if(!r.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
16
- Expecting one of '${r.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,r){this._exitCallback&&this._exitCallback(new qr(e,t,r)),B.exit(e)}action(e){let t=r=>{let o=this.registeredArguments.length,n=r.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 Sn(e,t)}_callParseArg(e,t,r,o){try{return e.parseArg(t,r)}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 r=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 '${r}'
17
- - already used by option '${t.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let t=o=>[o.name()].concat(o.aliases()),r=t(e).find(o=>this._findCommand(o));if(r){let o=t(this._findCommand(r)).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(),r=e.attributeName();if(e.negate){let n=e.long.replace(/^--no-/,"--");this._findOption(n)||this.setOptionValueWithSource(r,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(r,e.defaultValue,"default");let o=(n,i,a)=>{n==null&&e.presetArg!==void 0&&(n=e.presetArg);let c=this.getOptionValue(r);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(r,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,r,o,n){if(typeof t=="object"&&t instanceof Sn)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let i=this.createOption(t,r);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,r,o){return this._optionEx({},e,t,r,o)}requiredOption(e,t,r,o){return this._optionEx({mandatory:!0},e,t,r,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,r){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=r,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(r=>{r.getOptionValueSource(e)!==void 0&&(t=r.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){B.versions?.electron&&(t.from="electron");let o=B.execArgv??[];(o.includes("-e")||o.includes("--eval")||o.includes("-p")||o.includes("--print"))&&(t.from="eval")}e===void 0&&(e=B.argv),this.rawArgs=e.slice();let r;switch(t.from){case void 0:case"node":this._scriptPath=e[1],r=e.slice(2);break;case"electron":B.defaultApp?(this._scriptPath=e[1],r=e.slice(2)):r=e.slice(1);break;case"user":r=e.slice(0);break;case"eval":r=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",r}parse(e,t){this._prepareForParse();let r=this._prepareUserArgs(e,t);return this._parseCommand([],r),this}async parseAsync(e,t){this._prepareForParse();let r=this._prepareUserArgs(e,t);return await this._parseCommand([],r),this}_prepareForParse(){this._savedState===null?this.saveStateBeforeParse():this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
18
- - either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(e,t,r){if(Os.existsSync(e))return;let o=t?`searched for local subcommand relative to directory '${t}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",n=`'${e}' does not exist
14
+ (Did you mean ${r[0]}?)`:""}Gn.suggestSimilar=Wu});var xn=et(Qr=>{var zu=require("node:events").EventEmitter,Wr=require("node:child_process"),tt=require("node:path"),$s=require("node:fs"),V=require("node:process"),{Argument:Ju,humanReadableArgName:Ku}=Gs(),{CommanderError:zr}=ts(),{Help:Qu,stripColor:Yu}=Nr(),{Option:Dn,DualOptions:Xu}=Vr(),{suggestSimilar:Fn}=$n(),Jr=class s extends zu{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,r)=>r(t),getOutHelpWidth:()=>V.stdout.isTTY?V.stdout.columns:void 0,getErrHelpWidth:()=>V.stderr.isTTY?V.stderr.columns:void 0,getOutHasColors:()=>Kr()??(V.stdout.isTTY&&V.stdout.hasColors?.()),getErrHasColors:()=>Kr()??(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,r){let o=t,n=r;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 s(e)}createHelp(){return Object.assign(new Qu,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 Ju(e,t)}argument(e,t,r,o){let n=this.createArgument(e,t);return typeof r=="function"?n.default(o).argParser(r):n.default(r),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 r=e??"help [command]",[,o,n]=r.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 r=["preSubcommand","preAction","postAction"];if(!r.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
16
+ Expecting one of '${r.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,r){this._exitCallback&&this._exitCallback(new zr(e,t,r)),V.exit(e)}action(e){let t=r=>{let o=this.registeredArguments.length,n=r.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 Dn(e,t)}_callParseArg(e,t,r,o){try{return e.parseArg(t,r)}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 r=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 '${r}'
17
+ - already used by option '${t.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let t=o=>[o.name()].concat(o.aliases()),r=t(e).find(o=>this._findCommand(o));if(r){let o=t(this._findCommand(r)).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(),r=e.attributeName();if(e.negate){let n=e.long.replace(/^--no-/,"--");this._findOption(n)||this.setOptionValueWithSource(r,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(r,e.defaultValue,"default");let o=(n,i,a)=>{n==null&&e.presetArg!==void 0&&(n=e.presetArg);let c=this.getOptionValue(r);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(r,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,r,o,n){if(typeof t=="object"&&t instanceof Dn)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let i=this.createOption(t,r);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,r,o){return this._optionEx({},e,t,r,o)}requiredOption(e,t,r,o){return this._optionEx({mandatory:!0},e,t,r,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,r){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=r,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(r=>{r.getOptionValueSource(e)!==void 0&&(t=r.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 r;switch(t.from){case void 0:case"node":this._scriptPath=e[1],r=e.slice(2);break;case"electron":V.defaultApp?(this._scriptPath=e[1],r=e.slice(2)):r=e.slice(1);break;case"user":r=e.slice(0);break;case"eval":r=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",r}parse(e,t){this._prepareForParse();let r=this._prepareUserArgs(e,t);return this._parseCommand([],r),this}async parseAsync(e,t){this._prepareForParse();let r=this._prepareUserArgs(e,t);return await this._parseCommand([],r),this}_prepareForParse(){this._savedState===null?this.saveStateBeforeParse():this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
18
+ - either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(e,t,r){if($s.existsSync(e))return;let o=t?`searched for local subcommand relative to directory '${t}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",n=`'${e}' does not exist
19
19
  - if '${r}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
20
20
  - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
21
- - ${o}`;throw new Error(n)}_executeSubCommand(e,t){t=t.slice();let r=!1,o=[".js",".ts",".tsx",".mjs",".cjs"];function n(l,p){let g=Ze.resolve(l,p);if(Os.existsSync(g))return g;if(o.includes(Ze.extname(p)))return;let b=o.find(E=>Os.existsSync(`${g}${E}`));if(b)return`${g}${b}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let i=e._executableFile||`${this._name}-${e._name}`,a=this._executableDir||"";if(this._scriptPath){let l;try{l=Os.realpathSync(this._scriptPath)}catch{l=this._scriptPath}a=Ze.resolve(Ze.dirname(l),a)}if(a){let l=n(a,i);if(!l&&!e._executableFile&&this._scriptPath){let p=Ze.basename(this._scriptPath,Ze.extname(this._scriptPath));p!==this._name&&(l=n(a,`${p}-${e._name}`))}i=l||i}r=o.includes(Ze.extname(i));let c;B.platform!=="win32"?r?(t.unshift(i),t=Pn(B.execArgv).concat(t),c=Hr.spawn(B.argv[0],t,{stdio:"inherit"})):c=Hr.spawn(i,t,{stdio:"inherit"}):(this._checkForMissingExecutable(i,a,e._name),t.unshift(i),t=Pn(B.execArgv).concat(t),c=Hr.spawn(B.execPath,t,{stdio:"inherit"})),c.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(p=>{B.on(p,()=>{c.killed===!1&&c.exitCode===null&&c.kill(p)})});let u=this._exitCallback;c.on("close",l=>{l=l??1,u?u(new qr(l,"commander.executeSubCommandAsync","(close)")):B.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)B.exit(1);else{let p=new qr(1,"commander.executeSubCommandAsync","(error)");p.nestedError=l,u(p)}}),this.runningCommand=c}_dispatchSubcommand(e,t,r){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(r));else return o._parseCommand(t,r)}),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=(r,o,n)=>{let i=o;if(o!==null&&r.parseArg){let a=`error: command-argument value '${o}' is invalid for argument '${r.name()}'.`;i=this._callParseArg(r,o,n,a)}return i};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((r,o)=>{let n=r.defaultValue;r.variadic?o<this.args.length?(n=this.args.slice(o),r.parseArg&&(n=n.reduce((i,a)=>e(r,a,i),r.defaultValue))):n===void 0&&(n=[]):o<this.args.length&&(n=this.args[o],r.parseArg&&(n=e(r,n,r.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 r=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=>{r=this._chainOrCall(r,()=>n.callback(n.hookedCommand,this))}),r}_chainOrCallSubCommandHook(e,t,r){let o=e;return this._lifeCycleHooks[r]!==void 0&&this._lifeCycleHooks[r].forEach(n=>{o=this._chainOrCall(o,()=>n(this,t))}),o}_parseCommand(e,t){let r=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(r.operands),t=r.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(r.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=()=>{r.unknown.length>0&&this.unknownOption(r.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(r=>{let o=r.attributeName();return this.getOptionValue(o)===void 0?!1:this.getOptionValueSource(o)!=="default"});e.filter(r=>r.conflictsWith.length>0).forEach(r=>{let o=e.find(n=>r.conflictsWith.includes(n.attributeName()));o&&this._conflictingOption(r,o)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],r=[],o=t;function n(l){return l.length>1&&l[0]==="-"}let i=l=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(l)?!this._getCommandAndAncestors().some(p=>p.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===r&&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 p=this._findOption(l);if(p){if(p.required){let g=e[u++];g===void 0&&this.optionMissingArgument(p),this.emit(`option:${p.name()}`,g)}else if(p.optional){let g=null;u<e.length&&(!n(e[u])||i(e[u]))&&(g=e[u++]),this.emit(`option:${p.name()}`,g)}else this.emit(`option:${p.name()}`);a=p.variadic?p:null;continue}}if(l.length>2&&l[0]==="-"&&l[1]!=="-"){let p=this._findOption(`-${l[1]}`);if(p){p.required||p.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${p.name()}`,l.slice(2)):(this.emit(`option:${p.name()}`),c=`-${l.slice(2)}`);continue}}if(/^--[^=]+=/.test(l)){let p=l.indexOf("="),g=this._findOption(l.slice(0,p));if(g&&(g.required||g.optional)){this.emit(`option:${g.name()}`,l.slice(p+1));continue}}if(o===t&&n(l)&&!(this.commands.length===0&&i(l))&&(o=r),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&r.length===0){if(this._findCommand(l)){t.push(l),r.push(...e.slice(u));break}else if(this._getHelpCommand()&&l===this._getHelpCommand().name()){t.push(l,...e.slice(u));break}else if(this._defaultCommandName){r.push(l,...e.slice(u));break}}if(this._passThroughOptions){o.push(l,...e.slice(u));break}o.push(l)}return{operands:t,unknown:r}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let r=0;r<t;r++){let o=this.options[r].attributeName();e[o]=o===this._versionOptionName?this._version:this[o]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
21
+ - ${o}`;throw new Error(n)}_executeSubCommand(e,t){t=t.slice();let r=!1,o=[".js",".ts",".tsx",".mjs",".cjs"];function n(l,p){let g=tt.resolve(l,p);if($s.existsSync(g))return g;if(o.includes(tt.extname(p)))return;let b=o.find(T=>$s.existsSync(`${g}${T}`));if(b)return`${g}${b}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let i=e._executableFile||`${this._name}-${e._name}`,a=this._executableDir||"";if(this._scriptPath){let l;try{l=$s.realpathSync(this._scriptPath)}catch{l=this._scriptPath}a=tt.resolve(tt.dirname(l),a)}if(a){let l=n(a,i);if(!l&&!e._executableFile&&this._scriptPath){let p=tt.basename(this._scriptPath,tt.extname(this._scriptPath));p!==this._name&&(l=n(a,`${p}-${e._name}`))}i=l||i}r=o.includes(tt.extname(i));let c;V.platform!=="win32"?r?(t.unshift(i),t=In(V.execArgv).concat(t),c=Wr.spawn(V.argv[0],t,{stdio:"inherit"})):c=Wr.spawn(i,t,{stdio:"inherit"}):(this._checkForMissingExecutable(i,a,e._name),t.unshift(i),t=In(V.execArgv).concat(t),c=Wr.spawn(V.execPath,t,{stdio:"inherit"})),c.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(p=>{V.on(p,()=>{c.killed===!1&&c.exitCode===null&&c.kill(p)})});let u=this._exitCallback;c.on("close",l=>{l=l??1,u?u(new zr(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 p=new zr(1,"commander.executeSubCommandAsync","(error)");p.nestedError=l,u(p)}}),this.runningCommand=c}_dispatchSubcommand(e,t,r){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(r));else return o._parseCommand(t,r)}),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=(r,o,n)=>{let i=o;if(o!==null&&r.parseArg){let a=`error: command-argument value '${o}' is invalid for argument '${r.name()}'.`;i=this._callParseArg(r,o,n,a)}return i};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((r,o)=>{let n=r.defaultValue;r.variadic?o<this.args.length?(n=this.args.slice(o),r.parseArg&&(n=n.reduce((i,a)=>e(r,a,i),r.defaultValue))):n===void 0&&(n=[]):o<this.args.length&&(n=this.args[o],r.parseArg&&(n=e(r,n,r.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 r=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=>{r=this._chainOrCall(r,()=>n.callback(n.hookedCommand,this))}),r}_chainOrCallSubCommandHook(e,t,r){let o=e;return this._lifeCycleHooks[r]!==void 0&&this._lifeCycleHooks[r].forEach(n=>{o=this._chainOrCall(o,()=>n(this,t))}),o}_parseCommand(e,t){let r=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(r.operands),t=r.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(r.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=()=>{r.unknown.length>0&&this.unknownOption(r.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(r=>{let o=r.attributeName();return this.getOptionValue(o)===void 0?!1:this.getOptionValueSource(o)!=="default"});e.filter(r=>r.conflictsWith.length>0).forEach(r=>{let o=e.find(n=>r.conflictsWith.includes(n.attributeName()));o&&this._conflictingOption(r,o)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],r=[],o=t;function n(l){return l.length>1&&l[0]==="-"}let i=l=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(l)?!this._getCommandAndAncestors().some(p=>p.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===r&&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 p=this._findOption(l);if(p){if(p.required){let g=e[u++];g===void 0&&this.optionMissingArgument(p),this.emit(`option:${p.name()}`,g)}else if(p.optional){let g=null;u<e.length&&(!n(e[u])||i(e[u]))&&(g=e[u++]),this.emit(`option:${p.name()}`,g)}else this.emit(`option:${p.name()}`);a=p.variadic?p:null;continue}}if(l.length>2&&l[0]==="-"&&l[1]!=="-"){let p=this._findOption(`-${l[1]}`);if(p){p.required||p.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${p.name()}`,l.slice(2)):(this.emit(`option:${p.name()}`),c=`-${l.slice(2)}`);continue}}if(/^--[^=]+=/.test(l)){let p=l.indexOf("="),g=this._findOption(l.slice(0,p));if(g&&(g.required||g.optional)){this.emit(`option:${g.name()}`,l.slice(p+1));continue}}if(o===t&&n(l)&&!(this.commands.length===0&&i(l))&&(o=r),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&r.length===0){if(this._findCommand(l)){t.push(l),r.push(...e.slice(u));break}else if(this._getHelpCommand()&&l===this._getHelpCommand().name()){t.push(l,...e.slice(u));break}else if(this._defaultCommandName){r.push(l,...e.slice(u));break}}if(this._passThroughOptions){o.push(l,...e.slice(u));break}o.push(l)}return{operands:t,unknown:r}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let r=0;r<t;r++){let o=this.options[r].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 r=t||{},o=r.exitCode||1,n=r.code||"commander.error";this._exit(o,n,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in B.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()}`,B.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new ju(this.options),t=r=>this.getOptionValue(r)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(r));this.options.filter(r=>r.implied!==void 0&&t(r.attributeName())&&e.valueFromOption(this.getOptionValue(r.attributeName()),r)).forEach(r=>{Object.keys(r.implied).filter(o=>!t(o)).forEach(o=>{this.setOptionValueWithSource(o,r.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 r=i=>{let a=i.attributeName(),c=this.getOptionValue(a),u=this.options.find(p=>p.negate&&a===p.attributeName()),l=this.options.find(p=>!p.negate&&a===p.attributeName());return u&&(u.presetArg===void 0&&c===!1||u.presetArg!==void 0&&c===u.presetArg)?u:l||i},o=i=>{let a=r(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=Cn(e,o)}let r=`error: unknown option '${e}'${t}`;this.error(r,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,r=t===1?"":"s",n=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${r} 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=Cn(e,o)}let r=`error: unknown command '${e}'${t}`;this.error(r,{code:"commander.unknownCommand"})}version(e,t,r){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",r=r||"output the version number";let o=this.createOption(t,r);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 r=this.parent?._findCommand(e);if(r){let o=[r.name()].concat(r.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(r=>Uu(r));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=Ze.basename(e,Ze.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp(),r=this._getOutputContext(e);t.prepareContext({error:r.error,helpWidth:r.helpWidth,outputHasColors:r.hasColors});let o=t.formatHelp(this,t);return r.hasColors?o:this._outputConfiguration.stripColor(o)}_getOutputContext(e){e=e||{};let t=!!e.error,r,o,n;return t?(r=a=>this._outputConfiguration.writeErr(a),o=this._outputConfiguration.getErrHasColors(),n=this._outputConfiguration.getErrHelpWidth()):(r=a=>this._outputConfiguration.writeOut(a),o=this._outputConfiguration.getOutHasColors(),n=this._outputConfiguration.getOutHelpWidth()),{error:t,write:a=>(o||(a=this._outputConfiguration.stripColor(a)),r(a)),hasColors:o,helpWidth:n}}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let r=this._getOutputContext(e),o={error:r.error,write:r.write,command:this};this._getCommandAndAncestors().reverse().forEach(i=>i.emit("beforeAllHelp",o)),this.emit("beforeHelp",o);let n=this.helpInformation({error:r.error});if(t&&(n=t(n),typeof n!="string"&&!Buffer.isBuffer(n)))throw new Error("outputHelp callback must return a string or a Buffer");r.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(B.exitCode??0);t===0&&e&&typeof e!="function"&&e.error&&(t=1),this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let r=["beforeAll","before","after","afterAll"];if(!r.includes(e))throw new Error(`Unexpected value for position to addHelpText.
24
+ `),this.outputHelp({error:!0}));let r=t||{},o=r.exitCode||1,n=r.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 Xu(this.options),t=r=>this.getOptionValue(r)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(r));this.options.filter(r=>r.implied!==void 0&&t(r.attributeName())&&e.valueFromOption(this.getOptionValue(r.attributeName()),r)).forEach(r=>{Object.keys(r.implied).filter(o=>!t(o)).forEach(o=>{this.setOptionValueWithSource(o,r.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 r=i=>{let a=i.attributeName(),c=this.getOptionValue(a),u=this.options.find(p=>p.negate&&a===p.attributeName()),l=this.options.find(p=>!p.negate&&a===p.attributeName());return u&&(u.presetArg===void 0&&c===!1||u.presetArg!==void 0&&c===u.presetArg)?u:l||i},o=i=>{let a=r(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=Fn(e,o)}let r=`error: unknown option '${e}'${t}`;this.error(r,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,r=t===1?"":"s",n=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${r} 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=Fn(e,o)}let r=`error: unknown command '${e}'${t}`;this.error(r,{code:"commander.unknownCommand"})}version(e,t,r){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",r=r||"output the version number";let o=this.createOption(t,r);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 r=this.parent?._findCommand(e);if(r){let o=[r.name()].concat(r.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(r=>Ku(r));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=tt.basename(e,tt.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp(),r=this._getOutputContext(e);t.prepareContext({error:r.error,helpWidth:r.helpWidth,outputHasColors:r.hasColors});let o=t.formatHelp(this,t);return r.hasColors?o:this._outputConfiguration.stripColor(o)}_getOutputContext(e){e=e||{};let t=!!e.error,r,o,n;return t?(r=a=>this._outputConfiguration.writeErr(a),o=this._outputConfiguration.getErrHasColors(),n=this._outputConfiguration.getErrHelpWidth()):(r=a=>this._outputConfiguration.writeOut(a),o=this._outputConfiguration.getOutHasColors(),n=this._outputConfiguration.getOutHelpWidth()),{error:t,write:a=>(o||(a=this._outputConfiguration.stripColor(a)),r(a)),hasColors:o,helpWidth:n}}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let r=this._getOutputContext(e),o={error:r.error,write:r.write,command:this};this._getCommandAndAncestors().reverse().forEach(i=>i.emit("beforeAllHelp",o)),this.emit("beforeHelp",o);let n=this.helpInformation({error:r.error});if(t&&(n=t(n),typeof n!="string"&&!Buffer.isBuffer(n)))throw new Error("outputHelp callback must return a string or a Buffer");r.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 r=["beforeAll","before","after","afterAll"];if(!r.includes(e))throw new Error(`Unexpected value for position to addHelpText.
26
26
  Expecting one of '${r.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 Pn(s){return s.map(e=>{if(!e.startsWith("--inspect"))return e;let t,r="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]:r=n[3]):(n=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=n[1],r=n[3],o=n[4]),t&&o!=="0"?`${t}=${r}:${parseInt(o)+1}`:e})}function Vr(){if(B.env.NO_COLOR||B.env.FORCE_COLOR==="0"||B.env.FORCE_COLOR==="false")return!1;if(B.env.FORCE_COLOR||B.env.CLICOLOR_FORCE!==void 0)return!0}Wr.Command=Br;Wr.useColor=Vr});var $n=Xe(Ue=>{var{Argument:An}=As(),{Command:zr}=kn(),{CommanderError:Nu,InvalidArgumentError:On}=Zt(),{Help:Hu}=Ur(),{Option:Gn}=Nr();Ue.program=new zr;Ue.createCommand=s=>new zr(s);Ue.createOption=(s,e)=>new Gn(s,e);Ue.createArgument=(s,e)=>new An(s,e);Ue.Command=zr;Ue.Option=Gn;Ue.Argument=An;Ue.Help=Hu;Ue.CommanderError=Nu;Ue.InvalidArgumentError=On;Ue.InvalidOptionArgumentError=On});function et(s,e){return s===void 0||s<e}var Rt,Gs,Jr,Lt,es,Le=P(()=>{"use strict";Rt={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:[]},Gs={version:2,activeIssues:[],repoScores:{},config:Rt,events:[],lastRunAt:new Date().toISOString()},Jr=["nonprofit","devtools","infrastructure","web-frameworks","data-ml","education"],Lt=["beginner","intermediate","advanced"],es={beginner:["good first issue","help wanted","easy","up-for-grabs","first-timers-only","beginner"],intermediate:["enhancement","feature","feature-request","contributions welcome"],advanced:["proposal","RFC","accepted","design"]}});function S(s){return s instanceof Error?s.message:String(s)}function ve(s){if(s&&typeof s=="object"&&"status"in s){let e=s.status;return typeof e=="number"&&Number.isFinite(e)?e:void 0}}function st(s){let e=ve(s);return e===429?!0:e===403?S(s).toLowerCase().includes("rate limit"):!1}function be(s){let e=ve(s);if(e===401||e===429)return!0;if(e===403){let t=S(s).toLowerCase();return t.includes("rate limit")||t.includes("abuse detection")}return!1}var ts,tt,te,se=P(()=>{"use strict";ts=class extends Error{constructor(t,r){super(t);this.code=r;this.name="OssAutopilotError"}},tt=class extends ts{constructor(e){super(e,"CONFIGURATION_ERROR"),this.name="ConfigurationError"}},te=class extends ts{constructor(e){super(e,"VALIDATION_ERROR"),this.name="ValidationError"}}});function Qr(){Kr=!0}function T(s,e,...t){if(!Kr)return;let r=new Date().toISOString();console.error(`[${r}] [DEBUG] [${s}] ${e}`,...t)}function ge(s,e,...t){let r=new Date().toISOString();console.error(`[${r}] [INFO] [${s}] ${e}`,...t)}function m(s,e,...t){let r=new Date().toISOString();console.error(`[${r}] [WARN] [${s}] ${e}`,...t)}async function Yr(s,e,t){if(!Kr)return t();let r=performance.now();try{let o=await t(),n=(performance.now()-r).toFixed(0);return T(s,`${e} completed in ${n}ms`),o}catch(o){let n=(performance.now()-r).toFixed(0);throw T(s,`${e} failed after ${n}ms`),o}}var Kr,re=P(()=>{"use strict";Kr=!1});var Un={};le(Un,{DEFAULT_CONCURRENCY:()=>gt,byDateDescending:()=>Fn,daysBetween:()=>Me,detectGitHubUsername:()=>xs,extractOwnerRepo:()=>Tt,formatRelativeTime:()=>Ds,getBackupDir:()=>Et,getCLIVersion:()=>Qe,getCacheDir:()=>$s,getDataDir:()=>Ne,getGitHubToken:()=>ot,getGitHubTokenAsync:()=>Is,getStatePath:()=>mt,isOwnRepo:()=>He,parseGitHubUrl:()=>me,requireGitHubToken:()=>Ee,resetGitHubTokenCache:()=>xn,splitRepo:()=>jt,stateFileExists:()=>Fs});function Ne(){let s=rt.join(Zr.homedir(),".oss-autopilot");return je.existsSync(s)||je.mkdirSync(s,{recursive:!0,mode:448}),s}function mt(){return rt.join(Ne(),"state.json")}function Et(){let s=rt.join(Ne(),"backups");return je.existsSync(s)||je.mkdirSync(s,{recursive:!0,mode:448}),s}function $s(){let s=rt.join(Ne(),"cache");return je.existsSync(s)||je.mkdirSync(s,{recursive:!0,mode:448}),s}function Xr(s,e){return qu.test(s)&&Bu.test(e)}function me(s){if(!s.startsWith("https://github.com/"))return null;let e=s.match(/github\.com\/([^/]+)\/([^/]+)\/pull\/(\d+)/);if(e){let r=e[1],o=e[2];return Xr(r,o)?{owner:r,repo:o,number:parseInt(e[3],10),type:"pull"}:null}let t=s.match(/github\.com\/([^/]+)\/([^/]+)\/issues\/(\d+)/);if(t){let r=t[1],o=t[2];return Xr(r,o)?{owner:r,repo:o,number:parseInt(t[3],10),type:"issues"}:null}return null}function Tt(s){if(!s.startsWith("https://github.com/"))return null;let e=s.match(/github\.com\/([^/]+)\/([^/]+)/);if(!e)return null;let t=e[1],r=e[2];return Xr(t,r)?{owner:t,repo:r}:null}function Me(s,e=new Date){return Math.max(0,Math.floor((e.getTime()-s.getTime())/(1e3*60*60*24)))}function jt(s){let[e,t]=s.split("/");if(!e||!t)throw new Error(`Invalid repo format: expected "owner/repo", got "${s}"`);return{owner:e,repo:t}}function He(s,e){return s.toLowerCase()===e.toLowerCase()}function Qe(){try{let s=rt.join(rt.dirname(process.argv[1]),"..","package.json");return JSON.parse(je.readFileSync(s,"utf-8")).version}catch{return"0.0.0"}}function Ds(s){let e=new Date(s),t=Date.now()-e.getTime();if(t<0)return"just now";let r=Math.floor(t/6e4),o=Math.floor(t/36e5),n=Math.floor(t/864e5);return r<60?`${r}m ago`:o<24?`${o}h ago`:n<30?`${n}d ago`:e.toLocaleDateString()}function Fn(s){return(e,t)=>{let r=new Date(s(e)||0).getTime();return new Date(s(t)||0).getTime()-r}}function ot(){if($e)return $e;if(ss)return null;if(ss=!0,process.env.GITHUB_TOKEN)return $e=process.env.GITHUB_TOKEN,$e;try{let s=(0,rs.execFileSync)("gh",["auth","token"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],timeout:2e3}).trim();if(s&&s.length>0)return $e=s,T(wt,"Using GitHub token from gh CLI"),$e}catch(s){T(wt,"gh auth token failed (CLI unavailable or not authenticated)",s)}return null}function Ee(){let s=ot();if(!s)throw new tt(`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 In(s){return s.map(e=>{if(!e.startsWith("--inspect"))return e;let t,r="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]:r=n[3]):(n=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=n[1],r=n[3],o=n[4]),t&&o!=="0"?`${t}=${r}:${parseInt(o)+1}`:e})}function Kr(){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}Qr.Command=Jr;Qr.useColor=Kr});var jn=et(Me=>{var{Argument:Un}=Gs(),{Command:Yr}=xn(),{CommanderError:Zu,InvalidArgumentError:Mn}=ts(),{Help:el}=Nr(),{Option:Ln}=Vr();Me.program=new Yr;Me.createCommand=s=>new Yr(s);Me.createOption=(s,e)=>new Ln(s,e);Me.createArgument=(s,e)=>new Un(s,e);Me.Command=Yr;Me.Option=Ln;Me.Argument=Un;Me.Help=el;Me.CommanderError=Zu;Me.InvalidArgumentError=Mn;Me.InvalidOptionArgumentError=Mn});function st(s,e){return s===void 0||s<e}var Et,Ds,Xr,Nt,ss,je=P(()=>{"use strict";Et={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:[]},Ds={version:2,activeIssues:[],repoScores:{},config:Et,events:[],lastRunAt:new Date().toISOString()},Xr=["nonprofit","devtools","infrastructure","web-frameworks","data-ml","education"],Nt=["beginner","intermediate","advanced"],ss={beginner:["good first issue","help wanted","easy","up-for-grabs","first-timers-only","beginner"],intermediate:["enhancement","feature","feature-request","contributions welcome"],advanced:["proposal","RFC","accepted","design"]}});function S(s){return s instanceof Error?s.message:String(s)}function Se(s){if(s&&typeof s=="object"&&"status"in s){let e=s.status;return typeof e=="number"&&Number.isFinite(e)?e:void 0}}function ot(s){let e=Se(s);return e===429?!0:e===403?S(s).toLowerCase().includes("rate limit"):!1}function be(s){let e=Se(s);if(e===401||e===429)return!0;if(e===403){let t=S(s).toLowerCase();return t.includes("rate limit")||t.includes("abuse detection")}return!1}var rs,rt,re,te=P(()=>{"use strict";rs=class extends Error{constructor(t,r){super(t);this.code=r;this.name="OssAutopilotError"}},rt=class extends rs{constructor(e){super(e,"CONFIGURATION_ERROR"),this.name="ConfigurationError"}},re=class extends rs{constructor(e){super(e,"VALIDATION_ERROR"),this.name="ValidationError"}}});function eo(){Zr=!0}function R(s,e,...t){if(!Zr)return;let r=new Date().toISOString();console.error(`[${r}] [DEBUG] [${s}] ${e}`,...t)}function ge(s,e,...t){let r=new Date().toISOString();console.error(`[${r}] [INFO] [${s}] ${e}`,...t)}function m(s,e,...t){let r=new Date().toISOString();console.error(`[${r}] [WARN] [${s}] ${e}`,...t)}async function to(s,e,t){if(!Zr)return t();let r=performance.now();try{let o=await t(),n=(performance.now()-r).toFixed(0);return R(s,`${e} completed in ${n}ms`),o}catch(o){let n=(performance.now()-r).toFixed(0);throw R(s,`${e} failed after ${n}ms`),o}}var Zr,se=P(()=>{"use strict";Zr=!1});var Vn={};ce(Vn,{DEFAULT_CONCURRENCY:()=>ht,byDateDescending:()=>qn,daysBetween:()=>Le,detectGitHubUsername:()=>Ms,extractOwnerRepo:()=>vt,formatRelativeTime:()=>Is,getBackupDir:()=>St,getCLIVersion:()=>Ye,getCacheDir:()=>Fs,getDataDir:()=>He,getGitHubToken:()=>it,getGitHubTokenAsync:()=>xs,getStatePath:()=>ft,isOwnRepo:()=>qe,parseGitHubUrl:()=>me,requireGitHubToken:()=>Ee,resetGitHubTokenCache:()=>Bn,splitRepo:()=>Ht,stateFileExists:()=>Us});function He(){let s=nt.join(ro.homedir(),".oss-autopilot");return Ne.existsSync(s)||Ne.mkdirSync(s,{recursive:!0,mode:448}),s}function ft(){return nt.join(He(),"state.json")}function St(){let s=nt.join(He(),"backups");return Ne.existsSync(s)||Ne.mkdirSync(s,{recursive:!0,mode:448}),s}function Fs(){let s=nt.join(He(),"cache");return Ne.existsSync(s)||Ne.mkdirSync(s,{recursive:!0,mode:448}),s}function so(s,e){return tl.test(s)&&sl.test(e)}function me(s){if(!s.startsWith("https://github.com/"))return null;let e=s.match(/github\.com\/([^/]+)\/([^/]+)\/pull\/(\d+)/);if(e){let r=e[1],o=e[2];return so(r,o)?{owner:r,repo:o,number:parseInt(e[3],10),type:"pull"}:null}let t=s.match(/github\.com\/([^/]+)\/([^/]+)\/issues\/(\d+)/);if(t){let r=t[1],o=t[2];return so(r,o)?{owner:r,repo:o,number:parseInt(t[3],10),type:"issues"}:null}return null}function vt(s){if(!s.startsWith("https://github.com/"))return null;let e=s.match(/github\.com\/([^/]+)\/([^/]+)/);if(!e)return null;let t=e[1],r=e[2];return so(t,r)?{owner:t,repo:r}:null}function Le(s,e=new Date){return Math.max(0,Math.floor((e.getTime()-s.getTime())/(1e3*60*60*24)))}function Ht(s){let[e,t]=s.split("/");if(!e||!t)throw new Error(`Invalid repo format: expected "owner/repo", got "${s}"`);return{owner:e,repo:t}}function qe(s,e){return s.toLowerCase()===e.toLowerCase()}function Ye(){try{let s=nt.join(nt.dirname(process.argv[1]),"..","package.json");return JSON.parse(Ne.readFileSync(s,"utf-8")).version}catch{return"0.0.0"}}function Is(s){let e=new Date(s),t=Date.now()-e.getTime();if(t<0)return"just now";let r=Math.floor(t/6e4),o=Math.floor(t/36e5),n=Math.floor(t/864e5);return r<60?`${r}m ago`:o<24?`${o}h ago`:n<30?`${n}d ago`:e.toLocaleDateString()}function qn(s){return(e,t)=>{let r=new Date(s(e)||0).getTime();return new Date(s(t)||0).getTime()-r}}function it(){if(De)return De;if(os)return null;if(os=!0,process.env.GITHUB_TOKEN)return De=process.env.GITHUB_TOKEN,De;try{let s=(0,ns.execFileSync)("gh",["auth","token"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],timeout:2e3}).trim();if(s&&s.length>0)return De=s,R(Tt,"Using GitHub token from gh CLI"),De}catch(s){R(Tt,"gh auth token failed (CLI unavailable or not authenticated)",s)}return null}function Ee(){let s=it();if(!s)throw new rt(`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 s}function xn(){$e=null,ss=!1}async function Is(){if($e)return $e;if(ss)return null;if(ss=!0,process.env.GITHUB_TOKEN)return $e=process.env.GITHUB_TOKEN,$e;try{let s=await new Promise((e,t)=>{(0,rs.execFile)("gh",["auth","token"],{encoding:"utf-8",timeout:2e3},(r,o)=>{r?t(r):e(o.trim())})});if(s&&s.length>0)return $e=s,T(wt,"Using GitHub token from gh CLI (async)"),$e}catch(s){T(wt,"gh auth token failed (CLI unavailable or not authenticated)",s)}return null}function Fs(){let s=rt.join(Zr.homedir(),".oss-autopilot","state.json");return je.existsSync(s)}async function xs(){try{let s=await new Promise((e,t)=>{(0,rs.execFile)("gh",["api","user","--jq",".login"],{encoding:"utf-8",timeout:5e3},(r,o)=>{r?t(r):e(o.trim())})});return s&&Vu.test(s)?(T(wt,`Detected GitHub username: ${s}`),s):(T(wt,`gh api user returned invalid username: "${s}"`),null)}catch(s){return T(wt,"detectGitHubUsername failed",s),null}}var je,rt,Zr,rs,gt,wt,$e,ss,qu,Bu,Vu,Se=P(()=>{"use strict";je=V(require("fs"),1),rt=V(require("path"),1),Zr=V(require("os"),1),rs=require("child_process");se();re();gt=5,wt="utils",$e=null,ss=!1;qu=/^[a-zA-Z0-9_-]+$/,Bu=/^[a-zA-Z0-9_.-]+$/;Vu=/^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$/});function Ju(s){try{let e=JSON.parse(x.readFileSync(s,"utf-8"));return Date.now()-e.timestamp>zu}catch(e){return T(j,"Lock file unreadable or invalid JSON, treating as stale",e),!0}}function Ln(s){let e=JSON.stringify({pid:process.pid,timestamp:Date.now()});try{x.writeFileSync(s,e,{flag:"wx"});return}catch(t){T(j,"Lock file already exists, checking staleness",t)}if(!Ju(s))throw new Error("State file is locked by another process");try{x.unlinkSync(s)}catch(t){T(j,"Stale lock already removed by another process",t)}try{x.writeFileSync(s,e,{flag:"wx"})}catch(t){throw T(j,"Lock re-acquire failed (race condition)",t),new Error("State file is locked by another process",{cause:t})}}function jn(s){try{JSON.parse(x.readFileSync(s,"utf-8")).pid===process.pid&&x.unlinkSync(s)}catch(e){T(j,"Lock file already removed or unreadable during release",e)}}function ns(s,e,t){let r=s+".tmp";x.writeFileSync(r,e,{mode:t??384}),x.renameSync(r,s),t!==void 0&&x.chmodSync(s,t)}function Nn(s){T(j,"Migrating state from v1 to v2 (fresh GitHub fetching)...");let e=s.mergedPRs||[],t=s.closedPRs||[],r={...s.repoScores||{}};for(let n of[...e,...t])r[n.repo]||(r[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:s.activeIssues||[],repoScores:r,config:s.config,events:s.events||[],lastRunAt:new Date().toISOString()};return T(j,`Migration complete. Preserved ${Object.keys(r).length} repo scores.`),o}function Hn(s){if(!s||typeof s!="object")return!1;let e=s;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 Ms(){return{version:Wu,activeIssues:[],repoScores:{},config:{...Gs.config,setupComplete:!1,languages:[...Gs.config.languages],labels:[...Gs.config.labels],excludeRepos:[],trustedProjects:[],shelvedPRUrls:[],dismissedIssues:{}},events:[],lastRunAt:new Date().toISOString()}}function Ku(){let s=mt();if(x.existsSync(s)||!x.existsSync(os))return!1;T(j,"Migrating state from ./data/ to ~/.oss-autopilot/...");try{if(Ne(),x.copyFileSync(os,s),T(j,`Migrated state file to ${s}`),x.existsSync(vt)){let t=Et(),r=x.readdirSync(vt).filter(o=>o.startsWith("state-")&&o.endsWith(".json"));for(let o of r){let n=qe.join(vt,o),i=qe.join(t,o);x.copyFileSync(n,i)}T(j,`Migrated ${r.length} backup files`)}if(x.unlinkSync(os),T(j,"Removed legacy state file"),x.existsSync(vt)){let t=x.readdirSync(vt);for(let r of t)x.unlinkSync(qe.join(vt,r));x.rmdirSync(vt)}let e=qe.dirname(os);return x.existsSync(e)&&x.readdirSync(e).length===0&&(x.rmdirSync(e),T(j,"Removed empty legacy data directory")),T(j,"Migration complete!"),!0}catch(e){if(m(j,`Failed to migrate state: ${S(e)}`),x.existsSync(s)&&x.existsSync(os))try{x.unlinkSync(s),T(j,"Cleaned up partial migration - removed incomplete new state file")}catch(t){m(j,"Could not clean up partial migration file"),T(j,"Partial migration cleanup failed",t)}return m(j,"To resolve this issue:"),m(j," 1. Ensure you have write permissions to ~/.oss-autopilot/"),m(j," 2. Check available disk space"),m(j," 3. Manually copy ./data/state.json to ~/.oss-autopilot/state.json"),m(j," 4. Or delete ./data/state.json to start fresh"),!1}}function Mn(){let s=Et();if(!x.existsSync(s))return null;let e=x.readdirSync(s).filter(t=>t.startsWith("state-")&&t.endsWith(".json")).sort().reverse();for(let t of e){let r=qe.join(s,t);try{let o=x.readFileSync(r,"utf-8"),n=JSON.parse(o);if(Hn(n)){T(j,`Successfully restored state from backup: ${t}`),n.version===1&&(n=Nn(n));let i=Object.keys(n.repoScores).length;T(j,`Restored state v${n.version}: ${i} repo scores`);let a=mt();return ns(a,JSON.stringify(n,null,2),384),T(j,"Restored backup written to main state file"),n}}catch(o){m(j,`Backup ${t} is corrupted, trying next...`),T(j,`Backup ${t} parse failed`,o)}}return null}function eo(){Ku();let s=mt();try{if(x.existsSync(s)){let e=x.readFileSync(s,"utf-8"),t=JSON.parse(e);if(!Hn(t)){m(j,"Invalid state file structure, attempting to restore from backup...");let n=Mn();if(n){let i=Us(s);return{state:n,mtimeMs:i}}return m(j,"No valid backup found, starting fresh"),{state:Ms(),mtimeMs:0}}t.version===1&&(t=Nn(t),ns(s,JSON.stringify(t,null,2),384),T(j,"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&&(ns(s,JSON.stringify(t,null,2),384),m(j,"Cleaned up removed features (snoozedPRs, dismissed PR URLs) from persisted state"))}catch(n){m(j,`Failed to clean up removed features from state: ${S(n)}`)}let r=Us(s),o=Object.keys(t.repoScores).length;return T(j,`Loaded state v${t.version}: ${o} repo scores tracked`),{state:t,mtimeMs:r}}}catch(e){m(j,"Error loading state:",e),m(j,"Attempting to restore from backup...");let t=Mn();if(t){let r=Us(s);return{state:t,mtimeMs:r}}m(j,"No valid backup found, starting fresh")}return T(j,"No existing state found, initializing..."),{state:Ms(),mtimeMs:0}}function Us(s){try{return x.statSync(s).mtimeMs}catch(e){return T(j,`Could not read state file mtime (reload detection will always trigger): ${S(e)}`),0}}function Qu(){let s=Et();try{let e=x.readdirSync(s).filter(t=>t.startsWith("state-")).sort().reverse();for(let t of e.slice(10))try{x.unlinkSync(qe.join(s,t))}catch(r){m(j,`Could not delete old backup ${t}:`,S(r))}}catch(e){m(j,"Could not clean up backups:",S(e))}}function qn(s){let e=mt(),t=e+".lock",r=Et();Ln(t);try{try{if(x.existsSync(e)){let n=new Date().toISOString().replace(/[:.]/g,"-"),i=Math.random().toString(36).slice(2,8).padEnd(6,"0"),a=qe.join(r,`state-${n}-${i}.json`);x.copyFileSync(e,a),x.chmodSync(a,384),Qu()}}catch(n){m(j,`Could not create backup before save: ${S(n)}`)}ns(e,JSON.stringify(s,null,2),384);let o=Us(e);return T(j,"State saved successfully"),o}finally{jn(t)}}function Bn(s){try{let e=mt();if(x.statSync(e).mtimeMs===s)return null;let r=eo();try{r.mtimeMs=x.statSync(e).mtimeMs}catch(o){T(j,"Could not re-read mtime after reload (will retry next cycle)",o)}return r}catch(e){return m(j,`Failed to reload state from disk: ${S(e)}`),null}}var x,qe,j,Wu,zu,os,vt,to=P(()=>{"use strict";x=V(require("fs"),1),qe=V(require("path"),1);Le();Se();se();re();j="state",Wu=2,zu=3e4,os=qe.join(process.cwd(),"data","state.json"),vt=qe.join(process.cwd(),"data","backups")});function Xu(s){return{repo:s,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}}}function Zu(s){let e=5;if(s.mergedPRCount>0){let r=Math.min(Math.round(Math.log2(s.mergedPRCount+1)*2),5);e+=r}let t=Math.min(s.closedWithoutMergeCount,3);if(e-=t,s.lastMergedAt){let r=new Date(s.lastMergedAt);isNaN(r.getTime())?m(so,`Invalid lastMergedAt date for ${s.repo}: "${s.lastMergedAt}". Skipping recency bonus.`):Math.floor((Date.now()-r.getTime())/864e5)<=90&&(e+=1)}return s.signals.isResponsive&&(e+=1),s.signals.hasHostileComments&&(e-=2),Math.max(1,Math.min(10,e))}function Vn(s,e){return s.repoScores[e]}function is(s,e,t){s.repoScores[e]||(s.repoScores[e]=Xu(e));let r=s.repoScores[e];t.mergedPRCount!==void 0&&(r.mergedPRCount=t.mergedPRCount),t.closedWithoutMergeCount!==void 0&&(r.closedWithoutMergeCount=t.closedWithoutMergeCount),t.avgResponseDays!==void 0&&(r.avgResponseDays=t.avgResponseDays),t.lastMergedAt!==void 0&&(r.lastMergedAt=t.lastMergedAt),t.stargazersCount!==void 0&&(r.stargazersCount=t.stargazersCount),t.language!==void 0&&(r.language=t.language),t.signals&&(r.signals={...r.signals,...t.signals}),r.score=Zu(r),r.lastEvaluatedAt=new Date().toISOString(),T(so,`Updated repo score for ${e}: ${r.score}/10`)}function Wn(s,e){let t=(s.repoScores[e]?.mergedPRCount??0)+1;is(s,e,{mergedPRCount:t,lastMergedAt:new Date().toISOString()})}function zn(s,e){let t=(s.repoScores[e]?.closedWithoutMergeCount??0)+1;is(s,e,{closedWithoutMergeCount:t})}function Jn(s,e){is(s,e,{signals:{hasHostileComments:!0}})}function Kn(s){return Object.values(s.repoScores).filter(e=>e.mergedPRCount>0).sort((e,t)=>t.mergedPRCount-e.mergedPRCount).map(e=>e.repo)}function Qn(s){return Object.values(s.repoScores).filter(e=>e.mergedPRCount===0&&e.closedWithoutMergeCount===0).sort((e,t)=>t.score-e.score).map(e=>e.repo)}function Yn(s,e){let t=e??s.config.minRepoScoreThreshold;return Object.values(s.repoScores).filter(r=>r.score>=t).sort((r,o)=>o.score-r.score).map(r=>r.repo)}function Xn(s,e){let t=e??s.config.minRepoScoreThreshold,r=Date.now();return Object.values(s.repoScores).filter(o=>{if(o.score>t)return!1;let n=r-new Date(o.lastEvaluatedAt).getTime();return Number.isFinite(n)?n<=Yu:(m(so,`Invalid lastEvaluatedAt for repo ${o.repo}: "${o.lastEvaluatedAt}", treating as stale`),!1)}).sort((o,n)=>o.score-n.score).map(o=>o.repo)}function Zn(s){let e=0,t=0,r=0;for(let i of Object.values(s.repoScores))et(i.stargazersCount,s.config.minStars??50)||(r++,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:s.config.trustedProjects.length,mergeRate:n.toFixed(1)+"%",totalTracked:r,needsResponse:0}}var so,Yu,ei=P(()=>{"use strict";Le();re();so="scoring",Yu=720*60*60*1e3});function U(){return ro||(ro=new Ls),ro}var nt,ti,Ls,ro,Nt=P(()=>{"use strict";to();ei();re();to();nt="state",ti=1e3,Ls=class s{state;inMemoryOnly;lastLoadedMtimeMs=0;_batching=!1;_batchDirty=!1;constructor(e=!1){if(this.inMemoryOnly=e,e)this.state=Ms();else{let t=eo();this.state=t.state,this.lastLoadedMtimeMs=t.mtimeMs}}batch(e){if(this._batching){e();return}this._batching=!0,this._batchDirty=!1;try{e(),this._batchDirty&&this.save()}finally{this._batching=!1,this._batchDirty=!1}}autoSave(){if(this._batching){this._batchDirty=!0;return}this.save()}isSetupComplete(){return this.state.config.setupComplete===!0}markSetupComplete(){this.state.config.setupComplete=!0,this.state.config.setupCompletedAt=new Date().toISOString(),this.autoSave()}initializeWithDefaults(e){if(this.state.config.setupComplete){T(nt,`Setup already complete, skipping initializeWithDefaults for "${e}"`);return}this.batch(()=>{this.updateConfig({githubUsername:e}),this.markSetupComplete(),T(nt,`Initialized with defaults for user "${e}"`)})}save(){this.state.lastRunAt=new Date().toISOString(),!this.inMemoryOnly&&(this.lastLoadedMtimeMs=qn(this.state))}getState(){return this.state}reloadIfChanged(){if(this.inMemoryOnly)return!1;let e=Bn(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,this.autoSave()}setMonthlyMergedCounts(e){this.state.monthlyMergedCounts=e,this.autoSave()}setMonthlyClosedCounts(e){this.state.monthlyClosedCounts=e,this.autoSave()}setMonthlyOpenedCounts(e){this.state.monthlyOpenedCounts=e,this.autoSave()}setDailyActivityCounts(e){this.state.dailyActivityCounts=e,this.autoSave()}setLocalRepoCache(e){this.state.localRepoCache=e,this.autoSave()}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)),r=e.filter(o=>!t.has(o.url));r.length!==0&&(this.state.mergedPRs.push(...r),this.state.mergedPRs.sort((o,n)=>n.mergedAt.localeCompare(o.mergedAt)),T(nt,`Added ${r.length} merged PRs (total: ${this.state.mergedPRs.length})`),this.autoSave())}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)),r=e.filter(o=>!t.has(o.url));r.length!==0&&(this.state.closedPRs.push(...r),this.state.closedPRs.sort((o,n)=>n.closedAt.localeCompare(o.closedAt)),T(nt,`Added ${r.length} closed PRs (total: ${this.state.closedPRs.length})`),this.autoSave())}getClosedPRWatermark(){return this.state.closedPRs?.[0]?.closedAt||void 0}updateConfig(e){this.state.config={...this.state.config,...e},this.autoSave()}appendEvent(e,t){let r={id:`evt_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,type:e,at:new Date().toISOString(),data:t};this.state.events.push(r),this.state.events.length>ti&&(this.state.events=this.state.events.slice(-ti)),this.autoSave()}getEventsByType(e){return this.state.events.filter(t=>t.type===e)}getEventsInRange(e,t=new Date){return this.state.events.filter(r=>{let o=new Date(r.at);return o>=e&&o<=t})}addIssue(e){if(this.state.activeIssues.find(r=>r.url===e.url)){T(nt,`Issue ${e.url} already tracked`);return}this.state.activeIssues.push(e),T(nt,`Added issue: ${e.repo}#${e.number}`),this.autoSave()}addTrustedProject(e){this.state.config.trustedProjects.includes(e)||(this.state.config.trustedProjects.push(e),T(nt,`Added trusted project: ${e}`),this.autoSave())}static matchesExclusion(e,t,r){let o=e.toLowerCase();return!!(t.some(n=>n.toLowerCase()===o)||r?.some(n=>n.toLowerCase()===o.split("/")[0]))}cleanupExcludedData(e,t){let r=i=>s.matchesExclusion(i,e,t),o=this.state.config.trustedProjects.length;this.state.config.trustedProjects=this.state.config.trustedProjects.filter(i=>!r(i));let n=o-this.state.config.trustedProjects.length;n>0&&(T(nt,`Removed ${n} trusted project(s) for excluded repos/orgs`),this.autoSave())}getStarredRepos(){return this.state.config.starredRepos||[]}setStarredRepos(e){this.state.config.starredRepos=e,this.state.config.starredReposLastFetched=new Date().toISOString(),T(nt,`Updated starred repos: ${e.length} repositories`),this.autoSave()}isStarredReposStale(){let e=this.state.config.starredReposLastFetched;if(!e)return!0;let t=1440*60*1e3,r=new Date(e);return new Date().getTime()-r.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),this.autoSave(),!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),this.autoSave(),!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,this.autoSave(),!0)}undismissIssue(e){return!this.state.config.dismissedIssues||!(e in this.state.config.dismissedIssues)?!1:(delete this.state.config.dismissedIssues[e],this.autoSave(),!0)}getIssueDismissedAt(e){return this.state.config.dismissedIssues?.[e]}setStatusOverride(e,t,r){this.state.config.statusOverrides||(this.state.config.statusOverrides={}),this.state.config.statusOverrides[e]={status:t,setAt:new Date().toISOString(),lastActivityAt:r},this.autoSave()}clearStatusOverride(e){return!this.state.config.statusOverrides||!(e in this.state.config.statusOverrides)?!1:(delete this.state.config.statusOverrides[e],this.autoSave(),!0)}getStatusOverride(e,t){let r=this.state.config.statusOverrides?.[e];if(r){if(t&&t>r.lastActivityAt){this.clearStatusOverride(e);return}return r}}getRepoScore(e){return Vn(this.state,e)}updateRepoScore(e,t){is(this.state,e,t),this.autoSave()}incrementMergedCount(e){Wn(this.state,e),this.autoSave()}incrementClosedCount(e){zn(this.state,e),this.autoSave()}markRepoHostile(e){Jn(this.state,e),this.autoSave()}getReposWithMergedPRs(){return Kn(this.state)}getReposWithOpenPRs(){return Qn(this.state)}getHighScoringRepos(e){return Yn(this.state,e)}getLowScoringRepos(e){return Xn(this.state,e)}getStats(){return Zn(this.state)}},ro=null});function ht(){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 as=P(()=>{});function js(s,e,t,r){if(typeof t!="function")throw new Error("method for before hook must be a function");return r||(r={}),Array.isArray(e)?e.reverse().reduce((o,n)=>js.bind(null,s,n,o,r),t)():Promise.resolve().then(()=>s.registry[e]?s.registry[e].reduce((o,n)=>n.hook.bind(null,o,r),t)():t(r))}var si=P(()=>{});function ri(s,e,t,r){let o=r;s.registry[t]||(s.registry[t]=[]),e==="before"&&(r=(n,i)=>Promise.resolve().then(o.bind(null,i)).then(n.bind(null,i))),e==="after"&&(r=(n,i)=>{let a;return Promise.resolve().then(n.bind(null,i)).then(c=>(a=c,o(a,i))).then(()=>a)}),e==="error"&&(r=(n,i)=>Promise.resolve().then(n.bind(null,i)).catch(a=>o(a,i))),s.registry[t].push({hook:r,orig:o})}var oi=P(()=>{});function ni(s,e,t){if(!s.registry[e])return;let r=s.registry[e].map(o=>o.orig).indexOf(t);r!==-1&&s.registry[e].splice(r,1)}var ii=P(()=>{});function ui(s,e,t){let r=ci(ni,null).apply(null,t?[e,t]:[e]);s.api={remove:r},s.remove=r,["before","error","after","wrap"].forEach(o=>{let n=t?[e,o,t]:[e,o];s[o]=s.api[o]=ci(ri,null).apply(null,n)})}function tl(){let s=Symbol("Singular"),e={registry:{}},t=js.bind(null,e,s);return ui(t,e,s),t}function sl(){let s={registry:{}},e=js.bind(null,s);return ui(e,s),e}var ai,ci,li,pi=P(()=>{si();oi();ii();ai=Function.bind,ci=ai.bind(ai);li={Singular:tl,Collection:sl}});function il(s){return s?Object.keys(s).reduce((e,t)=>(e[t.toLowerCase()]=s[t],e),{}):{}}function al(s){if(typeof s!="object"||s===null||Object.prototype.toString.call(s)!=="[object Object]")return!1;let e=Object.getPrototypeOf(s);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(s)}function mi(s,e){let t=Object.assign({},s);return Object.keys(e).forEach(r=>{al(e[r])?r in s?t[r]=mi(s[r],e[r]):Object.assign(t,{[r]:e[r]}):Object.assign(t,{[r]:e[r]})}),t}function di(s){for(let e in s)s[e]===void 0&&delete s[e];return s}function no(s,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=il(t.headers),di(t),di(t.headers);let r=mi(s||{},t);return t.url==="/graphql"&&(s&&s.mediaType.previews?.length&&(r.mediaType.previews=s.mediaType.previews.filter(o=>!r.mediaType.previews.includes(o)).concat(r.mediaType.previews)),r.mediaType.previews=(r.mediaType.previews||[]).map(o=>o.replace(/-preview/,""))),r}function cl(s,e){let t=/\?/.test(s)?"&":"?",r=Object.keys(e);return r.length===0?s:s+t+r.map(o=>o==="q"?"q="+e.q.split("+").map(encodeURIComponent).join("+"):`${o}=${encodeURIComponent(e[o])}`).join("&")}function ll(s){return s.replace(/(?:^\W+)|(?:(?<!\W)\W+$)/g,"").split(/,/)}function pl(s){let e=s.match(ul);return e?e.map(ll).reduce((t,r)=>t.concat(r),[]):[]}function gi(s,e){let t={__proto__:null};for(let r of Object.keys(s))e.indexOf(r)===-1&&(t[r]=s[r]);return t}function hi(s){return s.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 qt(s){return encodeURIComponent(s).replace(/[!'()*]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function cs(s,e,t){return e=s==="+"||s==="#"?hi(e):qt(e),t?qt(t)+"="+e:e}function Ht(s){return s!=null}function oo(s){return s===";"||s==="&"||s==="?"}function dl(s,e,t,r){var o=s[t],n=[];if(Ht(o)&&o!=="")if(typeof o=="string"||typeof o=="number"||typeof o=="bigint"||typeof o=="boolean")o=o.toString(),r&&r!=="*"&&(o=o.substring(0,parseInt(r,10))),n.push(cs(e,o,oo(e)?t:""));else if(r==="*")Array.isArray(o)?o.filter(Ht).forEach(function(i){n.push(cs(e,i,oo(e)?t:""))}):Object.keys(o).forEach(function(i){Ht(o[i])&&n.push(cs(e,o[i],i))});else{let i=[];Array.isArray(o)?o.filter(Ht).forEach(function(a){i.push(cs(e,a))}):Object.keys(o).forEach(function(a){Ht(o[a])&&(i.push(qt(a)),i.push(cs(e,o[a].toString())))}),oo(e)?n.push(qt(t)+"="+i.join(",")):i.length!==0&&n.push(i.join(","))}else e===";"?Ht(o)&&n.push(qt(t)):o===""&&(e==="&"||e==="?")?n.push(qt(t)+"="):o===""&&n.push("");return n}function gl(s){return{expand:ml.bind(null,s)}}function ml(s,e){var t=["+","#",".","/",";","?","&"];return s=s.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(r,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(dl(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 hi(n)}),s==="/"?s:s.replace(/\/$/,"")}function fi(s){let e=s.method.toUpperCase(),t=(s.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),r=Object.assign({},s.headers),o,n=gi(s,["method","baseUrl","url","headers","request","mediaType"]),i=pl(t);t=gl(t).expand(n),/^http/.test(t)||(t=s.baseUrl+t);let a=Object.keys(s).filter(l=>i.includes(l)).concat("baseUrl"),c=gi(n,a);if(!/application\/octet-stream/i.test(r.accept)&&(s.mediaType.format&&(r.accept=r.accept.split(/,/).map(l=>l.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${s.mediaType.format}`)).join(",")),t.endsWith("/graphql")&&s.mediaType.previews?.length)){let l=r.accept.match(/(?<![\w-])[\w-]+(?=-preview)/g)||[];r.accept=l.concat(s.mediaType.previews).map(p=>{let g=s.mediaType.format?`.${s.mediaType.format}`:"+json";return`application/vnd.github.${p}-preview${g}`}).join(",")}return["GET","HEAD"].includes(e)?t=cl(t,c):"data"in c?o=c.data:Object.keys(c).length&&(o=c),!r["content-type"]&&typeof o<"u"&&(r["content-type"]="application/json; charset=utf-8"),["PATCH","PUT"].includes(e)&&typeof o>"u"&&(o=""),Object.assign({method:e,url:t,headers:r},typeof o<"u"?{body:o}:null,s.request?{request:s.request}:null)}function hl(s,e,t){return fi(no(s,e,t))}function bi(s,e){let t=no(s,e),r=hl.bind(null,t);return Object.assign(r,{DEFAULTS:t,defaults:bi.bind(null,t),merge:no.bind(null,t),parse:fi})}var rl,ol,nl,ul,yi,_i=P(()=>{as();rl="0.0.0-development",ol=`octokit-endpoint.js/${rl} ${ht()}`,nl={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":ol},mediaType:{format:""}};ul=/\{[^{}}]+\}/g;yi=bi(null,nl)});var Ti=Xe((Ng,us)=>{"use strict";var qs=function(){};qs.prototype=Object.create(null);var Ns=/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu,Hs=/\\([\v\u0020-\u00ff])/gu,Ri=/^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u,St={type:"",parameters:new qs};Object.freeze(St.parameters);Object.freeze(St);function wi(s){if(typeof s!="string")throw new TypeError("argument header is required and must be a string");let e=s.indexOf(";"),t=e!==-1?s.slice(0,e).trim():s.trim();if(Ri.test(t)===!1)throw new TypeError("invalid media type");let r={type:t.toLowerCase(),parameters:new qs};if(e===-1)return r;let o,n,i;for(Ns.lastIndex=e;n=Ns.exec(s);){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),Hs.test(i)&&(i=i.replace(Hs,"$1"))),r.parameters[o]=i}if(e!==s.length)throw new TypeError("invalid parameter format");return r}function Ei(s){if(typeof s!="string")return St;let e=s.indexOf(";"),t=e!==-1?s.slice(0,e).trim():s.trim();if(Ri.test(t)===!1)return St;let r={type:t.toLowerCase(),parameters:new qs};if(e===-1)return r;let o,n,i;for(Ns.lastIndex=e;n=Ns.exec(s);){if(n.index!==e)return St;e+=n[0].length,o=n[1].toLowerCase(),i=n[2],i[0]==='"'&&(i=i.slice(1,i.length-1),Hs.test(i)&&(i=i.replace(Hs,"$1"))),r.parameters[o]=i}return e!==s.length?St:r}us.exports.default={parse:wi,safeParse:Ei};us.exports.parse=wi;us.exports.safeParse=Ei;us.exports.defaultContentType=St});var fl,Ci,io,vi,bl,yl,_l,Pi,Rl,wl,El,ki,Si,Tl,vl,Ai,Oi=P(()=>{fl=/^-?\d+$/,Ci=/^-?\d+n+$/,io=JSON.stringify,vi=JSON.parse,bl=/^-?\d+n$/,yl=/([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,_l=/([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,Pi=(s,e,t)=>"rawJSON"in JSON?io(s,(i,a)=>typeof a=="bigint"?JSON.rawJSON(a.toString()):typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t):s?io(s,(i,a)=>typeof a=="string"&&!!a.match(Ci)||typeof a=="bigint"?a.toString()+"n":typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t).replace(yl,"$1$2$3").replace(_l,"$1$2$3"):io(s,e,t),Rl=()=>JSON.parse("1",(s,e,t)=>!!t&&t.source==="1"),wl=(s,e,t,r)=>typeof e=="string"&&e.match(bl)?BigInt(e.slice(0,-1)):typeof e=="string"&&e.match(Ci)?e.slice(0,-1):typeof r!="function"?e:r(s,e,t),El=(s,e)=>JSON.parse(s,(t,r,o)=>{let n=typeof r=="number"&&(r>Number.MAX_SAFE_INTEGER||r<Number.MIN_SAFE_INTEGER),i=o&&fl.test(o.source);return n&&i?BigInt(o.source):typeof e!="function"?r:e(t,r,o)}),ki=Number.MAX_SAFE_INTEGER.toString(),Si=ki.length,Tl=/"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,vl=/^"-?\d+n+"$/,Ai=(s,e)=>{if(!s)return vi(s,e);if(Rl())return El(s,e);let t=s.replace(Tl,(r,o,n,i)=>{let a=r[0]==='"';if(a&&!!r.match(vl))return r.substring(0,r.length-1)+'n"';let u=n||i,l=o&&(o.length<Si||o.length===Si&&o<=ki);return a||u||l?r:'"'+r+'n"'});return vi(t,(r,o,n)=>wl(r,o,n,e))}});var Ct,Gi=P(()=>{Ct=class extends Error{name;status;request;response;constructor(e,t,r){super(e,{cause:r.cause}),this.name="HttpError",this.status=Number.parseInt(t),Number.isNaN(this.status)&&(this.status=0);"response"in r&&(this.response=r.response);let o=Object.assign({},r.request);r.request.headers.authorization&&(o.headers=Object.assign({},r.request.headers,{authorization:r.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 Pl(s){if(typeof s!="object"||s===null||Object.prototype.toString.call(s)!=="[object Object]")return!1;let e=Object.getPrototypeOf(s);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(s)}async function Di(s){let e=s.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=s.request?.log||console,r=s.request?.parseSuccessResponseBody!==!1,o=Pl(s.body)||Array.isArray(s.body)?Pi(s.body):s.body,n=Object.fromEntries(Object.entries(s.headers).map(([p,g])=>[p,String(g)])),i;try{i=await e(s.url,{method:s.method,body:o,redirect:s.request?.redirect,headers:n,signal:s.request?.signal,...s.body&&{duplex:"half"}})}catch(p){let g="Unknown Error";if(p instanceof Error){if(p.name==="AbortError")throw p.status=500,p;g=p.message,p.name==="TypeError"&&"cause"in p&&(p.cause instanceof Error?g=p.cause.message:typeof p.cause=="string"&&(g=p.cause))}let b=new Ct(g,500,{request:s});throw b.cause=p,b}let a=i.status,c=i.url,u={};for(let[p,g]of i.headers)u[p]=g;let l={url:c,status:a,headers:u,data:""};if("deprecation"in u){let p=u.link&&u.link.match(/<([^<>]+)>; rel="deprecation"/),g=p&&p.pop();t.warn(`[@octokit/request] "${s.method} ${s.url}" is deprecated. It is scheduled to be removed on ${u.sunset}${g?`. See ${g}`:""}`)}if(a===204||a===205)return l;if(s.method==="HEAD"){if(a<400)return l;throw new Ct(i.statusText,a,{response:l,request:s})}if(a===304)throw l.data=await ao(i),new Ct("Not modified",a,{response:l,request:s});if(a>=400)throw l.data=await ao(i),new Ct(Al(l.data),a,{response:l,request:s});return l.data=r?await ao(i):i.body,l}async function ao(s){let e=s.headers.get("content-type");if(!e)return s.text().catch($i);let t=(0,Ii.safeParse)(e);if(kl(t)){let r="";try{return r=await s.text(),Ai(r)}catch{return r}}else return t.type.startsWith("text/")||t.parameters.charset?.toLowerCase()==="utf-8"?s.text().catch($i):s.arrayBuffer().catch(()=>new ArrayBuffer(0))}function kl(s){return s.type==="application/json"||s.type==="application/scim+json"}function Al(s){if(typeof s=="string")return s;if(s instanceof ArrayBuffer)return"Unknown error";if("message"in s){let e="documentation_url"in s?` - ${s.documentation_url}`:"";return Array.isArray(s.errors)?`${s.message}: ${s.errors.map(t=>JSON.stringify(t)).join(", ")}${e}`:`${s.message}${e}`}return`Unknown error: ${JSON.stringify(s)}`}function co(s,e){let t=s.defaults(e);return Object.assign(function(o,n){let i=t.merge(o,n);if(!i.request||!i.request.hook)return Di(t.parse(i));let a=(c,u)=>Di(t.parse(t.merge(c,u)));return Object.assign(a,{endpoint:t,defaults:co.bind(null,t)}),i.request.hook(a,i)},{endpoint:t,defaults:co.bind(null,t)})}var Ii,Sl,Cl,$i,ls,uo=P(()=>{_i();as();Ii=V(Ti(),1);Oi();Gi();Sl="10.0.8",Cl={headers:{"user-agent":`octokit-request.js/${Sl} ${ht()}`}};$i=()=>"";ls=co(yi,Cl);});function Gl(s){return`Request failed due to following response errors:
33
+ The gh CLI is recommended - install from https://cli.github.com`);return s}function Bn(){De=null,os=!1}async function xs(){if(De)return De;if(os)return null;if(os=!0,process.env.GITHUB_TOKEN)return De=process.env.GITHUB_TOKEN,De;try{let s=await new Promise((e,t)=>{(0,ns.execFile)("gh",["auth","token"],{encoding:"utf-8",timeout:2e3},(r,o)=>{r?t(r):e(o.trim())})});if(s&&s.length>0)return De=s,R(Tt,"Using GitHub token from gh CLI (async)"),De}catch(s){R(Tt,"gh auth token failed (CLI unavailable or not authenticated)",s)}return null}function Us(){let s=nt.join(ro.homedir(),".oss-autopilot","state.json");return Ne.existsSync(s)}async function Ms(){try{let s=await new Promise((e,t)=>{(0,ns.execFile)("gh",["api","user","--jq",".login"],{encoding:"utf-8",timeout:5e3},(r,o)=>{r?t(r):e(o.trim())})});return s&&rl.test(s)?(R(Tt,`Detected GitHub username: ${s}`),s):(R(Tt,`gh api user returned invalid username: "${s}"`),null)}catch(s){return R(Tt,"detectGitHubUsername failed",s),null}}var Ne,nt,ro,ns,ht,Tt,De,os,tl,sl,rl,ve=P(()=>{"use strict";Ne=B(require("fs"),1),nt=B(require("path"),1),ro=B(require("os"),1),ns=require("child_process");te();se();ht=5,Tt="utils",De=null,os=!1;tl=/^[a-zA-Z0-9_-]+$/,sl=/^[a-zA-Z0-9_.-]+$/;rl=/^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$/});function il(s){try{let e=JSON.parse(x.readFileSync(s,"utf-8"));return Date.now()-e.timestamp>nl}catch(e){return R(j,"Lock file unreadable or invalid JSON, treating as stale",e),!0}}function zn(s){let e=JSON.stringify({pid:process.pid,timestamp:Date.now()});try{x.writeFileSync(s,e,{flag:"wx"});return}catch(t){R(j,"Lock file already exists, checking staleness",t)}if(!il(s))throw new Error("State file is locked by another process");try{x.unlinkSync(s)}catch(t){R(j,"Stale lock already removed by another process",t)}try{x.writeFileSync(s,e,{flag:"wx"})}catch(t){throw R(j,"Lock re-acquire failed (race condition)",t),new Error("State file is locked by another process",{cause:t})}}function Jn(s){try{JSON.parse(x.readFileSync(s,"utf-8")).pid===process.pid&&x.unlinkSync(s)}catch(e){R(j,"Lock file already removed or unreadable during release",e)}}function as(s,e,t){let r=s+".tmp";x.writeFileSync(r,e,{mode:t??384}),x.renameSync(r,s),t!==void 0&&x.chmodSync(s,t)}function Kn(s){R(j,"Migrating state from v1 to v2 (fresh GitHub fetching)...");let e=s.mergedPRs||[],t=s.closedPRs||[],r={...s.repoScores||{}};for(let n of[...e,...t])r[n.repo]||(r[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:s.activeIssues||[],repoScores:r,config:s.config,events:s.events||[],lastRunAt:new Date().toISOString()};return R(j,`Migration complete. Preserved ${Object.keys(r).length} repo scores.`),o}function Qn(s){if(!s||typeof s!="object")return!1;let e=s;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 js(){return{version:ol,activeIssues:[],repoScores:{},config:{...Ds.config,setupComplete:!1,languages:[...Ds.config.languages],labels:[...Ds.config.labels],excludeRepos:[],trustedProjects:[],shelvedPRUrls:[],dismissedIssues:{}},events:[],lastRunAt:new Date().toISOString()}}function al(){let s=ft();if(x.existsSync(s)||!x.existsSync(is))return!1;R(j,"Migrating state from ./data/ to ~/.oss-autopilot/...");try{if(He(),x.copyFileSync(is,s),R(j,`Migrated state file to ${s}`),x.existsSync(Ct)){let t=St(),r=x.readdirSync(Ct).filter(o=>o.startsWith("state-")&&o.endsWith(".json"));for(let o of r){let n=Be.join(Ct,o),i=Be.join(t,o);x.copyFileSync(n,i)}R(j,`Migrated ${r.length} backup files`)}if(x.unlinkSync(is),R(j,"Removed legacy state file"),x.existsSync(Ct)){let t=x.readdirSync(Ct);for(let r of t)x.unlinkSync(Be.join(Ct,r));x.rmdirSync(Ct)}let e=Be.dirname(is);return x.existsSync(e)&&x.readdirSync(e).length===0&&(x.rmdirSync(e),R(j,"Removed empty legacy data directory")),R(j,"Migration complete!"),!0}catch(e){if(m(j,`Failed to migrate state: ${S(e)}`),x.existsSync(s)&&x.existsSync(is))try{x.unlinkSync(s),R(j,"Cleaned up partial migration - removed incomplete new state file")}catch(t){m(j,"Could not clean up partial migration file"),R(j,"Partial migration cleanup failed",t)}return m(j,"To resolve this issue:"),m(j," 1. Ensure you have write permissions to ~/.oss-autopilot/"),m(j," 2. Check available disk space"),m(j," 3. Manually copy ./data/state.json to ~/.oss-autopilot/state.json"),m(j," 4. Or delete ./data/state.json to start fresh"),!1}}function Wn(){let s=St();if(!x.existsSync(s))return null;let e=x.readdirSync(s).filter(t=>t.startsWith("state-")&&t.endsWith(".json")).sort().reverse();for(let t of e){let r=Be.join(s,t);try{let o=x.readFileSync(r,"utf-8"),n=JSON.parse(o);if(Qn(n)){R(j,`Successfully restored state from backup: ${t}`),n.version===1&&(n=Kn(n));let i=Object.keys(n.repoScores).length;R(j,`Restored state v${n.version}: ${i} repo scores`);let a=ft();return as(a,JSON.stringify(n,null,2),384),R(j,"Restored backup written to main state file"),n}}catch(o){m(j,`Backup ${t} is corrupted, trying next...`),R(j,`Backup ${t} parse failed`,o)}}return null}function oo(){al();let s=ft();try{if(x.existsSync(s)){let e=x.readFileSync(s,"utf-8"),t=JSON.parse(e);if(!Qn(t)){m(j,"Invalid state file structure, attempting to restore from backup...");let n=Wn();if(n){let i=Ls(s);return{state:n,mtimeMs:i}}return m(j,"No valid backup found, starting fresh"),{state:js(),mtimeMs:0}}t.version===1&&(t=Kn(t),as(s,JSON.stringify(t,null,2),384),R(j,"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&&(as(s,JSON.stringify(t,null,2),384),m(j,"Cleaned up removed features (snoozedPRs, dismissed PR URLs) from persisted state"))}catch(n){m(j,`Failed to clean up removed features from state: ${S(n)}`)}let r=Ls(s),o=Object.keys(t.repoScores).length;return R(j,`Loaded state v${t.version}: ${o} repo scores tracked`),{state:t,mtimeMs:r}}}catch(e){m(j,"Error loading state:",e),m(j,"Attempting to restore from backup...");let t=Wn();if(t){let r=Ls(s);return{state:t,mtimeMs:r}}m(j,"No valid backup found, starting fresh")}return R(j,"No existing state found, initializing..."),{state:js(),mtimeMs:0}}function Ls(s){try{return x.statSync(s).mtimeMs}catch(e){return R(j,`Could not read state file mtime (reload detection will always trigger): ${S(e)}`),0}}function cl(){let s=St();try{let e=x.readdirSync(s).filter(t=>t.startsWith("state-")).sort().reverse();for(let t of e.slice(10))try{x.unlinkSync(Be.join(s,t))}catch(r){m(j,`Could not delete old backup ${t}:`,S(r))}}catch(e){m(j,"Could not clean up backups:",S(e))}}function Yn(s){let e=ft(),t=e+".lock",r=St();zn(t);try{try{if(x.existsSync(e)){let n=new Date().toISOString().replace(/[:.]/g,"-"),i=Math.random().toString(36).slice(2,8).padEnd(6,"0"),a=Be.join(r,`state-${n}-${i}.json`);x.copyFileSync(e,a),x.chmodSync(a,384),cl()}}catch(n){m(j,`Could not create backup before save: ${S(n)}`)}as(e,JSON.stringify(s,null,2),384);let o=Ls(e);return R(j,"State saved successfully"),o}finally{Jn(t)}}function Xn(s){try{let e=ft();if(x.statSync(e).mtimeMs===s)return null;let r=oo();try{r.mtimeMs=x.statSync(e).mtimeMs}catch(o){R(j,"Could not re-read mtime after reload (will retry next cycle)",o)}return r}catch(e){return m(j,`Failed to reload state from disk: ${S(e)}`),null}}var x,Be,j,ol,nl,is,Ct,no=P(()=>{"use strict";x=B(require("fs"),1),Be=B(require("path"),1);je();ve();te();se();j="state",ol=2,nl=3e4,is=Be.join(process.cwd(),"data","state.json"),Ct=Be.join(process.cwd(),"data","backups")});function ll(s){return{repo:s,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}}}function pl(s){let e=5;if(s.mergedPRCount>0){let r=Math.min(Math.round(Math.log2(s.mergedPRCount+1)*2),5);e+=r}let t=Math.min(s.closedWithoutMergeCount,3);if(e-=t,s.lastMergedAt){let r=new Date(s.lastMergedAt);isNaN(r.getTime())?m(io,`Invalid lastMergedAt date for ${s.repo}: "${s.lastMergedAt}". Skipping recency bonus.`):Math.floor((Date.now()-r.getTime())/864e5)<=90&&(e+=1)}return s.signals.isResponsive&&(e+=1),s.signals.hasHostileComments&&(e-=2),Math.max(1,Math.min(10,e))}function Zn(s,e){return s.repoScores[e]}function cs(s,e,t){s.repoScores[e]||(s.repoScores[e]=ll(e));let r=s.repoScores[e];t.mergedPRCount!==void 0&&(r.mergedPRCount=t.mergedPRCount),t.closedWithoutMergeCount!==void 0&&(r.closedWithoutMergeCount=t.closedWithoutMergeCount),t.avgResponseDays!==void 0&&(r.avgResponseDays=t.avgResponseDays),t.lastMergedAt!==void 0&&(r.lastMergedAt=t.lastMergedAt),t.stargazersCount!==void 0&&(r.stargazersCount=t.stargazersCount),t.language!==void 0&&(r.language=t.language),t.signals&&(r.signals={...r.signals,...t.signals}),r.score=pl(r),r.lastEvaluatedAt=new Date().toISOString(),R(io,`Updated repo score for ${e}: ${r.score}/10`)}function ei(s,e){let t=(s.repoScores[e]?.mergedPRCount??0)+1;cs(s,e,{mergedPRCount:t,lastMergedAt:new Date().toISOString()})}function ti(s,e){let t=(s.repoScores[e]?.closedWithoutMergeCount??0)+1;cs(s,e,{closedWithoutMergeCount:t})}function si(s,e){cs(s,e,{signals:{hasHostileComments:!0}})}function ri(s){return Object.values(s.repoScores).filter(e=>e.mergedPRCount>0).sort((e,t)=>t.mergedPRCount-e.mergedPRCount).map(e=>e.repo)}function oi(s){return Object.values(s.repoScores).filter(e=>e.mergedPRCount===0&&e.closedWithoutMergeCount===0).sort((e,t)=>t.score-e.score).map(e=>e.repo)}function ni(s,e){let t=e??s.config.minRepoScoreThreshold;return Object.values(s.repoScores).filter(r=>r.score>=t).sort((r,o)=>o.score-r.score).map(r=>r.repo)}function ii(s,e){let t=e??s.config.minRepoScoreThreshold,r=Date.now();return Object.values(s.repoScores).filter(o=>{if(o.score>t)return!1;let n=r-new Date(o.lastEvaluatedAt).getTime();return Number.isFinite(n)?n<=ul:(m(io,`Invalid lastEvaluatedAt for repo ${o.repo}: "${o.lastEvaluatedAt}", treating as stale`),!1)}).sort((o,n)=>o.score-n.score).map(o=>o.repo)}function ai(s){let e=0,t=0,r=0;for(let i of Object.values(s.repoScores))st(i.stargazersCount,s.config.minStars??50)||(r++,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:s.config.trustedProjects.length,mergeRate:n.toFixed(1)+"%",totalTracked:r,needsResponse:0}}var io,ul,ci=P(()=>{"use strict";je();se();io="scoring",ul=720*60*60*1e3});function U(){return ao||(ao=new Ns),ao}var at,ui,Ns,ao,qt=P(()=>{"use strict";no();ci();se();no();at="state",ui=1e3,Ns=class s{state;inMemoryOnly;lastLoadedMtimeMs=0;_batching=!1;_batchDirty=!1;constructor(e=!1){if(this.inMemoryOnly=e,e)this.state=js();else{let t=oo();this.state=t.state,this.lastLoadedMtimeMs=t.mtimeMs}}batch(e){if(this._batching){e();return}this._batching=!0,this._batchDirty=!1;try{e(),this._batchDirty&&this.save()}finally{this._batching=!1,this._batchDirty=!1}}autoSave(){if(this._batching){this._batchDirty=!0;return}this.save()}isSetupComplete(){return this.state.config.setupComplete===!0}markSetupComplete(){this.state.config.setupComplete=!0,this.state.config.setupCompletedAt=new Date().toISOString(),this.autoSave()}initializeWithDefaults(e){if(this.state.config.setupComplete){R(at,`Setup already complete, skipping initializeWithDefaults for "${e}"`);return}this.batch(()=>{this.updateConfig({githubUsername:e}),this.markSetupComplete(),R(at,`Initialized with defaults for user "${e}"`)})}save(){this.state.lastRunAt=new Date().toISOString(),!this.inMemoryOnly&&(this.lastLoadedMtimeMs=Yn(this.state))}getState(){return this.state}reloadIfChanged(){if(this.inMemoryOnly)return!1;let e=Xn(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,this.autoSave()}setMonthlyMergedCounts(e){this.state.monthlyMergedCounts=e,this.autoSave()}setMonthlyClosedCounts(e){this.state.monthlyClosedCounts=e,this.autoSave()}setMonthlyOpenedCounts(e){this.state.monthlyOpenedCounts=e,this.autoSave()}setDailyActivityCounts(e){this.state.dailyActivityCounts=e,this.autoSave()}setLocalRepoCache(e){this.state.localRepoCache=e,this.autoSave()}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)),r=e.filter(o=>!t.has(o.url));r.length!==0&&(this.state.mergedPRs.push(...r),this.state.mergedPRs.sort((o,n)=>n.mergedAt.localeCompare(o.mergedAt)),R(at,`Added ${r.length} merged PRs (total: ${this.state.mergedPRs.length})`),this.autoSave())}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)),r=e.filter(o=>!t.has(o.url));r.length!==0&&(this.state.closedPRs.push(...r),this.state.closedPRs.sort((o,n)=>n.closedAt.localeCompare(o.closedAt)),R(at,`Added ${r.length} closed PRs (total: ${this.state.closedPRs.length})`),this.autoSave())}getClosedPRWatermark(){return this.state.closedPRs?.[0]?.closedAt||void 0}updateConfig(e){this.state.config={...this.state.config,...e},this.autoSave()}appendEvent(e,t){let r={id:`evt_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,type:e,at:new Date().toISOString(),data:t};this.state.events.push(r),this.state.events.length>ui&&(this.state.events=this.state.events.slice(-ui)),this.autoSave()}getEventsByType(e){return this.state.events.filter(t=>t.type===e)}getEventsInRange(e,t=new Date){return this.state.events.filter(r=>{let o=new Date(r.at);return o>=e&&o<=t})}addIssue(e){if(this.state.activeIssues.find(r=>r.url===e.url)){R(at,`Issue ${e.url} already tracked`);return}this.state.activeIssues.push(e),R(at,`Added issue: ${e.repo}#${e.number}`),this.autoSave()}addTrustedProject(e){this.state.config.trustedProjects.includes(e)||(this.state.config.trustedProjects.push(e),R(at,`Added trusted project: ${e}`),this.autoSave())}static matchesExclusion(e,t,r){let o=e.toLowerCase();return!!(t.some(n=>n.toLowerCase()===o)||r?.some(n=>n.toLowerCase()===o.split("/")[0]))}cleanupExcludedData(e,t){let r=i=>s.matchesExclusion(i,e,t),o=this.state.config.trustedProjects.length;this.state.config.trustedProjects=this.state.config.trustedProjects.filter(i=>!r(i));let n=o-this.state.config.trustedProjects.length;n>0&&(R(at,`Removed ${n} trusted project(s) for excluded repos/orgs`),this.autoSave())}getStarredRepos(){return this.state.config.starredRepos||[]}setStarredRepos(e){this.state.config.starredRepos=e,this.state.config.starredReposLastFetched=new Date().toISOString(),R(at,`Updated starred repos: ${e.length} repositories`),this.autoSave()}isStarredReposStale(){let e=this.state.config.starredReposLastFetched;if(!e)return!0;let t=1440*60*1e3,r=new Date(e);return new Date().getTime()-r.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),this.autoSave(),!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),this.autoSave(),!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,this.autoSave(),!0)}undismissIssue(e){return!this.state.config.dismissedIssues||!(e in this.state.config.dismissedIssues)?!1:(delete this.state.config.dismissedIssues[e],this.autoSave(),!0)}getIssueDismissedAt(e){return this.state.config.dismissedIssues?.[e]}setStatusOverride(e,t,r){this.state.config.statusOverrides||(this.state.config.statusOverrides={}),this.state.config.statusOverrides[e]={status:t,setAt:new Date().toISOString(),lastActivityAt:r},this.autoSave()}clearStatusOverride(e){return!this.state.config.statusOverrides||!(e in this.state.config.statusOverrides)?!1:(delete this.state.config.statusOverrides[e],this.autoSave(),!0)}getStatusOverride(e,t){let r=this.state.config.statusOverrides?.[e];if(r){if(t&&t>r.lastActivityAt){this.clearStatusOverride(e);return}return r}}getRepoScore(e){return Zn(this.state,e)}updateRepoScore(e,t){cs(this.state,e,t),this.autoSave()}incrementMergedCount(e){ei(this.state,e),this.autoSave()}incrementClosedCount(e){ti(this.state,e),this.autoSave()}markRepoHostile(e){si(this.state,e),this.autoSave()}getReposWithMergedPRs(){return ri(this.state)}getReposWithOpenPRs(){return oi(this.state)}getHighScoringRepos(e){return ni(this.state,e)}getLowScoringRepos(e){return ii(this.state,e)}getStats(){return ai(this.state)}},ao=null});function bt(){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 us=P(()=>{});function Hs(s,e,t,r){if(typeof t!="function")throw new Error("method for before hook must be a function");return r||(r={}),Array.isArray(e)?e.reverse().reduce((o,n)=>Hs.bind(null,s,n,o,r),t)():Promise.resolve().then(()=>s.registry[e]?s.registry[e].reduce((o,n)=>n.hook.bind(null,o,r),t)():t(r))}var li=P(()=>{});function pi(s,e,t,r){let o=r;s.registry[t]||(s.registry[t]=[]),e==="before"&&(r=(n,i)=>Promise.resolve().then(o.bind(null,i)).then(n.bind(null,i))),e==="after"&&(r=(n,i)=>{let a;return Promise.resolve().then(n.bind(null,i)).then(c=>(a=c,o(a,i))).then(()=>a)}),e==="error"&&(r=(n,i)=>Promise.resolve().then(n.bind(null,i)).catch(a=>o(a,i))),s.registry[t].push({hook:r,orig:o})}var di=P(()=>{});function gi(s,e,t){if(!s.registry[e])return;let r=s.registry[e].map(o=>o.orig).indexOf(t);r!==-1&&s.registry[e].splice(r,1)}var mi=P(()=>{});function bi(s,e,t){let r=fi(gi,null).apply(null,t?[e,t]:[e]);s.api={remove:r},s.remove=r,["before","error","after","wrap"].forEach(o=>{let n=t?[e,o,t]:[e,o];s[o]=s.api[o]=fi(pi,null).apply(null,n)})}function gl(){let s=Symbol("Singular"),e={registry:{}},t=Hs.bind(null,e,s);return bi(t,e,s),t}function ml(){let s={registry:{}},e=Hs.bind(null,s);return bi(e,s),e}var hi,fi,yi,_i=P(()=>{li();di();mi();hi=Function.bind,fi=hi.bind(hi);yi={Singular:gl,Collection:ml}});function yl(s){return s?Object.keys(s).reduce((e,t)=>(e[t.toLowerCase()]=s[t],e),{}):{}}function _l(s){if(typeof s!="object"||s===null||Object.prototype.toString.call(s)!=="[object Object]")return!1;let e=Object.getPrototypeOf(s);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(s)}function Ei(s,e){let t=Object.assign({},s);return Object.keys(e).forEach(r=>{_l(e[r])?r in s?t[r]=Ei(s[r],e[r]):Object.assign(t,{[r]:e[r]}):Object.assign(t,{[r]:e[r]})}),t}function Ri(s){for(let e in s)s[e]===void 0&&delete s[e];return s}function uo(s,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=yl(t.headers),Ri(t),Ri(t.headers);let r=Ei(s||{},t);return t.url==="/graphql"&&(s&&s.mediaType.previews?.length&&(r.mediaType.previews=s.mediaType.previews.filter(o=>!r.mediaType.previews.includes(o)).concat(r.mediaType.previews)),r.mediaType.previews=(r.mediaType.previews||[]).map(o=>o.replace(/-preview/,""))),r}function Rl(s,e){let t=/\?/.test(s)?"&":"?",r=Object.keys(e);return r.length===0?s:s+t+r.map(o=>o==="q"?"q="+e.q.split("+").map(encodeURIComponent).join("+"):`${o}=${encodeURIComponent(e[o])}`).join("&")}function El(s){return s.replace(/(?:^\W+)|(?:(?<!\W)\W+$)/g,"").split(/,/)}function Tl(s){let e=s.match(wl);return e?e.map(El).reduce((t,r)=>t.concat(r),[]):[]}function wi(s,e){let t={__proto__:null};for(let r of Object.keys(s))e.indexOf(r)===-1&&(t[r]=s[r]);return t}function Ti(s){return s.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 Vt(s){return encodeURIComponent(s).replace(/[!'()*]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function ls(s,e,t){return e=s==="+"||s==="#"?Ti(e):Vt(e),t?Vt(t)+"="+e:e}function Bt(s){return s!=null}function co(s){return s===";"||s==="&"||s==="?"}function Sl(s,e,t,r){var o=s[t],n=[];if(Bt(o)&&o!=="")if(typeof o=="string"||typeof o=="number"||typeof o=="bigint"||typeof o=="boolean")o=o.toString(),r&&r!=="*"&&(o=o.substring(0,parseInt(r,10))),n.push(ls(e,o,co(e)?t:""));else if(r==="*")Array.isArray(o)?o.filter(Bt).forEach(function(i){n.push(ls(e,i,co(e)?t:""))}):Object.keys(o).forEach(function(i){Bt(o[i])&&n.push(ls(e,o[i],i))});else{let i=[];Array.isArray(o)?o.filter(Bt).forEach(function(a){i.push(ls(e,a))}):Object.keys(o).forEach(function(a){Bt(o[a])&&(i.push(Vt(a)),i.push(ls(e,o[a].toString())))}),co(e)?n.push(Vt(t)+"="+i.join(",")):i.length!==0&&n.push(i.join(","))}else e===";"?Bt(o)&&n.push(Vt(t)):o===""&&(e==="&"||e==="?")?n.push(Vt(t)+"="):o===""&&n.push("");return n}function vl(s){return{expand:Cl.bind(null,s)}}function Cl(s,e){var t=["+","#",".","/",";","?","&"];return s=s.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(r,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(Sl(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 Ti(n)}),s==="/"?s:s.replace(/\/$/,"")}function Si(s){let e=s.method.toUpperCase(),t=(s.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),r=Object.assign({},s.headers),o,n=wi(s,["method","baseUrl","url","headers","request","mediaType"]),i=Tl(t);t=vl(t).expand(n),/^http/.test(t)||(t=s.baseUrl+t);let a=Object.keys(s).filter(l=>i.includes(l)).concat("baseUrl"),c=wi(n,a);if(!/application\/octet-stream/i.test(r.accept)&&(s.mediaType.format&&(r.accept=r.accept.split(/,/).map(l=>l.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${s.mediaType.format}`)).join(",")),t.endsWith("/graphql")&&s.mediaType.previews?.length)){let l=r.accept.match(/(?<![\w-])[\w-]+(?=-preview)/g)||[];r.accept=l.concat(s.mediaType.previews).map(p=>{let g=s.mediaType.format?`.${s.mediaType.format}`:"+json";return`application/vnd.github.${p}-preview${g}`}).join(",")}return["GET","HEAD"].includes(e)?t=Rl(t,c):"data"in c?o=c.data:Object.keys(c).length&&(o=c),!r["content-type"]&&typeof o<"u"&&(r["content-type"]="application/json; charset=utf-8"),["PATCH","PUT"].includes(e)&&typeof o>"u"&&(o=""),Object.assign({method:e,url:t,headers:r},typeof o<"u"?{body:o}:null,s.request?{request:s.request}:null)}function Pl(s,e,t){return Si(uo(s,e,t))}function vi(s,e){let t=uo(s,e),r=Pl.bind(null,t);return Object.assign(r,{DEFAULTS:t,defaults:vi.bind(null,t),merge:uo.bind(null,t),parse:Si})}var hl,fl,bl,wl,Ci,Pi=P(()=>{us();hl="0.0.0-development",fl=`octokit-endpoint.js/${hl} ${bt()}`,bl={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":fl},mediaType:{format:""}};wl=/\{[^{}}]+\}/g;Ci=vi(null,bl)});var Gi=et((um,ps)=>{"use strict";var Vs=function(){};Vs.prototype=Object.create(null);var qs=/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu,Bs=/\\([\v\u0020-\u00ff])/gu,ki=/^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u,Pt={type:"",parameters:new Vs};Object.freeze(Pt.parameters);Object.freeze(Pt);function Ai(s){if(typeof s!="string")throw new TypeError("argument header is required and must be a string");let e=s.indexOf(";"),t=e!==-1?s.slice(0,e).trim():s.trim();if(ki.test(t)===!1)throw new TypeError("invalid media type");let r={type:t.toLowerCase(),parameters:new Vs};if(e===-1)return r;let o,n,i;for(qs.lastIndex=e;n=qs.exec(s);){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),Bs.test(i)&&(i=i.replace(Bs,"$1"))),r.parameters[o]=i}if(e!==s.length)throw new TypeError("invalid parameter format");return r}function Oi(s){if(typeof s!="string")return Pt;let e=s.indexOf(";"),t=e!==-1?s.slice(0,e).trim():s.trim();if(ki.test(t)===!1)return Pt;let r={type:t.toLowerCase(),parameters:new Vs};if(e===-1)return r;let o,n,i;for(qs.lastIndex=e;n=qs.exec(s);){if(n.index!==e)return Pt;e+=n[0].length,o=n[1].toLowerCase(),i=n[2],i[0]==='"'&&(i=i.slice(1,i.length-1),Bs.test(i)&&(i=i.replace(Bs,"$1"))),r.parameters[o]=i}return e!==s.length?Pt:r}ps.exports.default={parse:Ai,safeParse:Oi};ps.exports.parse=Ai;ps.exports.safeParse=Oi;ps.exports.defaultContentType=Pt});var kl,Fi,lo,$i,Al,Ol,Gl,Ii,$l,Dl,Fl,xi,Di,Il,xl,Ui,Mi=P(()=>{kl=/^-?\d+$/,Fi=/^-?\d+n+$/,lo=JSON.stringify,$i=JSON.parse,Al=/^-?\d+n$/,Ol=/([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,Gl=/([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,Ii=(s,e,t)=>"rawJSON"in JSON?lo(s,(i,a)=>typeof a=="bigint"?JSON.rawJSON(a.toString()):typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t):s?lo(s,(i,a)=>typeof a=="string"&&!!a.match(Fi)||typeof a=="bigint"?a.toString()+"n":typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t).replace(Ol,"$1$2$3").replace(Gl,"$1$2$3"):lo(s,e,t),$l=()=>JSON.parse("1",(s,e,t)=>!!t&&t.source==="1"),Dl=(s,e,t,r)=>typeof e=="string"&&e.match(Al)?BigInt(e.slice(0,-1)):typeof e=="string"&&e.match(Fi)?e.slice(0,-1):typeof r!="function"?e:r(s,e,t),Fl=(s,e)=>JSON.parse(s,(t,r,o)=>{let n=typeof r=="number"&&(r>Number.MAX_SAFE_INTEGER||r<Number.MIN_SAFE_INTEGER),i=o&&kl.test(o.source);return n&&i?BigInt(o.source):typeof e!="function"?r:e(t,r,o)}),xi=Number.MAX_SAFE_INTEGER.toString(),Di=xi.length,Il=/"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,xl=/^"-?\d+n+"$/,Ui=(s,e)=>{if(!s)return $i(s,e);if($l())return Fl(s,e);let t=s.replace(Il,(r,o,n,i)=>{let a=r[0]==='"';if(a&&!!r.match(xl))return r.substring(0,r.length-1)+'n"';let u=n||i,l=o&&(o.length<Di||o.length===Di&&o<=xi);return a||u||l?r:'"'+r+'n"'});return $i(t,(r,o,n)=>Dl(r,o,n,e))}});var kt,Li=P(()=>{kt=class extends Error{name;status;request;response;constructor(e,t,r){super(e,{cause:r.cause}),this.name="HttpError",this.status=Number.parseInt(t),Number.isNaN(this.status)&&(this.status=0);"response"in r&&(this.response=r.response);let o=Object.assign({},r.request);r.request.headers.authorization&&(o.headers=Object.assign({},r.request.headers,{authorization:r.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(s){if(typeof s!="object"||s===null||Object.prototype.toString.call(s)!=="[object Object]")return!1;let e=Object.getPrototypeOf(s);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(s)}async function Ni(s){let e=s.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=s.request?.log||console,r=s.request?.parseSuccessResponseBody!==!1,o=Ll(s.body)||Array.isArray(s.body)?Ii(s.body):s.body,n=Object.fromEntries(Object.entries(s.headers).map(([p,g])=>[p,String(g)])),i;try{i=await e(s.url,{method:s.method,body:o,redirect:s.request?.redirect,headers:n,signal:s.request?.signal,...s.body&&{duplex:"half"}})}catch(p){let g="Unknown Error";if(p instanceof Error){if(p.name==="AbortError")throw p.status=500,p;g=p.message,p.name==="TypeError"&&"cause"in p&&(p.cause instanceof Error?g=p.cause.message:typeof p.cause=="string"&&(g=p.cause))}let b=new kt(g,500,{request:s});throw b.cause=p,b}let a=i.status,c=i.url,u={};for(let[p,g]of i.headers)u[p]=g;let l={url:c,status:a,headers:u,data:""};if("deprecation"in u){let p=u.link&&u.link.match(/<([^<>]+)>; rel="deprecation"/),g=p&&p.pop();t.warn(`[@octokit/request] "${s.method} ${s.url}" is deprecated. It is scheduled to be removed on ${u.sunset}${g?`. See ${g}`:""}`)}if(a===204||a===205)return l;if(s.method==="HEAD"){if(a<400)return l;throw new kt(i.statusText,a,{response:l,request:s})}if(a===304)throw l.data=await po(i),new kt("Not modified",a,{response:l,request:s});if(a>=400)throw l.data=await po(i),new kt(Nl(l.data),a,{response:l,request:s});return l.data=r?await po(i):i.body,l}async function po(s){let e=s.headers.get("content-type");if(!e)return s.text().catch(ji);let t=(0,Hi.safeParse)(e);if(jl(t)){let r="";try{return r=await s.text(),Ui(r)}catch{return r}}else return t.type.startsWith("text/")||t.parameters.charset?.toLowerCase()==="utf-8"?s.text().catch(ji):s.arrayBuffer().catch(()=>new ArrayBuffer(0))}function jl(s){return s.type==="application/json"||s.type==="application/scim+json"}function Nl(s){if(typeof s=="string")return s;if(s instanceof ArrayBuffer)return"Unknown error";if("message"in s){let e="documentation_url"in s?` - ${s.documentation_url}`:"";return Array.isArray(s.errors)?`${s.message}: ${s.errors.map(t=>JSON.stringify(t)).join(", ")}${e}`:`${s.message}${e}`}return`Unknown error: ${JSON.stringify(s)}`}function go(s,e){let t=s.defaults(e);return Object.assign(function(o,n){let i=t.merge(o,n);if(!i.request||!i.request.hook)return Ni(t.parse(i));let a=(c,u)=>Ni(t.parse(t.merge(c,u)));return Object.assign(a,{endpoint:t,defaults:go.bind(null,t)}),i.request.hook(a,i)},{endpoint:t,defaults:go.bind(null,t)})}var Hi,Ul,Ml,ji,ds,mo=P(()=>{Pi();us();Hi=B(Gi(),1);Mi();Li();Ul="10.0.8",Ml={headers:{"user-agent":`octokit-request.js/${Ul} ${bt()}`}};ji=()=>"";ds=go(Ci,Ml);});function ql(s){return`Request failed due to following response errors:
34
34
  `+s.errors.map(e=>` - ${e.message}`).join(`
35
- `)}function Fl(s,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(Il.includes(i))return Promise.reject(new Error(`[@octokit/graphql] "${i}" cannot be used as variable name`))}let r=typeof e=="string"?Object.assign({query:e},t):e,o=Object.keys(r).reduce((i,a)=>Dl.includes(a)?(i[a]=r[a],i):(i.variables||(i.variables={}),i.variables[a]=r[a],i),{}),n=r.baseUrl||s.endpoint.DEFAULTS.baseUrl;return Fi.test(n)&&(o.url=n.replace(Fi,"/api/graphql")),s(o).then(i=>{if(i.data.errors){let a={};for(let c of Object.keys(i.headers))a[c]=i.headers[c];throw new $l(o,a,i.data)}return i.data.data})}function lo(s,e){let t=s.defaults(e);return Object.assign((o,n)=>Fl(t,o,n),{defaults:lo.bind(null,t),endpoint:t.endpoint})}function xi(s){return lo(s,{method:"POST",url:"/graphql"})}var Ol,$l,Dl,Il,Fi,Yg,Ui=P(()=>{uo();as();Ol="0.0.0-development";$l=class extends Error{constructor(s,e,t){super(Gl(t)),this.request=s,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"],Il=["query","method","url"],Fi=/\/api\/v3\/?$/;Yg=lo(ls,{headers:{"user-agent":`octokit-graphql.js/${Ol} ${ht()}`},method:"POST",url:"/graphql"})});async function Ul(s){let e=xl(s),t=s.startsWith("v1.")||s.startsWith("ghs_"),r=s.startsWith("ghu_");return{type:"token",token:s,tokenType:e?"app":t?"installation":r?"user-to-server":"oauth"}}function Ml(s){return s.split(/\./).length===3?`bearer ${s}`:`token ${s}`}async function Ll(s,e,t,r){let o=e.endpoint.merge(t,r);return o.headers.authorization=Ml(s),e(o)}var po,Mi,Li,xl,ji,Ni=P(()=>{po="(?:[a-zA-Z0-9_-]+)",Mi="\\.",Li=new RegExp(`^${po}${Mi}${po}${Mi}${po}$`),xl=Li.test.bind(Li);ji=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(Ul.bind(null,e),{hook:Ll.bind(null,e)})}});var go,Hi=P(()=>{go="7.0.6"});function Hl(s={}){return typeof s.debug!="function"&&(s.debug=qi),typeof s.info!="function"&&(s.info=qi),typeof s.warn!="function"&&(s.warn=jl),typeof s.error!="function"&&(s.error=Nl),s}var qi,jl,Nl,Bi,Bs,Vi=P(()=>{as();pi();uo();Ui();Ni();Hi();qi=()=>{},jl=console.warn.bind(console),Nl=console.error.bind(console);Bi=`octokit-core.js/${go} ${ht()}`,Bs=class{static VERSION=go;static defaults(e){return class extends this{constructor(...r){let o=r[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 li.Collection,r={baseUrl:ls.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},e.request,{hook:t.bind(null,"request")}),mediaType:{previews:[],format:""}};if(r.headers["user-agent"]=e.userAgent?`${e.userAgent} ${Bi}`:Bi,e.baseUrl&&(r.baseUrl=e.baseUrl),e.previews&&(r.mediaType.previews=e.previews),e.timeZone&&(r.headers["time-zone"]=e.timeZone),this.request=ls.defaults(r),this.graphql=xi(this.request).defaults(r),this.log=Hl(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=ji(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 Wi,zi=P(()=>{Wi="6.0.0"});function mo(s){s.hook.wrap("request",(e,t)=>{s.log.debug("request",t);let r=Date.now(),o=s.request.endpoint.parse(t),n=o.url.replace(t.baseUrl,"");return e(t).then(i=>{let a=i.headers["x-github-request-id"];return s.log.info(`${o.method} ${n} - ${i.status} with id ${a} in ${Date.now()-r}ms`),i}).catch(i=>{let a=i.response?.headers["x-github-request-id"]||"UNKNOWN";throw s.log.error(`${o.method} ${n} - ${i.status} with id ${a} in ${Date.now()-r}ms`),i})})}var Ji=P(()=>{zi();mo.VERSION=Wi});function Bl(s){if(!s.data)return{...s,data:[]};if(!(("total_count"in s.data||"total_commits"in s.data)&&!("url"in s.data)))return s;let t=s.data.incomplete_results,r=s.data.repository_selection,o=s.data.total_count,n=s.data.total_commits;delete s.data.incomplete_results,delete s.data.repository_selection,delete s.data.total_count,delete s.data.total_commits;let i=Object.keys(s.data)[0],a=s.data[i];return s.data=a,typeof t<"u"&&(s.data.incomplete_results=t),typeof r<"u"&&(s.data.repository_selection=r),s.data.total_count=o,s.data.total_commits=n,s}function ho(s,e,t){let r=typeof e=="function"?e.endpoint(t):s.request.endpoint(e,t),o=typeof e=="function"?e:s.request,n=r.method,i=r.headers,a=r.url;return{[Symbol.asyncIterator]:()=>({async next(){if(!a)return{done:!0};try{let c=await o({method:n,url:a,headers:i}),u=Bl(c);if(a=((u.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!a&&"total_commits"in u.data){let l=new URL(u.url),p=l.searchParams,g=parseInt(p.get("page")||"1",10),b=parseInt(p.get("per_page")||"250",10);g*b<u.data.total_commits&&(p.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 Ki(s,e,t,r){return typeof t=="function"&&(r=t,t=void 0),Qi(s,[],ho(s,e,t)[Symbol.asyncIterator](),r)}function Qi(s,e,t,r){return t.next().then(o=>{if(o.done)return e;let n=!1;function i(){n=!0}return e=e.concat(r?r(o.value,i):o.value.data),n?e:Qi(s,e,t,r)})}function fo(s){return{paginate:Object.assign(Ki.bind(null,s),{iterator:ho.bind(null,s)})}}var ql,mm,Yi=P(()=>{ql="0.0.0-development";mm=Object.assign(Ki,{iterator:ho});fo.VERSION=ql});var bo,Xi=P(()=>{bo="17.0.0"});var Vl,Zi,ea=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"]}},Zi=Vl});function yo(s){let e={};for(let t of Pt.keys())e[t]=new Proxy({octokit:s,scope:t,cache:{}},Wl);return e}function zl(s,e,t,r,o){let n=s.request.defaults(r);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;s.log.warn(`octokit.${e}.${t}() has been renamed to octokit.${u}.${l}()`)}if(o.deprecated&&s.log.warn(o.deprecated),o.renamedParameters){let u=n.endpoint.merge(...a);for(let[l,p]of Object.entries(o.renamedParameters))l in u&&(s.log.warn(`"${l}" parameter is deprecated for "octokit.${e}.${t}()". Use "${p}" instead`),p in u||(u[p]=u[l]),delete u[l]);return n(u)}return n(...a)}return Object.assign(i,n)}var Pt,Wl,ta=P(()=>{ea();Pt=new Map;for(let[s,e]of Object.entries(Zi))for(let[t,r]of Object.entries(e)){let[o,n,i]=r,[a,c]=o.split(/ /),u=Object.assign({method:a,url:c},n);Pt.has(s)||Pt.set(s,new Map),Pt.get(s).set(t,{scope:s,methodName:t,endpointDefaults:u,decorations:i})}Wl={has({scope:s},e){return Pt.get(s).has(e)},getOwnPropertyDescriptor(s,e){return{value:this.get(s,e),configurable:!0,writable:!0,enumerable:!0}},defineProperty(s,e,t){return Object.defineProperty(s.cache,e,t),!0},deleteProperty(s,e){return delete s.cache[e],!0},ownKeys({scope:s}){return[...Pt.get(s).keys()]},set(s,e,t){return s.cache[e]=t},get({octokit:s,scope:e,cache:t},r){if(t[r])return t[r];let o=Pt.get(e).get(r);if(!o)return;let{endpointDefaults:n,decorations:i}=o;return i?t[r]=zl(s,e,r,n,i):t[r]=s.request.defaults(n),t[r]}}});function Jl(s){return{rest:yo(s)}}function _o(s){let e=yo(s);return{...e,rest:e}}var sa=P(()=>{Xi();ta();Jl.VERSION=bo;_o.VERSION=bo});var ra,oa=P(()=>{ra="22.0.1"});var na,ia=P(()=>{Vi();Ji();Yi();sa();oa();na=Bs.plugin(mo,_o,fo).defaults({userAgent:`octokit-rest.js/${ra}`})});var aa=Xe((Ro,wo)=>{(function(s,e){typeof Ro=="object"&&typeof wo<"u"?wo.exports=e():typeof define=="function"&&define.amd?define(e):s.Bottleneck=e()})(Ro,(function(){"use strict";var s=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function e(D){return D&&D.default||D}var t=function(D,h,d={}){var f,_,R;for(f in h)R=h[f],d[f]=(_=D[f])!=null?_:R;return d},r=function(D,h,d={}){var f,_;for(f in D)_=D[f],h[f]!==void 0&&(d[f]=_);return d},o={load:t,overwrite:r},n;n=class{constructor(h,d){this.incr=h,this.decr=d,this._first=null,this._last=null,this.length=0}push(h){var d;this.length++,typeof this.incr=="function"&&this.incr(),d={value:h,prev:this._last,next:null},this._last!=null?(this._last.next=d,this._last=d):this._first=this._last=d}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,d,f;for(h=this._first,f=[];h!=null;)f.push((d=h,h=h.next,d.value));return f}forEachShift(h){var d;for(d=this.shift();d!=null;)h(d),d=this.shift()}debug(){var h,d,f,_,R;for(h=this._first,R=[];h!=null;)R.push((d=h,h=h.next,{value:d.value,prev:(f=d.prev)!=null?f.value:void 0,next:(_=d.next)!=null?_.value:void 0}));return R}};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=(d,f)=>this._addListener(d,"many",f),this.instance.once=(d,f)=>this._addListener(d,"once",f),this.instance.removeAllListeners=(d=null)=>d!=null?delete this._events[d]:this._events={}}_addListener(h,d,f){var _;return(_=this._events)[h]==null&&(_[h]=[]),this._events[h].push({cb:f,status:d}),this.instance}listenerCount(h){return this._events[h]!=null?this._events[h].length:0}async trigger(h,...d){var f,_;try{return h!=="debug"&&this.trigger("debug",`Event triggered: ${h}`,d),this._events[h]==null?void 0:(this._events[h]=this._events[h].filter(function(R){return R.status!=="none"}),_=this._events[h].map(async R=>{var C,G;if(R.status!=="none"){R.status==="once"&&(R.status="none");try{return G=typeof R.cb=="function"?R.cb(...d):void 0,typeof G?.then=="function"?await G:G}catch(z){return C=z,this.trigger("error",C),null}}}),(await Promise.all(_)).find(function(R){return R!=null}))}catch(R){return f=R,this.trigger("error",f),null}}};var c=a,u,l,p;u=i,l=c,p=class{constructor(h){var d;this.Events=new l(this),this._length=0,this._lists=(function(){var f,_,R;for(R=[],d=f=1,_=h;1<=_?f<=_:f>=_;d=1<=_?++f:--f)R.push(new u((()=>this.incr()),(()=>this.decr())));return R}).call(this)}incr(){if(this._length++===0)return this.Events.trigger("leftzero")}decr(){if(--this._length===0)return this.Events.trigger("zero")}push(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(d){return d.forEachShift(h)})}getFirst(h=this._lists){var d,f,_;for(d=0,f=h.length;d<f;d++)if(_=h[d],_.length>0)return _;return[]}shiftLastFrom(h){return this.getFirst(this._lists.slice(h).reverse()).shift()}};var g=p,b;b=class extends Error{};var E=b,v,A,y,$,F;$=10,A=5,F=o,v=E,y=class{constructor(h,d,f,_,R,C,G,z){this.task=h,this.args=d,this.rejectOnDrop=R,this.Events=C,this._states=G,this.Promise=z,this.options=F.load(f,_),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===_.id&&(this.options.id=`${this.options.id}-${this._randomIndex()}`),this.promise=new this.Promise((we,Te)=>{this._resolve=we,this._reject=Te}),this.retryCount=0}_sanitizePriority(h){var d;return d=~~h!==h?A:h,d<0?0:d>$-1?$-1:d}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:h,message:d="This job has been dropped by Bottleneck"}={}){return this._states.remove(this.options.id)?(this.rejectOnDrop&&this._reject(h??new v(d)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0):!1}_assertStatus(h){var d;if(d=this._states.jobStatus(this.options.id),!(d===h||h==="DONE"&&d===null))throw new v(`Invalid job status ${d}, 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,d){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:h,blocked:d})}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,d,f,_){var R,C,G;this.retryCount===0?(this._assertStatus("RUNNING"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),C={args:this.args,options:this.options,retryCount:this.retryCount},this.Events.trigger("executing",C);try{if(G=await(h!=null?h.schedule(this.options,this.task,...this.args):this.task(...this.args)),d())return this.doDone(C),await _(this.options,C),this._assertStatus("DONE"),this._resolve(G)}catch(z){return R=z,this._onFailure(R,C,d,f,_)}}doExpire(h,d,f){var _,R;return this._states.jobStatus(this.options.id==="RUNNING")&&this._states.next(this.options.id),this._assertStatus("EXECUTING"),R={args:this.args,options:this.options,retryCount:this.retryCount},_=new v(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(_,R,h,d,f)}async _onFailure(h,d,f,_,R){var C,G;if(f())return C=await this.Events.trigger("failed",h,d),C!=null?(G=~~C,this.Events.trigger("retry",`Retrying ${this.options.id} after ${G} ms`,d),this.retryCount++,_(G)):(this.doDone(d),await R(this.options,d),this._assertStatus("DONE"),this._reject(h))}doDone(h){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",h)}};var q=y,O,w,k;k=o,O=E,w=class{constructor(h,d,f){this.instance=h,this.storeOptions=d,this.clientId=this.instance._randomIndex(),k.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 d,f,_,R,C;if(R=Date.now(),this.storeOptions.reservoirRefreshInterval!=null&&R>=this._lastReservoirRefresh+this.storeOptions.reservoirRefreshInterval&&(this._lastReservoirRefresh=R,this.storeOptions.reservoir=this.storeOptions.reservoirRefreshAmount,this.instance._drainAll(this.computeCapacity())),this.storeOptions.reservoirIncreaseInterval!=null&&R>=this._lastReservoirIncrease+this.storeOptions.reservoirIncreaseInterval&&({reservoirIncreaseAmount:d,reservoirIncreaseMaximum:_,reservoir:C}=this.storeOptions,this._lastReservoirIncrease=R,f=_!=null?Math.min(d,_-C):d,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(d,f){return setTimeout(d,h)})}computePenalty(){var h;return(h=this.storeOptions.penalty)!=null?h:15*this.storeOptions.minTime||5e3}async __updateSettings__(h){return await this.yieldLoop(),k.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,d;return{maxConcurrent:h,reservoir:d}=this.storeOptions,h!=null&&d!=null?Math.min(h-this._running,d):h!=null?h-this._running:d??null}conditionsCheck(h){var d;return d=this.computeCapacity(),d==null||h<=d}async __incrementReservoir__(h){var d;return await this.yieldLoop(),d=this.storeOptions.reservoir+=h,this.instance._drainAll(this.computeCapacity()),d}async __currentReservoir__(){return await this.yieldLoop(),this.storeOptions.reservoir}isBlocked(h){return this._unblockTime>=h}check(h,d){return this.conditionsCheck(h)&&this._nextRequest-d<=0}async __check__(h){var d;return await this.yieldLoop(),d=Date.now(),this.check(h,d)}async __register__(h,d,f){var _,R;return await this.yieldLoop(),_=Date.now(),this.conditionsCheck(d)?(this._running+=d,this.storeOptions.reservoir!=null&&(this.storeOptions.reservoir-=d),R=Math.max(this._nextRequest-_,0),this._nextRequest=_+R+this.storeOptions.minTime,{success:!0,wait:R,reservoir:this.storeOptions.reservoir}):{success:!1}}strategyIsBlock(){return this.storeOptions.strategy===3}async __submit__(h,d){var f,_,R;if(await this.yieldLoop(),this.storeOptions.maxConcurrent!=null&&d>this.storeOptions.maxConcurrent)throw new O(`Impossible to add a job having a weight of ${d} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);return _=Date.now(),R=this.storeOptions.highWater!=null&&h===this.storeOptions.highWater&&!this.check(d,_),f=this.strategyIsBlock()&&(R||this.isBlocked(_)),f&&(this._unblockTime=_+this.computePenalty(),this._nextRequest=this._unblockTime+this.storeOptions.minTime,this.instance._dropAllQueued()),{reachedHWM:R,blocked:f,strategy:this.storeOptions.strategy}}async __free__(h,d){return await this.yieldLoop(),this._running-=d,this._done+=d,this.instance._drainAll(this.computeCapacity()),{running:this._running}}};var N=w,M,oe;M=E,oe=class{constructor(h){this.status=h,this._jobs={},this.counts=this.status.map(function(){return 0})}next(h){var d,f;if(d=this._jobs[h],f=d+1,d!=null&&f<this.status.length)return this.counts[d]--,this.counts[f]++,this._jobs[h]++;if(d!=null)return this.counts[d]--,delete this._jobs[h]}start(h){var d;return d=0,this._jobs[h]=d,this.counts[d]++}remove(h){var d;return d=this._jobs[h],d!=null&&(this.counts[d]--,delete this._jobs[h]),d!=null}jobStatus(h){var d;return(d=this.status[this._jobs[h]])!=null?d:null}statusJobs(h){var d,f,_,R,C;if(h!=null){if(f=this.status.indexOf(h),f<0)throw new M(`status must be one of ${this.status.join(", ")}`);_=this._jobs,R=[];for(d in _)C=_[d],C===f&&R.push(d);return R}else return Object.keys(this._jobs)}statusCounts(){return this.counts.reduce(((h,d,f)=>(h[this.status[f]]=d,h)),{})}};var Fe=oe,J,ne;J=i,ne=class{constructor(h,d){this.schedule=this.schedule.bind(this),this.name=h,this.Promise=d,this._running=0,this._queue=new J}isEmpty(){return this._queue.length===0}async _tryToRun(){var h,d,f,_,R,C,G;if(this._running<1&&this._queue.length>0)return this._running++,{task:G,args:h,resolve:R,reject:_}=this._queue.shift(),d=await(async function(){try{return C=await G(...h),function(){return R(C)}}catch(z){return f=z,function(){return _(f)}}})(),this._running--,this._tryToRun(),d()}schedule(h,...d){var f,_,R;return R=_=null,f=new this.Promise(function(C,G){return R=C,_=G}),this._queue.push({task:h,args:d,resolve:R,reject:_}),this._tryToRun(),f}};var Pe=ne,xe="2.19.5",Je={version:xe},dt=Object.freeze({version:xe,default:Je}),Re=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),Ae=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),ke=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),L,I,H,Z,ae,ee;ee=o,L=c,Z=Re,H=Ae,ae=ke,I=(function(){class D{constructor(d={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=d,ee.load(this.limiterOptions,this.defaults,this),this.Events=new L(this),this.instances={},this.Bottleneck=_n,this._startAutoCleanup(),this.sharedConnection=this.connection!=null,this.connection==null&&(this.limiterOptions.datastore==="redis"?this.connection=new Z(Object.assign({},this.limiterOptions,{Events:this.Events})):this.limiterOptions.datastore==="ioredis"&&(this.connection=new H(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(d=""){var f;return(f=this.instances[d])!=null?f:(()=>{var _;return _=this.instances[d]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${d}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",_,d),_})()}async deleteKey(d=""){var f,_;return _=this.instances[d],this.connection&&(f=await this.connection.__runCommand__(["del",...ae.allKeys(`${this.id}-${d}`)])),_!=null&&(delete this.instances[d],await _.disconnect()),_!=null||f>0}limiters(){var d,f,_,R;f=this.instances,_=[];for(d in f)R=f[d],_.push({key:d,limiter:R});return _}keys(){return Object.keys(this.instances)}async clusterKeys(){var d,f,_,R,C,G,z,we,Te;if(this.connection==null)return this.Promise.resolve(this.keys());for(G=[],d=null,Te=`b_${this.id}-`.length,f=9;d!==0;)for([we,_]=await this.connection.__runCommand__(["scan",d??0,"match",`b_${this.id}-*_settings`,"count",1e4]),d=~~we,R=0,z=_.length;R<z;R++)C=_[R],G.push(C.slice(Te,-f));return G}_startAutoCleanup(){var d;return clearInterval(this.interval),typeof(d=this.interval=setInterval(async()=>{var f,_,R,C,G,z;G=Date.now(),R=this.instances,C=[];for(_ in R){z=R[_];try{await z._store.__groupCheck__(G)?C.push(this.deleteKey(_)):C.push(void 0)}catch(we){f=we,C.push(z.Events.trigger("error",f))}}return C},this.timeout/2)).unref=="function"?d.unref():void 0}updateSettings(d={}){if(ee.overwrite(d,this.defaults,this),ee.overwrite(d,d,this.limiterOptions),d.timeout!=null)return this._startAutoCleanup()}disconnect(d=!0){var f;if(!this.sharedConnection)return(f=this.connection)!=null?f.disconnect(d):void 0}}return D.prototype.defaults={timeout:1e3*60*5,connection:null,Promise,id:"group-key"},D}).call(s);var K=I,de,pe,fe;fe=o,pe=c,de=(function(){class D{constructor(d={}){this.options=d,fe.load(this.options,this.defaults,this),this.Events=new pe(this),this._arr=[],this._resetPromise(),this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise((d,f)=>this._resolve=d)}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(d){var f;return this._arr.push(d),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 D.prototype.defaults={maxTime:null,maxSize:null,Promise},D}).call(s);var Oe=de,_t=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),Sr=e(dt),Ps,gn,Cr,Pr,mn,kr,hn,fn,bn,Ar,Ke,yn=[].splice;kr=10,gn=5,Ke=o,hn=g,Pr=q,mn=N,fn=_t,Cr=c,bn=Fe,Ar=Pe,Ps=(function(){class D{constructor(d={},...f){var _,R;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(d,f),Ke.load(d,this.instanceDefaults,this),this._queues=new hn(kr),this._scheduled={},this._states=new bn(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new Cr(this),this._submitLock=new Ar("submit",this.Promise),this._registerLock=new Ar("register",this.Promise),R=Ke.load(d,this.storeDefaults,{}),this._store=(function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null)return _=Ke.load(d,this.redisStoreDefaults,{}),new fn(this,R,_);if(this.datastore==="local")return _=Ke.load(d,this.localStoreDefaults,{}),new mn(this,R,_);throw new D.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}).call(this),this._queues.on("leftzero",()=>{var C;return(C=this._store.heartbeat)!=null&&typeof C.ref=="function"?C.ref():void 0}),this._queues.on("zero",()=>{var C;return(C=this._store.heartbeat)!=null&&typeof C.unref=="function"?C.unref():void 0})}_validateOptions(d,f){if(!(d!=null&&typeof d=="object"&&f.length===0))throw new D.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(d){return this._store.__publish__(d)}disconnect(d=!0){return this._store.__disconnect__(d)}chain(d){return this._limiter=d,this}queued(d){return this._queues.queued(d)}clusterQueued(){return this._store.__queued__()}empty(){return this.queued()===0&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(d){return this._states.jobStatus(d)}jobs(d){return this._states.statusJobs(d)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(d=1){return this._store.__check__(d)}_clearGlobalState(d){return this._scheduled[d]!=null?(clearTimeout(this._scheduled[d].expiration),delete this._scheduled[d],!0):!1}async _free(d,f,_,R){var C,G;try{if({running:G}=await this._store.__free__(d,_.weight),this.Events.trigger("debug",`Freed ${_.id}`,R),G===0&&this.empty())return this.Events.trigger("idle")}catch(z){return C=z,this.Events.trigger("error",C)}}_run(d,f,_){var R,C,G;return f.doRun(),R=this._clearGlobalState.bind(this,d),G=this._run.bind(this,d,f),C=this._free.bind(this,d,f),this._scheduled[d]={timeout:setTimeout(()=>f.doExecute(this._limiter,R,G,C),_),expiration:f.options.expiration!=null?setTimeout(function(){return f.doExpire(R,G,C)},_+f.options.expiration):void 0,job:f}}_drainOne(d){return this._registerLock.schedule(()=>{var f,_,R,C,G;return this.queued()===0?this.Promise.resolve(null):(G=this._queues.getFirst(),{options:C,args:f}=R=G.first(),d!=null&&C.weight>d?this.Promise.resolve(null):(this.Events.trigger("debug",`Draining ${C.id}`,{args:f,options:C}),_=this._randomIndex(),this._store.__register__(_,C.weight,C.expiration).then(({success:z,wait:we,reservoir:Te})=>{var Xt;return this.Events.trigger("debug",`Drained ${C.id}`,{success:z,args:f,options:C}),z?(G.shift(),Xt=this.empty(),Xt&&this.Events.trigger("empty"),Te===0&&this.Events.trigger("depleted",Xt),this._run(_,R,we),this.Promise.resolve(C.weight)):this.Promise.resolve(null)})))})}_drainAll(d,f=0){return this._drainOne(d).then(_=>{var R;return _!=null?(R=d!=null?d-_:d,this._drainAll(R,f+_)):this.Promise.resolve(f)}).catch(_=>this.Events.trigger("error",_))}_dropAllQueued(d){return this._queues.shiftAll(function(f){return f.doDrop({message:d})})}stop(d={}){var f,_;return d=Ke.load(d,this.stopDefaults),_=R=>{var C;return C=()=>{var G;return G=this._states.counts,G[0]+G[1]+G[2]+G[3]===R},new this.Promise((G,z)=>C()?G():this.on("done",()=>{if(C())return this.removeAllListeners("done"),G()}))},f=d.dropWaitingJobs?(this._run=function(R,C){return C.doDrop({message:d.dropErrorMessage})},this._drainOne=()=>this.Promise.resolve(null),this._registerLock.schedule(()=>this._submitLock.schedule(()=>{var R,C,G;C=this._scheduled;for(R in C)G=C[R],this.jobStatus(G.job.options.id)==="RUNNING"&&(clearTimeout(G.timeout),clearTimeout(G.expiration),G.job.doDrop({message:d.dropErrorMessage}));return this._dropAllQueued(d.dropErrorMessage),_(0)}))):this.schedule({priority:kr-1,weight:0},()=>_(1)),this._receive=function(R){return R._reject(new D.prototype.BottleneckError(d.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new D.prototype.BottleneckError("stop() has already been called")),f}async _addToQueue(d){var f,_,R,C,G,z,we;({args:f,options:C}=d);try{({reachedHWM:G,blocked:_,strategy:we}=await this._store.__submit__(this.queued(),C.weight))}catch(Te){return R=Te,this.Events.trigger("debug",`Could not queue ${C.id}`,{args:f,options:C,error:R}),d.doDrop({error:R}),!1}return _?(d.doDrop(),!0):G&&(z=we===D.prototype.strategy.LEAK?this._queues.shiftLastFrom(C.priority):we===D.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(C.priority+1):we===D.prototype.strategy.OVERFLOW?d:void 0,z?.doDrop(),z==null||we===D.prototype.strategy.OVERFLOW)?(z==null&&d.doDrop(),G):(d.doQueue(G,_),this._queues.push(d),await this._drainAll(),G)}_receive(d){return this._states.jobStatus(d.options.id)!=null?(d._reject(new D.prototype.BottleneckError(`A job with the same id already exists (id=${d.options.id})`)),!1):(d.doReceive(),this._submitLock.schedule(this._addToQueue,d))}submit(...d){var f,_,R,C,G,z,we;return typeof d[0]=="function"?(G=d,[_,...d]=G,[f]=yn.call(d,-1),C=Ke.load({},this.jobDefaults)):(z=d,[C,_,...d]=z,[f]=yn.call(d,-1),C=Ke.load(C,this.jobDefaults)),we=(...Te)=>new this.Promise(function(Xt,wu){return _(...Te,function(...Rn){return(Rn[0]!=null?wu:Xt)(Rn)})}),R=new Pr(we,d,C,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),R.promise.then(function(Te){return typeof f=="function"?f(...Te):void 0}).catch(function(Te){return Array.isArray(Te)?typeof f=="function"?f(...Te):void 0:typeof f=="function"?f(Te):void 0}),this._receive(R)}schedule(...d){var f,_,R;return typeof d[0]=="function"?([R,...d]=d,_={}):[_,R,...d]=d,f=new Pr(R,d,_,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(f),f.promise}wrap(d){var f,_;return f=this.schedule.bind(this),_=function(...R){return f(d.bind(this),...R)},_.withOptions=function(R,...C){return f(R,d,...C)},_}async updateSettings(d={}){return await this._store.__updateSettings__(Ke.overwrite(d,this.storeDefaults)),Ke.overwrite(d,this.instanceDefaults,this),this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(d=0){return this._store.__incrementReservoir__(d)}}return D.default=D,D.Events=Cr,D.version=D.prototype.version=Sr.version,D.strategy=D.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},D.BottleneckError=D.prototype.BottleneckError=E,D.Group=D.prototype.Group=K,D.RedisConnection=D.prototype.RedisConnection=Re,D.IORedisConnection=D.prototype.IORedisConnection=Ae,D.Batcher=D.prototype.Batcher=Oe,D.prototype.jobDefaults={priority:gn,weight:1,expiration:null,id:"<no-id>"},D.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:D.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},D.prototype.localStoreDefaults={Promise,timeout:null,heartbeatInterval:250},D.prototype.redisStoreDefaults={Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},D.prototype.instanceDefaults={datastore:"local",connection:null,id:"<no-id>",rejectOnDrop:!0,trackDoneStatus:!1,Promise},D.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},D}).call(s);var _n=Ps,Ru=_n;return Ru}))});function Ql(s,e,t){return s.retryLimiter.schedule(Yl,s,e,t)}async function Yl(s,e,t){let{pathname:r}=new URL(t.url,"http://github.test"),o=Xl(t.method,r),n=!o&&t.method!=="GET"&&t.method!=="HEAD",i=t.method==="GET"&&r.startsWith("/search/"),a=r.startsWith("/graphql"),u=~~e.retryCount>0?{priority:0,weight:0}:{};s.clustering&&(u.expiration=1e3*60),(n||a)&&await s.write.key(s.id).schedule(u,Eo),n&&s.triggersNotification(r)&&await s.notifications.key(s.id).schedule(u,Eo),i&&await s.search.key(s.id).schedule(u,Eo);let l=(o?s.auth:s.global).key(s.id).schedule(u,e,t);if(a){let p=await l;if(p.data.errors!=null&&p.data.errors.some(g=>g.type==="RATE_LIMITED"))throw Object.assign(new Error("GraphQL Rate Limit Exceeded"),{response:p,data:p.data})}return l}function Xl(s,e){return s==="PATCH"&&/^\/applications\/[^/]+\/token\/scoped$/.test(e)||s==="POST"&&(/^\/applications\/[^/]+\/token$/.test(e)||/^\/app\/installations\/[^/]+\/access_tokens$/.test(e)||e==="/login/oauth/access_token")}function ep(s){let t=`^(?:${s.map(r=>r.split("/").map(o=>o.startsWith("{")?"(?:.+?)":o).join("/")).map(r=>`(?:${r})`).join("|")})[^/]*$`;return new RegExp(t,"i")}function Vs(s,e){let{enabled:t=!0,Bottleneck:r=ua.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),kt.global==null&&tp(r,a);let c=Object.assign({clustering:i!=null,triggersNotification:la,fallbackSecondaryRateRetryAfter:60,retryAfterBaseValue:1e3,retryLimiter:new r,id:o,...kt},e.throttle);if(typeof c.onSecondaryRateLimit!="function"||typeof c.onRateLimit!="function")throw new Error(`octokit/plugin-throttling error:
35
+ `)}function zl(s,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(Wl.includes(i))return Promise.reject(new Error(`[@octokit/graphql] "${i}" cannot be used as variable name`))}let r=typeof e=="string"?Object.assign({query:e},t):e,o=Object.keys(r).reduce((i,a)=>Vl.includes(a)?(i[a]=r[a],i):(i.variables||(i.variables={}),i.variables[a]=r[a],i),{}),n=r.baseUrl||s.endpoint.DEFAULTS.baseUrl;return qi.test(n)&&(o.url=n.replace(qi,"/api/graphql")),s(o).then(i=>{if(i.data.errors){let a={};for(let c of Object.keys(i.headers))a[c]=i.headers[c];throw new Bl(o,a,i.data)}return i.data.data})}function ho(s,e){let t=s.defaults(e);return Object.assign((o,n)=>zl(t,o,n),{defaults:ho.bind(null,t),endpoint:t.endpoint})}function Bi(s){return ho(s,{method:"POST",url:"/graphql"})}var Hl,Bl,Vl,Wl,qi,_m,Vi=P(()=>{mo();us();Hl="0.0.0-development";Bl=class extends Error{constructor(s,e,t){super(ql(t)),this.request=s,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},Vl=["method","baseUrl","url","headers","request","query","mediaType","operationName"],Wl=["query","method","url"],qi=/\/api\/v3\/?$/;_m=ho(ds,{headers:{"user-agent":`octokit-graphql.js/${Hl} ${bt()}`},method:"POST",url:"/graphql"})});async function Kl(s){let e=Jl(s),t=s.startsWith("v1.")||s.startsWith("ghs_"),r=s.startsWith("ghu_");return{type:"token",token:s,tokenType:e?"app":t?"installation":r?"user-to-server":"oauth"}}function Ql(s){return s.split(/\./).length===3?`bearer ${s}`:`token ${s}`}async function Yl(s,e,t,r){let o=e.endpoint.merge(t,r);return o.headers.authorization=Ql(s),e(o)}var fo,Wi,zi,Jl,Ji,Ki=P(()=>{fo="(?:[a-zA-Z0-9_-]+)",Wi="\\.",zi=new RegExp(`^${fo}${Wi}${fo}${Wi}${fo}$`),Jl=zi.test.bind(zi);Ji=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(Kl.bind(null,e),{hook:Yl.bind(null,e)})}});var bo,Qi=P(()=>{bo="7.0.6"});function ep(s={}){return typeof s.debug!="function"&&(s.debug=Yi),typeof s.info!="function"&&(s.info=Yi),typeof s.warn!="function"&&(s.warn=Xl),typeof s.error!="function"&&(s.error=Zl),s}var Yi,Xl,Zl,Xi,Ws,Zi=P(()=>{us();_i();mo();Vi();Ki();Qi();Yi=()=>{},Xl=console.warn.bind(console),Zl=console.error.bind(console);Xi=`octokit-core.js/${bo} ${bt()}`,Ws=class{static VERSION=bo;static defaults(e){return class extends this{constructor(...r){let o=r[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 yi.Collection,r={baseUrl:ds.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},e.request,{hook:t.bind(null,"request")}),mediaType:{previews:[],format:""}};if(r.headers["user-agent"]=e.userAgent?`${e.userAgent} ${Xi}`:Xi,e.baseUrl&&(r.baseUrl=e.baseUrl),e.previews&&(r.mediaType.previews=e.previews),e.timeZone&&(r.headers["time-zone"]=e.timeZone),this.request=ds.defaults(r),this.graphql=Bi(this.request).defaults(r),this.log=ep(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=Ji(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 ea,ta=P(()=>{ea="6.0.0"});function yo(s){s.hook.wrap("request",(e,t)=>{s.log.debug("request",t);let r=Date.now(),o=s.request.endpoint.parse(t),n=o.url.replace(t.baseUrl,"");return e(t).then(i=>{let a=i.headers["x-github-request-id"];return s.log.info(`${o.method} ${n} - ${i.status} with id ${a} in ${Date.now()-r}ms`),i}).catch(i=>{let a=i.response?.headers["x-github-request-id"]||"UNKNOWN";throw s.log.error(`${o.method} ${n} - ${i.status} with id ${a} in ${Date.now()-r}ms`),i})})}var sa=P(()=>{ta();yo.VERSION=ea});function sp(s){if(!s.data)return{...s,data:[]};if(!(("total_count"in s.data||"total_commits"in s.data)&&!("url"in s.data)))return s;let t=s.data.incomplete_results,r=s.data.repository_selection,o=s.data.total_count,n=s.data.total_commits;delete s.data.incomplete_results,delete s.data.repository_selection,delete s.data.total_count,delete s.data.total_commits;let i=Object.keys(s.data)[0],a=s.data[i];return s.data=a,typeof t<"u"&&(s.data.incomplete_results=t),typeof r<"u"&&(s.data.repository_selection=r),s.data.total_count=o,s.data.total_commits=n,s}function _o(s,e,t){let r=typeof e=="function"?e.endpoint(t):s.request.endpoint(e,t),o=typeof e=="function"?e:s.request,n=r.method,i=r.headers,a=r.url;return{[Symbol.asyncIterator]:()=>({async next(){if(!a)return{done:!0};try{let c=await o({method:n,url:a,headers:i}),u=sp(c);if(a=((u.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!a&&"total_commits"in u.data){let l=new URL(u.url),p=l.searchParams,g=parseInt(p.get("page")||"1",10),b=parseInt(p.get("per_page")||"250",10);g*b<u.data.total_commits&&(p.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 ra(s,e,t,r){return typeof t=="function"&&(r=t,t=void 0),oa(s,[],_o(s,e,t)[Symbol.asyncIterator](),r)}function oa(s,e,t,r){return t.next().then(o=>{if(o.done)return e;let n=!1;function i(){n=!0}return e=e.concat(r?r(o.value,i):o.value.data),n?e:oa(s,e,t,r)})}function Ro(s){return{paginate:Object.assign(ra.bind(null,s),{iterator:_o.bind(null,s)})}}var tp,xm,na=P(()=>{tp="0.0.0-development";xm=Object.assign(ra,{iterator:_o});Ro.VERSION=tp});var wo,ia=P(()=>{wo="17.0.0"});var rp,aa,ca=P(()=>{rp={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"]}},aa=rp});function Eo(s){let e={};for(let t of At.keys())e[t]=new Proxy({octokit:s,scope:t,cache:{}},op);return e}function np(s,e,t,r,o){let n=s.request.defaults(r);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;s.log.warn(`octokit.${e}.${t}() has been renamed to octokit.${u}.${l}()`)}if(o.deprecated&&s.log.warn(o.deprecated),o.renamedParameters){let u=n.endpoint.merge(...a);for(let[l,p]of Object.entries(o.renamedParameters))l in u&&(s.log.warn(`"${l}" parameter is deprecated for "octokit.${e}.${t}()". Use "${p}" instead`),p in u||(u[p]=u[l]),delete u[l]);return n(u)}return n(...a)}return Object.assign(i,n)}var At,op,ua=P(()=>{ca();At=new Map;for(let[s,e]of Object.entries(aa))for(let[t,r]of Object.entries(e)){let[o,n,i]=r,[a,c]=o.split(/ /),u=Object.assign({method:a,url:c},n);At.has(s)||At.set(s,new Map),At.get(s).set(t,{scope:s,methodName:t,endpointDefaults:u,decorations:i})}op={has({scope:s},e){return At.get(s).has(e)},getOwnPropertyDescriptor(s,e){return{value:this.get(s,e),configurable:!0,writable:!0,enumerable:!0}},defineProperty(s,e,t){return Object.defineProperty(s.cache,e,t),!0},deleteProperty(s,e){return delete s.cache[e],!0},ownKeys({scope:s}){return[...At.get(s).keys()]},set(s,e,t){return s.cache[e]=t},get({octokit:s,scope:e,cache:t},r){if(t[r])return t[r];let o=At.get(e).get(r);if(!o)return;let{endpointDefaults:n,decorations:i}=o;return i?t[r]=np(s,e,r,n,i):t[r]=s.request.defaults(n),t[r]}}});function ip(s){return{rest:Eo(s)}}function To(s){let e=Eo(s);return{...e,rest:e}}var la=P(()=>{ia();ua();ip.VERSION=wo;To.VERSION=wo});var pa,da=P(()=>{pa="22.0.1"});var ga,ma=P(()=>{Zi();sa();na();la();da();ga=Ws.plugin(yo,To,Ro).defaults({userAgent:`octokit-rest.js/${pa}`})});var ha=et((So,vo)=>{(function(s,e){typeof So=="object"&&typeof vo<"u"?vo.exports=e():typeof define=="function"&&define.amd?define(e):s.Bottleneck=e()})(So,(function(){"use strict";var s=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function e(D){return D&&D.default||D}var t=function(D,h,d={}){var f,_,w;for(f in h)w=h[f],d[f]=(_=D[f])!=null?_:w;return d},r=function(D,h,d={}){var f,_;for(f in D)_=D[f],h[f]!==void 0&&(d[f]=_);return d},o={load:t,overwrite:r},n;n=class{constructor(h,d){this.incr=h,this.decr=d,this._first=null,this._last=null,this.length=0}push(h){var d;this.length++,typeof this.incr=="function"&&this.incr(),d={value:h,prev:this._last,next:null},this._last!=null?(this._last.next=d,this._last=d):this._first=this._last=d}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,d,f;for(h=this._first,f=[];h!=null;)f.push((d=h,h=h.next,d.value));return f}forEachShift(h){var d;for(d=this.shift();d!=null;)h(d),d=this.shift()}debug(){var h,d,f,_,w;for(h=this._first,w=[];h!=null;)w.push((d=h,h=h.next,{value:d.value,prev:(f=d.prev)!=null?f.value:void 0,next:(_=d.next)!=null?_.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=(d,f)=>this._addListener(d,"many",f),this.instance.once=(d,f)=>this._addListener(d,"once",f),this.instance.removeAllListeners=(d=null)=>d!=null?delete this._events[d]:this._events={}}_addListener(h,d,f){var _;return(_=this._events)[h]==null&&(_[h]=[]),this._events[h].push({cb:f,status:d}),this.instance}listenerCount(h){return this._events[h]!=null?this._events[h].length:0}async trigger(h,...d){var f,_;try{return h!=="debug"&&this.trigger("debug",`Event triggered: ${h}`,d),this._events[h]==null?void 0:(this._events[h]=this._events[h].filter(function(w){return w.status!=="none"}),_=this._events[h].map(async w=>{var C,G;if(w.status!=="none"){w.status==="once"&&(w.status="none");try{return G=typeof w.cb=="function"?w.cb(...d):void 0,typeof G?.then=="function"?await G:G}catch(z){return C=z,this.trigger("error",C),null}}}),(await Promise.all(_)).find(function(w){return w!=null}))}catch(w){return f=w,this.trigger("error",f),null}}};var c=a,u,l,p;u=i,l=c,p=class{constructor(h){var d;this.Events=new l(this),this._length=0,this._lists=(function(){var f,_,w;for(w=[],d=f=1,_=h;1<=_?f<=_:f>=_;d=1<=_?++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(d){return d.forEachShift(h)})}getFirst(h=this._lists){var d,f,_;for(d=0,f=h.length;d<f;d++)if(_=h[d],_.length>0)return _;return[]}shiftLastFrom(h){return this.getFirst(this._lists.slice(h).reverse()).shift()}};var g=p,b;b=class extends Error{};var T=b,v,A,y,$,I;$=10,A=5,I=o,v=T,y=class{constructor(h,d,f,_,w,C,G,z){this.task=h,this.args=d,this.rejectOnDrop=w,this.Events=C,this._states=G,this.Promise=z,this.options=I.load(f,_),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===_.id&&(this.options.id=`${this.options.id}-${this._randomIndex()}`),this.promise=new this.Promise((we,Te)=>{this._resolve=we,this._reject=Te}),this.retryCount=0}_sanitizePriority(h){var d;return d=~~h!==h?A:h,d<0?0:d>$-1?$-1:d}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:h,message:d="This job has been dropped by Bottleneck"}={}){return this._states.remove(this.options.id)?(this.rejectOnDrop&&this._reject(h??new v(d)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0):!1}_assertStatus(h){var d;if(d=this._states.jobStatus(this.options.id),!(d===h||h==="DONE"&&d===null))throw new v(`Invalid job status ${d}, 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,d){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:h,blocked:d})}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,d,f,_){var w,C,G;this.retryCount===0?(this._assertStatus("RUNNING"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),C={args:this.args,options:this.options,retryCount:this.retryCount},this.Events.trigger("executing",C);try{if(G=await(h!=null?h.schedule(this.options,this.task,...this.args):this.task(...this.args)),d())return this.doDone(C),await _(this.options,C),this._assertStatus("DONE"),this._resolve(G)}catch(z){return w=z,this._onFailure(w,C,d,f,_)}}doExpire(h,d,f){var _,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},_=new v(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(_,w,h,d,f)}async _onFailure(h,d,f,_,w){var C,G;if(f())return C=await this.Events.trigger("failed",h,d),C!=null?(G=~~C,this.Events.trigger("retry",`Retrying ${this.options.id} after ${G} ms`,d),this.retryCount++,_(G)):(this.doDone(d),await w(this.options,d),this._assertStatus("DONE"),this._reject(h))}doDone(h){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",h)}};var q=y,O,E,k;k=o,O=T,E=class{constructor(h,d,f){this.instance=h,this.storeOptions=d,this.clientId=this.instance._randomIndex(),k.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 d,f,_,w,C;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:d,reservoirIncreaseMaximum:_,reservoir:C}=this.storeOptions,this._lastReservoirIncrease=w,f=_!=null?Math.min(d,_-C):d,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(d,f){return setTimeout(d,h)})}computePenalty(){var h;return(h=this.storeOptions.penalty)!=null?h:15*this.storeOptions.minTime||5e3}async __updateSettings__(h){return await this.yieldLoop(),k.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,d;return{maxConcurrent:h,reservoir:d}=this.storeOptions,h!=null&&d!=null?Math.min(h-this._running,d):h!=null?h-this._running:d??null}conditionsCheck(h){var d;return d=this.computeCapacity(),d==null||h<=d}async __incrementReservoir__(h){var d;return await this.yieldLoop(),d=this.storeOptions.reservoir+=h,this.instance._drainAll(this.computeCapacity()),d}async __currentReservoir__(){return await this.yieldLoop(),this.storeOptions.reservoir}isBlocked(h){return this._unblockTime>=h}check(h,d){return this.conditionsCheck(h)&&this._nextRequest-d<=0}async __check__(h){var d;return await this.yieldLoop(),d=Date.now(),this.check(h,d)}async __register__(h,d,f){var _,w;return await this.yieldLoop(),_=Date.now(),this.conditionsCheck(d)?(this._running+=d,this.storeOptions.reservoir!=null&&(this.storeOptions.reservoir-=d),w=Math.max(this._nextRequest-_,0),this._nextRequest=_+w+this.storeOptions.minTime,{success:!0,wait:w,reservoir:this.storeOptions.reservoir}):{success:!1}}strategyIsBlock(){return this.storeOptions.strategy===3}async __submit__(h,d){var f,_,w;if(await this.yieldLoop(),this.storeOptions.maxConcurrent!=null&&d>this.storeOptions.maxConcurrent)throw new O(`Impossible to add a job having a weight of ${d} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);return _=Date.now(),w=this.storeOptions.highWater!=null&&h===this.storeOptions.highWater&&!this.check(d,_),f=this.strategyIsBlock()&&(w||this.isBlocked(_)),f&&(this._unblockTime=_+this.computePenalty(),this._nextRequest=this._unblockTime+this.storeOptions.minTime,this.instance._dropAllQueued()),{reachedHWM:w,blocked:f,strategy:this.storeOptions.strategy}}async __free__(h,d){return await this.yieldLoop(),this._running-=d,this._done+=d,this.instance._drainAll(this.computeCapacity()),{running:this._running}}};var N=E,M,oe;M=T,oe=class{constructor(h){this.status=h,this._jobs={},this.counts=this.status.map(function(){return 0})}next(h){var d,f;if(d=this._jobs[h],f=d+1,d!=null&&f<this.status.length)return this.counts[d]--,this.counts[f]++,this._jobs[h]++;if(d!=null)return this.counts[d]--,delete this._jobs[h]}start(h){var d;return d=0,this._jobs[h]=d,this.counts[d]++}remove(h){var d;return d=this._jobs[h],d!=null&&(this.counts[d]--,delete this._jobs[h]),d!=null}jobStatus(h){var d;return(d=this.status[this._jobs[h]])!=null?d:null}statusJobs(h){var d,f,_,w,C;if(h!=null){if(f=this.status.indexOf(h),f<0)throw new M(`status must be one of ${this.status.join(", ")}`);_=this._jobs,w=[];for(d in _)C=_[d],C===f&&w.push(d);return w}else return Object.keys(this._jobs)}statusCounts(){return this.counts.reduce(((h,d,f)=>(h[this.status[f]]=d,h)),{})}};var xe=oe,Q,ne;Q=i,ne=class{constructor(h,d){this.schedule=this.schedule.bind(this),this.name=h,this.Promise=d,this._running=0,this._queue=new Q}isEmpty(){return this._queue.length===0}async _tryToRun(){var h,d,f,_,w,C,G;if(this._running<1&&this._queue.length>0)return this._running++,{task:G,args:h,resolve:w,reject:_}=this._queue.shift(),d=await(async function(){try{return C=await G(...h),function(){return w(C)}}catch(z){return f=z,function(){return _(f)}}})(),this._running--,this._tryToRun(),d()}schedule(h,...d){var f,_,w;return w=_=null,f=new this.Promise(function(C,G){return w=C,_=G}),this._queue.push({task:h,args:d,resolve:w,reject:_}),this._tryToRun(),f}};var Pe=ne,Ue="2.19.5",Ke={version:Ue},mt=Object.freeze({version:Ue,default:Ke}),Re=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),Ae=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),ke=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),L,F,H,Z,ae,ee;ee=o,L=c,Z=Re,H=Ae,ae=ke,F=(function(){class D{constructor(d={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=d,ee.load(this.limiterOptions,this.defaults,this),this.Events=new L(this),this.instances={},this.Bottleneck=Pn,this._startAutoCleanup(),this.sharedConnection=this.connection!=null,this.connection==null&&(this.limiterOptions.datastore==="redis"?this.connection=new Z(Object.assign({},this.limiterOptions,{Events:this.Events})):this.limiterOptions.datastore==="ioredis"&&(this.connection=new H(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(d=""){var f;return(f=this.instances[d])!=null?f:(()=>{var _;return _=this.instances[d]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${d}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",_,d),_})()}async deleteKey(d=""){var f,_;return _=this.instances[d],this.connection&&(f=await this.connection.__runCommand__(["del",...ae.allKeys(`${this.id}-${d}`)])),_!=null&&(delete this.instances[d],await _.disconnect()),_!=null||f>0}limiters(){var d,f,_,w;f=this.instances,_=[];for(d in f)w=f[d],_.push({key:d,limiter:w});return _}keys(){return Object.keys(this.instances)}async clusterKeys(){var d,f,_,w,C,G,z,we,Te;if(this.connection==null)return this.Promise.resolve(this.keys());for(G=[],d=null,Te=`b_${this.id}-`.length,f=9;d!==0;)for([we,_]=await this.connection.__runCommand__(["scan",d??0,"match",`b_${this.id}-*_settings`,"count",1e4]),d=~~we,w=0,z=_.length;w<z;w++)C=_[w],G.push(C.slice(Te,-f));return G}_startAutoCleanup(){var d;return clearInterval(this.interval),typeof(d=this.interval=setInterval(async()=>{var f,_,w,C,G,z;G=Date.now(),w=this.instances,C=[];for(_ in w){z=w[_];try{await z._store.__groupCheck__(G)?C.push(this.deleteKey(_)):C.push(void 0)}catch(we){f=we,C.push(z.Events.trigger("error",f))}}return C},this.timeout/2)).unref=="function"?d.unref():void 0}updateSettings(d={}){if(ee.overwrite(d,this.defaults,this),ee.overwrite(d,d,this.limiterOptions),d.timeout!=null)return this._startAutoCleanup()}disconnect(d=!0){var f;if(!this.sharedConnection)return(f=this.connection)!=null?f.disconnect(d):void 0}}return D.prototype.defaults={timeout:1e3*60*5,connection:null,Promise,id:"group-key"},D}).call(s);var Y=F,de,pe,fe;fe=o,pe=c,de=(function(){class D{constructor(d={}){this.options=d,fe.load(this.options,this.defaults,this),this.Events=new pe(this),this._arr=[],this._resetPromise(),this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise((d,f)=>this._resolve=d)}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(d){var f;return this._arr.push(d),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 D.prototype.defaults={maxTime:null,maxSize:null,Promise},D}).call(s);var Oe=de,wt=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),Ar=e(mt),As,wn,Or,Gr,En,$r,Tn,Sn,vn,Dr,Qe,Cn=[].splice;$r=10,wn=5,Qe=o,Tn=g,Gr=q,En=N,Sn=wt,Or=c,vn=xe,Dr=Pe,As=(function(){class D{constructor(d={},...f){var _,w;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(d,f),Qe.load(d,this.instanceDefaults,this),this._queues=new Tn($r),this._scheduled={},this._states=new vn(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new Or(this),this._submitLock=new Dr("submit",this.Promise),this._registerLock=new Dr("register",this.Promise),w=Qe.load(d,this.storeDefaults,{}),this._store=(function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null)return _=Qe.load(d,this.redisStoreDefaults,{}),new Sn(this,w,_);if(this.datastore==="local")return _=Qe.load(d,this.localStoreDefaults,{}),new En(this,w,_);throw new D.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}).call(this),this._queues.on("leftzero",()=>{var C;return(C=this._store.heartbeat)!=null&&typeof C.ref=="function"?C.ref():void 0}),this._queues.on("zero",()=>{var C;return(C=this._store.heartbeat)!=null&&typeof C.unref=="function"?C.unref():void 0})}_validateOptions(d,f){if(!(d!=null&&typeof d=="object"&&f.length===0))throw new D.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(d){return this._store.__publish__(d)}disconnect(d=!0){return this._store.__disconnect__(d)}chain(d){return this._limiter=d,this}queued(d){return this._queues.queued(d)}clusterQueued(){return this._store.__queued__()}empty(){return this.queued()===0&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(d){return this._states.jobStatus(d)}jobs(d){return this._states.statusJobs(d)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(d=1){return this._store.__check__(d)}_clearGlobalState(d){return this._scheduled[d]!=null?(clearTimeout(this._scheduled[d].expiration),delete this._scheduled[d],!0):!1}async _free(d,f,_,w){var C,G;try{if({running:G}=await this._store.__free__(d,_.weight),this.Events.trigger("debug",`Freed ${_.id}`,w),G===0&&this.empty())return this.Events.trigger("idle")}catch(z){return C=z,this.Events.trigger("error",C)}}_run(d,f,_){var w,C,G;return f.doRun(),w=this._clearGlobalState.bind(this,d),G=this._run.bind(this,d,f),C=this._free.bind(this,d,f),this._scheduled[d]={timeout:setTimeout(()=>f.doExecute(this._limiter,w,G,C),_),expiration:f.options.expiration!=null?setTimeout(function(){return f.doExpire(w,G,C)},_+f.options.expiration):void 0,job:f}}_drainOne(d){return this._registerLock.schedule(()=>{var f,_,w,C,G;return this.queued()===0?this.Promise.resolve(null):(G=this._queues.getFirst(),{options:C,args:f}=w=G.first(),d!=null&&C.weight>d?this.Promise.resolve(null):(this.Events.trigger("debug",`Draining ${C.id}`,{args:f,options:C}),_=this._randomIndex(),this._store.__register__(_,C.weight,C.expiration).then(({success:z,wait:we,reservoir:Te})=>{var es;return this.Events.trigger("debug",`Drained ${C.id}`,{success:z,args:f,options:C}),z?(G.shift(),es=this.empty(),es&&this.Events.trigger("empty"),Te===0&&this.Events.trigger("depleted",es),this._run(_,w,we),this.Promise.resolve(C.weight)):this.Promise.resolve(null)})))})}_drainAll(d,f=0){return this._drainOne(d).then(_=>{var w;return _!=null?(w=d!=null?d-_:d,this._drainAll(w,f+_)):this.Promise.resolve(f)}).catch(_=>this.Events.trigger("error",_))}_dropAllQueued(d){return this._queues.shiftAll(function(f){return f.doDrop({message:d})})}stop(d={}){var f,_;return d=Qe.load(d,this.stopDefaults),_=w=>{var C;return C=()=>{var G;return G=this._states.counts,G[0]+G[1]+G[2]+G[3]===w},new this.Promise((G,z)=>C()?G():this.on("done",()=>{if(C())return this.removeAllListeners("done"),G()}))},f=d.dropWaitingJobs?(this._run=function(w,C){return C.doDrop({message:d.dropErrorMessage})},this._drainOne=()=>this.Promise.resolve(null),this._registerLock.schedule(()=>this._submitLock.schedule(()=>{var w,C,G;C=this._scheduled;for(w in C)G=C[w],this.jobStatus(G.job.options.id)==="RUNNING"&&(clearTimeout(G.timeout),clearTimeout(G.expiration),G.job.doDrop({message:d.dropErrorMessage}));return this._dropAllQueued(d.dropErrorMessage),_(0)}))):this.schedule({priority:$r-1,weight:0},()=>_(1)),this._receive=function(w){return w._reject(new D.prototype.BottleneckError(d.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new D.prototype.BottleneckError("stop() has already been called")),f}async _addToQueue(d){var f,_,w,C,G,z,we;({args:f,options:C}=d);try{({reachedHWM:G,blocked:_,strategy:we}=await this._store.__submit__(this.queued(),C.weight))}catch(Te){return w=Te,this.Events.trigger("debug",`Could not queue ${C.id}`,{args:f,options:C,error:w}),d.doDrop({error:w}),!1}return _?(d.doDrop(),!0):G&&(z=we===D.prototype.strategy.LEAK?this._queues.shiftLastFrom(C.priority):we===D.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(C.priority+1):we===D.prototype.strategy.OVERFLOW?d:void 0,z?.doDrop(),z==null||we===D.prototype.strategy.OVERFLOW)?(z==null&&d.doDrop(),G):(d.doQueue(G,_),this._queues.push(d),await this._drainAll(),G)}_receive(d){return this._states.jobStatus(d.options.id)!=null?(d._reject(new D.prototype.BottleneckError(`A job with the same id already exists (id=${d.options.id})`)),!1):(d.doReceive(),this._submitLock.schedule(this._addToQueue,d))}submit(...d){var f,_,w,C,G,z,we;return typeof d[0]=="function"?(G=d,[_,...d]=G,[f]=Cn.call(d,-1),C=Qe.load({},this.jobDefaults)):(z=d,[C,_,...d]=z,[f]=Cn.call(d,-1),C=Qe.load(C,this.jobDefaults)),we=(...Te)=>new this.Promise(function(es,Du){return _(...Te,function(...kn){return(kn[0]!=null?Du:es)(kn)})}),w=new Gr(we,d,C,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),w.promise.then(function(Te){return typeof f=="function"?f(...Te):void 0}).catch(function(Te){return Array.isArray(Te)?typeof f=="function"?f(...Te):void 0:typeof f=="function"?f(Te):void 0}),this._receive(w)}schedule(...d){var f,_,w;return typeof d[0]=="function"?([w,...d]=d,_={}):[_,w,...d]=d,f=new Gr(w,d,_,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(f),f.promise}wrap(d){var f,_;return f=this.schedule.bind(this),_=function(...w){return f(d.bind(this),...w)},_.withOptions=function(w,...C){return f(w,d,...C)},_}async updateSettings(d={}){return await this._store.__updateSettings__(Qe.overwrite(d,this.storeDefaults)),Qe.overwrite(d,this.instanceDefaults,this),this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(d=0){return this._store.__incrementReservoir__(d)}}return D.default=D,D.Events=Or,D.version=D.prototype.version=Ar.version,D.strategy=D.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},D.BottleneckError=D.prototype.BottleneckError=T,D.Group=D.prototype.Group=Y,D.RedisConnection=D.prototype.RedisConnection=Re,D.IORedisConnection=D.prototype.IORedisConnection=Ae,D.Batcher=D.prototype.Batcher=Oe,D.prototype.jobDefaults={priority:wn,weight:1,expiration:null,id:"<no-id>"},D.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:D.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},D.prototype.localStoreDefaults={Promise,timeout:null,heartbeatInterval:250},D.prototype.redisStoreDefaults={Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},D.prototype.instanceDefaults={datastore:"local",connection:null,id:"<no-id>",rejectOnDrop:!0,trackDoneStatus:!1,Promise},D.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},D}).call(s);var Pn=As,$u=Pn;return $u}))});function cp(s,e,t){return s.retryLimiter.schedule(up,s,e,t)}async function up(s,e,t){let{pathname:r}=new URL(t.url,"http://github.test"),o=lp(t.method,r),n=!o&&t.method!=="GET"&&t.method!=="HEAD",i=t.method==="GET"&&r.startsWith("/search/"),a=r.startsWith("/graphql"),u=~~e.retryCount>0?{priority:0,weight:0}:{};s.clustering&&(u.expiration=1e3*60),(n||a)&&await s.write.key(s.id).schedule(u,Co),n&&s.triggersNotification(r)&&await s.notifications.key(s.id).schedule(u,Co),i&&await s.search.key(s.id).schedule(u,Co);let l=(o?s.auth:s.global).key(s.id).schedule(u,e,t);if(a){let p=await l;if(p.data.errors!=null&&p.data.errors.some(g=>g.type==="RATE_LIMITED"))throw Object.assign(new Error("GraphQL Rate Limit Exceeded"),{response:p,data:p.data})}return l}function lp(s,e){return s==="PATCH"&&/^\/applications\/[^/]+\/token\/scoped$/.test(e)||s==="POST"&&(/^\/applications\/[^/]+\/token$/.test(e)||/^\/app\/installations\/[^/]+\/access_tokens$/.test(e)||e==="/login/oauth/access_token")}function dp(s){let t=`^(?:${s.map(r=>r.split("/").map(o=>o.startsWith("{")?"(?:.+?)":o).join("/")).map(r=>`(?:${r})`).join("|")})[^/]*$`;return new RegExp(t,"i")}function zs(s,e){let{enabled:t=!0,Bottleneck:r=ba.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),Ot.global==null&&gp(r,a);let c=Object.assign({clustering:i!=null,triggersNotification:ya,fallbackSecondaryRateRetryAfter:60,retryAfterBaseValue:1e3,retryLimiter:new r,id:o,...Ot},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 s}funct
42
42
  onRateLimit: (retryAfter, options) => {/* ... */}
43
43
  }
44
44
  })
45
- `);let u={},l=new r.Events(u);return u.on("secondary-limit",c.onSecondaryRateLimit),u.on("rate-limit",c.onRateLimit),u.on("error",p=>s.log.warn("Error in throttling-plugin limit handler",p)),c.retryLimiter.on("failed",async function(p,g){let[b,E,v]=g.args,{pathname:A}=new URL(v.url,"http://github.test");if(!(A.startsWith("/graphql")&&p.status!==401||p.status===403||p.status===429))return;let $=~~E.retryCount;E.retryCount=$,v.request.retryCount=$;let{wantRetry:F,retryAfter:q=0}=await(async function(){if(/\bsecondary rate\b/i.test(p.message)){let O=Number(p.response.headers["retry-after"])||b.fallbackSecondaryRateRetryAfter;return{wantRetry:await l.trigger("secondary-limit",O,v,s,$),retryAfter:O}}if(p.response.headers!=null&&p.response.headers["x-ratelimit-remaining"]==="0"||(p.response.data?.errors??[]).some(O=>O.type==="RATE_LIMITED")){let O=new Date(~~p.response.headers["x-ratelimit-reset"]*1e3).getTime(),w=Math.max(Math.ceil((O-Date.now())/1e3)+1,0);return{wantRetry:await l.trigger("rate-limit",w,v,s,$),retryAfter:w}}return{}})();if(F)return E.retryCount++,q*b.retryAfterBaseValue}),s.hook.wrap("request",Ql.bind(null,c)),{}}var ua,Kl,Eo,Zl,ca,la,kt,tp,pa=P(()=>{ua=V(aa(),1),Kl="0.0.0-development",Eo=()=>Promise.resolve();Zl=["/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"];ca=ep(Zl),la=ca.test.bind(ca),kt={},tp=function(s,e){kt.global=new s.Group({id:"octokit-global",maxConcurrent:10,...e}),kt.auth=new s.Group({id:"octokit-auth",maxConcurrent:1,...e}),kt.search=new s.Group({id:"octokit-search",maxConcurrent:1,minTime:2e3,...e}),kt.write=new s.Group({id:"octokit-write",maxConcurrent:1,minTime:1e3,...e}),kt.notifications=new s.Group({id:"octokit-notifications",maxConcurrent:1,minTime:3e3,...e})};Vs.VERSION=Kl;Vs.triggersNotification=la});function Js(s){return s.toLocaleTimeString("en-US",{hour12:!1})}function rp(){return{onRateLimit:(s,e,t,r)=>{let o=e,n=new Date(Date.now()+s*1e3);return r<2?(m(Ws,`Rate limit hit (retry ${r+1}/2, waiting ${s}s, resets at ${Js(n)}) \u2014 ${o.method} ${o.url}`),!0):(m(Ws,`Rate limit exceeded, not retrying \u2014 ${o.method} ${o.url} (resets at ${Js(n)})`),!1)},onSecondaryRateLimit:(s,e,t,r)=>{let o=e,n=new Date(Date.now()+s*1e3);return r<1?(m(Ws,`Secondary rate limit hit (retry ${r+1}/1, waiting ${s}s, resets at ${Js(n)}) \u2014 ${o.method} ${o.url}`),!0):(m(Ws,`Secondary rate limit exceeded, not retrying \u2014 ${o.method} ${o.url} (resets at ${Js(n)})`),!1)}}}function ye(s){if(zs&&da===s)return zs;let e=rp();return zs=new sp({auth:s,throttle:e}),da=s,zs}async function To(s){let e=ye(s),{data:t}=await e.rateLimit.get(),r=t.resources.search;return{remaining:r.remaining,limit:r.limit,resetAt:new Date(r.reset*1e3).toISOString()}}var Ws,sp,zs,da,Bt=P(()=>{"use strict";ia();pa();re();Ws="github",sp=na.plugin(Vs),zs=null,da=null});function ip(s,e){if(!s||!e)return!0;let t=s.toLowerCase();return op.has(t)?!0:t===e.toLowerCase()}function ap(s,e){let t=new Date(s).getTime(),r=new Date(e).getTime();return Number.isNaN(t)||Number.isNaN(r)?s>e:t-r>=np}function ga(s){let{latestCommitDate:e,latestCommitAuthor:t,contributorUsername:r}=s;if(e)return ip(t,r)?e:void 0}function ma(s,e,t){return!(!s||!e||!ap(s,e)||t&&s<t)}function ha(s,e){return!s||!e?!1:s>=e}function cp(s){let{ciStatus:e,hasMergeConflict:t,hasUnrespondedComment:r,hasIncompleteChecklist:o,reviewDecision:n,lastMaintainerCommentDate:i,latestChangesRequestedDate:a,hasActionableCIFailure:c=!0}=s,u=ga(s),l=[];return r&&!ma(u,i,a)&&l.push("needs_response"),n==="changes_requested"&&a&&!ha(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 vo(s){let e=up(s),t=cp(s);return t?{...e,actionReasons:t}:e}function up(s){let{ciStatus:e,hasMergeConflict:t,hasUnrespondedComment:r,hasIncompleteChecklist:o,reviewDecision:n,daysSinceActivity:i,dormantThreshold:a,approachingThreshold:c,lastMaintainerCommentDate:u,latestChangesRequestedDate:l,hasActionableCIFailure:p=!0}=s,g="active";i>=a?g="dormant":i>=c&&(g="approaching_dormant");let b=ga(s);return r?ma(b,u,l)?e==="failing"&&p?{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?ha(b,l)?e==="failing"&&p?{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"?p?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 op,np,So=P(()=>{"use strict";op=new Set(["autofix-ci[bot]","prettier-ci[bot]","pre-commit-ci[bot]"]),np=120*1e3});async function Ks(s,e,t){let r=0,o=!1,n=async()=>{for(;r<s.length&&!o;){let a=s[r++];try{await e(a)}catch(c){throw o=!0,c}}},i=Math.min(t,s.length);await Promise.all(Array.from({length:i},()=>n()))}var Co=P(()=>{"use strict"});async function Be(s,e=100,t=10){let r=[];for(let o=1;o<=t;o++){let{data:n}=await s(o);if(r.push(...n),n.length<e)break}return r}var ps=P(()=>{"use strict"});function it(){return Po||(Po=new Ys),Po}async function ds(s,e,t){let r=s.getInflight(e);if(r)return T(ft,`Dedup hit for ${e}`),await r;let n=(async()=>{let a={},c=s.get(e);c&&(a["if-none-match"]=c.etag);try{let u=await t(a),l=u.headers?.etag;return l&&s.set(e,l,u.data),u.data}catch(u){if(pp(u)){let l=s.get(e);if(l)return T(ft,`304 cache hit for ${e}`),l.body}throw u}})(),i=s.setInflight(e,n);try{return await n}finally{i()}}async function Xs(s,e,t,r){let o=s.getIfFresh(e,t);if(o)return T(ft,`Time-based cache hit for ${e}`),o;let n=await r();return s.set(e,"",n),n}function pp(s){return ve(s)===304}var De,Qs,fa,ft,lp,Ys,Po,Vt=P(()=>{"use strict";De=V(require("fs"),1),Qs=V(require("path"),1),fa=V(require("crypto"),1);Se();re();se();ft="http-cache",lp=1440*60*1e3,Ys=class{cacheDir;inflightRequests=new Map;constructor(e){this.cacheDir=e??$s()}keyFor(e){return fa.createHash("sha256").update(e).digest("hex")}pathFor(e){return Qs.join(this.cacheDir,`${this.keyFor(e)}.json`)}getIfFresh(e,t){let r=this.get(e);if(!r)return null;let o=Date.now()-new Date(r.cachedAt).getTime();return!Number.isFinite(o)||o<0||o>t?null:r.body}get(e){let t=this.pathFor(e);try{let r=De.readFileSync(t,"utf-8"),o=JSON.parse(r);return o.url!==e?(T(ft,`Cache collision detected for ${e}, ignoring`),null):o}catch{return null}}set(e,t,r){let o={etag:t,url:e,body:r,cachedAt:new Date().toISOString()};try{De.writeFileSync(this.pathFor(e),JSON.stringify(o),{encoding:"utf-8",mode:384}),T(ft,`Cached response for ${e}`)}catch(n){T(ft,`Failed to write cache for ${e}`,n)}}hasInflight(e){return this.inflightRequests.has(e)}getInflight(e){return this.inflightRequests.get(e)}setInflight(e,t){return this.inflightRequests.set(e,t),()=>{this.inflightRequests.delete(e)}}evictStale(e=lp){let t=0;try{let r=De.readdirSync(this.cacheDir),o=Date.now();for(let n of r){if(!n.endsWith(".json"))continue;let i=Qs.join(this.cacheDir,n);try{let a=De.readFileSync(i,"utf-8"),c=JSON.parse(a);o-new Date(c.cachedAt).getTime()>e&&(De.unlinkSync(i),t++)}catch{try{De.unlinkSync(i),t++}catch{}}}}catch{}return t>0&&T(ft,`Evicted ${t} stale cache entries`),t}clear(){try{let e=De.readdirSync(this.cacheDir);for(let t of e)t.endsWith(".json")&&De.unlinkSync(Qs.join(this.cacheDir,t));T(ft,"Cache cleared")}catch{}}size(){try{return De.readdirSync(this.cacheDir).filter(e=>e.endsWith(".json")).length}catch{return 0}}},Po=null});function Zs(){return{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}}function ko(s,e,t){if(t==="cancelled"||t==="timed_out")return"infrastructure";let r=s.toLowerCase();if(ya.some(o=>o.test(r)))return"auth_gate";if(ba.some(o=>o.test(r)))return"fork_limitation";if(_a.some(o=>o.test(r)))return"infrastructure";if(e){let o=e.toLowerCase();if(ya.some(n=>n.test(o)))return"auth_gate";if(ba.some(n=>n.test(o)))return"fork_limitation";if(_a.some(n=>n.test(o)))return"infrastructure"}return"actionable"}function er(s,e){return s.map(t=>{let r=e?.get(t);return{name:t,category:ko(t,void 0,r),conclusion:r}})}function dp(s){let e=!1,t=!1,r=!1,o=[],n=new Map;for(let i of s)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"&&(r=!0);return{hasFailingChecks:e,hasPendingChecks:t,hasSuccessfulChecks:r,failingCheckNames:o,failingCheckConclusions:n}}function gp(s){let e=s.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"),r=e.some(c=>c.state==="pending"),o=e.some(c=>c.state==="success"),n;t?n="failure":r?n="pending":o||e.length===0?n="success":n=s.state;let i=s.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 mp(s,e,t){let{hasFailingChecks:r,hasPendingChecks:o,hasSuccessfulChecks:n,failingCheckNames:i,failingCheckConclusions:a}=s,{effectiveCombinedState:c,hasStatuses:u,failingStatusNames:l}=e,p=[...i,...l];return r||c==="failure"||c==="error"?{status:"failing",failingCheckNames:p,failingCheckConclusions:a}:o||c==="pending"?{status:"pending",failingCheckNames:[],failingCheckConclusions:new Map}:n||c==="success"?{status:"passing",failingCheckNames:[],failingCheckConclusions:new Map}:Zs()}async function Ao(s,e,t,r){if(!r)return Zs();try{let[o,n]=await Promise.all([s.repos.getCombinedStatusForRef({owner:e,repo:t,ref:r}),s.checks.listForRef({owner:e,repo:t,ref:r}).catch(g=>{let b=ve(g);if(b===429)throw g;if(b===403){let E=S(g).toLowerCase();if(E.includes("rate limit")||E.includes("abuse detection"))throw g}return b===404?T("pr-monitor",`Check runs 404 for ${e}/${t}@${r.slice(0,7)} (no checks configured)`):m("pr-monitor",`Non-404 error fetching check runs for ${e}/${t}@${r.slice(0,7)}: ${b??g}`),null})]),i=o.data,a=n?.data?.check_runs||[],c=new Map;for(let g of a){let b=c.get(g.name);(!b||new Date(g.started_at??0)>new Date(b.started_at??0))&&c.set(g.name,g)}let u=[...c.values()],l=dp(u),p=gp(i);return mp(l,p,u.length)}catch(o){let n=ve(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)`):m("pr-monitor",`Failed to check CI for ${e}/${t}@${r.slice(0,7)}: ${S(o)}`),Zs()}}var ba,ya,_a,Oo=P(()=>{"use strict";se();re();ba=[/vercel/i,/netlify/i,/\bpreview\s*deploy/i,/\bdeploy\s*preview/i,/storybook/i,/chromatic/i,/percy/i,/cloudflare pages/i,/\binternal\b/i],ya=[/authoriz/i,/approval/i,/\bcla\b/i,/license\/cla/i],_a=[/\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 Wt(s){return s.includes("[bot]")||hp.has(s.toLowerCase())}function gs(s){if(!s||s.length>100||s.includes("?"))return!1;let e=s.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(r=>e.includes(r))}var hp,tr=P(()=>{"use strict";hp=new Set(["allcontributors","changeset-bot","claassistant","codecov-commenter","greenkeeper","imgbot","netlify","renovate","snyk-bot","sonarcloud","stale","vercel"])});function Ra(s){if(s.length===0)return"review_required";let e=new Map;for(let r of s){let o=r.user?.login,n=r.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 wa(s){let e;for(let t of s)t.state==="CHANGES_REQUESTED"&&t.submitted_at&&(!e||t.submitted_at>e)&&(e=t.submitted_at);return e}function fp(s,e){let t=e.filter(o=>o.pull_request_review_id===s);if(t.length===0)return!1;let r=new Map;for(let o of e)o.user?.login&&r.set(o.id,o.user.login.toLowerCase());return t.every(o=>{if(!o.in_reply_to_id)return!1;let n=r.get(o.in_reply_to_id),i=o.user?.login?.toLowerCase();return!(n==null||i==null||n!==i||!o.body||o.body.includes("?"))})}function bp(s,e){return e.find(t=>t.pull_request_review_id===s&&t.body?.trim())?.body?.trim()}function Ea(s,e,t,r){let o=[],n=r.toLowerCase();for(let c of s){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&&fp(c.id,t))continue;let p=u||(c.id!=null?bp(c.id,t):void 0)||(c.state==="CHANGES_REQUESTED"?"(requested changes via inline review comments)":"(posted inline review comments)");o.push({author:l,body:p,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"||Wt(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&&gs(a.body)&&(a=void 0),{hasUnrespondedComment:!!a,lastMaintainerComment:a}}var Ta=P(()=>{"use strict";tr()});function va(s){return yp.test(s.toLowerCase())}function Sa(s){if(!s)return{hasIncompleteChecklist:!1};let e=/- \[x\]/gi,t=/^.*- \[ \].*$/gm,r=s.match(e)||[],o=s.match(t)||[],n=r.length;if(n+o.length===0)return{hasIncompleteChecklist:!1};let a=o.filter(u=>!va(u)),c=n+a.length;return{hasIncompleteChecklist:a.length>0,checklistStats:{checked:n,total:c}}}var yp,Go=P(()=>{"use strict";yp=/\(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 Ca(s,e){let t=[];if(e==="changes_requested"&&t.push("changes_requested"),!s)return t;let r=s.toLowerCase();return["screenshot","demo","recording","screen recording","before/after","before and after","gif","video","screencast","show me","can you show"].some(c=>r.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=>r.includes(c))&&t.push("tests_requested"),["documentation","readme","jsdoc","docstring","add docs","update docs","document this"].some(c=>r.includes(c))&&t.push("docs_requested"),["rebase","merge conflict","out of date","behind main","behind master"].some(c=>r.includes(c))&&t.push("rebase_requested"),t}var Pa=P(()=>{"use strict"});function Rp(s){let e=ka[s]?.label;return e?e.replace(/[[\]]/g,"").toLowerCase():s}function sr(s){if(s.status==="needs_addressing"&&s.actionReason){let e=ka[s.actionReason];if(e){let t=e.description(s);if(s.actionReasons&&s.actionReasons.length>1){let r=s.actionReasons.filter(o=>o!==s.actionReason).map(Rp);r.length>0&&(t+=` (also: ${r.join(", ")})`)}return{displayLabel:e.label,displayDescription:t}}}if(s.status==="waiting_on_maintainer"&&s.waitReason){let e=_p[s.waitReason];if(e)return{displayLabel:e.label,displayDescription:e.description(s)}}return m("display-utils",`PR ${s.url} has status "${s.status}" but no matching reason (actionReason=${s.actionReason}, waitReason=${s.waitReason})`),s.status==="needs_addressing"?{displayLabel:"[Needs Addressing]",displayDescription:"Action required"}:{displayLabel:"[Waiting on Maintainer]",displayDescription:"Awaiting maintainer action"}}var ka,_p,$o=P(()=>{"use strict";re();ka={needs_response:{label:"[Needs Response]",description:s=>s.lastMaintainerComment?`@${s.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:s=>{let e=s.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 r=e.filter(n=>n.category==="infrastructure");if(r.length>0)return`${r.length} check${r.length===1?"":"s"} cancelled/timed out (infrastructure)`;let o=s.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:s=>s.checklistStats?`${s.checklistStats.checked}/${s.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:s=>s.missingRequiredFiles?`Missing: ${s.missingRequiredFiles.join(", ")}`:"Required files are missing"}},_p={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:s=>s.hasUnrespondedComment&&s.lastMaintainerComment?`Changes addressed \u2014 waiting for @${s.lastMaintainerComment.author} to re-review`:"Changes addressed \u2014 awaiting re-review"},ci_blocked:{label:"[CI Blocked]",description:s=>{let e=s.classifiedChecks||[];return e.length>0&&e.every(t=>t.category!=="actionable")?`All failing checks are non-actionable (${[...new Set(e.map(r=>r.category))].join(", ")})`:"CI checks are failing but no action is needed from you"}},stale_ci_failure:{label:"[Stale CI Failure]",description:s=>`CI failing for ${s.daysSinceActivity}+ days \u2014 likely pre-existing or non-actionable`}}});function Ot(){return{repos:new Map,monthlyCounts:{},monthlyOpenedCounts:{},dailyActivityCounts:{}}}function Ep(s){if(typeof s!="object"||s===null)return!1;let e=s;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 Aa(s,e,t,r,o,n){if(!e)return Ot();let i=it(),a=n?`:stars${n.minStars}`:"",c=`pr-counts:v3:${r}:${e}${a}`,u=i.getIfFresh(c,wp);if(u&&Ep(u))return T(ce,`Using cached ${r} PR counts for @${e}`),{repos:new Map(u.reposEntries),monthlyCounts:u.monthlyCounts,monthlyOpenedCounts:u.monthlyOpenedCounts,dailyActivityCounts:u.dailyActivityCounts};T(ce,`Fetching ${r} PR counts for @${e}...`);let l=new Map,p={},g={},b={},E=1,v=0,A;for(;;){let{data:y}=await s.search.issuesAndPullRequests({q:`is:pr ${t} author:${e} -user:${e}`,sort:"updated",order:"desc",per_page:100,page:E});A=y.total_count;for(let $ of y.items){let F=Tt($.html_url);if(!F){m(ce,`Skipping ${r} PR with unparseable URL: ${$.html_url}`);continue}let{owner:q}=F,O=`${q}/${F.repo}`;if(He(q,e)||n&&et(n.knownStarCounts.get(O),n.minStars))continue;let w=o(l,O,$);if(w){let k=w.slice(0,7);p[k]=(p[k]||0)+1;let N=w.slice(0,10);N.length===10&&(b[N]=(b[N]||0)+1)}if($.created_at){let k=$.created_at.slice(0,7);g[k]=(g[k]||0)+1;let N=$.created_at.slice(0,10);N.length===10&&(b[N]=(b[N]||0)+1)}}if(v+=y.items.length,v>=y.total_count||v>=1e3||y.items.length===0||E>=At)break;E++}return v<A&&E>=At&&m(ce,`Pagination capped at ${At} pages: fetched ${v} of ${A} ${r} PRs. Stats may be incomplete for prolific contributors.`),T(ce,`Found ${v} ${r} PRs across ${l.size} repos`),i.set(c,"",{reposEntries:Array.from(l.entries()),monthlyCounts:p,monthlyOpenedCounts:g,dailyActivityCounts:b}),{repos:l,monthlyCounts:p,monthlyOpenedCounts:g,dailyActivityCounts:b}}function Oa(s,e,t){return Aa(s,e,"is:merged","merged",(r,o,n)=>{n.pull_request?.merged_at||m(ce,`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=r.get(o);return a?(a.count+=1,i&&i>a.lastMergedAt&&(a.lastMergedAt=i)):r.set(o,{count:1,lastMergedAt:i}),i},t)}function Ga(s,e,t){return Aa(s,e,"is:closed is:unmerged","closed",(r,o,n)=>(r.set(o,(r.get(o)||0)+1),n.closed_at||""),t)}async function $a(s,e,t,r,o,n){if(!e.githubUsername)return m(ce,`Skipping recently ${r} 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(ce,`Fetching recently ${r} PRs for @${e.githubUsername} (since ${a})...`);let{data:c}=await s.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 p=me(l.html_url);if(!p){m(ce,`Could not parse GitHub URL from API response: ${l.html_url}`);continue}let g=`${p.owner}/${p.repo}`;He(p.owner,e.githubUsername)||u.push(n(l,{owner:p.owner,repo:g,number:p.number}))}return T(ce,`Found ${u.length} recently ${r} PRs`),u}async function Da(s,e,t=7){return $a(s,e,"is:pr is:closed is:unmerged author:{username} closed:>={since}","closed",t,(r,{repo:o,number:n})=>({url:r.html_url,repo:o,number:n,title:r.title,closedAt:r.closed_at||""}))}async function Ia(s,e,t=7){return $a(s,e,"is:pr is:merged author:{username} merged:>={since}","merged",t,(r,{repo:o,number:n})=>{let i=r.pull_request?.merged_at;return i||m(ce,`merged_at missing for merged PR ${r.html_url}${r.closed_at?", falling back to closed_at":", no date available"}`),{url:r.html_url,repo:o,number:n,title:r.title,mergedAt:i||r.closed_at||""}})}async function Fa(s,e,t){if(!e.githubUsername)return m(ce,"Skipping merged PRs fetch: no githubUsername configured."),[];let r=t?` merged:>${t}`:"",o=`is:pr is:merged author:${e.githubUsername} -user:${e.githubUsername}${r}`;T(ce,`Fetching merged PRs${t?` since ${t}`:" (all time)"}...`);let n=[],i=1,a=0;for(;;){let{data:c}=await s.search.issuesAndPullRequests({q:o,sort:"updated",order:"desc",per_page:100,page:i});for(let u of c.items){let l=me(u.html_url);if(!l){m(ce,`Skipping merged PR with unparseable URL: ${u.html_url}`);continue}if(He(l.owner,e.githubUsername))continue;let p=u.pull_request?.merged_at||u.closed_at||"";if(!p){m(ce,`Skipping merged PR with no merge date: ${u.html_url}`);continue}n.push({url:u.html_url,title:u.title,mergedAt:p})}if(a+=c.items.length,a>=c.total_count||a>=1e3||c.items.length===0||i>=At)break;i++}return T(ce,`Fetched ${n.length} merged PRs${t?" (incremental)":" (initial)"}`),n}async function xa(s,e,t){if(!e.githubUsername)return m(ce,"Skipping closed PRs fetch: no githubUsername configured."),[];let r=t?` closed:>${t}`:"",o=`is:pr is:closed is:unmerged author:${e.githubUsername} -user:${e.githubUsername}${r}`;T(ce,`Fetching closed PRs${t?` since ${t}`:" (all time)"}...`);let n=[],i=1,a=0,c;for(;;){let{data:u}=await s.search.issuesAndPullRequests({q:o,sort:"updated",order:"desc",per_page:100,page:i});c=u.total_count;for(let l of u.items){let p=me(l.html_url);if(!p){m(ce,`Skipping closed PR with unparseable URL: ${l.html_url}`);continue}if(He(p.owner,e.githubUsername))continue;let g=l.closed_at||"";if(!g){m(ce,`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>=At)break;i++}return a<c&&i>=At&&m(ce,`Pagination capped at ${At} pages: fetched ${a} of ${c} closed PRs. Oldest PRs may be missing.`),T(ce,`Fetched ${n.length} closed PRs${t?" (incremental)":" (initial)"}`),n}var ce,wp,At,rr=P(()=>{"use strict";Se();Le();re();Vt();ce="github-stats",wp=1440*60*1e3,At=3});function Tp(s,e){return s===!1||e==="dirty"}var or,vp,Gt,Ua=P(()=>{"use strict";Bt();Nt();Se();So();Co();se();ps();re();Vt();Oo();Ta();Go();Pa();$o();rr();$o();Oo();Go();So();or="pr-monitor",vp=gt,Gt=class{octokit;stateManager;constructor(e){this.octokit=ye(e),this.stateManager=U()}async fetchUserOpenPRs(){let e=this.stateManager.getState().config;if(!e.githubUsername)throw new tt("No GitHub username configured. Run setup first.");T("pr-monitor",`Fetching open PRs for @${e.githubUsername}...`);let t=[],r=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(;r<a;){r++;let p=await this.octokit.search.issuesAndPullRequests({q:`is:pr is:open author:${e.githubUsername}`,sort:"updated",order:"desc",per_page:o,page:r});t.push(...p.data.items)}let c=[],u=[],l=t.filter(p=>{if(!p.pull_request)return!1;let g=Tt(p.html_url);return g?!He(g.owner,e.githubUsername):(m("pr-monitor",`Skipping PR with unparseable URL: ${p.html_url}`),!1)});return T("pr-monitor",`Filtered to ${l.length} PRs after excluding own repos`),await Yr("pr-monitor",`Fetch details for ${l.length} PRs`,async()=>{await Ks(l,async p=>{try{T("pr-monitor",`Fetching details for ${p.html_url}`);let g=await this.fetchPRDetails(p.html_url);g&&c.push(g)}catch(g){let b=S(g);m("pr-monitor",`Error fetching ${p.html_url}: ${b}`),u.push({prUrl:p.html_url,error:b})}},vp)}),c.sort((p,g)=>p.status===g.status?0:p.status==="needs_addressing"?-1:1),{prs:c,failures:u}}async fetchPRDetails(e){let t=me(e);if(!t||t.type!=="pull")throw new te(`Invalid PR URL format: ${e}`);let{owner:r,repo:o,number:n}=t,i=this.stateManager.getState().config,[a,c,u,l]=await Promise.all([this.octokit.pulls.get({owner:r,repo:o,pull_number:n}),Be(I=>this.octokit.issues.listComments({owner:r,repo:o,issue_number:n,per_page:100,page:I})),this.octokit.pulls.listReviews({owner:r,repo:o,pull_number:n}),Be(I=>this.octokit.pulls.listReviewComments({owner:r,repo:o,pull_number:n,per_page:100,page:I})).catch(I=>{let H=ve(I);if(H===429)throw I;if(H===403){let Z=S(I).toLowerCase();if(Z.includes("rate limit")||Z.includes("abuse detection"))throw I;return m("pr-monitor",`403 fetching review comments for ${r}/${o}#${n}: ${Z}`),[]}return H===404?T("pr-monitor",`Review comments 404 for ${r}/${o}#${n} (likely no inline comments)`):m("pr-monitor",`Failed to fetch review comments for ${r}/${o}#${n} (status ${H??"unknown"}): self-reply detection will be skipped`),[]})]),p=a.data,g=u.data,b=Ra(g),E=Tp(p.mergeable,p.mergeable_state),{hasUnrespondedComment:v,lastMaintainerComment:A}=Ea(c,g,l,i.githubUsername),y=Ao(this.octokit,r,o,p.head.sha),F=v||b==="changes_requested"?this.octokit.repos.getCommit({owner:r,repo:o,ref:p.head.sha}).then(I=>({date:I.data.commit.author?.date,author:I.data.author?.login})).catch(I=>{let H=ve(I);if(H===429)throw I;if(H===403){let Z=S(I).toLowerCase();if(Z.includes("rate limit")||Z.includes("abuse detection"))throw I;m("pr-monitor",`403 fetching commit date for ${r}/${o}@${p.head.sha.slice(0,7)}: ${S(I)}`);return}m("pr-monitor",`Failed to fetch commit date for ${r}/${o}@${p.head.sha.slice(0,7)}: ${S(I)}`)}):Promise.resolve(void 0),[{status:q,failingCheckNames:O,failingCheckConclusions:w},k]=await Promise.all([y,F]),N=k?.date,M=k?.author,{hasIncompleteChecklist:oe,checklistStats:Fe}=Sa(p.body||""),J=Ca(A?.body,b),ne=Me(new Date(p.updated_at),new Date),Pe=wa(g),xe=er(O,w),Je=q==="failing"&&xe.some(I=>I.category==="actionable"),{status:dt,actionReason:Re,waitReason:Ae,stalenessTier:ke,actionReasons:L}=vo({ciStatus:q,hasMergeConflict:E,hasUnrespondedComment:v,hasIncompleteChecklist:oe,reviewDecision:b,daysSinceActivity:ne,dormantThreshold:i.dormantThresholdDays,approachingThreshold:i.approachingDormantDays,latestCommitDate:N,latestCommitAuthor:M,contributorUsername:i.githubUsername,lastMaintainerCommentDate:A?.createdAt,latestChangesRequestedDate:Pe,hasActionableCIFailure:Je});return this.buildFetchedPR({id:p.id,url:e,repo:`${r}/${o}`,number:n,title:p.title,status:dt,actionReason:Re,waitReason:Ae,stalenessTier:ke,actionReasons:L,createdAt:p.created_at,updatedAt:p.updated_at,daysSinceActivity:ne,ciStatus:q,failingCheckNames:O,classifiedChecks:xe,hasMergeConflict:E,reviewDecision:b,hasUnrespondedComment:v,lastMaintainerComment:A,latestCommitDate:N,hasIncompleteChecklist:oe,checklistStats:Fe,maintainerActionHints:J})}buildFetchedPR(e){let t={...e,displayLabel:"",displayDescription:""},{displayLabel:r,displayDescription:o}=sr(t);return t.displayLabel=r,t.displayDescription=o,t}async fetchUserMergedPRCounts(e){let t=this.stateManager.getState().config;return Oa(this.octokit,t.githubUsername,e)}async fetchUserClosedPRCounts(e){let t=this.stateManager.getState().config;return Ga(this.octokit,t.githubUsername,e)}async fetchRepoMetadata(e){if(e.length===0)return new Map;T(or,`Fetching repo metadata for ${e.length} repos...`);let t=new Map,r=it(),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 p=l.split("/");if(p.length!==2||!p[0]||!p[1])throw new te(`Malformed repo identifier: "${l}"`);let[g,b]=p,E=`/repos/${g}/${b}`,v=await ds(r,E,y=>this.octokit.repos.get({owner:g,repo:b,headers:y})),A={stars:v.stargazers_count,language:v.language??null};return{repo:l,metadata:A}})),u=0;for(let l=0;l<c.length;l++){let p=c[l];p.status==="fulfilled"?t.set(p.value.repo,p.value.metadata):(u++,m(or,`Failed to fetch metadata for ${a[l]}: ${S(p.reason)}`))}if(u===a.length&&a.length>0){let l=o.length-i-n;l>0&&m(or,`Entire chunk failed, aborting remaining ${l} repos`);break}}return T(or,`Fetched repo metadata for ${t.size}/${e.length} repos`),t}async fetchRecentlyClosedPRs(e=7){let t=this.stateManager.getState().config;return Da(this.octokit,t,e)}async fetchRecentlyMergedPRs(e=7){let t=this.stateManager.getState().config;return Ia(this.octokit,t,e)}generateDigest(e,t=[],r=[]){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:r,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 Do(s){if(!s.labels||!Array.isArray(s.labels)||s.labels.length===0)return!1;let t=s.labels.map(r=>(typeof r=="string"?r:r.name||"").toLowerCase()).filter(r=>r.length>0);return t.length===0?!1:t.every(r=>Ma.has(r))}function Cp(s){return!s.labels||!Array.isArray(s.labels)?!1:s.labels.map(r=>(typeof r=="string"?r:r.name||"").toLowerCase()).filter(r=>Sp.has(r)).length>=5}function Pp(s){return s?/^.+\s+(question|fact|point|item|task|entry|post|challenge|exercise|example|problem|tip|recipe|snippet)\s+#?\d+$/i.test(s):!1}function La(s){let e=new Set,t=new Map;for(let r of s){let o=r.repository_url.split("/").slice(-2).join("/");if(Cp(r)){e.add(o);continue}r.title&&Pp(r.title)&&t.set(o,(t.get(o)||0)+1)}for(let[r,o]of t)o>=3&&e.add(r);return e}function Io(s,e){let t=new Map,r=[];for(let o of s){let n=t.get(o.issue.repo)||0;n<e&&(r.push(o),t.set(o.issue.repo,n+1))}return r}var Ma,Sp,nr=P(()=>{"use strict";Ma=new Set(["documentation","docs","typo","spelling"]);Sp=new Set(["good first issue","hacktoberfest","easy","up-for-grabs","first-timers-only","beginner-friendly","beginner","starter","newbie","low-hanging-fruit","community"])});function ja(s,e){let t=0;return s>=5e3?t+=8:s>=500?t+=5:s>=50&&(t+=3),e>=500?t+=4:e>=50&&(t+=2),t}function Na(s){let e=50;s.repoScore!==null&&(e+=s.repoScore*2),e+=s.repoQualityBonus??0,s.mergedPRCount>0&&(e+=15),s.clearRequirements&&(e+=15);let t=new Date(s.issueUpdatedAt),r=Me(t);return r<=14?e+=15:r<=30&&(e+=Math.round(15*(1-(r-14)/16))),s.hasContributionGuidelines&&(e+=10),s.orgHasMergedPRs&&(e+=5),s.matchesPreferredCategory&&(e+=5),s.hasExistingPR&&(e-=30),s.isClaimed&&(e-=20),s.closedWithoutMergeCount>0&&s.mergedPRCount===0&&(e-=15),Math.max(0,Math.min(100,e))}var Ha=P(()=>{"use strict";Se()});function qa(s,e){if(e.length===0)return!1;let t=s.split("/")[0]?.toLowerCase();if(!t)return!1;for(let r of e){let o=Ap[r];if(o&&o.some(n=>n.toLowerCase()===t))return!0}return!1}function Ba(s){let e=new Set;for(let t of s){let r=kp[t];if(r)for(let o of r)e.add(o)}return[...e]}var kp,Ap,Fo=P(()=>{"use strict";kp={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"]},Ap={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"]}});async function Va(s,e,t,r){try{let{data:o}=await s.search.issuesAndPullRequests({q:`repo:${e}/${t} is:pr ${r}`,per_page:5}),i=(await Be(a=>s.issues.listEventsForTimeline({owner:e,repo:t,issue_number:r,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=S(o);return m(xo,`Failed to check for existing PRs on ${e}/${t}#${r}: ${n}. Assuming no existing PR.`),{passed:!0,inconclusive:!0,reason:n}}}async function Wa(s,e,t){try{let{data:r}=await s.search.issuesAndPullRequests({q:`repo:${e}/${t} is:pr is:merged author:@me`,per_page:1});return r.total_count}catch(r){let o=S(r);return m(xo,`Could not check merged PRs in ${e}/${t}: ${o}. Defaulting to 0.`),0}}async function za(s,e,t,r,o){if(o===0)return{passed:!0};try{let i=(await s.paginate(s.issues.listComments,{owner:e,repo:t,issue_number:r,per_page:100},a=>a.data)).slice(-100);for(let a of i){let c=(a.body||"").toLowerCase();if(Op.some(u=>c.includes(u)))return{passed:!1}}return{passed:!0}}catch(n){let i=S(n);return m(xo,`Failed to check claim status on ${e}/${t}#${r}: ${i}. Assuming not claimed.`),{passed:!0,inconclusive:!0,reason:i}}}function Ja(s){if(!s||s.length<50)return!1;let e=/\d\.|[-*]\s/.test(s),t=/```/.test(s),r=/expect|should|must|want/i.test(s);return[e,t,r,s.length>200].filter(Boolean).length>=2}var xo,Op,Ka=P(()=>{"use strict";ps();se();re();xo="issue-eligibility",Op=["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"]});function Ya(){let s=Date.now();for(let[e,t]of at.entries())s-t.fetchedAt>Xa&&at.delete(e);if(at.size>Qa){let t=Array.from(at.entries()).sort((r,o)=>r[1].fetchedAt-o[1].fetchedAt).slice(0,at.size-Qa);for(let[r]of t)at.delete(r)}}async function Za(s,e,t){let r=it(),o=`health:${e}/${t}`;try{return await Xs(r,o,Gp,async()=>{let n=`/repos/${e}/${t}`,i=await ds(r,n,g=>s.repos.get({owner:e,repo:t,headers:g})),{data:a}=await s.repos.listCommits({owner:e,repo:t,per_page:1}),u=a[0]?.commit?.author?.date||i.pushed_at,l=Me(new Date(u)),p="unknown";try{let{data:g}=await s.actions.listRepoWorkflows({owner:e,repo:t,per_page:1});g.total_count>0&&(p="passing")}catch(g){let b=S(g);m(Uo,`Failed to check CI status for ${e}/${t}: ${b}. Defaulting to unknown.`)}return{repo:`${e}/${t}`,lastCommitAt:u,daysSinceLastCommit:l,openIssuesCount:i.open_issues_count,avgIssueResponseDays:0,ciStatus:p,isActive:l<30,stargazersCount:i.stargazers_count,forksCount:i.forks_count}})}catch(n){let i=S(n);return m(Uo,`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 function ec(s,e,t){let r=`${e}/${t}`,o=at.get(r);if(o&&Date.now()-o.fetchedAt<Xa)return o.guidelines;let n=["CONTRIBUTING.md",".github/CONTRIBUTING.md","docs/CONTRIBUTING.md","contributing.md"],i=await Promise.allSettled(n.map(a=>s.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=$p(c.value);return at.set(r,{guidelines:u,fetchedAt:Date.now()}),Ya(),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(Uo,`Unexpected error fetching ${n[a]} from ${e}/${t}: ${u}`)}}at.set(r,{guidelines:void 0,fetchedAt:Date.now()}),Ya()}function $p(s){let e={rawContent:s},t=s.toLowerCase();if(t.includes("branch")){let r=s.match(/branch[^\n]*(?:named?|format|convention)[^\n]*[`"]([^`"]+)[`"]/i);r&&(e.branchNamingConvention=r[1])}if(t.includes("conventional commit"))e.commitMessageFormat="conventional commits";else if(t.includes("commit message")){let r=s.match(/commit message[^\n]*[`"]([^`"]+)[`"]/i);r&&(e.commitMessageFormat=r[1])}return t.includes("jest")?e.testFramework="Jest":t.includes("rspec")?e.testFramework="RSpec":t.includes("pytest")?e.testFramework="pytest":t.includes("mocha")&&(e.testFramework="Mocha"),t.includes("eslint")?e.linter="ESLint":t.includes("rubocop")?e.linter="RuboCop":t.includes("prettier")&&(e.formatter="Prettier"),(t.includes("cla")||t.includes("contributor license agreement"))&&(e.claRequired=!0),e}var Uo,at,Xa,Gp,Qa,tc=P(()=>{"use strict";Se();se();re();Vt();Uo="repo-health",at=new Map,Xa=3600*1e3,Gp=14400*1e3,Qa=100});var sc,Dp,ir,rc=P(()=>{"use strict";Se();se();re();Ha();Fo();Ka();tc();sc="issue-vetting",Dp=gt,ir=class{octokit;stateManager;constructor(e,t){this.octokit=e,this.stateManager=t}async vetIssue(e){let t=me(e);if(!t||t.type!=="issues")throw new te(`Invalid issue URL: ${e}`);let{owner:r,repo:o,number:n}=t,i=`${r}/${o}`,{data:a}=await this.octokit.issues.get({owner:r,repo:o,issue_number:n}),[c,u,l,p,g]=await Promise.all([Va(this.octokit,r,o,n),za(this.octokit,r,o,n,a.comments),Za(this.octokit,r,o),ec(this.octokit,r,o),Wa(this.octokit,r,o)]),b=c.passed,E=u.passed,v=Ja(a.body||""),A=l.checkFailed?!0:l.isActive,y={passedAllChecks:b&&E&&A&&v,checks:{noExistingPR:b,notClaimed:E,projectActive:A,clearRequirements:v,contributionGuidelinesFound:!!p},contributionGuidelines:p,notes:[]};b||y.notes.push("Existing PR found for this issue"),E||y.notes.push("Issue appears to be claimed by someone"),c.inconclusive&&y.notes.push(`Could not verify absence of existing PRs: ${c.reason||"API error"}`),u.inconclusive&&y.notes.push(`Could not verify claim status: ${u.reason||"API error"}`),l.checkFailed?y.notes.push(`Could not verify project activity: ${l.failureReason||"API error"}`):l.isActive||y.notes.push("Project may be inactive"),v||y.notes.push("Issue requirements are unclear"),p||y.notes.push("No CONTRIBUTING.md found");let $={id:a.id,url:e,repo:i,number:n,title:a.title,status:"candidate",labels:a.labels.map(ke=>typeof ke=="string"?ke:ke.name||""),createdAt:a.created_at,updatedAt:a.updated_at,vetted:!0,vettingResult:y},F=[],q=[];b||F.push("Has existing PR"),E||F.push("Already claimed"),!l.isActive&&!l.checkFailed&&F.push("Inactive project"),v||F.push("Unclear requirements"),b&&q.push("No existing PR"),E&&q.push("Not claimed"),l.isActive&&!l.checkFailed&&q.push("Active project"),v&&q.push("Clear requirements"),p&&q.push("Has contribution guidelines");let O=this.stateManager.getState().config,w=this.stateManager.getRepoScore(i),k=w&&w.mergedPRCount>0?w.mergedPRCount:g;k>0?q.push(`Trusted project (${k} PR${k>1?"s":""} merged)`):O.trustedProjects.includes(i)&&q.push("Trusted project (previous PR merged)"),w&&(w.closedWithoutMergeCount>0&&k===0?F.push("User has rejected PR(s) in this repo with no successful merges"):w.closedWithoutMergeCount>0&&k>0&&y.notes.push(`Mixed history: ${k} merged, ${w.closedWithoutMergeCount} closed without merge`));let N=i.split("/")[0],M=!1;N&&i.includes("/")&&(M=Object.values(this.stateManager.getState().repoScores).some(ke=>ke.repo&&ke.mergedPRCount>0&&ke.repo.startsWith(N+"/")&&ke.repo!==i)),M&&q.push(`Org affinity (merged PRs in other ${N} repos)`);let oe=O.projectCategories??[],Fe=qa(i,oe);Fe&&q.push("Matches preferred project category");let J;y.passedAllChecks?J="approve":F.length>2?J="skip":J="needs_review";let ne=l.checkFailed||c.inconclusive||u.inconclusive;J==="approve"&&ne&&(J="needs_review",y.notes.push("Recommendation downgraded: one or more checks were inconclusive"));let Pe=ja(l.stargazersCount??0,l.forksCount??0);l.checkFailed&&Pe===0&&y.notes.push("Repo quality bonus unavailable: could not fetch star/fork counts due to API error");let xe=this.getRepoScore(i),Je=Na({repoScore:xe,hasExistingPR:!b,isClaimed:!E,clearRequirements:v,hasContributionGuidelines:!!p,issueUpdatedAt:a.updated_at,closedWithoutMergeCount:w?.closedWithoutMergeCount??0,mergedPRCount:k,orgHasMergedPRs:M,repoQualityBonus:Pe,matchesPreferredCategory:Fe}),dt=this.stateManager.getStarredRepos(),Re=O.preferredOrgs??[],Ae="normal";return k>0?Ae="merged_pr":Re.some(ke=>ke.toLowerCase()===N?.toLowerCase())?Ae="preferred_org":dt.includes(i)&&(Ae="starred"),{issue:$,vettingResult:y,projectHealth:l,recommendation:J,reasonsToSkip:F,reasonsToApprove:q,viabilityScore:Je,searchPriority:Ae}}async vetIssuesParallel(e,t,r){let o=[],n=new Map,i=0,a=0,c=0;for(let l of e){if(o.length>=t)break;c++;let p=this.vetIssue(l).then(g=>{o.length<t&&(r&&(g.searchPriority=r),o.push(g))}).catch(g=>{i++,st(g)&&a++,m(sc,`Error vetting issue ${l}:`,S(g))}).finally(()=>n.delete(l));n.set(l,p),n.size>=Dp&&await Promise.race(n.values())}await Promise.allSettled(n.values());let u=i===c&&c>0;return u&&m(sc,`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}}getRepoScore(e){return this.stateManager.getState().repoScores?.[e]?.score??null}}});function Mo(s){return s.length===0?"":s.length===1?`label:"${s[0]}"`:`(${s.map(e=>`label:"${e}"`).join(" OR ")})`}function oc(s,e){let t=new Set;for(let r of s)for(let o of es[r]??[])t.add(o);for(let r of e)t.add(r);return[...t]}function nc(s){let e=[],t=Math.max(...s.map(r=>r.length),0);for(let r=0;r<t;r++)for(let o of s)r<o.length&&e.push(o[r]);return e}function Ip(s,e){let t=[];for(let r=0;r<s.length;r+=e)t.push(s.slice(r,r+e));return t}async function hs(s,e){let t=`search:${e.q}:${e.sort}:${e.order}:${e.per_page}`;return Xs(it(),t,Fp,async()=>{let{data:r}=await s.search.issuesAndPullRequests(e);return r})}async function Lo(s,e,t,r,o,n,i){let a=La(e);if(a.size>0){let E=e.filter(v=>a.has(v.repository_url.split("/").slice(-2).join("/"))).length;T(ms,`[SPAM_FILTER] Filtered ${E} issues from ${a.size} label-farming repos: ${[...a].join(", ")}`)}let c=t(e).filter(E=>{let v=E.repository_url.split("/").slice(-2).join("/");return a.has(v)?!1:r.every(A=>!A.has(v))}).slice(0,o*2);if(c.length===0)return T(ms,`[${i}] All ${e.length} items filtered before vetting`),{candidates:[],allVetFailed:!1,rateLimitHit:!1};let{candidates:u,allFailed:l,rateLimitHit:p}=await s.vetIssuesParallel(c.map(E=>E.html_url),o,"normal"),g=u.filter(E=>E.projectHealth.checkFailed?!0:(E.projectHealth.stargazersCount??0)>=n),b=u.length-g.length;return b>0&&T(ms,`[STAR_FILTER] Filtered ${b} ${i} candidates below ${n} stars`),{candidates:g,allVetFailed:l,rateLimitHit:p}}async function ar(s,e,t,r,o,n,i){let a=[],u=Ip(t,5),l=0,p=0;for(let E of u){if(a.length>=o)break;try{let v=E.map($=>`repo:${$}`).join(" OR "),A=`${r} (${v})`,y=await hs(s,{q:A,sort:"created",order:"desc",per_page:Math.min(30,(o-a.length)*3)});if(y.items.length>0){let $=i(y.items),F=o-a.length,{candidates:q}=await e.vetIssuesParallel($.slice(0,F*2).map(O=>O.html_url),F,n);a.push(...q)}}catch(v){l++,st(v)&&p++;let A=E.join(", ");m(ms,`Error searching issues in batch [${A}]:`,S(v))}}let g=l===u.length&&u.length>0,b=p>0;return g&&m(ms,`All ${u.length} batch(es) failed for ${n} phase. This may indicate a systemic issue (rate limit, auth, network).`),{candidates:a,allBatchesFailed:g,rateLimitHit:b}}var ms,Fp,ic=P(()=>{"use strict";Le();se();re();Vt();nr();ms="search-phases";Fp=900*1e3});var ac,cc,Q,$t,uc=P(()=>{"use strict";ac=V(require("fs"),1),cc=V(require("path"),1);Bt();Nt();Se();Le();se();re();nr();rc();Fo();ic();Q="issue-discovery",$t=class{octokit;stateManager;githubToken;vetter;rateLimitWarning=null;constructor(e){this.githubToken=e,this.octokit=ye(e),this.stateManager=U(),this.vetter=new ir(this.octokit,this.stateManager)}async fetchStarredRepos(){ge(Q,"Fetching starred repositories...");let e=[];try{let t=this.octokit.paginate.iterator(this.octokit.activity.listReposStarredByAuthenticatedUser,{per_page:100}),r=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(r++,r>=5){ge(Q,"Reached pagination limit for starred repos (500)");break}}return ge(Q,`Fetched ${e.length} starred repositories`),this.stateManager.setStarredRepos(e),e}catch(t){let r=this.stateManager.getStarredRepos(),o=S(t);return m(Q,"Error fetching starred repos:",o),r.length===0?m(Q,`Failed to fetch starred repositories from GitHub API. No cached repos available. Error: ${o}
46
- Tip: Ensure your GITHUB_TOKEN has the 'read:user' scope and try again.`):m(Q,`Failed to fetch starred repositories from GitHub API. Using ${r.length} cached repos instead. Error: ${o}`),r}}async getStarredReposWithRefresh(){return this.stateManager.isStarredReposStale()?this.fetchStarredRepos():this.stateManager.getStarredRepos()}async searchIssues(e={}){let t=this.stateManager.getState().config,r=e.languages||t.languages,o=t.scope,n=e.labels||(o?oc(o,t.labels):t.labels),i=e.maxResults||10,a=t.minStars??50,c=[],u=null,l=null,p=!1;this.rateLimitWarning=null;try{let L=await To(this.githubToken);if(L.remaining<5){let I=new Date(L.resetAt).toLocaleTimeString("en-US",{hour12:!1});this.rateLimitWarning=`GitHub search API quota low (${L.remaining}/${L.limit} remaining, resets at ${I}). Search may be slow.`,m(Q,this.rateLimitWarning)}}catch(L){if(ve(L)===401)throw L;m(Q,"Could not check rate limit:",S(L))}let g=this.stateManager.getReposWithMergedPRs(),b=new Set(g),E=this.stateManager.getReposWithOpenPRs(),v=await this.getStarredReposWithRefresh(),A=new Set(v),y=new Set(this.stateManager.getLowScoringRepos(3)),$=new Set(this.stateManager.getState().activeIssues.map(L=>L.url)),F=new Set(t.excludeRepos),q=t.maxIssueAgeDays||90,O=new Date,w=Mo(n),N=r.some(L=>L.toLowerCase()==="any")?"":r.map(L=>`language:${L}`).join(" "),M=`is:issue is:open ${N} no:assignee`.replace(/ +/g," ").trim(),oe=`is:issue is:open ${w} ${N} no:assignee`.replace(/ +/g," ").trim(),Fe=t.includeDocIssues??!0,J=new Set(t.aiPolicyBlocklist??Rt.aiPolicyBlocklist??[]);J.size>0&&T(Q,`[AI_POLICY_FILTER] Filtering issues from ${J.size} blocklisted repo(s): ${[...J].join(", ")}`);let ne=L=>L.filter(I=>{if($.has(I.html_url))return!1;let H=I.repository_url.split("/").slice(-2).join("/");if(F.has(H)||J.has(H)||y.has(H))return!1;let Z=new Date(I.updated_at);return!(Me(Z,O)>q||!Fe&&Do(I))}),Pe=[...g,...E.filter(L=>!b.has(L))].slice(0,10),xe=new Set(Pe);if(Pe.length>0){let L=Math.min(g.length,Pe.length),I=Pe.length-L;ge(Q,`Phase 0: Searching issues in ${Pe.length} repos (${L} merged-PR, ${I} open-PR, no label filter)...`);let H=Pe.slice(0,L);if(H.length>0){let ae=i-c.length;if(ae>0){let{candidates:ee,allBatchesFailed:K,rateLimitHit:de}=await ar(this.octokit,this.vetter,H,M,ae,"merged_pr",ne);c.push(...ee),K&&(u="All merged-PR repo batches failed"),de&&(p=!0),ge(Q,`Found ${ee.length} candidates from merged-PR repos`)}}let Z=Pe.slice(L);if(Z.length>0&&c.length<i){let ae=i-c.length;if(ae>0){let{candidates:ee,allBatchesFailed:K,rateLimitHit:de}=await ar(this.octokit,this.vetter,Z,M,ae,"starred",ne);if(c.push(...ee),K){let pe="All open-PR repo batches failed";u=u?`${u}; ${pe}`:pe}de&&(p=!0),ge(Q,`Found ${ee.length} candidates from open-PR repos`)}}}let Je=null,dt=t.preferredOrgs??[];if(c.length<i&&dt.length>0){let L=new Set(Pe.map(H=>H.split("/")[0]?.toLowerCase())),I=dt.filter(H=>!L.has(H.toLowerCase())).slice(0,5);if(I.length>0){ge(Q,`Phase 0.5: Searching issues in ${I.length} preferred org(s)...`);let H=i-c.length,Z=I.map(ee=>`org:${ee}`).join(" OR "),ae=`${oe} (${Z})`;try{let ee=await hs(this.octokit,{q:ae,sort:"created",order:"desc",per_page:H*3});if(ee.items.length>0){let K=ne(ee.items).filter(Oe=>{let _t=Oe.repository_url.split("/").slice(-2).join("/");return!xe.has(_t)}),{candidates:de,allFailed:pe,rateLimitHit:fe}=await this.vetter.vetIssuesParallel(K.slice(0,H*2).map(Oe=>Oe.html_url),H,"preferred_org");c.push(...de),pe&&(Je="All preferred org issue vetting failed"),fe&&(p=!0),ge(Q,`Found ${de.length} candidates from preferred orgs`)}}catch(ee){let K=S(ee);Je=K,st(ee)&&(p=!0),m(Q,`Error searching preferred orgs: ${K}`)}}}if(c.length<i&&v.length>0){let L=v.filter(I=>!xe.has(I));if(L.length>0){ge(Q,`Phase 1: Searching issues in ${L.length} starred repos...`);let I=i-c.length;if(I>0){let{candidates:H,allBatchesFailed:Z,rateLimitHit:ae}=await ar(this.octokit,this.vetter,L.slice(0,10),oe,I,"starred",ne);c.push(...H),Z&&(l="All starred repo batches failed"),ae&&(p=!0),ge(Q,`Found ${H.length} candidates from starred repos`)}}}let Re=null;if(c.length<i){ge(Q,"Phase 2: General issue search...");let L=i-c.length,I=new Set(c.map(K=>K.issue.repo)),H=[];if(o&&o.length>1){for(let pe of o){let fe=es[pe]??[];if(fe.length===0){m(Q,`Scope "${pe}" has no labels, skipping tier`);continue}H.push({tier:pe,tierLabels:fe})}let K=new Set(o.flatMap(pe=>es[pe]??[])),de=t.labels.filter(pe=>!K.has(pe));de.length>0&&H.push({tier:"custom",tierLabels:de})}else H.push({tier:"general",tierLabels:n});let Z=Math.ceil(L/H.length),ae=[];for(let{tier:K,tierLabels:de}of H){let pe=`is:issue is:open ${Mo(de)} ${N} no:assignee`.replace(/ +/g," ").trim();try{let fe=await hs(this.octokit,{q:pe,sort:"created",order:"desc",per_page:Z*3});ge(Q,`Phase 2 [${K}]: ${fe.total_count} total, processing top ${fe.items.length}...`);let{candidates:Oe,allVetFailed:_t,rateLimitHit:Sr}=await Lo(this.vetter,fe.items,ne,[xe,A,I],Z,a,`Phase 2 [${K}]`);ae.push(Oe);for(let Ps of Oe)I.add(Ps.issue.repo);_t&&(Re=(Re?Re+"; ":"")+`${K}: all vetting failed`),Sr&&(p=!0),ge(Q,`Found ${Oe.length} candidates from ${K} tier`)}catch(fe){if(ve(fe)===401)throw fe;let Oe=S(fe);Re=(Re?Re+"; ":"")+`${K}: ${Oe}`,st(fe)&&(p=!0),m(Q,`Error in ${K} tier search: ${Oe}`),ae.push([])}}let ee=nc(ae);ee.length===0&&Re&&m(Q,`All ${H.length} scope tiers failed in Phase 2: ${Re}`),c.push(...ee.slice(0,L))}let Ae=null;if(c.length<i){ge(Q,"Phase 3: Searching actively maintained repos...");let L=i-c.length,I=new Date;I.setDate(I.getDate()-30);let H=I.toISOString().split("T")[0],Z=Ba(t.projectCategories??[]),ae=Z.length>0?`topic:${Z[0]}`:"",ee=`is:issue is:open no:assignee ${N} ${ae} stars:>=${a} pushed:>=${H} archived:false`.replace(/ +/g," ").trim();try{let K=await hs(this.octokit,{q:ee,sort:"updated",order:"desc",per_page:L*3});ge(Q,`Found ${K.total_count} issues in maintained-repo search, processing top ${K.items.length}...`);let de=new Set(c.map(_t=>_t.issue.repo)),{candidates:pe,allVetFailed:fe,rateLimitHit:Oe}=await Lo(this.vetter,K.items,ne,[xe,A,de],L,a,"Phase 3");c.push(...pe),fe&&(Ae="all vetting failed"),Oe&&(p=!0),ge(Q,`Found ${pe.length} candidates from maintained-repo search`)}catch(K){let de=S(K);Ae=de,st(K)&&(p=!0),m(Q,`Error in maintained-repo search: ${de}`)}}if(c.length===0){let L=[u?`Phase 0 (merged-PR repos): ${u}`:null,Je?`Phase 0.5 (preferred orgs): ${Je}`:null,l?`Phase 1 (starred repos): ${l}`:null,Re?`Phase 2 (general): ${Re}`:null,Ae?`Phase 3 (maintained repos): ${Ae}`:null].filter(Boolean),I=L.length>0?` ${L.join(". ")}.`:"";if(p)return this.rateLimitWarning=`Search returned no results due to GitHub API rate limits.${I} Try again after the rate limit resets.`,[];throw new te(`No issue candidates found across all search phases.${I} Try adjusting your search criteria (languages, labels) or check your network connection.`)}return p&&(this.rateLimitWarning=`Search results may be incomplete: GitHub API rate limits were hit during search. Found ${c.length} candidate${c.length===1?"":"s"} but some search phases failed. Try again after the rate limit resets for complete results.`),c.sort((L,I)=>{let H={merged_pr:0,preferred_org:1,starred:2,normal:3},Z=H[L.searchPriority]-H[I.searchPriority];if(Z!==0)return Z;let ae={approve:0,needs_review:1,skip:2},ee=ae[L.recommendation]-ae[I.recommendation];return ee!==0?ee:I.viabilityScore-L.viabilityScore}),Io(c,2).slice(0,i)}async vetIssue(e){return this.vetter.vetIssue(e)}saveSearchResults(e){let t=[...e].sort((a,c)=>c.viabilityScore-a.viabilityScore),r=Ne(),o=cc.join(r,"found-issues.md"),n=new Date().toISOString(),i=`# Found Issues
45
+ `);let u={},l=new r.Events(u);return u.on("secondary-limit",c.onSecondaryRateLimit),u.on("rate-limit",c.onRateLimit),u.on("error",p=>s.log.warn("Error in throttling-plugin limit handler",p)),c.retryLimiter.on("failed",async function(p,g){let[b,T,v]=g.args,{pathname:A}=new URL(v.url,"http://github.test");if(!(A.startsWith("/graphql")&&p.status!==401||p.status===403||p.status===429))return;let $=~~T.retryCount;T.retryCount=$,v.request.retryCount=$;let{wantRetry:I,retryAfter:q=0}=await(async function(){if(/\bsecondary rate\b/i.test(p.message)){let O=Number(p.response.headers["retry-after"])||b.fallbackSecondaryRateRetryAfter;return{wantRetry:await l.trigger("secondary-limit",O,v,s,$),retryAfter:O}}if(p.response.headers!=null&&p.response.headers["x-ratelimit-remaining"]==="0"||(p.response.data?.errors??[]).some(O=>O.type==="RATE_LIMITED")){let O=new Date(~~p.response.headers["x-ratelimit-reset"]*1e3).getTime(),E=Math.max(Math.ceil((O-Date.now())/1e3)+1,0);return{wantRetry:await l.trigger("rate-limit",E,v,s,$),retryAfter:E}}return{}})();if(I)return T.retryCount++,q*b.retryAfterBaseValue}),s.hook.wrap("request",cp.bind(null,c)),{}}var ba,ap,Co,pp,fa,ya,Ot,gp,_a=P(()=>{ba=B(ha(),1),ap="0.0.0-development",Co=()=>Promise.resolve();pp=["/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"];fa=dp(pp),ya=fa.test.bind(fa),Ot={},gp=function(s,e){Ot.global=new s.Group({id:"octokit-global",maxConcurrent:10,...e}),Ot.auth=new s.Group({id:"octokit-auth",maxConcurrent:1,...e}),Ot.search=new s.Group({id:"octokit-search",maxConcurrent:1,minTime:2e3,...e}),Ot.write=new s.Group({id:"octokit-write",maxConcurrent:1,minTime:1e3,...e}),Ot.notifications=new s.Group({id:"octokit-notifications",maxConcurrent:1,minTime:3e3,...e})};zs.VERSION=ap;zs.triggersNotification=ya});function Qs(s){return s.toLocaleTimeString("en-US",{hour12:!1})}function hp(){return{onRateLimit:(s,e,t,r)=>{let o=e,n=new Date(Date.now()+s*1e3);return r<2?(m(Js,`Rate limit hit (retry ${r+1}/2, waiting ${s}s, resets at ${Qs(n)}) \u2014 ${o.method} ${o.url}`),!0):(m(Js,`Rate limit exceeded, not retrying \u2014 ${o.method} ${o.url} (resets at ${Qs(n)})`),!1)},onSecondaryRateLimit:(s,e,t,r)=>{let o=e,n=new Date(Date.now()+s*1e3);return r<1?(m(Js,`Secondary rate limit hit (retry ${r+1}/1, waiting ${s}s, resets at ${Qs(n)}) \u2014 ${o.method} ${o.url}`),!0):(m(Js,`Secondary rate limit exceeded, not retrying \u2014 ${o.method} ${o.url} (resets at ${Qs(n)})`),!1)}}}function ye(s){if(Ks&&Ra===s)return Ks;let e=hp();return Ks=new mp({auth:s,throttle:e}),Ra=s,Ks}async function Po(s){let e=ye(s),{data:t}=await e.rateLimit.get(),r=t.resources.search;return{remaining:r.remaining,limit:r.limit,resetAt:new Date(r.reset*1e3).toISOString()}}var Js,mp,Ks,Ra,Wt=P(()=>{"use strict";ma();_a();se();Js="github",mp=ga.plugin(zs),Ks=null,Ra=null});function yp(s,e){if(!s||!e)return!0;let t=s.toLowerCase();return fp.has(t)?!0:t===e.toLowerCase()}function _p(s,e){let t=new Date(s).getTime(),r=new Date(e).getTime();return Number.isNaN(t)||Number.isNaN(r)?s>e:t-r>=bp}function wa(s){let{latestCommitDate:e,latestCommitAuthor:t,contributorUsername:r}=s;if(e)return yp(t,r)?e:void 0}function Ea(s,e,t){return!(!s||!e||!_p(s,e)||t&&s<t)}function Ta(s,e){return!s||!e?!1:s>=e}function Rp(s){let{ciStatus:e,hasMergeConflict:t,hasUnrespondedComment:r,hasIncompleteChecklist:o,reviewDecision:n,lastMaintainerCommentDate:i,latestChangesRequestedDate:a,hasActionableCIFailure:c=!0}=s,u=wa(s),l=[];return r&&!Ea(u,i,a)&&l.push("needs_response"),n==="changes_requested"&&a&&!Ta(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 ko(s){let e=wp(s),t=Rp(s);return t?{...e,actionReasons:t}:e}function wp(s){let{ciStatus:e,hasMergeConflict:t,hasUnrespondedComment:r,hasIncompleteChecklist:o,reviewDecision:n,daysSinceActivity:i,dormantThreshold:a,approachingThreshold:c,lastMaintainerCommentDate:u,latestChangesRequestedDate:l,hasActionableCIFailure:p=!0}=s,g="active";i>=a?g="dormant":i>=c&&(g="approaching_dormant");let b=wa(s);return r?Ea(b,u,l)?e==="failing"&&p?{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?Ta(b,l)?e==="failing"&&p?{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"?p?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 fp,bp,Ao=P(()=>{"use strict";fp=new Set(["autofix-ci[bot]","prettier-ci[bot]","pre-commit-ci[bot]"]),bp=120*1e3});async function Ys(s,e,t){let r=0,o=!1,n=async()=>{for(;r<s.length&&!o;){let a=s[r++];try{await e(a)}catch(c){throw o=!0,c}}},i=Math.min(t,s.length);await Promise.all(Array.from({length:i},()=>n()))}var Oo=P(()=>{"use strict"});async function Ve(s,e=100,t=10){let r=[];for(let o=1;o<=t;o++){let{data:n}=await s(o);if(r.push(...n),n.length<e)break}return r}var gs=P(()=>{"use strict"});function ct(){return Go||(Go=new Zs),Go}async function ms(s,e,t){let r=s.getInflight(e);if(r)return R(yt,`Dedup hit for ${e}`),await r;let n=(async()=>{let a={},c=s.get(e);c&&(a["if-none-match"]=c.etag);try{let u=await t(a),l=u.headers?.etag;return l&&s.set(e,l,u.data),u.data}catch(u){if(Tp(u)){let l=s.get(e);if(l)return R(yt,`304 cache hit for ${e}`),l.body}throw u}})(),i=s.setInflight(e,n);try{return await n}finally{i()}}async function er(s,e,t,r){let o=s.getIfFresh(e,t);if(o)return R(yt,`Time-based cache hit for ${e}`),o;let n=await r();return s.set(e,"",n),n}function Tp(s){return Se(s)===304}var Fe,Xs,Sa,yt,Ep,Zs,Go,zt=P(()=>{"use strict";Fe=B(require("fs"),1),Xs=B(require("path"),1),Sa=B(require("crypto"),1);ve();se();te();yt="http-cache",Ep=1440*60*1e3,Zs=class{cacheDir;inflightRequests=new Map;constructor(e){this.cacheDir=e??Fs()}keyFor(e){return Sa.createHash("sha256").update(e).digest("hex")}pathFor(e){return Xs.join(this.cacheDir,`${this.keyFor(e)}.json`)}getIfFresh(e,t){let r=this.get(e);if(!r)return null;let o=Date.now()-new Date(r.cachedAt).getTime();return!Number.isFinite(o)||o<0||o>t?null:r.body}get(e){let t=this.pathFor(e);try{let r=Fe.readFileSync(t,"utf-8"),o=JSON.parse(r);return o.url!==e?(R(yt,`Cache collision detected for ${e}, ignoring`),null):o}catch{return null}}set(e,t,r){let o={etag:t,url:e,body:r,cachedAt:new Date().toISOString()};try{Fe.writeFileSync(this.pathFor(e),JSON.stringify(o),{encoding:"utf-8",mode:384}),R(yt,`Cached response for ${e}`)}catch(n){R(yt,`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=Ep){let t=0;try{let r=Fe.readdirSync(this.cacheDir),o=Date.now();for(let n of r){if(!n.endsWith(".json"))continue;let i=Xs.join(this.cacheDir,n);try{let a=Fe.readFileSync(i,"utf-8"),c=JSON.parse(a);o-new Date(c.cachedAt).getTime()>e&&(Fe.unlinkSync(i),t++)}catch{try{Fe.unlinkSync(i),t++}catch{}}}}catch{}return t>0&&R(yt,`Evicted ${t} stale cache entries`),t}clear(){try{let e=Fe.readdirSync(this.cacheDir);for(let t of e)t.endsWith(".json")&&Fe.unlinkSync(Xs.join(this.cacheDir,t));R(yt,"Cache cleared")}catch{}}size(){try{return Fe.readdirSync(this.cacheDir).filter(e=>e.endsWith(".json")).length}catch{return 0}}},Go=null});function tr(){return{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}}function $o(s,e,t){if(t==="cancelled"||t==="timed_out")return"infrastructure";let r=s.toLowerCase();if(Ca.some(o=>o.test(r)))return"auth_gate";if(va.some(o=>o.test(r)))return"fork_limitation";if(Pa.some(o=>o.test(r)))return"infrastructure";if(e){let o=e.toLowerCase();if(Ca.some(n=>n.test(o)))return"auth_gate";if(va.some(n=>n.test(o)))return"fork_limitation";if(Pa.some(n=>n.test(o)))return"infrastructure"}return"actionable"}function sr(s,e){return s.map(t=>{let r=e?.get(t);return{name:t,category:$o(t,void 0,r),conclusion:r}})}function Sp(s){let e=!1,t=!1,r=!1,o=[],n=new Map;for(let i of s)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"&&(r=!0);return{hasFailingChecks:e,hasPendingChecks:t,hasSuccessfulChecks:r,failingCheckNames:o,failingCheckConclusions:n}}function vp(s){let e=s.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"),r=e.some(c=>c.state==="pending"),o=e.some(c=>c.state==="success"),n;t?n="failure":r?n="pending":o||e.length===0?n="success":n=s.state;let i=s.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 Cp(s,e,t){let{hasFailingChecks:r,hasPendingChecks:o,hasSuccessfulChecks:n,failingCheckNames:i,failingCheckConclusions:a}=s,{effectiveCombinedState:c,hasStatuses:u,failingStatusNames:l}=e,p=[...i,...l];return r||c==="failure"||c==="error"?{status:"failing",failingCheckNames:p,failingCheckConclusions:a}:o||c==="pending"?{status:"pending",failingCheckNames:[],failingCheckConclusions:new Map}:n||c==="success"?{status:"passing",failingCheckNames:[],failingCheckConclusions:new Map}:tr()}async function Do(s,e,t,r){if(!r)return tr();try{let[o,n]=await Promise.all([s.repos.getCombinedStatusForRef({owner:e,repo:t,ref:r}),s.checks.listForRef({owner:e,repo:t,ref:r}).catch(g=>{let b=Se(g);if(b===429)throw g;if(b===403){let T=S(g).toLowerCase();if(T.includes("rate limit")||T.includes("abuse detection"))throw g}return b===404?R("pr-monitor",`Check runs 404 for ${e}/${t}@${r.slice(0,7)} (no checks configured)`):m("pr-monitor",`Non-404 error fetching check runs for ${e}/${t}@${r.slice(0,7)}: ${b??g}`),null})]),i=o.data,a=n?.data?.check_runs||[],c=new Map;for(let g of a){let b=c.get(g.name);(!b||new Date(g.started_at??0)>new Date(b.started_at??0))&&c.set(g.name,g)}let u=[...c.values()],l=Sp(u),p=vp(i);return Cp(l,p,u.length)}catch(o){let n=Se(o);if(n===401||n===403||n===429)throw o;return n===404?R("pr-monitor",`CI check 404 for ${e}/${t} (no CI configured)`):m("pr-monitor",`Failed to check CI for ${e}/${t}@${r.slice(0,7)}: ${S(o)}`),tr()}}var va,Ca,Pa,Fo=P(()=>{"use strict";te();se();va=[/vercel/i,/netlify/i,/\bpreview\s*deploy/i,/\bdeploy\s*preview/i,/storybook/i,/chromatic/i,/percy/i,/cloudflare pages/i,/\binternal\b/i],Ca=[/authoriz/i,/approval/i,/\bcla\b/i,/license\/cla/i],Pa=[/\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 Jt(s){return s.includes("[bot]")||Pp.has(s.toLowerCase())}function hs(s){if(!s||s.length>100||s.includes("?"))return!1;let e=s.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(r=>e.includes(r))}var Pp,rr=P(()=>{"use strict";Pp=new Set(["allcontributors","changeset-bot","claassistant","codecov-commenter","greenkeeper","imgbot","netlify","renovate","snyk-bot","sonarcloud","stale","vercel"])});function ka(s){if(s.length===0)return"review_required";let e=new Map;for(let r of s){let o=r.user?.login,n=r.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 Aa(s){let e;for(let t of s)t.state==="CHANGES_REQUESTED"&&t.submitted_at&&(!e||t.submitted_at>e)&&(e=t.submitted_at);return e}function kp(s,e){let t=e.filter(o=>o.pull_request_review_id===s);if(t.length===0)return!1;let r=new Map;for(let o of e)o.user?.login&&r.set(o.id,o.user.login.toLowerCase());return t.every(o=>{if(!o.in_reply_to_id)return!1;let n=r.get(o.in_reply_to_id),i=o.user?.login?.toLowerCase();return!(n==null||i==null||n!==i||!o.body||o.body.includes("?"))})}function Ap(s,e){return e.find(t=>t.pull_request_review_id===s&&t.body?.trim())?.body?.trim()}function Oa(s,e,t,r){let o=[],n=r.toLowerCase();for(let c of s){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&&kp(c.id,t))continue;let p=u||(c.id!=null?Ap(c.id,t):void 0)||(c.state==="CHANGES_REQUESTED"?"(requested changes via inline review comments)":"(posted inline review comments)");o.push({author:l,body:p,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"||Jt(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&&hs(a.body)&&(a=void 0),{hasUnrespondedComment:!!a,lastMaintainerComment:a}}var Ga=P(()=>{"use strict";rr()});function $a(s){return Op.test(s.toLowerCase())}function Da(s){if(!s)return{hasIncompleteChecklist:!1};let e=/- \[x\]/gi,t=/^.*- \[ \].*$/gm,r=s.match(e)||[],o=s.match(t)||[],n=r.length;if(n+o.length===0)return{hasIncompleteChecklist:!1};let a=o.filter(u=>!$a(u)),c=n+a.length;return{hasIncompleteChecklist:a.length>0,checklistStats:{checked:n,total:c}}}var Op,Io=P(()=>{"use strict";Op=/\(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 Fa(s,e){let t=[];if(e==="changes_requested"&&t.push("changes_requested"),!s)return t;let r=s.toLowerCase();return["screenshot","demo","recording","screen recording","before/after","before and after","gif","video","screencast","show me","can you show"].some(c=>r.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=>r.includes(c))&&t.push("tests_requested"),["documentation","readme","jsdoc","docstring","add docs","update docs","document this"].some(c=>r.includes(c))&&t.push("docs_requested"),["rebase","merge conflict","out of date","behind main","behind master"].some(c=>r.includes(c))&&t.push("rebase_requested"),t}var Ia=P(()=>{"use strict"});function $p(s){let e=xa[s]?.label;return e?e.replace(/[[\]]/g,"").toLowerCase():s}function or(s){if(s.status==="needs_addressing"&&s.actionReason){let e=xa[s.actionReason];if(e){let t=e.description(s);if(s.actionReasons&&s.actionReasons.length>1){let r=s.actionReasons.filter(o=>o!==s.actionReason).map($p);r.length>0&&(t+=` (also: ${r.join(", ")})`)}return{displayLabel:e.label,displayDescription:t}}}if(s.status==="waiting_on_maintainer"&&s.waitReason){let e=Gp[s.waitReason];if(e)return{displayLabel:e.label,displayDescription:e.description(s)}}return m("display-utils",`PR ${s.url} has status "${s.status}" but no matching reason (actionReason=${s.actionReason}, waitReason=${s.waitReason})`),s.status==="needs_addressing"?{displayLabel:"[Needs Addressing]",displayDescription:"Action required"}:{displayLabel:"[Waiting on Maintainer]",displayDescription:"Awaiting maintainer action"}}var xa,Gp,xo=P(()=>{"use strict";se();xa={needs_response:{label:"[Needs Response]",description:s=>s.lastMaintainerComment?`@${s.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:s=>{let e=s.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 r=e.filter(n=>n.category==="infrastructure");if(r.length>0)return`${r.length} check${r.length===1?"":"s"} cancelled/timed out (infrastructure)`;let o=s.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:s=>s.checklistStats?`${s.checklistStats.checked}/${s.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:s=>s.missingRequiredFiles?`Missing: ${s.missingRequiredFiles.join(", ")}`:"Required files are missing"}},Gp={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:s=>s.hasUnrespondedComment&&s.lastMaintainerComment?`Changes addressed \u2014 waiting for @${s.lastMaintainerComment.author} to re-review`:"Changes addressed \u2014 awaiting re-review"},ci_blocked:{label:"[CI Blocked]",description:s=>{let e=s.classifiedChecks||[];return e.length>0&&e.every(t=>t.category!=="actionable")?`All failing checks are non-actionable (${[...new Set(e.map(r=>r.category))].join(", ")})`:"CI checks are failing but no action is needed from you"}},stale_ci_failure:{label:"[Stale CI Failure]",description:s=>`CI failing for ${s.daysSinceActivity}+ days \u2014 likely pre-existing or non-actionable`}}});function $t(){return{repos:new Map,monthlyCounts:{},monthlyOpenedCounts:{},dailyActivityCounts:{}}}function Fp(s){if(typeof s!="object"||s===null)return!1;let e=s;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 Ua(s,e,t,r,o,n){if(!e)return $t();let i=ct(),a=n?`:stars${n.minStars}`:"",c=`pr-counts:v3:${r}:${e}${a}`,u=i.getIfFresh(c,Dp);if(u&&Fp(u))return R(ue,`Using cached ${r} PR counts for @${e}`),{repos:new Map(u.reposEntries),monthlyCounts:u.monthlyCounts,monthlyOpenedCounts:u.monthlyOpenedCounts,dailyActivityCounts:u.dailyActivityCounts};R(ue,`Fetching ${r} PR counts for @${e}...`);let l=new Map,p={},g={},b={},T=1,v=0,A;for(;;){let{data:y}=await s.search.issuesAndPullRequests({q:`is:pr ${t} author:${e} -user:${e}`,sort:"updated",order:"desc",per_page:100,page:T});A=y.total_count;for(let $ of y.items){let I=vt($.html_url);if(!I){m(ue,`Skipping ${r} PR with unparseable URL: ${$.html_url}`);continue}let{owner:q}=I,O=`${q}/${I.repo}`;if(qe(q,e)||n&&st(n.knownStarCounts.get(O),n.minStars))continue;let E=o(l,O,$);if(E){let k=E.slice(0,7);p[k]=(p[k]||0)+1;let N=E.slice(0,10);N.length===10&&(b[N]=(b[N]||0)+1)}if($.created_at){let k=$.created_at.slice(0,7);g[k]=(g[k]||0)+1;let N=$.created_at.slice(0,10);N.length===10&&(b[N]=(b[N]||0)+1)}}if(v+=y.items.length,v>=y.total_count||v>=1e3||y.items.length===0||T>=Gt)break;T++}return v<A&&T>=Gt&&m(ue,`Pagination capped at ${Gt} pages: fetched ${v} of ${A} ${r} PRs. Stats may be incomplete for prolific contributors.`),R(ue,`Found ${v} ${r} PRs across ${l.size} repos`),i.set(c,"",{reposEntries:Array.from(l.entries()),monthlyCounts:p,monthlyOpenedCounts:g,dailyActivityCounts:b}),{repos:l,monthlyCounts:p,monthlyOpenedCounts:g,dailyActivityCounts:b}}function Ma(s,e,t){return Ua(s,e,"is:merged","merged",(r,o,n)=>{n.pull_request?.merged_at||m(ue,`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=r.get(o);return a?(a.count+=1,i&&i>a.lastMergedAt&&(a.lastMergedAt=i)):r.set(o,{count:1,lastMergedAt:i}),i},t)}function La(s,e,t){return Ua(s,e,"is:closed is:unmerged","closed",(r,o,n)=>(r.set(o,(r.get(o)||0)+1),n.closed_at||""),t)}async function ja(s,e,t,r,o,n){if(!e.githubUsername)return m(ue,`Skipping recently ${r} 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];R(ue,`Fetching recently ${r} PRs for @${e.githubUsername} (since ${a})...`);let{data:c}=await s.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 p=me(l.html_url);if(!p){m(ue,`Could not parse GitHub URL from API response: ${l.html_url}`);continue}let g=`${p.owner}/${p.repo}`;qe(p.owner,e.githubUsername)||u.push(n(l,{owner:p.owner,repo:g,number:p.number}))}return R(ue,`Found ${u.length} recently ${r} PRs`),u}async function Na(s,e,t=7){return ja(s,e,"is:pr is:closed is:unmerged author:{username} closed:>={since}","closed",t,(r,{repo:o,number:n})=>({url:r.html_url,repo:o,number:n,title:r.title,closedAt:r.closed_at||""}))}async function Ha(s,e,t=7){return ja(s,e,"is:pr is:merged author:{username} merged:>={since}","merged",t,(r,{repo:o,number:n})=>{let i=r.pull_request?.merged_at;return i||m(ue,`merged_at missing for merged PR ${r.html_url}${r.closed_at?", falling back to closed_at":", no date available"}`),{url:r.html_url,repo:o,number:n,title:r.title,mergedAt:i||r.closed_at||""}})}async function qa(s,e,t){if(!e.githubUsername)return m(ue,"Skipping merged PRs fetch: no githubUsername configured."),[];let r=t?` merged:>${t}`:"",o=`is:pr is:merged author:${e.githubUsername} -user:${e.githubUsername}${r}`;R(ue,`Fetching merged PRs${t?` since ${t}`:" (all time)"}...`);let n=[],i=1,a=0;for(;;){let{data:c}=await s.search.issuesAndPullRequests({q:o,sort:"updated",order:"desc",per_page:100,page:i});for(let u of c.items){let l=me(u.html_url);if(!l){m(ue,`Skipping merged PR with unparseable URL: ${u.html_url}`);continue}if(qe(l.owner,e.githubUsername))continue;let p=u.pull_request?.merged_at||u.closed_at||"";if(!p){m(ue,`Skipping merged PR with no merge date: ${u.html_url}`);continue}n.push({url:u.html_url,title:u.title,mergedAt:p})}if(a+=c.items.length,a>=c.total_count||a>=1e3||c.items.length===0||i>=Gt)break;i++}return R(ue,`Fetched ${n.length} merged PRs${t?" (incremental)":" (initial)"}`),n}async function Ba(s,e,t){if(!e.githubUsername)return m(ue,"Skipping closed PRs fetch: no githubUsername configured."),[];let r=t?` closed:>${t}`:"",o=`is:pr is:closed is:unmerged author:${e.githubUsername} -user:${e.githubUsername}${r}`;R(ue,`Fetching closed PRs${t?` since ${t}`:" (all time)"}...`);let n=[],i=1,a=0,c;for(;;){let{data:u}=await s.search.issuesAndPullRequests({q:o,sort:"updated",order:"desc",per_page:100,page:i});c=u.total_count;for(let l of u.items){let p=me(l.html_url);if(!p){m(ue,`Skipping closed PR with unparseable URL: ${l.html_url}`);continue}if(qe(p.owner,e.githubUsername))continue;let g=l.closed_at||"";if(!g){m(ue,`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>=Gt)break;i++}return a<c&&i>=Gt&&m(ue,`Pagination capped at ${Gt} pages: fetched ${a} of ${c} closed PRs. Oldest PRs may be missing.`),R(ue,`Fetched ${n.length} closed PRs${t?" (incremental)":" (initial)"}`),n}var ue,Dp,Gt,nr=P(()=>{"use strict";ve();je();se();zt();ue="github-stats",Dp=1440*60*1e3,Gt=3});function Ip(s,e){return s===!1||e==="dirty"}var ir,xp,Dt,Va=P(()=>{"use strict";Wt();qt();ve();Ao();Oo();te();gs();se();zt();Fo();Ga();Io();Ia();xo();nr();xo();Fo();Io();Ao();ir="pr-monitor",xp=ht,Dt=class{octokit;stateManager;constructor(e){this.octokit=ye(e),this.stateManager=U()}async fetchUserOpenPRs(){let e=this.stateManager.getState().config;if(!e.githubUsername)throw new rt("No GitHub username configured. Run setup first.");R("pr-monitor",`Fetching open PRs for @${e.githubUsername}...`);let t=[],r=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;R("pr-monitor",`Found ${i} open PRs`);let a=Math.min(Math.ceil(i/o),10);for(;r<a;){r++;let p=await this.octokit.search.issuesAndPullRequests({q:`is:pr is:open author:${e.githubUsername}`,sort:"updated",order:"desc",per_page:o,page:r});t.push(...p.data.items)}let c=[],u=[],l=t.filter(p=>{if(!p.pull_request)return!1;let g=vt(p.html_url);return g?!qe(g.owner,e.githubUsername):(m("pr-monitor",`Skipping PR with unparseable URL: ${p.html_url}`),!1)});return R("pr-monitor",`Filtered to ${l.length} PRs after excluding own repos`),await to("pr-monitor",`Fetch details for ${l.length} PRs`,async()=>{await Ys(l,async p=>{try{R("pr-monitor",`Fetching details for ${p.html_url}`);let g=await this.fetchPRDetails(p.html_url);g&&c.push(g)}catch(g){let b=S(g);m("pr-monitor",`Error fetching ${p.html_url}: ${b}`),u.push({prUrl:p.html_url,error:b})}},xp)}),c.sort((p,g)=>p.status===g.status?0:p.status==="needs_addressing"?-1:1),{prs:c,failures:u}}async fetchPRDetails(e){let t=me(e);if(!t||t.type!=="pull")throw new re(`Invalid PR URL format: ${e}`);let{owner:r,repo:o,number:n}=t,i=this.stateManager.getState().config,[a,c,u,l]=await Promise.all([this.octokit.pulls.get({owner:r,repo:o,pull_number:n}),Ve(F=>this.octokit.issues.listComments({owner:r,repo:o,issue_number:n,per_page:100,page:F})),this.octokit.pulls.listReviews({owner:r,repo:o,pull_number:n}),Ve(F=>this.octokit.pulls.listReviewComments({owner:r,repo:o,pull_number:n,per_page:100,page:F})).catch(F=>{let H=Se(F);if(H===429)throw F;if(H===403){let Z=S(F).toLowerCase();if(Z.includes("rate limit")||Z.includes("abuse detection"))throw F;return m("pr-monitor",`403 fetching review comments for ${r}/${o}#${n}: ${Z}`),[]}return H===404?R("pr-monitor",`Review comments 404 for ${r}/${o}#${n} (likely no inline comments)`):m("pr-monitor",`Failed to fetch review comments for ${r}/${o}#${n} (status ${H??"unknown"}): self-reply detection will be skipped`),[]})]),p=a.data,g=u.data,b=ka(g),T=Ip(p.mergeable,p.mergeable_state),{hasUnrespondedComment:v,lastMaintainerComment:A}=Oa(c,g,l,i.githubUsername),y=Do(this.octokit,r,o,p.head.sha),I=v||b==="changes_requested"?this.octokit.repos.getCommit({owner:r,repo:o,ref:p.head.sha}).then(F=>({date:F.data.commit.author?.date,author:F.data.author?.login})).catch(F=>{let H=Se(F);if(H===429)throw F;if(H===403){let Z=S(F).toLowerCase();if(Z.includes("rate limit")||Z.includes("abuse detection"))throw F;m("pr-monitor",`403 fetching commit date for ${r}/${o}@${p.head.sha.slice(0,7)}: ${S(F)}`);return}m("pr-monitor",`Failed to fetch commit date for ${r}/${o}@${p.head.sha.slice(0,7)}: ${S(F)}`)}):Promise.resolve(void 0),[{status:q,failingCheckNames:O,failingCheckConclusions:E},k]=await Promise.all([y,I]),N=k?.date,M=k?.author,{hasIncompleteChecklist:oe,checklistStats:xe}=Da(p.body||""),Q=Fa(A?.body,b),ne=Le(new Date(p.updated_at),new Date),Pe=Aa(g),Ue=sr(O,E),Ke=q==="failing"&&Ue.some(F=>F.category==="actionable"),{status:mt,actionReason:Re,waitReason:Ae,stalenessTier:ke,actionReasons:L}=ko({ciStatus:q,hasMergeConflict:T,hasUnrespondedComment:v,hasIncompleteChecklist:oe,reviewDecision:b,daysSinceActivity:ne,dormantThreshold:i.dormantThresholdDays,approachingThreshold:i.approachingDormantDays,latestCommitDate:N,latestCommitAuthor:M,contributorUsername:i.githubUsername,lastMaintainerCommentDate:A?.createdAt,latestChangesRequestedDate:Pe,hasActionableCIFailure:Ke});return this.buildFetchedPR({id:p.id,url:e,repo:`${r}/${o}`,number:n,title:p.title,status:mt,actionReason:Re,waitReason:Ae,stalenessTier:ke,actionReasons:L,createdAt:p.created_at,updatedAt:p.updated_at,daysSinceActivity:ne,ciStatus:q,failingCheckNames:O,classifiedChecks:Ue,hasMergeConflict:T,reviewDecision:b,hasUnrespondedComment:v,lastMaintainerComment:A,latestCommitDate:N,hasIncompleteChecklist:oe,checklistStats:xe,maintainerActionHints:Q})}buildFetchedPR(e){let t={...e,displayLabel:"",displayDescription:""},{displayLabel:r,displayDescription:o}=or(t);return t.displayLabel=r,t.displayDescription=o,t}async fetchUserMergedPRCounts(e){let t=this.stateManager.getState().config;return Ma(this.octokit,t.githubUsername,e)}async fetchUserClosedPRCounts(e){let t=this.stateManager.getState().config;return La(this.octokit,t.githubUsername,e)}async fetchRepoMetadata(e){if(e.length===0)return new Map;R(ir,`Fetching repo metadata for ${e.length} repos...`);let t=new Map,r=ct(),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 p=l.split("/");if(p.length!==2||!p[0]||!p[1])throw new re(`Malformed repo identifier: "${l}"`);let[g,b]=p,T=`/repos/${g}/${b}`,v=await ms(r,T,y=>this.octokit.repos.get({owner:g,repo:b,headers:y})),A={stars:v.stargazers_count,language:v.language??null};return{repo:l,metadata:A}})),u=0;for(let l=0;l<c.length;l++){let p=c[l];p.status==="fulfilled"?t.set(p.value.repo,p.value.metadata):(u++,m(ir,`Failed to fetch metadata for ${a[l]}: ${S(p.reason)}`))}if(u===a.length&&a.length>0){let l=o.length-i-n;l>0&&m(ir,`Entire chunk failed, aborting remaining ${l} repos`);break}}return R(ir,`Fetched repo metadata for ${t.size}/${e.length} repos`),t}async fetchRecentlyClosedPRs(e=7){let t=this.stateManager.getState().config;return Na(this.octokit,t,e)}async fetchRecentlyMergedPRs(e=7){let t=this.stateManager.getState().config;return Ha(this.octokit,t,e)}generateDigest(e,t=[],r=[]){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:r,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 Uo(s){if(!s.labels||!Array.isArray(s.labels)||s.labels.length===0)return!1;let t=s.labels.map(r=>(typeof r=="string"?r:r.name||"").toLowerCase()).filter(r=>r.length>0);return t.length===0?!1:t.every(r=>Wa.has(r))}function Mp(s){return!s.labels||!Array.isArray(s.labels)?!1:s.labels.map(r=>(typeof r=="string"?r:r.name||"").toLowerCase()).filter(r=>Up.has(r)).length>=5}function Lp(s){return s?/^.+\s+(question|fact|point|item|task|entry|post|challenge|exercise|example|problem|tip|recipe|snippet)\s+#?\d+$/i.test(s):!1}function za(s){let e=new Set,t=new Map;for(let r of s){let o=r.repository_url.split("/").slice(-2).join("/");if(Mp(r)){e.add(o);continue}r.title&&Lp(r.title)&&t.set(o,(t.get(o)||0)+1)}for(let[r,o]of t)o>=3&&e.add(r);return e}function Mo(s,e){let t=new Map,r=[];for(let o of s){let n=t.get(o.issue.repo)||0;n<e&&(r.push(o),t.set(o.issue.repo,n+1))}return r}var Wa,Up,ar=P(()=>{"use strict";Wa=new Set(["documentation","docs","typo","spelling"]);Up=new Set(["good first issue","hacktoberfest","easy","up-for-grabs","first-timers-only","beginner-friendly","beginner","starter","newbie","low-hanging-fruit","community"])});function Ja(s,e){let t=0;return s>=5e3?t+=8:s>=500?t+=5:s>=50&&(t+=3),e>=500?t+=4:e>=50&&(t+=2),t}function Ka(s){let e=50;s.repoScore!==null&&(e+=s.repoScore*2),e+=s.repoQualityBonus??0,s.mergedPRCount>0&&(e+=15),s.clearRequirements&&(e+=15);let t=new Date(s.issueUpdatedAt),r=Le(t);return r<=14?e+=15:r<=30&&(e+=Math.round(15*(1-(r-14)/16))),s.hasContributionGuidelines&&(e+=10),s.orgHasMergedPRs&&(e+=5),s.matchesPreferredCategory&&(e+=5),s.hasExistingPR&&(e-=30),s.isClaimed&&(e-=20),s.closedWithoutMergeCount>0&&s.mergedPRCount===0&&(e-=15),Math.max(0,Math.min(100,e))}var Qa=P(()=>{"use strict";ve()});function Ya(s,e){if(e.length===0)return!1;let t=s.split("/")[0]?.toLowerCase();if(!t)return!1;for(let r of e){let o=Np[r];if(o&&o.some(n=>n.toLowerCase()===t))return!0}return!1}function Xa(s){let e=new Set;for(let t of s){let r=jp[t];if(r)for(let o of r)e.add(o)}return[...e]}var jp,Np,Lo=P(()=>{"use strict";jp={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"]}});async function Za(s,e,t,r){try{let{data:o}=await s.search.issuesAndPullRequests({q:`repo:${e}/${t} is:pr ${r}`,per_page:5}),i=(await Ve(a=>s.issues.listEventsForTimeline({owner:e,repo:t,issue_number:r,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=S(o);return m(jo,`Failed to check for existing PRs on ${e}/${t}#${r}: ${n}. Assuming no existing PR.`),{passed:!0,inconclusive:!0,reason:n}}}async function ec(s,e,t){try{let{data:r}=await s.search.issuesAndPullRequests({q:`repo:${e}/${t} is:pr is:merged author:@me`,per_page:1});return r.total_count}catch(r){let o=S(r);return m(jo,`Could not check merged PRs in ${e}/${t}: ${o}. Defaulting to 0.`),0}}async function tc(s,e,t,r,o){if(o===0)return{passed:!0};try{let i=(await s.paginate(s.issues.listComments,{owner:e,repo:t,issue_number:r,per_page:100},a=>a.data)).slice(-100);for(let a of i){let c=(a.body||"").toLowerCase();if(Hp.some(u=>c.includes(u)))return{passed:!1}}return{passed:!0}}catch(n){let i=S(n);return m(jo,`Failed to check claim status on ${e}/${t}#${r}: ${i}. Assuming not claimed.`),{passed:!0,inconclusive:!0,reason:i}}}function sc(s){if(!s||s.length<50)return!1;let e=/\d\.|[-*]\s/.test(s),t=/```/.test(s),r=/expect|should|must|want/i.test(s);return[e,t,r,s.length>200].filter(Boolean).length>=2}var jo,Hp,rc=P(()=>{"use strict";gs();te();se();jo="issue-eligibility",Hp=["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"]});function nc(){let s=Date.now();for(let[e,t]of ut.entries())s-t.fetchedAt>ic&&ut.delete(e);if(ut.size>oc){let t=Array.from(ut.entries()).sort((r,o)=>r[1].fetchedAt-o[1].fetchedAt).slice(0,ut.size-oc);for(let[r]of t)ut.delete(r)}}async function ac(s,e,t){let r=ct(),o=`health:${e}/${t}`;try{return await er(r,o,qp,async()=>{let n=`/repos/${e}/${t}`,i=await ms(r,n,g=>s.repos.get({owner:e,repo:t,headers:g})),{data:a}=await s.repos.listCommits({owner:e,repo:t,per_page:1}),u=a[0]?.commit?.author?.date||i.pushed_at,l=Le(new Date(u)),p="unknown";try{let{data:g}=await s.actions.listRepoWorkflows({owner:e,repo:t,per_page:1});g.total_count>0&&(p="passing")}catch(g){let b=S(g);m(No,`Failed to check CI status for ${e}/${t}: ${b}. Defaulting to unknown.`)}return{repo:`${e}/${t}`,lastCommitAt:u,daysSinceLastCommit:l,openIssuesCount:i.open_issues_count,avgIssueResponseDays:0,ciStatus:p,isActive:l<30,stargazersCount:i.stargazers_count,forksCount:i.forks_count}})}catch(n){let i=S(n);return m(No,`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 function cc(s,e,t){let r=`${e}/${t}`,o=ut.get(r);if(o&&Date.now()-o.fetchedAt<ic)return o.guidelines;let n=["CONTRIBUTING.md",".github/CONTRIBUTING.md","docs/CONTRIBUTING.md","contributing.md"],i=await Promise.allSettled(n.map(a=>s.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=Bp(c.value);return ut.set(r,{guidelines:u,fetchedAt:Date.now()}),nc(),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(No,`Unexpected error fetching ${n[a]} from ${e}/${t}: ${u}`)}}ut.set(r,{guidelines:void 0,fetchedAt:Date.now()}),nc()}function Bp(s){let e={rawContent:s},t=s.toLowerCase();if(t.includes("branch")){let r=s.match(/branch[^\n]*(?:named?|format|convention)[^\n]*[`"]([^`"]+)[`"]/i);r&&(e.branchNamingConvention=r[1])}if(t.includes("conventional commit"))e.commitMessageFormat="conventional commits";else if(t.includes("commit message")){let r=s.match(/commit message[^\n]*[`"]([^`"]+)[`"]/i);r&&(e.commitMessageFormat=r[1])}return t.includes("jest")?e.testFramework="Jest":t.includes("rspec")?e.testFramework="RSpec":t.includes("pytest")?e.testFramework="pytest":t.includes("mocha")&&(e.testFramework="Mocha"),t.includes("eslint")?e.linter="ESLint":t.includes("rubocop")?e.linter="RuboCop":t.includes("prettier")&&(e.formatter="Prettier"),(t.includes("cla")||t.includes("contributor license agreement"))&&(e.claRequired=!0),e}var No,ut,ic,qp,oc,uc=P(()=>{"use strict";ve();te();se();zt();No="repo-health",ut=new Map,ic=3600*1e3,qp=14400*1e3,oc=100});var lc,Vp,cr,pc=P(()=>{"use strict";ve();te();se();Qa();Lo();rc();uc();lc="issue-vetting",Vp=ht,cr=class{octokit;stateManager;constructor(e,t){this.octokit=e,this.stateManager=t}async vetIssue(e){let t=me(e);if(!t||t.type!=="issues")throw new re(`Invalid issue URL: ${e}`);let{owner:r,repo:o,number:n}=t,i=`${r}/${o}`,{data:a}=await this.octokit.issues.get({owner:r,repo:o,issue_number:n}),[c,u,l,p,g]=await Promise.all([Za(this.octokit,r,o,n),tc(this.octokit,r,o,n,a.comments),ac(this.octokit,r,o),cc(this.octokit,r,o),ec(this.octokit,r,o)]),b=c.passed,T=u.passed,v=sc(a.body||""),A=l.checkFailed?!0:l.isActive,y={passedAllChecks:b&&T&&A&&v,checks:{noExistingPR:b,notClaimed:T,projectActive:A,clearRequirements:v,contributionGuidelinesFound:!!p},contributionGuidelines:p,notes:[]};b||y.notes.push("Existing PR found for this issue"),T||y.notes.push("Issue appears to be claimed by someone"),c.inconclusive&&y.notes.push(`Could not verify absence of existing PRs: ${c.reason||"API error"}`),u.inconclusive&&y.notes.push(`Could not verify claim status: ${u.reason||"API error"}`),l.checkFailed?y.notes.push(`Could not verify project activity: ${l.failureReason||"API error"}`):l.isActive||y.notes.push("Project may be inactive"),v||y.notes.push("Issue requirements are unclear"),p||y.notes.push("No CONTRIBUTING.md found");let $={id:a.id,url:e,repo:i,number:n,title:a.title,status:"candidate",labels:a.labels.map(ke=>typeof ke=="string"?ke:ke.name||""),createdAt:a.created_at,updatedAt:a.updated_at,vetted:!0,vettingResult:y},I=[],q=[];b||I.push("Has existing PR"),T||I.push("Already claimed"),!l.isActive&&!l.checkFailed&&I.push("Inactive project"),v||I.push("Unclear requirements"),b&&q.push("No existing PR"),T&&q.push("Not claimed"),l.isActive&&!l.checkFailed&&q.push("Active project"),v&&q.push("Clear requirements"),p&&q.push("Has contribution guidelines");let O=this.stateManager.getState().config,E=this.stateManager.getRepoScore(i),k=E&&E.mergedPRCount>0?E.mergedPRCount:g;k>0?q.push(`Trusted project (${k} PR${k>1?"s":""} merged)`):O.trustedProjects.includes(i)&&q.push("Trusted project (previous PR merged)"),E&&(E.closedWithoutMergeCount>0&&k===0?I.push("User has rejected PR(s) in this repo with no successful merges"):E.closedWithoutMergeCount>0&&k>0&&y.notes.push(`Mixed history: ${k} merged, ${E.closedWithoutMergeCount} closed without merge`));let N=i.split("/")[0],M=!1;N&&i.includes("/")&&(M=Object.values(this.stateManager.getState().repoScores).some(ke=>ke.repo&&ke.mergedPRCount>0&&ke.repo.startsWith(N+"/")&&ke.repo!==i)),M&&q.push(`Org affinity (merged PRs in other ${N} repos)`);let oe=O.projectCategories??[],xe=Ya(i,oe);xe&&q.push("Matches preferred project category");let Q;y.passedAllChecks?Q="approve":I.length>2?Q="skip":Q="needs_review";let ne=l.checkFailed||c.inconclusive||u.inconclusive;Q==="approve"&&ne&&(Q="needs_review",y.notes.push("Recommendation downgraded: one or more checks were inconclusive"));let Pe=Ja(l.stargazersCount??0,l.forksCount??0);l.checkFailed&&Pe===0&&y.notes.push("Repo quality bonus unavailable: could not fetch star/fork counts due to API error");let Ue=this.getRepoScore(i),Ke=Ka({repoScore:Ue,hasExistingPR:!b,isClaimed:!T,clearRequirements:v,hasContributionGuidelines:!!p,issueUpdatedAt:a.updated_at,closedWithoutMergeCount:E?.closedWithoutMergeCount??0,mergedPRCount:k,orgHasMergedPRs:M,repoQualityBonus:Pe,matchesPreferredCategory:xe}),mt=this.stateManager.getStarredRepos(),Re=O.preferredOrgs??[],Ae="normal";return k>0?Ae="merged_pr":Re.some(ke=>ke.toLowerCase()===N?.toLowerCase())?Ae="preferred_org":mt.includes(i)&&(Ae="starred"),{issue:$,vettingResult:y,projectHealth:l,recommendation:Q,reasonsToSkip:I,reasonsToApprove:q,viabilityScore:Ke,searchPriority:Ae}}async vetIssuesParallel(e,t,r){let o=[],n=new Map,i=0,a=0,c=0;for(let l of e){if(o.length>=t)break;c++;let p=this.vetIssue(l).then(g=>{o.length<t&&(r&&(g.searchPriority=r),o.push(g))}).catch(g=>{i++,ot(g)&&a++,m(lc,`Error vetting issue ${l}:`,S(g))}).finally(()=>n.delete(l));n.set(l,p),n.size>=Vp&&await Promise.race(n.values())}await Promise.allSettled(n.values());let u=i===c&&c>0;return u&&m(lc,`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}}getRepoScore(e){return this.stateManager.getState().repoScores?.[e]?.score??null}}});function Ho(s){return s.length===0?"":s.length===1?`label:"${s[0]}"`:`(${s.map(e=>`label:"${e}"`).join(" OR ")})`}function dc(s,e){let t=new Set;for(let r of s)for(let o of ss[r]??[])t.add(o);for(let r of e)t.add(r);return[...t]}function gc(s){let e=[],t=Math.max(...s.map(r=>r.length),0);for(let r=0;r<t;r++)for(let o of s)r<o.length&&e.push(o[r]);return e}function Wp(s,e){let t=[];for(let r=0;r<s.length;r+=e)t.push(s.slice(r,r+e));return t}async function bs(s,e){let t=`search:${e.q}:${e.sort}:${e.order}:${e.per_page}`;return er(ct(),t,zp,async()=>{let{data:r}=await s.search.issuesAndPullRequests(e);return r})}async function qo(s,e,t,r,o,n,i){let a=za(e);if(a.size>0){let T=e.filter(v=>a.has(v.repository_url.split("/").slice(-2).join("/"))).length;R(fs,`[SPAM_FILTER] Filtered ${T} issues from ${a.size} label-farming repos: ${[...a].join(", ")}`)}let c=t(e).filter(T=>{let v=T.repository_url.split("/").slice(-2).join("/");return a.has(v)?!1:r.every(A=>!A.has(v))}).slice(0,o*2);if(c.length===0)return R(fs,`[${i}] All ${e.length} items filtered before vetting`),{candidates:[],allVetFailed:!1,rateLimitHit:!1};let{candidates:u,allFailed:l,rateLimitHit:p}=await s.vetIssuesParallel(c.map(T=>T.html_url),o,"normal"),g=u.filter(T=>T.projectHealth.checkFailed?!0:(T.projectHealth.stargazersCount??0)>=n),b=u.length-g.length;return b>0&&R(fs,`[STAR_FILTER] Filtered ${b} ${i} candidates below ${n} stars`),{candidates:g,allVetFailed:l,rateLimitHit:p}}async function ur(s,e,t,r,o,n,i){let a=[],u=Wp(t,5),l=0,p=0;for(let T of u){if(a.length>=o)break;try{let v=T.map($=>`repo:${$}`).join(" OR "),A=`${r} (${v})`,y=await bs(s,{q:A,sort:"created",order:"desc",per_page:Math.min(30,(o-a.length)*3)});if(y.items.length>0){let $=i(y.items),I=o-a.length,{candidates:q}=await e.vetIssuesParallel($.slice(0,I*2).map(O=>O.html_url),I,n);a.push(...q)}}catch(v){l++,ot(v)&&p++;let A=T.join(", ");m(fs,`Error searching issues in batch [${A}]:`,S(v))}}let g=l===u.length&&u.length>0,b=p>0;return g&&m(fs,`All ${u.length} batch(es) failed for ${n} phase. This may indicate a systemic issue (rate limit, auth, network).`),{candidates:a,allBatchesFailed:g,rateLimitHit:b}}var fs,zp,mc=P(()=>{"use strict";je();te();se();zt();ar();fs="search-phases";zp=900*1e3});var hc,fc,X,Ft,bc=P(()=>{"use strict";hc=B(require("fs"),1),fc=B(require("path"),1);Wt();qt();ve();je();te();se();ar();pc();Lo();mc();X="issue-discovery",Ft=class{octokit;stateManager;githubToken;vetter;rateLimitWarning=null;constructor(e){this.githubToken=e,this.octokit=ye(e),this.stateManager=U(),this.vetter=new cr(this.octokit,this.stateManager)}async fetchStarredRepos(){ge(X,"Fetching starred repositories...");let e=[];try{let t=this.octokit.paginate.iterator(this.octokit.activity.listReposStarredByAuthenticatedUser,{per_page:100}),r=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(r++,r>=5){ge(X,"Reached pagination limit for starred repos (500)");break}}return ge(X,`Fetched ${e.length} starred repositories`),this.stateManager.setStarredRepos(e),e}catch(t){let r=this.stateManager.getStarredRepos(),o=S(t);return m(X,"Error fetching starred repos:",o),r.length===0?m(X,`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(X,`Failed to fetch starred repositories from GitHub API. Using ${r.length} cached repos instead. Error: ${o}`),r}}async getStarredReposWithRefresh(){return this.stateManager.isStarredReposStale()?this.fetchStarredRepos():this.stateManager.getStarredRepos()}async searchIssues(e={}){let t=this.stateManager.getState().config,r=e.languages||t.languages,o=t.scope,n=e.labels||(o?dc(o,t.labels):t.labels),i=e.maxResults||10,a=t.minStars??50,c=[],u=null,l=null,p=!1;this.rateLimitWarning=null;try{let L=await Po(this.githubToken);if(L.remaining<5){let F=new Date(L.resetAt).toLocaleTimeString("en-US",{hour12:!1});this.rateLimitWarning=`GitHub search API quota low (${L.remaining}/${L.limit} remaining, resets at ${F}). Search may be slow.`,m(X,this.rateLimitWarning)}}catch(L){if(Se(L)===401)throw L;m(X,"Could not check rate limit:",S(L))}let g=this.stateManager.getReposWithMergedPRs(),b=new Set(g),T=this.stateManager.getReposWithOpenPRs(),v=await this.getStarredReposWithRefresh(),A=new Set(v),y=new Set(this.stateManager.getLowScoringRepos(3)),$=new Set(this.stateManager.getState().activeIssues.map(L=>L.url)),I=new Set(t.excludeRepos),q=t.maxIssueAgeDays||90,O=new Date,E=Ho(n),N=r.some(L=>L.toLowerCase()==="any")?"":r.map(L=>`language:${L}`).join(" "),M=`is:issue is:open ${N} no:assignee`.replace(/ +/g," ").trim(),oe=`is:issue is:open ${E} ${N} no:assignee`.replace(/ +/g," ").trim(),xe=t.includeDocIssues??!0,Q=new Set(t.aiPolicyBlocklist??Et.aiPolicyBlocklist??[]);Q.size>0&&R(X,`[AI_POLICY_FILTER] Filtering issues from ${Q.size} blocklisted repo(s): ${[...Q].join(", ")}`);let ne=L=>L.filter(F=>{if($.has(F.html_url))return!1;let H=F.repository_url.split("/").slice(-2).join("/");if(I.has(H)||Q.has(H)||y.has(H))return!1;let Z=new Date(F.updated_at);return!(Le(Z,O)>q||!xe&&Uo(F))}),Pe=[...g,...T.filter(L=>!b.has(L))].slice(0,10),Ue=new Set(Pe);if(Pe.length>0){let L=Math.min(g.length,Pe.length),F=Pe.length-L;ge(X,`Phase 0: Searching issues in ${Pe.length} repos (${L} merged-PR, ${F} open-PR, no label filter)...`);let H=Pe.slice(0,L);if(H.length>0){let ae=i-c.length;if(ae>0){let{candidates:ee,allBatchesFailed:Y,rateLimitHit:de}=await ur(this.octokit,this.vetter,H,M,ae,"merged_pr",ne);c.push(...ee),Y&&(u="All merged-PR repo batches failed"),de&&(p=!0),ge(X,`Found ${ee.length} candidates from merged-PR repos`)}}let Z=Pe.slice(L);if(Z.length>0&&c.length<i){let ae=i-c.length;if(ae>0){let{candidates:ee,allBatchesFailed:Y,rateLimitHit:de}=await ur(this.octokit,this.vetter,Z,M,ae,"starred",ne);if(c.push(...ee),Y){let pe="All open-PR repo batches failed";u=u?`${u}; ${pe}`:pe}de&&(p=!0),ge(X,`Found ${ee.length} candidates from open-PR repos`)}}}let Ke=null,mt=t.preferredOrgs??[];if(c.length<i&&mt.length>0){let L=new Set(Pe.map(H=>H.split("/")[0]?.toLowerCase())),F=mt.filter(H=>!L.has(H.toLowerCase())).slice(0,5);if(F.length>0){ge(X,`Phase 0.5: Searching issues in ${F.length} preferred org(s)...`);let H=i-c.length,Z=F.map(ee=>`org:${ee}`).join(" OR "),ae=`${oe} (${Z})`;try{let ee=await bs(this.octokit,{q:ae,sort:"created",order:"desc",per_page:H*3});if(ee.items.length>0){let Y=ne(ee.items).filter(Oe=>{let wt=Oe.repository_url.split("/").slice(-2).join("/");return!Ue.has(wt)}),{candidates:de,allFailed:pe,rateLimitHit:fe}=await this.vetter.vetIssuesParallel(Y.slice(0,H*2).map(Oe=>Oe.html_url),H,"preferred_org");c.push(...de),pe&&(Ke="All preferred org issue vetting failed"),fe&&(p=!0),ge(X,`Found ${de.length} candidates from preferred orgs`)}}catch(ee){let Y=S(ee);Ke=Y,ot(ee)&&(p=!0),m(X,`Error searching preferred orgs: ${Y}`)}}}if(c.length<i&&v.length>0){let L=v.filter(F=>!Ue.has(F));if(L.length>0){ge(X,`Phase 1: Searching issues in ${L.length} starred repos...`);let F=i-c.length;if(F>0){let{candidates:H,allBatchesFailed:Z,rateLimitHit:ae}=await ur(this.octokit,this.vetter,L.slice(0,10),oe,F,"starred",ne);c.push(...H),Z&&(l="All starred repo batches failed"),ae&&(p=!0),ge(X,`Found ${H.length} candidates from starred repos`)}}}let Re=null;if(c.length<i){ge(X,"Phase 2: General issue search...");let L=i-c.length,F=new Set(c.map(Y=>Y.issue.repo)),H=[];if(o&&o.length>1){for(let pe of o){let fe=ss[pe]??[];if(fe.length===0){m(X,`Scope "${pe}" has no labels, skipping tier`);continue}H.push({tier:pe,tierLabels:fe})}let Y=new Set(o.flatMap(pe=>ss[pe]??[])),de=t.labels.filter(pe=>!Y.has(pe));de.length>0&&H.push({tier:"custom",tierLabels:de})}else H.push({tier:"general",tierLabels:n});let Z=Math.ceil(L/H.length),ae=[];for(let{tier:Y,tierLabels:de}of H){let pe=`is:issue is:open ${Ho(de)} ${N} no:assignee`.replace(/ +/g," ").trim();try{let fe=await bs(this.octokit,{q:pe,sort:"created",order:"desc",per_page:Z*3});ge(X,`Phase 2 [${Y}]: ${fe.total_count} total, processing top ${fe.items.length}...`);let{candidates:Oe,allVetFailed:wt,rateLimitHit:Ar}=await qo(this.vetter,fe.items,ne,[Ue,A,F],Z,a,`Phase 2 [${Y}]`);ae.push(Oe);for(let As of Oe)F.add(As.issue.repo);wt&&(Re=(Re?Re+"; ":"")+`${Y}: all vetting failed`),Ar&&(p=!0),ge(X,`Found ${Oe.length} candidates from ${Y} tier`)}catch(fe){if(Se(fe)===401)throw fe;let Oe=S(fe);Re=(Re?Re+"; ":"")+`${Y}: ${Oe}`,ot(fe)&&(p=!0),m(X,`Error in ${Y} tier search: ${Oe}`),ae.push([])}}let ee=gc(ae);ee.length===0&&Re&&m(X,`All ${H.length} scope tiers failed in Phase 2: ${Re}`),c.push(...ee.slice(0,L))}let Ae=null;if(c.length<i){ge(X,"Phase 3: Searching actively maintained repos...");let L=i-c.length,F=new Date;F.setDate(F.getDate()-30);let H=F.toISOString().split("T")[0],Z=Xa(t.projectCategories??[]),ae=Z.length>0?`topic:${Z[0]}`:"",ee=`is:issue is:open no:assignee ${N} ${ae} stars:>=${a} pushed:>=${H} archived:false`.replace(/ +/g," ").trim();try{let Y=await bs(this.octokit,{q:ee,sort:"updated",order:"desc",per_page:L*3});ge(X,`Found ${Y.total_count} issues in maintained-repo search, processing top ${Y.items.length}...`);let de=new Set(c.map(wt=>wt.issue.repo)),{candidates:pe,allVetFailed:fe,rateLimitHit:Oe}=await qo(this.vetter,Y.items,ne,[Ue,A,de],L,a,"Phase 3");c.push(...pe),fe&&(Ae="all vetting failed"),Oe&&(p=!0),ge(X,`Found ${pe.length} candidates from maintained-repo search`)}catch(Y){let de=S(Y);Ae=de,ot(Y)&&(p=!0),m(X,`Error in maintained-repo search: ${de}`)}}if(c.length===0){let L=[u?`Phase 0 (merged-PR repos): ${u}`:null,Ke?`Phase 0.5 (preferred orgs): ${Ke}`:null,l?`Phase 1 (starred repos): ${l}`:null,Re?`Phase 2 (general): ${Re}`:null,Ae?`Phase 3 (maintained repos): ${Ae}`:null].filter(Boolean),F=L.length>0?` ${L.join(". ")}.`:"";if(p)return this.rateLimitWarning=`Search returned no results due to GitHub API rate limits.${F} Try again after the rate limit resets.`,[];throw new re(`No issue candidates found across all search phases.${F} Try adjusting your search criteria (languages, labels) or check your network connection.`)}return p&&(this.rateLimitWarning=`Search results may be incomplete: GitHub API rate limits were hit during search. Found ${c.length} candidate${c.length===1?"":"s"} but some search phases failed. Try again after the rate limit resets for complete results.`),c.sort((L,F)=>{let H={merged_pr:0,preferred_org:1,starred:2,normal:3},Z=H[L.searchPriority]-H[F.searchPriority];if(Z!==0)return Z;let ae={approve:0,needs_review:1,skip:2},ee=ae[L.recommendation]-ae[F.recommendation];return ee!==0?ee:F.viabilityScore-L.viabilityScore}),Mo(c,2).slice(0,i)}async vetIssue(e){return this.vetter.vetIssue(e)}saveSearchResults(e){let t=[...e].sort((a,c)=>c.viabilityScore-a.viabilityScore),r=He(),o=fc.join(r,"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,p=c.labels.slice(0,3).join(", "),g=p.length>30?p.substring(0,27)+"...":p,b=c.title.length>50?c.title.substring(0,47)+"...":c.title,E=new Date(c.updatedAt).toLocaleDateString(),v=l==="approve"?"Y":l==="skip"?"N":"?";i+=`| ${u} | ${c.repo} | [#${c.number}](${c.url}) | ${b} | ${g} | ${E} | ${v} |
52
+ `;for(let a of t){let{issue:c,viabilityScore:u,recommendation:l}=a,p=c.labels.slice(0,3).join(", "),g=p.length>30?p.substring(0,27)+"...":p,b=c.title.length>50?c.title.substring(0,47)+"...":c.title,T=new Date(c.updatedAt).toLocaleDateString(),v=l==="approve"?"Y":l==="skip"?"N":"?";i+=`| ${u} | ${c.repo} | [#${c.number}](${c.url}) | ${b} | ${g} | ${T} | ${v} |
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
- `,ac.writeFileSync(o,i,"utf-8"),ge(Q,`Saved ${t.length} issues to ${o}`),o}formatCandidate(e){let{issue:t,vettingResult:r,projectHealth:o,recommendation:n,reasonsToApprove:i,reasonsToSkip:a}=e;return`
58
+ `,hc.writeFileSync(o,i,"utf-8"),ge(X,`Saved ${t.length} issues to ${o}`),o}formatCandidate(e){let{issue:t,vettingResult:r,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 @@ ${r.notes.length>0?`
85
85
  **Notes:**
86
86
  ${r.notes.map(u=>`- ${u}`).join(`
87
87
  `)}`:""}
88
- `}}});var ct,xp,lc,Dt,pc=P(()=>{"use strict";Bt();tr();ps();Nt();Se();Co();se();re();ct="issue-conversation",xp=gt,lc=new Set(["OWNER","MEMBER","COLLABORATOR"]),Dt=class{octokit;stateManager;constructor(e){this.octokit=ye(e),this.stateManager=U()}async fetchCommentedIssues(e=30){let t=this.stateManager.getState().config;if(!t.githubUsername)throw new tt("No GitHub username configured. Run setup first.");let r=t.githubUsername,o=new Date;o.setDate(o.getDate()-e);let n=o.toISOString().split("T")[0];T(ct,`Fetching commented issues for @${r} (last ${e} days)...`);let{data:i}=await this.octokit.search.issuesAndPullRequests({q:`commenter:${r} type:issue state:open updated:>=${n}`,sort:"updated",order:"desc",per_page:100});i.total_count>100&&m(ct,`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(E=>E.status==="claimed"||E.status==="in_progress"||E.status==="pr_submitted").map(E=>`${E.repo}#${E.number}`)),u=new Set((t.aiPolicyBlocklist||[]).map(E=>E.toLowerCase())),l=[];for(let E of i.items){if(E.pull_request)continue;let v=Tt(E.html_url);if(!v){m(ct,`Skipping issue with unparseable URL: ${E.html_url}`);continue}let{owner:A,repo:y}=v,$=`${A}/${y}`;He(A,r)||E.user?.login?.toLowerCase()!==r.toLowerCase()&&(t.excludeRepos.includes($)||t.excludeOrgs?.some(F=>A.toLowerCase()===F.toLowerCase())||u.has($.toLowerCase())||c.has(`${$}#${E.number}`)||l.push({item:E,repoFullName:$}))}T(ct,`Found ${l.length} commented issues to check`);let p=[],g=[];await Ks(l,async({item:E,repoFullName:v})=>{try{let A=await this.analyzeIssueConversation(E,v,r);A?p.push(A):g.push({issueUrl:E.html_url,error:"No user comment found despite commenter: search match (possible pagination or eventual consistency)"})}catch(A){let y=S(A);g.push({issueUrl:E.html_url,error:y}),m(ct,`Error analyzing issue ${E.html_url}: ${y}`)}},xp),g.length>0&&m(ct,`${g.length}/${l.length} issue analysis call(s) failed`),g.length===l.length&&l.length>0&&m(ct,`All ${l.length} issue analysis call(s) failed. Possible systemic issue (rate limit, auth, network).`);let b={new_response:0,waiting:1,acknowledged:2};return p.sort((E,v)=>b[E.status]-b[v.status]),T(ct,`Analyzed ${p.length} issue conversations (${p.filter(E=>E.status==="new_response").length} with new responses)`),{issues:p,failures:g}}async analyzeIssueConversation(e,t,r){let{owner:o,repo:n}=jt(t),i=await Be(y=>this.octokit.issues.listComments({owner:o,repo:n,issue_number:e.number,per_page:100,page:y})),a=[];for(let y of i){if(!y.user?.login)continue;let $=y.user.login;a.push({author:$,body:y.body||"",createdAt:y.created_at,isUser:$.toLowerCase()===r.toLowerCase(),authorAssociation:String(y.author_association??"")})}a.sort((y,$)=>new Date(y.createdAt).getTime()-new Date($.createdAt).getTime());let c;for(let y of a)y.isUser&&(c=y);if(!c)return m(ct,`No user comment found for ${e.html_url} despite commenter: search match`),null;let u=new Date(c.createdAt),l=`@${r.toLowerCase()}`;function p(y){return lc.has(y.authorAssociation)||y.body.toLowerCase().includes(l)}let g;for(let y of a){if(y.isUser||Wt(y.author))continue;if(new Date(y.createdAt)>u){if(gs(y.body)||!p(y))continue;g={author:y.author,body:y.body.slice(0,200)+(y.body.length>200?"...":""),createdAt:y.createdAt,authorAssociation:y.authorAssociation}}}let b=(e.labels||[]).map(y=>y.name||"").filter(Boolean),E={repo:t,number:e.number,title:e.title,url:e.html_url,userLastCommentedAt:c.createdAt,labels:b,daysSinceUserComment:Me(u,new Date)};if(g)return{...E,status:"new_response",lastResponseAuthor:g.author,lastResponseBody:g.body,lastResponseAt:g.createdAt,isFromMaintainer:lc.has(g.authorAssociation)};let A=[...a].reverse().find(y=>Wt(y.author)?!1:y.isUser?!0:p(y))?.isUser?"acknowledged":"waiting";return{...E,status:A}}}});function It(s,e){let t=e.config.statusOverrides;if(!t||Object.keys(t).length===0)return s;let r=U(),o=[];return r.batch(()=>{o=s.map(n=>{try{let i=r.getStatusOverride(n.url,n.updatedAt);return i?Mp.has(i.status)?i.status===n.status?n:i.status==="waiting_on_maintainer"?{...n,status:i.status,actionReason:void 0,waitReason:"pending_review"}:{...n,status:i.status,waitReason:void 0,actionReason:"needs_response"}:(m("daily-logic",`Invalid override status "${i.status}" for ${n.url} \u2014 ignoring`),n):n}catch(i){return m("daily-logic",`Failed to apply status override for ${n.url}: ${S(i)}`),n}})}),o}function gc(s,e){let t=new Map;for(let r of s){if(!r.repo){m(e,`Skipping PR #${r.number} (${r.url}) with empty repo field`);continue}let o=t.get(r.repo)||[];o.push(r),t.set(r.repo,o)}return t}function ut(s){return{number:s.number,url:s.url,title:s.title,repo:s.repo,daysSinceActivity:s.daysSinceActivity,status:s.status}}function fs(s){let e=gc(s,"GROUP_BY_REPO"),t=[];for(let[r,o]of e)t.push({repo:r,prs:o});return t}function bs(s){let e=gc(s,"COMPUTE_SIGNALS"),t=new Map;for(let[r,o]of e){let n=o.some(a=>a.lastMaintainerComment&&!dc.has(a.stalenessTier)),i=o.some(a=>!dc.has(a.stalenessTier));t.set(r,{isResponsive:n,hasActiveMaintainers:i})}return t}function ys(s,e,t){let r=s.length,o=s.filter(l=>l.status==="needs_addressing"&&l.actionReason&&Up.has(l.actionReason)).length,n=r<e,i=o===0,a=n&&i,c,u=t>0?` + ${t} shelved`:"";if(a)c=`You have capacity: ${r}/${e} active PRs${u}, no critical issues`;else{let l=[];n||l.push(`at PR limit (${r}/${e}${u})`),i||l.push(`${o} critical issue${o===1?"":"s"} need attention`),c=`No capacity: ${l.join(", ")}`}return{hasCapacity:a,activePRCount:r,maxActivePRs:e,shelvedPRCount:t,criticalIssueCount:o,reason:c}}function _s(s,e){let t=[],r=s.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 r){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(),p;isNaN(l)?(m("daily-logic",`Invalid createdAt "${a.createdAt}" for PR ${a.url}, assuming new contribution`),p=!0):p=isNaN(o)||l>o,t.push({type:u,pr:a,label:c,isNewContribution:p})}return t}function Rs(s,e,t=[]){let r=t.filter(a=>a.status==="new_response"),o=[],n=s.length>0,i=r.length>0;if(n){let a=s.length===1;o.push({key:"address_all",label:a?"Address this issue (Recommended)":`Work through all ${s.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 ${r.length} issue repl${r.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:s.length,hasCapacity:e.hasCapacity,hasIssueResponses:i,issueResponseCount:r.length}}}function ws(s,e,t=0){let r=e>0?`${e} need${e===1?"s":""} attention`:"all on track",o=t>0?` | ${t} issue repl${t===1?"y":"ies"}`:"";return`\u{1F4CA} ${s.summary.totalActivePRs} Active PRs | ${r}${o}`}function Es(s,e,t=[]){let r=[];if(r.push("## OSS Dashboard"),r.push(""),r.push(`\u{1F4CA} **${s.summary.totalActivePRs} Active PRs** | ${s.summary.totalMergedAllTime} Merged | ${s.summary.mergeRate}% Merge Rate`),r.push('\u2713 Dashboard generated \u2014 say "open dashboard" to view in browser'),r.push(""),s.needsAddressingPRs.length>0){r.push("### \u274C Needs Addressing");for(let a of s.needsAddressingPRs)r.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),r.push(` \u2514\u2500 ${a.displayLabel} ${a.displayDescription}`);r.push("")}if(s.waitingOnMaintainerPRs.length>0){r.push("### \u23F3 Waiting on Maintainer");for(let a of s.waitingOnMaintainerPRs)r.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),r.push(` \u2514\u2500 ${a.displayDescription}`);r.push("")}if(s.recentlyMergedPRs.length>0){r.push("### \u{1F389} Recently Merged");for(let a of s.recentlyMergedPRs){let c=a.mergedAt?new Date(a.mergedAt).toLocaleDateString():"";r.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}${c?` (merged ${c})`:""}`)}r.push("")}if(s.recentlyClosedPRs.length>0){r.push("### \u{1F6AB} Recently Closed");for(let a of s.recentlyClosedPRs){let c=a.closedAt?new Date(a.closedAt).toLocaleDateString():"";r.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}${c?` (closed ${c})`:""}`)}r.push("")}if(s.autoUnshelvedPRs.length>0){r.push("### \u{1F514} Auto-Unshelved"),r.push("> These PRs were shelved but a maintainer engaged \u2014 moved back to active.");for(let a of s.autoUnshelvedPRs)r.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title} (${a.status.replace(/_/g," ")})`);r.push("")}if(s.shelvedPRs.length>0){r.push("### \u{1F4E6} Shelved");for(let a of s.shelvedPRs)r.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);r.push("")}if(t.length>0){r.push("### \u{1F4AC} Issue Replies");for(let a of t){r.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);let c=Ds(a.lastResponseAt);r.push(` \u2514\u2500 @${a.lastResponseAuthor}: "${a.lastResponseBody.slice(0,80)}${a.lastResponseBody.length>80?"...":""}"${c?` (${c})`:""}`)}r.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 r.push(`**Capacity:** ${o} ${n} (${e.activePRCount}/${e.maxActivePRs} PRs${i})`),r.join(`
89
- `)}function jo(s,e,t=[]){if(console.log(`
88
+ `}}});var lt,Jp,yc,It,_c=P(()=>{"use strict";Wt();rr();gs();qt();ve();Oo();te();se();lt="issue-conversation",Jp=ht,yc=new Set(["OWNER","MEMBER","COLLABORATOR"]),It=class{octokit;stateManager;constructor(e){this.octokit=ye(e),this.stateManager=U()}async fetchCommentedIssues(e=30){let t=this.stateManager.getState().config;if(!t.githubUsername)throw new rt("No GitHub username configured. Run setup first.");let r=t.githubUsername,o=new Date;o.setDate(o.getDate()-e);let n=o.toISOString().split("T")[0];R(lt,`Fetching commented issues for @${r} (last ${e} days)...`);let{data:i}=await this.octokit.search.issuesAndPullRequests({q:`commenter:${r} type:issue state:open updated:>=${n}`,sort:"updated",order:"desc",per_page:100});i.total_count>100&&m(lt,`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(T=>T.status==="claimed"||T.status==="in_progress"||T.status==="pr_submitted").map(T=>`${T.repo}#${T.number}`)),u=new Set((t.aiPolicyBlocklist||[]).map(T=>T.toLowerCase())),l=[];for(let T of i.items){if(T.pull_request)continue;let v=vt(T.html_url);if(!v){m(lt,`Skipping issue with unparseable URL: ${T.html_url}`);continue}let{owner:A,repo:y}=v,$=`${A}/${y}`;qe(A,r)||T.user?.login?.toLowerCase()!==r.toLowerCase()&&(t.excludeRepos.includes($)||t.excludeOrgs?.some(I=>A.toLowerCase()===I.toLowerCase())||u.has($.toLowerCase())||c.has(`${$}#${T.number}`)||l.push({item:T,repoFullName:$}))}R(lt,`Found ${l.length} commented issues to check`);let p=[],g=[];await Ys(l,async({item:T,repoFullName:v})=>{try{let A=await this.analyzeIssueConversation(T,v,r);A?p.push(A):g.push({issueUrl:T.html_url,error:"No user comment found despite commenter: search match (possible pagination or eventual consistency)"})}catch(A){let y=S(A);g.push({issueUrl:T.html_url,error:y}),m(lt,`Error analyzing issue ${T.html_url}: ${y}`)}},Jp),g.length>0&&m(lt,`${g.length}/${l.length} issue analysis call(s) failed`),g.length===l.length&&l.length>0&&m(lt,`All ${l.length} issue analysis call(s) failed. Possible systemic issue (rate limit, auth, network).`);let b={new_response:0,waiting:1,acknowledged:2};return p.sort((T,v)=>b[T.status]-b[v.status]),R(lt,`Analyzed ${p.length} issue conversations (${p.filter(T=>T.status==="new_response").length} with new responses)`),{issues:p,failures:g}}async analyzeIssueConversation(e,t,r){let{owner:o,repo:n}=Ht(t),i=await Ve(y=>this.octokit.issues.listComments({owner:o,repo:n,issue_number:e.number,per_page:100,page:y})),a=[];for(let y of i){if(!y.user?.login)continue;let $=y.user.login;a.push({author:$,body:y.body||"",createdAt:y.created_at,isUser:$.toLowerCase()===r.toLowerCase(),authorAssociation:String(y.author_association??"")})}a.sort((y,$)=>new Date(y.createdAt).getTime()-new Date($.createdAt).getTime());let c;for(let y of a)y.isUser&&(c=y);if(!c)return m(lt,`No user comment found for ${e.html_url} despite commenter: search match`),null;let u=new Date(c.createdAt),l=`@${r.toLowerCase()}`;function p(y){return yc.has(y.authorAssociation)||y.body.toLowerCase().includes(l)}let g;for(let y of a){if(y.isUser||Jt(y.author))continue;if(new Date(y.createdAt)>u){if(hs(y.body)||!p(y))continue;g={author:y.author,body:y.body.slice(0,200)+(y.body.length>200?"...":""),createdAt:y.createdAt,authorAssociation:y.authorAssociation}}}let b=(e.labels||[]).map(y=>y.name||"").filter(Boolean),T={repo:t,number:e.number,title:e.title,url:e.html_url,userLastCommentedAt:c.createdAt,labels:b,daysSinceUserComment:Le(u,new Date)};if(g)return{...T,status:"new_response",lastResponseAuthor:g.author,lastResponseBody:g.body,lastResponseAt:g.createdAt,isFromMaintainer:yc.has(g.authorAssociation)};let A=[...a].reverse().find(y=>Jt(y.author)?!1:y.isUser?!0:p(y))?.isUser?"acknowledged":"waiting";return{...T,status:A}}}});function xt(s,e){let t=e.config.statusOverrides;if(!t||Object.keys(t).length===0)return s;let r=U(),o=[];return r.batch(()=>{o=s.map(n=>{try{let i=r.getStatusOverride(n.url,n.updatedAt);return i?Qp.has(i.status)?i.status===n.status?n:i.status==="waiting_on_maintainer"?{...n,status:i.status,actionReason:void 0,waitReason:"pending_review"}:{...n,status:i.status,waitReason:void 0,actionReason:"needs_response"}:(m("daily-logic",`Invalid override status "${i.status}" for ${n.url} \u2014 ignoring`),n):n}catch(i){return m("daily-logic",`Failed to apply status override for ${n.url}: ${S(i)}`),n}})}),o}function wc(s,e){let t=new Map;for(let r of s){if(!r.repo){m(e,`Skipping PR #${r.number} (${r.url}) with empty repo field`);continue}let o=t.get(r.repo)||[];o.push(r),t.set(r.repo,o)}return t}function pt(s){return{number:s.number,url:s.url,title:s.title,repo:s.repo,daysSinceActivity:s.daysSinceActivity,status:s.status}}function ys(s){let e=wc(s,"GROUP_BY_REPO"),t=[];for(let[r,o]of e)t.push({repo:r,prs:o});return t}function _s(s){let e=wc(s,"COMPUTE_SIGNALS"),t=new Map;for(let[r,o]of e){let n=o.some(a=>a.lastMaintainerComment&&!Rc.has(a.stalenessTier)),i=o.some(a=>!Rc.has(a.stalenessTier));t.set(r,{isResponsive:n,hasActiveMaintainers:i})}return t}function Rs(s,e,t){let r=s.length,o=s.filter(l=>l.status==="needs_addressing"&&l.actionReason&&Kp.has(l.actionReason)).length,n=r<e,i=o===0,a=n&&i,c,u=t>0?` + ${t} shelved`:"";if(a)c=`You have capacity: ${r}/${e} active PRs${u}, no critical issues`;else{let l=[];n||l.push(`at PR limit (${r}/${e}${u})`),i||l.push(`${o} critical issue${o===1?"":"s"} need attention`),c=`No capacity: ${l.join(", ")}`}return{hasCapacity:a,activePRCount:r,maxActivePRs:e,shelvedPRCount:t,criticalIssueCount:o,reason:c}}function ws(s,e){let t=[],r=s.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 r){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(),p;isNaN(l)?(m("daily-logic",`Invalid createdAt "${a.createdAt}" for PR ${a.url}, assuming new contribution`),p=!0):p=isNaN(o)||l>o,t.push({type:u,pr:a,label:c,isNewContribution:p})}return t}function Es(s,e,t=[]){let r=t.filter(a=>a.status==="new_response"),o=[],n=s.length>0,i=r.length>0;if(n){let a=s.length===1;o.push({key:"address_all",label:a?"Address this issue (Recommended)":`Work through all ${s.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 ${r.length} issue repl${r.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:s.length,hasCapacity:e.hasCapacity,hasIssueResponses:i,issueResponseCount:r.length}}}function Ts(s,e,t=0){let r=e>0?`${e} need${e===1?"s":""} attention`:"all on track",o=t>0?` | ${t} issue repl${t===1?"y":"ies"}`:"";return`\u{1F4CA} ${s.summary.totalActivePRs} Active PRs | ${r}${o}`}function Ss(s,e,t=[]){let r=[];if(r.push("## OSS Dashboard"),r.push(""),r.push(`\u{1F4CA} **${s.summary.totalActivePRs} Active PRs** | ${s.summary.totalMergedAllTime} Merged | ${s.summary.mergeRate}% Merge Rate`),r.push('\u2713 Dashboard generated \u2014 say "open dashboard" to view in browser'),r.push(""),s.needsAddressingPRs.length>0){r.push("### \u274C Needs Addressing");for(let a of s.needsAddressingPRs)r.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),r.push(` \u2514\u2500 ${a.displayLabel} ${a.displayDescription}`);r.push("")}if(s.waitingOnMaintainerPRs.length>0){r.push("### \u23F3 Waiting on Maintainer");for(let a of s.waitingOnMaintainerPRs)r.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),r.push(` \u2514\u2500 ${a.displayDescription}`);r.push("")}if(s.recentlyMergedPRs.length>0){r.push("### \u{1F389} Recently Merged");for(let a of s.recentlyMergedPRs){let c=a.mergedAt?new Date(a.mergedAt).toLocaleDateString():"";r.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}${c?` (merged ${c})`:""}`)}r.push("")}if(s.recentlyClosedPRs.length>0){r.push("### \u{1F6AB} Recently Closed");for(let a of s.recentlyClosedPRs){let c=a.closedAt?new Date(a.closedAt).toLocaleDateString():"";r.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}${c?` (closed ${c})`:""}`)}r.push("")}if(s.autoUnshelvedPRs.length>0){r.push("### \u{1F514} Auto-Unshelved"),r.push("> These PRs were shelved but a maintainer engaged \u2014 moved back to active.");for(let a of s.autoUnshelvedPRs)r.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title} (${a.status.replace(/_/g," ")})`);r.push("")}if(s.shelvedPRs.length>0){r.push("### \u{1F4E6} Shelved");for(let a of s.shelvedPRs)r.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);r.push("")}if(t.length>0){r.push("### \u{1F4AC} Issue Replies");for(let a of t){r.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);let c=Is(a.lastResponseAt);r.push(` \u2514\u2500 @${a.lastResponseAuthor}: "${a.lastResponseBody.slice(0,80)}${a.lastResponseBody.length>80?"...":""}"${c?` (${c})`:""}`)}r.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 r.push(`**Capacity:** ${o} ${n} (${e.activePRCount}/${e.maxActivePRs} PRs${i})`),r.join(`
89
+ `)}function Bo(s,e,t=[]){if(console.log(`
90
90
  \u{1F4CA} OSS Daily Check
91
91
  `),console.log(`Active PRs: ${s.summary.totalActivePRs}`),console.log(`Needing Attention: ${s.summary.totalNeedingAttention}`),console.log(`Merged (all time): ${s.summary.totalMergedAllTime}`),console.log(`Merge Rate: ${s.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
- `),s.needsAddressingPRs.length>0){console.log("\u274C Needs Addressing:");for(let o of s.needsAddressingPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` ${o.displayLabel} ${o.displayDescription}`);console.log("")}if(s.waitingOnMaintainerPRs.length>0){console.log("\u23F3 Waiting on Maintainer:");for(let o of s.waitingOnMaintainerPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` ${o.displayDescription}`);console.log("")}if(s.recentlyMergedPRs.length>0){console.log("\u{1F389} Recently Merged:");for(let o of s.recentlyMergedPRs){let n=o.mergedAt?new Date(o.mergedAt).toLocaleDateString():"";console.log(` - ${o.repo}#${o.number}: ${o.title}${n?` (merged ${n})`:""}`)}console.log("")}if(s.recentlyClosedPRs.length>0){console.log("\u{1F6AB} Recently Closed:");for(let o of s.recentlyClosedPRs){let n=o.closedAt?new Date(o.closedAt).toLocaleDateString():"";console.log(` - ${o.repo}#${o.number}: ${o.title}${n?` (closed ${n})`:""}`)}console.log("")}if(s.autoUnshelvedPRs.length>0){console.log("\u{1F514} Auto-Unshelved:");for(let o of s.autoUnshelvedPRs)console.log(` - ${o.repo}#${o.number}: ${o.title} (${o.status.replace(/_/g," ")})`);console.log("")}if(s.shelvedPRs.length>0){console.log("\u{1F4E6} Shelved:");for(let o of s.shelvedPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`);console.log("")}let r=t.filter(o=>o.status==="new_response");if(r.length>0){console.log("\u{1F4AC} Issue Replies:");for(let o of r)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 zt,Up,dc,Mp,mc=P(()=>{"use strict";Se();re();se();Nt();zt=new Set(["needs_addressing"]),Up=new Set(["needs_response","needs_changes","failing_ci","merge_conflict"]),dc=new Set(["dormant","approaching_dormant"]),Mp=new Set(["needs_addressing","waiting_on_maintainer"])});function No(s){let{repoScores:e,activePRCount:t}=s,r=0,o=0,n=[];for(let c of Object.values(e))r+=c.mergedPRCount,o+=c.closedWithoutMergeCount,c.mergedPRCount>0&&n.push({repo:c.repo,mergedCount:c.mergedPRCount});let i=r+o,a=i>0?r/i:0;return n.sort((c,u)=>u.mergedCount-c.mergedCount),{totalMerged:r,totalClosed:o,mergeRate:a,activePRs:t,reposContributed:n.length,topRepos:n.slice(0,10)}}var Ho=P(()=>{"use strict"});async function qo(s,e,t){for(let r of Lp)try{T(Ft,`Checking ${e}/${t} for template at ${r}`);let{data:o}=await s.repos.getContent({owner:e,repo:t,path:r});if(Array.isArray(o)){T(Ft,`${r} is a directory (multiple templates?), skipping`);continue}if(o.type!=="file"){T(Ft,`${r} is type "${o.type}", skipping`);continue}if(!o.content){T(Ft,`${r} has no content, skipping`);continue}let n=Buffer.from(o.content,"base64").toString("utf-8");return T(Ft,`Found PR template at ${r} (${n.length} chars)`),{template:n,source:r}}catch(o){if(ve(o)===404)continue;if(be(o))throw o;let n=S(o);return m(Ft,`Error checking ${e}/${t}/${r}: ${n}`),{template:null,source:null,error:n}}return T(Ft,`No PR template found for ${e}/${t}`),{template:null,source:null}}var Ft,Lp,Bo=P(()=>{"use strict";re();se();Ft="pr-template",Lp=[".github/PULL_REQUEST_TEMPLATE.md",".github/pull_request_template.md","docs/pull_request_template.md","pull_request_template.md"]});var ie=P(()=>{"use strict";Nt();Ua();uc();nr();pc();tr();Bt();Se();se();re();Vt();mc();Ho();Bo();Le()});function hc(s){let e=t=>t.map(r=>r.url);return{generatedAt:s.generatedAt,openPRs:s.openPRs,needsAddressingPRs:e(s.needsAddressingPRs),waitingOnMaintainerPRs:e(s.waitingOnMaintainerPRs),recentlyClosedPRs:s.recentlyClosedPRs,recentlyMergedPRs:s.recentlyMergedPRs,shelvedPRs:s.shelvedPRs,autoUnshelvedPRs:s.autoUnshelvedPRs,summary:s.summary}}function fc(s){return s.map(e=>({type:e.type,prUrl:e.pr.url,label:e.label,isNewContribution:e.isNewContribution}))}function bc(s){return s.map(e=>({repo:e.repo,prUrls:e.prs.map(t=>t.url)}))}function jp(s){return{success:!0,data:s,timestamp:new Date().toISOString()}}function Np(s){return{success:!1,error:s,timestamp:new Date().toISOString()}}function Y(s){console.log(JSON.stringify(jp(s),null,2))}function yc(s){console.log(JSON.stringify(Np(s),null,2))}var Vo=P(()=>{"use strict"});function _c(s,e,t,r){let o=s.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+(et(l.stargazersCount,n)?0:l.closedWithoutMergeCount||0),0),c=r!==void 0?Math.max(r,a):a;return{activePRs:o.totalActivePRs,shelvedPRs:(s.shelvedPRs||[]).length,mergedPRs:i,closedPRs:c,mergeRate:`${(o.mergeRate??0).toFixed(1)}%`}}function Wo(s,e){let t={...s};for(let[r,o]of Object.entries(e))t[r]=o;return t}function zo(s,e,t,r,o){let n=U(),i=n.getState();try{Object.keys(e).length>0&&n.setMonthlyMergedCounts(Wo(i.monthlyMergedCounts||{},e))}catch(a){m(he,`Failed to store monthly merged counts: ${S(a)}`)}try{Object.keys(t).length>0&&n.setMonthlyClosedCounts(Wo(i.monthlyClosedCounts||{},t))}catch(a){m(he,`Failed to store monthly closed counts: ${S(a)}`)}try{let a={...r};for(let[c,u]of Object.entries(o))a[c]=(a[c]||0)+u;for(let c of s)if(c.createdAt){let u=c.createdAt.slice(0,7);a[u]=(a[u]||0)+1}Object.keys(a).length>0&&n.setMonthlyOpenedCounts(Wo(i.monthlyOpenedCounts||{},a))}catch(a){m(he,`Failed to store monthly opened counts: ${S(a)}`)}}async function Jo(s){let e=U(),t=new Gt(s),r=new Dt(s),o=ye(s),n=e.getState().config,i=cr(e.getState()),a=e.getMergedPRWatermark(),c=e.getClosedPRWatermark(),[{prs:u,failures:l},p,g,b,E,v,A,y]=await Promise.all([t.fetchUserOpenPRs(),t.fetchRecentlyClosedPRs().catch(w=>{if(be(w))throw w;return m(he,`Failed to fetch recently closed PRs: ${S(w)}`),[]}),t.fetchRecentlyMergedPRs().catch(w=>{if(be(w))throw w;return m(he,`Failed to fetch recently merged PRs: ${S(w)}`),[]}),t.fetchUserMergedPRCounts(i).catch(w=>{if(be(w))throw w;return m(he,`Failed to fetch merged PR counts: ${S(w)}`),Ot()}),t.fetchUserClosedPRCounts(i).catch(w=>{if(be(w))throw w;return m(he,`Failed to fetch closed PR counts: ${S(w)}`),Ot()}),r.fetchCommentedIssues().catch(w=>{if(be(w))throw w;let k=S(w);return k.includes("No GitHub username configured")?m(he,`Issue conversation tracking requires setup: ${k}`):m(he,`Issue conversation fetch failed: ${k}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${k}`}]}}),Fa(o,n,a).catch(w=>{if(be(w))throw w;return m(he,`Failed to fetch merged PRs for storage: ${S(w)}`),[]}),xa(o,n,c).catch(w=>{if(be(w))throw w;return m(he,`Failed to fetch closed PRs for storage: ${S(w)}`),[]})]),$=v.issues;v.failures.length>0&&m(he,`${v.failures.length} issue conversation check(s) failed`),l.length>0&&m(he,`${l.length} PR fetch(es) failed`);try{e.batch(()=>{try{e.addMergedPRs(A)}catch(ne){m(he,`Failed to store merged PRs: ${S(ne)}`)}try{e.addClosedPRs(y)}catch(ne){m(he,`Failed to store closed PRs: ${S(ne)}`)}let{monthlyCounts:w,monthlyOpenedCounts:k}=b,{monthlyCounts:N,monthlyOpenedCounts:M}=E;zo(u,w,N,k,M);let oe=t.generateDigest(u,p,g),Fe=new Set(e.getState().config.shelvedPRUrls||[]),J=u.filter(ne=>Fe.has(ne.url)||ne.stalenessTier==="dormant"&&ne.status!=="needs_addressing");oe.shelvedPRs=J.map(ut),oe.autoUnshelvedPRs=[],oe.summary.totalActivePRs=u.length-J.length,e.setLastDigest(oe)})}catch(w){m(he,`Failed to persist dashboard state: ${S(w)}`)}m(he,`Refreshed: ${u.length} PRs fetched`);let F=Ko(e.getMergedPRs()),q=Qo(e.getClosedPRs()),O=e.getState().lastDigest;if(!O)throw new Error("Dashboard data fetch failed: digest was not generated");return{digest:O,commentedIssues:$,allMergedPRs:F,allClosedPRs:q}}function Ko(s){let e=[],t=0;for(let r of s){let o=me(r.url);if(!o){t++;continue}e.push({url:r.url,repo:`${o.owner}/${o.repo}`,number:o.number,title:r.title,mergedAt:r.mergedAt})}return t>0&&m(he,`Skipped ${t} stored merged PR(s) with unparseable URLs`),e}function Qo(s){let e=[],t=0;for(let r of s){let o=me(r.url);if(!o){t++;continue}e.push({url:r.url,repo:`${o.owner}/${o.repo}`,number:o.number,title:r.title,closedAt:r.closedAt})}return t>0&&m(he,`Skipped ${t} stored closed PR(s) with unparseable URLs`),e}function Rc(s,e){let t={};for(let o of s.openPRs||[])t[o.repo]||(t[o.repo]={active:0,merged:0,closed:0}),t[o.repo].active++;let r=e.config.minStars??50;for(let[o,n]of Object.entries(e.repoScores||{}))et(n.stargazersCount,r)||(t[o]||(t[o]={active:0,merged:0,closed:0}),t[o].merged=n.mergedPRCount,t[o].closed=n.closedWithoutMergeCount);return t}function wc(s,e=10){return Object.entries(s).sort((t,r)=>r[1].merged+r[1].active+r[1].closed-(t[1].merged+t[1].active+t[1].closed)).slice(0,e)}function Ec(s){return{monthlyMerged:s.monthlyMergedCounts||{},monthlyClosed:s.monthlyClosedCounts||{},monthlyOpened:s.monthlyOpenedCounts||{}}}var he,Yo=P(()=>{"use strict";ie();se();re();rr();Se();Le();Ts();he="dashboard-data"});var Xo={};le(Xo,{CRITICAL_STATUSES:()=>zt,applyStatusOverrides:()=>It,assessCapacity:()=>ys,buildStarFilter:()=>cr,collectActionableIssues:()=>_s,computeActionMenu:()=>Rs,computeRepoSignals:()=>bs,executeDailyCheck:()=>ur,formatBriefSummary:()=>ws,formatSummary:()=>Es,groupPRsByRepo:()=>fs,printDigest:()=>jo,runDaily:()=>zp,runDailyForDisplay:()=>Jp,toShelvedPRRef:()=>ut});function cr(s){let e=s.config.minStars??50,t=new Map;for(let[r,o]of Object.entries(s.repoScores))o.stargazersCount!==void 0&&t.set(r,o.stargazersCount);if(t.size!==0)return{minStars:e,knownStarCounts:t}}async function Hp(s,e){let{prs:t,failures:r}=await s.fetchUserOpenPRs();r.length>0&&m(W,`${r.length} PR fetch(es) failed`);let o=U().getState(),n=cr(o),i=new Dt(e),[a,c,u,l,p]=await Promise.all([s.fetchUserMergedPRCounts(n).catch(F=>{if(be(F))throw F;return m(W,`Failed to fetch merged PR counts: ${S(F)}`),Ot()}),s.fetchUserClosedPRCounts(n).catch(F=>{if(be(F))throw F;return m(W,`Failed to fetch closed PR counts: ${S(F)}`),Ot()}),s.fetchRecentlyClosedPRs().catch(F=>{if(be(F))throw F;return m(W,`Failed to fetch recently closed PRs: ${S(F)}`),[]}),s.fetchRecentlyMergedPRs().catch(F=>{if(be(F))throw F;return m(W,`Failed to fetch recently merged PRs: ${S(F)}`),[]}),i.fetchCommentedIssues().catch(F=>{if(be(F))throw F;let q=S(F);return q.includes("No GitHub username configured")?m(W,`Issue conversation tracking requires setup: ${q}`):m(W,`Issue conversation fetch failed: ${q}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${q}`}]}})]),g=p.issues;p.failures.length>0&&m(W,`${p.failures.length} issue conversation check(s) failed`);let{repos:b,monthlyCounts:E,monthlyOpenedCounts:v}=a,{repos:A,monthlyCounts:y,monthlyOpenedCounts:$}=c;return{prs:t,failures:r,mergedCounts:b,closedCounts:A,monthlyCounts:E,monthlyClosedCounts:y,openedFromMerged:v,openedFromClosed:$,recentlyClosedPRs:u,recentlyMergedPRs:l,commentedIssues:g}}async function qp(s,e,t,r){let o=U();try{o.batch(()=>{let a=Object.values(o.getState().repoScores).filter(b=>b.mergedPRCount>0);if(t.size===0&&a.length>0)m(W,`Skipping stale repo reset: API returned 0 merged PR results but state has ${a.length} repo(s) with merges. Possible API issue.`);else for(let b of Object.values(o.getState().repoScores))t.has(b.repo)||o.updateRepoScore(b.repo,{mergedPRCount:0});let c=0;for(let[b,{count:E,lastMergedAt:v}]of t)try{o.updateRepoScore(b,{mergedPRCount:E,lastMergedAt:v||void 0})}catch(A){c++,m(W,`Failed to update merged count for ${b}: ${S(A)}`)}c===t.size&&t.size>0&&m(W,`[ALL_MERGED_COUNT_UPDATES_FAILED] All ${t.size} merged count update(s) failed.`);let u=Object.values(o.getState().repoScores).filter(b=>(b.closedWithoutMergeCount||0)>0);r.size===0&&u.length>0&&m(W,`API returned 0 closed PR results but state has ${u.length} repo(s) with closed PRs. Possible transient API issue.`);let l=0;for(let[b,E]of r)try{o.updateRepoScore(b,{closedWithoutMergeCount:E})}catch(v){l++,m(W,`Failed to update closed count for ${b}: ${S(v)}`)}l===r.size&&r.size>0&&m(W,`[ALL_CLOSED_COUNT_UPDATES_FAILED] All ${r.size} closed count update(s) failed.`);let p=bs(e),g=0;for(let[b,E]of p)try{o.updateRepoScore(b,{signals:E})}catch(v){g++,m(W,`Failed to update signals for ${b}: ${S(v)}`)}g===p.size&&p.size>0&&m(W,`[ALL_SIGNAL_UPDATES_FAILED] All ${p.size} signal update(s) failed. This may indicate corrupted state.`)})}catch(a){m(W,`Failed to persist repo score updates: ${S(a)}`)}let n=Object.keys(o.getState().repoScores),i;try{i=await s.fetchRepoMetadata(n)}catch(a){if(be(a))throw a;m(W,`Failed to fetch repo metadata: ${S(a)}`),m(W,"Repos without cached metadata will be excluded from dashboard stats and metadata badges until fetched on the next successful run."),i=new Map}try{o.batch(()=>{let a=0;for(let[u,{stars:l,language:p}]of i)try{o.updateRepoScore(u,{stargazersCount:l,language:p})}catch(g){a++,m(W,`Failed to update metadata for ${u}: ${S(g)}`)}a===i.size&&i.size>0&&m(W,`[ALL_METADATA_UPDATES_FAILED] All ${i.size} metadata update(s) failed.`);let c=0;for(let[u]of t)try{o.addTrustedProject(u)}catch(l){c++,m(W,`Failed to sync trusted project ${u}: ${S(l)}`)}c===t.size&&t.size>0&&m(W,`[ALL_TRUST_SYNCS_FAILED] All ${t.size} trusted project sync(s) failed. This may indicate corrupted state.`)})}catch(a){m(W,`Failed to persist metadata/trust updates: ${S(a)}`)}}function Bp(s,e,t,r){let o=U(),n=It(e,o.getState()),i=[],a=[],c=[];try{o.batch(()=>{for(let p of n)o.isPRShelved(p.url)?zt.has(p.status)?(o.unshelvePR(p.url),a.push(ut(p)),c.push(p)):i.push(ut(p)):p.stalenessTier==="dormant"&&!zt.has(p.status)?i.push(ut(p)):c.push(p);let l=s.generateDigest(n,t,r);l.shelvedPRs=i,l.autoUnshelvedPRs=a,l.summary.totalActivePRs=c.length,o.setLastDigest(l)})}catch(l){m(W,`Failed to persist partition state: ${S(l)}`)}let u=o.getState().lastDigest;return{activePRs:c,shelvedPRs:i,autoUnshelvedPRs:a,digest:u}}function Vp(s,e,t,r,o,n){let i=U(),a=ys(e,i.getState().config.maxActivePRs,t.length),c=[];try{i.batch(()=>{c=r.filter(v=>{let A=i.getIssueDismissedAt(v.url);if(!A)return!0;if(v.status==="new_response"){let y=new Date(v.lastResponseAt).getTime(),$=new Date(A).getTime();if(isNaN(y)||isNaN($))return m(W,`Invalid timestamp in dismiss check for ${v.url}, including issue`),!0;if(y>$){m(W,`Auto-undismissing issue ${v.url}: new response at ${v.lastResponseAt} after dismiss at ${A}`);try{i.undismissIssue(v.url)}catch(F){m(W,`Failed to persist auto-undismiss for ${v.url}: ${S(F)}`)}return!0}}return!1})})}catch(v){m(W,`Failed to persist auto-undismiss state: ${S(v)}`)}let u=c.filter(v=>v.status==="new_response"),l=Es(s,a,u),p=_s(e,n);s.summary.totalNeedingAttention=p.length;let g=ws(s,p.length,u.length),b=Rs(p,a,c),E=fs(e);return{digest:s,capacity:a,summary:l,briefSummary:g,actionableIssues:p,actionMenu:b,commentedIssues:c,repoGroups:E,failures:o}}function Wp(s){return{digest:hc(s.digest),capacity:s.capacity,summary:s.summary,briefSummary:s.briefSummary,actionableIssues:fc(s.actionableIssues),actionMenu:s.actionMenu,commentedIssues:s.commentedIssues,repoGroups:bc(s.repoGroups),failures:s.failures}}async function ur(s){let e=await Tc(s);return Wp(e)}async function Tc(s){let e=new Gt(s),{prs:t,failures:r,mergedCounts:o,closedCounts:n,monthlyCounts:i,monthlyClosedCounts:a,openedFromMerged:c,openedFromClosed:u,recentlyClosedPRs:l,recentlyMergedPRs:p,commentedIssues:g}=await Hp(e,s);await qp(e,t,o,n);try{U().batch(()=>{zo(t,i,a,c,u)})}catch(y){m(W,`Failed to persist monthly analytics: ${S(y)}`)}let b=U().getState().lastDigestAt,{activePRs:E,shelvedPRs:v,digest:A}=Bp(e,t,l,p);return Vp(A,E,v,g,r,b)}async function zp(){let s=Ee();return ur(s)}async function Jp(){let s=Ee();return Tc(s)}var W,Ts=P(()=>{"use strict";ie();se();re();rr();Yo();Vo();ie();W="daily"});var vc={};le(vc,{runStatus:()=>Kp});async function Kp(s){let e=U(),t=e.getStats(),r=e.getState(),o=r.lastDigestAt||r.lastRunAt,{totalTracked:n,...i}=t,a={stats:i,lastRunAt:r.lastRunAt};return s.offline&&(a.offline=!0,a.lastUpdated=o),a}var Sc=P(()=>{"use strict";ie()});var Cc={};le(Cc,{runSearch:()=>Qp});async function Qp(s){let e=Ee(),t=new $t(e),r=await t.searchIssues({maxResults:s.maxResults}),o=U(),{config:n}=o.getState(),i=n.excludeRepos||[],a=n.aiPolicyBlocklist??Rt.aiPolicyBlocklist??[],c={candidates:r.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 Pc=P(()=>{"use strict";ie()});function Ce(s,e,t){if(e.test(s))return;let r={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 te(`Invalid ${t} URL: ${s}. Expected format: ${r[t]}`)}function _e(s){if(s.length>kc)throw new te(`URL exceeds maximum length of ${kc} characters`);return s}function Zo(s){if(s.length>Ac)throw new te(`Message exceeds maximum length of ${Ac} characters`);return s}function Jt(s){if(!s||s.trim().length===0)throw new te("GitHub username cannot be empty.");let e=s.trim();if(e.length>Oc)throw new te(`GitHub username must be at most ${Oc} characters (got ${e.length}).`);if(!Yp.test(e))throw new te("GitHub username can only contain alphanumeric characters and hyphens.");if(e.startsWith("-"))throw new te("GitHub username cannot start with a hyphen.");if(e.endsWith("-"))throw new te("GitHub username cannot end with a hyphen.");if(Xp.test(e))throw new te("GitHub username cannot contain consecutive hyphens.");return e}var lt,pt,Gc,kc,Ac,Oc,Yp,Xp,Ve=P(()=>{"use strict";se();lt=/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\/\d+$/,pt=/^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\/\d+$/,Gc=/^https:\/\/github\.com\/[^/]+\/[^/]+\/(issues|pull)\/\d+$/,kc=2048,Ac=1e3;Oc=39,Yp=/^[a-zA-Z0-9-]+$/,Xp=/--/});var $c={};le($c,{runVet:()=>Zp});async function Zp(s){_e(s.issueUrl),Ce(s.issueUrl,pt,"issue");let e=Ee(),r=await new $t(e).vetIssue(s.issueUrl);return{issue:{repo:r.issue.repo,number:r.issue.number,title:r.issue.title,url:r.issue.url,labels:r.issue.labels},recommendation:r.recommendation,reasonsToApprove:r.reasonsToApprove,reasonsToSkip:r.reasonsToSkip,projectHealth:r.projectHealth,vettingResult:r.vettingResult}}var Dc=P(()=>{"use strict";ie();Ve()});var en={};le(en,{runTrack:()=>ed,runUntrack:()=>td});async function ed(s){_e(s.prUrl),Ce(s.prUrl,lt,"PR");let e=Ee(),t=ye(e),r=me(s.prUrl);if(!r||r.type!=="pull")throw new Error(`Invalid PR URL: ${s.prUrl}`);let{owner:o,repo:n,number:i}=r,{data:a}=await t.pulls.get({owner:o,repo:n,pull_number:i});return{pr:{repo:`${o}/${n}`,number:i,title:a.title,url:s.prUrl}}}async function td(s){return _e(s.prUrl),Ce(s.prUrl,lt,"PR"),{removed:!1,url:s.prUrl,message:"In v2, PRs are fetched fresh on each daily run \u2014 there is no local tracking list to remove from."}}var tn=P(()=>{"use strict";ie();Ve();Se()});var Ic={};le(Ic,{runRead:()=>sd});async function sd(s){if(!s.all&&!s.prUrl)throw new Error("PR URL or --all flag required");return s.prUrl&&_e(s.prUrl),s.all?{markedAsRead:0,all:!0,message:"In v2, PR read state is not tracked locally."}:{marked:!1,url:s.prUrl,message:"In v2, PR read state is not tracked locally."}}var Fc=P(()=>{"use strict";Ve()});var lr={};le(lr,{runClaim:()=>nd,runComments:()=>rd,runPost:()=>od});async function rd(s){_e(s.prUrl),Ce(s.prUrl,lt,"PR");let e=Ee(),t=U(),r=ye(e),o=me(s.prUrl);if(!o||o.type!=="pull")throw new Error("Invalid PR URL format");let{owner:n,repo:i,number:a}=o,{data:c}=await r.pulls.get({owner:n,repo:i,pull_number:a}),[u,l,p]=await Promise.all([Be(y=>r.pulls.listReviewComments({owner:n,repo:i,pull_number:a,per_page:100,page:y})),Be(y=>r.issues.listComments({owner:n,repo:i,issue_number:a,per_page:100,page:y})),Be(y=>r.pulls.listReviews({owner:n,repo:i,pull_number:a,per_page:100,page:y}))]),g=t.getState().config.githubUsername,b=y=>!(!y.user||y.user.login===g||y.user.type==="Bot"&&!s.showBots),E=u.filter(b).sort((y,$)=>new Date($.created_at).getTime()-new Date(y.created_at).getTime()),v=l.filter(b).sort((y,$)=>new Date($.created_at).getTime()-new Date(y.created_at).getTime()),A=p.filter(y=>b(y)&&y.body&&y.body.trim()).sort((y,$)=>new Date($.submitted_at||0).getTime()-new Date(y.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:A.map(y=>({user:y.user?.login,state:y.state,body:y.body??null,submittedAt:y.submitted_at??null})),reviewComments:E.map(y=>({user:y.user?.login,body:y.body,path:y.path,createdAt:y.created_at})),issueComments:v.map(y=>({user:y.user?.login,body:y.body,createdAt:y.created_at})),summary:{reviewCount:A.length,inlineCommentCount:E.length,discussionCommentCount:v.length}}}async function od(s){if(_e(s.url),Ce(s.url,Gc,"issue or PR"),!s.message.trim())throw new Error("No message provided");Zo(s.message);let e=Ee(),t=me(s.url);if(!t)throw new Error("Invalid GitHub URL format");let{owner:r,repo:o,number:n}=t,i=ye(e),{data:a}=await i.issues.createComment({owner:r,repo:o,issue_number:n,body:s.message});return{commentUrl:a.html_url,url:s.url}}async function nd(s){_e(s.issueUrl),Ce(s.issueUrl,pt,"issue");let e=Ee(),t=s.message||"Hi! I'd like to work on this issue. Could you assign it to me?";Zo(t);let r=me(s.issueUrl);if(!r||r.type!=="issues")throw new Error("Invalid issue URL format (must be an issue, not a PR)");let{owner:o,repo:n,number:i}=r,a=ye(e),{data:c}=await a.issues.createComment({owner:o,repo:n,issue_number:i,body:t});try{U().addIssue({id:i,url:s.issueUrl,repo:`${o}/${n}`,number:i,title:"(claimed)",status:"claimed",labels:[],createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),vetted:!1})}catch(u){console.error(`Warning: Comment posted on ${s.issueUrl} but failed to save to local state: ${u instanceof Error?u.message:u}`)}return{commentUrl:c.html_url,issueUrl:s.issueUrl}}var pr=P(()=>{"use strict";ie();ps();Ve()});var Uc={};le(Uc,{runConfig:()=>id});function xc(s){if(!Lt.includes(s))throw new Error(`Invalid scope "${s}". Valid scopes: ${Lt.join(", ")}`);return s}async function id(s){let e=U(),t=e.getState().config;if(!s.key)return{config:t};if(!s.value)throw new Error("Value required");let r=s.value;switch(s.key){case"username":e.updateConfig({githubUsername:Jt(r)});break;case"add-language":t.languages.includes(r)||e.updateConfig({languages:[...t.languages,r]});break;case"add-label":t.labels.includes(r)||e.updateConfig({labels:[...t.labels,r]});break;case"remove-label":if(!t.labels.includes(r))throw new Error(`Label "${r}" is not currently configured. Current labels: ${t.labels.join(", ")}`);e.updateConfig({labels:t.labels.filter(o=>o!==r)});break;case"add-scope":{let o=xc(r),n=t.scope??[];n.includes(o)||e.updateConfig({scope:[...n,o]});break}case"remove-scope":{let o=xc(r),n=t.scope??[];if(!n.includes(o))throw new Error(`Scope "${r}" is not currently set`);let i=n.filter(a=>a!==o);if(i.length===0)throw new Error("Cannot remove the last scope. Use setup to clear scopes entirely.");e.updateConfig({scope:i});break}case"exclude-repo":{let o=r.split("/");if(o.length!==2||!o[0]||!o[1])throw new Error(`Invalid repo format "${r}". Use "owner/repo" format. To exclude an entire org, use: config exclude-org ${r}`);let n=r.toLowerCase();t.excludeRepos.some(i=>i.toLowerCase()===n)||e.batch(()=>{e.updateConfig({excludeRepos:[...t.excludeRepos,r]}),e.cleanupExcludedData([r],[])});break}case"exclude-org":{if(r.includes("/"))throw new Error(`Invalid org name "${r}". Use just the org name (e.g., "facebook"), not "owner/repo" format. To exclude a specific repo, use: config exclude-repo ${r}`);let o=t.excludeOrgs??[];o.some(n=>n.toLowerCase()===r.toLowerCase())||e.batch(()=>{e.updateConfig({excludeOrgs:[...o,r]}),e.cleanupExcludedData([],[r])});break}case"issueListPath":e.updateConfig({issueListPath:r||void 0});break;default:throw new Error(`Unknown config key: ${s.key}`)}return{success:!0,key:s.key,value:r}}var Mc=P(()=>{"use strict";ie();Le();Ve()});var Lc={};le(Lc,{runInit:()=>ad});async function ad(s){return Jt(s.username),U().updateConfig({githubUsername:s.username}),{username:s.username,message:"Username saved. Run `daily` to fetch your open PRs from GitHub."}}var jc=P(()=>{"use strict";ie();Ve()});var rn={};le(rn,{runCheckSetup:()=>ud,runSetup:()=>cd});function sn(s,e){let t=Number(s);if(!Number.isFinite(t)||t<1||!Number.isInteger(t))throw new te(`Invalid value for ${e}: "${s}". Must be a positive integer.`);return t}async function cd(s){let e=U(),t=e.getState().config;if(s.set&&s.set.length>0){let r={},o=[];return e.batch(()=>{for(let n of s.set){let[i,...a]=n.split("="),c=a.join("=");switch(i){case"username":Jt(c),e.updateConfig({githubUsername:c}),r[i]=c;break;case"maxActivePRs":{let u=sn(c,"maxActivePRs");e.updateConfig({maxActivePRs:u}),r[i]=String(u);break}case"dormantDays":{let u=sn(c,"dormantDays");e.updateConfig({dormantThresholdDays:u}),r[i]=String(u);break}case"approachingDays":{let u=sn(c,"approachingDays");e.updateConfig({approachingDormantDays:u}),r[i]=String(u);break}case"languages":e.updateConfig({languages:c.split(",").map(u=>u.trim())}),r[i]=c;break;case"labels":e.updateConfig({labels:c.split(",").map(u=>u.trim())}),r[i]=c;break;case"showHealthCheck":e.updateConfig({showHealthCheck:c!=="false"}),r[i]=c!=="false"?"true":"false";break;case"squashByDefault":c==="ask"?(e.updateConfig({squashByDefault:"ask"}),r[i]="ask"):(e.updateConfig({squashByDefault:c!=="false"}),r[i]=c!=="false"?"true":"false");break;case"minStars":{let u=Number(c);if(!Number.isFinite(u)||!Number.isInteger(u)||u<0)throw new te(`Invalid value for minStars: "${c}". Must be a non-negative integer.`);e.updateConfig({minStars:u}),r[i]=String(u);break}case"includeDocIssues":e.updateConfig({includeDocIssues:c==="true"}),r[i]=c==="true"?"true":"false";break;case"aiPolicyBlocklist":{let u=c.split(",").map(g=>g.trim()).filter(Boolean),l=[],p=[];for(let g of u){let b=g.replace(/\s+/g,"");/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/.test(b)?l.push(b):p.push(g)}if(p.length>0&&(o.push(`Warning: Skipping invalid entries (expected "owner/repo" format): ${p.join(", ")}`),r.aiPolicyBlocklist_invalidEntries=p.join(", ")),l.length===0&&u.length>0){o.push("Warning: All entries were invalid. Blocklist not updated."),r[i]="(all entries invalid)";break}e.updateConfig({aiPolicyBlocklist:l}),r[i]=l.length>0?l.join(", "):"(empty)";break}case"projectCategories":{let u=c.split(",").map(b=>b.trim()).filter(Boolean),l=[],p=[];for(let b of u)Jr.includes(b)?l.push(b):p.push(b);p.length>0&&o.push(`Unknown project categories: ${p.join(", ")}. Valid: ${Jr.join(", ")}`);let g=[...new Set(l)];e.updateConfig({projectCategories:g}),r[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 p=[...new Set(l)];e.updateConfig({preferredOrgs:p}),r[i]=p.length>0?p.join(", "):"(empty)";break}case"scope":{let u=c.split(",").map(b=>b.trim()).filter(Boolean),l=[],p=[];for(let b of u)Lt.includes(b)?l.push(b):p.push(b);p.length>0&&o.push(`Unknown issue scopes: ${p.join(", ")}. Valid: ${Lt.join(", ")}`);let g=[...new Set(l)];e.updateConfig({scope:g.length>0?g:void 0}),r[i]=g.length>0?g.join(", "):"(empty \u2014 using labels only)";break}case"issueListPath":e.updateConfig({issueListPath:c||void 0}),r[i]=c||"(cleared)";break;case"complete":c==="true"&&(e.markSetupComplete(),r[i]="true");break;default:o.push(`Unknown setting: ${i}`)}}}),{success:!0,settings:r,warnings:o.length>0?o:void 0}}return t.setupComplete&&!s.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??[],scope:t.scope??[]}}:{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:"scope",prompt:"What scope of issues do you want to discover? (beginner, intermediate, advanced \u2014 leave empty for default labels only)",current:t.scope??[],default:[],type:"list"},{setting:"aiPolicyBlocklist",prompt:"Repos with anti-AI contribution policies to block (owner/repo, comma-separated)?",current:t.aiPolicyBlocklist??Rt.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 ud(){let s=U();return{setupComplete:s.isSetupComplete(),username:s.getState().config.githubUsername}}var on=P(()=>{"use strict";ie();se();Ve();Le()});function vs(){return Hc.join(Ne(),"dashboard-server.pid")}function gr(s){Kt.writeFileSync(vs(),JSON.stringify(s),{mode:384})}function Qt(){try{let s=Kt.readFileSync(vs(),"utf-8"),e=JSON.parse(s);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(dr,"PID file has invalid structure, ignoring"),null):e}catch(s){return s.code!=="ENOENT"&&m(dr,`Failed to read PID file: ${s.message}`),null}}function bt(){try{Kt.unlinkSync(vs())}catch(s){s.code!=="ENOENT"&&m(dr,`Failed to remove PID file: ${s.message}`)}}function Ss(s){return new Promise(e=>{let t=Nc.get(`http://127.0.0.1:${s}/api/data`,{timeout:2e3},r=>{r.resume(),e(r.statusCode===200)});t.on("error",()=>e(!1)),t.on("timeout",()=>{t.destroy(),e(!1)})})}async function mr(){let s=Qt();if(!s)return null;try{process.kill(s.pid,0)}catch(e){let t=e.code;return t!=="ESRCH"&&t!=="EPERM"&&m(dr,`Unexpected error checking PID ${s.pid}: ${e.message}`),bt(),null}return await Ss(s.port)?{port:s.port,url:`http://oss.localhost:${s.port}`}:(bt(),null)}var Nc,Kt,Hc,dr,hr=P(()=>{"use strict";Nc=V(require("http"),1),Kt=V(require("fs"),1),Hc=V(require("path"),1);ie();re();dr="dashboard-server"});function gd(s){return new Promise(e=>setTimeout(e,s))}async function Bc(s){if(!fr())return null;let t=await mr();if(t){let c=Qt(),u=Qe();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(p){p.code==="ESRCH"?l=!0:console.error(`[STARTUP] Could not kill outdated dashboard (PID ${c.pid}): ${p.message}`)}if(l)bt();else return{url:t.url,port:t.port,alreadyRunning:!0}}else return{url:t.url,port:t.port,alreadyRunning:!0}}let r=s?.port??ld,o=process.argv[1],n=(0,qc.spawn)("node",[o,"dashboard","serve","--port",String(r),"--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<dd;c++){if(await gd(pd),i||a)return null;let u=Qt();if(u&&await Ss(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 qc,ld,pd,dd,Vc=P(()=>{"use strict";qc=require("child_process");hr();nn();ie();ld=3e3,pd=200,dd=25});var Qc={};le(Qc,{countIssueListItems:()=>Jc,detectIssueList:()=>Kc,openInBrowser:()=>br,parseIssueListPathFromConfig:()=>zc,runStartup:()=>md});function zc(s){let e=s.match(/^---\n([\s\S]*?)\n---/);if(!e)return;let r=e[1].match(/issueListPath:\s*["']?([^"'\n]+)["']?/);return r?r[1].trim():void 0}function Jc(s){let e=0,t=0,r=s.split(`
94
- `);for(let o of r)/^\s*- (?:~~)?\[/.test(o)&&(/~~|\*\*Done\*\*/.test(o)?t++:e++);return{availableCount:e,completedCount:t}}function Kc(){let s="",e="auto-detected";try{let r=U().getState().config.issueListPath;r&&yt.existsSync(r)&&(s=r,e="configured")}catch(t){m("startup",`Could not read issueListPath from state: ${S(t)}`)}if(!s){let t=".claude/oss-autopilot/config.md";if(yt.existsSync(t))try{let r=yt.readFileSync(t,"utf-8"),o=zc(r);o&&yt.existsSync(o)&&(s=o,e="configured")}catch(r){console.error("[STARTUP] Failed to read config:",S(r))}}if(!s){let t=["open-source/potential-issue-list.md","oss/issue-list.md","issues.md"];for(let r of t)if(yt.existsSync(r)){s=r,e="auto-detected";break}}if(s)try{let t=yt.readFileSync(s,"utf-8"),{availableCount:r,completedCount:o}=Jc(t);return{path:s,source:e,availableCount:r,completedCount:o}}catch(t){return console.error(`[STARTUP] Failed to read issue list at ${s}:`,S(t)),{path:s,source:e,availableCount:0,completedCount:0}}}function br(s){let e,t;switch(process.platform){case"darwin":e="open",t=[s];break;case"win32":e="cmd",t=["/c","start","",s];break;default:e="xdg-open",t=[s];break}(0,Wc.execFile)(e,t,r=>{r&&console.error(`[STARTUP] Failed to open dashboard in browser: ${r.message}`)})}async function md(){let s=Qe(),e=U(),t=!1;if(!e.isSetupComplete()){let c=await xs();if(c)try{e.initializeWithDefaults(c),t=!0}catch(u){return console.error(`[STARTUP] Auto-detected username "${c}" but failed to save config:`,S(u)),{version:s,setupComplete:!1}}else return{version:s,setupComplete:!1}}let r=ot();if(!r)return{version:s,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 ur(r),n,i=!1;if(o.digest.summary.totalActivePRs>0)try{let c=await Bc();c?(n=c.url,br(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:",S(c))}i&&(o.briefSummary+=" | Dashboard opened in browser");let a=Kc();return{version:s,setupComplete:!0,autoDetected:t,daily:o,dashboardUrl:n,issueList:a}}var yt,Wc,an=P(()=>{"use strict";yt=V(require("fs"),1),Wc=require("child_process");ie();se();re();Ts();Vc()});var Yt,Yc=P(()=>{"use strict";Yt=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(r=>r>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 xt={};le(xt,{VALID_TARGETS:()=>cn,runMove:()=>hd});async function hd(s){_e(s.prUrl),Ce(s.prUrl,lt,"PR");let e=s.target;if(!cn.includes(e))throw new Error(`Invalid target "${s.target}". Must be one of: ${cn.join(", ")}`);let t=U();switch(e){case"attention":case"waiting":{let r=e==="attention"?"needs_addressing":"waiting_on_maintainer",o=e==="attention"?"Need Attention":"Waiting on Maintainer",n=new Date().toISOString();return t.batch(()=>{t.setStatusOverride(s.prUrl,r,n),t.unshelvePR(s.prUrl)}),{url:s.prUrl,target:e,description:`Moved to ${o}`}}case"shelved":return t.batch(()=>{t.shelvePR(s.prUrl),t.clearStatusOverride(s.prUrl)}),{url:s.prUrl,target:e,description:"Shelved \u2014 excluded from capacity and actionable items"};case"auto":return t.batch(()=>{t.clearStatusOverride(s.prUrl),t.unshelvePR(s.prUrl)}),{url:s.prUrl,target:e,description:"Reset to computed status"};default:{let r=e;throw new Error(`Unhandled move target: ${r}`)}}}var cn,Ut=P(()=>{"use strict";ie();Ve();cn=["attention","waiting","shelved","auto"]});var su={};le(su,{findRunningDashboardServer:()=>mr,getDashboardPidPath:()=>vs,isDashboardServerRunning:()=>Ss,readDashboardServerInfo:()=>Qt,removeDashboardServerInfo:()=>bt,startDashboardServer:()=>Rd,writeDashboardServerInfo:()=>gr});function Cs(s,e,t,r,o){let n=Rc(s,e),i=wc(n),{monthlyMerged:a,monthlyOpened:c,monthlyClosed:u}=Ec(e),l=r??Ko(U().getMergedPRs()),p=o??Qo(U().getClosedPRs()),g=e.config.minStars??50,b=e.repoScores||{},E=O=>!et(b[O.repo]?.stargazersCount,g),v=l.filter(E),A=p.filter(E),y=_c(s,e,v.length,A.length),$=e.config.dismissedIssues||{},F=t.filter(O=>O.status==="new_response"&&!(O.url in $)),q={};for(let[O,w]of Object.entries(b))(w.stargazersCount!==void 0||w.language!==void 0)&&(q[O]={stars:w.stargazersCount,language:w.language});return{stats:y,prsByRepo:n,topRepos:i.map(([O,w])=>({repo:O,...w})),monthlyMerged:a,monthlyOpened:c,monthlyClosed:u,activePRs:It(s.openPRs||[],e),shelvedPRUrls:e.config.shelvedPRUrls||[],recentlyMergedPRs:s.recentlyMergedPRs||[],recentlyClosedPRs:s.recentlyClosedPRs||[],autoUnshelvedPRs:s.autoUnshelvedPRs||[],commentedIssues:t,issueResponses:F,allMergedPRs:v,allClosedPRs:A,repoMetadata:q}}function _d(s,e=fd){return new Promise((t,r)=>{let o=[],n=0,i=!1;s.on("data",a=>{if(!i){if(n+=a.length,n>e){i=!0,s.destroy(),r(new Error("Body too large"));return}o.push(a)}}),s.on("end",()=>{i||t(Buffer.concat(o).toString("utf-8"))}),s.on("error",a=>{i||r(a)})})}function tu(s){s.setHeader("X-Content-Type-Options","nosniff"),s.setHeader("X-Frame-Options","DENY"),s.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'"),s.setHeader("Referrer-Policy","strict-origin-when-cross-origin")}function Zc(s,e){let t=s.headers.origin;return t?[`http://localhost:${e}`,`http://127.0.0.1:${e}`,`http://oss.localhost:${e}`].includes(t):!0}function yr(s,e,t){tu(s),s.setHeader("Cache-Control","no-store");let r=JSON.stringify(t);s.writeHead(e,{"Content-Type":"application/json","Content-Length":Buffer.byteLength(r)}),s.end(r)}function ue(s,e,t){yr(s,e,{error:t})}async function Rd(s){let{port:e,assetsDir:t,token:r,open:o}=s,n=U(),i=Ye.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=Cs(a,n.getState(),c)}catch(O){throw new Error(`Failed to build dashboard data: ${S(O)}. State data may be corrupted \u2014 try running: daily --json`,{cause:O})}let l=new Yt({maxRequests:30,windowMs:6e4}),p=new Yt({maxRequests:10,windowMs:6e4}),g=new Yt({maxRequests:6,windowMs:6e4}),b=eu.createServer(async(O,w)=>{let k=O.method||"GET",N=O.url||"/";try{if(N==="/api/data"&&k==="GET"){let M=l.check();if(!M.allowed){w.setHeader("Retry-After",String(M.retryAfterSeconds)),ue(w,429,"Too many requests");return}if(n.reloadIfChanged())try{u=Cs(a,n.getState(),c)}catch(oe){m(Ge,`Failed to rebuild dashboard data after state reload: ${S(oe)}`)}yr(w,200,u);return}if(N==="/api/action"&&k==="POST"){if(!Zc(O,$)){ue(w,403,"Invalid origin");return}let M=p.check();if(!M.allowed){w.setHeader("Retry-After",String(M.retryAfterSeconds)),ue(w,429,"Too many requests");return}await E(O,w);return}if(N==="/api/refresh"&&k==="POST"){if(!Zc(O,$)){ue(w,403,"Invalid origin");return}let M=g.check();if(!M.allowed){w.setHeader("Retry-After",String(M.retryAfterSeconds)),ue(w,429,"Too many requests");return}await v(O,w);return}if(k==="GET"){A(N,w);return}ue(w,405,"Method not allowed")}catch(M){m(Ge,`Unhandled request error: ${k} ${N} ${S(M)}`),w.headersSent||ue(w,500,"Internal server error")}});b.requestTimeout=bd;async function E(O,w){n.reloadIfChanged();let k;try{let M=await _d(O);k=JSON.parse(M)}catch(M){let oe=M instanceof Error&&M.message==="Body too large";ue(w,oe?413:400,oe?"Request body too large":"Invalid JSON body");return}if(!k.action||!Xc.has(k.action)){ue(w,400,`Invalid action. Must be one of: ${[...Xc].join(", ")}`);return}if(!k.url||typeof k.url!="string"){ue(w,400,'Missing or invalid "url" field');return}let N=k.action==="dismiss_issue_response";try{_e(k.url),Ce(k.url,N?pt:lt,N?"issue":"PR")}catch(M){M instanceof te?ue(w,400,M.message):(m(Ge,`Unexpected error during URL validation: ${S(M)}`),ue(w,400,"Invalid URL"));return}try{if(k.action==="move"){let{VALID_TARGETS:M,runMove:oe}=await Promise.resolve().then(()=>(Ut(),xt));if(!k.target||!M.includes(k.target)){ue(w,400,`move requires a valid "target" field (${M.join(", ")})`);return}await oe({prUrl:k.url,target:k.target})}else n.dismissIssue(k.url,new Date().toISOString())}catch(M){m(Ge,`Action failed: ${k.action} ${k.url} ${S(M)}`),ue(w,500,"Action failed");return}u=Cs(a,n.getState(),c),yr(w,200,u)}async function v(O,w){let k=r||ot();if(!k){ue(w,401,"No GitHub token available. Cannot refresh data.");return}try{n.reloadIfChanged(),m(Ge,"Refreshing dashboard data from GitHub...");let N=await Jo(k);a=N.digest,c=N.commentedIssues,u=Cs(a,n.getState(),c,N.allMergedPRs,N.allClosedPRs),yr(w,200,u)}catch(N){m(Ge,`Dashboard refresh failed: ${S(N)}`),ue(w,500,"Refresh failed")}}function A(O,w){let k;try{k=decodeURIComponent(O.split("?")[0])}catch{m(Ge,`Malformed URL received: ${O}`),ue(w,400,"Malformed URL");return}if(k.includes("..")){ue(w,403,"Forbidden");return}let N=k==="/"?"index.html":k.replace(/^\/+/,""),M=Ye.join(i,N);if(!M.startsWith(i+Ye.sep)&&M!==i){ue(w,403,"Forbidden");return}try{_r.statSync(M).isDirectory()&&(M=Ye.join(i,"index.html"))}catch(J){if(J.code==="ENOENT")M=Ye.join(i,"index.html");else{m(Ge,`Failed to stat file: ${M}`),ue(w,500,"Internal server error");return}}let oe=Ye.extname(M).toLowerCase(),Fe=yd[oe]||"application/octet-stream";try{let J=_r.readFileSync(M);tu(w),w.writeHead(200,{"Content-Type":Fe,"Content-Length":J.length,"Cache-Control":"public, max-age=3600"}),w.end(J)}catch(J){J.code==="ENOENT"?ue(w,404,"Not found"):(m(Ge,`Failed to serve static file: ${M}`),ue(w,500,"Failed to read file"))}}let y=10,$=e;for(let O=0;O<y;O++)try{await new Promise((w,k)=>{b.once("error",k),b.listen($,"127.0.0.1",()=>w())});break}catch(w){let k=w;if(k.code==="EADDRINUSE"&&O<y-1){m(Ge,`Port ${$} is in use, trying ${$+1}...`),$++;continue}throw new Error(`Failed to start server: ${k.message}`,{cause:w})}gr({pid:process.pid,port:$,startedAt:new Date().toISOString(),version:Qe()});let F=`http://oss.localhost:${$}`;m(Ge,`Dashboard server running at ${F} (also: http://localhost:${$})`),r&&Jo(r).then(O=>{n.reloadIfChanged(),a=O.digest,c=O.commentedIssues,u=Cs(a,n.getState(),c,O.allMergedPRs,O.allClosedPRs),m(Ge,"Background data refresh complete")}).catch(O=>{m(Ge,`Background data refresh failed (serving cached data): ${S(O)}`)}),o&&br(F);let q=()=>{m(Ge,"Shutting down dashboard server..."),bt(),b.close(()=>{process.exit(0)}),setTimeout(()=>process.exit(0),3e3).unref()};process.on("SIGINT",q),process.on("SIGTERM",q)}var eu,_r,Ye,Xc,Ge,fd,bd,yd,ru=P(()=>{"use strict";eu=V(require("http"),1),_r=V(require("fs"),1),Ye=V(require("path"),1);ie();se();re();Ve();Yo();an();hr();Yc();Le();hr();Xc=new Set(["move","dismiss_issue_response"]),Ge="dashboard-server",fd=10240,bd=3e4,yd={".html":"text/html",".js":"application/javascript",".css":"text/css",".svg":"image/svg+xml",".json":"application/json",".png":"image/png",".ico":"image/x-icon"}});var ou={};le(ou,{resolveAssetsDir:()=>fr,serveDashboard:()=>wd});function fr(){let s=We.resolve(__dirname,"../../dashboard/dist");if(Rr.existsSync(We.join(s,"index.html")))return s;let e=We.resolve(We.dirname(process.argv[1]),"../../dashboard/dist");if(Rr.existsSync(We.join(e,"index.html")))return e;try{let t=require.resolve("@oss-autopilot/dashboard/package.json"),r=We.join(We.dirname(t),"dist");if(Rr.existsSync(We.join(r,"index.html")))return r}catch(t){t.code!=="MODULE_NOT_FOUND"&&console.error("Error resolving dashboard package:",t)}return null}async function wd(s){let e=fr();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=ot(),{startDashboardServer:r}=await Promise.resolve().then(()=>(ru(),su));await r({port:s.port,assetsDir:e,token:t,open:s.open})}var Rr,We,nn=P(()=>{"use strict";Rr=V(require("fs"),1),We=V(require("path"),1);ie()});var au={};le(au,{parseIssueList:()=>iu,runParseList:()=>Sd});function Ed(s){let e=s.match(/https:\/\/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);if(e)return{repo:e[1],number:parseInt(e[2],10),url:e[0]};let t=s.match(/https:\/\/github\.com\/([^/]+\/[^/]+)\/pull\/(\d+)/);return t?{repo:t[1],number:parseInt(t[2],10),url:t[0]}:null}function Td(s){let e=s.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 vd(s){return!!(/~~.+~~/.test(s)||/\[[xX]\]/.test(s)||/\bdone\b/i.test(s))}function iu(s){let e=s.split(`
95
- `),t=[],r=[],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=Ed(n);if(!a)continue;let c=Td(n),u={repo:a.repo,number:a.number,title:c||`#${a.number}`,tier:o,url:a.url};vd(n)?r.push(u):t.push(u)}return{available:t,completed:r,availableCount:t.length,completedCount:r.length}}async function Sd(s){let e=nu.resolve(s.filePath);if(!wr.existsSync(e))throw new Error(`File not found: ${e}`);let t;try{t=wr.readFileSync(e,"utf-8")}catch(r){let o=S(r);throw new Error(`Failed to read file: ${o}`,{cause:r})}return iu(t)}var wr,nu,cu=P(()=>{"use strict";wr=V(require("fs"),1),nu=V(require("path"),1);se()});var uu={};le(uu,{runCheckIntegration:()=>Od});function kd(s){let e=Ie.extname(s),t=Ie.basename(s,e);return t==="index"?Ie.basename(Ie.dirname(s)):t}function Ad(s,e){let t=Ie.dirname(s),r=[];for(let n of[".ts",".tsx",".js",".jsx"]){let i=Ie.join(t,`index${n}`);e.includes(i)&&r.push(i)}let o=Ie.dirname(t);for(let n of[".ts",".tsx",".js",".jsx"]){let i=Ie.join(o,`index${n}`);e.includes(i)&&r.push(i)}return[...new Set(r)]}async function Od(s){let e=s.base,t;try{let a=(0,Er.execFileSync)("git",["diff","--name-only","--diff-filter=A",`${e}...HEAD`],{encoding:"utf-8",timeout:1e4}).trim();t=a?a.split(`
96
- `).filter(Boolean):[]}catch(a){let c=S(a);throw new Error(`Failed to run git diff: ${c}`,{cause:a})}let r=t.filter(a=>{let c=Ie.extname(a);return Cd.has(c)?!Pd.some(u=>u.test(a)):!1});if(r.length===0)return{newFiles:[],unreferencedCount:0};let o;try{o=(0,Er.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 r){let c=kd(a),u=a.replace(/\.[^.]+$/,""),l=[],p=[c];u.includes("/")&&p.push(u);for(let E of p)try{let v=(0,Er.execFileSync)("git",["grep","-l","--",E],{encoding:"utf-8",timeout:1e4}).trim();if(v){let A=v.split(`
98
- `).filter(y=>y!==a);l.push(...A)}}catch(v){let A=v&&typeof v=="object"&&"status"in v?v.status:void 0;if(A!==void 0&&A!==1){let y=S(v);T("check-integration",`git grep failed for "${E}": ${y}`)}}l=[...new Set(l)];let g=l.length>0,b={path:a,referencedBy:l,isIntegrated:g};g||(b.suggestedEntryPoints=Ad(a,o)),n.push(b)}let i=n.filter(a=>!a.isIntegrated).length;return{newFiles:n,unreferencedCount:i}}var Ie,Er,Cd,Pd,lu=P(()=>{"use strict";Ie=V(require("path"),1),Er=require("child_process");ie();se();Cd=new Set([".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".rb",".go",".rs",".java",".kt",".vue",".svelte"]),Pd=[/^\./,/\.(test|spec|e2e)\.[^.]+$/,/\.(config|rc)\.[^.]+$/,/__tests__\//,/\.d\.ts$/,/\.md$/,/\.json$/,/\.ya?ml$/]});var du={};le(du,{runLocalRepos:()=>Id,scanForRepos:()=>pu});function $d(s){try{let e=(0,Tr.execFileSync)("git",["-C",s,"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 r=e.match(/github\.com[:/]([^/]+\/[^/]+?)(?:\.git)?$/);return r?r[1]:null}catch(e){return T("local-repos",`Failed to get GitHub remote for ${s}`,e),null}}function Dd(s){try{return(0,Tr.execFileSync)("git",["-C",s,"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 ${s}`,e),null}}function pu(s){let e={};for(let t of s){if(!un.existsSync(t))continue;let r;try{let o=(0,Tr.execFileSync)("find",[t,"-maxdepth","4","-name",".git","-type","d"],{encoding:"utf-8",timeout:3e4,stdio:["pipe","pipe","pipe"]}).trim();r=o?o.split(`
99
- `).filter(Boolean):[]}catch(o){T("local-repos",`find failed for scan path ${t}`,o);continue}for(let o of r){let n=ze.dirname(o),i=$d(n);if(!i)continue;let a=Dd(n);e[i]={path:n,exists:!0,currentBranch:a}}}return e}async function Id(s){let e=U(),t=e.getState(),r=s.paths?.map(i=>ze.resolve(i))??t.config.localRepoScanPaths??Gd.filter(i=>un.existsSync(i));if(!s.scan&&t.localRepoCache){let i=t.localRepoCache;return{repos:i.repos,scanPaths:i.scanPaths,cachedAt:i.cachedAt,fromCache:!0}}let o=pu(r),n=new Date().toISOString();try{e.setLocalRepoCache({repos:o,scanPaths:r,cachedAt:n})}catch(i){let a=S(i);console.error(`Warning: Failed to cache scan results to disk: ${a}`)}return{repos:o,scanPaths:r,cachedAt:n,fromCache:!1}}var un,ze,Mt,Tr,Gd,gu=P(()=>{"use strict";un=V(require("fs"),1),ze=V(require("path"),1),Mt=V(require("os"),1),Tr=require("child_process");ie();se();Gd=[ze.join(Mt.homedir(),"Documents","oss"),ze.join(Mt.homedir(),"dev"),ze.join(Mt.homedir(),"projects"),ze.join(Mt.homedir(),"src"),ze.join(Mt.homedir(),"code"),ze.join(Mt.homedir(),"repos")]});var ln={};le(ln,{runDismiss:()=>Fd,runUndismiss:()=>xd});async function Fd(s){return _e(s.url),Ce(s.url,pt,"issue"),{dismissed:U().dismissIssue(s.url,new Date().toISOString()),url:s.url}}async function xd(s){return _e(s.url),Ce(s.url,pt,"issue"),{undismissed:U().undismissIssue(s.url),url:s.url}}var pn=P(()=>{"use strict";ie();Ve()});var mu={};le(mu,{runPRTemplate:()=>Ud});async function Ud(s){let{owner:e,repo:t}=jt(s.repo),r=Ee(),o=ye(r);return qo(o,e,t)}var hu=P(()=>{"use strict";Bt();Se();Bo()});var fu={};le(fu,{formatStatsBadge:()=>Nd,formatStatsMarkdown:()=>Ld,runStats:()=>Md});async function Md(){let e=U().getState(),t=e.lastDigest?.summary?.totalActivePRs??0,r=No({repoScores:e.repoScores??{},activePRCount:t});return{...r,mergeRateFormatted:`${(r.mergeRate*100).toFixed(1)}%`,username:e.config.githubUsername}}function Ld(s){let e=[`# OSS Contribution Stats for @${s.username}`,"","| Metric | Value |","|--------|-------|",`| Merged PRs | ${s.totalMerged} |`,`| Merge Rate | ${s.mergeRateFormatted} |`,`| Active PRs | ${s.activePRs} |`,`| Repos Contributed | ${s.reposContributed} |`,""];if(s.topRepos.length>0){e.push("## Top Repos","","| Repo | Merged PRs |","|------|-----------|");for(let t of s.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 jd(s){return s.totalMerged===0?"blue":s.mergeRate>=.8?"brightgreen":s.mergeRate>=.6?"green":s.mergeRate>=.4?"yellow":"orange"}function Nd(s){return{schemaVersion:1,label:"OSS Contributions",message:s.totalMerged>0?`${s.mergeRateFormatted} merge rate | ${s.totalMerged} merged`:"Getting Started",color:jd(s)}}var bu=P(()=>{"use strict";ie();Ho()});var Dn=V($n(),1),{program:eg,createCommand:tg,createArgument:sg,createOption:rg,CommanderError:og,InvalidArgumentError:ng,InvalidOptionArgumentError:ig,Command:In,Argument:ag,Option:cg,Help:ug}=Dn.default;ie();se();Vo();function X(s,e){let t=S(s);e?yc(t):console.error(`Error: ${t}`),process.exit(1)}function yu(s){let e=Object.entries(s).sort(([t],[r])=>t.localeCompare(r));for(let[t,r]of e){let o=r.currentBranch?` (${r.currentBranch})`:"";console.log(` ${t}${o}`),console.log(` ${r.path}`)}}var dn=[{name:"daily",register(s){s.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(()=>(Ts(),Xo)),r=await t();Y(r)}else{let{runDailyForDisplay:t,printDigest:r}=await Promise.resolve().then(()=>(Ts(),Xo)),o=await t();r(o.digest,o.capacity,o.commentedIssues)}}catch(t){X(t,e.json)}})}},{name:"status",localOnly:!0,register(s){s.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(()=>(Sc(),vc)),r=await t({offline:e.offline});e.json?Y(r):(console.log(`
93
+ `),s.needsAddressingPRs.length>0){console.log("\u274C Needs Addressing:");for(let o of s.needsAddressingPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` ${o.displayLabel} ${o.displayDescription}`);console.log("")}if(s.waitingOnMaintainerPRs.length>0){console.log("\u23F3 Waiting on Maintainer:");for(let o of s.waitingOnMaintainerPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` ${o.displayDescription}`);console.log("")}if(s.recentlyMergedPRs.length>0){console.log("\u{1F389} Recently Merged:");for(let o of s.recentlyMergedPRs){let n=o.mergedAt?new Date(o.mergedAt).toLocaleDateString():"";console.log(` - ${o.repo}#${o.number}: ${o.title}${n?` (merged ${n})`:""}`)}console.log("")}if(s.recentlyClosedPRs.length>0){console.log("\u{1F6AB} Recently Closed:");for(let o of s.recentlyClosedPRs){let n=o.closedAt?new Date(o.closedAt).toLocaleDateString():"";console.log(` - ${o.repo}#${o.number}: ${o.title}${n?` (closed ${n})`:""}`)}console.log("")}if(s.autoUnshelvedPRs.length>0){console.log("\u{1F514} Auto-Unshelved:");for(let o of s.autoUnshelvedPRs)console.log(` - ${o.repo}#${o.number}: ${o.title} (${o.status.replace(/_/g," ")})`);console.log("")}if(s.shelvedPRs.length>0){console.log("\u{1F4E6} Shelved:");for(let o of s.shelvedPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`);console.log("")}let r=t.filter(o=>o.status==="new_response");if(r.length>0){console.log("\u{1F4AC} Issue Replies:");for(let o of r)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 Kt,Kp,Rc,Qp,Ec=P(()=>{"use strict";ve();se();te();qt();Kt=new Set(["needs_addressing"]),Kp=new Set(["needs_response","needs_changes","failing_ci","merge_conflict"]),Rc=new Set(["dormant","approaching_dormant"]),Qp=new Set(["needs_addressing","waiting_on_maintainer"])});function Vo(s){let{repoScores:e,activePRCount:t}=s,r=0,o=0,n=[];for(let c of Object.values(e))r+=c.mergedPRCount,o+=c.closedWithoutMergeCount,c.mergedPRCount>0&&n.push({repo:c.repo,mergedCount:c.mergedPRCount});let i=r+o,a=i>0?r/i:0;return n.sort((c,u)=>u.mergedCount-c.mergedCount),{totalMerged:r,totalClosed:o,mergeRate:a,activePRs:t,reposContributed:n.length,topRepos:n.slice(0,10)}}var Wo=P(()=>{"use strict"});async function zo(s,e,t){for(let r of Yp)try{R(Ut,`Checking ${e}/${t} for template at ${r}`);let{data:o}=await s.repos.getContent({owner:e,repo:t,path:r});if(Array.isArray(o)){R(Ut,`${r} is a directory (multiple templates?), skipping`);continue}if(o.type!=="file"){R(Ut,`${r} is type "${o.type}", skipping`);continue}if(!o.content){R(Ut,`${r} has no content, skipping`);continue}let n=Buffer.from(o.content,"base64").toString("utf-8");return R(Ut,`Found PR template at ${r} (${n.length} chars)`),{template:n,source:r}}catch(o){if(Se(o)===404)continue;if(be(o))throw o;let n=S(o);return m(Ut,`Error checking ${e}/${t}/${r}: ${n}`),{template:null,source:null,error:n}}return R(Ut,`No PR template found for ${e}/${t}`),{template:null,source:null}}var Ut,Yp,Jo=P(()=>{"use strict";se();te();Ut="pr-template",Yp=[".github/PULL_REQUEST_TEMPLATE.md",".github/pull_request_template.md","docs/pull_request_template.md","pull_request_template.md"]});function sd(s){try{let e=Ge.readFileSync(s,"utf-8");return JSON.parse(e)}catch(e){R(lr,`Failed to parse ${s}: ${e instanceof Error?e.message:String(e)}`);return}}function rd(s){try{return Ge.readFileSync(s,"utf-8")}catch(e){R(lr,`Failed to read ${s}: ${e instanceof Error?e.message:String(e)}`);return}}function Ko(s,e){for(let t of e)if(Ge.existsSync(Xe.join(s,t)))return t}function od(s){return sd(Xe.join(s,"package.json"))}function nd(s){if(!s?.scripts)return[];let e=[];for(let t of ed){let r=s.scripts[t];r&&e.push({name:t,command:r})}return e}function id(s){return s?!!(s.devDependencies?.prettier||s.dependencies?.prettier):!1}function Tc(s,e,t){let r=rd(Xe.join(s,e));return r?r.includes(t):!1}function pr(s){if(!Ge.existsSync(s)||!Ge.statSync(s).isDirectory())throw new Error(`Repository path does not exist or is not a directory: ${s}`);let e=[],t=od(s),r=Ko(s,["biome.json","biome.jsonc"]);r&&e.push({name:"biome",configPath:r,fixCommand:"npx @biomejs/biome check --write",checkCommand:"npx @biomejs/biome check",supportsFileArgs:!0});let o=Ko(s,Xp);o?e.push({name:"prettier",configPath:o,fixCommand:"npx prettier --write .",checkCommand:"npx prettier --check .",supportsFileArgs:!0}):id(t)&&e.push({name:"prettier",configPath:"package.json",fixCommand:"npx prettier --write .",checkCommand:"npx prettier --check .",supportsFileArgs:!0});let n=Ko(s,Zp);n&&e.push({name:"eslint",configPath:n,fixCommand:"npx eslint --fix .",checkCommand:"npx eslint .",supportsFileArgs:!0}),Ge.existsSync(Xe.join(s,"Cargo.toml"))&&e.push({name:"rustfmt",configPath:"Cargo.toml",fixCommand:"cargo fmt",checkCommand:"cargo fmt --check",supportsFileArgs:!1});let i=Ge.existsSync(Xe.join(s,"pyproject.toml"));i&&Tc(s,"pyproject.toml","[tool.ruff]")?e.push({name:"ruff",configPath:"pyproject.toml",fixCommand:"ruff format .",checkCommand:"ruff format --check .",supportsFileArgs:!0}):i&&Tc(s,"pyproject.toml","[tool.black]")?e.push({name:"black",configPath:"pyproject.toml",fixCommand:"black .",checkCommand:"black --check .",supportsFileArgs:!0}):Ge.existsSync(Xe.join(s,"ruff.toml"))&&e.push({name:"ruff",configPath:"ruff.toml",fixCommand:"ruff format .",checkCommand:"ruff format --check .",supportsFileArgs:!0}),Ge.existsSync(Xe.join(s,"go.mod"))&&e.push({name:"gofmt",configPath:"go.mod",fixCommand:"gofmt -w .",checkCommand:"gofmt -d .",supportsFileArgs:!0}),Ge.existsSync(Xe.join(s,".clang-format"))&&e.push({name:"clang-format",configPath:".clang-format",fixCommand:"clang-format -i",checkCommand:"clang-format --dry-run --Werror",supportsFileArgs:!0}),Ge.existsSync(Xe.join(s,".rubocop.yml"))&&e.push({name:"rubocop",configPath:".rubocop.yml",fixCommand:"rubocop -a",checkCommand:"rubocop",supportsFileArgs:!0});let a=nd(t);return R(lr,`Detected ${e.length} formatters in ${s}`),{formatters:e,packageJsonScripts:a,repoPath:s}}function Qo(s,e){if(!s.trim())return{isFormattingFailure:!1,evidence:[]};let t=[],r;for(let{formatter:n,patterns:i}of td)for(let a of i){let c=s.match(a);c&&(t.push(c[0]),r||(r=n))}if(!r)return{isFormattingFailure:!1,evidence:[]};let o;if(e)try{let i=pr(e).formatters.find(a=>a.name===r);i&&(o=i.fixCommand)}catch(n){R(lr,`Cross-reference failed for ${e}: ${n instanceof Error?n.message:String(n)}`)}return o||(o={prettier:"npx prettier --write .",eslint:"npx eslint --fix .",biome:"npx @biomejs/biome check --write",black:"black .",ruff:"ruff format .",rustfmt:"cargo fmt",gofmt:"gofmt -w .","clang-format":"clang-format -i",rubocop:"rubocop -a"}[r]),{isFormattingFailure:!0,formatter:r,fixCommand:o,evidence:t}}var Ge,Xe,lr,Xp,Zp,ed,td,Yo=P(()=>{"use strict";Ge=B(require("fs"),1),Xe=B(require("path"),1);se();lr="formatter-detection",Xp=[".prettierrc",".prettierrc.json",".prettierrc.yml",".prettierrc.yaml",".prettierrc.json5",".prettierrc.js",".prettierrc.cjs",".prettierrc.mjs",".prettierrc.toml","prettier.config.js","prettier.config.cjs","prettier.config.mjs"],Zp=[".eslintrc",".eslintrc.js",".eslintrc.cjs",".eslintrc.yml",".eslintrc.yaml",".eslintrc.json","eslint.config.js","eslint.config.cjs","eslint.config.mjs","eslint.config.ts"],ed=["lint:fix","format","fmt","lint","format:check","format:fix"],td=[{formatter:"prettier",patterns:[/Code style issues found/i,/Forgot to run Prettier/i,/prettier --check/i]},{formatter:"ruff",patterns:[/ruff format.*--check/i,/ruff format.*would reformat/i]},{formatter:"black",patterns:[/Oh no! .* files? would be reformatted/i,/black --check/i]},{formatter:"rustfmt",patterns:[/Diff in .*\.rs/i,/rustfmt --check/i,/cargo fmt.*--check/i]},{formatter:"biome",patterns:[/biome check/i,/biome ci/i,/Found \d+ fixable diagnostics?/i]},{formatter:"eslint",patterns:[/eslint.*--fix/i,/eslint.*\d+ problems?/i]},{formatter:"gofmt",patterns:[/gofmt -d/i,/goimports/i]},{formatter:"clang-format",patterns:[/clang-format/i]},{formatter:"rubocop",patterns:[/rubocop.*offense/i,/rubocop -a/i]}]});var ie=P(()=>{"use strict";qt();Va();bc();ar();_c();rr();Wt();ve();te();se();zt();Ec();Wo();Jo();Yo();je()});function Sc(s){let e=t=>t.map(r=>r.url);return{generatedAt:s.generatedAt,openPRs:s.openPRs,needsAddressingPRs:e(s.needsAddressingPRs),waitingOnMaintainerPRs:e(s.waitingOnMaintainerPRs),recentlyClosedPRs:s.recentlyClosedPRs,recentlyMergedPRs:s.recentlyMergedPRs,shelvedPRs:s.shelvedPRs,autoUnshelvedPRs:s.autoUnshelvedPRs,summary:s.summary}}function vc(s){return s.map(e=>({type:e.type,prUrl:e.pr.url,label:e.label,isNewContribution:e.isNewContribution}))}function Cc(s){return s.map(e=>({repo:e.repo,prUrls:e.prs.map(t=>t.url)}))}function ad(s){return{success:!0,data:s,timestamp:new Date().toISOString()}}function cd(s){return{success:!1,error:s,timestamp:new Date().toISOString()}}function J(s){console.log(JSON.stringify(ad(s),null,2))}function Pc(s){console.log(JSON.stringify(cd(s),null,2))}var Xo=P(()=>{"use strict"});function kc(s,e,t,r){let o=s.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+(st(l.stargazersCount,n)?0:l.closedWithoutMergeCount||0),0),c=r!==void 0?Math.max(r,a):a;return{activePRs:o.totalActivePRs,shelvedPRs:(s.shelvedPRs||[]).length,mergedPRs:i,closedPRs:c,mergeRate:`${(o.mergeRate??0).toFixed(1)}%`}}function Zo(s,e){let t={...s};for(let[r,o]of Object.entries(e))t[r]=o;return t}function en(s,e,t,r,o){let n=U(),i=n.getState();try{Object.keys(e).length>0&&n.setMonthlyMergedCounts(Zo(i.monthlyMergedCounts||{},e))}catch(a){m(he,`Failed to store monthly merged counts: ${S(a)}`)}try{Object.keys(t).length>0&&n.setMonthlyClosedCounts(Zo(i.monthlyClosedCounts||{},t))}catch(a){m(he,`Failed to store monthly closed counts: ${S(a)}`)}try{let a={...r};for(let[c,u]of Object.entries(o))a[c]=(a[c]||0)+u;for(let c of s)if(c.createdAt){let u=c.createdAt.slice(0,7);a[u]=(a[u]||0)+1}Object.keys(a).length>0&&n.setMonthlyOpenedCounts(Zo(i.monthlyOpenedCounts||{},a))}catch(a){m(he,`Failed to store monthly opened counts: ${S(a)}`)}}async function tn(s){let e=U(),t=new Dt(s),r=new It(s),o=ye(s),n=e.getState().config,i=dr(e.getState()),a=e.getMergedPRWatermark(),c=e.getClosedPRWatermark(),[{prs:u,failures:l},p,g,b,T,v,A,y]=await Promise.all([t.fetchUserOpenPRs(),t.fetchRecentlyClosedPRs().catch(E=>{if(be(E))throw E;return m(he,`Failed to fetch recently closed PRs: ${S(E)}`),[]}),t.fetchRecentlyMergedPRs().catch(E=>{if(be(E))throw E;return m(he,`Failed to fetch recently merged PRs: ${S(E)}`),[]}),t.fetchUserMergedPRCounts(i).catch(E=>{if(be(E))throw E;return m(he,`Failed to fetch merged PR counts: ${S(E)}`),$t()}),t.fetchUserClosedPRCounts(i).catch(E=>{if(be(E))throw E;return m(he,`Failed to fetch closed PR counts: ${S(E)}`),$t()}),r.fetchCommentedIssues().catch(E=>{if(be(E))throw E;let k=S(E);return k.includes("No GitHub username configured")?m(he,`Issue conversation tracking requires setup: ${k}`):m(he,`Issue conversation fetch failed: ${k}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${k}`}]}}),qa(o,n,a).catch(E=>{if(be(E))throw E;return m(he,`Failed to fetch merged PRs for storage: ${S(E)}`),[]}),Ba(o,n,c).catch(E=>{if(be(E))throw E;return m(he,`Failed to fetch closed PRs for storage: ${S(E)}`),[]})]),$=v.issues;v.failures.length>0&&m(he,`${v.failures.length} issue conversation check(s) failed`),l.length>0&&m(he,`${l.length} PR fetch(es) failed`);try{e.batch(()=>{try{e.addMergedPRs(A)}catch(ne){m(he,`Failed to store merged PRs: ${S(ne)}`)}try{e.addClosedPRs(y)}catch(ne){m(he,`Failed to store closed PRs: ${S(ne)}`)}let{monthlyCounts:E,monthlyOpenedCounts:k}=b,{monthlyCounts:N,monthlyOpenedCounts:M}=T;en(u,E,N,k,M);let oe=t.generateDigest(u,p,g),xe=new Set(e.getState().config.shelvedPRUrls||[]),Q=u.filter(ne=>xe.has(ne.url)||ne.stalenessTier==="dormant"&&ne.status!=="needs_addressing");oe.shelvedPRs=Q.map(pt),oe.autoUnshelvedPRs=[],oe.summary.totalActivePRs=u.length-Q.length,e.setLastDigest(oe)})}catch(E){m(he,`Failed to persist dashboard state: ${S(E)}`)}m(he,`Refreshed: ${u.length} PRs fetched`);let I=sn(e.getMergedPRs()),q=rn(e.getClosedPRs()),O=e.getState().lastDigest;if(!O)throw new Error("Dashboard data fetch failed: digest was not generated");return{digest:O,commentedIssues:$,allMergedPRs:I,allClosedPRs:q}}function sn(s){let e=[],t=0;for(let r of s){let o=me(r.url);if(!o){t++;continue}e.push({url:r.url,repo:`${o.owner}/${o.repo}`,number:o.number,title:r.title,mergedAt:r.mergedAt})}return t>0&&m(he,`Skipped ${t} stored merged PR(s) with unparseable URLs`),e}function rn(s){let e=[],t=0;for(let r of s){let o=me(r.url);if(!o){t++;continue}e.push({url:r.url,repo:`${o.owner}/${o.repo}`,number:o.number,title:r.title,closedAt:r.closedAt})}return t>0&&m(he,`Skipped ${t} stored closed PR(s) with unparseable URLs`),e}function Ac(s,e){let t={};for(let o of s.openPRs||[])t[o.repo]||(t[o.repo]={active:0,merged:0,closed:0}),t[o.repo].active++;let r=e.config.minStars??50;for(let[o,n]of Object.entries(e.repoScores||{}))st(n.stargazersCount,r)||(t[o]||(t[o]={active:0,merged:0,closed:0}),t[o].merged=n.mergedPRCount,t[o].closed=n.closedWithoutMergeCount);return t}function Oc(s,e=10){return Object.entries(s).sort((t,r)=>r[1].merged+r[1].active+r[1].closed-(t[1].merged+t[1].active+t[1].closed)).slice(0,e)}function Gc(s){return{monthlyMerged:s.monthlyMergedCounts||{},monthlyClosed:s.monthlyClosedCounts||{},monthlyOpened:s.monthlyOpenedCounts||{}}}var he,on=P(()=>{"use strict";ie();te();se();nr();ve();je();vs();he="dashboard-data"});var nn={};ce(nn,{CRITICAL_STATUSES:()=>Kt,applyStatusOverrides:()=>xt,assessCapacity:()=>Rs,buildStarFilter:()=>dr,collectActionableIssues:()=>ws,computeActionMenu:()=>Es,computeRepoSignals:()=>_s,executeDailyCheck:()=>gr,formatBriefSummary:()=>Ts,formatSummary:()=>Ss,groupPRsByRepo:()=>ys,printDigest:()=>Bo,runDaily:()=>md,runDailyForDisplay:()=>hd,toShelvedPRRef:()=>pt});function dr(s){let e=s.config.minStars??50,t=new Map;for(let[r,o]of Object.entries(s.repoScores))o.stargazersCount!==void 0&&t.set(r,o.stargazersCount);if(t.size!==0)return{minStars:e,knownStarCounts:t}}async function ud(s,e){let{prs:t,failures:r}=await s.fetchUserOpenPRs();r.length>0&&m(W,`${r.length} PR fetch(es) failed`);let o=U().getState(),n=dr(o),i=new It(e),[a,c,u,l,p]=await Promise.all([s.fetchUserMergedPRCounts(n).catch(I=>{if(be(I))throw I;return m(W,`Failed to fetch merged PR counts: ${S(I)}`),$t()}),s.fetchUserClosedPRCounts(n).catch(I=>{if(be(I))throw I;return m(W,`Failed to fetch closed PR counts: ${S(I)}`),$t()}),s.fetchRecentlyClosedPRs().catch(I=>{if(be(I))throw I;return m(W,`Failed to fetch recently closed PRs: ${S(I)}`),[]}),s.fetchRecentlyMergedPRs().catch(I=>{if(be(I))throw I;return m(W,`Failed to fetch recently merged PRs: ${S(I)}`),[]}),i.fetchCommentedIssues().catch(I=>{if(be(I))throw I;let q=S(I);return q.includes("No GitHub username configured")?m(W,`Issue conversation tracking requires setup: ${q}`):m(W,`Issue conversation fetch failed: ${q}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${q}`}]}})]),g=p.issues;p.failures.length>0&&m(W,`${p.failures.length} issue conversation check(s) failed`);let{repos:b,monthlyCounts:T,monthlyOpenedCounts:v}=a,{repos:A,monthlyCounts:y,monthlyOpenedCounts:$}=c;return{prs:t,failures:r,mergedCounts:b,closedCounts:A,monthlyCounts:T,monthlyClosedCounts:y,openedFromMerged:v,openedFromClosed:$,recentlyClosedPRs:u,recentlyMergedPRs:l,commentedIssues:g}}async function ld(s,e,t,r){let o=U();try{o.batch(()=>{let a=Object.values(o.getState().repoScores).filter(b=>b.mergedPRCount>0);if(t.size===0&&a.length>0)m(W,`Skipping stale repo reset: API returned 0 merged PR results but state has ${a.length} repo(s) with merges. Possible API issue.`);else for(let b of Object.values(o.getState().repoScores))t.has(b.repo)||o.updateRepoScore(b.repo,{mergedPRCount:0});let c=0;for(let[b,{count:T,lastMergedAt:v}]of t)try{o.updateRepoScore(b,{mergedPRCount:T,lastMergedAt:v||void 0})}catch(A){c++,m(W,`Failed to update merged count for ${b}: ${S(A)}`)}c===t.size&&t.size>0&&m(W,`[ALL_MERGED_COUNT_UPDATES_FAILED] All ${t.size} merged count update(s) failed.`);let u=Object.values(o.getState().repoScores).filter(b=>(b.closedWithoutMergeCount||0)>0);r.size===0&&u.length>0&&m(W,`API returned 0 closed PR results but state has ${u.length} repo(s) with closed PRs. Possible transient API issue.`);let l=0;for(let[b,T]of r)try{o.updateRepoScore(b,{closedWithoutMergeCount:T})}catch(v){l++,m(W,`Failed to update closed count for ${b}: ${S(v)}`)}l===r.size&&r.size>0&&m(W,`[ALL_CLOSED_COUNT_UPDATES_FAILED] All ${r.size} closed count update(s) failed.`);let p=_s(e),g=0;for(let[b,T]of p)try{o.updateRepoScore(b,{signals:T})}catch(v){g++,m(W,`Failed to update signals for ${b}: ${S(v)}`)}g===p.size&&p.size>0&&m(W,`[ALL_SIGNAL_UPDATES_FAILED] All ${p.size} signal update(s) failed. This may indicate corrupted state.`)})}catch(a){m(W,`Failed to persist repo score updates: ${S(a)}`)}let n=Object.keys(o.getState().repoScores),i;try{i=await s.fetchRepoMetadata(n)}catch(a){if(be(a))throw a;m(W,`Failed to fetch repo metadata: ${S(a)}`),m(W,"Repos without cached metadata will be excluded from dashboard stats and metadata badges until fetched on the next successful run."),i=new Map}try{o.batch(()=>{let a=0;for(let[u,{stars:l,language:p}]of i)try{o.updateRepoScore(u,{stargazersCount:l,language:p})}catch(g){a++,m(W,`Failed to update metadata for ${u}: ${S(g)}`)}a===i.size&&i.size>0&&m(W,`[ALL_METADATA_UPDATES_FAILED] All ${i.size} metadata update(s) failed.`);let c=0;for(let[u]of t)try{o.addTrustedProject(u)}catch(l){c++,m(W,`Failed to sync trusted project ${u}: ${S(l)}`)}c===t.size&&t.size>0&&m(W,`[ALL_TRUST_SYNCS_FAILED] All ${t.size} trusted project sync(s) failed. This may indicate corrupted state.`)})}catch(a){m(W,`Failed to persist metadata/trust updates: ${S(a)}`)}}function pd(s,e,t,r){let o=U(),n=xt(e,o.getState()),i=[],a=[],c=[];try{o.batch(()=>{for(let p of n)o.isPRShelved(p.url)?Kt.has(p.status)?(o.unshelvePR(p.url),a.push(pt(p)),c.push(p)):i.push(pt(p)):p.stalenessTier==="dormant"&&!Kt.has(p.status)?i.push(pt(p)):c.push(p);let l=s.generateDigest(n,t,r);l.shelvedPRs=i,l.autoUnshelvedPRs=a,l.summary.totalActivePRs=c.length,o.setLastDigest(l)})}catch(l){m(W,`Failed to persist partition state: ${S(l)}`)}let u=o.getState().lastDigest;return{activePRs:c,shelvedPRs:i,autoUnshelvedPRs:a,digest:u}}function dd(s,e,t,r,o,n){let i=U(),a=Rs(e,i.getState().config.maxActivePRs,t.length),c=[];try{i.batch(()=>{c=r.filter(v=>{let A=i.getIssueDismissedAt(v.url);if(!A)return!0;if(v.status==="new_response"){let y=new Date(v.lastResponseAt).getTime(),$=new Date(A).getTime();if(isNaN(y)||isNaN($))return m(W,`Invalid timestamp in dismiss check for ${v.url}, including issue`),!0;if(y>$){m(W,`Auto-undismissing issue ${v.url}: new response at ${v.lastResponseAt} after dismiss at ${A}`);try{i.undismissIssue(v.url)}catch(I){m(W,`Failed to persist auto-undismiss for ${v.url}: ${S(I)}`)}return!0}}return!1})})}catch(v){m(W,`Failed to persist auto-undismiss state: ${S(v)}`)}let u=c.filter(v=>v.status==="new_response"),l=Ss(s,a,u),p=ws(e,n);s.summary.totalNeedingAttention=p.length;let g=Ts(s,p.length,u.length),b=Es(p,a,c),T=ys(e);return{digest:s,capacity:a,summary:l,briefSummary:g,actionableIssues:p,actionMenu:b,commentedIssues:c,repoGroups:T,failures:o}}function gd(s){return{digest:Sc(s.digest),capacity:s.capacity,summary:s.summary,briefSummary:s.briefSummary,actionableIssues:vc(s.actionableIssues),actionMenu:s.actionMenu,commentedIssues:s.commentedIssues,repoGroups:Cc(s.repoGroups),failures:s.failures}}async function gr(s){let e=await $c(s);return gd(e)}async function $c(s){let e=new Dt(s),{prs:t,failures:r,mergedCounts:o,closedCounts:n,monthlyCounts:i,monthlyClosedCounts:a,openedFromMerged:c,openedFromClosed:u,recentlyClosedPRs:l,recentlyMergedPRs:p,commentedIssues:g}=await ud(e,s);await ld(e,t,o,n);try{U().batch(()=>{en(t,i,a,c,u)})}catch(y){m(W,`Failed to persist monthly analytics: ${S(y)}`)}let b=U().getState().lastDigestAt,{activePRs:T,shelvedPRs:v,digest:A}=pd(e,t,l,p);return dd(A,T,v,g,r,b)}async function md(){let s=Ee();return gr(s)}async function hd(){let s=Ee();return $c(s)}var W,vs=P(()=>{"use strict";ie();te();se();nr();on();Xo();ie();W="daily"});var Dc={};ce(Dc,{runStatus:()=>fd});async function fd(s){let e=U(),t=e.getStats(),r=e.getState(),o=r.lastDigestAt||r.lastRunAt,{totalTracked:n,...i}=t,a={stats:i,lastRunAt:r.lastRunAt};return s.offline&&(a.offline=!0,a.lastUpdated=o),a}var Fc=P(()=>{"use strict";ie()});var Ic={};ce(Ic,{runSearch:()=>bd});async function bd(s){let e=Ee(),t=new Ft(e),r=await t.searchIssues({maxResults:s.maxResults}),o=U(),{config:n}=o.getState(),i=n.excludeRepos||[],a=n.aiPolicyBlocklist??Et.aiPolicyBlocklist??[],c={candidates:r.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 xc=P(()=>{"use strict";ie()});function Ce(s,e,t){if(e.test(s))return;let r={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 re(`Invalid ${t} URL: ${s}. Expected format: ${r[t]}`)}function _e(s){if(s.length>Uc)throw new re(`URL exceeds maximum length of ${Uc} characters`);return s}function an(s){if(s.length>Mc)throw new re(`Message exceeds maximum length of ${Mc} characters`);return s}function Qt(s){if(!s||s.trim().length===0)throw new re("GitHub username cannot be empty.");let e=s.trim();if(e.length>Lc)throw new re(`GitHub username must be at most ${Lc} characters (got ${e.length}).`);if(!yd.test(e))throw new re("GitHub username can only contain alphanumeric characters and hyphens.");if(e.startsWith("-"))throw new re("GitHub username cannot start with a hyphen.");if(e.endsWith("-"))throw new re("GitHub username cannot end with a hyphen.");if(_d.test(e))throw new re("GitHub username cannot contain consecutive hyphens.");return e}var dt,gt,jc,Uc,Mc,Lc,yd,_d,We=P(()=>{"use strict";te();dt=/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\/\d+$/,gt=/^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\/\d+$/,jc=/^https:\/\/github\.com\/[^/]+\/[^/]+\/(issues|pull)\/\d+$/,Uc=2048,Mc=1e3;Lc=39,yd=/^[a-zA-Z0-9-]+$/,_d=/--/});var Nc={};ce(Nc,{runVet:()=>Rd});async function Rd(s){_e(s.issueUrl),Ce(s.issueUrl,gt,"issue");let e=Ee(),r=await new Ft(e).vetIssue(s.issueUrl);return{issue:{repo:r.issue.repo,number:r.issue.number,title:r.issue.title,url:r.issue.url,labels:r.issue.labels},recommendation:r.recommendation,reasonsToApprove:r.reasonsToApprove,reasonsToSkip:r.reasonsToSkip,projectHealth:r.projectHealth,vettingResult:r.vettingResult}}var Hc=P(()=>{"use strict";ie();We()});var cn={};ce(cn,{runTrack:()=>wd,runUntrack:()=>Ed});async function wd(s){_e(s.prUrl),Ce(s.prUrl,dt,"PR");let e=Ee(),t=ye(e),r=me(s.prUrl);if(!r||r.type!=="pull")throw new Error(`Invalid PR URL: ${s.prUrl}`);let{owner:o,repo:n,number:i}=r,{data:a}=await t.pulls.get({owner:o,repo:n,pull_number:i});return{pr:{repo:`${o}/${n}`,number:i,title:a.title,url:s.prUrl}}}async function Ed(s){return _e(s.prUrl),Ce(s.prUrl,dt,"PR"),{removed:!1,url:s.prUrl,message:"In v2, PRs are fetched fresh on each daily run \u2014 there is no local tracking list to remove from."}}var un=P(()=>{"use strict";ie();We();ve()});var qc={};ce(qc,{runRead:()=>Td});async function Td(s){if(!s.all&&!s.prUrl)throw new Error("PR URL or --all flag required");return s.prUrl&&_e(s.prUrl),s.all?{markedAsRead:0,all:!0,message:"In v2, PR read state is not tracked locally."}:{marked:!1,url:s.prUrl,message:"In v2, PR read state is not tracked locally."}}var Bc=P(()=>{"use strict";We()});var mr={};ce(mr,{runClaim:()=>Cd,runComments:()=>Sd,runPost:()=>vd});async function Sd(s){_e(s.prUrl),Ce(s.prUrl,dt,"PR");let e=Ee(),t=U(),r=ye(e),o=me(s.prUrl);if(!o||o.type!=="pull")throw new Error("Invalid PR URL format");let{owner:n,repo:i,number:a}=o,{data:c}=await r.pulls.get({owner:n,repo:i,pull_number:a}),[u,l,p]=await Promise.all([Ve(y=>r.pulls.listReviewComments({owner:n,repo:i,pull_number:a,per_page:100,page:y})),Ve(y=>r.issues.listComments({owner:n,repo:i,issue_number:a,per_page:100,page:y})),Ve(y=>r.pulls.listReviews({owner:n,repo:i,pull_number:a,per_page:100,page:y}))]),g=t.getState().config.githubUsername,b=y=>!(!y.user||y.user.login===g||y.user.type==="Bot"&&!s.showBots),T=u.filter(b).sort((y,$)=>new Date($.created_at).getTime()-new Date(y.created_at).getTime()),v=l.filter(b).sort((y,$)=>new Date($.created_at).getTime()-new Date(y.created_at).getTime()),A=p.filter(y=>b(y)&&y.body&&y.body.trim()).sort((y,$)=>new Date($.submitted_at||0).getTime()-new Date(y.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:A.map(y=>({user:y.user?.login,state:y.state,body:y.body??null,submittedAt:y.submitted_at??null})),reviewComments:T.map(y=>({user:y.user?.login,body:y.body,path:y.path,createdAt:y.created_at})),issueComments:v.map(y=>({user:y.user?.login,body:y.body,createdAt:y.created_at})),summary:{reviewCount:A.length,inlineCommentCount:T.length,discussionCommentCount:v.length}}}async function vd(s){if(_e(s.url),Ce(s.url,jc,"issue or PR"),!s.message.trim())throw new Error("No message provided");an(s.message);let e=Ee(),t=me(s.url);if(!t)throw new Error("Invalid GitHub URL format");let{owner:r,repo:o,number:n}=t,i=ye(e),{data:a}=await i.issues.createComment({owner:r,repo:o,issue_number:n,body:s.message});return{commentUrl:a.html_url,url:s.url}}async function Cd(s){_e(s.issueUrl),Ce(s.issueUrl,gt,"issue");let e=Ee(),t=s.message||"Hi! I'd like to work on this issue. Could you assign it to me?";an(t);let r=me(s.issueUrl);if(!r||r.type!=="issues")throw new Error("Invalid issue URL format (must be an issue, not a PR)");let{owner:o,repo:n,number:i}=r,a=ye(e),{data:c}=await a.issues.createComment({owner:o,repo:n,issue_number:i,body:t});try{U().addIssue({id:i,url:s.issueUrl,repo:`${o}/${n}`,number:i,title:"(claimed)",status:"claimed",labels:[],createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),vetted:!1})}catch(u){console.error(`Warning: Comment posted on ${s.issueUrl} but failed to save to local state: ${u instanceof Error?u.message:u}`)}return{commentUrl:c.html_url,issueUrl:s.issueUrl}}var hr=P(()=>{"use strict";ie();gs();We()});var Wc={};ce(Wc,{runConfig:()=>Pd});function Vc(s){if(!Nt.includes(s))throw new Error(`Invalid scope "${s}". Valid scopes: ${Nt.join(", ")}`);return s}async function Pd(s){let e=U(),t=e.getState().config;if(!s.key)return{config:t};if(!s.value)throw new Error("Value required");let r=s.value;switch(s.key){case"username":e.updateConfig({githubUsername:Qt(r)});break;case"add-language":t.languages.includes(r)||e.updateConfig({languages:[...t.languages,r]});break;case"add-label":t.labels.includes(r)||e.updateConfig({labels:[...t.labels,r]});break;case"remove-label":if(!t.labels.includes(r))throw new Error(`Label "${r}" is not currently configured. Current labels: ${t.labels.join(", ")}`);e.updateConfig({labels:t.labels.filter(o=>o!==r)});break;case"add-scope":{let o=Vc(r),n=t.scope??[];n.includes(o)||e.updateConfig({scope:[...n,o]});break}case"remove-scope":{let o=Vc(r),n=t.scope??[];if(!n.includes(o))throw new Error(`Scope "${r}" is not currently set`);let i=n.filter(a=>a!==o);if(i.length===0)throw new Error("Cannot remove the last scope. Use setup to clear scopes entirely.");e.updateConfig({scope:i});break}case"exclude-repo":{let o=r.split("/");if(o.length!==2||!o[0]||!o[1])throw new Error(`Invalid repo format "${r}". Use "owner/repo" format. To exclude an entire org, use: config exclude-org ${r}`);let n=r.toLowerCase();t.excludeRepos.some(i=>i.toLowerCase()===n)||e.batch(()=>{e.updateConfig({excludeRepos:[...t.excludeRepos,r]}),e.cleanupExcludedData([r],[])});break}case"exclude-org":{if(r.includes("/"))throw new Error(`Invalid org name "${r}". Use just the org name (e.g., "facebook"), not "owner/repo" format. To exclude a specific repo, use: config exclude-repo ${r}`);let o=t.excludeOrgs??[];o.some(n=>n.toLowerCase()===r.toLowerCase())||e.batch(()=>{e.updateConfig({excludeOrgs:[...o,r]}),e.cleanupExcludedData([],[r])});break}case"issueListPath":e.updateConfig({issueListPath:r||void 0});break;default:throw new Error(`Unknown config key: ${s.key}`)}return{success:!0,key:s.key,value:r}}var zc=P(()=>{"use strict";ie();je();We()});var Jc={};ce(Jc,{runInit:()=>kd});async function kd(s){return Qt(s.username),U().updateConfig({githubUsername:s.username}),{username:s.username,message:"Username saved. Run `daily` to fetch your open PRs from GitHub."}}var Kc=P(()=>{"use strict";ie();We()});var pn={};ce(pn,{runCheckSetup:()=>Od,runSetup:()=>Ad});function ln(s,e){let t=Number(s);if(!Number.isFinite(t)||t<1||!Number.isInteger(t))throw new re(`Invalid value for ${e}: "${s}". Must be a positive integer.`);return t}async function Ad(s){let e=U(),t=e.getState().config;if(s.set&&s.set.length>0){let r={},o=[];return e.batch(()=>{for(let n of s.set){let[i,...a]=n.split("="),c=a.join("=");switch(i){case"username":Qt(c),e.updateConfig({githubUsername:c}),r[i]=c;break;case"maxActivePRs":{let u=ln(c,"maxActivePRs");e.updateConfig({maxActivePRs:u}),r[i]=String(u);break}case"dormantDays":{let u=ln(c,"dormantDays");e.updateConfig({dormantThresholdDays:u}),r[i]=String(u);break}case"approachingDays":{let u=ln(c,"approachingDays");e.updateConfig({approachingDormantDays:u}),r[i]=String(u);break}case"languages":e.updateConfig({languages:c.split(",").map(u=>u.trim())}),r[i]=c;break;case"labels":e.updateConfig({labels:c.split(",").map(u=>u.trim())}),r[i]=c;break;case"showHealthCheck":e.updateConfig({showHealthCheck:c!=="false"}),r[i]=c!=="false"?"true":"false";break;case"squashByDefault":c==="ask"?(e.updateConfig({squashByDefault:"ask"}),r[i]="ask"):(e.updateConfig({squashByDefault:c!=="false"}),r[i]=c!=="false"?"true":"false");break;case"minStars":{let u=Number(c);if(!Number.isFinite(u)||!Number.isInteger(u)||u<0)throw new re(`Invalid value for minStars: "${c}". Must be a non-negative integer.`);e.updateConfig({minStars:u}),r[i]=String(u);break}case"includeDocIssues":e.updateConfig({includeDocIssues:c==="true"}),r[i]=c==="true"?"true":"false";break;case"aiPolicyBlocklist":{let u=c.split(",").map(g=>g.trim()).filter(Boolean),l=[],p=[];for(let g of u){let b=g.replace(/\s+/g,"");/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/.test(b)?l.push(b):p.push(g)}if(p.length>0&&(o.push(`Warning: Skipping invalid entries (expected "owner/repo" format): ${p.join(", ")}`),r.aiPolicyBlocklist_invalidEntries=p.join(", ")),l.length===0&&u.length>0){o.push("Warning: All entries were invalid. Blocklist not updated."),r[i]="(all entries invalid)";break}e.updateConfig({aiPolicyBlocklist:l}),r[i]=l.length>0?l.join(", "):"(empty)";break}case"projectCategories":{let u=c.split(",").map(b=>b.trim()).filter(Boolean),l=[],p=[];for(let b of u)Xr.includes(b)?l.push(b):p.push(b);p.length>0&&o.push(`Unknown project categories: ${p.join(", ")}. Valid: ${Xr.join(", ")}`);let g=[...new Set(l)];e.updateConfig({projectCategories:g}),r[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 p=[...new Set(l)];e.updateConfig({preferredOrgs:p}),r[i]=p.length>0?p.join(", "):"(empty)";break}case"scope":{let u=c.split(",").map(b=>b.trim()).filter(Boolean),l=[],p=[];for(let b of u)Nt.includes(b)?l.push(b):p.push(b);p.length>0&&o.push(`Unknown issue scopes: ${p.join(", ")}. Valid: ${Nt.join(", ")}`);let g=[...new Set(l)];e.updateConfig({scope:g.length>0?g:void 0}),r[i]=g.length>0?g.join(", "):"(empty \u2014 using labels only)";break}case"issueListPath":e.updateConfig({issueListPath:c||void 0}),r[i]=c||"(cleared)";break;case"complete":c==="true"&&(e.markSetupComplete(),r[i]="true");break;default:o.push(`Unknown setting: ${i}`)}}}),{success:!0,settings:r,warnings:o.length>0?o:void 0}}return t.setupComplete&&!s.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??[],scope:t.scope??[]}}:{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:"scope",prompt:"What scope of issues do you want to discover? (beginner, intermediate, advanced \u2014 leave empty for default labels only)",current:t.scope??[],default:[],type:"list"},{setting:"aiPolicyBlocklist",prompt:"Repos with anti-AI contribution policies to block (owner/repo, comma-separated)?",current:t.aiPolicyBlocklist??Et.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 Od(){let s=U();return{setupComplete:s.isSetupComplete(),username:s.getState().config.githubUsername}}var dn=P(()=>{"use strict";ie();te();We();je()});function Cs(){return Yc.join(He(),"dashboard-server.pid")}function br(s){Yt.writeFileSync(Cs(),JSON.stringify(s),{mode:384})}function Xt(){try{let s=Yt.readFileSync(Cs(),"utf-8"),e=JSON.parse(s);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(fr,"PID file has invalid structure, ignoring"),null):e}catch(s){return s.code!=="ENOENT"&&m(fr,`Failed to read PID file: ${s.message}`),null}}function _t(){try{Yt.unlinkSync(Cs())}catch(s){s.code!=="ENOENT"&&m(fr,`Failed to remove PID file: ${s.message}`)}}function Ps(s){return new Promise(e=>{let t=Qc.get(`http://127.0.0.1:${s}/api/data`,{timeout:2e3},r=>{r.resume(),e(r.statusCode===200)});t.on("error",()=>e(!1)),t.on("timeout",()=>{t.destroy(),e(!1)})})}async function yr(){let s=Xt();if(!s)return null;try{process.kill(s.pid,0)}catch(e){let t=e.code;return t!=="ESRCH"&&t!=="EPERM"&&m(fr,`Unexpected error checking PID ${s.pid}: ${e.message}`),_t(),null}return await Ps(s.port)?{port:s.port,url:`http://oss.localhost:${s.port}`}:(_t(),null)}var Qc,Yt,Yc,fr,_r=P(()=>{"use strict";Qc=B(require("http"),1),Yt=B(require("fs"),1),Yc=B(require("path"),1);ie();se();fr="dashboard-server"});function Fd(s){return new Promise(e=>setTimeout(e,s))}async function Zc(s){if(!Rr())return null;let t=await yr();if(t){let c=Xt(),u=Ye();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(p){p.code==="ESRCH"?l=!0:console.error(`[STARTUP] Could not kill outdated dashboard (PID ${c.pid}): ${p.message}`)}if(l)_t();else return{url:t.url,port:t.port,alreadyRunning:!0}}else return{url:t.url,port:t.port,alreadyRunning:!0}}let r=s?.port??Gd,o=process.argv[1],n=(0,Xc.spawn)("node",[o,"dashboard","serve","--port",String(r),"--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<Dd;c++){if(await Fd($d),i||a)return null;let u=Xt();if(u&&await Ps(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 Xc,Gd,$d,Dd,eu=P(()=>{"use strict";Xc=require("child_process");_r();gn();ie();Gd=3e3,$d=200,Dd=25});var nu={};ce(nu,{countIssueListItems:()=>ru,detectIssueList:()=>ou,openInBrowser:()=>wr,parseIssueListPathFromConfig:()=>su,runStartup:()=>Id});function su(s){let e=s.match(/^---\n([\s\S]*?)\n---/);if(!e)return;let r=e[1].match(/issueListPath:\s*["']?([^"'\n]+)["']?/);return r?r[1].trim():void 0}function ru(s){let e=0,t=0,r=s.split(`
94
+ `);for(let o of r)/^\s*- (?:~~)?\[/.test(o)&&(/~~|\*\*Done\*\*/.test(o)?t++:e++);return{availableCount:e,completedCount:t}}function ou(){let s="",e="auto-detected";try{let r=U().getState().config.issueListPath;r&&Rt.existsSync(r)&&(s=r,e="configured")}catch(t){m("startup",`Could not read issueListPath from state: ${S(t)}`)}if(!s){let t=".claude/oss-autopilot/config.md";if(Rt.existsSync(t))try{let r=Rt.readFileSync(t,"utf-8"),o=su(r);o&&Rt.existsSync(o)&&(s=o,e="configured")}catch(r){console.error("[STARTUP] Failed to read config:",S(r))}}if(!s){let t=["open-source/potential-issue-list.md","oss/issue-list.md","issues.md"];for(let r of t)if(Rt.existsSync(r)){s=r,e="auto-detected";break}}if(s)try{let t=Rt.readFileSync(s,"utf-8"),{availableCount:r,completedCount:o}=ru(t);return{path:s,source:e,availableCount:r,completedCount:o}}catch(t){return console.error(`[STARTUP] Failed to read issue list at ${s}:`,S(t)),{path:s,source:e,availableCount:0,completedCount:0}}}function wr(s){let e,t;switch(process.platform){case"darwin":e="open",t=[s];break;case"win32":e="cmd",t=["/c","start","",s];break;default:e="xdg-open",t=[s];break}(0,tu.execFile)(e,t,r=>{r&&console.error(`[STARTUP] Failed to open dashboard in browser: ${r.message}`)})}async function Id(){let s=Ye(),e=U(),t=!1;if(!e.isSetupComplete()){let c=await Ms();if(c)try{e.initializeWithDefaults(c),t=!0}catch(u){return console.error(`[STARTUP] Auto-detected username "${c}" but failed to save config:`,S(u)),{version:s,setupComplete:!1}}else return{version:s,setupComplete:!1}}let r=it();if(!r)return{version:s,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 gr(r),n,i=!1;if(o.digest.summary.totalActivePRs>0)try{let c=await Zc();c?(n=c.url,wr(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:",S(c))}i&&(o.briefSummary+=" | Dashboard opened in browser");let a=ou();return{version:s,setupComplete:!0,autoDetected:t,daily:o,dashboardUrl:n,issueList:a}}var Rt,tu,mn=P(()=>{"use strict";Rt=B(require("fs"),1),tu=require("child_process");ie();te();se();vs();eu()});var Zt,iu=P(()=>{"use strict";Zt=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(r=>r>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 Mt={};ce(Mt,{VALID_TARGETS:()=>hn,runMove:()=>xd});async function xd(s){_e(s.prUrl),Ce(s.prUrl,dt,"PR");let e=s.target;if(!hn.includes(e))throw new Error(`Invalid target "${s.target}". Must be one of: ${hn.join(", ")}`);let t=U();switch(e){case"attention":case"waiting":{let r=e==="attention"?"needs_addressing":"waiting_on_maintainer",o=e==="attention"?"Need Attention":"Waiting on Maintainer",n=new Date().toISOString();return t.batch(()=>{t.setStatusOverride(s.prUrl,r,n),t.unshelvePR(s.prUrl)}),{url:s.prUrl,target:e,description:`Moved to ${o}`}}case"shelved":return t.batch(()=>{t.shelvePR(s.prUrl),t.clearStatusOverride(s.prUrl)}),{url:s.prUrl,target:e,description:"Shelved \u2014 excluded from capacity and actionable items"};case"auto":return t.batch(()=>{t.clearStatusOverride(s.prUrl),t.unshelvePR(s.prUrl)}),{url:s.prUrl,target:e,description:"Reset to computed status"};default:{let r=e;throw new Error(`Unhandled move target: ${r}`)}}}var hn,Lt=P(()=>{"use strict";ie();We();hn=["attention","waiting","shelved","auto"]});var pu={};ce(pu,{findRunningDashboardServer:()=>yr,getDashboardPidPath:()=>Cs,isDashboardServerRunning:()=>Ps,readDashboardServerInfo:()=>Xt,removeDashboardServerInfo:()=>_t,startDashboardServer:()=>Nd,writeDashboardServerInfo:()=>br});function ks(s,e,t,r,o){let n=Ac(s,e),i=Oc(n),{monthlyMerged:a,monthlyOpened:c,monthlyClosed:u}=Gc(e),l=r??sn(U().getMergedPRs()),p=o??rn(U().getClosedPRs()),g=e.config.minStars??50,b=e.repoScores||{},T=O=>!st(b[O.repo]?.stargazersCount,g),v=l.filter(T),A=p.filter(T),y=kc(s,e,v.length,A.length),$=e.config.dismissedIssues||{},I=t.filter(O=>O.status==="new_response"&&!(O.url in $)),q={};for(let[O,E]of Object.entries(b))(E.stargazersCount!==void 0||E.language!==void 0)&&(q[O]={stars:E.stargazersCount,language:E.language});return{stats:y,prsByRepo:n,topRepos:i.map(([O,E])=>({repo:O,...E})),monthlyMerged:a,monthlyOpened:c,monthlyClosed:u,activePRs:xt(s.openPRs||[],e),shelvedPRUrls:e.config.shelvedPRUrls||[],recentlyMergedPRs:s.recentlyMergedPRs||[],recentlyClosedPRs:s.recentlyClosedPRs||[],autoUnshelvedPRs:s.autoUnshelvedPRs||[],commentedIssues:t,issueResponses:I,allMergedPRs:v,allClosedPRs:A,repoMetadata:q}}function jd(s,e=Ud){return new Promise((t,r)=>{let o=[],n=0,i=!1;s.on("data",a=>{if(!i){if(n+=a.length,n>e){i=!0,s.destroy(),r(new Error("Body too large"));return}o.push(a)}}),s.on("end",()=>{i||t(Buffer.concat(o).toString("utf-8"))}),s.on("error",a=>{i||r(a)})})}function lu(s){s.setHeader("X-Content-Type-Options","nosniff"),s.setHeader("X-Frame-Options","DENY"),s.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'"),s.setHeader("Referrer-Policy","strict-origin-when-cross-origin")}function cu(s,e){let t=s.headers.origin;return t?[`http://localhost:${e}`,`http://127.0.0.1:${e}`,`http://oss.localhost:${e}`].includes(t):!0}function Er(s,e,t){lu(s),s.setHeader("Cache-Control","no-store");let r=JSON.stringify(t);s.writeHead(e,{"Content-Type":"application/json","Content-Length":Buffer.byteLength(r)}),s.end(r)}function le(s,e,t){Er(s,e,{error:t})}async function Nd(s){let{port:e,assetsDir:t,token:r,open:o}=s,n=U(),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=ks(a,n.getState(),c)}catch(O){throw new Error(`Failed to build dashboard data: ${S(O)}. State data may be corrupted \u2014 try running: daily --json`,{cause:O})}let l=new Zt({maxRequests:30,windowMs:6e4}),p=new Zt({maxRequests:10,windowMs:6e4}),g=new Zt({maxRequests:6,windowMs:6e4}),b=uu.createServer(async(O,E)=>{let k=O.method||"GET",N=O.url||"/";try{if(N==="/api/data"&&k==="GET"){let M=l.check();if(!M.allowed){E.setHeader("Retry-After",String(M.retryAfterSeconds)),le(E,429,"Too many requests");return}if(n.reloadIfChanged())try{u=ks(a,n.getState(),c)}catch(oe){m($e,`Failed to rebuild dashboard data after state reload: ${S(oe)}`)}Er(E,200,u);return}if(N==="/api/action"&&k==="POST"){if(!cu(O,$)){le(E,403,"Invalid origin");return}let M=p.check();if(!M.allowed){E.setHeader("Retry-After",String(M.retryAfterSeconds)),le(E,429,"Too many requests");return}await T(O,E);return}if(N==="/api/refresh"&&k==="POST"){if(!cu(O,$)){le(E,403,"Invalid origin");return}let M=g.check();if(!M.allowed){E.setHeader("Retry-After",String(M.retryAfterSeconds)),le(E,429,"Too many requests");return}await v(O,E);return}if(k==="GET"){A(N,E);return}le(E,405,"Method not allowed")}catch(M){m($e,`Unhandled request error: ${k} ${N} ${S(M)}`),E.headersSent||le(E,500,"Internal server error")}});b.requestTimeout=Md;async function T(O,E){n.reloadIfChanged();let k;try{let M=await jd(O);k=JSON.parse(M)}catch(M){let oe=M instanceof Error&&M.message==="Body too large";le(E,oe?413:400,oe?"Request body too large":"Invalid JSON body");return}if(!k.action||!au.has(k.action)){le(E,400,`Invalid action. Must be one of: ${[...au].join(", ")}`);return}if(!k.url||typeof k.url!="string"){le(E,400,'Missing or invalid "url" field');return}let N=k.action==="dismiss_issue_response";try{_e(k.url),Ce(k.url,N?gt:dt,N?"issue":"PR")}catch(M){M instanceof re?le(E,400,M.message):(m($e,`Unexpected error during URL validation: ${S(M)}`),le(E,400,"Invalid URL"));return}try{if(k.action==="move"){let{VALID_TARGETS:M,runMove:oe}=await Promise.resolve().then(()=>(Lt(),Mt));if(!k.target||!M.includes(k.target)){le(E,400,`move requires a valid "target" field (${M.join(", ")})`);return}await oe({prUrl:k.url,target:k.target})}else n.dismissIssue(k.url,new Date().toISOString())}catch(M){m($e,`Action failed: ${k.action} ${k.url} ${S(M)}`),le(E,500,"Action failed");return}u=ks(a,n.getState(),c),Er(E,200,u)}async function v(O,E){let k=r||it();if(!k){le(E,401,"No GitHub token available. Cannot refresh data.");return}try{n.reloadIfChanged(),m($e,"Refreshing dashboard data from GitHub...");let N=await tn(k);a=N.digest,c=N.commentedIssues,u=ks(a,n.getState(),c,N.allMergedPRs,N.allClosedPRs),Er(E,200,u)}catch(N){m($e,`Dashboard refresh failed: ${S(N)}`),le(E,500,"Refresh failed")}}function A(O,E){let k;try{k=decodeURIComponent(O.split("?")[0])}catch{m($e,`Malformed URL received: ${O}`),le(E,400,"Malformed URL");return}if(k.includes("..")){le(E,403,"Forbidden");return}let N=k==="/"?"index.html":k.replace(/^\/+/,""),M=Ze.join(i,N);if(!M.startsWith(i+Ze.sep)&&M!==i){le(E,403,"Forbidden");return}try{Tr.statSync(M).isDirectory()&&(M=Ze.join(i,"index.html"))}catch(Q){if(Q.code==="ENOENT")M=Ze.join(i,"index.html");else{m($e,`Failed to stat file: ${M}`),le(E,500,"Internal server error");return}}let oe=Ze.extname(M).toLowerCase(),xe=Ld[oe]||"application/octet-stream";try{let Q=Tr.readFileSync(M);lu(E),E.writeHead(200,{"Content-Type":xe,"Content-Length":Q.length,"Cache-Control":"public, max-age=3600"}),E.end(Q)}catch(Q){Q.code==="ENOENT"?le(E,404,"Not found"):(m($e,`Failed to serve static file: ${M}`),le(E,500,"Failed to read file"))}}let y=10,$=e;for(let O=0;O<y;O++)try{await new Promise((E,k)=>{b.once("error",k),b.listen($,"127.0.0.1",()=>E())});break}catch(E){let k=E;if(k.code==="EADDRINUSE"&&O<y-1){m($e,`Port ${$} is in use, trying ${$+1}...`),$++;continue}throw new Error(`Failed to start server: ${k.message}`,{cause:E})}br({pid:process.pid,port:$,startedAt:new Date().toISOString(),version:Ye()});let I=`http://oss.localhost:${$}`;m($e,`Dashboard server running at ${I} (also: http://localhost:${$})`),r&&tn(r).then(O=>{n.reloadIfChanged(),a=O.digest,c=O.commentedIssues,u=ks(a,n.getState(),c,O.allMergedPRs,O.allClosedPRs),m($e,"Background data refresh complete")}).catch(O=>{m($e,`Background data refresh failed (serving cached data): ${S(O)}`)}),o&&wr(I);let q=()=>{m($e,"Shutting down dashboard server..."),_t(),b.close(()=>{process.exit(0)}),setTimeout(()=>process.exit(0),3e3).unref()};process.on("SIGINT",q),process.on("SIGTERM",q)}var uu,Tr,Ze,au,$e,Ud,Md,Ld,du=P(()=>{"use strict";uu=B(require("http"),1),Tr=B(require("fs"),1),Ze=B(require("path"),1);ie();te();se();We();on();mn();_r();iu();je();_r();au=new Set(["move","dismiss_issue_response"]),$e="dashboard-server",Ud=10240,Md=3e4,Ld={".html":"text/html",".js":"application/javascript",".css":"text/css",".svg":"image/svg+xml",".json":"application/json",".png":"image/png",".ico":"image/x-icon"}});var gu={};ce(gu,{resolveAssetsDir:()=>Rr,serveDashboard:()=>Hd});function Rr(){let s=ze.resolve(__dirname,"../../dashboard/dist");if(Sr.existsSync(ze.join(s,"index.html")))return s;let e=ze.resolve(ze.dirname(process.argv[1]),"../../dashboard/dist");if(Sr.existsSync(ze.join(e,"index.html")))return e;try{let t=require.resolve("@oss-autopilot/dashboard/package.json"),r=ze.join(ze.dirname(t),"dist");if(Sr.existsSync(ze.join(r,"index.html")))return r}catch(t){t.code!=="MODULE_NOT_FOUND"&&console.error("Error resolving dashboard package:",t)}return null}async function Hd(s){let e=Rr();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=it(),{startDashboardServer:r}=await Promise.resolve().then(()=>(du(),pu));await r({port:s.port,assetsDir:e,token:t,open:s.open})}var Sr,ze,gn=P(()=>{"use strict";Sr=B(require("fs"),1),ze=B(require("path"),1);ie()});var fu={};ce(fu,{parseIssueList:()=>hu,runParseList:()=>Wd});function qd(s){let e=s.match(/https:\/\/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);if(e)return{repo:e[1],number:parseInt(e[2],10),url:e[0]};let t=s.match(/https:\/\/github\.com\/([^/]+\/[^/]+)\/pull\/(\d+)/);return t?{repo:t[1],number:parseInt(t[2],10),url:t[0]}:null}function Bd(s){let e=s.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 Vd(s){return!!(/~~.+~~/.test(s)||/\[[xX]\]/.test(s)||/\bdone\b/i.test(s))}function hu(s){let e=s.split(`
95
+ `),t=[],r=[],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=qd(n);if(!a)continue;let c=Bd(n),u={repo:a.repo,number:a.number,title:c||`#${a.number}`,tier:o,url:a.url};Vd(n)?r.push(u):t.push(u)}return{available:t,completed:r,availableCount:t.length,completedCount:r.length}}async function Wd(s){let e=mu.resolve(s.filePath);if(!vr.existsSync(e))throw new Error(`File not found: ${e}`);let t;try{t=vr.readFileSync(e,"utf-8")}catch(r){let o=S(r);throw new Error(`Failed to read file: ${o}`,{cause:r})}return hu(t)}var vr,mu,bu=P(()=>{"use strict";vr=B(require("fs"),1),mu=B(require("path"),1);te()});var yu={};ce(yu,{runCheckIntegration:()=>Yd});function Kd(s){let e=Ie.extname(s),t=Ie.basename(s,e);return t==="index"?Ie.basename(Ie.dirname(s)):t}function Qd(s,e){let t=Ie.dirname(s),r=[];for(let n of[".ts",".tsx",".js",".jsx"]){let i=Ie.join(t,`index${n}`);e.includes(i)&&r.push(i)}let o=Ie.dirname(t);for(let n of[".ts",".tsx",".js",".jsx"]){let i=Ie.join(o,`index${n}`);e.includes(i)&&r.push(i)}return[...new Set(r)]}async function Yd(s){let e=s.base,t;try{let a=(0,Cr.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=S(a);throw new Error(`Failed to run git diff: ${c}`,{cause:a})}let r=t.filter(a=>{let c=Ie.extname(a);return zd.has(c)?!Jd.some(u=>u.test(a)):!1});if(r.length===0)return{newFiles:[],unreferencedCount:0};let o;try{o=(0,Cr.execFileSync)("git",["ls-files"],{encoding:"utf-8",timeout:1e4}).trim().split(`
97
+ `).filter(Boolean)}catch(a){R("check-integration","git ls-files failed, reference checking will be skipped",a),o=[]}let n=[];for(let a of r){let c=Kd(a),u=a.replace(/\.[^.]+$/,""),l=[],p=[c];u.includes("/")&&p.push(u);for(let T of p)try{let v=(0,Cr.execFileSync)("git",["grep","-l","--",T],{encoding:"utf-8",timeout:1e4}).trim();if(v){let A=v.split(`
98
+ `).filter(y=>y!==a);l.push(...A)}}catch(v){let A=v&&typeof v=="object"&&"status"in v?v.status:void 0;if(A!==void 0&&A!==1){let y=S(v);R("check-integration",`git grep failed for "${T}": ${y}`)}}l=[...new Set(l)];let g=l.length>0,b={path:a,referencedBy:l,isIntegrated:g};g||(b.suggestedEntryPoints=Qd(a,o)),n.push(b)}let i=n.filter(a=>!a.isIntegrated).length;return{newFiles:n,unreferencedCount:i}}var Ie,Cr,zd,Jd,_u=P(()=>{"use strict";Ie=B(require("path"),1),Cr=require("child_process");ie();te();zd=new Set([".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".rb",".go",".rs",".java",".kt",".vue",".svelte"]),Jd=[/^\./,/\.(test|spec|e2e)\.[^.]+$/,/\.(config|rc)\.[^.]+$/,/__tests__\//,/\.d\.ts$/,/\.md$/,/\.json$/,/\.ya?ml$/]});var wu={};ce(wu,{runLocalRepos:()=>tg,scanForRepos:()=>Ru});function Zd(s){try{let e=(0,Pr.execFileSync)("git",["-C",s,"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 r=e.match(/github\.com[:/]([^/]+\/[^/]+?)(?:\.git)?$/);return r?r[1]:null}catch(e){return R("local-repos",`Failed to get GitHub remote for ${s}`,e),null}}function eg(s){try{return(0,Pr.execFileSync)("git",["-C",s,"branch","--show-current"],{encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}).trim()||null}catch(e){return R("local-repos",`Failed to get current branch for ${s}`,e),null}}function Ru(s){let e={};for(let t of s){if(!fn.existsSync(t))continue;let r;try{let o=(0,Pr.execFileSync)("find",[t,"-maxdepth","4","-name",".git","-type","d"],{encoding:"utf-8",timeout:3e4,stdio:["pipe","pipe","pipe"]}).trim();r=o?o.split(`
99
+ `).filter(Boolean):[]}catch(o){R("local-repos",`find failed for scan path ${t}`,o);continue}for(let o of r){let n=Je.dirname(o),i=Zd(n);if(!i)continue;let a=eg(n);e[i]={path:n,exists:!0,currentBranch:a}}}return e}async function tg(s){let e=U(),t=e.getState(),r=s.paths?.map(i=>Je.resolve(i))??t.config.localRepoScanPaths??Xd.filter(i=>fn.existsSync(i));if(!s.scan&&t.localRepoCache){let i=t.localRepoCache;return{repos:i.repos,scanPaths:i.scanPaths,cachedAt:i.cachedAt,fromCache:!0}}let o=Ru(r),n=new Date().toISOString();try{e.setLocalRepoCache({repos:o,scanPaths:r,cachedAt:n})}catch(i){let a=S(i);console.error(`Warning: Failed to cache scan results to disk: ${a}`)}return{repos:o,scanPaths:r,cachedAt:n,fromCache:!1}}var fn,Je,jt,Pr,Xd,Eu=P(()=>{"use strict";fn=B(require("fs"),1),Je=B(require("path"),1),jt=B(require("os"),1),Pr=require("child_process");ie();te();Xd=[Je.join(jt.homedir(),"Documents","oss"),Je.join(jt.homedir(),"dev"),Je.join(jt.homedir(),"projects"),Je.join(jt.homedir(),"src"),Je.join(jt.homedir(),"code"),Je.join(jt.homedir(),"repos")]});var bn={};ce(bn,{runDismiss:()=>sg,runUndismiss:()=>rg});async function sg(s){return _e(s.url),Ce(s.url,gt,"issue"),{dismissed:U().dismissIssue(s.url,new Date().toISOString()),url:s.url}}async function rg(s){return _e(s.url),Ce(s.url,gt,"issue"),{undismissed:U().undismissIssue(s.url),url:s.url}}var yn=P(()=>{"use strict";ie();We()});var Tu={};ce(Tu,{runPRTemplate:()=>og});async function og(s){let{owner:e,repo:t}=Ht(s.repo),r=Ee(),o=ye(r);return zo(o,e,t)}var Su=P(()=>{"use strict";Wt();ve();Jo()});var Cu={};ce(Cu,{runDetectFormatters:()=>ng});async function ng(s){let e=_n.resolve(s.repoPath??process.cwd()),t={...pr(e)};if(s.ciLog){let r;try{r=vu.readFileSync(_n.resolve(s.ciLog),"utf-8")}catch(o){throw new Error(`Failed to read CI log file: ${S(o)}`,{cause:o})}t.ciDiagnosis=Qo(r,e)}return t}var vu,_n,Pu=P(()=>{"use strict";vu=B(require("fs"),1),_n=B(require("path"),1);Yo();te()});var ku={};ce(ku,{formatStatsBadge:()=>ug,formatStatsMarkdown:()=>ag,runStats:()=>ig});async function ig(){let e=U().getState(),t=e.lastDigest?.summary?.totalActivePRs??0,r=Vo({repoScores:e.repoScores??{},activePRCount:t});return{...r,mergeRateFormatted:`${(r.mergeRate*100).toFixed(1)}%`,username:e.config.githubUsername}}function ag(s){let e=[`# OSS Contribution Stats for @${s.username}`,"","| Metric | Value |","|--------|-------|",`| Merged PRs | ${s.totalMerged} |`,`| Merge Rate | ${s.mergeRateFormatted} |`,`| Active PRs | ${s.activePRs} |`,`| Repos Contributed | ${s.reposContributed} |`,""];if(s.topRepos.length>0){e.push("## Top Repos","","| Repo | Merged PRs |","|------|-----------|");for(let t of s.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 cg(s){return s.totalMerged===0?"blue":s.mergeRate>=.8?"brightgreen":s.mergeRate>=.6?"green":s.mergeRate>=.4?"yellow":"orange"}function ug(s){return{schemaVersion:1,label:"OSS Contributions",message:s.totalMerged>0?`${s.mergeRateFormatted} merge rate | ${s.totalMerged} merged`:"Getting Started",color:cg(s)}}var Au=P(()=>{"use strict";ie();Wo()});var Nn=B(jn(),1),{program:Eg,createCommand:Tg,createArgument:Sg,createOption:vg,CommanderError:Cg,InvalidArgumentError:Pg,InvalidOptionArgumentError:kg,Command:Hn,Argument:Ag,Option:Og,Help:Gg}=Nn.default;ie();te();Xo();function K(s,e){let t=S(s);e?Pc(t):console.error(`Error: ${t}`),process.exit(1)}function Ou(s){let e=Object.entries(s).sort(([t],[r])=>t.localeCompare(r));for(let[t,r]of e){let o=r.currentBranch?` (${r.currentBranch})`:"";console.log(` ${t}${o}`),console.log(` ${r.path}`)}}var Rn=[{name:"daily",register(s){s.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(()=>(vs(),nn)),r=await t();J(r)}else{let{runDailyForDisplay:t,printDigest:r}=await Promise.resolve().then(()=>(vs(),nn)),o=await t();r(o.digest,o.capacity,o.commentedIssues)}}catch(t){K(t,e.json)}})}},{name:"status",localOnly:!0,register(s){s.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(()=>(Fc(),Dc)),r=await t({offline:e.offline});e.json?J(r):(console.log(`
101
101
  \u{1F4CA} OSS Status
102
102
  `),console.log(`Merged PRs: ${r.stats.mergedPRs}`),console.log(`Closed PRs: ${r.stats.closedPRs}`),console.log(`Merge Rate: ${r.stats.mergeRate}`),console.log(`Needs Response: ${r.stats.needsResponse}`),r.offline?(console.log(`
103
103
  Last Updated: ${r.lastUpdated||"Never"}`),console.log("(Offline mode: showing cached data)")):console.log(`
104
104
  Last Run: ${r.lastRunAt||"Never"}`),console.log(`
105
- Run with --json for structured output`))}catch(t){X(t,e.json)}})}},{name:"search",register(s){s.command("search [count]").description("Search for new issues to work on").option("--json","Output as JSON").action(async(e,t)=>{try{let{runSearch:r}=await Promise.resolve().then(()=>(Pc(),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(`
105
+ Run with --json for structured output`))}catch(t){K(t,e.json)}})}},{name:"search",register(s){s.command("search [count]").description("Search for new issues to work on").option("--json","Output as JSON").action(async(e,t)=>{try{let{runSearch:r}=await Promise.resolve().then(()=>(xc(),Ic)),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 r({maxResults:o});if(t.json)Y(i);else{if(i.candidates.length===0){i.rateLimitWarning?console.warn(`
107
+ `);let i=await r({maxResults:o});if(t.json)J(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:p,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(", ")}`),p.length>0&&console.log(` Skip: ${p.join(", ")}`),console.log("---")}}}catch(r){X(r,t.json)}})}},{name:"vet",register(s){s.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:r}=await Promise.resolve().then(()=>(Dc(),$c)),o=await r({issueUrl:e});if(t.json)Y(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:p,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(", ")}`),p.length>0&&console.log(` Skip: ${p.join(", ")}`),console.log("---")}}}catch(r){K(r,t.json)}})}},{name:"vet",register(s){s.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:r}=await Promise.resolve().then(()=>(Hc(),Nc)),o=await r({issueUrl:e});if(t.json)J(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(r){X(r,t.json)}})}},{name:"track",register(s){s.command("track <pr-url>").description("Add a PR to track").option("--json","Output as JSON").action(async(e,t)=>{try{let{runTrack:r}=await Promise.resolve().then(()=>(tn(),en)),o=await r({prUrl:e});t.json?Y(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(r){X(r,t.json)}})}},{name:"untrack",localOnly:!0,register(s){s.command("untrack <pr-url>").description("Stop tracking a PR").option("--json","Output as JSON").action(async(e,t)=>{try{let{runUntrack:r}=await Promise.resolve().then(()=>(tn(),en)),o=await r({prUrl:e});t.json?Y(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(r){X(r,t.json)}})}},{name:"read",localOnly:!0,register(s){s.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:r}=await Promise.resolve().then(()=>(Fc(),Ic)),o=await r({prUrl:e,all:t.all});t.json?Y(o):console.log("Note: In v2, PR read state is not tracked locally. PRs are fetched fresh on each daily run.")}catch(r){X(r,t.json)}})}},{name:"comments",register(s){s.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:r}=await Promise.resolve().then(()=>(pr(),lr)),o=await r({prUrl:e,showBots:t.bots});if(t.json)Y(o);else{let{formatRelativeTime:n}=await Promise.resolve().then(()=>(Se(),Un));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(r){K(r,t.json)}})}},{name:"track",register(s){s.command("track <pr-url>").description("Add a PR to track").option("--json","Output as JSON").action(async(e,t)=>{try{let{runTrack:r}=await Promise.resolve().then(()=>(un(),cn)),o=await r({prUrl:e});t.json?J(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(r){K(r,t.json)}})}},{name:"untrack",localOnly:!0,register(s){s.command("untrack <pr-url>").description("Stop tracking a PR").option("--json","Output as JSON").action(async(e,t)=>{try{let{runUntrack:r}=await Promise.resolve().then(()=>(un(),cn)),o=await r({prUrl:e});t.json?J(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(r){K(r,t.json)}})}},{name:"read",localOnly:!0,register(s){s.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:r}=await Promise.resolve().then(()=>(Bc(),qc)),o=await r({prUrl:e,all:t.all});t.json?J(o):console.log("Note: In v2, PR read state is not tracked locally. PRs are fetched fresh on each daily run.")}catch(r){K(r,t.json)}})}},{name:"comments",register(s){s.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:r}=await Promise.resolve().then(()=>(hr(),mr)),o=await r({prUrl:e,showBots:t.bots});if(t.json)J(o);else{let{formatRelativeTime:n}=await Promise.resolve().then(()=>(ve(),Vn));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,40 @@ 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(r){X(r,t.json)}})}},{name:"post",register(s){s.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,r)=>{try{let o;if(r.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(()=>(pr(),lr)),i=await n({url:e,message:o});r.json?Y(i):console.log(`Comment posted: ${i.commentUrl}`)}catch(o){X(o,r.json)}})}},{name:"claim",register(s){s.command("claim <issue-url> [message...]").description("Claim an issue by posting a comment").option("--json","Output as JSON").action(async(e,t,r)=>{try{let{runClaim:o}=await Promise.resolve().then(()=>(pr(),lr)),n=t.length>0?t.join(" "):void 0,i=await o({issueUrl:e,message:n});r.json?Y(i):console.log(`Issue claimed: ${i.commentUrl}`)}catch(o){X(o,r.json)}})}},{name:"config",localOnly:!0,register(s){s.command("config [key] [value]").description("Show or update configuration").option("--json","Output as JSON").action(async(e,t,r)=>{try{let{runConfig:o}=await Promise.resolve().then(()=>(Mc(),Uc)),n=await o({key:e,value:t});r.json?Y(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(r){K(r,t.json)}})}},{name:"post",register(s){s.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,r)=>{try{let o;if(r.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(()=>(hr(),mr)),i=await n({url:e,message:o});r.json?J(i):console.log(`Comment posted: ${i.commentUrl}`)}catch(o){K(o,r.json)}})}},{name:"claim",register(s){s.command("claim <issue-url> [message...]").description("Claim an issue by posting a comment").option("--json","Output as JSON").action(async(e,t,r)=>{try{let{runClaim:o}=await Promise.resolve().then(()=>(hr(),mr)),n=t.length>0?t.join(" "):void 0,i=await o({issueUrl:e,message:n});r.json?J(i):console.log(`Issue claimed: ${i.commentUrl}`)}catch(o){K(o,r.json)}})}},{name:"config",localOnly:!0,register(s){s.command("config [key] [value]").description("Show or update configuration").option("--json","Output as JSON").action(async(e,t,r)=>{try{let{runConfig:o}=await Promise.resolve().then(()=>(zc(),Wc)),n=await o({key:e,value:t});r.json?J(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){X(o,r.json)}})}},{name:"init",register(s){s.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:r}=await Promise.resolve().then(()=>(jc(),Lc)),o=await r({username:e});t.json?Y(o):(console.log(`
134
- Username set to @${o.username}.`),console.log("Run `oss-autopilot daily` to fetch your open PRs from GitHub."))}catch(r){X(r,t.json)}})}},{name:"setup",localOnly:!0,register(s){s.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(()=>(on(),rn)),r=await t({reset:e.reset,set:e.set});if(e.json)Y(r);else if("success"in r){for(let[o,n]of Object.entries(r.settings))console.log(`\u2713 ${o}: ${n}`);if(r.warnings)for(let o of r.warnings)console.warn(o)}else if("setupComplete"in r&&r.setupComplete)console.log(`
133
+ `),console.log(JSON.stringify(n.config,null,2))):console.log(`Set ${n.key} to: ${n.value}`)}catch(o){K(o,r.json)}})}},{name:"init",register(s){s.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:r}=await Promise.resolve().then(()=>(Kc(),Jc)),o=await r({username:e});t.json?J(o):(console.log(`
134
+ Username set to @${o.username}.`),console.log("Run `oss-autopilot daily` to fetch your open PRs from GitHub."))}catch(r){K(r,t.json)}})}},{name:"setup",localOnly:!0,register(s){s.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(()=>(dn(),pn)),r=await t({reset:e.reset,set:e.set});if(e.json)J(r);else if("success"in r){for(let[o,n]of Object.entries(r.settings))console.log(`\u2713 ${o}: ${n}`);if(r.warnings)for(let o of r.warnings)console.warn(o)}else if("setupComplete"in r&&r.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: ${r.config.githubUsername||"(not set)"}`),console.log(` Max active PRs: ${r.config.maxActivePRs}`),console.log(` Dormant threshold: ${r.config.dormantThresholdDays} days`),console.log(` Approaching dormant: ${r.config.approachingDormantDays} days`),console.log(` Languages: ${r.config.languages.join(", ")}`),console.log(` Labels: ${r.config.labels.join(", ")}`),console.log(`
138
138
  Run 'setup --reset' to reconfigure.`);else if("setupRequired"in r){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 r.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){X(t,e.json)}})}},{name:"checkSetup",localOnly:!0,register(s){s.command("checkSetup").description("Check if setup is complete").option("--json","Output as JSON").action(async e=>{try{let{runCheckSetup:t}=await Promise.resolve().then(()=>(on(),rn)),r=await t();e.json?Y(r):r.setupComplete?(console.log("SETUP_COMPLETE"),console.log(`username=${r.username}`)):console.log("SETUP_INCOMPLETE")}catch(t){X(t,e.json)}})}},{name:"serve",localOnly:!0,register(s){s.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 r=parseInt(t.port,10);(isNaN(r)||r<1||r>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(()=>(nn(),ou));await o({port:r,open:t.open})}catch(r){X(r)}})}},{name:"parse-issue-list",localOnly:!0,register(s){s.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:r}=await Promise.resolve().then(()=>(cu(),au)),o=await r({filePath:e});if(t.json)Y(o);else{let i=(await import("path")).resolve(e);if(console.log(`
141
+ `);for(let o of r.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){K(t,e.json)}})}},{name:"checkSetup",localOnly:!0,register(s){s.command("checkSetup").description("Check if setup is complete").option("--json","Output as JSON").action(async e=>{try{let{runCheckSetup:t}=await Promise.resolve().then(()=>(dn(),pn)),r=await t();e.json?J(r):r.setupComplete?(console.log("SETUP_COMPLETE"),console.log(`username=${r.username}`)):console.log("SETUP_INCOMPLETE")}catch(t){K(t,e.json)}})}},{name:"serve",localOnly:!0,register(s){s.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 r=parseInt(t.port,10);(isNaN(r)||r<1||r>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(()=>(gn(),gu));await o({port:r,open:t.open})}catch(r){K(r)}})}},{name:"parse-issue-list",localOnly:!0,register(s){s.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:r}=await Promise.resolve().then(()=>(bu(),fu)),o=await r({filePath:e});if(t.json)J(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(r){X(r,t.json)}})}},{name:"check-integration",localOnly:!0,register(s){s.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(()=>(lu(),uu)),r=await t({base:e.base});if(e.json)Y(r);else if(r.newFiles.length===0)console.log(`
145
+ --- Completed ---`);for(let a of o.completed)console.log(` [${a.tier}] ${a.repo}#${a.number}: ${a.title}`)}}}catch(r){K(r,t.json)}})}},{name:"check-integration",localOnly:!0,register(s){s.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(()=>(_u(),yu)),r=await t({base:e.base});if(e.json)J(r);else if(r.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: ${r.newFiles.length} | Unreferenced: ${r.unreferencedCount}
149
- `);for(let o of r.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){X(t,e.json)}})}},{name:"local-repos",localOnly:!0,register(s){s.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(()=>(gu(),du)),r=await t({scan:e.scan,paths:e.paths});e.json?Y(r):r.fromCache?(console.log(`
149
+ `);for(let o of r.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){K(t,e.json)}})}},{name:"local-repos",localOnly:!0,register(s){s.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(()=>(Eu(),wu)),r=await t({scan:e.scan,paths:e.paths});e.json?J(r):r.fromCache?(console.log(`
150
150
  \u{1F4C1} Local Repos (cached ${r.cachedAt})
151
- `),yu(r.repos)):(console.log(`Found ${Object.keys(r.repos).length} repos:
152
- `),yu(r.repos))}catch(t){X(t,e.json)}})}},{name:"startup",localOnly:!0,register(s){s.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(()=>(an(),Qc)),r=await t();e.json?Y(r):r.setupComplete?r.authError?console.error(`Error: ${r.authError}`):(console.log(`OSS Autopilot v${r.version}`),console.log(r.daily?.briefSummary??"")):console.log("Setup incomplete. Run /setup-oss first.")}catch(t){X(t,e.json)}})}},{name:"shelve",localOnly:!0,register(s){s.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:r}=await Promise.resolve().then(()=>(Ut(),xt)),o=await r({prUrl:e,target:"shelved"});t.json?Y(o):console.log(o.description)}catch(r){X(r,t.json)}})}},{name:"unshelve",localOnly:!0,register(s){s.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:r}=await Promise.resolve().then(()=>(Ut(),xt)),o=await r({prUrl:e,target:"auto"});t.json?Y(o):console.log(o.description)}catch(r){X(r,t.json)}})}},{name:"move",localOnly:!0,register(s){s.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,r)=>{try{let{runMove:o}=await Promise.resolve().then(()=>(Ut(),xt)),n=await o({prUrl:e,target:t});r.json?Y(n):console.log(n.description)}catch(o){X(o,r.json)}})}},{name:"dismiss",localOnly:!0,register(s){s.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:r}=await Promise.resolve().then(()=>(pn(),ln)),o=await r({url:e});t.json?Y(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(r){X(r,t.json)}})}},{name:"undismiss",localOnly:!0,register(s){s.command("undismiss <url>").description("Undismiss an issue (re-enable notifications)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runUndismiss:r}=await Promise.resolve().then(()=>(pn(),ln)),o=await r({url:e});t.json?Y(o):o.undismissed?(console.log(`Undismissed: ${e}`),console.log("Notifications are active again.")):console.log("Was not dismissed.")}catch(r){X(r,t.json)}})}},{name:"override",localOnly:!0,register(s){s.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,r)=>{try{let{runMove:o}=await Promise.resolve().then(()=>(Ut(),xt)),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"});r.json?Y(a):console.log(a.description)}catch(o){X(o,r.json)}})}},{name:"clear-override",localOnly:!0,register(s){s.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:r}=await Promise.resolve().then(()=>(Ut(),xt)),o=await r({prUrl:e,target:"auto"});t.json?Y(o):console.log(o.description)}catch(r){X(r,t.json)}})}},{name:"pr-template",register(s){s.command("pr-template <repo>").description("Fetch a repository's PR description template").option("--json","Output as JSON").action(async(e,t)=>{try{let{runPRTemplate:r}=await Promise.resolve().then(()=>(hu(),mu)),o=await r({repo:e});t.json?Y(o):o.template?(console.log(`
151
+ `),Ou(r.repos)):(console.log(`Found ${Object.keys(r.repos).length} repos:
152
+ `),Ou(r.repos))}catch(t){K(t,e.json)}})}},{name:"startup",localOnly:!0,register(s){s.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(()=>(mn(),nu)),r=await t();e.json?J(r):r.setupComplete?r.authError?console.error(`Error: ${r.authError}`):(console.log(`OSS Autopilot v${r.version}`),console.log(r.daily?.briefSummary??"")):console.log("Setup incomplete. Run /setup-oss first.")}catch(t){K(t,e.json)}})}},{name:"shelve",localOnly:!0,register(s){s.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:r}=await Promise.resolve().then(()=>(Lt(),Mt)),o=await r({prUrl:e,target:"shelved"});t.json?J(o):console.log(o.description)}catch(r){K(r,t.json)}})}},{name:"unshelve",localOnly:!0,register(s){s.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:r}=await Promise.resolve().then(()=>(Lt(),Mt)),o=await r({prUrl:e,target:"auto"});t.json?J(o):console.log(o.description)}catch(r){K(r,t.json)}})}},{name:"move",localOnly:!0,register(s){s.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,r)=>{try{let{runMove:o}=await Promise.resolve().then(()=>(Lt(),Mt)),n=await o({prUrl:e,target:t});r.json?J(n):console.log(n.description)}catch(o){K(o,r.json)}})}},{name:"dismiss",localOnly:!0,register(s){s.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:r}=await Promise.resolve().then(()=>(yn(),bn)),o=await r({url:e});t.json?J(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(r){K(r,t.json)}})}},{name:"undismiss",localOnly:!0,register(s){s.command("undismiss <url>").description("Undismiss an issue (re-enable notifications)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runUndismiss:r}=await Promise.resolve().then(()=>(yn(),bn)),o=await r({url:e});t.json?J(o):o.undismissed?(console.log(`Undismissed: ${e}`),console.log("Notifications are active again.")):console.log("Was not dismissed.")}catch(r){K(r,t.json)}})}},{name:"override",localOnly:!0,register(s){s.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,r)=>{try{let{runMove:o}=await Promise.resolve().then(()=>(Lt(),Mt)),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"});r.json?J(a):console.log(a.description)}catch(o){K(o,r.json)}})}},{name:"clear-override",localOnly:!0,register(s){s.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:r}=await Promise.resolve().then(()=>(Lt(),Mt)),o=await r({prUrl:e,target:"auto"});t.json?J(o):console.log(o.description)}catch(r){K(r,t.json)}})}},{name:"pr-template",register(s){s.command("pr-template <repo>").description("Fetch a repository's PR description template").option("--json","Output as JSON").action(async(e,t)=>{try{let{runPRTemplate:r}=await Promise.resolve().then(()=>(Su(),Tu)),o=await r({repo:e});t.json?J(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(r){X(r,t.json)}})}},{name:"stats",localOnly:!0,register(s){s.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:r,formatStatsBadge:o}=await Promise.resolve().then(()=>(bu(),fu)),n=await t();if(e.badge)console.log(JSON.stringify(o(n),null,2));else if(e.markdown)console.log(r(n));else if(e.json)Y(n);else{if(console.log(`
156
+ No PR template found for this repository.`)}catch(r){K(r,t.json)}})}},{name:"detect-formatters",localOnly:!0,register(s){s.command("detect-formatters [repo-path]").description("Detect formatters and linters configured in a repository").option("--ci-log <path>","Analyze CI log file for formatting failures").option("--json","Output as JSON").action(async(e,t)=>{try{let{runDetectFormatters:r}=await Promise.resolve().then(()=>(Pu(),Cu)),o=await r({repoPath:e,ciLog:t.ciLog});if(t.json)J(o);else{if(o.formatters.length===0)console.log(`
157
+ No formatters detected.`);else{console.log(`
158
+ Detected ${o.formatters.length} formatter(s):
159
+ `);for(let n of o.formatters)console.log(` ${n.name} (${n.configPath})`),console.log(` Fix: ${n.fixCommand}`),console.log(` Check: ${n.checkCommand}`)}if(o.packageJsonScripts.length>0){console.log(`
160
+ package.json scripts:`);for(let n of o.packageJsonScripts)console.log(` ${n.name}: ${n.command}`)}o.ciDiagnosis&&(console.log(""),o.ciDiagnosis.isFormattingFailure?(console.log(`CI Diagnosis: Formatting failure detected (${o.ciDiagnosis.formatter})`),console.log(` Fix: ${o.ciDiagnosis.fixCommand}`),console.log(` Evidence: ${o.ciDiagnosis.evidence.join(", ")}`)):console.log("CI Diagnosis: No formatting failure detected."))}}catch(r){K(r,t.json)}})}},{name:"stats",localOnly:!0,register(s){s.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:r,formatStatsBadge:o}=await Promise.resolve().then(()=>(Au(),ku)),n=await t();if(e.badge)console.log(JSON.stringify(o(n),null,2));else if(e.markdown)console.log(r(n));else if(e.json)J(n);else{if(console.log(`
157
161
  OSS Contribution Stats (@${n.username})
158
162
  `),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
163
  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){X(t,e.json)}})}}];var Hd=Qe(),vr=new In;vr.name("oss-autopilot").description("AI-powered autopilot for managing open source contributions").version(Hd).option("--debug","Enable debug logging");var qd=new Set(dn.filter(s=>s.localOnly).map(s=>s.name));for(let s of dn)s.register(vr);vr.hook("preAction",async(s,e)=>{s.opts().debug&&(Qr(),T("cli",`Running command: ${e.name()}`));let r=e.name();qd.has(r)||await Is()||(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 _u=process.argv.slice(2),Bd=_u.some(s=>!s.startsWith("-")),Vd=_u.some(s=>s==="--help"||s==="-h"||s==="--version"||s==="-V");!Bd&&!Vd&&!Fs()&&(console.log(`
164
+ Use --markdown for a shareable report or --badge for shields.io`)}}catch(t){K(t,e.json)}})}}];var lg=Ye(),kr=new Hn;kr.name("oss-autopilot").description("AI-powered autopilot for managing open source contributions").version(lg).option("--debug","Enable debug logging");var pg=new Set(Rn.filter(s=>s.localOnly).map(s=>s.name));for(let s of Rn)s.register(kr);kr.hook("preAction",async(s,e)=>{s.opts().debug&&(eo(),R("cli",`Running command: ${e.name()}`));let r=e.name();pg.has(r)||await xs()||(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 Gu=process.argv.slice(2),dg=Gu.some(s=>!s.startsWith("-")),gg=Gu.some(s=>s==="--help"||s==="-h"||s==="--version"||s==="-V");!dg&&!gg&&!Us()&&(console.log(`
161
165
  OSS Autopilot \u2014 AI copilot for open source contributions
162
166
 
163
167
  Looks like this is your first run! Quick start:
@@ -166,7 +170,7 @@ Looks like this is your first run! Quick start:
166
170
  3. Daily check: oss-autopilot daily
167
171
 
168
172
  Run oss-autopilot --help for all commands.
169
- `),process.exit(0));vr.parse();
173
+ `),process.exit(0));kr.parse();
170
174
  /*! Bundled license information:
171
175
 
172
176
  @octokit/request-error/dist-src/index.js: