@oss-autopilot/core 0.48.0 → 0.50.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.
- package/dist/cli.bundle.cjs +45 -45
- package/dist/cli.bundle.cjs.map +4 -4
- package/dist/commands/daily.d.ts +1 -1
- package/dist/commands/daily.js +15 -8
- package/dist/commands/dashboard-server.js +16 -40
- package/dist/commands/setup.d.ts +3 -0
- package/dist/commands/setup.js +62 -0
- package/dist/core/category-mapping.d.ts +19 -0
- package/dist/core/category-mapping.js +58 -0
- package/dist/core/daily-logic.d.ts +3 -2
- package/dist/core/daily-logic.js +79 -4
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/issue-discovery.js +55 -3
- package/dist/core/issue-scoring.d.ts +3 -0
- package/dist/core/issue-scoring.js +5 -0
- package/dist/core/issue-vetting.js +12 -0
- package/dist/core/types.d.ts +8 -1
- package/dist/core/types.js +11 -0
- package/dist/formatters/json.d.ts +4 -0
- package/dist/formatters/json.js +1 -0
- package/package.json +1 -1
package/dist/cli.bundle.cjs
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var
|
|
3
|
-
`)}displayWidth(e){return
|
|
2
|
+
"use strict";var $c=Object.create;var _r=Object.defineProperty;var Dc=Object.getOwnPropertyDescriptor;var Ic=Object.getOwnPropertyNames;var Fc=Object.getPrototypeOf,xc=Object.prototype.hasOwnProperty;var k=(r,e)=>()=>(r&&(e=r(r=0)),e);var Ke=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),oe=(r,e)=>{for(var t in e)_r(r,t,{get:e[t],enumerable:!0})},Uc=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ic(e))!xc.call(r,o)&&o!==t&&_r(r,o,{get:()=>e[o],enumerable:!(s=Dc(e,o))||s.enumerable});return r};var z=(r,e,t)=>(t=r!=null?$c(Fc(r)):{},Uc(e||!r||!r.__esModule?_r(t,"default",{value:r,enumerable:!0}):t,r));var Kt=Ke(wr=>{var _s=class extends Error{constructor(e,t,s){super(s),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},Rr=class extends _s{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};wr.CommanderError=_s;wr.InvalidArgumentError=Rr});var Rs=Ke(Tr=>{var{InvalidArgumentError:Mc}=Kt(),Er=class{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:(t.push(e),t)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,s)=>{if(!this.argChoices.includes(t))throw new Mc(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(t,s):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function Lc(r){let e=r.name()+(r.variadic===!0?"...":"");return r.required?"<"+e+">":"["+e+"]"}Tr.Argument=Er;Tr.humanReadableArgName=Lc});var Pr=Ke(Sr=>{var{humanReadableArgName:jc}=Rs(),vr=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(e){this.helpWidth=this.helpWidth??e.helpWidth??80}visibleCommands(e){let t=e.commands.filter(o=>!o._hidden),s=e._getHelpCommand();return s&&!s._hidden&&t.push(s),this.sortSubcommands&&t.sort((o,n)=>o.name().localeCompare(n.name())),t}compareOptions(e,t){let s=o=>o.short?o.short.replace(/^-/,""):o.long.replace(/^--/,"");return s(e).localeCompare(s(t))}visibleOptions(e){let t=e.options.filter(o=>!o.hidden),s=e._getHelpOption();if(s&&!s.hidden){let o=s.short&&e._findOption(s.short),n=s.long&&e._findOption(s.long);!o&&!n?t.push(s):s.long&&!n?t.push(e.createOption(s.long,s.description)):s.short&&!o&&t.push(e.createOption(s.short,s.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let s=e.parent;s;s=s.parent){let o=s.options.filter(n=>!n.hidden);t.push(...o)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||""}),e.registeredArguments.find(t=>t.description)?e.registeredArguments:[]}subcommandTerm(e){let t=e.registeredArguments.map(s=>jc(s)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleSubcommandTerm(t.subcommandTerm(o)))),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleOptionTerm(t.optionTerm(o)))),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleOptionTerm(t.optionTerm(o)))),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((s,o)=>Math.max(s,this.displayWidth(t.styleArgumentTerm(t.argumentTerm(o)))),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let s="";for(let o=e.parent;o;o=o.parent)s=o.name()+" "+s;return s+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(s=>JSON.stringify(s)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0){let s=`(${t.join(", ")})`;return e.description?`${e.description} ${s}`:s}return e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(s=>JSON.stringify(s)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let s=`(${t.join(", ")})`;return e.description?`${e.description} ${s}`:s}return e.description}formatItemList(e,t,s){return t.length===0?[]:[s.styleTitle(e),...t,""]}groupItems(e,t,s){let o=new Map;return e.forEach(n=>{let i=s(n);o.has(i)||o.set(i,[])}),t.forEach(n=>{let i=s(n);o.has(i)||o.set(i,[]),o.get(i).push(n)}),o}formatHelp(e,t){let s=t.padWidth(e,t),o=t.helpWidth??80;function n(d,g){return t.formatItem(d,s,g,t)}let i=[`${t.styleTitle("Usage:")} ${t.styleUsage(t.commandUsage(e))}`,""],a=t.commandDescription(e);a.length>0&&(i=i.concat([t.boxWrap(t.styleCommandDescription(a),o),""]));let c=t.visibleArguments(e).map(d=>n(t.styleArgumentTerm(t.argumentTerm(d)),t.styleArgumentDescription(t.argumentDescription(d))));if(i=i.concat(this.formatItemList("Arguments:",c,t)),this.groupItems(e.options,t.visibleOptions(e),d=>d.helpGroupHeading??"Options:").forEach((d,g)=>{let E=d.map(_=>n(t.styleOptionTerm(t.optionTerm(_)),t.styleOptionDescription(t.optionDescription(_))));i=i.concat(this.formatItemList(g,E,t))}),t.showGlobalOptions){let d=t.visibleGlobalOptions(e).map(g=>n(t.styleOptionTerm(t.optionTerm(g)),t.styleOptionDescription(t.optionDescription(g))));i=i.concat(this.formatItemList("Global Options:",d,t))}return this.groupItems(e.commands,t.visibleCommands(e),d=>d.helpGroup()||"Commands:").forEach((d,g)=>{let E=d.map(_=>n(t.styleSubcommandTerm(t.subcommandTerm(_)),t.styleSubcommandDescription(t.subcommandDescription(_))));i=i.concat(this.formatItemList(g,E,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,s,o){let i=" ".repeat(2);if(!s)return i+e;let a=e.padEnd(t+e.length-o.displayWidth(e)),c=2,l=(this.helpWidth??80)-t-c-2,d;return l<this.minWidthToWrap||o.preformatted(s)?d=s:d=o.boxWrap(s,l).replace(/\n/g,`
|
|
4
4
|
`+" ".repeat(t+c)),i+a+" ".repeat(c)+d.replace(/\n/g,`
|
|
5
5
|
${i}`)}boxWrap(e,t){if(t<this.minWidthToWrap)return e;let s=e.split(/\r\n|\n/),o=/[\s]*[^\s]+/g,n=[];return s.forEach(i=>{let a=i.match(o);if(a===null){n.push("");return}let c=[a.shift()],u=this.displayWidth(c[0]);a.forEach(l=>{let d=this.displayWidth(l);if(u+d<=t){c.push(l),u+=d;return}n.push(c.join(""));let g=l.trimStart();c=[g],u=this.displayWidth(g)}),n.push(c.join(""))}),n.join(`
|
|
6
|
-
`)}};function
|
|
6
|
+
`)}};function an(r){let e=/\x1b\[\d*(;\d*)*m/g;return r.replace(e,"")}Sr.Help=vr;Sr.stripColor=an});var Or=Ke(Ar=>{var{InvalidArgumentError:Nc}=Kt(),Cr=class{constructor(e,t){this.flags=e,this.description=t||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let s=Hc(e);this.short=s.shortFlag,this.long=s.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let t=e;return typeof e=="string"&&(t={[e]:!0}),this.implied=Object.assign(this.implied||{},t),this}env(e){return this.envVar=e,this}argParser(e){return this.parseArg=e,this}makeOptionMandatory(e=!0){return this.mandatory=!!e,this}hideHelp(e=!0){return this.hidden=!!e,this}_collectValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:(t.push(e),t)}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,s)=>{if(!this.argChoices.includes(t))throw new Nc(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(t,s):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?cn(this.name().replace(/^no-/,"")):cn(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}},kr=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(t=>{t.negate?this.negativeOptions.set(t.attributeName(),t):this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,s)=>{this.positiveOptions.has(s)&&this.dualOptions.add(s)})}valueFromOption(e,t){let s=t.attributeName();if(!this.dualOptions.has(s))return!0;let o=this.negativeOptions.get(s).presetArg,n=o!==void 0?o:!1;return t.negate===(n===e)}};function cn(r){return r.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function Hc(r){let e,t,s=/^-[^-]$/,o=/^--[^-]/,n=r.split(/[ |,]+/).concat("guard");if(s.test(n[0])&&(e=n.shift()),o.test(n[0])&&(t=n.shift()),!e&&s.test(n[0])&&(e=n.shift()),!e&&o.test(n[0])&&(e=t,t=n.shift()),n[0].startsWith("-")){let i=n[0],a=`option creation failed due to '${i}' in option flags '${r}'`;throw/^-[^-][^-]/.test(i)?new Error(`${a}
|
|
7
7
|
- a short flag is a single dash and a single character
|
|
8
8
|
- either use a single dash and a single character (for a short flag)
|
|
9
9
|
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`):s.test(i)?new Error(`${a}
|
|
10
10
|
- too many short flags`):o.test(i)?new Error(`${a}
|
|
11
11
|
- too many long flags`):new Error(`${a}
|
|
12
|
-
- unrecognised flag format`)}if(e===void 0&&t===void 0)throw new Error(`option creation failed due to no flags found in '${r}'.`);return{shortFlag:e,longFlag:t}}
|
|
12
|
+
- unrecognised flag format`)}if(e===void 0&&t===void 0)throw new Error(`option creation failed due to no flags found in '${r}'.`);return{shortFlag:e,longFlag:t}}Ar.Option=Cr;Ar.DualOptions=kr});var ln=Ke(un=>{function qc(r,e){if(Math.abs(r.length-e.length)>3)return Math.max(r.length,e.length);let t=[];for(let s=0;s<=r.length;s++)t[s]=[s];for(let s=0;s<=e.length;s++)t[0][s]=s;for(let s=1;s<=e.length;s++)for(let o=1;o<=r.length;o++){let n=1;r[o-1]===e[s-1]?n=0:n=1,t[o][s]=Math.min(t[o-1][s]+1,t[o][s-1]+1,t[o-1][s-1]+n),o>1&&s>1&&r[o-1]===e[s-2]&&r[o-2]===e[s-1]&&(t[o][s]=Math.min(t[o][s],t[o-2][s-2]+1))}return t[r.length][e.length]}function Bc(r,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=r.startsWith("--");t&&(r=r.slice(2),e=e.map(i=>i.slice(2)));let s=[],o=3,n=.4;return e.forEach(i=>{if(i.length<=1)return;let a=qc(r,i),c=Math.max(r.length,i.length);(c-a)/c>n&&(a<o?(o=a,s=[i]):a===o&&s.push(i))}),s.sort((i,a)=>i.localeCompare(a)),t&&(s=s.map(i=>`--${i}`)),s.length>1?`
|
|
13
13
|
(Did you mean one of ${s.join(", ")}?)`:s.length===1?`
|
|
14
|
-
(Did you mean ${s[0]}?)`:""}
|
|
15
|
-
- specify the name in Command constructor or using .name()`);return t=t||{},t.isDefault&&(this._defaultCommandName=e._name),(t.noHelp||t.hidden)&&(e._hidden=!0),this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,t){return new
|
|
16
|
-
Expecting one of '${s.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(t):this._lifeCycleHooks[e]=[t],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=t=>{if(t.code!=="commander.executeSubCommandAsync")throw t},this}_exit(e,t,s){this._exitCallback&&this._exitCallback(new
|
|
17
|
-
- already used by option '${t.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let t=o=>[o.name()].concat(o.aliases()),s=t(e).find(o=>this._findCommand(o));if(s){let o=t(this._findCommand(s)).join("|"),n=t(e).join("|");throw new Error(`cannot add command '${n}' as already have command '${o}'`)}this._initCommandGroup(e),this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),s=e.attributeName();if(e.negate){let n=e.long.replace(/^--no-/,"--");this._findOption(n)||this.setOptionValueWithSource(s,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(s,e.defaultValue,"default");let o=(n,i,a)=>{n==null&&e.presetArg!==void 0&&(n=e.presetArg);let c=this.getOptionValue(s);n!==null&&e.parseArg?n=this._callParseArg(e,n,c,i):n!==null&&e.variadic&&(n=e._collectValue(n,c)),n==null&&(e.negate?n=!1:e.isBoolean()||e.optional?n=!0:n=""),this.setOptionValueWithSource(s,n,a)};return this.on("option:"+t,n=>{let i=`error: option '${e.flags}' argument '${n}' is invalid.`;o(n,i,"cli")}),e.envVar&&this.on("optionEnv:"+t,n=>{let i=`error: option '${e.flags}' value '${n}' from env '${e.envVar}' is invalid.`;o(n,i,"env")}),this}_optionEx(e,t,s,o,n){if(typeof t=="object"&&t instanceof
|
|
18
|
-
- either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(e,t,s){if(
|
|
14
|
+
(Did you mean ${s[0]}?)`:""}un.suggestSimilar=Bc});var mn=Ke(Fr=>{var Vc=require("node:events").EventEmitter,Gr=require("node:child_process"),Qe=require("node:path"),ws=require("node:fs"),V=require("node:process"),{Argument:Wc,humanReadableArgName:zc}=Rs(),{CommanderError:$r}=Kt(),{Help:Jc,stripColor:Kc}=Pr(),{Option:pn,DualOptions:Qc}=Or(),{suggestSimilar:dn}=ln(),Dr=class r extends Vc{constructor(e){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=e||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:t=>V.stdout.write(t),writeErr:t=>V.stderr.write(t),outputError:(t,s)=>s(t),getOutHelpWidth:()=>V.stdout.isTTY?V.stdout.columns:void 0,getErrHelpWidth:()=>V.stderr.isTTY?V.stderr.columns:void 0,getOutHasColors:()=>Ir()??(V.stdout.isTTY&&V.stdout.hasColors?.()),getErrHasColors:()=>Ir()??(V.stderr.isTTY&&V.stderr.hasColors?.()),stripColor:t=>Kc(t)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let t=this;t;t=t.parent)e.push(t);return e}command(e,t,s){let o=t,n=s;typeof o=="object"&&o!==null&&(n=o,o=null),n=n||{};let[,i,a]=e.match(/([^ ]+) *(.*)/),c=this.createCommand(i);return o&&(c.description(o),c._executableHandler=!0),n.isDefault&&(this._defaultCommandName=c._name),c._hidden=!!(n.noHelp||n.hidden),c._executableFile=n.executableFile||null,a&&c.arguments(a),this._registerCommand(c),c.parent=this,c.copyInheritedSettings(this),o?this:c}createCommand(e){return new r(e)}createHelp(){return Object.assign(new Jc,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 Wc(e,t)}argument(e,t,s,o){let n=this.createArgument(e,t);return typeof s=="function"?n.default(o).argParser(s):n.default(s),this.addArgument(n),this}arguments(e){return e.trim().split(/ +/).forEach(t=>{this.argument(t)}),this}addArgument(e){let t=this.registeredArguments.slice(-1)[0];if(t?.variadic)throw new Error(`only the last argument can be variadic '${t.name()}'`);if(e.required&&e.defaultValue!==void 0&&e.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${e.name()}'`);return this.registeredArguments.push(e),this}helpCommand(e,t){if(typeof e=="boolean")return this._addImplicitHelpCommand=e,e&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;let s=e??"help [command]",[,o,n]=s.match(/([^ ]+) *(.*)/),i=t??"display help for command",a=this.createCommand(o);return a.helpOption(!1),n&&a.arguments(n),i&&a.description(i),this._addImplicitHelpCommand=!0,this._helpCommand=a,(e||t)&&this._initCommandGroup(a),this}addHelpCommand(e,t){return typeof e!="object"?(this.helpCommand(e,t),this):(this._addImplicitHelpCommand=!0,this._helpCommand=e,this._initCommandGroup(e),this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(e,t){let s=["preSubcommand","preAction","postAction"];if(!s.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
|
|
16
|
+
Expecting one of '${s.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(t):this._lifeCycleHooks[e]=[t],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=t=>{if(t.code!=="commander.executeSubCommandAsync")throw t},this}_exit(e,t,s){this._exitCallback&&this._exitCallback(new $r(e,t,s)),V.exit(e)}action(e){let t=s=>{let o=this.registeredArguments.length,n=s.slice(0,o);return this._storeOptionsAsProperties?n[o]=this:n[o]=this.opts(),n.push(this),e.apply(this,n)};return this._actionHandler=t,this}createOption(e,t){return new pn(e,t)}_callParseArg(e,t,s,o){try{return e.parseArg(t,s)}catch(n){if(n.code==="commander.invalidArgument"){let i=`${o} ${n.message}`;this.error(i,{exitCode:n.exitCode,code:n.code})}throw n}}_registerOption(e){let t=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(t){let s=e.long&&this._findOption(e.long)?e.long:e.short;throw new Error(`Cannot add option '${e.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${s}'
|
|
17
|
+
- already used by option '${t.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let t=o=>[o.name()].concat(o.aliases()),s=t(e).find(o=>this._findCommand(o));if(s){let o=t(this._findCommand(s)).join("|"),n=t(e).join("|");throw new Error(`cannot add command '${n}' as already have command '${o}'`)}this._initCommandGroup(e),this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),s=e.attributeName();if(e.negate){let n=e.long.replace(/^--no-/,"--");this._findOption(n)||this.setOptionValueWithSource(s,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(s,e.defaultValue,"default");let o=(n,i,a)=>{n==null&&e.presetArg!==void 0&&(n=e.presetArg);let c=this.getOptionValue(s);n!==null&&e.parseArg?n=this._callParseArg(e,n,c,i):n!==null&&e.variadic&&(n=e._collectValue(n,c)),n==null&&(e.negate?n=!1:e.isBoolean()||e.optional?n=!0:n=""),this.setOptionValueWithSource(s,n,a)};return this.on("option:"+t,n=>{let i=`error: option '${e.flags}' argument '${n}' is invalid.`;o(n,i,"cli")}),e.envVar&&this.on("optionEnv:"+t,n=>{let i=`error: option '${e.flags}' value '${n}' from env '${e.envVar}' is invalid.`;o(n,i,"env")}),this}_optionEx(e,t,s,o,n){if(typeof t=="object"&&t instanceof pn)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let i=this.createOption(t,s);if(i.makeOptionMandatory(!!e.mandatory),typeof o=="function")i.default(n).argParser(o);else if(o instanceof RegExp){let a=o;o=(c,u)=>{let l=a.exec(c);return l?l[0]:u},i.default(n).argParser(o)}else i.default(o);return this.addOption(i)}option(e,t,s,o){return this._optionEx({},e,t,s,o)}requiredOption(e,t,s,o){return this._optionEx({mandatory:!0},e,t,s,o)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){return this._storeOptionsAsProperties?this[e]:this._optionValues[e]}setOptionValue(e,t){return this.setOptionValueWithSource(e,t,void 0)}setOptionValueWithSource(e,t,s){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=s,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(s=>{s.getOptionValueSource(e)!==void 0&&(t=s.getOptionValueSource(e))}),t}_prepareUserArgs(e,t){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(t=t||{},e===void 0&&t.from===void 0){V.versions?.electron&&(t.from="electron");let o=V.execArgv??[];(o.includes("-e")||o.includes("--eval")||o.includes("-p")||o.includes("--print"))&&(t.from="eval")}e===void 0&&(e=V.argv),this.rawArgs=e.slice();let s;switch(t.from){case void 0:case"node":this._scriptPath=e[1],s=e.slice(2);break;case"electron":V.defaultApp?(this._scriptPath=e[1],s=e.slice(2)):s=e.slice(1);break;case"user":s=e.slice(0);break;case"eval":s=e.slice(1);break;default:throw new Error(`unexpected parse option { from: '${t.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",s}parse(e,t){this._prepareForParse();let s=this._prepareUserArgs(e,t);return this._parseCommand([],s),this}async parseAsync(e,t){this._prepareForParse();let s=this._prepareUserArgs(e,t);return await this._parseCommand([],s),this}_prepareForParse(){this._savedState===null?this.saveStateBeforeParse():this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
|
|
18
|
+
- either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(e,t,s){if(ws.existsSync(e))return;let o=t?`searched for local subcommand relative to directory '${t}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",n=`'${e}' does not exist
|
|
19
19
|
- if '${s}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
|
|
20
20
|
- if the default executable name is not suitable, use the executableFile option to supply a custom name or path
|
|
21
|
-
- ${o}`;throw new Error(n)}_executeSubCommand(e,t){t=t.slice();let s=!1,o=[".js",".ts",".tsx",".mjs",".cjs"];function n(l,d){let g=
|
|
21
|
+
- ${o}`;throw new Error(n)}_executeSubCommand(e,t){t=t.slice();let s=!1,o=[".js",".ts",".tsx",".mjs",".cjs"];function n(l,d){let g=Qe.resolve(l,d);if(ws.existsSync(g))return g;if(o.includes(Qe.extname(d)))return;let E=o.find(_=>ws.existsSync(`${g}${_}`));if(E)return`${g}${E}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let i=e._executableFile||`${this._name}-${e._name}`,a=this._executableDir||"";if(this._scriptPath){let l;try{l=ws.realpathSync(this._scriptPath)}catch{l=this._scriptPath}a=Qe.resolve(Qe.dirname(l),a)}if(a){let l=n(a,i);if(!l&&!e._executableFile&&this._scriptPath){let d=Qe.basename(this._scriptPath,Qe.extname(this._scriptPath));d!==this._name&&(l=n(a,`${d}-${e._name}`))}i=l||i}s=o.includes(Qe.extname(i));let c;V.platform!=="win32"?s?(t.unshift(i),t=gn(V.execArgv).concat(t),c=Gr.spawn(V.argv[0],t,{stdio:"inherit"})):c=Gr.spawn(i,t,{stdio:"inherit"}):(this._checkForMissingExecutable(i,a,e._name),t.unshift(i),t=gn(V.execArgv).concat(t),c=Gr.spawn(V.execPath,t,{stdio:"inherit"})),c.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(d=>{V.on(d,()=>{c.killed===!1&&c.exitCode===null&&c.kill(d)})});let u=this._exitCallback;c.on("close",l=>{l=l??1,u?u(new $r(l,"commander.executeSubCommandAsync","(close)")):V.exit(l)}),c.on("error",l=>{if(l.code==="ENOENT")this._checkForMissingExecutable(i,a,e._name);else if(l.code==="EACCES")throw new Error(`'${i}' not executable`);if(!u)V.exit(1);else{let d=new $r(1,"commander.executeSubCommandAsync","(error)");d.nestedError=l,u(d)}}),this.runningCommand=c}_dispatchSubcommand(e,t,s){let o=this._findCommand(e);o||this.help({error:!0}),o._prepareForParse();let n;return n=this._chainOrCallSubCommandHook(n,o,"preSubcommand"),n=this._chainOrCall(n,()=>{if(o._executableHandler)this._executeSubCommand(o,t.concat(s));else return o._parseCommand(t,s)}),n}_dispatchHelpCommand(e){e||this.help();let t=this._findCommand(e);return t&&!t._executableHandler&&t.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,t)=>{e.required&&this.args[t]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(s,o,n)=>{let i=o;if(o!==null&&s.parseArg){let a=`error: command-argument value '${o}' is invalid for argument '${s.name()}'.`;i=this._callParseArg(s,o,n,a)}return i};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((s,o)=>{let n=s.defaultValue;s.variadic?o<this.args.length?(n=this.args.slice(o),s.parseArg&&(n=n.reduce((i,a)=>e(s,a,i),s.defaultValue))):n===void 0&&(n=[]):o<this.args.length&&(n=this.args[o],s.parseArg&&(n=e(s,n,s.defaultValue))),t[o]=n}),this.processedArgs=t}_chainOrCall(e,t){return e?.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let s=e,o=[];return this._getCommandAndAncestors().reverse().filter(n=>n._lifeCycleHooks[t]!==void 0).forEach(n=>{n._lifeCycleHooks[t].forEach(i=>{o.push({hookedCommand:n,callback:i})})}),t==="postAction"&&o.reverse(),o.forEach(n=>{s=this._chainOrCall(s,()=>n.callback(n.hookedCommand,this))}),s}_chainOrCallSubCommandHook(e,t,s){let o=e;return this._lifeCycleHooks[s]!==void 0&&this._lifeCycleHooks[s].forEach(n=>{o=this._chainOrCall(o,()=>n(this,t))}),o}_parseCommand(e,t){let s=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(s.operands),t=s.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(s.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=()=>{s.unknown.length>0&&this.unknownOption(s.unknown[0])},n=`command:${this.name()}`;if(this._actionHandler){o(),this._processArguments();let i;return i=this._chainOrCallHooks(i,"preAction"),i=this._chainOrCall(i,()=>this._actionHandler(this.processedArgs)),this.parent&&(i=this._chainOrCall(i,()=>{this.parent.emit(n,e,t)})),i=this._chainOrCallHooks(i,"postAction"),i}if(this.parent?.listenerCount(n))o(),this._processArguments(),this.parent.emit(n,e,t);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,t);this.listenerCount("command:*")?this.emit("command:*",e,t):this.commands.length?this.unknownCommand():(o(),this._processArguments())}else this.commands.length?(o(),this.help({error:!0})):(o(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(t=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find(t=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(t=>{t.mandatory&&e.getOptionValue(t.attributeName())===void 0&&e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(s=>{let o=s.attributeName();return this.getOptionValue(o)===void 0?!1:this.getOptionValueSource(o)!=="default"});e.filter(s=>s.conflictsWith.length>0).forEach(s=>{let o=e.find(n=>s.conflictsWith.includes(n.attributeName()));o&&this._conflictingOption(s,o)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],s=[],o=t;function n(l){return l.length>1&&l[0]==="-"}let i=l=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(l)?!this._getCommandAndAncestors().some(d=>d.options.map(g=>g.short).some(g=>/^-\d$/.test(g))):!1,a=null,c=null,u=0;for(;u<e.length||c;){let l=c??e[u++];if(c=null,l==="--"){o===s&&o.push(l),o.push(...e.slice(u));break}if(a&&(!n(l)||i(l))){this.emit(`option:${a.name()}`,l);continue}if(a=null,n(l)){let d=this._findOption(l);if(d){if(d.required){let g=e[u++];g===void 0&&this.optionMissingArgument(d),this.emit(`option:${d.name()}`,g)}else if(d.optional){let g=null;u<e.length&&(!n(e[u])||i(e[u]))&&(g=e[u++]),this.emit(`option:${d.name()}`,g)}else this.emit(`option:${d.name()}`);a=d.variadic?d:null;continue}}if(l.length>2&&l[0]==="-"&&l[1]!=="-"){let d=this._findOption(`-${l[1]}`);if(d){d.required||d.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${d.name()}`,l.slice(2)):(this.emit(`option:${d.name()}`),c=`-${l.slice(2)}`);continue}}if(/^--[^=]+=/.test(l)){let d=l.indexOf("="),g=this._findOption(l.slice(0,d));if(g&&(g.required||g.optional)){this.emit(`option:${g.name()}`,l.slice(d+1));continue}}if(o===t&&n(l)&&!(this.commands.length===0&&i(l))&&(o=s),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&s.length===0){if(this._findCommand(l)){t.push(l),s.push(...e.slice(u));break}else if(this._getHelpCommand()&&l===this._getHelpCommand().name()){t.push(l,...e.slice(u));break}else if(this._defaultCommandName){s.push(l,...e.slice(u));break}}if(this._passThroughOptions){o.push(l,...e.slice(u));break}o.push(l)}return{operands:t,unknown:s}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let s=0;s<t;s++){let o=this.options[s].attributeName();e[o]=o===this._versionOptionName?this._version:this[o]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
|
|
22
22
|
`,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
|
|
23
23
|
`):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
|
|
24
|
-
`),this.outputHelp({error:!0}));let s=t||{},o=s.exitCode||1,n=s.code||"commander.error";this._exit(o,n,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in
|
|
25
|
-
`),this._exit(0,"commander.version",e)}),this}description(e,t){return e===void 0&&t===void 0?this._description:(this._description=e,t&&(this._argsDescription=t),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),e===t._name)throw new Error("Command alias can't be the same as its name");let s=this.parent?._findCommand(e);if(s){let o=[s.name()].concat(s.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${o}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(t=>this.alias(t)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(s=>
|
|
24
|
+
`),this.outputHelp({error:!0}));let s=t||{},o=s.exitCode||1,n=s.code||"commander.error";this._exit(o,n,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in 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 Qc(this.options),t=s=>this.getOptionValue(s)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(s));this.options.filter(s=>s.implied!==void 0&&t(s.attributeName())&&e.valueFromOption(this.getOptionValue(s.attributeName()),s)).forEach(s=>{Object.keys(s.implied).filter(o=>!t(o)).forEach(o=>{this.setOptionValueWithSource(o,s.implied[o],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let s=i=>{let a=i.attributeName(),c=this.getOptionValue(a),u=this.options.find(d=>d.negate&&a===d.attributeName()),l=this.options.find(d=>!d.negate&&a===d.attributeName());return u&&(u.presetArg===void 0&&c===!1||u.presetArg!==void 0&&c===u.presetArg)?u:l||i},o=i=>{let a=s(i),c=a.attributeName();return this.getOptionValueSource(c)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},n=`error: ${o(e)} cannot be used with ${o(t)}`;this.error(n,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let o=[],n=this;do{let i=n.createHelp().visibleOptions(n).filter(a=>a.long).map(a=>a.long);o=o.concat(i),n=n.parent}while(n&&!n._enablePositionalOptions);t=dn(e,o)}let s=`error: unknown option '${e}'${t}`;this.error(s,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,s=t===1?"":"s",n=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${s} but got ${e.length}.`;this.error(n,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let o=[];this.createHelp().visibleCommands(this).forEach(n=>{o.push(n.name()),n.alias()&&o.push(n.alias())}),t=dn(e,o)}let s=`error: unknown command '${e}'${t}`;this.error(s,{code:"commander.unknownCommand"})}version(e,t,s){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",s=s||"output the version number";let o=this.createOption(t,s);return this._versionOptionName=o.attributeName(),this._registerOption(o),this.on("option:"+o.name(),()=>{this._outputConfiguration.writeOut(`${e}
|
|
25
|
+
`),this._exit(0,"commander.version",e)}),this}description(e,t){return e===void 0&&t===void 0?this._description:(this._description=e,t&&(this._argsDescription=t),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),e===t._name)throw new Error("Command alias can't be the same as its name");let s=this.parent?._findCommand(e);if(s){let o=[s.name()].concat(s.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${o}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(t=>this.alias(t)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(s=>zc(s));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}helpGroup(e){return e===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=e,this)}commandsGroup(e){return e===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=e,this)}optionsGroup(e){return e===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=e,this)}_initOptionGroup(e){this._defaultOptionGroup&&!e.helpGroupHeading&&e.helpGroup(this._defaultOptionGroup)}_initCommandGroup(e){this._defaultCommandGroup&&!e.helpGroup()&&e.helpGroup(this._defaultCommandGroup)}nameFromFilename(e){return this._name=Qe.basename(e,Qe.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp(),s=this._getOutputContext(e);t.prepareContext({error:s.error,helpWidth:s.helpWidth,outputHasColors:s.hasColors});let o=t.formatHelp(this,t);return s.hasColors?o:this._outputConfiguration.stripColor(o)}_getOutputContext(e){e=e||{};let t=!!e.error,s,o,n;return t?(s=a=>this._outputConfiguration.writeErr(a),o=this._outputConfiguration.getErrHasColors(),n=this._outputConfiguration.getErrHelpWidth()):(s=a=>this._outputConfiguration.writeOut(a),o=this._outputConfiguration.getOutHasColors(),n=this._outputConfiguration.getOutHelpWidth()),{error:t,write:a=>(o||(a=this._outputConfiguration.stripColor(a)),s(a)),hasColors:o,helpWidth:n}}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let s=this._getOutputContext(e),o={error:s.error,write:s.write,command:this};this._getCommandAndAncestors().reverse().forEach(i=>i.emit("beforeAllHelp",o)),this.emit("beforeHelp",o);let n=this.helpInformation({error:s.error});if(t&&(n=t(n),typeof n!="string"&&!Buffer.isBuffer(n)))throw new Error("outputHelp callback must return a string or a Buffer");s.write(n),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",o),this._getCommandAndAncestors().forEach(i=>i.emit("afterAllHelp",o))}helpOption(e,t){return typeof e=="boolean"?(e?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(e??"-h, --help",t??"display help for command"),(e||t)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this._initOptionGroup(e),this}help(e){this.outputHelp(e);let t=Number(V.exitCode??0);t===0&&e&&typeof e!="function"&&e.error&&(t=1),this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let s=["beforeAll","before","after","afterAll"];if(!s.includes(e))throw new Error(`Unexpected value for position to addHelpText.
|
|
26
26
|
Expecting one of '${s.join("', '")}'`);let o=`${e}Help`;return this.on(o,n=>{let i;typeof t=="function"?i=t({error:n.error,command:n.command}):i=t,i&&n.write(`${i}
|
|
27
|
-
`)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(o=>t.is(o))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function
|
|
27
|
+
`)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(o=>t.is(o))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function gn(r){return r.map(e=>{if(!e.startsWith("--inspect"))return e;let t,s="127.0.0.1",o="9229",n;return(n=e.match(/^(--inspect(-brk)?)$/))!==null?t=n[1]:(n=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=n[1],/^\d+$/.test(n[3])?o=n[3]:s=n[3]):(n=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=n[1],s=n[3],o=n[4]),t&&o!=="0"?`${t}=${s}:${parseInt(o)+1}`:e})}function Ir(){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}Fr.Command=Dr;Fr.useColor=Ir});var yn=Ke(De=>{var{Argument:hn}=Rs(),{Command:xr}=mn(),{CommanderError:Yc,InvalidArgumentError:fn}=Kt(),{Help:Xc}=Pr(),{Option:bn}=Or();De.program=new xr;De.createCommand=r=>new xr(r);De.createOption=(r,e)=>new bn(r,e);De.createArgument=(r,e)=>new hn(r,e);De.Command=xr;De.Option=bn;De.Argument=hn;De.Help=Xc;De.CommanderError=Yc;De.InvalidArgumentError=fn;De.InvalidOptionArgumentError=fn});function Ye(r,e){return r===void 0||r<e}var ht,Es,Ur,it=k(()=>{"use strict";ht={setupComplete:!1,maxActivePRs:10,dormantThresholdDays:30,approachingDormantDays:25,maxIssueAgeDays:90,languages:["typescript","javascript"],labels:["good first issue","help wanted"],excludeRepos:[],trustedProjects:[],githubUsername:"",minRepoScoreThreshold:4,starredRepos:[],squashByDefault:!0,minStars:50,includeDocIssues:!0,aiPolicyBlocklist:["matplotlib/matplotlib"],shelvedPRUrls:[],dismissedIssues:{},snoozedPRs:{},projectCategories:[],preferredOrgs:[]},Es={version:2,activeIssues:[],repoScores:{},config:ht,events:[],lastRunAt:new Date().toISOString()},Ur=["nonprofit","devtools","infrastructure","web-frameworks","data-ml","education"]});function v(r){return r instanceof Error?r.message:String(r)}function ve(r){if(r&&typeof r=="object"&&"status"in r){let e=r.status;return typeof e=="number"&&Number.isFinite(e)?e:void 0}}function at(r){let e=ve(r);return e===429?!0:e===403?v(r).toLowerCase().includes("rate limit"):!1}function _e(r){let e=ve(r);if(e===401||e===429)return!0;if(e===403){let t=v(r).toLowerCase();return t.includes("rate limit")||t.includes("abuse detection")}return!1}var Qt,Xe,Z,ue=k(()=>{"use strict";Qt=class extends Error{constructor(t,s){super(t);this.code=s;this.name="OssAutopilotError"}},Xe=class extends Qt{constructor(e){super(e,"CONFIGURATION_ERROR"),this.name="ConfigurationError"}},Z=class extends Qt{constructor(e){super(e,"VALIDATION_ERROR"),this.name="ValidationError"}}});function Lr(){Mr=!0}function T(r,e,...t){if(!Mr)return;let s=new Date().toISOString();console.error(`[${s}] [DEBUG] [${r}] ${e}`,...t)}function pe(r,e,...t){let s=new Date().toISOString();console.error(`[${s}] [INFO] [${r}] ${e}`,...t)}function m(r,e,...t){let s=new Date().toISOString();console.error(`[${s}] [WARN] [${r}] ${e}`,...t)}async function jr(r,e,t){if(!Mr)return t();let s=performance.now();try{let o=await t(),n=(performance.now()-s).toFixed(0);return T(r,`${e} completed in ${n}ms`),o}catch(o){let n=(performance.now()-s).toFixed(0);throw T(r,`${e} failed after ${n}ms`),o}}var Mr,he=k(()=>{"use strict";Mr=!1});var vn={};oe(vn,{DEFAULT_CONCURRENCY:()=>ct,byDateDescending:()=>En,daysBetween:()=>Ie,detectGitHubUsername:()=>Ps,extractOwnerRepo:()=>yt,formatRelativeTime:()=>vs,getBackupDir:()=>bt,getCLIVersion:()=>ze,getCacheDir:()=>Ts,getDataDir:()=>Ue,getGitHubToken:()=>Ze,getGitHubTokenAsync:()=>Ss,getStatePath:()=>lt,isOwnRepo:()=>Me,parseGitHubUrl:()=>de,requireGitHubToken:()=>Re,resetGitHubTokenCache:()=>Tn,splitRepo:()=>Ft});function Ue(){let r=ut.join(wn.homedir(),".oss-autopilot");return We.existsSync(r)||We.mkdirSync(r,{recursive:!0,mode:448}),r}function lt(){return ut.join(Ue(),"state.json")}function bt(){let r=ut.join(Ue(),"backups");return We.existsSync(r)||We.mkdirSync(r,{recursive:!0,mode:448}),r}function Ts(){let r=ut.join(Ue(),"cache");return We.existsSync(r)||We.mkdirSync(r,{recursive:!0,mode:448}),r}function Nr(r,e){return Zc.test(r)&&eu.test(e)}function de(r){if(!r.startsWith("https://github.com/"))return null;let e=r.match(/github\.com\/([^/]+)\/([^/]+)\/pull\/(\d+)/);if(e){let s=e[1],o=e[2];return Nr(s,o)?{owner:s,repo:o,number:parseInt(e[3],10),type:"pull"}:null}let t=r.match(/github\.com\/([^/]+)\/([^/]+)\/issues\/(\d+)/);if(t){let s=t[1],o=t[2];return Nr(s,o)?{owner:s,repo:o,number:parseInt(t[3],10),type:"issues"}:null}return null}function yt(r){if(!r.startsWith("https://github.com/"))return null;let e=r.match(/github\.com\/([^/]+)\/([^/]+)/);if(!e)return null;let t=e[1],s=e[2];return Nr(t,s)?{owner:t,repo:s}:null}function Ie(r,e=new Date){return Math.max(0,Math.floor((e.getTime()-r.getTime())/(1e3*60*60*24)))}function Ft(r){let[e,t]=r.split("/");if(!e||!t)throw new Error(`Invalid repo format: expected "owner/repo", got "${r}"`);return{owner:e,repo:t}}function Me(r,e){return r.toLowerCase()===e.toLowerCase()}function ze(){try{let r=ut.join(ut.dirname(process.argv[1]),"..","package.json");return JSON.parse(We.readFileSync(r,"utf-8")).version}catch{return"0.0.0"}}function vs(r){let e=new Date(r),t=Date.now()-e.getTime();if(t<0)return"just now";let s=Math.floor(t/6e4),o=Math.floor(t/36e5),n=Math.floor(t/864e5);return s<60?`${s}m ago`:o<24?`${o}h ago`:n<30?`${n}d ago`:e.toLocaleDateString()}function En(r){return(e,t)=>{let s=new Date(r(e)||0).getTime();return new Date(r(t)||0).getTime()-s}}function Ze(){if(Pe)return Pe;if(Yt)return null;if(Yt=!0,process.env.GITHUB_TOKEN)return Pe=process.env.GITHUB_TOKEN,Pe;try{let r=(0,Xt.execFileSync)("gh",["auth","token"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],timeout:2e3}).trim();if(r&&r.length>0)return Pe=r,T(ft,"Using GitHub token from gh CLI"),Pe}catch(r){T(ft,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}function Re(){let r=Ze();if(!r)throw new Xe(`GitHub authentication required.
|
|
28
28
|
|
|
29
29
|
Options:
|
|
30
30
|
1. Use gh CLI: gh auth login
|
|
31
31
|
2. Set GITHUB_TOKEN environment variable
|
|
32
32
|
|
|
33
|
-
The gh CLI is recommended - install from https://cli.github.com`);return r}function _n(){Ce=null,qt=!1}async function _s(){if(Ce)return Ce;if(qt)return null;if(qt=!0,process.env.GITHUB_TOKEN)return Ce=process.env.GITHUB_TOKEN,Ce;try{let r=await new Promise((e,t)=>{(0,Bt.execFile)("gh",["auth","token"],{encoding:"utf-8",timeout:2e3},(s,o)=>{s?t(s):e(o.trim())})});if(r&&r.length>0)return Ce=r,E(gt,"Using GitHub token from gh CLI (async)"),Ce}catch(r){E(gt,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}async function Rs(){try{let r=await new Promise((e,t)=>{(0,Bt.execFile)("gh",["api","user","--jq",".login"],{encoding:"utf-8",timeout:5e3},(s,o)=>{s?t(s):e(o.trim())})});return r&&Qc.test(r)?(E(gt,`Detected GitHub username: ${r}`),r):(E(gt,`gh api user returned invalid username: "${r}"`),null)}catch(r){return E(gt,"detectGitHubUsername failed",r),null}}var He,ot,bn,Bt,rt,gt,Ce,qt,Jc,Kc,Qc,Ee=C(()=>{"use strict";He=z(require("fs"),1),ot=z(require("path"),1),bn=z(require("os"),1),Bt=require("child_process");le();ge();rt=5,gt="utils",Ce=null,qt=!1;Jc=/^[a-zA-Z0-9_-]+$/,Kc=/^[a-zA-Z0-9_.-]+$/;Qc=/^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$/});function eu(r){try{let e=JSON.parse(j.readFileSync(r,"utf-8"));return Date.now()-e.timestamp>Zc}catch(e){return E(F,"Lock file unreadable or invalid JSON, treating as stale",e),!0}}function tu(r){let e=JSON.stringify({pid:process.pid,timestamp:Date.now()});try{j.writeFileSync(r,e,{flag:"wx"});return}catch(t){E(F,"Lock file already exists, checking staleness",t)}if(!eu(r))throw new Error("State file is locked by another process");try{j.unlinkSync(r)}catch(t){E(F,"Stale lock already removed by another process",t)}try{j.writeFileSync(r,e,{flag:"wx"})}catch(t){throw E(F,"Lock re-acquire failed (race condition)",t),new Error("State file is locked by another process",{cause:t})}}function su(r){try{JSON.parse(j.readFileSync(r,"utf-8")).pid===process.pid&&j.unlinkSync(r)}catch(e){E(F,"Lock file already removed or unreadable during release",e)}}function xr(r,e,t){let s=r+".tmp";j.writeFileSync(s,e,{mode:t??384}),j.renameSync(s,r),t!==void 0&&j.chmodSync(r,t)}function En(r){E(F,"Migrating state from v1 to v2 (fresh GitHub fetching)...");let e=r.mergedPRs||[],t=r.closedPRs||[],s={...r.repoScores||{}};for(let n of e)s[n.repo]||(s[n.repo]={repo:n.repo,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}});for(let n of t)s[n.repo]||(s[n.repo]={repo:n.repo,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}});let o={version:2,activeIssues:r.activeIssues||[],repoScores:s,config:r.config,events:r.events||[],lastRunAt:new Date().toISOString()};return E(F,`Migration complete. Preserved ${Object.keys(s).length} repo scores.`),o}function x(){return Ur||(Ur=new ws),Ur}var j,Ue,F,Yc,wn,Xc,Zc,Vt,ft,ws,Ur,Wt=C(()=>{"use strict";j=z(require("fs"),1),Ue=z(require("path"),1);pt();Ee();le();ge();F="state",Yc=2,wn=1e3,Xc=720*60*60*1e3,Zc=3e4,Vt=Ue.join(process.cwd(),"data","state.json"),ft=Ue.join(process.cwd(),"data","backups");ws=class r{state;inMemoryOnly;constructor(e=!1){this.inMemoryOnly=e,this.state=e?this.createFreshState():this.load()}createFreshState(){return{version:Yc,activeIssues:[],repoScores:{},config:{...fs.config,setupComplete:!1,languages:[...fs.config.languages],labels:[...fs.config.labels],excludeRepos:[],trustedProjects:[],shelvedPRUrls:[],dismissedIssues:{},snoozedPRs:{}},events:[],lastRunAt:new Date().toISOString()}}isSetupComplete(){return this.state.config.setupComplete===!0}markSetupComplete(){this.state.config.setupComplete=!0,this.state.config.setupCompletedAt=new Date().toISOString()}initializeWithDefaults(e){if(this.state.config.setupComplete){E(F,`Setup already complete, skipping initializeWithDefaults for "${e}"`);return}this.state.config.githubUsername=e,this.markSetupComplete(),E(F,`Initialized with defaults for user "${e}"`),this.save()}migrateFromLegacyLocation(){let e=nt();if(j.existsSync(e)||!j.existsSync(Vt))return!1;E(F,"Migrating state from ./data/ to ~/.oss-autopilot/...");try{if(Fe(),j.copyFileSync(Vt,e),E(F,`Migrated state file to ${e}`),j.existsSync(ft)){let s=mt(),o=j.readdirSync(ft).filter(n=>n.startsWith("state-")&&n.endsWith(".json"));for(let n of o){let i=Ue.join(ft,n),a=Ue.join(s,n);j.copyFileSync(i,a)}E(F,`Migrated ${o.length} backup files`)}if(j.unlinkSync(Vt),E(F,"Removed legacy state file"),j.existsSync(ft)){let s=j.readdirSync(ft);for(let o of s)j.unlinkSync(Ue.join(ft,o));j.rmdirSync(ft)}let t=Ue.dirname(Vt);return j.existsSync(t)&&j.readdirSync(t).length===0&&(j.rmdirSync(t),E(F,"Removed empty legacy data directory")),E(F,"Migration complete!"),!0}catch(t){m(F,`Failed to migrate state: ${S(t)}`);let s=nt();if(j.existsSync(s)&&j.existsSync(Vt))try{j.unlinkSync(s),E(F,"Cleaned up partial migration - removed incomplete new state file")}catch(o){m(F,"Could not clean up partial migration file"),E(F,"Partial migration cleanup failed",o)}return m(F,"To resolve this issue:"),m(F," 1. Ensure you have write permissions to ~/.oss-autopilot/"),m(F," 2. Check available disk space"),m(F," 3. Manually copy ./data/state.json to ~/.oss-autopilot/state.json"),m(F," 4. Or delete ./data/state.json to start fresh"),!1}}load(){this.migrateFromLegacyLocation();let e=nt();try{if(j.existsSync(e)){let t=j.readFileSync(e,"utf-8"),s=JSON.parse(t);if(!this.isValidState(s)){m(F,"Invalid state file structure, attempting to restore from backup...");let n=this.tryRestoreFromBackup();return n||(m(F,"No valid backup found, starting fresh"),this.createFreshState())}s.version===1&&(s=En(s),xr(e,JSON.stringify(s,null,2),384),E(F,"Migrated state saved"));let o=Object.keys(s.repoScores).length;return E(F,`Loaded state v${s.version}: ${o} repo scores tracked`),s}}catch(t){m(F,"Error loading state:",t),m(F,"Attempting to restore from backup...");let s=this.tryRestoreFromBackup();if(s)return s;m(F,"No valid backup found, starting fresh")}return E(F,"No existing state found, initializing..."),this.createFreshState()}tryRestoreFromBackup(){let e=mt();if(!j.existsSync(e))return null;let t=j.readdirSync(e).filter(s=>s.startsWith("state-")&&s.endsWith(".json")).sort().reverse();for(let s of t){let o=Ue.join(e,s);try{let n=j.readFileSync(o,"utf-8"),i=JSON.parse(n);if(this.isValidState(i)){E(F,`Successfully restored state from backup: ${s}`),i.version===1&&(i=En(i));let a=Object.keys(i.repoScores).length;E(F,`Restored state v${i.version}: ${a} repo scores`);let c=nt();return xr(c,JSON.stringify(i,null,2),384),E(F,"Restored backup written to main state file"),i}}catch(n){m(F,`Backup ${s} is corrupted, trying next...`),E(F,`Backup ${s} parse failed`,n)}}return null}isValidState(e){if(!e||typeof e!="object")return!1;let t=e;return t.repoScores===void 0&&(t.repoScores={}),t.events===void 0&&(t.events=[]),t.mergedPRs===void 0&&(t.mergedPRs=[]),typeof t.version=="number"&&typeof t.repoScores=="object"&&t.repoScores!==null&&Array.isArray(t.events)&&typeof t.config=="object"&&t.config!==null?t.version===1?Array.isArray(t.activePRs)&&Array.isArray(t.dormantPRs)&&Array.isArray(t.mergedPRs)&&Array.isArray(t.closedPRs):!0:!1}save(){if(this.state.lastRunAt=new Date().toISOString(),this.inMemoryOnly)return;let e=nt(),t=e+".lock",s=mt();tu(t);try{if(j.existsSync(e)){let o=new Date().toISOString().replace(/[:.]/g,"-"),n=Math.random().toString(36).slice(2,8).padEnd(6,"0"),i=Ue.join(s,`state-${o}-${n}.json`);j.copyFileSync(e,i),j.chmodSync(i,384),this.cleanupBackups()}xr(e,JSON.stringify(this.state,null,2),384),E(F,"State saved successfully")}finally{su(t)}}cleanupBackups(){let e=mt();try{let t=j.readdirSync(e).filter(s=>s.startsWith("state-")).sort().reverse();for(let s of t.slice(10))try{j.unlinkSync(Ue.join(e,s))}catch(o){m(F,`Could not delete old backup ${s}:`,S(o))}}catch(t){m(F,"Could not clean up backups:",S(t))}}getState(){return this.state}setLastDigest(e){this.state.lastDigest=e,this.state.lastDigestAt=e.generatedAt}setMonthlyMergedCounts(e){this.state.monthlyMergedCounts=e}setMonthlyClosedCounts(e){this.state.monthlyClosedCounts=e}setMonthlyOpenedCounts(e){this.state.monthlyOpenedCounts=e}setDailyActivityCounts(e){this.state.dailyActivityCounts=e}getMergedPRs(){return this.state.mergedPRs??[]}addMergedPRs(e){if(e.length===0)return;this.state.mergedPRs||(this.state.mergedPRs=[]);let t=new Set(this.state.mergedPRs.map(o=>o.url)),s=e.filter(o=>!t.has(o.url));s.length!==0&&(this.state.mergedPRs.push(...s),this.state.mergedPRs.sort((o,n)=>n.mergedAt.localeCompare(o.mergedAt)),E(F,`Added ${s.length} merged PRs (total: ${this.state.mergedPRs.length})`))}getMergedPRWatermark(){let e=this.state.mergedPRs;if(!(!e||e.length===0))return e[0].mergedAt||void 0}getClosedPRs(){return this.state.closedPRs??[]}addClosedPRs(e){if(e.length===0)return;this.state.closedPRs||(this.state.closedPRs=[]);let t=new Set(this.state.closedPRs.map(o=>o.url)),s=e.filter(o=>!t.has(o.url));s.length!==0&&(this.state.closedPRs.push(...s),this.state.closedPRs.sort((o,n)=>n.closedAt.localeCompare(o.closedAt)),E(F,`Added ${s.length} closed PRs (total: ${this.state.closedPRs.length})`))}getClosedPRWatermark(){let e=this.state.closedPRs;if(!(!e||e.length===0))return e[0].closedAt||void 0}setLocalRepoCache(e){this.state.localRepoCache=e}updateConfig(e){this.state.config={...this.state.config,...e}}appendEvent(e,t){let s={id:`evt_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,type:e,at:new Date().toISOString(),data:t};this.state.events.push(s),this.state.events.length>wn&&(this.state.events=this.state.events.slice(-wn))}getEventsByType(e){return this.state.events.filter(t=>t.type===e)}getEventsInRange(e,t=new Date){return this.state.events.filter(s=>{let o=new Date(s.at);return o>=e&&o<=t})}addIssue(e){if(this.state.activeIssues.find(s=>s.url===e.url)){E(F,`Issue ${e.url} already tracked`);return}this.state.activeIssues.push(e),E(F,`Added issue: ${e.repo}#${e.number}`)}addTrustedProject(e){this.state.config.trustedProjects.includes(e)||(this.state.config.trustedProjects.push(e),E(F,`Added trusted project: ${e}`))}static matchesExclusion(e,t,s){let o=e.toLowerCase();return!!(t.some(n=>n.toLowerCase()===o)||s?.some(n=>n.toLowerCase()===o.split("/")[0]))}cleanupExcludedData(e,t){let s=i=>r.matchesExclusion(i,e,t),o=this.state.config.trustedProjects.length;this.state.config.trustedProjects=this.state.config.trustedProjects.filter(i=>!s(i));let n=o-this.state.config.trustedProjects.length;n>0&&E(F,`Removed ${n} trusted project(s) for excluded repos/orgs`)}getStarredRepos(){return this.state.config.starredRepos||[]}setStarredRepos(e){this.state.config.starredRepos=e,this.state.config.starredReposLastFetched=new Date().toISOString(),E(F,`Updated starred repos: ${e.length} repositories`)}isStarredReposStale(){let e=this.state.config.starredReposLastFetched;if(!e)return!0;let t=1440*60*1e3,s=new Date(e);return new Date().getTime()-s.getTime()>t}shelvePR(e){return this.state.config.shelvedPRUrls||(this.state.config.shelvedPRUrls=[]),this.state.config.shelvedPRUrls.includes(e)?!1:(this.state.config.shelvedPRUrls.push(e),!0)}unshelvePR(e){if(!this.state.config.shelvedPRUrls)return!1;let t=this.state.config.shelvedPRUrls.indexOf(e);return t===-1?!1:(this.state.config.shelvedPRUrls.splice(t,1),!0)}isPRShelved(e){return this.state.config.shelvedPRUrls?.includes(e)??!1}dismissIssue(e,t){return this.state.config.dismissedIssues||(this.state.config.dismissedIssues={}),e in this.state.config.dismissedIssues?!1:(this.state.config.dismissedIssues[e]=t,!0)}undismissIssue(e){return!this.state.config.dismissedIssues||!(e in this.state.config.dismissedIssues)?!1:(delete this.state.config.dismissedIssues[e],!0)}getIssueDismissedAt(e){return this.state.config.dismissedIssues?.[e]}snoozePR(e,t,s){if(!Number.isFinite(s)||s<=0)throw new Z(`Invalid snooze duration: ${s}. Must be a positive finite number.`);if(this.state.config.snoozedPRs||(this.state.config.snoozedPRs={}),e in this.state.config.snoozedPRs)return!1;let o=new Date,n=new Date(o.getTime()+s*24*60*60*1e3);return this.state.config.snoozedPRs[e]={reason:t,snoozedAt:o.toISOString(),expiresAt:n.toISOString()},!0}unsnoozePR(e){return!this.state.config.snoozedPRs||!(e in this.state.config.snoozedPRs)?!1:(delete this.state.config.snoozedPRs[e],!0)}isSnoozed(e){let t=this.getSnoozeInfo(e);if(!t)return!1;let s=new Date(t.expiresAt).getTime();return isNaN(s)?(m(F,`Invalid expiresAt for snoozed PR ${e}: "${t.expiresAt}". Treating as not snoozed.`),!1):s>Date.now()}getSnoozeInfo(e){return this.state.config.snoozedPRs?.[e]}expireSnoozes(){if(!this.state.config.snoozedPRs)return[];let e=[],t=Date.now();for(let[s,o]of Object.entries(this.state.config.snoozedPRs)){let n=new Date(o.expiresAt).getTime();(isNaN(n)||n<=t)&&e.push(s)}for(let s of e)delete this.state.config.snoozedPRs[s];return e}setStatusOverride(e,t,s){this.state.config.statusOverrides||(this.state.config.statusOverrides={}),this.state.config.statusOverrides[e]={status:t,setAt:new Date().toISOString(),lastActivityAt:s}}clearStatusOverride(e){return!this.state.config.statusOverrides||!(e in this.state.config.statusOverrides)?!1:(delete this.state.config.statusOverrides[e],!0)}getStatusOverride(e,t){let s=this.state.config.statusOverrides?.[e];if(s){if(t&&t>s.lastActivityAt){this.clearStatusOverride(e);return}return s}}getRepoScore(e){return this.state.repoScores[e]}createDefaultRepoScore(e){return{repo:e,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}}}calculateScore(e){let t=5;if(e.mergedPRCount>0){let o=Math.min(Math.round(Math.log2(e.mergedPRCount+1)*2),5);t+=o}let s=Math.min(e.closedWithoutMergeCount,3);if(t-=s,e.lastMergedAt){let o=new Date(e.lastMergedAt);isNaN(o.getTime())?m(F,`Invalid lastMergedAt date for ${e.repo}: "${e.lastMergedAt}". Skipping recency bonus.`):Math.floor((Date.now()-o.getTime())/864e5)<=90&&(t+=1)}return e.signals.isResponsive&&(t+=1),e.signals.hasHostileComments&&(t-=2),Math.max(1,Math.min(10,t))}updateRepoScore(e,t){this.state.repoScores[e]||(this.state.repoScores[e]=this.createDefaultRepoScore(e));let s=this.state.repoScores[e];t.mergedPRCount!==void 0&&(s.mergedPRCount=t.mergedPRCount),t.closedWithoutMergeCount!==void 0&&(s.closedWithoutMergeCount=t.closedWithoutMergeCount),t.avgResponseDays!==void 0&&(s.avgResponseDays=t.avgResponseDays),t.lastMergedAt!==void 0&&(s.lastMergedAt=t.lastMergedAt),t.stargazersCount!==void 0&&(s.stargazersCount=t.stargazersCount),t.signals&&(s.signals={...s.signals,...t.signals}),s.score=this.calculateScore(s),s.lastEvaluatedAt=new Date().toISOString(),E(F,`Updated repo score for ${e}: ${s.score}/10`)}incrementMergedCount(e){let s=(this.state.repoScores[e]?.mergedPRCount??0)+1;this.updateRepoScore(e,{mergedPRCount:s,lastMergedAt:new Date().toISOString()}),E(F,`Incremented merged count for ${e}: ${s}`)}incrementClosedCount(e){let s=(this.state.repoScores[e]?.closedWithoutMergeCount??0)+1;this.updateRepoScore(e,{closedWithoutMergeCount:s}),E(F,`Incremented closed count for ${e}: ${s}`)}markRepoHostile(e){this.updateRepoScore(e,{signals:{hasHostileComments:!0}}),E(F,`Marked ${e} as hostile, score: ${this.state.repoScores[e].score}/10`)}getReposWithMergedPRs(){return Object.values(this.state.repoScores).filter(e=>e.mergedPRCount>0).sort((e,t)=>t.mergedPRCount-e.mergedPRCount).map(e=>e.repo)}getReposWithOpenPRs(){return Object.values(this.state.repoScores).filter(e=>e.mergedPRCount===0&&e.closedWithoutMergeCount===0).sort((e,t)=>t.score-e.score).map(e=>e.repo)}getHighScoringRepos(e){let t=e??this.state.config.minRepoScoreThreshold;return Object.values(this.state.repoScores).filter(s=>s.score>=t).sort((s,o)=>o.score-s.score).map(s=>s.repo)}getLowScoringRepos(e){let t=e??this.state.config.minRepoScoreThreshold,s=Date.now();return Object.values(this.state.repoScores).filter(o=>{if(o.score>t)return!1;let n=s-new Date(o.lastEvaluatedAt).getTime();return Number.isFinite(n)?n<=Xc:(m(F,`Invalid lastEvaluatedAt for repo ${o.repo}: "${o.lastEvaluatedAt}", treating as stale`),!1)}).sort((o,n)=>o.score-n.score).map(o=>o.repo)}getStats(){let e=0,t=0,s=0;for(let i of Object.values(this.state.repoScores))Ke(i.stargazersCount,this.state.config.minStars??50)||(s++,e+=i.mergedPRCount,t+=i.closedWithoutMergeCount);let o=e+t,n=o>0?e/o*100:0;return{mergedPRs:e,closedPRs:t,activeIssues:0,trustedProjects:this.state.config.trustedProjects.length,mergeRate:n.toFixed(1)+"%",totalTracked:s,needsResponse:0}}},Ur=null});function it(){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 zt=C(()=>{});function Es(r,e,t,s){if(typeof t!="function")throw new Error("method for before hook must be a function");return s||(s={}),Array.isArray(e)?e.reverse().reduce((o,n)=>Es.bind(null,r,n,o,s),t)():Promise.resolve().then(()=>r.registry[e]?r.registry[e].reduce((o,n)=>n.hook.bind(null,o,s),t)():t(s))}var Tn=C(()=>{});function vn(r,e,t,s){let o=s;r.registry[t]||(r.registry[t]=[]),e==="before"&&(s=(n,i)=>Promise.resolve().then(o.bind(null,i)).then(n.bind(null,i))),e==="after"&&(s=(n,i)=>{let a;return Promise.resolve().then(n.bind(null,i)).then(c=>(a=c,o(a,i))).then(()=>a)}),e==="error"&&(s=(n,i)=>Promise.resolve().then(n.bind(null,i)).catch(a=>o(a,i))),r.registry[t].push({hook:s,orig:o})}var Sn=C(()=>{});function Pn(r,e,t){if(!r.registry[e])return;let s=r.registry[e].map(o=>o.orig).indexOf(t);s!==-1&&r.registry[e].splice(s,1)}var Cn=C(()=>{});function On(r,e,t){let s=An(Pn,null).apply(null,t?[e,t]:[e]);r.api={remove:s},r.remove=s,["before","error","after","wrap"].forEach(o=>{let n=t?[e,o,t]:[e,o];r[o]=r.api[o]=An(vn,null).apply(null,n)})}function ru(){let r=Symbol("Singular"),e={registry:{}},t=Es.bind(null,e,r);return On(t,e,r),t}function ou(){let r={registry:{}},e=Es.bind(null,r);return On(e,r),e}var kn,An,Gn,$n=C(()=>{Tn();Sn();Cn();kn=Function.bind,An=kn.bind(kn);Gn={Singular:ru,Collection:ou}});function cu(r){return r?Object.keys(r).reduce((e,t)=>(e[t.toLowerCase()]=r[t],e),{}):{}}function uu(r){if(typeof r!="object"||r===null||Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);if(e===null)return!0;let t=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&Function.prototype.call(t)===Function.prototype.call(r)}function Fn(r,e){let t=Object.assign({},r);return Object.keys(e).forEach(s=>{uu(e[s])?s in r?t[s]=Fn(r[s],e[s]):Object.assign(t,{[s]:e[s]}):Object.assign(t,{[s]:e[s]})}),t}function Dn(r){for(let e in r)r[e]===void 0&&delete r[e];return r}function Lr(r,e,t){if(typeof e=="string"){let[o,n]=e.split(" ");t=Object.assign(n?{method:o,url:n}:{url:o},t)}else t=Object.assign({},e);t.headers=cu(t.headers),Dn(t),Dn(t.headers);let s=Fn(r||{},t);return t.url==="/graphql"&&(r&&r.mediaType.previews?.length&&(s.mediaType.previews=r.mediaType.previews.filter(o=>!s.mediaType.previews.includes(o)).concat(s.mediaType.previews)),s.mediaType.previews=(s.mediaType.previews||[]).map(o=>o.replace(/-preview/,""))),s}function lu(r,e){let t=/\?/.test(r)?"&":"?",s=Object.keys(e);return s.length===0?r:r+t+s.map(o=>o==="q"?"q="+e.q.split("+").map(encodeURIComponent).join("+"):`${o}=${encodeURIComponent(e[o])}`).join("&")}function du(r){return r.replace(/(?:^\W+)|(?:(?<!\W)\W+$)/g,"").split(/,/)}function gu(r){let e=r.match(pu);return e?e.map(du).reduce((t,s)=>t.concat(s),[]):[]}function In(r,e){let t={__proto__:null};for(let s of Object.keys(r))e.indexOf(s)===-1&&(t[s]=r[s]);return t}function xn(r){return r.split(/(%[0-9A-Fa-f]{2})/g).map(function(e){return/%[0-9A-Fa-f]/.test(e)||(e=encodeURI(e).replace(/%5B/g,"[").replace(/%5D/g,"]")),e}).join("")}function Gt(r){return encodeURIComponent(r).replace(/[!'()*]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function Jt(r,e,t){return e=r==="+"||r==="#"?xn(e):Gt(e),t?Gt(t)+"="+e:e}function Ot(r){return r!=null}function Mr(r){return r===";"||r==="&"||r==="?"}function mu(r,e,t,s){var o=r[t],n=[];if(Ot(o)&&o!=="")if(typeof o=="string"||typeof o=="number"||typeof o=="bigint"||typeof o=="boolean")o=o.toString(),s&&s!=="*"&&(o=o.substring(0,parseInt(s,10))),n.push(Jt(e,o,Mr(e)?t:""));else if(s==="*")Array.isArray(o)?o.filter(Ot).forEach(function(i){n.push(Jt(e,i,Mr(e)?t:""))}):Object.keys(o).forEach(function(i){Ot(o[i])&&n.push(Jt(e,o[i],i))});else{let i=[];Array.isArray(o)?o.filter(Ot).forEach(function(a){i.push(Jt(e,a))}):Object.keys(o).forEach(function(a){Ot(o[a])&&(i.push(Gt(a)),i.push(Jt(e,o[a].toString())))}),Mr(e)?n.push(Gt(t)+"="+i.join(",")):i.length!==0&&n.push(i.join(","))}else e===";"?Ot(o)&&n.push(Gt(t)):o===""&&(e==="&"||e==="?")?n.push(Gt(t)+"="):o===""&&n.push("");return n}function hu(r){return{expand:fu.bind(null,r)}}function fu(r,e){var t=["+","#",".","/",";","?","&"];return r=r.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(s,o,n){if(o){let a="",c=[];if(t.indexOf(o.charAt(0))!==-1&&(a=o.charAt(0),o=o.substr(1)),o.split(/,/g).forEach(function(u){var l=/([^:\*]*)(?::(\d+)|(\*))?/.exec(u);c.push(mu(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 xn(n)}),r==="/"?r:r.replace(/\/$/,"")}function Un(r){let e=r.method.toUpperCase(),t=(r.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),s=Object.assign({},r.headers),o,n=In(r,["method","baseUrl","url","headers","request","mediaType"]),i=gu(t);t=hu(t).expand(n),/^http/.test(t)||(t=r.baseUrl+t);let a=Object.keys(r).filter(l=>i.includes(l)).concat("baseUrl"),c=In(n,a);if(!/application\/octet-stream/i.test(s.accept)&&(r.mediaType.format&&(s.accept=s.accept.split(/,/).map(l=>l.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${r.mediaType.format}`)).join(",")),t.endsWith("/graphql")&&r.mediaType.previews?.length)){let l=s.accept.match(/(?<![\w-])[\w-]+(?=-preview)/g)||[];s.accept=l.concat(r.mediaType.previews).map(d=>{let g=r.mediaType.format?`.${r.mediaType.format}`:"+json";return`application/vnd.github.${d}-preview${g}`}).join(",")}return["GET","HEAD"].includes(e)?t=lu(t,c):"data"in c?o=c.data:Object.keys(c).length&&(o=c),!s["content-type"]&&typeof o<"u"&&(s["content-type"]="application/json; charset=utf-8"),["PATCH","PUT"].includes(e)&&typeof o>"u"&&(o=""),Object.assign({method:e,url:t,headers:s},typeof o<"u"?{body:o}:null,r.request?{request:r.request}:null)}function bu(r,e,t){return Un(Lr(r,e,t))}function Mn(r,e){let t=Lr(r,e),s=bu.bind(null,t);return Object.assign(s,{DEFAULTS:t,defaults:Mn.bind(null,t),merge:Lr.bind(null,t),parse:Un})}var nu,iu,au,pu,Ln,jn=C(()=>{zt();nu="0.0.0-development",iu=`octokit-endpoint.js/${nu} ${it()}`,au={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":iu},mediaType:{format:""}};pu=/\{[^{}}]+\}/g;Ln=Mn(null,au)});var Bn=ze((Gd,Kt)=>{"use strict";var Ss=function(){};Ss.prototype=Object.create(null);var Ts=/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu,vs=/\\([\v\u0020-\u00ff])/gu,Nn=/^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u,bt={type:"",parameters:new Ss};Object.freeze(bt.parameters);Object.freeze(bt);function Hn(r){if(typeof r!="string")throw new TypeError("argument header is required and must be a string");let e=r.indexOf(";"),t=e!==-1?r.slice(0,e).trim():r.trim();if(Nn.test(t)===!1)throw new TypeError("invalid media type");let s={type:t.toLowerCase(),parameters:new Ss};if(e===-1)return s;let o,n,i;for(Ts.lastIndex=e;n=Ts.exec(r);){if(n.index!==e)throw new TypeError("invalid parameter format");e+=n[0].length,o=n[1].toLowerCase(),i=n[2],i[0]==='"'&&(i=i.slice(1,i.length-1),vs.test(i)&&(i=i.replace(vs,"$1"))),s.parameters[o]=i}if(e!==r.length)throw new TypeError("invalid parameter format");return s}function qn(r){if(typeof r!="string")return bt;let e=r.indexOf(";"),t=e!==-1?r.slice(0,e).trim():r.trim();if(Nn.test(t)===!1)return bt;let s={type:t.toLowerCase(),parameters:new Ss};if(e===-1)return s;let o,n,i;for(Ts.lastIndex=e;n=Ts.exec(r);){if(n.index!==e)return bt;e+=n[0].length,o=n[1].toLowerCase(),i=n[2],i[0]==='"'&&(i=i.slice(1,i.length-1),vs.test(i)&&(i=i.replace(vs,"$1"))),s.parameters[o]=i}return e!==r.length?bt:s}Kt.exports.default={parse:Hn,safeParse:qn};Kt.exports.parse=Hn;Kt.exports.safeParse=qn;Kt.exports.defaultContentType=bt});var yu,zn,jr,Vn,_u,Ru,wu,Jn,Eu,Tu,vu,Kn,Wn,Su,Pu,Qn,Yn=C(()=>{yu=/^-?\d+$/,zn=/^-?\d+n+$/,jr=JSON.stringify,Vn=JSON.parse,_u=/^-?\d+n$/,Ru=/([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,wu=/([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,Jn=(r,e,t)=>"rawJSON"in JSON?jr(r,(i,a)=>typeof a=="bigint"?JSON.rawJSON(a.toString()):typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t):r?jr(r,(i,a)=>typeof a=="string"&&!!a.match(zn)||typeof a=="bigint"?a.toString()+"n":typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t).replace(Ru,"$1$2$3").replace(wu,"$1$2$3"):jr(r,e,t),Eu=()=>JSON.parse("1",(r,e,t)=>!!t&&t.source==="1"),Tu=(r,e,t,s)=>typeof e=="string"&&e.match(_u)?BigInt(e.slice(0,-1)):typeof e=="string"&&e.match(zn)?e.slice(0,-1):typeof s!="function"?e:s(r,e,t),vu=(r,e)=>JSON.parse(r,(t,s,o)=>{let n=typeof s=="number"&&(s>Number.MAX_SAFE_INTEGER||s<Number.MIN_SAFE_INTEGER),i=o&&yu.test(o.source);return n&&i?BigInt(o.source):typeof e!="function"?s:e(t,s,o)}),Kn=Number.MAX_SAFE_INTEGER.toString(),Wn=Kn.length,Su=/"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,Pu=/^"-?\d+n+"$/,Qn=(r,e)=>{if(!r)return Vn(r,e);if(Eu())return vu(r,e);let t=r.replace(Su,(s,o,n,i)=>{let a=s[0]==='"';if(a&&!!s.match(Pu))return s.substring(0,s.length-1)+'n"';let u=n||i,l=o&&(o.length<Wn||o.length===Wn&&o<=Kn);return a||u||l?s:'"'+s+'n"'});return Vn(t,(s,o,n)=>Tu(s,o,n,e))}});var yt,Xn=C(()=>{yt=class extends Error{name;status;request;response;constructor(e,t,s){super(e,{cause:s.cause}),this.name="HttpError",this.status=Number.parseInt(t),Number.isNaN(this.status)&&(this.status=0);"response"in s&&(this.response=s.response);let o=Object.assign({},s.request);s.request.headers.authorization&&(o.headers=Object.assign({},s.request.headers,{authorization:s.request.headers.authorization.replace(/(?<! ) .*$/," [REDACTED]")})),o.url=o.url.replace(/\bclient_secret=\w+/g,"client_secret=[REDACTED]").replace(/\baccess_token=\w+/g,"access_token=[REDACTED]"),this.request=o}}});function Au(r){if(typeof r!="object"||r===null||Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);if(e===null)return!0;let t=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&Function.prototype.call(t)===Function.prototype.call(r)}async function ei(r){let e=r.request?.fetch||globalThis.fetch;if(!e)throw new Error("fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing");let t=r.request?.log||console,s=r.request?.parseSuccessResponseBody!==!1,o=Au(r.body)||Array.isArray(r.body)?Jn(r.body):r.body,n=Object.fromEntries(Object.entries(r.headers).map(([d,g])=>[d,String(g)])),i;try{i=await e(r.url,{method:r.method,body:o,redirect:r.request?.redirect,headers:n,signal:r.request?.signal,...r.body&&{duplex:"half"}})}catch(d){let g="Unknown Error";if(d instanceof Error){if(d.name==="AbortError")throw d.status=500,d;g=d.message,d.name==="TypeError"&&"cause"in d&&(d.cause instanceof Error?g=d.cause.message:typeof d.cause=="string"&&(g=d.cause))}let T=new yt(g,500,{request:r});throw T.cause=d,T}let a=i.status,c=i.url,u={};for(let[d,g]of i.headers)u[d]=g;let l={url:c,status:a,headers:u,data:""};if("deprecation"in u){let d=u.link&&u.link.match(/<([^<>]+)>; rel="deprecation"/),g=d&&d.pop();t.warn(`[@octokit/request] "${r.method} ${r.url}" is deprecated. It is scheduled to be removed on ${u.sunset}${g?`. See ${g}`:""}`)}if(a===204||a===205)return l;if(r.method==="HEAD"){if(a<400)return l;throw new yt(i.statusText,a,{response:l,request:r})}if(a===304)throw l.data=await Nr(i),new yt("Not modified",a,{response:l,request:r});if(a>=400)throw l.data=await Nr(i),new yt(Gu(l.data),a,{response:l,request:r});return l.data=s?await Nr(i):i.body,l}async function Nr(r){let e=r.headers.get("content-type");if(!e)return r.text().catch(Zn);let t=(0,ti.safeParse)(e);if(Ou(t)){let s="";try{return s=await r.text(),Qn(s)}catch{return s}}else return t.type.startsWith("text/")||t.parameters.charset?.toLowerCase()==="utf-8"?r.text().catch(Zn):r.arrayBuffer().catch(()=>new ArrayBuffer(0))}function Ou(r){return r.type==="application/json"||r.type==="application/scim+json"}function Gu(r){if(typeof r=="string")return r;if(r instanceof ArrayBuffer)return"Unknown error";if("message"in r){let e="documentation_url"in r?` - ${r.documentation_url}`:"";return Array.isArray(r.errors)?`${r.message}: ${r.errors.map(t=>JSON.stringify(t)).join(", ")}${e}`:`${r.message}${e}`}return`Unknown error: ${JSON.stringify(r)}`}function Hr(r,e){let t=r.defaults(e);return Object.assign(function(o,n){let i=t.merge(o,n);if(!i.request||!i.request.hook)return ei(t.parse(i));let a=(c,u)=>ei(t.parse(t.merge(c,u)));return Object.assign(a,{endpoint:t,defaults:Hr.bind(null,t)}),i.request.hook(a,i)},{endpoint:t,defaults:Hr.bind(null,t)})}var ti,Cu,ku,Zn,Qt,qr=C(()=>{jn();zt();ti=z(Bn(),1);Yn();Xn();Cu="10.0.8",ku={headers:{"user-agent":`octokit-request.js/${Cu} ${it()}`}};Zn=()=>"";Qt=Hr(Ln,ku);});function Du(r){return`Request failed due to following response errors:
|
|
33
|
+
The gh CLI is recommended - install from https://cli.github.com`);return r}function Tn(){Pe=null,Yt=!1}async function Ss(){if(Pe)return Pe;if(Yt)return null;if(Yt=!0,process.env.GITHUB_TOKEN)return Pe=process.env.GITHUB_TOKEN,Pe;try{let r=await new Promise((e,t)=>{(0,Xt.execFile)("gh",["auth","token"],{encoding:"utf-8",timeout:2e3},(s,o)=>{s?t(s):e(o.trim())})});if(r&&r.length>0)return Pe=r,T(ft,"Using GitHub token from gh CLI (async)"),Pe}catch(r){T(ft,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}async function Ps(){try{let r=await new Promise((e,t)=>{(0,Xt.execFile)("gh",["api","user","--jq",".login"],{encoding:"utf-8",timeout:5e3},(s,o)=>{s?t(s):e(o.trim())})});return r&&tu.test(r)?(T(ft,`Detected GitHub username: ${r}`),r):(T(ft,`gh api user returned invalid username: "${r}"`),null)}catch(r){return T(ft,"detectGitHubUsername failed",r),null}}var We,ut,wn,Xt,ct,ft,Pe,Yt,Zc,eu,tu,Te=k(()=>{"use strict";We=z(require("fs"),1),ut=z(require("path"),1),wn=z(require("os"),1),Xt=require("child_process");ue();he();ct=5,ft="utils",Pe=null,Yt=!1;Zc=/^[a-zA-Z0-9_-]+$/,eu=/^[a-zA-Z0-9_.-]+$/;tu=/^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$/});function nu(r){try{let e=JSON.parse(H.readFileSync(r,"utf-8"));return Date.now()-e.timestamp>ou}catch(e){return T(M,"Lock file unreadable or invalid JSON, treating as stale",e),!0}}function iu(r){let e=JSON.stringify({pid:process.pid,timestamp:Date.now()});try{H.writeFileSync(r,e,{flag:"wx"});return}catch(t){T(M,"Lock file already exists, checking staleness",t)}if(!nu(r))throw new Error("State file is locked by another process");try{H.unlinkSync(r)}catch(t){T(M,"Stale lock already removed by another process",t)}try{H.writeFileSync(r,e,{flag:"wx"})}catch(t){throw T(M,"Lock re-acquire failed (race condition)",t),new Error("State file is locked by another process",{cause:t})}}function au(r){try{JSON.parse(H.readFileSync(r,"utf-8")).pid===process.pid&&H.unlinkSync(r)}catch(e){T(M,"Lock file already removed or unreadable during release",e)}}function Hr(r,e,t){let s=r+".tmp";H.writeFileSync(s,e,{mode:t??384}),H.renameSync(s,r),t!==void 0&&H.chmodSync(r,t)}function Pn(r){T(M,"Migrating state from v1 to v2 (fresh GitHub fetching)...");let e=r.mergedPRs||[],t=r.closedPRs||[],s={...r.repoScores||{}};for(let n of e)s[n.repo]||(s[n.repo]={repo:n.repo,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}});for(let n of t)s[n.repo]||(s[n.repo]={repo:n.repo,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}});let o={version:2,activeIssues:r.activeIssues||[],repoScores:s,config:r.config,events:r.events||[],lastRunAt:new Date().toISOString()};return T(M,`Migration complete. Preserved ${Object.keys(s).length} repo scores.`),o}function L(){return qr||(qr=new Cs),qr}var H,Le,M,su,Sn,ru,ou,Zt,_t,Cs,qr,xt=k(()=>{"use strict";H=z(require("fs"),1),Le=z(require("path"),1);it();Te();ue();he();M="state",su=2,Sn=1e3,ru=720*60*60*1e3,ou=3e4,Zt=Le.join(process.cwd(),"data","state.json"),_t=Le.join(process.cwd(),"data","backups");Cs=class r{state;inMemoryOnly;constructor(e=!1){this.inMemoryOnly=e,this.state=e?this.createFreshState():this.load()}createFreshState(){return{version:su,activeIssues:[],repoScores:{},config:{...Es.config,setupComplete:!1,languages:[...Es.config.languages],labels:[...Es.config.labels],excludeRepos:[],trustedProjects:[],shelvedPRUrls:[],dismissedIssues:{},snoozedPRs:{}},events:[],lastRunAt:new Date().toISOString()}}isSetupComplete(){return this.state.config.setupComplete===!0}markSetupComplete(){this.state.config.setupComplete=!0,this.state.config.setupCompletedAt=new Date().toISOString()}initializeWithDefaults(e){if(this.state.config.setupComplete){T(M,`Setup already complete, skipping initializeWithDefaults for "${e}"`);return}this.state.config.githubUsername=e,this.markSetupComplete(),T(M,`Initialized with defaults for user "${e}"`),this.save()}migrateFromLegacyLocation(){let e=lt();if(H.existsSync(e)||!H.existsSync(Zt))return!1;T(M,"Migrating state from ./data/ to ~/.oss-autopilot/...");try{if(Ue(),H.copyFileSync(Zt,e),T(M,`Migrated state file to ${e}`),H.existsSync(_t)){let s=bt(),o=H.readdirSync(_t).filter(n=>n.startsWith("state-")&&n.endsWith(".json"));for(let n of o){let i=Le.join(_t,n),a=Le.join(s,n);H.copyFileSync(i,a)}T(M,`Migrated ${o.length} backup files`)}if(H.unlinkSync(Zt),T(M,"Removed legacy state file"),H.existsSync(_t)){let s=H.readdirSync(_t);for(let o of s)H.unlinkSync(Le.join(_t,o));H.rmdirSync(_t)}let t=Le.dirname(Zt);return H.existsSync(t)&&H.readdirSync(t).length===0&&(H.rmdirSync(t),T(M,"Removed empty legacy data directory")),T(M,"Migration complete!"),!0}catch(t){m(M,`Failed to migrate state: ${v(t)}`);let s=lt();if(H.existsSync(s)&&H.existsSync(Zt))try{H.unlinkSync(s),T(M,"Cleaned up partial migration - removed incomplete new state file")}catch(o){m(M,"Could not clean up partial migration file"),T(M,"Partial migration cleanup failed",o)}return m(M,"To resolve this issue:"),m(M," 1. Ensure you have write permissions to ~/.oss-autopilot/"),m(M," 2. Check available disk space"),m(M," 3. Manually copy ./data/state.json to ~/.oss-autopilot/state.json"),m(M," 4. Or delete ./data/state.json to start fresh"),!1}}load(){this.migrateFromLegacyLocation();let e=lt();try{if(H.existsSync(e)){let t=H.readFileSync(e,"utf-8"),s=JSON.parse(t);if(!this.isValidState(s)){m(M,"Invalid state file structure, attempting to restore from backup...");let n=this.tryRestoreFromBackup();return n||(m(M,"No valid backup found, starting fresh"),this.createFreshState())}s.version===1&&(s=Pn(s),Hr(e,JSON.stringify(s,null,2),384),T(M,"Migrated state saved"));let o=Object.keys(s.repoScores).length;return T(M,`Loaded state v${s.version}: ${o} repo scores tracked`),s}}catch(t){m(M,"Error loading state:",t),m(M,"Attempting to restore from backup...");let s=this.tryRestoreFromBackup();if(s)return s;m(M,"No valid backup found, starting fresh")}return T(M,"No existing state found, initializing..."),this.createFreshState()}tryRestoreFromBackup(){let e=bt();if(!H.existsSync(e))return null;let t=H.readdirSync(e).filter(s=>s.startsWith("state-")&&s.endsWith(".json")).sort().reverse();for(let s of t){let o=Le.join(e,s);try{let n=H.readFileSync(o,"utf-8"),i=JSON.parse(n);if(this.isValidState(i)){T(M,`Successfully restored state from backup: ${s}`),i.version===1&&(i=Pn(i));let a=Object.keys(i.repoScores).length;T(M,`Restored state v${i.version}: ${a} repo scores`);let c=lt();return Hr(c,JSON.stringify(i,null,2),384),T(M,"Restored backup written to main state file"),i}}catch(n){m(M,`Backup ${s} is corrupted, trying next...`),T(M,`Backup ${s} parse failed`,n)}}return null}isValidState(e){if(!e||typeof e!="object")return!1;let t=e;return t.repoScores===void 0&&(t.repoScores={}),t.events===void 0&&(t.events=[]),t.mergedPRs===void 0&&(t.mergedPRs=[]),typeof t.version=="number"&&typeof t.repoScores=="object"&&t.repoScores!==null&&Array.isArray(t.events)&&typeof t.config=="object"&&t.config!==null?t.version===1?Array.isArray(t.activePRs)&&Array.isArray(t.dormantPRs)&&Array.isArray(t.mergedPRs)&&Array.isArray(t.closedPRs):!0:!1}save(){if(this.state.lastRunAt=new Date().toISOString(),this.inMemoryOnly)return;let e=lt(),t=e+".lock",s=bt();iu(t);try{if(H.existsSync(e)){let o=new Date().toISOString().replace(/[:.]/g,"-"),n=Math.random().toString(36).slice(2,8).padEnd(6,"0"),i=Le.join(s,`state-${o}-${n}.json`);H.copyFileSync(e,i),H.chmodSync(i,384),this.cleanupBackups()}Hr(e,JSON.stringify(this.state,null,2),384),T(M,"State saved successfully")}finally{au(t)}}cleanupBackups(){let e=bt();try{let t=H.readdirSync(e).filter(s=>s.startsWith("state-")).sort().reverse();for(let s of t.slice(10))try{H.unlinkSync(Le.join(e,s))}catch(o){m(M,`Could not delete old backup ${s}:`,v(o))}}catch(t){m(M,"Could not clean up backups:",v(t))}}getState(){return this.state}setLastDigest(e){this.state.lastDigest=e,this.state.lastDigestAt=e.generatedAt}setMonthlyMergedCounts(e){this.state.monthlyMergedCounts=e}setMonthlyClosedCounts(e){this.state.monthlyClosedCounts=e}setMonthlyOpenedCounts(e){this.state.monthlyOpenedCounts=e}setDailyActivityCounts(e){this.state.dailyActivityCounts=e}getMergedPRs(){return this.state.mergedPRs??[]}addMergedPRs(e){if(e.length===0)return;this.state.mergedPRs||(this.state.mergedPRs=[]);let t=new Set(this.state.mergedPRs.map(o=>o.url)),s=e.filter(o=>!t.has(o.url));s.length!==0&&(this.state.mergedPRs.push(...s),this.state.mergedPRs.sort((o,n)=>n.mergedAt.localeCompare(o.mergedAt)),T(M,`Added ${s.length} merged PRs (total: ${this.state.mergedPRs.length})`))}getMergedPRWatermark(){let e=this.state.mergedPRs;if(!(!e||e.length===0))return e[0].mergedAt||void 0}getClosedPRs(){return this.state.closedPRs??[]}addClosedPRs(e){if(e.length===0)return;this.state.closedPRs||(this.state.closedPRs=[]);let t=new Set(this.state.closedPRs.map(o=>o.url)),s=e.filter(o=>!t.has(o.url));s.length!==0&&(this.state.closedPRs.push(...s),this.state.closedPRs.sort((o,n)=>n.closedAt.localeCompare(o.closedAt)),T(M,`Added ${s.length} closed PRs (total: ${this.state.closedPRs.length})`))}getClosedPRWatermark(){let e=this.state.closedPRs;if(!(!e||e.length===0))return e[0].closedAt||void 0}setLocalRepoCache(e){this.state.localRepoCache=e}updateConfig(e){this.state.config={...this.state.config,...e}}appendEvent(e,t){let s={id:`evt_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,type:e,at:new Date().toISOString(),data:t};this.state.events.push(s),this.state.events.length>Sn&&(this.state.events=this.state.events.slice(-Sn))}getEventsByType(e){return this.state.events.filter(t=>t.type===e)}getEventsInRange(e,t=new Date){return this.state.events.filter(s=>{let o=new Date(s.at);return o>=e&&o<=t})}addIssue(e){if(this.state.activeIssues.find(s=>s.url===e.url)){T(M,`Issue ${e.url} already tracked`);return}this.state.activeIssues.push(e),T(M,`Added issue: ${e.repo}#${e.number}`)}addTrustedProject(e){this.state.config.trustedProjects.includes(e)||(this.state.config.trustedProjects.push(e),T(M,`Added trusted project: ${e}`))}static matchesExclusion(e,t,s){let o=e.toLowerCase();return!!(t.some(n=>n.toLowerCase()===o)||s?.some(n=>n.toLowerCase()===o.split("/")[0]))}cleanupExcludedData(e,t){let s=i=>r.matchesExclusion(i,e,t),o=this.state.config.trustedProjects.length;this.state.config.trustedProjects=this.state.config.trustedProjects.filter(i=>!s(i));let n=o-this.state.config.trustedProjects.length;n>0&&T(M,`Removed ${n} trusted project(s) for excluded repos/orgs`)}getStarredRepos(){return this.state.config.starredRepos||[]}setStarredRepos(e){this.state.config.starredRepos=e,this.state.config.starredReposLastFetched=new Date().toISOString(),T(M,`Updated starred repos: ${e.length} repositories`)}isStarredReposStale(){let e=this.state.config.starredReposLastFetched;if(!e)return!0;let t=1440*60*1e3,s=new Date(e);return new Date().getTime()-s.getTime()>t}shelvePR(e){return this.state.config.shelvedPRUrls||(this.state.config.shelvedPRUrls=[]),this.state.config.shelvedPRUrls.includes(e)?!1:(this.state.config.shelvedPRUrls.push(e),!0)}unshelvePR(e){if(!this.state.config.shelvedPRUrls)return!1;let t=this.state.config.shelvedPRUrls.indexOf(e);return t===-1?!1:(this.state.config.shelvedPRUrls.splice(t,1),!0)}isPRShelved(e){return this.state.config.shelvedPRUrls?.includes(e)??!1}dismissIssue(e,t){return this.state.config.dismissedIssues||(this.state.config.dismissedIssues={}),e in this.state.config.dismissedIssues?!1:(this.state.config.dismissedIssues[e]=t,!0)}undismissIssue(e){return!this.state.config.dismissedIssues||!(e in this.state.config.dismissedIssues)?!1:(delete this.state.config.dismissedIssues[e],!0)}getIssueDismissedAt(e){return this.state.config.dismissedIssues?.[e]}snoozePR(e,t,s){if(!Number.isFinite(s)||s<=0)throw new Z(`Invalid snooze duration: ${s}. Must be a positive finite number.`);if(this.state.config.snoozedPRs||(this.state.config.snoozedPRs={}),e in this.state.config.snoozedPRs)return!1;let o=new Date,n=new Date(o.getTime()+s*24*60*60*1e3);return this.state.config.snoozedPRs[e]={reason:t,snoozedAt:o.toISOString(),expiresAt:n.toISOString()},!0}unsnoozePR(e){return!this.state.config.snoozedPRs||!(e in this.state.config.snoozedPRs)?!1:(delete this.state.config.snoozedPRs[e],!0)}isSnoozed(e){let t=this.getSnoozeInfo(e);if(!t)return!1;let s=new Date(t.expiresAt).getTime();return isNaN(s)?(m(M,`Invalid expiresAt for snoozed PR ${e}: "${t.expiresAt}". Treating as not snoozed.`),!1):s>Date.now()}getSnoozeInfo(e){return this.state.config.snoozedPRs?.[e]}expireSnoozes(){if(!this.state.config.snoozedPRs)return[];let e=[],t=Date.now();for(let[s,o]of Object.entries(this.state.config.snoozedPRs)){let n=new Date(o.expiresAt).getTime();(isNaN(n)||n<=t)&&e.push(s)}for(let s of e)delete this.state.config.snoozedPRs[s];return e}setStatusOverride(e,t,s){this.state.config.statusOverrides||(this.state.config.statusOverrides={}),this.state.config.statusOverrides[e]={status:t,setAt:new Date().toISOString(),lastActivityAt:s}}clearStatusOverride(e){return!this.state.config.statusOverrides||!(e in this.state.config.statusOverrides)?!1:(delete this.state.config.statusOverrides[e],!0)}getStatusOverride(e,t){let s=this.state.config.statusOverrides?.[e];if(s){if(t&&t>s.lastActivityAt){this.clearStatusOverride(e);return}return s}}getRepoScore(e){return this.state.repoScores[e]}createDefaultRepoScore(e){return{repo:e,score:5,mergedPRCount:0,closedWithoutMergeCount:0,avgResponseDays:null,lastEvaluatedAt:new Date().toISOString(),signals:{hasActiveMaintainers:!0,isResponsive:!1,hasHostileComments:!1}}}calculateScore(e){let t=5;if(e.mergedPRCount>0){let o=Math.min(Math.round(Math.log2(e.mergedPRCount+1)*2),5);t+=o}let s=Math.min(e.closedWithoutMergeCount,3);if(t-=s,e.lastMergedAt){let o=new Date(e.lastMergedAt);isNaN(o.getTime())?m(M,`Invalid lastMergedAt date for ${e.repo}: "${e.lastMergedAt}". Skipping recency bonus.`):Math.floor((Date.now()-o.getTime())/864e5)<=90&&(t+=1)}return e.signals.isResponsive&&(t+=1),e.signals.hasHostileComments&&(t-=2),Math.max(1,Math.min(10,t))}updateRepoScore(e,t){this.state.repoScores[e]||(this.state.repoScores[e]=this.createDefaultRepoScore(e));let s=this.state.repoScores[e];t.mergedPRCount!==void 0&&(s.mergedPRCount=t.mergedPRCount),t.closedWithoutMergeCount!==void 0&&(s.closedWithoutMergeCount=t.closedWithoutMergeCount),t.avgResponseDays!==void 0&&(s.avgResponseDays=t.avgResponseDays),t.lastMergedAt!==void 0&&(s.lastMergedAt=t.lastMergedAt),t.stargazersCount!==void 0&&(s.stargazersCount=t.stargazersCount),t.signals&&(s.signals={...s.signals,...t.signals}),s.score=this.calculateScore(s),s.lastEvaluatedAt=new Date().toISOString(),T(M,`Updated repo score for ${e}: ${s.score}/10`)}incrementMergedCount(e){let s=(this.state.repoScores[e]?.mergedPRCount??0)+1;this.updateRepoScore(e,{mergedPRCount:s,lastMergedAt:new Date().toISOString()}),T(M,`Incremented merged count for ${e}: ${s}`)}incrementClosedCount(e){let s=(this.state.repoScores[e]?.closedWithoutMergeCount??0)+1;this.updateRepoScore(e,{closedWithoutMergeCount:s}),T(M,`Incremented closed count for ${e}: ${s}`)}markRepoHostile(e){this.updateRepoScore(e,{signals:{hasHostileComments:!0}}),T(M,`Marked ${e} as hostile, score: ${this.state.repoScores[e].score}/10`)}getReposWithMergedPRs(){return Object.values(this.state.repoScores).filter(e=>e.mergedPRCount>0).sort((e,t)=>t.mergedPRCount-e.mergedPRCount).map(e=>e.repo)}getReposWithOpenPRs(){return Object.values(this.state.repoScores).filter(e=>e.mergedPRCount===0&&e.closedWithoutMergeCount===0).sort((e,t)=>t.score-e.score).map(e=>e.repo)}getHighScoringRepos(e){let t=e??this.state.config.minRepoScoreThreshold;return Object.values(this.state.repoScores).filter(s=>s.score>=t).sort((s,o)=>o.score-s.score).map(s=>s.repo)}getLowScoringRepos(e){let t=e??this.state.config.minRepoScoreThreshold,s=Date.now();return Object.values(this.state.repoScores).filter(o=>{if(o.score>t)return!1;let n=s-new Date(o.lastEvaluatedAt).getTime();return Number.isFinite(n)?n<=ru:(m(M,`Invalid lastEvaluatedAt for repo ${o.repo}: "${o.lastEvaluatedAt}", treating as stale`),!1)}).sort((o,n)=>o.score-n.score).map(o=>o.repo)}getStats(){let e=0,t=0,s=0;for(let i of Object.values(this.state.repoScores))Ye(i.stargazersCount,this.state.config.minStars??50)||(s++,e+=i.mergedPRCount,t+=i.closedWithoutMergeCount);let o=e+t,n=o>0?e/o*100:0;return{mergedPRs:e,closedPRs:t,activeIssues:0,trustedProjects:this.state.config.trustedProjects.length,mergeRate:n.toFixed(1)+"%",totalTracked:s,needsResponse:0}}},qr=null});function pt(){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 es=k(()=>{});function ks(r,e,t,s){if(typeof t!="function")throw new Error("method for before hook must be a function");return s||(s={}),Array.isArray(e)?e.reverse().reduce((o,n)=>ks.bind(null,r,n,o,s),t)():Promise.resolve().then(()=>r.registry[e]?r.registry[e].reduce((o,n)=>n.hook.bind(null,o,s),t)():t(s))}var Cn=k(()=>{});function kn(r,e,t,s){let o=s;r.registry[t]||(r.registry[t]=[]),e==="before"&&(s=(n,i)=>Promise.resolve().then(o.bind(null,i)).then(n.bind(null,i))),e==="after"&&(s=(n,i)=>{let a;return Promise.resolve().then(n.bind(null,i)).then(c=>(a=c,o(a,i))).then(()=>a)}),e==="error"&&(s=(n,i)=>Promise.resolve().then(n.bind(null,i)).catch(a=>o(a,i))),r.registry[t].push({hook:s,orig:o})}var An=k(()=>{});function On(r,e,t){if(!r.registry[e])return;let s=r.registry[e].map(o=>o.orig).indexOf(t);s!==-1&&r.registry[e].splice(s,1)}var Gn=k(()=>{});function In(r,e,t){let s=Dn(On,null).apply(null,t?[e,t]:[e]);r.api={remove:s},r.remove=s,["before","error","after","wrap"].forEach(o=>{let n=t?[e,o,t]:[e,o];r[o]=r.api[o]=Dn(kn,null).apply(null,n)})}function cu(){let r=Symbol("Singular"),e={registry:{}},t=ks.bind(null,e,r);return In(t,e,r),t}function uu(){let r={registry:{}},e=ks.bind(null,r);return In(e,r),e}var $n,Dn,Fn,xn=k(()=>{Cn();An();Gn();$n=Function.bind,Dn=$n.bind($n);Fn={Singular:cu,Collection:uu}});function gu(r){return r?Object.keys(r).reduce((e,t)=>(e[t.toLowerCase()]=r[t],e),{}):{}}function mu(r){if(typeof r!="object"||r===null||Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);if(e===null)return!0;let t=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&Function.prototype.call(t)===Function.prototype.call(r)}function Ln(r,e){let t=Object.assign({},r);return Object.keys(e).forEach(s=>{mu(e[s])?s in r?t[s]=Ln(r[s],e[s]):Object.assign(t,{[s]:e[s]}):Object.assign(t,{[s]:e[s]})}),t}function Un(r){for(let e in r)r[e]===void 0&&delete r[e];return r}function Vr(r,e,t){if(typeof e=="string"){let[o,n]=e.split(" ");t=Object.assign(n?{method:o,url:n}:{url:o},t)}else t=Object.assign({},e);t.headers=gu(t.headers),Un(t),Un(t.headers);let s=Ln(r||{},t);return t.url==="/graphql"&&(r&&r.mediaType.previews?.length&&(s.mediaType.previews=r.mediaType.previews.filter(o=>!s.mediaType.previews.includes(o)).concat(s.mediaType.previews)),s.mediaType.previews=(s.mediaType.previews||[]).map(o=>o.replace(/-preview/,""))),s}function hu(r,e){let t=/\?/.test(r)?"&":"?",s=Object.keys(e);return s.length===0?r:r+t+s.map(o=>o==="q"?"q="+e.q.split("+").map(encodeURIComponent).join("+"):`${o}=${encodeURIComponent(e[o])}`).join("&")}function bu(r){return r.replace(/(?:^\W+)|(?:(?<!\W)\W+$)/g,"").split(/,/)}function yu(r){let e=r.match(fu);return e?e.map(bu).reduce((t,s)=>t.concat(s),[]):[]}function Mn(r,e){let t={__proto__:null};for(let s of Object.keys(r))e.indexOf(s)===-1&&(t[s]=r[s]);return t}function jn(r){return r.split(/(%[0-9A-Fa-f]{2})/g).map(function(e){return/%[0-9A-Fa-f]/.test(e)||(e=encodeURI(e).replace(/%5B/g,"[").replace(/%5D/g,"]")),e}).join("")}function Mt(r){return encodeURIComponent(r).replace(/[!'()*]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function ts(r,e,t){return e=r==="+"||r==="#"?jn(e):Mt(e),t?Mt(t)+"="+e:e}function Ut(r){return r!=null}function Br(r){return r===";"||r==="&"||r==="?"}function _u(r,e,t,s){var o=r[t],n=[];if(Ut(o)&&o!=="")if(typeof o=="string"||typeof o=="number"||typeof o=="bigint"||typeof o=="boolean")o=o.toString(),s&&s!=="*"&&(o=o.substring(0,parseInt(s,10))),n.push(ts(e,o,Br(e)?t:""));else if(s==="*")Array.isArray(o)?o.filter(Ut).forEach(function(i){n.push(ts(e,i,Br(e)?t:""))}):Object.keys(o).forEach(function(i){Ut(o[i])&&n.push(ts(e,o[i],i))});else{let i=[];Array.isArray(o)?o.filter(Ut).forEach(function(a){i.push(ts(e,a))}):Object.keys(o).forEach(function(a){Ut(o[a])&&(i.push(Mt(a)),i.push(ts(e,o[a].toString())))}),Br(e)?n.push(Mt(t)+"="+i.join(",")):i.length!==0&&n.push(i.join(","))}else e===";"?Ut(o)&&n.push(Mt(t)):o===""&&(e==="&"||e==="?")?n.push(Mt(t)+"="):o===""&&n.push("");return n}function Ru(r){return{expand:wu.bind(null,r)}}function wu(r,e){var t=["+","#",".","/",";","?","&"];return r=r.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,function(s,o,n){if(o){let a="",c=[];if(t.indexOf(o.charAt(0))!==-1&&(a=o.charAt(0),o=o.substr(1)),o.split(/,/g).forEach(function(u){var l=/([^:\*]*)(?::(\d+)|(\*))?/.exec(u);c.push(_u(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 jn(n)}),r==="/"?r:r.replace(/\/$/,"")}function Nn(r){let e=r.method.toUpperCase(),t=(r.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),s=Object.assign({},r.headers),o,n=Mn(r,["method","baseUrl","url","headers","request","mediaType"]),i=yu(t);t=Ru(t).expand(n),/^http/.test(t)||(t=r.baseUrl+t);let a=Object.keys(r).filter(l=>i.includes(l)).concat("baseUrl"),c=Mn(n,a);if(!/application\/octet-stream/i.test(s.accept)&&(r.mediaType.format&&(s.accept=s.accept.split(/,/).map(l=>l.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${r.mediaType.format}`)).join(",")),t.endsWith("/graphql")&&r.mediaType.previews?.length)){let l=s.accept.match(/(?<![\w-])[\w-]+(?=-preview)/g)||[];s.accept=l.concat(r.mediaType.previews).map(d=>{let g=r.mediaType.format?`.${r.mediaType.format}`:"+json";return`application/vnd.github.${d}-preview${g}`}).join(",")}return["GET","HEAD"].includes(e)?t=hu(t,c):"data"in c?o=c.data:Object.keys(c).length&&(o=c),!s["content-type"]&&typeof o<"u"&&(s["content-type"]="application/json; charset=utf-8"),["PATCH","PUT"].includes(e)&&typeof o>"u"&&(o=""),Object.assign({method:e,url:t,headers:s},typeof o<"u"?{body:o}:null,r.request?{request:r.request}:null)}function Eu(r,e,t){return Nn(Vr(r,e,t))}function Hn(r,e){let t=Vr(r,e),s=Eu.bind(null,t);return Object.assign(s,{DEFAULTS:t,defaults:Hn.bind(null,t),merge:Vr.bind(null,t),parse:Nn})}var lu,pu,du,fu,qn,Bn=k(()=>{es();lu="0.0.0-development",pu=`octokit-endpoint.js/${lu} ${pt()}`,du={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":pu},mediaType:{format:""}};fu=/\{[^{}}]+\}/g;qn=Hn(null,du)});var Jn=Ke((Md,ss)=>{"use strict";var Gs=function(){};Gs.prototype=Object.create(null);var As=/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu,Os=/\\([\v\u0020-\u00ff])/gu,Vn=/^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u,Rt={type:"",parameters:new Gs};Object.freeze(Rt.parameters);Object.freeze(Rt);function Wn(r){if(typeof r!="string")throw new TypeError("argument header is required and must be a string");let e=r.indexOf(";"),t=e!==-1?r.slice(0,e).trim():r.trim();if(Vn.test(t)===!1)throw new TypeError("invalid media type");let s={type:t.toLowerCase(),parameters:new Gs};if(e===-1)return s;let o,n,i;for(As.lastIndex=e;n=As.exec(r);){if(n.index!==e)throw new TypeError("invalid parameter format");e+=n[0].length,o=n[1].toLowerCase(),i=n[2],i[0]==='"'&&(i=i.slice(1,i.length-1),Os.test(i)&&(i=i.replace(Os,"$1"))),s.parameters[o]=i}if(e!==r.length)throw new TypeError("invalid parameter format");return s}function zn(r){if(typeof r!="string")return Rt;let e=r.indexOf(";"),t=e!==-1?r.slice(0,e).trim():r.trim();if(Vn.test(t)===!1)return Rt;let s={type:t.toLowerCase(),parameters:new Gs};if(e===-1)return s;let o,n,i;for(As.lastIndex=e;n=As.exec(r);){if(n.index!==e)return Rt;e+=n[0].length,o=n[1].toLowerCase(),i=n[2],i[0]==='"'&&(i=i.slice(1,i.length-1),Os.test(i)&&(i=i.replace(Os,"$1"))),s.parameters[o]=i}return e!==r.length?Rt:s}ss.exports.default={parse:Wn,safeParse:zn};ss.exports.parse=Wn;ss.exports.safeParse=zn;ss.exports.defaultContentType=Rt});var Tu,Yn,Wr,Kn,vu,Su,Pu,Xn,Cu,ku,Au,Zn,Qn,Ou,Gu,ei,ti=k(()=>{Tu=/^-?\d+$/,Yn=/^-?\d+n+$/,Wr=JSON.stringify,Kn=JSON.parse,vu=/^-?\d+n$/,Su=/([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,Pu=/([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,Xn=(r,e,t)=>"rawJSON"in JSON?Wr(r,(i,a)=>typeof a=="bigint"?JSON.rawJSON(a.toString()):typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t):r?Wr(r,(i,a)=>typeof a=="string"&&!!a.match(Yn)||typeof a=="bigint"?a.toString()+"n":typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t).replace(Su,"$1$2$3").replace(Pu,"$1$2$3"):Wr(r,e,t),Cu=()=>JSON.parse("1",(r,e,t)=>!!t&&t.source==="1"),ku=(r,e,t,s)=>typeof e=="string"&&e.match(vu)?BigInt(e.slice(0,-1)):typeof e=="string"&&e.match(Yn)?e.slice(0,-1):typeof s!="function"?e:s(r,e,t),Au=(r,e)=>JSON.parse(r,(t,s,o)=>{let n=typeof s=="number"&&(s>Number.MAX_SAFE_INTEGER||s<Number.MIN_SAFE_INTEGER),i=o&&Tu.test(o.source);return n&&i?BigInt(o.source):typeof e!="function"?s:e(t,s,o)}),Zn=Number.MAX_SAFE_INTEGER.toString(),Qn=Zn.length,Ou=/"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,Gu=/^"-?\d+n+"$/,ei=(r,e)=>{if(!r)return Kn(r,e);if(Cu())return Au(r,e);let t=r.replace(Ou,(s,o,n,i)=>{let a=s[0]==='"';if(a&&!!s.match(Gu))return s.substring(0,s.length-1)+'n"';let u=n||i,l=o&&(o.length<Qn||o.length===Qn&&o<=Zn);return a||u||l?s:'"'+s+'n"'});return Kn(t,(s,o,n)=>ku(s,o,n,e))}});var wt,si=k(()=>{wt=class extends Error{name;status;request;response;constructor(e,t,s){super(e,{cause:s.cause}),this.name="HttpError",this.status=Number.parseInt(t),Number.isNaN(this.status)&&(this.status=0);"response"in s&&(this.response=s.response);let o=Object.assign({},s.request);s.request.headers.authorization&&(o.headers=Object.assign({},s.request.headers,{authorization:s.request.headers.authorization.replace(/(?<! ) .*$/," [REDACTED]")})),o.url=o.url.replace(/\bclient_secret=\w+/g,"client_secret=[REDACTED]").replace(/\baccess_token=\w+/g,"access_token=[REDACTED]"),this.request=o}}});function Iu(r){if(typeof r!="object"||r===null||Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);if(e===null)return!0;let t=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&Function.prototype.call(t)===Function.prototype.call(r)}async function oi(r){let e=r.request?.fetch||globalThis.fetch;if(!e)throw new Error("fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing");let t=r.request?.log||console,s=r.request?.parseSuccessResponseBody!==!1,o=Iu(r.body)||Array.isArray(r.body)?Xn(r.body):r.body,n=Object.fromEntries(Object.entries(r.headers).map(([d,g])=>[d,String(g)])),i;try{i=await e(r.url,{method:r.method,body:o,redirect:r.request?.redirect,headers:n,signal:r.request?.signal,...r.body&&{duplex:"half"}})}catch(d){let g="Unknown Error";if(d instanceof Error){if(d.name==="AbortError")throw d.status=500,d;g=d.message,d.name==="TypeError"&&"cause"in d&&(d.cause instanceof Error?g=d.cause.message:typeof d.cause=="string"&&(g=d.cause))}let E=new wt(g,500,{request:r});throw E.cause=d,E}let a=i.status,c=i.url,u={};for(let[d,g]of i.headers)u[d]=g;let l={url:c,status:a,headers:u,data:""};if("deprecation"in u){let d=u.link&&u.link.match(/<([^<>]+)>; rel="deprecation"/),g=d&&d.pop();t.warn(`[@octokit/request] "${r.method} ${r.url}" is deprecated. It is scheduled to be removed on ${u.sunset}${g?`. See ${g}`:""}`)}if(a===204||a===205)return l;if(r.method==="HEAD"){if(a<400)return l;throw new wt(i.statusText,a,{response:l,request:r})}if(a===304)throw l.data=await zr(i),new wt("Not modified",a,{response:l,request:r});if(a>=400)throw l.data=await zr(i),new wt(xu(l.data),a,{response:l,request:r});return l.data=s?await zr(i):i.body,l}async function zr(r){let e=r.headers.get("content-type");if(!e)return r.text().catch(ri);let t=(0,ni.safeParse)(e);if(Fu(t)){let s="";try{return s=await r.text(),ei(s)}catch{return s}}else return t.type.startsWith("text/")||t.parameters.charset?.toLowerCase()==="utf-8"?r.text().catch(ri):r.arrayBuffer().catch(()=>new ArrayBuffer(0))}function Fu(r){return r.type==="application/json"||r.type==="application/scim+json"}function xu(r){if(typeof r=="string")return r;if(r instanceof ArrayBuffer)return"Unknown error";if("message"in r){let e="documentation_url"in r?` - ${r.documentation_url}`:"";return Array.isArray(r.errors)?`${r.message}: ${r.errors.map(t=>JSON.stringify(t)).join(", ")}${e}`:`${r.message}${e}`}return`Unknown error: ${JSON.stringify(r)}`}function Jr(r,e){let t=r.defaults(e);return Object.assign(function(o,n){let i=t.merge(o,n);if(!i.request||!i.request.hook)return oi(t.parse(i));let a=(c,u)=>oi(t.parse(t.merge(c,u)));return Object.assign(a,{endpoint:t,defaults:Jr.bind(null,t)}),i.request.hook(a,i)},{endpoint:t,defaults:Jr.bind(null,t)})}var ni,$u,Du,ri,rs,Kr=k(()=>{Bn();es();ni=z(Jn(),1);ti();si();$u="10.0.8",Du={headers:{"user-agent":`octokit-request.js/${$u} ${pt()}`}};ri=()=>"";rs=Jr(qn,Du);});function Mu(r){return`Request failed due to following response errors:
|
|
34
34
|
`+r.errors.map(e=>` - ${e.message}`).join(`
|
|
35
|
-
`)}function Uu(r,e,t){if(t){if(typeof e=="string"&&"query"in t)return Promise.reject(new Error('[@octokit/graphql] "query" cannot be used as variable name'));for(let i in t)if(xu.includes(i))return Promise.reject(new Error(`[@octokit/graphql] "${i}" cannot be used as variable name`))}let s=typeof e=="string"?Object.assign({query:e},t):e,o=Object.keys(s).reduce((i,a)=>Fu.includes(a)?(i[a]=s[a],i):(i.variables||(i.variables={}),i.variables[a]=s[a],i),{}),n=s.baseUrl||r.endpoint.DEFAULTS.baseUrl;return si.test(n)&&(o.url=n.replace(si,"/api/graphql")),r(o).then(i=>{if(i.data.errors){let a={};for(let c of Object.keys(i.headers))a[c]=i.headers[c];throw new Iu(o,a,i.data)}return i.data.data})}function Br(r,e){let t=r.defaults(e);return Object.assign((o,n)=>Uu(t,o,n),{defaults:Br.bind(null,t),endpoint:t.endpoint})}function ri(r){return Br(r,{method:"POST",url:"/graphql"})}var $u,Iu,Fu,xu,si,Nd,oi=C(()=>{qr();zt();$u="0.0.0-development";Iu=class extends Error{constructor(r,e,t){super(Du(t)),this.request=r,this.headers=e,this.response=t,this.errors=t.errors,this.data=t.data,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}name="GraphqlResponseError";errors;data},Fu=["method","baseUrl","url","headers","request","query","mediaType","operationName"],xu=["query","method","url"],si=/\/api\/v3\/?$/;Nd=Br(Qt,{headers:{"user-agent":`octokit-graphql.js/${$u} ${it()}`},method:"POST",url:"/graphql"})});async function Lu(r){let e=Mu(r),t=r.startsWith("v1.")||r.startsWith("ghs_"),s=r.startsWith("ghu_");return{type:"token",token:r,tokenType:e?"app":t?"installation":s?"user-to-server":"oauth"}}function ju(r){return r.split(/\./).length===3?`bearer ${r}`:`token ${r}`}async function Nu(r,e,t,s){let o=e.endpoint.merge(t,s);return o.headers.authorization=ju(r),e(o)}var Vr,ni,ii,Mu,ai,ci=C(()=>{Vr="(?:[a-zA-Z0-9_-]+)",ni="\\.",ii=new RegExp(`^${Vr}${ni}${Vr}${ni}${Vr}$`),Mu=ii.test.bind(ii);ai=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(Lu.bind(null,e),{hook:Nu.bind(null,e)})}});var Wr,ui=C(()=>{Wr="7.0.6"});function Bu(r={}){return typeof r.debug!="function"&&(r.debug=li),typeof r.info!="function"&&(r.info=li),typeof r.warn!="function"&&(r.warn=Hu),typeof r.error!="function"&&(r.error=qu),r}var li,Hu,qu,pi,Ps,di=C(()=>{zt();$n();qr();oi();ci();ui();li=()=>{},Hu=console.warn.bind(console),qu=console.error.bind(console);pi=`octokit-core.js/${Wr} ${it()}`,Ps=class{static VERSION=Wr;static defaults(e){return class extends this{constructor(...s){let o=s[0]||{};if(typeof e=="function"){super(e(o));return}super(Object.assign({},e,o,o.userAgent&&e.userAgent?{userAgent:`${o.userAgent} ${e.userAgent}`}:null))}}}static plugins=[];static plugin(...e){let t=this.plugins;return class extends this{static plugins=t.concat(e.filter(o=>!t.includes(o)))}}constructor(e={}){let t=new Gn.Collection,s={baseUrl:Qt.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},e.request,{hook:t.bind(null,"request")}),mediaType:{previews:[],format:""}};if(s.headers["user-agent"]=e.userAgent?`${e.userAgent} ${pi}`:pi,e.baseUrl&&(s.baseUrl=e.baseUrl),e.previews&&(s.mediaType.previews=e.previews),e.timeZone&&(s.headers["time-zone"]=e.timeZone),this.request=Qt.defaults(s),this.graphql=ri(this.request).defaults(s),this.log=Bu(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=ai(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 gi,mi=C(()=>{gi="6.0.0"});function zr(r){r.hook.wrap("request",(e,t)=>{r.log.debug("request",t);let s=Date.now(),o=r.request.endpoint.parse(t),n=o.url.replace(t.baseUrl,"");return e(t).then(i=>{let a=i.headers["x-github-request-id"];return r.log.info(`${o.method} ${n} - ${i.status} with id ${a} in ${Date.now()-s}ms`),i}).catch(i=>{let a=i.response?.headers["x-github-request-id"]||"UNKNOWN";throw r.log.error(`${o.method} ${n} - ${i.status} with id ${a} in ${Date.now()-s}ms`),i})})}var hi=C(()=>{mi();zr.VERSION=gi});function Wu(r){if(!r.data)return{...r,data:[]};if(!(("total_count"in r.data||"total_commits"in r.data)&&!("url"in r.data)))return r;let t=r.data.incomplete_results,s=r.data.repository_selection,o=r.data.total_count,n=r.data.total_commits;delete r.data.incomplete_results,delete r.data.repository_selection,delete r.data.total_count,delete r.data.total_commits;let i=Object.keys(r.data)[0],a=r.data[i];return r.data=a,typeof t<"u"&&(r.data.incomplete_results=t),typeof s<"u"&&(r.data.repository_selection=s),r.data.total_count=o,r.data.total_commits=n,r}function Jr(r,e,t){let s=typeof e=="function"?e.endpoint(t):r.request.endpoint(e,t),o=typeof e=="function"?e:r.request,n=s.method,i=s.headers,a=s.url;return{[Symbol.asyncIterator]:()=>({async next(){if(!a)return{done:!0};try{let c=await o({method:n,url:a,headers:i}),u=Wu(c);if(a=((u.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!a&&"total_commits"in u.data){let l=new URL(u.url),d=l.searchParams,g=parseInt(d.get("page")||"1",10),T=parseInt(d.get("per_page")||"250",10);g*T<u.data.total_commits&&(d.set("page",String(g+1)),a=l.toString())}return{value:u}}catch(c){if(c.status!==409)throw c;return a="",{value:{status:200,headers:{},data:[]}}}}})}}function fi(r,e,t,s){return typeof t=="function"&&(s=t,t=void 0),bi(r,[],Jr(r,e,t)[Symbol.asyncIterator](),s)}function bi(r,e,t,s){return t.next().then(o=>{if(o.done)return e;let n=!1;function i(){n=!0}return e=e.concat(s?s(o.value,i):o.value.data),n?e:bi(r,e,t,s)})}function Kr(r){return{paginate:Object.assign(fi.bind(null,r),{iterator:Jr.bind(null,r)})}}var Vu,og,yi=C(()=>{Vu="0.0.0-development";og=Object.assign(fi,{iterator:Jr});Kr.VERSION=Vu});var Qr,_i=C(()=>{Qr="17.0.0"});var zu,Ri,wi=C(()=>{zu={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"]}},Ri=zu});function Yr(r){let e={};for(let t of _t.keys())e[t]=new Proxy({octokit:r,scope:t,cache:{}},Ju);return e}function Ku(r,e,t,s,o){let n=r.request.defaults(s);function i(...a){let c=n.endpoint.merge(...a);if(o.mapToData)return c=Object.assign({},c,{data:c[o.mapToData],[o.mapToData]:void 0}),n(c);if(o.renamed){let[u,l]=o.renamed;r.log.warn(`octokit.${e}.${t}() has been renamed to octokit.${u}.${l}()`)}if(o.deprecated&&r.log.warn(o.deprecated),o.renamedParameters){let u=n.endpoint.merge(...a);for(let[l,d]of Object.entries(o.renamedParameters))l in u&&(r.log.warn(`"${l}" parameter is deprecated for "octokit.${e}.${t}()". Use "${d}" instead`),d in u||(u[d]=u[l]),delete u[l]);return n(u)}return n(...a)}return Object.assign(i,n)}var _t,Ju,Ei=C(()=>{wi();_t=new Map;for(let[r,e]of Object.entries(Ri))for(let[t,s]of Object.entries(e)){let[o,n,i]=s,[a,c]=o.split(/ /),u=Object.assign({method:a,url:c},n);_t.has(r)||_t.set(r,new Map),_t.get(r).set(t,{scope:r,methodName:t,endpointDefaults:u,decorations:i})}Ju={has({scope:r},e){return _t.get(r).has(e)},getOwnPropertyDescriptor(r,e){return{value:this.get(r,e),configurable:!0,writable:!0,enumerable:!0}},defineProperty(r,e,t){return Object.defineProperty(r.cache,e,t),!0},deleteProperty(r,e){return delete r.cache[e],!0},ownKeys({scope:r}){return[..._t.get(r).keys()]},set(r,e,t){return r.cache[e]=t},get({octokit:r,scope:e,cache:t},s){if(t[s])return t[s];let o=_t.get(e).get(s);if(!o)return;let{endpointDefaults:n,decorations:i}=o;return i?t[s]=Ku(r,e,s,n,i):t[s]=r.request.defaults(n),t[s]}}});function Qu(r){return{rest:Yr(r)}}function Xr(r){let e=Yr(r);return{...e,rest:e}}var Ti=C(()=>{_i();Ei();Qu.VERSION=Qr;Xr.VERSION=Qr});var vi,Si=C(()=>{vi="22.0.1"});var Pi,Ci=C(()=>{di();hi();yi();Ti();Si();Pi=Ps.plugin(zr,Xr,Kr).defaults({userAgent:`octokit-rest.js/${vi}`})});var ki=ze((Zr,eo)=>{(function(r,e){typeof Zr=="object"&&typeof eo<"u"?eo.exports=e():typeof define=="function"&&define.amd?define(e):r.Bottleneck=e()})(Zr,(function(){"use strict";var r=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function e(I){return I&&I.default||I}var t=function(I,f,p={}){var b,y,R;for(b in f)R=f[b],p[b]=(y=I[b])!=null?y:R;return p},s=function(I,f,p={}){var b,y;for(b in I)y=I[b],f[b]!==void 0&&(p[b]=y);return p},o={load:t,overwrite:s},n;n=class{constructor(f,p){this.incr=f,this.decr=p,this._first=null,this._last=null,this.length=0}push(f){var p;this.length++,typeof this.incr=="function"&&this.incr(),p={value:f,prev:this._last,next:null},this._last!=null?(this._last.next=p,this._last=p):this._first=this._last=p}shift(){var f;if(this._first!=null)return this.length--,typeof this.decr=="function"&&this.decr(),f=this._first.value,(this._first=this._first.next)!=null?this._first.prev=null:this._last=null,f}first(){if(this._first!=null)return this._first.value}getArray(){var f,p,b;for(f=this._first,b=[];f!=null;)b.push((p=f,f=f.next,p.value));return b}forEachShift(f){var p;for(p=this.shift();p!=null;)f(p),p=this.shift()}debug(){var f,p,b,y,R;for(f=this._first,R=[];f!=null;)R.push((p=f,f=f.next,{value:p.value,prev:(b=p.prev)!=null?b.value:void 0,next:(y=p.next)!=null?y.value:void 0}));return R}};var i=n,a;a=class{constructor(f){if(this.instance=f,this._events={},this.instance.on!=null||this.instance.once!=null||this.instance.removeAllListeners!=null)throw new Error("An Emitter already exists for this object");this.instance.on=(p,b)=>this._addListener(p,"many",b),this.instance.once=(p,b)=>this._addListener(p,"once",b),this.instance.removeAllListeners=(p=null)=>p!=null?delete this._events[p]:this._events={}}_addListener(f,p,b){var y;return(y=this._events)[f]==null&&(y[f]=[]),this._events[f].push({cb:b,status:p}),this.instance}listenerCount(f){return this._events[f]!=null?this._events[f].length:0}async trigger(f,...p){var b,y;try{return f!=="debug"&&this.trigger("debug",`Event triggered: ${f}`,p),this._events[f]==null?void 0:(this._events[f]=this._events[f].filter(function(R){return R.status!=="none"}),y=this._events[f].map(async R=>{var v,$;if(R.status!=="none"){R.status==="once"&&(R.status="none");try{return $=typeof R.cb=="function"?R.cb(...p):void 0,typeof $?.then=="function"?await $:$}catch(J){return v=J,this.trigger("error",v),null}}}),(await Promise.all(y)).find(function(R){return R!=null}))}catch(R){return b=R,this.trigger("error",b),null}}};var c=a,u,l,d;u=i,l=c,d=class{constructor(f){var p;this.Events=new l(this),this._length=0,this._lists=(function(){var b,y,R;for(R=[],p=b=1,y=f;1<=y?b<=y:b>=y;p=1<=y?++b:--b)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(f){return this._lists[f.options.priority].push(f)}queued(f){return f!=null?this._lists[f].length:this._length}shiftAll(f){return this._lists.forEach(function(p){return p.forEachShift(f)})}getFirst(f=this._lists){var p,b,y;for(p=0,b=f.length;p<b;p++)if(y=f[p],y.length>0)return y;return[]}shiftLastFrom(f){return this.getFirst(this._lists.slice(f).reverse()).shift()}};var g=d,T;T=class extends Error{};var _=T,w,P,h,O,G;O=10,P=5,G=o,w=_,h=class{constructor(f,p,b,y,R,v,$,J){this.task=f,this.args=p,this.rejectOnDrop=R,this.Events=v,this._states=$,this.Promise=J,this.options=G.load(b,y),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===y.id&&(this.options.id=`${this.options.id}-${this._randomIndex()}`),this.promise=new this.Promise((fe,we)=>{this._resolve=fe,this._reject=we}),this.retryCount=0}_sanitizePriority(f){var p;return p=~~f!==f?P:f,p<0?0:p>O-1?O-1:p}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:f,message:p="This job has been dropped by Bottleneck"}={}){return this._states.remove(this.options.id)?(this.rejectOnDrop&&this._reject(f??new w(p)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0):!1}_assertStatus(f){var p;if(p=this._states.jobStatus(this.options.id),!(p===f||f==="DONE"&&p===null))throw new w(`Invalid job status ${p}, expected ${f}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`)}doReceive(){return this._states.start(this.options.id),this.Events.trigger("received",{args:this.args,options:this.options})}doQueue(f,p){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:f,blocked:p})}doRun(){return this.retryCount===0?(this._assertStatus("QUEUED"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),this.Events.trigger("scheduled",{args:this.args,options:this.options})}async doExecute(f,p,b,y){var R,v,$;this.retryCount===0?(this._assertStatus("RUNNING"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),v={args:this.args,options:this.options,retryCount:this.retryCount},this.Events.trigger("executing",v);try{if($=await(f!=null?f.schedule(this.options,this.task,...this.args):this.task(...this.args)),p())return this.doDone(v),await y(this.options,v),this._assertStatus("DONE"),this._resolve($)}catch(J){return R=J,this._onFailure(R,v,p,b,y)}}doExpire(f,p,b){var y,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},y=new w(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(y,R,f,p,b)}async _onFailure(f,p,b,y,R){var v,$;if(b())return v=await this.Events.trigger("failed",f,p),v!=null?($=~~v,this.Events.trigger("retry",`Retrying ${this.options.id} after ${$} ms`,p),this.retryCount++,y($)):(this.doDone(p),await R(this.options,p),this._assertStatus("DONE"),this._reject(f))}doDone(f){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",f)}};var N=h,M,k,A;A=o,M=_,k=class{constructor(f,p,b){this.instance=f,this.storeOptions=p,this.clientId=this.instance._randomIndex(),A.load(b,b,this),this._nextRequest=this._lastReservoirRefresh=this._lastReservoirIncrease=Date.now(),this._running=0,this._done=0,this._unblockTime=0,this.ready=this.Promise.resolve(),this.clients={},this._startHeartbeat()}_startHeartbeat(){var f;return this.heartbeat==null&&(this.storeOptions.reservoirRefreshInterval!=null&&this.storeOptions.reservoirRefreshAmount!=null||this.storeOptions.reservoirIncreaseInterval!=null&&this.storeOptions.reservoirIncreaseAmount!=null)?typeof(f=this.heartbeat=setInterval(()=>{var p,b,y,R,v;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:p,reservoirIncreaseMaximum:y,reservoir:v}=this.storeOptions,this._lastReservoirIncrease=R,b=y!=null?Math.min(p,y-v):p,b>0))return this.storeOptions.reservoir+=b,this.instance._drainAll(this.computeCapacity())},this.heartbeatInterval)).unref=="function"?f.unref():void 0:clearInterval(this.heartbeat)}async __publish__(f){return await this.yieldLoop(),this.instance.Events.trigger("message",f.toString())}async __disconnect__(f){return await this.yieldLoop(),clearInterval(this.heartbeat),this.Promise.resolve()}yieldLoop(f=0){return new this.Promise(function(p,b){return setTimeout(p,f)})}computePenalty(){var f;return(f=this.storeOptions.penalty)!=null?f:15*this.storeOptions.minTime||5e3}async __updateSettings__(f){return await this.yieldLoop(),A.overwrite(f,f,this.storeOptions),this._startHeartbeat(),this.instance._drainAll(this.computeCapacity()),!0}async __running__(){return await this.yieldLoop(),this._running}async __queued__(){return await this.yieldLoop(),this.instance.queued()}async __done__(){return await this.yieldLoop(),this._done}async __groupCheck__(f){return await this.yieldLoop(),this._nextRequest+this.timeout<f}computeCapacity(){var f,p;return{maxConcurrent:f,reservoir:p}=this.storeOptions,f!=null&&p!=null?Math.min(f-this._running,p):f!=null?f-this._running:p??null}conditionsCheck(f){var p;return p=this.computeCapacity(),p==null||f<=p}async __incrementReservoir__(f){var p;return await this.yieldLoop(),p=this.storeOptions.reservoir+=f,this.instance._drainAll(this.computeCapacity()),p}async __currentReservoir__(){return await this.yieldLoop(),this.storeOptions.reservoir}isBlocked(f){return this._unblockTime>=f}check(f,p){return this.conditionsCheck(f)&&this._nextRequest-p<=0}async __check__(f){var p;return await this.yieldLoop(),p=Date.now(),this.check(f,p)}async __register__(f,p,b){var y,R;return await this.yieldLoop(),y=Date.now(),this.conditionsCheck(p)?(this._running+=p,this.storeOptions.reservoir!=null&&(this.storeOptions.reservoir-=p),R=Math.max(this._nextRequest-y,0),this._nextRequest=y+R+this.storeOptions.minTime,{success:!0,wait:R,reservoir:this.storeOptions.reservoir}):{success:!1}}strategyIsBlock(){return this.storeOptions.strategy===3}async __submit__(f,p){var b,y,R;if(await this.yieldLoop(),this.storeOptions.maxConcurrent!=null&&p>this.storeOptions.maxConcurrent)throw new M(`Impossible to add a job having a weight of ${p} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);return y=Date.now(),R=this.storeOptions.highWater!=null&&f===this.storeOptions.highWater&&!this.check(p,y),b=this.strategyIsBlock()&&(R||this.isBlocked(y)),b&&(this._unblockTime=y+this.computePenalty(),this._nextRequest=this._unblockTime+this.storeOptions.minTime,this.instance._dropAllQueued()),{reachedHWM:R,blocked:b,strategy:this.storeOptions.strategy}}async __free__(f,p){return await this.yieldLoop(),this._running-=p,this._done+=p,this.instance._drainAll(this.computeCapacity()),{running:this._running}}};var U=k,H,ue;H=_,ue=class{constructor(f){this.status=f,this._jobs={},this.counts=this.status.map(function(){return 0})}next(f){var p,b;if(p=this._jobs[f],b=p+1,p!=null&&b<this.status.length)return this.counts[p]--,this.counts[b]++,this._jobs[f]++;if(p!=null)return this.counts[p]--,delete this._jobs[f]}start(f){var p;return p=0,this._jobs[f]=p,this.counts[p]++}remove(f){var p;return p=this._jobs[f],p!=null&&(this.counts[p]--,delete this._jobs[f]),p!=null}jobStatus(f){var p;return(p=this.status[this._jobs[f]])!=null?p:null}statusJobs(f){var p,b,y,R,v;if(f!=null){if(b=this.status.indexOf(f),b<0)throw new H(`status must be one of ${this.status.join(", ")}`);y=this._jobs,R=[];for(p in y)v=y[p],v===b&&R.push(p);return R}else return Object.keys(this._jobs)}statusCounts(){return this.counts.reduce(((f,p,b)=>(f[this.status[b]]=p,f)),{})}};var he=ue,D,ie;D=i,ie=class{constructor(f,p){this.schedule=this.schedule.bind(this),this.name=f,this.Promise=p,this._running=0,this._queue=new D}isEmpty(){return this._queue.length===0}async _tryToRun(){var f,p,b,y,R,v,$;if(this._running<1&&this._queue.length>0)return this._running++,{task:$,args:f,resolve:R,reject:y}=this._queue.shift(),p=await(async function(){try{return v=await $(...f),function(){return R(v)}}catch(J){return b=J,function(){return y(b)}}})(),this._running--,this._tryToRun(),p()}schedule(f,...p){var b,y,R;return R=y=null,b=new this.Promise(function(v,$){return R=v,y=$}),this._queue.push({task:f,args:p,resolve:R,reject:y}),this._tryToRun(),b}};var Ve=ie,Te="2.19.5",Ge={version:Te},Pe=Object.freeze({version:Te,default:Ge}),L=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),B=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),re=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),q,V,ee,Ie,st,We;We=o,q=c,Ie=L,ee=B,st=re,V=(function(){class I{constructor(p={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=p,We.load(this.limiterOptions,this.defaults,this),this.Events=new q(this),this.instances={},this.Bottleneck=en,this._startAutoCleanup(),this.sharedConnection=this.connection!=null,this.connection==null&&(this.limiterOptions.datastore==="redis"?this.connection=new Ie(Object.assign({},this.limiterOptions,{Events:this.Events})):this.limiterOptions.datastore==="ioredis"&&(this.connection=new ee(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(p=""){var b;return(b=this.instances[p])!=null?b:(()=>{var y;return y=this.instances[p]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${p}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",y,p),y})()}async deleteKey(p=""){var b,y;return y=this.instances[p],this.connection&&(b=await this.connection.__runCommand__(["del",...st.allKeys(`${this.id}-${p}`)])),y!=null&&(delete this.instances[p],await y.disconnect()),y!=null||b>0}limiters(){var p,b,y,R;b=this.instances,y=[];for(p in b)R=b[p],y.push({key:p,limiter:R});return y}keys(){return Object.keys(this.instances)}async clusterKeys(){var p,b,y,R,v,$,J,fe,we;if(this.connection==null)return this.Promise.resolve(this.keys());for($=[],p=null,we=`b_${this.id}-`.length,b=9;p!==0;)for([fe,y]=await this.connection.__runCommand__(["scan",p??0,"match",`b_${this.id}-*_settings`,"count",1e4]),p=~~fe,R=0,J=y.length;R<J;R++)v=y[R],$.push(v.slice(we,-b));return $}_startAutoCleanup(){var p;return clearInterval(this.interval),typeof(p=this.interval=setInterval(async()=>{var b,y,R,v,$,J;$=Date.now(),R=this.instances,v=[];for(y in R){J=R[y];try{await J._store.__groupCheck__($)?v.push(this.deleteKey(y)):v.push(void 0)}catch(fe){b=fe,v.push(J.Events.trigger("error",b))}}return v},this.timeout/2)).unref=="function"?p.unref():void 0}updateSettings(p={}){if(We.overwrite(p,this.defaults,this),We.overwrite(p,p,this.limiterOptions),p.timeout!=null)return this._startAutoCleanup()}disconnect(p=!0){var b;if(!this.sharedConnection)return(b=this.connection)!=null?b.disconnect(p):void 0}}return I.prototype.defaults={timeout:1e3*60*5,connection:null,Promise,id:"group-key"},I}).call(r);var ur=V,Bo,Vo,Wo;Wo=o,Vo=c,Bo=(function(){class I{constructor(p={}){this.options=p,Wo.load(this.options,this.defaults,this),this.Events=new Vo(this),this._arr=[],this._resetPromise(),this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise((p,b)=>this._resolve=p)}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(p){var b;return this._arr.push(p),b=this._promise,this._arr.length===this.maxSize?this._flush():this.maxTime!=null&&this._arr.length===1&&(this._timeout=setTimeout(()=>this._flush(),this.maxTime)),b}}return I.prototype.defaults={maxTime:null,maxSize:null,Promise},I}).call(r);var Ec=Bo,Tc=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),vc=e(Pe),zo,Jo,lr,pr,Ko,dr,Qo,Yo,Xo,gr,Ne,Zo=[].splice;dr=10,Jo=5,Ne=o,Qo=g,pr=N,Ko=U,Yo=Tc,lr=c,Xo=he,gr=Ve,zo=(function(){class I{constructor(p={},...b){var y,R;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(p,b),Ne.load(p,this.instanceDefaults,this),this._queues=new Qo(dr),this._scheduled={},this._states=new Xo(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new lr(this),this._submitLock=new gr("submit",this.Promise),this._registerLock=new gr("register",this.Promise),R=Ne.load(p,this.storeDefaults,{}),this._store=(function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null)return y=Ne.load(p,this.redisStoreDefaults,{}),new Yo(this,R,y);if(this.datastore==="local")return y=Ne.load(p,this.localStoreDefaults,{}),new Ko(this,R,y);throw new I.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}).call(this),this._queues.on("leftzero",()=>{var v;return(v=this._store.heartbeat)!=null&&typeof v.ref=="function"?v.ref():void 0}),this._queues.on("zero",()=>{var v;return(v=this._store.heartbeat)!=null&&typeof v.unref=="function"?v.unref():void 0})}_validateOptions(p,b){if(!(p!=null&&typeof p=="object"&&b.length===0))throw new I.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(p){return this._store.__publish__(p)}disconnect(p=!0){return this._store.__disconnect__(p)}chain(p){return this._limiter=p,this}queued(p){return this._queues.queued(p)}clusterQueued(){return this._store.__queued__()}empty(){return this.queued()===0&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(p){return this._states.jobStatus(p)}jobs(p){return this._states.statusJobs(p)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(p=1){return this._store.__check__(p)}_clearGlobalState(p){return this._scheduled[p]!=null?(clearTimeout(this._scheduled[p].expiration),delete this._scheduled[p],!0):!1}async _free(p,b,y,R){var v,$;try{if({running:$}=await this._store.__free__(p,y.weight),this.Events.trigger("debug",`Freed ${y.id}`,R),$===0&&this.empty())return this.Events.trigger("idle")}catch(J){return v=J,this.Events.trigger("error",v)}}_run(p,b,y){var R,v,$;return b.doRun(),R=this._clearGlobalState.bind(this,p),$=this._run.bind(this,p,b),v=this._free.bind(this,p,b),this._scheduled[p]={timeout:setTimeout(()=>b.doExecute(this._limiter,R,$,v),y),expiration:b.options.expiration!=null?setTimeout(function(){return b.doExpire(R,$,v)},y+b.options.expiration):void 0,job:b}}_drainOne(p){return this._registerLock.schedule(()=>{var b,y,R,v,$;return this.queued()===0?this.Promise.resolve(null):($=this._queues.getFirst(),{options:v,args:b}=R=$.first(),p!=null&&v.weight>p?this.Promise.resolve(null):(this.Events.trigger("debug",`Draining ${v.id}`,{args:b,options:v}),y=this._randomIndex(),this._store.__register__(y,v.weight,v.expiration).then(({success:J,wait:fe,reservoir:we})=>{var jt;return this.Events.trigger("debug",`Drained ${v.id}`,{success:J,args:b,options:v}),J?($.shift(),jt=this.empty(),jt&&this.Events.trigger("empty"),we===0&&this.Events.trigger("depleted",jt),this._run(y,R,fe),this.Promise.resolve(v.weight)):this.Promise.resolve(null)})))})}_drainAll(p,b=0){return this._drainOne(p).then(y=>{var R;return y!=null?(R=p!=null?p-y:p,this._drainAll(R,b+y)):this.Promise.resolve(b)}).catch(y=>this.Events.trigger("error",y))}_dropAllQueued(p){return this._queues.shiftAll(function(b){return b.doDrop({message:p})})}stop(p={}){var b,y;return p=Ne.load(p,this.stopDefaults),y=R=>{var v;return v=()=>{var $;return $=this._states.counts,$[0]+$[1]+$[2]+$[3]===R},new this.Promise(($,J)=>v()?$():this.on("done",()=>{if(v())return this.removeAllListeners("done"),$()}))},b=p.dropWaitingJobs?(this._run=function(R,v){return v.doDrop({message:p.dropErrorMessage})},this._drainOne=()=>this.Promise.resolve(null),this._registerLock.schedule(()=>this._submitLock.schedule(()=>{var R,v,$;v=this._scheduled;for(R in v)$=v[R],this.jobStatus($.job.options.id)==="RUNNING"&&(clearTimeout($.timeout),clearTimeout($.expiration),$.job.doDrop({message:p.dropErrorMessage}));return this._dropAllQueued(p.dropErrorMessage),y(0)}))):this.schedule({priority:dr-1,weight:0},()=>y(1)),this._receive=function(R){return R._reject(new I.prototype.BottleneckError(p.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new I.prototype.BottleneckError("stop() has already been called")),b}async _addToQueue(p){var b,y,R,v,$,J,fe;({args:b,options:v}=p);try{({reachedHWM:$,blocked:y,strategy:fe}=await this._store.__submit__(this.queued(),v.weight))}catch(we){return R=we,this.Events.trigger("debug",`Could not queue ${v.id}`,{args:b,options:v,error:R}),p.doDrop({error:R}),!1}return y?(p.doDrop(),!0):$&&(J=fe===I.prototype.strategy.LEAK?this._queues.shiftLastFrom(v.priority):fe===I.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(v.priority+1):fe===I.prototype.strategy.OVERFLOW?p:void 0,J?.doDrop(),J==null||fe===I.prototype.strategy.OVERFLOW)?(J==null&&p.doDrop(),$):(p.doQueue($,y),this._queues.push(p),await this._drainAll(),$)}_receive(p){return this._states.jobStatus(p.options.id)!=null?(p._reject(new I.prototype.BottleneckError(`A job with the same id already exists (id=${p.options.id})`)),!1):(p.doReceive(),this._submitLock.schedule(this._addToQueue,p))}submit(...p){var b,y,R,v,$,J,fe;return typeof p[0]=="function"?($=p,[y,...p]=$,[b]=Zo.call(p,-1),v=Ne.load({},this.jobDefaults)):(J=p,[v,y,...p]=J,[b]=Zo.call(p,-1),v=Ne.load(v,this.jobDefaults)),fe=(...we)=>new this.Promise(function(jt,Pc){return y(...we,function(...tn){return(tn[0]!=null?Pc:jt)(tn)})}),R=new pr(fe,p,v,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),R.promise.then(function(we){return typeof b=="function"?b(...we):void 0}).catch(function(we){return Array.isArray(we)?typeof b=="function"?b(...we):void 0:typeof b=="function"?b(we):void 0}),this._receive(R)}schedule(...p){var b,y,R;return typeof p[0]=="function"?([R,...p]=p,y={}):[y,R,...p]=p,b=new pr(R,p,y,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(b),b.promise}wrap(p){var b,y;return b=this.schedule.bind(this),y=function(...R){return b(p.bind(this),...R)},y.withOptions=function(R,...v){return b(R,p,...v)},y}async updateSettings(p={}){return await this._store.__updateSettings__(Ne.overwrite(p,this.storeDefaults)),Ne.overwrite(p,this.instanceDefaults,this),this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(p=0){return this._store.__incrementReservoir__(p)}}return I.default=I,I.Events=lr,I.version=I.prototype.version=vc.version,I.strategy=I.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},I.BottleneckError=I.prototype.BottleneckError=_,I.Group=I.prototype.Group=ur,I.RedisConnection=I.prototype.RedisConnection=L,I.IORedisConnection=I.prototype.IORedisConnection=B,I.Batcher=I.prototype.Batcher=Ec,I.prototype.jobDefaults={priority:Jo,weight:1,expiration:null,id:"<no-id>"},I.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:I.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},I.prototype.localStoreDefaults={Promise,timeout:null,heartbeatInterval:250},I.prototype.redisStoreDefaults={Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},I.prototype.instanceDefaults={datastore:"local",connection:null,id:"<no-id>",rejectOnDrop:!0,trackDoneStatus:!1,Promise},I.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},I}).call(r);var en=zo,Sc=en;return Sc}))});function Xu(r,e,t){return r.retryLimiter.schedule(Zu,r,e,t)}async function Zu(r,e,t){let{pathname:s}=new URL(t.url,"http://github.test"),o=el(t.method,s),n=!o&&t.method!=="GET"&&t.method!=="HEAD",i=t.method==="GET"&&s.startsWith("/search/"),a=s.startsWith("/graphql"),u=~~e.retryCount>0?{priority:0,weight:0}:{};r.clustering&&(u.expiration=1e3*60),(n||a)&&await r.write.key(r.id).schedule(u,to),n&&r.triggersNotification(s)&&await r.notifications.key(r.id).schedule(u,to),i&&await r.search.key(r.id).schedule(u,to);let l=(o?r.auth:r.global).key(r.id).schedule(u,e,t);if(a){let d=await l;if(d.data.errors!=null&&d.data.errors.some(g=>g.type==="RATE_LIMITED"))throw Object.assign(new Error("GraphQL Rate Limit Exceeded"),{response:d,data:d.data})}return l}function el(r,e){return r==="PATCH"&&/^\/applications\/[^/]+\/token\/scoped$/.test(e)||r==="POST"&&(/^\/applications\/[^/]+\/token$/.test(e)||/^\/app\/installations\/[^/]+\/access_tokens$/.test(e)||e==="/login/oauth/access_token")}function sl(r){let t=`^(?:${r.map(s=>s.split("/").map(o=>o.startsWith("{")?"(?:.+?)":o).join("/")).map(s=>`(?:${s})`).join("|")})[^/]*$`;return new RegExp(t,"i")}function Cs(r,e){let{enabled:t=!0,Bottleneck:s=Oi.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),Rt.global==null&&rl(s,a);let c=Object.assign({clustering:i!=null,triggersNotification:Gi,fallbackSecondaryRateRetryAfter:60,retryAfterBaseValue:1e3,retryLimiter:new s,id:o,...Rt},e.throttle);if(typeof c.onSecondaryRateLimit!="function"||typeof c.onRateLimit!="function")throw new Error(`octokit/plugin-throttling error:
|
|
35
|
+
`)}function Hu(r,e,t){if(t){if(typeof e=="string"&&"query"in t)return Promise.reject(new Error('[@octokit/graphql] "query" cannot be used as variable name'));for(let i in t)if(Nu.includes(i))return Promise.reject(new Error(`[@octokit/graphql] "${i}" cannot be used as variable name`))}let s=typeof e=="string"?Object.assign({query:e},t):e,o=Object.keys(s).reduce((i,a)=>ju.includes(a)?(i[a]=s[a],i):(i.variables||(i.variables={}),i.variables[a]=s[a],i),{}),n=s.baseUrl||r.endpoint.DEFAULTS.baseUrl;return ii.test(n)&&(o.url=n.replace(ii,"/api/graphql")),r(o).then(i=>{if(i.data.errors){let a={};for(let c of Object.keys(i.headers))a[c]=i.headers[c];throw new Lu(o,a,i.data)}return i.data.data})}function Qr(r,e){let t=r.defaults(e);return Object.assign((o,n)=>Hu(t,o,n),{defaults:Qr.bind(null,t),endpoint:t.endpoint})}function ai(r){return Qr(r,{method:"POST",url:"/graphql"})}var Uu,Lu,ju,Nu,ii,Jd,ci=k(()=>{Kr();es();Uu="0.0.0-development";Lu=class extends Error{constructor(r,e,t){super(Mu(t)),this.request=r,this.headers=e,this.response=t,this.errors=t.errors,this.data=t.data,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}name="GraphqlResponseError";errors;data},ju=["method","baseUrl","url","headers","request","query","mediaType","operationName"],Nu=["query","method","url"],ii=/\/api\/v3\/?$/;Jd=Qr(rs,{headers:{"user-agent":`octokit-graphql.js/${Uu} ${pt()}`},method:"POST",url:"/graphql"})});async function Bu(r){let e=qu(r),t=r.startsWith("v1.")||r.startsWith("ghs_"),s=r.startsWith("ghu_");return{type:"token",token:r,tokenType:e?"app":t?"installation":s?"user-to-server":"oauth"}}function Vu(r){return r.split(/\./).length===3?`bearer ${r}`:`token ${r}`}async function Wu(r,e,t,s){let o=e.endpoint.merge(t,s);return o.headers.authorization=Vu(r),e(o)}var Yr,ui,li,qu,pi,di=k(()=>{Yr="(?:[a-zA-Z0-9_-]+)",ui="\\.",li=new RegExp(`^${Yr}${ui}${Yr}${ui}${Yr}$`),qu=li.test.bind(li);pi=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(Bu.bind(null,e),{hook:Wu.bind(null,e)})}});var Xr,gi=k(()=>{Xr="7.0.6"});function Ku(r={}){return typeof r.debug!="function"&&(r.debug=mi),typeof r.info!="function"&&(r.info=mi),typeof r.warn!="function"&&(r.warn=zu),typeof r.error!="function"&&(r.error=Ju),r}var mi,zu,Ju,hi,$s,fi=k(()=>{es();xn();Kr();ci();di();gi();mi=()=>{},zu=console.warn.bind(console),Ju=console.error.bind(console);hi=`octokit-core.js/${Xr} ${pt()}`,$s=class{static VERSION=Xr;static defaults(e){return class extends this{constructor(...s){let o=s[0]||{};if(typeof e=="function"){super(e(o));return}super(Object.assign({},e,o,o.userAgent&&e.userAgent?{userAgent:`${o.userAgent} ${e.userAgent}`}:null))}}}static plugins=[];static plugin(...e){let t=this.plugins;return class extends this{static plugins=t.concat(e.filter(o=>!t.includes(o)))}}constructor(e={}){let t=new Fn.Collection,s={baseUrl:rs.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},e.request,{hook:t.bind(null,"request")}),mediaType:{previews:[],format:""}};if(s.headers["user-agent"]=e.userAgent?`${e.userAgent} ${hi}`:hi,e.baseUrl&&(s.baseUrl=e.baseUrl),e.previews&&(s.mediaType.previews=e.previews),e.timeZone&&(s.headers["time-zone"]=e.timeZone),this.request=rs.defaults(s),this.graphql=ai(this.request).defaults(s),this.log=Ku(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=pi(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 bi,yi=k(()=>{bi="6.0.0"});function Zr(r){r.hook.wrap("request",(e,t)=>{r.log.debug("request",t);let s=Date.now(),o=r.request.endpoint.parse(t),n=o.url.replace(t.baseUrl,"");return e(t).then(i=>{let a=i.headers["x-github-request-id"];return r.log.info(`${o.method} ${n} - ${i.status} with id ${a} in ${Date.now()-s}ms`),i}).catch(i=>{let a=i.response?.headers["x-github-request-id"]||"UNKNOWN";throw r.log.error(`${o.method} ${n} - ${i.status} with id ${a} in ${Date.now()-s}ms`),i})})}var _i=k(()=>{yi();Zr.VERSION=bi});function Yu(r){if(!r.data)return{...r,data:[]};if(!(("total_count"in r.data||"total_commits"in r.data)&&!("url"in r.data)))return r;let t=r.data.incomplete_results,s=r.data.repository_selection,o=r.data.total_count,n=r.data.total_commits;delete r.data.incomplete_results,delete r.data.repository_selection,delete r.data.total_count,delete r.data.total_commits;let i=Object.keys(r.data)[0],a=r.data[i];return r.data=a,typeof t<"u"&&(r.data.incomplete_results=t),typeof s<"u"&&(r.data.repository_selection=s),r.data.total_count=o,r.data.total_commits=n,r}function eo(r,e,t){let s=typeof e=="function"?e.endpoint(t):r.request.endpoint(e,t),o=typeof e=="function"?e:r.request,n=s.method,i=s.headers,a=s.url;return{[Symbol.asyncIterator]:()=>({async next(){if(!a)return{done:!0};try{let c=await o({method:n,url:a,headers:i}),u=Yu(c);if(a=((u.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!a&&"total_commits"in u.data){let l=new URL(u.url),d=l.searchParams,g=parseInt(d.get("page")||"1",10),E=parseInt(d.get("per_page")||"250",10);g*E<u.data.total_commits&&(d.set("page",String(g+1)),a=l.toString())}return{value:u}}catch(c){if(c.status!==409)throw c;return a="",{value:{status:200,headers:{},data:[]}}}}})}}function Ri(r,e,t,s){return typeof t=="function"&&(s=t,t=void 0),wi(r,[],eo(r,e,t)[Symbol.asyncIterator](),s)}function wi(r,e,t,s){return t.next().then(o=>{if(o.done)return e;let n=!1;function i(){n=!0}return e=e.concat(s?s(o.value,i):o.value.data),n?e:wi(r,e,t,s)})}function to(r){return{paginate:Object.assign(Ri.bind(null,r),{iterator:eo.bind(null,r)})}}var Qu,pg,Ei=k(()=>{Qu="0.0.0-development";pg=Object.assign(Ri,{iterator:eo});to.VERSION=Qu});var so,Ti=k(()=>{so="17.0.0"});var Xu,vi,Si=k(()=>{Xu={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"]}},vi=Xu});function ro(r){let e={};for(let t of Et.keys())e[t]=new Proxy({octokit:r,scope:t,cache:{}},Zu);return e}function el(r,e,t,s,o){let n=r.request.defaults(s);function i(...a){let c=n.endpoint.merge(...a);if(o.mapToData)return c=Object.assign({},c,{data:c[o.mapToData],[o.mapToData]:void 0}),n(c);if(o.renamed){let[u,l]=o.renamed;r.log.warn(`octokit.${e}.${t}() has been renamed to octokit.${u}.${l}()`)}if(o.deprecated&&r.log.warn(o.deprecated),o.renamedParameters){let u=n.endpoint.merge(...a);for(let[l,d]of Object.entries(o.renamedParameters))l in u&&(r.log.warn(`"${l}" parameter is deprecated for "octokit.${e}.${t}()". Use "${d}" instead`),d in u||(u[d]=u[l]),delete u[l]);return n(u)}return n(...a)}return Object.assign(i,n)}var Et,Zu,Pi=k(()=>{Si();Et=new Map;for(let[r,e]of Object.entries(vi))for(let[t,s]of Object.entries(e)){let[o,n,i]=s,[a,c]=o.split(/ /),u=Object.assign({method:a,url:c},n);Et.has(r)||Et.set(r,new Map),Et.get(r).set(t,{scope:r,methodName:t,endpointDefaults:u,decorations:i})}Zu={has({scope:r},e){return Et.get(r).has(e)},getOwnPropertyDescriptor(r,e){return{value:this.get(r,e),configurable:!0,writable:!0,enumerable:!0}},defineProperty(r,e,t){return Object.defineProperty(r.cache,e,t),!0},deleteProperty(r,e){return delete r.cache[e],!0},ownKeys({scope:r}){return[...Et.get(r).keys()]},set(r,e,t){return r.cache[e]=t},get({octokit:r,scope:e,cache:t},s){if(t[s])return t[s];let o=Et.get(e).get(s);if(!o)return;let{endpointDefaults:n,decorations:i}=o;return i?t[s]=el(r,e,s,n,i):t[s]=r.request.defaults(n),t[s]}}});function tl(r){return{rest:ro(r)}}function oo(r){let e=ro(r);return{...e,rest:e}}var Ci=k(()=>{Ti();Pi();tl.VERSION=so;oo.VERSION=so});var ki,Ai=k(()=>{ki="22.0.1"});var Oi,Gi=k(()=>{fi();_i();Ei();Ci();Ai();Oi=$s.plugin(Zr,oo,to).defaults({userAgent:`octokit-rest.js/${ki}`})});var $i=Ke((no,io)=>{(function(r,e){typeof no=="object"&&typeof io<"u"?io.exports=e():typeof define=="function"&&define.amd?define(e):r.Bottleneck=e()})(no,(function(){"use strict";var r=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function e(U){return U&&U.default||U}var t=function(U,h,p={}){var f,y,R;for(f in h)R=h[f],p[f]=(y=U[f])!=null?y:R;return p},s=function(U,h,p={}){var f,y;for(f in U)y=U[f],h[f]!==void 0&&(p[f]=y);return p},o={load:t,overwrite:s},n;n=class{constructor(h,p){this.incr=h,this.decr=p,this._first=null,this._last=null,this.length=0}push(h){var p;this.length++,typeof this.incr=="function"&&this.incr(),p={value:h,prev:this._last,next:null},this._last!=null?(this._last.next=p,this._last=p):this._first=this._last=p}shift(){var h;if(this._first!=null)return this.length--,typeof this.decr=="function"&&this.decr(),h=this._first.value,(this._first=this._first.next)!=null?this._first.prev=null:this._last=null,h}first(){if(this._first!=null)return this._first.value}getArray(){var h,p,f;for(h=this._first,f=[];h!=null;)f.push((p=h,h=h.next,p.value));return f}forEachShift(h){var p;for(p=this.shift();p!=null;)h(p),p=this.shift()}debug(){var h,p,f,y,R;for(h=this._first,R=[];h!=null;)R.push((p=h,h=h.next,{value:p.value,prev:(f=p.prev)!=null?f.value:void 0,next:(y=p.next)!=null?y.value:void 0}));return 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=(p,f)=>this._addListener(p,"many",f),this.instance.once=(p,f)=>this._addListener(p,"once",f),this.instance.removeAllListeners=(p=null)=>p!=null?delete this._events[p]:this._events={}}_addListener(h,p,f){var y;return(y=this._events)[h]==null&&(y[h]=[]),this._events[h].push({cb:f,status:p}),this.instance}listenerCount(h){return this._events[h]!=null?this._events[h].length:0}async trigger(h,...p){var f,y;try{return h!=="debug"&&this.trigger("debug",`Event triggered: ${h}`,p),this._events[h]==null?void 0:(this._events[h]=this._events[h].filter(function(R){return R.status!=="none"}),y=this._events[h].map(async R=>{var S,$;if(R.status!=="none"){R.status==="once"&&(R.status="none");try{return $=typeof R.cb=="function"?R.cb(...p):void 0,typeof $?.then=="function"?await $:$}catch(J){return S=J,this.trigger("error",S),null}}}),(await Promise.all(y)).find(function(R){return R!=null}))}catch(R){return f=R,this.trigger("error",f),null}}};var c=a,u,l,d;u=i,l=c,d=class{constructor(h){var p;this.Events=new l(this),this._length=0,this._lists=(function(){var f,y,R;for(R=[],p=f=1,y=h;1<=y?f<=y:f>=y;p=1<=y?++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(p){return p.forEachShift(h)})}getFirst(h=this._lists){var p,f,y;for(p=0,f=h.length;p<f;p++)if(y=h[p],y.length>0)return y;return[]}shiftLastFrom(h){return this.getFirst(this._lists.slice(h).reverse()).shift()}};var g=d,E;E=class extends Error{};var _=E,w,P,b,C,D;C=10,P=5,D=o,w=_,b=class{constructor(h,p,f,y,R,S,$,J){this.task=h,this.args=p,this.rejectOnDrop=R,this.Events=S,this._states=$,this.Promise=J,this.options=D.load(f,y),this.options.priority=this._sanitizePriority(this.options.priority),this.options.id===y.id&&(this.options.id=`${this.options.id}-${this._randomIndex()}`),this.promise=new this.Promise((ye,Ee)=>{this._resolve=ye,this._reject=Ee}),this.retryCount=0}_sanitizePriority(h){var p;return p=~~h!==h?P:h,p<0?0:p>C-1?C-1:p}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:h,message:p="This job has been dropped by Bottleneck"}={}){return this._states.remove(this.options.id)?(this.rejectOnDrop&&this._reject(h??new w(p)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0):!1}_assertStatus(h){var p;if(p=this._states.jobStatus(this.options.id),!(p===h||h==="DONE"&&p===null))throw new w(`Invalid job status ${p}, expected ${h}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`)}doReceive(){return this._states.start(this.options.id),this.Events.trigger("received",{args:this.args,options:this.options})}doQueue(h,p){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:h,blocked:p})}doRun(){return this.retryCount===0?(this._assertStatus("QUEUED"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),this.Events.trigger("scheduled",{args:this.args,options:this.options})}async doExecute(h,p,f,y){var R,S,$;this.retryCount===0?(this._assertStatus("RUNNING"),this._states.next(this.options.id)):this._assertStatus("EXECUTING"),S={args:this.args,options:this.options,retryCount:this.retryCount},this.Events.trigger("executing",S);try{if($=await(h!=null?h.schedule(this.options,this.task,...this.args):this.task(...this.args)),p())return this.doDone(S),await y(this.options,S),this._assertStatus("DONE"),this._resolve($)}catch(J){return R=J,this._onFailure(R,S,p,f,y)}}doExpire(h,p,f){var y,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},y=new w(`This job timed out after ${this.options.expiration} ms.`),this._onFailure(y,R,h,p,f)}async _onFailure(h,p,f,y,R){var S,$;if(f())return S=await this.Events.trigger("failed",h,p),S!=null?($=~~S,this.Events.trigger("retry",`Retrying ${this.options.id} after ${$} ms`,p),this.retryCount++,y($)):(this.doDone(p),await R(this.options,p),this._assertStatus("DONE"),this._reject(h))}doDone(h){return this._assertStatus("EXECUTING"),this._states.next(this.options.id),this.Events.trigger("done",h)}};var N=b,x,O,A;A=o,x=_,O=class{constructor(h,p,f){this.instance=h,this.storeOptions=p,this.clientId=this.instance._randomIndex(),A.load(f,f,this),this._nextRequest=this._lastReservoirRefresh=this._lastReservoirIncrease=Date.now(),this._running=0,this._done=0,this._unblockTime=0,this.ready=this.Promise.resolve(),this.clients={},this._startHeartbeat()}_startHeartbeat(){var h;return this.heartbeat==null&&(this.storeOptions.reservoirRefreshInterval!=null&&this.storeOptions.reservoirRefreshAmount!=null||this.storeOptions.reservoirIncreaseInterval!=null&&this.storeOptions.reservoirIncreaseAmount!=null)?typeof(h=this.heartbeat=setInterval(()=>{var p,f,y,R,S;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:p,reservoirIncreaseMaximum:y,reservoir:S}=this.storeOptions,this._lastReservoirIncrease=R,f=y!=null?Math.min(p,y-S):p,f>0))return this.storeOptions.reservoir+=f,this.instance._drainAll(this.computeCapacity())},this.heartbeatInterval)).unref=="function"?h.unref():void 0:clearInterval(this.heartbeat)}async __publish__(h){return await this.yieldLoop(),this.instance.Events.trigger("message",h.toString())}async __disconnect__(h){return await this.yieldLoop(),clearInterval(this.heartbeat),this.Promise.resolve()}yieldLoop(h=0){return new this.Promise(function(p,f){return setTimeout(p,h)})}computePenalty(){var h;return(h=this.storeOptions.penalty)!=null?h:15*this.storeOptions.minTime||5e3}async __updateSettings__(h){return await this.yieldLoop(),A.overwrite(h,h,this.storeOptions),this._startHeartbeat(),this.instance._drainAll(this.computeCapacity()),!0}async __running__(){return await this.yieldLoop(),this._running}async __queued__(){return await this.yieldLoop(),this.instance.queued()}async __done__(){return await this.yieldLoop(),this._done}async __groupCheck__(h){return await this.yieldLoop(),this._nextRequest+this.timeout<h}computeCapacity(){var h,p;return{maxConcurrent:h,reservoir:p}=this.storeOptions,h!=null&&p!=null?Math.min(h-this._running,p):h!=null?h-this._running:p??null}conditionsCheck(h){var p;return p=this.computeCapacity(),p==null||h<=p}async __incrementReservoir__(h){var p;return await this.yieldLoop(),p=this.storeOptions.reservoir+=h,this.instance._drainAll(this.computeCapacity()),p}async __currentReservoir__(){return await this.yieldLoop(),this.storeOptions.reservoir}isBlocked(h){return this._unblockTime>=h}check(h,p){return this.conditionsCheck(h)&&this._nextRequest-p<=0}async __check__(h){var p;return await this.yieldLoop(),p=Date.now(),this.check(h,p)}async __register__(h,p,f){var y,R;return await this.yieldLoop(),y=Date.now(),this.conditionsCheck(p)?(this._running+=p,this.storeOptions.reservoir!=null&&(this.storeOptions.reservoir-=p),R=Math.max(this._nextRequest-y,0),this._nextRequest=y+R+this.storeOptions.minTime,{success:!0,wait:R,reservoir:this.storeOptions.reservoir}):{success:!1}}strategyIsBlock(){return this.storeOptions.strategy===3}async __submit__(h,p){var f,y,R;if(await this.yieldLoop(),this.storeOptions.maxConcurrent!=null&&p>this.storeOptions.maxConcurrent)throw new x(`Impossible to add a job having a weight of ${p} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`);return y=Date.now(),R=this.storeOptions.highWater!=null&&h===this.storeOptions.highWater&&!this.check(p,y),f=this.strategyIsBlock()&&(R||this.isBlocked(y)),f&&(this._unblockTime=y+this.computePenalty(),this._nextRequest=this._unblockTime+this.storeOptions.minTime,this.instance._dropAllQueued()),{reachedHWM:R,blocked:f,strategy:this.storeOptions.strategy}}async __free__(h,p){return await this.yieldLoop(),this._running-=p,this._done+=p,this.instance._drainAll(this.computeCapacity()),{running:this._running}}};var q=O,j,be;j=_,be=class{constructor(h){this.status=h,this._jobs={},this.counts=this.status.map(function(){return 0})}next(h){var p,f;if(p=this._jobs[h],f=p+1,p!=null&&f<this.status.length)return this.counts[p]--,this.counts[f]++,this._jobs[h]++;if(p!=null)return this.counts[p]--,delete this._jobs[h]}start(h){var p;return p=0,this._jobs[h]=p,this.counts[p]++}remove(h){var p;return p=this._jobs[h],p!=null&&(this.counts[p]--,delete this._jobs[h]),p!=null}jobStatus(h){var p;return(p=this.status[this._jobs[h]])!=null?p:null}statusJobs(h){var p,f,y,R,S;if(h!=null){if(f=this.status.indexOf(h),f<0)throw new j(`status must be one of ${this.status.join(", ")}`);y=this._jobs,R=[];for(p in y)S=y[p],S===f&&R.push(p);return R}else return Object.keys(this._jobs)}statusCounts(){return this.counts.reduce(((h,p,f)=>(h[this.status[f]]=p,h)),{})}};var me=be,G,se;G=i,se=class{constructor(h,p){this.schedule=this.schedule.bind(this),this.name=h,this.Promise=p,this._running=0,this._queue=new G}isEmpty(){return this._queue.length===0}async _tryToRun(){var h,p,f,y,R,S,$;if(this._running<1&&this._queue.length>0)return this._running++,{task:$,args:h,resolve:R,reject:y}=this._queue.shift(),p=await(async function(){try{return S=await $(...h),function(){return R(S)}}catch(J){return f=J,function(){return y(f)}}})(),this._running--,this._tryToRun(),p()}schedule(h,...p){var f,y,R;return R=y=null,f=new this.Promise(function(S,$){return R=S,y=$}),this._queue.push({task:h,args:p,resolve:R,reject:y}),this._tryToRun(),f}};var Fe=se,Ge="2.19.5",ot={version:Ge},$e=Object.freeze({version:Ge,default:ot}),xe=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),qe=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),I=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),F,B,X,le,re,ie;ie=o,F=c,le=xe,X=qe,re=I,B=(function(){class U{constructor(p={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=p,ie.load(this.limiterOptions,this.defaults,this),this.Events=new F(this),this.instances={},this.Bottleneck=on,this._startAutoCleanup(),this.sharedConnection=this.connection!=null,this.connection==null&&(this.limiterOptions.datastore==="redis"?this.connection=new le(Object.assign({},this.limiterOptions,{Events:this.Events})):this.limiterOptions.datastore==="ioredis"&&(this.connection=new X(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(p=""){var f;return(f=this.instances[p])!=null?f:(()=>{var y;return y=this.instances[p]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${p}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",y,p),y})()}async deleteKey(p=""){var f,y;return y=this.instances[p],this.connection&&(f=await this.connection.__runCommand__(["del",...re.allKeys(`${this.id}-${p}`)])),y!=null&&(delete this.instances[p],await y.disconnect()),y!=null||f>0}limiters(){var p,f,y,R;f=this.instances,y=[];for(p in f)R=f[p],y.push({key:p,limiter:R});return y}keys(){return Object.keys(this.instances)}async clusterKeys(){var p,f,y,R,S,$,J,ye,Ee;if(this.connection==null)return this.Promise.resolve(this.keys());for($=[],p=null,Ee=`b_${this.id}-`.length,f=9;p!==0;)for([ye,y]=await this.connection.__runCommand__(["scan",p??0,"match",`b_${this.id}-*_settings`,"count",1e4]),p=~~ye,R=0,J=y.length;R<J;R++)S=y[R],$.push(S.slice(Ee,-f));return $}_startAutoCleanup(){var p;return clearInterval(this.interval),typeof(p=this.interval=setInterval(async()=>{var f,y,R,S,$,J;$=Date.now(),R=this.instances,S=[];for(y in R){J=R[y];try{await J._store.__groupCheck__($)?S.push(this.deleteKey(y)):S.push(void 0)}catch(ye){f=ye,S.push(J.Events.trigger("error",f))}}return S},this.timeout/2)).unref=="function"?p.unref():void 0}updateSettings(p={}){if(ie.overwrite(p,this.defaults,this),ie.overwrite(p,p,this.limiterOptions),p.timeout!=null)return this._startAutoCleanup()}disconnect(p=!0){var f;if(!this.sharedConnection)return(f=this.connection)!=null?f.disconnect(p):void 0}}return U.prototype.defaults={timeout:1e3*60*5,connection:null,Promise,id:"group-key"},U}).call(r);var Se=B,Be,It,nt;nt=o,It=c,Be=(function(){class U{constructor(p={}){this.options=p,nt.load(this.options,this.defaults,this),this.Events=new It(this),this._arr=[],this._resetPromise(),this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise((p,f)=>this._resolve=p)}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(p){var f;return this._arr.push(p),f=this._promise,this._arr.length===this.maxSize?this._flush():this.maxTime!=null&&this._arr.length===1&&(this._timeout=setTimeout(()=>this._flush(),this.maxTime)),f}}return U.prototype.defaults={maxTime:null,maxSize:null,Promise},U}).call(r);var zt=Be,kc=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),Ac=e($e),Yo,Xo,hr,fr,Zo,br,en,tn,sn,yr,Ve,rn=[].splice;br=10,Xo=5,Ve=o,en=g,fr=N,Zo=q,tn=kc,hr=c,sn=me,yr=Fe,Yo=(function(){class U{constructor(p={},...f){var y,R;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(p,f),Ve.load(p,this.instanceDefaults,this),this._queues=new en(br),this._scheduled={},this._states=new sn(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[])),this._limiter=null,this.Events=new hr(this),this._submitLock=new yr("submit",this.Promise),this._registerLock=new yr("register",this.Promise),R=Ve.load(p,this.storeDefaults,{}),this._store=(function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null)return y=Ve.load(p,this.redisStoreDefaults,{}),new tn(this,R,y);if(this.datastore==="local")return y=Ve.load(p,this.localStoreDefaults,{}),new Zo(this,R,y);throw new U.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}).call(this),this._queues.on("leftzero",()=>{var S;return(S=this._store.heartbeat)!=null&&typeof S.ref=="function"?S.ref():void 0}),this._queues.on("zero",()=>{var S;return(S=this._store.heartbeat)!=null&&typeof S.unref=="function"?S.unref():void 0})}_validateOptions(p,f){if(!(p!=null&&typeof p=="object"&&f.length===0))throw new U.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(p){return this._store.__publish__(p)}disconnect(p=!0){return this._store.__disconnect__(p)}chain(p){return this._limiter=p,this}queued(p){return this._queues.queued(p)}clusterQueued(){return this._store.__queued__()}empty(){return this.queued()===0&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(p){return this._states.jobStatus(p)}jobs(p){return this._states.statusJobs(p)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(p=1){return this._store.__check__(p)}_clearGlobalState(p){return this._scheduled[p]!=null?(clearTimeout(this._scheduled[p].expiration),delete this._scheduled[p],!0):!1}async _free(p,f,y,R){var S,$;try{if({running:$}=await this._store.__free__(p,y.weight),this.Events.trigger("debug",`Freed ${y.id}`,R),$===0&&this.empty())return this.Events.trigger("idle")}catch(J){return S=J,this.Events.trigger("error",S)}}_run(p,f,y){var R,S,$;return f.doRun(),R=this._clearGlobalState.bind(this,p),$=this._run.bind(this,p,f),S=this._free.bind(this,p,f),this._scheduled[p]={timeout:setTimeout(()=>f.doExecute(this._limiter,R,$,S),y),expiration:f.options.expiration!=null?setTimeout(function(){return f.doExpire(R,$,S)},y+f.options.expiration):void 0,job:f}}_drainOne(p){return this._registerLock.schedule(()=>{var f,y,R,S,$;return this.queued()===0?this.Promise.resolve(null):($=this._queues.getFirst(),{options:S,args:f}=R=$.first(),p!=null&&S.weight>p?this.Promise.resolve(null):(this.Events.trigger("debug",`Draining ${S.id}`,{args:f,options:S}),y=this._randomIndex(),this._store.__register__(y,S.weight,S.expiration).then(({success:J,wait:ye,reservoir:Ee})=>{var Jt;return this.Events.trigger("debug",`Drained ${S.id}`,{success:J,args:f,options:S}),J?($.shift(),Jt=this.empty(),Jt&&this.Events.trigger("empty"),Ee===0&&this.Events.trigger("depleted",Jt),this._run(y,R,ye),this.Promise.resolve(S.weight)):this.Promise.resolve(null)})))})}_drainAll(p,f=0){return this._drainOne(p).then(y=>{var R;return y!=null?(R=p!=null?p-y:p,this._drainAll(R,f+y)):this.Promise.resolve(f)}).catch(y=>this.Events.trigger("error",y))}_dropAllQueued(p){return this._queues.shiftAll(function(f){return f.doDrop({message:p})})}stop(p={}){var f,y;return p=Ve.load(p,this.stopDefaults),y=R=>{var S;return S=()=>{var $;return $=this._states.counts,$[0]+$[1]+$[2]+$[3]===R},new this.Promise(($,J)=>S()?$():this.on("done",()=>{if(S())return this.removeAllListeners("done"),$()}))},f=p.dropWaitingJobs?(this._run=function(R,S){return S.doDrop({message:p.dropErrorMessage})},this._drainOne=()=>this.Promise.resolve(null),this._registerLock.schedule(()=>this._submitLock.schedule(()=>{var R,S,$;S=this._scheduled;for(R in S)$=S[R],this.jobStatus($.job.options.id)==="RUNNING"&&(clearTimeout($.timeout),clearTimeout($.expiration),$.job.doDrop({message:p.dropErrorMessage}));return this._dropAllQueued(p.dropErrorMessage),y(0)}))):this.schedule({priority:br-1,weight:0},()=>y(1)),this._receive=function(R){return R._reject(new U.prototype.BottleneckError(p.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new U.prototype.BottleneckError("stop() has already been called")),f}async _addToQueue(p){var f,y,R,S,$,J,ye;({args:f,options:S}=p);try{({reachedHWM:$,blocked:y,strategy:ye}=await this._store.__submit__(this.queued(),S.weight))}catch(Ee){return R=Ee,this.Events.trigger("debug",`Could not queue ${S.id}`,{args:f,options:S,error:R}),p.doDrop({error:R}),!1}return y?(p.doDrop(),!0):$&&(J=ye===U.prototype.strategy.LEAK?this._queues.shiftLastFrom(S.priority):ye===U.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(S.priority+1):ye===U.prototype.strategy.OVERFLOW?p:void 0,J?.doDrop(),J==null||ye===U.prototype.strategy.OVERFLOW)?(J==null&&p.doDrop(),$):(p.doQueue($,y),this._queues.push(p),await this._drainAll(),$)}_receive(p){return this._states.jobStatus(p.options.id)!=null?(p._reject(new U.prototype.BottleneckError(`A job with the same id already exists (id=${p.options.id})`)),!1):(p.doReceive(),this._submitLock.schedule(this._addToQueue,p))}submit(...p){var f,y,R,S,$,J,ye;return typeof p[0]=="function"?($=p,[y,...p]=$,[f]=rn.call(p,-1),S=Ve.load({},this.jobDefaults)):(J=p,[S,y,...p]=J,[f]=rn.call(p,-1),S=Ve.load(S,this.jobDefaults)),ye=(...Ee)=>new this.Promise(function(Jt,Gc){return y(...Ee,function(...nn){return(nn[0]!=null?Gc:Jt)(nn)})}),R=new fr(ye,p,S,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),R.promise.then(function(Ee){return typeof f=="function"?f(...Ee):void 0}).catch(function(Ee){return Array.isArray(Ee)?typeof f=="function"?f(...Ee):void 0:typeof f=="function"?f(Ee):void 0}),this._receive(R)}schedule(...p){var f,y,R;return typeof p[0]=="function"?([R,...p]=p,y={}):[y,R,...p]=p,f=new fr(R,p,y,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(f),f.promise}wrap(p){var f,y;return f=this.schedule.bind(this),y=function(...R){return f(p.bind(this),...R)},y.withOptions=function(R,...S){return f(R,p,...S)},y}async updateSettings(p={}){return await this._store.__updateSettings__(Ve.overwrite(p,this.storeDefaults)),Ve.overwrite(p,this.instanceDefaults,this),this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(p=0){return this._store.__incrementReservoir__(p)}}return U.default=U,U.Events=hr,U.version=U.prototype.version=Ac.version,U.strategy=U.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},U.BottleneckError=U.prototype.BottleneckError=_,U.Group=U.prototype.Group=Se,U.RedisConnection=U.prototype.RedisConnection=xe,U.IORedisConnection=U.prototype.IORedisConnection=qe,U.Batcher=U.prototype.Batcher=zt,U.prototype.jobDefaults={priority:Xo,weight:1,expiration:null,id:"<no-id>"},U.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:U.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},U.prototype.localStoreDefaults={Promise,timeout:null,heartbeatInterval:250},U.prototype.redisStoreDefaults={Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},U.prototype.instanceDefaults={datastore:"local",connection:null,id:"<no-id>",rejectOnDrop:!0,trackDoneStatus:!1,Promise},U.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},U}).call(r);var on=Yo,Oc=on;return Oc}))});function rl(r,e,t){return r.retryLimiter.schedule(ol,r,e,t)}async function ol(r,e,t){let{pathname:s}=new URL(t.url,"http://github.test"),o=nl(t.method,s),n=!o&&t.method!=="GET"&&t.method!=="HEAD",i=t.method==="GET"&&s.startsWith("/search/"),a=s.startsWith("/graphql"),u=~~e.retryCount>0?{priority:0,weight:0}:{};r.clustering&&(u.expiration=1e3*60),(n||a)&&await r.write.key(r.id).schedule(u,ao),n&&r.triggersNotification(s)&&await r.notifications.key(r.id).schedule(u,ao),i&&await r.search.key(r.id).schedule(u,ao);let l=(o?r.auth:r.global).key(r.id).schedule(u,e,t);if(a){let d=await l;if(d.data.errors!=null&&d.data.errors.some(g=>g.type==="RATE_LIMITED"))throw Object.assign(new Error("GraphQL Rate Limit Exceeded"),{response:d,data:d.data})}return l}function nl(r,e){return r==="PATCH"&&/^\/applications\/[^/]+\/token\/scoped$/.test(e)||r==="POST"&&(/^\/applications\/[^/]+\/token$/.test(e)||/^\/app\/installations\/[^/]+\/access_tokens$/.test(e)||e==="/login/oauth/access_token")}function al(r){let t=`^(?:${r.map(s=>s.split("/").map(o=>o.startsWith("{")?"(?:.+?)":o).join("/")).map(s=>`(?:${s})`).join("|")})[^/]*$`;return new RegExp(t,"i")}function Ds(r,e){let{enabled:t=!0,Bottleneck:s=Ii.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),Tt.global==null&&cl(s,a);let c=Object.assign({clustering:i!=null,triggersNotification:Fi,fallbackSecondaryRateRetryAfter:60,retryAfterBaseValue:1e3,retryLimiter:new s,id:o,...Tt},e.throttle);if(typeof c.onSecondaryRateLimit!="function"||typeof c.onRateLimit!="function")throw new Error(`octokit/plugin-throttling error:
|
|
36
36
|
You must pass the onSecondaryRateLimit and onRateLimit error handlers.
|
|
37
37
|
See https://octokit.github.io/rest.js/#throttling
|
|
38
38
|
|
|
@@ -42,20 +42,20 @@ The gh CLI is recommended - install from https://cli.github.com`);return r}funct
|
|
|
42
42
|
onRateLimit: (retryAfter, options) => {/* ... */}
|
|
43
43
|
}
|
|
44
44
|
})
|
|
45
|
-
`);let u={},l=new s.Events(u);return u.on("secondary-limit",c.onSecondaryRateLimit),u.on("rate-limit",c.onRateLimit),u.on("error",d=>r.log.warn("Error in throttling-plugin limit handler",d)),c.retryLimiter.on("failed",async function(d,g){let[T,_,w]=g.args,{pathname:P}=new URL(w.url,"http://github.test");if(!(P.startsWith("/graphql")&&d.status!==401||d.status===403||d.status===429))return;let O=~~_.retryCount;_.retryCount=O,w.request.retryCount=O;let{wantRetry:G,retryAfter:N=0}=await(async function(){if(/\bsecondary rate\b/i.test(d.message)){let M=Number(d.response.headers["retry-after"])||T.fallbackSecondaryRateRetryAfter;return{wantRetry:await l.trigger("secondary-limit",M,w,r,O),retryAfter:M}}if(d.response.headers!=null&&d.response.headers["x-ratelimit-remaining"]==="0"||(d.response.data?.errors??[]).some(M=>M.type==="RATE_LIMITED")){let M=new Date(~~d.response.headers["x-ratelimit-reset"]*1e3).getTime(),k=Math.max(Math.ceil((M-Date.now())/1e3)+1,0);return{wantRetry:await l.trigger("rate-limit",k,w,r,O),retryAfter:k}}return{}})();if(G)return _.retryCount++,N*T.retryAfterBaseValue}),r.hook.wrap("request",Xu.bind(null,c)),{}}var Oi,Yu,to,tl,Ai,Gi,Rt,rl,$i=C(()=>{Oi=z(ki(),1),Yu="0.0.0-development",to=()=>Promise.resolve();tl=["/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"];Ai=sl(tl),Gi=Ai.test.bind(Ai),Rt={},rl=function(r,e){Rt.global=new r.Group({id:"octokit-global",maxConcurrent:10,...e}),Rt.auth=new r.Group({id:"octokit-auth",maxConcurrent:1,...e}),Rt.search=new r.Group({id:"octokit-search",maxConcurrent:1,minTime:2e3,...e}),Rt.write=new r.Group({id:"octokit-write",maxConcurrent:1,minTime:1e3,...e}),Rt.notifications=new r.Group({id:"octokit-notifications",maxConcurrent:1,minTime:3e3,...e})};Cs.VERSION=Yu;Cs.triggersNotification=Gi});function Os(r){return r.toLocaleTimeString("en-US",{hour12:!1})}function me(r){return As&&Di===r||(As=new ol({auth:r,throttle:{onRateLimit:(e,t,s,o)=>{let n=t,i=new Date(Date.now()+e*1e3);return o<2?(m(ks,`Rate limit hit (retry ${o+1}/2, waiting ${e}s, resets at ${Os(i)}) \u2014 ${n.method} ${n.url}`),!0):(m(ks,`Rate limit exceeded, not retrying \u2014 ${n.method} ${n.url} (resets at ${Os(i)})`),!1)},onSecondaryRateLimit:(e,t,s,o)=>{let n=t,i=new Date(Date.now()+e*1e3);return o<1?(m(ks,`Secondary rate limit hit (retry ${o+1}/1, waiting ${e}s, resets at ${Os(i)}) \u2014 ${n.method} ${n.url}`),!0):(m(ks,`Secondary rate limit exceeded, not retrying \u2014 ${n.method} ${n.url} (resets at ${Os(i)})`),!1)}}}),Di=r),As}async function so(r){let e=me(r),{data:t}=await e.rateLimit.get(),s=t.resources.search;return{remaining:s.remaining,limit:s.limit,resetAt:new Date(s.reset*1e3).toISOString()}}var ks,ol,As,Di,$t=C(()=>{"use strict";Ci();$i();ge();ks="github",ol=Pi.plugin(Cs),As=null,Di=null});async function Gs(r,e,t){let s=0,o=!1,n=async()=>{for(;s<r.length&&!o;){let a=r[s++];try{await e(a)}catch(c){throw o=!0,c}}},i=Math.min(t,r.length);await Promise.all(Array.from({length:i},()=>n()))}var ro=C(()=>{"use strict"});async function Me(r,e=100,t=10){let s=[];for(let o=1;o<=t;o++){let{data:n}=await r(o);if(s.push(...n),n.length<e)break}return s}var Yt=C(()=>{"use strict"});function Xe(){return oo||(oo=new Ds),oo}async function Xt(r,e,t){let s=r.getInflight(e);if(s)return E(at,`Dedup hit for ${e}`),await s;let n=(async()=>{let a={},c=r.get(e);c&&(a["if-none-match"]=c.etag);try{let u=await t(a),l=u.headers?.etag;return l&&r.set(e,l,u.data),u.data}catch(u){if(il(u)){let l=r.get(e);if(l)return E(at,`304 cache hit for ${e}`),l.body}throw u}})(),i=r.setInflight(e,n);try{return await n}finally{i()}}async function Is(r,e,t,s){let o=r.getIfFresh(e,t);if(o)return E(at,`Time-based cache hit for ${e}`),o;let n=await s();return r.set(e,"",n),n}function il(r){return ve(r)===304}var ke,$s,Ii,at,nl,Ds,oo,Dt=C(()=>{"use strict";ke=z(require("fs"),1),$s=z(require("path"),1),Ii=z(require("crypto"),1);Ee();ge();le();at="http-cache",nl=1440*60*1e3,Ds=class{cacheDir;inflightRequests=new Map;constructor(e){this.cacheDir=e??bs()}keyFor(e){return Ii.createHash("sha256").update(e).digest("hex")}pathFor(e){return $s.join(this.cacheDir,`${this.keyFor(e)}.json`)}getIfFresh(e,t){let s=this.get(e);if(!s)return null;let o=Date.now()-new Date(s.cachedAt).getTime();return!Number.isFinite(o)||o<0||o>t?null:s.body}get(e){let t=this.pathFor(e);try{let s=ke.readFileSync(t,"utf-8"),o=JSON.parse(s);return o.url!==e?(E(at,`Cache collision detected for ${e}, ignoring`),null):o}catch{return null}}set(e,t,s){let o={etag:t,url:e,body:s,cachedAt:new Date().toISOString()};try{ke.writeFileSync(this.pathFor(e),JSON.stringify(o),{encoding:"utf-8",mode:384}),E(at,`Cached response for ${e}`)}catch(n){E(at,`Failed to write cache for ${e}`,n)}}hasInflight(e){return this.inflightRequests.has(e)}getInflight(e){return this.inflightRequests.get(e)}setInflight(e,t){return this.inflightRequests.set(e,t),()=>{this.inflightRequests.delete(e)}}evictStale(e=nl){let t=0;try{let s=ke.readdirSync(this.cacheDir),o=Date.now();for(let n of s){if(!n.endsWith(".json"))continue;let i=$s.join(this.cacheDir,n);try{let a=ke.readFileSync(i,"utf-8"),c=JSON.parse(a);o-new Date(c.cachedAt).getTime()>e&&(ke.unlinkSync(i),t++)}catch{try{ke.unlinkSync(i),t++}catch{}}}}catch{}return t>0&&E(at,`Evicted ${t} stale cache entries`),t}clear(){try{let e=ke.readdirSync(this.cacheDir);for(let t of e)t.endsWith(".json")&&ke.unlinkSync($s.join(this.cacheDir,t));E(at,"Cache cleared")}catch{}}size(){try{return ke.readdirSync(this.cacheDir).filter(e=>e.endsWith(".json")).length}catch{return 0}}},oo=null});function no(r,e,t){if(t==="cancelled"||t==="timed_out")return"infrastructure";let s=r.toLowerCase();if(xi.some(o=>o.test(s)))return"auth_gate";if(Fi.some(o=>o.test(s)))return"fork_limitation";if(Ui.some(o=>o.test(s)))return"infrastructure";if(e){let o=e.toLowerCase();if(xi.some(n=>n.test(o)))return"auth_gate";if(Fi.some(n=>n.test(o)))return"fork_limitation";if(Ui.some(n=>n.test(o)))return"infrastructure"}return"actionable"}function Fs(r,e){return r.map(t=>{let s=e?.get(t);return{name:t,category:no(t,void 0,s),conclusion:s}})}function Mi(r){let e=!1,t=!1,s=!1,o=[],n=new Map;for(let i of r)i.conclusion==="failure"||i.conclusion==="cancelled"||i.conclusion==="timed_out"?(e=!0,o.push(i.name),n.set(i.name,i.conclusion)):i.conclusion==="action_required"||i.status==="in_progress"||i.status==="queued"?t=!0:i.conclusion==="success"&&(s=!0);return{hasFailingChecks:e,hasPendingChecks:t,hasSuccessfulChecks:s,failingCheckNames:o,failingCheckConclusions:n}}function Li(r){let e=r.statuses.filter(c=>{let u=(c.description||"").toLowerCase();return!(c.state==="failure"&&(u.includes("authorization required")||u.includes("authorize")))}),t=e.some(c=>c.state==="failure"||c.state==="error"),s=e.some(c=>c.state==="pending"),o=e.some(c=>c.state==="success"),n=t?"failure":s?"pending":o||e.length===0?"success":r.state,i=r.statuses.length>0,a=[];for(let c of e)(c.state==="failure"||c.state==="error")&&a.push(c.context);return{effectiveCombinedState:n,hasStatuses:i,failingStatusNames:a}}function ji(r,e,t){let{hasFailingChecks:s,hasPendingChecks:o,hasSuccessfulChecks:n,failingCheckNames:i,failingCheckConclusions:a}=r,{effectiveCombinedState:c,hasStatuses:u,failingStatusNames:l}=e,d=[...i,...l];return s||c==="failure"||c==="error"?{status:"failing",failingCheckNames:d,failingCheckConclusions:a}:o||c==="pending"?{status:"pending",failingCheckNames:[],failingCheckConclusions:new Map}:n||c==="success"?{status:"passing",failingCheckNames:[],failingCheckConclusions:new Map}:!u&&t===0?{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}:{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}}var Fi,xi,Ui,io=C(()=>{"use strict";Fi=[/vercel/i,/netlify/i,/\bpreview\s*deploy/i,/\bdeploy\s*preview/i,/storybook/i,/chromatic/i,/percy/i,/cloudflare pages/i],xi=[/authoriz/i,/approval/i,/\bcla\b/i,/license\/cla/i],Ui=[/\binstall\s*(os\s*)?dep(endenc|s\b)/i,/\bsetup\s+fail(ed|ure)?\b/i,/\bservice\s*unavailable/i,/\binfrastructure/i]});function It(r){return r.includes("[bot]")||al.has(r.toLowerCase())}function Zt(r){if(!r||r.length>100||r.includes("?"))return!1;let e=r.toLowerCase();return["thanks","thank you","lgtm","looks good","will review","we'll review","we'll get to this","noted","got it","will look","will check"].some(s=>e.includes(s))}var al,xs=C(()=>{"use strict";al=new Set(["allcontributors","changeset-bot","claassistant","codecov-commenter","greenkeeper","imgbot","netlify","renovate","snyk-bot","sonarcloud","stale","vercel"])});function Ni(r){if(r.length===0)return"review_required";let e=new Map;for(let s of r){let o=s.user?.login,n=s.state;o&&n&&e.set(o,n)}let t=Array.from(e.values());return t.includes("CHANGES_REQUESTED")?"changes_requested":t.includes("APPROVED")?"approved":"review_required"}function Hi(r){let e;for(let t of r)t.state==="CHANGES_REQUESTED"&&t.submitted_at&&(!e||t.submitted_at>e)&&(e=t.submitted_at);return e}function cl(r,e){let t=e.filter(o=>o.pull_request_review_id===r);if(t.length===0)return!1;let s=new Map;for(let o of e)o.user?.login&&s.set(o.id,o.user.login.toLowerCase());return t.every(o=>{if(!o.in_reply_to_id)return!1;let n=s.get(o.in_reply_to_id),i=o.user?.login?.toLowerCase();return!(n==null||i==null||n!==i||!o.body||o.body.includes("?"))})}function ul(r,e){return e.find(t=>t.pull_request_review_id===r&&t.body?.trim())?.body?.trim()}function qi(r,e,t,s){let o=[],n=s.toLowerCase();for(let c of r){let u=c.user?.login||"unknown";o.push({author:u,body:c.body||"",createdAt:c.created_at,isUser:u.toLowerCase()===n})}for(let c of e){if(!c.submitted_at)continue;let u=(c.body||"").trim();if(!u&&c.state!=="COMMENTED"&&c.state!=="CHANGES_REQUESTED")continue;let l=c.user?.login||"unknown";if(!u&&c.state==="COMMENTED"&&c.id!=null&&cl(c.id,t))continue;let d=u||(c.id!=null?ul(c.id,t):void 0)||(c.state==="CHANGES_REQUESTED"?"(requested changes via inline review comments)":"(posted inline review comments)");o.push({author:l,body:d,createdAt:c.submitted_at,isUser:l.toLowerCase()===n})}o.sort((c,u)=>new Date(c.createdAt).getTime()-new Date(u.createdAt).getTime());let i=null;for(let c of o)c.isUser&&(i=new Date(c.createdAt));let a;for(let c of o){if(c.isUser||c.author==="unknown"||It(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&&Zt(a.body)&&(a=void 0),{hasUnrespondedComment:!!a,lastMaintainerComment:a}}var Bi=C(()=>{"use strict";xs()});function Vi(r){return ll.test(r.toLowerCase())}function Wi(r){if(!r)return{hasIncompleteChecklist:!1};let e=/- \[x\]/gi,t=/^.*- \[ \].*$/gm,s=r.match(e)||[],o=r.match(t)||[],n=s.length;if(n+o.length===0)return{hasIncompleteChecklist:!1};let a=o.filter(u=>!Vi(u)),c=n+a.length;return{hasIncompleteChecklist:a.length>0,checklistStats:{checked:n,total:c}}}var ll,ao=C(()=>{"use strict";ll=/\(if\s|\bif applicable\b|\bif needed\b|\bif relevant\b|\bonly if\b|\bwhen applicable\b|\(optional\)|- \[ \]\s*optional\b|\bn\/a\b|\bnot applicable\b|\bif required\b|\bif necessary\b/});function zi(r,e){let t=[];if(e==="changes_requested"&&t.push("changes_requested"),!r)return t;let s=r.toLowerCase();return["screenshot","demo","recording","screen recording","before/after","before and after","gif","video","screencast","show me","can you show"].some(c=>s.includes(c))&&t.push("demo_requested"),["add test","test coverage","unit test","missing test","add a test","write test","needs test","need test"].some(c=>s.includes(c))&&t.push("tests_requested"),["documentation","readme","jsdoc","docstring","add docs","update docs","document this"].some(c=>s.includes(c))&&t.push("docs_requested"),["rebase","merge conflict","out of date","behind main","behind master"].some(c=>s.includes(c))&&t.push("rebase_requested"),t}var Ji=C(()=>{"use strict"});function Us(r){if(r.status==="needs_addressing"&&r.actionReason){let e=pl[r.actionReason];if(e)return{displayLabel:e.label,displayDescription:e.description(r)}}if(r.status==="waiting_on_maintainer"&&r.waitReason){let e=dl[r.waitReason];if(e)return{displayLabel:e.label,displayDescription:e.description(r)}}return m("display-utils",`PR ${r.url} has status "${r.status}" but no matching reason (actionReason=${r.actionReason}, waitReason=${r.waitReason})`),r.status==="needs_addressing"?{displayLabel:"[Needs Addressing]",displayDescription:"Action required"}:{displayLabel:"[Waiting on Maintainer]",displayDescription:"Awaiting maintainer action"}}var pl,dl,co=C(()=>{"use strict";ge();pl={needs_response:{label:"[Needs Response]",description:r=>r.lastMaintainerComment?`@${r.lastMaintainerComment.author} commented`:"Maintainer awaiting response"},needs_changes:{label:"[Needs Changes]",description:()=>"Review requested changes \u2014 push commits to address"},failing_ci:{label:"[CI Failing]",description:r=>{let e=r.classifiedChecks||[],t=e.filter(n=>n.category==="actionable");if(t.length>0)return`${t.length} check${t.length===1?"":"s"} failed: ${t.map(n=>n.name).join(", ")}`;let s=e.filter(n=>n.category==="infrastructure");if(s.length>0)return`${s.length} check${s.length===1?"":"s"} cancelled/timed out (infrastructure)`;let o=r.failingCheckNames||[];return o.length>0?`${o.length} check${o.length===1?"":"s"} failed`:"One or more CI checks are failing"}},merge_conflict:{label:"[Merge Conflict]",description:()=>"PR has merge conflicts with the base branch"},incomplete_checklist:{label:"[Incomplete Checklist]",description:r=>r.checklistStats?`${r.checklistStats.checked}/${r.checklistStats.total} items checked`:"PR body has unchecked required checkboxes"},ci_not_running:{label:"[CI Not Running]",description:()=>"No CI checks have been triggered"},needs_rebase:{label:"[Needs Rebase]",description:()=>"PR branch is significantly behind upstream"},missing_required_files:{label:"[Missing Files]",description:r=>r.missingRequiredFiles?`Missing: ${r.missingRequiredFiles.join(", ")}`:"Required files are missing"}},dl={pending_review:{label:"[Waiting on Maintainer]",description:()=>"Awaiting review"},pending_merge:{label:"[Waiting on Maintainer]",description:()=>"Approved and CI passes \u2014 waiting for merge"},changes_addressed:{label:"[Waiting on Maintainer]",description:r=>r.hasUnrespondedComment&&r.lastMaintainerComment?`Changes addressed \u2014 waiting for @${r.lastMaintainerComment.author} to re-review`:"Changes addressed \u2014 awaiting re-review"},ci_blocked:{label:"[CI Blocked]",description:r=>{let e=r.classifiedChecks||[];return e.length>0&&e.every(t=>t.category!=="actionable")?`All failing checks are non-actionable (${[...new Set(e.map(s=>s.category))].join(", ")})`:"CI checks are failing but no action is needed from you"}}}});function Et(){return{repos:new Map,monthlyCounts:{},monthlyOpenedCounts:{},dailyActivityCounts:{}}}function ml(r){if(typeof r!="object"||r===null)return!1;let e=r;return Array.isArray(e.reposEntries)&&typeof e.monthlyCounts=="object"&&e.monthlyCounts!==null&&typeof e.monthlyOpenedCounts=="object"&&e.monthlyOpenedCounts!==null&&typeof e.dailyActivityCounts=="object"&&e.dailyActivityCounts!==null}async function Ki(r,e,t,s,o,n){if(!e)return Et();let i=Xe(),a=n?`:stars${n.minStars}`:"",c=`pr-counts:v3:${s}:${e}${a}`,u=i.getIfFresh(c,gl);if(u&&ml(u))return E(ae,`Using cached ${s} PR counts for @${e}`),{repos:new Map(u.reposEntries),monthlyCounts:u.monthlyCounts,monthlyOpenedCounts:u.monthlyOpenedCounts,dailyActivityCounts:u.dailyActivityCounts};E(ae,`Fetching ${s} PR counts for @${e}...`);let l=new Map,d={},g={},T={},_=1,w=0,P;for(;;){let{data:h}=await r.search.issuesAndPullRequests({q:`is:pr ${t} author:${e} -user:${e}`,sort:"updated",order:"desc",per_page:100,page:_});P=h.total_count;for(let O of h.items){let G=ht(O.html_url);if(!G){m(ae,`Skipping ${s} PR with unparseable URL: ${O.html_url}`);continue}let{owner:N}=G,M=`${N}/${G.repo}`;if(xe(N,e)||n&&Ke(n.knownStarCounts.get(M),n.minStars))continue;let k=o(l,M,O);if(k){let A=k.slice(0,7);d[A]=(d[A]||0)+1;let U=k.slice(0,10);U.length===10&&(T[U]=(T[U]||0)+1)}if(O.created_at){let A=O.created_at.slice(0,7);g[A]=(g[A]||0)+1;let U=O.created_at.slice(0,10);U.length===10&&(T[U]=(T[U]||0)+1)}}if(w+=h.items.length,w>=h.total_count||w>=1e3||h.items.length===0||_>=wt)break;_++}return w<P&&_>=wt&&m(ae,`Pagination capped at ${wt} pages: fetched ${w} of ${P} ${s} PRs. Stats may be incomplete for prolific contributors.`),E(ae,`Found ${w} ${s} PRs across ${l.size} repos`),i.set(c,"",{reposEntries:Array.from(l.entries()),monthlyCounts:d,monthlyOpenedCounts:g,dailyActivityCounts:T}),{repos:l,monthlyCounts:d,monthlyOpenedCounts:g,dailyActivityCounts:T}}function Qi(r,e,t){return Ki(r,e,"is:merged","merged",(s,o,n)=>{n.pull_request?.merged_at||m(ae,`merged_at missing for merged PR ${n.html_url}${n.closed_at?", falling back to closed_at":", no date available"}`);let i=n.pull_request?.merged_at||n.closed_at||"",a=s.get(o);return a?(a.count+=1,i&&i>a.lastMergedAt&&(a.lastMergedAt=i)):s.set(o,{count:1,lastMergedAt:i}),i},t)}function Yi(r,e,t){return Ki(r,e,"is:closed is:unmerged","closed",(s,o,n)=>(s.set(o,(s.get(o)||0)+1),n.closed_at||""),t)}async function Xi(r,e,t,s,o,n){if(!e.githubUsername)return m(ae,`Skipping recently ${s} PRs fetch: no githubUsername configured. Run /setup-oss to configure.`),[];let i=new Date;i.setDate(i.getDate()-o);let a=i.toISOString().split("T")[0];E(ae,`Fetching recently ${s} PRs for @${e.githubUsername} (since ${a})...`);let{data:c}=await r.search.issuesAndPullRequests({q:t.replace("{username}",e.githubUsername).replace("{since}",a),sort:"updated",order:"desc",per_page:100}),u=[];for(let l of c.items){let d=pe(l.html_url);if(!d){m(ae,`Could not parse GitHub URL from API response: ${l.html_url}`);continue}let g=`${d.owner}/${d.repo}`;xe(d.owner,e.githubUsername)||u.push(n(l,{owner:d.owner,repo:g,number:d.number}))}return E(ae,`Found ${u.length} recently ${s} PRs`),u}async function Zi(r,e,t=7){return Xi(r,e,"is:pr is:closed is:unmerged author:{username} closed:>={since}","closed",t,(s,{repo:o,number:n})=>({url:s.html_url,repo:o,number:n,title:s.title,closedAt:s.closed_at||""}))}async function ea(r,e,t=7){return Xi(r,e,"is:pr is:merged author:{username} merged:>={since}","merged",t,(s,{repo:o,number:n})=>{let i=s.pull_request?.merged_at;return i||m(ae,`merged_at missing for merged PR ${s.html_url}${s.closed_at?", falling back to closed_at":", no date available"}`),{url:s.html_url,repo:o,number:n,title:s.title,mergedAt:i||s.closed_at||""}})}async function ta(r,e,t){if(!e.githubUsername)return m(ae,"Skipping merged PRs fetch: no githubUsername configured."),[];let s=t?` merged:>${t}`:"",o=`is:pr is:merged author:${e.githubUsername} -user:${e.githubUsername}${s}`;E(ae,`Fetching merged PRs${t?` since ${t}`:" (all time)"}...`);let n=[],i=1,a=0;for(;;){let{data:c}=await r.search.issuesAndPullRequests({q:o,sort:"updated",order:"desc",per_page:100,page:i});for(let u of c.items){let l=pe(u.html_url);if(!l){m(ae,`Skipping merged PR with unparseable URL: ${u.html_url}`);continue}if(xe(l.owner,e.githubUsername))continue;let d=u.pull_request?.merged_at||u.closed_at||"";if(!d){m(ae,`Skipping merged PR with no merge date: ${u.html_url}`);continue}n.push({url:u.html_url,title:u.title,mergedAt:d})}if(a+=c.items.length,a>=c.total_count||a>=1e3||c.items.length===0||i>=wt)break;i++}return E(ae,`Fetched ${n.length} merged PRs${t?" (incremental)":" (initial)"}`),n}async function sa(r,e,t){if(!e.githubUsername)return m(ae,"Skipping closed PRs fetch: no githubUsername configured."),[];let s=t?` closed:>${t}`:"",o=`is:pr is:closed is:unmerged author:${e.githubUsername} -user:${e.githubUsername}${s}`;E(ae,`Fetching closed PRs${t?` since ${t}`:" (all time)"}...`);let n=[],i=1,a=0,c;for(;;){let{data:u}=await r.search.issuesAndPullRequests({q:o,sort:"updated",order:"desc",per_page:100,page:i});c=u.total_count;for(let l of u.items){let d=pe(l.html_url);if(!d){m(ae,`Skipping closed PR with unparseable URL: ${l.html_url}`);continue}if(xe(d.owner,e.githubUsername))continue;let g=l.closed_at||"";if(!g){m(ae,`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>=wt)break;i++}return a<c&&i>=wt&&m(ae,`Pagination capped at ${wt} pages: fetched ${a} of ${c} closed PRs. Oldest PRs may be missing.`),E(ae,`Fetched ${n.length} closed PRs${t?" (incremental)":" (initial)"}`),n}var ae,gl,wt,Ms=C(()=>{"use strict";Ee();pt();ge();Dt();ae="github-stats",gl=1440*60*1e3,wt=3});var Ls,hl,Tt,ra=C(()=>{"use strict";$t();Wt();Ee();ro();le();Yt();ge();Dt();io();Bi();ao();Ji();co();Ms();co();io();ao();Ls="pr-monitor",hl=rt,Tt=class r{octokit;stateManager;constructor(e){this.octokit=me(e),this.stateManager=x()}async fetchUserOpenPRs(){let e=this.stateManager.getState().config;if(!e.githubUsername)throw new Qe("No GitHub username configured. Run setup first.");E("pr-monitor",`Fetching open PRs for @${e.githubUsername}...`);let t=[],s=1,o=100,n=await this.octokit.search.issuesAndPullRequests({q:`is:pr is:open author:${e.githubUsername}`,sort:"updated",order:"desc",per_page:o,page:1});t.push(...n.data.items);let i=n.data.total_count;E("pr-monitor",`Found ${i} open PRs`);let a=Math.min(Math.ceil(i/o),10);for(;s<a;){s++;let d=await this.octokit.search.issuesAndPullRequests({q:`is:pr is:open author:${e.githubUsername}`,sort:"updated",order:"desc",per_page:o,page:s});t.push(...d.data.items)}let c=[],u=[],l=t.filter(d=>{if(!d.pull_request)return!1;let g=ht(d.html_url);return g?!xe(g.owner,e.githubUsername):(m("pr-monitor",`Skipping PR with unparseable URL: ${d.html_url}`),!1)});return E("pr-monitor",`Filtered to ${l.length} PRs after excluding own repos`),await Ir("pr-monitor",`Fetch details for ${l.length} PRs`,async()=>{await Gs(l,async d=>{try{E("pr-monitor",`Fetching details for ${d.html_url}`);let g=await this.fetchPRDetails(d.html_url);g&&c.push(g)}catch(g){let T=S(g);m("pr-monitor",`Error fetching ${d.html_url}: ${T}`),u.push({prUrl:d.html_url,error:T})}},hl)}),c.sort((d,g)=>d.status===g.status?0:d.status==="needs_addressing"?-1:1),{prs:c,failures:u}}async fetchPRDetails(e){let t=pe(e);if(!t||t.type!=="pull")throw new Z(`Invalid PR URL format: ${e}`);let{owner:s,repo:o,number:n}=t,i=this.stateManager.getState().config,[a,c,u,l]=await Promise.all([this.octokit.pulls.get({owner:s,repo:o,pull_number:n}),Me(q=>this.octokit.issues.listComments({owner:s,repo:o,issue_number:n,per_page:100,page:q})),this.octokit.pulls.listReviews({owner:s,repo:o,pull_number:n}),Me(q=>this.octokit.pulls.listReviewComments({owner:s,repo:o,pull_number:n,per_page:100,page:q})).catch(q=>{let V=ve(q);if(V===429)throw q;if(V===403){let ee=S(q).toLowerCase();if(ee.includes("rate limit")||ee.includes("abuse detection"))throw q;return m("pr-monitor",`403 fetching review comments for ${s}/${o}#${n}: ${ee}`),[]}return V===404?E("pr-monitor",`Review comments 404 for ${s}/${o}#${n} (likely no inline comments)`):m("pr-monitor",`Failed to fetch review comments for ${s}/${o}#${n} (status ${V??"unknown"}): self-reply detection will be skipped`),[]})]),d=a.data,g=u.data,T=Ni(g),_=this.hasMergeConflict(d.mergeable,d.mergeable_state),{hasUnrespondedComment:w,lastMaintainerComment:P}=qi(c,g,l,i.githubUsername),h=this.getCIStatus(s,o,d.head.sha),G=w||T==="changes_requested"?this.octokit.repos.getCommit({owner:s,repo:o,ref:d.head.sha}).then(q=>({date:q.data.commit.author?.date,author:q.data.author?.login})).catch(q=>{let V=ve(q);if(V===429)throw q;if(V===403){let ee=S(q).toLowerCase();if(ee.includes("rate limit")||ee.includes("abuse detection"))throw q;m("pr-monitor",`403 fetching commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${S(q)}`);return}m("pr-monitor",`Failed to fetch commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${S(q)}`)}):Promise.resolve(void 0),[{status:N,failingCheckNames:M,failingCheckConclusions:k},A]=await Promise.all([h,G]),U=A?.date,H=A?.author,{hasIncompleteChecklist:ue,checklistStats:he}=Wi(d.body||""),D=zi(P?.body,T),ie=De(new Date(d.updated_at),new Date),Ve=Hi(g),Te=Fs(M,k),Ge=N==="failing"&&Te.some(q=>q.category==="actionable"),{status:Pe,actionReason:L,waitReason:B,stalenessTier:re}=this.determineStatus({ciStatus:N,hasMergeConflict:_,hasUnrespondedComment:w,hasIncompleteChecklist:ue,reviewDecision:T,daysSinceActivity:ie,dormantThreshold:i.dormantThresholdDays,approachingThreshold:i.approachingDormantDays,latestCommitDate:U,latestCommitAuthor:H,contributorUsername:i.githubUsername,lastMaintainerCommentDate:P?.createdAt,latestChangesRequestedDate:Ve,hasActionableCIFailure:Ge});return this.buildFetchedPR({id:d.id,url:e,repo:`${s}/${o}`,number:n,title:d.title,status:Pe,actionReason:L,waitReason:B,stalenessTier:re,createdAt:d.created_at,updatedAt:d.updated_at,daysSinceActivity:ie,ciStatus:N,failingCheckNames:M,classifiedChecks:Te,hasMergeConflict:_,reviewDecision:T,hasUnrespondedComment:w,lastMaintainerComment:P,latestCommitDate:U,hasIncompleteChecklist:ue,checklistStats:he,maintainerActionHints:D})}buildFetchedPR(e){let t={...e,displayLabel:"",displayDescription:""},{displayLabel:s,displayDescription:o}=Us(t);return t.displayLabel=s,t.displayDescription=o,t}determineStatus(e){let{ciStatus:t,hasMergeConflict:s,hasUnrespondedComment:o,hasIncompleteChecklist:n,reviewDecision:i,daysSinceActivity:a,dormantThreshold:c,approachingThreshold:u,latestCommitDate:l,latestCommitAuthor:d,contributorUsername:g,lastMaintainerCommentDate:T,latestChangesRequestedDate:_,hasActionableCIFailure:w=!0}=e,P="active";a>=c?P="dormant":a>=u&&(P="approaching_dormant");let h=l&&this.isContributorCommit(d,g)?l:void 0;return o?h&&T&&this.isCommitAfterComment(h,T)?_&&h<_?{status:"needs_addressing",actionReason:"needs_response",stalenessTier:P}:t==="failing"&&w?{status:"needs_addressing",actionReason:"failing_ci",stalenessTier:P}:{status:"waiting_on_maintainer",waitReason:"changes_addressed",stalenessTier:P}:{status:"needs_addressing",actionReason:"needs_response",stalenessTier:P}:i==="changes_requested"&&_?!h||h<_?{status:"needs_addressing",actionReason:"needs_changes",stalenessTier:P}:t==="failing"&&w?{status:"needs_addressing",actionReason:"failing_ci",stalenessTier:P}:{status:"waiting_on_maintainer",waitReason:"changes_addressed",stalenessTier:P}:t==="failing"?w?{status:"needs_addressing",actionReason:"failing_ci",stalenessTier:P}:{status:"waiting_on_maintainer",waitReason:"ci_blocked",stalenessTier:P}:s?{status:"needs_addressing",actionReason:"merge_conflict",stalenessTier:P}:n?{status:"needs_addressing",actionReason:"incomplete_checklist",stalenessTier:P}:i==="approved"&&(t==="passing"||t==="unknown")?{status:"waiting_on_maintainer",waitReason:"pending_merge",stalenessTier:P}:{status:"waiting_on_maintainer",waitReason:"pending_review",stalenessTier:P}}static CI_FIX_BOTS=new Set(["autofix-ci[bot]","prettier-ci[bot]","pre-commit-ci[bot]"]);isContributorCommit(e,t){if(!e||!t)return!0;let s=e.toLowerCase();return r.CI_FIX_BOTS.has(s)?!0:s===t.toLowerCase()}static MIN_RESPONSE_GAP_MS=120*1e3;isCommitAfterComment(e,t){let s=new Date(e).getTime(),o=new Date(t).getTime();return Number.isNaN(s)||Number.isNaN(o)?e>t:s-o>=r.MIN_RESPONSE_GAP_MS}hasMergeConflict(e,t){return e===!1||t==="dirty"}async getCIStatus(e,t,s){if(!s)return{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map};try{let[o,n]=await Promise.all([this.octokit.repos.getCombinedStatusForRef({owner:e,repo:t,ref:s}),this.octokit.checks.listForRef({owner:e,repo:t,ref:s}).catch(g=>{let T=ve(g);if(T===429)throw g;if(T===403){let _=S(g).toLowerCase();if(_.includes("rate limit")||_.includes("abuse detection"))throw g}return T===404?E("pr-monitor",`Check runs 404 for ${e}/${t}@${s.slice(0,7)} (no checks configured)`):m("pr-monitor",`Non-404 error fetching check runs for ${e}/${t}@${s.slice(0,7)}: ${T??g}`),null})]),i=o.data,a=n?.data?.check_runs||[],c=new Map;for(let g of a){let T=c.get(g.name);(!T||new Date(g.started_at??0)>new Date(T.started_at??0))&&c.set(g.name,g)}let u=[...c.values()],l=Mi(u),d=Li(i);return ji(l,d,u.length)}catch(o){let n=ve(o);if(n===401||n===403||n===429)throw o;return n===404?(E("pr-monitor",`CI check 404 for ${e}/${t} (no CI configured)`),{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}):(m("pr-monitor",`Failed to check CI for ${e}/${t}@${s.slice(0,7)}: ${S(o)}`),{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map})}}async fetchUserMergedPRCounts(e){let t=this.stateManager.getState().config;return Qi(this.octokit,t.githubUsername,e)}async fetchUserClosedPRCounts(e){let t=this.stateManager.getState().config;return Yi(this.octokit,t.githubUsername,e)}async fetchRepoStarCounts(e){if(e.length===0)return new Map;E(Ls,`Fetching star counts for ${e.length} repos...`);let t=new Map,s=Xe(),o=[...new Set(e)],n=10;for(let i=0;i<o.length;i+=n){let a=o.slice(i,i+n),c=await Promise.allSettled(a.map(async l=>{let d=l.split("/");if(d.length!==2||!d[0]||!d[1])throw new Z(`Malformed repo identifier: "${l}"`);let[g,T]=d,_=`/repos/${g}/${T}`,w=await Xt(s,_,P=>this.octokit.repos.get({owner:g,repo:T,headers:P}));return{repo:l,stars:w.stargazers_count}})),u=0;for(let l=0;l<c.length;l++){let d=c[l];d.status==="fulfilled"?t.set(d.value.repo,d.value.stars):(u++,m(Ls,`Failed to fetch stars for ${a[l]}: ${S(d.reason)}`))}if(u===a.length&&a.length>0){let l=o.length-i-n;l>0&&m(Ls,`Entire chunk failed, aborting remaining ${l} repos`);break}}return E(Ls,`Fetched star counts for ${t.size}/${e.length} repos`),t}async fetchRecentlyClosedPRs(e=7){let t=this.stateManager.getState().config;return Zi(this.octokit,t,e)}async fetchRecentlyMergedPRs(e=7){let t=this.stateManager.getState().config;return ea(this.octokit,t,e)}generateDigest(e,t=[],s=[]){let o=new Date().toISOString(),n=e.filter(c=>c.status==="needs_addressing"),i=e.filter(c=>c.status==="waiting_on_maintainer"),a=this.stateManager.getStats();return{generatedAt:o,openPRs:e,needsAddressingPRs:n,waitingOnMaintainerPRs:i,recentlyClosedPRs:t,recentlyMergedPRs:s,shelvedPRs:[],autoUnshelvedPRs:[],summary:{totalActivePRs:e.length,totalNeedingAttention:n.length,totalMergedAllTime:a.mergedPRs,mergeRate:parseFloat(a.mergeRate)}}}async updateRepoScoreFromObservedPR(e,t){t?this.stateManager.incrementMergedCount(e):this.stateManager.incrementClosedCount(e)}}});function js(r){if(!r.labels||!Array.isArray(r.labels)||r.labels.length===0)return!1;let t=r.labels.map(s=>(typeof s=="string"?s:s.name||"").toLowerCase()).filter(s=>s.length>0);return t.length===0?!1:t.every(s=>uo.has(s))}function na(r){return!r.labels||!Array.isArray(r.labels)?!1:r.labels.map(s=>(typeof s=="string"?s:s.name||"").toLowerCase()).filter(s=>oa.has(s)).length>=5}function ia(r){return r?/^.+\s+(question|fact|point|item|task|entry|post|challenge|exercise|example|problem|tip|recipe|snippet)\s+#?\d+$/i.test(r):!1}function lo(r){let e=new Set,t=new Map;for(let s of r){let o=s.repository_url.split("/").slice(-2).join("/");if(na(s)){e.add(o);continue}s.title&&ia(s.title)&&t.set(o,(t.get(o)||0)+1)}for(let[s,o]of t)o>=3&&e.add(s);return e}function Ns(r,e){let t=new Map,s=[];for(let o of r){let n=t.get(o.issue.repo)||0;n<e&&(s.push(o),t.set(o.issue.repo,n+1))}return s}var uo,oa,po=C(()=>{"use strict";uo=new Set(["documentation","docs","typo","spelling"]);oa=new Set(["good first issue","hacktoberfest","easy","up-for-grabs","first-timers-only","beginner-friendly","beginner","starter","newbie","low-hanging-fruit","community"])});function go(r,e){let t=0;return r>=5e3?t+=8:r>=500?t+=5:r>=50&&(t+=3),e>=500?t+=4:e>=50&&(t+=2),t}function es(r){let e=50;r.repoScore!==null&&(e+=r.repoScore*2),e+=r.repoQualityBonus??0,r.mergedPRCount>0&&(e+=15),r.clearRequirements&&(e+=15);let t=new Date(r.issueUpdatedAt),s=De(t);return s<=14?e+=15:s<=30&&(e+=Math.round(15*(1-(s-14)/16))),r.hasContributionGuidelines&&(e+=10),r.orgHasMergedPRs&&(e+=5),r.hasExistingPR&&(e-=30),r.isClaimed&&(e-=20),r.closedWithoutMergeCount>0&&r.mergedPRCount===0&&(e-=15),Math.max(0,Math.min(100,e))}var Hs=C(()=>{"use strict";Ee()});function ca(){let r=Date.now();for(let[e,t]of Ze.entries())r-t.fetchedAt>ua&&Ze.delete(e);if(Ze.size>aa){let t=Array.from(Ze.entries()).sort((s,o)=>s[1].fetchedAt-o[1].fetchedAt).slice(0,Ze.size-aa);for(let[s]of t)Ze.delete(s)}}var ct,fl,Ze,ua,bl,aa,qs,la=C(()=>{"use strict";Yt();Ee();le();ge();Dt();Hs();ct="issue-vetting",fl=rt,Ze=new Map,ua=3600*1e3,bl=14400*1e3,aa=100;qs=class{octokit;stateManager;constructor(e,t){this.octokit=e,this.stateManager=t}async vetIssue(e){let t=pe(e);if(!t||t.type!=="issues")throw new Z(`Invalid issue URL: ${e}`);let{owner:s,repo:o,number:n}=t,i=`${s}/${o}`,{data:a}=await this.octokit.issues.get({owner:s,repo:o,issue_number:n}),[c,u,l,d,g]=await Promise.all([this.checkNoExistingPR(s,o,n),this.checkNotClaimed(s,o,n,a.comments),this.checkProjectHealth(s,o),this.fetchContributionGuidelines(s,o),this.checkUserMergedPRsInRepo(s,o)]),T=c.passed,_=u.passed,w=this.analyzeRequirements(a.body||""),P=l.checkFailed?!0:l.isActive,h={passedAllChecks:T&&_&&P&&w,checks:{noExistingPR:T,notClaimed:_,projectActive:P,clearRequirements:w,contributionGuidelinesFound:!!d},contributionGuidelines:d,notes:[]};T||h.notes.push("Existing PR found for this issue"),_||h.notes.push("Issue appears to be claimed by someone"),c.inconclusive&&h.notes.push(`Could not verify absence of existing PRs: ${c.reason||"API error"}`),u.inconclusive&&h.notes.push(`Could not verify claim status: ${u.reason||"API error"}`),l.checkFailed?h.notes.push(`Could not verify project activity: ${l.failureReason||"API error"}`):l.isActive||h.notes.push("Project may be inactive"),w||h.notes.push("Issue requirements are unclear"),d||h.notes.push("No CONTRIBUTING.md found");let O={id:a.id,url:e,repo:i,number:n,title:a.title,status:"candidate",labels:a.labels.map(Pe=>typeof Pe=="string"?Pe:Pe.name||""),createdAt:a.created_at,updatedAt:a.updated_at,vetted:!0,vettingResult:h},G=[],N=[];T||G.push("Has existing PR"),_||G.push("Already claimed"),!l.isActive&&!l.checkFailed&&G.push("Inactive project"),w||G.push("Unclear requirements"),T&&N.push("No existing PR"),_&&N.push("Not claimed"),l.isActive&&!l.checkFailed&&N.push("Active project"),w&&N.push("Clear requirements"),d&&N.push("Has contribution guidelines");let M=this.stateManager.getState().config,k=this.stateManager.getRepoScore(i),A=k&&k.mergedPRCount>0?k.mergedPRCount:g;A>0?N.push(`Trusted project (${A} PR${A>1?"s":""} merged)`):M.trustedProjects.includes(i)&&N.push("Trusted project (previous PR merged)"),k&&(k.closedWithoutMergeCount>0&&A===0?G.push("User has rejected PR(s) in this repo with no successful merges"):k.closedWithoutMergeCount>0&&A>0&&h.notes.push(`Mixed history: ${A} merged, ${k.closedWithoutMergeCount} closed without merge`));let U=i.split("/")[0],H=!1;U&&i.includes("/")&&(H=Object.values(this.stateManager.getState().repoScores).some(Pe=>Pe.repo&&Pe.mergedPRCount>0&&Pe.repo.startsWith(U+"/")&&Pe.repo!==i)),H&&N.push(`Org affinity (merged PRs in other ${U} repos)`);let ue;h.passedAllChecks?ue="approve":G.length>2?ue="skip":ue="needs_review";let he=l.checkFailed||c.inconclusive||u.inconclusive;ue==="approve"&&he&&(ue="needs_review",h.notes.push("Recommendation downgraded: one or more checks were inconclusive"));let D=go(l.stargazersCount??0,l.forksCount??0);l.checkFailed&&D===0&&h.notes.push("Repo quality bonus unavailable: could not fetch star/fork counts due to API error");let ie=this.getRepoScore(i),Ve=es({repoScore:ie,hasExistingPR:!T,isClaimed:!_,clearRequirements:w,hasContributionGuidelines:!!d,issueUpdatedAt:a.updated_at,closedWithoutMergeCount:k?.closedWithoutMergeCount??0,mergedPRCount:A,orgHasMergedPRs:H,repoQualityBonus:D}),Te=this.stateManager.getStarredRepos(),Ge="normal";return A>0?Ge="merged_pr":Te.includes(i)&&(Ge="starred"),{issue:O,vettingResult:h,projectHealth:l,recommendation:ue,reasonsToSkip:G,reasonsToApprove:N,viabilityScore:Ve,searchPriority:Ge}}async vetIssuesParallel(e,t,s){let o=[],n=new Map,i=0,a=0,c=0;for(let l of e){if(o.length>=t)break;c++;let d=this.vetIssue(l).then(g=>{o.length<t&&(s&&(g.searchPriority=s),o.push(g))}).catch(g=>{i++,dt(g)&&a++,m(ct,`Error vetting issue ${l}:`,S(g))}).finally(()=>n.delete(l));n.set(l,d),n.size>=fl&&await Promise.race(n.values())}await Promise.allSettled(n.values());let u=i===c&&c>0;return u&&m(ct,`All ${c} issue(s) failed vetting. This may indicate a systemic issue (rate limit, auth, network).`),{candidates:o.slice(0,t),allFailed:u,rateLimitHit:a>0}}async checkNoExistingPR(e,t,s){try{let{data:o}=await this.octokit.search.issuesAndPullRequests({q:`repo:${e}/${t} is:pr ${s}`,per_page:5}),i=(await Me(a=>this.octokit.issues.listEventsForTimeline({owner:e,repo:t,issue_number:s,per_page:100,page:a}))).filter(a=>{let c=a;return c.event==="cross-referenced"&&c.source?.issue?.pull_request});return{passed:o.total_count===0&&i.length===0}}catch(o){let n=S(o);return m(ct,`Failed to check for existing PRs on ${e}/${t}#${s}: ${n}. Assuming no existing PR.`),{passed:!0,inconclusive:!0,reason:n}}}async checkUserMergedPRsInRepo(e,t){try{let{data:s}=await this.octokit.search.issuesAndPullRequests({q:`repo:${e}/${t} is:pr is:merged author:@me`,per_page:1});return s.total_count}catch(s){let o=S(s);return m(ct,`Could not check merged PRs in ${e}/${t}: ${o}. Defaulting to 0.`),0}}async checkNotClaimed(e,t,s,o){if(o===0)return{passed:!0};try{let i=(await this.octokit.paginate(this.octokit.issues.listComments,{owner:e,repo:t,issue_number:s,per_page:100},c=>c.data)).slice(-100),a=["i'm working on this","i am working on this","i'll take this","i will take this","working on it","i'd like to work on","i would like to work on","can i work on","may i work on","assigned to me","i'm on it","i'll submit a pr","i will submit a pr","working on a fix","working on a pr"];for(let c of i){let u=(c.body||"").toLowerCase();if(a.some(l=>u.includes(l)))return{passed:!1}}return{passed:!0}}catch(n){let i=S(n);return m(ct,`Failed to check claim status on ${e}/${t}#${s}: ${i}. Assuming not claimed.`),{passed:!0,inconclusive:!0,reason:i}}}async checkProjectHealth(e,t){let s=Xe(),o=`health:${e}/${t}`;try{return await Is(s,o,bl,async()=>{let n=`/repos/${e}/${t}`,i=await Xt(s,n,g=>this.octokit.repos.get({owner:e,repo:t,headers:g})),{data:a}=await this.octokit.repos.listCommits({owner:e,repo:t,per_page:1}),u=a[0]?.commit?.author?.date||i.pushed_at,l=De(new Date(u)),d="unknown";try{let{data:g}=await this.octokit.actions.listRepoWorkflows({owner:e,repo:t,per_page:1});g.total_count>0&&(d="passing")}catch(g){let T=S(g);m(ct,`Failed to check CI status for ${e}/${t}: ${T}. Defaulting to unknown.`)}return{repo:`${e}/${t}`,lastCommitAt:u,daysSinceLastCommit:l,openIssuesCount:i.open_issues_count,avgIssueResponseDays:0,ciStatus:d,isActive:l<30,stargazersCount:i.stargazers_count,forksCount:i.forks_count}})}catch(n){let i=S(n);return m(ct,`Error checking project health for ${e}/${t}: ${i}`),{repo:`${e}/${t}`,lastCommitAt:"",daysSinceLastCommit:999,openIssuesCount:0,avgIssueResponseDays:0,ciStatus:"unknown",isActive:!1,checkFailed:!0,failureReason:i}}}async fetchContributionGuidelines(e,t){let s=`${e}/${t}`,o=Ze.get(s);if(o&&Date.now()-o.fetchedAt<ua)return o.guidelines;let n=["CONTRIBUTING.md",".github/CONTRIBUTING.md","docs/CONTRIBUTING.md","contributing.md"],i=await Promise.allSettled(n.map(a=>this.octokit.repos.getContent({owner:e,repo:t,path:a}).then(({data:c})=>"content"in c?Buffer.from(c.content,"base64").toString("utf-8"):null)));for(let a=0;a<i.length;a++){let c=i[a];if(c.status==="fulfilled"&&c.value){let u=this.parseContributionGuidelines(c.value);return Ze.set(s,{guidelines:u,fetchedAt:Date.now()}),ca(),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(ct,`Unexpected error fetching ${n[a]} from ${e}/${t}: ${u}`)}}Ze.set(s,{guidelines:void 0,fetchedAt:Date.now()}),ca()}parseContributionGuidelines(e){let t={rawContent:e},s=e.toLowerCase();if(s.includes("branch")){let o=e.match(/branch[^\n]*(?:named?|format|convention)[^\n]*[`"]([^`"]+)[`"]/i);o&&(t.branchNamingConvention=o[1])}if(s.includes("conventional commit"))t.commitMessageFormat="conventional commits";else if(s.includes("commit message")){let o=e.match(/commit message[^\n]*[`"]([^`"]+)[`"]/i);o&&(t.commitMessageFormat=o[1])}return s.includes("jest")?t.testFramework="Jest":s.includes("rspec")?t.testFramework="RSpec":s.includes("pytest")?t.testFramework="pytest":s.includes("mocha")&&(t.testFramework="Mocha"),s.includes("eslint")?t.linter="ESLint":s.includes("rubocop")?t.linter="RuboCop":s.includes("prettier")&&(t.formatter="Prettier"),(s.includes("cla")||s.includes("contributor license agreement"))&&(t.claRequired=!0),t}analyzeRequirements(e){if(!e||e.length<50)return!1;let t=/\d\.|[-*]\s/.test(e),s=/```/.test(e),o=/expect|should|must|want/i.test(e);return[t,s,o,e.length>200].filter(Boolean).length>=2}getRepoScore(e){return this.stateManager.getState().repoScores?.[e]?.score??null}}});var pa,da,X,yl,vt,ga=C(()=>{"use strict";pa=z(require("fs"),1),da=z(require("path"),1);$t();Wt();Ee();pt();le();ge();Dt();po();la();Hs();po();Hs();X="issue-discovery",yl=900*1e3,vt=class{octokit;stateManager;githubToken;vetter;rateLimitWarning=null;constructor(e){this.githubToken=e,this.octokit=me(e),this.stateManager=x(),this.vetter=new qs(this.octokit,this.stateManager)}async cachedSearch(e){let t=`search:${e.q}:${e.sort}:${e.order}:${e.per_page}`;return Is(Xe(),t,yl,async()=>{let{data:s}=await this.octokit.search.issuesAndPullRequests(e);return s})}async fetchStarredRepos(){ye(X,"Fetching starred repositories...");let e=[];try{let t=this.octokit.paginate.iterator(this.octokit.activity.listReposStarredByAuthenticatedUser,{per_page:100}),s=0;for await(let{data:o}of t){for(let n of o){let i;"full_name"in n&&typeof n.full_name=="string"?i=n.full_name:"repo"in n&&n.repo&&typeof n.repo=="object"&&"full_name"in n.repo&&(i=n.repo.full_name),i&&e.push(i)}if(s++,s>=5){ye(X,"Reached pagination limit for starred repos (500)");break}}return ye(X,`Fetched ${e.length} starred repositories`),this.stateManager.setStarredRepos(e),e}catch(t){let s=this.stateManager.getStarredRepos(),o=S(t);return m(X,"Error fetching starred repos:",o),s.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(
|
|
45
|
+
`);let u={},l=new s.Events(u);return u.on("secondary-limit",c.onSecondaryRateLimit),u.on("rate-limit",c.onRateLimit),u.on("error",d=>r.log.warn("Error in throttling-plugin limit handler",d)),c.retryLimiter.on("failed",async function(d,g){let[E,_,w]=g.args,{pathname:P}=new URL(w.url,"http://github.test");if(!(P.startsWith("/graphql")&&d.status!==401||d.status===403||d.status===429))return;let C=~~_.retryCount;_.retryCount=C,w.request.retryCount=C;let{wantRetry:D,retryAfter:N=0}=await(async function(){if(/\bsecondary rate\b/i.test(d.message)){let x=Number(d.response.headers["retry-after"])||E.fallbackSecondaryRateRetryAfter;return{wantRetry:await l.trigger("secondary-limit",x,w,r,C),retryAfter:x}}if(d.response.headers!=null&&d.response.headers["x-ratelimit-remaining"]==="0"||(d.response.data?.errors??[]).some(x=>x.type==="RATE_LIMITED")){let x=new Date(~~d.response.headers["x-ratelimit-reset"]*1e3).getTime(),O=Math.max(Math.ceil((x-Date.now())/1e3)+1,0);return{wantRetry:await l.trigger("rate-limit",O,w,r,C),retryAfter:O}}return{}})();if(D)return _.retryCount++,N*E.retryAfterBaseValue}),r.hook.wrap("request",rl.bind(null,c)),{}}var Ii,sl,ao,il,Di,Fi,Tt,cl,xi=k(()=>{Ii=z($i(),1),sl="0.0.0-development",ao=()=>Promise.resolve();il=["/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"];Di=al(il),Fi=Di.test.bind(Di),Tt={},cl=function(r,e){Tt.global=new r.Group({id:"octokit-global",maxConcurrent:10,...e}),Tt.auth=new r.Group({id:"octokit-auth",maxConcurrent:1,...e}),Tt.search=new r.Group({id:"octokit-search",maxConcurrent:1,minTime:2e3,...e}),Tt.write=new r.Group({id:"octokit-write",maxConcurrent:1,minTime:1e3,...e}),Tt.notifications=new r.Group({id:"octokit-notifications",maxConcurrent:1,minTime:3e3,...e})};Ds.VERSION=sl;Ds.triggersNotification=Fi});function xs(r){return r.toLocaleTimeString("en-US",{hour12:!1})}function fe(r){return Fs&&Ui===r||(Fs=new ul({auth:r,throttle:{onRateLimit:(e,t,s,o)=>{let n=t,i=new Date(Date.now()+e*1e3);return o<2?(m(Is,`Rate limit hit (retry ${o+1}/2, waiting ${e}s, resets at ${xs(i)}) \u2014 ${n.method} ${n.url}`),!0):(m(Is,`Rate limit exceeded, not retrying \u2014 ${n.method} ${n.url} (resets at ${xs(i)})`),!1)},onSecondaryRateLimit:(e,t,s,o)=>{let n=t,i=new Date(Date.now()+e*1e3);return o<1?(m(Is,`Secondary rate limit hit (retry ${o+1}/1, waiting ${e}s, resets at ${xs(i)}) \u2014 ${n.method} ${n.url}`),!0):(m(Is,`Secondary rate limit exceeded, not retrying \u2014 ${n.method} ${n.url} (resets at ${xs(i)})`),!1)}}}),Ui=r),Fs}async function co(r){let e=fe(r),{data:t}=await e.rateLimit.get(),s=t.resources.search;return{remaining:s.remaining,limit:s.limit,resetAt:new Date(s.reset*1e3).toISOString()}}var Is,ul,Fs,Ui,Lt=k(()=>{"use strict";Gi();xi();he();Is="github",ul=Oi.plugin(Ds),Fs=null,Ui=null});async function Us(r,e,t){let s=0,o=!1,n=async()=>{for(;s<r.length&&!o;){let a=r[s++];try{await e(a)}catch(c){throw o=!0,c}}},i=Math.min(t,r.length);await Promise.all(Array.from({length:i},()=>n()))}var uo=k(()=>{"use strict"});async function je(r,e=100,t=10){let s=[];for(let o=1;o<=t;o++){let{data:n}=await r(o);if(s.push(...n),n.length<e)break}return s}var os=k(()=>{"use strict"});function et(){return lo||(lo=new Ls),lo}async function ns(r,e,t){let s=r.getInflight(e);if(s)return T(dt,`Dedup hit for ${e}`),await s;let n=(async()=>{let a={},c=r.get(e);c&&(a["if-none-match"]=c.etag);try{let u=await t(a),l=u.headers?.etag;return l&&r.set(e,l,u.data),u.data}catch(u){if(pl(u)){let l=r.get(e);if(l)return T(dt,`304 cache hit for ${e}`),l.body}throw u}})(),i=r.setInflight(e,n);try{return await n}finally{i()}}async function js(r,e,t,s){let o=r.getIfFresh(e,t);if(o)return T(dt,`Time-based cache hit for ${e}`),o;let n=await s();return r.set(e,"",n),n}function pl(r){return ve(r)===304}var Ce,Ms,Mi,dt,ll,Ls,lo,jt=k(()=>{"use strict";Ce=z(require("fs"),1),Ms=z(require("path"),1),Mi=z(require("crypto"),1);Te();he();ue();dt="http-cache",ll=1440*60*1e3,Ls=class{cacheDir;inflightRequests=new Map;constructor(e){this.cacheDir=e??Ts()}keyFor(e){return Mi.createHash("sha256").update(e).digest("hex")}pathFor(e){return Ms.join(this.cacheDir,`${this.keyFor(e)}.json`)}getIfFresh(e,t){let s=this.get(e);if(!s)return null;let o=Date.now()-new Date(s.cachedAt).getTime();return!Number.isFinite(o)||o<0||o>t?null:s.body}get(e){let t=this.pathFor(e);try{let s=Ce.readFileSync(t,"utf-8"),o=JSON.parse(s);return o.url!==e?(T(dt,`Cache collision detected for ${e}, ignoring`),null):o}catch{return null}}set(e,t,s){let o={etag:t,url:e,body:s,cachedAt:new Date().toISOString()};try{Ce.writeFileSync(this.pathFor(e),JSON.stringify(o),{encoding:"utf-8",mode:384}),T(dt,`Cached response for ${e}`)}catch(n){T(dt,`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=ll){let t=0;try{let s=Ce.readdirSync(this.cacheDir),o=Date.now();for(let n of s){if(!n.endsWith(".json"))continue;let i=Ms.join(this.cacheDir,n);try{let a=Ce.readFileSync(i,"utf-8"),c=JSON.parse(a);o-new Date(c.cachedAt).getTime()>e&&(Ce.unlinkSync(i),t++)}catch{try{Ce.unlinkSync(i),t++}catch{}}}}catch{}return t>0&&T(dt,`Evicted ${t} stale cache entries`),t}clear(){try{let e=Ce.readdirSync(this.cacheDir);for(let t of e)t.endsWith(".json")&&Ce.unlinkSync(Ms.join(this.cacheDir,t));T(dt,"Cache cleared")}catch{}}size(){try{return Ce.readdirSync(this.cacheDir).filter(e=>e.endsWith(".json")).length}catch{return 0}}},lo=null});function po(r,e,t){if(t==="cancelled"||t==="timed_out")return"infrastructure";let s=r.toLowerCase();if(ji.some(o=>o.test(s)))return"auth_gate";if(Li.some(o=>o.test(s)))return"fork_limitation";if(Ni.some(o=>o.test(s)))return"infrastructure";if(e){let o=e.toLowerCase();if(ji.some(n=>n.test(o)))return"auth_gate";if(Li.some(n=>n.test(o)))return"fork_limitation";if(Ni.some(n=>n.test(o)))return"infrastructure"}return"actionable"}function Ns(r,e){return r.map(t=>{let s=e?.get(t);return{name:t,category:po(t,void 0,s),conclusion:s}})}function Hi(r){let e=!1,t=!1,s=!1,o=[],n=new Map;for(let i of r)i.conclusion==="failure"||i.conclusion==="cancelled"||i.conclusion==="timed_out"?(e=!0,o.push(i.name),n.set(i.name,i.conclusion)):i.conclusion==="action_required"||i.status==="in_progress"||i.status==="queued"?t=!0:i.conclusion==="success"&&(s=!0);return{hasFailingChecks:e,hasPendingChecks:t,hasSuccessfulChecks:s,failingCheckNames:o,failingCheckConclusions:n}}function qi(r){let e=r.statuses.filter(c=>{let u=(c.description||"").toLowerCase();return!(c.state==="failure"&&(u.includes("authorization required")||u.includes("authorize")))}),t=e.some(c=>c.state==="failure"||c.state==="error"),s=e.some(c=>c.state==="pending"),o=e.some(c=>c.state==="success"),n=t?"failure":s?"pending":o||e.length===0?"success":r.state,i=r.statuses.length>0,a=[];for(let c of e)(c.state==="failure"||c.state==="error")&&a.push(c.context);return{effectiveCombinedState:n,hasStatuses:i,failingStatusNames:a}}function Bi(r,e,t){let{hasFailingChecks:s,hasPendingChecks:o,hasSuccessfulChecks:n,failingCheckNames:i,failingCheckConclusions:a}=r,{effectiveCombinedState:c,hasStatuses:u,failingStatusNames:l}=e,d=[...i,...l];return s||c==="failure"||c==="error"?{status:"failing",failingCheckNames:d,failingCheckConclusions:a}:o||c==="pending"?{status:"pending",failingCheckNames:[],failingCheckConclusions:new Map}:n||c==="success"?{status:"passing",failingCheckNames:[],failingCheckConclusions:new Map}:!u&&t===0?{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}:{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}}var Li,ji,Ni,go=k(()=>{"use strict";Li=[/vercel/i,/netlify/i,/\bpreview\s*deploy/i,/\bdeploy\s*preview/i,/storybook/i,/chromatic/i,/percy/i,/cloudflare pages/i],ji=[/authoriz/i,/approval/i,/\bcla\b/i,/license\/cla/i],Ni=[/\binstall\s*(os\s*)?dep(endenc|s\b)/i,/\bsetup\s+fail(ed|ure)?\b/i,/\bservice\s*unavailable/i,/\binfrastructure/i]});function Nt(r){return r.includes("[bot]")||dl.has(r.toLowerCase())}function is(r){if(!r||r.length>100||r.includes("?"))return!1;let e=r.toLowerCase();return["thanks","thank you","lgtm","looks good","will review","we'll review","we'll get to this","noted","got it","will look","will check"].some(s=>e.includes(s))}var dl,Hs=k(()=>{"use strict";dl=new Set(["allcontributors","changeset-bot","claassistant","codecov-commenter","greenkeeper","imgbot","netlify","renovate","snyk-bot","sonarcloud","stale","vercel"])});function Vi(r){if(r.length===0)return"review_required";let e=new Map;for(let s of r){let o=s.user?.login,n=s.state;o&&n&&e.set(o,n)}let t=Array.from(e.values());return t.includes("CHANGES_REQUESTED")?"changes_requested":t.includes("APPROVED")?"approved":"review_required"}function Wi(r){let e;for(let t of r)t.state==="CHANGES_REQUESTED"&&t.submitted_at&&(!e||t.submitted_at>e)&&(e=t.submitted_at);return e}function gl(r,e){let t=e.filter(o=>o.pull_request_review_id===r);if(t.length===0)return!1;let s=new Map;for(let o of e)o.user?.login&&s.set(o.id,o.user.login.toLowerCase());return t.every(o=>{if(!o.in_reply_to_id)return!1;let n=s.get(o.in_reply_to_id),i=o.user?.login?.toLowerCase();return!(n==null||i==null||n!==i||!o.body||o.body.includes("?"))})}function ml(r,e){return e.find(t=>t.pull_request_review_id===r&&t.body?.trim())?.body?.trim()}function zi(r,e,t,s){let o=[],n=s.toLowerCase();for(let c of r){let u=c.user?.login||"unknown";o.push({author:u,body:c.body||"",createdAt:c.created_at,isUser:u.toLowerCase()===n})}for(let c of e){if(!c.submitted_at)continue;let u=(c.body||"").trim();if(!u&&c.state!=="COMMENTED"&&c.state!=="CHANGES_REQUESTED")continue;let l=c.user?.login||"unknown";if(!u&&c.state==="COMMENTED"&&c.id!=null&&gl(c.id,t))continue;let d=u||(c.id!=null?ml(c.id,t):void 0)||(c.state==="CHANGES_REQUESTED"?"(requested changes via inline review comments)":"(posted inline review comments)");o.push({author:l,body:d,createdAt:c.submitted_at,isUser:l.toLowerCase()===n})}o.sort((c,u)=>new Date(c.createdAt).getTime()-new Date(u.createdAt).getTime());let i=null;for(let c of o)c.isUser&&(i=new Date(c.createdAt));let a;for(let c of o){if(c.isUser||c.author==="unknown"||Nt(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&&is(a.body)&&(a=void 0),{hasUnrespondedComment:!!a,lastMaintainerComment:a}}var Ji=k(()=>{"use strict";Hs()});function Ki(r){return hl.test(r.toLowerCase())}function Qi(r){if(!r)return{hasIncompleteChecklist:!1};let e=/- \[x\]/gi,t=/^.*- \[ \].*$/gm,s=r.match(e)||[],o=r.match(t)||[],n=s.length;if(n+o.length===0)return{hasIncompleteChecklist:!1};let a=o.filter(u=>!Ki(u)),c=n+a.length;return{hasIncompleteChecklist:a.length>0,checklistStats:{checked:n,total:c}}}var hl,mo=k(()=>{"use strict";hl=/\(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 Yi(r,e){let t=[];if(e==="changes_requested"&&t.push("changes_requested"),!r)return t;let s=r.toLowerCase();return["screenshot","demo","recording","screen recording","before/after","before and after","gif","video","screencast","show me","can you show"].some(c=>s.includes(c))&&t.push("demo_requested"),["add test","test coverage","unit test","missing test","add a test","write test","needs test","need test"].some(c=>s.includes(c))&&t.push("tests_requested"),["documentation","readme","jsdoc","docstring","add docs","update docs","document this"].some(c=>s.includes(c))&&t.push("docs_requested"),["rebase","merge conflict","out of date","behind main","behind master"].some(c=>s.includes(c))&&t.push("rebase_requested"),t}var Xi=k(()=>{"use strict"});function qs(r){if(r.status==="needs_addressing"&&r.actionReason){let e=fl[r.actionReason];if(e)return{displayLabel:e.label,displayDescription:e.description(r)}}if(r.status==="waiting_on_maintainer"&&r.waitReason){let e=bl[r.waitReason];if(e)return{displayLabel:e.label,displayDescription:e.description(r)}}return m("display-utils",`PR ${r.url} has status "${r.status}" but no matching reason (actionReason=${r.actionReason}, waitReason=${r.waitReason})`),r.status==="needs_addressing"?{displayLabel:"[Needs Addressing]",displayDescription:"Action required"}:{displayLabel:"[Waiting on Maintainer]",displayDescription:"Awaiting maintainer action"}}var fl,bl,ho=k(()=>{"use strict";he();fl={needs_response:{label:"[Needs Response]",description:r=>r.lastMaintainerComment?`@${r.lastMaintainerComment.author} commented`:"Maintainer awaiting response"},needs_changes:{label:"[Needs Changes]",description:()=>"Review requested changes \u2014 push commits to address"},failing_ci:{label:"[CI Failing]",description:r=>{let e=r.classifiedChecks||[],t=e.filter(n=>n.category==="actionable");if(t.length>0)return`${t.length} check${t.length===1?"":"s"} failed: ${t.map(n=>n.name).join(", ")}`;let s=e.filter(n=>n.category==="infrastructure");if(s.length>0)return`${s.length} check${s.length===1?"":"s"} cancelled/timed out (infrastructure)`;let o=r.failingCheckNames||[];return o.length>0?`${o.length} check${o.length===1?"":"s"} failed`:"One or more CI checks are failing"}},merge_conflict:{label:"[Merge Conflict]",description:()=>"PR has merge conflicts with the base branch"},incomplete_checklist:{label:"[Incomplete Checklist]",description:r=>r.checklistStats?`${r.checklistStats.checked}/${r.checklistStats.total} items checked`:"PR body has unchecked required checkboxes"},ci_not_running:{label:"[CI Not Running]",description:()=>"No CI checks have been triggered"},needs_rebase:{label:"[Needs Rebase]",description:()=>"PR branch is significantly behind upstream"},missing_required_files:{label:"[Missing Files]",description:r=>r.missingRequiredFiles?`Missing: ${r.missingRequiredFiles.join(", ")}`:"Required files are missing"}},bl={pending_review:{label:"[Waiting on Maintainer]",description:()=>"Awaiting review"},pending_merge:{label:"[Waiting on Maintainer]",description:()=>"Approved and CI passes \u2014 waiting for merge"},changes_addressed:{label:"[Waiting on Maintainer]",description:r=>r.hasUnrespondedComment&&r.lastMaintainerComment?`Changes addressed \u2014 waiting for @${r.lastMaintainerComment.author} to re-review`:"Changes addressed \u2014 awaiting re-review"},ci_blocked:{label:"[CI Blocked]",description:r=>{let e=r.classifiedChecks||[];return e.length>0&&e.every(t=>t.category!=="actionable")?`All failing checks are non-actionable (${[...new Set(e.map(s=>s.category))].join(", ")})`:"CI checks are failing but no action is needed from you"}}}});function St(){return{repos:new Map,monthlyCounts:{},monthlyOpenedCounts:{},dailyActivityCounts:{}}}function _l(r){if(typeof r!="object"||r===null)return!1;let e=r;return Array.isArray(e.reposEntries)&&typeof e.monthlyCounts=="object"&&e.monthlyCounts!==null&&typeof e.monthlyOpenedCounts=="object"&&e.monthlyOpenedCounts!==null&&typeof e.dailyActivityCounts=="object"&&e.dailyActivityCounts!==null}async function Zi(r,e,t,s,o,n){if(!e)return St();let i=et(),a=n?`:stars${n.minStars}`:"",c=`pr-counts:v3:${s}:${e}${a}`,u=i.getIfFresh(c,yl);if(u&&_l(u))return T(ae,`Using cached ${s} PR counts for @${e}`),{repos:new Map(u.reposEntries),monthlyCounts:u.monthlyCounts,monthlyOpenedCounts:u.monthlyOpenedCounts,dailyActivityCounts:u.dailyActivityCounts};T(ae,`Fetching ${s} PR counts for @${e}...`);let l=new Map,d={},g={},E={},_=1,w=0,P;for(;;){let{data:b}=await r.search.issuesAndPullRequests({q:`is:pr ${t} author:${e} -user:${e}`,sort:"updated",order:"desc",per_page:100,page:_});P=b.total_count;for(let C of b.items){let D=yt(C.html_url);if(!D){m(ae,`Skipping ${s} PR with unparseable URL: ${C.html_url}`);continue}let{owner:N}=D,x=`${N}/${D.repo}`;if(Me(N,e)||n&&Ye(n.knownStarCounts.get(x),n.minStars))continue;let O=o(l,x,C);if(O){let A=O.slice(0,7);d[A]=(d[A]||0)+1;let q=O.slice(0,10);q.length===10&&(E[q]=(E[q]||0)+1)}if(C.created_at){let A=C.created_at.slice(0,7);g[A]=(g[A]||0)+1;let q=C.created_at.slice(0,10);q.length===10&&(E[q]=(E[q]||0)+1)}}if(w+=b.items.length,w>=b.total_count||w>=1e3||b.items.length===0||_>=vt)break;_++}return w<P&&_>=vt&&m(ae,`Pagination capped at ${vt} pages: fetched ${w} of ${P} ${s} PRs. Stats may be incomplete for prolific contributors.`),T(ae,`Found ${w} ${s} PRs across ${l.size} repos`),i.set(c,"",{reposEntries:Array.from(l.entries()),monthlyCounts:d,monthlyOpenedCounts:g,dailyActivityCounts:E}),{repos:l,monthlyCounts:d,monthlyOpenedCounts:g,dailyActivityCounts:E}}function ea(r,e,t){return Zi(r,e,"is:merged","merged",(s,o,n)=>{n.pull_request?.merged_at||m(ae,`merged_at missing for merged PR ${n.html_url}${n.closed_at?", falling back to closed_at":", no date available"}`);let i=n.pull_request?.merged_at||n.closed_at||"",a=s.get(o);return a?(a.count+=1,i&&i>a.lastMergedAt&&(a.lastMergedAt=i)):s.set(o,{count:1,lastMergedAt:i}),i},t)}function ta(r,e,t){return Zi(r,e,"is:closed is:unmerged","closed",(s,o,n)=>(s.set(o,(s.get(o)||0)+1),n.closed_at||""),t)}async function sa(r,e,t,s,o,n){if(!e.githubUsername)return m(ae,`Skipping recently ${s} PRs fetch: no githubUsername configured. Run /setup-oss to configure.`),[];let i=new Date;i.setDate(i.getDate()-o);let a=i.toISOString().split("T")[0];T(ae,`Fetching recently ${s} PRs for @${e.githubUsername} (since ${a})...`);let{data:c}=await r.search.issuesAndPullRequests({q:t.replace("{username}",e.githubUsername).replace("{since}",a),sort:"updated",order:"desc",per_page:100}),u=[];for(let l of c.items){let d=de(l.html_url);if(!d){m(ae,`Could not parse GitHub URL from API response: ${l.html_url}`);continue}let g=`${d.owner}/${d.repo}`;Me(d.owner,e.githubUsername)||u.push(n(l,{owner:d.owner,repo:g,number:d.number}))}return T(ae,`Found ${u.length} recently ${s} PRs`),u}async function ra(r,e,t=7){return sa(r,e,"is:pr is:closed is:unmerged author:{username} closed:>={since}","closed",t,(s,{repo:o,number:n})=>({url:s.html_url,repo:o,number:n,title:s.title,closedAt:s.closed_at||""}))}async function oa(r,e,t=7){return sa(r,e,"is:pr is:merged author:{username} merged:>={since}","merged",t,(s,{repo:o,number:n})=>{let i=s.pull_request?.merged_at;return i||m(ae,`merged_at missing for merged PR ${s.html_url}${s.closed_at?", falling back to closed_at":", no date available"}`),{url:s.html_url,repo:o,number:n,title:s.title,mergedAt:i||s.closed_at||""}})}async function na(r,e,t){if(!e.githubUsername)return m(ae,"Skipping merged PRs fetch: no githubUsername configured."),[];let s=t?` merged:>${t}`:"",o=`is:pr is:merged author:${e.githubUsername} -user:${e.githubUsername}${s}`;T(ae,`Fetching merged PRs${t?` since ${t}`:" (all time)"}...`);let n=[],i=1,a=0;for(;;){let{data:c}=await r.search.issuesAndPullRequests({q:o,sort:"updated",order:"desc",per_page:100,page:i});for(let u of c.items){let l=de(u.html_url);if(!l){m(ae,`Skipping merged PR with unparseable URL: ${u.html_url}`);continue}if(Me(l.owner,e.githubUsername))continue;let d=u.pull_request?.merged_at||u.closed_at||"";if(!d){m(ae,`Skipping merged PR with no merge date: ${u.html_url}`);continue}n.push({url:u.html_url,title:u.title,mergedAt:d})}if(a+=c.items.length,a>=c.total_count||a>=1e3||c.items.length===0||i>=vt)break;i++}return T(ae,`Fetched ${n.length} merged PRs${t?" (incremental)":" (initial)"}`),n}async function ia(r,e,t){if(!e.githubUsername)return m(ae,"Skipping closed PRs fetch: no githubUsername configured."),[];let s=t?` closed:>${t}`:"",o=`is:pr is:closed is:unmerged author:${e.githubUsername} -user:${e.githubUsername}${s}`;T(ae,`Fetching closed PRs${t?` since ${t}`:" (all time)"}...`);let n=[],i=1,a=0,c;for(;;){let{data:u}=await r.search.issuesAndPullRequests({q:o,sort:"updated",order:"desc",per_page:100,page:i});c=u.total_count;for(let l of u.items){let d=de(l.html_url);if(!d){m(ae,`Skipping closed PR with unparseable URL: ${l.html_url}`);continue}if(Me(d.owner,e.githubUsername))continue;let g=l.closed_at||"";if(!g){m(ae,`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>=vt)break;i++}return a<c&&i>=vt&&m(ae,`Pagination capped at ${vt} pages: fetched ${a} of ${c} closed PRs. Oldest PRs may be missing.`),T(ae,`Fetched ${n.length} closed PRs${t?" (incremental)":" (initial)"}`),n}var ae,yl,vt,Bs=k(()=>{"use strict";Te();it();he();jt();ae="github-stats",yl=1440*60*1e3,vt=3});var Vs,Rl,Pt,aa=k(()=>{"use strict";Lt();xt();Te();uo();ue();os();he();jt();go();Ji();mo();Xi();ho();Bs();ho();go();mo();Vs="pr-monitor",Rl=ct,Pt=class r{octokit;stateManager;constructor(e){this.octokit=fe(e),this.stateManager=L()}async fetchUserOpenPRs(){let e=this.stateManager.getState().config;if(!e.githubUsername)throw new Xe("No GitHub username configured. Run setup first.");T("pr-monitor",`Fetching open PRs for @${e.githubUsername}...`);let t=[],s=1,o=100,n=await this.octokit.search.issuesAndPullRequests({q:`is:pr is:open author:${e.githubUsername}`,sort:"updated",order:"desc",per_page:o,page:1});t.push(...n.data.items);let i=n.data.total_count;T("pr-monitor",`Found ${i} open PRs`);let a=Math.min(Math.ceil(i/o),10);for(;s<a;){s++;let d=await this.octokit.search.issuesAndPullRequests({q:`is:pr is:open author:${e.githubUsername}`,sort:"updated",order:"desc",per_page:o,page:s});t.push(...d.data.items)}let c=[],u=[],l=t.filter(d=>{if(!d.pull_request)return!1;let g=yt(d.html_url);return g?!Me(g.owner,e.githubUsername):(m("pr-monitor",`Skipping PR with unparseable URL: ${d.html_url}`),!1)});return T("pr-monitor",`Filtered to ${l.length} PRs after excluding own repos`),await jr("pr-monitor",`Fetch details for ${l.length} PRs`,async()=>{await Us(l,async d=>{try{T("pr-monitor",`Fetching details for ${d.html_url}`);let g=await this.fetchPRDetails(d.html_url);g&&c.push(g)}catch(g){let E=v(g);m("pr-monitor",`Error fetching ${d.html_url}: ${E}`),u.push({prUrl:d.html_url,error:E})}},Rl)}),c.sort((d,g)=>d.status===g.status?0:d.status==="needs_addressing"?-1:1),{prs:c,failures:u}}async fetchPRDetails(e){let t=de(e);if(!t||t.type!=="pull")throw new Z(`Invalid PR URL format: ${e}`);let{owner:s,repo:o,number:n}=t,i=this.stateManager.getState().config,[a,c,u,l]=await Promise.all([this.octokit.pulls.get({owner:s,repo:o,pull_number:n}),je(F=>this.octokit.issues.listComments({owner:s,repo:o,issue_number:n,per_page:100,page:F})),this.octokit.pulls.listReviews({owner:s,repo:o,pull_number:n}),je(F=>this.octokit.pulls.listReviewComments({owner:s,repo:o,pull_number:n,per_page:100,page:F})).catch(F=>{let B=ve(F);if(B===429)throw F;if(B===403){let X=v(F).toLowerCase();if(X.includes("rate limit")||X.includes("abuse detection"))throw F;return m("pr-monitor",`403 fetching review comments for ${s}/${o}#${n}: ${X}`),[]}return B===404?T("pr-monitor",`Review comments 404 for ${s}/${o}#${n} (likely no inline comments)`):m("pr-monitor",`Failed to fetch review comments for ${s}/${o}#${n} (status ${B??"unknown"}): self-reply detection will be skipped`),[]})]),d=a.data,g=u.data,E=Vi(g),_=this.hasMergeConflict(d.mergeable,d.mergeable_state),{hasUnrespondedComment:w,lastMaintainerComment:P}=zi(c,g,l,i.githubUsername),b=this.getCIStatus(s,o,d.head.sha),D=w||E==="changes_requested"?this.octokit.repos.getCommit({owner:s,repo:o,ref:d.head.sha}).then(F=>({date:F.data.commit.author?.date,author:F.data.author?.login})).catch(F=>{let B=ve(F);if(B===429)throw F;if(B===403){let X=v(F).toLowerCase();if(X.includes("rate limit")||X.includes("abuse detection"))throw F;m("pr-monitor",`403 fetching commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${v(F)}`);return}m("pr-monitor",`Failed to fetch commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${v(F)}`)}):Promise.resolve(void 0),[{status:N,failingCheckNames:x,failingCheckConclusions:O},A]=await Promise.all([b,D]),q=A?.date,j=A?.author,{hasIncompleteChecklist:be,checklistStats:me}=Qi(d.body||""),G=Yi(P?.body,E),se=Ie(new Date(d.updated_at),new Date),Fe=Wi(g),Ge=Ns(x,O),ot=N==="failing"&&Ge.some(F=>F.category==="actionable"),{status:$e,actionReason:xe,waitReason:qe,stalenessTier:I}=this.determineStatus({ciStatus:N,hasMergeConflict:_,hasUnrespondedComment:w,hasIncompleteChecklist:be,reviewDecision:E,daysSinceActivity:se,dormantThreshold:i.dormantThresholdDays,approachingThreshold:i.approachingDormantDays,latestCommitDate:q,latestCommitAuthor:j,contributorUsername:i.githubUsername,lastMaintainerCommentDate:P?.createdAt,latestChangesRequestedDate:Fe,hasActionableCIFailure:ot});return this.buildFetchedPR({id:d.id,url:e,repo:`${s}/${o}`,number:n,title:d.title,status:$e,actionReason:xe,waitReason:qe,stalenessTier:I,createdAt:d.created_at,updatedAt:d.updated_at,daysSinceActivity:se,ciStatus:N,failingCheckNames:x,classifiedChecks:Ge,hasMergeConflict:_,reviewDecision:E,hasUnrespondedComment:w,lastMaintainerComment:P,latestCommitDate:q,hasIncompleteChecklist:be,checklistStats:me,maintainerActionHints:G})}buildFetchedPR(e){let t={...e,displayLabel:"",displayDescription:""},{displayLabel:s,displayDescription:o}=qs(t);return t.displayLabel=s,t.displayDescription=o,t}determineStatus(e){let{ciStatus:t,hasMergeConflict:s,hasUnrespondedComment:o,hasIncompleteChecklist:n,reviewDecision:i,daysSinceActivity:a,dormantThreshold:c,approachingThreshold:u,latestCommitDate:l,latestCommitAuthor:d,contributorUsername:g,lastMaintainerCommentDate:E,latestChangesRequestedDate:_,hasActionableCIFailure:w=!0}=e,P="active";a>=c?P="dormant":a>=u&&(P="approaching_dormant");let b=l&&this.isContributorCommit(d,g)?l:void 0;return o?b&&E&&this.isCommitAfterComment(b,E)?_&&b<_?{status:"needs_addressing",actionReason:"needs_response",stalenessTier:P}:t==="failing"&&w?{status:"needs_addressing",actionReason:"failing_ci",stalenessTier:P}:{status:"waiting_on_maintainer",waitReason:"changes_addressed",stalenessTier:P}:{status:"needs_addressing",actionReason:"needs_response",stalenessTier:P}:i==="changes_requested"&&_?!b||b<_?{status:"needs_addressing",actionReason:"needs_changes",stalenessTier:P}:t==="failing"&&w?{status:"needs_addressing",actionReason:"failing_ci",stalenessTier:P}:{status:"waiting_on_maintainer",waitReason:"changes_addressed",stalenessTier:P}:t==="failing"?w?{status:"needs_addressing",actionReason:"failing_ci",stalenessTier:P}:{status:"waiting_on_maintainer",waitReason:"ci_blocked",stalenessTier:P}:s?{status:"needs_addressing",actionReason:"merge_conflict",stalenessTier:P}:n?{status:"needs_addressing",actionReason:"incomplete_checklist",stalenessTier:P}:i==="approved"&&(t==="passing"||t==="unknown")?{status:"waiting_on_maintainer",waitReason:"pending_merge",stalenessTier:P}:{status:"waiting_on_maintainer",waitReason:"pending_review",stalenessTier:P}}static CI_FIX_BOTS=new Set(["autofix-ci[bot]","prettier-ci[bot]","pre-commit-ci[bot]"]);isContributorCommit(e,t){if(!e||!t)return!0;let s=e.toLowerCase();return r.CI_FIX_BOTS.has(s)?!0:s===t.toLowerCase()}static MIN_RESPONSE_GAP_MS=120*1e3;isCommitAfterComment(e,t){let s=new Date(e).getTime(),o=new Date(t).getTime();return Number.isNaN(s)||Number.isNaN(o)?e>t:s-o>=r.MIN_RESPONSE_GAP_MS}hasMergeConflict(e,t){return e===!1||t==="dirty"}async getCIStatus(e,t,s){if(!s)return{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map};try{let[o,n]=await Promise.all([this.octokit.repos.getCombinedStatusForRef({owner:e,repo:t,ref:s}),this.octokit.checks.listForRef({owner:e,repo:t,ref:s}).catch(g=>{let E=ve(g);if(E===429)throw g;if(E===403){let _=v(g).toLowerCase();if(_.includes("rate limit")||_.includes("abuse detection"))throw g}return E===404?T("pr-monitor",`Check runs 404 for ${e}/${t}@${s.slice(0,7)} (no checks configured)`):m("pr-monitor",`Non-404 error fetching check runs for ${e}/${t}@${s.slice(0,7)}: ${E??g}`),null})]),i=o.data,a=n?.data?.check_runs||[],c=new Map;for(let g of a){let E=c.get(g.name);(!E||new Date(g.started_at??0)>new Date(E.started_at??0))&&c.set(g.name,g)}let u=[...c.values()],l=Hi(u),d=qi(i);return Bi(l,d,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)`),{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}):(m("pr-monitor",`Failed to check CI for ${e}/${t}@${s.slice(0,7)}: ${v(o)}`),{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map})}}async fetchUserMergedPRCounts(e){let t=this.stateManager.getState().config;return ea(this.octokit,t.githubUsername,e)}async fetchUserClosedPRCounts(e){let t=this.stateManager.getState().config;return ta(this.octokit,t.githubUsername,e)}async fetchRepoStarCounts(e){if(e.length===0)return new Map;T(Vs,`Fetching star counts for ${e.length} repos...`);let t=new Map,s=et(),o=[...new Set(e)],n=10;for(let i=0;i<o.length;i+=n){let a=o.slice(i,i+n),c=await Promise.allSettled(a.map(async l=>{let d=l.split("/");if(d.length!==2||!d[0]||!d[1])throw new Z(`Malformed repo identifier: "${l}"`);let[g,E]=d,_=`/repos/${g}/${E}`,w=await ns(s,_,P=>this.octokit.repos.get({owner:g,repo:E,headers:P}));return{repo:l,stars:w.stargazers_count}})),u=0;for(let l=0;l<c.length;l++){let d=c[l];d.status==="fulfilled"?t.set(d.value.repo,d.value.stars):(u++,m(Vs,`Failed to fetch stars for ${a[l]}: ${v(d.reason)}`))}if(u===a.length&&a.length>0){let l=o.length-i-n;l>0&&m(Vs,`Entire chunk failed, aborting remaining ${l} repos`);break}}return T(Vs,`Fetched star counts for ${t.size}/${e.length} repos`),t}async fetchRecentlyClosedPRs(e=7){let t=this.stateManager.getState().config;return ra(this.octokit,t,e)}async fetchRecentlyMergedPRs(e=7){let t=this.stateManager.getState().config;return oa(this.octokit,t,e)}generateDigest(e,t=[],s=[]){let o=new Date().toISOString(),n=e.filter(c=>c.status==="needs_addressing"),i=e.filter(c=>c.status==="waiting_on_maintainer"),a=this.stateManager.getStats();return{generatedAt:o,openPRs:e,needsAddressingPRs:n,waitingOnMaintainerPRs:i,recentlyClosedPRs:t,recentlyMergedPRs:s,shelvedPRs:[],autoUnshelvedPRs:[],summary:{totalActivePRs:e.length,totalNeedingAttention:n.length,totalMergedAllTime:a.mergedPRs,mergeRate:parseFloat(a.mergeRate)}}}async updateRepoScoreFromObservedPR(e,t){t?this.stateManager.incrementMergedCount(e):this.stateManager.incrementClosedCount(e)}}});function Ws(r){if(!r.labels||!Array.isArray(r.labels)||r.labels.length===0)return!1;let t=r.labels.map(s=>(typeof s=="string"?s:s.name||"").toLowerCase()).filter(s=>s.length>0);return t.length===0?!1:t.every(s=>fo.has(s))}function ua(r){return!r.labels||!Array.isArray(r.labels)?!1:r.labels.map(s=>(typeof s=="string"?s:s.name||"").toLowerCase()).filter(s=>ca.has(s)).length>=5}function la(r){return r?/^.+\s+(question|fact|point|item|task|entry|post|challenge|exercise|example|problem|tip|recipe|snippet)\s+#?\d+$/i.test(r):!1}function bo(r){let e=new Set,t=new Map;for(let s of r){let o=s.repository_url.split("/").slice(-2).join("/");if(ua(s)){e.add(o);continue}s.title&&la(s.title)&&t.set(o,(t.get(o)||0)+1)}for(let[s,o]of t)o>=3&&e.add(s);return e}function zs(r,e){let t=new Map,s=[];for(let o of r){let n=t.get(o.issue.repo)||0;n<e&&(s.push(o),t.set(o.issue.repo,n+1))}return s}var fo,ca,yo=k(()=>{"use strict";fo=new Set(["documentation","docs","typo","spelling"]);ca=new Set(["good first issue","hacktoberfest","easy","up-for-grabs","first-timers-only","beginner-friendly","beginner","starter","newbie","low-hanging-fruit","community"])});function _o(r,e){let t=0;return r>=5e3?t+=8:r>=500?t+=5:r>=50&&(t+=3),e>=500?t+=4:e>=50&&(t+=2),t}function as(r){let e=50;r.repoScore!==null&&(e+=r.repoScore*2),e+=r.repoQualityBonus??0,r.mergedPRCount>0&&(e+=15),r.clearRequirements&&(e+=15);let t=new Date(r.issueUpdatedAt),s=Ie(t);return s<=14?e+=15:s<=30&&(e+=Math.round(15*(1-(s-14)/16))),r.hasContributionGuidelines&&(e+=10),r.orgHasMergedPRs&&(e+=5),r.matchesPreferredCategory&&(e+=5),r.hasExistingPR&&(e-=30),r.isClaimed&&(e-=20),r.closedWithoutMergeCount>0&&r.mergedPRCount===0&&(e-=15),Math.max(0,Math.min(100,e))}var Js=k(()=>{"use strict";Te()});function pa(r,e){if(e.length===0)return!1;let t=r.split("/")[0]?.toLowerCase();if(!t)return!1;for(let s of e){let o=El[s];if(o&&o.some(n=>n.toLowerCase()===t))return!0}return!1}function da(r){let e=new Set;for(let t of r){let s=wl[t];if(s)for(let o of s)e.add(o)}return[...e]}var wl,El,Ro=k(()=>{"use strict";wl={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"]},El={nonprofit:["code-for-america","opengovfoundation","ushahidi","hotosm","openfn","democracyearth"],devtools:["eslint","prettier","vitejs","biomejs","oxc-project","ast-grep","turbot"],infrastructure:["kubernetes","hashicorp","grafana","prometheus","open-telemetry","envoyproxy","cncf"],"web-frameworks":["vercel","remix-run","sveltejs","nuxt","astro","redwoodjs","blitz-js"],"data-ml":["huggingface","mlflow","apache","dbt-labs","dagster-io","prefecthq","langchain-ai"],education:["freeCodeCamp","TheOdinProject","exercism","codecademy","oppia","Khan"]}});function ma(){let r=Date.now();for(let[e,t]of tt.entries())r-t.fetchedAt>ha&&tt.delete(e);if(tt.size>ga){let t=Array.from(tt.entries()).sort((s,o)=>s[1].fetchedAt-o[1].fetchedAt).slice(0,tt.size-ga);for(let[s]of t)tt.delete(s)}}var gt,Tl,tt,ha,vl,ga,Ks,fa=k(()=>{"use strict";os();Te();ue();he();jt();Js();Ro();gt="issue-vetting",Tl=ct,tt=new Map,ha=3600*1e3,vl=14400*1e3,ga=100;Ks=class{octokit;stateManager;constructor(e,t){this.octokit=e,this.stateManager=t}async vetIssue(e){let t=de(e);if(!t||t.type!=="issues")throw new Z(`Invalid issue URL: ${e}`);let{owner:s,repo:o,number:n}=t,i=`${s}/${o}`,{data:a}=await this.octokit.issues.get({owner:s,repo:o,issue_number:n}),[c,u,l,d,g]=await Promise.all([this.checkNoExistingPR(s,o,n),this.checkNotClaimed(s,o,n,a.comments),this.checkProjectHealth(s,o),this.fetchContributionGuidelines(s,o),this.checkUserMergedPRsInRepo(s,o)]),E=c.passed,_=u.passed,w=this.analyzeRequirements(a.body||""),P=l.checkFailed?!0:l.isActive,b={passedAllChecks:E&&_&&P&&w,checks:{noExistingPR:E,notClaimed:_,projectActive:P,clearRequirements:w,contributionGuidelinesFound:!!d},contributionGuidelines:d,notes:[]};E||b.notes.push("Existing PR found for this issue"),_||b.notes.push("Issue appears to be claimed by someone"),c.inconclusive&&b.notes.push(`Could not verify absence of existing PRs: ${c.reason||"API error"}`),u.inconclusive&&b.notes.push(`Could not verify claim status: ${u.reason||"API error"}`),l.checkFailed?b.notes.push(`Could not verify project activity: ${l.failureReason||"API error"}`):l.isActive||b.notes.push("Project may be inactive"),w||b.notes.push("Issue requirements are unclear"),d||b.notes.push("No CONTRIBUTING.md found");let C={id:a.id,url:e,repo:i,number:n,title:a.title,status:"candidate",labels:a.labels.map(I=>typeof I=="string"?I:I.name||""),createdAt:a.created_at,updatedAt:a.updated_at,vetted:!0,vettingResult:b},D=[],N=[];E||D.push("Has existing PR"),_||D.push("Already claimed"),!l.isActive&&!l.checkFailed&&D.push("Inactive project"),w||D.push("Unclear requirements"),E&&N.push("No existing PR"),_&&N.push("Not claimed"),l.isActive&&!l.checkFailed&&N.push("Active project"),w&&N.push("Clear requirements"),d&&N.push("Has contribution guidelines");let x=this.stateManager.getState().config,O=this.stateManager.getRepoScore(i),A=O&&O.mergedPRCount>0?O.mergedPRCount:g;A>0?N.push(`Trusted project (${A} PR${A>1?"s":""} merged)`):x.trustedProjects.includes(i)&&N.push("Trusted project (previous PR merged)"),O&&(O.closedWithoutMergeCount>0&&A===0?D.push("User has rejected PR(s) in this repo with no successful merges"):O.closedWithoutMergeCount>0&&A>0&&b.notes.push(`Mixed history: ${A} merged, ${O.closedWithoutMergeCount} closed without merge`));let q=i.split("/")[0],j=!1;q&&i.includes("/")&&(j=Object.values(this.stateManager.getState().repoScores).some(I=>I.repo&&I.mergedPRCount>0&&I.repo.startsWith(q+"/")&&I.repo!==i)),j&&N.push(`Org affinity (merged PRs in other ${q} repos)`);let be=x.projectCategories??[],me=pa(i,be);me&&N.push("Matches preferred project category");let G;b.passedAllChecks?G="approve":D.length>2?G="skip":G="needs_review";let se=l.checkFailed||c.inconclusive||u.inconclusive;G==="approve"&&se&&(G="needs_review",b.notes.push("Recommendation downgraded: one or more checks were inconclusive"));let Fe=_o(l.stargazersCount??0,l.forksCount??0);l.checkFailed&&Fe===0&&b.notes.push("Repo quality bonus unavailable: could not fetch star/fork counts due to API error");let Ge=this.getRepoScore(i),ot=as({repoScore:Ge,hasExistingPR:!E,isClaimed:!_,clearRequirements:w,hasContributionGuidelines:!!d,issueUpdatedAt:a.updated_at,closedWithoutMergeCount:O?.closedWithoutMergeCount??0,mergedPRCount:A,orgHasMergedPRs:j,repoQualityBonus:Fe,matchesPreferredCategory:me}),$e=this.stateManager.getStarredRepos(),xe=x.preferredOrgs??[],qe="normal";return A>0?qe="merged_pr":xe.some(I=>I.toLowerCase()===q?.toLowerCase())?qe="preferred_org":$e.includes(i)&&(qe="starred"),{issue:C,vettingResult:b,projectHealth:l,recommendation:G,reasonsToSkip:D,reasonsToApprove:N,viabilityScore:ot,searchPriority:qe}}async vetIssuesParallel(e,t,s){let o=[],n=new Map,i=0,a=0,c=0;for(let l of e){if(o.length>=t)break;c++;let d=this.vetIssue(l).then(g=>{o.length<t&&(s&&(g.searchPriority=s),o.push(g))}).catch(g=>{i++,at(g)&&a++,m(gt,`Error vetting issue ${l}:`,v(g))}).finally(()=>n.delete(l));n.set(l,d),n.size>=Tl&&await Promise.race(n.values())}await Promise.allSettled(n.values());let u=i===c&&c>0;return u&&m(gt,`All ${c} issue(s) failed vetting. This may indicate a systemic issue (rate limit, auth, network).`),{candidates:o.slice(0,t),allFailed:u,rateLimitHit:a>0}}async checkNoExistingPR(e,t,s){try{let{data:o}=await this.octokit.search.issuesAndPullRequests({q:`repo:${e}/${t} is:pr ${s}`,per_page:5}),i=(await je(a=>this.octokit.issues.listEventsForTimeline({owner:e,repo:t,issue_number:s,per_page:100,page:a}))).filter(a=>{let c=a;return c.event==="cross-referenced"&&c.source?.issue?.pull_request});return{passed:o.total_count===0&&i.length===0}}catch(o){let n=v(o);return m(gt,`Failed to check for existing PRs on ${e}/${t}#${s}: ${n}. Assuming no existing PR.`),{passed:!0,inconclusive:!0,reason:n}}}async checkUserMergedPRsInRepo(e,t){try{let{data:s}=await this.octokit.search.issuesAndPullRequests({q:`repo:${e}/${t} is:pr is:merged author:@me`,per_page:1});return s.total_count}catch(s){let o=v(s);return m(gt,`Could not check merged PRs in ${e}/${t}: ${o}. Defaulting to 0.`),0}}async checkNotClaimed(e,t,s,o){if(o===0)return{passed:!0};try{let i=(await this.octokit.paginate(this.octokit.issues.listComments,{owner:e,repo:t,issue_number:s,per_page:100},c=>c.data)).slice(-100),a=["i'm working on this","i am working on this","i'll take this","i will take this","working on it","i'd like to work on","i would like to work on","can i work on","may i work on","assigned to me","i'm on it","i'll submit a pr","i will submit a pr","working on a fix","working on a pr"];for(let c of i){let u=(c.body||"").toLowerCase();if(a.some(l=>u.includes(l)))return{passed:!1}}return{passed:!0}}catch(n){let i=v(n);return m(gt,`Failed to check claim status on ${e}/${t}#${s}: ${i}. Assuming not claimed.`),{passed:!0,inconclusive:!0,reason:i}}}async checkProjectHealth(e,t){let s=et(),o=`health:${e}/${t}`;try{return await js(s,o,vl,async()=>{let n=`/repos/${e}/${t}`,i=await ns(s,n,g=>this.octokit.repos.get({owner:e,repo:t,headers:g})),{data:a}=await this.octokit.repos.listCommits({owner:e,repo:t,per_page:1}),u=a[0]?.commit?.author?.date||i.pushed_at,l=Ie(new Date(u)),d="unknown";try{let{data:g}=await this.octokit.actions.listRepoWorkflows({owner:e,repo:t,per_page:1});g.total_count>0&&(d="passing")}catch(g){let E=v(g);m(gt,`Failed to check CI status for ${e}/${t}: ${E}. Defaulting to unknown.`)}return{repo:`${e}/${t}`,lastCommitAt:u,daysSinceLastCommit:l,openIssuesCount:i.open_issues_count,avgIssueResponseDays:0,ciStatus:d,isActive:l<30,stargazersCount:i.stargazers_count,forksCount:i.forks_count}})}catch(n){let i=v(n);return m(gt,`Error checking project health for ${e}/${t}: ${i}`),{repo:`${e}/${t}`,lastCommitAt:"",daysSinceLastCommit:999,openIssuesCount:0,avgIssueResponseDays:0,ciStatus:"unknown",isActive:!1,checkFailed:!0,failureReason:i}}}async fetchContributionGuidelines(e,t){let s=`${e}/${t}`,o=tt.get(s);if(o&&Date.now()-o.fetchedAt<ha)return o.guidelines;let n=["CONTRIBUTING.md",".github/CONTRIBUTING.md","docs/CONTRIBUTING.md","contributing.md"],i=await Promise.allSettled(n.map(a=>this.octokit.repos.getContent({owner:e,repo:t,path:a}).then(({data:c})=>"content"in c?Buffer.from(c.content,"base64").toString("utf-8"):null)));for(let a=0;a<i.length;a++){let c=i[a];if(c.status==="fulfilled"&&c.value){let u=this.parseContributionGuidelines(c.value);return tt.set(s,{guidelines:u,fetchedAt:Date.now()}),ma(),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(gt,`Unexpected error fetching ${n[a]} from ${e}/${t}: ${u}`)}}tt.set(s,{guidelines:void 0,fetchedAt:Date.now()}),ma()}parseContributionGuidelines(e){let t={rawContent:e},s=e.toLowerCase();if(s.includes("branch")){let o=e.match(/branch[^\n]*(?:named?|format|convention)[^\n]*[`"]([^`"]+)[`"]/i);o&&(t.branchNamingConvention=o[1])}if(s.includes("conventional commit"))t.commitMessageFormat="conventional commits";else if(s.includes("commit message")){let o=e.match(/commit message[^\n]*[`"]([^`"]+)[`"]/i);o&&(t.commitMessageFormat=o[1])}return s.includes("jest")?t.testFramework="Jest":s.includes("rspec")?t.testFramework="RSpec":s.includes("pytest")?t.testFramework="pytest":s.includes("mocha")&&(t.testFramework="Mocha"),s.includes("eslint")?t.linter="ESLint":s.includes("rubocop")?t.linter="RuboCop":s.includes("prettier")&&(t.formatter="Prettier"),(s.includes("cla")||s.includes("contributor license agreement"))&&(t.claRequired=!0),t}analyzeRequirements(e){if(!e||e.length<50)return!1;let t=/\d\.|[-*]\s/.test(e),s=/```/.test(e),o=/expect|should|must|want/i.test(e);return[t,s,o,e.length>200].filter(Boolean).length>=2}getRepoScore(e){return this.stateManager.getState().repoScores?.[e]?.score??null}}});var ba,ya,W,Sl,Ct,_a=k(()=>{"use strict";ba=z(require("fs"),1),ya=z(require("path"),1);Lt();xt();Te();it();ue();he();jt();yo();fa();Js();Ro();yo();Js();W="issue-discovery",Sl=900*1e3,Ct=class{octokit;stateManager;githubToken;vetter;rateLimitWarning=null;constructor(e){this.githubToken=e,this.octokit=fe(e),this.stateManager=L(),this.vetter=new Ks(this.octokit,this.stateManager)}async cachedSearch(e){let t=`search:${e.q}:${e.sort}:${e.order}:${e.per_page}`;return js(et(),t,Sl,async()=>{let{data:s}=await this.octokit.search.issuesAndPullRequests(e);return s})}async fetchStarredRepos(){pe(W,"Fetching starred repositories...");let e=[];try{let t=this.octokit.paginate.iterator(this.octokit.activity.listReposStarredByAuthenticatedUser,{per_page:100}),s=0;for await(let{data:o}of t){for(let n of o){let i;"full_name"in n&&typeof n.full_name=="string"?i=n.full_name:"repo"in n&&n.repo&&typeof n.repo=="object"&&"full_name"in n.repo&&(i=n.repo.full_name),i&&e.push(i)}if(s++,s>=5){pe(W,"Reached pagination limit for starred repos (500)");break}}return pe(W,`Fetched ${e.length} starred repositories`),this.stateManager.setStarredRepos(e),e}catch(t){let s=this.stateManager.getStarredRepos(),o=v(t);return m(W,"Error fetching starred repos:",o),s.length===0?m(W,`Failed to fetch starred repositories from GitHub API. No cached repos available. Error: ${o}
|
|
46
|
+
Tip: Ensure your GITHUB_TOKEN has the 'read:user' scope and try again.`):m(W,`Failed to fetch starred repositories from GitHub API. Using ${s.length} cached repos instead. Error: ${o}`),s}}async getStarredReposWithRefresh(){return this.stateManager.isStarredReposStale()?this.fetchStarredRepos():this.stateManager.getStarredRepos()}async filterVetAndScore(e,t,s,o,n,i){let a=bo(e);if(a.size>0){let _=e.filter(w=>a.has(w.repository_url.split("/").slice(-2).join("/"))).length;T(W,`[SPAM_FILTER] Filtered ${_} issues from ${a.size} label-farming repos: ${[...a].join(", ")}`)}let c=t(e).filter(_=>{let w=_.repository_url.split("/").slice(-2).join("/");return a.has(w)?!1:s.every(P=>!P.has(w))}).slice(0,o*2);if(c.length===0)return T(W,`[${i}] All ${e.length} items filtered before vetting`),{candidates:[],allVetFailed:!1,rateLimitHit:!1};let{candidates:u,allFailed:l,rateLimitHit:d}=await this.vetter.vetIssuesParallel(c.map(_=>_.html_url),o,"normal"),g=u.filter(_=>_.projectHealth.checkFailed?!0:(_.projectHealth.stargazersCount??0)>=n),E=u.length-g.length;return E>0&&T(W,`[STAR_FILTER] Filtered ${E} ${i} candidates below ${n} stars`),{candidates:g,allVetFailed:l,rateLimitHit:d}}async searchIssues(e={}){let t=this.stateManager.getState().config,s=e.languages||t.languages,o=e.labels||t.labels,n=e.maxResults||10,i=t.minStars??50,a=[],c=null,u=null,l=!1;this.rateLimitWarning=null;try{let I=await co(this.githubToken);if(I.remaining<5){let F=new Date(I.resetAt).toLocaleTimeString("en-US",{hour12:!1});this.rateLimitWarning=`GitHub search API quota low (${I.remaining}/${I.limit} remaining, resets at ${F}). Search may be slow.`,m(W,this.rateLimitWarning)}}catch(I){if(ve(I)===401)throw I;m(W,"Could not check rate limit:",v(I))}let d=this.stateManager.getReposWithMergedPRs(),g=new Set(d),E=this.stateManager.getReposWithOpenPRs(),_=await this.getStarredReposWithRefresh(),w=new Set(_),P=new Set(this.stateManager.getLowScoringRepos(3)),b=new Set(this.stateManager.getState().activeIssues.map(I=>I.url)),C=new Set(t.excludeRepos),D=t.maxIssueAgeDays||90,N=new Date,x=o.map(I=>`label:"${I}"`).join(" "),A=s.some(I=>I.toLowerCase()==="any")?"":s.map(I=>`language:${I}`).join(" "),q=`is:issue is:open ${A} no:assignee`.replace(/ +/g," ").trim(),j=`is:issue is:open ${x} ${A} no:assignee`.replace(/ +/g," ").trim(),be=t.includeDocIssues??!0,me=new Set(t.aiPolicyBlocklist??ht.aiPolicyBlocklist??[]);me.size>0&&T(W,`[AI_POLICY_FILTER] Filtering issues from ${me.size} blocklisted repo(s): ${[...me].join(", ")}`);let G=I=>I.filter(F=>{if(b.has(F.html_url))return!1;let B=F.repository_url.split("/").slice(-2).join("/");if(C.has(B)||me.has(B)||P.has(B))return!1;let X=new Date(F.updated_at);return!(Ie(X,N)>D||!be&&Ws(F))}),se=[...d,...E.filter(I=>!g.has(I))].slice(0,10),Fe=new Set(se);if(se.length>0){let I=Math.min(d.length,se.length),F=se.length-I;pe(W,`Phase 0: Searching issues in ${se.length} repos (${I} merged-PR, ${F} open-PR, no label filter)...`);let B=se.slice(0,I);if(B.length>0){let le=n-a.length;if(le>0){let{candidates:re,allBatchesFailed:ie,rateLimitHit:Se}=await this.searchInRepos(B,q,le,"merged_pr",G);a.push(...re),ie&&(c="All merged-PR repo batches failed"),Se&&(l=!0),pe(W,`Found ${re.length} candidates from merged-PR repos`)}}let X=se.slice(I);if(X.length>0&&a.length<n){let le=n-a.length;if(le>0){let{candidates:re,allBatchesFailed:ie,rateLimitHit:Se}=await this.searchInRepos(X,q,le,"starred",G);if(a.push(...re),ie){let Be="All open-PR repo batches failed";c=c?`${c}; ${Be}`:Be}Se&&(l=!0),pe(W,`Found ${re.length} candidates from open-PR repos`)}}}let Ge=null,ot=t.preferredOrgs??[];if(a.length<n&&ot.length>0){let I=new Set(se.map(B=>B.split("/")[0]?.toLowerCase())),F=ot.filter(B=>!I.has(B.toLowerCase())).slice(0,5);if(F.length>0){pe(W,`Phase 0.5: Searching issues in ${F.length} preferred org(s)...`);let B=n-a.length,X=F.map(re=>`org:${re}`).join(" OR "),le=`${j} (${X})`;try{let re=await this.cachedSearch({q:le,sort:"created",order:"desc",per_page:B*3});if(re.items.length>0){let ie=G(re.items).filter(nt=>{let zt=nt.repository_url.split("/").slice(-2).join("/");return!Fe.has(zt)}),{candidates:Se,allFailed:Be,rateLimitHit:It}=await this.vetter.vetIssuesParallel(ie.slice(0,B*2).map(nt=>nt.html_url),B,"preferred_org");a.push(...Se),Be&&(Ge="All preferred org issue vetting failed"),It&&(l=!0),pe(W,`Found ${Se.length} candidates from preferred orgs`)}}catch(re){let ie=v(re);Ge=ie,at(re)&&(l=!0),m(W,`Error searching preferred orgs: ${ie}`)}}}if(a.length<n&&_.length>0){let I=_.filter(F=>!Fe.has(F));if(I.length>0){pe(W,`Phase 1: Searching issues in ${I.length} starred repos...`);let F=n-a.length;if(F>0){let{candidates:B,allBatchesFailed:X,rateLimitHit:le}=await this.searchInRepos(I.slice(0,10),j,F,"starred",G);a.push(...B),X&&(u="All starred repo batches failed"),le&&(l=!0),pe(W,`Found ${B.length} candidates from starred repos`)}}}let $e=null;if(a.length<n){pe(W,"Phase 2: General issue search...");let I=n-a.length;try{let F=await this.cachedSearch({q:j,sort:"created",order:"desc",per_page:I*3});pe(W,`Found ${F.total_count} issues in general search, processing top ${F.items.length}...`);let B=new Set(a.map(ie=>ie.issue.repo)),{candidates:X,allVetFailed:le,rateLimitHit:re}=await this.filterVetAndScore(F.items,G,[Fe,w,B],I,i,"Phase 2");a.push(...X),le&&($e=($e?$e+"; ":"")+"all vetting failed"),re&&(l=!0),pe(W,`Found ${X.length} candidates from general search`)}catch(F){let B=v(F);$e=B,at(F)&&(l=!0),m(W,`Error in general issue search: ${B}`)}}let xe=null;if(a.length<n){pe(W,"Phase 3: Searching actively maintained repos...");let I=n-a.length,F=new Date;F.setDate(F.getDate()-30);let B=F.toISOString().split("T")[0],X=da(t.projectCategories??[]),le=X.length>0?`topic:${X[0]}`:"",re=`is:issue is:open no:assignee ${A} ${le} stars:>=${i} pushed:>=${B} archived:false`.replace(/ +/g," ").trim();try{let ie=await this.cachedSearch({q:re,sort:"updated",order:"desc",per_page:I*3});pe(W,`Found ${ie.total_count} issues in maintained-repo search, processing top ${ie.items.length}...`);let Se=new Set(a.map(zt=>zt.issue.repo)),{candidates:Be,allVetFailed:It,rateLimitHit:nt}=await this.filterVetAndScore(ie.items,G,[Fe,w,Se],I,i,"Phase 3");a.push(...Be),It&&(xe="all vetting failed"),nt&&(l=!0),pe(W,`Found ${Be.length} candidates from maintained-repo search`)}catch(ie){let Se=v(ie);xe=Se,at(ie)&&(l=!0),m(W,`Error in maintained-repo search: ${Se}`)}}if(a.length===0){let I=[c?`Phase 0 (merged-PR repos): ${c}`:null,Ge?`Phase 0.5 (preferred orgs): ${Ge}`:null,u?`Phase 1 (starred repos): ${u}`:null,$e?`Phase 2 (general): ${$e}`:null,xe?`Phase 3 (maintained repos): ${xe}`:null].filter(Boolean),F=I.length>0?` ${I.join(". ")}.`:"";if(l)return this.rateLimitWarning=`Search returned no results due to GitHub API rate limits.${F} Try again after the rate limit resets.`,[];throw new Z(`No issue candidates found across all search phases.${F} Try adjusting your search criteria (languages, labels) or check your network connection.`)}return l&&(this.rateLimitWarning=`Search results may be incomplete: GitHub API rate limits were hit during search. Found ${a.length} candidate${a.length===1?"":"s"} but some search phases failed. Try again after the rate limit resets for complete results.`),a.sort((I,F)=>{let B={merged_pr:0,preferred_org:1,starred:2,normal:3},X=B[I.searchPriority]-B[F.searchPriority];if(X!==0)return X;let le={approve:0,needs_review:1,skip:2},re=le[I.recommendation]-le[F.recommendation];return re!==0?re:F.viabilityScore-I.viabilityScore}),zs(a,2).slice(0,n)}async searchInRepos(e,t,s,o,n){let i=[],c=this.batchRepos(e,5),u=0,l=0;for(let E of c){if(i.length>=s)break;try{let _=E.map(b=>`repo:${b}`).join(" OR "),w=`${t} (${_})`,P=await this.cachedSearch({q:w,sort:"created",order:"desc",per_page:Math.min(30,(s-i.length)*3)});if(P.items.length>0){let b=n(P.items),C=s-i.length,{candidates:D}=await this.vetter.vetIssuesParallel(b.slice(0,C*2).map(N=>N.html_url),C,o);i.push(...D)}}catch(_){u++,at(_)&&l++;let w=E.join(", ");m(W,`Error searching issues in batch [${w}]:`,v(_))}}let d=u===c.length&&c.length>0,g=l>0;return d&&m(W,`All ${c.length} batch(es) failed for ${o} phase. This may indicate a systemic issue (rate limit, auth, network).`),{candidates:i,allBatchesFailed:d,rateLimitHit:g}}batchRepos(e,t){let s=[];for(let o=0;o<e.length;o+=t)s.push(e.slice(o,o+t));return s}async vetIssue(e){return this.vetter.vetIssue(e)}analyzeRequirements(e){return this.vetter.analyzeRequirements(e)}calculateViabilityScore(e){return as(e)}saveSearchResults(e){let t=[...e].sort((a,c)=>c.viabilityScore-a.viabilityScore),s=Ue(),o=ya.join(s,"found-issues.md"),n=new Date().toISOString(),i=`# Found Issues
|
|
47
47
|
|
|
48
48
|
`;i+=`> Generated at: ${n}
|
|
49
49
|
|
|
50
50
|
`,i+=`| Score | Repo | Issue | Title | Labels | Updated | Recommendation |
|
|
51
51
|
`,i+=`|-------|------|-------|-------|--------|---------|----------------|
|
|
52
|
-
`;for(let a of t){let{issue:c,viabilityScore:u,recommendation:l}=a,d=c.labels.slice(0,3).join(", "),g=d.length>30?d.substring(0,27)+"...":d,
|
|
52
|
+
`;for(let a of t){let{issue:c,viabilityScore:u,recommendation:l}=a,d=c.labels.slice(0,3).join(", "),g=d.length>30?d.substring(0,27)+"...":d,E=c.title.length>50?c.title.substring(0,47)+"...":c.title,_=new Date(c.updatedAt).toLocaleDateString(),w=l==="approve"?"Y":l==="skip"?"N":"?";i+=`| ${u} | ${c.repo} | [#${c.number}](${c.url}) | ${E} | ${g} | ${_} | ${w} |
|
|
53
53
|
`}return i+=`
|
|
54
54
|
## Legend
|
|
55
55
|
|
|
56
56
|
`,i+=`- **Score**: Viability score (0-100)
|
|
57
57
|
`,i+=`- **Recommendation**: Y = approve, N = skip, ? = needs_review
|
|
58
|
-
`,
|
|
58
|
+
`,ba.writeFileSync(o,i,"utf-8"),pe(W,`Saved ${t.length} issues to ${o}`),o}formatCandidate(e){let{issue:t,vettingResult:s,projectHealth:o,recommendation:n,reasonsToApprove:i,reasonsToSkip:a}=e;return`
|
|
59
59
|
## ${n==="approve"?"\u2705":n==="skip"?"\u274C":"\u26A0\uFE0F"} Issue Candidate: ${t.repo}#${t.number}
|
|
60
60
|
|
|
61
61
|
**Title:** ${t.title}
|
|
@@ -85,36 +85,36 @@ ${s.notes.length>0?`
|
|
|
85
85
|
**Notes:**
|
|
86
86
|
${s.notes.map(u=>`- ${u}`).join(`
|
|
87
87
|
`)}`:""}
|
|
88
|
-
`}}});var et,_l,ma,St,ha=C(()=>{"use strict";$t();xs();Yt();Wt();Ee();ro();le();ge();et="issue-conversation",_l=rt,ma=new Set(["OWNER","MEMBER","COLLABORATOR"]),St=class{octokit;stateManager;constructor(e){this.octokit=me(e),this.stateManager=x()}async fetchCommentedIssues(e=30){let t=this.stateManager.getState().config;if(!t.githubUsername)throw new Qe("No GitHub username configured. Run setup first.");let s=t.githubUsername,o=new Date;o.setDate(o.getDate()-e);let n=o.toISOString().split("T")[0];E(et,`Fetching commented issues for @${s} (last ${e} days)...`);let{data:i}=await this.octokit.search.issuesAndPullRequests({q:`commenter:${s} type:issue state:open updated:>=${n}`,sort:"updated",order:"desc",per_page:100});i.total_count>100&&m(et,`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(_=>_.status==="claimed"||_.status==="in_progress"||_.status==="pr_submitted").map(_=>`${_.repo}#${_.number}`)),u=new Set((t.aiPolicyBlocklist||[]).map(_=>_.toLowerCase())),l=[];for(let _ of i.items){if(_.pull_request)continue;let w=ht(_.html_url);if(!w){m(et,`Skipping issue with unparseable URL: ${_.html_url}`);continue}let{owner:P,repo:h}=w,O=`${P}/${h}`;xe(P,s)||_.user?.login?.toLowerCase()!==s.toLowerCase()&&(t.excludeRepos.includes(O)||t.excludeOrgs?.some(G=>P.toLowerCase()===G.toLowerCase())||u.has(O.toLowerCase())||c.has(`${O}#${_.number}`)||l.push({item:_,repoFullName:O}))}E(et,`Found ${l.length} commented issues to check`);let d=[],g=[];await Gs(l,async({item:_,repoFullName:w})=>{try{let P=await this.analyzeIssueConversation(_,w,s);P?d.push(P):g.push({issueUrl:_.html_url,error:"No user comment found despite commenter: search match (possible pagination or eventual consistency)"})}catch(P){let h=S(P);g.push({issueUrl:_.html_url,error:h}),m(et,`Error analyzing issue ${_.html_url}: ${h}`)}},_l),g.length>0&&m(et,`${g.length}/${l.length} issue analysis call(s) failed`),g.length===l.length&&l.length>0&&m(et,`All ${l.length} issue analysis call(s) failed. Possible systemic issue (rate limit, auth, network).`);let T={new_response:0,waiting:1,acknowledged:2};return d.sort((_,w)=>T[_.status]-T[w.status]),E(et,`Analyzed ${d.length} issue conversations (${d.filter(_=>_.status==="new_response").length} with new responses)`),{issues:d,failures:g}}async analyzeIssueConversation(e,t,s){let{owner:o,repo:n}=At(t),i=await Me(h=>this.octokit.issues.listComments({owner:o,repo:n,issue_number:e.number,per_page:100,page:h})),a=[];for(let h of i){if(!h.user?.login)continue;let O=h.user.login;a.push({author:O,body:h.body||"",createdAt:h.created_at,isUser:O.toLowerCase()===s.toLowerCase(),authorAssociation:String(h.author_association??"")})}a.sort((h,O)=>new Date(h.createdAt).getTime()-new Date(O.createdAt).getTime());let c;for(let h of a)h.isUser&&(c=h);if(!c)return m(et,`No user comment found for ${e.html_url} despite commenter: search match`),null;let u=new Date(c.createdAt),l=`@${s.toLowerCase()}`;function d(h){return ma.has(h.authorAssociation)||h.body.toLowerCase().includes(l)}let g;for(let h of a){if(h.isUser||It(h.author))continue;if(new Date(h.createdAt)>u){if(Zt(h.body)||!d(h))continue;g={author:h.author,body:h.body.slice(0,200)+(h.body.length>200?"...":""),createdAt:h.createdAt,authorAssociation:h.authorAssociation}}}let T=(e.labels||[]).map(h=>h.name||"").filter(Boolean),_={repo:t,number:e.number,title:e.title,url:e.html_url,userLastCommentedAt:c.createdAt,labels:T,daysSinceUserComment:De(u,new Date)};if(g)return{..._,status:"new_response",lastResponseAuthor:g.author,lastResponseBody:g.body,lastResponseAt:g.createdAt,isFromMaintainer:ma.has(g.authorAssociation)};let P=[...a].reverse().find(h=>It(h.author)?!1:h.isUser?!0:d(h))?.isUser?"acknowledged":"waiting";return{..._,status:P}}}});function ba(r,e){let t=new Map;for(let s of r){if(!s.repo){m(e,`Skipping PR #${s.number} (${s.url}) with empty repo field`);continue}let o=t.get(s.repo)||[];o.push(s),t.set(s.repo,o)}return t}function tt(r){return{number:r.number,url:r.url,title:r.title,repo:r.repo,daysSinceActivity:r.daysSinceActivity,status:r.status}}function ts(r){let e=ba(r,"GROUP_BY_REPO"),t=[];for(let[s,o]of e)t.push({repo:s,prs:o});return t}function ss(r){let e=ba(r,"COMPUTE_SIGNALS"),t=new Map;for(let[s,o]of e){let n=o.some(a=>a.lastMaintainerComment&&!fa.has(a.stalenessTier)),i=o.some(a=>!fa.has(a.stalenessTier));t.set(s,{isResponsive:n,hasActiveMaintainers:i})}return t}function rs(r,e,t){let s=r.length,o=r.filter(l=>l.status==="needs_addressing"&&l.actionReason&&Rl.has(l.actionReason)).length,n=s<e,i=o===0,a=n&&i,c,u=t>0?` + ${t} shelved`:"";if(a)c=`You have capacity: ${s}/${e} active PRs${u}, no critical issues`;else{let l=[];n||l.push(`at PR limit (${s}/${e}${u})`),i||l.push(`${o} critical issue${o===1?"":"s"} need attention`),c=`No capacity: ${l.join(", ")}`}return{hasCapacity:a,activePRCount:s,maxActivePRs:e,shelvedPRCount:t,criticalIssueCount:o,reason:c}}function os(r,e=new Set){let t=[],s=r.filter(n=>n.status==="needs_addressing"),o=["needs_response","needs_changes","failing_ci","merge_conflict","incomplete_checklist"];for(let n of o)for(let i of s){if(i.actionReason!==n||n==="failing_ci"&&e.has(i.url))continue;let a,c;switch(n){case"needs_response":a="[Needs Response]",c="needs_response";break;case"needs_changes":a="[Needs Changes]",c="needs_changes";break;case"failing_ci":{a=`[CI Failing${i.failingCheckNames.length>0?` (${i.failingCheckNames.join(", ")})`:""}]`,c="ci_failing";break}case"merge_conflict":a="[Merge Conflict]",c="merge_conflict";break;case"incomplete_checklist":{a=`[Incomplete Checklist${i.checklistStats?` (${i.checklistStats.checked}/${i.checklistStats.total})`:""}]`,c="incomplete_checklist";break}default:m("daily-logic",`Unhandled ActionReason "${n}" for PR ${i.url} \u2014 falling back to needs_response`),a=`[${n}]`,c="needs_response"}t.push({type:c,pr:i,label:a})}return t}function ns(r,e,t=[]){let s=t.filter(a=>a.status==="new_response"),o=[],n=r.length>0,i=s.length>0;return n&&o.push({key:"address_all",label:`Work through all ${r.length} issue${r.length===1?"":"s"} (Recommended)`,description:"Run maintenance in parallel, then address code changes one at a time"}),i&&o.push({key:"issue_replies",label:`Review ${s.length} issue repl${s.length===1?"y":"ies"}`,description:"Maintainers responded to your comments on issues"}),o.push({key:"search",label:"Search for new issues",description:"Look for new contribution opportunities"}),o.push({key:"done",label:"Done for now",description:"End session with summary"}),{items:o,context:{hasActionableIssues:n,actionableCount:r.length,hasCapacity:e.hasCapacity,hasIssueResponses:i,issueResponseCount:s.length}}}function is(r,e,t=0){let s=e>0?`${e} need${e===1?"s":""} attention`:"all on track",o=t>0?` | ${t} issue repl${t===1?"y":"ies"}`:"";return`\u{1F4CA} ${r.summary.totalActivePRs} Active PRs | ${s}${o}`}function as(r,e,t=[]){let s=[];if(s.push("## OSS Dashboard"),s.push(""),s.push(`\u{1F4CA} **${r.summary.totalActivePRs} Active PRs** | ${r.summary.totalMergedAllTime} Merged | ${r.summary.mergeRate}% Merge Rate`),s.push('\u2713 Dashboard generated \u2014 say "open dashboard" to view in browser'),s.push(""),r.needsAddressingPRs.length>0){s.push("### \u274C Needs Addressing");for(let a of r.needsAddressingPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),s.push(` \u2514\u2500 ${a.displayLabel} ${a.displayDescription}`);s.push("")}if(r.waitingOnMaintainerPRs.length>0){s.push("### \u23F3 Waiting on Maintainer");for(let a of r.waitingOnMaintainerPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),s.push(` \u2514\u2500 ${a.displayDescription}`);s.push("")}if(r.recentlyMergedPRs.length>0){s.push("### \u{1F389} Recently Merged");for(let a of r.recentlyMergedPRs){let c=a.mergedAt?new Date(a.mergedAt).toLocaleDateString():"";s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}${c?` (merged ${c})`:""}`)}s.push("")}if(r.recentlyClosedPRs.length>0){s.push("### \u{1F6AB} Recently Closed");for(let a of r.recentlyClosedPRs){let c=a.closedAt?new Date(a.closedAt).toLocaleDateString():"";s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}${c?` (closed ${c})`:""}`)}s.push("")}if(r.autoUnshelvedPRs.length>0){s.push("### \u{1F514} Auto-Unshelved"),s.push("> These PRs were shelved but a maintainer engaged \u2014 moved back to active.");for(let a of r.autoUnshelvedPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title} (${a.status.replace(/_/g," ")})`);s.push("")}if(r.shelvedPRs.length>0){s.push("### \u{1F4E6} Shelved");for(let a of r.shelvedPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);s.push("")}if(t.length>0){s.push("### \u{1F4AC} Issue Replies");for(let a of t){s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);let c=ys(a.lastResponseAt);s.push(` \u2514\u2500 @${a.lastResponseAuthor}: "${a.lastResponseBody.slice(0,80)}${a.lastResponseBody.length>80?"...":""}"${c?` (${c})`:""}`)}s.push("")}let o=e.hasCapacity?"\u2705":"\u26A0\uFE0F",n=e.hasCapacity?"Ready for new work":"Focus on existing PRs",i=e.shelvedPRCount>0?` + ${e.shelvedPRCount} shelved`:"";return s.push(`**Capacity:** ${o} ${n} (${e.activePRCount}/${e.maxActivePRs} PRs${i})`),s.join(`
|
|
89
|
-
`)}function
|
|
88
|
+
`}}});var st,Pl,Ra,kt,wa=k(()=>{"use strict";Lt();Hs();os();xt();Te();uo();ue();he();st="issue-conversation",Pl=ct,Ra=new Set(["OWNER","MEMBER","COLLABORATOR"]),kt=class{octokit;stateManager;constructor(e){this.octokit=fe(e),this.stateManager=L()}async fetchCommentedIssues(e=30){let t=this.stateManager.getState().config;if(!t.githubUsername)throw new Xe("No GitHub username configured. Run setup first.");let s=t.githubUsername,o=new Date;o.setDate(o.getDate()-e);let n=o.toISOString().split("T")[0];T(st,`Fetching commented issues for @${s} (last ${e} days)...`);let{data:i}=await this.octokit.search.issuesAndPullRequests({q:`commenter:${s} type:issue state:open updated:>=${n}`,sort:"updated",order:"desc",per_page:100});i.total_count>100&&m(st,`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(_=>_.status==="claimed"||_.status==="in_progress"||_.status==="pr_submitted").map(_=>`${_.repo}#${_.number}`)),u=new Set((t.aiPolicyBlocklist||[]).map(_=>_.toLowerCase())),l=[];for(let _ of i.items){if(_.pull_request)continue;let w=yt(_.html_url);if(!w){m(st,`Skipping issue with unparseable URL: ${_.html_url}`);continue}let{owner:P,repo:b}=w,C=`${P}/${b}`;Me(P,s)||_.user?.login?.toLowerCase()!==s.toLowerCase()&&(t.excludeRepos.includes(C)||t.excludeOrgs?.some(D=>P.toLowerCase()===D.toLowerCase())||u.has(C.toLowerCase())||c.has(`${C}#${_.number}`)||l.push({item:_,repoFullName:C}))}T(st,`Found ${l.length} commented issues to check`);let d=[],g=[];await Us(l,async({item:_,repoFullName:w})=>{try{let P=await this.analyzeIssueConversation(_,w,s);P?d.push(P):g.push({issueUrl:_.html_url,error:"No user comment found despite commenter: search match (possible pagination or eventual consistency)"})}catch(P){let b=v(P);g.push({issueUrl:_.html_url,error:b}),m(st,`Error analyzing issue ${_.html_url}: ${b}`)}},Pl),g.length>0&&m(st,`${g.length}/${l.length} issue analysis call(s) failed`),g.length===l.length&&l.length>0&&m(st,`All ${l.length} issue analysis call(s) failed. Possible systemic issue (rate limit, auth, network).`);let E={new_response:0,waiting:1,acknowledged:2};return d.sort((_,w)=>E[_.status]-E[w.status]),T(st,`Analyzed ${d.length} issue conversations (${d.filter(_=>_.status==="new_response").length} with new responses)`),{issues:d,failures:g}}async analyzeIssueConversation(e,t,s){let{owner:o,repo:n}=Ft(t),i=await je(b=>this.octokit.issues.listComments({owner:o,repo:n,issue_number:e.number,per_page:100,page:b})),a=[];for(let b of i){if(!b.user?.login)continue;let C=b.user.login;a.push({author:C,body:b.body||"",createdAt:b.created_at,isUser:C.toLowerCase()===s.toLowerCase(),authorAssociation:String(b.author_association??"")})}a.sort((b,C)=>new Date(b.createdAt).getTime()-new Date(C.createdAt).getTime());let c;for(let b of a)b.isUser&&(c=b);if(!c)return m(st,`No user comment found for ${e.html_url} despite commenter: search match`),null;let u=new Date(c.createdAt),l=`@${s.toLowerCase()}`;function d(b){return Ra.has(b.authorAssociation)||b.body.toLowerCase().includes(l)}let g;for(let b of a){if(b.isUser||Nt(b.author))continue;if(new Date(b.createdAt)>u){if(is(b.body)||!d(b))continue;g={author:b.author,body:b.body.slice(0,200)+(b.body.length>200?"...":""),createdAt:b.createdAt,authorAssociation:b.authorAssociation}}}let E=(e.labels||[]).map(b=>b.name||"").filter(Boolean),_={repo:t,number:e.number,title:e.title,url:e.html_url,userLastCommentedAt:c.createdAt,labels:E,daysSinceUserComment:Ie(u,new Date)};if(g)return{..._,status:"new_response",lastResponseAuthor:g.author,lastResponseBody:g.body,lastResponseAt:g.createdAt,isFromMaintainer:Ra.has(g.authorAssociation)};let P=[...a].reverse().find(b=>Nt(b.author)?!1:b.isUser?!0:d(b))?.isUser?"acknowledged":"waiting";return{..._,status:P}}}});function At(r,e){let t=e.config.statusOverrides;if(!t||Object.keys(t).length===0)return r;let s=L(),o=new Set(Object.keys(t)),n=!1,i=r.map(a=>{try{let c=s.getStatusOverride(a.url,a.updatedAt);return c?kl.has(c.status)?c.status===a.status?a:c.status==="waiting_on_maintainer"?{...a,status:c.status,actionReason:void 0,waitReason:"pending_review"}:{...a,status:c.status,waitReason:void 0,actionReason:"needs_response"}:(m("daily-logic",`Invalid override status "${c.status}" for ${a.url} \u2014 ignoring`),a):(o.has(a.url)&&(n=!0),a)}catch(c){return m("daily-logic",`Failed to apply status override for ${a.url}: ${v(c)}`),a}});if(n)try{s.save()}catch(a){m("daily-logic",`Failed to persist auto-cleared overrides \u2014 they may reappear on restart: ${v(a)}`)}return i}function Ta(r,e){let t=new Map;for(let s of r){if(!s.repo){m(e,`Skipping PR #${s.number} (${s.url}) with empty repo field`);continue}let o=t.get(s.repo)||[];o.push(s),t.set(s.repo,o)}return t}function rt(r){return{number:r.number,url:r.url,title:r.title,repo:r.repo,daysSinceActivity:r.daysSinceActivity,status:r.status}}function cs(r){let e=Ta(r,"GROUP_BY_REPO"),t=[];for(let[s,o]of e)t.push({repo:s,prs:o});return t}function us(r){let e=Ta(r,"COMPUTE_SIGNALS"),t=new Map;for(let[s,o]of e){let n=o.some(a=>a.lastMaintainerComment&&!Ea.has(a.stalenessTier)),i=o.some(a=>!Ea.has(a.stalenessTier));t.set(s,{isResponsive:n,hasActiveMaintainers:i})}return t}function ls(r,e,t){let s=r.length,o=r.filter(l=>l.status==="needs_addressing"&&l.actionReason&&Cl.has(l.actionReason)).length,n=s<e,i=o===0,a=n&&i,c,u=t>0?` + ${t} shelved`:"";if(a)c=`You have capacity: ${s}/${e} active PRs${u}, no critical issues`;else{let l=[];n||l.push(`at PR limit (${s}/${e}${u})`),i||l.push(`${o} critical issue${o===1?"":"s"} need attention`),c=`No capacity: ${l.join(", ")}`}return{hasCapacity:a,activePRCount:s,maxActivePRs:e,shelvedPRCount:t,criticalIssueCount:o,reason:c}}function ps(r,e=new Set,t){let s=[],o=r.filter(a=>a.status==="needs_addressing"),n=t?new Date(t).getTime():NaN,i=["needs_response","needs_changes","failing_ci","merge_conflict","incomplete_checklist"];for(let a of i)for(let c of o){if(c.actionReason!==a||a==="failing_ci"&&e.has(c.url))continue;let u,l;switch(a){case"needs_response":u="[Needs Response]",l="needs_response";break;case"needs_changes":u="[Needs Changes]",l="needs_changes";break;case"failing_ci":{u=`[CI Failing${c.failingCheckNames.length>0?` (${c.failingCheckNames.join(", ")})`:""}]`,l="ci_failing";break}case"merge_conflict":u="[Merge Conflict]",l="merge_conflict";break;case"incomplete_checklist":{u=`[Incomplete Checklist${c.checklistStats?` (${c.checklistStats.checked}/${c.checklistStats.total})`:""}]`,l="incomplete_checklist";break}default:m("daily-logic",`Unhandled ActionReason "${a}" for PR ${c.url} \u2014 falling back to needs_response`),u=`[${a}]`,l="needs_response"}let d=new Date(c.createdAt).getTime(),g;isNaN(d)?(m("daily-logic",`Invalid createdAt "${c.createdAt}" for PR ${c.url}, assuming new contribution`),g=!0):g=isNaN(n)||d>n,s.push({type:l,pr:c,label:u,isNewContribution:g})}return s}function ds(r,e,t=[]){let s=t.filter(a=>a.status==="new_response"),o=[],n=r.length>0,i=s.length>0;if(n){let a=r.length===1;o.push({key:"address_all",label:a?"Address this issue (Recommended)":`Work through all ${r.length} issues (Recommended)`,description:a?"Fix the issue blocking your PR":"Run maintenance in parallel, then address code changes one at a time"})}return i&&o.push({key:"issue_replies",label:`Review ${s.length} issue repl${s.length===1?"y":"ies"}`,description:"Maintainers responded to your comments on issues"}),o.push({key:"search",label:"Search for new issues",description:"Look for new contribution opportunities"}),o.push({key:"done",label:"Done for now",description:"End session with summary"}),{items:o,context:{hasActionableIssues:n,actionableCount:r.length,hasCapacity:e.hasCapacity,hasIssueResponses:i,issueResponseCount:s.length}}}function gs(r,e,t=0){let s=e>0?`${e} need${e===1?"s":""} attention`:"all on track",o=t>0?` | ${t} issue repl${t===1?"y":"ies"}`:"";return`\u{1F4CA} ${r.summary.totalActivePRs} Active PRs | ${s}${o}`}function ms(r,e,t=[]){let s=[];if(s.push("## OSS Dashboard"),s.push(""),s.push(`\u{1F4CA} **${r.summary.totalActivePRs} Active PRs** | ${r.summary.totalMergedAllTime} Merged | ${r.summary.mergeRate}% Merge Rate`),s.push('\u2713 Dashboard generated \u2014 say "open dashboard" to view in browser'),s.push(""),r.needsAddressingPRs.length>0){s.push("### \u274C Needs Addressing");for(let a of r.needsAddressingPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),s.push(` \u2514\u2500 ${a.displayLabel} ${a.displayDescription}`);s.push("")}if(r.waitingOnMaintainerPRs.length>0){s.push("### \u23F3 Waiting on Maintainer");for(let a of r.waitingOnMaintainerPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`),s.push(` \u2514\u2500 ${a.displayDescription}`);s.push("")}if(r.recentlyMergedPRs.length>0){s.push("### \u{1F389} Recently Merged");for(let a of r.recentlyMergedPRs){let c=a.mergedAt?new Date(a.mergedAt).toLocaleDateString():"";s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}${c?` (merged ${c})`:""}`)}s.push("")}if(r.recentlyClosedPRs.length>0){s.push("### \u{1F6AB} Recently Closed");for(let a of r.recentlyClosedPRs){let c=a.closedAt?new Date(a.closedAt).toLocaleDateString():"";s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}${c?` (closed ${c})`:""}`)}s.push("")}if(r.autoUnshelvedPRs.length>0){s.push("### \u{1F514} Auto-Unshelved"),s.push("> These PRs were shelved but a maintainer engaged \u2014 moved back to active.");for(let a of r.autoUnshelvedPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title} (${a.status.replace(/_/g," ")})`);s.push("")}if(r.shelvedPRs.length>0){s.push("### \u{1F4E6} Shelved");for(let a of r.shelvedPRs)s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);s.push("")}if(t.length>0){s.push("### \u{1F4AC} Issue Replies");for(let a of t){s.push(`- [${a.repo}#${a.number}](${a.url}): ${a.title}`);let c=vs(a.lastResponseAt);s.push(` \u2514\u2500 @${a.lastResponseAuthor}: "${a.lastResponseBody.slice(0,80)}${a.lastResponseBody.length>80?"...":""}"${c?` (${c})`:""}`)}s.push("")}let o=e.hasCapacity?"\u2705":"\u26A0\uFE0F",n=e.hasCapacity?"Ready for new work":"Focus on existing PRs",i=e.shelvedPRCount>0?` + ${e.shelvedPRCount} shelved`:"";return s.push(`**Capacity:** ${o} ${n} (${e.activePRCount}/${e.maxActivePRs} PRs${i})`),s.join(`
|
|
89
|
+
`)}function wo(r,e,t=[]){if(console.log(`
|
|
90
90
|
\u{1F4CA} OSS Daily Check
|
|
91
91
|
`),console.log(`Active PRs: ${r.summary.totalActivePRs}`),console.log(`Needing Attention: ${r.summary.totalNeedingAttention}`),console.log(`Merged (all time): ${r.summary.totalMergedAllTime}`),console.log(`Merge Rate: ${r.summary.mergeRate}%`),console.log(`
|
|
92
92
|
Capacity: ${e.hasCapacity?"\u2705 Ready for new work":"\u26A0\uFE0F Focus on existing work"}`),console.log(` ${e.reason}
|
|
93
|
-
`),r.needsAddressingPRs.length>0){console.log("\u274C Needs Addressing:");for(let o of r.needsAddressingPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` ${o.displayLabel} ${o.displayDescription}`);console.log("")}if(r.waitingOnMaintainerPRs.length>0){console.log("\u23F3 Waiting on Maintainer:");for(let o of r.waitingOnMaintainerPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` ${o.displayDescription}`);console.log("")}if(r.recentlyMergedPRs.length>0){console.log("\u{1F389} Recently Merged:");for(let o of r.recentlyMergedPRs){let n=o.mergedAt?new Date(o.mergedAt).toLocaleDateString():"";console.log(` - ${o.repo}#${o.number}: ${o.title}${n?` (merged ${n})`:""}`)}console.log("")}if(r.recentlyClosedPRs.length>0){console.log("\u{1F6AB} Recently Closed:");for(let o of r.recentlyClosedPRs){let n=o.closedAt?new Date(o.closedAt).toLocaleDateString():"";console.log(` - ${o.repo}#${o.number}: ${o.title}${n?` (closed ${n})`:""}`)}console.log("")}if(r.autoUnshelvedPRs.length>0){console.log("\u{1F514} Auto-Unshelved:");for(let o of r.autoUnshelvedPRs)console.log(` - ${o.repo}#${o.number}: ${o.title} (${o.status.replace(/_/g," ")})`);console.log("")}if(r.shelvedPRs.length>0){console.log("\u{1F4E6} Shelved:");for(let o of r.shelvedPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`);console.log("")}let s=t.filter(o=>o.status==="new_response");if(s.length>0){console.log("\u{1F4AC} Issue Replies:");for(let o of s)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` @${o.lastResponseAuthor}: ${o.lastResponseBody.slice(0,80)}${o.lastResponseBody.length>80?"...":""}`);console.log("")}console.log("Run with --json for structured output"),console.log('Run "dashboard serve" for browser view')}var Ft,Rl,fa,ya=C(()=>{"use strict";Ee();ge();Ft=new Set(["needs_addressing"]),Rl=new Set(["needs_response","needs_changes","failing_ci","merge_conflict"]),fa=new Set(["dormant","approaching_dormant"])});function ho(r){let{repoScores:e,activePRCount:t}=r,s=0,o=0,n=[];for(let c of Object.values(e))s+=c.mergedPRCount,o+=c.closedWithoutMergeCount,c.mergedPRCount>0&&n.push({repo:c.repo,mergedCount:c.mergedPRCount});let i=s+o,a=i>0?s/i:0;return n.sort((c,u)=>u.mergedCount-c.mergedCount),{totalMerged:s,totalClosed:o,mergeRate:a,activePRs:t,reposContributed:n.length,topRepos:n.slice(0,10)}}var fo=C(()=>{"use strict"});async function bo(r,e,t){for(let s of wl)try{E(Pt,`Checking ${e}/${t} for template at ${s}`);let{data:o}=await r.repos.getContent({owner:e,repo:t,path:s});if(Array.isArray(o)){E(Pt,`${s} is a directory (multiple templates?), skipping`);continue}if(o.type!=="file"){E(Pt,`${s} is type "${o.type}", skipping`);continue}if(!o.content){E(Pt,`${s} has no content, skipping`);continue}let n=Buffer.from(o.content,"base64").toString("utf-8");return E(Pt,`Found PR template at ${s} (${n.length} chars)`),{template:n,source:s}}catch(o){if(ve(o)===404)continue;if(be(o))throw o;let n=S(o);return m(Pt,`Error checking ${e}/${t}/${s}: ${n}`),{template:null,source:null,error:n}}return E(Pt,`No PR template found for ${e}/${t}`),{template:null,source:null}}var Pt,wl,yo=C(()=>{"use strict";ge();le();Pt="pr-template",wl=[".github/PULL_REQUEST_TEMPLATE.md",".github/pull_request_template.md","docs/pull_request_template.md","pull_request_template.md"]});var te=C(()=>{"use strict";Wt();ra();ga();ha();xs();$t();Ee();le();ge();Dt();ya();fo();yo();pt()});function _a(r){let e=t=>t.map(s=>s.url);return{generatedAt:r.generatedAt,openPRs:r.openPRs,needsAddressingPRs:e(r.needsAddressingPRs),waitingOnMaintainerPRs:e(r.waitingOnMaintainerPRs),recentlyClosedPRs:r.recentlyClosedPRs,recentlyMergedPRs:r.recentlyMergedPRs,shelvedPRs:r.shelvedPRs,autoUnshelvedPRs:r.autoUnshelvedPRs,summary:r.summary}}function Ra(r){return r.map(e=>({type:e.type,prUrl:e.pr.url,label:e.label}))}function wa(r){return r.map(e=>({repo:e.repo,prUrls:e.prs.map(t=>t.url)}))}function El(r){return{success:!0,data:r,timestamp:new Date().toISOString()}}function Tl(r){return{success:!1,error:r,timestamp:new Date().toISOString()}}function K(r){console.log(JSON.stringify(El(r),null,2))}function Ea(r){console.log(JSON.stringify(Tl(r),null,2))}var _o=C(()=>{"use strict"});function Ta(r,e,t,s){let o=r.summary||{totalActivePRs:0,totalMergedAllTime:0,mergeRate:0,totalNeedingAttention:0},n=e.config.minStars??50,i=t!==void 0?Math.max(t,o.totalMergedAllTime):o.totalMergedAllTime,a=Object.values(e.repoScores||{}).reduce((u,l)=>u+(Ke(l.stargazersCount,n)?0:l.closedWithoutMergeCount||0),0),c=s!==void 0?Math.max(s,a):a;return{activePRs:o.totalActivePRs,shelvedPRs:(r.shelvedPRs||[]).length,mergedPRs:i,closedPRs:c,mergeRate:`${(o.mergeRate??0).toFixed(1)}%`}}function Ro(r,e){let t={...r};for(let[s,o]of Object.entries(e))t[s]=o;return t}function wo(r,e,t,s,o){let n=x(),i=n.getState();try{Object.keys(e).length>0&&n.setMonthlyMergedCounts(Ro(i.monthlyMergedCounts||{},e))}catch(a){m(de,`Failed to store monthly merged counts: ${S(a)}`)}try{Object.keys(t).length>0&&n.setMonthlyClosedCounts(Ro(i.monthlyClosedCounts||{},t))}catch(a){m(de,`Failed to store monthly closed counts: ${S(a)}`)}try{let a={...s};for(let[c,u]of Object.entries(o))a[c]=(a[c]||0)+u;for(let c of r)if(c.createdAt){let u=c.createdAt.slice(0,7);a[u]=(a[u]||0)+1}Object.keys(a).length>0&&n.setMonthlyOpenedCounts(Ro(i.monthlyOpenedCounts||{},a))}catch(a){m(de,`Failed to store monthly opened counts: ${S(a)}`)}}async function Eo(r){let e=x(),t=new Tt(r),s=new St(r),o=me(r),n=e.getState().config,i=Bs(e.getState()),a=e.getMergedPRWatermark(),c=e.getClosedPRWatermark(),[{prs:u,failures:l},d,g,T,_,w,P,h]=await Promise.all([t.fetchUserOpenPRs(),t.fetchRecentlyClosedPRs().catch(D=>{if(be(D))throw D;return m(de,`Failed to fetch recently closed PRs: ${S(D)}`),[]}),t.fetchRecentlyMergedPRs().catch(D=>{if(be(D))throw D;return m(de,`Failed to fetch recently merged PRs: ${S(D)}`),[]}),t.fetchUserMergedPRCounts(i).catch(D=>{if(be(D))throw D;return m(de,`Failed to fetch merged PR counts: ${S(D)}`),Et()}),t.fetchUserClosedPRCounts(i).catch(D=>{if(be(D))throw D;return m(de,`Failed to fetch closed PR counts: ${S(D)}`),Et()}),s.fetchCommentedIssues().catch(D=>{if(be(D))throw D;let ie=S(D);return ie.includes("No GitHub username configured")?m(de,`Issue conversation tracking requires setup: ${ie}`):m(de,`Issue conversation fetch failed: ${ie}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${ie}`}]}}),ta(o,n,a).catch(D=>{if(be(D))throw D;return m(de,`Failed to fetch merged PRs for storage: ${S(D)}`),[]}),sa(o,n,c).catch(D=>{if(be(D))throw D;return m(de,`Failed to fetch closed PRs for storage: ${S(D)}`),[]})]),O=w.issues;w.failures.length>0&&m(de,`${w.failures.length} issue conversation check(s) failed`),l.length>0&&m(de,`${l.length} PR fetch(es) failed`);try{e.addMergedPRs(P)}catch(D){m(de,`Failed to store merged PRs: ${S(D)}`)}try{e.addClosedPRs(h)}catch(D){m(de,`Failed to store closed PRs: ${S(D)}`)}let G=To(e.getMergedPRs()),N=vo(e.getClosedPRs()),{monthlyCounts:M,monthlyOpenedCounts:k}=T,{monthlyCounts:A,monthlyOpenedCounts:U}=_;wo(u,M,A,k,U);let H=t.generateDigest(u,d,g),ue=new Set(e.getState().config.shelvedPRUrls||[]),he=u.filter(D=>ue.has(D.url)||D.stalenessTier==="dormant"&&D.status!=="needs_addressing");H.shelvedPRs=he.map(tt),H.autoUnshelvedPRs=[],H.summary.totalActivePRs=u.length-he.length,e.setLastDigest(H);try{e.save()}catch(D){m(de,`Failed to save dashboard digest to state: ${S(D)}`)}return m(de,`Refreshed: ${u.length} PRs fetched`),{digest:H,commentedIssues:O,allMergedPRs:G,allClosedPRs:N}}function To(r){let e=[],t=0;for(let s of r){let o=pe(s.url);if(!o){t++;continue}e.push({url:s.url,repo:`${o.owner}/${o.repo}`,number:o.number,title:s.title,mergedAt:s.mergedAt})}return t>0&&m(de,`Skipped ${t} stored merged PR(s) with unparseable URLs`),e}function vo(r){let e=[],t=0;for(let s of r){let o=pe(s.url);if(!o){t++;continue}e.push({url:s.url,repo:`${o.owner}/${o.repo}`,number:o.number,title:s.title,closedAt:s.closedAt})}return t>0&&m(de,`Skipped ${t} stored closed PR(s) with unparseable URLs`),e}function va(r,e){let t={};for(let o of r.openPRs||[])t[o.repo]||(t[o.repo]={active:0,merged:0,closed:0}),t[o.repo].active++;let s=e.config.minStars??50;for(let[o,n]of Object.entries(e.repoScores||{}))Ke(n.stargazersCount,s)||(t[o]||(t[o]={active:0,merged:0,closed:0}),t[o].merged=n.mergedPRCount,t[o].closed=n.closedWithoutMergeCount);return t}function Sa(r,e=10){return Object.entries(r).sort((t,s)=>s[1].merged+s[1].active+s[1].closed-(t[1].merged+t[1].active+t[1].closed)).slice(0,e)}function Pa(r){return{monthlyMerged:r.monthlyMergedCounts||{},monthlyClosed:r.monthlyClosedCounts||{},monthlyOpened:r.monthlyOpenedCounts||{}}}var de,So=C(()=>{"use strict";te();le();ge();Ms();Ee();pt();cs();de="dashboard-data"});var Po={};oe(Po,{CRITICAL_STATUSES:()=>Ft,assessCapacity:()=>rs,buildStarFilter:()=>Bs,collectActionableIssues:()=>os,computeActionMenu:()=>ns,computeRepoSignals:()=>ss,executeDailyCheck:()=>Vs,formatBriefSummary:()=>is,formatSummary:()=>as,groupPRsByRepo:()=>ts,printDigest:()=>mo,runDaily:()=>Al,runDailyForDisplay:()=>Ol,toShelvedPRRef:()=>tt});function Bs(r){let e=r.config.minStars??50,t=new Map;for(let[s,o]of Object.entries(r.repoScores))o.stargazersCount!==void 0&&t.set(s,o.stargazersCount);if(t.size!==0)return{minStars:e,knownStarCounts:t}}async function vl(r,e){let{prs:t,failures:s}=await r.fetchUserOpenPRs();s.length>0&&m(Q,`${s.length} PR fetch(es) failed`);let o=x().getState(),n=Bs(o),i=new St(e),[a,c,u,l,d]=await Promise.all([r.fetchUserMergedPRCounts(n).catch(G=>{if(be(G))throw G;return m(Q,`Failed to fetch merged PR counts: ${S(G)}`),Et()}),r.fetchUserClosedPRCounts(n).catch(G=>{if(be(G))throw G;return m(Q,`Failed to fetch closed PR counts: ${S(G)}`),Et()}),r.fetchRecentlyClosedPRs().catch(G=>{if(be(G))throw G;return m(Q,`Failed to fetch recently closed PRs: ${S(G)}`),[]}),r.fetchRecentlyMergedPRs().catch(G=>{if(be(G))throw G;return m(Q,`Failed to fetch recently merged PRs: ${S(G)}`),[]}),i.fetchCommentedIssues().catch(G=>{if(be(G))throw G;let N=S(G);return N.includes("No GitHub username configured")?m(Q,`Issue conversation tracking requires setup: ${N}`):m(Q,`Issue conversation fetch failed: ${N}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${N}`}]}})]),g=d.issues;d.failures.length>0&&m(Q,`${d.failures.length} issue conversation check(s) failed`);let{repos:T,monthlyCounts:_,monthlyOpenedCounts:w}=a,{repos:P,monthlyCounts:h,monthlyOpenedCounts:O}=c;return{prs:t,failures:s,mergedCounts:T,closedCounts:P,monthlyCounts:_,monthlyClosedCounts:h,openedFromMerged:w,openedFromClosed:O,recentlyClosedPRs:u,recentlyMergedPRs:l,commentedIssues:g}}async function Sl(r,e,t,s){let o=x(),n=Object.values(o.getState().repoScores).filter(w=>w.mergedPRCount>0);if(t.size===0&&n.length>0)m(Q,`Skipping stale repo reset: API returned 0 merged PR results but state has ${n.length} repo(s) with merges. Possible API issue.`);else for(let w of Object.values(o.getState().repoScores))t.has(w.repo)||o.updateRepoScore(w.repo,{mergedPRCount:0});let i=0;for(let[w,{count:P,lastMergedAt:h}]of t)try{o.updateRepoScore(w,{mergedPRCount:P,lastMergedAt:h||void 0})}catch(O){i++,m(Q,`Failed to update merged count for ${w}: ${S(O)}`)}i===t.size&&t.size>0&&m(Q,`[ALL_MERGED_COUNT_UPDATES_FAILED] All ${t.size} merged count update(s) failed.`);let a=Object.values(o.getState().repoScores).filter(w=>(w.closedWithoutMergeCount||0)>0);s.size===0&&a.length>0&&m(Q,`API returned 0 closed PR results but state has ${a.length} repo(s) with closed PRs. Possible transient API issue.`);let c=0;for(let[w,P]of s)try{o.updateRepoScore(w,{closedWithoutMergeCount:P})}catch(h){c++,m(Q,`Failed to update closed count for ${w}: ${S(h)}`)}c===s.size&&s.size>0&&m(Q,`[ALL_CLOSED_COUNT_UPDATES_FAILED] All ${s.size} closed count update(s) failed.`);let u=ss(e),l=0;for(let[w,P]of u)try{o.updateRepoScore(w,{signals:P})}catch(h){l++,m(Q,`Failed to update signals for ${w}: ${S(h)}`)}l===u.size&&u.size>0&&m(Q,`[ALL_SIGNAL_UPDATES_FAILED] All ${u.size} signal update(s) failed. This may indicate corrupted state.`);let d=Object.keys(o.getState().repoScores),g;try{g=await r.fetchRepoStarCounts(d)}catch(w){m(Q,`Failed to fetch repo star counts: ${S(w)}`),m(Q,"Repos without cached star data will be excluded from stats until star counts are fetched on the next successful run."),g=new Map}let T=0;for(let[w,P]of g)try{o.updateRepoScore(w,{stargazersCount:P})}catch(h){T++,m(Q,`Failed to update star count for ${w}: ${S(h)}`)}T===g.size&&g.size>0&&m(Q,`[ALL_STAR_COUNT_UPDATES_FAILED] All ${g.size} star count update(s) failed.`);let _=0;for(let[w]of t)try{o.addTrustedProject(w)}catch(P){_++,m(Q,`Failed to sync trusted project ${w}: ${S(P)}`)}_===t.size&&t.size>0&&m(Q,`[ALL_TRUST_SYNCS_FAILED] All ${t.size} trusted project sync(s) failed. This may indicate corrupted state.`)}function Pl(r,e,t,s){let o=x();try{let u=o.expireSnoozes();if(u.length>0){let l=u.map(d=>` - ${d}`).join(`
|
|
94
|
-
`);m(Q,`${
|
|
95
|
-
${l}`),o.save()}}catch(u){m(Q,`Failed to expire/persist snoozes: ${S(u)}`)}let n=[],i=[],a=[];for(let u of e)o.isPRShelved(u.url)?Ft.has(u.status)?(o.unshelvePR(u.url),i.push(tt(u)),a.push(u)):n.push(tt(u)):u.stalenessTier==="dormant"&&!Ft.has(u.status)?n.push(tt(u)):a.push(u);let c=r.generateDigest(e,t,s);return c.shelvedPRs=n,c.autoUnshelvedPRs=i,c.summary.totalActivePRs=a.length,o.setLastDigest(c),o.save(),{activePRs:a,shelvedPRs:n,autoUnshelvedPRs:i,digest:c}}function Cl(r,e,t,s,o){let n=x(),i=rs(e,n.getState().config.maxActivePRs,t.length),a=!1,c=s.filter(h=>{let O=n.getIssueDismissedAt(h.url);if(!O)return!0;if(h.status==="new_response"){let G=new Date(h.lastResponseAt).getTime(),N=new Date(O).getTime();if(isNaN(G)||isNaN(N))return m(Q,`Invalid timestamp in dismiss check for ${h.url}, including issue`),!0;if(G>N)return m(Q,`Auto-undismissing issue ${h.url}: new response at ${h.lastResponseAt} after dismiss at ${O}`),n.undismissIssue(h.url),a=!0,!0}return!1}),u=c.filter(h=>h.status==="new_response"),l=as(r,i,u),d=new Set(Object.keys(n.getState().config.snoozedPRs??{}).filter(h=>n.isSnoozed(h))),g=e.filter(h=>{let O=n.getIssueDismissedAt(h.url);if(!O)return!0;let G=new Date(h.updatedAt).getTime(),N=new Date(O).getTime();return isNaN(G)||isNaN(N)?(m(Q,`Invalid timestamp in PR dismiss check for ${h.url}, including PR`),!0):G>N?(m(Q,`Auto-undismissing PR ${h.url}: new activity at ${h.updatedAt} after dismiss at ${O}`),n.undismissIssue(h.url),a=!0,!0):!1});if(a)try{n.save()}catch(h){m(Q,`Failed to persist auto-undismissed state: ${S(h)}`)}let T=os(g,d);r.summary.totalNeedingAttention=T.length;let _=is(r,T.length,u.length),w=ns(T,i,c),P=ts(e);return{digest:r,capacity:i,summary:l,briefSummary:_,actionableIssues:T,actionMenu:w,commentedIssues:c,repoGroups:P,failures:o}}function kl(r){return{digest:_a(r.digest),capacity:r.capacity,summary:r.summary,briefSummary:r.briefSummary,actionableIssues:Ra(r.actionableIssues),actionMenu:r.actionMenu,commentedIssues:r.commentedIssues,repoGroups:wa(r.repoGroups),failures:r.failures}}async function Vs(r){let e=await Ca(r);return kl(e)}async function Ca(r){let e=new Tt(r),{prs:t,failures:s,mergedCounts:o,closedCounts:n,monthlyCounts:i,monthlyClosedCounts:a,openedFromMerged:c,openedFromClosed:u,recentlyClosedPRs:l,recentlyMergedPRs:d,commentedIssues:g}=await vl(e,r);await Sl(e,t,o,n),wo(t,i,a,c,u);let{activePRs:T,shelvedPRs:_,digest:w}=Pl(e,t,l,d);return Cl(w,T,_,g,s)}async function Al(){let r=_e();return Vs(r)}async function Ol(){let r=_e();return Ca(r)}var Q,cs=C(()=>{"use strict";te();le();ge();Ms();So();_o();te();Q="daily"});var ka={};oe(ka,{runStatus:()=>Gl});async function Gl(r){let e=x(),t=e.getStats(),s=e.getState(),o=s.lastDigestAt||s.lastRunAt,{totalTracked:n,...i}=t,a={stats:i,lastRunAt:s.lastRunAt};return r.offline&&(a.offline=!0,a.lastUpdated=o),a}var Aa=C(()=>{"use strict";te()});var Oa={};oe(Oa,{runSearch:()=>$l});async function $l(r){let e=_e(),t=new vt(e),s=await t.searchIssues({maxResults:r.maxResults}),o=x(),{config:n}=o.getState(),i=n.excludeRepos||[],a=n.aiPolicyBlocklist??lt.aiPolicyBlocklist??[],c={candidates:s.map(u=>{let l=o.getRepoScore(u.issue.repo);return{issue:{repo:u.issue.repo,number:u.issue.number,title:u.issue.title,url:u.issue.url,labels:u.issue.labels},recommendation:u.recommendation,reasonsToApprove:u.reasonsToApprove,reasonsToSkip:u.reasonsToSkip,searchPriority:u.searchPriority,viabilityScore:u.viabilityScore,repoScore:l?{score:l.score,mergedPRCount:l.mergedPRCount,closedWithoutMergeCount:l.closedWithoutMergeCount,isResponsive:l.signals?.isResponsive??!1,lastMergedAt:l.lastMergedAt}:void 0}}),excludedRepos:i,aiPolicyBlocklist:a};return t.rateLimitWarning&&(c.rateLimitWarning=t.rateLimitWarning),c}var Ga=C(()=>{"use strict";te()});function ne(r,e,t){if(e.test(r))return;let s={PR:"https://github.com/owner/repo/pull/123",issue:"https://github.com/owner/repo/issues/123","issue or PR":"https://github.com/owner/repo/issues/123 or https://github.com/owner/repo/pull/123"};throw new Z(`Invalid ${t} URL: ${r}. Expected format: ${s[t]}`)}function se(r){if(r.length>$a)throw new Z(`URL exceeds maximum length of ${$a} characters`);return r}function ls(r){if(r.length>Da)throw new Z(`Message exceeds maximum length of ${Da} characters`);return r}function xt(r){if(!r||r.trim().length===0)throw new Z("GitHub username cannot be empty.");let e=r.trim();if(e.length>Ia)throw new Z(`GitHub username must be at most ${Ia} characters (got ${e.length}).`);if(!Dl.test(e))throw new Z("GitHub username can only contain alphanumeric characters and hyphens.");if(e.startsWith("-"))throw new Z("GitHub username cannot start with a hyphen.");if(e.endsWith("-"))throw new Z("GitHub username cannot end with a hyphen.");if(Il.test(e))throw new Z("GitHub username cannot contain consecutive hyphens.");return e}var Re,Ws,us,$a,Da,Ia,Dl,Il,Ae=C(()=>{"use strict";le();Re=/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\/\d+$/,Ws=/^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\/\d+$/,us=/^https:\/\/github\.com\/[^/]+\/[^/]+\/(issues|pull)\/\d+$/,$a=2048,Da=1e3;Ia=39,Dl=/^[a-zA-Z0-9-]+$/,Il=/--/});var Fa={};oe(Fa,{runVet:()=>Fl});async function Fl(r){se(r.issueUrl),ne(r.issueUrl,Ws,"issue");let e=_e(),s=await new vt(e).vetIssue(r.issueUrl);return{issue:{repo:s.issue.repo,number:s.issue.number,title:s.issue.title,url:s.issue.url,labels:s.issue.labels},recommendation:s.recommendation,reasonsToApprove:s.reasonsToApprove,reasonsToSkip:s.reasonsToSkip,projectHealth:s.projectHealth,vettingResult:s.vettingResult}}var xa=C(()=>{"use strict";te();Ae()});var Co={};oe(Co,{runTrack:()=>xl,runUntrack:()=>Ul});async function xl(r){se(r.prUrl),ne(r.prUrl,Re,"PR");let e=_e(),t=me(e),s=pe(r.prUrl);if(!s||s.type!=="pull")throw new Error(`Invalid PR URL: ${r.prUrl}`);let{owner:o,repo:n,number:i}=s,{data:a}=await t.pulls.get({owner:o,repo:n,pull_number:i});return{pr:{repo:`${o}/${n}`,number:i,title:a.title,url:r.prUrl}}}async function Ul(r){return se(r.prUrl),ne(r.prUrl,Re,"PR"),{removed:!1,url:r.prUrl,message:"In v2, PRs are fetched fresh on each daily run \u2014 there is no local tracking list to remove from."}}var ko=C(()=>{"use strict";te();Ae();Ee()});var Ua={};oe(Ua,{runRead:()=>Ml});async function Ml(r){if(!r.all&&!r.prUrl)throw new Error("PR URL or --all flag required");return r.prUrl&&se(r.prUrl),r.all?{markedAsRead:0,all:!0,message:"In v2, PR read state is not tracked locally."}:{marked:!1,url:r.prUrl,message:"In v2, PR read state is not tracked locally."}}var Ma=C(()=>{"use strict";Ae()});var zs={};oe(zs,{runClaim:()=>Nl,runComments:()=>Ll,runPost:()=>jl});async function Ll(r){se(r.prUrl),ne(r.prUrl,Re,"PR");let e=_e(),t=x(),s=me(e),o=pe(r.prUrl);if(!o||o.type!=="pull")throw new Error("Invalid PR URL format");let{owner:n,repo:i,number:a}=o,{data:c}=await s.pulls.get({owner:n,repo:i,pull_number:a}),[u,l,d]=await Promise.all([Me(h=>s.pulls.listReviewComments({owner:n,repo:i,pull_number:a,per_page:100,page:h})),Me(h=>s.issues.listComments({owner:n,repo:i,issue_number:a,per_page:100,page:h})),Me(h=>s.pulls.listReviews({owner:n,repo:i,pull_number:a,per_page:100,page:h}))]),g=t.getState().config.githubUsername,T=h=>!(!h.user||h.user.login===g||h.user.type==="Bot"&&!r.showBots),_=u.filter(T).sort((h,O)=>new Date(O.created_at).getTime()-new Date(h.created_at).getTime()),w=l.filter(T).sort((h,O)=>new Date(O.created_at).getTime()-new Date(h.created_at).getTime()),P=d.filter(h=>T(h)&&h.body&&h.body.trim()).sort((h,O)=>new Date(O.submitted_at||0).getTime()-new Date(h.submitted_at||0).getTime());return{pr:{title:c.title,state:c.state,mergeable:c.mergeable,head:c.head.ref,base:c.base.ref,url:c.html_url},reviews:P.map(h=>({user:h.user?.login,state:h.state,body:h.body??null,submittedAt:h.submitted_at??null})),reviewComments:_.map(h=>({user:h.user?.login,body:h.body,path:h.path,createdAt:h.created_at})),issueComments:w.map(h=>({user:h.user?.login,body:h.body,createdAt:h.created_at})),summary:{reviewCount:P.length,inlineCommentCount:_.length,discussionCommentCount:w.length}}}async function jl(r){if(se(r.url),ne(r.url,us,"issue or PR"),!r.message.trim())throw new Error("No message provided");ls(r.message);let e=_e(),t=pe(r.url);if(!t)throw new Error("Invalid GitHub URL format");let{owner:s,repo:o,number:n}=t,i=me(e),{data:a}=await i.issues.createComment({owner:s,repo:o,issue_number:n,body:r.message});return{commentUrl:a.html_url,url:r.url}}async function Nl(r){se(r.issueUrl),ne(r.issueUrl,Ws,"issue");let e=_e(),t=r.message||"Hi! I'd like to work on this issue. Could you assign it to me?";ls(t);let s=pe(r.issueUrl);if(!s||s.type!=="issues")throw new Error("Invalid issue URL format (must be an issue, not a PR)");let{owner:o,repo:n,number:i}=s,a=me(e),{data:c}=await a.issues.createComment({owner:o,repo:n,issue_number:i,body:t});try{let u=x();u.addIssue({id:i,url:r.issueUrl,repo:`${o}/${n}`,number:i,title:"(claimed)",status:"claimed",labels:[],createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),vetted:!1}),u.save()}catch(u){console.error(`Warning: Comment posted on ${r.issueUrl} but failed to save to local state: ${u instanceof Error?u.message:u}`)}return{commentUrl:c.html_url,issueUrl:r.issueUrl}}var Js=C(()=>{"use strict";te();Yt();Ae()});var La={};oe(La,{runConfig:()=>Hl});async function Hl(r){let e=x(),t=e.getState().config;if(!r.key)return{config:t};if(!r.value)throw new Error("Value required");let s=r.value;switch(r.key){case"username":e.updateConfig({githubUsername:xt(s)});break;case"add-language":t.languages.includes(s)||e.updateConfig({languages:[...t.languages,s]});break;case"add-label":t.labels.includes(s)||e.updateConfig({labels:[...t.labels,s]});break;case"exclude-repo":{let o=s.split("/");if(o.length!==2||!o[0]||!o[1])throw new Error(`Invalid repo format "${s}". Use "owner/repo" format. To exclude an entire org, use: config exclude-org ${s}`);let n=s.toLowerCase();t.excludeRepos.some(i=>i.toLowerCase()===n)||(e.updateConfig({excludeRepos:[...t.excludeRepos,s]}),e.cleanupExcludedData([s],[]));break}case"exclude-org":{if(s.includes("/"))throw new Error(`Invalid org name "${s}". Use just the org name (e.g., "facebook"), not "owner/repo" format. To exclude a specific repo, use: config exclude-repo ${s}`);let o=t.excludeOrgs??[];o.some(n=>n.toLowerCase()===s.toLowerCase())||(e.updateConfig({excludeOrgs:[...o,s]}),e.cleanupExcludedData([],[s]));break}default:throw new Error(`Unknown config key: ${r.key}`)}return e.save(),{success:!0,key:r.key,value:s}}var ja=C(()=>{"use strict";te();Ae()});var Na={};oe(Na,{runInit:()=>ql});async function ql(r){xt(r.username);let e=x();return e.updateConfig({githubUsername:r.username}),e.save(),{username:r.username,message:"Username saved. Run `daily` to fetch your open PRs from GitHub."}}var Ha=C(()=>{"use strict";te();Ae()});var Oo={};oe(Oo,{runCheckSetup:()=>Vl,runSetup:()=>Bl});function Ao(r,e){let t=Number(r);if(!Number.isFinite(t)||t<1||!Number.isInteger(t))throw new Z(`Invalid value for ${e}: "${r}". Must be a positive integer.`);return t}async function Bl(r){let e=x(),t=e.getState().config;if(r.set&&r.set.length>0){let s={},o=[];for(let n of r.set){let[i,...a]=n.split("="),c=a.join("=");switch(i){case"username":xt(c),e.updateConfig({githubUsername:c}),s[i]=c;break;case"maxActivePRs":{let u=Ao(c,"maxActivePRs");e.updateConfig({maxActivePRs:u}),s[i]=String(u);break}case"dormantDays":{let u=Ao(c,"dormantDays");e.updateConfig({dormantThresholdDays:u}),s[i]=String(u);break}case"approachingDays":{let u=Ao(c,"approachingDays");e.updateConfig({approachingDormantDays:u}),s[i]=String(u);break}case"languages":e.updateConfig({languages:c.split(",").map(u=>u.trim())}),s[i]=c;break;case"labels":e.updateConfig({labels:c.split(",").map(u=>u.trim())}),s[i]=c;break;case"showHealthCheck":e.updateConfig({showHealthCheck:c!=="false"}),s[i]=c!=="false"?"true":"false";break;case"squashByDefault":c==="ask"?(e.updateConfig({squashByDefault:"ask"}),s[i]="ask"):(e.updateConfig({squashByDefault:c!=="false"}),s[i]=c!=="false"?"true":"false");break;case"minStars":{let u=Number(c);if(!Number.isFinite(u)||!Number.isInteger(u)||u<0)throw new Z(`Invalid value for minStars: "${c}". Must be a non-negative integer.`);e.updateConfig({minStars:u}),s[i]=String(u);break}case"includeDocIssues":e.updateConfig({includeDocIssues:c==="true"}),s[i]=c==="true"?"true":"false";break;case"aiPolicyBlocklist":{let u=c.split(",").map(g=>g.trim()).filter(Boolean),l=[],d=[];for(let g of u){let T=g.replace(/\s+/g,"");/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/.test(T)?l.push(T):d.push(g)}if(d.length>0&&(o.push(`Warning: Skipping invalid entries (expected "owner/repo" format): ${d.join(", ")}`),s.aiPolicyBlocklist_invalidEntries=d.join(", ")),l.length===0&&u.length>0){o.push("Warning: All entries were invalid. Blocklist not updated."),s[i]="(all entries invalid)";break}e.updateConfig({aiPolicyBlocklist:l}),s[i]=l.length>0?l.join(", "):"(empty)";break}case"complete":c==="true"&&(e.markSetupComplete(),s[i]="true");break;default:o.push(`Unknown setting: ${i}`)}}return e.save(),{success:!0,settings:s,warnings:o.length>0?o:void 0}}return t.setupComplete&&!r.reset?{setupComplete:!0,config:{githubUsername:t.githubUsername,maxActivePRs:t.maxActivePRs,dormantThresholdDays:t.dormantThresholdDays,approachingDormantDays:t.approachingDormantDays,languages:t.languages,labels:t.labels}}:{setupRequired:!0,prompts:[{setting:"username",prompt:"What is your GitHub username?",current:t.githubUsername||null,required:!0,type:"string"},{setting:"maxActivePRs",prompt:"How many PRs do you want to work on at once?",current:t.maxActivePRs,default:10,type:"number"},{setting:"dormantDays",prompt:"After how many days of inactivity should a PR be considered dormant?",current:t.dormantThresholdDays,default:30,type:"number"},{setting:"approachingDays",prompt:"At how many days should we warn about approaching dormancy?",current:t.approachingDormantDays,default:25,type:"number"},{setting:"languages",prompt:"What programming languages do you want to contribute to?",current:t.languages,default:["typescript","javascript"],type:"list"},{setting:"labels",prompt:"What issue labels should we search for?",current:t.labels,default:["good first issue","help wanted"],type:"list"},{setting:"aiPolicyBlocklist",prompt:"Repos with anti-AI contribution policies to block (owner/repo, comma-separated)?",current:t.aiPolicyBlocklist??lt.aiPolicyBlocklist??null,default:["matplotlib/matplotlib"],type:"list"}]}}async function Vl(){let r=x();return{setupComplete:r.isSetupComplete(),username:r.getState().config.githubUsername}}var Go=C(()=>{"use strict";te();le();Ae()});function ps(){return Ba.join(Fe(),"dashboard-server.pid")}function Qs(r){Ut.writeFileSync(ps(),JSON.stringify(r),{mode:384})}function Mt(){try{let r=Ut.readFileSync(ps(),"utf-8"),e=JSON.parse(r);return typeof e!="object"||e===null||typeof e.pid!="number"||!Number.isInteger(e.pid)||e.pid<=0||typeof e.port!="number"||typeof e.startedAt!="string"?(m(Ks,"PID file has invalid structure, ignoring"),null):e}catch(r){return r.code!=="ENOENT"&&m(Ks,`Failed to read PID file: ${r.message}`),null}}function ut(){try{Ut.unlinkSync(ps())}catch(r){r.code!=="ENOENT"&&m(Ks,`Failed to remove PID file: ${r.message}`)}}function ds(r){return new Promise(e=>{let t=qa.get(`http://127.0.0.1:${r}/api/data`,{timeout:2e3},s=>{s.resume(),e(s.statusCode===200)});t.on("error",()=>e(!1)),t.on("timeout",()=>{t.destroy(),e(!1)})})}async function Ys(){let r=Mt();if(!r)return null;try{process.kill(r.pid,0)}catch(e){let t=e.code;return t!=="ESRCH"&&t!=="EPERM"&&m(Ks,`Unexpected error checking PID ${r.pid}: ${e.message}`),ut(),null}return await ds(r.port)?{port:r.port,url:`http://oss.localhost:${r.port}`}:(ut(),null)}var qa,Ut,Ba,Ks,Xs=C(()=>{"use strict";qa=z(require("http"),1),Ut=z(require("fs"),1),Ba=z(require("path"),1);te();ge();Ks="dashboard-server"});function Kl(r){return new Promise(e=>setTimeout(e,r))}async function Wa(r){if(!Zs())return null;let t=await Ys();if(t){let c=Mt(),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(d){d.code==="ESRCH"?l=!0:console.error(`[STARTUP] Could not kill outdated dashboard (PID ${c.pid}): ${d.message}`)}if(l)ut();else return{url:t.url,port:t.port,alreadyRunning:!0}}else return{url:t.url,port:t.port,alreadyRunning:!0}}let s=r?.port??Wl,o=process.argv[1],n=(0,Va.spawn)("node",[o,"dashboard","serve","--port",String(s),"--no-open"],{detached:!0,stdio:"ignore"}),i=!1,a=!1;n.on("error",c=>{i=!0,console.error(`[STARTUP] Failed to spawn dashboard server: ${c.message}`)}),n.on("exit",c=>{a=!0,c!==0&&c!==null&&console.error(`[STARTUP] Dashboard server exited prematurely (code ${c})`)}),n.unref();for(let c=0;c<Jl;c++){if(await Kl(zl),i||a)return null;let u=Mt();if(u&&await ds(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 Va,Wl,zl,Jl,za=C(()=>{"use strict";Va=require("child_process");Xs();$o();te();Wl=3e3,zl=200,Jl=25});var Xa={};oe(Xa,{countIssueListItems:()=>Qa,detectIssueList:()=>Ya,openInBrowser:()=>er,parseIssueListPathFromConfig:()=>Ka,runStartup:()=>Ql});function Ka(r){let e=r.match(/^---\n([\s\S]*?)\n---/);if(!e)return;let s=e[1].match(/issueListPath:\s*["']?([^"'\n]+)["']?/);return s?s[1].trim():void 0}function Qa(r){let e=0,t=0,s=r.split(`
|
|
96
|
-
`);for(let o of s)/^\s*- (?:~~)?\[/.test(o)&&(/~~|\*\*Done\*\*/.test(o)?t++:e++);return{availableCount:e,completedCount:t}}function Ya(){let r="",e="auto-detected",t=".claude/oss-autopilot/config.md";if(Ct.existsSync(t))try{let s=Ct.readFileSync(t,"utf-8"),o=Ka(s);o&&Ct.existsSync(o)&&(r=o,e="configured")}catch(s){console.error("[STARTUP] Failed to read config:",S(s))}if(!r){let s=["open-source/potential-issue-list.md","oss/issue-list.md","issues.md"];for(let o of s)if(Ct.existsSync(o)){r=o,e="auto-detected";break}}if(r)try{let s=Ct.readFileSync(r,"utf-8"),{availableCount:o,completedCount:n}=Qa(s);return{path:r,source:e,availableCount:o,completedCount:n}}catch(s){return console.error(`[STARTUP] Failed to read issue list at ${r}:`,S(s)),{path:r,source:e,availableCount:0,completedCount:0}}}function er(r){let e,t;switch(process.platform){case"darwin":e="open",t=[r];break;case"win32":e="cmd",t=["/c","start","",r];break;default:e="xdg-open",t=[r];break}(0,Ja.execFile)(e,t,s=>{s&&console.error(`[STARTUP] Failed to open dashboard in browser: ${s.message}`)})}async function Ql(){let r=qe(),e=x(),t=!1;if(!e.isSetupComplete()){let c=await Rs();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:r,setupComplete:!1}}else return{version:r,setupComplete:!1}}let s=Ye();if(!s)return{version:r,setupComplete:!0,authError:'GitHub authentication required. Install GitHub CLI (https://cli.github.com/) and run "gh auth login", or set GITHUB_TOKEN.'};let o=await Vs(s),n,i=!1;if(o.digest.summary.totalActivePRs>0)try{let c=await Wa();c?(n=c.url,er(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=Ya();return{version:r,setupComplete:!0,autoDetected:t,daily:o,dashboardUrl:n,issueList:a}}var Ct,Ja,Do=C(()=>{"use strict";Ct=z(require("fs"),1),Ja=require("child_process");te();le();cs();za()});var Lt,Za=C(()=>{"use strict";Lt=class{maxRequests;windowMs;timestamps=[];constructor(e){this.maxRequests=e.maxRequests,this.windowMs=e.windowMs}check(){let e=Date.now(),t=e-this.windowMs;if(this.timestamps=this.timestamps.filter(s=>s>t),this.timestamps.length>=this.maxRequests){let o=this.timestamps[0]+this.windowMs-e;return{allowed:!1,retryAfterSeconds:Math.ceil(o/1e3)}}return this.timestamps.push(e),{allowed:!0}}}});var oc={};oe(oc,{findRunningDashboardServer:()=>Ys,getDashboardPidPath:()=>ps,isDashboardServerRunning:()=>ds,readDashboardServerInfo:()=>Mt,removeDashboardServerInfo:()=>ut,startDashboardServer:()=>sp,writeDashboardServerInfo:()=>Qs});function ep(r,e){let t=e.config.statusOverrides;if(!t||Object.keys(t).length===0)return r;let s=x(),o=new Set(Object.keys(t)),n=!1,i=r.map(a=>{let c=s.getStatusOverride(a.url,a.updatedAt);return c?c.status===a.status?a:{...a,status:c.status}:(o.has(a.url)&&(n=!0),a)});if(n)try{s.save()}catch(a){m(Se,`Failed to persist auto-cleared overrides \u2014 they may reappear on restart: ${S(a)}`)}return i}function tr(r,e,t,s,o){let n=va(r,e),i=Sa(n),{monthlyMerged:a,monthlyOpened:c,monthlyClosed:u}=Pa(e),l=s??To(x().getMergedPRs()),d=o??vo(x().getClosedPRs()),g=e.config.minStars??50,T=e.repoScores||{},_=G=>!Ke(T[G.repo]?.stargazersCount,g),w=l.filter(_),P=d.filter(_),h=Ta(r,e,w.length,P.length),O=t.filter(G=>G.status==="new_response");return{stats:h,prsByRepo:n,topRepos:i.map(([G,N])=>({repo:G,...N})),monthlyMerged:a,monthlyOpened:c,monthlyClosed:u,activePRs:ep(r.openPRs||[],e),shelvedPRUrls:e.config.shelvedPRUrls||[],recentlyMergedPRs:r.recentlyMergedPRs||[],recentlyClosedPRs:r.recentlyClosedPRs||[],autoUnshelvedPRs:r.autoUnshelvedPRs||[],commentedIssues:t,issueResponses:O,allMergedPRs:w,allClosedPRs:P}}function tp(r,e=Yl){return new Promise((t,s)=>{let o=[],n=0,i=!1;r.on("data",a=>{if(!i){if(n+=a.length,n>e){i=!0,r.destroy(),s(new Error("Body too large"));return}o.push(a)}}),r.on("end",()=>{i||t(Buffer.concat(o).toString("utf-8"))}),r.on("error",a=>{i||s(a)})})}function rc(r){r.setHeader("X-Content-Type-Options","nosniff"),r.setHeader("X-Frame-Options","DENY"),r.setHeader("Content-Security-Policy","default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'"),r.setHeader("Referrer-Policy","strict-origin-when-cross-origin")}function tc(r,e){let t=r.headers.origin;return t?[`http://localhost:${e}`,`http://127.0.0.1:${e}`,`http://oss.localhost:${e}`].includes(t):!0}function sr(r,e,t){rc(r),r.setHeader("Cache-Control","no-store");let s=JSON.stringify(t);r.writeHead(e,{"Content-Type":"application/json","Content-Length":Buffer.byteLength(s)}),r.end(s)}function ce(r,e,t){sr(r,e,{error:t})}async function sp(r){let{port:e,assetsDir:t,token:s,open:o}=r,n=x(),i=Be.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=tr(a,n.getState(),c)}catch(M){throw new Error(`Failed to build dashboard data: ${S(M)}. State data may be corrupted \u2014 try running: daily --json`,{cause:M})}let l=new Lt({maxRequests:30,windowMs:6e4}),d=new Lt({maxRequests:10,windowMs:6e4}),g=new Lt({maxRequests:2,windowMs:6e4}),T=sc.createServer(async(M,k)=>{let A=M.method||"GET",U=M.url||"/";try{if(U==="/api/data"&&A==="GET"){let H=l.check();if(!H.allowed){k.setHeader("Retry-After",String(H.retryAfterSeconds)),ce(k,429,"Too many requests");return}sr(k,200,u);return}if(U==="/api/action"&&A==="POST"){if(!tc(M,O)){ce(k,403,"Invalid origin");return}let H=d.check();if(!H.allowed){k.setHeader("Retry-After",String(H.retryAfterSeconds)),ce(k,429,"Too many requests");return}await _(M,k);return}if(U==="/api/refresh"&&A==="POST"){if(!tc(M,O)){ce(k,403,"Invalid origin");return}let H=g.check();if(!H.allowed){k.setHeader("Retry-After",String(H.retryAfterSeconds)),ce(k,429,"Too many requests");return}await w(M,k);return}if(A==="GET"){P(U,k);return}ce(k,405,"Method not allowed")}catch(H){m(Se,`Unhandled request error: ${A} ${U} ${S(H)}`),k.headersSent||ce(k,500,"Internal server error")}});T.requestTimeout=Xl;async function _(M,k){let A;try{let U=await tp(M);A=JSON.parse(U)}catch(U){let H=U instanceof Error&&U.message==="Body too large";ce(k,H?413:400,H?"Request body too large":"Invalid JSON body");return}if(!A.action||!ec.has(A.action)){ce(k,400,`Invalid action. Must be one of: ${[...ec].join(", ")}`);return}if(!A.url||typeof A.url!="string"){ce(k,400,'Missing or invalid "url" field');return}try{se(A.url),ne(A.url,Re,"PR")}catch(U){U instanceof Z?ce(k,400,U.message):(m(Se,`Unexpected error during URL validation: ${S(U)}`),ce(k,400,"Invalid URL"));return}if(A.action==="override_status"&&(!A.status||A.status!=="needs_addressing"&&A.status!=="waiting_on_maintainer")){ce(k,400,'override_status requires a valid "status" field (needs_addressing or waiting_on_maintainer)');return}try{switch(A.action){case"shelve":n.shelvePR(A.url);break;case"unshelve":n.unshelvePR(A.url);break;case"override_status":{let U=A.status,ue=(a?.openPRs||[]).find(he=>he.url===A.url)?.updatedAt||new Date().toISOString();n.setStatusOverride(A.url,U,ue);break}}n.save()}catch(U){m(Se,`Action failed: ${A.action} ${A.url} ${S(U)}`),ce(k,500,"Action failed");return}u=tr(a,n.getState(),c),sr(k,200,u)}async function w(M,k){let A=s||Ye();if(!A){ce(k,401,"No GitHub token available. Cannot refresh data.");return}try{m(Se,"Refreshing dashboard data from GitHub...");let U=await Eo(A);a=U.digest,c=U.commentedIssues,u=tr(a,n.getState(),c,U.allMergedPRs,U.allClosedPRs),sr(k,200,u)}catch(U){m(Se,`Dashboard refresh failed: ${S(U)}`),ce(k,500,"Refresh failed")}}function P(M,k){let A;try{A=decodeURIComponent(M.split("?")[0])}catch{m(Se,`Malformed URL received: ${M}`),ce(k,400,"Malformed URL");return}if(A.includes("..")){ce(k,403,"Forbidden");return}let U=A==="/"?"index.html":A.replace(/^\/+/,""),H=Be.join(i,U);if(!H.startsWith(i+Be.sep)&&H!==i){ce(k,403,"Forbidden");return}try{rr.statSync(H).isDirectory()&&(H=Be.join(i,"index.html"))}catch(D){if(D.code==="ENOENT")H=Be.join(i,"index.html");else{m(Se,`Failed to stat file: ${H}`),ce(k,500,"Internal server error");return}}let ue=Be.extname(H).toLowerCase(),he=Zl[ue]||"application/octet-stream";try{let D=rr.readFileSync(H);rc(k),k.writeHead(200,{"Content-Type":he,"Content-Length":D.length,"Cache-Control":"public, max-age=3600"}),k.end(D)}catch(D){D.code==="ENOENT"?ce(k,404,"Not found"):(m(Se,`Failed to serve static file: ${H}`),ce(k,500,"Failed to read file"))}}let h=10,O=e;for(let M=0;M<h;M++)try{await new Promise((k,A)=>{T.once("error",A),T.listen(O,"127.0.0.1",()=>k())});break}catch(k){let A=k;if(A.code==="EADDRINUSE"&&M<h-1){m(Se,`Port ${O} is in use, trying ${O+1}...`),O++;continue}throw new Error(`Failed to start server: ${A.message}`,{cause:k})}Qs({pid:process.pid,port:O,startedAt:new Date().toISOString(),version:qe()});let G=`http://oss.localhost:${O}`;m(Se,`Dashboard server running at ${G} (also: http://localhost:${O})`),s&&Eo(s).then(M=>{a=M.digest,c=M.commentedIssues,u=tr(a,n.getState(),c,M.allMergedPRs,M.allClosedPRs),m(Se,"Background data refresh complete")}).catch(M=>{m(Se,`Background data refresh failed (serving cached data): ${S(M)}`)}),o&&er(G);let N=()=>{m(Se,"Shutting down dashboard server..."),ut(),T.close(()=>{process.exit(0)}),setTimeout(()=>process.exit(0),3e3).unref()};process.on("SIGINT",N),process.on("SIGTERM",N)}var sc,rr,Be,ec,Se,Yl,Xl,Zl,nc=C(()=>{"use strict";sc=z(require("http"),1),rr=z(require("fs"),1),Be=z(require("path"),1);te();le();ge();Ae();So();Do();Xs();Za();pt();Xs();ec=new Set(["shelve","unshelve","override_status"]),Se="dashboard-server",Yl=10240,Xl=3e4,Zl={".html":"text/html",".js":"application/javascript",".css":"text/css",".svg":"image/svg+xml",".json":"application/json",".png":"image/png",".ico":"image/x-icon"}});var ic={};oe(ic,{resolveAssetsDir:()=>Zs,serveDashboard:()=>rp});function Zs(){let r=Le.resolve(__dirname,"../../dashboard/dist");if(or.existsSync(Le.join(r,"index.html")))return r;let e=Le.resolve(Le.dirname(process.argv[1]),"../../dashboard/dist");if(or.existsSync(Le.join(e,"index.html")))return e;try{let t=require.resolve("@oss-autopilot/dashboard/package.json"),s=Le.join(Le.dirname(t),"dist");if(or.existsSync(Le.join(s,"index.html")))return s}catch(t){t.code!=="MODULE_NOT_FOUND"&&console.error("Error resolving dashboard package:",t)}return null}async function rp(r){let e=Zs();e||(console.error("Could not find dashboard SPA assets."),console.error("Make sure packages/dashboard has been built:"),console.error(" cd packages/dashboard && pnpm run build"),process.exit(1));let t=Ye(),{startDashboardServer:s}=await Promise.resolve().then(()=>(nc(),oc));await s({port:r.port,assetsDir:e,token:t,open:r.open})}var or,Le,$o=C(()=>{"use strict";or=z(require("fs"),1),Le=z(require("path"),1);te()});var uc={};oe(uc,{parseIssueList:()=>cc,runParseList:()=>ap});function op(r){let e=r.match(/https:\/\/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);if(e)return{repo:e[1],number:parseInt(e[2],10),url:e[0]};let t=r.match(/https:\/\/github\.com\/([^/]+\/[^/]+)\/pull\/(\d+)/);return t?{repo:t[1],number:parseInt(t[2],10),url:t[0]}:null}function np(r){let e=r.replace(/\[([^\]]+)\]\([^)]+\)/g,"$1");return e=e.replace(/https?:\/\/\S+/g,""),e=e.replace(/^\s*[-*+]\s*/,"").replace(/^\s*\d+\.\s*/,""),e=e.replace(/\[[ xX]\]\s*/,""),e=e.replace(/~~/g,""),e=e.replace(/\b(Done|DONE|done)\b/g,""),e=e.replace(/^[\s\-\u2013\u2014:]+/,"").replace(/[\s\-\u2013\u2014:]+$/,""),e.trim()}function ip(r){return!!(/~~.+~~/.test(r)||/\[[xX]\]/.test(r)||/\bdone\b/i.test(r))}function cc(r){let e=r.split(`
|
|
97
|
-
`),t=[],s=[],o="Uncategorized";for(let n of e){let i=n.match(/^#{1,3}\s+(.+)/);if(i){o=i[1].trim();continue}if(!n.trim()||!/^\s*[-*+]|\s*\d+\.|\s*\[[ xX]\]/.test(n))continue;let a=
|
|
98
|
-
`).filter(Boolean):[]}catch(a){let c=
|
|
99
|
-
`).filter(Boolean)}catch(a){
|
|
100
|
-
`).filter(
|
|
101
|
-
`).filter(Boolean):[]}catch(o){
|
|
102
|
-
`)}function
|
|
93
|
+
`),r.needsAddressingPRs.length>0){console.log("\u274C Needs Addressing:");for(let o of r.needsAddressingPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` ${o.displayLabel} ${o.displayDescription}`);console.log("")}if(r.waitingOnMaintainerPRs.length>0){console.log("\u23F3 Waiting on Maintainer:");for(let o of r.waitingOnMaintainerPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` ${o.displayDescription}`);console.log("")}if(r.recentlyMergedPRs.length>0){console.log("\u{1F389} Recently Merged:");for(let o of r.recentlyMergedPRs){let n=o.mergedAt?new Date(o.mergedAt).toLocaleDateString():"";console.log(` - ${o.repo}#${o.number}: ${o.title}${n?` (merged ${n})`:""}`)}console.log("")}if(r.recentlyClosedPRs.length>0){console.log("\u{1F6AB} Recently Closed:");for(let o of r.recentlyClosedPRs){let n=o.closedAt?new Date(o.closedAt).toLocaleDateString():"";console.log(` - ${o.repo}#${o.number}: ${o.title}${n?` (closed ${n})`:""}`)}console.log("")}if(r.autoUnshelvedPRs.length>0){console.log("\u{1F514} Auto-Unshelved:");for(let o of r.autoUnshelvedPRs)console.log(` - ${o.repo}#${o.number}: ${o.title} (${o.status.replace(/_/g," ")})`);console.log("")}if(r.shelvedPRs.length>0){console.log("\u{1F4E6} Shelved:");for(let o of r.shelvedPRs)console.log(` - ${o.repo}#${o.number}: ${o.title}`);console.log("")}let s=t.filter(o=>o.status==="new_response");if(s.length>0){console.log("\u{1F4AC} Issue Replies:");for(let o of s)console.log(` - ${o.repo}#${o.number}: ${o.title}`),console.log(` @${o.lastResponseAuthor}: ${o.lastResponseBody.slice(0,80)}${o.lastResponseBody.length>80?"...":""}`);console.log("")}console.log("Run with --json for structured output"),console.log('Run "dashboard serve" for browser view')}var Ht,Cl,Ea,kl,va=k(()=>{"use strict";Te();he();ue();xt();Ht=new Set(["needs_addressing"]),Cl=new Set(["needs_response","needs_changes","failing_ci","merge_conflict"]),Ea=new Set(["dormant","approaching_dormant"]),kl=new Set(["needs_addressing","waiting_on_maintainer"])});function Eo(r){let{repoScores:e,activePRCount:t}=r,s=0,o=0,n=[];for(let c of Object.values(e))s+=c.mergedPRCount,o+=c.closedWithoutMergeCount,c.mergedPRCount>0&&n.push({repo:c.repo,mergedCount:c.mergedPRCount});let i=s+o,a=i>0?s/i:0;return n.sort((c,u)=>u.mergedCount-c.mergedCount),{totalMerged:s,totalClosed:o,mergeRate:a,activePRs:t,reposContributed:n.length,topRepos:n.slice(0,10)}}var To=k(()=>{"use strict"});async function vo(r,e,t){for(let s of Al)try{T(Ot,`Checking ${e}/${t} for template at ${s}`);let{data:o}=await r.repos.getContent({owner:e,repo:t,path:s});if(Array.isArray(o)){T(Ot,`${s} is a directory (multiple templates?), skipping`);continue}if(o.type!=="file"){T(Ot,`${s} is type "${o.type}", skipping`);continue}if(!o.content){T(Ot,`${s} has no content, skipping`);continue}let n=Buffer.from(o.content,"base64").toString("utf-8");return T(Ot,`Found PR template at ${s} (${n.length} chars)`),{template:n,source:s}}catch(o){if(ve(o)===404)continue;if(_e(o))throw o;let n=v(o);return m(Ot,`Error checking ${e}/${t}/${s}: ${n}`),{template:null,source:null,error:n}}return T(Ot,`No PR template found for ${e}/${t}`),{template:null,source:null}}var Ot,Al,So=k(()=>{"use strict";he();ue();Ot="pr-template",Al=[".github/PULL_REQUEST_TEMPLATE.md",".github/pull_request_template.md","docs/pull_request_template.md","pull_request_template.md"]});var ee=k(()=>{"use strict";xt();aa();_a();wa();Hs();Lt();Te();ue();he();jt();va();To();So();it()});function Sa(r){let e=t=>t.map(s=>s.url);return{generatedAt:r.generatedAt,openPRs:r.openPRs,needsAddressingPRs:e(r.needsAddressingPRs),waitingOnMaintainerPRs:e(r.waitingOnMaintainerPRs),recentlyClosedPRs:r.recentlyClosedPRs,recentlyMergedPRs:r.recentlyMergedPRs,shelvedPRs:r.shelvedPRs,autoUnshelvedPRs:r.autoUnshelvedPRs,summary:r.summary}}function Pa(r){return r.map(e=>({type:e.type,prUrl:e.pr.url,label:e.label,isNewContribution:e.isNewContribution}))}function Ca(r){return r.map(e=>({repo:e.repo,prUrls:e.prs.map(t=>t.url)}))}function Ol(r){return{success:!0,data:r,timestamp:new Date().toISOString()}}function Gl(r){return{success:!1,error:r,timestamp:new Date().toISOString()}}function K(r){console.log(JSON.stringify(Ol(r),null,2))}function ka(r){console.log(JSON.stringify(Gl(r),null,2))}var Po=k(()=>{"use strict"});function Aa(r,e,t,s){let o=r.summary||{totalActivePRs:0,totalMergedAllTime:0,mergeRate:0,totalNeedingAttention:0},n=e.config.minStars??50,i=t!==void 0?Math.max(t,o.totalMergedAllTime):o.totalMergedAllTime,a=Object.values(e.repoScores||{}).reduce((u,l)=>u+(Ye(l.stargazersCount,n)?0:l.closedWithoutMergeCount||0),0),c=s!==void 0?Math.max(s,a):a;return{activePRs:o.totalActivePRs,shelvedPRs:(r.shelvedPRs||[]).length,mergedPRs:i,closedPRs:c,mergeRate:`${(o.mergeRate??0).toFixed(1)}%`}}function Co(r,e){let t={...r};for(let[s,o]of Object.entries(e))t[s]=o;return t}function ko(r,e,t,s,o){let n=L(),i=n.getState();try{Object.keys(e).length>0&&n.setMonthlyMergedCounts(Co(i.monthlyMergedCounts||{},e))}catch(a){m(ge,`Failed to store monthly merged counts: ${v(a)}`)}try{Object.keys(t).length>0&&n.setMonthlyClosedCounts(Co(i.monthlyClosedCounts||{},t))}catch(a){m(ge,`Failed to store monthly closed counts: ${v(a)}`)}try{let a={...s};for(let[c,u]of Object.entries(o))a[c]=(a[c]||0)+u;for(let c of r)if(c.createdAt){let u=c.createdAt.slice(0,7);a[u]=(a[u]||0)+1}Object.keys(a).length>0&&n.setMonthlyOpenedCounts(Co(i.monthlyOpenedCounts||{},a))}catch(a){m(ge,`Failed to store monthly opened counts: ${v(a)}`)}}async function Ao(r){let e=L(),t=new Pt(r),s=new kt(r),o=fe(r),n=e.getState().config,i=Qs(e.getState()),a=e.getMergedPRWatermark(),c=e.getClosedPRWatermark(),[{prs:u,failures:l},d,g,E,_,w,P,b]=await Promise.all([t.fetchUserOpenPRs(),t.fetchRecentlyClosedPRs().catch(G=>{if(_e(G))throw G;return m(ge,`Failed to fetch recently closed PRs: ${v(G)}`),[]}),t.fetchRecentlyMergedPRs().catch(G=>{if(_e(G))throw G;return m(ge,`Failed to fetch recently merged PRs: ${v(G)}`),[]}),t.fetchUserMergedPRCounts(i).catch(G=>{if(_e(G))throw G;return m(ge,`Failed to fetch merged PR counts: ${v(G)}`),St()}),t.fetchUserClosedPRCounts(i).catch(G=>{if(_e(G))throw G;return m(ge,`Failed to fetch closed PR counts: ${v(G)}`),St()}),s.fetchCommentedIssues().catch(G=>{if(_e(G))throw G;let se=v(G);return se.includes("No GitHub username configured")?m(ge,`Issue conversation tracking requires setup: ${se}`):m(ge,`Issue conversation fetch failed: ${se}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${se}`}]}}),na(o,n,a).catch(G=>{if(_e(G))throw G;return m(ge,`Failed to fetch merged PRs for storage: ${v(G)}`),[]}),ia(o,n,c).catch(G=>{if(_e(G))throw G;return m(ge,`Failed to fetch closed PRs for storage: ${v(G)}`),[]})]),C=w.issues;w.failures.length>0&&m(ge,`${w.failures.length} issue conversation check(s) failed`),l.length>0&&m(ge,`${l.length} PR fetch(es) failed`);try{e.addMergedPRs(P)}catch(G){m(ge,`Failed to store merged PRs: ${v(G)}`)}try{e.addClosedPRs(b)}catch(G){m(ge,`Failed to store closed PRs: ${v(G)}`)}let D=Oo(e.getMergedPRs()),N=Go(e.getClosedPRs()),{monthlyCounts:x,monthlyOpenedCounts:O}=E,{monthlyCounts:A,monthlyOpenedCounts:q}=_;ko(u,x,A,O,q);let j=t.generateDigest(u,d,g),be=new Set(e.getState().config.shelvedPRUrls||[]),me=u.filter(G=>be.has(G.url)||G.stalenessTier==="dormant"&&G.status!=="needs_addressing");j.shelvedPRs=me.map(rt),j.autoUnshelvedPRs=[],j.summary.totalActivePRs=u.length-me.length,e.setLastDigest(j);try{e.save()}catch(G){m(ge,`Failed to save dashboard digest to state: ${v(G)}`)}return m(ge,`Refreshed: ${u.length} PRs fetched`),{digest:j,commentedIssues:C,allMergedPRs:D,allClosedPRs:N}}function Oo(r){let e=[],t=0;for(let s of r){let o=de(s.url);if(!o){t++;continue}e.push({url:s.url,repo:`${o.owner}/${o.repo}`,number:o.number,title:s.title,mergedAt:s.mergedAt})}return t>0&&m(ge,`Skipped ${t} stored merged PR(s) with unparseable URLs`),e}function Go(r){let e=[],t=0;for(let s of r){let o=de(s.url);if(!o){t++;continue}e.push({url:s.url,repo:`${o.owner}/${o.repo}`,number:o.number,title:s.title,closedAt:s.closedAt})}return t>0&&m(ge,`Skipped ${t} stored closed PR(s) with unparseable URLs`),e}function Oa(r,e){let t={};for(let o of r.openPRs||[])t[o.repo]||(t[o.repo]={active:0,merged:0,closed:0}),t[o.repo].active++;let s=e.config.minStars??50;for(let[o,n]of Object.entries(e.repoScores||{}))Ye(n.stargazersCount,s)||(t[o]||(t[o]={active:0,merged:0,closed:0}),t[o].merged=n.mergedPRCount,t[o].closed=n.closedWithoutMergeCount);return t}function Ga(r,e=10){return Object.entries(r).sort((t,s)=>s[1].merged+s[1].active+s[1].closed-(t[1].merged+t[1].active+t[1].closed)).slice(0,e)}function $a(r){return{monthlyMerged:r.monthlyMergedCounts||{},monthlyClosed:r.monthlyClosedCounts||{},monthlyOpened:r.monthlyOpenedCounts||{}}}var ge,$o=k(()=>{"use strict";ee();ue();he();Bs();Te();it();hs();ge="dashboard-data"});var Do={};oe(Do,{CRITICAL_STATUSES:()=>Ht,applyStatusOverrides:()=>At,assessCapacity:()=>ls,buildStarFilter:()=>Qs,collectActionableIssues:()=>ps,computeActionMenu:()=>ds,computeRepoSignals:()=>us,executeDailyCheck:()=>Ys,formatBriefSummary:()=>gs,formatSummary:()=>ms,groupPRsByRepo:()=>cs,printDigest:()=>wo,runDaily:()=>Ul,runDailyForDisplay:()=>Ml,toShelvedPRRef:()=>rt});function Qs(r){let e=r.config.minStars??50,t=new Map;for(let[s,o]of Object.entries(r.repoScores))o.stargazersCount!==void 0&&t.set(s,o.stargazersCount);if(t.size!==0)return{minStars:e,knownStarCounts:t}}async function $l(r,e){let{prs:t,failures:s}=await r.fetchUserOpenPRs();s.length>0&&m(Q,`${s.length} PR fetch(es) failed`);let o=L().getState(),n=Qs(o),i=new kt(e),[a,c,u,l,d]=await Promise.all([r.fetchUserMergedPRCounts(n).catch(D=>{if(_e(D))throw D;return m(Q,`Failed to fetch merged PR counts: ${v(D)}`),St()}),r.fetchUserClosedPRCounts(n).catch(D=>{if(_e(D))throw D;return m(Q,`Failed to fetch closed PR counts: ${v(D)}`),St()}),r.fetchRecentlyClosedPRs().catch(D=>{if(_e(D))throw D;return m(Q,`Failed to fetch recently closed PRs: ${v(D)}`),[]}),r.fetchRecentlyMergedPRs().catch(D=>{if(_e(D))throw D;return m(Q,`Failed to fetch recently merged PRs: ${v(D)}`),[]}),i.fetchCommentedIssues().catch(D=>{if(_e(D))throw D;let N=v(D);return N.includes("No GitHub username configured")?m(Q,`Issue conversation tracking requires setup: ${N}`):m(Q,`Issue conversation fetch failed: ${N}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${N}`}]}})]),g=d.issues;d.failures.length>0&&m(Q,`${d.failures.length} issue conversation check(s) failed`);let{repos:E,monthlyCounts:_,monthlyOpenedCounts:w}=a,{repos:P,monthlyCounts:b,monthlyOpenedCounts:C}=c;return{prs:t,failures:s,mergedCounts:E,closedCounts:P,monthlyCounts:_,monthlyClosedCounts:b,openedFromMerged:w,openedFromClosed:C,recentlyClosedPRs:u,recentlyMergedPRs:l,commentedIssues:g}}async function Dl(r,e,t,s){let o=L(),n=Object.values(o.getState().repoScores).filter(w=>w.mergedPRCount>0);if(t.size===0&&n.length>0)m(Q,`Skipping stale repo reset: API returned 0 merged PR results but state has ${n.length} repo(s) with merges. Possible API issue.`);else for(let w of Object.values(o.getState().repoScores))t.has(w.repo)||o.updateRepoScore(w.repo,{mergedPRCount:0});let i=0;for(let[w,{count:P,lastMergedAt:b}]of t)try{o.updateRepoScore(w,{mergedPRCount:P,lastMergedAt:b||void 0})}catch(C){i++,m(Q,`Failed to update merged count for ${w}: ${v(C)}`)}i===t.size&&t.size>0&&m(Q,`[ALL_MERGED_COUNT_UPDATES_FAILED] All ${t.size} merged count update(s) failed.`);let a=Object.values(o.getState().repoScores).filter(w=>(w.closedWithoutMergeCount||0)>0);s.size===0&&a.length>0&&m(Q,`API returned 0 closed PR results but state has ${a.length} repo(s) with closed PRs. Possible transient API issue.`);let c=0;for(let[w,P]of s)try{o.updateRepoScore(w,{closedWithoutMergeCount:P})}catch(b){c++,m(Q,`Failed to update closed count for ${w}: ${v(b)}`)}c===s.size&&s.size>0&&m(Q,`[ALL_CLOSED_COUNT_UPDATES_FAILED] All ${s.size} closed count update(s) failed.`);let u=us(e),l=0;for(let[w,P]of u)try{o.updateRepoScore(w,{signals:P})}catch(b){l++,m(Q,`Failed to update signals for ${w}: ${v(b)}`)}l===u.size&&u.size>0&&m(Q,`[ALL_SIGNAL_UPDATES_FAILED] All ${u.size} signal update(s) failed. This may indicate corrupted state.`);let d=Object.keys(o.getState().repoScores),g;try{g=await r.fetchRepoStarCounts(d)}catch(w){m(Q,`Failed to fetch repo star counts: ${v(w)}`),m(Q,"Repos without cached star data will be excluded from stats until star counts are fetched on the next successful run."),g=new Map}let E=0;for(let[w,P]of g)try{o.updateRepoScore(w,{stargazersCount:P})}catch(b){E++,m(Q,`Failed to update star count for ${w}: ${v(b)}`)}E===g.size&&g.size>0&&m(Q,`[ALL_STAR_COUNT_UPDATES_FAILED] All ${g.size} star count update(s) failed.`);let _=0;for(let[w]of t)try{o.addTrustedProject(w)}catch(P){_++,m(Q,`Failed to sync trusted project ${w}: ${v(P)}`)}_===t.size&&t.size>0&&m(Q,`[ALL_TRUST_SYNCS_FAILED] All ${t.size} trusted project sync(s) failed. This may indicate corrupted state.`)}function Il(r,e,t,s){let o=L();try{let l=o.expireSnoozes();if(l.length>0){let d=l.map(g=>` - ${g}`).join(`
|
|
94
|
+
`);m(Q,`${l.length} snoozed PR(s) expired and will resurface:
|
|
95
|
+
${d}`),o.save()}}catch(l){m(Q,`Failed to expire/persist snoozes: ${v(l)}`)}let n=At(e,o.getState()),i=[],a=[],c=[];for(let l of n)o.isPRShelved(l.url)?Ht.has(l.status)?(o.unshelvePR(l.url),a.push(rt(l)),c.push(l)):i.push(rt(l)):l.stalenessTier==="dormant"&&!Ht.has(l.status)?i.push(rt(l)):c.push(l);let u=r.generateDigest(n,t,s);return u.shelvedPRs=i,u.autoUnshelvedPRs=a,u.summary.totalActivePRs=c.length,o.setLastDigest(u),o.save(),{activePRs:c,shelvedPRs:i,autoUnshelvedPRs:a,digest:u}}function Fl(r,e,t,s,o,n){let i=L(),a=ls(e,i.getState().config.maxActivePRs,t.length),c=!1,u=s.filter(C=>{let D=i.getIssueDismissedAt(C.url);if(!D)return!0;if(C.status==="new_response"){let N=new Date(C.lastResponseAt).getTime(),x=new Date(D).getTime();if(isNaN(N)||isNaN(x))return m(Q,`Invalid timestamp in dismiss check for ${C.url}, including issue`),!0;if(N>x)return m(Q,`Auto-undismissing issue ${C.url}: new response at ${C.lastResponseAt} after dismiss at ${D}`),i.undismissIssue(C.url),c=!0,!0}return!1}),l=u.filter(C=>C.status==="new_response"),d=ms(r,a,l),g=new Set(Object.keys(i.getState().config.snoozedPRs??{}).filter(C=>i.isSnoozed(C))),E=e.filter(C=>{let D=i.getIssueDismissedAt(C.url);if(!D)return!0;let N=new Date(C.updatedAt).getTime(),x=new Date(D).getTime();return isNaN(N)||isNaN(x)?(m(Q,`Invalid timestamp in PR dismiss check for ${C.url}, including PR`),!0):N>x?(m(Q,`Auto-undismissing PR ${C.url}: new activity at ${C.updatedAt} after dismiss at ${D}`),i.undismissIssue(C.url),c=!0,!0):!1});if(c)try{i.save()}catch(C){m(Q,`Failed to persist auto-undismissed state: ${v(C)}`)}let _=ps(E,g,n);r.summary.totalNeedingAttention=_.length;let w=gs(r,_.length,l.length),P=ds(_,a,u),b=cs(e);return{digest:r,capacity:a,summary:d,briefSummary:w,actionableIssues:_,actionMenu:P,commentedIssues:u,repoGroups:b,failures:o}}function xl(r){return{digest:Sa(r.digest),capacity:r.capacity,summary:r.summary,briefSummary:r.briefSummary,actionableIssues:Pa(r.actionableIssues),actionMenu:r.actionMenu,commentedIssues:r.commentedIssues,repoGroups:Ca(r.repoGroups),failures:r.failures}}async function Ys(r){let e=await Da(r);return xl(e)}async function Da(r){let e=new Pt(r),{prs:t,failures:s,mergedCounts:o,closedCounts:n,monthlyCounts:i,monthlyClosedCounts:a,openedFromMerged:c,openedFromClosed:u,recentlyClosedPRs:l,recentlyMergedPRs:d,commentedIssues:g}=await $l(e,r);await Dl(e,t,o,n),ko(t,i,a,c,u);let E=L().getState().lastDigestAt,{activePRs:_,shelvedPRs:w,digest:P}=Il(e,t,l,d);return Fl(P,_,w,g,s,E)}async function Ul(){let r=Re();return Ys(r)}async function Ml(){let r=Re();return Da(r)}var Q,hs=k(()=>{"use strict";ee();ue();he();Bs();$o();Po();ee();Q="daily"});var Ia={};oe(Ia,{runStatus:()=>Ll});async function Ll(r){let e=L(),t=e.getStats(),s=e.getState(),o=s.lastDigestAt||s.lastRunAt,{totalTracked:n,...i}=t,a={stats:i,lastRunAt:s.lastRunAt};return r.offline&&(a.offline=!0,a.lastUpdated=o),a}var Fa=k(()=>{"use strict";ee()});var xa={};oe(xa,{runSearch:()=>jl});async function jl(r){let e=Re(),t=new Ct(e),s=await t.searchIssues({maxResults:r.maxResults}),o=L(),{config:n}=o.getState(),i=n.excludeRepos||[],a=n.aiPolicyBlocklist??ht.aiPolicyBlocklist??[],c={candidates:s.map(u=>{let l=o.getRepoScore(u.issue.repo);return{issue:{repo:u.issue.repo,number:u.issue.number,title:u.issue.title,url:u.issue.url,labels:u.issue.labels},recommendation:u.recommendation,reasonsToApprove:u.reasonsToApprove,reasonsToSkip:u.reasonsToSkip,searchPriority:u.searchPriority,viabilityScore:u.viabilityScore,repoScore:l?{score:l.score,mergedPRCount:l.mergedPRCount,closedWithoutMergeCount:l.closedWithoutMergeCount,isResponsive:l.signals?.isResponsive??!1,lastMergedAt:l.lastMergedAt}:void 0}}),excludedRepos:i,aiPolicyBlocklist:a};return t.rateLimitWarning&&(c.rateLimitWarning=t.rateLimitWarning),c}var Ua=k(()=>{"use strict";ee()});function ne(r,e,t){if(e.test(r))return;let s={PR:"https://github.com/owner/repo/pull/123",issue:"https://github.com/owner/repo/issues/123","issue or PR":"https://github.com/owner/repo/issues/123 or https://github.com/owner/repo/pull/123"};throw new Z(`Invalid ${t} URL: ${r}. Expected format: ${s[t]}`)}function te(r){if(r.length>Ma)throw new Z(`URL exceeds maximum length of ${Ma} characters`);return r}function fs(r){if(r.length>La)throw new Z(`Message exceeds maximum length of ${La} characters`);return r}function qt(r){if(!r||r.trim().length===0)throw new Z("GitHub username cannot be empty.");let e=r.trim();if(e.length>ja)throw new Z(`GitHub username must be at most ${ja} characters (got ${e.length}).`);if(!Nl.test(e))throw new Z("GitHub username can only contain alphanumeric characters and hyphens.");if(e.startsWith("-"))throw new Z("GitHub username cannot start with a hyphen.");if(e.endsWith("-"))throw new Z("GitHub username cannot end with a hyphen.");if(Hl.test(e))throw new Z("GitHub username cannot contain consecutive hyphens.");return e}var we,Xs,Gt,Ma,La,ja,Nl,Hl,ke=k(()=>{"use strict";ue();we=/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\/\d+$/,Xs=/^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\/\d+$/,Gt=/^https:\/\/github\.com\/[^/]+\/[^/]+\/(issues|pull)\/\d+$/,Ma=2048,La=1e3;ja=39,Nl=/^[a-zA-Z0-9-]+$/,Hl=/--/});var Na={};oe(Na,{runVet:()=>ql});async function ql(r){te(r.issueUrl),ne(r.issueUrl,Xs,"issue");let e=Re(),s=await new Ct(e).vetIssue(r.issueUrl);return{issue:{repo:s.issue.repo,number:s.issue.number,title:s.issue.title,url:s.issue.url,labels:s.issue.labels},recommendation:s.recommendation,reasonsToApprove:s.reasonsToApprove,reasonsToSkip:s.reasonsToSkip,projectHealth:s.projectHealth,vettingResult:s.vettingResult}}var Ha=k(()=>{"use strict";ee();ke()});var Io={};oe(Io,{runTrack:()=>Bl,runUntrack:()=>Vl});async function Bl(r){te(r.prUrl),ne(r.prUrl,we,"PR");let e=Re(),t=fe(e),s=de(r.prUrl);if(!s||s.type!=="pull")throw new Error(`Invalid PR URL: ${r.prUrl}`);let{owner:o,repo:n,number:i}=s,{data:a}=await t.pulls.get({owner:o,repo:n,pull_number:i});return{pr:{repo:`${o}/${n}`,number:i,title:a.title,url:r.prUrl}}}async function Vl(r){return te(r.prUrl),ne(r.prUrl,we,"PR"),{removed:!1,url:r.prUrl,message:"In v2, PRs are fetched fresh on each daily run \u2014 there is no local tracking list to remove from."}}var Fo=k(()=>{"use strict";ee();ke();Te()});var qa={};oe(qa,{runRead:()=>Wl});async function Wl(r){if(!r.all&&!r.prUrl)throw new Error("PR URL or --all flag required");return r.prUrl&&te(r.prUrl),r.all?{markedAsRead:0,all:!0,message:"In v2, PR read state is not tracked locally."}:{marked:!1,url:r.prUrl,message:"In v2, PR read state is not tracked locally."}}var Ba=k(()=>{"use strict";ke()});var Zs={};oe(Zs,{runClaim:()=>Kl,runComments:()=>zl,runPost:()=>Jl});async function zl(r){te(r.prUrl),ne(r.prUrl,we,"PR");let e=Re(),t=L(),s=fe(e),o=de(r.prUrl);if(!o||o.type!=="pull")throw new Error("Invalid PR URL format");let{owner:n,repo:i,number:a}=o,{data:c}=await s.pulls.get({owner:n,repo:i,pull_number:a}),[u,l,d]=await Promise.all([je(b=>s.pulls.listReviewComments({owner:n,repo:i,pull_number:a,per_page:100,page:b})),je(b=>s.issues.listComments({owner:n,repo:i,issue_number:a,per_page:100,page:b})),je(b=>s.pulls.listReviews({owner:n,repo:i,pull_number:a,per_page:100,page:b}))]),g=t.getState().config.githubUsername,E=b=>!(!b.user||b.user.login===g||b.user.type==="Bot"&&!r.showBots),_=u.filter(E).sort((b,C)=>new Date(C.created_at).getTime()-new Date(b.created_at).getTime()),w=l.filter(E).sort((b,C)=>new Date(C.created_at).getTime()-new Date(b.created_at).getTime()),P=d.filter(b=>E(b)&&b.body&&b.body.trim()).sort((b,C)=>new Date(C.submitted_at||0).getTime()-new Date(b.submitted_at||0).getTime());return{pr:{title:c.title,state:c.state,mergeable:c.mergeable,head:c.head.ref,base:c.base.ref,url:c.html_url},reviews:P.map(b=>({user:b.user?.login,state:b.state,body:b.body??null,submittedAt:b.submitted_at??null})),reviewComments:_.map(b=>({user:b.user?.login,body:b.body,path:b.path,createdAt:b.created_at})),issueComments:w.map(b=>({user:b.user?.login,body:b.body,createdAt:b.created_at})),summary:{reviewCount:P.length,inlineCommentCount:_.length,discussionCommentCount:w.length}}}async function Jl(r){if(te(r.url),ne(r.url,Gt,"issue or PR"),!r.message.trim())throw new Error("No message provided");fs(r.message);let e=Re(),t=de(r.url);if(!t)throw new Error("Invalid GitHub URL format");let{owner:s,repo:o,number:n}=t,i=fe(e),{data:a}=await i.issues.createComment({owner:s,repo:o,issue_number:n,body:r.message});return{commentUrl:a.html_url,url:r.url}}async function Kl(r){te(r.issueUrl),ne(r.issueUrl,Xs,"issue");let e=Re(),t=r.message||"Hi! I'd like to work on this issue. Could you assign it to me?";fs(t);let s=de(r.issueUrl);if(!s||s.type!=="issues")throw new Error("Invalid issue URL format (must be an issue, not a PR)");let{owner:o,repo:n,number:i}=s,a=fe(e),{data:c}=await a.issues.createComment({owner:o,repo:n,issue_number:i,body:t});try{let u=L();u.addIssue({id:i,url:r.issueUrl,repo:`${o}/${n}`,number:i,title:"(claimed)",status:"claimed",labels:[],createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),vetted:!1}),u.save()}catch(u){console.error(`Warning: Comment posted on ${r.issueUrl} but failed to save to local state: ${u instanceof Error?u.message:u}`)}return{commentUrl:c.html_url,issueUrl:r.issueUrl}}var er=k(()=>{"use strict";ee();os();ke()});var Va={};oe(Va,{runConfig:()=>Ql});async function Ql(r){let e=L(),t=e.getState().config;if(!r.key)return{config:t};if(!r.value)throw new Error("Value required");let s=r.value;switch(r.key){case"username":e.updateConfig({githubUsername:qt(s)});break;case"add-language":t.languages.includes(s)||e.updateConfig({languages:[...t.languages,s]});break;case"add-label":t.labels.includes(s)||e.updateConfig({labels:[...t.labels,s]});break;case"exclude-repo":{let o=s.split("/");if(o.length!==2||!o[0]||!o[1])throw new Error(`Invalid repo format "${s}". Use "owner/repo" format. To exclude an entire org, use: config exclude-org ${s}`);let n=s.toLowerCase();t.excludeRepos.some(i=>i.toLowerCase()===n)||(e.updateConfig({excludeRepos:[...t.excludeRepos,s]}),e.cleanupExcludedData([s],[]));break}case"exclude-org":{if(s.includes("/"))throw new Error(`Invalid org name "${s}". Use just the org name (e.g., "facebook"), not "owner/repo" format. To exclude a specific repo, use: config exclude-repo ${s}`);let o=t.excludeOrgs??[];o.some(n=>n.toLowerCase()===s.toLowerCase())||(e.updateConfig({excludeOrgs:[...o,s]}),e.cleanupExcludedData([],[s]));break}default:throw new Error(`Unknown config key: ${r.key}`)}return e.save(),{success:!0,key:r.key,value:s}}var Wa=k(()=>{"use strict";ee();ke()});var za={};oe(za,{runInit:()=>Yl});async function Yl(r){qt(r.username);let e=L();return e.updateConfig({githubUsername:r.username}),e.save(),{username:r.username,message:"Username saved. Run `daily` to fetch your open PRs from GitHub."}}var Ja=k(()=>{"use strict";ee();ke()});var Uo={};oe(Uo,{runCheckSetup:()=>Zl,runSetup:()=>Xl});function xo(r,e){let t=Number(r);if(!Number.isFinite(t)||t<1||!Number.isInteger(t))throw new Z(`Invalid value for ${e}: "${r}". Must be a positive integer.`);return t}async function Xl(r){let e=L(),t=e.getState().config;if(r.set&&r.set.length>0){let s={},o=[];for(let n of r.set){let[i,...a]=n.split("="),c=a.join("=");switch(i){case"username":qt(c),e.updateConfig({githubUsername:c}),s[i]=c;break;case"maxActivePRs":{let u=xo(c,"maxActivePRs");e.updateConfig({maxActivePRs:u}),s[i]=String(u);break}case"dormantDays":{let u=xo(c,"dormantDays");e.updateConfig({dormantThresholdDays:u}),s[i]=String(u);break}case"approachingDays":{let u=xo(c,"approachingDays");e.updateConfig({approachingDormantDays:u}),s[i]=String(u);break}case"languages":e.updateConfig({languages:c.split(",").map(u=>u.trim())}),s[i]=c;break;case"labels":e.updateConfig({labels:c.split(",").map(u=>u.trim())}),s[i]=c;break;case"showHealthCheck":e.updateConfig({showHealthCheck:c!=="false"}),s[i]=c!=="false"?"true":"false";break;case"squashByDefault":c==="ask"?(e.updateConfig({squashByDefault:"ask"}),s[i]="ask"):(e.updateConfig({squashByDefault:c!=="false"}),s[i]=c!=="false"?"true":"false");break;case"minStars":{let u=Number(c);if(!Number.isFinite(u)||!Number.isInteger(u)||u<0)throw new Z(`Invalid value for minStars: "${c}". Must be a non-negative integer.`);e.updateConfig({minStars:u}),s[i]=String(u);break}case"includeDocIssues":e.updateConfig({includeDocIssues:c==="true"}),s[i]=c==="true"?"true":"false";break;case"aiPolicyBlocklist":{let u=c.split(",").map(g=>g.trim()).filter(Boolean),l=[],d=[];for(let g of u){let E=g.replace(/\s+/g,"");/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/.test(E)?l.push(E):d.push(g)}if(d.length>0&&(o.push(`Warning: Skipping invalid entries (expected "owner/repo" format): ${d.join(", ")}`),s.aiPolicyBlocklist_invalidEntries=d.join(", ")),l.length===0&&u.length>0){o.push("Warning: All entries were invalid. Blocklist not updated."),s[i]="(all entries invalid)";break}e.updateConfig({aiPolicyBlocklist:l}),s[i]=l.length>0?l.join(", "):"(empty)";break}case"projectCategories":{let u=c.split(",").map(E=>E.trim()).filter(Boolean),l=[],d=[];for(let E of u)Ur.includes(E)?l.push(E):d.push(E);d.length>0&&o.push(`Unknown project categories: ${d.join(", ")}. Valid: ${Ur.join(", ")}`);let g=[...new Set(l)];e.updateConfig({projectCategories:g}),s[i]=g.length>0?g.join(", "):"(empty)";break}case"preferredOrgs":{let u=c.split(",").map(g=>g.trim()).filter(Boolean),l=[];for(let g of u)g.includes("/")?o.push(`"${g}" looks like a repo path. Use org name only (e.g., "vercel" not "vercel/next.js").`):/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$/.test(g)?l.push(g.toLowerCase()):o.push(`"${g}" is not a valid GitHub organization name. Skipping.`);let d=[...new Set(l)];e.updateConfig({preferredOrgs:d}),s[i]=d.length>0?d.join(", "):"(empty)";break}case"complete":c==="true"&&(e.markSetupComplete(),s[i]="true");break;default:o.push(`Unknown setting: ${i}`)}}return e.save(),{success:!0,settings:s,warnings:o.length>0?o:void 0}}return t.setupComplete&&!r.reset?{setupComplete:!0,config:{githubUsername:t.githubUsername,maxActivePRs:t.maxActivePRs,dormantThresholdDays:t.dormantThresholdDays,approachingDormantDays:t.approachingDormantDays,languages:t.languages,labels:t.labels,projectCategories:t.projectCategories??[],preferredOrgs:t.preferredOrgs??[]}}:{setupRequired:!0,prompts:[{setting:"username",prompt:"What is your GitHub username?",current:t.githubUsername||null,required:!0,type:"string"},{setting:"maxActivePRs",prompt:"How many PRs do you want to work on at once?",current:t.maxActivePRs,default:10,type:"number"},{setting:"dormantDays",prompt:"After how many days of inactivity should a PR be considered dormant?",current:t.dormantThresholdDays,default:30,type:"number"},{setting:"approachingDays",prompt:"At how many days should we warn about approaching dormancy?",current:t.approachingDormantDays,default:25,type:"number"},{setting:"languages",prompt:"What programming languages do you want to contribute to?",current:t.languages,default:["typescript","javascript"],type:"list"},{setting:"labels",prompt:"What issue labels should we search for?",current:t.labels,default:["good first issue","help wanted"],type:"list"},{setting:"aiPolicyBlocklist",prompt:"Repos with anti-AI contribution policies to block (owner/repo, comma-separated)?",current:t.aiPolicyBlocklist??ht.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 Zl(){let r=L();return{setupComplete:r.isSetupComplete(),username:r.getState().config.githubUsername}}var Mo=k(()=>{"use strict";ee();ue();ke();it()});function bs(){return Qa.join(Ue(),"dashboard-server.pid")}function sr(r){Bt.writeFileSync(bs(),JSON.stringify(r),{mode:384})}function Vt(){try{let r=Bt.readFileSync(bs(),"utf-8"),e=JSON.parse(r);return typeof e!="object"||e===null||typeof e.pid!="number"||!Number.isInteger(e.pid)||e.pid<=0||typeof e.port!="number"||typeof e.startedAt!="string"?(m(tr,"PID file has invalid structure, ignoring"),null):e}catch(r){return r.code!=="ENOENT"&&m(tr,`Failed to read PID file: ${r.message}`),null}}function mt(){try{Bt.unlinkSync(bs())}catch(r){r.code!=="ENOENT"&&m(tr,`Failed to remove PID file: ${r.message}`)}}function ys(r){return new Promise(e=>{let t=Ka.get(`http://127.0.0.1:${r}/api/data`,{timeout:2e3},s=>{s.resume(),e(s.statusCode===200)});t.on("error",()=>e(!1)),t.on("timeout",()=>{t.destroy(),e(!1)})})}async function rr(){let r=Vt();if(!r)return null;try{process.kill(r.pid,0)}catch(e){let t=e.code;return t!=="ESRCH"&&t!=="EPERM"&&m(tr,`Unexpected error checking PID ${r.pid}: ${e.message}`),mt(),null}return await ys(r.port)?{port:r.port,url:`http://oss.localhost:${r.port}`}:(mt(),null)}var Ka,Bt,Qa,tr,or=k(()=>{"use strict";Ka=z(require("http"),1),Bt=z(require("fs"),1),Qa=z(require("path"),1);ee();he();tr="dashboard-server"});function rp(r){return new Promise(e=>setTimeout(e,r))}async function Xa(r){if(!nr())return null;let t=await rr();if(t){let c=Vt(),u=ze();if(c)if(c.version&&u!=="0.0.0"&&c.version!==u){console.error(`[STARTUP] Dashboard server version mismatch (running: ${c.version}, current: ${u}). Restarting...`);let l=!1;try{process.kill(c.pid,"SIGTERM"),l=!0}catch(d){d.code==="ESRCH"?l=!0:console.error(`[STARTUP] Could not kill outdated dashboard (PID ${c.pid}): ${d.message}`)}if(l)mt();else return{url:t.url,port:t.port,alreadyRunning:!0}}else return{url:t.url,port:t.port,alreadyRunning:!0}}let s=r?.port??ep,o=process.argv[1],n=(0,Ya.spawn)("node",[o,"dashboard","serve","--port",String(s),"--no-open"],{detached:!0,stdio:"ignore"}),i=!1,a=!1;n.on("error",c=>{i=!0,console.error(`[STARTUP] Failed to spawn dashboard server: ${c.message}`)}),n.on("exit",c=>{a=!0,c!==0&&c!==null&&console.error(`[STARTUP] Dashboard server exited prematurely (code ${c})`)}),n.unref();for(let c=0;c<sp;c++){if(await rp(tp),i||a)return null;let u=Vt();if(u&&await ys(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 Ya,ep,tp,sp,Za=k(()=>{"use strict";Ya=require("child_process");or();Lo();ee();ep=3e3,tp=200,sp=25});var oc={};oe(oc,{countIssueListItems:()=>sc,detectIssueList:()=>rc,openInBrowser:()=>ir,parseIssueListPathFromConfig:()=>tc,runStartup:()=>op});function tc(r){let e=r.match(/^---\n([\s\S]*?)\n---/);if(!e)return;let s=e[1].match(/issueListPath:\s*["']?([^"'\n]+)["']?/);return s?s[1].trim():void 0}function sc(r){let e=0,t=0,s=r.split(`
|
|
96
|
+
`);for(let o of s)/^\s*- (?:~~)?\[/.test(o)&&(/~~|\*\*Done\*\*/.test(o)?t++:e++);return{availableCount:e,completedCount:t}}function rc(){let r="",e="auto-detected",t=".claude/oss-autopilot/config.md";if($t.existsSync(t))try{let s=$t.readFileSync(t,"utf-8"),o=tc(s);o&&$t.existsSync(o)&&(r=o,e="configured")}catch(s){console.error("[STARTUP] Failed to read config:",v(s))}if(!r){let s=["open-source/potential-issue-list.md","oss/issue-list.md","issues.md"];for(let o of s)if($t.existsSync(o)){r=o,e="auto-detected";break}}if(r)try{let s=$t.readFileSync(r,"utf-8"),{availableCount:o,completedCount:n}=sc(s);return{path:r,source:e,availableCount:o,completedCount:n}}catch(s){return console.error(`[STARTUP] Failed to read issue list at ${r}:`,v(s)),{path:r,source:e,availableCount:0,completedCount:0}}}function ir(r){let e,t;switch(process.platform){case"darwin":e="open",t=[r];break;case"win32":e="cmd",t=["/c","start","",r];break;default:e="xdg-open",t=[r];break}(0,ec.execFile)(e,t,s=>{s&&console.error(`[STARTUP] Failed to open dashboard in browser: ${s.message}`)})}async function op(){let r=ze(),e=L(),t=!1;if(!e.isSetupComplete()){let c=await Ps();if(c)try{e.initializeWithDefaults(c),t=!0}catch(u){return console.error(`[STARTUP] Auto-detected username "${c}" but failed to save config:`,v(u)),{version:r,setupComplete:!1}}else return{version:r,setupComplete:!1}}let s=Ze();if(!s)return{version:r,setupComplete:!0,authError:'GitHub authentication required. Install GitHub CLI (https://cli.github.com/) and run "gh auth login", or set GITHUB_TOKEN.'};let o=await Ys(s),n,i=!1;if(o.digest.summary.totalActivePRs>0)try{let c=await Xa();c?(n=c.url,ir(c.url),i=!0):console.error("[STARTUP] Dashboard SPA assets not found. Build with: cd packages/dashboard && pnpm run build")}catch(c){console.error("[STARTUP] SPA dashboard launch failed:",v(c))}i&&(o.briefSummary+=" | Dashboard opened in browser");let a=rc();return{version:r,setupComplete:!0,autoDetected:t,daily:o,dashboardUrl:n,issueList:a}}var $t,ec,jo=k(()=>{"use strict";$t=z(require("fs"),1),ec=require("child_process");ee();ue();hs();Za()});var Wt,nc=k(()=>{"use strict";Wt=class{maxRequests;windowMs;timestamps=[];constructor(e){this.maxRequests=e.maxRequests,this.windowMs=e.windowMs}check(){let e=Date.now(),t=e-this.windowMs;if(this.timestamps=this.timestamps.filter(s=>s>t),this.timestamps.length>=this.maxRequests){let o=this.timestamps[0]+this.windowMs-e;return{allowed:!1,retryAfterSeconds:Math.ceil(o/1e3)}}return this.timestamps.push(e),{allowed:!0}}}});var lc={};oe(lc,{findRunningDashboardServer:()=>rr,getDashboardPidPath:()=>bs,isDashboardServerRunning:()=>ys,readDashboardServerInfo:()=>Vt,removeDashboardServerInfo:()=>mt,startDashboardServer:()=>up,writeDashboardServerInfo:()=>sr});function ar(r,e,t,s,o){let n=Oa(r,e),i=Ga(n),{monthlyMerged:a,monthlyOpened:c,monthlyClosed:u}=$a(e),l=s??Oo(L().getMergedPRs()),d=o??Go(L().getClosedPRs()),g=e.config.minStars??50,E=e.repoScores||{},_=N=>!Ye(E[N.repo]?.stargazersCount,g),w=l.filter(_),P=d.filter(_),b=Aa(r,e,w.length,P.length),C=e.config.dismissedIssues||{},D=t.filter(N=>N.status==="new_response"&&!(N.url in C));return{stats:b,prsByRepo:n,topRepos:i.map(([N,x])=>({repo:N,...x})),monthlyMerged:a,monthlyOpened:c,monthlyClosed:u,activePRs:At(r.openPRs||[],e),shelvedPRUrls:e.config.shelvedPRUrls||[],recentlyMergedPRs:r.recentlyMergedPRs||[],recentlyClosedPRs:r.recentlyClosedPRs||[],autoUnshelvedPRs:r.autoUnshelvedPRs||[],commentedIssues:t,issueResponses:D,allMergedPRs:w,allClosedPRs:P}}function cp(r,e=np){return new Promise((t,s)=>{let o=[],n=0,i=!1;r.on("data",a=>{if(!i){if(n+=a.length,n>e){i=!0,r.destroy(),s(new Error("Body too large"));return}o.push(a)}}),r.on("end",()=>{i||t(Buffer.concat(o).toString("utf-8"))}),r.on("error",a=>{i||s(a)})})}function uc(r){r.setHeader("X-Content-Type-Options","nosniff"),r.setHeader("X-Frame-Options","DENY"),r.setHeader("Content-Security-Policy","default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'"),r.setHeader("Referrer-Policy","strict-origin-when-cross-origin")}function ac(r,e){let t=r.headers.origin;return t?[`http://localhost:${e}`,`http://127.0.0.1:${e}`,`http://oss.localhost:${e}`].includes(t):!0}function cr(r,e,t){uc(r),r.setHeader("Cache-Control","no-store");let s=JSON.stringify(t);r.writeHead(e,{"Content-Type":"application/json","Content-Length":Buffer.byteLength(s)}),r.end(s)}function ce(r,e,t){cr(r,e,{error:t})}async function up(r){let{port:e,assetsDir:t,token:s,open:o}=r,n=L(),i=Je.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=ar(a,n.getState(),c)}catch(x){throw new Error(`Failed to build dashboard data: ${v(x)}. State data may be corrupted \u2014 try running: daily --json`,{cause:x})}let l=new Wt({maxRequests:30,windowMs:6e4}),d=new Wt({maxRequests:10,windowMs:6e4}),g=new Wt({maxRequests:2,windowMs:6e4}),E=cc.createServer(async(x,O)=>{let A=x.method||"GET",q=x.url||"/";try{if(q==="/api/data"&&A==="GET"){let j=l.check();if(!j.allowed){O.setHeader("Retry-After",String(j.retryAfterSeconds)),ce(O,429,"Too many requests");return}cr(O,200,u);return}if(q==="/api/action"&&A==="POST"){if(!ac(x,C)){ce(O,403,"Invalid origin");return}let j=d.check();if(!j.allowed){O.setHeader("Retry-After",String(j.retryAfterSeconds)),ce(O,429,"Too many requests");return}await _(x,O);return}if(q==="/api/refresh"&&A==="POST"){if(!ac(x,C)){ce(O,403,"Invalid origin");return}let j=g.check();if(!j.allowed){O.setHeader("Retry-After",String(j.retryAfterSeconds)),ce(O,429,"Too many requests");return}await w(x,O);return}if(A==="GET"){P(q,O);return}ce(O,405,"Method not allowed")}catch(j){m(Ae,`Unhandled request error: ${A} ${q} ${v(j)}`),O.headersSent||ce(O,500,"Internal server error")}});E.requestTimeout=ip;async function _(x,O){let A;try{let j=await cp(x);A=JSON.parse(j)}catch(j){let be=j instanceof Error&&j.message==="Body too large";ce(O,be?413:400,be?"Request body too large":"Invalid JSON body");return}if(!A.action||!ic.has(A.action)){ce(O,400,`Invalid action. Must be one of: ${[...ic].join(", ")}`);return}if(!A.url||typeof A.url!="string"){ce(O,400,'Missing or invalid "url" field');return}let q=A.action==="dismiss_issue_response";try{te(A.url),ne(A.url,q?Gt:we,q?"issue or PR":"PR")}catch(j){j instanceof Z?ce(O,400,j.message):(m(Ae,`Unexpected error during URL validation: ${v(j)}`),ce(O,400,"Invalid URL"));return}if(A.action==="override_status"&&(!A.status||A.status!=="needs_addressing"&&A.status!=="waiting_on_maintainer")){ce(O,400,'override_status requires a valid "status" field (needs_addressing or waiting_on_maintainer)');return}try{switch(A.action){case"shelve":n.shelvePR(A.url);break;case"unshelve":n.unshelvePR(A.url);break;case"override_status":{let j=A.status,me=(a?.openPRs||[]).find(G=>G.url===A.url)?.updatedAt||new Date().toISOString();n.setStatusOverride(A.url,j,me);break}case"dismiss_issue_response":n.dismissIssue(A.url,new Date().toISOString());break}n.save()}catch(j){m(Ae,`Action failed: ${A.action} ${A.url} ${v(j)}`),ce(O,500,"Action failed");return}u=ar(a,n.getState(),c),cr(O,200,u)}async function w(x,O){let A=s||Ze();if(!A){ce(O,401,"No GitHub token available. Cannot refresh data.");return}try{m(Ae,"Refreshing dashboard data from GitHub...");let q=await Ao(A);a=q.digest,c=q.commentedIssues,u=ar(a,n.getState(),c,q.allMergedPRs,q.allClosedPRs),cr(O,200,u)}catch(q){m(Ae,`Dashboard refresh failed: ${v(q)}`),ce(O,500,"Refresh failed")}}function P(x,O){let A;try{A=decodeURIComponent(x.split("?")[0])}catch{m(Ae,`Malformed URL received: ${x}`),ce(O,400,"Malformed URL");return}if(A.includes("..")){ce(O,403,"Forbidden");return}let q=A==="/"?"index.html":A.replace(/^\/+/,""),j=Je.join(i,q);if(!j.startsWith(i+Je.sep)&&j!==i){ce(O,403,"Forbidden");return}try{ur.statSync(j).isDirectory()&&(j=Je.join(i,"index.html"))}catch(G){if(G.code==="ENOENT")j=Je.join(i,"index.html");else{m(Ae,`Failed to stat file: ${j}`),ce(O,500,"Internal server error");return}}let be=Je.extname(j).toLowerCase(),me=ap[be]||"application/octet-stream";try{let G=ur.readFileSync(j);uc(O),O.writeHead(200,{"Content-Type":me,"Content-Length":G.length,"Cache-Control":"public, max-age=3600"}),O.end(G)}catch(G){G.code==="ENOENT"?ce(O,404,"Not found"):(m(Ae,`Failed to serve static file: ${j}`),ce(O,500,"Failed to read file"))}}let b=10,C=e;for(let x=0;x<b;x++)try{await new Promise((O,A)=>{E.once("error",A),E.listen(C,"127.0.0.1",()=>O())});break}catch(O){let A=O;if(A.code==="EADDRINUSE"&&x<b-1){m(Ae,`Port ${C} is in use, trying ${C+1}...`),C++;continue}throw new Error(`Failed to start server: ${A.message}`,{cause:O})}sr({pid:process.pid,port:C,startedAt:new Date().toISOString(),version:ze()});let D=`http://oss.localhost:${C}`;m(Ae,`Dashboard server running at ${D} (also: http://localhost:${C})`),s&&Ao(s).then(x=>{a=x.digest,c=x.commentedIssues,u=ar(a,n.getState(),c,x.allMergedPRs,x.allClosedPRs),m(Ae,"Background data refresh complete")}).catch(x=>{m(Ae,`Background data refresh failed (serving cached data): ${v(x)}`)}),o&&ir(D);let N=()=>{m(Ae,"Shutting down dashboard server..."),mt(),E.close(()=>{process.exit(0)}),setTimeout(()=>process.exit(0),3e3).unref()};process.on("SIGINT",N),process.on("SIGTERM",N)}var cc,ur,Je,ic,Ae,np,ip,ap,pc=k(()=>{"use strict";cc=z(require("http"),1),ur=z(require("fs"),1),Je=z(require("path"),1);ee();ue();he();ke();$o();jo();or();nc();it();or();ic=new Set(["shelve","unshelve","override_status","dismiss_issue_response"]),Ae="dashboard-server",np=10240,ip=3e4,ap={".html":"text/html",".js":"application/javascript",".css":"text/css",".svg":"image/svg+xml",".json":"application/json",".png":"image/png",".ico":"image/x-icon"}});var dc={};oe(dc,{resolveAssetsDir:()=>nr,serveDashboard:()=>lp});function nr(){let r=Ne.resolve(__dirname,"../../dashboard/dist");if(lr.existsSync(Ne.join(r,"index.html")))return r;let e=Ne.resolve(Ne.dirname(process.argv[1]),"../../dashboard/dist");if(lr.existsSync(Ne.join(e,"index.html")))return e;try{let t=require.resolve("@oss-autopilot/dashboard/package.json"),s=Ne.join(Ne.dirname(t),"dist");if(lr.existsSync(Ne.join(s,"index.html")))return s}catch(t){t.code!=="MODULE_NOT_FOUND"&&console.error("Error resolving dashboard package:",t)}return null}async function lp(r){let e=nr();e||(console.error("Could not find dashboard SPA assets."),console.error("Make sure packages/dashboard has been built:"),console.error(" cd packages/dashboard && pnpm run build"),process.exit(1));let t=Ze(),{startDashboardServer:s}=await Promise.resolve().then(()=>(pc(),lc));await s({port:r.port,assetsDir:e,token:t,open:r.open})}var lr,Ne,Lo=k(()=>{"use strict";lr=z(require("fs"),1),Ne=z(require("path"),1);ee()});var hc={};oe(hc,{parseIssueList:()=>mc,runParseList:()=>mp});function pp(r){let e=r.match(/https:\/\/github\.com\/([^/]+\/[^/]+)\/issues\/(\d+)/);if(e)return{repo:e[1],number:parseInt(e[2],10),url:e[0]};let t=r.match(/https:\/\/github\.com\/([^/]+\/[^/]+)\/pull\/(\d+)/);return t?{repo:t[1],number:parseInt(t[2],10),url:t[0]}:null}function dp(r){let e=r.replace(/\[([^\]]+)\]\([^)]+\)/g,"$1");return e=e.replace(/https?:\/\/\S+/g,""),e=e.replace(/^\s*[-*+]\s*/,"").replace(/^\s*\d+\.\s*/,""),e=e.replace(/\[[ xX]\]\s*/,""),e=e.replace(/~~/g,""),e=e.replace(/\b(Done|DONE|done)\b/g,""),e=e.replace(/^[\s\-\u2013\u2014:]+/,"").replace(/[\s\-\u2013\u2014:]+$/,""),e.trim()}function gp(r){return!!(/~~.+~~/.test(r)||/\[[xX]\]/.test(r)||/\bdone\b/i.test(r))}function mc(r){let e=r.split(`
|
|
97
|
+
`),t=[],s=[],o="Uncategorized";for(let n of e){let i=n.match(/^#{1,3}\s+(.+)/);if(i){o=i[1].trim();continue}if(!n.trim()||!/^\s*[-*+]|\s*\d+\.|\s*\[[ xX]\]/.test(n))continue;let a=pp(n);if(!a)continue;let c=dp(n),u={repo:a.repo,number:a.number,title:c||`#${a.number}`,tier:o,url:a.url};gp(n)?s.push(u):t.push(u)}return{available:t,completed:s,availableCount:t.length,completedCount:s.length}}async function mp(r){let e=gc.resolve(r.filePath);if(!pr.existsSync(e))throw new Error(`File not found: ${e}`);let t;try{t=pr.readFileSync(e,"utf-8")}catch(s){let o=v(s);throw new Error(`Failed to read file: ${o}`,{cause:s})}return mc(t)}var pr,gc,fc=k(()=>{"use strict";pr=z(require("fs"),1),gc=z(require("path"),1);ue()});var bc={};oe(bc,{runCheckIntegration:()=>_p});function bp(r){let e=Oe.extname(r),t=Oe.basename(r,e);return t==="index"?Oe.basename(Oe.dirname(r)):t}function yp(r,e){let t=Oe.dirname(r),s=[];for(let n of[".ts",".tsx",".js",".jsx"]){let i=Oe.join(t,`index${n}`);e.includes(i)&&s.push(i)}let o=Oe.dirname(t);for(let n of[".ts",".tsx",".js",".jsx"]){let i=Oe.join(o,`index${n}`);e.includes(i)&&s.push(i)}return[...new Set(s)]}async function _p(r){let e=r.base,t;try{let a=(0,dr.execFileSync)("git",["diff","--name-only","--diff-filter=A",`${e}...HEAD`],{encoding:"utf-8",timeout:1e4}).trim();t=a?a.split(`
|
|
98
|
+
`).filter(Boolean):[]}catch(a){let c=v(a);throw new Error(`Failed to run git diff: ${c}`,{cause:a})}let s=t.filter(a=>{let c=Oe.extname(a);return hp.has(c)?!fp.some(u=>u.test(a)):!1});if(s.length===0)return{newFiles:[],unreferencedCount:0};let o;try{o=(0,dr.execFileSync)("git",["ls-files"],{encoding:"utf-8",timeout:1e4}).trim().split(`
|
|
99
|
+
`).filter(Boolean)}catch(a){T("check-integration","git ls-files failed, reference checking will be skipped",a),o=[]}let n=[];for(let a of s){let c=bp(a),u=a.replace(/\.[^.]+$/,""),l=[],d=[c];u.includes("/")&&d.push(u);for(let _ of d)try{let w=(0,dr.execFileSync)("git",["grep","-l","--",_],{encoding:"utf-8",timeout:1e4}).trim();if(w){let P=w.split(`
|
|
100
|
+
`).filter(b=>b!==a);l.push(...P)}}catch(w){let P=w&&typeof w=="object"&&"status"in w?w.status:void 0;if(P!==void 0&&P!==1){let b=v(w);T("check-integration",`git grep failed for "${_}": ${b}`)}}l=[...new Set(l)];let g=l.length>0,E={path:a,referencedBy:l,isIntegrated:g};g||(E.suggestedEntryPoints=yp(a,o)),n.push(E)}let i=n.filter(a=>!a.isIntegrated).length;return{newFiles:n,unreferencedCount:i}}var Oe,dr,hp,fp,yc=k(()=>{"use strict";Oe=z(require("path"),1),dr=require("child_process");ee();ue();hp=new Set([".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".rb",".go",".rs",".java",".kt",".vue",".svelte"]),fp=[/^\./,/\.(test|spec|e2e)\.[^.]+$/,/\.(config|rc)\.[^.]+$/,/__tests__\//,/\.d\.ts$/,/\.md$/,/\.json$/,/\.ya?ml$/]});var Rc={};oe(Rc,{runLocalRepos:()=>Tp,scanForRepos:()=>_c});function wp(r){try{let e=(0,gr.execFileSync)("git",["-C",r,"remote","get-url","origin"],{encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}).trim(),t=e.match(/github\.com\/([^/]+\/[^/]+?)(?:\.git)?$/);if(t)return t[1];let s=e.match(/github\.com[:/]([^/]+\/[^/]+?)(?:\.git)?$/);return s?s[1]:null}catch(e){return T("local-repos",`Failed to get GitHub remote for ${r}`,e),null}}function Ep(r){try{return(0,gr.execFileSync)("git",["-C",r,"branch","--show-current"],{encoding:"utf-8",timeout:5e3,stdio:["pipe","pipe","pipe"]}).trim()||null}catch(e){return T("local-repos",`Failed to get current branch for ${r}`,e),null}}function _c(r){let e={};for(let t of r){if(!No.existsSync(t))continue;let s;try{let o=(0,gr.execFileSync)("find",[t,"-maxdepth","4","-name",".git","-type","d"],{encoding:"utf-8",timeout:3e4,stdio:["pipe","pipe","pipe"]}).trim();s=o?o.split(`
|
|
101
|
+
`).filter(Boolean):[]}catch(o){T("local-repos",`find failed for scan path ${t}`,o);continue}for(let o of s){let n=He.dirname(o),i=wp(n);if(!i)continue;let a=Ep(n);e[i]={path:n,exists:!0,currentBranch:a}}}return e}async function Tp(r){let e=L(),t=e.getState(),s=r.paths?.map(i=>He.resolve(i))??t.config.localRepoScanPaths??Rp.filter(i=>No.existsSync(i));if(!r.scan&&t.localRepoCache){let i=t.localRepoCache;return{repos:i.repos,scanPaths:i.scanPaths,cachedAt:i.cachedAt,fromCache:!0}}let o=_c(s),n=new Date().toISOString();try{e.setLocalRepoCache({repos:o,scanPaths:s,cachedAt:n}),e.save()}catch(i){let a=v(i);console.error(`Warning: Failed to cache scan results: ${a}`)}return{repos:o,scanPaths:s,cachedAt:n,fromCache:!1}}var No,He,Dt,gr,Rp,wc=k(()=>{"use strict";No=z(require("fs"),1),He=z(require("path"),1),Dt=z(require("os"),1),gr=require("child_process");ee();ue();Rp=[He.join(Dt.homedir(),"Documents","oss"),He.join(Dt.homedir(),"dev"),He.join(Dt.homedir(),"projects"),He.join(Dt.homedir(),"src"),He.join(Dt.homedir(),"code"),He.join(Dt.homedir(),"repos")]});var Ho={};oe(Ho,{PR_URL_PATTERN:()=>we,runShelve:()=>vp,runUnshelve:()=>Sp});async function vp(r){te(r.prUrl),ne(r.prUrl,we,"PR");let e=L(),t=e.shelvePR(r.prUrl);return t&&e.save(),{shelved:t,url:r.prUrl}}async function Sp(r){te(r.prUrl),ne(r.prUrl,we,"PR");let e=L(),t=e.unshelvePR(r.prUrl);return t&&e.save(),{unshelved:t,url:r.prUrl}}var qo=k(()=>{"use strict";ee();ke()});var Bo={};oe(Bo,{runDismiss:()=>Pp,runUndismiss:()=>Cp});async function Pp(r){te(r.url),ne(r.url,Gt,"issue or PR");let e=L(),t=e.dismissIssue(r.url,new Date().toISOString());return t&&e.save(),{dismissed:t,url:r.url}}async function Cp(r){te(r.url),ne(r.url,Gt,"issue or PR");let e=L(),t=e.undismissIssue(r.url);return t&&e.save(),{undismissed:t,url:r.url}}var Vo=k(()=>{"use strict";ee();ke()});var Wo={};oe(Wo,{runSnooze:()=>Ap,runUnsnooze:()=>Op});async function Ap(r){te(r.prUrl),ne(r.prUrl,we,"PR"),fs(r.reason);let e=r.days??kp;if(!Number.isFinite(e)||e<=0)throw new Error("Snooze duration must be a positive number of days.");let t=L(),s=t.snoozePR(r.prUrl,r.reason,e);s&&t.save();let o=t.getSnoozeInfo(r.prUrl);return{snoozed:s,url:r.prUrl,days:e,reason:r.reason,expiresAt:o?.expiresAt}}async function Op(r){te(r.prUrl),ne(r.prUrl,we,"PR");let e=L(),t=e.unsnoozePR(r.prUrl);return t&&e.save(),{unsnoozed:t,url:r.prUrl}}var kp,zo=k(()=>{"use strict";ee();ke();kp=7});var Jo={};oe(Jo,{runClearOverride:()=>$p,runOverride:()=>Gp});async function Gp(r){if(te(r.prUrl),ne(r.prUrl,we,"PR"),!Ec.includes(r.status))throw new Error(`Invalid status "${r.status}". Must be one of: ${Ec.join(", ")}`);let e=r.status,t=L(),s=new Date().toISOString();return t.setStatusOverride(r.prUrl,e,s),t.save(),{url:r.prUrl,status:e}}async function $p(r){te(r.prUrl),ne(r.prUrl,we,"PR");let e=L(),t=e.clearStatusOverride(r.prUrl);return t&&e.save(),{url:r.prUrl,cleared:t}}var Ec,Ko=k(()=>{"use strict";ee();ke();Ec=["needs_addressing","waiting_on_maintainer"]});var Tc={};oe(Tc,{runPRTemplate:()=>Dp});async function Dp(r){let{owner:e,repo:t}=Ft(r.repo),s=Re(),o=fe(s);return vo(o,e,t)}var vc=k(()=>{"use strict";Lt();Te();So()});var Sc={};oe(Sc,{formatStatsBadge:()=>Up,formatStatsMarkdown:()=>Fp,runStats:()=>Ip});async function Ip(){let e=L().getState(),t=e.lastDigest?.summary?.totalActivePRs??0,s=Eo({repoScores:e.repoScores??{},activePRCount:t});return{...s,mergeRateFormatted:`${(s.mergeRate*100).toFixed(1)}%`,username:e.config.githubUsername}}function Fp(r){let e=[`# OSS Contribution Stats for @${r.username}`,"","| Metric | Value |","|--------|-------|",`| Merged PRs | ${r.totalMerged} |`,`| Merge Rate | ${r.mergeRateFormatted} |`,`| Active PRs | ${r.activePRs} |`,`| Repos Contributed | ${r.reposContributed} |`,""];if(r.topRepos.length>0){e.push("## Top Repos","","| Repo | Merged PRs |","|------|-----------|");for(let t of r.topRepos)e.push(`| ${t.repo} | ${t.mergedCount} |`);e.push("")}return e.push("---","*Generated by [OSS Autopilot](https://github.com/costajohnt/oss-autopilot)*"),e.join(`
|
|
102
|
+
`)}function xp(r){return r.totalMerged===0?"blue":r.mergeRate>=.8?"brightgreen":r.mergeRate>=.6?"green":r.mergeRate>=.4?"yellow":"orange"}function Up(r){return{schemaVersion:1,label:"OSS Contributions",message:r.totalMerged>0?`${r.mergeRateFormatted} merge rate | ${r.totalMerged} merged`:"Getting Started",color:xp(r)}}var Pc=k(()=>{"use strict";ee();To()});var _n=z(yn(),1),{program:Jp,createCommand:Kp,createArgument:Qp,createOption:Yp,CommanderError:Xp,InvalidArgumentError:Zp,InvalidOptionArgumentError:ed,Command:Rn,Argument:td,Option:sd,Help:rd}=_n.default;ee();ue();Po();function Y(r,e){let t=v(r);e?ka(t):console.error(`Error: ${t}`),process.exit(1)}function Cc(r){let e=Object.entries(r).sort(([t],[s])=>t.localeCompare(s));for(let[t,s]of e){let o=s.currentBranch?` (${s.currentBranch})`:"";console.log(` ${t}${o}`),console.log(` ${s.path}`)}}var Qo=[{name:"daily",register(r){r.command("daily").description("Run daily check on all tracked PRs").option("--json","Output as JSON").action(async e=>{try{if(e.json){let{runDaily:t}=await Promise.resolve().then(()=>(hs(),Do)),s=await t();K(s)}else{let{runDailyForDisplay:t,printDigest:s}=await Promise.resolve().then(()=>(hs(),Do)),o=await t();s(o.digest,o.capacity,o.commentedIssues)}}catch(t){Y(t,e.json)}})}},{name:"status",localOnly:!0,register(r){r.command("status").description("Show current status and stats").option("--json","Output as JSON").option("--offline","Use cached data only (no GitHub API calls)").action(async e=>{try{let{runStatus:t}=await Promise.resolve().then(()=>(Fa(),Ia)),s=await t({offline:e.offline});e.json?K(s):(console.log(`
|
|
103
103
|
\u{1F4CA} OSS Status
|
|
104
104
|
`),console.log(`Merged PRs: ${s.stats.mergedPRs}`),console.log(`Closed PRs: ${s.stats.closedPRs}`),console.log(`Merge Rate: ${s.stats.mergeRate}`),console.log(`Needs Response: ${s.stats.needsResponse}`),s.offline?(console.log(`
|
|
105
105
|
Last Updated: ${s.lastUpdated||"Never"}`),console.log("(Offline mode: showing cached data)")):console.log(`
|
|
106
106
|
Last Run: ${s.lastRunAt||"Never"}`),console.log(`
|
|
107
|
-
Run with --json for structured output`))}catch(t){Y(t,e.json)}})}},{name:"search",register(r){r.command("search [count]").description("Search for new issues to work on").option("--json","Output as JSON").action(async(e,t)=>{try{let{runSearch:s}=await Promise.resolve().then(()=>(
|
|
107
|
+
Run with --json for structured output`))}catch(t){Y(t,e.json)}})}},{name:"search",register(r){r.command("search [count]").description("Search for new issues to work on").option("--json","Output as JSON").action(async(e,t)=>{try{let{runSearch:s}=await Promise.resolve().then(()=>(Ua(),xa)),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(`
|
|
108
108
|
Searching for issues (max ${o})...
|
|
109
109
|
`);let i=await s({maxResults:o});if(t.json)K(i);else{if(i.candidates.length===0){i.rateLimitWarning?console.warn(`
|
|
110
110
|
${i.rateLimitWarning}
|
|
111
111
|
`):console.log("No matching issues found.");return}i.rateLimitWarning&&console.warn(`
|
|
112
112
|
${i.rateLimitWarning}
|
|
113
113
|
`),console.log(`Found ${i.candidates.length} candidates:
|
|
114
|
-
`);for(let a of i.candidates){let{issue:c,recommendation:u,reasonsToApprove:l,reasonsToSkip:d,viabilityScore:g}=a;console.log(`[${u.toUpperCase()}] ${c.repo}#${c.number}: ${c.title}`),console.log(` URL: ${c.url}`),console.log(` Viability: ${g}/100`),l.length>0&&console.log(` Approve: ${l.join(", ")}`),d.length>0&&console.log(` Skip: ${d.join(", ")}`),console.log("---")}}}catch(s){Y(s,t.json)}})}},{name:"vet",register(r){r.command("vet <issue-url>").description("Vet a specific issue before working on it").option("--json","Output as JSON").action(async(e,t)=>{try{let{runVet:s}=await Promise.resolve().then(()=>(
|
|
114
|
+
`);for(let a of i.candidates){let{issue:c,recommendation:u,reasonsToApprove:l,reasonsToSkip:d,viabilityScore:g}=a;console.log(`[${u.toUpperCase()}] ${c.repo}#${c.number}: ${c.title}`),console.log(` URL: ${c.url}`),console.log(` Viability: ${g}/100`),l.length>0&&console.log(` Approve: ${l.join(", ")}`),d.length>0&&console.log(` Skip: ${d.join(", ")}`),console.log("---")}}}catch(s){Y(s,t.json)}})}},{name:"vet",register(r){r.command("vet <issue-url>").description("Vet a specific issue before working on it").option("--json","Output as JSON").action(async(e,t)=>{try{let{runVet:s}=await Promise.resolve().then(()=>(Ha(),Na)),o=await s({issueUrl:e});if(t.json)K(o);else{let{issue:n,recommendation:i,reasonsToApprove:a,reasonsToSkip:c}=o;console.log(`
|
|
115
115
|
Vetting issue: ${e}
|
|
116
|
-
`),console.log(`[${i.toUpperCase()}] ${n.repo}#${n.number}: ${n.title}`),console.log(` URL: ${n.url}`),a.length>0&&console.log(` Approve: ${a.join(", ")}`),c.length>0&&console.log(` Skip: ${c.join(", ")}`)}}catch(s){Y(s,t.json)}})}},{name:"track",register(r){r.command("track <pr-url>").description("Add a PR to track").option("--json","Output as JSON").action(async(e,t)=>{try{let{runTrack:s}=await Promise.resolve().then(()=>(
|
|
117
|
-
PR: ${o.pr.repo}#${o.pr.number} - ${o.pr.title}`),console.log("Note: In v2, PRs are tracked automatically via the daily run."))}catch(s){Y(s,t.json)}})}},{name:"untrack",localOnly:!0,register(r){r.command("untrack <pr-url>").description("Stop tracking a PR").option("--json","Output as JSON").action(async(e,t)=>{try{let{runUntrack:s}=await Promise.resolve().then(()=>(
|
|
116
|
+
`),console.log(`[${i.toUpperCase()}] ${n.repo}#${n.number}: ${n.title}`),console.log(` URL: ${n.url}`),a.length>0&&console.log(` Approve: ${a.join(", ")}`),c.length>0&&console.log(` Skip: ${c.join(", ")}`)}}catch(s){Y(s,t.json)}})}},{name:"track",register(r){r.command("track <pr-url>").description("Add a PR to track").option("--json","Output as JSON").action(async(e,t)=>{try{let{runTrack:s}=await Promise.resolve().then(()=>(Fo(),Io)),o=await s({prUrl:e});t.json?K(o):(console.log(`
|
|
117
|
+
PR: ${o.pr.repo}#${o.pr.number} - ${o.pr.title}`),console.log("Note: In v2, PRs are tracked automatically via the daily run."))}catch(s){Y(s,t.json)}})}},{name:"untrack",localOnly:!0,register(r){r.command("untrack <pr-url>").description("Stop tracking a PR").option("--json","Output as JSON").action(async(e,t)=>{try{let{runUntrack:s}=await Promise.resolve().then(()=>(Fo(),Io)),o=await s({prUrl:e});t.json?K(o):(console.log("Note: In v2, PRs are fetched fresh on each daily run \u2014 there is no local tracking list to remove from."),console.log("Use `shelve` to temporarily hide a PR from the daily summary."))}catch(s){Y(s,t.json)}})}},{name:"read",localOnly:!0,register(r){r.command("read [pr-url]").description("Mark PR comments as read").option("--all","Mark all PRs as read").option("--json","Output as JSON").action(async(e,t)=>{try{let{runRead:s}=await Promise.resolve().then(()=>(Ba(),qa)),o=await s({prUrl:e,all:t.all});t.json?K(o):console.log("Note: In v2, PR read state is not tracked locally. PRs are fetched fresh on each daily run.")}catch(s){Y(s,t.json)}})}},{name:"comments",register(r){r.command("comments <pr-url>").description("Show all comments on a PR").option("--bots","Include bot comments").option("--json","Output as JSON").action(async(e,t)=>{try{let{runComments:s}=await Promise.resolve().then(()=>(er(),Zs)),o=await s({prUrl:e,showBots:t.bots});if(t.json)K(o);else{let{formatRelativeTime:n}=await Promise.resolve().then(()=>(Te(),vn));console.log(`
|
|
118
118
|
Fetching comments for: ${e}
|
|
119
119
|
`),console.log(`## ${o.pr.title}
|
|
120
120
|
`),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}
|
|
@@ -130,36 +130,36 @@ Fetching comments for: ${e}
|
|
|
130
130
|
`).join(`
|
|
131
131
|
> `)}
|
|
132
132
|
`)}}o.reviewComments.length===0&&o.issueComments.length===0&&o.reviews.length===0&&console.log(`No comments from other users.
|
|
133
|
-
`),console.log("---"),console.log(`**Summary:** ${o.summary.reviewCount} reviews, ${o.summary.inlineCommentCount} inline comments, ${o.summary.discussionCommentCount} discussion comments`)}}catch(s){Y(s,t.json)}})}},{name:"post",register(r){r.command("post <url> [message...]").description("Post a comment to a PR or issue").option("--stdin","Read message from stdin").option("--json","Output as JSON").action(async(e,t,s)=>{try{let o;if(s.stdin){let a=[];for await(let c of process.stdin)a.push(c);o=Buffer.concat(a).toString("utf-8").trim()}else o=t.join(" ");let{runPost:n}=await Promise.resolve().then(()=>(
|
|
133
|
+
`),console.log("---"),console.log(`**Summary:** ${o.summary.reviewCount} reviews, ${o.summary.inlineCommentCount} inline comments, ${o.summary.discussionCommentCount} discussion comments`)}}catch(s){Y(s,t.json)}})}},{name:"post",register(r){r.command("post <url> [message...]").description("Post a comment to a PR or issue").option("--stdin","Read message from stdin").option("--json","Output as JSON").action(async(e,t,s)=>{try{let o;if(s.stdin){let a=[];for await(let c of process.stdin)a.push(c);o=Buffer.concat(a).toString("utf-8").trim()}else o=t.join(" ");let{runPost:n}=await Promise.resolve().then(()=>(er(),Zs)),i=await n({url:e,message:o});s.json?K(i):console.log(`Comment posted: ${i.commentUrl}`)}catch(o){Y(o,s.json)}})}},{name:"claim",register(r){r.command("claim <issue-url> [message...]").description("Claim an issue by posting a comment").option("--json","Output as JSON").action(async(e,t,s)=>{try{let{runClaim:o}=await Promise.resolve().then(()=>(er(),Zs)),n=t.length>0?t.join(" "):void 0,i=await o({issueUrl:e,message:n});s.json?K(i):console.log(`Issue claimed: ${i.commentUrl}`)}catch(o){Y(o,s.json)}})}},{name:"config",localOnly:!0,register(r){r.command("config [key] [value]").description("Show or update configuration").option("--json","Output as JSON").action(async(e,t,s)=>{try{let{runConfig:o}=await Promise.resolve().then(()=>(Wa(),Va)),n=await o({key:e,value:t});s.json?K(n):"config"in n?(console.log(`
|
|
134
134
|
\u2699\uFE0F Current Configuration:
|
|
135
|
-
`),console.log(JSON.stringify(n.config,null,2))):console.log(`Set ${n.key} to: ${n.value}`)}catch(o){Y(o,s.json)}})}},{name:"init",register(r){r.command("init <username>").description("Initialize with your GitHub username and import open PRs").option("--json","Output as JSON").action(async(e,t)=>{try{let{runInit:s}=await Promise.resolve().then(()=>(
|
|
136
|
-
Username set to @${o.username}.`),console.log("Run `oss-autopilot daily` to fetch your open PRs from GitHub."))}catch(s){Y(s,t.json)}})}},{name:"setup",localOnly:!0,register(r){r.command("setup").description("Interactive setup / configuration").option("--reset","Re-run setup even if already complete").option("--set <settings...>","Set specific values (key=value)").option("--json","Output as JSON").action(async e=>{try{let{runSetup:t}=await Promise.resolve().then(()=>(
|
|
135
|
+
`),console.log(JSON.stringify(n.config,null,2))):console.log(`Set ${n.key} to: ${n.value}`)}catch(o){Y(o,s.json)}})}},{name:"init",register(r){r.command("init <username>").description("Initialize with your GitHub username and import open PRs").option("--json","Output as JSON").action(async(e,t)=>{try{let{runInit:s}=await Promise.resolve().then(()=>(Ja(),za)),o=await s({username:e});t.json?K(o):(console.log(`
|
|
136
|
+
Username set to @${o.username}.`),console.log("Run `oss-autopilot daily` to fetch your open PRs from GitHub."))}catch(s){Y(s,t.json)}})}},{name:"setup",localOnly:!0,register(r){r.command("setup").description("Interactive setup / configuration").option("--reset","Re-run setup even if already complete").option("--set <settings...>","Set specific values (key=value)").option("--json","Output as JSON").action(async e=>{try{let{runSetup:t}=await Promise.resolve().then(()=>(Mo(),Uo)),s=await t({reset:e.reset,set:e.set});if(e.json)K(s);else if("success"in s){for(let[o,n]of Object.entries(s.settings))console.log(`\u2713 ${o}: ${n}`);if(s.warnings)for(let o of s.warnings)console.warn(o)}else if("setupComplete"in s&&s.setupComplete)console.log(`
|
|
137
137
|
\u2699\uFE0F OSS Autopilot Setup
|
|
138
138
|
`),console.log(`\u2713 Setup already complete!
|
|
139
139
|
`),console.log("Current settings:"),console.log(` GitHub username: ${s.config.githubUsername||"(not set)"}`),console.log(` Max active PRs: ${s.config.maxActivePRs}`),console.log(` Dormant threshold: ${s.config.dormantThresholdDays} days`),console.log(` Approaching dormant: ${s.config.approachingDormantDays} days`),console.log(` Languages: ${s.config.languages.join(", ")}`),console.log(` Labels: ${s.config.labels.join(", ")}`),console.log(`
|
|
140
140
|
Run 'setup --reset' to reconfigure.`);else if("setupRequired"in s){console.log(`
|
|
141
141
|
\u2699\uFE0F OSS Autopilot Setup
|
|
142
142
|
`),console.log("SETUP_REQUIRED"),console.log("---"),console.log(`Please configure the following settings:
|
|
143
|
-
`);for(let o of s.prompts){console.log(`SETTING: ${o.setting}`),console.log(`PROMPT: ${o.prompt}`);let n=Array.isArray(o.current)?o.current.join(", "):o.current;if(console.log(`CURRENT: ${n??"(not set)"}`),o.required&&console.log("REQUIRED: true"),o.default!==void 0){let i=Array.isArray(o.default)?o.default.join(", "):o.default;console.log(`DEFAULT: ${i}`)}o.type&&console.log(`TYPE: ${o.type}`),console.log("")}console.log("---"),console.log("END_SETUP_PROMPTS")}}catch(t){Y(t,e.json)}})}},{name:"checkSetup",localOnly:!0,register(r){r.command("checkSetup").description("Check if setup is complete").option("--json","Output as JSON").action(async e=>{try{let{runCheckSetup:t}=await Promise.resolve().then(()=>(
|
|
143
|
+
`);for(let o of s.prompts){console.log(`SETTING: ${o.setting}`),console.log(`PROMPT: ${o.prompt}`);let n=Array.isArray(o.current)?o.current.join(", "):o.current;if(console.log(`CURRENT: ${n??"(not set)"}`),o.required&&console.log("REQUIRED: true"),o.default!==void 0){let i=Array.isArray(o.default)?o.default.join(", "):o.default;console.log(`DEFAULT: ${i}`)}o.type&&console.log(`TYPE: ${o.type}`),console.log("")}console.log("---"),console.log("END_SETUP_PROMPTS")}}catch(t){Y(t,e.json)}})}},{name:"checkSetup",localOnly:!0,register(r){r.command("checkSetup").description("Check if setup is complete").option("--json","Output as JSON").action(async e=>{try{let{runCheckSetup:t}=await Promise.resolve().then(()=>(Mo(),Uo)),s=await t();e.json?K(s):s.setupComplete?(console.log("SETUP_COMPLETE"),console.log(`username=${s.username}`)):console.log("SETUP_INCOMPLETE")}catch(t){Y(t,e.json)}})}},{name:"serve",localOnly:!0,register(r){r.command("dashboard").description("Dashboard commands").command("serve").description("Start interactive dashboard server").option("--port <port>","Port to listen on","3000").option("--no-open","Do not open browser automatically").action(async t=>{try{let s=parseInt(t.port,10);(isNaN(s)||s<1||s>65535)&&(console.error(`Invalid port number: "${t.port}". Must be an integer between 1 and 65535.`),process.exit(1));let{serveDashboard:o}=await Promise.resolve().then(()=>(Lo(),dc));await o({port:s,open:t.open})}catch(s){Y(s)}})}},{name:"parse-issue-list",localOnly:!0,register(r){r.command("parse-issue-list <path>").description("Parse a markdown issue list into structured JSON").option("--json","Output as JSON").action(async(e,t)=>{try{let{runParseList:s}=await Promise.resolve().then(()=>(fc(),hc)),o=await s({filePath:e});if(t.json)K(o);else{let i=(await import("path")).resolve(e);if(console.log(`
|
|
144
144
|
\u{1F4CB} Issue List: ${i}
|
|
145
145
|
`),console.log(`Available: ${o.availableCount} | Completed: ${o.completedCount}
|
|
146
146
|
`),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(`
|
|
147
|
-
--- Completed ---`);for(let a of o.completed)console.log(` [${a.tier}] ${a.repo}#${a.number}: ${a.title}`)}}}catch(s){Y(s,t.json)}})}},{name:"check-integration",localOnly:!0,register(r){r.command("check-integration").description("Detect new files not referenced by the codebase").option("--base <branch>","Base branch to compare against","main").option("--json","Output as JSON").action(async e=>{try{let{runCheckIntegration:t}=await Promise.resolve().then(()=>(
|
|
147
|
+
--- Completed ---`);for(let a of o.completed)console.log(` [${a.tier}] ${a.repo}#${a.number}: ${a.title}`)}}}catch(s){Y(s,t.json)}})}},{name:"check-integration",localOnly:!0,register(r){r.command("check-integration").description("Detect new files not referenced by the codebase").option("--base <branch>","Base branch to compare against","main").option("--json","Output as JSON").action(async e=>{try{let{runCheckIntegration:t}=await Promise.resolve().then(()=>(yc(),bc)),s=await t({base:e.base});if(e.json)K(s);else if(s.newFiles.length===0)console.log(`
|
|
148
148
|
No new code files to check.`);else{console.log(`
|
|
149
149
|
\u{1F50D} Integration Check (base: ${e.base})
|
|
150
150
|
`),console.log(`New files: ${s.newFiles.length} | Unreferenced: ${s.unreferencedCount}
|
|
151
|
-
`);for(let o of s.newFiles){let n=o.isIntegrated?"\u2705":"\u26A0\uFE0F";console.log(`${n} ${o.path}`),o.isIntegrated?console.log(` Referenced by: ${o.referencedBy.join(", ")}`):(console.log(" Not referenced by any file"),o.suggestedEntryPoints&&o.suggestedEntryPoints.length>0&&console.log(` Suggested entry points: ${o.suggestedEntryPoints.join(", ")}`))}}}catch(t){Y(t,e.json)}})}},{name:"local-repos",localOnly:!0,register(r){r.command("local-repos").description("Scan filesystem for local git clones").option("--scan","Force re-scan (ignores cache)").option("--paths <dirs...>","Directories to scan").option("--json","Output as JSON").action(async e=>{try{let{runLocalRepos:t}=await Promise.resolve().then(()=>(
|
|
151
|
+
`);for(let o of s.newFiles){let n=o.isIntegrated?"\u2705":"\u26A0\uFE0F";console.log(`${n} ${o.path}`),o.isIntegrated?console.log(` Referenced by: ${o.referencedBy.join(", ")}`):(console.log(" Not referenced by any file"),o.suggestedEntryPoints&&o.suggestedEntryPoints.length>0&&console.log(` Suggested entry points: ${o.suggestedEntryPoints.join(", ")}`))}}}catch(t){Y(t,e.json)}})}},{name:"local-repos",localOnly:!0,register(r){r.command("local-repos").description("Scan filesystem for local git clones").option("--scan","Force re-scan (ignores cache)").option("--paths <dirs...>","Directories to scan").option("--json","Output as JSON").action(async e=>{try{let{runLocalRepos:t}=await Promise.resolve().then(()=>(wc(),Rc)),s=await t({scan:e.scan,paths:e.paths});e.json?K(s):s.fromCache?(console.log(`
|
|
152
152
|
\u{1F4C1} Local Repos (cached ${s.cachedAt})
|
|
153
|
-
`),
|
|
154
|
-
`),
|
|
153
|
+
`),Cc(s.repos)):(console.log(`Found ${Object.keys(s.repos).length} repos:
|
|
154
|
+
`),Cc(s.repos))}catch(t){Y(t,e.json)}})}},{name:"startup",localOnly:!0,register(r){r.command("startup").description("Run all pre-flight checks and daily fetch in one call").option("--json","Output as JSON").action(async e=>{try{let{runStartup:t}=await Promise.resolve().then(()=>(jo(),oc)),s=await t();e.json?K(s):s.setupComplete?s.authError?console.error(`Error: ${s.authError}`):(console.log(`OSS Autopilot v${s.version}`),console.log(s.daily?.briefSummary??"")):console.log("Setup incomplete. Run /setup-oss first.")}catch(t){Y(t,e.json)}})}},{name:"shelve",localOnly:!0,register(r){r.command("shelve <pr-url>").description("Shelve a PR (exclude from capacity and actionable issues)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runShelve:s}=await Promise.resolve().then(()=>(qo(),Ho)),o=await s({prUrl:e});t.json?K(o):o.shelved?(console.log(`Shelved: ${e}`),console.log("This PR is now excluded from capacity and actionable issues."),console.log("It will auto-unshelve if a maintainer engages.")):console.log("PR is already shelved.")}catch(s){Y(s,t.json)}})}},{name:"unshelve",localOnly:!0,register(r){r.command("unshelve <pr-url>").description("Unshelve a PR (include in capacity and actionable issues again)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runUnshelve:s}=await Promise.resolve().then(()=>(qo(),Ho)),o=await s({prUrl:e});t.json?K(o):o.unshelved?(console.log(`Unshelved: ${e}`),console.log("This PR is now active again.")):console.log("PR was not shelved.")}catch(s){Y(s,t.json)}})}},{name:"dismiss",localOnly:!0,register(r){r.command("dismiss <url>").description("Dismiss notifications for an issue or PR (resurfaces on new activity)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runDismiss:s}=await Promise.resolve().then(()=>(Vo(),Bo)),o=await s({url:e});t.json?K(o):o.dismissed?(console.log(`Dismissed: ${e}`),console.log("Notifications are now muted."),console.log("New responses after this point will resurface automatically.")):console.log("Already dismissed.")}catch(s){Y(s,t.json)}})}},{name:"undismiss",localOnly:!0,register(r){r.command("undismiss <url>").description("Undismiss an issue or PR (re-enable notifications)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runUndismiss:s}=await Promise.resolve().then(()=>(Vo(),Bo)),o=await s({url:e});t.json?K(o):o.undismissed?(console.log(`Undismissed: ${e}`),console.log("Notifications are active again.")):console.log("Was not dismissed.")}catch(s){Y(s,t.json)}})}},{name:"snooze",localOnly:!0,register(r){r.command("snooze <pr-url>").description("Snooze CI failure notifications for a PR").requiredOption("--reason <reason>",'Reason for snoozing (e.g., "upstream infrastructure issue")').option("--days <days>","Number of days to snooze (default: 7)","7").option("--json","Output as JSON").action(async(e,t)=>{try{let s=parseInt(t.days,10);if(!Number.isFinite(s)||s<1||!Number.isInteger(s))throw new Error(`Invalid days value "${t.days}". Must be a positive integer.`);let{runSnooze:o}=await Promise.resolve().then(()=>(zo(),Wo)),n=await o({prUrl:e,reason:t.reason,days:s});t.json?K(n):n.snoozed?(console.log(`Snoozed: ${e}`),console.log(`Reason: ${n.reason}`),console.log(`Duration: ${n.days} day${n.days===1?"":"s"}`),console.log(`Expires: ${n.expiresAt?new Date(n.expiresAt).toLocaleString():"unknown"}`),console.log("CI failure notifications are now muted for this PR.")):(console.log("PR is already snoozed."),n.expiresAt&&console.log(`Expires: ${new Date(n.expiresAt).toLocaleString()}`))}catch(s){Y(s,t.json)}})}},{name:"unsnooze",localOnly:!0,register(r){r.command("unsnooze <pr-url>").description("Unsnooze a PR (re-enable CI failure notifications)").option("--json","Output as JSON").action(async(e,t)=>{try{let{runUnsnooze:s}=await Promise.resolve().then(()=>(zo(),Wo)),o=await s({prUrl:e});t.json?K(o):o.unsnoozed?(console.log(`Unsnoozed: ${e}`),console.log("CI failure notifications are active again for this PR.")):console.log("PR was not snoozed.")}catch(s){Y(s,t.json)}})}},{name:"override",localOnly:!0,register(r){r.command("override <pr-url> <status>").description("Manually override PR status (needs_addressing or waiting_on_maintainer)").option("--json","Output as JSON").action(async(e,t,s)=>{try{let{runOverride:o}=await Promise.resolve().then(()=>(Ko(),Jo)),n=await o({prUrl:e,status:t});s.json?K(n):(console.log(`Override set: ${e} \u2192 ${n.status}`),console.log("This override will auto-clear when the PR has new activity."))}catch(o){Y(o,s.json)}})}},{name:"clear-override",localOnly:!0,register(r){r.command("clear-override <pr-url>").description("Clear a manual status override for a PR").option("--json","Output as JSON").action(async(e,t)=>{try{let{runClearOverride:s}=await Promise.resolve().then(()=>(Ko(),Jo)),o=await s({prUrl:e});t.json?K(o):o.cleared?console.log(`Override cleared: ${e}`):console.log("No override was set for this PR.")}catch(s){Y(s,t.json)}})}},{name:"pr-template",register(r){r.command("pr-template <repo>").description("Fetch a repository's PR description template").option("--json","Output as JSON").action(async(e,t)=>{try{let{runPRTemplate:s}=await Promise.resolve().then(()=>(vc(),Tc)),o=await s({repo:e});t.json?K(o):o.template?(console.log(`
|
|
155
155
|
PR template found at: ${o.source}
|
|
156
156
|
`),console.log(o.template)):o.error?console.error(`
|
|
157
157
|
Warning: Could not check for PR template: ${o.error}`):console.log(`
|
|
158
|
-
No PR template found for this repository.`)}catch(s){Y(s,t.json)}})}},{name:"stats",localOnly:!0,register(r){r.command("stats").description("Show contribution statistics").option("--json","Output as JSON").option("--markdown","Output as shareable markdown report").option("--badge","Output as shields.io endpoint JSON").action(async e=>{try{let{runStats:t,formatStatsMarkdown:s,formatStatsBadge:o}=await Promise.resolve().then(()=>(
|
|
158
|
+
No PR template found for this repository.`)}catch(s){Y(s,t.json)}})}},{name:"stats",localOnly:!0,register(r){r.command("stats").description("Show contribution statistics").option("--json","Output as JSON").option("--markdown","Output as shareable markdown report").option("--badge","Output as shields.io endpoint JSON").action(async e=>{try{let{runStats:t,formatStatsMarkdown:s,formatStatsBadge:o}=await Promise.resolve().then(()=>(Pc(),Sc)),n=await t();if(e.badge)console.log(JSON.stringify(o(n),null,2));else if(e.markdown)console.log(s(n));else if(e.json)K(n);else{if(console.log(`
|
|
159
159
|
OSS Contribution Stats (@${n.username})
|
|
160
160
|
`),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(`
|
|
161
161
|
Top Repos:`);for(let i of n.topRepos.slice(0,5))console.log(` ${i.repo}: ${i.mergedCount} merged`)}console.log(`
|
|
162
|
-
Use --markdown for a shareable report or --badge for shields.io`)}}catch(t){Y(t,e.json)}})}}];var
|
|
162
|
+
Use --markdown for a shareable report or --badge for shields.io`)}}catch(t){Y(t,e.json)}})}}];var Mp=ze(),mr=new Rn;mr.name("oss-autopilot").description("AI-powered autopilot for managing open source contributions").version(Mp).option("--debug","Enable debug logging");var Lp=new Set(Qo.filter(r=>r.localOnly).map(r=>r.name));for(let r of Qo)r.register(mr);mr.hook("preAction",async(r,e)=>{r.opts().debug&&(Lr(),T("cli",`Running command: ${e.name()}`));let s=e.name();Lp.has(s)||await Ss()||(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))});mr.parse();
|
|
163
163
|
/*! Bundled license information:
|
|
164
164
|
|
|
165
165
|
@octokit/request-error/dist-src/index.js:
|