@oss-autopilot/core 0.47.0 → 0.47.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,15 +24,15 @@ Expecting one of '${s.join("', '")}'`);return this._lifeCycleHooks[e]?this._life
24
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()),p=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:p||i},o=i=>{let a=s(i),c=a.attributeName();return this.getOptionValueSource(c)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},n=`error: ${o(e)} cannot be used with ${o(t)}`;this.error(n,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let o=[],n=this;do{let i=n.createHelp().visibleOptions(n).filter(a=>a.long).map(a=>a.long);o=o.concat(i),n=n.parent}while(n&&!n._enablePositionalOptions);t=an(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=an(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
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=>jc(s));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}helpGroup(e){return e===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=e,this)}commandsGroup(e){return e===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=e,this)}optionsGroup(e){return e===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=e,this)}_initOptionGroup(e){this._defaultOptionGroup&&!e.helpGroupHeading&&e.helpGroup(this._defaultOptionGroup)}_initCommandGroup(e){this._defaultCommandGroup&&!e.helpGroup()&&e.helpGroup(this._defaultCommandGroup)}nameFromFilename(e){return this._name=Je.basename(e,Je.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp(),s=this._getOutputContext(e);t.prepareContext({error:s.error,helpWidth:s.helpWidth,outputHasColors:s.hasColors});let o=t.formatHelp(this,t);return s.hasColors?o:this._outputConfiguration.stripColor(o)}_getOutputContext(e){e=e||{};let t=!!e.error,s,o,n;return t?(s=a=>this._outputConfiguration.writeErr(a),o=this._outputConfiguration.getErrHasColors(),n=this._outputConfiguration.getErrHelpWidth()):(s=a=>this._outputConfiguration.writeOut(a),o=this._outputConfiguration.getOutHasColors(),n=this._outputConfiguration.getOutHelpWidth()),{error:t,write:a=>(o||(a=this._outputConfiguration.stripColor(a)),s(a)),hasColors:o,helpWidth:n}}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let s=this._getOutputContext(e),o={error:s.error,write:s.write,command:this};this._getCommandAndAncestors().reverse().forEach(i=>i.emit("beforeAllHelp",o)),this.emit("beforeHelp",o);let n=this.helpInformation({error:s.error});if(t&&(n=t(n),typeof n!="string"&&!Buffer.isBuffer(n)))throw new Error("outputHelp callback must return a string or a Buffer");s.write(n),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",o),this._getCommandAndAncestors().forEach(i=>i.emit("afterAllHelp",o))}helpOption(e,t){return typeof e=="boolean"?(e?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(e??"-h, --help",t??"display help for command"),(e||t)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this._initOptionGroup(e),this}help(e){this.outputHelp(e);let t=Number(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 cn(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 Ar(){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}Or.Command=kr;Or.useColor=Ar});var gn=ze($e=>{var{Argument:ln}=gs(),{Command:Gr}=un(),{CommanderError:Bc,InvalidArgumentError:pn}=jt(),{Help:Vc}=wr(),{Option:dn}=Sr();$e.program=new Gr;$e.createCommand=r=>new Gr(r);$e.createOption=(r,e)=>new dn(r,e);$e.createArgument=(r,e)=>new ln(r,e);$e.Command=Gr;$e.Option=dn;$e.Argument=ln;$e.Help=Vc;$e.CommanderError=Bc;$e.InvalidArgumentError=pn;$e.InvalidOptionArgumentError=pn});function ut(r,e){return r===void 0||r<e}var lt,hs,Ct=C(()=>{"use strict";lt={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:{}},hs={version:2,activeIssues:[],repoScores:{},config:lt,events:[],lastRunAt:new Date().toISOString()}});function S(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 pt(r){let e=ve(r);return e===429?!0:e===403?S(r).toLowerCase().includes("rate limit"):!1}function ye(r){let e=ve(r);if(e===401||e===429)return!0;if(e===403){let t=S(r).toLowerCase();return t.includes("rate limit")||t.includes("abuse detection")}return!1}var Nt,Ke,X,ce=C(()=>{"use strict";Nt=class extends Error{constructor(t,s){super(t);this.code=s;this.name="OssAutopilotError"}},Ke=class extends Nt{constructor(e){super(e,"CONFIGURATION_ERROR"),this.name="ConfigurationError"}},X=class extends Nt{constructor(e){super(e,"VALIDATION_ERROR"),this.name="ValidationError"}}});function Dr(){$r=!0}function T(r,e,...t){if(!$r)return;let s=new Date().toISOString();console.error(`[${s}] [DEBUG] [${r}] ${e}`,...t)}function ge(r,e,...t){let s=new Date().toISOString();console.error(`[${s}] [INFO] [${r}] ${e}`,...t)}function f(r,e,...t){let s=new Date().toISOString();console.error(`[${s}] [WARN] [${r}] ${e}`,...t)}async function Ir(r,e,t){if(!$r)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 $r,ue=C(()=>{"use strict";$r=!1});var _n={};oe(_n,{DEFAULT_CONCURRENCY:()=>st,byDateDescending:()=>bn,daysBetween:()=>De,detectGitHubUsername:()=>_s,extractOwnerRepo:()=>mt,formatRelativeTime:()=>bs,getBackupDir:()=>gt,getCLIVersion:()=>qe,getCacheDir:()=>fs,getDataDir:()=>Fe,getGitHubToken:()=>Qe,getGitHubTokenAsync:()=>ys,getStatePath:()=>ot,isOwnRepo:()=>He,parseGitHubUrl:()=>me,requireGitHubToken:()=>he,resetGitHubTokenCache:()=>yn,splitRepo:()=>kt});function Fe(){let r=rt.join(fn.homedir(),".oss-autopilot");return Ne.existsSync(r)||Ne.mkdirSync(r,{recursive:!0,mode:448}),r}function ot(){return rt.join(Fe(),"state.json")}function gt(){let r=rt.join(Fe(),"backups");return Ne.existsSync(r)||Ne.mkdirSync(r,{recursive:!0,mode:448}),r}function fs(){let r=rt.join(Fe(),"cache");return Ne.existsSync(r)||Ne.mkdirSync(r,{recursive:!0,mode:448}),r}function Fr(r,e){return Wc.test(r)&&zc.test(e)}function me(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 Fr(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 Fr(s,o)?{owner:s,repo:o,number:parseInt(t[3],10),type:"issues"}:null}return null}function mt(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 Fr(t,s)?{owner:t,repo:s}:null}function De(r,e=new Date){return Math.max(0,Math.floor((e.getTime()-r.getTime())/(1e3*60*60*24)))}function kt(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 He(r,e){return r.toLowerCase()===e.toLowerCase()}function qe(){try{let r=rt.join(rt.dirname(process.argv[1]),"..","package.json");return JSON.parse(Ne.readFileSync(r,"utf-8")).version}catch{return"0.0.0"}}function bs(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 bn(r){return(e,t)=>{let s=new Date(r(e)||0).getTime();return new Date(r(t)||0).getTime()-s}}function Qe(){if(Ce)return Ce;if(Ht)return null;if(Ht=!0,process.env.GITHUB_TOKEN)return Ce=process.env.GITHUB_TOKEN,Ce;try{let r=(0,qt.execFileSync)("gh",["auth","token"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],timeout:2e3}).trim();if(r&&r.length>0)return Ce=r,T(dt,"Using GitHub token from gh CLI"),Ce}catch(r){T(dt,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}function he(){let r=Qe();if(!r)throw new Ke(`GitHub authentication required.
27
+ `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(o=>t.is(o))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function cn(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 Ar(){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}Or.Command=kr;Or.useColor=Ar});var gn=ze($e=>{var{Argument:ln}=gs(),{Command:Gr}=un(),{CommanderError:Bc,InvalidArgumentError:pn}=jt(),{Help:Vc}=wr(),{Option:dn}=Sr();$e.program=new Gr;$e.createCommand=r=>new Gr(r);$e.createOption=(r,e)=>new dn(r,e);$e.createArgument=(r,e)=>new ln(r,e);$e.Command=Gr;$e.Option=dn;$e.Argument=ln;$e.Help=Vc;$e.CommanderError=Bc;$e.InvalidArgumentError=pn;$e.InvalidOptionArgumentError=pn});function Ke(r,e){return r===void 0||r<e}var lt,hs,pt=C(()=>{"use strict";lt={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:{}},hs={version:2,activeIssues:[],repoScores:{},config:lt,events:[],lastRunAt:new Date().toISOString()}});function S(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 dt(r){let e=ve(r);return e===429?!0:e===403?S(r).toLowerCase().includes("rate limit"):!1}function ye(r){let e=ve(r);if(e===401||e===429)return!0;if(e===403){let t=S(r).toLowerCase();return t.includes("rate limit")||t.includes("abuse detection")}return!1}var Nt,Qe,X,ce=C(()=>{"use strict";Nt=class extends Error{constructor(t,s){super(t);this.code=s;this.name="OssAutopilotError"}},Qe=class extends Nt{constructor(e){super(e,"CONFIGURATION_ERROR"),this.name="ConfigurationError"}},X=class extends Nt{constructor(e){super(e,"VALIDATION_ERROR"),this.name="ValidationError"}}});function Dr(){$r=!0}function T(r,e,...t){if(!$r)return;let s=new Date().toISOString();console.error(`[${s}] [DEBUG] [${r}] ${e}`,...t)}function ge(r,e,...t){let s=new Date().toISOString();console.error(`[${s}] [INFO] [${r}] ${e}`,...t)}function f(r,e,...t){let s=new Date().toISOString();console.error(`[${s}] [WARN] [${r}] ${e}`,...t)}async function Ir(r,e,t){if(!$r)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 $r,ue=C(()=>{"use strict";$r=!1});var _n={};oe(_n,{DEFAULT_CONCURRENCY:()=>rt,byDateDescending:()=>bn,daysBetween:()=>De,detectGitHubUsername:()=>_s,extractOwnerRepo:()=>ht,formatRelativeTime:()=>bs,getBackupDir:()=>mt,getCLIVersion:()=>qe,getCacheDir:()=>fs,getDataDir:()=>Fe,getGitHubToken:()=>Ye,getGitHubTokenAsync:()=>ys,getStatePath:()=>nt,isOwnRepo:()=>He,parseGitHubUrl:()=>me,requireGitHubToken:()=>he,resetGitHubTokenCache:()=>yn,splitRepo:()=>kt});function Fe(){let r=ot.join(fn.homedir(),".oss-autopilot");return Ne.existsSync(r)||Ne.mkdirSync(r,{recursive:!0,mode:448}),r}function nt(){return ot.join(Fe(),"state.json")}function mt(){let r=ot.join(Fe(),"backups");return Ne.existsSync(r)||Ne.mkdirSync(r,{recursive:!0,mode:448}),r}function fs(){let r=ot.join(Fe(),"cache");return Ne.existsSync(r)||Ne.mkdirSync(r,{recursive:!0,mode:448}),r}function Fr(r,e){return Wc.test(r)&&zc.test(e)}function me(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 Fr(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 Fr(s,o)?{owner:s,repo:o,number:parseInt(t[3],10),type:"issues"}:null}return null}function ht(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 Fr(t,s)?{owner:t,repo:s}:null}function De(r,e=new Date){return Math.max(0,Math.floor((e.getTime()-r.getTime())/(1e3*60*60*24)))}function kt(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 He(r,e){return r.toLowerCase()===e.toLowerCase()}function qe(){try{let r=ot.join(ot.dirname(process.argv[1]),"..","package.json");return JSON.parse(Ne.readFileSync(r,"utf-8")).version}catch{return"0.0.0"}}function bs(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 bn(r){return(e,t)=>{let s=new Date(r(e)||0).getTime();return new Date(r(t)||0).getTime()-s}}function Ye(){if(Ce)return Ce;if(Ht)return null;if(Ht=!0,process.env.GITHUB_TOKEN)return Ce=process.env.GITHUB_TOKEN,Ce;try{let r=(0,qt.execFileSync)("gh",["auth","token"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],timeout:2e3}).trim();if(r&&r.length>0)return Ce=r,T(gt,"Using GitHub token from gh CLI"),Ce}catch(r){T(gt,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}function he(){let r=Ye();if(!r)throw new Qe(`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 yn(){Ce=null,Ht=!1}async function ys(){if(Ce)return Ce;if(Ht)return null;if(Ht=!0,process.env.GITHUB_TOKEN)return Ce=process.env.GITHUB_TOKEN,Ce;try{let r=await new Promise((e,t)=>{(0,qt.execFile)("gh",["auth","token"],{encoding:"utf-8",timeout:2e3},(s,o)=>{s?t(s):e(o.trim())})});if(r&&r.length>0)return Ce=r,T(dt,"Using GitHub token from gh CLI (async)"),Ce}catch(r){T(dt,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}async function _s(){try{let r=await new Promise((e,t)=>{(0,qt.execFile)("gh",["api","user","--jq",".login"],{encoding:"utf-8",timeout:5e3},(s,o)=>{s?t(s):e(o.trim())})});return r&&Jc.test(r)?(T(dt,`Detected GitHub username: ${r}`),r):(T(dt,`gh api user returned invalid username: "${r}"`),null)}catch(r){return T(dt,"detectGitHubUsername failed",r),null}}var Ne,rt,fn,qt,st,dt,Ce,Ht,Wc,zc,Jc,we=C(()=>{"use strict";Ne=W(require("fs"),1),rt=W(require("path"),1),fn=W(require("os"),1),qt=require("child_process");ce();ue();st=5,dt="utils",Ce=null,Ht=!1;Wc=/^[a-zA-Z0-9_-]+$/,zc=/^[a-zA-Z0-9_.-]+$/;Jc=/^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$/});function Xc(r){try{let e=JSON.parse(j.readFileSync(r,"utf-8"));return Date.now()-e.timestamp>Yc}catch(e){return T(F,"Lock file unreadable or invalid JSON, treating as stale",e),!0}}function Zc(r){let e=JSON.stringify({pid:process.pid,timestamp:Date.now()});try{j.writeFileSync(r,e,{flag:"wx"});return}catch(t){T(F,"Lock file already exists, checking staleness",t)}if(!Xc(r))throw new Error("State file is locked by another process");try{j.unlinkSync(r)}catch(t){T(F,"Stale lock already removed by another process",t)}try{j.writeFileSync(r,e,{flag:"wx"})}catch(t){throw T(F,"Lock re-acquire failed (race condition)",t),new Error("State file is locked by another process",{cause:t})}}function eu(r){try{JSON.parse(j.readFileSync(r,"utf-8")).pid===process.pid&&j.unlinkSync(r)}catch(e){T(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 wn(r){T(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 T(F,`Migration complete. Preserved ${Object.keys(s).length} repo scores.`),o}function x(){return Ur||(Ur=new Rs),Ur}var j,xe,F,Kc,Rn,Qc,Yc,Bt,ht,Rs,Ur,Vt=C(()=>{"use strict";j=W(require("fs"),1),xe=W(require("path"),1);Ct();we();ce();ue();F="state",Kc=2,Rn=1e3,Qc=720*60*60*1e3,Yc=3e4,Bt=xe.join(process.cwd(),"data","state.json"),ht=xe.join(process.cwd(),"data","backups");Rs=class r{state;inMemoryOnly;constructor(e=!1){this.inMemoryOnly=e,this.state=e?this.createFreshState():this.load()}createFreshState(){return{version:Kc,activeIssues:[],repoScores:{},config:{...hs.config,setupComplete:!1,languages:[...hs.config.languages],labels:[...hs.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(F,`Setup already complete, skipping initializeWithDefaults for "${e}"`);return}this.state.config.githubUsername=e,this.markSetupComplete(),T(F,`Initialized with defaults for user "${e}"`),this.save()}migrateFromLegacyLocation(){let e=ot();if(j.existsSync(e)||!j.existsSync(Bt))return!1;T(F,"Migrating state from ./data/ to ~/.oss-autopilot/...");try{if(Fe(),j.copyFileSync(Bt,e),T(F,`Migrated state file to ${e}`),j.existsSync(ht)){let s=gt(),o=j.readdirSync(ht).filter(n=>n.startsWith("state-")&&n.endsWith(".json"));for(let n of o){let i=xe.join(ht,n),a=xe.join(s,n);j.copyFileSync(i,a)}T(F,`Migrated ${o.length} backup files`)}if(j.unlinkSync(Bt),T(F,"Removed legacy state file"),j.existsSync(ht)){let s=j.readdirSync(ht);for(let o of s)j.unlinkSync(xe.join(ht,o));j.rmdirSync(ht)}let t=xe.dirname(Bt);return j.existsSync(t)&&j.readdirSync(t).length===0&&(j.rmdirSync(t),T(F,"Removed empty legacy data directory")),T(F,"Migration complete!"),!0}catch(t){f(F,`Failed to migrate state: ${S(t)}`);let s=ot();if(j.existsSync(s)&&j.existsSync(Bt))try{j.unlinkSync(s),T(F,"Cleaned up partial migration - removed incomplete new state file")}catch(o){f(F,"Could not clean up partial migration file"),T(F,"Partial migration cleanup failed",o)}return f(F,"To resolve this issue:"),f(F," 1. Ensure you have write permissions to ~/.oss-autopilot/"),f(F," 2. Check available disk space"),f(F," 3. Manually copy ./data/state.json to ~/.oss-autopilot/state.json"),f(F," 4. Or delete ./data/state.json to start fresh"),!1}}load(){this.migrateFromLegacyLocation();let e=ot();try{if(j.existsSync(e)){let t=j.readFileSync(e,"utf-8"),s=JSON.parse(t);if(!this.isValidState(s)){f(F,"Invalid state file structure, attempting to restore from backup...");let n=this.tryRestoreFromBackup();return n||(f(F,"No valid backup found, starting fresh"),this.createFreshState())}s.version===1&&(s=wn(s),xr(e,JSON.stringify(s,null,2),384),T(F,"Migrated state saved"));let o=Object.keys(s.repoScores).length;return T(F,`Loaded state v${s.version}: ${o} repo scores tracked`),s}}catch(t){f(F,"Error loading state:",t),f(F,"Attempting to restore from backup...");let s=this.tryRestoreFromBackup();if(s)return s;f(F,"No valid backup found, starting fresh")}return T(F,"No existing state found, initializing..."),this.createFreshState()}tryRestoreFromBackup(){let e=gt();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=xe.join(e,s);try{let n=j.readFileSync(o,"utf-8"),i=JSON.parse(n);if(this.isValidState(i)){T(F,`Successfully restored state from backup: ${s}`),i.version===1&&(i=wn(i));let a=Object.keys(i.repoScores).length;T(F,`Restored state v${i.version}: ${a} repo scores`);let c=ot();return xr(c,JSON.stringify(i,null,2),384),T(F,"Restored backup written to main state file"),i}}catch(n){f(F,`Backup ${s} is corrupted, trying next...`),T(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=ot(),t=e+".lock",s=gt();Zc(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=xe.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),T(F,"State saved successfully")}finally{eu(t)}}cleanupBackups(){let e=gt();try{let t=j.readdirSync(e).filter(s=>s.startsWith("state-")).sort().reverse();for(let s of t.slice(10))try{j.unlinkSync(xe.join(e,s))}catch(o){f(F,`Could not delete old backup ${s}:`,S(o))}}catch(t){f(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)),T(F,`Added ${s.length} merged PRs (total: ${this.state.mergedPRs.length})`))}getMergedPRWatermark(){let e=this.state.mergedPRs;if(!e||e.length===0)return;let t=e[0].mergedAt;if(t)return t}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>Rn&&(this.state.events=this.state.events.slice(-Rn))}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(F,`Issue ${e.url} already tracked`);return}this.state.activeIssues.push(e),T(F,`Added issue: ${e.repo}#${e.number}`)}addTrustedProject(e){this.state.config.trustedProjects.includes(e)||(this.state.config.trustedProjects.push(e),T(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&&T(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(),T(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 X(`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)?(f(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())?f(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(),T(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()}),T(F,`Incremented merged count for ${e}: ${s}`)}incrementClosedCount(e){let s=(this.state.repoScores[e]?.closedWithoutMergeCount??0)+1;this.updateRepoScore(e,{closedWithoutMergeCount:s}),T(F,`Incremented closed count for ${e}: ${s}`)}markRepoHostile(e){this.updateRepoScore(e,{signals:{hasHostileComments:!0}}),T(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<=Qc:(f(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))ut(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 nt(){return typeof navigator=="object"&&"userAgent"in navigator?navigator.userAgent:typeof process=="object"&&process.version!==void 0?`Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`:"<environment undetectable>"}var Wt=C(()=>{});function ws(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)=>ws.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 En=C(()=>{});function Tn(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 vn=C(()=>{});function Sn(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 Pn=C(()=>{});function An(r,e,t){let s=kn(Sn,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]=kn(Tn,null).apply(null,n)})}function tu(){let r=Symbol("Singular"),e={registry:{}},t=ws.bind(null,e,r);return An(t,e,r),t}function su(){let r={registry:{}},e=ws.bind(null,r);return An(e,r),e}var Cn,kn,On,Gn=C(()=>{En();vn();Pn();Cn=Function.bind,kn=Cn.bind(Cn);On={Singular:tu,Collection:su}});function iu(r){return r?Object.keys(r).reduce((e,t)=>(e[t.toLowerCase()]=r[t],e),{}):{}}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)}function In(r,e){let t=Object.assign({},r);return Object.keys(e).forEach(s=>{au(e[s])?s in r?t[s]=In(r[s],e[s]):Object.assign(t,{[s]:e[s]}):Object.assign(t,{[s]:e[s]})}),t}function $n(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=iu(t.headers),$n(t),$n(t.headers);let s=In(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 cu(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 lu(r){return r.replace(/(?:^\W+)|(?:(?<!\W)\W+$)/g,"").split(/,/)}function pu(r){let e=r.match(uu);return e?e.map(lu).reduce((t,s)=>t.concat(s),[]):[]}function Dn(r,e){let t={__proto__:null};for(let s of Object.keys(r))e.indexOf(s)===-1&&(t[s]=r[s]);return t}function Fn(r){return r.split(/(%[0-9A-Fa-f]{2})/g).map(function(e){return/%[0-9A-Fa-f]/.test(e)||(e=encodeURI(e).replace(/%5B/g,"[").replace(/%5D/g,"]")),e}).join("")}function Ot(r){return encodeURIComponent(r).replace(/[!'()*]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function zt(r,e,t){return e=r==="+"||r==="#"?Fn(e):Ot(e),t?Ot(t)+"="+e:e}function At(r){return r!=null}function Mr(r){return r===";"||r==="&"||r==="?"}function du(r,e,t,s){var o=r[t],n=[];if(At(o)&&o!=="")if(typeof o=="string"||typeof o=="number"||typeof o=="bigint"||typeof o=="boolean")o=o.toString(),s&&s!=="*"&&(o=o.substring(0,parseInt(s,10))),n.push(zt(e,o,Mr(e)?t:""));else if(s==="*")Array.isArray(o)?o.filter(At).forEach(function(i){n.push(zt(e,i,Mr(e)?t:""))}):Object.keys(o).forEach(function(i){At(o[i])&&n.push(zt(e,o[i],i))});else{let i=[];Array.isArray(o)?o.filter(At).forEach(function(a){i.push(zt(e,a))}):Object.keys(o).forEach(function(a){At(o[a])&&(i.push(Ot(a)),i.push(zt(e,o[a].toString())))}),Mr(e)?n.push(Ot(t)+"="+i.join(",")):i.length!==0&&n.push(i.join(","))}else e===";"?At(o)&&n.push(Ot(t)):o===""&&(e==="&"||e==="?")?n.push(Ot(t)+"="):o===""&&n.push("");return n}function gu(r){return{expand:mu.bind(null,r)}}function mu(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 p=/([^:\*]*)(?::(\d+)|(\*))?/.exec(u);c.push(du(e,a,p[1],p[2]||p[3]))}),a&&a!=="+"){var i=",";return a==="?"?i="&":a!=="#"&&(i=a),(c.length!==0?a:"")+c.join(i)}else return c.join(",")}else return Fn(n)}),r==="/"?r:r.replace(/\/$/,"")}function xn(r){let e=r.method.toUpperCase(),t=(r.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),s=Object.assign({},r.headers),o,n=Dn(r,["method","baseUrl","url","headers","request","mediaType"]),i=pu(t);t=gu(t).expand(n),/^http/.test(t)||(t=r.baseUrl+t);let a=Object.keys(r).filter(p=>i.includes(p)).concat("baseUrl"),c=Dn(n,a);if(!/application\/octet-stream/i.test(s.accept)&&(r.mediaType.format&&(s.accept=s.accept.split(/,/).map(p=>p.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${r.mediaType.format}`)).join(",")),t.endsWith("/graphql")&&r.mediaType.previews?.length)){let p=s.accept.match(/(?<![\w-])[\w-]+(?=-preview)/g)||[];s.accept=p.concat(r.mediaType.previews).map(d=>{let g=r.mediaType.format?`.${r.mediaType.format}`:"+json";return`application/vnd.github.${d}-preview${g}`}).join(",")}return["GET","HEAD"].includes(e)?t=cu(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 hu(r,e,t){return xn(Lr(r,e,t))}function Un(r,e){let t=Lr(r,e),s=hu.bind(null,t);return Object.assign(s,{DEFAULTS:t,defaults:Un.bind(null,t),merge:Lr.bind(null,t),parse:xn})}var ru,ou,nu,uu,Mn,Ln=C(()=>{Wt();ru="0.0.0-development",ou=`octokit-endpoint.js/${ru} ${nt()}`,nu={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":ou},mediaType:{format:""}};uu=/\{[^{}}]+\}/g;Mn=Un(null,nu)});var qn=ze((kd,Jt)=>{"use strict";var vs=function(){};vs.prototype=Object.create(null);var Es=/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu,Ts=/\\([\v\u0020-\u00ff])/gu,jn=/^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u,ft={type:"",parameters:new vs};Object.freeze(ft.parameters);Object.freeze(ft);function Nn(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(jn.test(t)===!1)throw new TypeError("invalid media type");let s={type:t.toLowerCase(),parameters:new vs};if(e===-1)return s;let o,n,i;for(Es.lastIndex=e;n=Es.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),Ts.test(i)&&(i=i.replace(Ts,"$1"))),s.parameters[o]=i}if(e!==r.length)throw new TypeError("invalid parameter format");return s}function Hn(r){if(typeof r!="string")return ft;let e=r.indexOf(";"),t=e!==-1?r.slice(0,e).trim():r.trim();if(jn.test(t)===!1)return ft;let s={type:t.toLowerCase(),parameters:new vs};if(e===-1)return s;let o,n,i;for(Es.lastIndex=e;n=Es.exec(r);){if(n.index!==e)return ft;e+=n[0].length,o=n[1].toLowerCase(),i=n[2],i[0]==='"'&&(i=i.slice(1,i.length-1),Ts.test(i)&&(i=i.replace(Ts,"$1"))),s.parameters[o]=i}return e!==r.length?ft:s}Jt.exports.default={parse:Nn,safeParse:Hn};Jt.exports.parse=Nn;Jt.exports.safeParse=Hn;Jt.exports.defaultContentType=ft});var fu,Wn,jr,Bn,bu,yu,_u,zn,Ru,wu,Eu,Jn,Vn,Tu,vu,Kn,Qn=C(()=>{fu=/^-?\d+$/,Wn=/^-?\d+n+$/,jr=JSON.stringify,Bn=JSON.parse,bu=/^-?\d+n$/,yu=/([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,_u=/([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,zn=(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(Wn)||typeof a=="bigint"?a.toString()+"n":typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t).replace(yu,"$1$2$3").replace(_u,"$1$2$3"):jr(r,e,t),Ru=()=>JSON.parse("1",(r,e,t)=>!!t&&t.source==="1"),wu=(r,e,t,s)=>typeof e=="string"&&e.match(bu)?BigInt(e.slice(0,-1)):typeof e=="string"&&e.match(Wn)?e.slice(0,-1):typeof s!="function"?e:s(r,e,t),Eu=(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&&fu.test(o.source);return n&&i?BigInt(o.source):typeof e!="function"?s:e(t,s,o)}),Jn=Number.MAX_SAFE_INTEGER.toString(),Vn=Jn.length,Tu=/"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,vu=/^"-?\d+n+"$/,Kn=(r,e)=>{if(!r)return Bn(r,e);if(Ru())return Eu(r,e);let t=r.replace(Tu,(s,o,n,i)=>{let a=s[0]==='"';if(a&&!!s.match(vu))return s.substring(0,s.length-1)+'n"';let u=n||i,p=o&&(o.length<Vn||o.length===Vn&&o<=Jn);return a||u||p?s:'"'+s+'n"'});return Bn(t,(s,o,n)=>wu(s,o,n,e))}});var bt,Yn=C(()=>{bt=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 Cu(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 Zn(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=Cu(r.body)||Array.isArray(r.body)?zn(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 bt(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 p={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 p;if(r.method==="HEAD"){if(a<400)return p;throw new bt(i.statusText,a,{response:p,request:r})}if(a===304)throw p.data=await Nr(i),new bt("Not modified",a,{response:p,request:r});if(a>=400)throw p.data=await Nr(i),new bt(Au(p.data),a,{response:p,request:r});return p.data=s?await Nr(i):i.body,p}async function Nr(r){let e=r.headers.get("content-type");if(!e)return r.text().catch(Xn);let t=(0,ei.safeParse)(e);if(ku(t)){let s="";try{return s=await r.text(),Kn(s)}catch{return s}}else return t.type.startsWith("text/")||t.parameters.charset?.toLowerCase()==="utf-8"?r.text().catch(Xn):r.arrayBuffer().catch(()=>new ArrayBuffer(0))}function ku(r){return r.type==="application/json"||r.type==="application/scim+json"}function Au(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 Zn(t.parse(i));let a=(c,u)=>Zn(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 ei,Su,Pu,Xn,Kt,qr=C(()=>{Ln();Wt();ei=W(qn(),1);Qn();Yn();Su="10.0.8",Pu={headers:{"user-agent":`octokit-request.js/${Su} ${nt()}`}};Xn=()=>"";Kt=Hr(Mn,Pu);});function Gu(r){return`Request failed due to following response errors:
33
+ The gh CLI is recommended - install from https://cli.github.com`);return r}function yn(){Ce=null,Ht=!1}async function ys(){if(Ce)return Ce;if(Ht)return null;if(Ht=!0,process.env.GITHUB_TOKEN)return Ce=process.env.GITHUB_TOKEN,Ce;try{let r=await new Promise((e,t)=>{(0,qt.execFile)("gh",["auth","token"],{encoding:"utf-8",timeout:2e3},(s,o)=>{s?t(s):e(o.trim())})});if(r&&r.length>0)return Ce=r,T(gt,"Using GitHub token from gh CLI (async)"),Ce}catch(r){T(gt,"gh auth token failed (CLI unavailable or not authenticated)",r)}return null}async function _s(){try{let r=await new Promise((e,t)=>{(0,qt.execFile)("gh",["api","user","--jq",".login"],{encoding:"utf-8",timeout:5e3},(s,o)=>{s?t(s):e(o.trim())})});return r&&Jc.test(r)?(T(gt,`Detected GitHub username: ${r}`),r):(T(gt,`gh api user returned invalid username: "${r}"`),null)}catch(r){return T(gt,"detectGitHubUsername failed",r),null}}var Ne,ot,fn,qt,rt,gt,Ce,Ht,Wc,zc,Jc,we=C(()=>{"use strict";Ne=W(require("fs"),1),ot=W(require("path"),1),fn=W(require("os"),1),qt=require("child_process");ce();ue();rt=5,gt="utils",Ce=null,Ht=!1;Wc=/^[a-zA-Z0-9_-]+$/,zc=/^[a-zA-Z0-9_.-]+$/;Jc=/^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$/});function Xc(r){try{let e=JSON.parse(j.readFileSync(r,"utf-8"));return Date.now()-e.timestamp>Yc}catch(e){return T(F,"Lock file unreadable or invalid JSON, treating as stale",e),!0}}function Zc(r){let e=JSON.stringify({pid:process.pid,timestamp:Date.now()});try{j.writeFileSync(r,e,{flag:"wx"});return}catch(t){T(F,"Lock file already exists, checking staleness",t)}if(!Xc(r))throw new Error("State file is locked by another process");try{j.unlinkSync(r)}catch(t){T(F,"Stale lock already removed by another process",t)}try{j.writeFileSync(r,e,{flag:"wx"})}catch(t){throw T(F,"Lock re-acquire failed (race condition)",t),new Error("State file is locked by another process",{cause:t})}}function eu(r){try{JSON.parse(j.readFileSync(r,"utf-8")).pid===process.pid&&j.unlinkSync(r)}catch(e){T(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 wn(r){T(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 T(F,`Migration complete. Preserved ${Object.keys(s).length} repo scores.`),o}function x(){return Ur||(Ur=new Rs),Ur}var j,xe,F,Kc,Rn,Qc,Yc,Bt,ft,Rs,Ur,Vt=C(()=>{"use strict";j=W(require("fs"),1),xe=W(require("path"),1);pt();we();ce();ue();F="state",Kc=2,Rn=1e3,Qc=720*60*60*1e3,Yc=3e4,Bt=xe.join(process.cwd(),"data","state.json"),ft=xe.join(process.cwd(),"data","backups");Rs=class r{state;inMemoryOnly;constructor(e=!1){this.inMemoryOnly=e,this.state=e?this.createFreshState():this.load()}createFreshState(){return{version:Kc,activeIssues:[],repoScores:{},config:{...hs.config,setupComplete:!1,languages:[...hs.config.languages],labels:[...hs.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(F,`Setup already complete, skipping initializeWithDefaults for "${e}"`);return}this.state.config.githubUsername=e,this.markSetupComplete(),T(F,`Initialized with defaults for user "${e}"`),this.save()}migrateFromLegacyLocation(){let e=nt();if(j.existsSync(e)||!j.existsSync(Bt))return!1;T(F,"Migrating state from ./data/ to ~/.oss-autopilot/...");try{if(Fe(),j.copyFileSync(Bt,e),T(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=xe.join(ft,n),a=xe.join(s,n);j.copyFileSync(i,a)}T(F,`Migrated ${o.length} backup files`)}if(j.unlinkSync(Bt),T(F,"Removed legacy state file"),j.existsSync(ft)){let s=j.readdirSync(ft);for(let o of s)j.unlinkSync(xe.join(ft,o));j.rmdirSync(ft)}let t=xe.dirname(Bt);return j.existsSync(t)&&j.readdirSync(t).length===0&&(j.rmdirSync(t),T(F,"Removed empty legacy data directory")),T(F,"Migration complete!"),!0}catch(t){f(F,`Failed to migrate state: ${S(t)}`);let s=nt();if(j.existsSync(s)&&j.existsSync(Bt))try{j.unlinkSync(s),T(F,"Cleaned up partial migration - removed incomplete new state file")}catch(o){f(F,"Could not clean up partial migration file"),T(F,"Partial migration cleanup failed",o)}return f(F,"To resolve this issue:"),f(F," 1. Ensure you have write permissions to ~/.oss-autopilot/"),f(F," 2. Check available disk space"),f(F," 3. Manually copy ./data/state.json to ~/.oss-autopilot/state.json"),f(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)){f(F,"Invalid state file structure, attempting to restore from backup...");let n=this.tryRestoreFromBackup();return n||(f(F,"No valid backup found, starting fresh"),this.createFreshState())}s.version===1&&(s=wn(s),xr(e,JSON.stringify(s,null,2),384),T(F,"Migrated state saved"));let o=Object.keys(s.repoScores).length;return T(F,`Loaded state v${s.version}: ${o} repo scores tracked`),s}}catch(t){f(F,"Error loading state:",t),f(F,"Attempting to restore from backup...");let s=this.tryRestoreFromBackup();if(s)return s;f(F,"No valid backup found, starting fresh")}return T(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=xe.join(e,s);try{let n=j.readFileSync(o,"utf-8"),i=JSON.parse(n);if(this.isValidState(i)){T(F,`Successfully restored state from backup: ${s}`),i.version===1&&(i=wn(i));let a=Object.keys(i.repoScores).length;T(F,`Restored state v${i.version}: ${a} repo scores`);let c=nt();return xr(c,JSON.stringify(i,null,2),384),T(F,"Restored backup written to main state file"),i}}catch(n){f(F,`Backup ${s} is corrupted, trying next...`),T(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();Zc(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=xe.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),T(F,"State saved successfully")}finally{eu(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(xe.join(e,s))}catch(o){f(F,`Could not delete old backup ${s}:`,S(o))}}catch(t){f(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)),T(F,`Added ${s.length} merged PRs (total: ${this.state.mergedPRs.length})`))}getMergedPRWatermark(){let e=this.state.mergedPRs;if(!e||e.length===0)return;let t=e[0].mergedAt;if(t)return t}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>Rn&&(this.state.events=this.state.events.slice(-Rn))}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(F,`Issue ${e.url} already tracked`);return}this.state.activeIssues.push(e),T(F,`Added issue: ${e.repo}#${e.number}`)}addTrustedProject(e){this.state.config.trustedProjects.includes(e)||(this.state.config.trustedProjects.push(e),T(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&&T(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(),T(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 X(`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)?(f(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())?f(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(),T(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()}),T(F,`Incremented merged count for ${e}: ${s}`)}incrementClosedCount(e){let s=(this.state.repoScores[e]?.closedWithoutMergeCount??0)+1;this.updateRepoScore(e,{closedWithoutMergeCount:s}),T(F,`Incremented closed count for ${e}: ${s}`)}markRepoHostile(e){this.updateRepoScore(e,{signals:{hasHostileComments:!0}}),T(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<=Qc:(f(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 Wt=C(()=>{});function ws(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)=>ws.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 En=C(()=>{});function Tn(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 vn=C(()=>{});function Sn(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 Pn=C(()=>{});function An(r,e,t){let s=kn(Sn,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]=kn(Tn,null).apply(null,n)})}function tu(){let r=Symbol("Singular"),e={registry:{}},t=ws.bind(null,e,r);return An(t,e,r),t}function su(){let r={registry:{}},e=ws.bind(null,r);return An(e,r),e}var Cn,kn,On,Gn=C(()=>{En();vn();Pn();Cn=Function.bind,kn=Cn.bind(Cn);On={Singular:tu,Collection:su}});function iu(r){return r?Object.keys(r).reduce((e,t)=>(e[t.toLowerCase()]=r[t],e),{}):{}}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)}function In(r,e){let t=Object.assign({},r);return Object.keys(e).forEach(s=>{au(e[s])?s in r?t[s]=In(r[s],e[s]):Object.assign(t,{[s]:e[s]}):Object.assign(t,{[s]:e[s]})}),t}function $n(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=iu(t.headers),$n(t),$n(t.headers);let s=In(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 cu(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 lu(r){return r.replace(/(?:^\W+)|(?:(?<!\W)\W+$)/g,"").split(/,/)}function pu(r){let e=r.match(uu);return e?e.map(lu).reduce((t,s)=>t.concat(s),[]):[]}function Dn(r,e){let t={__proto__:null};for(let s of Object.keys(r))e.indexOf(s)===-1&&(t[s]=r[s]);return t}function Fn(r){return r.split(/(%[0-9A-Fa-f]{2})/g).map(function(e){return/%[0-9A-Fa-f]/.test(e)||(e=encodeURI(e).replace(/%5B/g,"[").replace(/%5D/g,"]")),e}).join("")}function Ot(r){return encodeURIComponent(r).replace(/[!'()*]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}function zt(r,e,t){return e=r==="+"||r==="#"?Fn(e):Ot(e),t?Ot(t)+"="+e:e}function At(r){return r!=null}function Mr(r){return r===";"||r==="&"||r==="?"}function du(r,e,t,s){var o=r[t],n=[];if(At(o)&&o!=="")if(typeof o=="string"||typeof o=="number"||typeof o=="bigint"||typeof o=="boolean")o=o.toString(),s&&s!=="*"&&(o=o.substring(0,parseInt(s,10))),n.push(zt(e,o,Mr(e)?t:""));else if(s==="*")Array.isArray(o)?o.filter(At).forEach(function(i){n.push(zt(e,i,Mr(e)?t:""))}):Object.keys(o).forEach(function(i){At(o[i])&&n.push(zt(e,o[i],i))});else{let i=[];Array.isArray(o)?o.filter(At).forEach(function(a){i.push(zt(e,a))}):Object.keys(o).forEach(function(a){At(o[a])&&(i.push(Ot(a)),i.push(zt(e,o[a].toString())))}),Mr(e)?n.push(Ot(t)+"="+i.join(",")):i.length!==0&&n.push(i.join(","))}else e===";"?At(o)&&n.push(Ot(t)):o===""&&(e==="&"||e==="?")?n.push(Ot(t)+"="):o===""&&n.push("");return n}function gu(r){return{expand:mu.bind(null,r)}}function mu(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 p=/([^:\*]*)(?::(\d+)|(\*))?/.exec(u);c.push(du(e,a,p[1],p[2]||p[3]))}),a&&a!=="+"){var i=",";return a==="?"?i="&":a!=="#"&&(i=a),(c.length!==0?a:"")+c.join(i)}else return c.join(",")}else return Fn(n)}),r==="/"?r:r.replace(/\/$/,"")}function xn(r){let e=r.method.toUpperCase(),t=(r.url||"/").replace(/:([a-z]\w+)/g,"{$1}"),s=Object.assign({},r.headers),o,n=Dn(r,["method","baseUrl","url","headers","request","mediaType"]),i=pu(t);t=gu(t).expand(n),/^http/.test(t)||(t=r.baseUrl+t);let a=Object.keys(r).filter(p=>i.includes(p)).concat("baseUrl"),c=Dn(n,a);if(!/application\/octet-stream/i.test(s.accept)&&(r.mediaType.format&&(s.accept=s.accept.split(/,/).map(p=>p.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${r.mediaType.format}`)).join(",")),t.endsWith("/graphql")&&r.mediaType.previews?.length)){let p=s.accept.match(/(?<![\w-])[\w-]+(?=-preview)/g)||[];s.accept=p.concat(r.mediaType.previews).map(d=>{let g=r.mediaType.format?`.${r.mediaType.format}`:"+json";return`application/vnd.github.${d}-preview${g}`}).join(",")}return["GET","HEAD"].includes(e)?t=cu(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 hu(r,e,t){return xn(Lr(r,e,t))}function Un(r,e){let t=Lr(r,e),s=hu.bind(null,t);return Object.assign(s,{DEFAULTS:t,defaults:Un.bind(null,t),merge:Lr.bind(null,t),parse:xn})}var ru,ou,nu,uu,Mn,Ln=C(()=>{Wt();ru="0.0.0-development",ou=`octokit-endpoint.js/${ru} ${it()}`,nu={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":ou},mediaType:{format:""}};uu=/\{[^{}}]+\}/g;Mn=Un(null,nu)});var qn=ze((kd,Jt)=>{"use strict";var vs=function(){};vs.prototype=Object.create(null);var Es=/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\v\u0020-\u00ff])*"|[!#$%&'*+.^\w`|~-]+) */gu,Ts=/\\([\v\u0020-\u00ff])/gu,jn=/^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u,bt={type:"",parameters:new vs};Object.freeze(bt.parameters);Object.freeze(bt);function Nn(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(jn.test(t)===!1)throw new TypeError("invalid media type");let s={type:t.toLowerCase(),parameters:new vs};if(e===-1)return s;let o,n,i;for(Es.lastIndex=e;n=Es.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),Ts.test(i)&&(i=i.replace(Ts,"$1"))),s.parameters[o]=i}if(e!==r.length)throw new TypeError("invalid parameter format");return s}function Hn(r){if(typeof r!="string")return bt;let e=r.indexOf(";"),t=e!==-1?r.slice(0,e).trim():r.trim();if(jn.test(t)===!1)return bt;let s={type:t.toLowerCase(),parameters:new vs};if(e===-1)return s;let o,n,i;for(Es.lastIndex=e;n=Es.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),Ts.test(i)&&(i=i.replace(Ts,"$1"))),s.parameters[o]=i}return e!==r.length?bt:s}Jt.exports.default={parse:Nn,safeParse:Hn};Jt.exports.parse=Nn;Jt.exports.safeParse=Hn;Jt.exports.defaultContentType=bt});var fu,Wn,jr,Bn,bu,yu,_u,zn,Ru,wu,Eu,Jn,Vn,Tu,vu,Kn,Qn=C(()=>{fu=/^-?\d+$/,Wn=/^-?\d+n+$/,jr=JSON.stringify,Bn=JSON.parse,bu=/^-?\d+n$/,yu=/([\[:])?"(-?\d+)n"($|([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,_u=/([\[:])?("-?\d+n+)n("$|"([\\n]|\s)*(\s|[\\n])*[,\}\]])/g,zn=(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(Wn)||typeof a=="bigint"?a.toString()+"n":typeof e=="function"?e(i,a):(Array.isArray(e)&&e.includes(i),a),t).replace(yu,"$1$2$3").replace(_u,"$1$2$3"):jr(r,e,t),Ru=()=>JSON.parse("1",(r,e,t)=>!!t&&t.source==="1"),wu=(r,e,t,s)=>typeof e=="string"&&e.match(bu)?BigInt(e.slice(0,-1)):typeof e=="string"&&e.match(Wn)?e.slice(0,-1):typeof s!="function"?e:s(r,e,t),Eu=(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&&fu.test(o.source);return n&&i?BigInt(o.source):typeof e!="function"?s:e(t,s,o)}),Jn=Number.MAX_SAFE_INTEGER.toString(),Vn=Jn.length,Tu=/"(?:\\.|[^"])*"|-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?/g,vu=/^"-?\d+n+"$/,Kn=(r,e)=>{if(!r)return Bn(r,e);if(Ru())return Eu(r,e);let t=r.replace(Tu,(s,o,n,i)=>{let a=s[0]==='"';if(a&&!!s.match(vu))return s.substring(0,s.length-1)+'n"';let u=n||i,p=o&&(o.length<Vn||o.length===Vn&&o<=Jn);return a||u||p?s:'"'+s+'n"'});return Bn(t,(s,o,n)=>wu(s,o,n,e))}});var yt,Yn=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 Cu(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 Zn(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=Cu(r.body)||Array.isArray(r.body)?zn(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 yt(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 p={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 p;if(r.method==="HEAD"){if(a<400)return p;throw new yt(i.statusText,a,{response:p,request:r})}if(a===304)throw p.data=await Nr(i),new yt("Not modified",a,{response:p,request:r});if(a>=400)throw p.data=await Nr(i),new yt(Au(p.data),a,{response:p,request:r});return p.data=s?await Nr(i):i.body,p}async function Nr(r){let e=r.headers.get("content-type");if(!e)return r.text().catch(Xn);let t=(0,ei.safeParse)(e);if(ku(t)){let s="";try{return s=await r.text(),Kn(s)}catch{return s}}else return t.type.startsWith("text/")||t.parameters.charset?.toLowerCase()==="utf-8"?r.text().catch(Xn):r.arrayBuffer().catch(()=>new ArrayBuffer(0))}function ku(r){return r.type==="application/json"||r.type==="application/scim+json"}function Au(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 Zn(t.parse(i));let a=(c,u)=>Zn(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 ei,Su,Pu,Xn,Kt,qr=C(()=>{Ln();Wt();ei=W(qn(),1);Qn();Yn();Su="10.0.8",Pu={headers:{"user-agent":`octokit-request.js/${Su} ${it()}`}};Xn=()=>"";Kt=Hr(Mn,Pu);});function Gu(r){return`Request failed due to following response errors:
34
34
  `+r.errors.map(e=>` - ${e.message}`).join(`
35
- `)}function Fu(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(Iu.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)=>Du.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 ti.test(n)&&(o.url=n.replace(ti,"/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 $u(o,a,i.data)}return i.data.data})}function Br(r,e){let t=r.defaults(e);return Object.assign((o,n)=>Fu(t,o,n),{defaults:Br.bind(null,t),endpoint:t.endpoint})}function si(r){return Br(r,{method:"POST",url:"/graphql"})}var Ou,$u,Du,Iu,ti,Md,ri=C(()=>{qr();Wt();Ou="0.0.0-development";$u=class extends Error{constructor(r,e,t){super(Gu(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},Du=["method","baseUrl","url","headers","request","query","mediaType","operationName"],Iu=["query","method","url"],ti=/\/api\/v3\/?$/;Md=Br(Kt,{headers:{"user-agent":`octokit-graphql.js/${Ou} ${nt()}`},method:"POST",url:"/graphql"})});async function Uu(r){let e=xu(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 Mu(r){return r.split(/\./).length===3?`bearer ${r}`:`token ${r}`}async function Lu(r,e,t,s){let o=e.endpoint.merge(t,s);return o.headers.authorization=Mu(r),e(o)}var Vr,oi,ni,xu,ii,ai=C(()=>{Vr="(?:[a-zA-Z0-9_-]+)",oi="\\.",ni=new RegExp(`^${Vr}${oi}${Vr}${oi}${Vr}$`),xu=ni.test.bind(ni);ii=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(Uu.bind(null,e),{hook:Lu.bind(null,e)})}});var Wr,ci=C(()=>{Wr="7.0.6"});function Hu(r={}){return typeof r.debug!="function"&&(r.debug=ui),typeof r.info!="function"&&(r.info=ui),typeof r.warn!="function"&&(r.warn=ju),typeof r.error!="function"&&(r.error=Nu),r}var ui,ju,Nu,li,Ss,pi=C(()=>{Wt();Gn();qr();ri();ai();ci();ui=()=>{},ju=console.warn.bind(console),Nu=console.error.bind(console);li=`octokit-core.js/${Wr} ${nt()}`,Ss=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 On.Collection,s={baseUrl:Kt.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} ${li}`:li,e.baseUrl&&(s.baseUrl=e.baseUrl),e.previews&&(s.mediaType.previews=e.previews),e.timeZone&&(s.headers["time-zone"]=e.timeZone),this.request=Kt.defaults(s),this.graphql=si(this.request).defaults(s),this.log=Hu(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=ii(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 di,gi=C(()=>{di="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 mi=C(()=>{gi();zr.VERSION=di});function Bu(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=Bu(c);if(a=((u.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!a&&"total_commits"in u.data){let p=new URL(u.url),d=p.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=p.toString())}return{value:u}}catch(c){if(c.status!==409)throw c;return a="",{value:{status:200,headers:{},data:[]}}}}})}}function hi(r,e,t,s){return typeof t=="function"&&(s=t,t=void 0),fi(r,[],Jr(r,e,t)[Symbol.asyncIterator](),s)}function fi(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:fi(r,e,t,s)})}function Kr(r){return{paginate:Object.assign(hi.bind(null,r),{iterator:Jr.bind(null,r)})}}var qu,tg,bi=C(()=>{qu="0.0.0-development";tg=Object.assign(hi,{iterator:Jr});Kr.VERSION=qu});var Qr,yi=C(()=>{Qr="17.0.0"});var Vu,_i,Ri=C(()=>{Vu={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"]}},_i=Vu});function Yr(r){let e={};for(let t of yt.keys())e[t]=new Proxy({octokit:r,scope:t,cache:{}},Wu);return e}function zu(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,p]=o.renamed;r.log.warn(`octokit.${e}.${t}() has been renamed to octokit.${u}.${p}()`)}if(o.deprecated&&r.log.warn(o.deprecated),o.renamedParameters){let u=n.endpoint.merge(...a);for(let[p,d]of Object.entries(o.renamedParameters))p in u&&(r.log.warn(`"${p}" parameter is deprecated for "octokit.${e}.${t}()". Use "${d}" instead`),d in u||(u[d]=u[p]),delete u[p]);return n(u)}return n(...a)}return Object.assign(i,n)}var yt,Wu,wi=C(()=>{Ri();yt=new Map;for(let[r,e]of Object.entries(_i))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);yt.has(r)||yt.set(r,new Map),yt.get(r).set(t,{scope:r,methodName:t,endpointDefaults:u,decorations:i})}Wu={has({scope:r},e){return yt.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[...yt.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=yt.get(e).get(s);if(!o)return;let{endpointDefaults:n,decorations:i}=o;return i?t[s]=zu(r,e,s,n,i):t[s]=r.request.defaults(n),t[s]}}});function Ju(r){return{rest:Yr(r)}}function Xr(r){let e=Yr(r);return{...e,rest:e}}var Ei=C(()=>{yi();wi();Ju.VERSION=Qr;Xr.VERSION=Qr});var Ti,vi=C(()=>{Ti="22.0.1"});var Si,Pi=C(()=>{pi();mi();bi();Ei();vi();Si=Ss.plugin(zr,Xr,Kr).defaults({userAgent:`octokit-rest.js/${Ti}`})});var Ci=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(D){return D&&D.default||D}var t=function(D,h,l={}){var b,y,R;for(b in h)R=h[b],l[b]=(y=D[b])!=null?y:R;return l},s=function(D,h,l={}){var b,y;for(b in D)y=D[b],h[b]!==void 0&&(l[b]=y);return l},o={load:t,overwrite:s},n;n=class{constructor(h,l){this.incr=h,this.decr=l,this._first=null,this._last=null,this.length=0}push(h){var l;this.length++,typeof this.incr=="function"&&this.incr(),l={value:h,prev:this._last,next:null},this._last!=null?(this._last.next=l,this._last=l):this._first=this._last=l}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,l,b;for(h=this._first,b=[];h!=null;)b.push((l=h,h=h.next,l.value));return b}forEachShift(h){var l;for(l=this.shift();l!=null;)h(l),l=this.shift()}debug(){var h,l,b,y,R;for(h=this._first,R=[];h!=null;)R.push((l=h,h=h.next,{value:l.value,prev:(b=l.prev)!=null?b.value:void 0,next:(y=l.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=(l,b)=>this._addListener(l,"many",b),this.instance.once=(l,b)=>this._addListener(l,"once",b),this.instance.removeAllListeners=(l=null)=>l!=null?delete this._events[l]:this._events={}}_addListener(h,l,b){var y;return(y=this._events)[h]==null&&(y[h]=[]),this._events[h].push({cb:b,status:l}),this.instance}listenerCount(h){return this._events[h]!=null?this._events[h].length:0}async trigger(h,...l){var b,y;try{return h!=="debug"&&this.trigger("debug",`Event triggered: ${h}`,l),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 v,$;if(R.status!=="none"){R.status==="once"&&(R.status="none");try{return $=typeof R.cb=="function"?R.cb(...l):void 0,typeof $?.then=="function"?await $:$}catch(z){return v=z,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,p,d;u=i,p=c,d=class{constructor(h){var l;this.Events=new p(this),this._length=0,this._lists=(function(){var b,y,R;for(R=[],l=b=1,y=h;1<=y?b<=y:b>=y;l=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(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(l){return l.forEachShift(h)})}getFirst(h=this._lists){var l,b,y;for(l=0,b=h.length;l<b;l++)if(y=h[l],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,m,G,I;G=10,P=5,I=o,w=_,m=class{constructor(h,l,b,y,R,v,$,z){this.task=h,this.args=l,this.rejectOnDrop=R,this.Events=v,this._states=$,this.Promise=z,this.options=I.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((de,be)=>{this._resolve=de,this._reject=be}),this.retryCount=0}_sanitizePriority(h){var l;return l=~~h!==h?P:h,l<0?0:l>G-1?G-1:l}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:h,message:l="This job has been dropped by Bottleneck"}={}){return this._states.remove(this.options.id)?(this.rejectOnDrop&&this._reject(h??new w(l)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0):!1}_assertStatus(h){var l;if(l=this._states.jobStatus(this.options.id),!(l===h||h==="DONE"&&l===null))throw new w(`Invalid job status ${l}, 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,l){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:h,blocked:l})}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,l,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(h!=null?h.schedule(this.options,this.task,...this.args):this.task(...this.args)),l())return this.doDone(v),await y(this.options,v),this._assertStatus("DONE"),this._resolve($)}catch(z){return R=z,this._onFailure(R,v,l,b,y)}}doExpire(h,l,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,h,l,b)}async _onFailure(h,l,b,y,R){var v,$;if(b())return v=await this.Events.trigger("failed",h,l),v!=null?($=~~v,this.Events.trigger("retry",`Retrying ${this.options.id} after ${$} ms`,l),this.retryCount++,y($)):(this.doDone(l),await R(this.options,l),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=m,M,k,O;O=o,M=_,k=class{constructor(h,l,b){this.instance=h,this.storeOptions=l,this.clientId=this.instance._randomIndex(),O.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 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 l,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:l,reservoirIncreaseMaximum:y,reservoir:v}=this.storeOptions,this._lastReservoirIncrease=R,b=y!=null?Math.min(l,y-v):l,b>0))return this.storeOptions.reservoir+=b,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(l,b){return setTimeout(l,h)})}computePenalty(){var h;return(h=this.storeOptions.penalty)!=null?h:15*this.storeOptions.minTime||5e3}async __updateSettings__(h){return await this.yieldLoop(),O.overwrite(h,h,this.storeOptions),this._startHeartbeat(),this.instance._drainAll(this.computeCapacity()),!0}async __running__(){return await this.yieldLoop(),this._running}async __queued__(){return await this.yieldLoop(),this.instance.queued()}async __done__(){return await this.yieldLoop(),this._done}async __groupCheck__(h){return await this.yieldLoop(),this._nextRequest+this.timeout<h}computeCapacity(){var h,l;return{maxConcurrent:h,reservoir:l}=this.storeOptions,h!=null&&l!=null?Math.min(h-this._running,l):h!=null?h-this._running:l??null}conditionsCheck(h){var l;return l=this.computeCapacity(),l==null||h<=l}async __incrementReservoir__(h){var l;return await this.yieldLoop(),l=this.storeOptions.reservoir+=h,this.instance._drainAll(this.computeCapacity()),l}async __currentReservoir__(){return await this.yieldLoop(),this.storeOptions.reservoir}isBlocked(h){return this._unblockTime>=h}check(h,l){return this.conditionsCheck(h)&&this._nextRequest-l<=0}async __check__(h){var l;return await this.yieldLoop(),l=Date.now(),this.check(h,l)}async __register__(h,l,b){var y,R;return await this.yieldLoop(),y=Date.now(),this.conditionsCheck(l)?(this._running+=l,this.storeOptions.reservoir!=null&&(this.storeOptions.reservoir-=l),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,l){var b,y,R;if(await this.yieldLoop(),this.storeOptions.maxConcurrent!=null&&l>this.storeOptions.maxConcurrent)throw new M(`Impossible to add a job having a weight of ${l} 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(l,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__(h,l){return await this.yieldLoop(),this._running-=l,this._done+=l,this.instance._drainAll(this.computeCapacity()),{running:this._running}}};var U=k,A,se;A=_,se=class{constructor(h){this.status=h,this._jobs={},this.counts=this.status.map(function(){return 0})}next(h){var l,b;if(l=this._jobs[h],b=l+1,l!=null&&b<this.status.length)return this.counts[l]--,this.counts[b]++,this._jobs[h]++;if(l!=null)return this.counts[l]--,delete this._jobs[h]}start(h){var l;return l=0,this._jobs[h]=l,this.counts[l]++}remove(h){var l;return l=this._jobs[h],l!=null&&(this.counts[l]--,delete this._jobs[h]),l!=null}jobStatus(h){var l;return(l=this.status[this._jobs[h]])!=null?l:null}statusJobs(h){var l,b,y,R,v;if(h!=null){if(b=this.status.indexOf(h),b<0)throw new A(`status must be one of ${this.status.join(", ")}`);y=this._jobs,R=[];for(l in y)v=y[l],v===b&&R.push(l);return R}else return Object.keys(this._jobs)}statusCounts(){return this.counts.reduce(((h,l,b)=>(h[this.status[b]]=l,h)),{})}};var Ee=se,ie,pe;ie=i,pe=class{constructor(h,l){this.schedule=this.schedule.bind(this),this.name=h,this.Promise=l,this._running=0,this._queue=new ie}isEmpty(){return this._queue.length===0}async _tryToRun(){var h,l,b,y,R,v,$;if(this._running<1&&this._queue.length>0)return this._running++,{task:$,args:h,resolve:R,reject:y}=this._queue.shift(),l=await(async function(){try{return v=await $(...h),function(){return R(v)}}catch(z){return b=z,function(){return y(b)}}})(),this._running--,this._tryToRun(),l()}schedule(h,...l){var b,y,R;return R=y=null,b=new this.Promise(function(v,$){return R=v,y=$}),this._queue.push({task:h,args:l,resolve:R,reject:y}),this._tryToRun(),b}};var Ve=pe,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."),q=()=>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."),H,B,Z,Ie,tt,We;We=o,H=c,Ie=L,Z=q,tt=re,B=(function(){class D{constructor(l={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=l,We.load(this.limiterOptions,this.defaults,this),this.Events=new H(this),this.instances={},this.Bottleneck=Zo,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 Z(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(l=""){var b;return(b=this.instances[l])!=null?b:(()=>{var y;return y=this.instances[l]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${l}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",y,l),y})()}async deleteKey(l=""){var b,y;return y=this.instances[l],this.connection&&(b=await this.connection.__runCommand__(["del",...tt.allKeys(`${this.id}-${l}`)])),y!=null&&(delete this.instances[l],await y.disconnect()),y!=null||b>0}limiters(){var l,b,y,R;b=this.instances,y=[];for(l in b)R=b[l],y.push({key:l,limiter:R});return y}keys(){return Object.keys(this.instances)}async clusterKeys(){var l,b,y,R,v,$,z,de,be;if(this.connection==null)return this.Promise.resolve(this.keys());for($=[],l=null,be=`b_${this.id}-`.length,b=9;l!==0;)for([de,y]=await this.connection.__runCommand__(["scan",l??0,"match",`b_${this.id}-*_settings`,"count",1e4]),l=~~de,R=0,z=y.length;R<z;R++)v=y[R],$.push(v.slice(be,-b));return $}_startAutoCleanup(){var l;return clearInterval(this.interval),typeof(l=this.interval=setInterval(async()=>{var b,y,R,v,$,z;$=Date.now(),R=this.instances,v=[];for(y in R){z=R[y];try{await z._store.__groupCheck__($)?v.push(this.deleteKey(y)):v.push(void 0)}catch(de){b=de,v.push(z.Events.trigger("error",b))}}return v},this.timeout/2)).unref=="function"?l.unref():void 0}updateSettings(l={}){if(We.overwrite(l,this.defaults,this),We.overwrite(l,l,this.limiterOptions),l.timeout!=null)return this._startAutoCleanup()}disconnect(l=!0){var b;if(!this.sharedConnection)return(b=this.connection)!=null?b.disconnect(l):void 0}}return D.prototype.defaults={timeout:1e3*60*5,connection:null,Promise,id:"group-key"},D}).call(r);var ur=B,qo,Bo,Vo;Vo=o,Bo=c,qo=(function(){class D{constructor(l={}){this.options=l,Vo.load(this.options,this.defaults,this),this.Events=new Bo(this),this._arr=[],this._resetPromise(),this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise((l,b)=>this._resolve=l)}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(l){var b;return this._arr.push(l),b=this._promise,this._arr.length===this.maxSize?this._flush():this.maxTime!=null&&this._arr.length===1&&(this._timeout=setTimeout(()=>this._flush(),this.maxTime)),b}}return D.prototype.defaults={maxTime:null,maxSize:null,Promise},D}).call(r);var Rc=qo,wc=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),Ec=e(Pe),Wo,zo,lr,pr,Jo,dr,Ko,Qo,Yo,gr,je,Xo=[].splice;dr=10,zo=5,je=o,Ko=g,pr=N,Jo=U,Qo=wc,lr=c,Yo=Ee,gr=Ve,Wo=(function(){class D{constructor(l={},...b){var y,R;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(l,b),je.load(l,this.instanceDefaults,this),this._queues=new Ko(dr),this._scheduled={},this._states=new Yo(["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=je.load(l,this.storeDefaults,{}),this._store=(function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null)return y=je.load(l,this.redisStoreDefaults,{}),new Qo(this,R,y);if(this.datastore==="local")return y=je.load(l,this.localStoreDefaults,{}),new Jo(this,R,y);throw new D.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(l,b){if(!(l!=null&&typeof l=="object"&&b.length===0))throw new D.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(l){return this._store.__publish__(l)}disconnect(l=!0){return this._store.__disconnect__(l)}chain(l){return this._limiter=l,this}queued(l){return this._queues.queued(l)}clusterQueued(){return this._store.__queued__()}empty(){return this.queued()===0&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(l){return this._states.jobStatus(l)}jobs(l){return this._states.statusJobs(l)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(l=1){return this._store.__check__(l)}_clearGlobalState(l){return this._scheduled[l]!=null?(clearTimeout(this._scheduled[l].expiration),delete this._scheduled[l],!0):!1}async _free(l,b,y,R){var v,$;try{if({running:$}=await this._store.__free__(l,y.weight),this.Events.trigger("debug",`Freed ${y.id}`,R),$===0&&this.empty())return this.Events.trigger("idle")}catch(z){return v=z,this.Events.trigger("error",v)}}_run(l,b,y){var R,v,$;return b.doRun(),R=this._clearGlobalState.bind(this,l),$=this._run.bind(this,l,b),v=this._free.bind(this,l,b),this._scheduled[l]={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(l){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(),l!=null&&v.weight>l?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:z,wait:de,reservoir:be})=>{var Lt;return this.Events.trigger("debug",`Drained ${v.id}`,{success:z,args:b,options:v}),z?($.shift(),Lt=this.empty(),Lt&&this.Events.trigger("empty"),be===0&&this.Events.trigger("depleted",Lt),this._run(y,R,de),this.Promise.resolve(v.weight)):this.Promise.resolve(null)})))})}_drainAll(l,b=0){return this._drainOne(l).then(y=>{var R;return y!=null?(R=l!=null?l-y:l,this._drainAll(R,b+y)):this.Promise.resolve(b)}).catch(y=>this.Events.trigger("error",y))}_dropAllQueued(l){return this._queues.shiftAll(function(b){return b.doDrop({message:l})})}stop(l={}){var b,y;return l=je.load(l,this.stopDefaults),y=R=>{var v;return v=()=>{var $;return $=this._states.counts,$[0]+$[1]+$[2]+$[3]===R},new this.Promise(($,z)=>v()?$():this.on("done",()=>{if(v())return this.removeAllListeners("done"),$()}))},b=l.dropWaitingJobs?(this._run=function(R,v){return v.doDrop({message:l.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:l.dropErrorMessage}));return this._dropAllQueued(l.dropErrorMessage),y(0)}))):this.schedule({priority:dr-1,weight:0},()=>y(1)),this._receive=function(R){return R._reject(new D.prototype.BottleneckError(l.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new D.prototype.BottleneckError("stop() has already been called")),b}async _addToQueue(l){var b,y,R,v,$,z,de;({args:b,options:v}=l);try{({reachedHWM:$,blocked:y,strategy:de}=await this._store.__submit__(this.queued(),v.weight))}catch(be){return R=be,this.Events.trigger("debug",`Could not queue ${v.id}`,{args:b,options:v,error:R}),l.doDrop({error:R}),!1}return y?(l.doDrop(),!0):$&&(z=de===D.prototype.strategy.LEAK?this._queues.shiftLastFrom(v.priority):de===D.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(v.priority+1):de===D.prototype.strategy.OVERFLOW?l:void 0,z?.doDrop(),z==null||de===D.prototype.strategy.OVERFLOW)?(z==null&&l.doDrop(),$):(l.doQueue($,y),this._queues.push(l),await this._drainAll(),$)}_receive(l){return this._states.jobStatus(l.options.id)!=null?(l._reject(new D.prototype.BottleneckError(`A job with the same id already exists (id=${l.options.id})`)),!1):(l.doReceive(),this._submitLock.schedule(this._addToQueue,l))}submit(...l){var b,y,R,v,$,z,de;return typeof l[0]=="function"?($=l,[y,...l]=$,[b]=Xo.call(l,-1),v=je.load({},this.jobDefaults)):(z=l,[v,y,...l]=z,[b]=Xo.call(l,-1),v=je.load(v,this.jobDefaults)),de=(...be)=>new this.Promise(function(Lt,vc){return y(...be,function(...en){return(en[0]!=null?vc:Lt)(en)})}),R=new pr(de,l,v,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),R.promise.then(function(be){return typeof b=="function"?b(...be):void 0}).catch(function(be){return Array.isArray(be)?typeof b=="function"?b(...be):void 0:typeof b=="function"?b(be):void 0}),this._receive(R)}schedule(...l){var b,y,R;return typeof l[0]=="function"?([R,...l]=l,y={}):[y,R,...l]=l,b=new pr(R,l,y,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(b),b.promise}wrap(l){var b,y;return b=this.schedule.bind(this),y=function(...R){return b(l.bind(this),...R)},y.withOptions=function(R,...v){return b(R,l,...v)},y}async updateSettings(l={}){return await this._store.__updateSettings__(je.overwrite(l,this.storeDefaults)),je.overwrite(l,this.instanceDefaults,this),this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(l=0){return this._store.__incrementReservoir__(l)}}return D.default=D,D.Events=lr,D.version=D.prototype.version=Ec.version,D.strategy=D.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},D.BottleneckError=D.prototype.BottleneckError=_,D.Group=D.prototype.Group=ur,D.RedisConnection=D.prototype.RedisConnection=L,D.IORedisConnection=D.prototype.IORedisConnection=q,D.Batcher=D.prototype.Batcher=Rc,D.prototype.jobDefaults={priority:zo,weight:1,expiration:null,id:"<no-id>"},D.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:D.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},D.prototype.localStoreDefaults={Promise,timeout:null,heartbeatInterval:250},D.prototype.redisStoreDefaults={Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},D.prototype.instanceDefaults={datastore:"local",connection:null,id:"<no-id>",rejectOnDrop:!0,trackDoneStatus:!1,Promise},D.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},D}).call(r);var Zo=Wo,Tc=Zo;return Tc}))});function Qu(r,e,t){return r.retryLimiter.schedule(Yu,r,e,t)}async function Yu(r,e,t){let{pathname:s}=new URL(t.url,"http://github.test"),o=Xu(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 p=(o?r.auth:r.global).key(r.id).schedule(u,e,t);if(a){let d=await p;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 p}function Xu(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 el(r){let t=`^(?:${r.map(s=>s.split("/").map(o=>o.startsWith("{")?"(?:.+?)":o).join("/")).map(s=>`(?:${s})`).join("|")})[^/]*$`;return new RegExp(t,"i")}function Ps(r,e){let{enabled:t=!0,Bottleneck:s=Ai.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),_t.global==null&&tl(s,a);let c=Object.assign({clustering:i!=null,triggersNotification:Oi,fallbackSecondaryRateRetryAfter:60,retryAfterBaseValue:1e3,retryLimiter:new s,id:o,..._t},e.throttle);if(typeof c.onSecondaryRateLimit!="function"||typeof c.onRateLimit!="function")throw new Error(`octokit/plugin-throttling error:
35
+ `)}function Fu(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(Iu.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)=>Du.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 ti.test(n)&&(o.url=n.replace(ti,"/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 $u(o,a,i.data)}return i.data.data})}function Br(r,e){let t=r.defaults(e);return Object.assign((o,n)=>Fu(t,o,n),{defaults:Br.bind(null,t),endpoint:t.endpoint})}function si(r){return Br(r,{method:"POST",url:"/graphql"})}var Ou,$u,Du,Iu,ti,Md,ri=C(()=>{qr();Wt();Ou="0.0.0-development";$u=class extends Error{constructor(r,e,t){super(Gu(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},Du=["method","baseUrl","url","headers","request","query","mediaType","operationName"],Iu=["query","method","url"],ti=/\/api\/v3\/?$/;Md=Br(Kt,{headers:{"user-agent":`octokit-graphql.js/${Ou} ${it()}`},method:"POST",url:"/graphql"})});async function Uu(r){let e=xu(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 Mu(r){return r.split(/\./).length===3?`bearer ${r}`:`token ${r}`}async function Lu(r,e,t,s){let o=e.endpoint.merge(t,s);return o.headers.authorization=Mu(r),e(o)}var Vr,oi,ni,xu,ii,ai=C(()=>{Vr="(?:[a-zA-Z0-9_-]+)",oi="\\.",ni=new RegExp(`^${Vr}${oi}${Vr}${oi}${Vr}$`),xu=ni.test.bind(ni);ii=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(Uu.bind(null,e),{hook:Lu.bind(null,e)})}});var Wr,ci=C(()=>{Wr="7.0.6"});function Hu(r={}){return typeof r.debug!="function"&&(r.debug=ui),typeof r.info!="function"&&(r.info=ui),typeof r.warn!="function"&&(r.warn=ju),typeof r.error!="function"&&(r.error=Nu),r}var ui,ju,Nu,li,Ss,pi=C(()=>{Wt();Gn();qr();ri();ai();ci();ui=()=>{},ju=console.warn.bind(console),Nu=console.error.bind(console);li=`octokit-core.js/${Wr} ${it()}`,Ss=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 On.Collection,s={baseUrl:Kt.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} ${li}`:li,e.baseUrl&&(s.baseUrl=e.baseUrl),e.previews&&(s.mediaType.previews=e.previews),e.timeZone&&(s.headers["time-zone"]=e.timeZone),this.request=Kt.defaults(s),this.graphql=si(this.request).defaults(s),this.log=Hu(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=ii(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 di,gi=C(()=>{di="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 mi=C(()=>{gi();zr.VERSION=di});function Bu(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=Bu(c);if(a=((u.headers.link||"").match(/<([^<>]+)>;\s*rel="next"/)||[])[1],!a&&"total_commits"in u.data){let p=new URL(u.url),d=p.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=p.toString())}return{value:u}}catch(c){if(c.status!==409)throw c;return a="",{value:{status:200,headers:{},data:[]}}}}})}}function hi(r,e,t,s){return typeof t=="function"&&(s=t,t=void 0),fi(r,[],Jr(r,e,t)[Symbol.asyncIterator](),s)}function fi(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:fi(r,e,t,s)})}function Kr(r){return{paginate:Object.assign(hi.bind(null,r),{iterator:Jr.bind(null,r)})}}var qu,tg,bi=C(()=>{qu="0.0.0-development";tg=Object.assign(hi,{iterator:Jr});Kr.VERSION=qu});var Qr,yi=C(()=>{Qr="17.0.0"});var Vu,_i,Ri=C(()=>{Vu={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"]}},_i=Vu});function Yr(r){let e={};for(let t of _t.keys())e[t]=new Proxy({octokit:r,scope:t,cache:{}},Wu);return e}function zu(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,p]=o.renamed;r.log.warn(`octokit.${e}.${t}() has been renamed to octokit.${u}.${p}()`)}if(o.deprecated&&r.log.warn(o.deprecated),o.renamedParameters){let u=n.endpoint.merge(...a);for(let[p,d]of Object.entries(o.renamedParameters))p in u&&(r.log.warn(`"${p}" parameter is deprecated for "octokit.${e}.${t}()". Use "${d}" instead`),d in u||(u[d]=u[p]),delete u[p]);return n(u)}return n(...a)}return Object.assign(i,n)}var _t,Wu,wi=C(()=>{Ri();_t=new Map;for(let[r,e]of Object.entries(_i))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})}Wu={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]=zu(r,e,s,n,i):t[s]=r.request.defaults(n),t[s]}}});function Ju(r){return{rest:Yr(r)}}function Xr(r){let e=Yr(r);return{...e,rest:e}}var Ei=C(()=>{yi();wi();Ju.VERSION=Qr;Xr.VERSION=Qr});var Ti,vi=C(()=>{Ti="22.0.1"});var Si,Pi=C(()=>{pi();mi();bi();Ei();vi();Si=Ss.plugin(zr,Xr,Kr).defaults({userAgent:`octokit-rest.js/${Ti}`})});var Ci=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(D){return D&&D.default||D}var t=function(D,h,l={}){var b,y,R;for(b in h)R=h[b],l[b]=(y=D[b])!=null?y:R;return l},s=function(D,h,l={}){var b,y;for(b in D)y=D[b],h[b]!==void 0&&(l[b]=y);return l},o={load:t,overwrite:s},n;n=class{constructor(h,l){this.incr=h,this.decr=l,this._first=null,this._last=null,this.length=0}push(h){var l;this.length++,typeof this.incr=="function"&&this.incr(),l={value:h,prev:this._last,next:null},this._last!=null?(this._last.next=l,this._last=l):this._first=this._last=l}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,l,b;for(h=this._first,b=[];h!=null;)b.push((l=h,h=h.next,l.value));return b}forEachShift(h){var l;for(l=this.shift();l!=null;)h(l),l=this.shift()}debug(){var h,l,b,y,R;for(h=this._first,R=[];h!=null;)R.push((l=h,h=h.next,{value:l.value,prev:(b=l.prev)!=null?b.value:void 0,next:(y=l.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=(l,b)=>this._addListener(l,"many",b),this.instance.once=(l,b)=>this._addListener(l,"once",b),this.instance.removeAllListeners=(l=null)=>l!=null?delete this._events[l]:this._events={}}_addListener(h,l,b){var y;return(y=this._events)[h]==null&&(y[h]=[]),this._events[h].push({cb:b,status:l}),this.instance}listenerCount(h){return this._events[h]!=null?this._events[h].length:0}async trigger(h,...l){var b,y;try{return h!=="debug"&&this.trigger("debug",`Event triggered: ${h}`,l),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 v,$;if(R.status!=="none"){R.status==="once"&&(R.status="none");try{return $=typeof R.cb=="function"?R.cb(...l):void 0,typeof $?.then=="function"?await $:$}catch(z){return v=z,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,p,d;u=i,p=c,d=class{constructor(h){var l;this.Events=new p(this),this._length=0,this._lists=(function(){var b,y,R;for(R=[],l=b=1,y=h;1<=y?b<=y:b>=y;l=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(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(l){return l.forEachShift(h)})}getFirst(h=this._lists){var l,b,y;for(l=0,b=h.length;l<b;l++)if(y=h[l],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,m,G,I;G=10,P=5,I=o,w=_,m=class{constructor(h,l,b,y,R,v,$,z){this.task=h,this.args=l,this.rejectOnDrop=R,this.Events=v,this._states=$,this.Promise=z,this.options=I.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((de,be)=>{this._resolve=de,this._reject=be}),this.retryCount=0}_sanitizePriority(h){var l;return l=~~h!==h?P:h,l<0?0:l>G-1?G-1:l}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:h,message:l="This job has been dropped by Bottleneck"}={}){return this._states.remove(this.options.id)?(this.rejectOnDrop&&this._reject(h??new w(l)),this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise}),!0):!1}_assertStatus(h){var l;if(l=this._states.jobStatus(this.options.id),!(l===h||h==="DONE"&&l===null))throw new w(`Invalid job status ${l}, 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,l){return this._assertStatus("RECEIVED"),this._states.next(this.options.id),this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:h,blocked:l})}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,l,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(h!=null?h.schedule(this.options,this.task,...this.args):this.task(...this.args)),l())return this.doDone(v),await y(this.options,v),this._assertStatus("DONE"),this._resolve($)}catch(z){return R=z,this._onFailure(R,v,l,b,y)}}doExpire(h,l,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,h,l,b)}async _onFailure(h,l,b,y,R){var v,$;if(b())return v=await this.Events.trigger("failed",h,l),v!=null?($=~~v,this.Events.trigger("retry",`Retrying ${this.options.id} after ${$} ms`,l),this.retryCount++,y($)):(this.doDone(l),await R(this.options,l),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=m,M,k,O;O=o,M=_,k=class{constructor(h,l,b){this.instance=h,this.storeOptions=l,this.clientId=this.instance._randomIndex(),O.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 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 l,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:l,reservoirIncreaseMaximum:y,reservoir:v}=this.storeOptions,this._lastReservoirIncrease=R,b=y!=null?Math.min(l,y-v):l,b>0))return this.storeOptions.reservoir+=b,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(l,b){return setTimeout(l,h)})}computePenalty(){var h;return(h=this.storeOptions.penalty)!=null?h:15*this.storeOptions.minTime||5e3}async __updateSettings__(h){return await this.yieldLoop(),O.overwrite(h,h,this.storeOptions),this._startHeartbeat(),this.instance._drainAll(this.computeCapacity()),!0}async __running__(){return await this.yieldLoop(),this._running}async __queued__(){return await this.yieldLoop(),this.instance.queued()}async __done__(){return await this.yieldLoop(),this._done}async __groupCheck__(h){return await this.yieldLoop(),this._nextRequest+this.timeout<h}computeCapacity(){var h,l;return{maxConcurrent:h,reservoir:l}=this.storeOptions,h!=null&&l!=null?Math.min(h-this._running,l):h!=null?h-this._running:l??null}conditionsCheck(h){var l;return l=this.computeCapacity(),l==null||h<=l}async __incrementReservoir__(h){var l;return await this.yieldLoop(),l=this.storeOptions.reservoir+=h,this.instance._drainAll(this.computeCapacity()),l}async __currentReservoir__(){return await this.yieldLoop(),this.storeOptions.reservoir}isBlocked(h){return this._unblockTime>=h}check(h,l){return this.conditionsCheck(h)&&this._nextRequest-l<=0}async __check__(h){var l;return await this.yieldLoop(),l=Date.now(),this.check(h,l)}async __register__(h,l,b){var y,R;return await this.yieldLoop(),y=Date.now(),this.conditionsCheck(l)?(this._running+=l,this.storeOptions.reservoir!=null&&(this.storeOptions.reservoir-=l),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,l){var b,y,R;if(await this.yieldLoop(),this.storeOptions.maxConcurrent!=null&&l>this.storeOptions.maxConcurrent)throw new M(`Impossible to add a job having a weight of ${l} 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(l,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__(h,l){return await this.yieldLoop(),this._running-=l,this._done+=l,this.instance._drainAll(this.computeCapacity()),{running:this._running}}};var U=k,A,se;A=_,se=class{constructor(h){this.status=h,this._jobs={},this.counts=this.status.map(function(){return 0})}next(h){var l,b;if(l=this._jobs[h],b=l+1,l!=null&&b<this.status.length)return this.counts[l]--,this.counts[b]++,this._jobs[h]++;if(l!=null)return this.counts[l]--,delete this._jobs[h]}start(h){var l;return l=0,this._jobs[h]=l,this.counts[l]++}remove(h){var l;return l=this._jobs[h],l!=null&&(this.counts[l]--,delete this._jobs[h]),l!=null}jobStatus(h){var l;return(l=this.status[this._jobs[h]])!=null?l:null}statusJobs(h){var l,b,y,R,v;if(h!=null){if(b=this.status.indexOf(h),b<0)throw new A(`status must be one of ${this.status.join(", ")}`);y=this._jobs,R=[];for(l in y)v=y[l],v===b&&R.push(l);return R}else return Object.keys(this._jobs)}statusCounts(){return this.counts.reduce(((h,l,b)=>(h[this.status[b]]=l,h)),{})}};var Ee=se,ie,pe;ie=i,pe=class{constructor(h,l){this.schedule=this.schedule.bind(this),this.name=h,this.Promise=l,this._running=0,this._queue=new ie}isEmpty(){return this._queue.length===0}async _tryToRun(){var h,l,b,y,R,v,$;if(this._running<1&&this._queue.length>0)return this._running++,{task:$,args:h,resolve:R,reject:y}=this._queue.shift(),l=await(async function(){try{return v=await $(...h),function(){return R(v)}}catch(z){return b=z,function(){return y(b)}}})(),this._running--,this._tryToRun(),l()}schedule(h,...l){var b,y,R;return R=y=null,b=new this.Promise(function(v,$){return R=v,y=$}),this._queue.push({task:h,args:l,resolve:R,reject:y}),this._tryToRun(),b}};var Ve=pe,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."),q=()=>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."),H,B,Z,Ie,st,We;We=o,H=c,Ie=L,Z=q,st=re,B=(function(){class D{constructor(l={}){this.deleteKey=this.deleteKey.bind(this),this.limiterOptions=l,We.load(this.limiterOptions,this.defaults,this),this.Events=new H(this),this.instances={},this.Bottleneck=Zo,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 Z(Object.assign({},this.limiterOptions,{Events:this.Events}))))}key(l=""){var b;return(b=this.instances[l])!=null?b:(()=>{var y;return y=this.instances[l]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${l}`,timeout:this.timeout,connection:this.connection})),this.Events.trigger("created",y,l),y})()}async deleteKey(l=""){var b,y;return y=this.instances[l],this.connection&&(b=await this.connection.__runCommand__(["del",...st.allKeys(`${this.id}-${l}`)])),y!=null&&(delete this.instances[l],await y.disconnect()),y!=null||b>0}limiters(){var l,b,y,R;b=this.instances,y=[];for(l in b)R=b[l],y.push({key:l,limiter:R});return y}keys(){return Object.keys(this.instances)}async clusterKeys(){var l,b,y,R,v,$,z,de,be;if(this.connection==null)return this.Promise.resolve(this.keys());for($=[],l=null,be=`b_${this.id}-`.length,b=9;l!==0;)for([de,y]=await this.connection.__runCommand__(["scan",l??0,"match",`b_${this.id}-*_settings`,"count",1e4]),l=~~de,R=0,z=y.length;R<z;R++)v=y[R],$.push(v.slice(be,-b));return $}_startAutoCleanup(){var l;return clearInterval(this.interval),typeof(l=this.interval=setInterval(async()=>{var b,y,R,v,$,z;$=Date.now(),R=this.instances,v=[];for(y in R){z=R[y];try{await z._store.__groupCheck__($)?v.push(this.deleteKey(y)):v.push(void 0)}catch(de){b=de,v.push(z.Events.trigger("error",b))}}return v},this.timeout/2)).unref=="function"?l.unref():void 0}updateSettings(l={}){if(We.overwrite(l,this.defaults,this),We.overwrite(l,l,this.limiterOptions),l.timeout!=null)return this._startAutoCleanup()}disconnect(l=!0){var b;if(!this.sharedConnection)return(b=this.connection)!=null?b.disconnect(l):void 0}}return D.prototype.defaults={timeout:1e3*60*5,connection:null,Promise,id:"group-key"},D}).call(r);var ur=B,qo,Bo,Vo;Vo=o,Bo=c,qo=(function(){class D{constructor(l={}){this.options=l,Vo.load(this.options,this.defaults,this),this.Events=new Bo(this),this._arr=[],this._resetPromise(),this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise((l,b)=>this._resolve=l)}_flush(){return clearTimeout(this._timeout),this._lastFlush=Date.now(),this._resolve(),this.Events.trigger("batch",this._arr),this._arr=[],this._resetPromise()}add(l){var b;return this._arr.push(l),b=this._promise,this._arr.length===this.maxSize?this._flush():this.maxTime!=null&&this._arr.length===1&&(this._timeout=setTimeout(()=>this._flush(),this.maxTime)),b}}return D.prototype.defaults={maxTime:null,maxSize:null,Promise},D}).call(r);var Rc=qo,wc=()=>console.log("You must import the full version of Bottleneck in order to use this feature."),Ec=e(Pe),Wo,zo,lr,pr,Jo,dr,Ko,Qo,Yo,gr,je,Xo=[].splice;dr=10,zo=5,je=o,Ko=g,pr=N,Jo=U,Qo=wc,lr=c,Yo=Ee,gr=Ve,Wo=(function(){class D{constructor(l={},...b){var y,R;this._addToQueue=this._addToQueue.bind(this),this._validateOptions(l,b),je.load(l,this.instanceDefaults,this),this._queues=new Ko(dr),this._scheduled={},this._states=new Yo(["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=je.load(l,this.storeDefaults,{}),this._store=(function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null)return y=je.load(l,this.redisStoreDefaults,{}),new Qo(this,R,y);if(this.datastore==="local")return y=je.load(l,this.localStoreDefaults,{}),new Jo(this,R,y);throw new D.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(l,b){if(!(l!=null&&typeof l=="object"&&b.length===0))throw new D.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(l){return this._store.__publish__(l)}disconnect(l=!0){return this._store.__disconnect__(l)}chain(l){return this._limiter=l,this}queued(l){return this._queues.queued(l)}clusterQueued(){return this._store.__queued__()}empty(){return this.queued()===0&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(l){return this._states.jobStatus(l)}jobs(l){return this._states.statusJobs(l)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(l=1){return this._store.__check__(l)}_clearGlobalState(l){return this._scheduled[l]!=null?(clearTimeout(this._scheduled[l].expiration),delete this._scheduled[l],!0):!1}async _free(l,b,y,R){var v,$;try{if({running:$}=await this._store.__free__(l,y.weight),this.Events.trigger("debug",`Freed ${y.id}`,R),$===0&&this.empty())return this.Events.trigger("idle")}catch(z){return v=z,this.Events.trigger("error",v)}}_run(l,b,y){var R,v,$;return b.doRun(),R=this._clearGlobalState.bind(this,l),$=this._run.bind(this,l,b),v=this._free.bind(this,l,b),this._scheduled[l]={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(l){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(),l!=null&&v.weight>l?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:z,wait:de,reservoir:be})=>{var Lt;return this.Events.trigger("debug",`Drained ${v.id}`,{success:z,args:b,options:v}),z?($.shift(),Lt=this.empty(),Lt&&this.Events.trigger("empty"),be===0&&this.Events.trigger("depleted",Lt),this._run(y,R,de),this.Promise.resolve(v.weight)):this.Promise.resolve(null)})))})}_drainAll(l,b=0){return this._drainOne(l).then(y=>{var R;return y!=null?(R=l!=null?l-y:l,this._drainAll(R,b+y)):this.Promise.resolve(b)}).catch(y=>this.Events.trigger("error",y))}_dropAllQueued(l){return this._queues.shiftAll(function(b){return b.doDrop({message:l})})}stop(l={}){var b,y;return l=je.load(l,this.stopDefaults),y=R=>{var v;return v=()=>{var $;return $=this._states.counts,$[0]+$[1]+$[2]+$[3]===R},new this.Promise(($,z)=>v()?$():this.on("done",()=>{if(v())return this.removeAllListeners("done"),$()}))},b=l.dropWaitingJobs?(this._run=function(R,v){return v.doDrop({message:l.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:l.dropErrorMessage}));return this._dropAllQueued(l.dropErrorMessage),y(0)}))):this.schedule({priority:dr-1,weight:0},()=>y(1)),this._receive=function(R){return R._reject(new D.prototype.BottleneckError(l.enqueueErrorMessage))},this.stop=()=>this.Promise.reject(new D.prototype.BottleneckError("stop() has already been called")),b}async _addToQueue(l){var b,y,R,v,$,z,de;({args:b,options:v}=l);try{({reachedHWM:$,blocked:y,strategy:de}=await this._store.__submit__(this.queued(),v.weight))}catch(be){return R=be,this.Events.trigger("debug",`Could not queue ${v.id}`,{args:b,options:v,error:R}),l.doDrop({error:R}),!1}return y?(l.doDrop(),!0):$&&(z=de===D.prototype.strategy.LEAK?this._queues.shiftLastFrom(v.priority):de===D.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(v.priority+1):de===D.prototype.strategy.OVERFLOW?l:void 0,z?.doDrop(),z==null||de===D.prototype.strategy.OVERFLOW)?(z==null&&l.doDrop(),$):(l.doQueue($,y),this._queues.push(l),await this._drainAll(),$)}_receive(l){return this._states.jobStatus(l.options.id)!=null?(l._reject(new D.prototype.BottleneckError(`A job with the same id already exists (id=${l.options.id})`)),!1):(l.doReceive(),this._submitLock.schedule(this._addToQueue,l))}submit(...l){var b,y,R,v,$,z,de;return typeof l[0]=="function"?($=l,[y,...l]=$,[b]=Xo.call(l,-1),v=je.load({},this.jobDefaults)):(z=l,[v,y,...l]=z,[b]=Xo.call(l,-1),v=je.load(v,this.jobDefaults)),de=(...be)=>new this.Promise(function(Lt,vc){return y(...be,function(...en){return(en[0]!=null?vc:Lt)(en)})}),R=new pr(de,l,v,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),R.promise.then(function(be){return typeof b=="function"?b(...be):void 0}).catch(function(be){return Array.isArray(be)?typeof b=="function"?b(...be):void 0:typeof b=="function"?b(be):void 0}),this._receive(R)}schedule(...l){var b,y,R;return typeof l[0]=="function"?([R,...l]=l,y={}):[y,R,...l]=l,b=new pr(R,l,y,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise),this._receive(b),b.promise}wrap(l){var b,y;return b=this.schedule.bind(this),y=function(...R){return b(l.bind(this),...R)},y.withOptions=function(R,...v){return b(R,l,...v)},y}async updateSettings(l={}){return await this._store.__updateSettings__(je.overwrite(l,this.storeDefaults)),je.overwrite(l,this.instanceDefaults,this),this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(l=0){return this._store.__incrementReservoir__(l)}}return D.default=D,D.Events=lr,D.version=D.prototype.version=Ec.version,D.strategy=D.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3},D.BottleneckError=D.prototype.BottleneckError=_,D.Group=D.prototype.Group=ur,D.RedisConnection=D.prototype.RedisConnection=L,D.IORedisConnection=D.prototype.IORedisConnection=q,D.Batcher=D.prototype.Batcher=Rc,D.prototype.jobDefaults={priority:zo,weight:1,expiration:null,id:"<no-id>"},D.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:D.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null},D.prototype.localStoreDefaults={Promise,timeout:null,heartbeatInterval:250},D.prototype.redisStoreDefaults={Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:!1,connection:null},D.prototype.instanceDefaults={datastore:"local",connection:null,id:"<no-id>",rejectOnDrop:!0,trackDoneStatus:!1,Promise},D.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:!0,dropErrorMessage:"This limiter has been stopped."},D}).call(r);var Zo=Wo,Tc=Zo;return Tc}))});function Qu(r,e,t){return r.retryLimiter.schedule(Yu,r,e,t)}async function Yu(r,e,t){let{pathname:s}=new URL(t.url,"http://github.test"),o=Xu(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 p=(o?r.auth:r.global).key(r.id).schedule(u,e,t);if(a){let d=await p;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 p}function Xu(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 el(r){let t=`^(?:${r.map(s=>s.split("/").map(o=>o.startsWith("{")?"(?:.+?)":o).join("/")).map(s=>`(?:${s})`).join("|")})[^/]*$`;return new RegExp(t,"i")}function Ps(r,e){let{enabled:t=!0,Bottleneck:s=Ai.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&&tl(s,a);let c=Object.assign({clustering:i!=null,triggersNotification:Oi,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:
36
36
  You must pass the onSecondaryRateLimit and onRateLimit error handlers.
37
37
  See https://octokit.github.io/rest.js/#throttling
38
38
 
@@ -42,8 +42,8 @@ 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={},p=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 G=~~_.retryCount;_.retryCount=G,w.request.retryCount=G;let{wantRetry:I,retryAfter:N=0}=await(async function(){if(/\bsecondary rate\b/i.test(d.message)){let M=Number(d.response.headers["retry-after"])||E.fallbackSecondaryRateRetryAfter;return{wantRetry:await p.trigger("secondary-limit",M,w,r,G),retryAfter:M}}if(d.response.headers!=null&&d.response.headers["x-ratelimit-remaining"]==="0"||(d.response.data?.errors??[]).some(M=>M.type==="RATE_LIMITED")){let M=new Date(~~d.response.headers["x-ratelimit-reset"]*1e3).getTime(),k=Math.max(Math.ceil((M-Date.now())/1e3)+1,0);return{wantRetry:await p.trigger("rate-limit",k,w,r,G),retryAfter:k}}return{}})();if(I)return _.retryCount++,N*E.retryAfterBaseValue}),r.hook.wrap("request",Qu.bind(null,c)),{}}var Ai,Ku,to,Zu,ki,Oi,_t,tl,Gi=C(()=>{Ai=W(Ci(),1),Ku="0.0.0-development",to=()=>Promise.resolve();Zu=["/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"];ki=el(Zu),Oi=ki.test.bind(ki),_t={},tl=function(r,e){_t.global=new r.Group({id:"octokit-global",maxConcurrent:10,...e}),_t.auth=new r.Group({id:"octokit-auth",maxConcurrent:1,...e}),_t.search=new r.Group({id:"octokit-search",maxConcurrent:1,minTime:2e3,...e}),_t.write=new r.Group({id:"octokit-write",maxConcurrent:1,minTime:1e3,...e}),_t.notifications=new r.Group({id:"octokit-notifications",maxConcurrent:1,minTime:3e3,...e})};Ps.VERSION=Ku;Ps.triggersNotification=Oi});function As(r){return r.toLocaleTimeString("en-US",{hour12:!1})}function le(r){return ks&&$i===r||(ks=new sl({auth:r,throttle:{onRateLimit:(e,t,s,o)=>{let n=t,i=new Date(Date.now()+e*1e3);return o<2?(f(Cs,`Rate limit hit (retry ${o+1}/2, waiting ${e}s, resets at ${As(i)}) \u2014 ${n.method} ${n.url}`),!0):(f(Cs,`Rate limit exceeded, not retrying \u2014 ${n.method} ${n.url} (resets at ${As(i)})`),!1)},onSecondaryRateLimit:(e,t,s,o)=>{let n=t,i=new Date(Date.now()+e*1e3);return o<1?(f(Cs,`Secondary rate limit hit (retry ${o+1}/1, waiting ${e}s, resets at ${As(i)}) \u2014 ${n.method} ${n.url}`),!0):(f(Cs,`Secondary rate limit exceeded, not retrying \u2014 ${n.method} ${n.url} (resets at ${As(i)})`),!1)}}}),$i=r),ks}async function so(r){let e=le(r),{data:t}=await e.rateLimit.get(),s=t.resources.search;return{remaining:s.remaining,limit:s.limit,resetAt:new Date(s.reset*1e3).toISOString()}}var Cs,sl,ks,$i,Gt=C(()=>{"use strict";Pi();Gi();ue();Cs="github",sl=Si.plugin(Ps),ks=null,$i=null});async function Os(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 Ue(r,e=100,t=10){let s=[];for(let o=1;o<=t;o++){let{data:n}=await r(o);if(s.push(...n),n.length<e)break}return s}var Qt=C(()=>{"use strict"});function Ye(){return oo||(oo=new $s),oo}async function Yt(r,e,t){let s=r.getInflight(e);if(s)return T(it,`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),p=u.headers?.etag;return p&&r.set(e,p,u.data),u.data}catch(u){if(ol(u)){let p=r.get(e);if(p)return T(it,`304 cache hit for ${e}`),p.body}throw u}})(),i=r.setInflight(e,n);try{return await n}finally{i()}}async function Ds(r,e,t,s){let o=r.getIfFresh(e,t);if(o)return T(it,`Time-based cache hit for ${e}`),o;let n=await s();return r.set(e,"",n),n}function ol(r){return ve(r)===304}var ke,Gs,Di,it,rl,$s,oo,$t=C(()=>{"use strict";ke=W(require("fs"),1),Gs=W(require("path"),1),Di=W(require("crypto"),1);we();ue();ce();it="http-cache",rl=1440*60*1e3,$s=class{cacheDir;inflightRequests=new Map;constructor(e){this.cacheDir=e??fs()}keyFor(e){return Di.createHash("sha256").update(e).digest("hex")}pathFor(e){return Gs.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?(T(it,`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}),T(it,`Cached response for ${e}`)}catch(n){T(it,`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=rl){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=Gs.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&&T(it,`Evicted ${t} stale cache entries`),t}clear(){try{let e=ke.readdirSync(this.cacheDir);for(let t of e)t.endsWith(".json")&&ke.unlinkSync(Gs.join(this.cacheDir,t));T(it,"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(Fi.some(o=>o.test(s)))return"auth_gate";if(Ii.some(o=>o.test(s)))return"fork_limitation";if(xi.some(o=>o.test(s)))return"infrastructure";if(e){let o=e.toLowerCase();if(Fi.some(n=>n.test(o)))return"auth_gate";if(Ii.some(n=>n.test(o)))return"fork_limitation";if(xi.some(n=>n.test(o)))return"infrastructure"}return"actionable"}function Is(r,e){return r.map(t=>{let s=e?.get(t);return{name:t,category:no(t,void 0,s),conclusion:s}})}function Ui(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 Mi(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 Li(r,e,t){let{hasFailingChecks:s,hasPendingChecks:o,hasSuccessfulChecks:n,failingCheckNames:i,failingCheckConclusions:a}=r,{effectiveCombinedState:c,hasStatuses:u,failingStatusNames:p}=e,d=[...i,...p];return s||c==="failure"||c==="error"?{status:"failing",failingCheckNames:d,failingCheckConclusions:a}:o||c==="pending"?{status:"pending",failingCheckNames:[],failingCheckConclusions:new Map}:n||c==="success"?{status:"passing",failingCheckNames:[],failingCheckConclusions:new Map}:!u&&t===0?{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}:{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}}var Ii,Fi,xi,io=C(()=>{"use strict";Ii=[/vercel/i,/netlify/i,/\bpreview\s*deploy/i,/\bdeploy\s*preview/i,/storybook/i,/chromatic/i,/percy/i,/cloudflare pages/i],Fi=[/authoriz/i,/approval/i,/\bcla\b/i,/license\/cla/i],xi=[/\binstall\s*(os\s*)?dep(endenc|s\b)/i,/\bsetup\s+fail(ed|ure)?\b/i,/\bservice\s*unavailable/i,/\binfrastructure/i]});function Dt(r){return r.includes("[bot]")||nl.has(r.toLowerCase())}function Xt(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 nl,Fs=C(()=>{"use strict";nl=new Set(["allcontributors","changeset-bot","claassistant","codecov-commenter","greenkeeper","imgbot","netlify","renovate","snyk-bot","sonarcloud","stale","vercel"])});function ji(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 Ni(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 il(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 al(r,e){return e.find(t=>t.pull_request_review_id===r&&t.body?.trim())?.body?.trim()}function Hi(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 p=c.user?.login||"unknown";if(!u&&c.state==="COMMENTED"&&c.id!=null&&il(c.id,t))continue;let d=u||(c.id!=null?al(c.id,t):void 0)||(c.state==="CHANGES_REQUESTED"?"(requested changes via inline review comments)":"(posted inline review comments)");o.push({author:p,body:d,createdAt:c.submitted_at,isUser:p.toLowerCase()===n})}o.sort((c,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"||Dt(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&&Xt(a.body)&&(a=void 0),{hasUnrespondedComment:!!a,lastMaintainerComment:a}}var qi=C(()=>{"use strict";Fs()});function Bi(r){return cl.test(r.toLowerCase())}function Vi(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=>!Bi(u)),c=n+a.length;return{hasIncompleteChecklist:a.length>0,checklistStats:{checked:n,total:c}}}var cl,ao=C(()=>{"use strict";cl=/\(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 Wi(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 zi=C(()=>{"use strict"});function xs(r){if(r.status==="needs_addressing"&&r.actionReason){let e=ul[r.actionReason];if(e)return{displayLabel:e.label,displayDescription:e.description(r)}}if(r.status==="waiting_on_maintainer"&&r.waitReason){let e=ll[r.waitReason];if(e)return{displayLabel:e.label,displayDescription:e.description(r)}}return f("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 ul,ll,co=C(()=>{"use strict";ue();ul={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"}},ll={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 Rt(){return{repos:new Map,monthlyCounts:{},monthlyOpenedCounts:{},dailyActivityCounts:{}}}function dl(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 Ji(r,e,t,s,o,n){if(!e)return Rt();let i=Ye(),a=n?`:stars${n.minStars}`:"",c=`pr-counts:v3:${s}:${e}${a}`,u=i.getIfFresh(c,pl);if(u&&dl(u))return T(_e,`Using cached ${s} PR counts for @${e}`),{repos:new Map(u.reposEntries),monthlyCounts:u.monthlyCounts,monthlyOpenedCounts:u.monthlyOpenedCounts,dailyActivityCounts:u.dailyActivityCounts};T(_e,`Fetching ${s} PR counts for @${e}...`);let p=new Map,d={},g={},E={},_=1,w=0,P;for(;;){let{data:m}=await r.search.issuesAndPullRequests({q:`is:pr ${t} author:${e} -user:${e}`,sort:"updated",order:"desc",per_page:100,page:_});P=m.total_count;for(let G of m.items){let I=mt(G.html_url);if(!I){f(_e,`Skipping ${s} PR with unparseable URL: ${G.html_url}`);continue}let{owner:N}=I,M=`${N}/${I.repo}`;if(He(N,e)||n&&ut(n.knownStarCounts.get(M),n.minStars))continue;let k=o(p,M,G);if(k){let O=k.slice(0,7);d[O]=(d[O]||0)+1;let U=k.slice(0,10);U.length===10&&(E[U]=(E[U]||0)+1)}if(G.created_at){let O=G.created_at.slice(0,7);g[O]=(g[O]||0)+1;let U=G.created_at.slice(0,10);U.length===10&&(E[U]=(E[U]||0)+1)}}if(w+=m.items.length,w>=m.total_count||w>=1e3||m.items.length===0||_>=Us)break;_++}return w<P&&_>=Us&&f(_e,`Pagination capped at ${Us} pages: fetched ${w} of ${P} ${s} PRs. Stats may be incomplete for prolific contributors.`),T(_e,`Found ${w} ${s} PRs across ${p.size} repos`),i.set(c,"",{reposEntries:Array.from(p.entries()),monthlyCounts:d,monthlyOpenedCounts:g,dailyActivityCounts:E}),{repos:p,monthlyCounts:d,monthlyOpenedCounts:g,dailyActivityCounts:E}}function Ki(r,e,t){return Ji(r,e,"is:merged","merged",(s,o,n)=>{n.pull_request?.merged_at||f(_e,`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 Qi(r,e,t){return Ji(r,e,"is:closed is:unmerged","closed",(s,o,n)=>(s.set(o,(s.get(o)||0)+1),n.closed_at||""),t)}async function Yi(r,e,t,s,o,n){if(!e.githubUsername)return f(_e,`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(_e,`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 p of c.items){let d=me(p.html_url);if(!d){f(_e,`Could not parse GitHub URL from API response: ${p.html_url}`);continue}let g=`${d.owner}/${d.repo}`;He(d.owner,e.githubUsername)||u.push(n(p,{owner:d.owner,repo:g,number:d.number}))}return T(_e,`Found ${u.length} recently ${s} PRs`),u}async function Xi(r,e,t=7){return Yi(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 Zi(r,e,t=7){return Yi(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||f(_e,`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 ea(r,e,t){if(!e.githubUsername)return f(_e,"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(_e,`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 p=me(u.html_url);if(!p){f(_e,`Skipping merged PR with unparseable URL: ${u.html_url}`);continue}if(He(p.owner,e.githubUsername))continue;let d=u.pull_request?.merged_at||u.closed_at||"";if(!d){f(_e,`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>=Us)break;i++}return T(_e,`Fetched ${n.length} merged PRs${t?" (incremental)":" (initial)"}`),n}var _e,pl,Us,Ms=C(()=>{"use strict";we();Ct();ue();$t();_e="github-stats",pl=1440*60*1e3,Us=3});var Ls,gl,wt,ta=C(()=>{"use strict";Gt();Vt();we();ro();ce();Qt();ue();$t();io();qi();ao();zi();co();Ms();co();io();ao();Ls="pr-monitor",gl=st,wt=class r{octokit;stateManager;constructor(e){this.octokit=le(e),this.stateManager=x()}async fetchUserOpenPRs(){let e=this.stateManager.getState().config;if(!e.githubUsername)throw new Ke("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=[],p=t.filter(d=>{if(!d.pull_request)return!1;let g=mt(d.html_url);return g?!He(g.owner,e.githubUsername):(f("pr-monitor",`Skipping PR with unparseable URL: ${d.html_url}`),!1)});return T("pr-monitor",`Filtered to ${p.length} PRs after excluding own repos`),await Ir("pr-monitor",`Fetch details for ${p.length} PRs`,async()=>{await Os(p,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=S(g);f("pr-monitor",`Error fetching ${d.html_url}: ${E}`),u.push({prUrl:d.html_url,error:E})}},gl)}),c.sort((d,g)=>d.status===g.status?0:d.status==="needs_addressing"?-1:1),{prs:c,failures:u}}async fetchPRDetails(e){let t=me(e);if(!t||t.type!=="pull")throw new X(`Invalid PR URL format: ${e}`);let{owner:s,repo:o,number:n}=t,i=this.stateManager.getState().config,[a,c,u,p]=await Promise.all([this.octokit.pulls.get({owner:s,repo:o,pull_number:n}),Ue(H=>this.octokit.issues.listComments({owner:s,repo:o,issue_number:n,per_page:100,page:H})),this.octokit.pulls.listReviews({owner:s,repo:o,pull_number:n}),Ue(H=>this.octokit.pulls.listReviewComments({owner:s,repo:o,pull_number:n,per_page:100,page:H})).catch(H=>{let B=ve(H);if(B===429)throw H;if(B===403){let Z=S(H).toLowerCase();if(Z.includes("rate limit")||Z.includes("abuse detection"))throw H;return f("pr-monitor",`403 fetching review comments for ${s}/${o}#${n}: ${Z}`),[]}return B===404?T("pr-monitor",`Review comments 404 for ${s}/${o}#${n} (likely no inline comments)`):f("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=ji(g),_=this.hasMergeConflict(d.mergeable,d.mergeable_state),{hasUnrespondedComment:w,lastMaintainerComment:P}=Hi(c,g,p,i.githubUsername),m=this.getCIStatus(s,o,d.head.sha),I=w||E==="changes_requested"?this.octokit.repos.getCommit({owner:s,repo:o,ref:d.head.sha}).then(H=>({date:H.data.commit.author?.date,author:H.data.author?.login})).catch(H=>{let B=ve(H);if(B===429)throw H;if(B===403){let Z=S(H).toLowerCase();if(Z.includes("rate limit")||Z.includes("abuse detection"))throw H;f("pr-monitor",`403 fetching commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${S(H)}`);return}f("pr-monitor",`Failed to fetch commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${S(H)}`)}):Promise.resolve(void 0),[{status:N,failingCheckNames:M,failingCheckConclusions:k},O]=await Promise.all([m,I]),U=O?.date,A=O?.author,{hasIncompleteChecklist:se,checklistStats:Ee}=Vi(d.body||""),ie=Wi(P?.body,E),pe=De(new Date(d.updated_at),new Date),Ve=Ni(g),Te=Is(M,k),Ge=N==="failing"&&Te.some(H=>H.category==="actionable"),{status:Pe,actionReason:L,waitReason:q,stalenessTier:re}=this.determineStatus({ciStatus:N,hasMergeConflict:_,hasUnrespondedComment:w,hasIncompleteChecklist:se,reviewDecision:E,daysSinceActivity:pe,dormantThreshold:i.dormantThresholdDays,approachingThreshold:i.approachingDormantDays,latestCommitDate:U,latestCommitAuthor:A,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:q,stalenessTier:re,createdAt:d.created_at,updatedAt:d.updated_at,daysSinceActivity:pe,ciStatus:N,failingCheckNames:M,classifiedChecks:Te,hasMergeConflict:_,reviewDecision:E,hasUnrespondedComment:w,lastMaintainerComment:P,latestCommitDate:U,hasIncompleteChecklist:se,checklistStats:Ee,maintainerActionHints:ie})}buildFetchedPR(e){let t={...e,displayLabel:"",displayDescription:""},{displayLabel:s,displayDescription:o}=xs(t);return t.displayLabel=s,t.displayDescription=o,t}determineStatus(e){let{ciStatus:t,hasMergeConflict:s,hasUnrespondedComment:o,hasIncompleteChecklist:n,reviewDecision:i,daysSinceActivity:a,dormantThreshold:c,approachingThreshold:u,latestCommitDate:p,latestCommitAuthor:d,contributorUsername:g,lastMaintainerCommentDate:E,latestChangesRequestedDate:_,hasActionableCIFailure:w=!0}=e,P="active";a>=c?P="dormant":a>=u&&(P="approaching_dormant");let m=p&&this.isContributorCommit(d,g)?p:void 0;return o?m&&E&&this.isCommitAfterComment(m,E)?_&&m<_?{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"&&_?!m||m<_?{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 _=S(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)`):f("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()],p=Ui(u),d=Mi(i);return Li(p,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}):(f("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 Ki(this.octokit,t.githubUsername,e)}async fetchUserClosedPRCounts(e){let t=this.stateManager.getState().config;return Qi(this.octokit,t.githubUsername,e)}async fetchRepoStarCounts(e){if(e.length===0)return new Map;T(Ls,`Fetching star counts for ${e.length} repos...`);let t=new Map,s=Ye(),o=[...new Set(e)],n=10;for(let i=0;i<o.length;i+=n){let a=o.slice(i,i+n),c=await Promise.allSettled(a.map(async p=>{let d=p.split("/");if(d.length!==2||!d[0]||!d[1])throw new X(`Malformed repo identifier: "${p}"`);let[g,E]=d,_=`/repos/${g}/${E}`,w=await Yt(s,_,P=>this.octokit.repos.get({owner:g,repo:E,headers:P}));return{repo:p,stars:w.stargazers_count}})),u=0;for(let p=0;p<c.length;p++){let d=c[p];d.status==="fulfilled"?t.set(d.value.repo,d.value.stars):(u++,f(Ls,`Failed to fetch stars for ${a[p]}: ${S(d.reason)}`))}if(u===a.length&&a.length>0){let p=o.length-i-n;p>0&&f(Ls,`Entire chunk failed, aborting remaining ${p} repos`);break}}return T(Ls,`Fetched star counts for ${t.size}/${e.length} repos`),t}async fetchRecentlyClosedPRs(e=7){let t=this.stateManager.getState().config;return Xi(this.octokit,t,e)}async fetchRecentlyMergedPRs(e=7){let t=this.stateManager.getState().config;return Zi(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 ra(r){return!r.labels||!Array.isArray(r.labels)?!1:r.labels.map(s=>(typeof s=="string"?s:s.name||"").toLowerCase()).filter(s=>sa.has(s)).length>=5}function oa(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(ra(s)){e.add(o);continue}s.title&&oa(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,sa,po=C(()=>{"use strict";uo=new Set(["documentation","docs","typo","spelling"]);sa=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 Zt(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";we()});function ia(){let r=Date.now();for(let[e,t]of Xe.entries())r-t.fetchedAt>aa&&Xe.delete(e);if(Xe.size>na){let t=Array.from(Xe.entries()).sort((s,o)=>s[1].fetchedAt-o[1].fetchedAt).slice(0,Xe.size-na);for(let[s]of t)Xe.delete(s)}}var at,ml,Xe,aa,hl,na,qs,ca=C(()=>{"use strict";Qt();we();ce();ue();$t();Hs();at="issue-vetting",ml=st,Xe=new Map,aa=3600*1e3,hl=14400*1e3,na=100;qs=class{octokit;stateManager;constructor(e,t){this.octokit=e,this.stateManager=t}async vetIssue(e){let t=me(e);if(!t||t.type!=="issues")throw new X(`Invalid issue URL: ${e}`);let{owner:s,repo:o,number:n}=t,i=`${s}/${o}`,{data:a}=await this.octokit.issues.get({owner:s,repo:o,issue_number:n}),[c,u,p,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=p.checkFailed?!0:p.isActive,m={passedAllChecks:E&&_&&P&&w,checks:{noExistingPR:E,notClaimed:_,projectActive:P,clearRequirements:w,contributionGuidelinesFound:!!d},contributionGuidelines:d,notes:[]};E||m.notes.push("Existing PR found for this issue"),_||m.notes.push("Issue appears to be claimed by someone"),c.inconclusive&&m.notes.push(`Could not verify absence of existing PRs: ${c.reason||"API error"}`),u.inconclusive&&m.notes.push(`Could not verify claim status: ${u.reason||"API error"}`),p.checkFailed?m.notes.push(`Could not verify project activity: ${p.failureReason||"API error"}`):p.isActive||m.notes.push("Project may be inactive"),w||m.notes.push("Issue requirements are unclear"),d||m.notes.push("No CONTRIBUTING.md found");let G={id:a.id,url:e,repo:i,number:n,title:a.title,status:"candidate",labels:a.labels.map(Pe=>typeof Pe=="string"?Pe:Pe.name||""),createdAt:a.created_at,updatedAt:a.updated_at,vetted:!0,vettingResult:m},I=[],N=[];E||I.push("Has existing PR"),_||I.push("Already claimed"),!p.isActive&&!p.checkFailed&&I.push("Inactive project"),w||I.push("Unclear requirements"),E&&N.push("No existing PR"),_&&N.push("Not claimed"),p.isActive&&!p.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),O=k&&k.mergedPRCount>0?k.mergedPRCount:g;O>0?N.push(`Trusted project (${O} PR${O>1?"s":""} merged)`):M.trustedProjects.includes(i)&&N.push("Trusted project (previous PR merged)"),k&&(k.closedWithoutMergeCount>0&&O===0?I.push("User has rejected PR(s) in this repo with no successful merges"):k.closedWithoutMergeCount>0&&O>0&&m.notes.push(`Mixed history: ${O} merged, ${k.closedWithoutMergeCount} closed without merge`));let U=i.split("/")[0],A=!1;U&&i.includes("/")&&(A=Object.values(this.stateManager.getState().repoScores).some(Pe=>Pe.repo&&Pe.mergedPRCount>0&&Pe.repo.startsWith(U+"/")&&Pe.repo!==i)),A&&N.push(`Org affinity (merged PRs in other ${U} repos)`);let se;m.passedAllChecks?se="approve":I.length>2?se="skip":se="needs_review";let Ee=p.checkFailed||c.inconclusive||u.inconclusive;se==="approve"&&Ee&&(se="needs_review",m.notes.push("Recommendation downgraded: one or more checks were inconclusive"));let ie=go(p.stargazersCount??0,p.forksCount??0);p.checkFailed&&ie===0&&m.notes.push("Repo quality bonus unavailable: could not fetch star/fork counts due to API error");let pe=this.getRepoScore(i),Ve=Zt({repoScore:pe,hasExistingPR:!E,isClaimed:!_,clearRequirements:w,hasContributionGuidelines:!!d,issueUpdatedAt:a.updated_at,closedWithoutMergeCount:k?.closedWithoutMergeCount??0,mergedPRCount:O,orgHasMergedPRs:A,repoQualityBonus:ie}),Te=this.stateManager.getStarredRepos(),Ge="normal";return O>0?Ge="merged_pr":Te.includes(i)&&(Ge="starred"),{issue:G,vettingResult:m,projectHealth:p,recommendation:se,reasonsToSkip:I,reasonsToApprove:N,viabilityScore:Ve,searchPriority:Ge}}async vetIssuesParallel(e,t,s){let o=[],n=new Map,i=0,a=0,c=0;for(let p of e){if(o.length>=t)break;c++;let d=this.vetIssue(p).then(g=>{o.length<t&&(s&&(g.searchPriority=s),o.push(g))}).catch(g=>{i++,pt(g)&&a++,f(at,`Error vetting issue ${p}:`,S(g))}).finally(()=>n.delete(p));n.set(p,d),n.size>=ml&&await Promise.race(n.values())}await Promise.allSettled(n.values());let u=i===c&&c>0;return u&&f(at,`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 Ue(a=>this.octokit.issues.listEventsForTimeline({owner:e,repo:t,issue_number:s,per_page:100,page:a}))).filter(a=>{let c=a;return c.event==="cross-referenced"&&c.source?.issue?.pull_request});return{passed:o.total_count===0&&i.length===0}}catch(o){let n=S(o);return f(at,`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 f(at,`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(p=>u.includes(p)))return{passed:!1}}return{passed:!0}}catch(n){let i=S(n);return f(at,`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=Ye(),o=`health:${e}/${t}`;try{return await Ds(s,o,hl,async()=>{let n=`/repos/${e}/${t}`,i=await Yt(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,p=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 E=S(g);f(at,`Failed to check CI status for ${e}/${t}: ${E}. Defaulting to unknown.`)}return{repo:`${e}/${t}`,lastCommitAt:u,daysSinceLastCommit:p,openIssuesCount:i.open_issues_count,avgIssueResponseDays:0,ciStatus:d,isActive:p<30,stargazersCount:i.stargazers_count,forksCount:i.forks_count}})}catch(n){let i=S(n);return f(at,`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=Xe.get(s);if(o&&Date.now()-o.fetchedAt<aa)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 Xe.set(s,{guidelines:u,fetchedAt:Date.now()}),ia(),u}if(c.status==="rejected"){let u=c.reason instanceof Error?c.reason.message:String(c.reason);!u.includes("404")&&!u.includes("Not Found")&&f(at,`Unexpected error fetching ${n[a]} from ${e}/${t}: ${u}`)}}Xe.set(s,{guidelines:void 0,fetchedAt:Date.now()}),ia()}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 ua,la,Y,fl,Et,pa=C(()=>{"use strict";ua=W(require("fs"),1),la=W(require("path"),1);Gt();Vt();we();Ct();ce();ue();$t();po();ca();Hs();po();Hs();Y="issue-discovery",fl=900*1e3,Et=class{octokit;stateManager;githubToken;vetter;rateLimitWarning=null;constructor(e){this.githubToken=e,this.octokit=le(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 Ds(Ye(),t,fl,async()=>{let{data:s}=await this.octokit.search.issuesAndPullRequests(e);return s})}async fetchStarredRepos(){ge(Y,"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){ge(Y,"Reached pagination limit for starred repos (500)");break}}return ge(Y,`Fetched ${e.length} starred repositories`),this.stateManager.setStarredRepos(e),e}catch(t){let s=this.stateManager.getStarredRepos(),o=S(t);return f(Y,"Error fetching starred repos:",o),s.length===0?f(Y,`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.`):f(Y,`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=lo(e);if(a.size>0){let _=e.filter(w=>a.has(w.repository_url.split("/").slice(-2).join("/"))).length;T(Y,`[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(Y,`[${i}] All ${e.length} items filtered before vetting`),{candidates:[],allVetFailed:!1,rateLimitHit:!1};let{candidates:u,allFailed:p,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(Y,`[STAR_FILTER] Filtered ${E} ${i} candidates below ${n} stars`),{candidates:g,allVetFailed:p,rateLimitHit:d}}async searchIssues(e={}){let t=this.stateManager.getState().config,s=e.languages||t.languages,o=e.labels||t.labels,n=e.maxResults||10,i=t.minStars??50,a=[],c=null,u=null,p=!1;this.rateLimitWarning=null;try{let L=await so(this.githubToken);if(L.remaining<5){let q=new Date(L.resetAt).toLocaleTimeString("en-US",{hour12:!1});this.rateLimitWarning=`GitHub search API quota low (${L.remaining}/${L.limit} remaining, resets at ${q}). Search may be slow.`,f(Y,this.rateLimitWarning)}}catch(L){if(ve(L)===401)throw L;f(Y,"Could not check rate limit:",S(L))}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)),m=new Set(this.stateManager.getState().activeIssues.map(L=>L.url)),G=new Set(t.excludeRepos),I=t.maxIssueAgeDays||90,N=new Date,M=o.map(L=>`label:"${L}"`).join(" "),O=s.some(L=>L.toLowerCase()==="any")?"":s.map(L=>`language:${L}`).join(" "),U=`is:issue is:open ${O} no:assignee`.replace(/ +/g," ").trim(),A=`is:issue is:open ${M} ${O} no:assignee`.replace(/ +/g," ").trim(),se=t.includeDocIssues??!0,Ee=new Set(t.aiPolicyBlocklist??lt.aiPolicyBlocklist??[]);Ee.size>0&&T(Y,`[AI_POLICY_FILTER] Filtering issues from ${Ee.size} blocklisted repo(s): ${[...Ee].join(", ")}`);let ie=L=>L.filter(q=>{if(m.has(q.html_url))return!1;let re=q.repository_url.split("/").slice(-2).join("/");if(G.has(re)||Ee.has(re)||P.has(re))return!1;let H=new Date(q.updated_at);return!(De(H,N)>I||!se&&js(q))}),pe=[...d,...E.filter(L=>!g.has(L))].slice(0,10),Ve=new Set(pe);if(pe.length>0){let L=Math.min(d.length,pe.length),q=pe.length-L;ge(Y,`Phase 0: Searching issues in ${pe.length} repos (${L} merged-PR, ${q} open-PR, no label filter)...`);let re=pe.slice(0,L);if(re.length>0){let B=n-a.length;if(B>0){let{candidates:Z,allBatchesFailed:Ie,rateLimitHit:tt}=await this.searchInRepos(re,U,B,"merged_pr",ie);a.push(...Z),Ie&&(c="All merged-PR repo batches failed"),tt&&(p=!0),ge(Y,`Found ${Z.length} candidates from merged-PR repos`)}}let H=pe.slice(L);if(H.length>0&&a.length<n){let B=n-a.length;if(B>0){let{candidates:Z,allBatchesFailed:Ie,rateLimitHit:tt}=await this.searchInRepos(H,U,B,"starred",ie);if(a.push(...Z),Ie){let We="All open-PR repo batches failed";c=c?`${c}; ${We}`:We}tt&&(p=!0),ge(Y,`Found ${Z.length} candidates from open-PR repos`)}}}if(a.length<n&&_.length>0){let L=_.filter(q=>!Ve.has(q));if(L.length>0){ge(Y,`Phase 1: Searching issues in ${L.length} starred repos...`);let q=n-a.length;if(q>0){let{candidates:re,allBatchesFailed:H,rateLimitHit:B}=await this.searchInRepos(L.slice(0,10),A,q,"starred",ie);a.push(...re),H&&(u="All starred repo batches failed"),B&&(p=!0),ge(Y,`Found ${re.length} candidates from starred repos`)}}}let Te=null;if(a.length<n){ge(Y,"Phase 2: General issue search...");let L=n-a.length;try{let q=await this.cachedSearch({q:A,sort:"created",order:"desc",per_page:L*3});ge(Y,`Found ${q.total_count} issues in general search, processing top ${q.items.length}...`);let re=new Set(a.map(Ie=>Ie.issue.repo)),{candidates:H,allVetFailed:B,rateLimitHit:Z}=await this.filterVetAndScore(q.items,ie,[Ve,w,re],L,i,"Phase 2");a.push(...H),B&&(Te=(Te?Te+"; ":"")+"all vetting failed"),Z&&(p=!0),ge(Y,`Found ${H.length} candidates from general search`)}catch(q){let re=S(q);Te=re,pt(q)&&(p=!0),f(Y,`Error in general issue search: ${re}`)}}let Ge=null;if(a.length<n){ge(Y,"Phase 3: Searching actively maintained repos...");let L=n-a.length,q=new Date;q.setDate(q.getDate()-30);let re=q.toISOString().split("T")[0],H=`is:issue is:open no:assignee ${O} stars:>=${i} pushed:>=${re} archived:false`.replace(/ +/g," ").trim();try{let B=await this.cachedSearch({q:H,sort:"updated",order:"desc",per_page:L*3});ge(Y,`Found ${B.total_count} issues in maintained-repo search, processing top ${B.items.length}...`);let Z=new Set(a.map(ur=>ur.issue.repo)),{candidates:Ie,allVetFailed:tt,rateLimitHit:We}=await this.filterVetAndScore(B.items,ie,[Ve,w,Z],L,i,"Phase 3");a.push(...Ie),tt&&(Ge="all vetting failed"),We&&(p=!0),ge(Y,`Found ${Ie.length} candidates from maintained-repo search`)}catch(B){let Z=S(B);Ge=Z,pt(B)&&(p=!0),f(Y,`Error in maintained-repo search: ${Z}`)}}if(a.length===0){let L=[c?`Phase 0 (merged-PR repos): ${c}`:null,u?`Phase 1 (starred repos): ${u}`:null,Te?`Phase 2 (general): ${Te}`:null,Ge?`Phase 3 (maintained repos): ${Ge}`:null].filter(Boolean),q=L.length>0?` ${L.join(". ")}.`:"";if(p)return this.rateLimitWarning=`Search returned no results due to GitHub API rate limits.${q} Try again after the rate limit resets.`,[];throw new X(`No issue candidates found across all search phases.${q} Try adjusting your search criteria (languages, labels) or check your network connection.`)}return p&&(this.rateLimitWarning=`Search results may be incomplete: GitHub API rate limits were hit during search. Found ${a.length} candidate${a.length===1?"":"s"} but some search phases failed. Try again after the rate limit resets for complete results.`),a.sort((L,q)=>{let re={merged_pr:0,starred:1,normal:2},H=re[L.searchPriority]-re[q.searchPriority];if(H!==0)return H;let B={approve:0,needs_review:1,skip:2},Z=B[L.recommendation]-B[q.recommendation];return Z!==0?Z:q.viabilityScore-L.viabilityScore}),Ns(a,2).slice(0,n)}async searchInRepos(e,t,s,o,n){let i=[],c=this.batchRepos(e,5),u=0,p=0;for(let E of c){if(i.length>=s)break;try{let _=E.map(m=>`repo:${m}`).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 m=n(P.items),G=s-i.length,{candidates:I}=await this.vetter.vetIssuesParallel(m.slice(0,G*2).map(N=>N.html_url),G,o);i.push(...I)}}catch(_){u++,pt(_)&&p++;let w=E.join(", ");f(Y,`Error searching issues in batch [${w}]:`,S(_))}}let d=u===c.length&&c.length>0,g=p>0;return d&&f(Y,`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 Zt(e)}saveSearchResults(e){let t=[...e].sort((a,c)=>c.viabilityScore-a.viabilityScore),s=Fe(),o=la.join(s,"found-issues.md"),n=new Date().toISOString(),i=`# Found Issues
45
+ `);let u={},p=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 G=~~_.retryCount;_.retryCount=G,w.request.retryCount=G;let{wantRetry:I,retryAfter:N=0}=await(async function(){if(/\bsecondary rate\b/i.test(d.message)){let M=Number(d.response.headers["retry-after"])||E.fallbackSecondaryRateRetryAfter;return{wantRetry:await p.trigger("secondary-limit",M,w,r,G),retryAfter:M}}if(d.response.headers!=null&&d.response.headers["x-ratelimit-remaining"]==="0"||(d.response.data?.errors??[]).some(M=>M.type==="RATE_LIMITED")){let M=new Date(~~d.response.headers["x-ratelimit-reset"]*1e3).getTime(),k=Math.max(Math.ceil((M-Date.now())/1e3)+1,0);return{wantRetry:await p.trigger("rate-limit",k,w,r,G),retryAfter:k}}return{}})();if(I)return _.retryCount++,N*E.retryAfterBaseValue}),r.hook.wrap("request",Qu.bind(null,c)),{}}var Ai,Ku,to,Zu,ki,Oi,Rt,tl,Gi=C(()=>{Ai=W(Ci(),1),Ku="0.0.0-development",to=()=>Promise.resolve();Zu=["/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"];ki=el(Zu),Oi=ki.test.bind(ki),Rt={},tl=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})};Ps.VERSION=Ku;Ps.triggersNotification=Oi});function As(r){return r.toLocaleTimeString("en-US",{hour12:!1})}function le(r){return ks&&$i===r||(ks=new sl({auth:r,throttle:{onRateLimit:(e,t,s,o)=>{let n=t,i=new Date(Date.now()+e*1e3);return o<2?(f(Cs,`Rate limit hit (retry ${o+1}/2, waiting ${e}s, resets at ${As(i)}) \u2014 ${n.method} ${n.url}`),!0):(f(Cs,`Rate limit exceeded, not retrying \u2014 ${n.method} ${n.url} (resets at ${As(i)})`),!1)},onSecondaryRateLimit:(e,t,s,o)=>{let n=t,i=new Date(Date.now()+e*1e3);return o<1?(f(Cs,`Secondary rate limit hit (retry ${o+1}/1, waiting ${e}s, resets at ${As(i)}) \u2014 ${n.method} ${n.url}`),!0):(f(Cs,`Secondary rate limit exceeded, not retrying \u2014 ${n.method} ${n.url} (resets at ${As(i)})`),!1)}}}),$i=r),ks}async function so(r){let e=le(r),{data:t}=await e.rateLimit.get(),s=t.resources.search;return{remaining:s.remaining,limit:s.limit,resetAt:new Date(s.reset*1e3).toISOString()}}var Cs,sl,ks,$i,Gt=C(()=>{"use strict";Pi();Gi();ue();Cs="github",sl=Si.plugin(Ps),ks=null,$i=null});async function Os(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 Ue(r,e=100,t=10){let s=[];for(let o=1;o<=t;o++){let{data:n}=await r(o);if(s.push(...n),n.length<e)break}return s}var Qt=C(()=>{"use strict"});function Xe(){return oo||(oo=new $s),oo}async function Yt(r,e,t){let s=r.getInflight(e);if(s)return T(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),p=u.headers?.etag;return p&&r.set(e,p,u.data),u.data}catch(u){if(ol(u)){let p=r.get(e);if(p)return T(at,`304 cache hit for ${e}`),p.body}throw u}})(),i=r.setInflight(e,n);try{return await n}finally{i()}}async function Ds(r,e,t,s){let o=r.getIfFresh(e,t);if(o)return T(at,`Time-based cache hit for ${e}`),o;let n=await s();return r.set(e,"",n),n}function ol(r){return ve(r)===304}var ke,Gs,Di,at,rl,$s,oo,$t=C(()=>{"use strict";ke=W(require("fs"),1),Gs=W(require("path"),1),Di=W(require("crypto"),1);we();ue();ce();at="http-cache",rl=1440*60*1e3,$s=class{cacheDir;inflightRequests=new Map;constructor(e){this.cacheDir=e??fs()}keyFor(e){return Di.createHash("sha256").update(e).digest("hex")}pathFor(e){return Gs.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?(T(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}),T(at,`Cached response for ${e}`)}catch(n){T(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=rl){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=Gs.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&&T(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(Gs.join(this.cacheDir,t));T(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(Fi.some(o=>o.test(s)))return"auth_gate";if(Ii.some(o=>o.test(s)))return"fork_limitation";if(xi.some(o=>o.test(s)))return"infrastructure";if(e){let o=e.toLowerCase();if(Fi.some(n=>n.test(o)))return"auth_gate";if(Ii.some(n=>n.test(o)))return"fork_limitation";if(xi.some(n=>n.test(o)))return"infrastructure"}return"actionable"}function Is(r,e){return r.map(t=>{let s=e?.get(t);return{name:t,category:no(t,void 0,s),conclusion:s}})}function Ui(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 Mi(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 Li(r,e,t){let{hasFailingChecks:s,hasPendingChecks:o,hasSuccessfulChecks:n,failingCheckNames:i,failingCheckConclusions:a}=r,{effectiveCombinedState:c,hasStatuses:u,failingStatusNames:p}=e,d=[...i,...p];return s||c==="failure"||c==="error"?{status:"failing",failingCheckNames:d,failingCheckConclusions:a}:o||c==="pending"?{status:"pending",failingCheckNames:[],failingCheckConclusions:new Map}:n||c==="success"?{status:"passing",failingCheckNames:[],failingCheckConclusions:new Map}:!u&&t===0?{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}:{status:"unknown",failingCheckNames:[],failingCheckConclusions:new Map}}var Ii,Fi,xi,io=C(()=>{"use strict";Ii=[/vercel/i,/netlify/i,/\bpreview\s*deploy/i,/\bdeploy\s*preview/i,/storybook/i,/chromatic/i,/percy/i,/cloudflare pages/i],Fi=[/authoriz/i,/approval/i,/\bcla\b/i,/license\/cla/i],xi=[/\binstall\s*(os\s*)?dep(endenc|s\b)/i,/\bsetup\s+fail(ed|ure)?\b/i,/\bservice\s*unavailable/i,/\binfrastructure/i]});function Dt(r){return r.includes("[bot]")||nl.has(r.toLowerCase())}function Xt(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 nl,Fs=C(()=>{"use strict";nl=new Set(["allcontributors","changeset-bot","claassistant","codecov-commenter","greenkeeper","imgbot","netlify","renovate","snyk-bot","sonarcloud","stale","vercel"])});function ji(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 Ni(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 il(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 al(r,e){return e.find(t=>t.pull_request_review_id===r&&t.body?.trim())?.body?.trim()}function Hi(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 p=c.user?.login||"unknown";if(!u&&c.state==="COMMENTED"&&c.id!=null&&il(c.id,t))continue;let d=u||(c.id!=null?al(c.id,t):void 0)||(c.state==="CHANGES_REQUESTED"?"(requested changes via inline review comments)":"(posted inline review comments)");o.push({author:p,body:d,createdAt:c.submitted_at,isUser:p.toLowerCase()===n})}o.sort((c,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"||Dt(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&&Xt(a.body)&&(a=void 0),{hasUnrespondedComment:!!a,lastMaintainerComment:a}}var qi=C(()=>{"use strict";Fs()});function Bi(r){return cl.test(r.toLowerCase())}function Vi(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=>!Bi(u)),c=n+a.length;return{hasIncompleteChecklist:a.length>0,checklistStats:{checked:n,total:c}}}var cl,ao=C(()=>{"use strict";cl=/\(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 Wi(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 zi=C(()=>{"use strict"});function xs(r){if(r.status==="needs_addressing"&&r.actionReason){let e=ul[r.actionReason];if(e)return{displayLabel:e.label,displayDescription:e.description(r)}}if(r.status==="waiting_on_maintainer"&&r.waitReason){let e=ll[r.waitReason];if(e)return{displayLabel:e.label,displayDescription:e.description(r)}}return f("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 ul,ll,co=C(()=>{"use strict";ue();ul={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"}},ll={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 wt(){return{repos:new Map,monthlyCounts:{},monthlyOpenedCounts:{},dailyActivityCounts:{}}}function dl(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 Ji(r,e,t,s,o,n){if(!e)return wt();let i=Xe(),a=n?`:stars${n.minStars}`:"",c=`pr-counts:v3:${s}:${e}${a}`,u=i.getIfFresh(c,pl);if(u&&dl(u))return T(_e,`Using cached ${s} PR counts for @${e}`),{repos:new Map(u.reposEntries),monthlyCounts:u.monthlyCounts,monthlyOpenedCounts:u.monthlyOpenedCounts,dailyActivityCounts:u.dailyActivityCounts};T(_e,`Fetching ${s} PR counts for @${e}...`);let p=new Map,d={},g={},E={},_=1,w=0,P;for(;;){let{data:m}=await r.search.issuesAndPullRequests({q:`is:pr ${t} author:${e} -user:${e}`,sort:"updated",order:"desc",per_page:100,page:_});P=m.total_count;for(let G of m.items){let I=ht(G.html_url);if(!I){f(_e,`Skipping ${s} PR with unparseable URL: ${G.html_url}`);continue}let{owner:N}=I,M=`${N}/${I.repo}`;if(He(N,e)||n&&Ke(n.knownStarCounts.get(M),n.minStars))continue;let k=o(p,M,G);if(k){let O=k.slice(0,7);d[O]=(d[O]||0)+1;let U=k.slice(0,10);U.length===10&&(E[U]=(E[U]||0)+1)}if(G.created_at){let O=G.created_at.slice(0,7);g[O]=(g[O]||0)+1;let U=G.created_at.slice(0,10);U.length===10&&(E[U]=(E[U]||0)+1)}}if(w+=m.items.length,w>=m.total_count||w>=1e3||m.items.length===0||_>=Us)break;_++}return w<P&&_>=Us&&f(_e,`Pagination capped at ${Us} pages: fetched ${w} of ${P} ${s} PRs. Stats may be incomplete for prolific contributors.`),T(_e,`Found ${w} ${s} PRs across ${p.size} repos`),i.set(c,"",{reposEntries:Array.from(p.entries()),monthlyCounts:d,monthlyOpenedCounts:g,dailyActivityCounts:E}),{repos:p,monthlyCounts:d,monthlyOpenedCounts:g,dailyActivityCounts:E}}function Ki(r,e,t){return Ji(r,e,"is:merged","merged",(s,o,n)=>{n.pull_request?.merged_at||f(_e,`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 Qi(r,e,t){return Ji(r,e,"is:closed is:unmerged","closed",(s,o,n)=>(s.set(o,(s.get(o)||0)+1),n.closed_at||""),t)}async function Yi(r,e,t,s,o,n){if(!e.githubUsername)return f(_e,`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(_e,`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 p of c.items){let d=me(p.html_url);if(!d){f(_e,`Could not parse GitHub URL from API response: ${p.html_url}`);continue}let g=`${d.owner}/${d.repo}`;He(d.owner,e.githubUsername)||u.push(n(p,{owner:d.owner,repo:g,number:d.number}))}return T(_e,`Found ${u.length} recently ${s} PRs`),u}async function Xi(r,e,t=7){return Yi(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 Zi(r,e,t=7){return Yi(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||f(_e,`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 ea(r,e,t){if(!e.githubUsername)return f(_e,"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(_e,`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 p=me(u.html_url);if(!p){f(_e,`Skipping merged PR with unparseable URL: ${u.html_url}`);continue}if(He(p.owner,e.githubUsername))continue;let d=u.pull_request?.merged_at||u.closed_at||"";if(!d){f(_e,`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>=Us)break;i++}return T(_e,`Fetched ${n.length} merged PRs${t?" (incremental)":" (initial)"}`),n}var _e,pl,Us,Ms=C(()=>{"use strict";we();pt();ue();$t();_e="github-stats",pl=1440*60*1e3,Us=3});var Ls,gl,Et,ta=C(()=>{"use strict";Gt();Vt();we();ro();ce();Qt();ue();$t();io();qi();ao();zi();co();Ms();co();io();ao();Ls="pr-monitor",gl=rt,Et=class r{octokit;stateManager;constructor(e){this.octokit=le(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.");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=[],p=t.filter(d=>{if(!d.pull_request)return!1;let g=ht(d.html_url);return g?!He(g.owner,e.githubUsername):(f("pr-monitor",`Skipping PR with unparseable URL: ${d.html_url}`),!1)});return T("pr-monitor",`Filtered to ${p.length} PRs after excluding own repos`),await Ir("pr-monitor",`Fetch details for ${p.length} PRs`,async()=>{await Os(p,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=S(g);f("pr-monitor",`Error fetching ${d.html_url}: ${E}`),u.push({prUrl:d.html_url,error:E})}},gl)}),c.sort((d,g)=>d.status===g.status?0:d.status==="needs_addressing"?-1:1),{prs:c,failures:u}}async fetchPRDetails(e){let t=me(e);if(!t||t.type!=="pull")throw new X(`Invalid PR URL format: ${e}`);let{owner:s,repo:o,number:n}=t,i=this.stateManager.getState().config,[a,c,u,p]=await Promise.all([this.octokit.pulls.get({owner:s,repo:o,pull_number:n}),Ue(H=>this.octokit.issues.listComments({owner:s,repo:o,issue_number:n,per_page:100,page:H})),this.octokit.pulls.listReviews({owner:s,repo:o,pull_number:n}),Ue(H=>this.octokit.pulls.listReviewComments({owner:s,repo:o,pull_number:n,per_page:100,page:H})).catch(H=>{let B=ve(H);if(B===429)throw H;if(B===403){let Z=S(H).toLowerCase();if(Z.includes("rate limit")||Z.includes("abuse detection"))throw H;return f("pr-monitor",`403 fetching review comments for ${s}/${o}#${n}: ${Z}`),[]}return B===404?T("pr-monitor",`Review comments 404 for ${s}/${o}#${n} (likely no inline comments)`):f("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=ji(g),_=this.hasMergeConflict(d.mergeable,d.mergeable_state),{hasUnrespondedComment:w,lastMaintainerComment:P}=Hi(c,g,p,i.githubUsername),m=this.getCIStatus(s,o,d.head.sha),I=w||E==="changes_requested"?this.octokit.repos.getCommit({owner:s,repo:o,ref:d.head.sha}).then(H=>({date:H.data.commit.author?.date,author:H.data.author?.login})).catch(H=>{let B=ve(H);if(B===429)throw H;if(B===403){let Z=S(H).toLowerCase();if(Z.includes("rate limit")||Z.includes("abuse detection"))throw H;f("pr-monitor",`403 fetching commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${S(H)}`);return}f("pr-monitor",`Failed to fetch commit date for ${s}/${o}@${d.head.sha.slice(0,7)}: ${S(H)}`)}):Promise.resolve(void 0),[{status:N,failingCheckNames:M,failingCheckConclusions:k},O]=await Promise.all([m,I]),U=O?.date,A=O?.author,{hasIncompleteChecklist:se,checklistStats:Ee}=Vi(d.body||""),ie=Wi(P?.body,E),pe=De(new Date(d.updated_at),new Date),Ve=Ni(g),Te=Is(M,k),Ge=N==="failing"&&Te.some(H=>H.category==="actionable"),{status:Pe,actionReason:L,waitReason:q,stalenessTier:re}=this.determineStatus({ciStatus:N,hasMergeConflict:_,hasUnrespondedComment:w,hasIncompleteChecklist:se,reviewDecision:E,daysSinceActivity:pe,dormantThreshold:i.dormantThresholdDays,approachingThreshold:i.approachingDormantDays,latestCommitDate:U,latestCommitAuthor:A,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:q,stalenessTier:re,createdAt:d.created_at,updatedAt:d.updated_at,daysSinceActivity:pe,ciStatus:N,failingCheckNames:M,classifiedChecks:Te,hasMergeConflict:_,reviewDecision:E,hasUnrespondedComment:w,lastMaintainerComment:P,latestCommitDate:U,hasIncompleteChecklist:se,checklistStats:Ee,maintainerActionHints:ie})}buildFetchedPR(e){let t={...e,displayLabel:"",displayDescription:""},{displayLabel:s,displayDescription:o}=xs(t);return t.displayLabel=s,t.displayDescription=o,t}determineStatus(e){let{ciStatus:t,hasMergeConflict:s,hasUnrespondedComment:o,hasIncompleteChecklist:n,reviewDecision:i,daysSinceActivity:a,dormantThreshold:c,approachingThreshold:u,latestCommitDate:p,latestCommitAuthor:d,contributorUsername:g,lastMaintainerCommentDate:E,latestChangesRequestedDate:_,hasActionableCIFailure:w=!0}=e,P="active";a>=c?P="dormant":a>=u&&(P="approaching_dormant");let m=p&&this.isContributorCommit(d,g)?p:void 0;return o?m&&E&&this.isCommitAfterComment(m,E)?_&&m<_?{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"&&_?!m||m<_?{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 _=S(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)`):f("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()],p=Ui(u),d=Mi(i);return Li(p,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}):(f("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 Ki(this.octokit,t.githubUsername,e)}async fetchUserClosedPRCounts(e){let t=this.stateManager.getState().config;return Qi(this.octokit,t.githubUsername,e)}async fetchRepoStarCounts(e){if(e.length===0)return new Map;T(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 p=>{let d=p.split("/");if(d.length!==2||!d[0]||!d[1])throw new X(`Malformed repo identifier: "${p}"`);let[g,E]=d,_=`/repos/${g}/${E}`,w=await Yt(s,_,P=>this.octokit.repos.get({owner:g,repo:E,headers:P}));return{repo:p,stars:w.stargazers_count}})),u=0;for(let p=0;p<c.length;p++){let d=c[p];d.status==="fulfilled"?t.set(d.value.repo,d.value.stars):(u++,f(Ls,`Failed to fetch stars for ${a[p]}: ${S(d.reason)}`))}if(u===a.length&&a.length>0){let p=o.length-i-n;p>0&&f(Ls,`Entire chunk failed, aborting remaining ${p} repos`);break}}return T(Ls,`Fetched star counts for ${t.size}/${e.length} repos`),t}async fetchRecentlyClosedPRs(e=7){let t=this.stateManager.getState().config;return Xi(this.octokit,t,e)}async fetchRecentlyMergedPRs(e=7){let t=this.stateManager.getState().config;return Zi(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 ra(r){return!r.labels||!Array.isArray(r.labels)?!1:r.labels.map(s=>(typeof s=="string"?s:s.name||"").toLowerCase()).filter(s=>sa.has(s)).length>=5}function oa(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(ra(s)){e.add(o);continue}s.title&&oa(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,sa,po=C(()=>{"use strict";uo=new Set(["documentation","docs","typo","spelling"]);sa=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 Zt(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";we()});function ia(){let r=Date.now();for(let[e,t]of Ze.entries())r-t.fetchedAt>aa&&Ze.delete(e);if(Ze.size>na){let t=Array.from(Ze.entries()).sort((s,o)=>s[1].fetchedAt-o[1].fetchedAt).slice(0,Ze.size-na);for(let[s]of t)Ze.delete(s)}}var ct,ml,Ze,aa,hl,na,qs,ca=C(()=>{"use strict";Qt();we();ce();ue();$t();Hs();ct="issue-vetting",ml=rt,Ze=new Map,aa=3600*1e3,hl=14400*1e3,na=100;qs=class{octokit;stateManager;constructor(e,t){this.octokit=e,this.stateManager=t}async vetIssue(e){let t=me(e);if(!t||t.type!=="issues")throw new X(`Invalid issue URL: ${e}`);let{owner:s,repo:o,number:n}=t,i=`${s}/${o}`,{data:a}=await this.octokit.issues.get({owner:s,repo:o,issue_number:n}),[c,u,p,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=p.checkFailed?!0:p.isActive,m={passedAllChecks:E&&_&&P&&w,checks:{noExistingPR:E,notClaimed:_,projectActive:P,clearRequirements:w,contributionGuidelinesFound:!!d},contributionGuidelines:d,notes:[]};E||m.notes.push("Existing PR found for this issue"),_||m.notes.push("Issue appears to be claimed by someone"),c.inconclusive&&m.notes.push(`Could not verify absence of existing PRs: ${c.reason||"API error"}`),u.inconclusive&&m.notes.push(`Could not verify claim status: ${u.reason||"API error"}`),p.checkFailed?m.notes.push(`Could not verify project activity: ${p.failureReason||"API error"}`):p.isActive||m.notes.push("Project may be inactive"),w||m.notes.push("Issue requirements are unclear"),d||m.notes.push("No CONTRIBUTING.md found");let G={id:a.id,url:e,repo:i,number:n,title:a.title,status:"candidate",labels:a.labels.map(Pe=>typeof Pe=="string"?Pe:Pe.name||""),createdAt:a.created_at,updatedAt:a.updated_at,vetted:!0,vettingResult:m},I=[],N=[];E||I.push("Has existing PR"),_||I.push("Already claimed"),!p.isActive&&!p.checkFailed&&I.push("Inactive project"),w||I.push("Unclear requirements"),E&&N.push("No existing PR"),_&&N.push("Not claimed"),p.isActive&&!p.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),O=k&&k.mergedPRCount>0?k.mergedPRCount:g;O>0?N.push(`Trusted project (${O} PR${O>1?"s":""} merged)`):M.trustedProjects.includes(i)&&N.push("Trusted project (previous PR merged)"),k&&(k.closedWithoutMergeCount>0&&O===0?I.push("User has rejected PR(s) in this repo with no successful merges"):k.closedWithoutMergeCount>0&&O>0&&m.notes.push(`Mixed history: ${O} merged, ${k.closedWithoutMergeCount} closed without merge`));let U=i.split("/")[0],A=!1;U&&i.includes("/")&&(A=Object.values(this.stateManager.getState().repoScores).some(Pe=>Pe.repo&&Pe.mergedPRCount>0&&Pe.repo.startsWith(U+"/")&&Pe.repo!==i)),A&&N.push(`Org affinity (merged PRs in other ${U} repos)`);let se;m.passedAllChecks?se="approve":I.length>2?se="skip":se="needs_review";let Ee=p.checkFailed||c.inconclusive||u.inconclusive;se==="approve"&&Ee&&(se="needs_review",m.notes.push("Recommendation downgraded: one or more checks were inconclusive"));let ie=go(p.stargazersCount??0,p.forksCount??0);p.checkFailed&&ie===0&&m.notes.push("Repo quality bonus unavailable: could not fetch star/fork counts due to API error");let pe=this.getRepoScore(i),Ve=Zt({repoScore:pe,hasExistingPR:!E,isClaimed:!_,clearRequirements:w,hasContributionGuidelines:!!d,issueUpdatedAt:a.updated_at,closedWithoutMergeCount:k?.closedWithoutMergeCount??0,mergedPRCount:O,orgHasMergedPRs:A,repoQualityBonus:ie}),Te=this.stateManager.getStarredRepos(),Ge="normal";return O>0?Ge="merged_pr":Te.includes(i)&&(Ge="starred"),{issue:G,vettingResult:m,projectHealth:p,recommendation:se,reasonsToSkip:I,reasonsToApprove:N,viabilityScore:Ve,searchPriority:Ge}}async vetIssuesParallel(e,t,s){let o=[],n=new Map,i=0,a=0,c=0;for(let p of e){if(o.length>=t)break;c++;let d=this.vetIssue(p).then(g=>{o.length<t&&(s&&(g.searchPriority=s),o.push(g))}).catch(g=>{i++,dt(g)&&a++,f(ct,`Error vetting issue ${p}:`,S(g))}).finally(()=>n.delete(p));n.set(p,d),n.size>=ml&&await Promise.race(n.values())}await Promise.allSettled(n.values());let u=i===c&&c>0;return u&&f(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 Ue(a=>this.octokit.issues.listEventsForTimeline({owner:e,repo:t,issue_number:s,per_page:100,page:a}))).filter(a=>{let c=a;return c.event==="cross-referenced"&&c.source?.issue?.pull_request});return{passed:o.total_count===0&&i.length===0}}catch(o){let n=S(o);return f(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 f(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(p=>u.includes(p)))return{passed:!1}}return{passed:!0}}catch(n){let i=S(n);return f(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 Ds(s,o,hl,async()=>{let n=`/repos/${e}/${t}`,i=await Yt(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,p=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 E=S(g);f(ct,`Failed to check CI status for ${e}/${t}: ${E}. Defaulting to unknown.`)}return{repo:`${e}/${t}`,lastCommitAt:u,daysSinceLastCommit:p,openIssuesCount:i.open_issues_count,avgIssueResponseDays:0,ciStatus:d,isActive:p<30,stargazersCount:i.stargazers_count,forksCount:i.forks_count}})}catch(n){let i=S(n);return f(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<aa)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()}),ia(),u}if(c.status==="rejected"){let u=c.reason instanceof Error?c.reason.message:String(c.reason);!u.includes("404")&&!u.includes("Not Found")&&f(ct,`Unexpected error fetching ${n[a]} from ${e}/${t}: ${u}`)}}Ze.set(s,{guidelines:void 0,fetchedAt:Date.now()}),ia()}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 ua,la,Y,fl,Tt,pa=C(()=>{"use strict";ua=W(require("fs"),1),la=W(require("path"),1);Gt();Vt();we();pt();ce();ue();$t();po();ca();Hs();po();Hs();Y="issue-discovery",fl=900*1e3,Tt=class{octokit;stateManager;githubToken;vetter;rateLimitWarning=null;constructor(e){this.githubToken=e,this.octokit=le(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 Ds(Xe(),t,fl,async()=>{let{data:s}=await this.octokit.search.issuesAndPullRequests(e);return s})}async fetchStarredRepos(){ge(Y,"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){ge(Y,"Reached pagination limit for starred repos (500)");break}}return ge(Y,`Fetched ${e.length} starred repositories`),this.stateManager.setStarredRepos(e),e}catch(t){let s=this.stateManager.getStarredRepos(),o=S(t);return f(Y,"Error fetching starred repos:",o),s.length===0?f(Y,`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.`):f(Y,`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=lo(e);if(a.size>0){let _=e.filter(w=>a.has(w.repository_url.split("/").slice(-2).join("/"))).length;T(Y,`[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(Y,`[${i}] All ${e.length} items filtered before vetting`),{candidates:[],allVetFailed:!1,rateLimitHit:!1};let{candidates:u,allFailed:p,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(Y,`[STAR_FILTER] Filtered ${E} ${i} candidates below ${n} stars`),{candidates:g,allVetFailed:p,rateLimitHit:d}}async searchIssues(e={}){let t=this.stateManager.getState().config,s=e.languages||t.languages,o=e.labels||t.labels,n=e.maxResults||10,i=t.minStars??50,a=[],c=null,u=null,p=!1;this.rateLimitWarning=null;try{let L=await so(this.githubToken);if(L.remaining<5){let q=new Date(L.resetAt).toLocaleTimeString("en-US",{hour12:!1});this.rateLimitWarning=`GitHub search API quota low (${L.remaining}/${L.limit} remaining, resets at ${q}). Search may be slow.`,f(Y,this.rateLimitWarning)}}catch(L){if(ve(L)===401)throw L;f(Y,"Could not check rate limit:",S(L))}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)),m=new Set(this.stateManager.getState().activeIssues.map(L=>L.url)),G=new Set(t.excludeRepos),I=t.maxIssueAgeDays||90,N=new Date,M=o.map(L=>`label:"${L}"`).join(" "),O=s.some(L=>L.toLowerCase()==="any")?"":s.map(L=>`language:${L}`).join(" "),U=`is:issue is:open ${O} no:assignee`.replace(/ +/g," ").trim(),A=`is:issue is:open ${M} ${O} no:assignee`.replace(/ +/g," ").trim(),se=t.includeDocIssues??!0,Ee=new Set(t.aiPolicyBlocklist??lt.aiPolicyBlocklist??[]);Ee.size>0&&T(Y,`[AI_POLICY_FILTER] Filtering issues from ${Ee.size} blocklisted repo(s): ${[...Ee].join(", ")}`);let ie=L=>L.filter(q=>{if(m.has(q.html_url))return!1;let re=q.repository_url.split("/").slice(-2).join("/");if(G.has(re)||Ee.has(re)||P.has(re))return!1;let H=new Date(q.updated_at);return!(De(H,N)>I||!se&&js(q))}),pe=[...d,...E.filter(L=>!g.has(L))].slice(0,10),Ve=new Set(pe);if(pe.length>0){let L=Math.min(d.length,pe.length),q=pe.length-L;ge(Y,`Phase 0: Searching issues in ${pe.length} repos (${L} merged-PR, ${q} open-PR, no label filter)...`);let re=pe.slice(0,L);if(re.length>0){let B=n-a.length;if(B>0){let{candidates:Z,allBatchesFailed:Ie,rateLimitHit:st}=await this.searchInRepos(re,U,B,"merged_pr",ie);a.push(...Z),Ie&&(c="All merged-PR repo batches failed"),st&&(p=!0),ge(Y,`Found ${Z.length} candidates from merged-PR repos`)}}let H=pe.slice(L);if(H.length>0&&a.length<n){let B=n-a.length;if(B>0){let{candidates:Z,allBatchesFailed:Ie,rateLimitHit:st}=await this.searchInRepos(H,U,B,"starred",ie);if(a.push(...Z),Ie){let We="All open-PR repo batches failed";c=c?`${c}; ${We}`:We}st&&(p=!0),ge(Y,`Found ${Z.length} candidates from open-PR repos`)}}}if(a.length<n&&_.length>0){let L=_.filter(q=>!Ve.has(q));if(L.length>0){ge(Y,`Phase 1: Searching issues in ${L.length} starred repos...`);let q=n-a.length;if(q>0){let{candidates:re,allBatchesFailed:H,rateLimitHit:B}=await this.searchInRepos(L.slice(0,10),A,q,"starred",ie);a.push(...re),H&&(u="All starred repo batches failed"),B&&(p=!0),ge(Y,`Found ${re.length} candidates from starred repos`)}}}let Te=null;if(a.length<n){ge(Y,"Phase 2: General issue search...");let L=n-a.length;try{let q=await this.cachedSearch({q:A,sort:"created",order:"desc",per_page:L*3});ge(Y,`Found ${q.total_count} issues in general search, processing top ${q.items.length}...`);let re=new Set(a.map(Ie=>Ie.issue.repo)),{candidates:H,allVetFailed:B,rateLimitHit:Z}=await this.filterVetAndScore(q.items,ie,[Ve,w,re],L,i,"Phase 2");a.push(...H),B&&(Te=(Te?Te+"; ":"")+"all vetting failed"),Z&&(p=!0),ge(Y,`Found ${H.length} candidates from general search`)}catch(q){let re=S(q);Te=re,dt(q)&&(p=!0),f(Y,`Error in general issue search: ${re}`)}}let Ge=null;if(a.length<n){ge(Y,"Phase 3: Searching actively maintained repos...");let L=n-a.length,q=new Date;q.setDate(q.getDate()-30);let re=q.toISOString().split("T")[0],H=`is:issue is:open no:assignee ${O} stars:>=${i} pushed:>=${re} archived:false`.replace(/ +/g," ").trim();try{let B=await this.cachedSearch({q:H,sort:"updated",order:"desc",per_page:L*3});ge(Y,`Found ${B.total_count} issues in maintained-repo search, processing top ${B.items.length}...`);let Z=new Set(a.map(ur=>ur.issue.repo)),{candidates:Ie,allVetFailed:st,rateLimitHit:We}=await this.filterVetAndScore(B.items,ie,[Ve,w,Z],L,i,"Phase 3");a.push(...Ie),st&&(Ge="all vetting failed"),We&&(p=!0),ge(Y,`Found ${Ie.length} candidates from maintained-repo search`)}catch(B){let Z=S(B);Ge=Z,dt(B)&&(p=!0),f(Y,`Error in maintained-repo search: ${Z}`)}}if(a.length===0){let L=[c?`Phase 0 (merged-PR repos): ${c}`:null,u?`Phase 1 (starred repos): ${u}`:null,Te?`Phase 2 (general): ${Te}`:null,Ge?`Phase 3 (maintained repos): ${Ge}`:null].filter(Boolean),q=L.length>0?` ${L.join(". ")}.`:"";if(p)return this.rateLimitWarning=`Search returned no results due to GitHub API rate limits.${q} Try again after the rate limit resets.`,[];throw new X(`No issue candidates found across all search phases.${q} Try adjusting your search criteria (languages, labels) or check your network connection.`)}return p&&(this.rateLimitWarning=`Search results may be incomplete: GitHub API rate limits were hit during search. Found ${a.length} candidate${a.length===1?"":"s"} but some search phases failed. Try again after the rate limit resets for complete results.`),a.sort((L,q)=>{let re={merged_pr:0,starred:1,normal:2},H=re[L.searchPriority]-re[q.searchPriority];if(H!==0)return H;let B={approve:0,needs_review:1,skip:2},Z=B[L.recommendation]-B[q.recommendation];return Z!==0?Z:q.viabilityScore-L.viabilityScore}),Ns(a,2).slice(0,n)}async searchInRepos(e,t,s,o,n){let i=[],c=this.batchRepos(e,5),u=0,p=0;for(let E of c){if(i.length>=s)break;try{let _=E.map(m=>`repo:${m}`).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 m=n(P.items),G=s-i.length,{candidates:I}=await this.vetter.vetIssuesParallel(m.slice(0,G*2).map(N=>N.html_url),G,o);i.push(...I)}}catch(_){u++,dt(_)&&p++;let w=E.join(", ");f(Y,`Error searching issues in batch [${w}]:`,S(_))}}let d=u===c.length&&c.length>0,g=p>0;return d&&f(Y,`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 Zt(e)}saveSearchResults(e){let t=[...e].sort((a,c)=>c.viabilityScore-a.viabilityScore),s=Fe(),o=la.join(s,"found-issues.md"),n=new Date().toISOString(),i=`# Found Issues
47
47
 
48
48
  `;i+=`> Generated at: ${n}
49
49
 
@@ -85,20 +85,20 @@ ${s.notes.length>0?`
85
85
  **Notes:**
86
86
  ${s.notes.map(u=>`- ${u}`).join(`
87
87
  `)}`:""}
88
- `}}});var Ze,bl,da,Tt,ga=C(()=>{"use strict";Gt();Fs();Qt();Vt();we();ro();ce();ue();Ze="issue-conversation",bl=st,da=new Set(["OWNER","MEMBER","COLLABORATOR"]),Tt=class{octokit;stateManager;constructor(e){this.octokit=le(e),this.stateManager=x()}async fetchCommentedIssues(e=30){let t=this.stateManager.getState().config;if(!t.githubUsername)throw new Ke("No GitHub username configured. Run setup first.");let s=t.githubUsername,o=new Date;o.setDate(o.getDate()-e);let n=o.toISOString().split("T")[0];T(Ze,`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&&f(Ze,`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())),p=[];for(let _ of i.items){if(_.pull_request)continue;let w=mt(_.html_url);if(!w){f(Ze,`Skipping issue with unparseable URL: ${_.html_url}`);continue}let{owner:P,repo:m}=w,G=`${P}/${m}`;He(P,s)||_.user?.login?.toLowerCase()!==s.toLowerCase()&&(t.excludeRepos.includes(G)||t.excludeOrgs?.some(I=>P.toLowerCase()===I.toLowerCase())||u.has(G.toLowerCase())||c.has(`${G}#${_.number}`)||p.push({item:_,repoFullName:G}))}T(Ze,`Found ${p.length} commented issues to check`);let d=[],g=[];await Os(p,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 m=S(P);g.push({issueUrl:_.html_url,error:m}),f(Ze,`Error analyzing issue ${_.html_url}: ${m}`)}},bl),g.length>0&&f(Ze,`${g.length}/${p.length} issue analysis call(s) failed`),g.length===p.length&&p.length>0&&f(Ze,`All ${p.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(Ze,`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}=kt(t),i=await Ue(m=>this.octokit.issues.listComments({owner:o,repo:n,issue_number:e.number,per_page:100,page:m})),a=[];for(let m of i){if(!m.user?.login)continue;let G=m.user.login;a.push({author:G,body:m.body||"",createdAt:m.created_at,isUser:G.toLowerCase()===s.toLowerCase(),authorAssociation:String(m.author_association??"")})}a.sort((m,G)=>new Date(m.createdAt).getTime()-new Date(G.createdAt).getTime());let c;for(let m of a)m.isUser&&(c=m);if(!c)return f(Ze,`No user comment found for ${e.html_url} despite commenter: search match`),null;let u=new Date(c.createdAt),p=`@${s.toLowerCase()}`;function d(m){return da.has(m.authorAssociation)||m.body.toLowerCase().includes(p)}let g;for(let m of a){if(m.isUser||Dt(m.author))continue;if(new Date(m.createdAt)>u){if(Xt(m.body)||!d(m))continue;g={author:m.author,body:m.body.slice(0,200)+(m.body.length>200?"...":""),createdAt:m.createdAt,authorAssociation:m.authorAssociation}}}let E=(e.labels||[]).map(m=>m.name||"").filter(Boolean),_={repo:t,number:e.number,title:e.title,url:e.html_url,userLastCommentedAt:c.createdAt,labels:E,daysSinceUserComment:De(u,new Date)};if(g)return{..._,status:"new_response",lastResponseAuthor:g.author,lastResponseBody:g.body,lastResponseAt:g.createdAt,isFromMaintainer:da.has(g.authorAssociation)};let P=[...a].reverse().find(m=>Dt(m.author)?!1:m.isUser?!0:d(m))?.isUser?"acknowledged":"waiting";return{..._,status:P}}}});function ha(r,e){let t=new Map;for(let s of r){if(!s.repo){f(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 et(r){return{number:r.number,url:r.url,title:r.title,repo:r.repo,daysSinceActivity:r.daysSinceActivity,status:r.status}}function es(r){let e=ha(r,"GROUP_BY_REPO"),t=[];for(let[s,o]of e)t.push({repo:s,prs:o});return t}function ts(r){let e=ha(r,"COMPUTE_SIGNALS"),t=new Map;for(let[s,o]of e){let n=o.some(a=>a.lastMaintainerComment&&!ma.has(a.stalenessTier)),i=o.some(a=>!ma.has(a.stalenessTier));t.set(s,{isResponsive:n,hasActiveMaintainers:i})}return t}function ss(r,e,t){let s=r.length,o=r.filter(p=>p.status==="needs_addressing"&&p.actionReason&&yl.has(p.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 p=[];n||p.push(`at PR limit (${s}/${e}${u})`),i||p.push(`${o} critical issue${o===1?"":"s"} need attention`),c=`No capacity: ${p.join(", ")}`}return{hasCapacity:a,activePRCount:s,maxActivePRs:e,shelvedPRCount:t,criticalIssueCount:o,reason:c}}function rs(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:f("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 os(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 ns(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 is(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=bs(a.lastResponseAt);s.push(` \u2514\u2500 @${a.lastResponseAuthor}: "${a.lastResponseBody.slice(0,80)}${a.lastResponseBody.length>80?"...":""}"${c?` (${c})`:""}`)}s.push("")}let o=e.hasCapacity?"\u2705":"\u26A0\uFE0F",n=e.hasCapacity?"Ready for new work":"Focus on existing PRs",i=e.shelvedPRCount>0?` + ${e.shelvedPRCount} shelved`:"";return s.push(`**Capacity:** ${o} ${n} (${e.activePRCount}/${e.maxActivePRs} PRs${i})`),s.join(`
88
+ `}}});var et,bl,da,vt,ga=C(()=>{"use strict";Gt();Fs();Qt();Vt();we();ro();ce();ue();et="issue-conversation",bl=rt,da=new Set(["OWNER","MEMBER","COLLABORATOR"]),vt=class{octokit;stateManager;constructor(e){this.octokit=le(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];T(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&&f(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())),p=[];for(let _ of i.items){if(_.pull_request)continue;let w=ht(_.html_url);if(!w){f(et,`Skipping issue with unparseable URL: ${_.html_url}`);continue}let{owner:P,repo:m}=w,G=`${P}/${m}`;He(P,s)||_.user?.login?.toLowerCase()!==s.toLowerCase()&&(t.excludeRepos.includes(G)||t.excludeOrgs?.some(I=>P.toLowerCase()===I.toLowerCase())||u.has(G.toLowerCase())||c.has(`${G}#${_.number}`)||p.push({item:_,repoFullName:G}))}T(et,`Found ${p.length} commented issues to check`);let d=[],g=[];await Os(p,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 m=S(P);g.push({issueUrl:_.html_url,error:m}),f(et,`Error analyzing issue ${_.html_url}: ${m}`)}},bl),g.length>0&&f(et,`${g.length}/${p.length} issue analysis call(s) failed`),g.length===p.length&&p.length>0&&f(et,`All ${p.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(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}=kt(t),i=await Ue(m=>this.octokit.issues.listComments({owner:o,repo:n,issue_number:e.number,per_page:100,page:m})),a=[];for(let m of i){if(!m.user?.login)continue;let G=m.user.login;a.push({author:G,body:m.body||"",createdAt:m.created_at,isUser:G.toLowerCase()===s.toLowerCase(),authorAssociation:String(m.author_association??"")})}a.sort((m,G)=>new Date(m.createdAt).getTime()-new Date(G.createdAt).getTime());let c;for(let m of a)m.isUser&&(c=m);if(!c)return f(et,`No user comment found for ${e.html_url} despite commenter: search match`),null;let u=new Date(c.createdAt),p=`@${s.toLowerCase()}`;function d(m){return da.has(m.authorAssociation)||m.body.toLowerCase().includes(p)}let g;for(let m of a){if(m.isUser||Dt(m.author))continue;if(new Date(m.createdAt)>u){if(Xt(m.body)||!d(m))continue;g={author:m.author,body:m.body.slice(0,200)+(m.body.length>200?"...":""),createdAt:m.createdAt,authorAssociation:m.authorAssociation}}}let E=(e.labels||[]).map(m=>m.name||"").filter(Boolean),_={repo:t,number:e.number,title:e.title,url:e.html_url,userLastCommentedAt:c.createdAt,labels:E,daysSinceUserComment:De(u,new Date)};if(g)return{..._,status:"new_response",lastResponseAuthor:g.author,lastResponseBody:g.body,lastResponseAt:g.createdAt,isFromMaintainer:da.has(g.authorAssociation)};let P=[...a].reverse().find(m=>Dt(m.author)?!1:m.isUser?!0:d(m))?.isUser?"acknowledged":"waiting";return{..._,status:P}}}});function ha(r,e){let t=new Map;for(let s of r){if(!s.repo){f(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 es(r){let e=ha(r,"GROUP_BY_REPO"),t=[];for(let[s,o]of e)t.push({repo:s,prs:o});return t}function ts(r){let e=ha(r,"COMPUTE_SIGNALS"),t=new Map;for(let[s,o]of e){let n=o.some(a=>a.lastMaintainerComment&&!ma.has(a.stalenessTier)),i=o.some(a=>!ma.has(a.stalenessTier));t.set(s,{isResponsive:n,hasActiveMaintainers:i})}return t}function ss(r,e,t){let s=r.length,o=r.filter(p=>p.status==="needs_addressing"&&p.actionReason&&yl.has(p.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 p=[];n||p.push(`at PR limit (${s}/${e}${u})`),i||p.push(`${o} critical issue${o===1?"":"s"} need attention`),c=`No capacity: ${p.join(", ")}`}return{hasCapacity:a,activePRCount:s,maxActivePRs:e,shelvedPRCount:t,criticalIssueCount:o,reason:c}}function rs(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:f("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 os(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 ns(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 is(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=bs(a.lastResponseAt);s.push(` \u2514\u2500 @${a.lastResponseAuthor}: "${a.lastResponseBody.slice(0,80)}${a.lastResponseBody.length>80?"...":""}"${c?` (${c})`:""}`)}s.push("")}let o=e.hasCapacity?"\u2705":"\u26A0\uFE0F",n=e.hasCapacity?"Ready for new work":"Focus on existing PRs",i=e.shelvedPRCount>0?` + ${e.shelvedPRCount} shelved`:"";return s.push(`**Capacity:** ${o} ${n} (${e.activePRCount}/${e.maxActivePRs} PRs${i})`),s.join(`
89
89
  `)}function mo(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 It,yl,ma,fa=C(()=>{"use strict";we();ue();It=new Set(["needs_addressing"]),yl=new Set(["needs_response","needs_changes","failing_ci","merge_conflict"]),ma=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 _l)try{T(vt,`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(vt,`${s} is a directory (multiple templates?), skipping`);continue}if(o.type!=="file"){T(vt,`${s} is type "${o.type}", skipping`);continue}if(!o.content){T(vt,`${s} has no content, skipping`);continue}let n=Buffer.from(o.content,"base64").toString("utf-8");return T(vt,`Found PR template at ${s} (${n.length} chars)`),{template:n,source:s}}catch(o){if(ve(o)===404)continue;if(ye(o))throw o;let n=S(o);return f(vt,`Error checking ${e}/${t}/${s}: ${n}`),{template:null,source:null,error:n}}return T(vt,`No PR template found for ${e}/${t}`),{template:null,source:null}}var vt,_l,yo=C(()=>{"use strict";ue();ce();vt="pr-template",_l=[".github/PULL_REQUEST_TEMPLATE.md",".github/pull_request_template.md","docs/pull_request_template.md","pull_request_template.md"]});var ee=C(()=>{"use strict";Vt();ta();pa();ga();Fs();Gt();we();ce();ue();$t();fa();fo();yo();Ct()});function ba(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 ya(r){return r.map(e=>({type:e.type,prUrl:e.pr.url,label:e.label}))}function _a(r){return r.map(e=>({repo:e.repo,prUrls:e.prs.map(t=>t.url)}))}function Rl(r){return{success:!0,data:r,timestamp:new Date().toISOString()}}function wl(r){return{success:!1,error:r,timestamp:new Date().toISOString()}}function J(r){console.log(JSON.stringify(Rl(r),null,2))}function Ra(r){console.log(JSON.stringify(wl(r),null,2))}var _o=C(()=>{"use strict"});function wa(r,e,t){let s=r.summary||{totalActivePRs:0,totalMergedAllTime:0,mergeRate:0,totalNeedingAttention:0},o=e.config.minStars??50,n=t!==void 0?Math.max(t,s.totalMergedAllTime):s.totalMergedAllTime;return{activePRs:s.totalActivePRs,shelvedPRs:(r.shelvedPRs||[]).length,mergedPRs:n,closedPRs:Object.values(e.repoScores||{}).reduce((i,a)=>i+(ut(a.stargazersCount,o)?0:a.closedWithoutMergeCount||0),0),mergeRate:`${(s.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){f(Re,`Failed to store monthly merged counts: ${S(a)}`)}try{Object.keys(t).length>0&&n.setMonthlyClosedCounts(Ro(i.monthlyClosedCounts||{},t))}catch(a){f(Re,`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){f(Re,`Failed to store monthly opened counts: ${S(a)}`)}}async function Eo(r){let e=x(),t=new wt(r),s=new Tt(r),o=le(r),n=e.getState().config,i=Bs(e.getState()),a=e.getMergedPRWatermark(),[{prs:c,failures:u},p,d,g,E,_,w]=await Promise.all([t.fetchUserOpenPRs(),t.fetchRecentlyClosedPRs().catch(A=>{if(ye(A))throw A;return f(Re,`Failed to fetch recently closed PRs: ${S(A)}`),[]}),t.fetchRecentlyMergedPRs().catch(A=>{if(ye(A))throw A;return f(Re,`Failed to fetch recently merged PRs: ${S(A)}`),[]}),t.fetchUserMergedPRCounts(i).catch(A=>{if(ye(A))throw A;return f(Re,`Failed to fetch merged PR counts: ${S(A)}`),Rt()}),t.fetchUserClosedPRCounts(i).catch(A=>{if(ye(A))throw A;return f(Re,`Failed to fetch closed PR counts: ${S(A)}`),Rt()}),s.fetchCommentedIssues().catch(A=>{if(ye(A))throw A;let se=S(A);return se.includes("No GitHub username configured")?f(Re,`Issue conversation tracking requires setup: ${se}`):f(Re,`Issue conversation fetch failed: ${se}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${se}`}]}}),ea(o,n,a).catch(A=>{if(ye(A))throw A;return f(Re,`Failed to fetch merged PRs for storage: ${S(A)}`),[]})]),P=_.issues;_.failures.length>0&&f(Re,`${_.failures.length} issue conversation check(s) failed`),u.length>0&&f(Re,`${u.length} PR fetch(es) failed`);try{e.addMergedPRs(w)}catch(A){f(Re,`Failed to store merged PRs: ${S(A)}`)}let m=To(e.getMergedPRs()),{monthlyCounts:G,monthlyOpenedCounts:I}=g,{monthlyCounts:N,monthlyOpenedCounts:M}=E;wo(c,G,N,I,M);let k=t.generateDigest(c,p,d),O=new Set(e.getState().config.shelvedPRUrls||[]),U=c.filter(A=>O.has(A.url)||A.stalenessTier==="dormant"&&A.status!=="needs_addressing");k.shelvedPRs=U.map(et),k.autoUnshelvedPRs=[],k.summary.totalActivePRs=c.length-U.length,e.setLastDigest(k);try{e.save()}catch(A){f(Re,`Failed to save dashboard digest to state: ${S(A)}`)}return f(Re,`Refreshed: ${c.length} PRs fetched`),{digest:k,commentedIssues:P,allMergedPRs:m}}function To(r){let e=[],t=0;for(let s of r){let o=me(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&&f(Re,`Skipped ${t} stored merged PR(s) with unparseable URLs`),e}function Ea(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||{}))ut(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 Ta(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 va(r){return{monthlyMerged:r.monthlyMergedCounts||{},monthlyClosed:r.monthlyClosedCounts||{},monthlyOpened:r.monthlyOpenedCounts||{}}}var Re,vo=C(()=>{"use strict";ee();ce();ue();Ms();we();Ct();as();Re="dashboard-data"});var So={};oe(So,{CRITICAL_STATUSES:()=>It,assessCapacity:()=>ss,buildStarFilter:()=>Bs,collectActionableIssues:()=>rs,computeActionMenu:()=>os,computeRepoSignals:()=>ts,executeDailyCheck:()=>Vs,formatBriefSummary:()=>ns,formatSummary:()=>is,groupPRsByRepo:()=>es,printDigest:()=>mo,runDaily:()=>Cl,runDailyForDisplay:()=>kl,toShelvedPRRef:()=>et});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 El(r,e){let{prs:t,failures:s}=await r.fetchUserOpenPRs();s.length>0&&f(K,`${s.length} PR fetch(es) failed`);let o=x().getState(),n=Bs(o),i=new Tt(e),[a,c,u,p,d]=await Promise.all([r.fetchUserMergedPRCounts(n).catch(I=>{if(ye(I))throw I;return f(K,`Failed to fetch merged PR counts: ${S(I)}`),Rt()}),r.fetchUserClosedPRCounts(n).catch(I=>{if(ye(I))throw I;return f(K,`Failed to fetch closed PR counts: ${S(I)}`),Rt()}),r.fetchRecentlyClosedPRs().catch(I=>{if(ye(I))throw I;return f(K,`Failed to fetch recently closed PRs: ${S(I)}`),[]}),r.fetchRecentlyMergedPRs().catch(I=>{if(ye(I))throw I;return f(K,`Failed to fetch recently merged PRs: ${S(I)}`),[]}),i.fetchCommentedIssues().catch(I=>{if(ye(I))throw I;let N=S(I);return N.includes("No GitHub username configured")?f(K,`Issue conversation tracking requires setup: ${N}`):f(K,`Issue conversation fetch failed: ${N}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${N}`}]}})]),g=d.issues;d.failures.length>0&&f(K,`${d.failures.length} issue conversation check(s) failed`);let{repos:E,monthlyCounts:_,monthlyOpenedCounts:w}=a,{repos:P,monthlyCounts:m,monthlyOpenedCounts:G}=c;return{prs:t,failures:s,mergedCounts:E,closedCounts:P,monthlyCounts:_,monthlyClosedCounts:m,openedFromMerged:w,openedFromClosed:G,recentlyClosedPRs:u,recentlyMergedPRs:p,commentedIssues:g}}async function Tl(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)f(K,`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:m}]of t)try{o.updateRepoScore(w,{mergedPRCount:P,lastMergedAt:m||void 0})}catch(G){i++,f(K,`Failed to update merged count for ${w}: ${S(G)}`)}i===t.size&&t.size>0&&f(K,`[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&&f(K,`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(m){c++,f(K,`Failed to update closed count for ${w}: ${S(m)}`)}c===s.size&&s.size>0&&f(K,`[ALL_CLOSED_COUNT_UPDATES_FAILED] All ${s.size} closed count update(s) failed.`);let u=ts(e),p=0;for(let[w,P]of u)try{o.updateRepoScore(w,{signals:P})}catch(m){p++,f(K,`Failed to update signals for ${w}: ${S(m)}`)}p===u.size&&u.size>0&&f(K,`[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){f(K,`Failed to fetch repo star counts: ${S(w)}`),f(K,"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(m){E++,f(K,`Failed to update star count for ${w}: ${S(m)}`)}E===g.size&&g.size>0&&f(K,`[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){_++,f(K,`Failed to sync trusted project ${w}: ${S(P)}`)}_===t.size&&t.size>0&&f(K,`[ALL_TRUST_SYNCS_FAILED] All ${t.size} trusted project sync(s) failed. This may indicate corrupted state.`)}function vl(r,e,t,s){let o=x();try{let u=o.expireSnoozes();if(u.length>0){let p=u.map(d=>` - ${d}`).join(`
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 It,yl,ma,fa=C(()=>{"use strict";we();ue();It=new Set(["needs_addressing"]),yl=new Set(["needs_response","needs_changes","failing_ci","merge_conflict"]),ma=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 _l)try{T(St,`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(St,`${s} is a directory (multiple templates?), skipping`);continue}if(o.type!=="file"){T(St,`${s} is type "${o.type}", skipping`);continue}if(!o.content){T(St,`${s} has no content, skipping`);continue}let n=Buffer.from(o.content,"base64").toString("utf-8");return T(St,`Found PR template at ${s} (${n.length} chars)`),{template:n,source:s}}catch(o){if(ve(o)===404)continue;if(ye(o))throw o;let n=S(o);return f(St,`Error checking ${e}/${t}/${s}: ${n}`),{template:null,source:null,error:n}}return T(St,`No PR template found for ${e}/${t}`),{template:null,source:null}}var St,_l,yo=C(()=>{"use strict";ue();ce();St="pr-template",_l=[".github/PULL_REQUEST_TEMPLATE.md",".github/pull_request_template.md","docs/pull_request_template.md","pull_request_template.md"]});var ee=C(()=>{"use strict";Vt();ta();pa();ga();Fs();Gt();we();ce();ue();$t();fa();fo();yo();pt()});function ba(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 ya(r){return r.map(e=>({type:e.type,prUrl:e.pr.url,label:e.label}))}function _a(r){return r.map(e=>({repo:e.repo,prUrls:e.prs.map(t=>t.url)}))}function Rl(r){return{success:!0,data:r,timestamp:new Date().toISOString()}}function wl(r){return{success:!1,error:r,timestamp:new Date().toISOString()}}function J(r){console.log(JSON.stringify(Rl(r),null,2))}function Ra(r){console.log(JSON.stringify(wl(r),null,2))}var _o=C(()=>{"use strict"});function wa(r,e,t){let s=r.summary||{totalActivePRs:0,totalMergedAllTime:0,mergeRate:0,totalNeedingAttention:0},o=e.config.minStars??50,n=t!==void 0?Math.max(t,s.totalMergedAllTime):s.totalMergedAllTime;return{activePRs:s.totalActivePRs,shelvedPRs:(r.shelvedPRs||[]).length,mergedPRs:n,closedPRs:Object.values(e.repoScores||{}).reduce((i,a)=>i+(Ke(a.stargazersCount,o)?0:a.closedWithoutMergeCount||0),0),mergeRate:`${(s.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){f(Re,`Failed to store monthly merged counts: ${S(a)}`)}try{Object.keys(t).length>0&&n.setMonthlyClosedCounts(Ro(i.monthlyClosedCounts||{},t))}catch(a){f(Re,`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){f(Re,`Failed to store monthly opened counts: ${S(a)}`)}}async function Eo(r){let e=x(),t=new Et(r),s=new vt(r),o=le(r),n=e.getState().config,i=Bs(e.getState()),a=e.getMergedPRWatermark(),[{prs:c,failures:u},p,d,g,E,_,w]=await Promise.all([t.fetchUserOpenPRs(),t.fetchRecentlyClosedPRs().catch(A=>{if(ye(A))throw A;return f(Re,`Failed to fetch recently closed PRs: ${S(A)}`),[]}),t.fetchRecentlyMergedPRs().catch(A=>{if(ye(A))throw A;return f(Re,`Failed to fetch recently merged PRs: ${S(A)}`),[]}),t.fetchUserMergedPRCounts(i).catch(A=>{if(ye(A))throw A;return f(Re,`Failed to fetch merged PR counts: ${S(A)}`),wt()}),t.fetchUserClosedPRCounts(i).catch(A=>{if(ye(A))throw A;return f(Re,`Failed to fetch closed PR counts: ${S(A)}`),wt()}),s.fetchCommentedIssues().catch(A=>{if(ye(A))throw A;let se=S(A);return se.includes("No GitHub username configured")?f(Re,`Issue conversation tracking requires setup: ${se}`):f(Re,`Issue conversation fetch failed: ${se}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${se}`}]}}),ea(o,n,a).catch(A=>{if(ye(A))throw A;return f(Re,`Failed to fetch merged PRs for storage: ${S(A)}`),[]})]),P=_.issues;_.failures.length>0&&f(Re,`${_.failures.length} issue conversation check(s) failed`),u.length>0&&f(Re,`${u.length} PR fetch(es) failed`);try{e.addMergedPRs(w)}catch(A){f(Re,`Failed to store merged PRs: ${S(A)}`)}let m=To(e.getMergedPRs()),{monthlyCounts:G,monthlyOpenedCounts:I}=g,{monthlyCounts:N,monthlyOpenedCounts:M}=E;wo(c,G,N,I,M);let k=t.generateDigest(c,p,d),O=new Set(e.getState().config.shelvedPRUrls||[]),U=c.filter(A=>O.has(A.url)||A.stalenessTier==="dormant"&&A.status!=="needs_addressing");k.shelvedPRs=U.map(tt),k.autoUnshelvedPRs=[],k.summary.totalActivePRs=c.length-U.length,e.setLastDigest(k);try{e.save()}catch(A){f(Re,`Failed to save dashboard digest to state: ${S(A)}`)}return f(Re,`Refreshed: ${c.length} PRs fetched`),{digest:k,commentedIssues:P,allMergedPRs:m}}function To(r){let e=[],t=0;for(let s of r){let o=me(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&&f(Re,`Skipped ${t} stored merged PR(s) with unparseable URLs`),e}function Ea(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 Ta(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 va(r){return{monthlyMerged:r.monthlyMergedCounts||{},monthlyClosed:r.monthlyClosedCounts||{},monthlyOpened:r.monthlyOpenedCounts||{}}}var Re,vo=C(()=>{"use strict";ee();ce();ue();Ms();we();pt();as();Re="dashboard-data"});var So={};oe(So,{CRITICAL_STATUSES:()=>It,assessCapacity:()=>ss,buildStarFilter:()=>Bs,collectActionableIssues:()=>rs,computeActionMenu:()=>os,computeRepoSignals:()=>ts,executeDailyCheck:()=>Vs,formatBriefSummary:()=>ns,formatSummary:()=>is,groupPRsByRepo:()=>es,printDigest:()=>mo,runDaily:()=>Cl,runDailyForDisplay:()=>kl,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 El(r,e){let{prs:t,failures:s}=await r.fetchUserOpenPRs();s.length>0&&f(K,`${s.length} PR fetch(es) failed`);let o=x().getState(),n=Bs(o),i=new vt(e),[a,c,u,p,d]=await Promise.all([r.fetchUserMergedPRCounts(n).catch(I=>{if(ye(I))throw I;return f(K,`Failed to fetch merged PR counts: ${S(I)}`),wt()}),r.fetchUserClosedPRCounts(n).catch(I=>{if(ye(I))throw I;return f(K,`Failed to fetch closed PR counts: ${S(I)}`),wt()}),r.fetchRecentlyClosedPRs().catch(I=>{if(ye(I))throw I;return f(K,`Failed to fetch recently closed PRs: ${S(I)}`),[]}),r.fetchRecentlyMergedPRs().catch(I=>{if(ye(I))throw I;return f(K,`Failed to fetch recently merged PRs: ${S(I)}`),[]}),i.fetchCommentedIssues().catch(I=>{if(ye(I))throw I;let N=S(I);return N.includes("No GitHub username configured")?f(K,`Issue conversation tracking requires setup: ${N}`):f(K,`Issue conversation fetch failed: ${N}`),{issues:[],failures:[{issueUrl:"N/A",error:`Issue conversation fetch failed: ${N}`}]}})]),g=d.issues;d.failures.length>0&&f(K,`${d.failures.length} issue conversation check(s) failed`);let{repos:E,monthlyCounts:_,monthlyOpenedCounts:w}=a,{repos:P,monthlyCounts:m,monthlyOpenedCounts:G}=c;return{prs:t,failures:s,mergedCounts:E,closedCounts:P,monthlyCounts:_,monthlyClosedCounts:m,openedFromMerged:w,openedFromClosed:G,recentlyClosedPRs:u,recentlyMergedPRs:p,commentedIssues:g}}async function Tl(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)f(K,`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:m}]of t)try{o.updateRepoScore(w,{mergedPRCount:P,lastMergedAt:m||void 0})}catch(G){i++,f(K,`Failed to update merged count for ${w}: ${S(G)}`)}i===t.size&&t.size>0&&f(K,`[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&&f(K,`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(m){c++,f(K,`Failed to update closed count for ${w}: ${S(m)}`)}c===s.size&&s.size>0&&f(K,`[ALL_CLOSED_COUNT_UPDATES_FAILED] All ${s.size} closed count update(s) failed.`);let u=ts(e),p=0;for(let[w,P]of u)try{o.updateRepoScore(w,{signals:P})}catch(m){p++,f(K,`Failed to update signals for ${w}: ${S(m)}`)}p===u.size&&u.size>0&&f(K,`[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){f(K,`Failed to fetch repo star counts: ${S(w)}`),f(K,"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(m){E++,f(K,`Failed to update star count for ${w}: ${S(m)}`)}E===g.size&&g.size>0&&f(K,`[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){_++,f(K,`Failed to sync trusted project ${w}: ${S(P)}`)}_===t.size&&t.size>0&&f(K,`[ALL_TRUST_SYNCS_FAILED] All ${t.size} trusted project sync(s) failed. This may indicate corrupted state.`)}function vl(r,e,t,s){let o=x();try{let u=o.expireSnoozes();if(u.length>0){let p=u.map(d=>` - ${d}`).join(`
94
94
  `);f(K,`${u.length} snoozed PR(s) expired and will resurface:
95
- ${p}`),o.save()}}catch(u){f(K,`Failed to expire/persist snoozes: ${S(u)}`)}let n=[],i=[],a=[];for(let u of e)o.isPRShelved(u.url)?It.has(u.status)?(o.unshelvePR(u.url),i.push(et(u)),a.push(u)):n.push(et(u)):u.stalenessTier==="dormant"&&!It.has(u.status)?n.push(et(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 Sl(r,e,t,s,o){let n=x(),i=ss(e,n.getState().config.maxActivePRs,t.length),a=!1,c=s.filter(m=>{let G=n.getIssueDismissedAt(m.url);if(!G)return!0;if(m.status==="new_response"){let I=new Date(m.lastResponseAt).getTime(),N=new Date(G).getTime();if(isNaN(I)||isNaN(N))return f(K,`Invalid timestamp in dismiss check for ${m.url}, including issue`),!0;if(I>N)return f(K,`Auto-undismissing issue ${m.url}: new response at ${m.lastResponseAt} after dismiss at ${G}`),n.undismissIssue(m.url),a=!0,!0}return!1}),u=c.filter(m=>m.status==="new_response"),p=is(r,i,u),d=new Set(Object.keys(n.getState().config.snoozedPRs??{}).filter(m=>n.isSnoozed(m))),g=e.filter(m=>{let G=n.getIssueDismissedAt(m.url);if(!G)return!0;let I=new Date(m.updatedAt).getTime(),N=new Date(G).getTime();return isNaN(I)||isNaN(N)?(f(K,`Invalid timestamp in PR dismiss check for ${m.url}, including PR`),!0):I>N?(f(K,`Auto-undismissing PR ${m.url}: new activity at ${m.updatedAt} after dismiss at ${G}`),n.undismissIssue(m.url),a=!0,!0):!1});if(a)try{n.save()}catch(m){f(K,`Failed to persist auto-undismissed state: ${S(m)}`)}let E=rs(g,d);r.summary.totalNeedingAttention=E.length;let _=ns(r,E.length,u.length),w=os(E,i,c),P=es(e);return{digest:r,capacity:i,summary:p,briefSummary:_,actionableIssues:E,actionMenu:w,commentedIssues:c,repoGroups:P,failures:o}}function Pl(r){return{digest:ba(r.digest),capacity:r.capacity,summary:r.summary,briefSummary:r.briefSummary,actionableIssues:ya(r.actionableIssues),actionMenu:r.actionMenu,commentedIssues:r.commentedIssues,repoGroups:_a(r.repoGroups),failures:r.failures}}async function Vs(r){let e=await Sa(r);return Pl(e)}async function Sa(r){let e=new wt(r),{prs:t,failures:s,mergedCounts:o,closedCounts:n,monthlyCounts:i,monthlyClosedCounts:a,openedFromMerged:c,openedFromClosed:u,recentlyClosedPRs:p,recentlyMergedPRs:d,commentedIssues:g}=await El(e,r);await Tl(e,t,o,n),wo(t,i,a,c,u);let{activePRs:E,shelvedPRs:_,digest:w}=vl(e,t,p,d);return Sl(w,E,_,g,s)}async function Cl(){let r=he();return Vs(r)}async function kl(){let r=he();return Sa(r)}var K,as=C(()=>{"use strict";ee();ce();ue();Ms();vo();_o();ee();K="daily"});var Pa={};oe(Pa,{runStatus:()=>Al});async function Al(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 Ca=C(()=>{"use strict";ee()});var ka={};oe(ka,{runSearch:()=>Ol});async function Ol(r){let e=he(),t=new Et(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 p=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:p?{score:p.score,mergedPRCount:p.mergedPRCount,closedWithoutMergeCount:p.closedWithoutMergeCount,isResponsive:p.signals?.isResponsive??!1,lastMergedAt:p.lastMergedAt}:void 0}}),excludedRepos:i,aiPolicyBlocklist:a};return t.rateLimitWarning&&(c.rateLimitWarning=t.rateLimitWarning),c}var Aa=C(()=>{"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 X(`Invalid ${t} URL: ${r}. Expected format: ${s[t]}`)}function te(r){if(r.length>Oa)throw new X(`URL exceeds maximum length of ${Oa} characters`);return r}function us(r){if(r.length>Ga)throw new X(`Message exceeds maximum length of ${Ga} characters`);return r}function Ft(r){if(!r||r.trim().length===0)throw new X("GitHub username cannot be empty.");let e=r.trim();if(e.length>$a)throw new X(`GitHub username must be at most ${$a} characters (got ${e.length}).`);if(!Gl.test(e))throw new X("GitHub username can only contain alphanumeric characters and hyphens.");if(e.startsWith("-"))throw new X("GitHub username cannot start with a hyphen.");if(e.endsWith("-"))throw new X("GitHub username cannot end with a hyphen.");if($l.test(e))throw new X("GitHub username cannot contain consecutive hyphens.");return e}var fe,Ws,cs,Oa,Ga,$a,Gl,$l,Ae=C(()=>{"use strict";ce();fe=/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\/\d+$/,Ws=/^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\/\d+$/,cs=/^https:\/\/github\.com\/[^/]+\/[^/]+\/(issues|pull)\/\d+$/,Oa=2048,Ga=1e3;$a=39,Gl=/^[a-zA-Z0-9-]+$/,$l=/--/});var Da={};oe(Da,{runVet:()=>Dl});async function Dl(r){te(r.issueUrl),ne(r.issueUrl,Ws,"issue");let e=he(),s=await new Et(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 Ia=C(()=>{"use strict";ee();Ae()});var Po={};oe(Po,{runTrack:()=>Il,runUntrack:()=>Fl});async function Il(r){te(r.prUrl),ne(r.prUrl,fe,"PR");let e=he(),t=le(e),s=me(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 Fl(r){return te(r.prUrl),ne(r.prUrl,fe,"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 Co=C(()=>{"use strict";ee();Ae();we()});var Fa={};oe(Fa,{runRead:()=>xl});async function xl(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 xa=C(()=>{"use strict";Ae()});var zs={};oe(zs,{runClaim:()=>Ll,runComments:()=>Ul,runPost:()=>Ml});async function Ul(r){te(r.prUrl),ne(r.prUrl,fe,"PR");let e=he(),t=x(),s=le(e),o=me(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,p,d]=await Promise.all([Ue(m=>s.pulls.listReviewComments({owner:n,repo:i,pull_number:a,per_page:100,page:m})),Ue(m=>s.issues.listComments({owner:n,repo:i,issue_number:a,per_page:100,page:m})),Ue(m=>s.pulls.listReviews({owner:n,repo:i,pull_number:a,per_page:100,page:m}))]),g=t.getState().config.githubUsername,E=m=>!(!m.user||m.user.login===g||m.user.type==="Bot"&&!r.showBots),_=u.filter(E).sort((m,G)=>new Date(G.created_at).getTime()-new Date(m.created_at).getTime()),w=p.filter(E).sort((m,G)=>new Date(G.created_at).getTime()-new Date(m.created_at).getTime()),P=d.filter(m=>E(m)&&m.body&&m.body.trim()).sort((m,G)=>new Date(G.submitted_at||0).getTime()-new Date(m.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(m=>({user:m.user?.login,state:m.state,body:m.body??null,submittedAt:m.submitted_at??null})),reviewComments:_.map(m=>({user:m.user?.login,body:m.body,path:m.path,createdAt:m.created_at})),issueComments:w.map(m=>({user:m.user?.login,body:m.body,createdAt:m.created_at})),summary:{reviewCount:P.length,inlineCommentCount:_.length,discussionCommentCount:w.length}}}async function Ml(r){if(te(r.url),ne(r.url,cs,"issue or PR"),!r.message.trim())throw new Error("No message provided");us(r.message);let e=he(),t=me(r.url);if(!t)throw new Error("Invalid GitHub URL format");let{owner:s,repo:o,number:n}=t,i=le(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 Ll(r){te(r.issueUrl),ne(r.issueUrl,Ws,"issue");let e=he(),t=r.message||"Hi! I'd like to work on this issue. Could you assign it to me?";us(t);let s=me(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=le(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";ee();Qt();Ae()});var Ua={};oe(Ua,{runConfig:()=>jl});async function jl(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:Ft(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 Ma=C(()=>{"use strict";ee();Ae()});var La={};oe(La,{runInit:()=>Nl});async function Nl(r){Ft(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 ja=C(()=>{"use strict";ee();Ae()});var Ao={};oe(Ao,{runCheckSetup:()=>ql,runSetup:()=>Hl});function ko(r,e){let t=Number(r);if(!Number.isFinite(t)||t<1||!Number.isInteger(t))throw new X(`Invalid value for ${e}: "${r}". Must be a positive integer.`);return t}async function Hl(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":Ft(c),e.updateConfig({githubUsername:c}),s[i]=c;break;case"maxActivePRs":{let u=ko(c,"maxActivePRs");e.updateConfig({maxActivePRs:u}),s[i]=String(u);break}case"dormantDays":{let u=ko(c,"dormantDays");e.updateConfig({dormantThresholdDays:u}),s[i]=String(u);break}case"approachingDays":{let u=ko(c,"approachingDays");e.updateConfig({approachingDormantDays:u}),s[i]=String(u);break}case"languages":e.updateConfig({languages:c.split(",").map(u=>u.trim())}),s[i]=c;break;case"labels":e.updateConfig({labels:c.split(",").map(u=>u.trim())}),s[i]=c;break;case"showHealthCheck":e.updateConfig({showHealthCheck:c!=="false"}),s[i]=c!=="false"?"true":"false";break;case"squashByDefault":c==="ask"?(e.updateConfig({squashByDefault:"ask"}),s[i]="ask"):(e.updateConfig({squashByDefault:c!=="false"}),s[i]=c!=="false"?"true":"false");break;case"minStars":{let u=Number(c);if(!Number.isFinite(u)||!Number.isInteger(u)||u<0)throw new X(`Invalid value for minStars: "${c}". Must be a non-negative integer.`);e.updateConfig({minStars:u}),s[i]=String(u);break}case"includeDocIssues":e.updateConfig({includeDocIssues:c==="true"}),s[i]=c==="true"?"true":"false";break;case"aiPolicyBlocklist":{let u=c.split(",").map(g=>g.trim()).filter(Boolean),p=[],d=[];for(let g of u){let E=g.replace(/\s+/g,"");/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/.test(E)?p.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(", ")),p.length===0&&u.length>0){o.push("Warning: All entries were invalid. Blocklist not updated."),s[i]="(all entries invalid)";break}e.updateConfig({aiPolicyBlocklist:p}),s[i]=p.length>0?p.join(", "):"(empty)";break}case"complete":c==="true"&&(e.markSetupComplete(),s[i]="true");break;default:o.push(`Unknown setting: ${i}`)}}return e.save(),{success:!0,settings:s,warnings:o.length>0?o:void 0}}return t.setupComplete&&!r.reset?{setupComplete:!0,config:{githubUsername:t.githubUsername,maxActivePRs:t.maxActivePRs,dormantThresholdDays:t.dormantThresholdDays,approachingDormantDays:t.approachingDormantDays,languages:t.languages,labels:t.labels}}:{setupRequired:!0,prompts:[{setting:"username",prompt:"What is your GitHub username?",current:t.githubUsername||null,required:!0,type:"string"},{setting:"maxActivePRs",prompt:"How many PRs do you want to work on at once?",current:t.maxActivePRs,default:10,type:"number"},{setting:"dormantDays",prompt:"After how many days of inactivity should a PR be considered dormant?",current:t.dormantThresholdDays,default:30,type:"number"},{setting:"approachingDays",prompt:"At how many days should we warn about approaching dormancy?",current:t.approachingDormantDays,default:25,type:"number"},{setting:"languages",prompt:"What programming languages do you want to contribute to?",current:t.languages,default:["typescript","javascript"],type:"list"},{setting:"labels",prompt:"What issue labels should we search for?",current:t.labels,default:["good first issue","help wanted"],type:"list"},{setting:"aiPolicyBlocklist",prompt:"Repos with anti-AI contribution policies to block (owner/repo, comma-separated)?",current:t.aiPolicyBlocklist??lt.aiPolicyBlocklist??null,default:["matplotlib/matplotlib"],type:"list"}]}}async function ql(){let r=x();return{setupComplete:r.isSetupComplete(),username:r.getState().config.githubUsername}}var Oo=C(()=>{"use strict";ee();ce();Ae()});function ls(){return Ha.join(Fe(),"dashboard-server.pid")}function Qs(r){xt.writeFileSync(ls(),JSON.stringify(r),{mode:384})}function Ut(){try{let r=xt.readFileSync(ls(),"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"?(f(Ks,"PID file has invalid structure, ignoring"),null):e}catch(r){return r.code!=="ENOENT"&&f(Ks,`Failed to read PID file: ${r.message}`),null}}function ct(){try{xt.unlinkSync(ls())}catch(r){r.code!=="ENOENT"&&f(Ks,`Failed to remove PID file: ${r.message}`)}}function ps(r){return new Promise(e=>{let t=Na.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=Ut();if(!r)return null;try{process.kill(r.pid,0)}catch(e){let t=e.code;return t!=="ESRCH"&&t!=="EPERM"&&f(Ks,`Unexpected error checking PID ${r.pid}: ${e.message}`),ct(),null}return await ps(r.port)?{port:r.port,url:`http://localhost:${r.port}`}:(ct(),null)}var Na,xt,Ha,Ks,Xs=C(()=>{"use strict";Na=W(require("http"),1),xt=W(require("fs"),1),Ha=W(require("path"),1);ee();ue();Ks="dashboard-server"});function zl(r){return new Promise(e=>setTimeout(e,r))}async function Ba(r){if(!Zs())return null;let t=await Ys();if(t){let c=Ut(),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 p=!1;try{process.kill(c.pid,"SIGTERM"),p=!0}catch(d){d.code==="ESRCH"?p=!0:console.error(`[STARTUP] Could not kill outdated dashboard (PID ${c.pid}): ${d.message}`)}if(p)ct();else return{url:t.url,port:t.port,alreadyRunning:!0}}else return{url:t.url,port:t.port,alreadyRunning:!0}}let s=r?.port??Bl,o=process.argv[1],n=(0,qa.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<Wl;c++){if(await zl(Vl),i||a)return null;let u=Ut();if(u&&await ps(u.port))return{url:`http://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 qa,Bl,Vl,Wl,Va=C(()=>{"use strict";qa=require("child_process");Xs();Go();ee();Bl=3e3,Vl=200,Wl=25});var Qa={};oe(Qa,{countIssueListItems:()=>Ja,detectIssueList:()=>Ka,openInBrowser:()=>er,parseIssueListPathFromConfig:()=>za,runStartup:()=>Jl});function za(r){let e=r.match(/^---\n([\s\S]*?)\n---/);if(!e)return;let s=e[1].match(/issueListPath:\s*["']?([^"'\n]+)["']?/);return s?s[1].trim():void 0}function Ja(r){let e=0,t=0,s=r.split(`
96
- `);for(let o of s)/^\s*- (?:~~)?\[/.test(o)&&(/~~|\*\*Done\*\*/.test(o)?t++:e++);return{availableCount:e,completedCount:t}}function Ka(){let r="",e="auto-detected",t=".claude/oss-autopilot/config.md";if(St.existsSync(t))try{let s=St.readFileSync(t,"utf-8"),o=za(s);o&&St.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(St.existsSync(o)){r=o,e="auto-detected";break}}if(r)try{let s=St.readFileSync(r,"utf-8"),{availableCount:o,completedCount:n}=Ja(s);return{path:r,source:e,availableCount:o,completedCount:n}}catch(s){return console.error(`[STARTUP] Failed to read issue list at ${r}:`,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,Wa.execFile)(e,t,s=>{s&&console.error(`[STARTUP] Failed to open dashboard in browser: ${s.message}`)})}async function Jl(){let r=qe(),e=x(),t=!1;if(!e.isSetupComplete()){let c=await _s();if(c)try{e.initializeWithDefaults(c),t=!0}catch(u){return console.error(`[STARTUP] Auto-detected username "${c}" but failed to save config:`,S(u)),{version:r,setupComplete:!1}}else return{version:r,setupComplete:!1}}let s=Qe();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 Ba();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=Ka();return{version:r,setupComplete:!0,autoDetected:t,daily:o,dashboardUrl:n,issueList:a}}var St,Wa,$o=C(()=>{"use strict";St=W(require("fs"),1),Wa=require("child_process");ee();ce();as();Va()});var Mt,Ya=C(()=>{"use strict";Mt=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 sc={};oe(sc,{findRunningDashboardServer:()=>Ys,getDashboardPidPath:()=>ls,isDashboardServerRunning:()=>ps,readDashboardServerInfo:()=>Ut,removeDashboardServerInfo:()=>ct,startDashboardServer:()=>ep,writeDashboardServerInfo:()=>Qs});function Xl(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){f(Se,`Failed to persist auto-cleared overrides \u2014 they may reappear on restart: ${S(a)}`)}return i}function tr(r,e,t,s){let o=Ea(r,e),n=Ta(o),{monthlyMerged:i,monthlyOpened:a,monthlyClosed:c}=va(e),u=s??To(x().getMergedPRs()),p=wa(r,e,u.length),d=t.filter(g=>g.status==="new_response");return{stats:p,prsByRepo:o,topRepos:n.map(([g,E])=>({repo:g,...E})),monthlyMerged:i,monthlyOpened:a,monthlyClosed:c,activePRs:Xl(r.openPRs||[],e),shelvedPRUrls:e.config.shelvedPRUrls||[],recentlyMergedPRs:r.recentlyMergedPRs||[],recentlyClosedPRs:r.recentlyClosedPRs||[],autoUnshelvedPRs:r.autoUnshelvedPRs||[],commentedIssues:t,issueResponses:d,allMergedPRs:u}}function Zl(r,e=Kl){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 tc(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 Za(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){tc(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 ae(r,e,t){sr(r,e,{error:t})}async function ep(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 p=new Mt({maxRequests:30,windowMs:6e4}),d=new Mt({maxRequests:10,windowMs:6e4}),g=new Mt({maxRequests:2,windowMs:6e4}),E=ec.createServer(async(M,k)=>{let O=M.method||"GET",U=M.url||"/";try{if(U==="/api/data"&&O==="GET"){let A=p.check();if(!A.allowed){k.setHeader("Retry-After",String(A.retryAfterSeconds)),ae(k,429,"Too many requests");return}sr(k,200,u);return}if(U==="/api/action"&&O==="POST"){if(!Za(M,G)){ae(k,403,"Invalid origin");return}let A=d.check();if(!A.allowed){k.setHeader("Retry-After",String(A.retryAfterSeconds)),ae(k,429,"Too many requests");return}await _(M,k);return}if(U==="/api/refresh"&&O==="POST"){if(!Za(M,G)){ae(k,403,"Invalid origin");return}let A=g.check();if(!A.allowed){k.setHeader("Retry-After",String(A.retryAfterSeconds)),ae(k,429,"Too many requests");return}await w(M,k);return}if(O==="GET"){P(U,k);return}ae(k,405,"Method not allowed")}catch(A){f(Se,`Unhandled request error: ${O} ${U} ${S(A)}`),k.headersSent||ae(k,500,"Internal server error")}});E.requestTimeout=Ql;async function _(M,k){let O;try{let U=await Zl(M);O=JSON.parse(U)}catch(U){let A=U instanceof Error&&U.message==="Body too large";ae(k,A?413:400,A?"Request body too large":"Invalid JSON body");return}if(!O.action||!Xa.has(O.action)){ae(k,400,`Invalid action. Must be one of: ${[...Xa].join(", ")}`);return}if(!O.url||typeof O.url!="string"){ae(k,400,'Missing or invalid "url" field');return}try{te(O.url),ne(O.url,fe,"PR")}catch(U){U instanceof X?ae(k,400,U.message):(f(Se,`Unexpected error during URL validation: ${S(U)}`),ae(k,400,"Invalid URL"));return}if(O.action==="override_status"&&(!O.status||O.status!=="needs_addressing"&&O.status!=="waiting_on_maintainer")){ae(k,400,'override_status requires a valid "status" field (needs_addressing or waiting_on_maintainer)');return}try{switch(O.action){case"shelve":n.shelvePR(O.url);break;case"unshelve":n.unshelvePR(O.url);break;case"override_status":{let U=O.status,se=(a?.openPRs||[]).find(Ee=>Ee.url===O.url)?.updatedAt||new Date().toISOString();n.setStatusOverride(O.url,U,se);break}}n.save()}catch(U){f(Se,`Action failed: ${O.action} ${O.url} ${S(U)}`),ae(k,500,"Action failed");return}u=tr(a,n.getState(),c),sr(k,200,u)}async function w(M,k){let O=s||Qe();if(!O){ae(k,401,"No GitHub token available. Cannot refresh data.");return}try{f(Se,"Refreshing dashboard data from GitHub...");let U=await Eo(O);a=U.digest,c=U.commentedIssues,u=tr(a,n.getState(),c,U.allMergedPRs),sr(k,200,u)}catch(U){f(Se,`Dashboard refresh failed: ${S(U)}`),ae(k,500,"Refresh failed")}}function P(M,k){let O;try{O=decodeURIComponent(M.split("?")[0])}catch{f(Se,`Malformed URL received: ${M}`),ae(k,400,"Malformed URL");return}if(O.includes("..")){ae(k,403,"Forbidden");return}let U=O==="/"?"index.html":O.replace(/^\/+/,""),A=Be.join(i,U);if(!A.startsWith(i+Be.sep)&&A!==i){ae(k,403,"Forbidden");return}try{rr.statSync(A).isDirectory()&&(A=Be.join(i,"index.html"))}catch(ie){if(ie.code==="ENOENT")A=Be.join(i,"index.html");else{f(Se,`Failed to stat file: ${A}`),ae(k,500,"Internal server error");return}}let se=Be.extname(A).toLowerCase(),Ee=Yl[se]||"application/octet-stream";try{let ie=rr.readFileSync(A);tc(k),k.writeHead(200,{"Content-Type":Ee,"Content-Length":ie.length,"Cache-Control":"public, max-age=3600"}),k.end(ie)}catch(ie){ie.code==="ENOENT"?ae(k,404,"Not found"):(f(Se,`Failed to serve static file: ${A}`),ae(k,500,"Failed to read file"))}}let m=10,G=e;for(let M=0;M<m;M++)try{await new Promise((k,O)=>{E.once("error",O),E.listen(G,"127.0.0.1",()=>k())});break}catch(k){let O=k;if(O.code==="EADDRINUSE"&&M<m-1){f(Se,`Port ${G} is in use, trying ${G+1}...`),G++;continue}throw new Error(`Failed to start server: ${O.message}`,{cause:k})}Qs({pid:process.pid,port:G,startedAt:new Date().toISOString(),version:qe()});let I=`http://localhost:${G}`;f(Se,`Dashboard server running at ${I} (also: http://oss.localhost:${G})`),s&&Eo(s).then(M=>{a=M.digest,c=M.commentedIssues,u=tr(a,n.getState(),c,M.allMergedPRs),f(Se,"Background data refresh complete")}).catch(M=>{f(Se,`Background data refresh failed (serving cached data): ${S(M)}`)}),o&&er(I);let N=()=>{f(Se,"Shutting down dashboard server..."),ct(),E.close(()=>{process.exit(0)}),setTimeout(()=>process.exit(0),3e3).unref()};process.on("SIGINT",N),process.on("SIGTERM",N)}var ec,rr,Be,Xa,Se,Kl,Ql,Yl,rc=C(()=>{"use strict";ec=W(require("http"),1),rr=W(require("fs"),1),Be=W(require("path"),1);ee();ce();ue();Ae();vo();$o();Xs();Ya();Xs();Xa=new Set(["shelve","unshelve","override_status"]),Se="dashboard-server",Kl=10240,Ql=3e4,Yl={".html":"text/html",".js":"application/javascript",".css":"text/css",".svg":"image/svg+xml",".json":"application/json",".png":"image/png",".ico":"image/x-icon"}});var oc={};oe(oc,{resolveAssetsDir:()=>Zs,serveDashboard:()=>tp});function Zs(){let r=Me.resolve(__dirname,"../../dashboard/dist");if(or.existsSync(Me.join(r,"index.html")))return r;let e=Me.resolve(Me.dirname(process.argv[1]),"../../dashboard/dist");if(or.existsSync(Me.join(e,"index.html")))return e;try{let t=require.resolve("@oss-autopilot/dashboard/package.json"),s=Me.join(Me.dirname(t),"dist");if(or.existsSync(Me.join(s,"index.html")))return s}catch(t){t.code!=="MODULE_NOT_FOUND"&&console.error("Error resolving dashboard package:",t)}return null}async function tp(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=Qe(),{startDashboardServer:s}=await Promise.resolve().then(()=>(rc(),sc));await s({port:r.port,assetsDir:e,token:t,open:r.open})}var or,Me,Go=C(()=>{"use strict";or=W(require("fs"),1),Me=W(require("path"),1);ee()});var ac={};oe(ac,{parseIssueList:()=>ic,runParseList:()=>np});function sp(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 rp(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 op(r){return!!(/~~.+~~/.test(r)||/\[[xX]\]/.test(r)||/\bdone\b/i.test(r))}function ic(r){let e=r.split(`
95
+ ${p}`),o.save()}}catch(u){f(K,`Failed to expire/persist snoozes: ${S(u)}`)}let n=[],i=[],a=[];for(let u of e)o.isPRShelved(u.url)?It.has(u.status)?(o.unshelvePR(u.url),i.push(tt(u)),a.push(u)):n.push(tt(u)):u.stalenessTier==="dormant"&&!It.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 Sl(r,e,t,s,o){let n=x(),i=ss(e,n.getState().config.maxActivePRs,t.length),a=!1,c=s.filter(m=>{let G=n.getIssueDismissedAt(m.url);if(!G)return!0;if(m.status==="new_response"){let I=new Date(m.lastResponseAt).getTime(),N=new Date(G).getTime();if(isNaN(I)||isNaN(N))return f(K,`Invalid timestamp in dismiss check for ${m.url}, including issue`),!0;if(I>N)return f(K,`Auto-undismissing issue ${m.url}: new response at ${m.lastResponseAt} after dismiss at ${G}`),n.undismissIssue(m.url),a=!0,!0}return!1}),u=c.filter(m=>m.status==="new_response"),p=is(r,i,u),d=new Set(Object.keys(n.getState().config.snoozedPRs??{}).filter(m=>n.isSnoozed(m))),g=e.filter(m=>{let G=n.getIssueDismissedAt(m.url);if(!G)return!0;let I=new Date(m.updatedAt).getTime(),N=new Date(G).getTime();return isNaN(I)||isNaN(N)?(f(K,`Invalid timestamp in PR dismiss check for ${m.url}, including PR`),!0):I>N?(f(K,`Auto-undismissing PR ${m.url}: new activity at ${m.updatedAt} after dismiss at ${G}`),n.undismissIssue(m.url),a=!0,!0):!1});if(a)try{n.save()}catch(m){f(K,`Failed to persist auto-undismissed state: ${S(m)}`)}let E=rs(g,d);r.summary.totalNeedingAttention=E.length;let _=ns(r,E.length,u.length),w=os(E,i,c),P=es(e);return{digest:r,capacity:i,summary:p,briefSummary:_,actionableIssues:E,actionMenu:w,commentedIssues:c,repoGroups:P,failures:o}}function Pl(r){return{digest:ba(r.digest),capacity:r.capacity,summary:r.summary,briefSummary:r.briefSummary,actionableIssues:ya(r.actionableIssues),actionMenu:r.actionMenu,commentedIssues:r.commentedIssues,repoGroups:_a(r.repoGroups),failures:r.failures}}async function Vs(r){let e=await Sa(r);return Pl(e)}async function Sa(r){let e=new Et(r),{prs:t,failures:s,mergedCounts:o,closedCounts:n,monthlyCounts:i,monthlyClosedCounts:a,openedFromMerged:c,openedFromClosed:u,recentlyClosedPRs:p,recentlyMergedPRs:d,commentedIssues:g}=await El(e,r);await Tl(e,t,o,n),wo(t,i,a,c,u);let{activePRs:E,shelvedPRs:_,digest:w}=vl(e,t,p,d);return Sl(w,E,_,g,s)}async function Cl(){let r=he();return Vs(r)}async function kl(){let r=he();return Sa(r)}var K,as=C(()=>{"use strict";ee();ce();ue();Ms();vo();_o();ee();K="daily"});var Pa={};oe(Pa,{runStatus:()=>Al});async function Al(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 Ca=C(()=>{"use strict";ee()});var ka={};oe(ka,{runSearch:()=>Ol});async function Ol(r){let e=he(),t=new Tt(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 p=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:p?{score:p.score,mergedPRCount:p.mergedPRCount,closedWithoutMergeCount:p.closedWithoutMergeCount,isResponsive:p.signals?.isResponsive??!1,lastMergedAt:p.lastMergedAt}:void 0}}),excludedRepos:i,aiPolicyBlocklist:a};return t.rateLimitWarning&&(c.rateLimitWarning=t.rateLimitWarning),c}var Aa=C(()=>{"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 X(`Invalid ${t} URL: ${r}. Expected format: ${s[t]}`)}function te(r){if(r.length>Oa)throw new X(`URL exceeds maximum length of ${Oa} characters`);return r}function us(r){if(r.length>Ga)throw new X(`Message exceeds maximum length of ${Ga} characters`);return r}function Ft(r){if(!r||r.trim().length===0)throw new X("GitHub username cannot be empty.");let e=r.trim();if(e.length>$a)throw new X(`GitHub username must be at most ${$a} characters (got ${e.length}).`);if(!Gl.test(e))throw new X("GitHub username can only contain alphanumeric characters and hyphens.");if(e.startsWith("-"))throw new X("GitHub username cannot start with a hyphen.");if(e.endsWith("-"))throw new X("GitHub username cannot end with a hyphen.");if($l.test(e))throw new X("GitHub username cannot contain consecutive hyphens.");return e}var fe,Ws,cs,Oa,Ga,$a,Gl,$l,Ae=C(()=>{"use strict";ce();fe=/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\/\d+$/,Ws=/^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\/\d+$/,cs=/^https:\/\/github\.com\/[^/]+\/[^/]+\/(issues|pull)\/\d+$/,Oa=2048,Ga=1e3;$a=39,Gl=/^[a-zA-Z0-9-]+$/,$l=/--/});var Da={};oe(Da,{runVet:()=>Dl});async function Dl(r){te(r.issueUrl),ne(r.issueUrl,Ws,"issue");let e=he(),s=await new Tt(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 Ia=C(()=>{"use strict";ee();Ae()});var Po={};oe(Po,{runTrack:()=>Il,runUntrack:()=>Fl});async function Il(r){te(r.prUrl),ne(r.prUrl,fe,"PR");let e=he(),t=le(e),s=me(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 Fl(r){return te(r.prUrl),ne(r.prUrl,fe,"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 Co=C(()=>{"use strict";ee();Ae();we()});var Fa={};oe(Fa,{runRead:()=>xl});async function xl(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 xa=C(()=>{"use strict";Ae()});var zs={};oe(zs,{runClaim:()=>Ll,runComments:()=>Ul,runPost:()=>Ml});async function Ul(r){te(r.prUrl),ne(r.prUrl,fe,"PR");let e=he(),t=x(),s=le(e),o=me(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,p,d]=await Promise.all([Ue(m=>s.pulls.listReviewComments({owner:n,repo:i,pull_number:a,per_page:100,page:m})),Ue(m=>s.issues.listComments({owner:n,repo:i,issue_number:a,per_page:100,page:m})),Ue(m=>s.pulls.listReviews({owner:n,repo:i,pull_number:a,per_page:100,page:m}))]),g=t.getState().config.githubUsername,E=m=>!(!m.user||m.user.login===g||m.user.type==="Bot"&&!r.showBots),_=u.filter(E).sort((m,G)=>new Date(G.created_at).getTime()-new Date(m.created_at).getTime()),w=p.filter(E).sort((m,G)=>new Date(G.created_at).getTime()-new Date(m.created_at).getTime()),P=d.filter(m=>E(m)&&m.body&&m.body.trim()).sort((m,G)=>new Date(G.submitted_at||0).getTime()-new Date(m.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(m=>({user:m.user?.login,state:m.state,body:m.body??null,submittedAt:m.submitted_at??null})),reviewComments:_.map(m=>({user:m.user?.login,body:m.body,path:m.path,createdAt:m.created_at})),issueComments:w.map(m=>({user:m.user?.login,body:m.body,createdAt:m.created_at})),summary:{reviewCount:P.length,inlineCommentCount:_.length,discussionCommentCount:w.length}}}async function Ml(r){if(te(r.url),ne(r.url,cs,"issue or PR"),!r.message.trim())throw new Error("No message provided");us(r.message);let e=he(),t=me(r.url);if(!t)throw new Error("Invalid GitHub URL format");let{owner:s,repo:o,number:n}=t,i=le(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 Ll(r){te(r.issueUrl),ne(r.issueUrl,Ws,"issue");let e=he(),t=r.message||"Hi! I'd like to work on this issue. Could you assign it to me?";us(t);let s=me(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=le(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";ee();Qt();Ae()});var Ua={};oe(Ua,{runConfig:()=>jl});async function jl(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:Ft(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 Ma=C(()=>{"use strict";ee();Ae()});var La={};oe(La,{runInit:()=>Nl});async function Nl(r){Ft(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 ja=C(()=>{"use strict";ee();Ae()});var Ao={};oe(Ao,{runCheckSetup:()=>ql,runSetup:()=>Hl});function ko(r,e){let t=Number(r);if(!Number.isFinite(t)||t<1||!Number.isInteger(t))throw new X(`Invalid value for ${e}: "${r}". Must be a positive integer.`);return t}async function Hl(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":Ft(c),e.updateConfig({githubUsername:c}),s[i]=c;break;case"maxActivePRs":{let u=ko(c,"maxActivePRs");e.updateConfig({maxActivePRs:u}),s[i]=String(u);break}case"dormantDays":{let u=ko(c,"dormantDays");e.updateConfig({dormantThresholdDays:u}),s[i]=String(u);break}case"approachingDays":{let u=ko(c,"approachingDays");e.updateConfig({approachingDormantDays:u}),s[i]=String(u);break}case"languages":e.updateConfig({languages:c.split(",").map(u=>u.trim())}),s[i]=c;break;case"labels":e.updateConfig({labels:c.split(",").map(u=>u.trim())}),s[i]=c;break;case"showHealthCheck":e.updateConfig({showHealthCheck:c!=="false"}),s[i]=c!=="false"?"true":"false";break;case"squashByDefault":c==="ask"?(e.updateConfig({squashByDefault:"ask"}),s[i]="ask"):(e.updateConfig({squashByDefault:c!=="false"}),s[i]=c!=="false"?"true":"false");break;case"minStars":{let u=Number(c);if(!Number.isFinite(u)||!Number.isInteger(u)||u<0)throw new X(`Invalid value for minStars: "${c}". Must be a non-negative integer.`);e.updateConfig({minStars:u}),s[i]=String(u);break}case"includeDocIssues":e.updateConfig({includeDocIssues:c==="true"}),s[i]=c==="true"?"true":"false";break;case"aiPolicyBlocklist":{let u=c.split(",").map(g=>g.trim()).filter(Boolean),p=[],d=[];for(let g of u){let E=g.replace(/\s+/g,"");/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/.test(E)?p.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(", ")),p.length===0&&u.length>0){o.push("Warning: All entries were invalid. Blocklist not updated."),s[i]="(all entries invalid)";break}e.updateConfig({aiPolicyBlocklist:p}),s[i]=p.length>0?p.join(", "):"(empty)";break}case"complete":c==="true"&&(e.markSetupComplete(),s[i]="true");break;default:o.push(`Unknown setting: ${i}`)}}return e.save(),{success:!0,settings:s,warnings:o.length>0?o:void 0}}return t.setupComplete&&!r.reset?{setupComplete:!0,config:{githubUsername:t.githubUsername,maxActivePRs:t.maxActivePRs,dormantThresholdDays:t.dormantThresholdDays,approachingDormantDays:t.approachingDormantDays,languages:t.languages,labels:t.labels}}:{setupRequired:!0,prompts:[{setting:"username",prompt:"What is your GitHub username?",current:t.githubUsername||null,required:!0,type:"string"},{setting:"maxActivePRs",prompt:"How many PRs do you want to work on at once?",current:t.maxActivePRs,default:10,type:"number"},{setting:"dormantDays",prompt:"After how many days of inactivity should a PR be considered dormant?",current:t.dormantThresholdDays,default:30,type:"number"},{setting:"approachingDays",prompt:"At how many days should we warn about approaching dormancy?",current:t.approachingDormantDays,default:25,type:"number"},{setting:"languages",prompt:"What programming languages do you want to contribute to?",current:t.languages,default:["typescript","javascript"],type:"list"},{setting:"labels",prompt:"What issue labels should we search for?",current:t.labels,default:["good first issue","help wanted"],type:"list"},{setting:"aiPolicyBlocklist",prompt:"Repos with anti-AI contribution policies to block (owner/repo, comma-separated)?",current:t.aiPolicyBlocklist??lt.aiPolicyBlocklist??null,default:["matplotlib/matplotlib"],type:"list"}]}}async function ql(){let r=x();return{setupComplete:r.isSetupComplete(),username:r.getState().config.githubUsername}}var Oo=C(()=>{"use strict";ee();ce();Ae()});function ls(){return Ha.join(Fe(),"dashboard-server.pid")}function Qs(r){xt.writeFileSync(ls(),JSON.stringify(r),{mode:384})}function Ut(){try{let r=xt.readFileSync(ls(),"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"?(f(Ks,"PID file has invalid structure, ignoring"),null):e}catch(r){return r.code!=="ENOENT"&&f(Ks,`Failed to read PID file: ${r.message}`),null}}function ut(){try{xt.unlinkSync(ls())}catch(r){r.code!=="ENOENT"&&f(Ks,`Failed to remove PID file: ${r.message}`)}}function ps(r){return new Promise(e=>{let t=Na.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=Ut();if(!r)return null;try{process.kill(r.pid,0)}catch(e){let t=e.code;return t!=="ESRCH"&&t!=="EPERM"&&f(Ks,`Unexpected error checking PID ${r.pid}: ${e.message}`),ut(),null}return await ps(r.port)?{port:r.port,url:`http://localhost:${r.port}`}:(ut(),null)}var Na,xt,Ha,Ks,Xs=C(()=>{"use strict";Na=W(require("http"),1),xt=W(require("fs"),1),Ha=W(require("path"),1);ee();ue();Ks="dashboard-server"});function zl(r){return new Promise(e=>setTimeout(e,r))}async function Ba(r){if(!Zs())return null;let t=await Ys();if(t){let c=Ut(),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 p=!1;try{process.kill(c.pid,"SIGTERM"),p=!0}catch(d){d.code==="ESRCH"?p=!0:console.error(`[STARTUP] Could not kill outdated dashboard (PID ${c.pid}): ${d.message}`)}if(p)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??Bl,o=process.argv[1],n=(0,qa.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<Wl;c++){if(await zl(Vl),i||a)return null;let u=Ut();if(u&&await ps(u.port))return{url:`http://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 qa,Bl,Vl,Wl,Va=C(()=>{"use strict";qa=require("child_process");Xs();Go();ee();Bl=3e3,Vl=200,Wl=25});var Qa={};oe(Qa,{countIssueListItems:()=>Ja,detectIssueList:()=>Ka,openInBrowser:()=>er,parseIssueListPathFromConfig:()=>za,runStartup:()=>Jl});function za(r){let e=r.match(/^---\n([\s\S]*?)\n---/);if(!e)return;let s=e[1].match(/issueListPath:\s*["']?([^"'\n]+)["']?/);return s?s[1].trim():void 0}function Ja(r){let e=0,t=0,s=r.split(`
96
+ `);for(let o of s)/^\s*- (?:~~)?\[/.test(o)&&(/~~|\*\*Done\*\*/.test(o)?t++:e++);return{availableCount:e,completedCount:t}}function Ka(){let r="",e="auto-detected",t=".claude/oss-autopilot/config.md";if(Pt.existsSync(t))try{let s=Pt.readFileSync(t,"utf-8"),o=za(s);o&&Pt.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(Pt.existsSync(o)){r=o,e="auto-detected";break}}if(r)try{let s=Pt.readFileSync(r,"utf-8"),{availableCount:o,completedCount:n}=Ja(s);return{path:r,source:e,availableCount:o,completedCount:n}}catch(s){return console.error(`[STARTUP] Failed to read issue list at ${r}:`,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,Wa.execFile)(e,t,s=>{s&&console.error(`[STARTUP] Failed to open dashboard in browser: ${s.message}`)})}async function Jl(){let r=qe(),e=x(),t=!1;if(!e.isSetupComplete()){let c=await _s();if(c)try{e.initializeWithDefaults(c),t=!0}catch(u){return console.error(`[STARTUP] Auto-detected username "${c}" but failed to save config:`,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 Ba();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=Ka();return{version:r,setupComplete:!0,autoDetected:t,daily:o,dashboardUrl:n,issueList:a}}var Pt,Wa,$o=C(()=>{"use strict";Pt=W(require("fs"),1),Wa=require("child_process");ee();ce();as();Va()});var Mt,Ya=C(()=>{"use strict";Mt=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 sc={};oe(sc,{findRunningDashboardServer:()=>Ys,getDashboardPidPath:()=>ls,isDashboardServerRunning:()=>ps,readDashboardServerInfo:()=>Ut,removeDashboardServerInfo:()=>ut,startDashboardServer:()=>ep,writeDashboardServerInfo:()=>Qs});function Xl(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){f(Se,`Failed to persist auto-cleared overrides \u2014 they may reappear on restart: ${S(a)}`)}return i}function tr(r,e,t,s){let o=Ea(r,e),n=Ta(o),{monthlyMerged:i,monthlyOpened:a,monthlyClosed:c}=va(e),u=s??To(x().getMergedPRs()),p=e.config.minStars??50,d=u.filter(_=>{let w=(e.repoScores||{})[_.repo];return!Ke(w?.stargazersCount,p)}),g=wa(r,e,d.length),E=t.filter(_=>_.status==="new_response");return{stats:g,prsByRepo:o,topRepos:n.map(([_,w])=>({repo:_,...w})),monthlyMerged:i,monthlyOpened:a,monthlyClosed:c,activePRs:Xl(r.openPRs||[],e),shelvedPRUrls:e.config.shelvedPRUrls||[],recentlyMergedPRs:r.recentlyMergedPRs||[],recentlyClosedPRs:r.recentlyClosedPRs||[],autoUnshelvedPRs:r.autoUnshelvedPRs||[],commentedIssues:t,issueResponses:E,allMergedPRs:d}}function Zl(r,e=Kl){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 tc(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 Za(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){tc(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 ae(r,e,t){sr(r,e,{error:t})}async function ep(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 p=new Mt({maxRequests:30,windowMs:6e4}),d=new Mt({maxRequests:10,windowMs:6e4}),g=new Mt({maxRequests:2,windowMs:6e4}),E=ec.createServer(async(M,k)=>{let O=M.method||"GET",U=M.url||"/";try{if(U==="/api/data"&&O==="GET"){let A=p.check();if(!A.allowed){k.setHeader("Retry-After",String(A.retryAfterSeconds)),ae(k,429,"Too many requests");return}sr(k,200,u);return}if(U==="/api/action"&&O==="POST"){if(!Za(M,G)){ae(k,403,"Invalid origin");return}let A=d.check();if(!A.allowed){k.setHeader("Retry-After",String(A.retryAfterSeconds)),ae(k,429,"Too many requests");return}await _(M,k);return}if(U==="/api/refresh"&&O==="POST"){if(!Za(M,G)){ae(k,403,"Invalid origin");return}let A=g.check();if(!A.allowed){k.setHeader("Retry-After",String(A.retryAfterSeconds)),ae(k,429,"Too many requests");return}await w(M,k);return}if(O==="GET"){P(U,k);return}ae(k,405,"Method not allowed")}catch(A){f(Se,`Unhandled request error: ${O} ${U} ${S(A)}`),k.headersSent||ae(k,500,"Internal server error")}});E.requestTimeout=Ql;async function _(M,k){let O;try{let U=await Zl(M);O=JSON.parse(U)}catch(U){let A=U instanceof Error&&U.message==="Body too large";ae(k,A?413:400,A?"Request body too large":"Invalid JSON body");return}if(!O.action||!Xa.has(O.action)){ae(k,400,`Invalid action. Must be one of: ${[...Xa].join(", ")}`);return}if(!O.url||typeof O.url!="string"){ae(k,400,'Missing or invalid "url" field');return}try{te(O.url),ne(O.url,fe,"PR")}catch(U){U instanceof X?ae(k,400,U.message):(f(Se,`Unexpected error during URL validation: ${S(U)}`),ae(k,400,"Invalid URL"));return}if(O.action==="override_status"&&(!O.status||O.status!=="needs_addressing"&&O.status!=="waiting_on_maintainer")){ae(k,400,'override_status requires a valid "status" field (needs_addressing or waiting_on_maintainer)');return}try{switch(O.action){case"shelve":n.shelvePR(O.url);break;case"unshelve":n.unshelvePR(O.url);break;case"override_status":{let U=O.status,se=(a?.openPRs||[]).find(Ee=>Ee.url===O.url)?.updatedAt||new Date().toISOString();n.setStatusOverride(O.url,U,se);break}}n.save()}catch(U){f(Se,`Action failed: ${O.action} ${O.url} ${S(U)}`),ae(k,500,"Action failed");return}u=tr(a,n.getState(),c),sr(k,200,u)}async function w(M,k){let O=s||Ye();if(!O){ae(k,401,"No GitHub token available. Cannot refresh data.");return}try{f(Se,"Refreshing dashboard data from GitHub...");let U=await Eo(O);a=U.digest,c=U.commentedIssues,u=tr(a,n.getState(),c,U.allMergedPRs),sr(k,200,u)}catch(U){f(Se,`Dashboard refresh failed: ${S(U)}`),ae(k,500,"Refresh failed")}}function P(M,k){let O;try{O=decodeURIComponent(M.split("?")[0])}catch{f(Se,`Malformed URL received: ${M}`),ae(k,400,"Malformed URL");return}if(O.includes("..")){ae(k,403,"Forbidden");return}let U=O==="/"?"index.html":O.replace(/^\/+/,""),A=Be.join(i,U);if(!A.startsWith(i+Be.sep)&&A!==i){ae(k,403,"Forbidden");return}try{rr.statSync(A).isDirectory()&&(A=Be.join(i,"index.html"))}catch(ie){if(ie.code==="ENOENT")A=Be.join(i,"index.html");else{f(Se,`Failed to stat file: ${A}`),ae(k,500,"Internal server error");return}}let se=Be.extname(A).toLowerCase(),Ee=Yl[se]||"application/octet-stream";try{let ie=rr.readFileSync(A);tc(k),k.writeHead(200,{"Content-Type":Ee,"Content-Length":ie.length,"Cache-Control":"public, max-age=3600"}),k.end(ie)}catch(ie){ie.code==="ENOENT"?ae(k,404,"Not found"):(f(Se,`Failed to serve static file: ${A}`),ae(k,500,"Failed to read file"))}}let m=10,G=e;for(let M=0;M<m;M++)try{await new Promise((k,O)=>{E.once("error",O),E.listen(G,"127.0.0.1",()=>k())});break}catch(k){let O=k;if(O.code==="EADDRINUSE"&&M<m-1){f(Se,`Port ${G} is in use, trying ${G+1}...`),G++;continue}throw new Error(`Failed to start server: ${O.message}`,{cause:k})}Qs({pid:process.pid,port:G,startedAt:new Date().toISOString(),version:qe()});let I=`http://localhost:${G}`;f(Se,`Dashboard server running at ${I} (also: http://oss.localhost:${G})`),s&&Eo(s).then(M=>{a=M.digest,c=M.commentedIssues,u=tr(a,n.getState(),c,M.allMergedPRs),f(Se,"Background data refresh complete")}).catch(M=>{f(Se,`Background data refresh failed (serving cached data): ${S(M)}`)}),o&&er(I);let N=()=>{f(Se,"Shutting down dashboard server..."),ut(),E.close(()=>{process.exit(0)}),setTimeout(()=>process.exit(0),3e3).unref()};process.on("SIGINT",N),process.on("SIGTERM",N)}var ec,rr,Be,Xa,Se,Kl,Ql,Yl,rc=C(()=>{"use strict";ec=W(require("http"),1),rr=W(require("fs"),1),Be=W(require("path"),1);ee();ce();ue();Ae();vo();$o();Xs();Ya();pt();Xs();Xa=new Set(["shelve","unshelve","override_status"]),Se="dashboard-server",Kl=10240,Ql=3e4,Yl={".html":"text/html",".js":"application/javascript",".css":"text/css",".svg":"image/svg+xml",".json":"application/json",".png":"image/png",".ico":"image/x-icon"}});var oc={};oe(oc,{resolveAssetsDir:()=>Zs,serveDashboard:()=>tp});function Zs(){let r=Me.resolve(__dirname,"../../dashboard/dist");if(or.existsSync(Me.join(r,"index.html")))return r;let e=Me.resolve(Me.dirname(process.argv[1]),"../../dashboard/dist");if(or.existsSync(Me.join(e,"index.html")))return e;try{let t=require.resolve("@oss-autopilot/dashboard/package.json"),s=Me.join(Me.dirname(t),"dist");if(or.existsSync(Me.join(s,"index.html")))return s}catch(t){t.code!=="MODULE_NOT_FOUND"&&console.error("Error resolving dashboard package:",t)}return null}async function tp(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(()=>(rc(),sc));await s({port:r.port,assetsDir:e,token:t,open:r.open})}var or,Me,Go=C(()=>{"use strict";or=W(require("fs"),1),Me=W(require("path"),1);ee()});var ac={};oe(ac,{parseIssueList:()=>ic,runParseList:()=>np});function sp(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 rp(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 op(r){return!!(/~~.+~~/.test(r)||/\[[xX]\]/.test(r)||/\bdone\b/i.test(r))}function ic(r){let e=r.split(`
97
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=sp(n);if(!a)continue;let c=rp(n),u={repo:a.repo,number:a.number,title:c||`#${a.number}`,tier:o,url:a.url};op(n)?s.push(u):t.push(u)}return{available:t,completed:s,availableCount:t.length,completedCount:s.length}}async function np(r){let e=nc.resolve(r.filePath);if(!nr.existsSync(e))throw new Error(`File not found: ${e}`);let t;try{t=nr.readFileSync(e,"utf-8")}catch(s){let o=S(s);throw new Error(`Failed to read file: ${o}`,{cause:s})}return ic(t)}var nr,nc,cc=C(()=>{"use strict";nr=W(require("fs"),1),nc=W(require("path"),1);ce()});var uc={};oe(uc,{runCheckIntegration:()=>lp});function cp(r){let e=Oe.extname(r),t=Oe.basename(r,e);return t==="index"?Oe.basename(Oe.dirname(r)):t}function up(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 lp(r){let e=r.base,t;try{let a=(0,ir.execFileSync)("git",["diff","--name-only","--diff-filter=A",`${e}...HEAD`],{encoding:"utf-8",timeout:1e4}).trim();t=a?a.split(`
98
98
  `).filter(Boolean):[]}catch(a){let c=S(a);throw new Error(`Failed to run git diff: ${c}`,{cause:a})}let s=t.filter(a=>{let c=Oe.extname(a);return ip.has(c)?!ap.some(u=>u.test(a)):!1});if(s.length===0)return{newFiles:[],unreferencedCount:0};let o;try{o=(0,ir.execFileSync)("git",["ls-files"],{encoding:"utf-8",timeout:1e4}).trim().split(`
99
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=cp(a),u=a.replace(/\.[^.]+$/,""),p=[],d=[c];u.includes("/")&&d.push(u);for(let _ of d)try{let w=(0,ir.execFileSync)("git",["grep","-l","--",_],{encoding:"utf-8",timeout:1e4}).trim();if(w){let P=w.split(`
100
100
  `).filter(m=>m!==a);p.push(...P)}}catch(w){let P=w&&typeof w=="object"&&"status"in w?w.status:void 0;if(P!==void 0&&P!==1){let m=S(w);T("check-integration",`git grep failed for "${_}": ${m}`)}}p=[...new Set(p)];let g=p.length>0,E={path:a,referencedBy:p,isIntegrated:g};g||(E.suggestedEntryPoints=up(a,o)),n.push(E)}let i=n.filter(a=>!a.isIntegrated).length;return{newFiles:n,unreferencedCount:i}}var Oe,ir,ip,ap,lc=C(()=>{"use strict";Oe=W(require("path"),1),ir=require("child_process");ee();ce();ip=new Set([".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".rb",".go",".rs",".java",".kt",".vue",".svelte"]),ap=[/^\./,/\.(test|spec|e2e)\.[^.]+$/,/\.(config|rc)\.[^.]+$/,/__tests__\//,/\.d\.ts$/,/\.md$/,/\.json$/,/\.ya?ml$/]});var dc={};oe(dc,{runLocalRepos:()=>mp,scanForRepos:()=>pc});function dp(r){try{let e=(0,ar.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 gp(r){try{return(0,ar.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 pc(r){let e={};for(let t of r){if(!Do.existsSync(t))continue;let s;try{let o=(0,ar.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=Le.dirname(o),i=dp(n);if(!i)continue;let a=gp(n);e[i]={path:n,exists:!0,currentBranch:a}}}return e}async function mp(r){let e=x(),t=e.getState(),s=r.paths?.map(i=>Le.resolve(i))??t.config.localRepoScanPaths??pp.filter(i=>Do.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=pc(s),n=new Date().toISOString();try{e.setLocalRepoCache({repos:o,scanPaths:s,cachedAt:n}),e.save()}catch(i){let a=S(i);console.error(`Warning: Failed to cache scan results: ${a}`)}return{repos:o,scanPaths:s,cachedAt:n,fromCache:!1}}var Do,Le,Pt,ar,pp,gc=C(()=>{"use strict";Do=W(require("fs"),1),Le=W(require("path"),1),Pt=W(require("os"),1),ar=require("child_process");ee();ce();pp=[Le.join(Pt.homedir(),"Documents","oss"),Le.join(Pt.homedir(),"dev"),Le.join(Pt.homedir(),"projects"),Le.join(Pt.homedir(),"src"),Le.join(Pt.homedir(),"code"),Le.join(Pt.homedir(),"repos")]});var Io={};oe(Io,{PR_URL_PATTERN:()=>fe,runShelve:()=>hp,runUnshelve:()=>fp});async function hp(r){te(r.prUrl),ne(r.prUrl,fe,"PR");let e=x(),t=e.shelvePR(r.prUrl);return t&&e.save(),{shelved:t,url:r.prUrl}}async function fp(r){te(r.prUrl),ne(r.prUrl,fe,"PR");let e=x(),t=e.unshelvePR(r.prUrl);return t&&e.save(),{unshelved:t,url:r.prUrl}}var Fo=C(()=>{"use strict";ee();Ae()});var xo={};oe(xo,{runDismiss:()=>bp,runUndismiss:()=>yp});async function bp(r){te(r.url),ne(r.url,cs,"issue or PR");let e=x(),t=e.dismissIssue(r.url,new Date().toISOString());return t&&e.save(),{dismissed:t,url:r.url}}async function yp(r){te(r.url),ne(r.url,cs,"issue or PR");let e=x(),t=e.undismissIssue(r.url);return t&&e.save(),{undismissed:t,url:r.url}}var Uo=C(()=>{"use strict";ee();Ae()});var Mo={};oe(Mo,{runSnooze:()=>Rp,runUnsnooze:()=>wp});async function Rp(r){te(r.prUrl),ne(r.prUrl,fe,"PR"),us(r.reason);let e=r.days??_p;if(!Number.isFinite(e)||e<=0)throw new Error("Snooze duration must be a positive number of days.");let t=x(),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 wp(r){te(r.prUrl),ne(r.prUrl,fe,"PR");let e=x(),t=e.unsnoozePR(r.prUrl);return t&&e.save(),{unsnoozed:t,url:r.prUrl}}var _p,Lo=C(()=>{"use strict";ee();Ae();_p=7});var jo={};oe(jo,{runClearOverride:()=>Tp,runOverride:()=>Ep});async function Ep(r){if(te(r.prUrl),ne(r.prUrl,fe,"PR"),!mc.includes(r.status))throw new Error(`Invalid status "${r.status}". Must be one of: ${mc.join(", ")}`);let e=r.status,t=x(),s=new Date().toISOString();return t.setStatusOverride(r.prUrl,e,s),t.save(),{url:r.prUrl,status:e}}async function Tp(r){te(r.prUrl),ne(r.prUrl,fe,"PR");let e=x(),t=e.clearStatusOverride(r.prUrl);return t&&e.save(),{url:r.prUrl,cleared:t}}var mc,No=C(()=>{"use strict";ee();Ae();mc=["needs_addressing","waiting_on_maintainer"]});var hc={};oe(hc,{runPRTemplate:()=>vp});async function vp(r){let{owner:e,repo:t}=kt(r.repo),s=he(),o=le(s);return bo(o,e,t)}var fc=C(()=>{"use strict";Gt();we();yo()});var bc={};oe(bc,{formatStatsBadge:()=>kp,formatStatsMarkdown:()=>Pp,runStats:()=>Sp});async function Sp(){let e=x().getState(),t=e.lastDigest?.summary?.totalActivePRs??0,s=ho({repoScores:e.repoScores??{},activePRCount:t});return{...s,mergeRateFormatted:`${(s.mergeRate*100).toFixed(1)}%`,username:e.config.githubUsername}}function Pp(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(`
101
+ `).filter(Boolean):[]}catch(o){T("local-repos",`find failed for scan path ${t}`,o);continue}for(let o of s){let n=Le.dirname(o),i=dp(n);if(!i)continue;let a=gp(n);e[i]={path:n,exists:!0,currentBranch:a}}}return e}async function mp(r){let e=x(),t=e.getState(),s=r.paths?.map(i=>Le.resolve(i))??t.config.localRepoScanPaths??pp.filter(i=>Do.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=pc(s),n=new Date().toISOString();try{e.setLocalRepoCache({repos:o,scanPaths:s,cachedAt:n}),e.save()}catch(i){let a=S(i);console.error(`Warning: Failed to cache scan results: ${a}`)}return{repos:o,scanPaths:s,cachedAt:n,fromCache:!1}}var Do,Le,Ct,ar,pp,gc=C(()=>{"use strict";Do=W(require("fs"),1),Le=W(require("path"),1),Ct=W(require("os"),1),ar=require("child_process");ee();ce();pp=[Le.join(Ct.homedir(),"Documents","oss"),Le.join(Ct.homedir(),"dev"),Le.join(Ct.homedir(),"projects"),Le.join(Ct.homedir(),"src"),Le.join(Ct.homedir(),"code"),Le.join(Ct.homedir(),"repos")]});var Io={};oe(Io,{PR_URL_PATTERN:()=>fe,runShelve:()=>hp,runUnshelve:()=>fp});async function hp(r){te(r.prUrl),ne(r.prUrl,fe,"PR");let e=x(),t=e.shelvePR(r.prUrl);return t&&e.save(),{shelved:t,url:r.prUrl}}async function fp(r){te(r.prUrl),ne(r.prUrl,fe,"PR");let e=x(),t=e.unshelvePR(r.prUrl);return t&&e.save(),{unshelved:t,url:r.prUrl}}var Fo=C(()=>{"use strict";ee();Ae()});var xo={};oe(xo,{runDismiss:()=>bp,runUndismiss:()=>yp});async function bp(r){te(r.url),ne(r.url,cs,"issue or PR");let e=x(),t=e.dismissIssue(r.url,new Date().toISOString());return t&&e.save(),{dismissed:t,url:r.url}}async function yp(r){te(r.url),ne(r.url,cs,"issue or PR");let e=x(),t=e.undismissIssue(r.url);return t&&e.save(),{undismissed:t,url:r.url}}var Uo=C(()=>{"use strict";ee();Ae()});var Mo={};oe(Mo,{runSnooze:()=>Rp,runUnsnooze:()=>wp});async function Rp(r){te(r.prUrl),ne(r.prUrl,fe,"PR"),us(r.reason);let e=r.days??_p;if(!Number.isFinite(e)||e<=0)throw new Error("Snooze duration must be a positive number of days.");let t=x(),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 wp(r){te(r.prUrl),ne(r.prUrl,fe,"PR");let e=x(),t=e.unsnoozePR(r.prUrl);return t&&e.save(),{unsnoozed:t,url:r.prUrl}}var _p,Lo=C(()=>{"use strict";ee();Ae();_p=7});var jo={};oe(jo,{runClearOverride:()=>Tp,runOverride:()=>Ep});async function Ep(r){if(te(r.prUrl),ne(r.prUrl,fe,"PR"),!mc.includes(r.status))throw new Error(`Invalid status "${r.status}". Must be one of: ${mc.join(", ")}`);let e=r.status,t=x(),s=new Date().toISOString();return t.setStatusOverride(r.prUrl,e,s),t.save(),{url:r.prUrl,status:e}}async function Tp(r){te(r.prUrl),ne(r.prUrl,fe,"PR");let e=x(),t=e.clearStatusOverride(r.prUrl);return t&&e.save(),{url:r.prUrl,cleared:t}}var mc,No=C(()=>{"use strict";ee();Ae();mc=["needs_addressing","waiting_on_maintainer"]});var hc={};oe(hc,{runPRTemplate:()=>vp});async function vp(r){let{owner:e,repo:t}=kt(r.repo),s=he(),o=le(s);return bo(o,e,t)}var fc=C(()=>{"use strict";Gt();we();yo()});var bc={};oe(bc,{formatStatsBadge:()=>kp,formatStatsMarkdown:()=>Pp,runStats:()=>Sp});async function Sp(){let e=x().getState(),t=e.lastDigest?.summary?.totalActivePRs??0,s=ho({repoScores:e.repoScores??{},activePRCount:t});return{...s,mergeRateFormatted:`${(s.mergeRate*100).toFixed(1)}%`,username:e.config.githubUsername}}function Pp(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
102
  `)}function Cp(r){return r.totalMerged===0?"blue":r.mergeRate>=.8?"brightgreen":r.mergeRate>=.6?"green":r.mergeRate>=.4?"yellow":"orange"}function kp(r){return{schemaVersion:1,label:"OSS Contributions",message:r.totalMerged>0?`${r.mergeRateFormatted} merge rate | ${r.totalMerged} merged`:"Getting Started",color:Cp(r)}}var yc=C(()=>{"use strict";ee();fo()});var mn=W(gn(),1),{program:Lp,createCommand:jp,createArgument:Np,createOption:Hp,CommanderError:qp,InvalidArgumentError:Bp,InvalidOptionArgumentError:Vp,Command:hn,Argument:Wp,Option:zp,Help:Jp}=mn.default;ee();ce();_o();function Q(r,e){let t=S(r);e?Ra(t):console.error(`Error: ${t}`),process.exit(1)}function _c(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 Ho=[{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(()=>(as(),So)),s=await t();J(s)}else{let{runDailyForDisplay:t,printDigest:s}=await Promise.resolve().then(()=>(as(),So)),o=await t();s(o.digest,o.capacity,o.commentedIssues)}}catch(t){Q(t,e.json)}})}},{name:"status",localOnly:!0,register(r){r.command("status").description("Show current status and stats").option("--json","Output as JSON").option("--offline","Use cached data only (no GitHub API calls)").action(async e=>{try{let{runStatus:t}=await Promise.resolve().then(()=>(Ca(),Pa)),s=await t({offline:e.offline});e.json?J(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(`