best-review 0.5.4 → 0.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/best-review.cjs +70 -70
- package/package.json +3 -3
package/dist/best-review.cjs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
`).map(i=>vv(i,t,s)).join(`
|
|
5
5
|
`)}function Rd(e,t){if(typeof e=="string")return In.aliases.get(e)===t;for(let s of e)if(s!==void 0&&Rd(s,t))return!0;return!1}function Fv(e,t){if(e===t)return;let s=e.split(`
|
|
6
6
|
`),i=t.split(`
|
|
7
|
-
`),r=[];for(let n=0;n<Math.max(s.length,i.length);n++)s[n]!==i[n]&&r.push(n);return r}function kn(e,t){let s=e;s.isTTY&&s.setRawMode(t)}function _v(){return Ae.default.platform!=="win32"?Ae.default.env.TERM!=="linux":!!Ae.default.env.CI||!!Ae.default.env.WT_SESSION||!!Ae.default.env.TERMINUS_SUBLIME||Ae.default.env.ConEmuTask==="{cmd::Cmder}"||Ae.default.env.TERM_PROGRAM==="Terminus-Sublime"||Ae.default.env.TERM_PROGRAM==="vscode"||Ae.default.env.TERM==="xterm-256color"||Ae.default.env.TERM==="alacritty"||Ae.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}async function Id(e,t={}){let s=i=>{if(typeof i!="symbol"||i.toString()!=="Symbol(clack:cancel)")return i;switch(t.cancel){case"reject":{let r=new Error("Prompt cancelled.");throw r.name="ConsolaPromptCancelledError",Error.captureStackTrace&&Error.captureStackTrace(r,Id),r}case"undefined":return;case"null":return null;case"symbol":return kd;default:case"default":return t.default??t.initial}};if(!t.type||t.type==="text")return await Mv({message:e,defaultValue:t.default,placeholder:t.placeholder,initialValue:t.initial}).then(s);if(t.type==="confirm")return await jv({message:e,initialValue:t.initial}).then(s);if(t.type==="select")return await qv({message:e,options:t.options.map(i=>typeof i=="string"?{value:i,label:i}:i),initialValue:t.initial}).then(s);if(t.type==="multiselect")return await Uv({message:e,options:t.options.map(i=>typeof i=="string"?{value:i,label:i}:i),required:t.required,initialValues:t.initial}).then(s);throw new Error(`Unknown prompt type: ${t.type}`)}var uT,Ae,mu,Ed,du,cd,nt,Rn,fd,ov,A,uv,xd,lv,cv,fv,dv,hu,dd,hd,pd,oe,hv,pv,gv,_n,Dv,Eu,Sd,yv,Ad,Fu,md,gd,wv,pu,bv,vv,Ev,In,yd,Cv,xv,qe,ri,gu,Sv,Av,wd,Rv,kv,Iv,bd,Du,yu,$v,ot,Tv,Pv,Bv,Ov,te,ni,wu,bu,Lv,vd,Nv,$n,vu,Mv,jv,qv,Uv,kd,$d=re(()=>{uT=require("node:util"),Ae=gt(require("node:process"),1),mu=gt(require("node:readline"),1),Ed=require("node:tty");nt=rv(),Rn={exports:{}};ov=nv(),A=iv(ov);uv=av();xd={exports:{}};(function(e){var t={};e.exports=t,t.eastAsianWidth=function(i){var r=i.charCodeAt(0),n=i.length==2?i.charCodeAt(1):0,o=r;return 55296<=r&&r<=56319&&56320<=n&&n<=57343&&(r&=1023,n&=1023,o=r<<10|n,o+=65536),o==12288||65281<=o&&o<=65376||65504<=o&&o<=65510?"F":o==8361||65377<=o&&o<=65470||65474<=o&&o<=65479||65482<=o&&o<=65487||65490<=o&&o<=65495||65498<=o&&o<=65500||65512<=o&&o<=65518?"H":4352<=o&&o<=4447||4515<=o&&o<=4519||4602<=o&&o<=4607||9001<=o&&o<=9002||11904<=o&&o<=11929||11931<=o&&o<=12019||12032<=o&&o<=12245||12272<=o&&o<=12283||12289<=o&&o<=12350||12353<=o&&o<=12438||12441<=o&&o<=12543||12549<=o&&o<=12589||12593<=o&&o<=12686||12688<=o&&o<=12730||12736<=o&&o<=12771||12784<=o&&o<=12830||12832<=o&&o<=12871||12880<=o&&o<=13054||13056<=o&&o<=19903||19968<=o&&o<=42124||42128<=o&&o<=42182||43360<=o&&o<=43388||44032<=o&&o<=55203||55216<=o&&o<=55238||55243<=o&&o<=55291||63744<=o&&o<=64255||65040<=o&&o<=65049||65072<=o&&o<=65106||65108<=o&&o<=65126||65128<=o&&o<=65131||110592<=o&&o<=110593||127488<=o&&o<=127490||127504<=o&&o<=127546||127552<=o&&o<=127560||127568<=o&&o<=127569||131072<=o&&o<=194367||177984<=o&&o<=196605||196608<=o&&o<=262141?"W":32<=o&&o<=126||162<=o&&o<=163||165<=o&&o<=166||o==172||o==175||10214<=o&&o<=10221||10629<=o&&o<=10630?"Na":o==161||o==164||167<=o&&o<=168||o==170||173<=o&&o<=174||176<=o&&o<=180||182<=o&&o<=186||188<=o&&o<=191||o==198||o==208||215<=o&&o<=216||222<=o&&o<=225||o==230||232<=o&&o<=234||236<=o&&o<=237||o==240||242<=o&&o<=243||247<=o&&o<=250||o==252||o==254||o==257||o==273||o==275||o==283||294<=o&&o<=295||o==299||305<=o&&o<=307||o==312||319<=o&&o<=322||o==324||328<=o&&o<=331||o==333||338<=o&&o<=339||358<=o&&o<=359||o==363||o==462||o==464||o==466||o==468||o==470||o==472||o==474||o==476||o==593||o==609||o==708||o==711||713<=o&&o<=715||o==717||o==720||728<=o&&o<=731||o==733||o==735||768<=o&&o<=879||913<=o&&o<=929||931<=o&&o<=937||945<=o&&o<=961||963<=o&&o<=969||o==1025||1040<=o&&o<=1103||o==1105||o==8208||8211<=o&&o<=8214||8216<=o&&o<=8217||8220<=o&&o<=8221||8224<=o&&o<=8226||8228<=o&&o<=8231||o==8240||8242<=o&&o<=8243||o==8245||o==8251||o==8254||o==8308||o==8319||8321<=o&&o<=8324||o==8364||o==8451||o==8453||o==8457||o==8467||o==8470||8481<=o&&o<=8482||o==8486||o==8491||8531<=o&&o<=8532||8539<=o&&o<=8542||8544<=o&&o<=8555||8560<=o&&o<=8569||o==8585||8592<=o&&o<=8601||8632<=o&&o<=8633||o==8658||o==8660||o==8679||o==8704||8706<=o&&o<=8707||8711<=o&&o<=8712||o==8715||o==8719||o==8721||o==8725||o==8730||8733<=o&&o<=8736||o==8739||o==8741||8743<=o&&o<=8748||o==8750||8756<=o&&o<=8759||8764<=o&&o<=8765||o==8776||o==8780||o==8786||8800<=o&&o<=8801||8804<=o&&o<=8807||8810<=o&&o<=8811||8814<=o&&o<=8815||8834<=o&&o<=8835||8838<=o&&o<=8839||o==8853||o==8857||o==8869||o==8895||o==8978||9312<=o&&o<=9449||9451<=o&&o<=9547||9552<=o&&o<=9587||9600<=o&&o<=9615||9618<=o&&o<=9621||9632<=o&&o<=9633||9635<=o&&o<=9641||9650<=o&&o<=9651||9654<=o&&o<=9655||9660<=o&&o<=9661||9664<=o&&o<=9665||9670<=o&&o<=9672||o==9675||9678<=o&&o<=9681||9698<=o&&o<=9701||o==9711||9733<=o&&o<=9734||o==9737||9742<=o&&o<=9743||9748<=o&&o<=9749||o==9756||o==9758||o==9792||o==9794||9824<=o&&o<=9825||9827<=o&&o<=9829||9831<=o&&o<=9834||9836<=o&&o<=9837||o==9839||9886<=o&&o<=9887||9918<=o&&o<=9919||9924<=o&&o<=9933||9935<=o&&o<=9953||o==9955||9960<=o&&o<=9983||o==10045||o==10071||10102<=o&&o<=10111||11093<=o&&o<=11097||12872<=o&&o<=12879||57344<=o&&o<=63743||65024<=o&&o<=65039||o==65533||127232<=o&&o<=127242||127248<=o&&o<=127277||127280<=o&&o<=127337||127344<=o&&o<=127386||917760<=o&&o<=917999||983040<=o&&o<=1048573||1048576<=o&&o<=1114109?"A":"N"},t.characterLength=function(i){var r=this.eastAsianWidth(i);return r=="F"||r=="W"||r=="A"?2:1};function s(i){return i.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}t.length=function(i){for(var r=s(i),n=0,o=0;o<r.length;o++)n=n+this.characterLength(r[o]);return n},t.slice=function(i,r,n){textLen=t.length(i),r=r||0,n=n||1,r<0&&(r=textLen+r),n<0&&(n=textLen+n);for(var o="",a=0,u=s(i),l=0;l<u.length;l++){var c=u[l],f=t.length(c);if(a>=r-(f==2?1:0))if(a+f<=n)o+=c;else break;a+=f}return o}})(xd);lv=xd.exports,cv=Cd(lv),fv=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},dv=Cd(fv);hu=10,dd=(e=0)=>t=>`\x1B[${t+e}m`,hd=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,pd=(e=0)=>(t,s,i)=>`\x1B[${38+e};2;${t};${s};${i}m`,oe={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(oe.modifier);hv=Object.keys(oe.color),pv=Object.keys(oe.bgColor);[...hv,...pv];gv=mv(),_n=new Set(["\x1B","\x9B"]),Dv=39,Eu="\x07",Sd="[",yv="]",Ad="m",Fu=`${yv}8;;`,md=e=>`${_n.values().next().value}${Sd}${e}${Ad}`,gd=e=>`${_n.values().next().value}${Fu}${e}${Eu}`,wv=e=>e.split(" ").map(t=>sr(t)),pu=(e,t,s)=>{let i=[...t],r=!1,n=!1,o=sr(Fd(e[e.length-1]));for(let[a,u]of i.entries()){let l=sr(u);if(o+l<=s?e[e.length-1]+=u:(e.push(u),o=0),_n.has(u)&&(r=!0,n=i.slice(a+1).join("").startsWith(Fu)),r){n?u===Eu&&(r=!1,n=!1):u===Ad&&(r=!1);continue}o+=l,o===s&&a<i.length-1&&(e.push(""),o=0)}!o&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},bv=e=>{let t=e.split(" "),s=t.length;for(;s>0&&!(sr(t[s-1])>0);)s--;return s===t.length?e:t.slice(0,s).join(" ")+t.slice(s).join("")},vv=(e,t,s={})=>{if(s.trim!==!1&&e.trim()==="")return"";let i="",r,n,o=wv(e),a=[""];for(let[l,c]of e.split(" ").entries()){s.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let f=sr(a[a.length-1]);if(l!==0&&(f>=t&&(s.wordWrap===!1||s.trim===!1)&&(a.push(""),f=0),(f>0||s.trim===!1)&&(a[a.length-1]+=" ",f++)),s.hard&&o[l]>t){let d=t-f,p=1+Math.floor((o[l]-d-1)/t);Math.floor((o[l]-1)/t)<p&&a.push(""),pu(a,c,t);continue}if(f+o[l]>t&&f>0&&o[l]>0){if(s.wordWrap===!1&&f<t){pu(a,c,t);continue}a.push("")}if(f+o[l]>t&&s.wordWrap===!1){pu(a,c,t);continue}a[a.length-1]+=c}s.trim!==!1&&(a=a.map(l=>bv(l)));let u=[...a.join(`
|
|
7
|
+
`),r=[];for(let n=0;n<Math.max(s.length,i.length);n++)s[n]!==i[n]&&r.push(n);return r}function kn(e,t){let s=e;s.isTTY&&s.setRawMode(t)}function _v(){return Ae.default.platform!=="win32"?Ae.default.env.TERM!=="linux":!!Ae.default.env.CI||!!Ae.default.env.WT_SESSION||!!Ae.default.env.TERMINUS_SUBLIME||Ae.default.env.ConEmuTask==="{cmd::Cmder}"||Ae.default.env.TERM_PROGRAM==="Terminus-Sublime"||Ae.default.env.TERM_PROGRAM==="vscode"||Ae.default.env.TERM==="xterm-256color"||Ae.default.env.TERM==="alacritty"||Ae.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}async function Id(e,t={}){let s=i=>{if(typeof i!="symbol"||i.toString()!=="Symbol(clack:cancel)")return i;switch(t.cancel){case"reject":{let r=new Error("Prompt cancelled.");throw r.name="ConsolaPromptCancelledError",Error.captureStackTrace&&Error.captureStackTrace(r,Id),r}case"undefined":return;case"null":return null;case"symbol":return kd;default:case"default":return t.default??t.initial}};if(!t.type||t.type==="text")return await Mv({message:e,defaultValue:t.default,placeholder:t.placeholder,initialValue:t.initial}).then(s);if(t.type==="confirm")return await jv({message:e,initialValue:t.initial}).then(s);if(t.type==="select")return await qv({message:e,options:t.options.map(i=>typeof i=="string"?{value:i,label:i}:i),initialValue:t.initial}).then(s);if(t.type==="multiselect")return await Uv({message:e,options:t.options.map(i=>typeof i=="string"?{value:i,label:i}:i),required:t.required,initialValues:t.initial}).then(s);throw new Error(`Unknown prompt type: ${t.type}`)}var lT,Ae,mu,Ed,du,cd,nt,Rn,fd,ov,A,uv,xd,lv,cv,fv,dv,hu,dd,hd,pd,oe,hv,pv,gv,_n,Dv,Eu,Sd,yv,Ad,Fu,md,gd,wv,pu,bv,vv,Ev,In,yd,Cv,xv,qe,ri,gu,Sv,Av,wd,Rv,kv,Iv,bd,Du,yu,$v,ot,Tv,Pv,Bv,Ov,te,ni,wu,bu,Lv,vd,Nv,$n,vu,Mv,jv,qv,Uv,kd,$d=re(()=>{lT=require("node:util"),Ae=gt(require("node:process"),1),mu=gt(require("node:readline"),1),Ed=require("node:tty");nt=rv(),Rn={exports:{}};ov=nv(),A=iv(ov);uv=av();xd={exports:{}};(function(e){var t={};e.exports=t,t.eastAsianWidth=function(i){var r=i.charCodeAt(0),n=i.length==2?i.charCodeAt(1):0,o=r;return 55296<=r&&r<=56319&&56320<=n&&n<=57343&&(r&=1023,n&=1023,o=r<<10|n,o+=65536),o==12288||65281<=o&&o<=65376||65504<=o&&o<=65510?"F":o==8361||65377<=o&&o<=65470||65474<=o&&o<=65479||65482<=o&&o<=65487||65490<=o&&o<=65495||65498<=o&&o<=65500||65512<=o&&o<=65518?"H":4352<=o&&o<=4447||4515<=o&&o<=4519||4602<=o&&o<=4607||9001<=o&&o<=9002||11904<=o&&o<=11929||11931<=o&&o<=12019||12032<=o&&o<=12245||12272<=o&&o<=12283||12289<=o&&o<=12350||12353<=o&&o<=12438||12441<=o&&o<=12543||12549<=o&&o<=12589||12593<=o&&o<=12686||12688<=o&&o<=12730||12736<=o&&o<=12771||12784<=o&&o<=12830||12832<=o&&o<=12871||12880<=o&&o<=13054||13056<=o&&o<=19903||19968<=o&&o<=42124||42128<=o&&o<=42182||43360<=o&&o<=43388||44032<=o&&o<=55203||55216<=o&&o<=55238||55243<=o&&o<=55291||63744<=o&&o<=64255||65040<=o&&o<=65049||65072<=o&&o<=65106||65108<=o&&o<=65126||65128<=o&&o<=65131||110592<=o&&o<=110593||127488<=o&&o<=127490||127504<=o&&o<=127546||127552<=o&&o<=127560||127568<=o&&o<=127569||131072<=o&&o<=194367||177984<=o&&o<=196605||196608<=o&&o<=262141?"W":32<=o&&o<=126||162<=o&&o<=163||165<=o&&o<=166||o==172||o==175||10214<=o&&o<=10221||10629<=o&&o<=10630?"Na":o==161||o==164||167<=o&&o<=168||o==170||173<=o&&o<=174||176<=o&&o<=180||182<=o&&o<=186||188<=o&&o<=191||o==198||o==208||215<=o&&o<=216||222<=o&&o<=225||o==230||232<=o&&o<=234||236<=o&&o<=237||o==240||242<=o&&o<=243||247<=o&&o<=250||o==252||o==254||o==257||o==273||o==275||o==283||294<=o&&o<=295||o==299||305<=o&&o<=307||o==312||319<=o&&o<=322||o==324||328<=o&&o<=331||o==333||338<=o&&o<=339||358<=o&&o<=359||o==363||o==462||o==464||o==466||o==468||o==470||o==472||o==474||o==476||o==593||o==609||o==708||o==711||713<=o&&o<=715||o==717||o==720||728<=o&&o<=731||o==733||o==735||768<=o&&o<=879||913<=o&&o<=929||931<=o&&o<=937||945<=o&&o<=961||963<=o&&o<=969||o==1025||1040<=o&&o<=1103||o==1105||o==8208||8211<=o&&o<=8214||8216<=o&&o<=8217||8220<=o&&o<=8221||8224<=o&&o<=8226||8228<=o&&o<=8231||o==8240||8242<=o&&o<=8243||o==8245||o==8251||o==8254||o==8308||o==8319||8321<=o&&o<=8324||o==8364||o==8451||o==8453||o==8457||o==8467||o==8470||8481<=o&&o<=8482||o==8486||o==8491||8531<=o&&o<=8532||8539<=o&&o<=8542||8544<=o&&o<=8555||8560<=o&&o<=8569||o==8585||8592<=o&&o<=8601||8632<=o&&o<=8633||o==8658||o==8660||o==8679||o==8704||8706<=o&&o<=8707||8711<=o&&o<=8712||o==8715||o==8719||o==8721||o==8725||o==8730||8733<=o&&o<=8736||o==8739||o==8741||8743<=o&&o<=8748||o==8750||8756<=o&&o<=8759||8764<=o&&o<=8765||o==8776||o==8780||o==8786||8800<=o&&o<=8801||8804<=o&&o<=8807||8810<=o&&o<=8811||8814<=o&&o<=8815||8834<=o&&o<=8835||8838<=o&&o<=8839||o==8853||o==8857||o==8869||o==8895||o==8978||9312<=o&&o<=9449||9451<=o&&o<=9547||9552<=o&&o<=9587||9600<=o&&o<=9615||9618<=o&&o<=9621||9632<=o&&o<=9633||9635<=o&&o<=9641||9650<=o&&o<=9651||9654<=o&&o<=9655||9660<=o&&o<=9661||9664<=o&&o<=9665||9670<=o&&o<=9672||o==9675||9678<=o&&o<=9681||9698<=o&&o<=9701||o==9711||9733<=o&&o<=9734||o==9737||9742<=o&&o<=9743||9748<=o&&o<=9749||o==9756||o==9758||o==9792||o==9794||9824<=o&&o<=9825||9827<=o&&o<=9829||9831<=o&&o<=9834||9836<=o&&o<=9837||o==9839||9886<=o&&o<=9887||9918<=o&&o<=9919||9924<=o&&o<=9933||9935<=o&&o<=9953||o==9955||9960<=o&&o<=9983||o==10045||o==10071||10102<=o&&o<=10111||11093<=o&&o<=11097||12872<=o&&o<=12879||57344<=o&&o<=63743||65024<=o&&o<=65039||o==65533||127232<=o&&o<=127242||127248<=o&&o<=127277||127280<=o&&o<=127337||127344<=o&&o<=127386||917760<=o&&o<=917999||983040<=o&&o<=1048573||1048576<=o&&o<=1114109?"A":"N"},t.characterLength=function(i){var r=this.eastAsianWidth(i);return r=="F"||r=="W"||r=="A"?2:1};function s(i){return i.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}t.length=function(i){for(var r=s(i),n=0,o=0;o<r.length;o++)n=n+this.characterLength(r[o]);return n},t.slice=function(i,r,n){textLen=t.length(i),r=r||0,n=n||1,r<0&&(r=textLen+r),n<0&&(n=textLen+n);for(var o="",a=0,u=s(i),l=0;l<u.length;l++){var c=u[l],f=t.length(c);if(a>=r-(f==2?1:0))if(a+f<=n)o+=c;else break;a+=f}return o}})(xd);lv=xd.exports,cv=Cd(lv),fv=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},dv=Cd(fv);hu=10,dd=(e=0)=>t=>`\x1B[${t+e}m`,hd=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,pd=(e=0)=>(t,s,i)=>`\x1B[${38+e};2;${t};${s};${i}m`,oe={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(oe.modifier);hv=Object.keys(oe.color),pv=Object.keys(oe.bgColor);[...hv,...pv];gv=mv(),_n=new Set(["\x1B","\x9B"]),Dv=39,Eu="\x07",Sd="[",yv="]",Ad="m",Fu=`${yv}8;;`,md=e=>`${_n.values().next().value}${Sd}${e}${Ad}`,gd=e=>`${_n.values().next().value}${Fu}${e}${Eu}`,wv=e=>e.split(" ").map(t=>sr(t)),pu=(e,t,s)=>{let i=[...t],r=!1,n=!1,o=sr(Fd(e[e.length-1]));for(let[a,u]of i.entries()){let l=sr(u);if(o+l<=s?e[e.length-1]+=u:(e.push(u),o=0),_n.has(u)&&(r=!0,n=i.slice(a+1).join("").startsWith(Fu)),r){n?u===Eu&&(r=!1,n=!1):u===Ad&&(r=!1);continue}o+=l,o===s&&a<i.length-1&&(e.push(""),o=0)}!o&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},bv=e=>{let t=e.split(" "),s=t.length;for(;s>0&&!(sr(t[s-1])>0);)s--;return s===t.length?e:t.slice(0,s).join(" ")+t.slice(s).join("")},vv=(e,t,s={})=>{if(s.trim!==!1&&e.trim()==="")return"";let i="",r,n,o=wv(e),a=[""];for(let[l,c]of e.split(" ").entries()){s.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let f=sr(a[a.length-1]);if(l!==0&&(f>=t&&(s.wordWrap===!1||s.trim===!1)&&(a.push(""),f=0),(f>0||s.trim===!1)&&(a[a.length-1]+=" ",f++)),s.hard&&o[l]>t){let d=t-f,p=1+Math.floor((o[l]-d-1)/t);Math.floor((o[l]-1)/t)<p&&a.push(""),pu(a,c,t);continue}if(f+o[l]>t&&f>0&&o[l]>0){if(s.wordWrap===!1&&f<t){pu(a,c,t);continue}a.push("")}if(f+o[l]>t&&s.wordWrap===!1){pu(a,c,t);continue}a[a.length-1]+=c}s.trim!==!1&&(a=a.map(l=>bv(l)));let u=[...a.join(`
|
|
8
8
|
`)];for(let[l,c]of u.entries()){if(i+=c,_n.has(c)){let{groups:d}=new RegExp(`(?:\\${Sd}(?<code>\\d+)m|\\${Fu}(?<uri>.*)${Eu})`).exec(u.slice(l).join(""))||{groups:{}};if(d.code!==void 0){let p=Number.parseFloat(d.code);r=p===Dv?void 0:p}else d.uri!==void 0&&(n=d.uri.length===0?void 0:d.uri)}let f=gv.codes.get(Number(r));u[l+1]===`
|
|
9
9
|
`?(n&&(i+=gd("")),r&&f&&(i+=md(f))):c===`
|
|
10
10
|
`&&(r&&f&&(i+=md(r)),n&&(i+=gd(n)))}return i};Ev=["up","down","left","right","space","enter","cancel"],In={actions:new Set(Ev),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]])};globalThis.process.platform.startsWith("win");yd=Symbol("clack:cancel");Cv=Object.defineProperty,xv=(e,t,s)=>t in e?Cv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,qe=(e,t,s)=>(xv(e,typeof t!="symbol"?t+"":t,s),s),ri=class{constructor(t,s=!0){qe(this,"input"),qe(this,"output"),qe(this,"_abortSignal"),qe(this,"rl"),qe(this,"opts"),qe(this,"_render"),qe(this,"_track",!1),qe(this,"_prevFrame",""),qe(this,"_subscribers",new Map),qe(this,"_cursor",0),qe(this,"state","initial"),qe(this,"error",""),qe(this,"value");let{input:i=Ae.stdin,output:r=Ae.stdout,render:n,signal:o,...a}=t;this.opts=a,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=n.bind(this),this._track=s,this._abortSignal=o,this.input=i,this.output=r}unsubscribe(){this._subscribers.clear()}setSubscriber(t,s){let i=this._subscribers.get(t)??[];i.push(s),this._subscribers.set(t,i)}on(t,s){this.setSubscriber(t,{cb:s})}once(t,s){this.setSubscriber(t,{cb:s,once:!0})}emit(t,...s){let i=this._subscribers.get(t)??[],r=[];for(let n of i)n.cb(...s),n.once&&r.push(()=>i.splice(i.indexOf(n),1));for(let n of r)n()}prompt(){return new Promise((t,s)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),t(yd);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}let i=new Ed.WriteStream(0);i._write=(r,n,o)=>{this._track&&(this.value=this.rl?.line.replace(/\t/g,""),this._cursor=this.rl?.cursor??0,this.emit("value",this.value)),o()},this.input.pipe(i),this.rl=mu.default.createInterface({input:this.input,output:i,tabSize:2,prompt:"",escapeCodeTimeout:50}),mu.default.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),kn(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(nt.cursor.show),this.output.off("resize",this.render),kn(this.input,!1),t(this.value)}),this.once("cancel",()=>{this.output.write(nt.cursor.show),this.output.off("resize",this.render),kn(this.input,!1),t(yd)})})}onKeypress(t,s){if(this.state==="error"&&(this.state="active"),s?.name&&(!this._track&&In.aliases.has(s.name)&&this.emit("cursor",In.aliases.get(s.name)),In.actions.has(s.name)&&this.emit("cursor",s.name)),t&&(t.toLowerCase()==="y"||t.toLowerCase()==="n")&&this.emit("confirm",t.toLowerCase()==="y"),t===" "&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),t&&this.emit("key",t.toLowerCase()),s?.name==="return"){if(this.opts.validate){let i=this.opts.validate(this.value);i&&(this.error=i instanceof Error?i.message:i,this.state="error",this.rl?.write(this.value))}this.state!=="error"&&(this.state="submit")}Rd([t,s?.name,s?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
|
|
@@ -49,9 +49,9 @@ ${T.yellow}!${T.reset} Terminated - shutting down gracefully`),process.exit(143)
|
|
|
49
49
|
${T.bold}best-review${T.reset}
|
|
50
50
|
Multi-agent code review
|
|
51
51
|
`)},separator:(e="=",t=80)=>{console.log(e.repeat(t))},newline:()=>console.log()};On=class{frames=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];intervalId=null;frameIndex=0;message;isSpinning=!1;constructor(t){this.message=t}start(){this.isSpinning||(this.isSpinning=!0,Bn.add(this),this.frameIndex=0,process.stdout.write("\x1B[?25l"),this.intervalId=setInterval(()=>{let t=this.frames[this.frameIndex];process.stdout.write(`\r${T.cyan}${t}${T.reset} ${this.message}`),this.frameIndex=(this.frameIndex+1)%this.frames.length},80))}update(t){this.message=t}succeed(t){this.stop();let s=t||this.message;console.log(`${T.green}\u2713${T.reset} ${s}`)}fail(t){this.stop();let s=t||this.message;console.log(`${T.red}\u2717${T.reset} ${s}`)}warn(t){this.stop();let s=t||this.message;console.log(`${T.yellow}!${T.reset} ${s}`)}stop(){this.isSpinning&&(Bn.delete(this),this.isSpinning=!1,this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null),process.stdout.write("\r\x1B[K"),process.stdout.write("\x1B[?25h"))}},VE=10,ui=class{tasks=new Map;taskOrder=[];intervalId=null;frames=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];frameIndex=0;linesWritten=0;isActive=!1;isDirty=!0;exitHandler=null;addTask(t,s,i,r,n,o){let a={id:t,label:s,status:"pending",detail:o,totalBatches:i,completedBatches:0,fileCount:r,ruleCount:n};this.tasks.set(t,a),this.taskOrder.push(t)}start(){this.isActive||(this.isActive=!0,process.stdout.write("\x1B[?25l"),this.exitHandler=()=>{process.stdout.write("\x1B[?25h")},process.on("exit",this.exitHandler),this.render(),this.intervalId=setInterval(()=>{this.frameIndex=(this.frameIndex+1)%this.frames.length;let t=[...this.tasks.values()].some(s=>s.status==="running");(this.isDirty||t)&&(this.render(),this.isDirty=!1)},80))}startTask(t){let s=this.tasks.get(t);s&&s.status!=="running"&&(s.startTime=Date.now(),s.status="running",this.isDirty=!0)}completeBatch(t){let s=this.tasks.get(t);s&&(s.completedBatches++,this.isDirty=!0,s.completedBatches>=s.totalBatches&&(s.status="done",s.startTime&&(s.duration=Date.now()-s.startTime)))}failTask(t){let s=this.tasks.get(t);s&&(s.status="error",this.isDirty=!0,s.startTime&&(s.duration=Date.now()-s.startTime))}getEstimatedTotal(t){return t.fileCount*t.ruleCount*VE*1e3}calculateProgress(t){if(t.status==="done")return 1;if(t.status==="error")return t.completedBatches/Math.max(1,t.totalBatches);if(t.status!=="running"||!t.startTime)return 0;let s=Date.now()-t.startTime,i=this.getEstimatedTotal(t),r=s/i,n=t.completedBatches/Math.max(1,t.totalBatches);return Math.min(.95,Math.max(r,n))}formatProgressBar(t,s=40){let i=Math.round(t*s),r=s-i;return"\u2588".repeat(i)+"\u2591".repeat(r)}render(){this.linesWritten>0&&process.stdout.write(`\x1B[${this.linesWritten}A`);let t=[],s=this.taskOrder.length;for(let i=0;i<this.taskOrder.length;i++){let r=this.taskOrder[i],n=this.tasks.get(r);if(!n)continue;let o=this.formatTaskLine(n,i+1,s);t.push(...o)}for(let i of t)process.stdout.write(`\x1B[K${i}
|
|
52
|
-
`);this.linesWritten=t.length}formatTaskLine(t,s,i){let r=`[${s}/${i}]`.padEnd(7),n,o;switch(t.status){case"pending":n=T.gray,o="\u25CB";break;case"running":n=T.cyan,o=this.frames[this.frameIndex]??"\u280B";break;case"done":n=T.green,o="\u2713";break;case"error":n=T.red,o="\u2717";break}let a=this.calculateProgress(t),u=this.formatProgressBar(a),l=`${n}${u}${T.reset} ${o}`,c="";t.status==="running"&&t.startTime?c=`${((Date.now()-t.startTime)/1e3).toFixed(1)}s`:t.duration!==void 0&&(c=`${(t.duration/1e3).toFixed(1)}s`);let f=t.detail&&t.status!=="pending"?` ${T.dim}| ${t.detail}${T.reset}`:"",d=` ${T.dim}${r}${T.reset} ${t.label}${f}`,p=` ${l} ${c.padEnd(6)}`;return[d,p]}stop(){this.isActive&&(this.isActive=!1,this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null),this.exitHandler&&(process.removeListener("exit",this.exitHandler),this.exitHandler=null),this.render(),process.stdout.write("\x1B[?25h"))}}});var tp={};er(tp,{Glob:()=>Qt,Ignore:()=>ju,escape:()=>Vu,glob:()=>Je,globIterate:()=>Ju,globIterateSync:()=>Dr,globStream:()=>zu,globStreamSync:()=>gr,globSync:()=>Hu,hasMagic:()=>Jh,iterate:()=>Qh,iterateSync:()=>Xh,stream:()=>Zh,streamSync:()=>Yh,sync:()=>ep,unescape:()=>Ss});function _u(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function sF(e){return e.replace(YE,dh).replace(ZE,hh).replace(XE,qu).replace(QE,ph).replace(eF,mh)}function iF(e){return e.replace(WE,"\\").replace(KE,"{").replace(zE,"}").replace(HE,",").replace(JE,".")}function gh(e){if(!e)return[""];let t=[],s=fh("{","}",e);if(!s)return e.split(",");let{pre:i,body:r,post:n}=s,o=i.split(",");o[o.length-1]+="{"+r+"}";let a=gh(n);return n.length&&(o[o.length-1]+=a.shift(),o.push.apply(o,a)),t.push.apply(t,o),t}function rF(e,t={}){if(!e)return[];let{max:s=tF}=t;return e.slice(0,2)==="{}"&&(e="\\{\\}"+e.slice(2)),fr(sF(e),s,!0).map(iF)}function nF(e){return"{"+e+"}"}function oF(e){return/^-?0\d/.test(e)}function aF(e,t){return e<=t}function uF(e,t){return e>=t}function fr(e,t,s){let i=[],r=fh("{","}",e);if(!r)return[e];let n=r.pre,o=r.post.length?fr(r.post,t,!1):[""];if(/\$$/.test(r.pre))for(let a=0;a<o.length&&a<t;a++){let u=n+"{"+r.body+"}"+o[a];i.push(u)}else{let a=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(r.body),u=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(r.body),l=a||u,c=r.body.indexOf(",")>=0;if(!l&&!c)return r.post.match(/,(?!,).*\}/)?(e=r.pre+"{"+r.body+qu+r.post,fr(e,t,!0)):[e];let f;if(l)f=r.body.split(/\.\./);else if(f=gh(r.body),f.length===1&&f[0]!==void 0&&(f=fr(f[0],t,!1).map(nF),f.length===1))return o.map(p=>r.pre+f[0]+p);let d;if(l&&f[0]!==void 0&&f[1]!==void 0){let p=_u(f[0]),m=_u(f[1]),g=Math.max(f[0].length,f[1].length),D=f.length===3&&f[2]!==void 0?Math.abs(_u(f[2])):1,w=aF;m<p&&(D*=-1,w=uF);let y=f.some(oF);d=[];for(let v=p;w(v,m);v+=D){let E;if(u)E=String.fromCharCode(v),E==="\\"&&(E="");else if(E=String(v),y){let F=g-E.length;if(F>0){let S=new Array(F+1).join("0");v<0?E="-"+S+E.slice(1):E=S+E}}d.push(E)}}else{d=[];for(let p=0;p<f.length;p++)d.push.apply(d,fr(f[p],t,!1))}for(let p=0;p<d.length;p++)for(let m=0;m<o.length&&i.length<t;m++){let g=n+d[p]+o[m];(!s||l||g)&&i.push(g)}}return i}function gr(e,t={}){return new Qt(e,t).streamSync()}function zu(e,t={}){return new Qt(e,t).stream()}function Hu(e,t={}){return new Qt(e,t).walkSync()}async function ch(e,t={}){return new Qt(e,t).walk()}function Dr(e,t={}){return new Qt(e,t).iterateSync()}function Ju(e,t={}){return new Qt(e,t).iterate()}var Eh,fi,Ah,bt,JF,Xt,Zn,Gu,Rh,fh,Gd,GE,dh,hh,qu,ph,mh,WE,KE,zE,HE,JE,YE,ZE,XE,QE,eF,tF,zn,lF,nr,cF,Wd,fF,Ss,dF,Kd,hF,Ln,pF,mF,gF,DF,Uu,zd,Hd,Dh,Vu,$e,yF,wF,bF,vF,EF,FF,CF,xF,SF,AF,RF,kF,IF,_F,$F,TF,PF,BF,yh,wh,bh,Jd,OF,_e,LF,NF,MF,jF,qF,Ke,UF,vh,VF,GF,Yd,WF,Zt,KF,Fh,Mu,Ch,Hn,Zd,zF,Yt,xh,Wn,HF,Yn,Xd,YF,ZF,XF,_t,$t,Jt,Nn,or,Mn,Qd,jn,eh,ut,li,ge,ar,ci,De,Ie,ye,$u,qn,Re,ue,Tu,Pu,th,Bu,yt,Ou,Un,ur,Cs,Ue,lr,QF,eC,tC,sC,kh,iC,rC,nC,Jn,oC,hr,Ih,_h,aC,uC,He,$h,Th,wt,Ph,Bh,xs,Oh,ze,cr,Lu,sh,pr,lt,Vn,Kn,ih,lC,Nu,rh,mr,nh,Gn,oh,cC,Lh,Pe,Nh,jh,Uh,Wu,Ku,Vh,$T,fC,dC,hC,pC,Gh,mC,ju,gC,DC,yC,ah,wC,Hh,uh,lh,bC,Qt,Jh,Yh,Zh,Xh,Qh,ep,Je,yr=re(()=>{Eh=require("node:url"),fi=require("node:path"),Ah=require("node:url"),bt=require("fs"),JF=gt(require("node:fs"),1),Xt=require("node:fs/promises"),Zn=require("node:events"),Gu=gt(require("node:stream"),1),Rh=require("node:string_decoder"),fh=(e,t,s)=>{let i=e instanceof RegExp?Gd(e,s):e,r=t instanceof RegExp?Gd(t,s):t,n=i!==null&&r!=null&&GE(i,r,s);return n&&{start:n[0],end:n[1],pre:s.slice(0,n[0]),body:s.slice(n[0]+i.length,n[1]),post:s.slice(n[1]+r.length)}},Gd=(e,t)=>{let s=t.match(e);return s?s[0]:null},GE=(e,t,s)=>{let i,r,n,o,a,u=s.indexOf(e),l=s.indexOf(t,u+1),c=u;if(u>=0&&l>0){if(e===t)return[u,l];for(i=[],n=s.length;c>=0&&!a;){if(c===u)i.push(c),u=s.indexOf(e,c+1);else if(i.length===1){let f=i.pop();f!==void 0&&(a=[f,l])}else r=i.pop(),r!==void 0&&r<n&&(n=r,o=l),l=s.indexOf(t,c+1);c=u<l&&u>=0?u:l}i.length&&o!==void 0&&(a=[n,o])}return a},dh="\0SLASH"+Math.random()+"\0",hh="\0OPEN"+Math.random()+"\0",qu="\0CLOSE"+Math.random()+"\0",ph="\0COMMA"+Math.random()+"\0",mh="\0PERIOD"+Math.random()+"\0",WE=new RegExp(dh,"g"),KE=new RegExp(hh,"g"),zE=new RegExp(qu,"g"),HE=new RegExp(ph,"g"),JE=new RegExp(mh,"g"),YE=/\\\\/g,ZE=/\\{/g,XE=/\\}/g,QE=/\\,/g,eF=/\\./g,tF=1e5;zn=e=>{if(typeof e!="string")throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")},lF={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},nr=e=>e.replace(/[[\]\\-]/g,"\\$&"),cF=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Wd=e=>e.join(""),fF=(e,t)=>{let s=t;if(e.charAt(s)!=="[")throw new Error("not in a brace expression");let i=[],r=[],n=s+1,o=!1,a=!1,u=!1,l=!1,c=s,f="";e:for(;n<e.length;){let m=e.charAt(n);if((m==="!"||m==="^")&&n===s+1){l=!0,n++;continue}if(m==="]"&&o&&!u){c=n+1;break}if(o=!0,m==="\\"&&!u){u=!0,n++;continue}if(m==="["&&!u){for(let[g,[D,w,y]]of Object.entries(lF))if(e.startsWith(g,n)){if(f)return["$.",!1,e.length-s,!0];n+=g.length,y?r.push(D):i.push(D),a=a||w;continue e}}if(u=!1,f){m>f?i.push(nr(f)+"-"+nr(m)):m===f&&i.push(nr(m)),f="",n++;continue}if(e.startsWith("-]",n+1)){i.push(nr(m+"-")),n+=2;continue}if(e.startsWith("-",n+1)){f=m,n+=2;continue}i.push(nr(m)),n++}if(c<n)return["",!1,0,!1];if(!i.length&&!r.length)return["$.",!1,e.length-s,!0];if(r.length===0&&i.length===1&&/^\\?.$/.test(i[0])&&!l){let m=i[0].length===2?i[0].slice(-1):i[0];return[cF(m),!1,c-s,!1]}let d="["+(l?"^":"")+Wd(i)+"]",p="["+(l?"":"^")+Wd(r)+"]";return[i.length&&r.length?"("+d+"|"+p+")":i.length?d:p,a,c-s,!0]},Ss=(e,{windowsPathsNoEscape:t=!1,magicalBraces:s=!0}={})=>s?t?e.replace(/\[([^\/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1"):t?e.replace(/\[([^\/\\{}])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^\/\\{}])\]/g,"$1$2").replace(/\\([^\/{}])/g,"$1"),dF=new Set(["!","?","+","*","@"]),Kd=e=>dF.has(e),hF="(?!(?:^|/)\\.\\.?(?:$|/))",Ln="(?!\\.)",pF=new Set(["[","."]),mF=new Set(["..","."]),gF=new Set("().*{}+?[]^$\\!"),DF=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Uu="[^/]",zd=Uu+"*?",Hd=Uu+"+?",Dh=class Ve{type;#e;#s;#n=!1;#r=[];#o;#b;#D;#c=!1;#a;#d;#f=!1;constructor(t,s,i={}){this.type=t,t&&(this.#s=!0),this.#o=s,this.#e=this.#o?this.#o.#e:this,this.#a=this.#e===this?i:this.#e.#a,this.#D=this.#e===this?[]:this.#e.#D,t==="!"&&!this.#e.#c&&this.#D.push(this),this.#b=this.#o?this.#o.#r.length:0}get hasMagic(){if(this.#s!==void 0)return this.#s;for(let t of this.#r)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#s=!0;return this.#s}toString(){return this.#d!==void 0?this.#d:this.type?this.#d=this.type+"("+this.#r.map(t=>String(t)).join("|")+")":this.#d=this.#r.map(t=>String(t)).join("")}#u(){if(this!==this.#e)throw new Error("should only call on root");if(this.#c)return this;this.toString(),this.#c=!0;let t;for(;t=this.#D.pop();){if(t.type!=="!")continue;let s=t,i=s.#o;for(;i;){for(let r=s.#b+1;!i.type&&r<i.#r.length;r++)for(let n of t.#r){if(typeof n=="string")throw new Error("string part in extglob AST??");n.copyIn(i.#r[r])}s=i,i=s.#o}}return this}push(...t){for(let s of t)if(s!==""){if(typeof s!="string"&&!(s instanceof Ve&&s.#o===this))throw new Error("invalid part: "+s);this.#r.push(s)}}toJSON(){let t=this.type===null?this.#r.slice().map(s=>typeof s=="string"?s:s.toJSON()):[this.type,...this.#r.map(s=>s.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#c&&this.#o?.type==="!")&&t.push({}),t}isStart(){if(this.#e===this)return!0;if(!this.#o?.isStart())return!1;if(this.#b===0)return!0;let t=this.#o;for(let s=0;s<this.#b;s++){let i=t.#r[s];if(!(i instanceof Ve&&i.type==="!"))return!1}return!0}isEnd(){if(this.#e===this||this.#o?.type==="!")return!0;if(!this.#o?.isEnd())return!1;if(!this.type)return this.#o?.isEnd();let t=this.#o?this.#o.#r.length:0;return this.#b===t-1}copyIn(t){typeof t=="string"?this.push(t):this.push(t.clone(this))}clone(t){let s=new Ve(this.type,t);for(let i of this.#r)s.copyIn(i);return s}static#i(t,s,i,r){let n=!1,o=!1,a=-1,u=!1;if(s.type===null){let p=i,m="";for(;p<t.length;){let g=t.charAt(p++);if(n||g==="\\"){n=!n,m+=g;continue}if(o){p===a+1?(g==="^"||g==="!")&&(u=!0):g==="]"&&!(p===a+2&&u)&&(o=!1),m+=g;continue}else if(g==="["){o=!0,a=p,u=!1,m+=g;continue}if(!r.noext&&Kd(g)&&t.charAt(p)==="("){s.push(m),m="";let D=new Ve(g,s);p=Ve.#i(t,D,p,r),s.push(D);continue}m+=g}return s.push(m),p}let l=i+1,c=new Ve(null,s),f=[],d="";for(;l<t.length;){let p=t.charAt(l++);if(n||p==="\\"){n=!n,d+=p;continue}if(o){l===a+1?(p==="^"||p==="!")&&(u=!0):p==="]"&&!(l===a+2&&u)&&(o=!1),d+=p;continue}else if(p==="["){o=!0,a=l,u=!1,d+=p;continue}if(Kd(p)&&t.charAt(l)==="("){c.push(d),d="";let m=new Ve(p,c);c.push(m),l=Ve.#i(t,m,l,r);continue}if(p==="|"){c.push(d),d="",f.push(c),c=new Ve(null,s);continue}if(p===")")return d===""&&s.#r.length===0&&(s.#f=!0),c.push(d),d="",s.push(...f,c),l;d+=p}return s.type=null,s.#s=void 0,s.#r=[t.substring(i-1)],l}static fromGlob(t,s={}){let i=new Ve(null,void 0,s);return Ve.#i(t,i,0,s),i}toMMPattern(){if(this!==this.#e)return this.#e.toMMPattern();let t=this.toString(),[s,i,r,n]=this.toRegExpSource();if(!(r||this.#s||this.#a.nocase&&!this.#a.nocaseMagicOnly&&t.toUpperCase()!==t.toLowerCase()))return i;let o=(this.#a.nocase?"i":"")+(n?"u":"");return Object.assign(new RegExp(`^${s}$`,o),{_src:s,_glob:t})}get options(){return this.#a}toRegExpSource(t){let s=t??!!this.#a.dot;if(this.#e===this&&this.#u(),!this.type){let u=this.isStart()&&this.isEnd()&&!this.#r.some(d=>typeof d!="string"),l=this.#r.map(d=>{let[p,m,g,D]=typeof d=="string"?Ve.#v(d,this.#s,u):d.toRegExpSource(t);return this.#s=this.#s||g,this.#n=this.#n||D,p}).join(""),c="";if(this.isStart()&&typeof this.#r[0]=="string"&&!(this.#r.length===1&&mF.has(this.#r[0]))){let d=pF,p=s&&d.has(l.charAt(0))||l.startsWith("\\.")&&d.has(l.charAt(2))||l.startsWith("\\.\\.")&&d.has(l.charAt(4)),m=!s&&!t&&d.has(l.charAt(0));c=p?hF:m?Ln:""}let f="";return this.isEnd()&&this.#e.#c&&this.#o?.type==="!"&&(f="(?:$|\\/)"),[c+l+f,Ss(l),this.#s=!!this.#s,this.#n]}let i=this.type==="*"||this.type==="+",r=this.type==="!"?"(?:(?!(?:":"(?:",n=this.#h(s);if(this.isStart()&&this.isEnd()&&!n&&this.type!=="!"){let u=this.toString();return this.#r=[u],this.type=null,this.#s=void 0,[u,Ss(this.toString()),!1,!1]}let o=!i||t||s||!Ln?"":this.#h(!0);o===n&&(o=""),o&&(n=`(?:${n})(?:${o})*?`);let a="";if(this.type==="!"&&this.#f)a=(this.isStart()&&!s?Ln:"")+Hd;else{let u=this.type==="!"?"))"+(this.isStart()&&!s&&!t?Ln:"")+zd+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&o?")":this.type==="*"&&o?")?":`)${this.type}`;a=r+n+u}return[a,Ss(n),this.#s=!!this.#s,this.#n]}#h(t){return this.#r.map(s=>{if(typeof s=="string")throw new Error("string type in extglob ast??");let[i,r,n,o]=s.toRegExpSource(t);return this.#n=this.#n||o,i}).filter(s=>!(this.isStart()&&this.isEnd())||!!s).join("|")}static#v(t,s,i=!1){let r=!1,n="",o=!1,a=!1;for(let u=0;u<t.length;u++){let l=t.charAt(u);if(r){r=!1,n+=(gF.has(l)?"\\":"")+l;continue}if(l==="*"){if(a)continue;a=!0,n+=i&&/^[*]+$/.test(t)?Hd:zd,s=!0;continue}else a=!1;if(l==="\\"){u===t.length-1?n+="\\\\":r=!0;continue}if(l==="["){let[c,f,d,p]=fF(t,u);if(d){n+=c,o=o||f,u+=d-1,s=s||p;continue}}if(l==="?"){n+=Uu,s=!0;continue}n+=DF(l)}return[n,Ss(t),!!s,o]}},Vu=(e,{windowsPathsNoEscape:t=!1,magicalBraces:s=!1}={})=>s?t?e.replace(/[?*()[\]{}]/g,"[$&]"):e.replace(/[?*()[\]\\{}]/g,"\\$&"):t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&"),$e=(e,t,s={})=>(zn(t),!s.nocomment&&t.charAt(0)==="#"?!1:new Zt(t,s).match(e)),yF=/^\*+([^+@!?\*\[\(]*)$/,wF=e=>t=>!t.startsWith(".")&&t.endsWith(e),bF=e=>t=>t.endsWith(e),vF=e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)),EF=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),FF=/^\*+\.\*+$/,CF=e=>!e.startsWith(".")&&e.includes("."),xF=e=>e!=="."&&e!==".."&&e.includes("."),SF=/^\.\*+$/,AF=e=>e!=="."&&e!==".."&&e.startsWith("."),RF=/^\*+$/,kF=e=>e.length!==0&&!e.startsWith("."),IF=e=>e.length!==0&&e!=="."&&e!=="..",_F=/^\?+([^+@!?\*\[\(]*)?$/,$F=([e,t=""])=>{let s=yh([e]);return t?(t=t.toLowerCase(),i=>s(i)&&i.toLowerCase().endsWith(t)):s},TF=([e,t=""])=>{let s=wh([e]);return t?(t=t.toLowerCase(),i=>s(i)&&i.toLowerCase().endsWith(t)):s},PF=([e,t=""])=>{let s=wh([e]);return t?i=>s(i)&&i.endsWith(t):s},BF=([e,t=""])=>{let s=yh([e]);return t?i=>s(i)&&i.endsWith(t):s},yh=([e])=>{let t=e.length;return s=>s.length===t&&!s.startsWith(".")},wh=([e])=>{let t=e.length;return s=>s.length===t&&s!=="."&&s!==".."},bh=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",Jd={win32:{sep:"\\"},posix:{sep:"/"}},OF=bh==="win32"?Jd.win32.sep:Jd.posix.sep;$e.sep=OF;_e=Symbol("globstar **");$e.GLOBSTAR=_e;LF="[^/]",NF=LF+"*?",MF="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",jF="(?:(?!(?:\\/|^)\\.).)*?",qF=(e,t={})=>s=>$e(s,e,t);$e.filter=qF;Ke=(e,t={})=>Object.assign({},e,t),UF=e=>{if(!e||typeof e!="object"||!Object.keys(e).length)return $e;let t=$e;return Object.assign((s,i,r={})=>t(s,i,Ke(e,r)),{Minimatch:class extends t.Minimatch{constructor(s,i={}){super(s,Ke(e,i))}static defaults(s){return t.defaults(Ke(e,s)).Minimatch}},AST:class extends t.AST{constructor(s,i,r={}){super(s,i,Ke(e,r))}static fromGlob(s,i={}){return t.AST.fromGlob(s,Ke(e,i))}},unescape:(s,i={})=>t.unescape(s,Ke(e,i)),escape:(s,i={})=>t.escape(s,Ke(e,i)),filter:(s,i={})=>t.filter(s,Ke(e,i)),defaults:s=>t.defaults(Ke(e,s)),makeRe:(s,i={})=>t.makeRe(s,Ke(e,i)),braceExpand:(s,i={})=>t.braceExpand(s,Ke(e,i)),match:(s,i,r={})=>t.match(s,i,Ke(e,r)),sep:t.sep,GLOBSTAR:_e})};$e.defaults=UF;vh=(e,t={})=>(zn(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:rF(e,{max:t.braceExpandMax}));$e.braceExpand=vh;VF=(e,t={})=>new Zt(e,t).makeRe();$e.makeRe=VF;GF=(e,t,s={})=>{let i=new Zt(t,s);return e=e.filter(r=>i.match(r)),i.options.nonull&&!e.length&&e.push(t),e};$e.match=GF;Yd=/[?*]|[+@!]\(.*?\)|\[|\]/,WF=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Zt=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(e,t={}){zn(e),t=t||{},this.options=t,this.pattern=e,this.platform=t.platform||bh,this.isWindows=this.platform==="win32";let s="allowWindowsEscape";this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t[s]===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=t.windowsNoMagicRoot!==void 0?t.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let e of this.set)for(let t of e)if(typeof t!="string")return!0;return!1}debug(...e){}make(){let e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)==="#"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=(...r)=>console.error(...r)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(r=>this.slashSplit(r));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let i=this.globParts.map((r,n,o)=>{if(this.isWindows&&this.windowsNoMagicRoot){let a=r[0]===""&&r[1]===""&&(r[2]==="?"||!Yd.test(r[2]))&&!Yd.test(r[3]),u=/^[a-z]:/i.test(r[0]);if(a)return[...r.slice(0,4),...r.slice(4).map(l=>this.parse(l))];if(u)return[r[0],...r.slice(1).map(l=>this.parse(l))]}return r.map(a=>this.parse(a))});if(this.debug(this.pattern,i),this.set=i.filter(r=>r.indexOf(!1)===-1),this.isWindows)for(let r=0;r<this.set.length;r++){let n=this.set[r];n[0]===""&&n[1]===""&&this.globParts[r][2]==="?"&&typeof n[3]=="string"&&/^[a-z]:$/i.test(n[3])&&(n[2]="?")}this.debug(this.pattern,this.set)}preprocess(e){if(this.options.noglobstar)for(let s=0;s<e.length;s++)for(let i=0;i<e[s].length;i++)e[s][i]==="**"&&(e[s][i]="*");let{optimizationLevel:t=1}=this.options;return t>=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):t>=1?e=this.levelOneOptimize(e):e=this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(t=>{let s=-1;for(;(s=t.indexOf("**",s+1))!==-1;){let i=s;for(;t[i+1]==="**";)i++;i!==s&&t.splice(s,i-s)}return t})}levelOneOptimize(e){return e.map(t=>(t=t.reduce((s,i)=>{let r=s[s.length-1];return i==="**"&&r==="**"?s:i===".."&&r&&r!==".."&&r!=="."&&r!=="**"?(s.pop(),s):(s.push(i),s)},[]),t.length===0?[""]:t))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let i=1;i<e.length-1;i++){let r=e[i];i===1&&r===""&&e[0]===""||(r==="."||r==="")&&(t=!0,e.splice(i,1),i--)}e[0]==="."&&e.length===2&&(e[1]==="."||e[1]==="")&&(t=!0,e.pop())}let s=0;for(;(s=e.indexOf("..",s+1))!==-1;){let i=e[s-1];i&&i!=="."&&i!==".."&&i!=="**"&&(t=!0,e.splice(s-1,2),s-=2)}}while(t);return e.length===0?[""]:e}firstPhasePreProcess(e){let t=!1;do{t=!1;for(let s of e){let i=-1;for(;(i=s.indexOf("**",i+1))!==-1;){let n=i;for(;s[n+1]==="**";)n++;n>i&&s.splice(i+1,n-i);let o=s[i+1],a=s[i+2],u=s[i+3];if(o!==".."||!a||a==="."||a===".."||!u||u==="."||u==="..")continue;t=!0,s.splice(i,1);let l=s.slice(0);l[i]="**",e.push(l),i--}if(!this.preserveMultipleSlashes){for(let n=1;n<s.length-1;n++){let o=s[n];n===1&&o===""&&s[0]===""||(o==="."||o==="")&&(t=!0,s.splice(n,1),n--)}s[0]==="."&&s.length===2&&(s[1]==="."||s[1]==="")&&(t=!0,s.pop())}let r=0;for(;(r=s.indexOf("..",r+1))!==-1;){let n=s[r-1];if(n&&n!=="."&&n!==".."&&n!=="**"){t=!0;let o=r===1&&s[r+1]==="**"?["."]:[];s.splice(r-1,2,...o),s.length===0&&s.push(""),r-=2}}}}while(t);return e}secondPhasePreProcess(e){for(let t=0;t<e.length-1;t++)for(let s=t+1;s<e.length;s++){let i=this.partsMatch(e[t],e[s],!this.preserveMultipleSlashes);if(i){e[t]=[],e[s]=i;break}}return e.filter(t=>t.length)}partsMatch(e,t,s=!1){let i=0,r=0,n=[],o="";for(;i<e.length&&r<t.length;)if(e[i]===t[r])n.push(o==="b"?t[r]:e[i]),i++,r++;else if(s&&e[i]==="**"&&t[r]===e[i+1])n.push(e[i]),i++;else if(s&&t[r]==="**"&&e[i]===t[r+1])n.push(t[r]),r++;else if(e[i]==="*"&&t[r]&&(this.options.dot||!t[r].startsWith("."))&&t[r]!=="**"){if(o==="b")return!1;o="a",n.push(e[i]),i++,r++}else if(t[r]==="*"&&e[i]&&(this.options.dot||!e[i].startsWith("."))&&e[i]!=="**"){if(o==="a")return!1;o="b",n.push(t[r]),i++,r++}else return!1;return e.length===t.length&&n}parseNegate(){if(this.nonegate)return;let e=this.pattern,t=!1,s=0;for(let i=0;i<e.length&&e.charAt(i)==="!";i++)t=!t,s++;s&&(this.pattern=e.slice(s)),this.negate=t}matchOne(e,t,s=!1){let i=this.options;if(this.isWindows){let m=typeof e[0]=="string"&&/^[a-z]:$/i.test(e[0]),g=!m&&e[0]===""&&e[1]===""&&e[2]==="?"&&/^[a-z]:$/i.test(e[3]),D=typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0]),w=!D&&t[0]===""&&t[1]===""&&t[2]==="?"&&typeof t[3]=="string"&&/^[a-z]:$/i.test(t[3]),y=g?3:m?0:void 0,v=w?3:D?0:void 0;if(typeof y=="number"&&typeof v=="number"){let[E,F]=[e[y],t[v]];E.toLowerCase()===F.toLowerCase()&&(t[v]=E,v>y?t=t.slice(v):y>v&&(e=e.slice(y)))}}let{optimizationLevel:r=1}=this.options;r>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:t}),this.debug("matchOne",e.length,t.length);for(var n=0,o=0,a=e.length,u=t.length;n<a&&o<u;n++,o++){this.debug("matchOne loop");var l=t[o],c=e[n];if(this.debug(t,l,c),l===!1)return!1;if(l===_e){this.debug("GLOBSTAR",[t,l,c]);var f=n,d=o+1;if(d===u){for(this.debug("** at the end");n<a;n++)if(e[n]==="."||e[n]===".."||!i.dot&&e[n].charAt(0)===".")return!1;return!0}for(;f<a;){var p=e[f];if(this.debug(`
|
|
52
|
+
`);this.linesWritten=t.length}formatTaskLine(t,s,i){let r=`[${s}/${i}]`.padEnd(7),n,o;switch(t.status){case"pending":n=T.gray,o="\u25CB";break;case"running":n=T.cyan,o=this.frames[this.frameIndex]??"\u280B";break;case"done":n=T.green,o="\u2713";break;case"error":n=T.red,o="\u2717";break}let a=this.calculateProgress(t),u=this.formatProgressBar(a),l=`${n}${u}${T.reset} ${o}`,c="";t.status==="running"&&t.startTime?c=`${((Date.now()-t.startTime)/1e3).toFixed(1)}s`:t.duration!==void 0&&(c=`${(t.duration/1e3).toFixed(1)}s`);let f=t.detail&&t.status!=="pending"?` ${T.dim}| ${t.detail}${T.reset}`:"",d=` ${T.dim}${r}${T.reset} ${t.label}${f}`,p=` ${l} ${c.padEnd(6)}`;return[d,p]}stop(){this.isActive&&(this.isActive=!1,this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null),this.exitHandler&&(process.removeListener("exit",this.exitHandler),this.exitHandler=null),this.render(),process.stdout.write("\x1B[?25h"))}}});var tp={};er(tp,{Glob:()=>Qt,Ignore:()=>ju,escape:()=>Vu,glob:()=>Je,globIterate:()=>Ju,globIterateSync:()=>Dr,globStream:()=>zu,globStreamSync:()=>gr,globSync:()=>Hu,hasMagic:()=>Jh,iterate:()=>Qh,iterateSync:()=>Xh,stream:()=>Zh,streamSync:()=>Yh,sync:()=>ep,unescape:()=>Ss});function _u(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function sF(e){return e.replace(YE,dh).replace(ZE,hh).replace(XE,qu).replace(QE,ph).replace(eF,mh)}function iF(e){return e.replace(WE,"\\").replace(KE,"{").replace(zE,"}").replace(HE,",").replace(JE,".")}function gh(e){if(!e)return[""];let t=[],s=fh("{","}",e);if(!s)return e.split(",");let{pre:i,body:r,post:n}=s,o=i.split(",");o[o.length-1]+="{"+r+"}";let a=gh(n);return n.length&&(o[o.length-1]+=a.shift(),o.push.apply(o,a)),t.push.apply(t,o),t}function rF(e,t={}){if(!e)return[];let{max:s=tF}=t;return e.slice(0,2)==="{}"&&(e="\\{\\}"+e.slice(2)),fr(sF(e),s,!0).map(iF)}function nF(e){return"{"+e+"}"}function oF(e){return/^-?0\d/.test(e)}function aF(e,t){return e<=t}function uF(e,t){return e>=t}function fr(e,t,s){let i=[],r=fh("{","}",e);if(!r)return[e];let n=r.pre,o=r.post.length?fr(r.post,t,!1):[""];if(/\$$/.test(r.pre))for(let a=0;a<o.length&&a<t;a++){let u=n+"{"+r.body+"}"+o[a];i.push(u)}else{let a=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(r.body),u=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(r.body),l=a||u,c=r.body.indexOf(",")>=0;if(!l&&!c)return r.post.match(/,(?!,).*\}/)?(e=r.pre+"{"+r.body+qu+r.post,fr(e,t,!0)):[e];let f;if(l)f=r.body.split(/\.\./);else if(f=gh(r.body),f.length===1&&f[0]!==void 0&&(f=fr(f[0],t,!1).map(nF),f.length===1))return o.map(p=>r.pre+f[0]+p);let d;if(l&&f[0]!==void 0&&f[1]!==void 0){let p=_u(f[0]),m=_u(f[1]),g=Math.max(f[0].length,f[1].length),D=f.length===3&&f[2]!==void 0?Math.abs(_u(f[2])):1,w=aF;m<p&&(D*=-1,w=uF);let y=f.some(oF);d=[];for(let v=p;w(v,m);v+=D){let E;if(u)E=String.fromCharCode(v),E==="\\"&&(E="");else if(E=String(v),y){let F=g-E.length;if(F>0){let S=new Array(F+1).join("0");v<0?E="-"+S+E.slice(1):E=S+E}}d.push(E)}}else{d=[];for(let p=0;p<f.length;p++)d.push.apply(d,fr(f[p],t,!1))}for(let p=0;p<d.length;p++)for(let m=0;m<o.length&&i.length<t;m++){let g=n+d[p]+o[m];(!s||l||g)&&i.push(g)}}return i}function gr(e,t={}){return new Qt(e,t).streamSync()}function zu(e,t={}){return new Qt(e,t).stream()}function Hu(e,t={}){return new Qt(e,t).walkSync()}async function ch(e,t={}){return new Qt(e,t).walk()}function Dr(e,t={}){return new Qt(e,t).iterateSync()}function Ju(e,t={}){return new Qt(e,t).iterate()}var Eh,fi,Ah,bt,JF,Xt,Zn,Gu,Rh,fh,Gd,GE,dh,hh,qu,ph,mh,WE,KE,zE,HE,JE,YE,ZE,XE,QE,eF,tF,zn,lF,nr,cF,Wd,fF,Ss,dF,Kd,hF,Ln,pF,mF,gF,DF,Uu,zd,Hd,Dh,Vu,$e,yF,wF,bF,vF,EF,FF,CF,xF,SF,AF,RF,kF,IF,_F,$F,TF,PF,BF,yh,wh,bh,Jd,OF,_e,LF,NF,MF,jF,qF,Ke,UF,vh,VF,GF,Yd,WF,Zt,KF,Fh,Mu,Ch,Hn,Zd,zF,Yt,xh,Wn,HF,Yn,Xd,YF,ZF,XF,_t,$t,Jt,Nn,or,Mn,Qd,jn,eh,ut,li,ge,ar,ci,De,Ie,ye,$u,qn,Re,ue,Tu,Pu,th,Bu,yt,Ou,Un,ur,Cs,Ue,lr,QF,eC,tC,sC,kh,iC,rC,nC,Jn,oC,hr,Ih,_h,aC,uC,He,$h,Th,wt,Ph,Bh,xs,Oh,ze,cr,Lu,sh,pr,lt,Vn,Kn,ih,lC,Nu,rh,mr,nh,Gn,oh,cC,Lh,Pe,Nh,jh,Uh,Wu,Ku,Vh,TT,fC,dC,hC,pC,Gh,mC,ju,gC,DC,yC,ah,wC,Hh,uh,lh,bC,Qt,Jh,Yh,Zh,Xh,Qh,ep,Je,yr=re(()=>{Eh=require("node:url"),fi=require("node:path"),Ah=require("node:url"),bt=require("fs"),JF=gt(require("node:fs"),1),Xt=require("node:fs/promises"),Zn=require("node:events"),Gu=gt(require("node:stream"),1),Rh=require("node:string_decoder"),fh=(e,t,s)=>{let i=e instanceof RegExp?Gd(e,s):e,r=t instanceof RegExp?Gd(t,s):t,n=i!==null&&r!=null&&GE(i,r,s);return n&&{start:n[0],end:n[1],pre:s.slice(0,n[0]),body:s.slice(n[0]+i.length,n[1]),post:s.slice(n[1]+r.length)}},Gd=(e,t)=>{let s=t.match(e);return s?s[0]:null},GE=(e,t,s)=>{let i,r,n,o,a,u=s.indexOf(e),l=s.indexOf(t,u+1),c=u;if(u>=0&&l>0){if(e===t)return[u,l];for(i=[],n=s.length;c>=0&&!a;){if(c===u)i.push(c),u=s.indexOf(e,c+1);else if(i.length===1){let f=i.pop();f!==void 0&&(a=[f,l])}else r=i.pop(),r!==void 0&&r<n&&(n=r,o=l),l=s.indexOf(t,c+1);c=u<l&&u>=0?u:l}i.length&&o!==void 0&&(a=[n,o])}return a},dh="\0SLASH"+Math.random()+"\0",hh="\0OPEN"+Math.random()+"\0",qu="\0CLOSE"+Math.random()+"\0",ph="\0COMMA"+Math.random()+"\0",mh="\0PERIOD"+Math.random()+"\0",WE=new RegExp(dh,"g"),KE=new RegExp(hh,"g"),zE=new RegExp(qu,"g"),HE=new RegExp(ph,"g"),JE=new RegExp(mh,"g"),YE=/\\\\/g,ZE=/\\{/g,XE=/\\}/g,QE=/\\,/g,eF=/\\./g,tF=1e5;zn=e=>{if(typeof e!="string")throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")},lF={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},nr=e=>e.replace(/[[\]\\-]/g,"\\$&"),cF=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Wd=e=>e.join(""),fF=(e,t)=>{let s=t;if(e.charAt(s)!=="[")throw new Error("not in a brace expression");let i=[],r=[],n=s+1,o=!1,a=!1,u=!1,l=!1,c=s,f="";e:for(;n<e.length;){let m=e.charAt(n);if((m==="!"||m==="^")&&n===s+1){l=!0,n++;continue}if(m==="]"&&o&&!u){c=n+1;break}if(o=!0,m==="\\"&&!u){u=!0,n++;continue}if(m==="["&&!u){for(let[g,[D,w,y]]of Object.entries(lF))if(e.startsWith(g,n)){if(f)return["$.",!1,e.length-s,!0];n+=g.length,y?r.push(D):i.push(D),a=a||w;continue e}}if(u=!1,f){m>f?i.push(nr(f)+"-"+nr(m)):m===f&&i.push(nr(m)),f="",n++;continue}if(e.startsWith("-]",n+1)){i.push(nr(m+"-")),n+=2;continue}if(e.startsWith("-",n+1)){f=m,n+=2;continue}i.push(nr(m)),n++}if(c<n)return["",!1,0,!1];if(!i.length&&!r.length)return["$.",!1,e.length-s,!0];if(r.length===0&&i.length===1&&/^\\?.$/.test(i[0])&&!l){let m=i[0].length===2?i[0].slice(-1):i[0];return[cF(m),!1,c-s,!1]}let d="["+(l?"^":"")+Wd(i)+"]",p="["+(l?"":"^")+Wd(r)+"]";return[i.length&&r.length?"("+d+"|"+p+")":i.length?d:p,a,c-s,!0]},Ss=(e,{windowsPathsNoEscape:t=!1,magicalBraces:s=!0}={})=>s?t?e.replace(/\[([^\/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1"):t?e.replace(/\[([^\/\\{}])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^\/\\{}])\]/g,"$1$2").replace(/\\([^\/{}])/g,"$1"),dF=new Set(["!","?","+","*","@"]),Kd=e=>dF.has(e),hF="(?!(?:^|/)\\.\\.?(?:$|/))",Ln="(?!\\.)",pF=new Set(["[","."]),mF=new Set(["..","."]),gF=new Set("().*{}+?[]^$\\!"),DF=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Uu="[^/]",zd=Uu+"*?",Hd=Uu+"+?",Dh=class Ve{type;#e;#s;#n=!1;#r=[];#o;#b;#D;#c=!1;#a;#d;#f=!1;constructor(t,s,i={}){this.type=t,t&&(this.#s=!0),this.#o=s,this.#e=this.#o?this.#o.#e:this,this.#a=this.#e===this?i:this.#e.#a,this.#D=this.#e===this?[]:this.#e.#D,t==="!"&&!this.#e.#c&&this.#D.push(this),this.#b=this.#o?this.#o.#r.length:0}get hasMagic(){if(this.#s!==void 0)return this.#s;for(let t of this.#r)if(typeof t!="string"&&(t.type||t.hasMagic))return this.#s=!0;return this.#s}toString(){return this.#d!==void 0?this.#d:this.type?this.#d=this.type+"("+this.#r.map(t=>String(t)).join("|")+")":this.#d=this.#r.map(t=>String(t)).join("")}#u(){if(this!==this.#e)throw new Error("should only call on root");if(this.#c)return this;this.toString(),this.#c=!0;let t;for(;t=this.#D.pop();){if(t.type!=="!")continue;let s=t,i=s.#o;for(;i;){for(let r=s.#b+1;!i.type&&r<i.#r.length;r++)for(let n of t.#r){if(typeof n=="string")throw new Error("string part in extglob AST??");n.copyIn(i.#r[r])}s=i,i=s.#o}}return this}push(...t){for(let s of t)if(s!==""){if(typeof s!="string"&&!(s instanceof Ve&&s.#o===this))throw new Error("invalid part: "+s);this.#r.push(s)}}toJSON(){let t=this.type===null?this.#r.slice().map(s=>typeof s=="string"?s:s.toJSON()):[this.type,...this.#r.map(s=>s.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#c&&this.#o?.type==="!")&&t.push({}),t}isStart(){if(this.#e===this)return!0;if(!this.#o?.isStart())return!1;if(this.#b===0)return!0;let t=this.#o;for(let s=0;s<this.#b;s++){let i=t.#r[s];if(!(i instanceof Ve&&i.type==="!"))return!1}return!0}isEnd(){if(this.#e===this||this.#o?.type==="!")return!0;if(!this.#o?.isEnd())return!1;if(!this.type)return this.#o?.isEnd();let t=this.#o?this.#o.#r.length:0;return this.#b===t-1}copyIn(t){typeof t=="string"?this.push(t):this.push(t.clone(this))}clone(t){let s=new Ve(this.type,t);for(let i of this.#r)s.copyIn(i);return s}static#i(t,s,i,r){let n=!1,o=!1,a=-1,u=!1;if(s.type===null){let p=i,m="";for(;p<t.length;){let g=t.charAt(p++);if(n||g==="\\"){n=!n,m+=g;continue}if(o){p===a+1?(g==="^"||g==="!")&&(u=!0):g==="]"&&!(p===a+2&&u)&&(o=!1),m+=g;continue}else if(g==="["){o=!0,a=p,u=!1,m+=g;continue}if(!r.noext&&Kd(g)&&t.charAt(p)==="("){s.push(m),m="";let D=new Ve(g,s);p=Ve.#i(t,D,p,r),s.push(D);continue}m+=g}return s.push(m),p}let l=i+1,c=new Ve(null,s),f=[],d="";for(;l<t.length;){let p=t.charAt(l++);if(n||p==="\\"){n=!n,d+=p;continue}if(o){l===a+1?(p==="^"||p==="!")&&(u=!0):p==="]"&&!(l===a+2&&u)&&(o=!1),d+=p;continue}else if(p==="["){o=!0,a=l,u=!1,d+=p;continue}if(Kd(p)&&t.charAt(l)==="("){c.push(d),d="";let m=new Ve(p,c);c.push(m),l=Ve.#i(t,m,l,r);continue}if(p==="|"){c.push(d),d="",f.push(c),c=new Ve(null,s);continue}if(p===")")return d===""&&s.#r.length===0&&(s.#f=!0),c.push(d),d="",s.push(...f,c),l;d+=p}return s.type=null,s.#s=void 0,s.#r=[t.substring(i-1)],l}static fromGlob(t,s={}){let i=new Ve(null,void 0,s);return Ve.#i(t,i,0,s),i}toMMPattern(){if(this!==this.#e)return this.#e.toMMPattern();let t=this.toString(),[s,i,r,n]=this.toRegExpSource();if(!(r||this.#s||this.#a.nocase&&!this.#a.nocaseMagicOnly&&t.toUpperCase()!==t.toLowerCase()))return i;let o=(this.#a.nocase?"i":"")+(n?"u":"");return Object.assign(new RegExp(`^${s}$`,o),{_src:s,_glob:t})}get options(){return this.#a}toRegExpSource(t){let s=t??!!this.#a.dot;if(this.#e===this&&this.#u(),!this.type){let u=this.isStart()&&this.isEnd()&&!this.#r.some(d=>typeof d!="string"),l=this.#r.map(d=>{let[p,m,g,D]=typeof d=="string"?Ve.#v(d,this.#s,u):d.toRegExpSource(t);return this.#s=this.#s||g,this.#n=this.#n||D,p}).join(""),c="";if(this.isStart()&&typeof this.#r[0]=="string"&&!(this.#r.length===1&&mF.has(this.#r[0]))){let d=pF,p=s&&d.has(l.charAt(0))||l.startsWith("\\.")&&d.has(l.charAt(2))||l.startsWith("\\.\\.")&&d.has(l.charAt(4)),m=!s&&!t&&d.has(l.charAt(0));c=p?hF:m?Ln:""}let f="";return this.isEnd()&&this.#e.#c&&this.#o?.type==="!"&&(f="(?:$|\\/)"),[c+l+f,Ss(l),this.#s=!!this.#s,this.#n]}let i=this.type==="*"||this.type==="+",r=this.type==="!"?"(?:(?!(?:":"(?:",n=this.#h(s);if(this.isStart()&&this.isEnd()&&!n&&this.type!=="!"){let u=this.toString();return this.#r=[u],this.type=null,this.#s=void 0,[u,Ss(this.toString()),!1,!1]}let o=!i||t||s||!Ln?"":this.#h(!0);o===n&&(o=""),o&&(n=`(?:${n})(?:${o})*?`);let a="";if(this.type==="!"&&this.#f)a=(this.isStart()&&!s?Ln:"")+Hd;else{let u=this.type==="!"?"))"+(this.isStart()&&!s&&!t?Ln:"")+zd+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&o?")":this.type==="*"&&o?")?":`)${this.type}`;a=r+n+u}return[a,Ss(n),this.#s=!!this.#s,this.#n]}#h(t){return this.#r.map(s=>{if(typeof s=="string")throw new Error("string type in extglob ast??");let[i,r,n,o]=s.toRegExpSource(t);return this.#n=this.#n||o,i}).filter(s=>!(this.isStart()&&this.isEnd())||!!s).join("|")}static#v(t,s,i=!1){let r=!1,n="",o=!1,a=!1;for(let u=0;u<t.length;u++){let l=t.charAt(u);if(r){r=!1,n+=(gF.has(l)?"\\":"")+l;continue}if(l==="*"){if(a)continue;a=!0,n+=i&&/^[*]+$/.test(t)?Hd:zd,s=!0;continue}else a=!1;if(l==="\\"){u===t.length-1?n+="\\\\":r=!0;continue}if(l==="["){let[c,f,d,p]=fF(t,u);if(d){n+=c,o=o||f,u+=d-1,s=s||p;continue}}if(l==="?"){n+=Uu,s=!0;continue}n+=DF(l)}return[n,Ss(t),!!s,o]}},Vu=(e,{windowsPathsNoEscape:t=!1,magicalBraces:s=!1}={})=>s?t?e.replace(/[?*()[\]{}]/g,"[$&]"):e.replace(/[?*()[\]\\{}]/g,"\\$&"):t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&"),$e=(e,t,s={})=>(zn(t),!s.nocomment&&t.charAt(0)==="#"?!1:new Zt(t,s).match(e)),yF=/^\*+([^+@!?\*\[\(]*)$/,wF=e=>t=>!t.startsWith(".")&&t.endsWith(e),bF=e=>t=>t.endsWith(e),vF=e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)),EF=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),FF=/^\*+\.\*+$/,CF=e=>!e.startsWith(".")&&e.includes("."),xF=e=>e!=="."&&e!==".."&&e.includes("."),SF=/^\.\*+$/,AF=e=>e!=="."&&e!==".."&&e.startsWith("."),RF=/^\*+$/,kF=e=>e.length!==0&&!e.startsWith("."),IF=e=>e.length!==0&&e!=="."&&e!=="..",_F=/^\?+([^+@!?\*\[\(]*)?$/,$F=([e,t=""])=>{let s=yh([e]);return t?(t=t.toLowerCase(),i=>s(i)&&i.toLowerCase().endsWith(t)):s},TF=([e,t=""])=>{let s=wh([e]);return t?(t=t.toLowerCase(),i=>s(i)&&i.toLowerCase().endsWith(t)):s},PF=([e,t=""])=>{let s=wh([e]);return t?i=>s(i)&&i.endsWith(t):s},BF=([e,t=""])=>{let s=yh([e]);return t?i=>s(i)&&i.endsWith(t):s},yh=([e])=>{let t=e.length;return s=>s.length===t&&!s.startsWith(".")},wh=([e])=>{let t=e.length;return s=>s.length===t&&s!=="."&&s!==".."},bh=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",Jd={win32:{sep:"\\"},posix:{sep:"/"}},OF=bh==="win32"?Jd.win32.sep:Jd.posix.sep;$e.sep=OF;_e=Symbol("globstar **");$e.GLOBSTAR=_e;LF="[^/]",NF=LF+"*?",MF="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",jF="(?:(?!(?:\\/|^)\\.).)*?",qF=(e,t={})=>s=>$e(s,e,t);$e.filter=qF;Ke=(e,t={})=>Object.assign({},e,t),UF=e=>{if(!e||typeof e!="object"||!Object.keys(e).length)return $e;let t=$e;return Object.assign((s,i,r={})=>t(s,i,Ke(e,r)),{Minimatch:class extends t.Minimatch{constructor(s,i={}){super(s,Ke(e,i))}static defaults(s){return t.defaults(Ke(e,s)).Minimatch}},AST:class extends t.AST{constructor(s,i,r={}){super(s,i,Ke(e,r))}static fromGlob(s,i={}){return t.AST.fromGlob(s,Ke(e,i))}},unescape:(s,i={})=>t.unescape(s,Ke(e,i)),escape:(s,i={})=>t.escape(s,Ke(e,i)),filter:(s,i={})=>t.filter(s,Ke(e,i)),defaults:s=>t.defaults(Ke(e,s)),makeRe:(s,i={})=>t.makeRe(s,Ke(e,i)),braceExpand:(s,i={})=>t.braceExpand(s,Ke(e,i)),match:(s,i,r={})=>t.match(s,i,Ke(e,r)),sep:t.sep,GLOBSTAR:_e})};$e.defaults=UF;vh=(e,t={})=>(zn(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:rF(e,{max:t.braceExpandMax}));$e.braceExpand=vh;VF=(e,t={})=>new Zt(e,t).makeRe();$e.makeRe=VF;GF=(e,t,s={})=>{let i=new Zt(t,s);return e=e.filter(r=>i.match(r)),i.options.nonull&&!e.length&&e.push(t),e};$e.match=GF;Yd=/[?*]|[+@!]\(.*?\)|\[|\]/,WF=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Zt=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(e,t={}){zn(e),t=t||{},this.options=t,this.pattern=e,this.platform=t.platform||bh,this.isWindows=this.platform==="win32";let s="allowWindowsEscape";this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t[s]===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=t.windowsNoMagicRoot!==void 0?t.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let e of this.set)for(let t of e)if(typeof t!="string")return!0;return!1}debug(...e){}make(){let e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)==="#"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=(...r)=>console.error(...r)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(r=>this.slashSplit(r));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let i=this.globParts.map((r,n,o)=>{if(this.isWindows&&this.windowsNoMagicRoot){let a=r[0]===""&&r[1]===""&&(r[2]==="?"||!Yd.test(r[2]))&&!Yd.test(r[3]),u=/^[a-z]:/i.test(r[0]);if(a)return[...r.slice(0,4),...r.slice(4).map(l=>this.parse(l))];if(u)return[r[0],...r.slice(1).map(l=>this.parse(l))]}return r.map(a=>this.parse(a))});if(this.debug(this.pattern,i),this.set=i.filter(r=>r.indexOf(!1)===-1),this.isWindows)for(let r=0;r<this.set.length;r++){let n=this.set[r];n[0]===""&&n[1]===""&&this.globParts[r][2]==="?"&&typeof n[3]=="string"&&/^[a-z]:$/i.test(n[3])&&(n[2]="?")}this.debug(this.pattern,this.set)}preprocess(e){if(this.options.noglobstar)for(let s=0;s<e.length;s++)for(let i=0;i<e[s].length;i++)e[s][i]==="**"&&(e[s][i]="*");let{optimizationLevel:t=1}=this.options;return t>=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):t>=1?e=this.levelOneOptimize(e):e=this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(t=>{let s=-1;for(;(s=t.indexOf("**",s+1))!==-1;){let i=s;for(;t[i+1]==="**";)i++;i!==s&&t.splice(s,i-s)}return t})}levelOneOptimize(e){return e.map(t=>(t=t.reduce((s,i)=>{let r=s[s.length-1];return i==="**"&&r==="**"?s:i===".."&&r&&r!==".."&&r!=="."&&r!=="**"?(s.pop(),s):(s.push(i),s)},[]),t.length===0?[""]:t))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let i=1;i<e.length-1;i++){let r=e[i];i===1&&r===""&&e[0]===""||(r==="."||r==="")&&(t=!0,e.splice(i,1),i--)}e[0]==="."&&e.length===2&&(e[1]==="."||e[1]==="")&&(t=!0,e.pop())}let s=0;for(;(s=e.indexOf("..",s+1))!==-1;){let i=e[s-1];i&&i!=="."&&i!==".."&&i!=="**"&&(t=!0,e.splice(s-1,2),s-=2)}}while(t);return e.length===0?[""]:e}firstPhasePreProcess(e){let t=!1;do{t=!1;for(let s of e){let i=-1;for(;(i=s.indexOf("**",i+1))!==-1;){let n=i;for(;s[n+1]==="**";)n++;n>i&&s.splice(i+1,n-i);let o=s[i+1],a=s[i+2],u=s[i+3];if(o!==".."||!a||a==="."||a===".."||!u||u==="."||u==="..")continue;t=!0,s.splice(i,1);let l=s.slice(0);l[i]="**",e.push(l),i--}if(!this.preserveMultipleSlashes){for(let n=1;n<s.length-1;n++){let o=s[n];n===1&&o===""&&s[0]===""||(o==="."||o==="")&&(t=!0,s.splice(n,1),n--)}s[0]==="."&&s.length===2&&(s[1]==="."||s[1]==="")&&(t=!0,s.pop())}let r=0;for(;(r=s.indexOf("..",r+1))!==-1;){let n=s[r-1];if(n&&n!=="."&&n!==".."&&n!=="**"){t=!0;let o=r===1&&s[r+1]==="**"?["."]:[];s.splice(r-1,2,...o),s.length===0&&s.push(""),r-=2}}}}while(t);return e}secondPhasePreProcess(e){for(let t=0;t<e.length-1;t++)for(let s=t+1;s<e.length;s++){let i=this.partsMatch(e[t],e[s],!this.preserveMultipleSlashes);if(i){e[t]=[],e[s]=i;break}}return e.filter(t=>t.length)}partsMatch(e,t,s=!1){let i=0,r=0,n=[],o="";for(;i<e.length&&r<t.length;)if(e[i]===t[r])n.push(o==="b"?t[r]:e[i]),i++,r++;else if(s&&e[i]==="**"&&t[r]===e[i+1])n.push(e[i]),i++;else if(s&&t[r]==="**"&&e[i]===t[r+1])n.push(t[r]),r++;else if(e[i]==="*"&&t[r]&&(this.options.dot||!t[r].startsWith("."))&&t[r]!=="**"){if(o==="b")return!1;o="a",n.push(e[i]),i++,r++}else if(t[r]==="*"&&e[i]&&(this.options.dot||!e[i].startsWith("."))&&e[i]!=="**"){if(o==="a")return!1;o="b",n.push(t[r]),i++,r++}else return!1;return e.length===t.length&&n}parseNegate(){if(this.nonegate)return;let e=this.pattern,t=!1,s=0;for(let i=0;i<e.length&&e.charAt(i)==="!";i++)t=!t,s++;s&&(this.pattern=e.slice(s)),this.negate=t}matchOne(e,t,s=!1){let i=this.options;if(this.isWindows){let m=typeof e[0]=="string"&&/^[a-z]:$/i.test(e[0]),g=!m&&e[0]===""&&e[1]===""&&e[2]==="?"&&/^[a-z]:$/i.test(e[3]),D=typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0]),w=!D&&t[0]===""&&t[1]===""&&t[2]==="?"&&typeof t[3]=="string"&&/^[a-z]:$/i.test(t[3]),y=g?3:m?0:void 0,v=w?3:D?0:void 0;if(typeof y=="number"&&typeof v=="number"){let[E,F]=[e[y],t[v]];E.toLowerCase()===F.toLowerCase()&&(t[v]=E,v>y?t=t.slice(v):y>v&&(e=e.slice(y)))}}let{optimizationLevel:r=1}=this.options;r>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:t}),this.debug("matchOne",e.length,t.length);for(var n=0,o=0,a=e.length,u=t.length;n<a&&o<u;n++,o++){this.debug("matchOne loop");var l=t[o],c=e[n];if(this.debug(t,l,c),l===!1)return!1;if(l===_e){this.debug("GLOBSTAR",[t,l,c]);var f=n,d=o+1;if(d===u){for(this.debug("** at the end");n<a;n++)if(e[n]==="."||e[n]===".."||!i.dot&&e[n].charAt(0)===".")return!1;return!0}for(;f<a;){var p=e[f];if(this.debug(`
|
|
53
53
|
globstar while`,e,f,t,d,p),this.matchOne(e.slice(f),t.slice(d),s))return this.debug("globstar found match!",f,a,p),!0;if(p==="."||p===".."||!i.dot&&p.charAt(0)==="."){this.debug("dot detected!",e,f,t,d);break}this.debug("globstar swallow a segment, and continue"),f++}return!!(s&&(this.debug(`
|
|
54
|
-
>>> no match, partial?`,e,f,t,d),f===a))}let m;if(typeof l=="string"?(m=c===l,this.debug("string match",l,c,m)):(m=l.test(c),this.debug("pattern match",l,c,m)),!m)return!1}if(n===a&&o===u)return!0;if(n===a)return s;if(o===u)return n===a-1&&e[n]==="";throw new Error("wtf?")}braceExpand(){return vh(this.pattern,this.options)}parse(e){zn(e);let t=this.options;if(e==="**")return _e;if(e==="")return"";let s,i=null;(s=e.match(RF))?i=t.dot?IF:kF:(s=e.match(yF))?i=(t.nocase?t.dot?EF:vF:t.dot?bF:wF)(s[1]):(s=e.match(_F))?i=(t.nocase?t.dot?TF:$F:t.dot?PF:BF)(s):(s=e.match(FF))?i=t.dot?xF:CF:(s=e.match(SF))&&(i=AF);let r=Dh.fromGlob(e,this.options).toMMPattern();return i&&typeof r=="object"&&Reflect.defineProperty(r,"test",{value:i}),r}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let t=this.options,s=t.noglobstar?NF:t.dot?MF:jF,i=new Set(t.nocase?["i"]:[]),r=e.map(a=>{let u=a.map(c=>{if(c instanceof RegExp)for(let f of c.flags.split(""))i.add(f);return typeof c=="string"?WF(c):c===_e?_e:c._src});u.forEach((c,f)=>{let d=u[f+1],p=u[f-1];c!==_e||p===_e||(p===void 0?d!==void 0&&d!==_e?u[f+1]="(?:\\/|"+s+"\\/)?"+d:u[f]=s:d===void 0?u[f-1]=p+"(?:\\/|\\/"+s+")?":d!==_e&&(u[f-1]=p+"(?:\\/|\\/"+s+"\\/)"+d,u[f+1]=_e))});let l=u.filter(c=>c!==_e);if(this.partial&&l.length>=1){let c=[];for(let f=1;f<=l.length;f++)c.push(l.slice(0,f).join("/"));return"(?:"+c.join("|")+")"}return l.join("/")}).join("|"),[n,o]=e.length>1?["(?:",")"]:["",""];r="^"+n+r+o+"$",this.partial&&(r="^(?:\\/|"+n+r.slice(1,-1)+o+")$"),this.negate&&(r="^(?!"+r+").+$");try{this.regexp=new RegExp(r,[...i].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e,t=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return e==="";if(e==="/"&&t)return!0;let s=this.options;this.isWindows&&(e=e.split("\\").join("/"));let i=this.slashSplit(e);this.debug(this.pattern,"split",i);let r=this.set;this.debug(this.pattern,"set",r);let n=i[i.length-1];if(!n)for(let o=i.length-2;!n&&o>=0;o--)n=i[o];for(let o=0;o<r.length;o++){let a=r[o],u=i;if(s.matchBase&&a.length===1&&(u=[n]),this.matchOne(u,a,t))return s.flipNegate?!0:!this.negate}return s.flipNegate?!1:this.negate}static defaults(e){return $e.defaults(e).Minimatch}};$e.AST=Dh;$e.Minimatch=Zt;$e.escape=Vu;$e.unescape=Ss;KF=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Fh=new Set,Mu=typeof process=="object"&&process?process:{},Ch=(e,t,s,i)=>{typeof Mu.emitWarning=="function"?Mu.emitWarning(e,t,s,i):console.error(`[${s}] ${t}: ${e}`)},Hn=globalThis.AbortController,Zd=globalThis.AbortSignal;if(typeof Hn>"u"){Zd=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(s,i){this._onabort.push(i)}},Hn=class{constructor(){t()}signal=new Zd;abort(s){if(!this.signal.aborted){this.signal.reason=s,this.signal.aborted=!0;for(let i of this.signal._onabort)i(s);this.signal.onabort?.(s)}}};let e=Mu.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{e&&(e=!1,Ch("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}zF=e=>!Fh.has(e),Yt=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),xh=e=>Yt(e)?e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?Wn:null:null,Wn=class extends Array{constructor(e){super(e),this.fill(0)}},HF=class dr{heap;length;static#e=!1;static create(t){let s=xh(t);if(!s)return[];dr.#e=!0;let i=new dr(t,s);return dr.#e=!1,i}constructor(t,s){if(!dr.#e)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new s(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},Yn=class Sh{#e;#s;#n;#r;#o;#b;#D;#c;get perf(){return this.#c}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#a;#d;#f;#u;#i;#h;#v;#w;#p;#R;#m;#C;#x;#g;#y;#E;#S;#t;#P;static unsafeExposeInternals(t){return{starts:t.#x,ttls:t.#g,autopurgeTimers:t.#y,sizes:t.#C,keyMap:t.#f,keyList:t.#u,valList:t.#i,next:t.#h,prev:t.#v,get head(){return t.#w},get tail(){return t.#p},free:t.#R,isBackgroundFetch:s=>t.#l(s),backgroundFetch:(s,i,r,n)=>t.#U(s,i,r,n),moveToTail:s=>t.#O(s),indexes:s=>t.#I(s),rindexes:s=>t.#_(s),isStale:s=>t.#F(s)}}get max(){return this.#e}get maxSize(){return this.#s}get calculatedSize(){return this.#d}get size(){return this.#a}get fetchMethod(){return this.#b}get memoMethod(){return this.#D}get dispose(){return this.#n}get onInsert(){return this.#r}get disposeAfter(){return this.#o}constructor(t){let{max:s=0,ttl:i,ttlResolution:r=1,ttlAutopurge:n,updateAgeOnGet:o,updateAgeOnHas:a,allowStale:u,dispose:l,onInsert:c,disposeAfter:f,noDisposeOnSet:d,noUpdateTTL:p,maxSize:m=0,maxEntrySize:g=0,sizeCalculation:D,fetchMethod:w,memoMethod:y,noDeleteOnFetchRejection:v,noDeleteOnStaleGet:E,allowStaleOnFetchRejection:F,allowStaleOnFetchAbort:S,ignoreFetchAbort:B,perf:x}=t;if(x!==void 0&&typeof x?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#c=x??KF,s!==0&&!Yt(s))throw new TypeError("max option must be a nonnegative integer");let $=s?xh(s):Array;if(!$)throw new Error("invalid max value: "+s);if(this.#e=s,this.#s=m,this.maxEntrySize=g||this.#s,this.sizeCalculation=D,this.sizeCalculation){if(!this.#s&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(y!==void 0&&typeof y!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#D=y,w!==void 0&&typeof w!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#b=w,this.#S=!!w,this.#f=new Map,this.#u=new Array(s).fill(void 0),this.#i=new Array(s).fill(void 0),this.#h=new $(s),this.#v=new $(s),this.#w=0,this.#p=0,this.#R=HF.create(s),this.#a=0,this.#d=0,typeof l=="function"&&(this.#n=l),typeof c=="function"&&(this.#r=c),typeof f=="function"?(this.#o=f,this.#m=[]):(this.#o=void 0,this.#m=void 0),this.#E=!!this.#n,this.#P=!!this.#r,this.#t=!!this.#o,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!p,this.noDeleteOnFetchRejection=!!v,this.allowStaleOnFetchRejection=!!F,this.allowStaleOnFetchAbort=!!S,this.ignoreFetchAbort=!!B,this.maxEntrySize!==0){if(this.#s!==0&&!Yt(this.#s))throw new TypeError("maxSize must be a positive integer if specified");if(!Yt(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#G()}if(this.allowStale=!!u,this.noDeleteOnStaleGet=!!E,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!a,this.ttlResolution=Yt(r)||r===0?r:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!Yt(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#$()}if(this.#e===0&&this.ttl===0&&this.#s===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#e&&!this.#s){let W="LRU_CACHE_UNBOUNDED";zF(W)&&(Fh.add(W),Ch("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",W,Sh))}}getRemainingTTL(t){return this.#f.has(t)?1/0:0}#$(){let t=new Wn(this.#e),s=new Wn(this.#e);this.#g=t,this.#x=s;let i=this.ttlAutopurge?new Array(this.#e):void 0;this.#y=i,this.#N=(o,a,u=this.#c.now())=>{if(s[o]=a!==0?u:0,t[o]=a,i?.[o]&&(clearTimeout(i[o]),i[o]=void 0),a!==0&&i){let l=setTimeout(()=>{this.#F(o)&&this.#k(this.#u[o],"expire")},a+1);l.unref&&l.unref(),i[o]=l}},this.#A=o=>{s[o]=t[o]!==0?this.#c.now():0},this.#T=(o,a)=>{if(t[a]){let u=t[a],l=s[a];if(!u||!l)return;o.ttl=u,o.start=l,o.now=r||n();let c=o.now-l;o.remainingTTL=u-c}};let r=0,n=()=>{let o=this.#c.now();if(this.ttlResolution>0){r=o;let a=setTimeout(()=>r=0,this.ttlResolution);a.unref&&a.unref()}return o};this.getRemainingTTL=o=>{let a=this.#f.get(o);if(a===void 0)return 0;let u=t[a],l=s[a];if(!u||!l)return 1/0;let c=(r||n())-l;return u-c},this.#F=o=>{let a=s[o],u=t[o];return!!u&&!!a&&(r||n())-a>u}}#A=()=>{};#T=()=>{};#N=()=>{};#F=()=>!1;#G(){let t=new Wn(this.#e);this.#d=0,this.#C=t,this.#L=s=>{this.#d-=t[s],t[s]=0},this.#M=(s,i,r,n)=>{if(this.#l(i))return 0;if(!Yt(r))if(n){if(typeof n!="function")throw new TypeError("sizeCalculation must be a function");if(r=n(i,s),!Yt(r))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return r},this.#B=(s,i,r)=>{if(t[s]=i,this.#s){let n=this.#s-t[s];for(;this.#d>n;)this.#q(!0)}this.#d+=t[s],r&&(r.entrySize=i,r.totalCalculatedSize=this.#d)}}#L=t=>{};#B=(t,s,i)=>{};#M=(t,s,i,r)=>{if(i||r)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#I({allowStale:t=this.allowStale}={}){if(this.#a)for(let s=this.#p;!(!this.#j(s)||((t||!this.#F(s))&&(yield s),s===this.#w));)s=this.#v[s]}*#_({allowStale:t=this.allowStale}={}){if(this.#a)for(let s=this.#w;!(!this.#j(s)||((t||!this.#F(s))&&(yield s),s===this.#p));)s=this.#h[s]}#j(t){return t!==void 0&&this.#f.get(this.#u[t])===t}*entries(){for(let t of this.#I())this.#i[t]!==void 0&&this.#u[t]!==void 0&&!this.#l(this.#i[t])&&(yield[this.#u[t],this.#i[t]])}*rentries(){for(let t of this.#_())this.#i[t]!==void 0&&this.#u[t]!==void 0&&!this.#l(this.#i[t])&&(yield[this.#u[t],this.#i[t]])}*keys(){for(let t of this.#I()){let s=this.#u[t];s!==void 0&&!this.#l(this.#i[t])&&(yield s)}}*rkeys(){for(let t of this.#_()){let s=this.#u[t];s!==void 0&&!this.#l(this.#i[t])&&(yield s)}}*values(){for(let t of this.#I())this.#i[t]!==void 0&&!this.#l(this.#i[t])&&(yield this.#i[t])}*rvalues(){for(let t of this.#_())this.#i[t]!==void 0&&!this.#l(this.#i[t])&&(yield this.#i[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(t,s={}){for(let i of this.#I()){let r=this.#i[i],n=this.#l(r)?r.__staleWhileFetching:r;if(n!==void 0&&t(n,this.#u[i],this))return this.get(this.#u[i],s)}}forEach(t,s=this){for(let i of this.#I()){let r=this.#i[i],n=this.#l(r)?r.__staleWhileFetching:r;n!==void 0&&t.call(s,n,this.#u[i],this)}}rforEach(t,s=this){for(let i of this.#_()){let r=this.#i[i],n=this.#l(r)?r.__staleWhileFetching:r;n!==void 0&&t.call(s,n,this.#u[i],this)}}purgeStale(){let t=!1;for(let s of this.#_({allowStale:!0}))this.#F(s)&&(this.#k(this.#u[s],"expire"),t=!0);return t}info(t){let s=this.#f.get(t);if(s===void 0)return;let i=this.#i[s],r=this.#l(i)?i.__staleWhileFetching:i;if(r===void 0)return;let n={value:r};if(this.#g&&this.#x){let o=this.#g[s],a=this.#x[s];if(o&&a){let u=o-(this.#c.now()-a);n.ttl=u,n.start=Date.now()}}return this.#C&&(n.size=this.#C[s]),n}dump(){let t=[];for(let s of this.#I({allowStale:!0})){let i=this.#u[s],r=this.#i[s],n=this.#l(r)?r.__staleWhileFetching:r;if(n===void 0||i===void 0)continue;let o={value:n};if(this.#g&&this.#x){o.ttl=this.#g[s];let a=this.#c.now()-this.#x[s];o.start=Math.floor(Date.now()-a)}this.#C&&(o.size=this.#C[s]),t.unshift([i,o])}return t}load(t){this.clear();for(let[s,i]of t){if(i.start){let r=Date.now()-i.start;i.start=this.#c.now()-r}this.set(s,i.value,i)}}set(t,s,i={}){if(s===void 0)return this.delete(t),this;let{ttl:r=this.ttl,start:n,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:u}=i,{noUpdateTTL:l=this.noUpdateTTL}=i,c=this.#M(t,s,i.size||0,a);if(this.maxEntrySize&&c>this.maxEntrySize)return u&&(u.set="miss",u.maxEntrySizeExceeded=!0),this.#k(t,"set"),this;let f=this.#a===0?void 0:this.#f.get(t);if(f===void 0)f=this.#a===0?this.#p:this.#R.length!==0?this.#R.pop():this.#a===this.#e?this.#q(!1):this.#a,this.#u[f]=t,this.#i[f]=s,this.#f.set(t,f),this.#h[this.#p]=f,this.#v[f]=this.#p,this.#p=f,this.#a++,this.#B(f,c,u),u&&(u.set="add"),l=!1,this.#P&&this.#r?.(s,t,"add");else{this.#O(f);let d=this.#i[f];if(s!==d){if(this.#S&&this.#l(d)){d.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:p}=d;p!==void 0&&!o&&(this.#E&&this.#n?.(p,t,"set"),this.#t&&this.#m?.push([p,t,"set"]))}else o||(this.#E&&this.#n?.(d,t,"set"),this.#t&&this.#m?.push([d,t,"set"]));if(this.#L(f),this.#B(f,c,u),this.#i[f]=s,u){u.set="replace";let p=d&&this.#l(d)?d.__staleWhileFetching:d;p!==void 0&&(u.oldValue=p)}}else u&&(u.set="update");this.#P&&this.onInsert?.(s,t,s===d?"update":"replace")}if(r!==0&&!this.#g&&this.#$(),this.#g&&(l||this.#N(f,r,n),u&&this.#T(u,f)),!o&&this.#t&&this.#m){let d=this.#m,p;for(;p=d?.shift();)this.#o?.(...p)}return this}pop(){try{for(;this.#a;){let t=this.#i[this.#w];if(this.#q(!0),this.#l(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#t&&this.#m){let t=this.#m,s;for(;s=t?.shift();)this.#o?.(...s)}}}#q(t){let s=this.#w,i=this.#u[s],r=this.#i[s];return this.#S&&this.#l(r)?r.__abortController.abort(new Error("evicted")):(this.#E||this.#t)&&(this.#E&&this.#n?.(r,i,"evict"),this.#t&&this.#m?.push([r,i,"evict"])),this.#L(s),this.#y?.[s]&&(clearTimeout(this.#y[s]),this.#y[s]=void 0),t&&(this.#u[s]=void 0,this.#i[s]=void 0,this.#R.push(s)),this.#a===1?(this.#w=this.#p=0,this.#R.length=0):this.#w=this.#h[s],this.#f.delete(i),this.#a--,s}has(t,s={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:r}=s,n=this.#f.get(t);if(n!==void 0){let o=this.#i[n];if(this.#l(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#F(n))r&&(r.has="stale",this.#T(r,n));else return i&&this.#A(n),r&&(r.has="hit",this.#T(r,n)),!0}else r&&(r.has="miss");return!1}peek(t,s={}){let{allowStale:i=this.allowStale}=s,r=this.#f.get(t);if(r===void 0||!i&&this.#F(r))return;let n=this.#i[r];return this.#l(n)?n.__staleWhileFetching:n}#U(t,s,i,r){let n=s===void 0?void 0:this.#i[s];if(this.#l(n))return n;let o=new Hn,{signal:a}=i;a?.addEventListener("abort",()=>o.abort(a.reason),{signal:o.signal});let u={signal:o.signal,options:i,context:r},l=(g,D=!1)=>{let{aborted:w}=o.signal,y=i.ignoreFetchAbort&&g!==void 0,v=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&g!==void 0);if(i.status&&(w&&!D?(i.status.fetchAborted=!0,i.status.fetchError=o.signal.reason,y&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),w&&!y&&!D)return f(o.signal.reason,v);let E=p,F=this.#i[s];return(F===p||y&&D&&F===void 0)&&(g===void 0?E.__staleWhileFetching!==void 0?this.#i[s]=E.__staleWhileFetching:this.#k(t,"fetch"):(i.status&&(i.status.fetchUpdated=!0),this.set(t,g,u.options))),g},c=g=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=g),f(g,!1)),f=(g,D)=>{let{aborted:w}=o.signal,y=w&&i.allowStaleOnFetchAbort,v=y||i.allowStaleOnFetchRejection,E=v||i.noDeleteOnFetchRejection,F=p;if(this.#i[s]===p&&(!E||!D&&F.__staleWhileFetching===void 0?this.#k(t,"fetch"):y||(this.#i[s]=F.__staleWhileFetching)),v)return i.status&&F.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),F.__staleWhileFetching;if(F.__returned===F)throw g},d=(g,D)=>{let w=this.#b?.(t,n,u);w&&w instanceof Promise&&w.then(y=>g(y===void 0?void 0:y),D),o.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(g(void 0),i.allowStaleOnFetchAbort&&(g=y=>l(y,!0)))})};i.status&&(i.status.fetchDispatched=!0);let p=new Promise(d).then(l,c),m=Object.assign(p,{__abortController:o,__staleWhileFetching:n,__returned:void 0});return s===void 0?(this.set(t,m,{...u.options,status:void 0}),s=this.#f.get(t)):this.#i[s]=m,m}#l(t){if(!this.#S)return!1;let s=t;return!!s&&s instanceof Promise&&s.hasOwnProperty("__staleWhileFetching")&&s.__abortController instanceof Hn}async fetch(t,s={}){let{allowStale:i=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:u=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:c=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:p=this.ignoreFetchAbort,allowStaleOnFetchAbort:m=this.allowStaleOnFetchAbort,context:g,forceRefresh:D=!1,status:w,signal:y}=s;if(!this.#S)return w&&(w.fetch="get"),this.get(t,{allowStale:i,updateAgeOnGet:r,noDeleteOnStaleGet:n,status:w});let v={allowStale:i,updateAgeOnGet:r,noDeleteOnStaleGet:n,ttl:o,noDisposeOnSet:a,size:u,sizeCalculation:l,noUpdateTTL:c,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:m,ignoreFetchAbort:p,status:w,signal:y},E=this.#f.get(t);if(E===void 0){w&&(w.fetch="miss");let F=this.#U(t,E,v,g);return F.__returned=F}else{let F=this.#i[E];if(this.#l(F)){let $=i&&F.__staleWhileFetching!==void 0;return w&&(w.fetch="inflight",$&&(w.returnedStale=!0)),$?F.__staleWhileFetching:F.__returned=F}let S=this.#F(E);if(!D&&!S)return w&&(w.fetch="hit"),this.#O(E),r&&this.#A(E),w&&this.#T(w,E),F;let B=this.#U(t,E,v,g),x=B.__staleWhileFetching!==void 0&&i;return w&&(w.fetch=S?"stale":"refresh",x&&S&&(w.returnedStale=!0)),x?B.__staleWhileFetching:B.__returned=B}}async forceFetch(t,s={}){let i=await this.fetch(t,s);if(i===void 0)throw new Error("fetch() returned undefined");return i}memo(t,s={}){let i=this.#D;if(!i)throw new Error("no memoMethod provided to constructor");let{context:r,forceRefresh:n,...o}=s,a=this.get(t,o);if(!n&&a!==void 0)return a;let u=i(t,a,{options:o,context:r});return this.set(t,u,o),u}get(t,s={}){let{allowStale:i=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:o}=s,a=this.#f.get(t);if(a!==void 0){let u=this.#i[a],l=this.#l(u);return o&&this.#T(o,a),this.#F(a)?(o&&(o.get="stale"),l?(o&&i&&u.__staleWhileFetching!==void 0&&(o.returnedStale=!0),i?u.__staleWhileFetching:void 0):(n||this.#k(t,"expire"),o&&i&&(o.returnedStale=!0),i?u:void 0)):(o&&(o.get="hit"),l?u.__staleWhileFetching:(this.#O(a),r&&this.#A(a),u))}else o&&(o.get="miss")}#V(t,s){this.#v[s]=t,this.#h[t]=s}#O(t){t!==this.#p&&(t===this.#w?this.#w=this.#h[t]:this.#V(this.#v[t],this.#h[t]),this.#V(this.#p,t),this.#p=t)}delete(t){return this.#k(t,"delete")}#k(t,s){let i=!1;if(this.#a!==0){let r=this.#f.get(t);if(r!==void 0)if(this.#y?.[r]&&(clearTimeout(this.#y?.[r]),this.#y[r]=void 0),i=!0,this.#a===1)this.#W(s);else{this.#L(r);let n=this.#i[r];if(this.#l(n)?n.__abortController.abort(new Error("deleted")):(this.#E||this.#t)&&(this.#E&&this.#n?.(n,t,s),this.#t&&this.#m?.push([n,t,s])),this.#f.delete(t),this.#u[r]=void 0,this.#i[r]=void 0,r===this.#p)this.#p=this.#v[r];else if(r===this.#w)this.#w=this.#h[r];else{let o=this.#v[r];this.#h[o]=this.#h[r];let a=this.#h[r];this.#v[a]=this.#v[r]}this.#a--,this.#R.push(r)}}if(this.#t&&this.#m?.length){let r=this.#m,n;for(;n=r?.shift();)this.#o?.(...n)}return i}clear(){return this.#W("delete")}#W(t){for(let s of this.#_({allowStale:!0})){let i=this.#i[s];if(this.#l(i))i.__abortController.abort(new Error("deleted"));else{let r=this.#u[s];this.#E&&this.#n?.(i,r,t),this.#t&&this.#m?.push([i,r,t])}}if(this.#f.clear(),this.#i.fill(void 0),this.#u.fill(void 0),this.#g&&this.#x){this.#g.fill(0),this.#x.fill(0);for(let s of this.#y??[])s!==void 0&&clearTimeout(s);this.#y?.fill(void 0)}if(this.#C&&this.#C.fill(0),this.#w=0,this.#p=0,this.#R.length=0,this.#d=0,this.#a=0,this.#t&&this.#m){let s=this.#m,i;for(;i=s?.shift();)this.#o?.(...i)}}},Xd=typeof process=="object"&&process?process:{stdout:null,stderr:null},YF=e=>!!e&&typeof e=="object"&&(e instanceof Jn||e instanceof Gu.default||ZF(e)||XF(e)),ZF=e=>!!e&&typeof e=="object"&&e instanceof Zn.EventEmitter&&typeof e.pipe=="function"&&e.pipe!==Gu.default.Writable.prototype.pipe,XF=e=>!!e&&typeof e=="object"&&e instanceof Zn.EventEmitter&&typeof e.write=="function"&&typeof e.end=="function",_t=Symbol("EOF"),$t=Symbol("maybeEmitEnd"),Jt=Symbol("emittedEnd"),Nn=Symbol("emittingEnd"),or=Symbol("emittedError"),Mn=Symbol("closed"),Qd=Symbol("read"),jn=Symbol("flush"),eh=Symbol("flushChunk"),ut=Symbol("encoding"),li=Symbol("decoder"),ge=Symbol("flowing"),ar=Symbol("paused"),ci=Symbol("resume"),De=Symbol("buffer"),Ie=Symbol("pipes"),ye=Symbol("bufferLength"),$u=Symbol("bufferPush"),qn=Symbol("bufferShift"),Re=Symbol("objectMode"),ue=Symbol("destroyed"),Tu=Symbol("error"),Pu=Symbol("emitData"),th=Symbol("emitEnd"),Bu=Symbol("emitEnd2"),yt=Symbol("async"),Ou=Symbol("abort"),Un=Symbol("aborted"),ur=Symbol("signal"),Cs=Symbol("dataListeners"),Ue=Symbol("discarded"),lr=e=>Promise.resolve().then(e),QF=e=>e(),eC=e=>e==="end"||e==="finish"||e==="prefinish",tC=e=>e instanceof ArrayBuffer||!!e&&typeof e=="object"&&e.constructor&&e.constructor.name==="ArrayBuffer"&&e.byteLength>=0,sC=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e),kh=class{src;dest;opts;ondrain;constructor(e,t,s){this.src=e,this.dest=t,this.opts=s,this.ondrain=()=>e[ci](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},iC=class extends kh{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,s){super(e,t,s),this.proxyErrors=i=>this.dest.emit("error",i),e.on("error",this.proxyErrors)}},rC=e=>!!e.objectMode,nC=e=>!e.objectMode&&!!e.encoding&&e.encoding!=="buffer",Jn=class extends Zn.EventEmitter{[ge]=!1;[ar]=!1;[Ie]=[];[De]=[];[Re];[ut];[yt];[li];[_t]=!1;[Jt]=!1;[Nn]=!1;[Mn]=!1;[or]=null;[ye]=0;[ue]=!1;[ur];[Un]=!1;[Cs]=0;[Ue]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");rC(t)?(this[Re]=!0,this[ut]=null):nC(t)?(this[ut]=t.encoding,this[Re]=!1):(this[Re]=!1,this[ut]=null),this[yt]=!!t.async,this[li]=this[ut]?new Rh.StringDecoder(this[ut]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[De]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[Ie]});let{signal:s}=t;s&&(this[ur]=s,s.aborted?this[Ou]():s.addEventListener("abort",()=>this[Ou]()))}get bufferLength(){return this[ye]}get encoding(){return this[ut]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[Re]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[yt]}set async(e){this[yt]=this[yt]||!!e}[Ou](){this[Un]=!0,this.emit("abort",this[ur]?.reason),this.destroy(this[ur]?.reason)}get aborted(){return this[Un]}set aborted(e){}write(e,t,s){if(this[Un])return!1;if(this[_t])throw new Error("write after end");if(this[ue])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(s=t,t="utf8"),t||(t="utf8");let i=this[yt]?lr:QF;if(!this[Re]&&!Buffer.isBuffer(e)){if(sC(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(tC(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[Re]?(this[ge]&&this[ye]!==0&&this[jn](!0),this[ge]?this.emit("data",e):this[$u](e),this[ye]!==0&&this.emit("readable"),s&&i(s),this[ge]):e.length?(typeof e=="string"&&!(t===this[ut]&&!this[li]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[ut]&&(e=this[li].write(e)),this[ge]&&this[ye]!==0&&this[jn](!0),this[ge]?this.emit("data",e):this[$u](e),this[ye]!==0&&this.emit("readable"),s&&i(s),this[ge]):(this[ye]!==0&&this.emit("readable"),s&&i(s),this[ge])}read(e){if(this[ue])return null;if(this[Ue]=!1,this[ye]===0||e===0||e&&e>this[ye])return this[$t](),null;this[Re]&&(e=null),this[De].length>1&&!this[Re]&&(this[De]=[this[ut]?this[De].join(""):Buffer.concat(this[De],this[ye])]);let t=this[Qd](e||null,this[De][0]);return this[$t](),t}[Qd](e,t){if(this[Re])this[qn]();else{let s=t;e===s.length||e===null?this[qn]():typeof s=="string"?(this[De][0]=s.slice(e),t=s.slice(0,e),this[ye]-=e):(this[De][0]=s.subarray(e),t=s.subarray(0,e),this[ye]-=e)}return this.emit("data",t),!this[De].length&&!this[_t]&&this.emit("drain"),t}end(e,t,s){return typeof e=="function"&&(s=e,e=void 0),typeof t=="function"&&(s=t,t="utf8"),e!==void 0&&this.write(e,t),s&&this.once("end",s),this[_t]=!0,this.writable=!1,(this[ge]||!this[ar])&&this[$t](),this}[ci](){this[ue]||(!this[Cs]&&!this[Ie].length&&(this[Ue]=!0),this[ar]=!1,this[ge]=!0,this.emit("resume"),this[De].length?this[jn]():this[_t]?this[$t]():this.emit("drain"))}resume(){return this[ci]()}pause(){this[ge]=!1,this[ar]=!0,this[Ue]=!1}get destroyed(){return this[ue]}get flowing(){return this[ge]}get paused(){return this[ar]}[$u](e){this[Re]?this[ye]+=1:this[ye]+=e.length,this[De].push(e)}[qn](){return this[Re]?this[ye]-=1:this[ye]-=this[De][0].length,this[De].shift()}[jn](e=!1){do;while(this[eh](this[qn]())&&this[De].length);!e&&!this[De].length&&!this[_t]&&this.emit("drain")}[eh](e){return this.emit("data",e),this[ge]}pipe(e,t){if(this[ue])return e;this[Ue]=!1;let s=this[Jt];return t=t||{},e===Xd.stdout||e===Xd.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,s?t.end&&e.end():(this[Ie].push(t.proxyErrors?new iC(this,e,t):new kh(this,e,t)),this[yt]?lr(()=>this[ci]()):this[ci]()),e}unpipe(e){let t=this[Ie].find(s=>s.dest===e);t&&(this[Ie].length===1?(this[ge]&&this[Cs]===0&&(this[ge]=!1),this[Ie]=[]):this[Ie].splice(this[Ie].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let s=super.on(e,t);if(e==="data")this[Ue]=!1,this[Cs]++,!this[Ie].length&&!this[ge]&&this[ci]();else if(e==="readable"&&this[ye]!==0)super.emit("readable");else if(eC(e)&&this[Jt])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[or]){let i=t;this[yt]?lr(()=>i.call(this,this[or])):i.call(this,this[or])}return s}removeListener(e,t){return this.off(e,t)}off(e,t){let s=super.off(e,t);return e==="data"&&(this[Cs]=this.listeners("data").length,this[Cs]===0&&!this[Ue]&&!this[Ie].length&&(this[ge]=!1)),s}removeAllListeners(e){let t=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Cs]=0,!this[Ue]&&!this[Ie].length&&(this[ge]=!1)),t}get emittedEnd(){return this[Jt]}[$t](){!this[Nn]&&!this[Jt]&&!this[ue]&&this[De].length===0&&this[_t]&&(this[Nn]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Mn]&&this.emit("close"),this[Nn]=!1)}emit(e,...t){let s=t[0];if(e!=="error"&&e!=="close"&&e!==ue&&this[ue])return!1;if(e==="data")return!this[Re]&&!s?!1:this[yt]?(lr(()=>this[Pu](s)),!0):this[Pu](s);if(e==="end")return this[th]();if(e==="close"){if(this[Mn]=!0,!this[Jt]&&!this[ue])return!1;let r=super.emit("close");return this.removeAllListeners("close"),r}else if(e==="error"){this[or]=s,super.emit(Tu,s);let r=!this[ur]||this.listeners("error").length?super.emit("error",s):!1;return this[$t](),r}else if(e==="resume"){let r=super.emit("resume");return this[$t](),r}else if(e==="finish"||e==="prefinish"){let r=super.emit(e);return this.removeAllListeners(e),r}let i=super.emit(e,...t);return this[$t](),i}[Pu](e){for(let s of this[Ie])s.dest.write(e)===!1&&this.pause();let t=this[Ue]?!1:super.emit("data",e);return this[$t](),t}[th](){return this[Jt]?!1:(this[Jt]=!0,this.readable=!1,this[yt]?(lr(()=>this[Bu]()),!0):this[Bu]())}[Bu](){if(this[li]){let t=this[li].end();if(t){for(let s of this[Ie])s.dest.write(t);this[Ue]||super.emit("data",t)}}for(let t of this[Ie])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[Re]||(e.dataLength=0);let t=this.promise();return this.on("data",s=>{e.push(s),this[Re]||(e.dataLength+=s.length)}),await t,e}async concat(){if(this[Re])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[ut]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(ue,()=>t(new Error("stream destroyed"))),this.on("error",s=>t(s)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[Ue]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let s=this.read();if(s!==null)return Promise.resolve({done:!1,value:s});if(this[_t])return t();let i,r,n=l=>{this.off("data",o),this.off("end",a),this.off(ue,u),t(),r(l)},o=l=>{this.off("error",n),this.off("end",a),this.off(ue,u),this.pause(),i({value:l,done:!!this[_t]})},a=()=>{this.off("error",n),this.off("data",o),this.off(ue,u),t(),i({done:!0,value:void 0})},u=()=>n(new Error("stream destroyed"));return new Promise((l,c)=>{r=c,i=l,this.once(ue,u),this.once("error",n),this.once("end",a),this.once("data",o)})},throw:t,return:t,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[Ue]=!1;let e=!1,t=()=>(this.pause(),this.off(Tu,t),this.off(ue,t),this.off("end",t),e=!0,{done:!0,value:void 0}),s=()=>{if(e)return t();let i=this.read();return i===null?t():{done:!1,value:i}};return this.once("end",t),this.once(Tu,t),this.once(ue,t),{next:s,throw:t,return:t,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(e){if(this[ue])return e?this.emit("error",e):this.emit(ue),this;this[ue]=!0,this[Ue]=!0,this[De].length=0,this[ye]=0;let t=this;return typeof t.close=="function"&&!this[Mn]&&t.close(),e?this.emit("error",e):this.emit(ue),this}static get isStream(){return YF}},oC=bt.realpathSync.native,hr={lstatSync:bt.lstatSync,readdir:bt.readdir,readdirSync:bt.readdirSync,readlinkSync:bt.readlinkSync,realpathSync:oC,promises:{lstat:Xt.lstat,readdir:Xt.readdir,readlink:Xt.readlink,realpath:Xt.realpath}},Ih=e=>!e||e===hr||e===JF?hr:{...hr,...e,promises:{...hr.promises,...e.promises||{}}},_h=/^\\\\\?\\([a-z]:)\\?$/i,aC=e=>e.replace(/\//g,"\\").replace(_h,"$1\\"),uC=/[\\\/]/,He=0,$h=1,Th=2,wt=4,Ph=6,Bh=8,xs=10,Oh=12,ze=15,cr=~ze,Lu=16,sh=32,pr=64,lt=128,Vn=256,Kn=512,ih=pr|lt|Kn,lC=1023,Nu=e=>e.isFile()?Bh:e.isDirectory()?wt:e.isSymbolicLink()?xs:e.isCharacterDevice()?Th:e.isBlockDevice()?Ph:e.isSocket()?Oh:e.isFIFO()?$h:He,rh=new Yn({max:2**12}),mr=e=>{let t=rh.get(e);if(t)return t;let s=e.normalize("NFKD");return rh.set(e,s),s},nh=new Yn({max:2**12}),Gn=e=>{let t=nh.get(e);if(t)return t;let s=mr(e.toLowerCase());return nh.set(e,s),s},oh=class extends Yn{constructor(){super({max:256})}},cC=class extends Yn{constructor(e=16*1024){super({maxSize:e,sizeCalculation:t=>t.length+1})}},Lh=Symbol("PathScurry setAsCwd"),Pe=class{name;root;roots;parent;nocase;isCWD=!1;#e;#s;get dev(){return this.#s}#n;get mode(){return this.#n}#r;get nlink(){return this.#r}#o;get uid(){return this.#o}#b;get gid(){return this.#b}#D;get rdev(){return this.#D}#c;get blksize(){return this.#c}#a;get ino(){return this.#a}#d;get size(){return this.#d}#f;get blocks(){return this.#f}#u;get atimeMs(){return this.#u}#i;get mtimeMs(){return this.#i}#h;get ctimeMs(){return this.#h}#v;get birthtimeMs(){return this.#v}#w;get atime(){return this.#w}#p;get mtime(){return this.#p}#R;get ctime(){return this.#R}#m;get birthtime(){return this.#m}#C;#x;#g;#y;#E;#S;#t;#P;#$;#A;get parentPath(){return(this.parent||this).fullpath()}get path(){return this.parentPath}constructor(e,t=He,s,i,r,n,o){this.name=e,this.#C=r?Gn(e):mr(e),this.#t=t&lC,this.nocase=r,this.roots=i,this.root=s||this,this.#P=n,this.#g=o.fullpath,this.#E=o.relative,this.#S=o.relativePosix,this.parent=o.parent,this.parent?this.#e=this.parent.#e:this.#e=Ih(o.fs)}depth(){return this.#x!==void 0?this.#x:this.parent?this.#x=this.parent.depth()+1:this.#x=0}childrenCache(){return this.#P}resolve(e){if(!e)return this;let t=this.getRootString(e),s=e.substring(t.length).split(this.splitSep);return t?this.getRoot(t).#T(s):this.#T(s)}#T(e){let t=this;for(let s of e)t=t.child(s);return t}children(){let e=this.#P.get(this);if(e)return e;let t=Object.assign([],{provisional:0});return this.#P.set(this,t),this.#t&=~Lu,t}child(e,t){if(e===""||e===".")return this;if(e==="..")return this.parent||this;let s=this.children(),i=this.nocase?Gn(e):mr(e);for(let a of s)if(a.#C===i)return a;let r=this.parent?this.sep:"",n=this.#g?this.#g+r+e:void 0,o=this.newChild(e,He,{...t,parent:this,fullpath:n});return this.canReaddir()||(o.#t|=lt),s.push(o),o}relative(){if(this.isCWD)return"";if(this.#E!==void 0)return this.#E;let e=this.name,t=this.parent;if(!t)return this.#E=this.name;let s=t.relative();return s+(!s||!t.parent?"":this.sep)+e}relativePosix(){if(this.sep==="/")return this.relative();if(this.isCWD)return"";if(this.#S!==void 0)return this.#S;let e=this.name,t=this.parent;if(!t)return this.#S=this.fullpathPosix();let s=t.relativePosix();return s+(!s||!t.parent?"":"/")+e}fullpath(){if(this.#g!==void 0)return this.#g;let e=this.name,t=this.parent;if(!t)return this.#g=this.name;let s=t.fullpath()+(t.parent?this.sep:"")+e;return this.#g=s}fullpathPosix(){if(this.#y!==void 0)return this.#y;if(this.sep==="/")return this.#y=this.fullpath();if(!this.parent){let i=this.fullpath().replace(/\\/g,"/");return/^[a-z]:\//i.test(i)?this.#y=`//?/${i}`:this.#y=i}let e=this.parent,t=e.fullpathPosix(),s=t+(!t||!e.parent?"":"/")+this.name;return this.#y=s}isUnknown(){return(this.#t&ze)===He}isType(e){return this[`is${e}`]()}getType(){return this.isUnknown()?"Unknown":this.isDirectory()?"Directory":this.isFile()?"File":this.isSymbolicLink()?"SymbolicLink":this.isFIFO()?"FIFO":this.isCharacterDevice()?"CharacterDevice":this.isBlockDevice()?"BlockDevice":this.isSocket()?"Socket":"Unknown"}isFile(){return(this.#t&ze)===Bh}isDirectory(){return(this.#t&ze)===wt}isCharacterDevice(){return(this.#t&ze)===Th}isBlockDevice(){return(this.#t&ze)===Ph}isFIFO(){return(this.#t&ze)===$h}isSocket(){return(this.#t&ze)===Oh}isSymbolicLink(){return(this.#t&xs)===xs}lstatCached(){return this.#t&sh?this:void 0}readlinkCached(){return this.#$}realpathCached(){return this.#A}readdirCached(){let e=this.children();return e.slice(0,e.provisional)}canReadlink(){if(this.#$)return!0;if(!this.parent)return!1;let e=this.#t&ze;return!(e!==He&&e!==xs||this.#t&Vn||this.#t<)}calledReaddir(){return!!(this.#t&Lu)}isENOENT(){return!!(this.#t<)}isNamed(e){return this.nocase?this.#C===Gn(e):this.#C===mr(e)}async readlink(){let e=this.#$;if(e)return e;if(this.canReadlink()&&this.parent)try{let t=await this.#e.promises.readlink(this.fullpath()),s=(await this.parent.realpath())?.resolve(t);if(s)return this.#$=s}catch(t){this.#_(t.code);return}}readlinkSync(){let e=this.#$;if(e)return e;if(this.canReadlink()&&this.parent)try{let t=this.#e.readlinkSync(this.fullpath()),s=this.parent.realpathSync()?.resolve(t);if(s)return this.#$=s}catch(t){this.#_(t.code);return}}#N(e){this.#t|=Lu;for(let t=e.provisional;t<e.length;t++){let s=e[t];s&&s.#F()}}#F(){this.#t<||(this.#t=(this.#t|lt)&cr,this.#G())}#G(){let e=this.children();e.provisional=0;for(let t of e)t.#F()}#L(){this.#t|=Kn,this.#B()}#B(){if(this.#t&pr)return;let e=this.#t;(e&ze)===wt&&(e&=cr),this.#t=e|pr,this.#G()}#M(e=""){e==="ENOTDIR"||e==="EPERM"?this.#B():e==="ENOENT"?this.#F():this.children().provisional=0}#I(e=""){e==="ENOTDIR"?this.parent.#B():e==="ENOENT"&&this.#F()}#_(e=""){let t=this.#t;t|=Vn,e==="ENOENT"&&(t|=lt),(e==="EINVAL"||e==="UNKNOWN")&&(t&=cr),this.#t=t,e==="ENOTDIR"&&this.parent&&this.parent.#B()}#j(e,t){return this.#U(e,t)||this.#q(e,t)}#q(e,t){let s=Nu(e),i=this.newChild(e.name,s,{parent:this}),r=i.#t&ze;return r!==wt&&r!==xs&&r!==He&&(i.#t|=pr),t.unshift(i),t.provisional++,i}#U(e,t){for(let s=t.provisional;s<t.length;s++){let i=t[s];if((this.nocase?Gn(e.name):mr(e.name))===i.#C)return this.#l(e,i,s,t)}}#l(e,t,s,i){let r=t.name;return t.#t=t.#t&cr|Nu(e),r!==e.name&&(t.name=e.name),s!==i.provisional&&(s===i.length-1?i.pop():i.splice(s,1),i.unshift(t)),i.provisional++,t}async lstat(){if((this.#t<)===0)try{return this.#V(await this.#e.promises.lstat(this.fullpath())),this}catch(e){this.#I(e.code)}}lstatSync(){if((this.#t<)===0)try{return this.#V(this.#e.lstatSync(this.fullpath())),this}catch(e){this.#I(e.code)}}#V(e){let{atime:t,atimeMs:s,birthtime:i,birthtimeMs:r,blksize:n,blocks:o,ctime:a,ctimeMs:u,dev:l,gid:c,ino:f,mode:d,mtime:p,mtimeMs:m,nlink:g,rdev:D,size:w,uid:y}=e;this.#w=t,this.#u=s,this.#m=i,this.#v=r,this.#c=n,this.#f=o,this.#R=a,this.#h=u,this.#s=l,this.#b=c,this.#a=f,this.#n=d,this.#p=p,this.#i=m,this.#r=g,this.#D=D,this.#d=w,this.#o=y;let v=Nu(e);this.#t=this.#t&cr|v|sh,v!==He&&v!==wt&&v!==xs&&(this.#t|=pr)}#O=[];#k=!1;#W(e){this.#k=!1;let t=this.#O.slice();this.#O.length=0,t.forEach(s=>s(null,e))}readdirCB(e,t=!1){if(!this.canReaddir()){t?e(null,[]):queueMicrotask(()=>e(null,[]));return}let s=this.children();if(this.calledReaddir()){let r=s.slice(0,s.provisional);t?e(null,r):queueMicrotask(()=>e(null,r));return}if(this.#O.push(e),this.#k)return;this.#k=!0;let i=this.fullpath();this.#e.readdir(i,{withFileTypes:!0},(r,n)=>{if(r)this.#M(r.code),s.provisional=0;else{for(let o of n)this.#j(o,s);this.#N(s)}this.#W(s.slice(0,s.provisional))})}#K;async readdir(){if(!this.canReaddir())return[];let e=this.children();if(this.calledReaddir())return e.slice(0,e.provisional);let t=this.fullpath();if(this.#K)await this.#K;else{let s=()=>{};this.#K=new Promise(i=>s=i);try{for(let i of await this.#e.promises.readdir(t,{withFileTypes:!0}))this.#j(i,e);this.#N(e)}catch(i){this.#M(i.code),e.provisional=0}this.#K=void 0,s()}return e.slice(0,e.provisional)}readdirSync(){if(!this.canReaddir())return[];let e=this.children();if(this.calledReaddir())return e.slice(0,e.provisional);let t=this.fullpath();try{for(let s of this.#e.readdirSync(t,{withFileTypes:!0}))this.#j(s,e);this.#N(e)}catch(s){this.#M(s.code),e.provisional=0}return e.slice(0,e.provisional)}canReaddir(){if(this.#t&ih)return!1;let e=ze&this.#t;return e===He||e===wt||e===xs}shouldWalk(e,t){return(this.#t&wt)===wt&&!(this.#t&ih)&&!e.has(this)&&(!t||t(this))}async realpath(){if(this.#A)return this.#A;if(!((Kn|Vn|lt)&this.#t))try{let e=await this.#e.promises.realpath(this.fullpath());return this.#A=this.resolve(e)}catch{this.#L()}}realpathSync(){if(this.#A)return this.#A;if(!((Kn|Vn|lt)&this.#t))try{let e=this.#e.realpathSync(this.fullpath());return this.#A=this.resolve(e)}catch{this.#L()}}[Lh](e){if(e===this)return;e.isCWD=!1,this.isCWD=!0;let t=new Set([]),s=[],i=this;for(;i&&i.parent;)t.add(i),i.#E=s.join(this.sep),i.#S=s.join("/"),i=i.parent,s.push("..");for(i=e;i&&i.parent&&!t.has(i);)i.#E=void 0,i.#S=void 0,i=i.parent}},Nh=class Mh extends Pe{sep="\\";splitSep=uC;constructor(t,s=He,i,r,n,o,a){super(t,s,i,r,n,o,a)}newChild(t,s=He,i={}){return new Mh(t,s,this.root,this.roots,this.nocase,this.childrenCache(),i)}getRootString(t){return fi.win32.parse(t).root}getRoot(t){if(t=aC(t.toUpperCase()),t===this.root.name)return this.root;for(let[s,i]of Object.entries(this.roots))if(this.sameRoot(t,s))return this.roots[t]=i;return this.roots[t]=new Wu(t,this).root}sameRoot(t,s=this.root.name){return t=t.toUpperCase().replace(/\//g,"\\").replace(_h,"$1\\"),t===s}},jh=class qh extends Pe{splitSep="/";sep="/";constructor(t,s=He,i,r,n,o,a){super(t,s,i,r,n,o,a)}getRootString(t){return t.startsWith("/")?"/":""}getRoot(t){return this.root}newChild(t,s=He,i={}){return new qh(t,s,this.root,this.roots,this.nocase,this.childrenCache(),i)}},Uh=class{root;rootPath;roots;cwd;#e;#s;#n;nocase;#r;constructor(e=process.cwd(),t,s,{nocase:i,childrenCacheSize:r=16*1024,fs:n=hr}={}){this.#r=Ih(n),(e instanceof URL||e.startsWith("file://"))&&(e=(0,Ah.fileURLToPath)(e));let o=t.resolve(e);this.roots=Object.create(null),this.rootPath=this.parseRootPath(o),this.#e=new oh,this.#s=new oh,this.#n=new cC(r);let a=o.substring(this.rootPath.length).split(s);if(a.length===1&&!a[0]&&a.pop(),i===void 0)throw new TypeError("must provide nocase setting to PathScurryBase ctor");this.nocase=i,this.root=this.newRoot(this.#r),this.roots[this.rootPath]=this.root;let u=this.root,l=a.length-1,c=t.sep,f=this.rootPath,d=!1;for(let p of a){let m=l--;u=u.child(p,{relative:new Array(m).fill("..").join(c),relativePosix:new Array(m).fill("..").join("/"),fullpath:f+=(d?"":c)+p}),d=!0}this.cwd=u}depth(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.depth()}childrenCache(){return this.#n}resolve(...e){let t="";for(let r=e.length-1;r>=0;r--){let n=e[r];if(!(!n||n===".")&&(t=t?`${n}/${t}`:n,this.isAbsolute(n)))break}let s=this.#e.get(t);if(s!==void 0)return s;let i=this.cwd.resolve(t).fullpath();return this.#e.set(t,i),i}resolvePosix(...e){let t="";for(let r=e.length-1;r>=0;r--){let n=e[r];if(!(!n||n===".")&&(t=t?`${n}/${t}`:n,this.isAbsolute(n)))break}let s=this.#s.get(t);if(s!==void 0)return s;let i=this.cwd.resolve(t).fullpathPosix();return this.#s.set(t,i),i}relative(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.relative()}relativePosix(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.relativePosix()}basename(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.name}dirname(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),(e.parent||e).fullpath()}async readdir(e=this.cwd,t={withFileTypes:!0}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd);let{withFileTypes:s}=t;if(e.canReaddir()){let i=await e.readdir();return s?i:i.map(r=>r.name)}else return[]}readdirSync(e=this.cwd,t={withFileTypes:!0}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd);let{withFileTypes:s=!0}=t;return e.canReaddir()?s?e.readdirSync():e.readdirSync().map(i=>i.name):[]}async lstat(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.lstat()}lstatSync(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.lstatSync()}async readlink(e=this.cwd,{withFileTypes:t}={withFileTypes:!1}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e.withFileTypes,e=this.cwd);let s=await e.readlink();return t?s:s?.fullpath()}readlinkSync(e=this.cwd,{withFileTypes:t}={withFileTypes:!1}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e.withFileTypes,e=this.cwd);let s=e.readlinkSync();return t?s:s?.fullpath()}async realpath(e=this.cwd,{withFileTypes:t}={withFileTypes:!1}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e.withFileTypes,e=this.cwd);let s=await e.realpath();return t?s:s?.fullpath()}realpathSync(e=this.cwd,{withFileTypes:t}={withFileTypes:!1}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e.withFileTypes,e=this.cwd);let s=e.realpathSync();return t?s:s?.fullpath()}async walk(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:n}=t,o=[];(!r||r(e))&&o.push(s?e:e.fullpath());let a=new Set,u=(c,f)=>{a.add(c),c.readdirCB((d,p)=>{if(d)return f(d);let m=p.length;if(!m)return f();let g=()=>{--m===0&&f()};for(let D of p)(!r||r(D))&&o.push(s?D:D.fullpath()),i&&D.isSymbolicLink()?D.realpath().then(w=>w?.isUnknown()?w.lstat():w).then(w=>w?.shouldWalk(a,n)?u(w,g):g()):D.shouldWalk(a,n)?u(D,g):g()},!0)},l=e;return new Promise((c,f)=>{u(l,d=>{if(d)return f(d);c(o)})})}walkSync(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:n}=t,o=[];(!r||r(e))&&o.push(s?e:e.fullpath());let a=new Set([e]);for(let u of a){let l=u.readdirSync();for(let c of l){(!r||r(c))&&o.push(s?c:c.fullpath());let f=c;if(c.isSymbolicLink()){if(!(i&&(f=c.realpathSync())))continue;f.isUnknown()&&f.lstatSync()}f.shouldWalk(a,n)&&a.add(f)}}return o}[Symbol.asyncIterator](){return this.iterate()}iterate(e=this.cwd,t={}){return typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd),this.stream(e,t)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:n}=t;(!r||r(e))&&(yield s?e:e.fullpath());let o=new Set([e]);for(let a of o){let u=a.readdirSync();for(let l of u){(!r||r(l))&&(yield s?l:l.fullpath());let c=l;if(l.isSymbolicLink()){if(!(i&&(c=l.realpathSync())))continue;c.isUnknown()&&c.lstatSync()}c.shouldWalk(o,n)&&o.add(c)}}}stream(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:n}=t,o=new Jn({objectMode:!0});(!r||r(e))&&o.write(s?e:e.fullpath());let a=new Set,u=[e],l=0,c=()=>{let f=!1;for(;!f;){let d=u.shift();if(!d){l===0&&o.end();return}l++,a.add(d);let p=(g,D,w=!1)=>{if(g)return o.emit("error",g);if(i&&!w){let y=[];for(let v of D)v.isSymbolicLink()&&y.push(v.realpath().then(E=>E?.isUnknown()?E.lstat():E));if(y.length){Promise.all(y).then(()=>p(null,D,!0));return}}for(let y of D)y&&(!r||r(y))&&(o.write(s?y:y.fullpath())||(f=!0));l--;for(let y of D){let v=y.realpathCached()||y;v.shouldWalk(a,n)&&u.push(v)}f&&!o.flowing?o.once("drain",c):m||c()},m=!0;d.readdirCB(p,!0),m=!1}};return c(),o}streamSync(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:n}=t,o=new Jn({objectMode:!0}),a=new Set;(!r||r(e))&&o.write(s?e:e.fullpath());let u=[e],l=0,c=()=>{let f=!1;for(;!f;){let d=u.shift();if(!d){l===0&&o.end();return}l++,a.add(d);let p=d.readdirSync();for(let m of p)(!r||r(m))&&(o.write(s?m:m.fullpath())||(f=!0));l--;for(let m of p){let g=m;if(m.isSymbolicLink()){if(!(i&&(g=m.realpathSync())))continue;g.isUnknown()&&g.lstatSync()}g.shouldWalk(a,n)&&u.push(g)}}f&&!o.flowing&&o.once("drain",c)};return c(),o}chdir(e=this.cwd){let t=this.cwd;this.cwd=typeof e=="string"?this.cwd.resolve(e):e,this.cwd[Lh](t)}},Wu=class extends Uh{sep="\\";constructor(e=process.cwd(),t={}){let{nocase:s=!0}=t;super(e,fi.win32,"\\",{...t,nocase:s}),this.nocase=s;for(let i=this.cwd;i;i=i.parent)i.nocase=this.nocase}parseRootPath(e){return fi.win32.parse(e).root.toUpperCase()}newRoot(e){return new Nh(this.rootPath,wt,void 0,this.roots,this.nocase,this.childrenCache(),{fs:e})}isAbsolute(e){return e.startsWith("/")||e.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(e)}},Ku=class extends Uh{sep="/";constructor(e=process.cwd(),t={}){let{nocase:s=!1}=t;super(e,fi.posix,"/",{...t,nocase:s}),this.nocase=s}parseRootPath(e){return"/"}newRoot(e){return new jh(this.rootPath,wt,void 0,this.roots,this.nocase,this.childrenCache(),{fs:e})}isAbsolute(e){return e.startsWith("/")}},Vh=class extends Ku{constructor(e=process.cwd(),t={}){let{nocase:s=!0}=t;super(e,{...t,nocase:s})}},$T=process.platform==="win32"?Nh:jh,fC=process.platform==="win32"?Wu:process.platform==="darwin"?Vh:Ku,dC=e=>e.length>=1,hC=e=>e.length>=1,pC=Symbol.for("nodejs.util.inspect.custom"),Gh=class Wh{#e;#s;#n;length;#r;#o;#b;#D;#c;#a;#d=!0;constructor(t,s,i,r){if(!dC(t))throw new TypeError("empty pattern list");if(!hC(s))throw new TypeError("empty glob list");if(s.length!==t.length)throw new TypeError("mismatched pattern list and glob list lengths");if(this.length=t.length,i<0||i>=this.length)throw new TypeError("index out of range");if(this.#e=t,this.#s=s,this.#n=i,this.#r=r,this.#n===0){if(this.isUNC()){let[n,o,a,u,...l]=this.#e,[c,f,d,p,...m]=this.#s;l[0]===""&&(l.shift(),m.shift());let g=[n,o,a,u,""].join("/"),D=[c,f,d,p,""].join("/");this.#e=[g,...l],this.#s=[D,...m],this.length=this.#e.length}else if(this.isDrive()||this.isAbsolute()){let[n,...o]=this.#e,[a,...u]=this.#s;o[0]===""&&(o.shift(),u.shift());let l=n+"/",c=a+"/";this.#e=[l,...o],this.#s=[c,...u],this.length=this.#e.length}}}[pC](){return"Pattern <"+this.#s.slice(this.#n).join("/")+">"}pattern(){return this.#e[this.#n]}isString(){return typeof this.#e[this.#n]=="string"}isGlobstar(){return this.#e[this.#n]===_e}isRegExp(){return this.#e[this.#n]instanceof RegExp}globString(){return this.#b=this.#b||(this.#n===0?this.isAbsolute()?this.#s[0]+this.#s.slice(1).join("/"):this.#s.join("/"):this.#s.slice(this.#n).join("/"))}hasMore(){return this.length>this.#n+1}rest(){return this.#o!==void 0?this.#o:this.hasMore()?(this.#o=new Wh(this.#e,this.#s,this.#n+1,this.#r),this.#o.#a=this.#a,this.#o.#c=this.#c,this.#o.#D=this.#D,this.#o):this.#o=null}isUNC(){let t=this.#e;return this.#c!==void 0?this.#c:this.#c=this.#r==="win32"&&this.#n===0&&t[0]===""&&t[1]===""&&typeof t[2]=="string"&&!!t[2]&&typeof t[3]=="string"&&!!t[3]}isDrive(){let t=this.#e;return this.#D!==void 0?this.#D:this.#D=this.#r==="win32"&&this.#n===0&&this.length>1&&typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0])}isAbsolute(){let t=this.#e;return this.#a!==void 0?this.#a:this.#a=t[0]===""&&t.length>1||this.isDrive()||this.isUNC()}root(){let t=this.#e[0];return typeof t=="string"&&this.isAbsolute()&&this.#n===0?t:""}checkFollowGlobstar(){return!(this.#n===0||!this.isGlobstar()||!this.#d)}markFollowGlobstar(){return this.#n===0||!this.isGlobstar()||!this.#d?!1:(this.#d=!1,!0)}},mC=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",ju=class{relative;relativeChildren;absolute;absoluteChildren;platform;mmopts;constructor(e,{nobrace:t,nocase:s,noext:i,noglobstar:r,platform:n=mC}){this.relative=[],this.absolute=[],this.relativeChildren=[],this.absoluteChildren=[],this.platform=n,this.mmopts={dot:!0,nobrace:t,nocase:s,noext:i,noglobstar:r,optimizationLevel:2,platform:n,nocomment:!0,nonegate:!0};for(let o of e)this.add(o)}add(e){let t=new Zt(e,this.mmopts);for(let s=0;s<t.set.length;s++){let i=t.set[s],r=t.globParts[s];if(!i||!r)throw new Error("invalid pattern object");for(;i[0]==="."&&r[0]===".";)i.shift(),r.shift();let n=new Gh(i,r,0,this.platform),o=new Zt(n.globString(),this.mmopts),a=r[r.length-1]==="**",u=n.isAbsolute();u?this.absolute.push(o):this.relative.push(o),a&&(u?this.absoluteChildren.push(o):this.relativeChildren.push(o))}}ignored(e){let t=e.fullpath(),s=`${t}/`,i=e.relative()||".",r=`${i}/`;for(let n of this.relative)if(n.match(i)||n.match(r))return!0;for(let n of this.absolute)if(n.match(t)||n.match(s))return!0;return!1}childrenIgnored(e){let t=e.fullpath()+"/",s=(e.relative()||".")+"/";for(let i of this.relativeChildren)if(i.match(s))return!0;for(let i of this.absoluteChildren)if(i.match(t))return!0;return!1}},gC=class Kh{store;constructor(t=new Map){this.store=t}copy(){return new Kh(new Map(this.store))}hasWalked(t,s){return this.store.get(t.fullpath())?.has(s.globString())}storeWalked(t,s){let i=t.fullpath(),r=this.store.get(i);r?r.add(s.globString()):this.store.set(i,new Set([s.globString()]))}},DC=class{store=new Map;add(e,t,s){let i=(t?2:0)|(s?1:0),r=this.store.get(e);this.store.set(e,r===void 0?i:i&r)}entries(){return[...this.store.entries()].map(([e,t])=>[e,!!(t&2),!!(t&1)])}},yC=class{store=new Map;add(e,t){if(!e.canReaddir())return;let s=this.store.get(e);s?s.find(i=>i.globString()===t.globString())||s.push(t):this.store.set(e,[t])}get(e){let t=this.store.get(e);if(!t)throw new Error("attempting to walk unknown path");return t}entries(){return this.keys().map(e=>[e,this.store.get(e)])}keys(){return[...this.store.keys()].filter(e=>e.canReaddir())}},ah=class zh{hasWalkedCache;matches=new DC;subwalks=new yC;patterns;follow;dot;opts;constructor(t,s){this.opts=t,this.follow=!!t.follow,this.dot=!!t.dot,this.hasWalkedCache=s?s.copy():new gC}processPatterns(t,s){this.patterns=s;let i=s.map(r=>[t,r]);for(let[r,n]of i){this.hasWalkedCache.storeWalked(r,n);let o=n.root(),a=n.isAbsolute()&&this.opts.absolute!==!1;if(o){r=r.resolve(o==="/"&&this.opts.root!==void 0?this.opts.root:o);let f=n.rest();if(f)n=f;else{this.matches.add(r,!0,!1);continue}}if(r.isENOENT())continue;let u,l,c=!1;for(;typeof(u=n.pattern())=="string"&&(l=n.rest());)r=r.resolve(u),n=l,c=!0;if(u=n.pattern(),l=n.rest(),c){if(this.hasWalkedCache.hasWalked(r,n))continue;this.hasWalkedCache.storeWalked(r,n)}if(typeof u=="string"){let f=u===".."||u===""||u===".";this.matches.add(r.resolve(u),a,f);continue}else if(u===_e){(!r.isSymbolicLink()||this.follow||n.checkFollowGlobstar())&&this.subwalks.add(r,n);let f=l?.pattern(),d=l?.rest();if(!l||(f===""||f===".")&&!d)this.matches.add(r,a,f===""||f===".");else if(f===".."){let p=r.parent||r;d?this.hasWalkedCache.hasWalked(p,d)||this.subwalks.add(p,d):this.matches.add(p,a,!0)}}else u instanceof RegExp&&this.subwalks.add(r,n)}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new zh(this.opts,this.hasWalkedCache)}filterEntries(t,s){let i=this.subwalks.get(t),r=this.child();for(let n of s)for(let o of i){let a=o.isAbsolute(),u=o.pattern(),l=o.rest();u===_e?r.testGlobstar(n,o,l,a):u instanceof RegExp?r.testRegExp(n,u,l,a):r.testString(n,u,l,a)}return r}testGlobstar(t,s,i,r){if((this.dot||!t.name.startsWith("."))&&(s.hasMore()||this.matches.add(t,r,!1),t.canReaddir()&&(this.follow||!t.isSymbolicLink()?this.subwalks.add(t,s):t.isSymbolicLink()&&(i&&s.checkFollowGlobstar()?this.subwalks.add(t,i):s.markFollowGlobstar()&&this.subwalks.add(t,s)))),i){let n=i.pattern();if(typeof n=="string"&&n!==".."&&n!==""&&n!==".")this.testString(t,n,i.rest(),r);else if(n===".."){let o=t.parent||t;this.subwalks.add(o,i)}else n instanceof RegExp&&this.testRegExp(t,n,i.rest(),r)}}testRegExp(t,s,i,r){s.test(t.name)&&(i?this.subwalks.add(t,i):this.matches.add(t,r,!1))}testString(t,s,i,r){t.isNamed(s)&&(i?this.subwalks.add(t,i):this.matches.add(t,r,!1))}},wC=(e,t)=>typeof e=="string"?new ju([e],t):Array.isArray(e)?new ju(e,t):e,Hh=class{path;patterns;opts;seen=new Set;paused=!1;aborted=!1;#e=[];#s;#n;signal;maxDepth;includeChildMatches;constructor(e,t,s){if(this.patterns=e,this.path=t,this.opts=s,this.#n=!s.posix&&s.platform==="win32"?"\\":"/",this.includeChildMatches=s.includeChildMatches!==!1,(s.ignore||!this.includeChildMatches)&&(this.#s=wC(s.ignore??[],s),!this.includeChildMatches&&typeof this.#s.add!="function")){let i="cannot ignore child matches, ignore lacks add() method.";throw new Error(i)}this.maxDepth=s.maxDepth||1/0,s.signal&&(this.signal=s.signal,this.signal.addEventListener("abort",()=>{this.#e.length=0}))}#r(e){return this.seen.has(e)||!!this.#s?.ignored?.(e)}#o(e){return!!this.#s?.childrenIgnored?.(e)}pause(){this.paused=!0}resume(){if(this.signal?.aborted)return;this.paused=!1;let e;for(;!this.paused&&(e=this.#e.shift());)e()}onResume(e){this.signal?.aborted||(this.paused?this.#e.push(e):e())}async matchCheck(e,t){if(t&&this.opts.nodir)return;let s;if(this.opts.realpath){if(s=e.realpathCached()||await e.realpath(),!s)return;e=s}let i=e.isUnknown()||this.opts.stat?await e.lstat():e;if(this.opts.follow&&this.opts.nodir&&i?.isSymbolicLink()){let r=await i.realpath();r&&(r.isUnknown()||this.opts.stat)&&await r.lstat()}return this.matchCheckTest(i,t)}matchCheckTest(e,t){return e&&(this.maxDepth===1/0||e.depth()<=this.maxDepth)&&(!t||e.canReaddir())&&(!this.opts.nodir||!e.isDirectory())&&(!this.opts.nodir||!this.opts.follow||!e.isSymbolicLink()||!e.realpathCached()?.isDirectory())&&!this.#r(e)?e:void 0}matchCheckSync(e,t){if(t&&this.opts.nodir)return;let s;if(this.opts.realpath){if(s=e.realpathCached()||e.realpathSync(),!s)return;e=s}let i=e.isUnknown()||this.opts.stat?e.lstatSync():e;if(this.opts.follow&&this.opts.nodir&&i?.isSymbolicLink()){let r=i.realpathSync();r&&(r?.isUnknown()||this.opts.stat)&&r.lstatSync()}return this.matchCheckTest(i,t)}matchFinish(e,t){if(this.#r(e))return;if(!this.includeChildMatches&&this.#s?.add){let r=`${e.relativePosix()}/**`;this.#s.add(r)}let s=this.opts.absolute===void 0?t:this.opts.absolute;this.seen.add(e);let i=this.opts.mark&&e.isDirectory()?this.#n:"";if(this.opts.withFileTypes)this.matchEmit(e);else if(s){let r=this.opts.posix?e.fullpathPosix():e.fullpath();this.matchEmit(r+i)}else{let r=this.opts.posix?e.relativePosix():e.relative(),n=this.opts.dotRelative&&!r.startsWith(".."+this.#n)?"."+this.#n:"";this.matchEmit(r?n+r+i:"."+i)}}async match(e,t,s){let i=await this.matchCheck(e,s);i&&this.matchFinish(i,t)}matchSync(e,t,s){let i=this.matchCheckSync(e,s);i&&this.matchFinish(i,t)}walkCB(e,t,s){this.signal?.aborted&&s(),this.walkCB2(e,t,new ah(this.opts),s)}walkCB2(e,t,s,i){if(this.#o(e))return i();if(this.signal?.aborted&&i(),this.paused){this.onResume(()=>this.walkCB2(e,t,s,i));return}s.processPatterns(e,t);let r=1,n=()=>{--r===0&&i()};for(let[o,a,u]of s.matches.entries())this.#r(o)||(r++,this.match(o,a,u).then(()=>n()));for(let o of s.subwalkTargets()){if(this.maxDepth!==1/0&&o.depth()>=this.maxDepth)continue;r++;let a=o.readdirCached();o.calledReaddir()?this.walkCB3(o,a,s,n):o.readdirCB((u,l)=>this.walkCB3(o,l,s,n),!0)}n()}walkCB3(e,t,s,i){s=s.filterEntries(e,t);let r=1,n=()=>{--r===0&&i()};for(let[o,a,u]of s.matches.entries())this.#r(o)||(r++,this.match(o,a,u).then(()=>n()));for(let[o,a]of s.subwalks.entries())r++,this.walkCB2(o,a,s.child(),n);n()}walkCBSync(e,t,s){this.signal?.aborted&&s(),this.walkCB2Sync(e,t,new ah(this.opts),s)}walkCB2Sync(e,t,s,i){if(this.#o(e))return i();if(this.signal?.aborted&&i(),this.paused){this.onResume(()=>this.walkCB2Sync(e,t,s,i));return}s.processPatterns(e,t);let r=1,n=()=>{--r===0&&i()};for(let[o,a,u]of s.matches.entries())this.#r(o)||this.matchSync(o,a,u);for(let o of s.subwalkTargets()){if(this.maxDepth!==1/0&&o.depth()>=this.maxDepth)continue;r++;let a=o.readdirSync();this.walkCB3Sync(o,a,s,n)}n()}walkCB3Sync(e,t,s,i){s=s.filterEntries(e,t);let r=1,n=()=>{--r===0&&i()};for(let[o,a,u]of s.matches.entries())this.#r(o)||this.matchSync(o,a,u);for(let[o,a]of s.subwalks.entries())r++,this.walkCB2Sync(o,a,s.child(),n);n()}},uh=class extends Hh{matches=new Set;constructor(e,t,s){super(e,t,s)}matchEmit(e){this.matches.add(e)}async walk(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&await this.path.lstat(),await new Promise((e,t)=>{this.walkCB(this.path,this.patterns,()=>{this.signal?.aborted?t(this.signal.reason):e(this.matches)})}),this.matches}walkSync(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>{if(this.signal?.aborted)throw this.signal.reason}),this.matches}},lh=class extends Hh{results;constructor(e,t,s){super(e,t,s),this.results=new Jn({signal:this.signal,objectMode:!0}),this.results.on("drain",()=>this.resume()),this.results.on("resume",()=>this.resume())}matchEmit(e){this.results.write(e),this.results.flowing||this.pause()}stream(){let e=this.path;return e.isUnknown()?e.lstat().then(()=>{this.walkCB(e,this.patterns,()=>this.results.end())}):this.walkCB(e,this.patterns,()=>this.results.end()),this.results}streamSync(){return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>this.results.end()),this.results}},bC=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",Qt=class{absolute;cwd;root;dot;dotRelative;follow;ignore;magicalBraces;mark;matchBase;maxDepth;nobrace;nocase;nodir;noext;noglobstar;pattern;platform;realpath;scurry;stat;signal;windowsPathsNoEscape;withFileTypes;includeChildMatches;opts;patterns;constructor(e,t){if(!t)throw new TypeError("glob options required");if(this.withFileTypes=!!t.withFileTypes,this.signal=t.signal,this.follow=!!t.follow,this.dot=!!t.dot,this.dotRelative=!!t.dotRelative,this.nodir=!!t.nodir,this.mark=!!t.mark,t.cwd?(t.cwd instanceof URL||t.cwd.startsWith("file://"))&&(t.cwd=(0,Eh.fileURLToPath)(t.cwd)):this.cwd="",this.cwd=t.cwd||"",this.root=t.root,this.magicalBraces=!!t.magicalBraces,this.nobrace=!!t.nobrace,this.noext=!!t.noext,this.realpath=!!t.realpath,this.absolute=t.absolute,this.includeChildMatches=t.includeChildMatches!==!1,this.noglobstar=!!t.noglobstar,this.matchBase=!!t.matchBase,this.maxDepth=typeof t.maxDepth=="number"?t.maxDepth:1/0,this.stat=!!t.stat,this.ignore=t.ignore,this.withFileTypes&&this.absolute!==void 0)throw new Error("cannot set absolute and withFileTypes:true");if(typeof e=="string"&&(e=[e]),this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(e=e.map(a=>a.replace(/\\/g,"/"))),this.matchBase){if(t.noglobstar)throw new TypeError("base matching requires globstar");e=e.map(a=>a.includes("/")?a:`./**/${a}`)}if(this.pattern=e,this.platform=t.platform||bC,this.opts={...t,platform:this.platform},t.scurry){if(this.scurry=t.scurry,t.nocase!==void 0&&t.nocase!==t.scurry.nocase)throw new Error("nocase option contradicts provided scurry option")}else{let a=t.platform==="win32"?Wu:t.platform==="darwin"?Vh:t.platform?Ku:fC;this.scurry=new a(this.cwd,{nocase:t.nocase,fs:t.fs})}this.nocase=this.scurry.nocase;let s=this.platform==="darwin"||this.platform==="win32",i={braceExpandMax:1e4,...t,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly:s,nocomment:!0,noext:this.noext,nonegate:!0,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},r=this.pattern.map(a=>new Zt(a,i)),[n,o]=r.reduce((a,u)=>(a[0].push(...u.set),a[1].push(...u.globParts),a),[[],[]]);this.patterns=n.map((a,u)=>{let l=o[u];if(!l)throw new Error("invalid pattern object");return new Gh(a,l,0,this.platform)})}async walk(){return[...await new uh(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walk()]}walkSync(){return[...new uh(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walkSync()]}stream(){return new lh(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).stream()}streamSync(){return new lh(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}},Jh=(e,t={})=>{Array.isArray(e)||(e=[e]);for(let s of e)if(new Zt(s,t).hasMagic())return!0;return!1};Yh=gr,Zh=Object.assign(zu,{sync:gr}),Xh=Dr,Qh=Object.assign(Ju,{sync:Dr}),ep=Object.assign(Hu,{stream:gr,iterate:Dr}),Je=Object.assign(ch,{glob:ch,globSync:Hu,sync:ep,globStream:zu,stream:Zh,globStreamSync:gr,streamSync:Yh,globIterate:Ju,iterate:Qh,globIterateSync:Dr,iterateSync:Xh,Glob:Qt,hasMagic:Jh,escape:Vu,unescape:Ss});Je.glob=Je});var K=I(Fe=>{"use strict";var Yu=Symbol.for("yaml.alias"),sp=Symbol.for("yaml.document"),Xn=Symbol.for("yaml.map"),ip=Symbol.for("yaml.pair"),Zu=Symbol.for("yaml.scalar"),Qn=Symbol.for("yaml.seq"),Tt=Symbol.for("yaml.node.type"),vC=e=>!!e&&typeof e=="object"&&e[Tt]===Yu,EC=e=>!!e&&typeof e=="object"&&e[Tt]===sp,FC=e=>!!e&&typeof e=="object"&&e[Tt]===Xn,CC=e=>!!e&&typeof e=="object"&&e[Tt]===ip,rp=e=>!!e&&typeof e=="object"&&e[Tt]===Zu,xC=e=>!!e&&typeof e=="object"&&e[Tt]===Qn;function np(e){if(e&&typeof e=="object")switch(e[Tt]){case Xn:case Qn:return!0}return!1}function SC(e){if(e&&typeof e=="object")switch(e[Tt]){case Yu:case Xn:case Zu:case Qn:return!0}return!1}var AC=e=>(rp(e)||np(e))&&!!e.anchor;Fe.ALIAS=Yu;Fe.DOC=sp;Fe.MAP=Xn;Fe.NODE_TYPE=Tt;Fe.PAIR=ip;Fe.SCALAR=Zu;Fe.SEQ=Qn;Fe.hasAnchor=AC;Fe.isAlias=vC;Fe.isCollection=np;Fe.isDocument=EC;Fe.isMap=FC;Fe.isNode=SC;Fe.isPair=CC;Fe.isScalar=rp;Fe.isSeq=xC});var wr=I(Xu=>{"use strict";var de=K(),Be=Symbol("break visit"),op=Symbol("skip children"),vt=Symbol("remove node");function eo(e,t){let s=ap(t);de.isDocument(e)?di(null,e.contents,s,Object.freeze([e]))===vt&&(e.contents=null):di(null,e,s,Object.freeze([]))}eo.BREAK=Be;eo.SKIP=op;eo.REMOVE=vt;function di(e,t,s,i){let r=up(e,t,s,i);if(de.isNode(r)||de.isPair(r))return lp(e,i,r),di(e,r,s,i);if(typeof r!="symbol"){if(de.isCollection(t)){i=Object.freeze(i.concat(t));for(let n=0;n<t.items.length;++n){let o=di(n,t.items[n],s,i);if(typeof o=="number")n=o-1;else{if(o===Be)return Be;o===vt&&(t.items.splice(n,1),n-=1)}}}else if(de.isPair(t)){i=Object.freeze(i.concat(t));let n=di("key",t.key,s,i);if(n===Be)return Be;n===vt&&(t.key=null);let o=di("value",t.value,s,i);if(o===Be)return Be;o===vt&&(t.value=null)}}return r}async function to(e,t){let s=ap(t);de.isDocument(e)?await hi(null,e.contents,s,Object.freeze([e]))===vt&&(e.contents=null):await hi(null,e,s,Object.freeze([]))}to.BREAK=Be;to.SKIP=op;to.REMOVE=vt;async function hi(e,t,s,i){let r=await up(e,t,s,i);if(de.isNode(r)||de.isPair(r))return lp(e,i,r),hi(e,r,s,i);if(typeof r!="symbol"){if(de.isCollection(t)){i=Object.freeze(i.concat(t));for(let n=0;n<t.items.length;++n){let o=await hi(n,t.items[n],s,i);if(typeof o=="number")n=o-1;else{if(o===Be)return Be;o===vt&&(t.items.splice(n,1),n-=1)}}}else if(de.isPair(t)){i=Object.freeze(i.concat(t));let n=await hi("key",t.key,s,i);if(n===Be)return Be;n===vt&&(t.key=null);let o=await hi("value",t.value,s,i);if(o===Be)return Be;o===vt&&(t.value=null)}}return r}function ap(e){return typeof e=="object"&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function up(e,t,s,i){if(typeof s=="function")return s(e,t,i);if(de.isMap(t))return s.Map?.(e,t,i);if(de.isSeq(t))return s.Seq?.(e,t,i);if(de.isPair(t))return s.Pair?.(e,t,i);if(de.isScalar(t))return s.Scalar?.(e,t,i);if(de.isAlias(t))return s.Alias?.(e,t,i)}function lp(e,t,s){let i=t[t.length-1];if(de.isCollection(i))i.items[e]=s;else if(de.isPair(i))e==="key"?i.key=s:i.value=s;else if(de.isDocument(i))i.contents=s;else{let r=de.isAlias(i)?"alias":"scalar";throw new Error(`Cannot replace node with ${r} parent`)}}Xu.visit=eo;Xu.visitAsync=to});var Qu=I(fp=>{"use strict";var cp=K(),RC=wr(),kC={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},IC=e=>e.replace(/[!,[\]{}]/g,t=>kC[t]),br=class e{constructor(t,s){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},e.defaultYaml,t),this.tags=Object.assign({},e.defaultTags,s)}clone(){let t=new e(this.yaml,this.tags);return t.docStart=this.docStart,t}atDocument(){let t=new e(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:e.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},e.defaultTags);break}return t}add(t,s){this.atNextDocument&&(this.yaml={explicit:e.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},e.defaultTags),this.atNextDocument=!1);let i=t.trim().split(/[ \t]+/),r=i.shift();switch(r){case"%TAG":{if(i.length!==2&&(s(0,"%TAG directive should contain exactly two parts"),i.length<2))return!1;let[n,o]=i;return this.tags[n]=o,!0}case"%YAML":{if(this.yaml.explicit=!0,i.length!==1)return s(0,"%YAML directive should contain exactly one part"),!1;let[n]=i;if(n==="1.1"||n==="1.2")return this.yaml.version=n,!0;{let o=/^\d+\.\d+$/.test(n);return s(6,`Unsupported YAML version ${n}`,o),!1}}default:return s(0,`Unknown directive ${r}`,!0),!1}}tagName(t,s){if(t==="!")return"!";if(t[0]!=="!")return s(`Not a valid tag: ${t}`),null;if(t[1]==="<"){let o=t.slice(2,-1);return o==="!"||o==="!!"?(s(`Verbatim tags aren't resolved, so ${t} is invalid.`),null):(t[t.length-1]!==">"&&s("Verbatim tags must end with a >"),o)}let[,i,r]=t.match(/^(.*!)([^!]*)$/s);r||s(`The ${t} tag has no suffix`);let n=this.tags[i];if(n)try{return n+decodeURIComponent(r)}catch(o){return s(String(o)),null}return i==="!"?t:(s(`Could not resolve tag: ${t}`),null)}tagString(t){for(let[s,i]of Object.entries(this.tags))if(t.startsWith(i))return s+IC(t.substring(i.length));return t[0]==="!"?t:`!<${t}>`}toString(t){let s=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],i=Object.entries(this.tags),r;if(t&&i.length>0&&cp.isNode(t.contents)){let n={};RC.visit(t.contents,(o,a)=>{cp.isNode(a)&&a.tag&&(n[a.tag]=!0)}),r=Object.keys(n)}else r=[];for(let[n,o]of i)n==="!!"&&o==="tag:yaml.org,2002:"||(!t||r.some(a=>a.startsWith(o)))&&s.push(`%TAG ${n} ${o}`);return s.join(`
|
|
54
|
+
>>> no match, partial?`,e,f,t,d),f===a))}let m;if(typeof l=="string"?(m=c===l,this.debug("string match",l,c,m)):(m=l.test(c),this.debug("pattern match",l,c,m)),!m)return!1}if(n===a&&o===u)return!0;if(n===a)return s;if(o===u)return n===a-1&&e[n]==="";throw new Error("wtf?")}braceExpand(){return vh(this.pattern,this.options)}parse(e){zn(e);let t=this.options;if(e==="**")return _e;if(e==="")return"";let s,i=null;(s=e.match(RF))?i=t.dot?IF:kF:(s=e.match(yF))?i=(t.nocase?t.dot?EF:vF:t.dot?bF:wF)(s[1]):(s=e.match(_F))?i=(t.nocase?t.dot?TF:$F:t.dot?PF:BF)(s):(s=e.match(FF))?i=t.dot?xF:CF:(s=e.match(SF))&&(i=AF);let r=Dh.fromGlob(e,this.options).toMMPattern();return i&&typeof r=="object"&&Reflect.defineProperty(r,"test",{value:i}),r}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let t=this.options,s=t.noglobstar?NF:t.dot?MF:jF,i=new Set(t.nocase?["i"]:[]),r=e.map(a=>{let u=a.map(c=>{if(c instanceof RegExp)for(let f of c.flags.split(""))i.add(f);return typeof c=="string"?WF(c):c===_e?_e:c._src});u.forEach((c,f)=>{let d=u[f+1],p=u[f-1];c!==_e||p===_e||(p===void 0?d!==void 0&&d!==_e?u[f+1]="(?:\\/|"+s+"\\/)?"+d:u[f]=s:d===void 0?u[f-1]=p+"(?:\\/|\\/"+s+")?":d!==_e&&(u[f-1]=p+"(?:\\/|\\/"+s+"\\/)"+d,u[f+1]=_e))});let l=u.filter(c=>c!==_e);if(this.partial&&l.length>=1){let c=[];for(let f=1;f<=l.length;f++)c.push(l.slice(0,f).join("/"));return"(?:"+c.join("|")+")"}return l.join("/")}).join("|"),[n,o]=e.length>1?["(?:",")"]:["",""];r="^"+n+r+o+"$",this.partial&&(r="^(?:\\/|"+n+r.slice(1,-1)+o+")$"),this.negate&&(r="^(?!"+r+").+$");try{this.regexp=new RegExp(r,[...i].join(""))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e,t=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return e==="";if(e==="/"&&t)return!0;let s=this.options;this.isWindows&&(e=e.split("\\").join("/"));let i=this.slashSplit(e);this.debug(this.pattern,"split",i);let r=this.set;this.debug(this.pattern,"set",r);let n=i[i.length-1];if(!n)for(let o=i.length-2;!n&&o>=0;o--)n=i[o];for(let o=0;o<r.length;o++){let a=r[o],u=i;if(s.matchBase&&a.length===1&&(u=[n]),this.matchOne(u,a,t))return s.flipNegate?!0:!this.negate}return s.flipNegate?!1:this.negate}static defaults(e){return $e.defaults(e).Minimatch}};$e.AST=Dh;$e.Minimatch=Zt;$e.escape=Vu;$e.unescape=Ss;KF=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Fh=new Set,Mu=typeof process=="object"&&process?process:{},Ch=(e,t,s,i)=>{typeof Mu.emitWarning=="function"?Mu.emitWarning(e,t,s,i):console.error(`[${s}] ${t}: ${e}`)},Hn=globalThis.AbortController,Zd=globalThis.AbortSignal;if(typeof Hn>"u"){Zd=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(s,i){this._onabort.push(i)}},Hn=class{constructor(){t()}signal=new Zd;abort(s){if(!this.signal.aborted){this.signal.reason=s,this.signal.aborted=!0;for(let i of this.signal._onabort)i(s);this.signal.onabort?.(s)}}};let e=Mu.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",t=()=>{e&&(e=!1,Ch("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}zF=e=>!Fh.has(e),Yt=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),xh=e=>Yt(e)?e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?Wn:null:null,Wn=class extends Array{constructor(e){super(e),this.fill(0)}},HF=class dr{heap;length;static#e=!1;static create(t){let s=xh(t);if(!s)return[];dr.#e=!0;let i=new dr(t,s);return dr.#e=!1,i}constructor(t,s){if(!dr.#e)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new s(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},Yn=class Sh{#e;#s;#n;#r;#o;#b;#D;#c;get perf(){return this.#c}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#a;#d;#f;#u;#i;#h;#v;#w;#p;#R;#m;#C;#x;#g;#y;#E;#S;#t;#P;static unsafeExposeInternals(t){return{starts:t.#x,ttls:t.#g,autopurgeTimers:t.#y,sizes:t.#C,keyMap:t.#f,keyList:t.#u,valList:t.#i,next:t.#h,prev:t.#v,get head(){return t.#w},get tail(){return t.#p},free:t.#R,isBackgroundFetch:s=>t.#l(s),backgroundFetch:(s,i,r,n)=>t.#U(s,i,r,n),moveToTail:s=>t.#O(s),indexes:s=>t.#I(s),rindexes:s=>t.#_(s),isStale:s=>t.#F(s)}}get max(){return this.#e}get maxSize(){return this.#s}get calculatedSize(){return this.#d}get size(){return this.#a}get fetchMethod(){return this.#b}get memoMethod(){return this.#D}get dispose(){return this.#n}get onInsert(){return this.#r}get disposeAfter(){return this.#o}constructor(t){let{max:s=0,ttl:i,ttlResolution:r=1,ttlAutopurge:n,updateAgeOnGet:o,updateAgeOnHas:a,allowStale:u,dispose:l,onInsert:c,disposeAfter:f,noDisposeOnSet:d,noUpdateTTL:p,maxSize:m=0,maxEntrySize:g=0,sizeCalculation:D,fetchMethod:w,memoMethod:y,noDeleteOnFetchRejection:v,noDeleteOnStaleGet:E,allowStaleOnFetchRejection:F,allowStaleOnFetchAbort:S,ignoreFetchAbort:B,perf:x}=t;if(x!==void 0&&typeof x?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#c=x??KF,s!==0&&!Yt(s))throw new TypeError("max option must be a nonnegative integer");let $=s?xh(s):Array;if(!$)throw new Error("invalid max value: "+s);if(this.#e=s,this.#s=m,this.maxEntrySize=g||this.#s,this.sizeCalculation=D,this.sizeCalculation){if(!this.#s&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(y!==void 0&&typeof y!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#D=y,w!==void 0&&typeof w!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#b=w,this.#S=!!w,this.#f=new Map,this.#u=new Array(s).fill(void 0),this.#i=new Array(s).fill(void 0),this.#h=new $(s),this.#v=new $(s),this.#w=0,this.#p=0,this.#R=HF.create(s),this.#a=0,this.#d=0,typeof l=="function"&&(this.#n=l),typeof c=="function"&&(this.#r=c),typeof f=="function"?(this.#o=f,this.#m=[]):(this.#o=void 0,this.#m=void 0),this.#E=!!this.#n,this.#P=!!this.#r,this.#t=!!this.#o,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!p,this.noDeleteOnFetchRejection=!!v,this.allowStaleOnFetchRejection=!!F,this.allowStaleOnFetchAbort=!!S,this.ignoreFetchAbort=!!B,this.maxEntrySize!==0){if(this.#s!==0&&!Yt(this.#s))throw new TypeError("maxSize must be a positive integer if specified");if(!Yt(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#G()}if(this.allowStale=!!u,this.noDeleteOnStaleGet=!!E,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!a,this.ttlResolution=Yt(r)||r===0?r:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!Yt(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#$()}if(this.#e===0&&this.ttl===0&&this.#s===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#e&&!this.#s){let W="LRU_CACHE_UNBOUNDED";zF(W)&&(Fh.add(W),Ch("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",W,Sh))}}getRemainingTTL(t){return this.#f.has(t)?1/0:0}#$(){let t=new Wn(this.#e),s=new Wn(this.#e);this.#g=t,this.#x=s;let i=this.ttlAutopurge?new Array(this.#e):void 0;this.#y=i,this.#N=(o,a,u=this.#c.now())=>{if(s[o]=a!==0?u:0,t[o]=a,i?.[o]&&(clearTimeout(i[o]),i[o]=void 0),a!==0&&i){let l=setTimeout(()=>{this.#F(o)&&this.#k(this.#u[o],"expire")},a+1);l.unref&&l.unref(),i[o]=l}},this.#A=o=>{s[o]=t[o]!==0?this.#c.now():0},this.#T=(o,a)=>{if(t[a]){let u=t[a],l=s[a];if(!u||!l)return;o.ttl=u,o.start=l,o.now=r||n();let c=o.now-l;o.remainingTTL=u-c}};let r=0,n=()=>{let o=this.#c.now();if(this.ttlResolution>0){r=o;let a=setTimeout(()=>r=0,this.ttlResolution);a.unref&&a.unref()}return o};this.getRemainingTTL=o=>{let a=this.#f.get(o);if(a===void 0)return 0;let u=t[a],l=s[a];if(!u||!l)return 1/0;let c=(r||n())-l;return u-c},this.#F=o=>{let a=s[o],u=t[o];return!!u&&!!a&&(r||n())-a>u}}#A=()=>{};#T=()=>{};#N=()=>{};#F=()=>!1;#G(){let t=new Wn(this.#e);this.#d=0,this.#C=t,this.#L=s=>{this.#d-=t[s],t[s]=0},this.#M=(s,i,r,n)=>{if(this.#l(i))return 0;if(!Yt(r))if(n){if(typeof n!="function")throw new TypeError("sizeCalculation must be a function");if(r=n(i,s),!Yt(r))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return r},this.#B=(s,i,r)=>{if(t[s]=i,this.#s){let n=this.#s-t[s];for(;this.#d>n;)this.#q(!0)}this.#d+=t[s],r&&(r.entrySize=i,r.totalCalculatedSize=this.#d)}}#L=t=>{};#B=(t,s,i)=>{};#M=(t,s,i,r)=>{if(i||r)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#I({allowStale:t=this.allowStale}={}){if(this.#a)for(let s=this.#p;!(!this.#j(s)||((t||!this.#F(s))&&(yield s),s===this.#w));)s=this.#v[s]}*#_({allowStale:t=this.allowStale}={}){if(this.#a)for(let s=this.#w;!(!this.#j(s)||((t||!this.#F(s))&&(yield s),s===this.#p));)s=this.#h[s]}#j(t){return t!==void 0&&this.#f.get(this.#u[t])===t}*entries(){for(let t of this.#I())this.#i[t]!==void 0&&this.#u[t]!==void 0&&!this.#l(this.#i[t])&&(yield[this.#u[t],this.#i[t]])}*rentries(){for(let t of this.#_())this.#i[t]!==void 0&&this.#u[t]!==void 0&&!this.#l(this.#i[t])&&(yield[this.#u[t],this.#i[t]])}*keys(){for(let t of this.#I()){let s=this.#u[t];s!==void 0&&!this.#l(this.#i[t])&&(yield s)}}*rkeys(){for(let t of this.#_()){let s=this.#u[t];s!==void 0&&!this.#l(this.#i[t])&&(yield s)}}*values(){for(let t of this.#I())this.#i[t]!==void 0&&!this.#l(this.#i[t])&&(yield this.#i[t])}*rvalues(){for(let t of this.#_())this.#i[t]!==void 0&&!this.#l(this.#i[t])&&(yield this.#i[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(t,s={}){for(let i of this.#I()){let r=this.#i[i],n=this.#l(r)?r.__staleWhileFetching:r;if(n!==void 0&&t(n,this.#u[i],this))return this.get(this.#u[i],s)}}forEach(t,s=this){for(let i of this.#I()){let r=this.#i[i],n=this.#l(r)?r.__staleWhileFetching:r;n!==void 0&&t.call(s,n,this.#u[i],this)}}rforEach(t,s=this){for(let i of this.#_()){let r=this.#i[i],n=this.#l(r)?r.__staleWhileFetching:r;n!==void 0&&t.call(s,n,this.#u[i],this)}}purgeStale(){let t=!1;for(let s of this.#_({allowStale:!0}))this.#F(s)&&(this.#k(this.#u[s],"expire"),t=!0);return t}info(t){let s=this.#f.get(t);if(s===void 0)return;let i=this.#i[s],r=this.#l(i)?i.__staleWhileFetching:i;if(r===void 0)return;let n={value:r};if(this.#g&&this.#x){let o=this.#g[s],a=this.#x[s];if(o&&a){let u=o-(this.#c.now()-a);n.ttl=u,n.start=Date.now()}}return this.#C&&(n.size=this.#C[s]),n}dump(){let t=[];for(let s of this.#I({allowStale:!0})){let i=this.#u[s],r=this.#i[s],n=this.#l(r)?r.__staleWhileFetching:r;if(n===void 0||i===void 0)continue;let o={value:n};if(this.#g&&this.#x){o.ttl=this.#g[s];let a=this.#c.now()-this.#x[s];o.start=Math.floor(Date.now()-a)}this.#C&&(o.size=this.#C[s]),t.unshift([i,o])}return t}load(t){this.clear();for(let[s,i]of t){if(i.start){let r=Date.now()-i.start;i.start=this.#c.now()-r}this.set(s,i.value,i)}}set(t,s,i={}){if(s===void 0)return this.delete(t),this;let{ttl:r=this.ttl,start:n,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:u}=i,{noUpdateTTL:l=this.noUpdateTTL}=i,c=this.#M(t,s,i.size||0,a);if(this.maxEntrySize&&c>this.maxEntrySize)return u&&(u.set="miss",u.maxEntrySizeExceeded=!0),this.#k(t,"set"),this;let f=this.#a===0?void 0:this.#f.get(t);if(f===void 0)f=this.#a===0?this.#p:this.#R.length!==0?this.#R.pop():this.#a===this.#e?this.#q(!1):this.#a,this.#u[f]=t,this.#i[f]=s,this.#f.set(t,f),this.#h[this.#p]=f,this.#v[f]=this.#p,this.#p=f,this.#a++,this.#B(f,c,u),u&&(u.set="add"),l=!1,this.#P&&this.#r?.(s,t,"add");else{this.#O(f);let d=this.#i[f];if(s!==d){if(this.#S&&this.#l(d)){d.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:p}=d;p!==void 0&&!o&&(this.#E&&this.#n?.(p,t,"set"),this.#t&&this.#m?.push([p,t,"set"]))}else o||(this.#E&&this.#n?.(d,t,"set"),this.#t&&this.#m?.push([d,t,"set"]));if(this.#L(f),this.#B(f,c,u),this.#i[f]=s,u){u.set="replace";let p=d&&this.#l(d)?d.__staleWhileFetching:d;p!==void 0&&(u.oldValue=p)}}else u&&(u.set="update");this.#P&&this.onInsert?.(s,t,s===d?"update":"replace")}if(r!==0&&!this.#g&&this.#$(),this.#g&&(l||this.#N(f,r,n),u&&this.#T(u,f)),!o&&this.#t&&this.#m){let d=this.#m,p;for(;p=d?.shift();)this.#o?.(...p)}return this}pop(){try{for(;this.#a;){let t=this.#i[this.#w];if(this.#q(!0),this.#l(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#t&&this.#m){let t=this.#m,s;for(;s=t?.shift();)this.#o?.(...s)}}}#q(t){let s=this.#w,i=this.#u[s],r=this.#i[s];return this.#S&&this.#l(r)?r.__abortController.abort(new Error("evicted")):(this.#E||this.#t)&&(this.#E&&this.#n?.(r,i,"evict"),this.#t&&this.#m?.push([r,i,"evict"])),this.#L(s),this.#y?.[s]&&(clearTimeout(this.#y[s]),this.#y[s]=void 0),t&&(this.#u[s]=void 0,this.#i[s]=void 0,this.#R.push(s)),this.#a===1?(this.#w=this.#p=0,this.#R.length=0):this.#w=this.#h[s],this.#f.delete(i),this.#a--,s}has(t,s={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:r}=s,n=this.#f.get(t);if(n!==void 0){let o=this.#i[n];if(this.#l(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#F(n))r&&(r.has="stale",this.#T(r,n));else return i&&this.#A(n),r&&(r.has="hit",this.#T(r,n)),!0}else r&&(r.has="miss");return!1}peek(t,s={}){let{allowStale:i=this.allowStale}=s,r=this.#f.get(t);if(r===void 0||!i&&this.#F(r))return;let n=this.#i[r];return this.#l(n)?n.__staleWhileFetching:n}#U(t,s,i,r){let n=s===void 0?void 0:this.#i[s];if(this.#l(n))return n;let o=new Hn,{signal:a}=i;a?.addEventListener("abort",()=>o.abort(a.reason),{signal:o.signal});let u={signal:o.signal,options:i,context:r},l=(g,D=!1)=>{let{aborted:w}=o.signal,y=i.ignoreFetchAbort&&g!==void 0,v=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&g!==void 0);if(i.status&&(w&&!D?(i.status.fetchAborted=!0,i.status.fetchError=o.signal.reason,y&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),w&&!y&&!D)return f(o.signal.reason,v);let E=p,F=this.#i[s];return(F===p||y&&D&&F===void 0)&&(g===void 0?E.__staleWhileFetching!==void 0?this.#i[s]=E.__staleWhileFetching:this.#k(t,"fetch"):(i.status&&(i.status.fetchUpdated=!0),this.set(t,g,u.options))),g},c=g=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=g),f(g,!1)),f=(g,D)=>{let{aborted:w}=o.signal,y=w&&i.allowStaleOnFetchAbort,v=y||i.allowStaleOnFetchRejection,E=v||i.noDeleteOnFetchRejection,F=p;if(this.#i[s]===p&&(!E||!D&&F.__staleWhileFetching===void 0?this.#k(t,"fetch"):y||(this.#i[s]=F.__staleWhileFetching)),v)return i.status&&F.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),F.__staleWhileFetching;if(F.__returned===F)throw g},d=(g,D)=>{let w=this.#b?.(t,n,u);w&&w instanceof Promise&&w.then(y=>g(y===void 0?void 0:y),D),o.signal.addEventListener("abort",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(g(void 0),i.allowStaleOnFetchAbort&&(g=y=>l(y,!0)))})};i.status&&(i.status.fetchDispatched=!0);let p=new Promise(d).then(l,c),m=Object.assign(p,{__abortController:o,__staleWhileFetching:n,__returned:void 0});return s===void 0?(this.set(t,m,{...u.options,status:void 0}),s=this.#f.get(t)):this.#i[s]=m,m}#l(t){if(!this.#S)return!1;let s=t;return!!s&&s instanceof Promise&&s.hasOwnProperty("__staleWhileFetching")&&s.__abortController instanceof Hn}async fetch(t,s={}){let{allowStale:i=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:u=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:c=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:p=this.ignoreFetchAbort,allowStaleOnFetchAbort:m=this.allowStaleOnFetchAbort,context:g,forceRefresh:D=!1,status:w,signal:y}=s;if(!this.#S)return w&&(w.fetch="get"),this.get(t,{allowStale:i,updateAgeOnGet:r,noDeleteOnStaleGet:n,status:w});let v={allowStale:i,updateAgeOnGet:r,noDeleteOnStaleGet:n,ttl:o,noDisposeOnSet:a,size:u,sizeCalculation:l,noUpdateTTL:c,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:m,ignoreFetchAbort:p,status:w,signal:y},E=this.#f.get(t);if(E===void 0){w&&(w.fetch="miss");let F=this.#U(t,E,v,g);return F.__returned=F}else{let F=this.#i[E];if(this.#l(F)){let $=i&&F.__staleWhileFetching!==void 0;return w&&(w.fetch="inflight",$&&(w.returnedStale=!0)),$?F.__staleWhileFetching:F.__returned=F}let S=this.#F(E);if(!D&&!S)return w&&(w.fetch="hit"),this.#O(E),r&&this.#A(E),w&&this.#T(w,E),F;let B=this.#U(t,E,v,g),x=B.__staleWhileFetching!==void 0&&i;return w&&(w.fetch=S?"stale":"refresh",x&&S&&(w.returnedStale=!0)),x?B.__staleWhileFetching:B.__returned=B}}async forceFetch(t,s={}){let i=await this.fetch(t,s);if(i===void 0)throw new Error("fetch() returned undefined");return i}memo(t,s={}){let i=this.#D;if(!i)throw new Error("no memoMethod provided to constructor");let{context:r,forceRefresh:n,...o}=s,a=this.get(t,o);if(!n&&a!==void 0)return a;let u=i(t,a,{options:o,context:r});return this.set(t,u,o),u}get(t,s={}){let{allowStale:i=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:o}=s,a=this.#f.get(t);if(a!==void 0){let u=this.#i[a],l=this.#l(u);return o&&this.#T(o,a),this.#F(a)?(o&&(o.get="stale"),l?(o&&i&&u.__staleWhileFetching!==void 0&&(o.returnedStale=!0),i?u.__staleWhileFetching:void 0):(n||this.#k(t,"expire"),o&&i&&(o.returnedStale=!0),i?u:void 0)):(o&&(o.get="hit"),l?u.__staleWhileFetching:(this.#O(a),r&&this.#A(a),u))}else o&&(o.get="miss")}#V(t,s){this.#v[s]=t,this.#h[t]=s}#O(t){t!==this.#p&&(t===this.#w?this.#w=this.#h[t]:this.#V(this.#v[t],this.#h[t]),this.#V(this.#p,t),this.#p=t)}delete(t){return this.#k(t,"delete")}#k(t,s){let i=!1;if(this.#a!==0){let r=this.#f.get(t);if(r!==void 0)if(this.#y?.[r]&&(clearTimeout(this.#y?.[r]),this.#y[r]=void 0),i=!0,this.#a===1)this.#W(s);else{this.#L(r);let n=this.#i[r];if(this.#l(n)?n.__abortController.abort(new Error("deleted")):(this.#E||this.#t)&&(this.#E&&this.#n?.(n,t,s),this.#t&&this.#m?.push([n,t,s])),this.#f.delete(t),this.#u[r]=void 0,this.#i[r]=void 0,r===this.#p)this.#p=this.#v[r];else if(r===this.#w)this.#w=this.#h[r];else{let o=this.#v[r];this.#h[o]=this.#h[r];let a=this.#h[r];this.#v[a]=this.#v[r]}this.#a--,this.#R.push(r)}}if(this.#t&&this.#m?.length){let r=this.#m,n;for(;n=r?.shift();)this.#o?.(...n)}return i}clear(){return this.#W("delete")}#W(t){for(let s of this.#_({allowStale:!0})){let i=this.#i[s];if(this.#l(i))i.__abortController.abort(new Error("deleted"));else{let r=this.#u[s];this.#E&&this.#n?.(i,r,t),this.#t&&this.#m?.push([i,r,t])}}if(this.#f.clear(),this.#i.fill(void 0),this.#u.fill(void 0),this.#g&&this.#x){this.#g.fill(0),this.#x.fill(0);for(let s of this.#y??[])s!==void 0&&clearTimeout(s);this.#y?.fill(void 0)}if(this.#C&&this.#C.fill(0),this.#w=0,this.#p=0,this.#R.length=0,this.#d=0,this.#a=0,this.#t&&this.#m){let s=this.#m,i;for(;i=s?.shift();)this.#o?.(...i)}}},Xd=typeof process=="object"&&process?process:{stdout:null,stderr:null},YF=e=>!!e&&typeof e=="object"&&(e instanceof Jn||e instanceof Gu.default||ZF(e)||XF(e)),ZF=e=>!!e&&typeof e=="object"&&e instanceof Zn.EventEmitter&&typeof e.pipe=="function"&&e.pipe!==Gu.default.Writable.prototype.pipe,XF=e=>!!e&&typeof e=="object"&&e instanceof Zn.EventEmitter&&typeof e.write=="function"&&typeof e.end=="function",_t=Symbol("EOF"),$t=Symbol("maybeEmitEnd"),Jt=Symbol("emittedEnd"),Nn=Symbol("emittingEnd"),or=Symbol("emittedError"),Mn=Symbol("closed"),Qd=Symbol("read"),jn=Symbol("flush"),eh=Symbol("flushChunk"),ut=Symbol("encoding"),li=Symbol("decoder"),ge=Symbol("flowing"),ar=Symbol("paused"),ci=Symbol("resume"),De=Symbol("buffer"),Ie=Symbol("pipes"),ye=Symbol("bufferLength"),$u=Symbol("bufferPush"),qn=Symbol("bufferShift"),Re=Symbol("objectMode"),ue=Symbol("destroyed"),Tu=Symbol("error"),Pu=Symbol("emitData"),th=Symbol("emitEnd"),Bu=Symbol("emitEnd2"),yt=Symbol("async"),Ou=Symbol("abort"),Un=Symbol("aborted"),ur=Symbol("signal"),Cs=Symbol("dataListeners"),Ue=Symbol("discarded"),lr=e=>Promise.resolve().then(e),QF=e=>e(),eC=e=>e==="end"||e==="finish"||e==="prefinish",tC=e=>e instanceof ArrayBuffer||!!e&&typeof e=="object"&&e.constructor&&e.constructor.name==="ArrayBuffer"&&e.byteLength>=0,sC=e=>!Buffer.isBuffer(e)&&ArrayBuffer.isView(e),kh=class{src;dest;opts;ondrain;constructor(e,t,s){this.src=e,this.dest=t,this.opts=s,this.ondrain=()=>e[ci](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},iC=class extends kh{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,t,s){super(e,t,s),this.proxyErrors=i=>this.dest.emit("error",i),e.on("error",this.proxyErrors)}},rC=e=>!!e.objectMode,nC=e=>!e.objectMode&&!!e.encoding&&e.encoding!=="buffer",Jn=class extends Zn.EventEmitter{[ge]=!1;[ar]=!1;[Ie]=[];[De]=[];[Re];[ut];[yt];[li];[_t]=!1;[Jt]=!1;[Nn]=!1;[Mn]=!1;[or]=null;[ye]=0;[ue]=!1;[ur];[Un]=!1;[Cs]=0;[Ue]=!1;writable=!0;readable=!0;constructor(...e){let t=e[0]||{};if(super(),t.objectMode&&typeof t.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");rC(t)?(this[Re]=!0,this[ut]=null):nC(t)?(this[ut]=t.encoding,this[Re]=!1):(this[Re]=!1,this[ut]=null),this[yt]=!!t.async,this[li]=this[ut]?new Rh.StringDecoder(this[ut]):null,t&&t.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[De]}),t&&t.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[Ie]});let{signal:s}=t;s&&(this[ur]=s,s.aborted?this[Ou]():s.addEventListener("abort",()=>this[Ou]()))}get bufferLength(){return this[ye]}get encoding(){return this[ut]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[Re]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[yt]}set async(e){this[yt]=this[yt]||!!e}[Ou](){this[Un]=!0,this.emit("abort",this[ur]?.reason),this.destroy(this[ur]?.reason)}get aborted(){return this[Un]}set aborted(e){}write(e,t,s){if(this[Un])return!1;if(this[_t])throw new Error("write after end");if(this[ue])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof t=="function"&&(s=t,t="utf8"),t||(t="utf8");let i=this[yt]?lr:QF;if(!this[Re]&&!Buffer.isBuffer(e)){if(sC(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(tC(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[Re]?(this[ge]&&this[ye]!==0&&this[jn](!0),this[ge]?this.emit("data",e):this[$u](e),this[ye]!==0&&this.emit("readable"),s&&i(s),this[ge]):e.length?(typeof e=="string"&&!(t===this[ut]&&!this[li]?.lastNeed)&&(e=Buffer.from(e,t)),Buffer.isBuffer(e)&&this[ut]&&(e=this[li].write(e)),this[ge]&&this[ye]!==0&&this[jn](!0),this[ge]?this.emit("data",e):this[$u](e),this[ye]!==0&&this.emit("readable"),s&&i(s),this[ge]):(this[ye]!==0&&this.emit("readable"),s&&i(s),this[ge])}read(e){if(this[ue])return null;if(this[Ue]=!1,this[ye]===0||e===0||e&&e>this[ye])return this[$t](),null;this[Re]&&(e=null),this[De].length>1&&!this[Re]&&(this[De]=[this[ut]?this[De].join(""):Buffer.concat(this[De],this[ye])]);let t=this[Qd](e||null,this[De][0]);return this[$t](),t}[Qd](e,t){if(this[Re])this[qn]();else{let s=t;e===s.length||e===null?this[qn]():typeof s=="string"?(this[De][0]=s.slice(e),t=s.slice(0,e),this[ye]-=e):(this[De][0]=s.subarray(e),t=s.subarray(0,e),this[ye]-=e)}return this.emit("data",t),!this[De].length&&!this[_t]&&this.emit("drain"),t}end(e,t,s){return typeof e=="function"&&(s=e,e=void 0),typeof t=="function"&&(s=t,t="utf8"),e!==void 0&&this.write(e,t),s&&this.once("end",s),this[_t]=!0,this.writable=!1,(this[ge]||!this[ar])&&this[$t](),this}[ci](){this[ue]||(!this[Cs]&&!this[Ie].length&&(this[Ue]=!0),this[ar]=!1,this[ge]=!0,this.emit("resume"),this[De].length?this[jn]():this[_t]?this[$t]():this.emit("drain"))}resume(){return this[ci]()}pause(){this[ge]=!1,this[ar]=!0,this[Ue]=!1}get destroyed(){return this[ue]}get flowing(){return this[ge]}get paused(){return this[ar]}[$u](e){this[Re]?this[ye]+=1:this[ye]+=e.length,this[De].push(e)}[qn](){return this[Re]?this[ye]-=1:this[ye]-=this[De][0].length,this[De].shift()}[jn](e=!1){do;while(this[eh](this[qn]())&&this[De].length);!e&&!this[De].length&&!this[_t]&&this.emit("drain")}[eh](e){return this.emit("data",e),this[ge]}pipe(e,t){if(this[ue])return e;this[Ue]=!1;let s=this[Jt];return t=t||{},e===Xd.stdout||e===Xd.stderr?t.end=!1:t.end=t.end!==!1,t.proxyErrors=!!t.proxyErrors,s?t.end&&e.end():(this[Ie].push(t.proxyErrors?new iC(this,e,t):new kh(this,e,t)),this[yt]?lr(()=>this[ci]()):this[ci]()),e}unpipe(e){let t=this[Ie].find(s=>s.dest===e);t&&(this[Ie].length===1?(this[ge]&&this[Cs]===0&&(this[ge]=!1),this[Ie]=[]):this[Ie].splice(this[Ie].indexOf(t),1),t.unpipe())}addListener(e,t){return this.on(e,t)}on(e,t){let s=super.on(e,t);if(e==="data")this[Ue]=!1,this[Cs]++,!this[Ie].length&&!this[ge]&&this[ci]();else if(e==="readable"&&this[ye]!==0)super.emit("readable");else if(eC(e)&&this[Jt])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[or]){let i=t;this[yt]?lr(()=>i.call(this,this[or])):i.call(this,this[or])}return s}removeListener(e,t){return this.off(e,t)}off(e,t){let s=super.off(e,t);return e==="data"&&(this[Cs]=this.listeners("data").length,this[Cs]===0&&!this[Ue]&&!this[Ie].length&&(this[ge]=!1)),s}removeAllListeners(e){let t=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Cs]=0,!this[Ue]&&!this[Ie].length&&(this[ge]=!1)),t}get emittedEnd(){return this[Jt]}[$t](){!this[Nn]&&!this[Jt]&&!this[ue]&&this[De].length===0&&this[_t]&&(this[Nn]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Mn]&&this.emit("close"),this[Nn]=!1)}emit(e,...t){let s=t[0];if(e!=="error"&&e!=="close"&&e!==ue&&this[ue])return!1;if(e==="data")return!this[Re]&&!s?!1:this[yt]?(lr(()=>this[Pu](s)),!0):this[Pu](s);if(e==="end")return this[th]();if(e==="close"){if(this[Mn]=!0,!this[Jt]&&!this[ue])return!1;let r=super.emit("close");return this.removeAllListeners("close"),r}else if(e==="error"){this[or]=s,super.emit(Tu,s);let r=!this[ur]||this.listeners("error").length?super.emit("error",s):!1;return this[$t](),r}else if(e==="resume"){let r=super.emit("resume");return this[$t](),r}else if(e==="finish"||e==="prefinish"){let r=super.emit(e);return this.removeAllListeners(e),r}let i=super.emit(e,...t);return this[$t](),i}[Pu](e){for(let s of this[Ie])s.dest.write(e)===!1&&this.pause();let t=this[Ue]?!1:super.emit("data",e);return this[$t](),t}[th](){return this[Jt]?!1:(this[Jt]=!0,this.readable=!1,this[yt]?(lr(()=>this[Bu]()),!0):this[Bu]())}[Bu](){if(this[li]){let t=this[li].end();if(t){for(let s of this[Ie])s.dest.write(t);this[Ue]||super.emit("data",t)}}for(let t of this[Ie])t.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[Re]||(e.dataLength=0);let t=this.promise();return this.on("data",s=>{e.push(s),this[Re]||(e.dataLength+=s.length)}),await t,e}async concat(){if(this[Re])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[ut]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,t)=>{this.on(ue,()=>t(new Error("stream destroyed"))),this.on("error",s=>t(s)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[Ue]=!1;let e=!1,t=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return t();let s=this.read();if(s!==null)return Promise.resolve({done:!1,value:s});if(this[_t])return t();let i,r,n=l=>{this.off("data",o),this.off("end",a),this.off(ue,u),t(),r(l)},o=l=>{this.off("error",n),this.off("end",a),this.off(ue,u),this.pause(),i({value:l,done:!!this[_t]})},a=()=>{this.off("error",n),this.off("data",o),this.off(ue,u),t(),i({done:!0,value:void 0})},u=()=>n(new Error("stream destroyed"));return new Promise((l,c)=>{r=c,i=l,this.once(ue,u),this.once("error",n),this.once("end",a),this.once("data",o)})},throw:t,return:t,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[Ue]=!1;let e=!1,t=()=>(this.pause(),this.off(Tu,t),this.off(ue,t),this.off("end",t),e=!0,{done:!0,value:void 0}),s=()=>{if(e)return t();let i=this.read();return i===null?t():{done:!1,value:i}};return this.once("end",t),this.once(Tu,t),this.once(ue,t),{next:s,throw:t,return:t,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(e){if(this[ue])return e?this.emit("error",e):this.emit(ue),this;this[ue]=!0,this[Ue]=!0,this[De].length=0,this[ye]=0;let t=this;return typeof t.close=="function"&&!this[Mn]&&t.close(),e?this.emit("error",e):this.emit(ue),this}static get isStream(){return YF}},oC=bt.realpathSync.native,hr={lstatSync:bt.lstatSync,readdir:bt.readdir,readdirSync:bt.readdirSync,readlinkSync:bt.readlinkSync,realpathSync:oC,promises:{lstat:Xt.lstat,readdir:Xt.readdir,readlink:Xt.readlink,realpath:Xt.realpath}},Ih=e=>!e||e===hr||e===JF?hr:{...hr,...e,promises:{...hr.promises,...e.promises||{}}},_h=/^\\\\\?\\([a-z]:)\\?$/i,aC=e=>e.replace(/\//g,"\\").replace(_h,"$1\\"),uC=/[\\\/]/,He=0,$h=1,Th=2,wt=4,Ph=6,Bh=8,xs=10,Oh=12,ze=15,cr=~ze,Lu=16,sh=32,pr=64,lt=128,Vn=256,Kn=512,ih=pr|lt|Kn,lC=1023,Nu=e=>e.isFile()?Bh:e.isDirectory()?wt:e.isSymbolicLink()?xs:e.isCharacterDevice()?Th:e.isBlockDevice()?Ph:e.isSocket()?Oh:e.isFIFO()?$h:He,rh=new Yn({max:2**12}),mr=e=>{let t=rh.get(e);if(t)return t;let s=e.normalize("NFKD");return rh.set(e,s),s},nh=new Yn({max:2**12}),Gn=e=>{let t=nh.get(e);if(t)return t;let s=mr(e.toLowerCase());return nh.set(e,s),s},oh=class extends Yn{constructor(){super({max:256})}},cC=class extends Yn{constructor(e=16*1024){super({maxSize:e,sizeCalculation:t=>t.length+1})}},Lh=Symbol("PathScurry setAsCwd"),Pe=class{name;root;roots;parent;nocase;isCWD=!1;#e;#s;get dev(){return this.#s}#n;get mode(){return this.#n}#r;get nlink(){return this.#r}#o;get uid(){return this.#o}#b;get gid(){return this.#b}#D;get rdev(){return this.#D}#c;get blksize(){return this.#c}#a;get ino(){return this.#a}#d;get size(){return this.#d}#f;get blocks(){return this.#f}#u;get atimeMs(){return this.#u}#i;get mtimeMs(){return this.#i}#h;get ctimeMs(){return this.#h}#v;get birthtimeMs(){return this.#v}#w;get atime(){return this.#w}#p;get mtime(){return this.#p}#R;get ctime(){return this.#R}#m;get birthtime(){return this.#m}#C;#x;#g;#y;#E;#S;#t;#P;#$;#A;get parentPath(){return(this.parent||this).fullpath()}get path(){return this.parentPath}constructor(e,t=He,s,i,r,n,o){this.name=e,this.#C=r?Gn(e):mr(e),this.#t=t&lC,this.nocase=r,this.roots=i,this.root=s||this,this.#P=n,this.#g=o.fullpath,this.#E=o.relative,this.#S=o.relativePosix,this.parent=o.parent,this.parent?this.#e=this.parent.#e:this.#e=Ih(o.fs)}depth(){return this.#x!==void 0?this.#x:this.parent?this.#x=this.parent.depth()+1:this.#x=0}childrenCache(){return this.#P}resolve(e){if(!e)return this;let t=this.getRootString(e),s=e.substring(t.length).split(this.splitSep);return t?this.getRoot(t).#T(s):this.#T(s)}#T(e){let t=this;for(let s of e)t=t.child(s);return t}children(){let e=this.#P.get(this);if(e)return e;let t=Object.assign([],{provisional:0});return this.#P.set(this,t),this.#t&=~Lu,t}child(e,t){if(e===""||e===".")return this;if(e==="..")return this.parent||this;let s=this.children(),i=this.nocase?Gn(e):mr(e);for(let a of s)if(a.#C===i)return a;let r=this.parent?this.sep:"",n=this.#g?this.#g+r+e:void 0,o=this.newChild(e,He,{...t,parent:this,fullpath:n});return this.canReaddir()||(o.#t|=lt),s.push(o),o}relative(){if(this.isCWD)return"";if(this.#E!==void 0)return this.#E;let e=this.name,t=this.parent;if(!t)return this.#E=this.name;let s=t.relative();return s+(!s||!t.parent?"":this.sep)+e}relativePosix(){if(this.sep==="/")return this.relative();if(this.isCWD)return"";if(this.#S!==void 0)return this.#S;let e=this.name,t=this.parent;if(!t)return this.#S=this.fullpathPosix();let s=t.relativePosix();return s+(!s||!t.parent?"":"/")+e}fullpath(){if(this.#g!==void 0)return this.#g;let e=this.name,t=this.parent;if(!t)return this.#g=this.name;let s=t.fullpath()+(t.parent?this.sep:"")+e;return this.#g=s}fullpathPosix(){if(this.#y!==void 0)return this.#y;if(this.sep==="/")return this.#y=this.fullpath();if(!this.parent){let i=this.fullpath().replace(/\\/g,"/");return/^[a-z]:\//i.test(i)?this.#y=`//?/${i}`:this.#y=i}let e=this.parent,t=e.fullpathPosix(),s=t+(!t||!e.parent?"":"/")+this.name;return this.#y=s}isUnknown(){return(this.#t&ze)===He}isType(e){return this[`is${e}`]()}getType(){return this.isUnknown()?"Unknown":this.isDirectory()?"Directory":this.isFile()?"File":this.isSymbolicLink()?"SymbolicLink":this.isFIFO()?"FIFO":this.isCharacterDevice()?"CharacterDevice":this.isBlockDevice()?"BlockDevice":this.isSocket()?"Socket":"Unknown"}isFile(){return(this.#t&ze)===Bh}isDirectory(){return(this.#t&ze)===wt}isCharacterDevice(){return(this.#t&ze)===Th}isBlockDevice(){return(this.#t&ze)===Ph}isFIFO(){return(this.#t&ze)===$h}isSocket(){return(this.#t&ze)===Oh}isSymbolicLink(){return(this.#t&xs)===xs}lstatCached(){return this.#t&sh?this:void 0}readlinkCached(){return this.#$}realpathCached(){return this.#A}readdirCached(){let e=this.children();return e.slice(0,e.provisional)}canReadlink(){if(this.#$)return!0;if(!this.parent)return!1;let e=this.#t&ze;return!(e!==He&&e!==xs||this.#t&Vn||this.#t<)}calledReaddir(){return!!(this.#t&Lu)}isENOENT(){return!!(this.#t<)}isNamed(e){return this.nocase?this.#C===Gn(e):this.#C===mr(e)}async readlink(){let e=this.#$;if(e)return e;if(this.canReadlink()&&this.parent)try{let t=await this.#e.promises.readlink(this.fullpath()),s=(await this.parent.realpath())?.resolve(t);if(s)return this.#$=s}catch(t){this.#_(t.code);return}}readlinkSync(){let e=this.#$;if(e)return e;if(this.canReadlink()&&this.parent)try{let t=this.#e.readlinkSync(this.fullpath()),s=this.parent.realpathSync()?.resolve(t);if(s)return this.#$=s}catch(t){this.#_(t.code);return}}#N(e){this.#t|=Lu;for(let t=e.provisional;t<e.length;t++){let s=e[t];s&&s.#F()}}#F(){this.#t<||(this.#t=(this.#t|lt)&cr,this.#G())}#G(){let e=this.children();e.provisional=0;for(let t of e)t.#F()}#L(){this.#t|=Kn,this.#B()}#B(){if(this.#t&pr)return;let e=this.#t;(e&ze)===wt&&(e&=cr),this.#t=e|pr,this.#G()}#M(e=""){e==="ENOTDIR"||e==="EPERM"?this.#B():e==="ENOENT"?this.#F():this.children().provisional=0}#I(e=""){e==="ENOTDIR"?this.parent.#B():e==="ENOENT"&&this.#F()}#_(e=""){let t=this.#t;t|=Vn,e==="ENOENT"&&(t|=lt),(e==="EINVAL"||e==="UNKNOWN")&&(t&=cr),this.#t=t,e==="ENOTDIR"&&this.parent&&this.parent.#B()}#j(e,t){return this.#U(e,t)||this.#q(e,t)}#q(e,t){let s=Nu(e),i=this.newChild(e.name,s,{parent:this}),r=i.#t&ze;return r!==wt&&r!==xs&&r!==He&&(i.#t|=pr),t.unshift(i),t.provisional++,i}#U(e,t){for(let s=t.provisional;s<t.length;s++){let i=t[s];if((this.nocase?Gn(e.name):mr(e.name))===i.#C)return this.#l(e,i,s,t)}}#l(e,t,s,i){let r=t.name;return t.#t=t.#t&cr|Nu(e),r!==e.name&&(t.name=e.name),s!==i.provisional&&(s===i.length-1?i.pop():i.splice(s,1),i.unshift(t)),i.provisional++,t}async lstat(){if((this.#t<)===0)try{return this.#V(await this.#e.promises.lstat(this.fullpath())),this}catch(e){this.#I(e.code)}}lstatSync(){if((this.#t<)===0)try{return this.#V(this.#e.lstatSync(this.fullpath())),this}catch(e){this.#I(e.code)}}#V(e){let{atime:t,atimeMs:s,birthtime:i,birthtimeMs:r,blksize:n,blocks:o,ctime:a,ctimeMs:u,dev:l,gid:c,ino:f,mode:d,mtime:p,mtimeMs:m,nlink:g,rdev:D,size:w,uid:y}=e;this.#w=t,this.#u=s,this.#m=i,this.#v=r,this.#c=n,this.#f=o,this.#R=a,this.#h=u,this.#s=l,this.#b=c,this.#a=f,this.#n=d,this.#p=p,this.#i=m,this.#r=g,this.#D=D,this.#d=w,this.#o=y;let v=Nu(e);this.#t=this.#t&cr|v|sh,v!==He&&v!==wt&&v!==xs&&(this.#t|=pr)}#O=[];#k=!1;#W(e){this.#k=!1;let t=this.#O.slice();this.#O.length=0,t.forEach(s=>s(null,e))}readdirCB(e,t=!1){if(!this.canReaddir()){t?e(null,[]):queueMicrotask(()=>e(null,[]));return}let s=this.children();if(this.calledReaddir()){let r=s.slice(0,s.provisional);t?e(null,r):queueMicrotask(()=>e(null,r));return}if(this.#O.push(e),this.#k)return;this.#k=!0;let i=this.fullpath();this.#e.readdir(i,{withFileTypes:!0},(r,n)=>{if(r)this.#M(r.code),s.provisional=0;else{for(let o of n)this.#j(o,s);this.#N(s)}this.#W(s.slice(0,s.provisional))})}#K;async readdir(){if(!this.canReaddir())return[];let e=this.children();if(this.calledReaddir())return e.slice(0,e.provisional);let t=this.fullpath();if(this.#K)await this.#K;else{let s=()=>{};this.#K=new Promise(i=>s=i);try{for(let i of await this.#e.promises.readdir(t,{withFileTypes:!0}))this.#j(i,e);this.#N(e)}catch(i){this.#M(i.code),e.provisional=0}this.#K=void 0,s()}return e.slice(0,e.provisional)}readdirSync(){if(!this.canReaddir())return[];let e=this.children();if(this.calledReaddir())return e.slice(0,e.provisional);let t=this.fullpath();try{for(let s of this.#e.readdirSync(t,{withFileTypes:!0}))this.#j(s,e);this.#N(e)}catch(s){this.#M(s.code),e.provisional=0}return e.slice(0,e.provisional)}canReaddir(){if(this.#t&ih)return!1;let e=ze&this.#t;return e===He||e===wt||e===xs}shouldWalk(e,t){return(this.#t&wt)===wt&&!(this.#t&ih)&&!e.has(this)&&(!t||t(this))}async realpath(){if(this.#A)return this.#A;if(!((Kn|Vn|lt)&this.#t))try{let e=await this.#e.promises.realpath(this.fullpath());return this.#A=this.resolve(e)}catch{this.#L()}}realpathSync(){if(this.#A)return this.#A;if(!((Kn|Vn|lt)&this.#t))try{let e=this.#e.realpathSync(this.fullpath());return this.#A=this.resolve(e)}catch{this.#L()}}[Lh](e){if(e===this)return;e.isCWD=!1,this.isCWD=!0;let t=new Set([]),s=[],i=this;for(;i&&i.parent;)t.add(i),i.#E=s.join(this.sep),i.#S=s.join("/"),i=i.parent,s.push("..");for(i=e;i&&i.parent&&!t.has(i);)i.#E=void 0,i.#S=void 0,i=i.parent}},Nh=class Mh extends Pe{sep="\\";splitSep=uC;constructor(t,s=He,i,r,n,o,a){super(t,s,i,r,n,o,a)}newChild(t,s=He,i={}){return new Mh(t,s,this.root,this.roots,this.nocase,this.childrenCache(),i)}getRootString(t){return fi.win32.parse(t).root}getRoot(t){if(t=aC(t.toUpperCase()),t===this.root.name)return this.root;for(let[s,i]of Object.entries(this.roots))if(this.sameRoot(t,s))return this.roots[t]=i;return this.roots[t]=new Wu(t,this).root}sameRoot(t,s=this.root.name){return t=t.toUpperCase().replace(/\//g,"\\").replace(_h,"$1\\"),t===s}},jh=class qh extends Pe{splitSep="/";sep="/";constructor(t,s=He,i,r,n,o,a){super(t,s,i,r,n,o,a)}getRootString(t){return t.startsWith("/")?"/":""}getRoot(t){return this.root}newChild(t,s=He,i={}){return new qh(t,s,this.root,this.roots,this.nocase,this.childrenCache(),i)}},Uh=class{root;rootPath;roots;cwd;#e;#s;#n;nocase;#r;constructor(e=process.cwd(),t,s,{nocase:i,childrenCacheSize:r=16*1024,fs:n=hr}={}){this.#r=Ih(n),(e instanceof URL||e.startsWith("file://"))&&(e=(0,Ah.fileURLToPath)(e));let o=t.resolve(e);this.roots=Object.create(null),this.rootPath=this.parseRootPath(o),this.#e=new oh,this.#s=new oh,this.#n=new cC(r);let a=o.substring(this.rootPath.length).split(s);if(a.length===1&&!a[0]&&a.pop(),i===void 0)throw new TypeError("must provide nocase setting to PathScurryBase ctor");this.nocase=i,this.root=this.newRoot(this.#r),this.roots[this.rootPath]=this.root;let u=this.root,l=a.length-1,c=t.sep,f=this.rootPath,d=!1;for(let p of a){let m=l--;u=u.child(p,{relative:new Array(m).fill("..").join(c),relativePosix:new Array(m).fill("..").join("/"),fullpath:f+=(d?"":c)+p}),d=!0}this.cwd=u}depth(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.depth()}childrenCache(){return this.#n}resolve(...e){let t="";for(let r=e.length-1;r>=0;r--){let n=e[r];if(!(!n||n===".")&&(t=t?`${n}/${t}`:n,this.isAbsolute(n)))break}let s=this.#e.get(t);if(s!==void 0)return s;let i=this.cwd.resolve(t).fullpath();return this.#e.set(t,i),i}resolvePosix(...e){let t="";for(let r=e.length-1;r>=0;r--){let n=e[r];if(!(!n||n===".")&&(t=t?`${n}/${t}`:n,this.isAbsolute(n)))break}let s=this.#s.get(t);if(s!==void 0)return s;let i=this.cwd.resolve(t).fullpathPosix();return this.#s.set(t,i),i}relative(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.relative()}relativePosix(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.relativePosix()}basename(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.name}dirname(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),(e.parent||e).fullpath()}async readdir(e=this.cwd,t={withFileTypes:!0}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd);let{withFileTypes:s}=t;if(e.canReaddir()){let i=await e.readdir();return s?i:i.map(r=>r.name)}else return[]}readdirSync(e=this.cwd,t={withFileTypes:!0}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd);let{withFileTypes:s=!0}=t;return e.canReaddir()?s?e.readdirSync():e.readdirSync().map(i=>i.name):[]}async lstat(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.lstat()}lstatSync(e=this.cwd){return typeof e=="string"&&(e=this.cwd.resolve(e)),e.lstatSync()}async readlink(e=this.cwd,{withFileTypes:t}={withFileTypes:!1}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e.withFileTypes,e=this.cwd);let s=await e.readlink();return t?s:s?.fullpath()}readlinkSync(e=this.cwd,{withFileTypes:t}={withFileTypes:!1}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e.withFileTypes,e=this.cwd);let s=e.readlinkSync();return t?s:s?.fullpath()}async realpath(e=this.cwd,{withFileTypes:t}={withFileTypes:!1}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e.withFileTypes,e=this.cwd);let s=await e.realpath();return t?s:s?.fullpath()}realpathSync(e=this.cwd,{withFileTypes:t}={withFileTypes:!1}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e.withFileTypes,e=this.cwd);let s=e.realpathSync();return t?s:s?.fullpath()}async walk(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:n}=t,o=[];(!r||r(e))&&o.push(s?e:e.fullpath());let a=new Set,u=(c,f)=>{a.add(c),c.readdirCB((d,p)=>{if(d)return f(d);let m=p.length;if(!m)return f();let g=()=>{--m===0&&f()};for(let D of p)(!r||r(D))&&o.push(s?D:D.fullpath()),i&&D.isSymbolicLink()?D.realpath().then(w=>w?.isUnknown()?w.lstat():w).then(w=>w?.shouldWalk(a,n)?u(w,g):g()):D.shouldWalk(a,n)?u(D,g):g()},!0)},l=e;return new Promise((c,f)=>{u(l,d=>{if(d)return f(d);c(o)})})}walkSync(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:n}=t,o=[];(!r||r(e))&&o.push(s?e:e.fullpath());let a=new Set([e]);for(let u of a){let l=u.readdirSync();for(let c of l){(!r||r(c))&&o.push(s?c:c.fullpath());let f=c;if(c.isSymbolicLink()){if(!(i&&(f=c.realpathSync())))continue;f.isUnknown()&&f.lstatSync()}f.shouldWalk(a,n)&&a.add(f)}}return o}[Symbol.asyncIterator](){return this.iterate()}iterate(e=this.cwd,t={}){return typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd),this.stream(e,t)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:n}=t;(!r||r(e))&&(yield s?e:e.fullpath());let o=new Set([e]);for(let a of o){let u=a.readdirSync();for(let l of u){(!r||r(l))&&(yield s?l:l.fullpath());let c=l;if(l.isSymbolicLink()){if(!(i&&(c=l.realpathSync())))continue;c.isUnknown()&&c.lstatSync()}c.shouldWalk(o,n)&&o.add(c)}}}stream(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:n}=t,o=new Jn({objectMode:!0});(!r||r(e))&&o.write(s?e:e.fullpath());let a=new Set,u=[e],l=0,c=()=>{let f=!1;for(;!f;){let d=u.shift();if(!d){l===0&&o.end();return}l++,a.add(d);let p=(g,D,w=!1)=>{if(g)return o.emit("error",g);if(i&&!w){let y=[];for(let v of D)v.isSymbolicLink()&&y.push(v.realpath().then(E=>E?.isUnknown()?E.lstat():E));if(y.length){Promise.all(y).then(()=>p(null,D,!0));return}}for(let y of D)y&&(!r||r(y))&&(o.write(s?y:y.fullpath())||(f=!0));l--;for(let y of D){let v=y.realpathCached()||y;v.shouldWalk(a,n)&&u.push(v)}f&&!o.flowing?o.once("drain",c):m||c()},m=!0;d.readdirCB(p,!0),m=!1}};return c(),o}streamSync(e=this.cwd,t={}){typeof e=="string"?e=this.cwd.resolve(e):e instanceof Pe||(t=e,e=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:n}=t,o=new Jn({objectMode:!0}),a=new Set;(!r||r(e))&&o.write(s?e:e.fullpath());let u=[e],l=0,c=()=>{let f=!1;for(;!f;){let d=u.shift();if(!d){l===0&&o.end();return}l++,a.add(d);let p=d.readdirSync();for(let m of p)(!r||r(m))&&(o.write(s?m:m.fullpath())||(f=!0));l--;for(let m of p){let g=m;if(m.isSymbolicLink()){if(!(i&&(g=m.realpathSync())))continue;g.isUnknown()&&g.lstatSync()}g.shouldWalk(a,n)&&u.push(g)}}f&&!o.flowing&&o.once("drain",c)};return c(),o}chdir(e=this.cwd){let t=this.cwd;this.cwd=typeof e=="string"?this.cwd.resolve(e):e,this.cwd[Lh](t)}},Wu=class extends Uh{sep="\\";constructor(e=process.cwd(),t={}){let{nocase:s=!0}=t;super(e,fi.win32,"\\",{...t,nocase:s}),this.nocase=s;for(let i=this.cwd;i;i=i.parent)i.nocase=this.nocase}parseRootPath(e){return fi.win32.parse(e).root.toUpperCase()}newRoot(e){return new Nh(this.rootPath,wt,void 0,this.roots,this.nocase,this.childrenCache(),{fs:e})}isAbsolute(e){return e.startsWith("/")||e.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(e)}},Ku=class extends Uh{sep="/";constructor(e=process.cwd(),t={}){let{nocase:s=!1}=t;super(e,fi.posix,"/",{...t,nocase:s}),this.nocase=s}parseRootPath(e){return"/"}newRoot(e){return new jh(this.rootPath,wt,void 0,this.roots,this.nocase,this.childrenCache(),{fs:e})}isAbsolute(e){return e.startsWith("/")}},Vh=class extends Ku{constructor(e=process.cwd(),t={}){let{nocase:s=!0}=t;super(e,{...t,nocase:s})}},TT=process.platform==="win32"?Nh:jh,fC=process.platform==="win32"?Wu:process.platform==="darwin"?Vh:Ku,dC=e=>e.length>=1,hC=e=>e.length>=1,pC=Symbol.for("nodejs.util.inspect.custom"),Gh=class Wh{#e;#s;#n;length;#r;#o;#b;#D;#c;#a;#d=!0;constructor(t,s,i,r){if(!dC(t))throw new TypeError("empty pattern list");if(!hC(s))throw new TypeError("empty glob list");if(s.length!==t.length)throw new TypeError("mismatched pattern list and glob list lengths");if(this.length=t.length,i<0||i>=this.length)throw new TypeError("index out of range");if(this.#e=t,this.#s=s,this.#n=i,this.#r=r,this.#n===0){if(this.isUNC()){let[n,o,a,u,...l]=this.#e,[c,f,d,p,...m]=this.#s;l[0]===""&&(l.shift(),m.shift());let g=[n,o,a,u,""].join("/"),D=[c,f,d,p,""].join("/");this.#e=[g,...l],this.#s=[D,...m],this.length=this.#e.length}else if(this.isDrive()||this.isAbsolute()){let[n,...o]=this.#e,[a,...u]=this.#s;o[0]===""&&(o.shift(),u.shift());let l=n+"/",c=a+"/";this.#e=[l,...o],this.#s=[c,...u],this.length=this.#e.length}}}[pC](){return"Pattern <"+this.#s.slice(this.#n).join("/")+">"}pattern(){return this.#e[this.#n]}isString(){return typeof this.#e[this.#n]=="string"}isGlobstar(){return this.#e[this.#n]===_e}isRegExp(){return this.#e[this.#n]instanceof RegExp}globString(){return this.#b=this.#b||(this.#n===0?this.isAbsolute()?this.#s[0]+this.#s.slice(1).join("/"):this.#s.join("/"):this.#s.slice(this.#n).join("/"))}hasMore(){return this.length>this.#n+1}rest(){return this.#o!==void 0?this.#o:this.hasMore()?(this.#o=new Wh(this.#e,this.#s,this.#n+1,this.#r),this.#o.#a=this.#a,this.#o.#c=this.#c,this.#o.#D=this.#D,this.#o):this.#o=null}isUNC(){let t=this.#e;return this.#c!==void 0?this.#c:this.#c=this.#r==="win32"&&this.#n===0&&t[0]===""&&t[1]===""&&typeof t[2]=="string"&&!!t[2]&&typeof t[3]=="string"&&!!t[3]}isDrive(){let t=this.#e;return this.#D!==void 0?this.#D:this.#D=this.#r==="win32"&&this.#n===0&&this.length>1&&typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0])}isAbsolute(){let t=this.#e;return this.#a!==void 0?this.#a:this.#a=t[0]===""&&t.length>1||this.isDrive()||this.isUNC()}root(){let t=this.#e[0];return typeof t=="string"&&this.isAbsolute()&&this.#n===0?t:""}checkFollowGlobstar(){return!(this.#n===0||!this.isGlobstar()||!this.#d)}markFollowGlobstar(){return this.#n===0||!this.isGlobstar()||!this.#d?!1:(this.#d=!1,!0)}},mC=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",ju=class{relative;relativeChildren;absolute;absoluteChildren;platform;mmopts;constructor(e,{nobrace:t,nocase:s,noext:i,noglobstar:r,platform:n=mC}){this.relative=[],this.absolute=[],this.relativeChildren=[],this.absoluteChildren=[],this.platform=n,this.mmopts={dot:!0,nobrace:t,nocase:s,noext:i,noglobstar:r,optimizationLevel:2,platform:n,nocomment:!0,nonegate:!0};for(let o of e)this.add(o)}add(e){let t=new Zt(e,this.mmopts);for(let s=0;s<t.set.length;s++){let i=t.set[s],r=t.globParts[s];if(!i||!r)throw new Error("invalid pattern object");for(;i[0]==="."&&r[0]===".";)i.shift(),r.shift();let n=new Gh(i,r,0,this.platform),o=new Zt(n.globString(),this.mmopts),a=r[r.length-1]==="**",u=n.isAbsolute();u?this.absolute.push(o):this.relative.push(o),a&&(u?this.absoluteChildren.push(o):this.relativeChildren.push(o))}}ignored(e){let t=e.fullpath(),s=`${t}/`,i=e.relative()||".",r=`${i}/`;for(let n of this.relative)if(n.match(i)||n.match(r))return!0;for(let n of this.absolute)if(n.match(t)||n.match(s))return!0;return!1}childrenIgnored(e){let t=e.fullpath()+"/",s=(e.relative()||".")+"/";for(let i of this.relativeChildren)if(i.match(s))return!0;for(let i of this.absoluteChildren)if(i.match(t))return!0;return!1}},gC=class Kh{store;constructor(t=new Map){this.store=t}copy(){return new Kh(new Map(this.store))}hasWalked(t,s){return this.store.get(t.fullpath())?.has(s.globString())}storeWalked(t,s){let i=t.fullpath(),r=this.store.get(i);r?r.add(s.globString()):this.store.set(i,new Set([s.globString()]))}},DC=class{store=new Map;add(e,t,s){let i=(t?2:0)|(s?1:0),r=this.store.get(e);this.store.set(e,r===void 0?i:i&r)}entries(){return[...this.store.entries()].map(([e,t])=>[e,!!(t&2),!!(t&1)])}},yC=class{store=new Map;add(e,t){if(!e.canReaddir())return;let s=this.store.get(e);s?s.find(i=>i.globString()===t.globString())||s.push(t):this.store.set(e,[t])}get(e){let t=this.store.get(e);if(!t)throw new Error("attempting to walk unknown path");return t}entries(){return this.keys().map(e=>[e,this.store.get(e)])}keys(){return[...this.store.keys()].filter(e=>e.canReaddir())}},ah=class zh{hasWalkedCache;matches=new DC;subwalks=new yC;patterns;follow;dot;opts;constructor(t,s){this.opts=t,this.follow=!!t.follow,this.dot=!!t.dot,this.hasWalkedCache=s?s.copy():new gC}processPatterns(t,s){this.patterns=s;let i=s.map(r=>[t,r]);for(let[r,n]of i){this.hasWalkedCache.storeWalked(r,n);let o=n.root(),a=n.isAbsolute()&&this.opts.absolute!==!1;if(o){r=r.resolve(o==="/"&&this.opts.root!==void 0?this.opts.root:o);let f=n.rest();if(f)n=f;else{this.matches.add(r,!0,!1);continue}}if(r.isENOENT())continue;let u,l,c=!1;for(;typeof(u=n.pattern())=="string"&&(l=n.rest());)r=r.resolve(u),n=l,c=!0;if(u=n.pattern(),l=n.rest(),c){if(this.hasWalkedCache.hasWalked(r,n))continue;this.hasWalkedCache.storeWalked(r,n)}if(typeof u=="string"){let f=u===".."||u===""||u===".";this.matches.add(r.resolve(u),a,f);continue}else if(u===_e){(!r.isSymbolicLink()||this.follow||n.checkFollowGlobstar())&&this.subwalks.add(r,n);let f=l?.pattern(),d=l?.rest();if(!l||(f===""||f===".")&&!d)this.matches.add(r,a,f===""||f===".");else if(f===".."){let p=r.parent||r;d?this.hasWalkedCache.hasWalked(p,d)||this.subwalks.add(p,d):this.matches.add(p,a,!0)}}else u instanceof RegExp&&this.subwalks.add(r,n)}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new zh(this.opts,this.hasWalkedCache)}filterEntries(t,s){let i=this.subwalks.get(t),r=this.child();for(let n of s)for(let o of i){let a=o.isAbsolute(),u=o.pattern(),l=o.rest();u===_e?r.testGlobstar(n,o,l,a):u instanceof RegExp?r.testRegExp(n,u,l,a):r.testString(n,u,l,a)}return r}testGlobstar(t,s,i,r){if((this.dot||!t.name.startsWith("."))&&(s.hasMore()||this.matches.add(t,r,!1),t.canReaddir()&&(this.follow||!t.isSymbolicLink()?this.subwalks.add(t,s):t.isSymbolicLink()&&(i&&s.checkFollowGlobstar()?this.subwalks.add(t,i):s.markFollowGlobstar()&&this.subwalks.add(t,s)))),i){let n=i.pattern();if(typeof n=="string"&&n!==".."&&n!==""&&n!==".")this.testString(t,n,i.rest(),r);else if(n===".."){let o=t.parent||t;this.subwalks.add(o,i)}else n instanceof RegExp&&this.testRegExp(t,n,i.rest(),r)}}testRegExp(t,s,i,r){s.test(t.name)&&(i?this.subwalks.add(t,i):this.matches.add(t,r,!1))}testString(t,s,i,r){t.isNamed(s)&&(i?this.subwalks.add(t,i):this.matches.add(t,r,!1))}},wC=(e,t)=>typeof e=="string"?new ju([e],t):Array.isArray(e)?new ju(e,t):e,Hh=class{path;patterns;opts;seen=new Set;paused=!1;aborted=!1;#e=[];#s;#n;signal;maxDepth;includeChildMatches;constructor(e,t,s){if(this.patterns=e,this.path=t,this.opts=s,this.#n=!s.posix&&s.platform==="win32"?"\\":"/",this.includeChildMatches=s.includeChildMatches!==!1,(s.ignore||!this.includeChildMatches)&&(this.#s=wC(s.ignore??[],s),!this.includeChildMatches&&typeof this.#s.add!="function")){let i="cannot ignore child matches, ignore lacks add() method.";throw new Error(i)}this.maxDepth=s.maxDepth||1/0,s.signal&&(this.signal=s.signal,this.signal.addEventListener("abort",()=>{this.#e.length=0}))}#r(e){return this.seen.has(e)||!!this.#s?.ignored?.(e)}#o(e){return!!this.#s?.childrenIgnored?.(e)}pause(){this.paused=!0}resume(){if(this.signal?.aborted)return;this.paused=!1;let e;for(;!this.paused&&(e=this.#e.shift());)e()}onResume(e){this.signal?.aborted||(this.paused?this.#e.push(e):e())}async matchCheck(e,t){if(t&&this.opts.nodir)return;let s;if(this.opts.realpath){if(s=e.realpathCached()||await e.realpath(),!s)return;e=s}let i=e.isUnknown()||this.opts.stat?await e.lstat():e;if(this.opts.follow&&this.opts.nodir&&i?.isSymbolicLink()){let r=await i.realpath();r&&(r.isUnknown()||this.opts.stat)&&await r.lstat()}return this.matchCheckTest(i,t)}matchCheckTest(e,t){return e&&(this.maxDepth===1/0||e.depth()<=this.maxDepth)&&(!t||e.canReaddir())&&(!this.opts.nodir||!e.isDirectory())&&(!this.opts.nodir||!this.opts.follow||!e.isSymbolicLink()||!e.realpathCached()?.isDirectory())&&!this.#r(e)?e:void 0}matchCheckSync(e,t){if(t&&this.opts.nodir)return;let s;if(this.opts.realpath){if(s=e.realpathCached()||e.realpathSync(),!s)return;e=s}let i=e.isUnknown()||this.opts.stat?e.lstatSync():e;if(this.opts.follow&&this.opts.nodir&&i?.isSymbolicLink()){let r=i.realpathSync();r&&(r?.isUnknown()||this.opts.stat)&&r.lstatSync()}return this.matchCheckTest(i,t)}matchFinish(e,t){if(this.#r(e))return;if(!this.includeChildMatches&&this.#s?.add){let r=`${e.relativePosix()}/**`;this.#s.add(r)}let s=this.opts.absolute===void 0?t:this.opts.absolute;this.seen.add(e);let i=this.opts.mark&&e.isDirectory()?this.#n:"";if(this.opts.withFileTypes)this.matchEmit(e);else if(s){let r=this.opts.posix?e.fullpathPosix():e.fullpath();this.matchEmit(r+i)}else{let r=this.opts.posix?e.relativePosix():e.relative(),n=this.opts.dotRelative&&!r.startsWith(".."+this.#n)?"."+this.#n:"";this.matchEmit(r?n+r+i:"."+i)}}async match(e,t,s){let i=await this.matchCheck(e,s);i&&this.matchFinish(i,t)}matchSync(e,t,s){let i=this.matchCheckSync(e,s);i&&this.matchFinish(i,t)}walkCB(e,t,s){this.signal?.aborted&&s(),this.walkCB2(e,t,new ah(this.opts),s)}walkCB2(e,t,s,i){if(this.#o(e))return i();if(this.signal?.aborted&&i(),this.paused){this.onResume(()=>this.walkCB2(e,t,s,i));return}s.processPatterns(e,t);let r=1,n=()=>{--r===0&&i()};for(let[o,a,u]of s.matches.entries())this.#r(o)||(r++,this.match(o,a,u).then(()=>n()));for(let o of s.subwalkTargets()){if(this.maxDepth!==1/0&&o.depth()>=this.maxDepth)continue;r++;let a=o.readdirCached();o.calledReaddir()?this.walkCB3(o,a,s,n):o.readdirCB((u,l)=>this.walkCB3(o,l,s,n),!0)}n()}walkCB3(e,t,s,i){s=s.filterEntries(e,t);let r=1,n=()=>{--r===0&&i()};for(let[o,a,u]of s.matches.entries())this.#r(o)||(r++,this.match(o,a,u).then(()=>n()));for(let[o,a]of s.subwalks.entries())r++,this.walkCB2(o,a,s.child(),n);n()}walkCBSync(e,t,s){this.signal?.aborted&&s(),this.walkCB2Sync(e,t,new ah(this.opts),s)}walkCB2Sync(e,t,s,i){if(this.#o(e))return i();if(this.signal?.aborted&&i(),this.paused){this.onResume(()=>this.walkCB2Sync(e,t,s,i));return}s.processPatterns(e,t);let r=1,n=()=>{--r===0&&i()};for(let[o,a,u]of s.matches.entries())this.#r(o)||this.matchSync(o,a,u);for(let o of s.subwalkTargets()){if(this.maxDepth!==1/0&&o.depth()>=this.maxDepth)continue;r++;let a=o.readdirSync();this.walkCB3Sync(o,a,s,n)}n()}walkCB3Sync(e,t,s,i){s=s.filterEntries(e,t);let r=1,n=()=>{--r===0&&i()};for(let[o,a,u]of s.matches.entries())this.#r(o)||this.matchSync(o,a,u);for(let[o,a]of s.subwalks.entries())r++,this.walkCB2Sync(o,a,s.child(),n);n()}},uh=class extends Hh{matches=new Set;constructor(e,t,s){super(e,t,s)}matchEmit(e){this.matches.add(e)}async walk(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&await this.path.lstat(),await new Promise((e,t)=>{this.walkCB(this.path,this.patterns,()=>{this.signal?.aborted?t(this.signal.reason):e(this.matches)})}),this.matches}walkSync(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>{if(this.signal?.aborted)throw this.signal.reason}),this.matches}},lh=class extends Hh{results;constructor(e,t,s){super(e,t,s),this.results=new Jn({signal:this.signal,objectMode:!0}),this.results.on("drain",()=>this.resume()),this.results.on("resume",()=>this.resume())}matchEmit(e){this.results.write(e),this.results.flowing||this.pause()}stream(){let e=this.path;return e.isUnknown()?e.lstat().then(()=>{this.walkCB(e,this.patterns,()=>this.results.end())}):this.walkCB(e,this.patterns,()=>this.results.end()),this.results}streamSync(){return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>this.results.end()),this.results}},bC=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",Qt=class{absolute;cwd;root;dot;dotRelative;follow;ignore;magicalBraces;mark;matchBase;maxDepth;nobrace;nocase;nodir;noext;noglobstar;pattern;platform;realpath;scurry;stat;signal;windowsPathsNoEscape;withFileTypes;includeChildMatches;opts;patterns;constructor(e,t){if(!t)throw new TypeError("glob options required");if(this.withFileTypes=!!t.withFileTypes,this.signal=t.signal,this.follow=!!t.follow,this.dot=!!t.dot,this.dotRelative=!!t.dotRelative,this.nodir=!!t.nodir,this.mark=!!t.mark,t.cwd?(t.cwd instanceof URL||t.cwd.startsWith("file://"))&&(t.cwd=(0,Eh.fileURLToPath)(t.cwd)):this.cwd="",this.cwd=t.cwd||"",this.root=t.root,this.magicalBraces=!!t.magicalBraces,this.nobrace=!!t.nobrace,this.noext=!!t.noext,this.realpath=!!t.realpath,this.absolute=t.absolute,this.includeChildMatches=t.includeChildMatches!==!1,this.noglobstar=!!t.noglobstar,this.matchBase=!!t.matchBase,this.maxDepth=typeof t.maxDepth=="number"?t.maxDepth:1/0,this.stat=!!t.stat,this.ignore=t.ignore,this.withFileTypes&&this.absolute!==void 0)throw new Error("cannot set absolute and withFileTypes:true");if(typeof e=="string"&&(e=[e]),this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(e=e.map(a=>a.replace(/\\/g,"/"))),this.matchBase){if(t.noglobstar)throw new TypeError("base matching requires globstar");e=e.map(a=>a.includes("/")?a:`./**/${a}`)}if(this.pattern=e,this.platform=t.platform||bC,this.opts={...t,platform:this.platform},t.scurry){if(this.scurry=t.scurry,t.nocase!==void 0&&t.nocase!==t.scurry.nocase)throw new Error("nocase option contradicts provided scurry option")}else{let a=t.platform==="win32"?Wu:t.platform==="darwin"?Vh:t.platform?Ku:fC;this.scurry=new a(this.cwd,{nocase:t.nocase,fs:t.fs})}this.nocase=this.scurry.nocase;let s=this.platform==="darwin"||this.platform==="win32",i={braceExpandMax:1e4,...t,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly:s,nocomment:!0,noext:this.noext,nonegate:!0,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},r=this.pattern.map(a=>new Zt(a,i)),[n,o]=r.reduce((a,u)=>(a[0].push(...u.set),a[1].push(...u.globParts),a),[[],[]]);this.patterns=n.map((a,u)=>{let l=o[u];if(!l)throw new Error("invalid pattern object");return new Gh(a,l,0,this.platform)})}async walk(){return[...await new uh(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walk()]}walkSync(){return[...new uh(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walkSync()]}stream(){return new lh(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).stream()}streamSync(){return new lh(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}},Jh=(e,t={})=>{Array.isArray(e)||(e=[e]);for(let s of e)if(new Zt(s,t).hasMagic())return!0;return!1};Yh=gr,Zh=Object.assign(zu,{sync:gr}),Xh=Dr,Qh=Object.assign(Ju,{sync:Dr}),ep=Object.assign(Hu,{stream:gr,iterate:Dr}),Je=Object.assign(ch,{glob:ch,globSync:Hu,sync:ep,globStream:zu,stream:Zh,globStreamSync:gr,streamSync:Yh,globIterate:Ju,iterate:Qh,globIterateSync:Dr,iterateSync:Xh,Glob:Qt,hasMagic:Jh,escape:Vu,unescape:Ss});Je.glob=Je});var K=I(Fe=>{"use strict";var Yu=Symbol.for("yaml.alias"),sp=Symbol.for("yaml.document"),Xn=Symbol.for("yaml.map"),ip=Symbol.for("yaml.pair"),Zu=Symbol.for("yaml.scalar"),Qn=Symbol.for("yaml.seq"),Tt=Symbol.for("yaml.node.type"),vC=e=>!!e&&typeof e=="object"&&e[Tt]===Yu,EC=e=>!!e&&typeof e=="object"&&e[Tt]===sp,FC=e=>!!e&&typeof e=="object"&&e[Tt]===Xn,CC=e=>!!e&&typeof e=="object"&&e[Tt]===ip,rp=e=>!!e&&typeof e=="object"&&e[Tt]===Zu,xC=e=>!!e&&typeof e=="object"&&e[Tt]===Qn;function np(e){if(e&&typeof e=="object")switch(e[Tt]){case Xn:case Qn:return!0}return!1}function SC(e){if(e&&typeof e=="object")switch(e[Tt]){case Yu:case Xn:case Zu:case Qn:return!0}return!1}var AC=e=>(rp(e)||np(e))&&!!e.anchor;Fe.ALIAS=Yu;Fe.DOC=sp;Fe.MAP=Xn;Fe.NODE_TYPE=Tt;Fe.PAIR=ip;Fe.SCALAR=Zu;Fe.SEQ=Qn;Fe.hasAnchor=AC;Fe.isAlias=vC;Fe.isCollection=np;Fe.isDocument=EC;Fe.isMap=FC;Fe.isNode=SC;Fe.isPair=CC;Fe.isScalar=rp;Fe.isSeq=xC});var wr=I(Xu=>{"use strict";var de=K(),Be=Symbol("break visit"),op=Symbol("skip children"),vt=Symbol("remove node");function eo(e,t){let s=ap(t);de.isDocument(e)?di(null,e.contents,s,Object.freeze([e]))===vt&&(e.contents=null):di(null,e,s,Object.freeze([]))}eo.BREAK=Be;eo.SKIP=op;eo.REMOVE=vt;function di(e,t,s,i){let r=up(e,t,s,i);if(de.isNode(r)||de.isPair(r))return lp(e,i,r),di(e,r,s,i);if(typeof r!="symbol"){if(de.isCollection(t)){i=Object.freeze(i.concat(t));for(let n=0;n<t.items.length;++n){let o=di(n,t.items[n],s,i);if(typeof o=="number")n=o-1;else{if(o===Be)return Be;o===vt&&(t.items.splice(n,1),n-=1)}}}else if(de.isPair(t)){i=Object.freeze(i.concat(t));let n=di("key",t.key,s,i);if(n===Be)return Be;n===vt&&(t.key=null);let o=di("value",t.value,s,i);if(o===Be)return Be;o===vt&&(t.value=null)}}return r}async function to(e,t){let s=ap(t);de.isDocument(e)?await hi(null,e.contents,s,Object.freeze([e]))===vt&&(e.contents=null):await hi(null,e,s,Object.freeze([]))}to.BREAK=Be;to.SKIP=op;to.REMOVE=vt;async function hi(e,t,s,i){let r=await up(e,t,s,i);if(de.isNode(r)||de.isPair(r))return lp(e,i,r),hi(e,r,s,i);if(typeof r!="symbol"){if(de.isCollection(t)){i=Object.freeze(i.concat(t));for(let n=0;n<t.items.length;++n){let o=await hi(n,t.items[n],s,i);if(typeof o=="number")n=o-1;else{if(o===Be)return Be;o===vt&&(t.items.splice(n,1),n-=1)}}}else if(de.isPair(t)){i=Object.freeze(i.concat(t));let n=await hi("key",t.key,s,i);if(n===Be)return Be;n===vt&&(t.key=null);let o=await hi("value",t.value,s,i);if(o===Be)return Be;o===vt&&(t.value=null)}}return r}function ap(e){return typeof e=="object"&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function up(e,t,s,i){if(typeof s=="function")return s(e,t,i);if(de.isMap(t))return s.Map?.(e,t,i);if(de.isSeq(t))return s.Seq?.(e,t,i);if(de.isPair(t))return s.Pair?.(e,t,i);if(de.isScalar(t))return s.Scalar?.(e,t,i);if(de.isAlias(t))return s.Alias?.(e,t,i)}function lp(e,t,s){let i=t[t.length-1];if(de.isCollection(i))i.items[e]=s;else if(de.isPair(i))e==="key"?i.key=s:i.value=s;else if(de.isDocument(i))i.contents=s;else{let r=de.isAlias(i)?"alias":"scalar";throw new Error(`Cannot replace node with ${r} parent`)}}Xu.visit=eo;Xu.visitAsync=to});var Qu=I(fp=>{"use strict";var cp=K(),RC=wr(),kC={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},IC=e=>e.replace(/[!,[\]{}]/g,t=>kC[t]),br=class e{constructor(t,s){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},e.defaultYaml,t),this.tags=Object.assign({},e.defaultTags,s)}clone(){let t=new e(this.yaml,this.tags);return t.docStart=this.docStart,t}atDocument(){let t=new e(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:e.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},e.defaultTags);break}return t}add(t,s){this.atNextDocument&&(this.yaml={explicit:e.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},e.defaultTags),this.atNextDocument=!1);let i=t.trim().split(/[ \t]+/),r=i.shift();switch(r){case"%TAG":{if(i.length!==2&&(s(0,"%TAG directive should contain exactly two parts"),i.length<2))return!1;let[n,o]=i;return this.tags[n]=o,!0}case"%YAML":{if(this.yaml.explicit=!0,i.length!==1)return s(0,"%YAML directive should contain exactly one part"),!1;let[n]=i;if(n==="1.1"||n==="1.2")return this.yaml.version=n,!0;{let o=/^\d+\.\d+$/.test(n);return s(6,`Unsupported YAML version ${n}`,o),!1}}default:return s(0,`Unknown directive ${r}`,!0),!1}}tagName(t,s){if(t==="!")return"!";if(t[0]!=="!")return s(`Not a valid tag: ${t}`),null;if(t[1]==="<"){let o=t.slice(2,-1);return o==="!"||o==="!!"?(s(`Verbatim tags aren't resolved, so ${t} is invalid.`),null):(t[t.length-1]!==">"&&s("Verbatim tags must end with a >"),o)}let[,i,r]=t.match(/^(.*!)([^!]*)$/s);r||s(`The ${t} tag has no suffix`);let n=this.tags[i];if(n)try{return n+decodeURIComponent(r)}catch(o){return s(String(o)),null}return i==="!"?t:(s(`Could not resolve tag: ${t}`),null)}tagString(t){for(let[s,i]of Object.entries(this.tags))if(t.startsWith(i))return s+IC(t.substring(i.length));return t[0]==="!"?t:`!<${t}>`}toString(t){let s=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],i=Object.entries(this.tags),r;if(t&&i.length>0&&cp.isNode(t.contents)){let n={};RC.visit(t.contents,(o,a)=>{cp.isNode(a)&&a.tag&&(n[a.tag]=!0)}),r=Object.keys(n)}else r=[];for(let[n,o]of i)n==="!!"&&o==="tag:yaml.org,2002:"||(!t||r.some(a=>a.startsWith(o)))&&s.push(`%TAG ${n} ${o}`);return s.join(`
|
|
55
55
|
`)}};br.defaultYaml={explicit:!1,version:"1.2"};br.defaultTags={"!!":"tag:yaml.org,2002:"};fp.Directives=br});var so=I(vr=>{"use strict";var dp=K(),_C=wr();function $C(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){let s=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw new Error(s)}return!0}function hp(e){let t=new Set;return _C.visit(e,{Value(s,i){i.anchor&&t.add(i.anchor)}}),t}function pp(e,t){for(let s=1;;++s){let i=`${e}${s}`;if(!t.has(i))return i}}function TC(e,t){let s=[],i=new Map,r=null;return{onAnchor:n=>{s.push(n),r??(r=hp(e));let o=pp(t,r);return r.add(o),o},setAnchors:()=>{for(let n of s){let o=i.get(n);if(typeof o=="object"&&o.anchor&&(dp.isScalar(o.node)||dp.isCollection(o.node)))o.node.anchor=o.anchor;else{let a=new Error("Failed to resolve repeated object (this should not happen)");throw a.source=n,a}}},sourceObjects:i}}vr.anchorIsValid=$C;vr.anchorNames=hp;vr.createNodeAnchors=TC;vr.findNewAnchor=pp});var el=I(mp=>{"use strict";function Er(e,t,s,i){if(i&&typeof i=="object")if(Array.isArray(i))for(let r=0,n=i.length;r<n;++r){let o=i[r],a=Er(e,i,String(r),o);a===void 0?delete i[r]:a!==o&&(i[r]=a)}else if(i instanceof Map)for(let r of Array.from(i.keys())){let n=i.get(r),o=Er(e,i,r,n);o===void 0?i.delete(r):o!==n&&i.set(r,o)}else if(i instanceof Set)for(let r of Array.from(i)){let n=Er(e,i,r,r);n===void 0?i.delete(r):n!==r&&(i.delete(r),i.add(n))}else for(let[r,n]of Object.entries(i)){let o=Er(e,i,r,n);o===void 0?delete i[r]:o!==n&&(i[r]=o)}return e.call(t,s,i)}mp.applyReviver=Er});var es=I(Dp=>{"use strict";var PC=K();function gp(e,t,s){if(Array.isArray(e))return e.map((i,r)=>gp(i,String(r),s));if(e&&typeof e.toJSON=="function"){if(!s||!PC.hasAnchor(e))return e.toJSON(t,s);let i={aliasCount:0,count:1,res:void 0};s.anchors.set(e,i),s.onCreate=n=>{i.res=n,delete s.onCreate};let r=e.toJSON(t,s);return s.onCreate&&s.onCreate(r),r}return typeof e=="bigint"&&!s?.keep?Number(e):e}Dp.toJS=gp});var io=I(wp=>{"use strict";var BC=el(),yp=K(),OC=es(),tl=class{constructor(t){Object.defineProperty(this,yp.NODE_TYPE,{value:t})}clone(){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(t.range=this.range.slice()),t}toJS(t,{mapAsMap:s,maxAliasCount:i,onAnchor:r,reviver:n}={}){if(!yp.isDocument(t))throw new TypeError("A document argument is required");let o={anchors:new Map,doc:t,keep:!0,mapAsMap:s===!0,mapKeyWarned:!1,maxAliasCount:typeof i=="number"?i:100},a=OC.toJS(this,"",o);if(typeof r=="function")for(let{count:u,res:l}of o.anchors.values())r(l,u);return typeof n=="function"?BC.applyReviver(n,{"":a},"",a):a}};wp.NodeBase=tl});var Fr=I(bp=>{"use strict";var LC=so(),NC=wr(),pi=K(),MC=io(),jC=es(),sl=class extends MC.NodeBase{constructor(t){super(pi.ALIAS),this.source=t,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(t,s){let i;s?.aliasResolveCache?i=s.aliasResolveCache:(i=[],NC.visit(t,{Node:(n,o)=>{(pi.isAlias(o)||pi.hasAnchor(o))&&i.push(o)}}),s&&(s.aliasResolveCache=i));let r;for(let n of i){if(n===this)break;n.anchor===this.source&&(r=n)}return r}toJSON(t,s){if(!s)return{source:this.source};let{anchors:i,doc:r,maxAliasCount:n}=s,o=this.resolve(r,s);if(!o){let u=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(u)}let a=i.get(o);if(a||(jC.toJS(o,null,s),a=i.get(o)),a?.res===void 0){let u="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(u)}if(n>=0&&(a.count+=1,a.aliasCount===0&&(a.aliasCount=ro(r,o,i)),a.count*a.aliasCount>n)){let u="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(u)}return a.res}toString(t,s,i){let r=`*${this.source}`;if(t){if(LC.anchorIsValid(this.source),t.options.verifyAliasOrder&&!t.anchors.has(this.source)){let n=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(n)}if(t.implicitKey)return`${r} `}return r}};function ro(e,t,s){if(pi.isAlias(t)){let i=t.resolve(e),r=s&&i&&s.get(i);return r?r.count*r.aliasCount:0}else if(pi.isCollection(t)){let i=0;for(let r of t.items){let n=ro(e,r,s);n>i&&(i=n)}return i}else if(pi.isPair(t)){let i=ro(e,t.key,s),r=ro(e,t.value,s);return Math.max(i,r)}return 1}bp.Alias=sl});var fe=I(il=>{"use strict";var qC=K(),UC=io(),VC=es(),GC=e=>!e||typeof e!="function"&&typeof e!="object",ts=class extends UC.NodeBase{constructor(t){super(qC.SCALAR),this.value=t}toJSON(t,s){return s?.keep?this.value:VC.toJS(this.value,t,s)}toString(){return String(this.value)}};ts.BLOCK_FOLDED="BLOCK_FOLDED";ts.BLOCK_LITERAL="BLOCK_LITERAL";ts.PLAIN="PLAIN";ts.QUOTE_DOUBLE="QUOTE_DOUBLE";ts.QUOTE_SINGLE="QUOTE_SINGLE";il.Scalar=ts;il.isScalarValue=GC});var Cr=I(Ep=>{"use strict";var WC=Fr(),As=K(),vp=fe(),KC="tag:yaml.org,2002:";function zC(e,t,s){if(t){let i=s.filter(n=>n.tag===t),r=i.find(n=>!n.format)??i[0];if(!r)throw new Error(`Tag ${t} not found`);return r}return s.find(i=>i.identify?.(e)&&!i.format)}function HC(e,t,s){if(As.isDocument(e)&&(e=e.contents),As.isNode(e))return e;if(As.isPair(e)){let f=s.schema[As.MAP].createNode?.(s.schema,null,s);return f.items.push(e),f}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<"u"&&e instanceof BigInt)&&(e=e.valueOf());let{aliasDuplicateObjects:i,onAnchor:r,onTagObj:n,schema:o,sourceObjects:a}=s,u;if(i&&e&&typeof e=="object"){if(u=a.get(e),u)return u.anchor??(u.anchor=r(e)),new WC.Alias(u.anchor);u={anchor:null,node:null},a.set(e,u)}t?.startsWith("!!")&&(t=KC+t.slice(2));let l=zC(e,t,o.tags);if(!l){if(e&&typeof e.toJSON=="function"&&(e=e.toJSON()),!e||typeof e!="object"){let f=new vp.Scalar(e);return u&&(u.node=f),f}l=e instanceof Map?o[As.MAP]:Symbol.iterator in Object(e)?o[As.SEQ]:o[As.MAP]}n&&(n(l),delete s.onTagObj);let c=l?.createNode?l.createNode(s.schema,e,s):typeof l?.nodeClass?.from=="function"?l.nodeClass.from(s.schema,e,s):new vp.Scalar(e);return t?c.tag=t:l.default||(c.tag=l.tag),u&&(u.node=c),c}Ep.createNode=HC});var oo=I(no=>{"use strict";var JC=Cr(),Et=K(),YC=io();function rl(e,t,s){let i=s;for(let r=t.length-1;r>=0;--r){let n=t[r];if(typeof n=="number"&&Number.isInteger(n)&&n>=0){let o=[];o[n]=i,i=o}else i=new Map([[n,i]])}return JC.createNode(i,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:e,sourceObjects:new Map})}var Fp=e=>e==null||typeof e=="object"&&!!e[Symbol.iterator]().next().done,nl=class extends YC.NodeBase{constructor(t,s){super(t),Object.defineProperty(this,"schema",{value:s,configurable:!0,enumerable:!1,writable:!0})}clone(t){let s=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return t&&(s.schema=t),s.items=s.items.map(i=>Et.isNode(i)||Et.isPair(i)?i.clone(t):i),this.range&&(s.range=this.range.slice()),s}addIn(t,s){if(Fp(t))this.add(s);else{let[i,...r]=t,n=this.get(i,!0);if(Et.isCollection(n))n.addIn(r,s);else if(n===void 0&&this.schema)this.set(i,rl(this.schema,r,s));else throw new Error(`Expected YAML collection at ${i}. Remaining path: ${r}`)}}deleteIn(t){let[s,...i]=t;if(i.length===0)return this.delete(s);let r=this.get(s,!0);if(Et.isCollection(r))return r.deleteIn(i);throw new Error(`Expected YAML collection at ${s}. Remaining path: ${i}`)}getIn(t,s){let[i,...r]=t,n=this.get(i,!0);return r.length===0?!s&&Et.isScalar(n)?n.value:n:Et.isCollection(n)?n.getIn(r,s):void 0}hasAllNullValues(t){return this.items.every(s=>{if(!Et.isPair(s))return!1;let i=s.value;return i==null||t&&Et.isScalar(i)&&i.value==null&&!i.commentBefore&&!i.comment&&!i.tag})}hasIn(t){let[s,...i]=t;if(i.length===0)return this.has(s);let r=this.get(s,!0);return Et.isCollection(r)?r.hasIn(i):!1}setIn(t,s){let[i,...r]=t;if(r.length===0)this.set(i,s);else{let n=this.get(i,!0);if(Et.isCollection(n))n.setIn(r,s);else if(n===void 0&&this.schema)this.set(i,rl(this.schema,r,s));else throw new Error(`Expected YAML collection at ${i}. Remaining path: ${r}`)}}};no.Collection=nl;no.collectionFromPath=rl;no.isEmptyPath=Fp});var xr=I(ao=>{"use strict";var ZC=e=>e.replace(/^(?!$)(?: $)?/gm,"#");function ol(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}var XC=(e,t,s)=>e.endsWith(`
|
|
56
56
|
`)?ol(s,t):s.includes(`
|
|
57
57
|
`)?`
|
|
@@ -190,7 +190,7 @@ ${s.comment}`:s.comment}this.doc.range[2]=s.offset;break}default:this.errors.pus
|
|
|
190
190
|
`,s)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(t){let s=t.items[t.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,s.value){let i="end"in s.value?s.value.end:void 0;(Array.isArray(i)?i[i.length-1]:void 0)?.type==="comment"?i?.push(this.sourceToken):t.items.push({start:[this.sourceToken]})}else s.sep?s.sep.push(this.sourceToken):s.start.push(this.sourceToken);return;case"space":case"comment":if(s.value)t.items.push({start:[this.sourceToken]});else if(s.sep)s.sep.push(this.sourceToken);else{if(this.atIndentedComment(s.start,t.indent)){let r=t.items[t.items.length-2]?.value?.end;if(Array.isArray(r)){Array.prototype.push.apply(r,s.start),r.push(this.sourceToken),t.items.pop();return}}s.start.push(this.sourceToken)}return}if(this.indent>=t.indent){let i=!this.onKeyLine&&this.indent===t.indent,r=i&&(s.sep||s.explicitKey)&&this.type!=="seq-item-ind",n=[];if(r&&s.sep&&!s.value){let o=[];for(let a=0;a<s.sep.length;++a){let u=s.sep[a];switch(u.type){case"newline":o.push(a);break;case"space":break;case"comment":u.indent>t.indent&&(o.length=0);break;default:o.length=0}}o.length>=2&&(n=s.sep.splice(o[1]))}switch(this.type){case"anchor":case"tag":r||s.value?(n.push(this.sourceToken),t.items.push({start:n}),this.onKeyLine=!0):s.sep?s.sep.push(this.sourceToken):s.start.push(this.sourceToken);return;case"explicit-key-ind":!s.sep&&!s.explicitKey?(s.start.push(this.sourceToken),s.explicitKey=!0):r||s.value?(n.push(this.sourceToken),t.items.push({start:n,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(s.explicitKey)if(s.sep)if(s.value)t.items.push({start:[],key:null,sep:[this.sourceToken]});else if(us(s.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:n,key:null,sep:[this.sourceToken]}]});else if(Bg(s.key)&&!us(s.sep,"newline")){let o=Ei(s.start),a=s.key,u=s.sep;u.push(this.sourceToken),delete s.key,delete s.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:a,sep:u}]})}else n.length>0?s.sep=s.sep.concat(n,this.sourceToken):s.sep.push(this.sourceToken);else if(us(s.start,"newline"))Object.assign(s,{key:null,sep:[this.sourceToken]});else{let o=Ei(s.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:null,sep:[this.sourceToken]}]})}else s.sep?s.value||r?t.items.push({start:n,key:null,sep:[this.sourceToken]}):us(s.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):s.sep.push(this.sourceToken):Object.assign(s,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let o=this.flowScalar(this.type);r||s.value?(t.items.push({start:n,key:o,sep:[]}),this.onKeyLine=!0):s.sep?this.stack.push(o):(Object.assign(s,{key:o,sep:[]}),this.onKeyLine=!0);return}default:{let o=this.startBlockValue(t);if(o){if(o.type==="block-seq"){if(!s.explicitKey&&s.sep&&!us(s.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else i&&t.items.push({start:n});this.stack.push(o);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(t){let s=t.items[t.items.length-1];switch(this.type){case"newline":if(s.value){let i="end"in s.value?s.value.end:void 0;(Array.isArray(i)?i[i.length-1]:void 0)?.type==="comment"?i?.push(this.sourceToken):t.items.push({start:[this.sourceToken]})}else s.start.push(this.sourceToken);return;case"space":case"comment":if(s.value)t.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(s.start,t.indent)){let r=t.items[t.items.length-2]?.value?.end;if(Array.isArray(r)){Array.prototype.push.apply(r,s.start),r.push(this.sourceToken),t.items.pop();return}}s.start.push(this.sourceToken)}return;case"anchor":case"tag":if(s.value||this.indent<=t.indent)break;s.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==t.indent)break;s.value||us(s.start,"seq-item-ind")?t.items.push({start:[this.sourceToken]}):s.start.push(this.sourceToken);return}if(this.indent>t.indent){let i=this.startBlockValue(t);if(i){this.stack.push(i);return}}yield*this.pop(),yield*this.step()}*flowCollection(t){let s=t.items[t.items.length-1];if(this.type==="flow-error-end"){let i;do yield*this.pop(),i=this.peek(1);while(i?.type==="flow-collection")}else if(t.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!s||s.sep?t.items.push({start:[this.sourceToken]}):s.start.push(this.sourceToken);return;case"map-value-ind":!s||s.value?t.items.push({start:[],key:null,sep:[this.sourceToken]}):s.sep?s.sep.push(this.sourceToken):Object.assign(s,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!s||s.value?t.items.push({start:[this.sourceToken]}):s.sep?s.sep.push(this.sourceToken):s.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let r=this.flowScalar(this.type);!s||s.value?t.items.push({start:[],key:r,sep:[]}):s.sep?this.stack.push(r):Object.assign(s,{key:r,sep:[]});return}case"flow-map-end":case"flow-seq-end":t.end.push(this.sourceToken);return}let i=this.startBlockValue(t);i?this.stack.push(i):(yield*this.pop(),yield*this.step())}else{let i=this.peek(2);if(i.type==="block-map"&&(this.type==="map-value-ind"&&i.indent===t.indent||this.type==="newline"&&!i.items[i.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&i.type!=="flow-collection"){let r=zo(i),n=Ei(r);Pg(t);let o=t.end.splice(1,t.end.length);o.push(this.sourceToken);let a={type:"block-map",offset:t.offset,indent:t.indent,items:[{start:n,key:t,sep:o}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=a}else yield*this.lineEnd(t)}}flowScalar(t){if(this.onNewLine){let s=this.source.indexOf(`
|
|
191
191
|
`)+1;for(;s!==0;)this.onNewLine(this.offset+s),s=this.source.indexOf(`
|
|
192
192
|
`,s)+1}return{type:t,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(t){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let s=zo(t),i=Ei(s);return i.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let s=zo(t),i=Ei(s);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(t,s){return this.type!=="comment"||this.indent<=s?!1:t.every(i=>i.type==="newline"||i.type==="space")}*documentEnd(t){this.type!=="doc-mode"&&(t.end?t.end.push(this.sourceToken):t.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(t){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:t.end?t.end.push(this.sourceToken):t.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}};Og.Parser=Ac});var qg=I(Jr=>{"use strict";var Lg=pc(),k1=jr(),Hr=Vr(),I1=dl(),_1=K(),$1=Sc(),Ng=Rc();function Mg(e){let t=e.prettyErrors!==!1;return{lineCounter:e.lineCounter||t&&new $1.LineCounter||null,prettyErrors:t}}function T1(e,t={}){let{lineCounter:s,prettyErrors:i}=Mg(t),r=new Ng.Parser(s?.addNewLine),n=new Lg.Composer(t),o=Array.from(n.compose(r.parse(e)));if(i&&s)for(let a of o)a.errors.forEach(Hr.prettifyError(e,s)),a.warnings.forEach(Hr.prettifyError(e,s));return o.length>0?o:Object.assign([],{empty:!0},n.streamInfo())}function jg(e,t={}){let{lineCounter:s,prettyErrors:i}=Mg(t),r=new Ng.Parser(s?.addNewLine),n=new Lg.Composer(t),o=null;for(let a of n.compose(r.parse(e),!0,e.length))if(!o)o=a;else if(o.options.logLevel!=="silent"){o.errors.push(new Hr.YAMLParseError(a.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return i&&s&&(o.errors.forEach(Hr.prettifyError(e,s)),o.warnings.forEach(Hr.prettifyError(e,s))),o}function P1(e,t,s){let i;typeof t=="function"?i=t:s===void 0&&t&&typeof t=="object"&&(s=t);let r=jg(e,s);if(!r)return null;if(r.warnings.forEach(n=>I1.warn(r.options.logLevel,n)),r.errors.length>0){if(r.options.logLevel!=="silent")throw r.errors[0];r.errors=[]}return r.toJS(Object.assign({reviver:i},s))}function B1(e,t,s){let i=null;if(typeof t=="function"||Array.isArray(t)?i=t:s===void 0&&t&&(s=t),typeof s=="string"&&(s=s.length),typeof s=="number"){let r=Math.round(s);s=r<1?void 0:r>8?{indent:8}:{indent:r}}if(e===void 0){let{keepUndefined:r}=s??t??{};if(!r)return}return _1.isDocument(e)&&!i?e.toString(s):new k1.Document(e,i,s).toString(s)}Jr.parse=P1;Jr.parseAllDocuments=T1;Jr.parseDocument=jg;Jr.stringify=B1});var Ic=I(J=>{"use strict";var O1=pc(),L1=jr(),N1=Hl(),kc=Vr(),M1=Fr(),ls=K(),j1=rs(),q1=fe(),U1=os(),V1=as(),G1=Wo(),W1=Cc(),K1=Sc(),z1=Rc(),Ho=qg(),Ug=wr();J.Composer=O1.Composer;J.Document=L1.Document;J.Schema=N1.Schema;J.YAMLError=kc.YAMLError;J.YAMLParseError=kc.YAMLParseError;J.YAMLWarning=kc.YAMLWarning;J.Alias=M1.Alias;J.isAlias=ls.isAlias;J.isCollection=ls.isCollection;J.isDocument=ls.isDocument;J.isMap=ls.isMap;J.isNode=ls.isNode;J.isPair=ls.isPair;J.isScalar=ls.isScalar;J.isSeq=ls.isSeq;J.Pair=j1.Pair;J.Scalar=q1.Scalar;J.YAMLMap=U1.YAMLMap;J.YAMLSeq=V1.YAMLSeq;J.CST=G1;J.Lexer=W1.Lexer;J.LineCounter=K1.LineCounter;J.Parser=z1.Parser;J.parse=Ho.parse;J.parseAllDocuments=Ho.parseAllDocuments;J.parseDocument=Ho.parseDocument;J.stringify=Ho.stringify;J.visit=Ug.visit;J.visitAsync=Ug.visitAsync});function H1(){if(typeof __dirname<"u")return __dirname;let e=process.argv[1];return e?(0,dt.dirname)((0,dt.resolve)(e)):process.cwd()}function $c(){if(Jo)return Jo;let e=(0,dt.join)(_c,"defaults");return Jo=[e,(0,dt.join)(_c,"..","src","defaults"),(0,dt.join)(_c,"..","dist","defaults"),(0,dt.join)(process.cwd(),"src","defaults"),(0,dt.join)(process.cwd(),"dist","defaults")].find(s=>(0,Vg.existsSync)(s))??e,Jo}function Yo(...e){return(0,dt.join)($c(),...e)}var Vg,dt,_c,Jo,Zo=re(()=>{"use strict";Vg=require("node:fs"),dt=require("node:path");_c=H1()});function Xo(e){if(!e||typeof e!="string")return null;let t=e.lastIndexOf("#"),s,i;if(t!==-1){if(s=e.slice(0,t),i=e.slice(t+1),!i||i.includes("..")||i.includes("\0"))return null}else s=e;return X1(s)?{url:s,ref:i}:null}function X1(e){return J1.test(e)||Y1.test(e)||Z1.test(e)}function Tc(e){let t=e.url;return t=t.replace(/^https?:\/\//,""),t=t.replace(/^git@/,""),t=t.replace(/^ssh:\/\//,""),t=t.replace(/\.git$/,""),t=t.replace(/[/:@]/g,"--"),e.ref&&(t=`${t}@${e.ref}`),t}function Qo(e){let t=e.url;return t.startsWith("git@")?t=t.replace(/^git@[^:]+:/,""):t=t.replace(/^https?:\/\/[^/]+\//,""),t=t.replace(/\.git$/,""),t}var J1,Y1,Z1,Pc=re(()=>{"use strict";J1=/^https?:\/\/.+/,Y1=/^git@.+:.+/,Z1=/^ssh:\/\/.+/});function Yr(){return(0,ea.join)((0,Bc.homedir)(),".best-review","extends")}function Zr(){return(0,ea.join)((0,Bc.homedir)(),".best-review","extends.lock.json")}function Gg(e){return(0,ea.join)(Yr(),Tc(e))}function Oc(e,t){return{ref:e,refString:t,localPath:Gg(e)}}var Bc,ea,ta=re(()=>{"use strict";Bc=require("node:os"),ea=require("node:path");Pc()});function tA(){return Zr()+".lock"}async function sA(){let e=tA(),t=Date.now();for(;;)try{return await(0,Te.mkdir)(e),async()=>{try{await(0,Te.rm)(e,{recursive:!0,force:!0})}catch{}}}catch(s){if(s.code==="EEXIST"){if(Date.now()-t>Q1){await(0,Te.rm)(e,{recursive:!0,force:!0});continue}await new Promise(i=>setTimeout(i,eA));continue}throw s}}async function Kg(e){let t=await sA();try{return await e()}finally{await t()}}function iA(){return{version:1,updated:new Date().toISOString(),packages:{}}}async function Bt(){let e=Zr();try{await(0,Te.access)(e);let t=await(0,Te.readFile)(e,"utf-8"),s=JSON.parse(t);if(s.version!==1)throw new Error(`Unsupported lock file version: ${s.version}`);return s}catch(t){if(t.code==="ENOENT")return iA();throw t}}async function zg(e){let t=Zr();await(0,Te.mkdir)((0,Wg.dirname)(t),{recursive:!0}),e.updated=new Date().toISOString();let s=t+".tmp."+process.pid;await(0,Te.writeFile)(s,JSON.stringify(e,null,2),"utf-8"),await(0,Te.rename)(s,t)}async function Hg(e){return(await Bt()).packages[e]||null}async function Lc(e,t){await Kg(async()=>{let s=await Bt();s.packages[e]=t,await zg(s)})}async function Nc(e){await Kg(async()=>{let t=await Bt();delete t.packages[e],await zg(t)})}async function sa(e){let t=await Hg(e);if(!t)return!1;try{return await(0,Te.access)(t.path),!0}catch{return!1}}var Te,Wg,Q1,eA,Mc=re(()=>{"use strict";Te=require("node:fs/promises"),Wg=require("node:path");ta();Q1=1e4,eA=100});function ia(e){let t=(0,Ze.resolve)(Yr()),s=(0,Ze.resolve)(e),i=(0,Ze.relative)(t,s);if(i.startsWith("..")||(0,Ze.resolve)(t,i)!==s)throw new Error("Invalid extend path: path traversal detected");let r=i.split(/[/\\]/);for(let n of r)if(n==="."||n===".."||n.includes("\0"))throw new Error("Invalid extend path: suspicious path component")}async function jc(e){let{ref:t,localPath:s}=e;ia(s),await(0,cs.mkdir)(Yr(),{recursive:!0}),await(0,cs.rm)(s,{recursive:!0,force:!0});let i=["clone","--depth","1"];t.ref&&i.push("--branch",t.ref),i.push(t.url,s);try{await Jg("git",i,{timeout:6e4})}catch(n){let o=n instanceof Error?n.message:String(n);throw o.includes("not found")||o.includes("does not exist")?new Error(`Repository or ref not found: ${t.url}${t.ref?`#${t.ref}`:""}`):o.includes("Authentication failed")||o.includes("Permission denied")?new Error(`Authentication failed for: ${t.url}`):new Error(`Git clone failed: ${o}`)}let{stdout:r}=await Jg("git",["rev-parse","HEAD"],{cwd:s});return await(0,cs.rm)((0,Ze.join)(s,".git"),{recursive:!0,force:!0}),r.trim()}async function qc(e){let t={agents:[],rules:[]},s=(0,Ze.join)(e,"agents");try{let r=await Je("*.md",{cwd:s});for(let n of r){let o=await Yg((0,Ze.join)(s,n));o&&t.agents.push(o)}}catch{}let i=(0,Ze.join)(e,"rules");try{let r=await Je("**/*.md",{cwd:i});for(let n of r){let o=await Yg((0,Ze.join)(i,n));o&&t.rules.push(o)}}catch{}return t}async function Yg(e){try{let t=await(0,cs.readFile)(e,"utf-8");if(!t.startsWith("---"))return null;let s=t.indexOf("---",3);if(s===-1)return null;let r=t.slice(3,s).match(/^name:\s*(.+)$/m);return r&&r[1]?r[1].trim().replace(/^["']|["']$/g,""):null}catch{return null}}async function Uc(e){ia(e),await(0,cs.rm)(e,{recursive:!0,force:!0})}var cs,Ze,Zg,Xg,Jg,Vc=re(()=>{"use strict";cs=require("node:fs/promises"),Ze=require("node:path"),Zg=require("node:child_process"),Xg=require("node:util");ta();yr();Jg=(0,Xg.promisify)(Zg.execFile)});var Gc={};er(Gc,{getInstalledExtendPaths:()=>Xr,loadAgentsFromExtends:()=>Qg,loadFromExtends:()=>tD,scanRuleRefsFromExtends:()=>eD});async function Xr(e){let t=await Bt(),s=[];for(let i of e){let r=t.packages[i];r?(ia(r.path),s.push(r.path)):h.warn(`Extension not installed: ${i}. Run 'best-review extends install'`)}return s}async function Qg(e){let t=await Xr(e),s=[];for(let i of t){let r=(0,ra.join)(i,"agents");try{let n=await Qr(r);s.push(...n.map(o=>({...o,source:"extends"})))}catch{}}return s}async function eD(e){let t=await Xr(e),s=[];for(let i of t){let r=(0,ra.join)(i,"rules");try{let n=await fs(r,"extends");s.push(...n)}catch{}}return s}async function tD(e,t,s){let i=await Xr(s),r=[];for(let n of i){let o=(0,ra.join)(n,e);try{let a=await t(o);r.push(a)}catch{r.push([])}}return r}var ra,na=re(()=>{"use strict";ra=require("node:path");Wc();Fi();Mc();Vc();M()});function Ps(e){if(!e||e.trim()==="")return{frontmatter:{},body:""};if(!e.startsWith("---"))return{frontmatter:{},body:e};let t=e.indexOf("---",3);if(t===-1)throw new Error("Invalid frontmatter: missing closing delimiter ---");let s=e.slice(3,t).trim(),i=e.slice(t+3).trim();if(!s)return{frontmatter:{},body:i};let r;try{r=iD.default.parse(s)}catch(n){throw new Error(`Invalid YAML in frontmatter: ${n instanceof Error?n.message:String(n)}`)}return{frontmatter:r,body:i}}function oa(e,t){try{let{frontmatter:s,body:i}=Ps(e),r=t(s,i);return r?[r]:[]}catch(s){return h.error("Failed to parse markdown:",s),[]}}async function en(e,t){try{let s=await(0,Kc.readFile)(e,"utf-8");return t?oa(s,t):Ps(s)}catch(s){throw s instanceof Error?new Error(`Failed to load markdown file "${e}": ${s.message}`):new Error(`Failed to load markdown file "${e}": Unknown error`)}}async function rD(e,t,s){try{let i=await Je("**/*.md",{cwd:e});if(i.length===0)return[];let r=[];for(let o of i){let a=(0,Ts.join)(e,o);try{let u=await en(a,t);r.push(...u)}catch(u){h.error(`Error processing file ${o}:`,u)}}let n=s?s(r):r;return h.info(`Loaded ${n.length} items from ${i.length} files in ${e} (recursive)`),n}catch{return[]}}function nD(...e){let t=new Map;for(let s of e)for(let i of s)t.set(i.name,i);return Array.from(t.values())}function aa(e,t){return{defaults:(0,Ts.join)($c(),e),user:(0,Ts.join)((0,sD.homedir)(),".best-review",e),project:(0,Ts.join)(t,".best-review",e)}}async function oD(e,t,s){let i=aa(e,s),[r,n,o]=await Promise.all([t(i.defaults),t(i.user),t(i.project)]);return nD(r,n,o)}async function fs(e,t){try{let s=await Je("**/*.md",{cwd:e}),i=await Promise.all(s.map(async n=>{let o=(0,Ts.join)(e,n);try{let a=await(0,Kc.readFile)(o,"utf-8");return{filePath:o,content:a}}catch{return null}})),r=[];for(let n of i)if(n)try{let{frontmatter:o}=Ps(n.content),a=o.name,u=o.description,l=o.agent,c=o.patterns,f=o.version;typeof a=="string"&&typeof l=="string"&&Array.isArray(c)&&c.length>0&&r.push({name:a,description:typeof u=="string"?u:"",path:n.filePath,patterns:c.filter(d=>typeof d=="string"),agent:l,source:t,...typeof f=="string"||typeof f=="number"?{version:String(f)}:{}})}catch{}return r}catch{return[]}}async function aD(e){let t=aa("rules",e),[s,i,r]=await Promise.all([fs(t.defaults,"defaults"),fs(t.user,"user"),fs(t.project,"project")]),n=new Map;for(let o of[...s,...i,...r])n.set(o.name,o);return Array.from(n.values())}async function uD(e,t,s,i){let r=aa(e,s),{loadFromExtends:n}=await Promise.resolve().then(()=>(na(),Gc)),[o,a,u,l]=await Promise.all([t(r.defaults),n(e,t,i),t(r.user),t(r.project)]);return nD(o,...a,u,l)}async function lD(e,t){let s=aa("rules",e),{scanRuleRefsFromExtends:i}=await Promise.resolve().then(()=>(na(),Gc)),[r,n,o,a]=await Promise.all([fs(s.defaults,"defaults"),i(t),fs(s.user,"user"),fs(s.project,"project")]),u=new Map;for(let l of[...r,...n,...o,...a])u.set(l.name,l);return Array.from(u.values())}var Kc,Ts,sD,iD,Fi=re(()=>{"use strict";M();yr();Kc=require("node:fs/promises"),Ts=require("node:path"),sD=require("node:os"),iD=gt(Ic(),1);Zo()});function rA(e,t){let s=e.name;if(typeof s!="string")return null;let i=t.trim();if(!i)return null;let r=e.executorSettings&&typeof e.executorSettings=="object"&&!Array.isArray(e.executorSettings)?e.executorSettings:void 0,n=e.stage==="validation"?"validation":"review",o=typeof e.version=="string"||typeof e.version=="number"?String(e.version):void 0;return{name:s,description:typeof e.description=="string"?e.description:"",systemPrompt:i,enabled:typeof e.enabled=="boolean"?e.enabled:!0,order:typeof e.order=="number"?e.order:0,...o&&{version:o},...typeof e.executor=="string"&&{executor:e.executor},stage:n,...r&&{executorSettings:r}}}async function Qr(e){let{glob:t}=await Promise.resolve().then(()=>(yr(),tp)),{join:s}=await import("node:path");try{let i=await t("*.md",{cwd:e}),r=[],n=[],o=await Promise.all(i.map(async a=>{let u=s(e,a);try{return{agents:(await en(u,rA)).map(c=>({...c,path:u})),failed:null}}catch(l){return h.error(`Error loading agent from ${a}:`,l),{agents:[],failed:a}}}));return r.push(...o.flatMap(a=>a.agents)),n.push(...o.map(a=>a.failed).filter(a=>a!==null)),n.length>0&&h.warn(`Loaded ${r.length}/${i.length} agents, ${n.length} failed: ${n.join(", ")}`),r}catch(i){if(i.code==="ENOENT")return[];throw i}}var Wc=re(()=>{"use strict";Fi();M()});var G,zc,_,Ft,tn=re(()=>{(function(e){e.assertEqual=r=>{};function t(r){}e.assertIs=t;function s(r){throw new Error}e.assertNever=s,e.arrayToEnum=r=>{let n={};for(let o of r)n[o]=o;return n},e.getValidEnumValues=r=>{let n=e.objectKeys(r).filter(a=>typeof r[r[a]]!="number"),o={};for(let a of n)o[a]=r[a];return e.objectValues(o)},e.objectValues=r=>e.objectKeys(r).map(function(n){return r[n]}),e.objectKeys=typeof Object.keys=="function"?r=>Object.keys(r):r=>{let n=[];for(let o in r)Object.prototype.hasOwnProperty.call(r,o)&&n.push(o);return n},e.find=(r,n)=>{for(let o of r)if(n(o))return o},e.isInteger=typeof Number.isInteger=="function"?r=>Number.isInteger(r):r=>typeof r=="number"&&Number.isFinite(r)&&Math.floor(r)===r;function i(r,n=" | "){return r.map(o=>typeof o=="string"?`'${o}'`:o).join(n)}e.joinValues=i,e.jsonStringifyReplacer=(r,n)=>typeof n=="bigint"?n.toString():n})(G||(G={}));(function(e){e.mergeShapes=(t,s)=>({...t,...s})})(zc||(zc={}));_=G.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Ft=e=>{switch(typeof e){case"undefined":return _.undefined;case"string":return _.string;case"number":return Number.isNaN(e)?_.nan:_.number;case"boolean":return _.boolean;case"function":return _.function;case"bigint":return _.bigint;case"symbol":return _.symbol;case"object":return Array.isArray(e)?_.array:e===null?_.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?_.promise:typeof Map<"u"&&e instanceof Map?_.map:typeof Set<"u"&&e instanceof Set?_.set:typeof Date<"u"&&e instanceof Date?_.date:_.object;default:return _.unknown}}});var C,nA,we,ua=re(()=>{tn();C=G.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),nA=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:"),we=class e extends Error{get errors(){return this.issues}constructor(t){super(),this.issues=[],this.addIssue=i=>{this.issues=[...this.issues,i]},this.addIssues=(i=[])=>{this.issues=[...this.issues,...i]};let s=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,s):this.__proto__=s,this.name="ZodError",this.issues=t}format(t){let s=t||function(n){return n.message},i={_errors:[]},r=n=>{for(let o of n.issues)if(o.code==="invalid_union")o.unionErrors.map(r);else if(o.code==="invalid_return_type")r(o.returnTypeError);else if(o.code==="invalid_arguments")r(o.argumentsError);else if(o.path.length===0)i._errors.push(s(o));else{let a=i,u=0;for(;u<o.path.length;){let l=o.path[u];u===o.path.length-1?(a[l]=a[l]||{_errors:[]},a[l]._errors.push(s(o))):a[l]=a[l]||{_errors:[]},a=a[l],u++}}};return r(this),i}static assert(t){if(!(t instanceof e))throw new Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,G.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(t=s=>s.message){let s={},i=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];s[n]=s[n]||[],s[n].push(t(r))}else i.push(t(r));return{formErrors:i,fieldErrors:s}}get formErrors(){return this.flatten()}};we.create=e=>new we(e)});var oA,Ot,Hc=re(()=>{ua();tn();oA=(e,t)=>{let s;switch(e.code){case C.invalid_type:e.received===_.undefined?s="Required":s=`Expected ${e.expected}, received ${e.received}`;break;case C.invalid_literal:s=`Invalid literal value, expected ${JSON.stringify(e.expected,G.jsonStringifyReplacer)}`;break;case C.unrecognized_keys:s=`Unrecognized key(s) in object: ${G.joinValues(e.keys,", ")}`;break;case C.invalid_union:s="Invalid input";break;case C.invalid_union_discriminator:s=`Invalid discriminator value. Expected ${G.joinValues(e.options)}`;break;case C.invalid_enum_value:s=`Invalid enum value. Expected ${G.joinValues(e.options)}, received '${e.received}'`;break;case C.invalid_arguments:s="Invalid function arguments";break;case C.invalid_return_type:s="Invalid function return type";break;case C.invalid_date:s="Invalid date";break;case C.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(s=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(s=`${s} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?s=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?s=`Invalid input: must end with "${e.validation.endsWith}"`:G.assertNever(e.validation):e.validation!=="regex"?s=`Invalid ${e.validation}`:s="Invalid";break;case C.too_small:e.type==="array"?s=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?s=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?s=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="bigint"?s=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?s=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:s="Invalid input";break;case C.too_big:e.type==="array"?s=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?s=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?s=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?s=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?s=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:s="Invalid input";break;case C.custom:s="Invalid input";break;case C.invalid_intersection_types:s="Intersection results could not be merged";break;case C.not_multiple_of:s=`Number must be a multiple of ${e.multipleOf}`;break;case C.not_finite:s="Number must be finite";break;default:s=t.defaultError,G.assertNever(e)}return{message:s}},Ot=oA});function aA(e){cD=e}function Ci(){return cD}var cD,la=re(()=>{Hc();cD=Ot});function k(e,t){let s=Ci(),i=sn({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,s,s===Ot?void 0:Ot].filter(r=>!!r)});e.common.issues.push(i)}var sn,uA,Ce,O,Bs,ke,ca,fa,ds,xi,Jc=re(()=>{la();Hc();sn=e=>{let{data:t,path:s,errorMaps:i,issueData:r}=e,n=[...s,...r.path||[]],o={...r,path:n};if(r.message!==void 0)return{...r,path:n,message:r.message};let a="",u=i.filter(l=>!!l).slice().reverse();for(let l of u)a=l(o,{data:t,defaultError:a}).message;return{...r,path:n,message:a}},uA=[];Ce=class e{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,s){let i=[];for(let r of s){if(r.status==="aborted")return O;r.status==="dirty"&&t.dirty(),i.push(r.value)}return{status:t.value,value:i}}static async mergeObjectAsync(t,s){let i=[];for(let r of s){let n=await r.key,o=await r.value;i.push({key:n,value:o})}return e.mergeObjectSync(t,i)}static mergeObjectSync(t,s){let i={};for(let r of s){let{key:n,value:o}=r;if(n.status==="aborted"||o.status==="aborted")return O;n.status==="dirty"&&t.dirty(),o.status==="dirty"&&t.dirty(),n.value!=="__proto__"&&(typeof o.value<"u"||r.alwaysSet)&&(i[n.value]=o.value)}return{status:t.value,value:i}}},O=Object.freeze({status:"aborted"}),Bs=e=>({status:"dirty",value:e}),ke=e=>({status:"valid",value:e}),ca=e=>e.status==="aborted",fa=e=>e.status==="dirty",ds=e=>e.status==="valid",xi=e=>typeof Promise<"u"&&e instanceof Promise});var fD=re(()=>{});var P,dD=re(()=>{(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t?.message})(P||(P={}))});function q(e){if(!e)return{};let{errorMap:t,invalid_type_error:s,required_error:i,description:r}=e;if(t&&(s||i))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:r}:{errorMap:(o,a)=>{let{message:u}=e;return o.code==="invalid_enum_value"?{message:u??a.defaultError}:typeof a.data>"u"?{message:u??i??a.defaultError}:o.code!=="invalid_type"?{message:a.defaultError}:{message:u??s??a.defaultError}},description:r}}function gD(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision==null&&(t=`${t}(\\.\\d+)?`);let s=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${s}`}function xA(e){return new RegExp(`^${gD(e)}$`)}function DD(e){let t=`${mD}T${gD(e)}`,s=[];return s.push(e.local?"Z?":"Z"),e.offset&&s.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${s.join("|")})`,new RegExp(`^${t}$`)}function SA(e,t){return!!((t==="v4"||!t)&&yA.test(e)||(t==="v6"||!t)&&bA.test(e))}function AA(e,t){if(!pA.test(e))return!1;try{let[s]=e.split(".");if(!s)return!1;let i=s.replace(/-/g,"+").replace(/_/g,"/").padEnd(s.length+(4-s.length%4)%4,"="),r=JSON.parse(atob(i));return!(typeof r!="object"||r===null||"typ"in r&&r?.typ!=="JWT"||!r.alg||t&&r.alg!==t)}catch{return!1}}function RA(e,t){return!!((t==="v4"||!t)&&wA.test(e)||(t==="v6"||!t)&&vA.test(e))}function kA(e,t){let s=(e.toString().split(".")[1]||"").length,i=(t.toString().split(".")[1]||"").length,r=s>i?s:i,n=Number.parseInt(e.toFixed(r).replace(".","")),o=Number.parseInt(t.toFixed(r).replace(".",""));return n%o/10**r}function Si(e){if(e instanceof Le){let t={};for(let s in e.shape){let i=e.shape[s];t[s]=Xe.create(Si(i))}return new Le({...e._def,shape:()=>t})}else return e instanceof Mt?new Mt({...e._def,type:Si(e.element)}):e instanceof Xe?Xe.create(Si(e.unwrap())):e instanceof xt?xt.create(Si(e.unwrap())):e instanceof Ct?Ct.create(e.items.map(t=>Si(t))):e}function Zc(e,t){let s=Ft(e),i=Ft(t);if(e===t)return{valid:!0,data:e};if(s===_.object&&i===_.object){let r=G.objectKeys(t),n=G.objectKeys(e).filter(a=>r.indexOf(a)!==-1),o={...e,...t};for(let a of n){let u=Zc(e[a],t[a]);if(!u.valid)return{valid:!1};o[a]=u.data}return{valid:!0,data:o}}else if(s===_.array&&i===_.array){if(e.length!==t.length)return{valid:!1};let r=[];for(let n=0;n<e.length;n++){let o=e[n],a=t[n],u=Zc(o,a);if(!u.valid)return{valid:!1};r.push(u.data)}return{valid:!0,data:r}}else return s===_.date&&i===_.date&&+e==+t?{valid:!0,data:e}:{valid:!1}}function yD(e,t){return new Ks({values:e,typeName:L.ZodEnum,...q(t)})}function pD(e,t){let s=typeof e=="function"?e(t):typeof e=="string"?{message:e}:e;return typeof s=="string"?{message:s}:s}function wD(e,t={},s){return e?ps.create().superRefine((i,r)=>{let n=e(i);if(n instanceof Promise)return n.then(o=>{if(!o){let a=pD(t,i),u=a.fatal??s??!0;r.addIssue({code:"custom",...a,fatal:u})}});if(!n){let o=pD(t,i),a=o.fatal??s??!0;r.addIssue({code:"custom",...o,fatal:a})}}):ps.create()}var Qe,hD,V,lA,cA,fA,dA,hA,pA,mA,gA,DA,Yc,yA,wA,bA,vA,EA,FA,mD,CA,hs,Os,Ls,Ns,Ms,Ai,js,qs,ps,Nt,ht,Ri,Mt,Le,Us,Lt,da,Vs,Ct,ha,ki,Ii,pa,Gs,Ws,Ks,zs,ms,et,Xe,xt,Hs,Js,_i,IA,rn,nn,Ys,_A,L,$A,bD,vD,TA,PA,ED,BA,OA,LA,NA,MA,jA,qA,UA,VA,GA,WA,KA,zA,HA,JA,YA,ZA,XA,QA,eR,tR,sR,iR,rR,nR,oR,aR,uR,lR,cR,fR,dR,hR,pR,FD=re(()=>{ua();la();dD();Jc();tn();Qe=class{constructor(t,s,i,r){this._cachedPath=[],this.parent=t,this.data=s,this._path=i,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},hD=(e,t)=>{if(ds(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let s=new we(e.common.issues);return this._error=s,this._error}}};V=class{get description(){return this._def.description}_getType(t){return Ft(t.data)}_getOrReturnCtx(t,s){return s||{common:t.parent.common,data:t.data,parsedType:Ft(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new Ce,ctx:{common:t.parent.common,data:t.data,parsedType:Ft(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){let s=this._parse(t);if(xi(s))throw new Error("Synchronous parse encountered promise.");return s}_parseAsync(t){let s=this._parse(t);return Promise.resolve(s)}parse(t,s){let i=this.safeParse(t,s);if(i.success)return i.data;throw i.error}safeParse(t,s){let i={common:{issues:[],async:s?.async??!1,contextualErrorMap:s?.errorMap},path:s?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Ft(t)},r=this._parseSync({data:t,path:i.path,parent:i});return hD(i,r)}"~validate"(t){let s={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Ft(t)};if(!this["~standard"].async)try{let i=this._parseSync({data:t,path:[],parent:s});return ds(i)?{value:i.value}:{issues:s.common.issues}}catch(i){i?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),s.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:s}).then(i=>ds(i)?{value:i.value}:{issues:s.common.issues})}async parseAsync(t,s){let i=await this.safeParseAsync(t,s);if(i.success)return i.data;throw i.error}async safeParseAsync(t,s){let i={common:{issues:[],contextualErrorMap:s?.errorMap,async:!0},path:s?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:Ft(t)},r=this._parse({data:t,path:i.path,parent:i}),n=await(xi(r)?r:Promise.resolve(r));return hD(i,n)}refine(t,s){let i=r=>typeof s=="string"||typeof s>"u"?{message:s}:typeof s=="function"?s(r):s;return this._refinement((r,n)=>{let o=t(r),a=()=>n.addIssue({code:C.custom,...i(r)});return typeof Promise<"u"&&o instanceof Promise?o.then(u=>u?!0:(a(),!1)):o?!0:(a(),!1)})}refinement(t,s){return this._refinement((i,r)=>t(i)?!0:(r.addIssue(typeof s=="function"?s(i,r):s),!1))}_refinement(t){return new et({schema:this,typeName:L.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:s=>this["~validate"](s)}}optional(){return Xe.create(this,this._def)}nullable(){return xt.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Mt.create(this)}promise(){return ms.create(this,this._def)}or(t){return Us.create([this,t],this._def)}and(t){return Vs.create(this,t,this._def)}transform(t){return new et({...q(this._def),schema:this,typeName:L.ZodEffects,effect:{type:"transform",transform:t}})}default(t){let s=typeof t=="function"?t:()=>t;return new Hs({...q(this._def),innerType:this,defaultValue:s,typeName:L.ZodDefault})}brand(){return new rn({typeName:L.ZodBranded,type:this,...q(this._def)})}catch(t){let s=typeof t=="function"?t:()=>t;return new Js({...q(this._def),innerType:this,catchValue:s,typeName:L.ZodCatch})}describe(t){let s=this.constructor;return new s({...this._def,description:t})}pipe(t){return nn.create(this,t)}readonly(){return Ys.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},lA=/^c[^\s-]{8,}$/i,cA=/^[0-9a-z]+$/,fA=/^[0-9A-HJKMNP-TV-Z]{26}$/i,dA=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,hA=/^[a-z0-9_-]{21}$/i,pA=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,mA=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,gA=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,DA="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",yA=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,wA=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,bA=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,vA=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,EA=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,FA=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,mD="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",CA=new RegExp(`^${mD}$`);hs=class e extends V{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==_.string){let n=this._getOrReturnCtx(t);return k(n,{code:C.invalid_type,expected:_.string,received:n.parsedType}),O}let i=new Ce,r;for(let n of this._def.checks)if(n.kind==="min")t.data.length<n.value&&(r=this._getOrReturnCtx(t,r),k(r,{code:C.too_small,minimum:n.value,type:"string",inclusive:!0,exact:!1,message:n.message}),i.dirty());else if(n.kind==="max")t.data.length>n.value&&(r=this._getOrReturnCtx(t,r),k(r,{code:C.too_big,maximum:n.value,type:"string",inclusive:!0,exact:!1,message:n.message}),i.dirty());else if(n.kind==="length"){let o=t.data.length>n.value,a=t.data.length<n.value;(o||a)&&(r=this._getOrReturnCtx(t,r),o?k(r,{code:C.too_big,maximum:n.value,type:"string",inclusive:!0,exact:!0,message:n.message}):a&&k(r,{code:C.too_small,minimum:n.value,type:"string",inclusive:!0,exact:!0,message:n.message}),i.dirty())}else if(n.kind==="email")gA.test(t.data)||(r=this._getOrReturnCtx(t,r),k(r,{validation:"email",code:C.invalid_string,message:n.message}),i.dirty());else if(n.kind==="emoji")Yc||(Yc=new RegExp(DA,"u")),Yc.test(t.data)||(r=this._getOrReturnCtx(t,r),k(r,{validation:"emoji",code:C.invalid_string,message:n.message}),i.dirty());else if(n.kind==="uuid")dA.test(t.data)||(r=this._getOrReturnCtx(t,r),k(r,{validation:"uuid",code:C.invalid_string,message:n.message}),i.dirty());else if(n.kind==="nanoid")hA.test(t.data)||(r=this._getOrReturnCtx(t,r),k(r,{validation:"nanoid",code:C.invalid_string,message:n.message}),i.dirty());else if(n.kind==="cuid")lA.test(t.data)||(r=this._getOrReturnCtx(t,r),k(r,{validation:"cuid",code:C.invalid_string,message:n.message}),i.dirty());else if(n.kind==="cuid2")cA.test(t.data)||(r=this._getOrReturnCtx(t,r),k(r,{validation:"cuid2",code:C.invalid_string,message:n.message}),i.dirty());else if(n.kind==="ulid")fA.test(t.data)||(r=this._getOrReturnCtx(t,r),k(r,{validation:"ulid",code:C.invalid_string,message:n.message}),i.dirty());else if(n.kind==="url")try{new URL(t.data)}catch{r=this._getOrReturnCtx(t,r),k(r,{validation:"url",code:C.invalid_string,message:n.message}),i.dirty()}else n.kind==="regex"?(n.regex.lastIndex=0,n.regex.test(t.data)||(r=this._getOrReturnCtx(t,r),k(r,{validation:"regex",code:C.invalid_string,message:n.message}),i.dirty())):n.kind==="trim"?t.data=t.data.trim():n.kind==="includes"?t.data.includes(n.value,n.position)||(r=this._getOrReturnCtx(t,r),k(r,{code:C.invalid_string,validation:{includes:n.value,position:n.position},message:n.message}),i.dirty()):n.kind==="toLowerCase"?t.data=t.data.toLowerCase():n.kind==="toUpperCase"?t.data=t.data.toUpperCase():n.kind==="startsWith"?t.data.startsWith(n.value)||(r=this._getOrReturnCtx(t,r),k(r,{code:C.invalid_string,validation:{startsWith:n.value},message:n.message}),i.dirty()):n.kind==="endsWith"?t.data.endsWith(n.value)||(r=this._getOrReturnCtx(t,r),k(r,{code:C.invalid_string,validation:{endsWith:n.value},message:n.message}),i.dirty()):n.kind==="datetime"?DD(n).test(t.data)||(r=this._getOrReturnCtx(t,r),k(r,{code:C.invalid_string,validation:"datetime",message:n.message}),i.dirty()):n.kind==="date"?CA.test(t.data)||(r=this._getOrReturnCtx(t,r),k(r,{code:C.invalid_string,validation:"date",message:n.message}),i.dirty()):n.kind==="time"?xA(n).test(t.data)||(r=this._getOrReturnCtx(t,r),k(r,{code:C.invalid_string,validation:"time",message:n.message}),i.dirty()):n.kind==="duration"?mA.test(t.data)||(r=this._getOrReturnCtx(t,r),k(r,{validation:"duration",code:C.invalid_string,message:n.message}),i.dirty()):n.kind==="ip"?SA(t.data,n.version)||(r=this._getOrReturnCtx(t,r),k(r,{validation:"ip",code:C.invalid_string,message:n.message}),i.dirty()):n.kind==="jwt"?AA(t.data,n.alg)||(r=this._getOrReturnCtx(t,r),k(r,{validation:"jwt",code:C.invalid_string,message:n.message}),i.dirty()):n.kind==="cidr"?RA(t.data,n.version)||(r=this._getOrReturnCtx(t,r),k(r,{validation:"cidr",code:C.invalid_string,message:n.message}),i.dirty()):n.kind==="base64"?EA.test(t.data)||(r=this._getOrReturnCtx(t,r),k(r,{validation:"base64",code:C.invalid_string,message:n.message}),i.dirty()):n.kind==="base64url"?FA.test(t.data)||(r=this._getOrReturnCtx(t,r),k(r,{validation:"base64url",code:C.invalid_string,message:n.message}),i.dirty()):G.assertNever(n);return{status:i.value,value:t.data}}_regex(t,s,i){return this.refinement(r=>t.test(r),{validation:s,code:C.invalid_string,...P.errToObj(i)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...P.errToObj(t)})}url(t){return this._addCheck({kind:"url",...P.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...P.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...P.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...P.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...P.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...P.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...P.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...P.errToObj(t)})}base64url(t){return this._addCheck({kind:"base64url",...P.errToObj(t)})}jwt(t){return this._addCheck({kind:"jwt",...P.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...P.errToObj(t)})}cidr(t){return this._addCheck({kind:"cidr",...P.errToObj(t)})}datetime(t){return typeof t=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t}):this._addCheck({kind:"datetime",precision:typeof t?.precision>"u"?null:t?.precision,offset:t?.offset??!1,local:t?.local??!1,...P.errToObj(t?.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){return typeof t=="string"?this._addCheck({kind:"time",precision:null,message:t}):this._addCheck({kind:"time",precision:typeof t?.precision>"u"?null:t?.precision,...P.errToObj(t?.message)})}duration(t){return this._addCheck({kind:"duration",...P.errToObj(t)})}regex(t,s){return this._addCheck({kind:"regex",regex:t,...P.errToObj(s)})}includes(t,s){return this._addCheck({kind:"includes",value:t,position:s?.position,...P.errToObj(s?.message)})}startsWith(t,s){return this._addCheck({kind:"startsWith",value:t,...P.errToObj(s)})}endsWith(t,s){return this._addCheck({kind:"endsWith",value:t,...P.errToObj(s)})}min(t,s){return this._addCheck({kind:"min",value:t,...P.errToObj(s)})}max(t,s){return this._addCheck({kind:"max",value:t,...P.errToObj(s)})}length(t,s){return this._addCheck({kind:"length",value:t,...P.errToObj(s)})}nonempty(t){return this.min(1,P.errToObj(t))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isDate(){return!!this._def.checks.find(t=>t.kind==="date")}get isTime(){return!!this._def.checks.find(t=>t.kind==="time")}get isDuration(){return!!this._def.checks.find(t=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(t=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get isCIDR(){return!!this._def.checks.find(t=>t.kind==="cidr")}get isBase64(){return!!this._def.checks.find(t=>t.kind==="base64")}get isBase64url(){return!!this._def.checks.find(t=>t.kind==="base64url")}get minLength(){let t=null;for(let s of this._def.checks)s.kind==="min"&&(t===null||s.value>t)&&(t=s.value);return t}get maxLength(){let t=null;for(let s of this._def.checks)s.kind==="max"&&(t===null||s.value<t)&&(t=s.value);return t}};hs.create=e=>new hs({checks:[],typeName:L.ZodString,coerce:e?.coerce??!1,...q(e)});Os=class e extends V{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==_.number){let n=this._getOrReturnCtx(t);return k(n,{code:C.invalid_type,expected:_.number,received:n.parsedType}),O}let i,r=new Ce;for(let n of this._def.checks)n.kind==="int"?G.isInteger(t.data)||(i=this._getOrReturnCtx(t,i),k(i,{code:C.invalid_type,expected:"integer",received:"float",message:n.message}),r.dirty()):n.kind==="min"?(n.inclusive?t.data<n.value:t.data<=n.value)&&(i=this._getOrReturnCtx(t,i),k(i,{code:C.too_small,minimum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):n.kind==="max"?(n.inclusive?t.data>n.value:t.data>=n.value)&&(i=this._getOrReturnCtx(t,i),k(i,{code:C.too_big,maximum:n.value,type:"number",inclusive:n.inclusive,exact:!1,message:n.message}),r.dirty()):n.kind==="multipleOf"?kA(t.data,n.value)!==0&&(i=this._getOrReturnCtx(t,i),k(i,{code:C.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):n.kind==="finite"?Number.isFinite(t.data)||(i=this._getOrReturnCtx(t,i),k(i,{code:C.not_finite,message:n.message}),r.dirty()):G.assertNever(n);return{status:r.value,value:t.data}}gte(t,s){return this.setLimit("min",t,!0,P.toString(s))}gt(t,s){return this.setLimit("min",t,!1,P.toString(s))}lte(t,s){return this.setLimit("max",t,!0,P.toString(s))}lt(t,s){return this.setLimit("max",t,!1,P.toString(s))}setLimit(t,s,i,r){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:s,inclusive:i,message:P.toString(r)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:P.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:P.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:P.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:P.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:P.toString(t)})}multipleOf(t,s){return this._addCheck({kind:"multipleOf",value:t,message:P.toString(s)})}finite(t){return this._addCheck({kind:"finite",message:P.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:P.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:P.toString(t)})}get minValue(){let t=null;for(let s of this._def.checks)s.kind==="min"&&(t===null||s.value>t)&&(t=s.value);return t}get maxValue(){let t=null;for(let s of this._def.checks)s.kind==="max"&&(t===null||s.value<t)&&(t=s.value);return t}get isInt(){return!!this._def.checks.find(t=>t.kind==="int"||t.kind==="multipleOf"&&G.isInteger(t.value))}get isFinite(){let t=null,s=null;for(let i of this._def.checks){if(i.kind==="finite"||i.kind==="int"||i.kind==="multipleOf")return!0;i.kind==="min"?(s===null||i.value>s)&&(s=i.value):i.kind==="max"&&(t===null||i.value<t)&&(t=i.value)}return Number.isFinite(s)&&Number.isFinite(t)}};Os.create=e=>new Os({checks:[],typeName:L.ZodNumber,coerce:e?.coerce||!1,...q(e)});Ls=class e extends V{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce)try{t.data=BigInt(t.data)}catch{return this._getInvalidInput(t)}if(this._getType(t)!==_.bigint)return this._getInvalidInput(t);let i,r=new Ce;for(let n of this._def.checks)n.kind==="min"?(n.inclusive?t.data<n.value:t.data<=n.value)&&(i=this._getOrReturnCtx(t,i),k(i,{code:C.too_small,type:"bigint",minimum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):n.kind==="max"?(n.inclusive?t.data>n.value:t.data>=n.value)&&(i=this._getOrReturnCtx(t,i),k(i,{code:C.too_big,type:"bigint",maximum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):n.kind==="multipleOf"?t.data%n.value!==BigInt(0)&&(i=this._getOrReturnCtx(t,i),k(i,{code:C.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):G.assertNever(n);return{status:r.value,value:t.data}}_getInvalidInput(t){let s=this._getOrReturnCtx(t);return k(s,{code:C.invalid_type,expected:_.bigint,received:s.parsedType}),O}gte(t,s){return this.setLimit("min",t,!0,P.toString(s))}gt(t,s){return this.setLimit("min",t,!1,P.toString(s))}lte(t,s){return this.setLimit("max",t,!0,P.toString(s))}lt(t,s){return this.setLimit("max",t,!1,P.toString(s))}setLimit(t,s,i,r){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:s,inclusive:i,message:P.toString(r)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:P.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:P.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:P.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:P.toString(t)})}multipleOf(t,s){return this._addCheck({kind:"multipleOf",value:t,message:P.toString(s)})}get minValue(){let t=null;for(let s of this._def.checks)s.kind==="min"&&(t===null||s.value>t)&&(t=s.value);return t}get maxValue(){let t=null;for(let s of this._def.checks)s.kind==="max"&&(t===null||s.value<t)&&(t=s.value);return t}};Ls.create=e=>new Ls({checks:[],typeName:L.ZodBigInt,coerce:e?.coerce??!1,...q(e)});Ns=class extends V{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==_.boolean){let i=this._getOrReturnCtx(t);return k(i,{code:C.invalid_type,expected:_.boolean,received:i.parsedType}),O}return ke(t.data)}};Ns.create=e=>new Ns({typeName:L.ZodBoolean,coerce:e?.coerce||!1,...q(e)});Ms=class e extends V{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==_.date){let n=this._getOrReturnCtx(t);return k(n,{code:C.invalid_type,expected:_.date,received:n.parsedType}),O}if(Number.isNaN(t.data.getTime())){let n=this._getOrReturnCtx(t);return k(n,{code:C.invalid_date}),O}let i=new Ce,r;for(let n of this._def.checks)n.kind==="min"?t.data.getTime()<n.value&&(r=this._getOrReturnCtx(t,r),k(r,{code:C.too_small,message:n.message,inclusive:!0,exact:!1,minimum:n.value,type:"date"}),i.dirty()):n.kind==="max"?t.data.getTime()>n.value&&(r=this._getOrReturnCtx(t,r),k(r,{code:C.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:"date"}),i.dirty()):G.assertNever(n);return{status:i.value,value:new Date(t.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(t,s){return this._addCheck({kind:"min",value:t.getTime(),message:P.toString(s)})}max(t,s){return this._addCheck({kind:"max",value:t.getTime(),message:P.toString(s)})}get minDate(){let t=null;for(let s of this._def.checks)s.kind==="min"&&(t===null||s.value>t)&&(t=s.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(let s of this._def.checks)s.kind==="max"&&(t===null||s.value<t)&&(t=s.value);return t!=null?new Date(t):null}};Ms.create=e=>new Ms({checks:[],coerce:e?.coerce||!1,typeName:L.ZodDate,...q(e)});Ai=class extends V{_parse(t){if(this._getType(t)!==_.symbol){let i=this._getOrReturnCtx(t);return k(i,{code:C.invalid_type,expected:_.symbol,received:i.parsedType}),O}return ke(t.data)}};Ai.create=e=>new Ai({typeName:L.ZodSymbol,...q(e)});js=class extends V{_parse(t){if(this._getType(t)!==_.undefined){let i=this._getOrReturnCtx(t);return k(i,{code:C.invalid_type,expected:_.undefined,received:i.parsedType}),O}return ke(t.data)}};js.create=e=>new js({typeName:L.ZodUndefined,...q(e)});qs=class extends V{_parse(t){if(this._getType(t)!==_.null){let i=this._getOrReturnCtx(t);return k(i,{code:C.invalid_type,expected:_.null,received:i.parsedType}),O}return ke(t.data)}};qs.create=e=>new qs({typeName:L.ZodNull,...q(e)});ps=class extends V{constructor(){super(...arguments),this._any=!0}_parse(t){return ke(t.data)}};ps.create=e=>new ps({typeName:L.ZodAny,...q(e)});Nt=class extends V{constructor(){super(...arguments),this._unknown=!0}_parse(t){return ke(t.data)}};Nt.create=e=>new Nt({typeName:L.ZodUnknown,...q(e)});ht=class extends V{_parse(t){let s=this._getOrReturnCtx(t);return k(s,{code:C.invalid_type,expected:_.never,received:s.parsedType}),O}};ht.create=e=>new ht({typeName:L.ZodNever,...q(e)});Ri=class extends V{_parse(t){if(this._getType(t)!==_.undefined){let i=this._getOrReturnCtx(t);return k(i,{code:C.invalid_type,expected:_.void,received:i.parsedType}),O}return ke(t.data)}};Ri.create=e=>new Ri({typeName:L.ZodVoid,...q(e)});Mt=class e extends V{_parse(t){let{ctx:s,status:i}=this._processInputParams(t),r=this._def;if(s.parsedType!==_.array)return k(s,{code:C.invalid_type,expected:_.array,received:s.parsedType}),O;if(r.exactLength!==null){let o=s.data.length>r.exactLength.value,a=s.data.length<r.exactLength.value;(o||a)&&(k(s,{code:o?C.too_big:C.too_small,minimum:a?r.exactLength.value:void 0,maximum:o?r.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:r.exactLength.message}),i.dirty())}if(r.minLength!==null&&s.data.length<r.minLength.value&&(k(s,{code:C.too_small,minimum:r.minLength.value,type:"array",inclusive:!0,exact:!1,message:r.minLength.message}),i.dirty()),r.maxLength!==null&&s.data.length>r.maxLength.value&&(k(s,{code:C.too_big,maximum:r.maxLength.value,type:"array",inclusive:!0,exact:!1,message:r.maxLength.message}),i.dirty()),s.common.async)return Promise.all([...s.data].map((o,a)=>r.type._parseAsync(new Qe(s,o,s.path,a)))).then(o=>Ce.mergeArray(i,o));let n=[...s.data].map((o,a)=>r.type._parseSync(new Qe(s,o,s.path,a)));return Ce.mergeArray(i,n)}get element(){return this._def.type}min(t,s){return new e({...this._def,minLength:{value:t,message:P.toString(s)}})}max(t,s){return new e({...this._def,maxLength:{value:t,message:P.toString(s)}})}length(t,s){return new e({...this._def,exactLength:{value:t,message:P.toString(s)}})}nonempty(t){return this.min(1,t)}};Mt.create=(e,t)=>new Mt({type:e,minLength:null,maxLength:null,exactLength:null,typeName:L.ZodArray,...q(t)});Le=class e extends V{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let t=this._def.shape(),s=G.objectKeys(t);return this._cached={shape:t,keys:s},this._cached}_parse(t){if(this._getType(t)!==_.object){let l=this._getOrReturnCtx(t);return k(l,{code:C.invalid_type,expected:_.object,received:l.parsedType}),O}let{status:i,ctx:r}=this._processInputParams(t),{shape:n,keys:o}=this._getCached(),a=[];if(!(this._def.catchall instanceof ht&&this._def.unknownKeys==="strip"))for(let l in r.data)o.includes(l)||a.push(l);let u=[];for(let l of o){let c=n[l],f=r.data[l];u.push({key:{status:"valid",value:l},value:c._parse(new Qe(r,f,r.path,l)),alwaysSet:l in r.data})}if(this._def.catchall instanceof ht){let l=this._def.unknownKeys;if(l==="passthrough")for(let c of a)u.push({key:{status:"valid",value:c},value:{status:"valid",value:r.data[c]}});else if(l==="strict")a.length>0&&(k(r,{code:C.unrecognized_keys,keys:a}),i.dirty());else if(l!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{let l=this._def.catchall;for(let c of a){let f=r.data[c];u.push({key:{status:"valid",value:c},value:l._parse(new Qe(r,f,r.path,c)),alwaysSet:c in r.data})}}return r.common.async?Promise.resolve().then(async()=>{let l=[];for(let c of u){let f=await c.key,d=await c.value;l.push({key:f,value:d,alwaysSet:c.alwaysSet})}return l}).then(l=>Ce.mergeObjectSync(i,l)):Ce.mergeObjectSync(i,u)}get shape(){return this._def.shape()}strict(t){return P.errToObj,new e({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(s,i)=>{let r=this._def.errorMap?.(s,i).message??i.defaultError;return s.code==="unrecognized_keys"?{message:P.errToObj(t).message??r}:{message:r}}}:{}})}strip(){return new e({...this._def,unknownKeys:"strip"})}passthrough(){return new e({...this._def,unknownKeys:"passthrough"})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:L.ZodObject})}setKey(t,s){return this.augment({[t]:s})}catchall(t){return new e({...this._def,catchall:t})}pick(t){let s={};for(let i of G.objectKeys(t))t[i]&&this.shape[i]&&(s[i]=this.shape[i]);return new e({...this._def,shape:()=>s})}omit(t){let s={};for(let i of G.objectKeys(this.shape))t[i]||(s[i]=this.shape[i]);return new e({...this._def,shape:()=>s})}deepPartial(){return Si(this)}partial(t){let s={};for(let i of G.objectKeys(this.shape)){let r=this.shape[i];t&&!t[i]?s[i]=r:s[i]=r.optional()}return new e({...this._def,shape:()=>s})}required(t){let s={};for(let i of G.objectKeys(this.shape))if(t&&!t[i])s[i]=this.shape[i];else{let n=this.shape[i];for(;n instanceof Xe;)n=n._def.innerType;s[i]=n}return new e({...this._def,shape:()=>s})}keyof(){return yD(G.objectKeys(this.shape))}};Le.create=(e,t)=>new Le({shape:()=>e,unknownKeys:"strip",catchall:ht.create(),typeName:L.ZodObject,...q(t)});Le.strictCreate=(e,t)=>new Le({shape:()=>e,unknownKeys:"strict",catchall:ht.create(),typeName:L.ZodObject,...q(t)});Le.lazycreate=(e,t)=>new Le({shape:e,unknownKeys:"strip",catchall:ht.create(),typeName:L.ZodObject,...q(t)});Us=class extends V{_parse(t){let{ctx:s}=this._processInputParams(t),i=this._def.options;function r(n){for(let a of n)if(a.result.status==="valid")return a.result;for(let a of n)if(a.result.status==="dirty")return s.common.issues.push(...a.ctx.common.issues),a.result;let o=n.map(a=>new we(a.ctx.common.issues));return k(s,{code:C.invalid_union,unionErrors:o}),O}if(s.common.async)return Promise.all(i.map(async n=>{let o={...s,common:{...s.common,issues:[]},parent:null};return{result:await n._parseAsync({data:s.data,path:s.path,parent:o}),ctx:o}})).then(r);{let n,o=[];for(let u of i){let l={...s,common:{...s.common,issues:[]},parent:null},c=u._parseSync({data:s.data,path:s.path,parent:l});if(c.status==="valid")return c;c.status==="dirty"&&!n&&(n={result:c,ctx:l}),l.common.issues.length&&o.push(l.common.issues)}if(n)return s.common.issues.push(...n.ctx.common.issues),n.result;let a=o.map(u=>new we(u));return k(s,{code:C.invalid_union,unionErrors:a}),O}}get options(){return this._def.options}};Us.create=(e,t)=>new Us({options:e,typeName:L.ZodUnion,...q(t)});Lt=e=>e instanceof Gs?Lt(e.schema):e instanceof et?Lt(e.innerType()):e instanceof Ws?[e.value]:e instanceof Ks?e.options:e instanceof zs?G.objectValues(e.enum):e instanceof Hs?Lt(e._def.innerType):e instanceof js?[void 0]:e instanceof qs?[null]:e instanceof Xe?[void 0,...Lt(e.unwrap())]:e instanceof xt?[null,...Lt(e.unwrap())]:e instanceof rn||e instanceof Ys?Lt(e.unwrap()):e instanceof Js?Lt(e._def.innerType):[],da=class e extends V{_parse(t){let{ctx:s}=this._processInputParams(t);if(s.parsedType!==_.object)return k(s,{code:C.invalid_type,expected:_.object,received:s.parsedType}),O;let i=this.discriminator,r=s.data[i],n=this.optionsMap.get(r);return n?s.common.async?n._parseAsync({data:s.data,path:s.path,parent:s}):n._parseSync({data:s.data,path:s.path,parent:s}):(k(s,{code:C.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[i]}),O)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,s,i){let r=new Map;for(let n of s){let o=Lt(n.shape[t]);if(!o.length)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let a of o){if(r.has(a))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(a)}`);r.set(a,n)}}return new e({typeName:L.ZodDiscriminatedUnion,discriminator:t,options:s,optionsMap:r,...q(i)})}};Vs=class extends V{_parse(t){let{status:s,ctx:i}=this._processInputParams(t),r=(n,o)=>{if(ca(n)||ca(o))return O;let a=Zc(n.value,o.value);return a.valid?((fa(n)||fa(o))&&s.dirty(),{status:s.value,value:a.data}):(k(i,{code:C.invalid_intersection_types}),O)};return i.common.async?Promise.all([this._def.left._parseAsync({data:i.data,path:i.path,parent:i}),this._def.right._parseAsync({data:i.data,path:i.path,parent:i})]).then(([n,o])=>r(n,o)):r(this._def.left._parseSync({data:i.data,path:i.path,parent:i}),this._def.right._parseSync({data:i.data,path:i.path,parent:i}))}};Vs.create=(e,t,s)=>new Vs({left:e,right:t,typeName:L.ZodIntersection,...q(s)});Ct=class e extends V{_parse(t){let{status:s,ctx:i}=this._processInputParams(t);if(i.parsedType!==_.array)return k(i,{code:C.invalid_type,expected:_.array,received:i.parsedType}),O;if(i.data.length<this._def.items.length)return k(i,{code:C.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),O;!this._def.rest&&i.data.length>this._def.items.length&&(k(i,{code:C.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),s.dirty());let n=[...i.data].map((o,a)=>{let u=this._def.items[a]||this._def.rest;return u?u._parse(new Qe(i,o,i.path,a)):null}).filter(o=>!!o);return i.common.async?Promise.all(n).then(o=>Ce.mergeArray(s,o)):Ce.mergeArray(s,n)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};Ct.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new Ct({items:e,typeName:L.ZodTuple,rest:null,...q(t)})};ha=class e extends V{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:s,ctx:i}=this._processInputParams(t);if(i.parsedType!==_.object)return k(i,{code:C.invalid_type,expected:_.object,received:i.parsedType}),O;let r=[],n=this._def.keyType,o=this._def.valueType;for(let a in i.data)r.push({key:n._parse(new Qe(i,a,i.path,a)),value:o._parse(new Qe(i,i.data[a],i.path,a)),alwaysSet:a in i.data});return i.common.async?Ce.mergeObjectAsync(s,r):Ce.mergeObjectSync(s,r)}get element(){return this._def.valueType}static create(t,s,i){return s instanceof V?new e({keyType:t,valueType:s,typeName:L.ZodRecord,...q(i)}):new e({keyType:hs.create(),valueType:t,typeName:L.ZodRecord,...q(s)})}},ki=class extends V{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:s,ctx:i}=this._processInputParams(t);if(i.parsedType!==_.map)return k(i,{code:C.invalid_type,expected:_.map,received:i.parsedType}),O;let r=this._def.keyType,n=this._def.valueType,o=[...i.data.entries()].map(([a,u],l)=>({key:r._parse(new Qe(i,a,i.path,[l,"key"])),value:n._parse(new Qe(i,u,i.path,[l,"value"]))}));if(i.common.async){let a=new Map;return Promise.resolve().then(async()=>{for(let u of o){let l=await u.key,c=await u.value;if(l.status==="aborted"||c.status==="aborted")return O;(l.status==="dirty"||c.status==="dirty")&&s.dirty(),a.set(l.value,c.value)}return{status:s.value,value:a}})}else{let a=new Map;for(let u of o){let l=u.key,c=u.value;if(l.status==="aborted"||c.status==="aborted")return O;(l.status==="dirty"||c.status==="dirty")&&s.dirty(),a.set(l.value,c.value)}return{status:s.value,value:a}}}};ki.create=(e,t,s)=>new ki({valueType:t,keyType:e,typeName:L.ZodMap,...q(s)});Ii=class e extends V{_parse(t){let{status:s,ctx:i}=this._processInputParams(t);if(i.parsedType!==_.set)return k(i,{code:C.invalid_type,expected:_.set,received:i.parsedType}),O;let r=this._def;r.minSize!==null&&i.data.size<r.minSize.value&&(k(i,{code:C.too_small,minimum:r.minSize.value,type:"set",inclusive:!0,exact:!1,message:r.minSize.message}),s.dirty()),r.maxSize!==null&&i.data.size>r.maxSize.value&&(k(i,{code:C.too_big,maximum:r.maxSize.value,type:"set",inclusive:!0,exact:!1,message:r.maxSize.message}),s.dirty());let n=this._def.valueType;function o(u){let l=new Set;for(let c of u){if(c.status==="aborted")return O;c.status==="dirty"&&s.dirty(),l.add(c.value)}return{status:s.value,value:l}}let a=[...i.data.values()].map((u,l)=>n._parse(new Qe(i,u,i.path,l)));return i.common.async?Promise.all(a).then(u=>o(u)):o(a)}min(t,s){return new e({...this._def,minSize:{value:t,message:P.toString(s)}})}max(t,s){return new e({...this._def,maxSize:{value:t,message:P.toString(s)}})}size(t,s){return this.min(t,s).max(t,s)}nonempty(t){return this.min(1,t)}};Ii.create=(e,t)=>new Ii({valueType:e,minSize:null,maxSize:null,typeName:L.ZodSet,...q(t)});pa=class e extends V{constructor(){super(...arguments),this.validate=this.implement}_parse(t){let{ctx:s}=this._processInputParams(t);if(s.parsedType!==_.function)return k(s,{code:C.invalid_type,expected:_.function,received:s.parsedType}),O;function i(a,u){return sn({data:a,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,Ci(),Ot].filter(l=>!!l),issueData:{code:C.invalid_arguments,argumentsError:u}})}function r(a,u){return sn({data:a,path:s.path,errorMaps:[s.common.contextualErrorMap,s.schemaErrorMap,Ci(),Ot].filter(l=>!!l),issueData:{code:C.invalid_return_type,returnTypeError:u}})}let n={errorMap:s.common.contextualErrorMap},o=s.data;if(this._def.returns instanceof ms){let a=this;return ke(async function(...u){let l=new we([]),c=await a._def.args.parseAsync(u,n).catch(p=>{throw l.addIssue(i(u,p)),l}),f=await Reflect.apply(o,this,c);return await a._def.returns._def.type.parseAsync(f,n).catch(p=>{throw l.addIssue(r(f,p)),l})})}else{let a=this;return ke(function(...u){let l=a._def.args.safeParse(u,n);if(!l.success)throw new we([i(u,l.error)]);let c=Reflect.apply(o,this,l.data),f=a._def.returns.safeParse(c,n);if(!f.success)throw new we([r(c,f.error)]);return f.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:Ct.create(t).rest(Nt.create())})}returns(t){return new e({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,s,i){return new e({args:t||Ct.create([]).rest(Nt.create()),returns:s||Nt.create(),typeName:L.ZodFunction,...q(i)})}},Gs=class extends V{get schema(){return this._def.getter()}_parse(t){let{ctx:s}=this._processInputParams(t);return this._def.getter()._parse({data:s.data,path:s.path,parent:s})}};Gs.create=(e,t)=>new Gs({getter:e,typeName:L.ZodLazy,...q(t)});Ws=class extends V{_parse(t){if(t.data!==this._def.value){let s=this._getOrReturnCtx(t);return k(s,{received:s.data,code:C.invalid_literal,expected:this._def.value}),O}return{status:"valid",value:t.data}}get value(){return this._def.value}};Ws.create=(e,t)=>new Ws({value:e,typeName:L.ZodLiteral,...q(t)});Ks=class e extends V{_parse(t){if(typeof t.data!="string"){let s=this._getOrReturnCtx(t),i=this._def.values;return k(s,{expected:G.joinValues(i),received:s.parsedType,code:C.invalid_type}),O}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(t.data)){let s=this._getOrReturnCtx(t),i=this._def.values;return k(s,{received:s.data,code:C.invalid_enum_value,options:i}),O}return ke(t.data)}get options(){return this._def.values}get enum(){let t={};for(let s of this._def.values)t[s]=s;return t}get Values(){let t={};for(let s of this._def.values)t[s]=s;return t}get Enum(){let t={};for(let s of this._def.values)t[s]=s;return t}extract(t,s=this._def){return e.create(t,{...this._def,...s})}exclude(t,s=this._def){return e.create(this.options.filter(i=>!t.includes(i)),{...this._def,...s})}};Ks.create=yD;zs=class extends V{_parse(t){let s=G.getValidEnumValues(this._def.values),i=this._getOrReturnCtx(t);if(i.parsedType!==_.string&&i.parsedType!==_.number){let r=G.objectValues(s);return k(i,{expected:G.joinValues(r),received:i.parsedType,code:C.invalid_type}),O}if(this._cache||(this._cache=new Set(G.getValidEnumValues(this._def.values))),!this._cache.has(t.data)){let r=G.objectValues(s);return k(i,{received:i.data,code:C.invalid_enum_value,options:r}),O}return ke(t.data)}get enum(){return this._def.values}};zs.create=(e,t)=>new zs({values:e,typeName:L.ZodNativeEnum,...q(t)});ms=class extends V{unwrap(){return this._def.type}_parse(t){let{ctx:s}=this._processInputParams(t);if(s.parsedType!==_.promise&&s.common.async===!1)return k(s,{code:C.invalid_type,expected:_.promise,received:s.parsedType}),O;let i=s.parsedType===_.promise?s.data:Promise.resolve(s.data);return ke(i.then(r=>this._def.type.parseAsync(r,{path:s.path,errorMap:s.common.contextualErrorMap})))}};ms.create=(e,t)=>new ms({type:e,typeName:L.ZodPromise,...q(t)});et=class extends V{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===L.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){let{status:s,ctx:i}=this._processInputParams(t),r=this._def.effect||null,n={addIssue:o=>{k(i,o),o.fatal?s.abort():s.dirty()},get path(){return i.path}};if(n.addIssue=n.addIssue.bind(n),r.type==="preprocess"){let o=r.transform(i.data,n);if(i.common.async)return Promise.resolve(o).then(async a=>{if(s.value==="aborted")return O;let u=await this._def.schema._parseAsync({data:a,path:i.path,parent:i});return u.status==="aborted"?O:u.status==="dirty"?Bs(u.value):s.value==="dirty"?Bs(u.value):u});{if(s.value==="aborted")return O;let a=this._def.schema._parseSync({data:o,path:i.path,parent:i});return a.status==="aborted"?O:a.status==="dirty"?Bs(a.value):s.value==="dirty"?Bs(a.value):a}}if(r.type==="refinement"){let o=a=>{let u=r.refinement(a,n);if(i.common.async)return Promise.resolve(u);if(u instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return a};if(i.common.async===!1){let a=this._def.schema._parseSync({data:i.data,path:i.path,parent:i});return a.status==="aborted"?O:(a.status==="dirty"&&s.dirty(),o(a.value),{status:s.value,value:a.value})}else return this._def.schema._parseAsync({data:i.data,path:i.path,parent:i}).then(a=>a.status==="aborted"?O:(a.status==="dirty"&&s.dirty(),o(a.value).then(()=>({status:s.value,value:a.value}))))}if(r.type==="transform")if(i.common.async===!1){let o=this._def.schema._parseSync({data:i.data,path:i.path,parent:i});if(!ds(o))return O;let a=r.transform(o.value,n);if(a instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:s.value,value:a}}else return this._def.schema._parseAsync({data:i.data,path:i.path,parent:i}).then(o=>ds(o)?Promise.resolve(r.transform(o.value,n)).then(a=>({status:s.value,value:a})):O);G.assertNever(r)}};et.create=(e,t,s)=>new et({schema:e,typeName:L.ZodEffects,effect:t,...q(s)});et.createWithPreprocess=(e,t,s)=>new et({schema:t,effect:{type:"preprocess",transform:e},typeName:L.ZodEffects,...q(s)});Xe=class extends V{_parse(t){return this._getType(t)===_.undefined?ke(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};Xe.create=(e,t)=>new Xe({innerType:e,typeName:L.ZodOptional,...q(t)});xt=class extends V{_parse(t){return this._getType(t)===_.null?ke(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};xt.create=(e,t)=>new xt({innerType:e,typeName:L.ZodNullable,...q(t)});Hs=class extends V{_parse(t){let{ctx:s}=this._processInputParams(t),i=s.data;return s.parsedType===_.undefined&&(i=this._def.defaultValue()),this._def.innerType._parse({data:i,path:s.path,parent:s})}removeDefault(){return this._def.innerType}};Hs.create=(e,t)=>new Hs({innerType:e,typeName:L.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...q(t)});Js=class extends V{_parse(t){let{ctx:s}=this._processInputParams(t),i={...s,common:{...s.common,issues:[]}},r=this._def.innerType._parse({data:i.data,path:i.path,parent:{...i}});return xi(r)?r.then(n=>({status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new we(i.common.issues)},input:i.data})})):{status:"valid",value:r.status==="valid"?r.value:this._def.catchValue({get error(){return new we(i.common.issues)},input:i.data})}}removeCatch(){return this._def.innerType}};Js.create=(e,t)=>new Js({innerType:e,typeName:L.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...q(t)});_i=class extends V{_parse(t){if(this._getType(t)!==_.nan){let i=this._getOrReturnCtx(t);return k(i,{code:C.invalid_type,expected:_.nan,received:i.parsedType}),O}return{status:"valid",value:t.data}}};_i.create=e=>new _i({typeName:L.ZodNaN,...q(e)});IA=Symbol("zod_brand"),rn=class extends V{_parse(t){let{ctx:s}=this._processInputParams(t),i=s.data;return this._def.type._parse({data:i,path:s.path,parent:s})}unwrap(){return this._def.type}},nn=class e extends V{_parse(t){let{status:s,ctx:i}=this._processInputParams(t);if(i.common.async)return(async()=>{let n=await this._def.in._parseAsync({data:i.data,path:i.path,parent:i});return n.status==="aborted"?O:n.status==="dirty"?(s.dirty(),Bs(n.value)):this._def.out._parseAsync({data:n.value,path:i.path,parent:i})})();{let r=this._def.in._parseSync({data:i.data,path:i.path,parent:i});return r.status==="aborted"?O:r.status==="dirty"?(s.dirty(),{status:"dirty",value:r.value}):this._def.out._parseSync({data:r.value,path:i.path,parent:i})}}static create(t,s){return new e({in:t,out:s,typeName:L.ZodPipeline})}},Ys=class extends V{_parse(t){let s=this._def.innerType._parse(t),i=r=>(ds(r)&&(r.value=Object.freeze(r.value)),r);return xi(s)?s.then(r=>i(r)):i(s)}unwrap(){return this._def.innerType}};Ys.create=(e,t)=>new Ys({innerType:e,typeName:L.ZodReadonly,...q(t)});_A={object:Le.lazycreate};(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(L||(L={}));$A=(e,t={message:`Input not instance of ${e.name}`})=>wD(s=>s instanceof e,t),bD=hs.create,vD=Os.create,TA=_i.create,PA=Ls.create,ED=Ns.create,BA=Ms.create,OA=Ai.create,LA=js.create,NA=qs.create,MA=ps.create,jA=Nt.create,qA=ht.create,UA=Ri.create,VA=Mt.create,GA=Le.create,WA=Le.strictCreate,KA=Us.create,zA=da.create,HA=Vs.create,JA=Ct.create,YA=ha.create,ZA=ki.create,XA=Ii.create,QA=pa.create,eR=Gs.create,tR=Ws.create,sR=Ks.create,iR=zs.create,rR=ms.create,nR=et.create,oR=Xe.create,aR=xt.create,uR=et.createWithPreprocess,lR=nn.create,cR=()=>bD().optional(),fR=()=>vD().optional(),dR=()=>ED().optional(),hR={string:(e=>hs.create({...e,coerce:!0})),number:(e=>Os.create({...e,coerce:!0})),boolean:(e=>Ns.create({...e,coerce:!0})),bigint:(e=>Ls.create({...e,coerce:!0})),date:(e=>Ms.create({...e,coerce:!0}))},pR=O});var b={};er(b,{BRAND:()=>IA,DIRTY:()=>Bs,EMPTY_PATH:()=>uA,INVALID:()=>O,NEVER:()=>pR,OK:()=>ke,ParseStatus:()=>Ce,Schema:()=>V,ZodAny:()=>ps,ZodArray:()=>Mt,ZodBigInt:()=>Ls,ZodBoolean:()=>Ns,ZodBranded:()=>rn,ZodCatch:()=>Js,ZodDate:()=>Ms,ZodDefault:()=>Hs,ZodDiscriminatedUnion:()=>da,ZodEffects:()=>et,ZodEnum:()=>Ks,ZodError:()=>we,ZodFirstPartyTypeKind:()=>L,ZodFunction:()=>pa,ZodIntersection:()=>Vs,ZodIssueCode:()=>C,ZodLazy:()=>Gs,ZodLiteral:()=>Ws,ZodMap:()=>ki,ZodNaN:()=>_i,ZodNativeEnum:()=>zs,ZodNever:()=>ht,ZodNull:()=>qs,ZodNullable:()=>xt,ZodNumber:()=>Os,ZodObject:()=>Le,ZodOptional:()=>Xe,ZodParsedType:()=>_,ZodPipeline:()=>nn,ZodPromise:()=>ms,ZodReadonly:()=>Ys,ZodRecord:()=>ha,ZodSchema:()=>V,ZodSet:()=>Ii,ZodString:()=>hs,ZodSymbol:()=>Ai,ZodTransformer:()=>et,ZodTuple:()=>Ct,ZodType:()=>V,ZodUndefined:()=>js,ZodUnion:()=>Us,ZodUnknown:()=>Nt,ZodVoid:()=>Ri,addIssueToContext:()=>k,any:()=>MA,array:()=>VA,bigint:()=>PA,boolean:()=>ED,coerce:()=>hR,custom:()=>wD,date:()=>BA,datetimeRegex:()=>DD,defaultErrorMap:()=>Ot,discriminatedUnion:()=>zA,effect:()=>nR,enum:()=>sR,function:()=>QA,getErrorMap:()=>Ci,getParsedType:()=>Ft,instanceof:()=>$A,intersection:()=>HA,isAborted:()=>ca,isAsync:()=>xi,isDirty:()=>fa,isValid:()=>ds,late:()=>_A,lazy:()=>eR,literal:()=>tR,makeIssue:()=>sn,map:()=>ZA,nan:()=>TA,nativeEnum:()=>iR,never:()=>qA,null:()=>NA,nullable:()=>aR,number:()=>vD,object:()=>GA,objectUtil:()=>zc,oboolean:()=>dR,onumber:()=>fR,optional:()=>oR,ostring:()=>cR,pipeline:()=>lR,preprocess:()=>uR,promise:()=>rR,quotelessJson:()=>nA,record:()=>YA,set:()=>XA,setErrorMap:()=>aA,strictObject:()=>WA,string:()=>bD,symbol:()=>OA,transformer:()=>nR,tuple:()=>JA,undefined:()=>LA,union:()=>KA,unknown:()=>jA,util:()=>G,void:()=>UA});var Xc=re(()=>{la();Jc();fD();tn();FD();ua()});var Zs=re(()=>{Xc();Xc()});async function pt(e,t){let s=on.get(e);if(s!==void 0)return s.value;let i=await t();return on.set(e,{value:i,timestamp:Date.now()}),i}function ma(e){on.delete(e)}function CD(e){for(let t of on.keys())t.startsWith(e)&&on.delete(t)}var on,Ne,$i=re(()=>{"use strict";on=new Map;Ne={CONFIG:"config",INSTRUCTIONS:"instructions",OUTPUT_FORMAT:"prompt:output-format",VALIDATION_PROMPT:"prompt:validation",GIT_STATUS:"git:status",SKILLS:"skills"}});function kD(e){return{...RD[e]}}function ef(e){return e==="openai"?"openai":"deepseek"}function ID(e){return e==="openai"?xe:be}function mR(e,t){return e===xe?"openai":e===be?"deepseek":ef(t.PLATFORM)}function gR(e){let t={};for(let s of e.split(`
|
|
193
|
-
`)){let i=s.trim();if(!i||i.startsWith("#"))continue;let r=i.indexOf("=");if(r===-1)continue;let n=i.slice(0,r).trim();n.startsWith("export ")&&(n=n.slice(7).trim());let o=i.slice(r+1).trim();(o.startsWith('"')&&o.endsWith('"')||o.startsWith("'")&&o.endsWith("'"))&&(o=o.slice(1,-1)),n&&!(n in process.env)&&(process.env[n]=o)}return t}function ga(e){if(!xD){xD=!0;try{let t=(0,AD.join)(e||process.cwd(),".env"),s=(0,SD.readFileSync)(t,"utf-8");gR(s)}catch{}}}function Me(e={}){ga();let t=e.env??process.env,s=e.executorOverride||e.config?.executor,i=s===xe||s===be?mR(s,t):ef(e.settings?.platform||e.config?.llm?.platform||t.PLATFORM),r=RD[i];return{platform:i,executor:s||ID(i),baseUrl:e.settings?.baseUrl||e.config?.llm?.baseUrl||t.BASE_URL||r.baseUrl,apiKey:e.settings?.apiKey||e.config?.llm?.apiKey||t.API_KEY||"",model:e.modelOverride||e.settings?.model||e.config?.llm?.model||t.MODEL||r.model}}function Pi(e){return Me({config:e})}function _D(){return ga(),ID(ef(process.env.PLATFORM))}var SD,AD,xe,be,Ti,gs,Qc,RD,xD,je=re(()=>{"use strict";SD=require("node:fs"),AD=require("node:path"),xe="openai-compatible-api",be="deepseek-api",Ti=be,gs=1800,Qc=0,RD={deepseek:{baseUrl:"https://api.deepseek.com",model:"deepseek-v4-flash"},openai:{baseUrl:"https://api.openai.com/v1",model:"gpt-4o-mini"}};xD=!1});function Da(){return process.env.BEST_REVIEW_CONFIG_DIR||(0,an.join)((0,PD.homedir)(),".best-review")}function un(){return(0,an.join)(Da(),"config.json")}function AR(){return(0,an.join)(Da(),"instructions.md")}function ln(){return rf.parse({})}async function ya(e){try{return await(0,tt.access)(e),!0}catch(t){if(t instanceof Error&&"code"in t&&t.code==="ENOENT")return!1;throw t}}async function kR(e){if(!await ya(e))return null;let s=await(0,tt.readFile)(e,"utf-8");try{return JSON.parse(s)}catch(i){let r=i instanceof SyntaxError?i.message:String(i);throw new Error(`\u914D\u7F6E\u6587\u4EF6 JSON \u65E0\u6548 ${e}\uFF1A${r}`,{cause:i})}}function sf(e){return e==="opencode-cli"?Ti:e}function IR(e){if(!e)return;let t={};for(let[s,i]of Object.entries(e)){let r=sf(s);typeof r=="string"&&(t[r]={...t[r],...i})}return t}function _R(e){return{...e,...sf(e.executor)!==void 0&&{executor:sf(e.executor)},executors:IR(e.executors)}}function $R(e,t){let s=_R(t);return{...e,...s.extends!==void 0&&{extends:s.extends},...s.excludePatterns!==void 0&&{excludePatterns:s.excludePatterns},...s.concurrency!==void 0&&{concurrency:s.concurrency},...s.executor!==void 0&&{executor:s.executor},llm:s.llm?{...e.llm,...s.llm}:e.llm,executors:s.executors?TR(e.executors,s.executors):e.executors,agents:s.agents?tf(e.agents,s.agents):e.agents,rules:s.rules?tf(e.rules,s.rules):e.rules,skills:s.skills?tf(e.skills,s.skills):e.skills,workflows:s.workflows??e.workflows,reporting:s.reporting?{...e.reporting,...s.reporting}:e.reporting,qualityScore:s.qualityScore?{...e.qualityScore,...s.qualityScore,weights:{...e.qualityScore.weights,...s.qualityScore.weights},categoryWeights:{...e.qualityScore.categoryWeights,...s.qualityScore.categoryWeights}}:e.qualityScore,output:s.output?{...e.output,...s.output}:e.output}}async function le(e){let t=Ne.CONFIG;return pt(t,async()=>{let s=ln(),i=await kR(un());return i&&(s=rf.parse($R(s,i))),s})}async function wa(e){try{await(0,tt.mkdir)(Da(),{recursive:!0}),await(0,tt.writeFile)(un(),JSON.stringify(rf.parse(e),null,2)),OD()}catch(t){throw new Error(`\u4FDD\u5B58\u5168\u5C40\u914D\u7F6E\u5931\u8D25\uFF1A${t}`)}}function TR(e,t){let s={...e};for(let[i,r]of Object.entries(t))s[i]={...s[i],...r,review:r.review?{...s[i]?.review,...r.review}:s[i]?.review,validation:r.validation?{...s[i]?.validation,...r.validation}:s[i]?.validation};return s}function tf(e,t){let s={...e};for(let[i,r]of Object.entries(t))s[i]={...s[i],...r};return s}function cn(){return un()}function nf(e){return(0,an.join)(e,RR)}async function of(){return ya(un())}async function BD(e){return ya(nf(e))}function OD(){CD(Ne.CONFIG),ma(Ne.INSTRUCTIONS)}async function ba(){return pt(Ne.INSTRUCTIONS,async()=>{try{let e=AR();return await ya(e)?await(0,tt.readFile)(e,"utf-8"):""}catch{return""}})}async function LD(e,t,s){let i=un(),r={};try{let o=await(0,tt.readFile)(i,"utf-8");r=JSON.parse(o)}catch{}let n=Array.isArray(r.extends)?r.extends.filter(o=>typeof o=="string"):[];r.extends=n,n.includes(e)||n.push(e),await(0,tt.mkdir)(Da(),{recursive:!0}),await(0,tt.writeFile)(i,JSON.stringify(r,null,2)),OD()}var an,PD,tt,$D,DR,TD,yR,wR,bR,vR,ER,FR,CR,xR,SR,rf,RR,Ge=re(()=>{"use strict";Zs();an=require("path"),PD=require("os"),tt=require("node:fs/promises");$i();je();$D=b.object({model:b.string().optional()}).strict(),DR=b.object({review:b.array($D).optional(),validation:b.array($D).optional()}),TD=b.object({model:b.string().optional(),timeout:b.number().positive().optional(),concurrency:b.number().min(1).max(10).optional(),batchSize:b.number().min(1).max(50).optional(),readinessPing:b.boolean().optional()}).strict(),yR=b.object({review:TD.optional(),validation:TD.optional()}).strict(),wR=b.object({platform:b.enum(["deepseek","openai"]).optional(),baseUrl:b.string().min(1).optional(),apiKey:b.string().optional(),model:b.string().min(1).optional()}).strict().default({}),bR=b.object({enabled:b.boolean().optional(),url:b.string().url().optional(),token:b.string().optional(),localDir:b.string().default(".best-review/reports"),includeDiffs:b.boolean().default(!1),failOnError:b.boolean().default(!1)}).default({}),vR=b.object({critical:b.number().nonnegative().default(40),high:b.number().nonnegative().default(15),medium:b.number().nonnegative().default(6),low:b.number().nonnegative().default(2)}).strict().default({}),ER=b.object({security:b.number().positive().default(1.2),bug:b.number().positive().default(1),performance:b.number().positive().default(.8),quality:b.number().positive().default(.7),style:b.number().positive().default(.4),docs:b.number().positive().default(.3)}).strict().default({}),FR=b.object({base:b.number().positive().default(100),min:b.number().min(0).default(0),weights:vR,categoryWeights:ER}).superRefine((e,t)=>{e.min>e.base&&t.addIssue({code:b.ZodIssueCode.custom,path:["min"],message:"qualityScore.min \u4E0D\u80FD\u5927\u4E8E qualityScore.base"})}).default({}),CR=b.object({enabled:b.boolean().optional(),model:b.string().optional(),timeout:b.number().positive().optional()}),xR=b.object({enabled:b.boolean().optional(),agent:b.string().optional()}),SR=b.object({enabled:b.boolean().optional()}).strict(),rf=b.object({extends:b.array(b.string()).default([]),excludePatterns:b.array(b.string()).default(["*.min.js","*.min.css","*.map","*.d.ts","dist/**","docs/**","*.md","build/**","out/**",".next/**","coverage/**","node_modules/**","vendor/**","*.generated.*","*.bundle.js"]),concurrency:b.number().min(1).max(10).default(2),executor:b.string().default(()=>_D()),llm:wR,executors:b.record(b.string(),yR).default({}),agents:b.record(b.string(),CR).default({}),rules:b.record(b.string(),xR).default({}),skills:b.record(b.string(),SR).default({}),workflows:DR.optional(),reporting:bR,qualityScore:FR,output:b.object({colorize:b.boolean().default(!0),verbose:b.boolean().default(!1),format:b.enum(["terminal","markdown","json"]).default("terminal")}).default({})}).superRefine((e,t)=>{let s=[xe,be];s.includes(e.executor)||t.addIssue({code:b.ZodIssueCode.custom,path:["executor"],message:`\u53EA\u652F\u6301\u6A21\u578B API executor\uFF1A${s.join(", ")}\u3002`});for(let i of Object.keys(e.executors))s.includes(i)||t.addIssue({code:b.ZodIssueCode.custom,path:["executors",i],message:`\u4E0D\u652F\u6301\u7684 executor\uFF1A${i}\u3002\u53EF\u7528\uFF1A${s.join(", ")}\u3002`})});RR=".best-review.json"});var hy={};er(hy,{expandBraces:()=>hf,loadRuleFromRef:()=>ff,loadRuleMarkdown:()=>nk,loadRuleRefs:()=>At,loadRules:()=>uk,loadRulesFromDirectoryRecursive:()=>ok,loadRulesFromRefs:()=>cy,matchAndLoadRules:()=>df,matchPattern:()=>ys,matchRuleRefs:()=>dy,matchRules:()=>lk,parseRuleMarkdown:()=>ly,parseSingleRule:()=>ak});function cf(e,t){let s=e.name,i=e.agent,r=e.patterns,n=t.trim(),o=typeof e.version=="string"||typeof e.version=="number"?String(e.version):void 0;return typeof s!="string"||typeof i!="string"||!Array.isArray(r)||r.length===0||!n?null:{name:s,description:typeof e.description=="string"?e.description:"",patterns:r.filter(u=>typeof u=="string"),agent:i,prompt:n,...o&&{version:o}}}function ly(e){return oa(e,cf)}async function nk(e){try{return await en(e,cf)}catch(t){return h.error(`Error loading rule markdown from ${e}:`,t),[]}}async function ok(e){return rD(e,cf)}function ak(e){let t=ly(e);return t.length>0?t[0]??null:null}async function At(e){let t=e||process.cwd(),s=await le(t);return(s.extends.length>0?await lD(t,s.extends):await aD(t)).map(r=>{let n=s.rules[r.name]||{};return{...r,agent:n.agent??r.agent,_enabled:n.enabled??!0}}).filter(r=>r._enabled!==!1).map(({_enabled:r,...n})=>n)}async function ff(e){try{let t=await(0,uy.readFile)(e.path,"utf-8"),{body:s}=Ps(t);return{name:e.name,description:e.description,patterns:e.patterns,agent:e.agent,prompt:s.trim(),...e.version&&{version:e.version},source:e.source,path:e.path}}catch(t){return h.error(`\u52A0\u8F7D\u89C4\u5219\u5931\u8D25 ${e.path}\uFF1A`,t),null}}async function cy(e){return(await Promise.all(e.map(ff))).filter(s=>s!==null)}async function uk(e){let t=await At(e);return cy(t)}function fy(e,t,s){let i=new Map(s.map(n=>[n.name,n])),r=[];for(let n of e){let o=i.get(n.agent);if(!o){h.warn(`\u89C4\u5219\u5F15\u7528\u4E86\u4E0D\u5B58\u5728\u7684 Agent\uFF1A"${n.agent}"`);continue}let a=t.filter(u=>n.patterns.some(l=>ys(u.file,l))).map(u=>u.file);a.length!==0&&r.push({item:n,files:a,agent:o})}return r}function dy(e,t,s){return fy(e,t,s).map(({item:i,...r})=>({ref:i,...r}))}async function df(e,t,s){let i=dy(e,t,s);return(await Promise.all(i.map(async({ref:n,files:o,agent:a})=>{let u=await ff(n);return u?{rule:u,files:o,agent:a}:null}))).filter(n=>n!==null)}function lk(e,t,s){return fy(e,t,s).map(({item:i,...r})=>({rule:i,...r}))}function hf(e){let t=e.match(ck);if(!t||t.index===void 0||!t[1])return[e];let s=t[1].split(",").map(o=>o.trim()),i=e.substring(0,t.index),r=e.substring(t.index+t[0].length),n=[];for(let o of s){let a=i+o+r;n.push(...hf(a))}return n}function ys(e,t){return hf(t).some(i=>fk(e,i))}function fk(e,t){let s=t.replace(/\*\*/g,"\0DOUBLESTAR\0").replace(/\*/g,"\0STAR\0").replace(/\?/g,"\0QUESTION\0");s=s.replace(/[.+^${}()|[\]\\]/g,"\\$&"),s=s.replace(/\x00DOUBLESTAR\x00\//g,"(?:.*\\/)?").replace(/\x00DOUBLESTAR\x00/g,".*").replace(/\x00STAR\x00/g,"[^/]*").replace(/\x00QUESTION\x00/g,".");let i=ay.get(s);return i||(i=new RegExp(`^${s}$`),ay.set(s,i)),i.test(e)}var uy,ck,ay,ws=re(()=>{"use strict";Fi();uy=require("node:fs/promises");M();Ge();ck=/\{([^}]+)\}/;ay=new Map});var Ee={silent:Number.NEGATIVE_INFINITY,fatal:0,error:0,warn:1,log:2,info:3,success:3,fail:3,ready:3,start:3,box:3,debug:4,trace:5,verbose:Number.POSITIVE_INFINITY},ou={silent:{level:-1},fatal:{level:Ee.fatal},error:{level:Ee.error},warn:{level:Ee.warn},log:{level:Ee.log},info:{level:Ee.info},success:{level:Ee.success},fail:{level:Ee.fail},ready:{level:Ee.info},start:{level:Ee.info},box:{level:Ee.info},debug:{level:Ee.debug},trace:{level:Ee.trace},verbose:{level:Ee.verbose}};function iu(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function au(e,t,s=".",i){if(!iu(t))return au(e,{},s,i);let r=Object.assign({},t);for(let n in e){if(n==="__proto__"||n==="constructor")continue;let o=e[n];o!=null&&(i&&i(r,n,o,s)||(Array.isArray(o)&&Array.isArray(r[n])?r[n]=[...o,...r[n]]:iu(o)&&iu(r[n])?r[n]=au(o,r[n],(s?`${s}.`:"")+n.toString(),i):r[n]=o))}return r}function jb(e){return(...t)=>t.reduce((s,i)=>au(s,i,"",e),{})}var qb=jb();function Ub(e){return Object.prototype.toString.call(e)==="[object Object]"}function Vb(e){return!(!Ub(e)||!e.message&&!e.args||e.stack)}var ru=!1,td=[],me=class e{options;_lastLog;_mockFn;constructor(t={}){let s=t.types||ou;this.options=qb({...t,defaults:{...t.defaults},level:nu(t.level,s),reporters:[...t.reporters||[]]},{types:ou,throttle:1e3,throttleMin:5,formatOptions:{date:!0,colors:!1,compact:!0}});for(let i in s){let r={type:i,...this.options.defaults,...s[i]};this[i]=this._wrapLogFn(r),this[i].raw=this._wrapLogFn(r,!0)}this.options.mockFn&&this.mockTypes(),this._lastLog={}}get level(){return this.options.level}set level(t){this.options.level=nu(t,this.options.types,this.options.level)}prompt(t,s){if(!this.options.prompt)throw new Error("prompt is not supported!");return this.options.prompt(t,s)}create(t){let s=new e({...this.options,...t});return this._mockFn&&s.mockTypes(this._mockFn),s}withDefaults(t){return this.create({...this.options,defaults:{...this.options.defaults,...t}})}withTag(t){return this.withDefaults({tag:this.options.defaults.tag?this.options.defaults.tag+":"+t:t})}addReporter(t){return this.options.reporters.push(t),this}removeReporter(t){if(t){let s=this.options.reporters.indexOf(t);if(s!==-1)return this.options.reporters.splice(s,1)}else this.options.reporters.splice(0);return this}setReporters(t){return this.options.reporters=Array.isArray(t)?t:[t],this}wrapAll(){this.wrapConsole(),this.wrapStd()}restoreAll(){this.restoreConsole(),this.restoreStd()}wrapConsole(){for(let t in this.options.types)console["__"+t]||(console["__"+t]=console[t]),console[t]=this[t].raw}restoreConsole(){for(let t in this.options.types)console["__"+t]&&(console[t]=console["__"+t],delete console["__"+t])}wrapStd(){this._wrapStream(this.options.stdout,"log"),this._wrapStream(this.options.stderr,"log")}_wrapStream(t,s){t&&(t.__write||(t.__write=t.write),t.write=i=>{this[s].raw(String(i).trim())})}restoreStd(){this._restoreStream(this.options.stdout),this._restoreStream(this.options.stderr)}_restoreStream(t){t&&t.__write&&(t.write=t.__write,delete t.__write)}pauseLogs(){ru=!0}resumeLogs(){ru=!1;let t=td.splice(0);for(let s of t)s[0]._logFn(s[1],s[2])}mockTypes(t){let s=t||this.options.mockFn;if(this._mockFn=s,typeof s=="function")for(let i in this.options.types)this[i]=s(i,this.options.types[i])||this[i],this[i].raw=this[i]}_wrapLogFn(t,s){return(...i)=>{if(ru){td.push([this,t,i,s]);return}return this._logFn(t,i,s)}}_logFn(t,s,i){if((t.level||0)>this.level)return!1;let r={date:new Date,args:[],...t,level:nu(t.level,this.options.types)};!i&&s.length===1&&Vb(s[0])?Object.assign(r,s[0]):r.args=[...s],r.message&&(r.args.unshift(r.message),delete r.message),r.additional&&(Array.isArray(r.additional)||(r.additional=r.additional.split(`
|
|
193
|
+
`)){let i=s.trim();if(!i||i.startsWith("#"))continue;let r=i.indexOf("=");if(r===-1)continue;let n=i.slice(0,r).trim();n.startsWith("export ")&&(n=n.slice(7).trim());let o=i.slice(r+1).trim();(o.startsWith('"')&&o.endsWith('"')||o.startsWith("'")&&o.endsWith("'"))&&(o=o.slice(1,-1)),n&&!(n in process.env)&&(process.env[n]=o)}return t}function ga(e){if(!xD){xD=!0;try{let t=(0,AD.join)(e||process.cwd(),".env"),s=(0,SD.readFileSync)(t,"utf-8");gR(s)}catch{}}}function Me(e={}){ga();let t=e.env??process.env,s=e.executorOverride||e.config?.executor,i=s===xe||s===be?mR(s,t):ef(e.settings?.platform||e.config?.llm?.platform||t.PLATFORM),r=RD[i];return{platform:i,executor:s||ID(i),baseUrl:e.settings?.baseUrl||e.config?.llm?.baseUrl||t.BASE_URL||r.baseUrl,apiKey:e.settings?.apiKey||e.config?.llm?.apiKey||t.API_KEY||"",model:e.modelOverride||e.settings?.model||e.config?.llm?.model||t.MODEL||r.model}}function Pi(e){return Me({config:e})}function _D(){return ga(),ID(ef(process.env.PLATFORM))}var SD,AD,xe,be,Ti,gs,Qc,RD,xD,je=re(()=>{"use strict";SD=require("node:fs"),AD=require("node:path"),xe="openai-compatible-api",be="deepseek-api",Ti=be,gs=1800,Qc=0,RD={deepseek:{baseUrl:"https://api.deepseek.com",model:"deepseek-v4-flash"},openai:{baseUrl:"https://api.openai.com/v1",model:"gpt-5.4-mini"}};xD=!1});function Da(){return process.env.BEST_REVIEW_CONFIG_DIR||(0,an.join)((0,PD.homedir)(),".best-review")}function un(){return(0,an.join)(Da(),"config.json")}function AR(){return(0,an.join)(Da(),"instructions.md")}function ln(){return rf.parse({})}async function ya(e){try{return await(0,tt.access)(e),!0}catch(t){if(t instanceof Error&&"code"in t&&t.code==="ENOENT")return!1;throw t}}async function kR(e){if(!await ya(e))return null;let s=await(0,tt.readFile)(e,"utf-8");try{return JSON.parse(s)}catch(i){let r=i instanceof SyntaxError?i.message:String(i);throw new Error(`\u914D\u7F6E\u6587\u4EF6 JSON \u65E0\u6548 ${e}\uFF1A${r}`,{cause:i})}}function sf(e){return e==="opencode-cli"?Ti:e}function IR(e){if(!e)return;let t={};for(let[s,i]of Object.entries(e)){let r=sf(s);typeof r=="string"&&(t[r]={...t[r],...i})}return t}function _R(e){return{...e,...sf(e.executor)!==void 0&&{executor:sf(e.executor)},executors:IR(e.executors)}}function $R(e,t){let s=_R(t);return{...e,...s.extends!==void 0&&{extends:s.extends},...s.excludePatterns!==void 0&&{excludePatterns:s.excludePatterns},...s.concurrency!==void 0&&{concurrency:s.concurrency},...s.executor!==void 0&&{executor:s.executor},llm:s.llm?{...e.llm,...s.llm}:e.llm,executors:s.executors?TR(e.executors,s.executors):e.executors,agents:s.agents?tf(e.agents,s.agents):e.agents,rules:s.rules?tf(e.rules,s.rules):e.rules,skills:s.skills?tf(e.skills,s.skills):e.skills,workflows:s.workflows??e.workflows,reporting:s.reporting?{...e.reporting,...s.reporting}:e.reporting,qualityScore:s.qualityScore?{...e.qualityScore,...s.qualityScore,weights:{...e.qualityScore.weights,...s.qualityScore.weights},categoryWeights:{...e.qualityScore.categoryWeights,...s.qualityScore.categoryWeights}}:e.qualityScore,output:s.output?{...e.output,...s.output}:e.output}}async function le(e){let t=Ne.CONFIG;return pt(t,async()=>{let s=ln(),i=await kR(un());return i&&(s=rf.parse($R(s,i))),s})}async function wa(e){try{await(0,tt.mkdir)(Da(),{recursive:!0}),await(0,tt.writeFile)(un(),JSON.stringify(rf.parse(e),null,2)),OD()}catch(t){throw new Error(`\u4FDD\u5B58\u5168\u5C40\u914D\u7F6E\u5931\u8D25\uFF1A${t}`)}}function TR(e,t){let s={...e};for(let[i,r]of Object.entries(t))s[i]={...s[i],...r,review:r.review?{...s[i]?.review,...r.review}:s[i]?.review,validation:r.validation?{...s[i]?.validation,...r.validation}:s[i]?.validation};return s}function tf(e,t){let s={...e};for(let[i,r]of Object.entries(t))s[i]={...s[i],...r};return s}function cn(){return un()}function nf(e){return(0,an.join)(e,RR)}async function of(){return ya(un())}async function BD(e){return ya(nf(e))}function OD(){CD(Ne.CONFIG),ma(Ne.INSTRUCTIONS)}async function ba(){return pt(Ne.INSTRUCTIONS,async()=>{try{let e=AR();return await ya(e)?await(0,tt.readFile)(e,"utf-8"):""}catch{return""}})}async function LD(e,t,s){let i=un(),r={};try{let o=await(0,tt.readFile)(i,"utf-8");r=JSON.parse(o)}catch{}let n=Array.isArray(r.extends)?r.extends.filter(o=>typeof o=="string"):[];r.extends=n,n.includes(e)||n.push(e),await(0,tt.mkdir)(Da(),{recursive:!0}),await(0,tt.writeFile)(i,JSON.stringify(r,null,2)),OD()}var an,PD,tt,$D,DR,TD,yR,wR,bR,vR,ER,FR,CR,xR,SR,rf,RR,Ge=re(()=>{"use strict";Zs();an=require("path"),PD=require("os"),tt=require("node:fs/promises");$i();je();$D=b.object({model:b.string().optional()}).strict(),DR=b.object({review:b.array($D).optional(),validation:b.array($D).optional()}),TD=b.object({model:b.string().optional(),timeout:b.number().positive().optional(),concurrency:b.number().min(1).max(10).optional(),batchSize:b.number().min(1).max(50).optional(),readinessPing:b.boolean().optional()}).strict(),yR=b.object({review:TD.optional(),validation:TD.optional()}).strict(),wR=b.object({platform:b.enum(["deepseek","openai"]).optional(),baseUrl:b.string().min(1).optional(),apiKey:b.string().optional(),model:b.string().min(1).optional()}).strict().default({}),bR=b.object({enabled:b.boolean().optional(),url:b.string().url().optional(),token:b.string().optional(),localDir:b.string().default(".best-review/reports"),includeDiffs:b.boolean().default(!1),failOnError:b.boolean().default(!1)}).default({}),vR=b.object({critical:b.number().nonnegative().default(40),high:b.number().nonnegative().default(15),medium:b.number().nonnegative().default(6),low:b.number().nonnegative().default(2)}).strict().default({}),ER=b.object({security:b.number().positive().default(1.2),bug:b.number().positive().default(1),performance:b.number().positive().default(.8),quality:b.number().positive().default(.7),style:b.number().positive().default(.4),docs:b.number().positive().default(.3)}).strict().default({}),FR=b.object({base:b.number().positive().default(100),min:b.number().min(0).default(0),weights:vR,categoryWeights:ER}).superRefine((e,t)=>{e.min>e.base&&t.addIssue({code:b.ZodIssueCode.custom,path:["min"],message:"qualityScore.min \u4E0D\u80FD\u5927\u4E8E qualityScore.base"})}).default({}),CR=b.object({enabled:b.boolean().optional(),model:b.string().optional(),timeout:b.number().positive().optional()}),xR=b.object({enabled:b.boolean().optional(),agent:b.string().optional()}),SR=b.object({enabled:b.boolean().optional()}).strict(),rf=b.object({extends:b.array(b.string()).default([]),excludePatterns:b.array(b.string()).default(["*.min.js","*.min.css","*.map","*.d.ts","dist/**","docs/**","*.md","build/**","out/**",".next/**","coverage/**","node_modules/**","vendor/**","*.generated.*","*.bundle.js"]),concurrency:b.number().min(1).max(10).default(2),executor:b.string().default(()=>_D()),llm:wR,executors:b.record(b.string(),yR).default({}),agents:b.record(b.string(),CR).default({}),rules:b.record(b.string(),xR).default({}),skills:b.record(b.string(),SR).default({}),workflows:DR.optional(),reporting:bR,qualityScore:FR,output:b.object({colorize:b.boolean().default(!0),verbose:b.boolean().default(!1),format:b.enum(["terminal","markdown","json"]).default("terminal")}).default({})}).superRefine((e,t)=>{let s=[xe,be];s.includes(e.executor)||t.addIssue({code:b.ZodIssueCode.custom,path:["executor"],message:`\u53EA\u652F\u6301\u6A21\u578B API executor\uFF1A${s.join(", ")}\u3002`});for(let i of Object.keys(e.executors))s.includes(i)||t.addIssue({code:b.ZodIssueCode.custom,path:["executors",i],message:`\u4E0D\u652F\u6301\u7684 executor\uFF1A${i}\u3002\u53EF\u7528\uFF1A${s.join(", ")}\u3002`})});RR=".best-review.json"});var hy={};er(hy,{expandBraces:()=>hf,loadRuleFromRef:()=>ff,loadRuleMarkdown:()=>ok,loadRuleRefs:()=>At,loadRules:()=>lk,loadRulesFromDirectoryRecursive:()=>ak,loadRulesFromRefs:()=>cy,matchAndLoadRules:()=>df,matchPattern:()=>ys,matchRuleRefs:()=>dy,matchRules:()=>ck,parseRuleMarkdown:()=>ly,parseSingleRule:()=>uk});function cf(e,t){let s=e.name,i=e.agent,r=e.patterns,n=t.trim(),o=typeof e.version=="string"||typeof e.version=="number"?String(e.version):void 0;return typeof s!="string"||typeof i!="string"||!Array.isArray(r)||r.length===0||!n?null:{name:s,description:typeof e.description=="string"?e.description:"",patterns:r.filter(u=>typeof u=="string"),agent:i,prompt:n,...o&&{version:o}}}function ly(e){return oa(e,cf)}async function ok(e){try{return await en(e,cf)}catch(t){return h.error(`Error loading rule markdown from ${e}:`,t),[]}}async function ak(e){return rD(e,cf)}function uk(e){let t=ly(e);return t.length>0?t[0]??null:null}async function At(e){let t=e||process.cwd(),s=await le(t);return(s.extends.length>0?await lD(t,s.extends):await aD(t)).map(r=>{let n=s.rules[r.name]||{};return{...r,agent:n.agent??r.agent,_enabled:n.enabled??!0}}).filter(r=>r._enabled!==!1).map(({_enabled:r,...n})=>n)}async function ff(e){try{let t=await(0,uy.readFile)(e.path,"utf-8"),{body:s}=Ps(t);return{name:e.name,description:e.description,patterns:e.patterns,agent:e.agent,prompt:s.trim(),...e.version&&{version:e.version},source:e.source,path:e.path}}catch(t){return h.error(`\u52A0\u8F7D\u89C4\u5219\u5931\u8D25 ${e.path}\uFF1A`,t),null}}async function cy(e){return(await Promise.all(e.map(ff))).filter(s=>s!==null)}async function lk(e){let t=await At(e);return cy(t)}function fy(e,t,s){let i=new Map(s.map(n=>[n.name,n])),r=[];for(let n of e){let o=i.get(n.agent);if(!o){h.warn(`\u89C4\u5219\u5F15\u7528\u4E86\u4E0D\u5B58\u5728\u7684 Agent\uFF1A"${n.agent}"`);continue}let a=t.filter(u=>n.patterns.some(l=>ys(u.file,l))).map(u=>u.file);a.length!==0&&r.push({item:n,files:a,agent:o})}return r}function dy(e,t,s){return fy(e,t,s).map(({item:i,...r})=>({ref:i,...r}))}async function df(e,t,s){let i=dy(e,t,s);return(await Promise.all(i.map(async({ref:n,files:o,agent:a})=>{let u=await ff(n);return u?{rule:u,files:o,agent:a}:null}))).filter(n=>n!==null)}function ck(e,t,s){return fy(e,t,s).map(({item:i,...r})=>({rule:i,...r}))}function hf(e){let t=e.match(fk);if(!t||t.index===void 0||!t[1])return[e];let s=t[1].split(",").map(o=>o.trim()),i=e.substring(0,t.index),r=e.substring(t.index+t[0].length),n=[];for(let o of s){let a=i+o+r;n.push(...hf(a))}return n}function ys(e,t){return hf(t).some(i=>dk(e,i))}function dk(e,t){let s=t.replace(/\*\*/g,"\0DOUBLESTAR\0").replace(/\*/g,"\0STAR\0").replace(/\?/g,"\0QUESTION\0");s=s.replace(/[.+^${}()|[\]\\]/g,"\\$&"),s=s.replace(/\x00DOUBLESTAR\x00\//g,"(?:.*\\/)?").replace(/\x00DOUBLESTAR\x00/g,".*").replace(/\x00STAR\x00/g,"[^/]*").replace(/\x00QUESTION\x00/g,".");let i=ay.get(s);return i||(i=new RegExp(`^${s}$`),ay.set(s,i)),i.test(e)}var uy,fk,ay,ws=re(()=>{"use strict";Fi();uy=require("node:fs/promises");M();Ge();fk=/\{([^}]+)\}/;ay=new Map});var Ee={silent:Number.NEGATIVE_INFINITY,fatal:0,error:0,warn:1,log:2,info:3,success:3,fail:3,ready:3,start:3,box:3,debug:4,trace:5,verbose:Number.POSITIVE_INFINITY},ou={silent:{level:-1},fatal:{level:Ee.fatal},error:{level:Ee.error},warn:{level:Ee.warn},log:{level:Ee.log},info:{level:Ee.info},success:{level:Ee.success},fail:{level:Ee.fail},ready:{level:Ee.info},start:{level:Ee.info},box:{level:Ee.info},debug:{level:Ee.debug},trace:{level:Ee.trace},verbose:{level:Ee.verbose}};function iu(e){if(e===null||typeof e!="object")return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function au(e,t,s=".",i){if(!iu(t))return au(e,{},s,i);let r=Object.assign({},t);for(let n in e){if(n==="__proto__"||n==="constructor")continue;let o=e[n];o!=null&&(i&&i(r,n,o,s)||(Array.isArray(o)&&Array.isArray(r[n])?r[n]=[...o,...r[n]]:iu(o)&&iu(r[n])?r[n]=au(o,r[n],(s?`${s}.`:"")+n.toString(),i):r[n]=o))}return r}function jb(e){return(...t)=>t.reduce((s,i)=>au(s,i,"",e),{})}var qb=jb();function Ub(e){return Object.prototype.toString.call(e)==="[object Object]"}function Vb(e){return!(!Ub(e)||!e.message&&!e.args||e.stack)}var ru=!1,td=[],me=class e{options;_lastLog;_mockFn;constructor(t={}){let s=t.types||ou;this.options=qb({...t,defaults:{...t.defaults},level:nu(t.level,s),reporters:[...t.reporters||[]]},{types:ou,throttle:1e3,throttleMin:5,formatOptions:{date:!0,colors:!1,compact:!0}});for(let i in s){let r={type:i,...this.options.defaults,...s[i]};this[i]=this._wrapLogFn(r),this[i].raw=this._wrapLogFn(r,!0)}this.options.mockFn&&this.mockTypes(),this._lastLog={}}get level(){return this.options.level}set level(t){this.options.level=nu(t,this.options.types,this.options.level)}prompt(t,s){if(!this.options.prompt)throw new Error("prompt is not supported!");return this.options.prompt(t,s)}create(t){let s=new e({...this.options,...t});return this._mockFn&&s.mockTypes(this._mockFn),s}withDefaults(t){return this.create({...this.options,defaults:{...this.options.defaults,...t}})}withTag(t){return this.withDefaults({tag:this.options.defaults.tag?this.options.defaults.tag+":"+t:t})}addReporter(t){return this.options.reporters.push(t),this}removeReporter(t){if(t){let s=this.options.reporters.indexOf(t);if(s!==-1)return this.options.reporters.splice(s,1)}else this.options.reporters.splice(0);return this}setReporters(t){return this.options.reporters=Array.isArray(t)?t:[t],this}wrapAll(){this.wrapConsole(),this.wrapStd()}restoreAll(){this.restoreConsole(),this.restoreStd()}wrapConsole(){for(let t in this.options.types)console["__"+t]||(console["__"+t]=console[t]),console[t]=this[t].raw}restoreConsole(){for(let t in this.options.types)console["__"+t]&&(console[t]=console["__"+t],delete console["__"+t])}wrapStd(){this._wrapStream(this.options.stdout,"log"),this._wrapStream(this.options.stderr,"log")}_wrapStream(t,s){t&&(t.__write||(t.__write=t.write),t.write=i=>{this[s].raw(String(i).trim())})}restoreStd(){this._restoreStream(this.options.stdout),this._restoreStream(this.options.stderr)}_restoreStream(t){t&&t.__write&&(t.write=t.__write,delete t.__write)}pauseLogs(){ru=!0}resumeLogs(){ru=!1;let t=td.splice(0);for(let s of t)s[0]._logFn(s[1],s[2])}mockTypes(t){let s=t||this.options.mockFn;if(this._mockFn=s,typeof s=="function")for(let i in this.options.types)this[i]=s(i,this.options.types[i])||this[i],this[i].raw=this[i]}_wrapLogFn(t,s){return(...i)=>{if(ru){td.push([this,t,i,s]);return}return this._logFn(t,i,s)}}_logFn(t,s,i){if((t.level||0)>this.level)return!1;let r={date:new Date,args:[],...t,level:nu(t.level,this.options.types)};!i&&s.length===1&&Vb(s[0])?Object.assign(r,s[0]):r.args=[...s],r.message&&(r.args.unshift(r.message),delete r.message),r.additional&&(Array.isArray(r.additional)||(r.additional=r.additional.split(`
|
|
194
194
|
`)),r.args.push(`
|
|
195
195
|
`+r.additional.join(`
|
|
196
196
|
`)),delete r.additional),r.type=typeof r.type=="string"?r.type.toLowerCase():"log",r.tag=typeof r.tag=="string"?r.tag:"";let n=(a=!1)=>{let u=(this._lastLog.count||0)-this.options.throttleMin;if(this._lastLog.object&&u>0){let l=[...this._lastLog.object.args];u>1&&l.push(`(repeated ${u} times)`),this._log({...this._lastLog.object,args:l}),this._lastLog.count=1}a&&(this._lastLog.object=r,this._log(r))};clearTimeout(this._lastLog.timeout);let o=this._lastLog.time&&r.date?r.date.getTime()-this._lastLog.time.getTime():0;if(this._lastLog.time=r.date,o<this.options.throttle)try{let a=JSON.stringify([r.type,r.tag,r.args]),u=this._lastLog.serialized===a;if(this._lastLog.serialized=a,u&&(this._lastLog.count=(this._lastLog.count||0)+1,this._lastLog.count>this.options.throttleMin)){this._lastLog.timeout=setTimeout(n,this.options.throttle);return}}catch{}n(!0)}_log(t){for(let s of this.options.reporters)s.log(t,{options:this.options})}};function nu(e,t={},s=3){return e===void 0?s:typeof e=="number"?e:t[e]&&t[e].level!==void 0?t[e].level:s}me.prototype.add=me.prototype.addReporter;me.prototype.remove=me.prototype.removeReporter;me.prototype.clear=me.prototype.removeReporter;me.prototype.withScope=me.prototype.withTag;me.prototype.mock=me.prototype.mockTypes;me.prototype.pause=me.prototype.pauseLogs;me.prototype.resume=me.prototype.resumeLogs;function sd(e={}){return new me(e)}var lu=require("node:util"),id=require("node:path");function cu(e,t){let s=process.cwd()+id.sep;return e.split(`
|
|
@@ -206,7 +206,7 @@ ${r}`)}formatError(t,s){let i=t.message??(0,lu.formatWithOptions)(s,t),r=t.stack
|
|
|
206
206
|
`:this.filterAndJoin([uu(t.type),uu(t.tag),i])}log(t,s){let i=this.formatLogObj(t,{columns:s.options.stdout.columns||0,...s.options.formatOptions});return Gb(i+`
|
|
207
207
|
`,t.level<2?s.options.stderr||process.stderr:s.options.stdout||process.stdout)}};var Cu=gt(require("node:process"),1);var An=gt(require("node:tty"),1),{env:Kt={},argv:od=[],platform:Wb=""}=typeof process>"u"?{}:process,Kb="NO_COLOR"in Kt||od.includes("--no-color"),zb="FORCE_COLOR"in Kt||od.includes("--color"),Hb=Wb==="win32",ad=Kt.TERM==="dumb",Jb=An&&An.isatty&&An.isatty(1)&&Kt.TERM&&!ad,Yb="CI"in Kt&&("GITHUB_ACTIONS"in Kt||"GITLAB_CI"in Kt||"CIRCLECI"in Kt),Zb=!Kb&&(zb||Hb&&!ad||Jb||Yb);function ud(e,t,s,i,r=t.slice(0,Math.max(0,e))+i,n=t.slice(Math.max(0,e+s.length)),o=n.indexOf(s)){return r+(o<0?n:ud(o,n,s,i))}function Xb(e,t,s,i,r){return e<0?s+t+i:s+ud(e,t,i,r)+i}function Qb(e,t,s=e,i=e.length+1){return r=>r||!(r===""||r===void 0)?Xb((""+r).indexOf(t,i),r,e,t,s):""}function U(e,t,s){return Qb(`\x1B[${e}m`,`\x1B[${t}m`,s)}var rd={reset:U(0,0),bold:U(1,22,"\x1B[22m\x1B[1m"),dim:U(2,22,"\x1B[22m\x1B[2m"),italic:U(3,23),underline:U(4,24),inverse:U(7,27),hidden:U(8,28),strikethrough:U(9,29),black:U(30,39),red:U(31,39),green:U(32,39),yellow:U(33,39),blue:U(34,39),magenta:U(35,39),cyan:U(36,39),white:U(37,39),gray:U(90,39),bgBlack:U(40,49),bgRed:U(41,49),bgGreen:U(42,49),bgYellow:U(43,49),bgBlue:U(44,49),bgMagenta:U(45,49),bgCyan:U(46,49),bgWhite:U(47,49),blackBright:U(90,39),redBright:U(91,39),greenBright:U(92,39),yellowBright:U(93,39),blueBright:U(94,39),magentaBright:U(95,39),cyanBright:U(96,39),whiteBright:U(97,39),bgBlackBright:U(100,49),bgRedBright:U(101,49),bgGreenBright:U(102,49),bgYellowBright:U(103,49),bgBlueBright:U(104,49),bgMagentaBright:U(105,49),bgCyanBright:U(106,49),bgWhiteBright:U(107,49)};function ev(e=Zb){return e?rd:Object.fromEntries(Object.keys(rd).map(t=>[t,String]))}var ee=ev();function ld(e,t="reset"){return ee[e]||ee[t]}var tv=[String.raw`[\u001B\u009B][[\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\d\/#&.:=?%@~_]+)*|[a-zA-Z\d]+(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?\u0007)`,String.raw`(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-nq-uy=><~]))`].join("|");function It(e){return e.replace(new RegExp(tv,"g"),"")}var nd={solid:{tl:"\u250C",tr:"\u2510",bl:"\u2514",br:"\u2518",h:"\u2500",v:"\u2502"},double:{tl:"\u2554",tr:"\u2557",bl:"\u255A",br:"\u255D",h:"\u2550",v:"\u2551"},doubleSingle:{tl:"\u2553",tr:"\u2556",bl:"\u2559",br:"\u255C",h:"\u2500",v:"\u2551"},doubleSingleRounded:{tl:"\u256D",tr:"\u256E",bl:"\u2570",br:"\u256F",h:"\u2500",v:"\u2551"},singleThick:{tl:"\u250F",tr:"\u2513",bl:"\u2517",br:"\u251B",h:"\u2501",v:"\u2503"},singleDouble:{tl:"\u2552",tr:"\u2555",bl:"\u2558",br:"\u255B",h:"\u2550",v:"\u2502"},singleDoubleRounded:{tl:"\u256D",tr:"\u256E",bl:"\u2570",br:"\u256F",h:"\u2550",v:"\u2502"},rounded:{tl:"\u256D",tr:"\u256E",bl:"\u2570",br:"\u256F",h:"\u2500",v:"\u2502"}},sv={borderColor:"white",borderStyle:"rounded",valign:"center",padding:2,marginLeft:1,marginTop:1,marginBottom:1};function fu(e,t={}){let s={...t,style:{...sv,...t.style}},i=e.split(`
|
|
208
208
|
`),r=[],n=ld(s.style.borderColor),o={...typeof s.style.borderStyle=="string"?nd[s.style.borderStyle]||nd.solid:s.style.borderStyle};if(n)for(let p in o)o[p]=n(o[p]);let a=s.style.padding%2===0?s.style.padding:s.style.padding+1,u=i.length+a,l=Math.max(...i.map(p=>It(p).length),s.title?It(s.title).length:0)+a,c=l+a,f=s.style.marginLeft>0?" ".repeat(s.style.marginLeft):"";if(s.style.marginTop>0&&r.push("".repeat(s.style.marginTop)),s.title){let p=n?n(s.title):s.title,m=o.h.repeat(Math.floor((l-It(s.title).length)/2)),g=o.h.repeat(l-It(s.title).length-It(m).length+a);r.push(`${f}${o.tl}${m}${p}${g}${o.tr}`)}else r.push(`${f}${o.tl}${o.h.repeat(c)}${o.tr}`);let d=s.style.valign==="center"?Math.floor((u-i.length)/2):s.style.valign==="top"?u-i.length-a:u-i.length;for(let p=0;p<u;p++)if(p<d||p>=d+i.length)r.push(`${f}${o.v}${" ".repeat(c)}${o.v}`);else{let m=i[p-d],g=" ".repeat(a),D=" ".repeat(l-It(m).length);r.push(`${f}${o.v}${g}${m}${D}${o.v}`)}return r.push(`${f}${o.bl}${o.h.repeat(c)}${o.br}`),s.style.marginBottom>0&&r.push("".repeat(s.style.marginBottom)),r.join(`
|
|
209
|
-
`)}var hT=require("node:util"),pT=require("node:path"),mT=require("node:tty"),AE={},Pn=Object.create(null),ir=e=>globalThis.process?.env||AE.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?Pn:globalThis),zt=new Proxy(Pn,{get(e,t){return ir()[t]??Pn[t]},has(e,t){let s=ir();return t in s||t in Pn},set(e,t,s){let i=ir(!0);return i[t]=s,!0},deleteProperty(e,t){if(!t)return!1;let s=ir(!0);return delete s[t],!0},ownKeys(){let e=ir(!0);return Object.keys(e)}}),Vv=typeof process<"u"&&process.env&&process.env.NODE_ENV||"",Gv=[["APPVEYOR"],["AWS_AMPLIFY","AWS_APP_ID",{ci:!0}],["AZURE_PIPELINES","SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"],["AZURE_STATIC","INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN"],["APPCIRCLE","AC_APPCIRCLE"],["BAMBOO","bamboo_planKey"],["BITBUCKET","BITBUCKET_COMMIT"],["BITRISE","BITRISE_IO"],["BUDDY","BUDDY_WORKSPACE_ID"],["BUILDKITE"],["CIRCLE","CIRCLECI"],["CIRRUS","CIRRUS_CI"],["CLOUDFLARE_PAGES","CF_PAGES",{ci:!0}],["CODEBUILD","CODEBUILD_BUILD_ARN"],["CODEFRESH","CF_BUILD_ID"],["DRONE"],["DRONE","DRONE_BUILD_EVENT"],["DSARI"],["GITHUB_ACTIONS"],["GITLAB","GITLAB_CI"],["GITLAB","CI_MERGE_REQUEST_ID"],["GOCD","GO_PIPELINE_LABEL"],["LAYERCI"],["HUDSON","HUDSON_URL"],["JENKINS","JENKINS_URL"],["MAGNUM"],["NETLIFY"],["NETLIFY","NETLIFY_LOCAL",{ci:!1}],["NEVERCODE"],["RENDER"],["SAIL","SAILCI"],["SEMAPHORE"],["SCREWDRIVER"],["SHIPPABLE"],["SOLANO","TDDIUM"],["STRIDER"],["TEAMCITY","TEAMCITY_VERSION"],["TRAVIS"],["VERCEL","NOW_BUILDER"],["VERCEL","VERCEL",{ci:!1}],["VERCEL","VERCEL_ENV",{ci:!1}],["APPCENTER","APPCENTER_BUILD_ID"],["CODESANDBOX","CODESANDBOX_SSE",{ci:!1}],["CODESANDBOX","CODESANDBOX_HOST",{ci:!1}],["STACKBLITZ"],["STORMKIT"],["CLEAVR"],["ZEABUR"],["CODESPHERE","CODESPHERE_APP_ID",{ci:!0}],["RAILWAY","RAILWAY_PROJECT_ID"],["RAILWAY","RAILWAY_SERVICE_ID"],["DENO-DEPLOY","DENO_DEPLOYMENT_ID"],["FIREBASE_APP_HOSTING","FIREBASE_APP_HOSTING",{ci:!0}]];function Wv(){if(globalThis.process?.env)for(let e of Gv){let t=e[1]||e[0];if(globalThis.process?.env[t])return{name:e[0].toLowerCase(),...e[2]}}return globalThis.process?.env?.SHELL==="/bin/jsh"&&globalThis.process?.versions?.webcontainer?{name:"stackblitz",ci:!1}:{name:"",ci:!1}}var Od=Wv();Od.name;function Fs(e){return e?e!=="false":!1}var Kv=globalThis.process?.platform||"",Su=Fs(zt.CI)||Od.ci!==!1,Ld=Fs(globalThis.process?.stdout&&globalThis.process?.stdout.isTTY),zv=Fs(zt.DEBUG),Au=Vv==="test"||Fs(zt.TEST);Fs(zt.MINIMAL);var Hv=/^win/i.test(Kv);!Fs(zt.NO_COLOR)&&(Fs(zt.FORCE_COLOR)||(Ld||Hv)&&zt.TERM);var Jv=(globalThis.process?.versions?.node||"").replace(/^v/,"")||null;Number(Jv?.split(".")[0]);var Yv=globalThis.process||Object.create(null),Td={versions:{}};new Proxy(Yv,{get(e,t){if(t==="env")return zt;if(t in e)return e[t];if(t in Td)return Td[t]}});var Zv=globalThis.process?.release?.name==="node",Xv=!!globalThis.Bun||!!globalThis.process?.versions?.bun,Qv=!!globalThis.Deno,eE=!!globalThis.fastly,tE=!!globalThis.Netlify,sE=!!globalThis.EdgeRuntime,iE=globalThis.navigator?.userAgent==="Cloudflare-Workers",rE=[[tE,"netlify"],[sE,"edge-light"],[iE,"workerd"],[eE,"fastly"],[Qv,"deno"],[Xv,"bun"],[Zv,"node"]];function nE(){let e=rE.find(t=>t[0]);if(e)return{name:e[1]}}var oE=nE();oE?.name;function aE({onlyFirst:e=!1}={}){let s=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(s,e?void 0:"g")}var uE=aE();function lE(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(uE,"")}function cE(e){return e===161||e===164||e===167||e===168||e===170||e===173||e===174||e>=176&&e<=180||e>=182&&e<=186||e>=188&&e<=191||e===198||e===208||e===215||e===216||e>=222&&e<=225||e===230||e>=232&&e<=234||e===236||e===237||e===240||e===242||e===243||e>=247&&e<=250||e===252||e===254||e===257||e===273||e===275||e===283||e===294||e===295||e===299||e>=305&&e<=307||e===312||e>=319&&e<=322||e===324||e>=328&&e<=331||e===333||e===338||e===339||e===358||e===359||e===363||e===462||e===464||e===466||e===468||e===470||e===472||e===474||e===476||e===593||e===609||e===708||e===711||e>=713&&e<=715||e===717||e===720||e>=728&&e<=731||e===733||e===735||e>=768&&e<=879||e>=913&&e<=929||e>=931&&e<=937||e>=945&&e<=961||e>=963&&e<=969||e===1025||e>=1040&&e<=1103||e===1105||e===8208||e>=8211&&e<=8214||e===8216||e===8217||e===8220||e===8221||e>=8224&&e<=8226||e>=8228&&e<=8231||e===8240||e===8242||e===8243||e===8245||e===8251||e===8254||e===8308||e===8319||e>=8321&&e<=8324||e===8364||e===8451||e===8453||e===8457||e===8467||e===8470||e===8481||e===8482||e===8486||e===8491||e===8531||e===8532||e>=8539&&e<=8542||e>=8544&&e<=8555||e>=8560&&e<=8569||e===8585||e>=8592&&e<=8601||e===8632||e===8633||e===8658||e===8660||e===8679||e===8704||e===8706||e===8707||e===8711||e===8712||e===8715||e===8719||e===8721||e===8725||e===8730||e>=8733&&e<=8736||e===8739||e===8741||e>=8743&&e<=8748||e===8750||e>=8756&&e<=8759||e===8764||e===8765||e===8776||e===8780||e===8786||e===8800||e===8801||e>=8804&&e<=8807||e===8810||e===8811||e===8814||e===8815||e===8834||e===8835||e===8838||e===8839||e===8853||e===8857||e===8869||e===8895||e===8978||e>=9312&&e<=9449||e>=9451&&e<=9547||e>=9552&&e<=9587||e>=9600&&e<=9615||e>=9618&&e<=9621||e===9632||e===9633||e>=9635&&e<=9641||e===9650||e===9651||e===9654||e===9655||e===9660||e===9661||e===9664||e===9665||e>=9670&&e<=9672||e===9675||e>=9678&&e<=9681||e>=9698&&e<=9701||e===9711||e===9733||e===9734||e===9737||e===9742||e===9743||e===9756||e===9758||e===9792||e===9794||e===9824||e===9825||e>=9827&&e<=9829||e>=9831&&e<=9834||e===9836||e===9837||e===9839||e===9886||e===9887||e===9919||e>=9926&&e<=9933||e>=9935&&e<=9939||e>=9941&&e<=9953||e===9955||e===9960||e===9961||e>=9963&&e<=9969||e===9972||e>=9974&&e<=9977||e===9979||e===9980||e===9982||e===9983||e===10045||e>=10102&&e<=10111||e>=11094&&e<=11097||e>=12872&&e<=12879||e>=57344&&e<=63743||e>=65024&&e<=65039||e===65533||e>=127232&&e<=127242||e>=127248&&e<=127277||e>=127280&&e<=127337||e>=127344&&e<=127373||e===127375||e===127376||e>=127387&&e<=127404||e>=917760&&e<=917999||e>=983040&&e<=1048573||e>=1048576&&e<=1114109}function fE(e){return e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510}function dE(e){return e>=4352&&e<=4447||e===8986||e===8987||e===9001||e===9002||e>=9193&&e<=9196||e===9200||e===9203||e===9725||e===9726||e===9748||e===9749||e>=9776&&e<=9783||e>=9800&&e<=9811||e===9855||e>=9866&&e<=9871||e===9875||e===9889||e===9898||e===9899||e===9917||e===9918||e===9924||e===9925||e===9934||e===9940||e===9962||e===9970||e===9971||e===9973||e===9978||e===9981||e===9989||e===9994||e===9995||e===10024||e===10060||e===10062||e>=10067&&e<=10069||e===10071||e>=10133&&e<=10135||e===10160||e===10175||e===11035||e===11036||e===11088||e===11093||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12773||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=94176&&e<=94180||e===94192||e===94193||e>=94208&&e<=100343||e>=100352&&e<=101589||e>=101631&&e<=101640||e>=110576&&e<=110579||e>=110581&&e<=110587||e===110589||e===110590||e>=110592&&e<=110882||e===110898||e>=110928&&e<=110930||e===110933||e>=110948&&e<=110951||e>=110960&&e<=111355||e>=119552&&e<=119638||e>=119648&&e<=119670||e===126980||e===127183||e===127374||e>=127377&&e<=127386||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e===127568||e===127569||e>=127584&&e<=127589||e>=127744&&e<=127776||e>=127789&&e<=127797||e>=127799&&e<=127868||e>=127870&&e<=127891||e>=127904&&e<=127946||e>=127951&&e<=127955||e>=127968&&e<=127984||e===127988||e>=127992&&e<=128062||e===128064||e>=128066&&e<=128252||e>=128255&&e<=128317||e>=128331&&e<=128334||e>=128336&&e<=128359||e===128378||e===128405||e===128406||e===128420||e>=128507&&e<=128591||e>=128640&&e<=128709||e===128716||e>=128720&&e<=128722||e>=128725&&e<=128727||e>=128732&&e<=128735||e===128747||e===128748||e>=128756&&e<=128764||e>=128992&&e<=129003||e===129008||e>=129292&&e<=129338||e>=129340&&e<=129349||e>=129351&&e<=129535||e>=129648&&e<=129660||e>=129664&&e<=129673||e>=129679&&e<=129734||e>=129742&&e<=129756||e>=129759&&e<=129769||e>=129776&&e<=129784||e>=131072&&e<=196605||e>=196608&&e<=262141}function hE(e){if(!Number.isSafeInteger(e))throw new TypeError(`Expected a code point, got \`${typeof e}\`.`)}function pE(e,{ambiguousAsWide:t=!1}={}){return hE(e),fE(e)||dE(e)||t&&cE(e)?2:1}var mE=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g,gE=globalThis.Intl?.Segmenter?new Intl.Segmenter:{segment:e=>e.split("")},DE=new RegExp("^\\p{Default_Ignorable_Code_Point}$","u");function yE(e,t={}){if(typeof e!="string"||e.length===0)return 0;let{ambiguousIsNarrow:s=!0,countAnsiEscapeCodes:i=!1}=t;if(i||(e=lE(e)),e.length===0)return 0;let r=0,n={ambiguousAsWide:!s};for(let{segment:o}of gE.segment(e)){let a=o.codePointAt(0);if(!(a<=31||a>=127&&a<=159)&&!(a>=8203&&a<=8207||a===65279)&&!(a>=768&&a<=879||a>=6832&&a<=6911||a>=7616&&a<=7679||a>=8400&&a<=8447||a>=65056&&a<=65071)&&!(a>=55296&&a<=57343)&&!(a>=65024&&a<=65039)&&!DE.test(o)){if(mE().test(o)){r+=2;continue}r+=pE(a,n)}}return r}function wE(){let{env:e}=Cu.default,{TERM:t,TERM_PROGRAM:s}=e;return Cu.default.platform!=="win32"?t!=="linux":!!e.WT_SESSION||!!e.TERMINUS_SUBLIME||e.ConEmuTask==="{cmd::Cmder}"||s==="Terminus-Sublime"||s==="vscode"||t==="xterm-256color"||t==="alacritty"||t==="rxvt-unicode"||t==="rxvt-unicode-256color"||e.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var bE={info:"cyan",fail:"red",success:"green",ready:"green",start:"magenta"},vE={0:"red",1:"yellow"},EE=wE(),Dt=(e,t)=>EE?e:t,Pd={error:Dt("\u2716","\xD7"),fatal:Dt("\u2716","\xD7"),ready:Dt("\u2714","\u221A"),warn:Dt("\u26A0","\u203C"),info:Dt("\u2139","i"),success:Dt("\u2714","\u221A"),debug:Dt("\u2699","D"),trace:Dt("\u2192","\u2192"),fail:Dt("\u2716","\xD7"),start:Dt("\u25D0","o"),log:""};function Bd(e){return!(typeof Intl=="object")||!Intl.Segmenter?It(e).length:yE(e)}var xu=class extends tr{formatStack(t,s,i){let r=" ".repeat((i?.errorLevel||0)+1);return`
|
|
209
|
+
`)}var pT=require("node:util"),mT=require("node:path"),gT=require("node:tty"),AE={},Pn=Object.create(null),ir=e=>globalThis.process?.env||AE.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?Pn:globalThis),zt=new Proxy(Pn,{get(e,t){return ir()[t]??Pn[t]},has(e,t){let s=ir();return t in s||t in Pn},set(e,t,s){let i=ir(!0);return i[t]=s,!0},deleteProperty(e,t){if(!t)return!1;let s=ir(!0);return delete s[t],!0},ownKeys(){let e=ir(!0);return Object.keys(e)}}),Vv=typeof process<"u"&&process.env&&process.env.NODE_ENV||"",Gv=[["APPVEYOR"],["AWS_AMPLIFY","AWS_APP_ID",{ci:!0}],["AZURE_PIPELINES","SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"],["AZURE_STATIC","INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN"],["APPCIRCLE","AC_APPCIRCLE"],["BAMBOO","bamboo_planKey"],["BITBUCKET","BITBUCKET_COMMIT"],["BITRISE","BITRISE_IO"],["BUDDY","BUDDY_WORKSPACE_ID"],["BUILDKITE"],["CIRCLE","CIRCLECI"],["CIRRUS","CIRRUS_CI"],["CLOUDFLARE_PAGES","CF_PAGES",{ci:!0}],["CODEBUILD","CODEBUILD_BUILD_ARN"],["CODEFRESH","CF_BUILD_ID"],["DRONE"],["DRONE","DRONE_BUILD_EVENT"],["DSARI"],["GITHUB_ACTIONS"],["GITLAB","GITLAB_CI"],["GITLAB","CI_MERGE_REQUEST_ID"],["GOCD","GO_PIPELINE_LABEL"],["LAYERCI"],["HUDSON","HUDSON_URL"],["JENKINS","JENKINS_URL"],["MAGNUM"],["NETLIFY"],["NETLIFY","NETLIFY_LOCAL",{ci:!1}],["NEVERCODE"],["RENDER"],["SAIL","SAILCI"],["SEMAPHORE"],["SCREWDRIVER"],["SHIPPABLE"],["SOLANO","TDDIUM"],["STRIDER"],["TEAMCITY","TEAMCITY_VERSION"],["TRAVIS"],["VERCEL","NOW_BUILDER"],["VERCEL","VERCEL",{ci:!1}],["VERCEL","VERCEL_ENV",{ci:!1}],["APPCENTER","APPCENTER_BUILD_ID"],["CODESANDBOX","CODESANDBOX_SSE",{ci:!1}],["CODESANDBOX","CODESANDBOX_HOST",{ci:!1}],["STACKBLITZ"],["STORMKIT"],["CLEAVR"],["ZEABUR"],["CODESPHERE","CODESPHERE_APP_ID",{ci:!0}],["RAILWAY","RAILWAY_PROJECT_ID"],["RAILWAY","RAILWAY_SERVICE_ID"],["DENO-DEPLOY","DENO_DEPLOYMENT_ID"],["FIREBASE_APP_HOSTING","FIREBASE_APP_HOSTING",{ci:!0}]];function Wv(){if(globalThis.process?.env)for(let e of Gv){let t=e[1]||e[0];if(globalThis.process?.env[t])return{name:e[0].toLowerCase(),...e[2]}}return globalThis.process?.env?.SHELL==="/bin/jsh"&&globalThis.process?.versions?.webcontainer?{name:"stackblitz",ci:!1}:{name:"",ci:!1}}var Od=Wv();Od.name;function Fs(e){return e?e!=="false":!1}var Kv=globalThis.process?.platform||"",Su=Fs(zt.CI)||Od.ci!==!1,Ld=Fs(globalThis.process?.stdout&&globalThis.process?.stdout.isTTY),zv=Fs(zt.DEBUG),Au=Vv==="test"||Fs(zt.TEST);Fs(zt.MINIMAL);var Hv=/^win/i.test(Kv);!Fs(zt.NO_COLOR)&&(Fs(zt.FORCE_COLOR)||(Ld||Hv)&&zt.TERM);var Jv=(globalThis.process?.versions?.node||"").replace(/^v/,"")||null;Number(Jv?.split(".")[0]);var Yv=globalThis.process||Object.create(null),Td={versions:{}};new Proxy(Yv,{get(e,t){if(t==="env")return zt;if(t in e)return e[t];if(t in Td)return Td[t]}});var Zv=globalThis.process?.release?.name==="node",Xv=!!globalThis.Bun||!!globalThis.process?.versions?.bun,Qv=!!globalThis.Deno,eE=!!globalThis.fastly,tE=!!globalThis.Netlify,sE=!!globalThis.EdgeRuntime,iE=globalThis.navigator?.userAgent==="Cloudflare-Workers",rE=[[tE,"netlify"],[sE,"edge-light"],[iE,"workerd"],[eE,"fastly"],[Qv,"deno"],[Xv,"bun"],[Zv,"node"]];function nE(){let e=rE.find(t=>t[0]);if(e)return{name:e[1]}}var oE=nE();oE?.name;function aE({onlyFirst:e=!1}={}){let s=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(s,e?void 0:"g")}var uE=aE();function lE(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(uE,"")}function cE(e){return e===161||e===164||e===167||e===168||e===170||e===173||e===174||e>=176&&e<=180||e>=182&&e<=186||e>=188&&e<=191||e===198||e===208||e===215||e===216||e>=222&&e<=225||e===230||e>=232&&e<=234||e===236||e===237||e===240||e===242||e===243||e>=247&&e<=250||e===252||e===254||e===257||e===273||e===275||e===283||e===294||e===295||e===299||e>=305&&e<=307||e===312||e>=319&&e<=322||e===324||e>=328&&e<=331||e===333||e===338||e===339||e===358||e===359||e===363||e===462||e===464||e===466||e===468||e===470||e===472||e===474||e===476||e===593||e===609||e===708||e===711||e>=713&&e<=715||e===717||e===720||e>=728&&e<=731||e===733||e===735||e>=768&&e<=879||e>=913&&e<=929||e>=931&&e<=937||e>=945&&e<=961||e>=963&&e<=969||e===1025||e>=1040&&e<=1103||e===1105||e===8208||e>=8211&&e<=8214||e===8216||e===8217||e===8220||e===8221||e>=8224&&e<=8226||e>=8228&&e<=8231||e===8240||e===8242||e===8243||e===8245||e===8251||e===8254||e===8308||e===8319||e>=8321&&e<=8324||e===8364||e===8451||e===8453||e===8457||e===8467||e===8470||e===8481||e===8482||e===8486||e===8491||e===8531||e===8532||e>=8539&&e<=8542||e>=8544&&e<=8555||e>=8560&&e<=8569||e===8585||e>=8592&&e<=8601||e===8632||e===8633||e===8658||e===8660||e===8679||e===8704||e===8706||e===8707||e===8711||e===8712||e===8715||e===8719||e===8721||e===8725||e===8730||e>=8733&&e<=8736||e===8739||e===8741||e>=8743&&e<=8748||e===8750||e>=8756&&e<=8759||e===8764||e===8765||e===8776||e===8780||e===8786||e===8800||e===8801||e>=8804&&e<=8807||e===8810||e===8811||e===8814||e===8815||e===8834||e===8835||e===8838||e===8839||e===8853||e===8857||e===8869||e===8895||e===8978||e>=9312&&e<=9449||e>=9451&&e<=9547||e>=9552&&e<=9587||e>=9600&&e<=9615||e>=9618&&e<=9621||e===9632||e===9633||e>=9635&&e<=9641||e===9650||e===9651||e===9654||e===9655||e===9660||e===9661||e===9664||e===9665||e>=9670&&e<=9672||e===9675||e>=9678&&e<=9681||e>=9698&&e<=9701||e===9711||e===9733||e===9734||e===9737||e===9742||e===9743||e===9756||e===9758||e===9792||e===9794||e===9824||e===9825||e>=9827&&e<=9829||e>=9831&&e<=9834||e===9836||e===9837||e===9839||e===9886||e===9887||e===9919||e>=9926&&e<=9933||e>=9935&&e<=9939||e>=9941&&e<=9953||e===9955||e===9960||e===9961||e>=9963&&e<=9969||e===9972||e>=9974&&e<=9977||e===9979||e===9980||e===9982||e===9983||e===10045||e>=10102&&e<=10111||e>=11094&&e<=11097||e>=12872&&e<=12879||e>=57344&&e<=63743||e>=65024&&e<=65039||e===65533||e>=127232&&e<=127242||e>=127248&&e<=127277||e>=127280&&e<=127337||e>=127344&&e<=127373||e===127375||e===127376||e>=127387&&e<=127404||e>=917760&&e<=917999||e>=983040&&e<=1048573||e>=1048576&&e<=1114109}function fE(e){return e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510}function dE(e){return e>=4352&&e<=4447||e===8986||e===8987||e===9001||e===9002||e>=9193&&e<=9196||e===9200||e===9203||e===9725||e===9726||e===9748||e===9749||e>=9776&&e<=9783||e>=9800&&e<=9811||e===9855||e>=9866&&e<=9871||e===9875||e===9889||e===9898||e===9899||e===9917||e===9918||e===9924||e===9925||e===9934||e===9940||e===9962||e===9970||e===9971||e===9973||e===9978||e===9981||e===9989||e===9994||e===9995||e===10024||e===10060||e===10062||e>=10067&&e<=10069||e===10071||e>=10133&&e<=10135||e===10160||e===10175||e===11035||e===11036||e===11088||e===11093||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12773||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=94176&&e<=94180||e===94192||e===94193||e>=94208&&e<=100343||e>=100352&&e<=101589||e>=101631&&e<=101640||e>=110576&&e<=110579||e>=110581&&e<=110587||e===110589||e===110590||e>=110592&&e<=110882||e===110898||e>=110928&&e<=110930||e===110933||e>=110948&&e<=110951||e>=110960&&e<=111355||e>=119552&&e<=119638||e>=119648&&e<=119670||e===126980||e===127183||e===127374||e>=127377&&e<=127386||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e===127568||e===127569||e>=127584&&e<=127589||e>=127744&&e<=127776||e>=127789&&e<=127797||e>=127799&&e<=127868||e>=127870&&e<=127891||e>=127904&&e<=127946||e>=127951&&e<=127955||e>=127968&&e<=127984||e===127988||e>=127992&&e<=128062||e===128064||e>=128066&&e<=128252||e>=128255&&e<=128317||e>=128331&&e<=128334||e>=128336&&e<=128359||e===128378||e===128405||e===128406||e===128420||e>=128507&&e<=128591||e>=128640&&e<=128709||e===128716||e>=128720&&e<=128722||e>=128725&&e<=128727||e>=128732&&e<=128735||e===128747||e===128748||e>=128756&&e<=128764||e>=128992&&e<=129003||e===129008||e>=129292&&e<=129338||e>=129340&&e<=129349||e>=129351&&e<=129535||e>=129648&&e<=129660||e>=129664&&e<=129673||e>=129679&&e<=129734||e>=129742&&e<=129756||e>=129759&&e<=129769||e>=129776&&e<=129784||e>=131072&&e<=196605||e>=196608&&e<=262141}function hE(e){if(!Number.isSafeInteger(e))throw new TypeError(`Expected a code point, got \`${typeof e}\`.`)}function pE(e,{ambiguousAsWide:t=!1}={}){return hE(e),fE(e)||dE(e)||t&&cE(e)?2:1}var mE=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g,gE=globalThis.Intl?.Segmenter?new Intl.Segmenter:{segment:e=>e.split("")},DE=new RegExp("^\\p{Default_Ignorable_Code_Point}$","u");function yE(e,t={}){if(typeof e!="string"||e.length===0)return 0;let{ambiguousIsNarrow:s=!0,countAnsiEscapeCodes:i=!1}=t;if(i||(e=lE(e)),e.length===0)return 0;let r=0,n={ambiguousAsWide:!s};for(let{segment:o}of gE.segment(e)){let a=o.codePointAt(0);if(!(a<=31||a>=127&&a<=159)&&!(a>=8203&&a<=8207||a===65279)&&!(a>=768&&a<=879||a>=6832&&a<=6911||a>=7616&&a<=7679||a>=8400&&a<=8447||a>=65056&&a<=65071)&&!(a>=55296&&a<=57343)&&!(a>=65024&&a<=65039)&&!DE.test(o)){if(mE().test(o)){r+=2;continue}r+=pE(a,n)}}return r}function wE(){let{env:e}=Cu.default,{TERM:t,TERM_PROGRAM:s}=e;return Cu.default.platform!=="win32"?t!=="linux":!!e.WT_SESSION||!!e.TERMINUS_SUBLIME||e.ConEmuTask==="{cmd::Cmder}"||s==="Terminus-Sublime"||s==="vscode"||t==="xterm-256color"||t==="alacritty"||t==="rxvt-unicode"||t==="rxvt-unicode-256color"||e.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var bE={info:"cyan",fail:"red",success:"green",ready:"green",start:"magenta"},vE={0:"red",1:"yellow"},EE=wE(),Dt=(e,t)=>EE?e:t,Pd={error:Dt("\u2716","\xD7"),fatal:Dt("\u2716","\xD7"),ready:Dt("\u2714","\u221A"),warn:Dt("\u26A0","\u203C"),info:Dt("\u2139","i"),success:Dt("\u2714","\u221A"),debug:Dt("\u2699","D"),trace:Dt("\u2192","\u2192"),fail:Dt("\u2716","\xD7"),start:Dt("\u25D0","o"),log:""};function Bd(e){return!(typeof Intl=="object")||!Intl.Segmenter?It(e).length:yE(e)}var xu=class extends tr{formatStack(t,s,i){let r=" ".repeat((i?.errorLevel||0)+1);return`
|
|
210
210
|
${r}`+cu(t,s).map(n=>" "+n.replace(/^at +/,o=>ee.gray(o)).replace(/\((.+)\)/,(o,a)=>`(${ee.cyan(a)})`)).join(`
|
|
211
211
|
${r}`)}formatType(t,s,i){let r=bE[t.type]||vE[t.level]||"gray";if(s)return CE(r)(ee.black(` ${t.type.toUpperCase()} `));let n=typeof Pd[t.type]=="string"?Pd[t.type]:t.icon||t.type;return n?FE(r)(n):""}formatLogObj(t,s){let[i,...r]=this.formatArgs(t.args,s).split(`
|
|
212
212
|
`);if(t.type==="box")return fu(Tn(i+(r.length>0?`
|
|
@@ -215,11 +215,11 @@ ${r}`)}formatType(t,s,i){let r=bE[t.type]||vE[t.level]||"gray";if(s)return CE(r)
|
|
|
215
215
|
`+r.join(`
|
|
216
216
|
`):""),t.type==="trace"){let m=new Error("Trace: "+t.message);c+=this.formatStack(m.stack||"",m.message)}return a?`
|
|
217
217
|
`+c+`
|
|
218
|
-
`:c}};function Tn(e){return e.replace(/`([^`]+)`/gm,(t,s)=>ee.cyan(s)).replace(/\s+_([^_]+)_\s+/gm,(t,s)=>` ${ee.underline(s)} `)}function FE(e="white"){return ee[e]||ee.white}function CE(e="bgWhite"){return ee[`bg${e[0].toUpperCase()}${e.slice(1)}`]||ee.bgWhite}function xE(e={}){let t=SE();return process.env.CONSOLA_LEVEL&&(t=Number.parseInt(process.env.CONSOLA_LEVEL)??t),sd({level:t,defaults:{level:t},stdout:process.stdout,stderr:process.stderr,prompt:(...i)=>Promise.resolve().then(()=>($d(),_d)).then(r=>r.prompt(...i)),reporters:e.reporters||[e.fancy??!(Su||Au)?new xu:new tr],...e})}function SE(){return zv?Ee.debug:Au?Ee.warn:Ee.info}var oi=xE();var
|
|
218
|
+
`:c}};function Tn(e){return e.replace(/`([^`]+)`/gm,(t,s)=>ee.cyan(s)).replace(/\s+_([^_]+)_\s+/gm,(t,s)=>` ${ee.underline(s)} `)}function FE(e="white"){return ee[e]||ee.white}function CE(e="bgWhite"){return ee[`bg${e[0].toUpperCase()}${e.slice(1)}`]||ee.bgWhite}function xE(e={}){let t=SE();return process.env.CONSOLA_LEVEL&&(t=Number.parseInt(process.env.CONSOLA_LEVEL)??t),sd({level:t,defaults:{level:t},stdout:process.stdout,stderr:process.stderr,prompt:(...i)=>Promise.resolve().then(()=>($d(),_d)).then(r=>r.prompt(...i)),reporters:e.reporters||[e.fancy??!(Su||Au)?new xu:new tr],...e})}function SE(){return zv?Ee.debug:Au?Ee.warn:Ee.info}var oi=xE();var xT=require("node:tty");function RE(e){return Array.isArray(e)?e:e===void 0?[]:[e]}function Ru(e,t=""){let s=[];for(let i of e)for(let[r,n]of i.entries())s[r]=Math.max(s[r]||0,n.length);return e.map(i=>i.map((r,n)=>t+r[n===0?"padStart":"padEnd"](s[n])).join(" ")).join(`
|
|
219
219
|
`)}function at(e){return typeof e=="function"?e():e}var Ht=class extends Error{constructor(t,s){super(t),this.code=s,this.name="CLIError"}},kE=/\d/,IE=["-","_","/","."];function _E(e=""){if(!kE.test(e))return e!==e.toLowerCase()}function Nd(e,t){let s=t??IE,i=[];if(!e||typeof e!="string")return i;let r="",n,o;for(let a of e){let u=s.includes(a);if(u===!0){i.push(r),r="",n=void 0;continue}let l=_E(a);if(o===!1){if(n===!1&&l===!0){i.push(r),r=a,n=l;continue}if(n===!0&&l===!1&&r.length>1){let c=r.at(-1);i.push(r.slice(0,Math.max(0,r.length-1))),r=c+a,n=l;continue}}r+=a,n=l,o=u}return i.push(r),i}function $E(e){return e?e[0].toUpperCase()+e.slice(1):""}function TE(e){return e?e[0].toLowerCase()+e.slice(1):""}function PE(e,t){return e?(Array.isArray(e)?e:Nd(e)).map(s=>$E(t?.normalize?s.toLowerCase():s)).join(""):""}function BE(e,t){return TE(PE(e||"",t))}function OE(e,t){return e?(Array.isArray(e)?e:Nd(e)).map(s=>s.toLowerCase()).join(t??"-"):""}function ku(e){return e==null?[]:Array.isArray(e)?e:[e]}function LE(e,t,s,i){let r,n=e[t],o=~i.string.indexOf(t)?s==null||s===!0?"":String(s):typeof s=="boolean"?s:~i.boolean.indexOf(t)?s==="false"?!1:s==="true"||(e._.push((r=+s,r*0===0?r:s)),!!s):(r=+s,r*0===0?r:s);e[t]=n==null?o:Array.isArray(n)?n.concat(o):[n,o]}function NE(e=[],t={}){let s,i,r,n,o,a={_:[]},u=0,l=0,c=0,f=e.length,d=t.alias!==void 0,p=t.unknown!==void 0,m=t.default!==void 0;if(t.alias=t.alias||{},t.string=ku(t.string),t.boolean=ku(t.boolean),d)for(s in t.alias)for(i=t.alias[s]=ku(t.alias[s]),u=0;u<i.length;u++)(t.alias[i[u]]=i.concat(s)).splice(u,1);for(u=t.boolean.length;u-- >0;)for(i=t.alias[t.boolean[u]]||[],l=i.length;l-- >0;)t.boolean.push(i[l]);for(u=t.string.length;u-- >0;)for(i=t.alias[t.string[u]]||[],l=i.length;l-- >0;)t.string.push(i[l]);if(m){for(s in t.default)if(n=typeof t.default[s],i=t.alias[s]=t.alias[s]||[],t[n]!==void 0)for(t[n].push(s),u=0;u<i.length;u++)t[n].push(i[u])}let g=p?Object.keys(t.alias):[];for(u=0;u<f;u++){if(r=e[u],r==="--"){a._=a._.concat(e.slice(++u));break}for(l=0;l<r.length&&r.charCodeAt(l)===45;l++);if(l===0)a._.push(r);else if(r.substring(l,l+3)==="no-"){if(n=r.slice(Math.max(0,l+3)),p&&!~g.indexOf(n))return t.unknown(r);a[n]=!1}else{for(c=l+1;c<r.length&&r.charCodeAt(c)!==61;c++);for(n=r.substring(l,c),o=r.slice(Math.max(0,++c))||u+1===f||(""+e[u+1]).charCodeAt(0)===45||e[++u],i=l===2?[n]:n,c=0;c<i.length;c++){if(n=i[c],p&&!~g.indexOf(n))return t.unknown("-".repeat(l)+n);LE(a,n,c+1<i.length||o,t)}}}if(m)for(s in t.default)a[s]===void 0&&(a[s]=t.default[s]);if(d)for(s in a)for(i=t.alias[s]||[];i.length>0;)a[i.shift()]=a[s];return a}function ME(e,t){let s={boolean:[],string:[],mixed:[],alias:{},default:{}},i=Md(t);for(let a of i)a.type!=="positional"&&(a.type==="string"?s.string.push(a.name):a.type==="boolean"&&s.boolean.push(a.name),a.default!==void 0&&(s.default[a.name]=a.default),a.alias&&(s.alias[a.name]=a.alias));let r=NE(e,s),[...n]=r._,o=new Proxy(r,{get(a,u){return a[u]??a[BE(u)]??a[OE(u)]}});for(let[,a]of i.entries())if(a.type==="positional"){let u=n.shift();if(u!==void 0)o[a.name]=u;else{if(a.default===void 0&&a.required!==!1)throw new Ht(`Missing required positional argument: ${a.name.toUpperCase()}`,"EARG");o[a.name]=a.default}}else if(a.required&&o[a.name]===void 0)throw new Ht(`Missing required argument: --${a.name}`,"EARG");return o}function Md(e){let t=[];for(let[s,i]of Object.entries(e||{}))t.push({...i,name:s,alias:RE(i.alias)});return t}async function jd(e,t){let s=await at(e.args||{}),i=ME(t.rawArgs,s),r={rawArgs:t.rawArgs,args:i,data:t.data,cmd:e};typeof e.setup=="function"&&await e.setup(r);let n;try{let o=await at(e.subCommands);if(o&&Object.keys(o).length>0){let a=t.rawArgs.findIndex(l=>!l.startsWith("-")),u=t.rawArgs[a];if(u){if(!o[u])throw new Ht(`Unknown command \`${u}\``,"E_UNKNOWN_COMMAND");let l=await at(o[u]);l&&await jd(l,{rawArgs:t.rawArgs.slice(a+1)})}else if(!e.run)throw new Ht("No command specified.","E_NO_COMMAND")}typeof e.run=="function"&&(n=await e.run(r))}finally{typeof e.cleanup=="function"&&await e.cleanup(r)}return{result:n}}async function Iu(e,t,s){let i=await at(e.subCommands);if(i&&Object.keys(i).length>0){let r=t.findIndex(a=>!a.startsWith("-")),n=t[r],o=await at(i[n]);if(o)return Iu(o,t.slice(r+1),e)}return[e,s]}async function jE(e,t){try{oi.log(await qE(e,t)+`
|
|
220
220
|
`)}catch(s){oi.error(s)}}async function qE(e,t){let s=await at(e.meta||{}),i=Md(await at(e.args||{})),r=await at(t?.meta||{}),n=`${r.name?`${r.name} `:""}`+(s.name||process.argv[1]),o=[],a=[],u=[],l=[];for(let p of i)if(p.type==="positional"){let m=p.name.toUpperCase(),g=p.required!==!1&&p.default===void 0,D=p.default?`="${p.default}"`:"";a.push(["`"+m+D+"`",p.description||"",p.valueHint?`<${p.valueHint}>`:""]),l.push(g?`<${m}>`:`[${m}]`)}else{let m=p.required===!0&&p.default===void 0,g=(p.type==="boolean"&&p.default===!0?[...(p.alias||[]).map(D=>`--no-${D}`),`--no-${p.name}`].join(", "):[...(p.alias||[]).map(D=>`-${D}`),`--${p.name}`].join(", "))+(p.type==="string"&&(p.valueHint||p.default)?`=${p.valueHint?`<${p.valueHint}>`:`"${p.default||""}"`}`:"");o.push(["`"+g+(m?" (required)":"")+"`",p.description||""]),m&&l.push(g)}if(e.subCommands){let p=[],m=await at(e.subCommands);for(let[g,D]of Object.entries(m)){let w=await at(D),y=await at(w?.meta);u.push([`\`${g}\``,y?.description||""]),p.push(g)}l.push(p.join("|"))}let c=[],f=s.version||r.version;c.push(ee.gray(`${s.description} (${n+(f?` v${f}`:"")})`),"");let d=o.length>0||a.length>0;return c.push(`${ee.underline(ee.bold("USAGE"))} \`${n}${d?" [OPTIONS]":""} ${l.join(" ")}\``,""),a.length>0&&(c.push(ee.underline(ee.bold("ARGUMENTS")),""),c.push(Ru(a," ")),c.push("")),o.length>0&&(c.push(ee.underline(ee.bold("OPTIONS")),""),c.push(Ru(o," ")),c.push("")),u.length>0&&(c.push(ee.underline(ee.bold("COMMANDS")),""),c.push(Ru(u," ")),c.push("",`Use \`${n} <command> --help\` for more information about a command.`)),c.filter(p=>typeof p=="string").join(`
|
|
221
221
|
`)}async function qd(e,t={}){let s=t.rawArgs||process.argv.slice(2),i=t.showUsage||jE;try{if(s.includes("--help")||s.includes("-h"))await i(...await Iu(e,s)),process.exit(0);else if(s.length===1&&s[0]==="--version"){let r=typeof e.meta=="function"?await e.meta():await e.meta;if(!r?.version)throw new Ht("No version specified","E_NO_VERSION");oi.log(r.version)}else await jd(e,{rawArgs:s})}catch(r){let n=r instanceof Ht;n||oi.error(r,`
|
|
222
|
-
`),n&&await i(...await Iu(e,s)),oi.error(r.message),process.exit(1)}}var ai={name:"best-review",version:"0.5.
|
|
222
|
+
`),n&&await i(...await Iu(e,s)),oi.error(r.message),process.exit(1)}}var ai={name:"best-review",version:"0.5.6",description:"AI-powered code review CLI for git changes",author:"Jericho Ding",license:"MIT",type:"module",bin:{"best-review":"dist/best-review.cjs",br:"dist/best-review.cjs"},files:["dist/best-review.cjs","dist/defaults","src/defaults"],scripts:{dev:"npx tsx ./bin/best-review.ts",build:"node build.mjs","link:local":"npm run build && npm link","link:publish":"npm run build && npm link",link:"npm link",unlink:"npm unlink",test:"vitest run","test:watch":"vitest","ts-check":"tsc --noEmit",lint:"eslint .","lint:fix":"eslint . --fix",format:"prettier --write .","format:check":"prettier --check .",prepublishOnly:"npm run build",prepare:"husky"},keywords:["code-review","ai","cli","git","diff","llm","openai-compatible","deepseek","pull-request"],engines:{node:">=18.0.0"},os:["darwin","linux","win32"],cpu:["x64","arm64"],devDependencies:{"@eslint/js":"^9.39.2","@types/node":"^22.15.21","@typescript-eslint/eslint-plugin":"^8.52.0","@typescript-eslint/parser":"^8.52.0",esbuild:"^0.25.0",eslint:"^9.39.2","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4",husky:"^9.1.0","lint-staged":"^15.5.0",prettier:"^3.7.4",tsx:"^4.19.0",vitest:"^3.1.0"},"lint-staged":{"*.{ts,tsx,js,jsx}":["eslint --fix","prettier --write"],"*.{json,md,yml,yaml}":["prettier --write"]},peerDependencies:{typescript:"^5"},dependencies:{citty:"^0.1.6",diff:"^8.0.2",glob:"^13.0.0",yaml:"^2.8.2",zod:"^3.22.4"}};Wc();Fi();Ge();je();async function We(e){let t=typeof e=="string"?{projectPath:e}:e||{},s=t.projectPath||process.cwd(),i=await le(s),r=i.extends.length>0?await uD("agents",Qr,s,i.extends):await oD("agents",Qr,s),n=t.executorOverride||i.executor,o=i.executors[n]||{},a=t.modelOverride;return r.map(u=>{let l=u.stage||"review",c=o[l]||{},f=a??(typeof c.model=="string"?c.model:void 0),d={...Me({executorOverride:n,modelOverride:f,config:i}),...c,...f&&{model:f}},p=i.agents[u.name]||{};return{...u,executor:u.executor||n,executorSettings:{...d,...u.executorSettings,...p.model&&{model:p.model},...p.timeout&&{timeout:p.timeout},...a&&{model:a}},enabled:p.enabled??u.enabled}}).filter(u=>u.enabled!==!1)}M();function PR(e){return!e||Object.keys(e).length===0?"-":Object.entries(e).map(([t,s])=>`${t}=${s}`).join(", ")}async function ND(){let e=await We(process.cwd());if(h.robot("\u53EF\u7528 Agent"),h.newline(),e.length===0){h.plain("\u6CA1\u6709\u914D\u7F6E Agent");return}for(let t of e){let s=t.enabled?"\u25CF":"\u25CB",i=t.stage||"review",r=rr(t.path);h.plain(`${s} ${t.name} (${i})`),h.plain(` \u6267\u884C\u5668\uFF1A${t.executor}`),t.executorSettings&&Object.keys(t.executorSettings).length>0&&h.plain(` \u8BBE\u7F6E\uFF1A${PR(t.executorSettings)}`),h.plain(` \u8DEF\u5F84\uFF1A${r}`),h.newline()}}async function MD(e){let s=(await We(process.cwd())).find(i=>i.name===e);if(s||(h.error(`Agent \u4E0D\u5B58\u5728\uFF1A${e}`),process.exit(1)),h.robot(`Agent\uFF1A${s.name}`),h.newline(),h.plain(`\u8BF4\u660E\uFF1A${s.description}`),h.plain(`\u542F\u7528\uFF1A${s.enabled?"\u662F":"\u5426"}`),h.plain(`\u987A\u5E8F\uFF1A${s.order}`),h.plain(`\u9636\u6BB5\uFF1A${s.stage||"review"}`),h.plain(`\u6267\u884C\u5668\uFF1A${s.executor}`),h.plain(`\u8DEF\u5F84\uFF1A${rr(s.path)}`),s.executorSettings&&Object.keys(s.executorSettings).length>0){h.newline(),h.plain("\u6267\u884C\u5668\u8BBE\u7F6E\uFF1A");for(let[i,r]of Object.entries(s.executorSettings))h.plain(` ${i}: ${r}`)}h.newline(),h.plain("\u7CFB\u7EDF Prompt\uFF1A"),h.separator("\u2500"),h.plain(s.systemPrompt||"\uFF08\u65E0 prompt\uFF09"),h.separator("\u2500")}var jD={meta:{name:"agents",description:`\u5217\u51FA Agent\uFF0C\u6216\u67E5\u770B\u67D0\u4E2A Agent \u7684\u8BE6\u60C5
|
|
223
223
|
|
|
224
224
|
Examples:
|
|
225
225
|
best-review agents # \u5217\u51FA\u6240\u6709 Agent
|
|
@@ -265,20 +265,20 @@ Rules:
|
|
|
265
265
|
`);return[e,r,`# Input:
|
|
266
266
|
${t}`,s.trim()||null].filter(Boolean).join(`
|
|
267
267
|
|
|
268
|
-
`)}function Oi(e,t,s,i,r,n,o,a){return{agent:e.agent.name,executor:e.executor.name,success:t,output:s,error:i,duration:r,prompt:n,usage:o,cacheHit:a}}function zD(e){let t=e,s=qR(e);if(s)t=s;else{let i=HD(e);i&&(t=i)}try{let i=JSON.parse(t);return Array.isArray(i)?i:Array.isArray(i.issues)?i.issues:null}catch{return jR(t)}}function Ea(e,t=1){if(e==null)return t;let s=typeof e=="number"?e:parseInt(String(e).trim(),10);return!isNaN(s)&&s>0?s:t}function NR(e){return e.lineStart!==void 0?Ea(e.lineStart,0):e.line!==void 0?Ea(e.line,0):e.lineNumber!==void 0?Ea(e.lineNumber,0):1}function MR(e,t){let s=e.file||e.path||"",i=NR(e),r=Ea(e.lineEnd,i),n=e.category||e.type||"quality",o=e.shortDescription||e.short||e.message||e.issue||e.title||e.problem||"",a=e.fullDescription||e.description||e.detail||e.details||e.explanation||o,u=e.suggestion||e.fix||e.recommendation||e.remediation||e.solution,l=e.evidence,c;if(typeof e.confidence=="number")c=e.confidence;else if(typeof e.confidence=="string"){let f=parseInt(e.confidence,10);c=isNaN(f)?void 0:f}return{file:s,lineStart:i,lineEnd:r,severity:e.severity||"medium",category:n,shortDescription:o,fullDescription:a,suggestion:u,agent:t??e.agent??"unknown",rule:e.rule,evidence:l,confidence:c}}function jR(e){let t=e.match(/\[[\s\S]*\]/);if(!t)return null;try{let s=JSON.parse(t[0]);return Array.isArray(s)?s:null}catch{return null}}function HD(e){return e.match(/<json>\s*([\s\S]*?)\s*<\/json>/)?.[1]?.trim()??null}function qR(e){try{let t=JSON.parse(e);if(t.type==="result"&&typeof t.result=="string"){let s=t.result,i=HD(s);if(i)return i;let r=s.match(/```json\s*([\s\S]*?)```/);if(r)return r[1]?.trim()??s;let n=s.matchAll(/```(?:\w*)?\s*([\s\S]*?)```/g);for(let o of n){let a=o[1]?.trim();if(a?.startsWith("[")||a?.startsWith("{"))return a}return s}}catch(t){process.env.DEBUG&&console.warn("extractCliResult JSON parse failed:",t)}return null}function JD(e,t){try{let s=zD(e);return Array.isArray(s)?s.map(i=>MR(i,t)).filter(i=>i.file&&(i.shortDescription||i.fullDescription)&&i.lineStart>0):[]}catch{return[]}}function YD(e){return Array.isArray(zD(e))}function St(e){return Math.ceil(e.length/4)}function ZD(){return"simple (1 token \u2248 4 chars)"}je();var UR=10,XD=b.object({model:b.string().optional(),timeout:b.number().positive().optional(),temperature:b.number().min(0).max(2).optional(),maxTokens:b.number().positive().optional(),readinessPing:b.boolean().optional()});function VR(e){let t=e.replace(/\/+$/,"");return t.endsWith("/chat/completions")?t:`${t}/chat/completions`}async function QD(e){let t=new AbortController,s=setTimeout(()=>t.abort(),e.timeoutSeconds*1e3);try{let i=await jt(VR(e.baseUrl),{method:"POST",headers:{Authorization:`Bearer ${e.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify(e.payload),signal:t.signal},2),r=await i.text(),n;try{n=r?JSON.parse(r):void 0}catch{throw new Error(`\u6A21\u578B\u670D\u52A1\u8FD4\u56DE\u4E86\u4E0D\u53EF\u89E3\u6790 JSON\uFF1A${r.slice(0,300)}`)}if(!i.ok){let c=n?.error?.message||r||`HTTP ${i.status}`;throw new Error(`\u6A21\u578B\u670D\u52A1\u8BF7\u6C42\u5931\u8D25\uFF08${i.status}\uFF09\uFF1A${c}`)}let o=n?.choices?.[0]?.message?.content?.trim();if(!o)throw new Error("\u6A21\u578B\u670D\u52A1\u6CA1\u6709\u8FD4\u56DE assistant \u6587\u672C");let a=n?.usage?.prompt_tokens,u=n?.usage?.completion_tokens,l=n?.usage?.total_tokens;return{content:o,usage:typeof a=="number"||typeof u=="number"||typeof l=="number"?{promptTokens:a??0,completionTokens:u??0,totalTokens:l??(a??0)+(u??0),estimated:!1}:void 0}}catch(i){throw i instanceof Error&&i.name==="AbortError"?new Error(`\u6A21\u578B\u670D\u52A1\u8BF7\u6C42\u8D85\u65F6\uFF08${e.timeoutSeconds}s\uFF09`):i}finally{clearTimeout(s)}}function ey(e){return typeof e?.timeout=="number"&&e.timeout>0?e.timeout:gs}function GR(e){return Math.min(ey(e),UR)}function WR(e){return typeof e?.temperature=="number"?e.temperature:Qc}function KR(e){if(typeof e?.maxTokens=="number"&&e.maxTokens>0)return e.maxTokens}function zR(e){return e.readinessPing===!0||process.env.BEST_REVIEW_API_READINESS_PING?.toLowerCase()==="true"}async function HR(e,t){if(!t.enabled)return{ready:!1,reason:`\u6267\u884C\u5668\u5DF2\u7981\u7528\uFF1A${t.name}`,hint:"\u8BF7\u68C0\u67E5\u6267\u884C\u5668\u914D\u7F6E\u3002",suggestions:["\u542F\u7528\u8BE5\u6267\u884C\u5668\uFF0C\u6216\u79FB\u9664\u7981\u7528\u5B83\u7684\u672C\u5730\u914D\u7F6E\u540E\u91CD\u8BD5\u3002"]};let s=Me({executorOverride:t.name,modelOverride:t.model,settings:t});if(!s.model)return{ready:!1,reason:`\u672A\u914D\u7F6E\u6A21\u578B\uFF1A${t.name}`,hint:"\u8BF7\u5728 ~/.best-review/config.json \u4E2D\u8BBE\u7F6E llm.model\u3002",suggestions:["\u8FD0\u884C best-review init \u91CD\u65B0\u8BBE\u7F6E\u6A21\u578B\u670D\u52A1\u914D\u7F6E\u3002"]};if(!s.apiKey)return{ready:!1,reason:"\u672A\u627E\u5230 API Key",hint:"\u8BF7\u5728 ~/.best-review/config.json \u4E2D\u8BBE\u7F6E llm.apiKey\u3002",suggestions:["\u8FD0\u884C best-review init \u91CD\u65B0\u8BBE\u7F6E API Key\u3002"]};if(zR(t))try{await QD({baseUrl:s.baseUrl,apiKey:s.apiKey,timeoutSeconds:GR(t),payload:{model:s.model,messages:[{role:"system",content:"best-review readiness check. Reply with a short plain-text acknowledgement."},{role:"user",content:"ping"}],temperature:0,max_tokens:8}})}catch(i){return{ready:!1,reason:`\u6A21\u578B\u670D\u52A1\u8054\u901A\u5931\u8D25\uFF1A${i instanceof Error?i.message:String(i)}`,hint:"\u8BF7\u68C0\u67E5 ~/.best-review/config.json \u4E2D\u7684 llm.platform\u3001llm.baseUrl\u3001llm.apiKey \u548C llm.model \u662F\u5426\u5339\u914D\u5F53\u524D\u6A21\u578B\u670D\u52A1\u3002",suggestions:["\u8FD0\u884C best-review config \u67E5\u770B\u5F53\u524D\u5E73\u53F0\u914D\u7F6E\u3002","\u8FD0\u884C best-review doctor \u91CD\u65B0\u68C0\u67E5\u662F\u5426\u53EF\u4EE5\u76F4\u63A5\u6267\u884C review\u3002"]}}return{ready:!0}}async function JR(e,t){let s=Date.now(),i=t.outputMode==="text"?"":await va(),r=Bi(t.systemPrompt,t.input,i),n=t.executor,o=Me({executorOverride:t.executor.name,modelOverride:t.modelOverride||(typeof n.model=="string"?n.model:void 0),settings:t.executor});if(!o.model)return Oi(t,!1,"","\u672A\u914D\u7F6E\u6A21\u578B\u3002\u8BF7\u5728 ~/.best-review/config.json \u4E2D\u8BBE\u7F6E llm.model\u3002",Date.now()-s,r);if(!o.apiKey)return Oi(t,!1,"","\u672A\u627E\u5230 API Key\u3002\u8BF7\u5728 ~/.best-review/config.json \u4E2D\u8BBE\u7F6E llm.apiKey\u3002",Date.now()-s,r);let a=ey(n),u=WR(n),l=KR(n);try{let c=t.outputMode==="text"?"\u4F60\u662F best-review \u7684\u53EA\u8BFB\u6267\u884C\u5668\u3002\u53EA\u57FA\u4E8E\u7528\u6237\u63D0\u4F9B\u7684 prompt \u8F93\u51FA\u8981\u6C42\u7684\u6700\u7EC8\u5185\u5BB9\uFF0C\u4E0D\u8981\u89E3\u91CA\u8FC7\u7A0B\u3002":"\u4F60\u662F best-review \u7684\u53EA\u8BFB\u4EE3\u7801\u5BA1\u67E5\u6267\u884C\u5668\u3002\u53EA\u57FA\u4E8E\u7528\u6237\u63D0\u4F9B\u7684 prompt \u8F93\u51FA\u8981\u6C42\u7684 JSON\uFF0C\u4E0D\u8981\u89E3\u91CA\u8FC7\u7A0B\u3002",f=await QD({baseUrl:o.baseUrl,apiKey:o.apiKey,timeoutSeconds:a,payload:{model:o.model,messages:[{role:"system",content:c},{role:"user",content:r}],temperature:u,max_tokens:l}}),d=f.content,p=St(r),m=St(d),g=f.usage??{promptTokens:p,completionTokens:m,totalTokens:p+m,estimated:!0};return t.outputMode!=="text"&&!YD(d)?Oi(t,!1,d,"\u6A21\u578B\u6CA1\u6709\u8FD4\u56DE\u53EF\u89E3\u6790\u7684\u5BA1\u67E5 JSON",Date.now()-s,r,g):Oi(t,!0,d,void 0,Date.now()-s,r,g)}catch(c){let f=c instanceof Error?c.message:String(c);return Oi(t,!1,"",`\u6A21\u578B\u670D\u52A1\u8C03\u7528\u5931\u8D25\uFF1A${f}`,Date.now()-s,r)}}function ty(e){return{name:e.name,description:e.description,type:"api",enabled:!0,execute:t=>JR(e,t),getInfo:()=>({name:e.name,description:e.description,type:"api",baseUrl:e.baseUrl,apiKey:e.apiKey,model:e.model,timeout:e.timeout,temperature:e.temperature,maxTokens:e.maxTokens,readinessPing:e.readinessPing,provider:e.provider,enabled:!0}),settingsSchema:XD,checkReady:t=>HR(e,t),applySettings:t=>{let s=XD.safeParse(t),i=s.success?s.data:{},r=typeof t.model=="string"?t.model:void 0,n=Me({executorOverride:e.name,modelOverride:r,settings:{baseUrl:typeof t.baseUrl=="string"?t.baseUrl:void 0,apiKey:typeof t.apiKey=="string"?t.apiKey:void 0,model:r}});return{name:e.name,description:e.description,type:"api",baseUrl:n.baseUrl,apiKey:n.apiKey,model:n.model,timeout:i.timeout??e.timeout,temperature:i.temperature??e.temperature??Qc,maxTokens:i.maxTokens??e.maxTokens,readinessPing:i.readinessPing??e.readinessPing,provider:e.provider,enabled:!0}}}}var af=ty({name:xe,description:"OpenAI Chat Completions \u517C\u5BB9 API",provider:"openai-compatible"}),uf=ty({name:be,description:"DeepSeek Chat Completions API",provider:"deepseek"});var Xs=new Map([[af.name,af],[uf.name,uf]]);function Li(e){return Xs.get(e)}function YR(){return[...Xs.values()]}function ZR(e){let t=Xs.get(e.name);t&&(t.enabled=e.enabled)}async function XR(e){let t=Xs.get(e.executor.name);if(!t){let s=[...Xs.keys()].join(", ");throw new Error(`\u672A\u627E\u5230\u6267\u884C\u5668\uFF1A${e.executor.name}\u3002\u53EF\u7528\u6267\u884C\u5668\uFF1A${s}`)}if(!e.executor.enabled)throw new Error(`\u6267\u884C\u5668\u5DF2\u7981\u7528\uFF1A${e.executor.name}`);if(e.modelOverride&&t.applySettings){let s=t.applySettings({...e.executor,model:e.modelOverride});return t.execute({...e,executor:s})}return t.execute(e)}async function lf(e,t={}){let s=Xs.get(e);if(!s){let n=[...Xs.keys()].join(", ");return{executor:e,ready:!1,reason:`\u6267\u884C\u5668\u4E0D\u5B58\u5728\uFF1A${e}`,hint:`\u53EF\u7528\u6267\u884C\u5668\uFF1A${n}`,suggestions:[`\u628A\u914D\u7F6E\u6216\u547D\u4EE4\u884C\u53C2\u6570\u4E2D\u7684 executor \u6539\u4E3A ${n||"\u5DF2\u6CE8\u518C\u6267\u884C\u5668"}\u3002`,"\u8FD0\u884C best-review executors \u67E5\u770B\u5F53\u524D\u53EF\u7528\u6267\u884C\u5668\u3002"]}}let i=s.applySettings?s.applySettings(t):s.getInfo();if(!i.enabled&&!s.checkReady)return{executor:e,ready:!1,reason:`\u6267\u884C\u5668\u5DF2\u7981\u7528\uFF1A${e}`,hint:"\u8BF7\u68C0\u67E5\u6267\u884C\u5668\u914D\u7F6E\u3002",suggestions:["\u542F\u7528\u8BE5\u6267\u884C\u5668\uFF0C\u6216\u79FB\u9664\u7981\u7528\u5B83\u7684\u672C\u5730\u914D\u7F6E\u540E\u91CD\u8BD5\u3002"]};if(!s.checkReady)return{executor:e,ready:!0};let r=await s.checkReady(i);return{executor:e,...r}}var he={get:Li,listExecutors(){return YR().map(e=>e.getInfo())},registerExecutor:ZR,executeAgent:XR,checkExecutorReadiness:lf};async function Ni(){return he.listExecutors()}je();function Ds(e,t,s=e.executor,i={}){let r=e.executors[s]?.review??{},n=t??(typeof r.model=="string"?r.model:void 0);return{...Me({executorOverride:s,modelOverride:n,config:e}),...typeof r.timeout=="number"&&{timeout:r.timeout},...typeof r.concurrency=="number"&&{concurrency:r.concurrency},...typeof r.batchSize=="number"&&{batchSize:r.batchSize},...(i.requirePing||r.readinessPing===!0)&&{readinessPing:!0}}}async function Mi(e,t={}){let s=t.executorOverride||e.executor,r=await(t.check??lf)(s,Ds(e,t.modelOverride,s,{requirePing:t.requirePing}));return{ok:r.ready,checks:[{executor:s,readiness:r}],message:r.ready?void 0:`${s} \u4E0D\u53EF\u7528`}}M();async function QR(e,t={}){let s=t.executorOverride||e.executor,i=Ds(e,t.modelOverride,s,{requirePing:!0}),r=await Mi(e,{executorOverride:s,modelOverride:t.modelOverride,requirePing:!0,check:t.check});return{ok:r.ok,canReview:r.ok,executor:s,platform:i.platform,baseUrl:i.baseUrl,model:i.model,apiKeySet:!!i.apiKey,checks:r.checks,message:r.message}}function ek(e){for(let t of e.filter(s=>!s.readiness.ready))h.error(`${t.executor} \u4E0D\u53EF\u7528\uFF1A${t.readiness.reason||"\u672A\u7ED9\u51FA\u5931\u8D25\u539F\u56E0"}`),t.readiness.hint&&h.info(t.readiness.hint),t.readiness.suggestions&&t.readiness.suggestions.length>0&&(h.info("\u5EFA\u8BAE\u5904\u7406\uFF1A"),t.readiness.suggestions.forEach((s,i)=>{h.plain(` ${i+1}. ${s}`)}))}function tk(e){h.plain(`best-review doctor
|
|
269
|
-
`),h.plain(`\u5E73\u53F0\uFF1A${e.platform}`),h.plain(`\u6267\u884C\u5668\uFF1A${e.executor}`),h.plain(`Base URL\uFF1A${e.baseUrl}`),h.plain(`\u6A21\u578B\uFF1A${e.model||"\u672A\u8BBE\u7F6E"}`),h.plain(`API Key\uFF1A${e.apiKeySet?"\u5DF2\u8BBE\u7F6E":"\u672A\u8BBE\u7F6E"}`),h.newline(),e.ok?h.success("\u5F53\u524D\u914D\u7F6E\u53EF\u4EE5\u76F4\u63A5\u6267\u884C review"):(h.error("\u5F53\u524D\u914D\u7F6E\u8FD8\u4E0D\u80FD\u6267\u884C review"),
|
|
268
|
+
`)}function Oi(e,t,s,i,r,n,o,a){return{agent:e.agent.name,executor:e.executor.name,success:t,output:s,error:i,duration:r,prompt:n,usage:o,cacheHit:a}}function zD(e){let t=e,s=qR(e);if(s)t=s;else{let i=HD(e);i&&(t=i)}try{let i=JSON.parse(t);return Array.isArray(i)?i:Array.isArray(i.issues)?i.issues:null}catch{return jR(t)}}function Ea(e,t=1){if(e==null)return t;let s=typeof e=="number"?e:parseInt(String(e).trim(),10);return!isNaN(s)&&s>0?s:t}function NR(e){return e.lineStart!==void 0?Ea(e.lineStart,0):e.line!==void 0?Ea(e.line,0):e.lineNumber!==void 0?Ea(e.lineNumber,0):1}function MR(e,t){let s=e.file||e.path||"",i=NR(e),r=Ea(e.lineEnd,i),n=e.category||e.type||"quality",o=e.shortDescription||e.short||e.message||e.issue||e.title||e.problem||"",a=e.fullDescription||e.description||e.detail||e.details||e.explanation||o,u=e.suggestion||e.fix||e.recommendation||e.remediation||e.solution,l=e.evidence,c;if(typeof e.confidence=="number")c=e.confidence;else if(typeof e.confidence=="string"){let f=parseInt(e.confidence,10);c=isNaN(f)?void 0:f}return{file:s,lineStart:i,lineEnd:r,severity:e.severity||"medium",category:n,shortDescription:o,fullDescription:a,suggestion:u,agent:t??e.agent??"unknown",rule:e.rule,evidence:l,confidence:c}}function jR(e){let t=e.match(/\[[\s\S]*\]/);if(!t)return null;try{let s=JSON.parse(t[0]);return Array.isArray(s)?s:null}catch{return null}}function HD(e){return e.match(/<json>\s*([\s\S]*?)\s*<\/json>/)?.[1]?.trim()??null}function qR(e){try{let t=JSON.parse(e);if(t.type==="result"&&typeof t.result=="string"){let s=t.result,i=HD(s);if(i)return i;let r=s.match(/```json\s*([\s\S]*?)```/);if(r)return r[1]?.trim()??s;let n=s.matchAll(/```(?:\w*)?\s*([\s\S]*?)```/g);for(let o of n){let a=o[1]?.trim();if(a?.startsWith("[")||a?.startsWith("{"))return a}return s}}catch(t){process.env.DEBUG&&console.warn("extractCliResult JSON parse failed:",t)}return null}function JD(e,t){try{let s=zD(e);return Array.isArray(s)?s.map(i=>MR(i,t)).filter(i=>i.file&&(i.shortDescription||i.fullDescription)&&i.lineStart>0):[]}catch{return[]}}function YD(e){return Array.isArray(zD(e))}function St(e){return Math.ceil(e.length/4)}function ZD(){return"simple (1 token \u2248 4 chars)"}je();var UR=10,XD=b.object({model:b.string().optional(),timeout:b.number().positive().optional(),temperature:b.number().min(0).max(2).optional(),maxTokens:b.number().positive().optional(),readinessPing:b.boolean().optional()});function VR(e){let t=e.replace(/\/+$/,"");return t.endsWith("/chat/completions")?t:`${t}/chat/completions`}async function QD(e){let t=new AbortController,s=setTimeout(()=>t.abort(),e.timeoutSeconds*1e3);try{let i=await jt(VR(e.baseUrl),{method:"POST",headers:{Authorization:`Bearer ${e.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify(e.payload),signal:t.signal},2),r=await i.text(),n;try{n=r?JSON.parse(r):void 0}catch{throw new Error(`\u6A21\u578B\u670D\u52A1\u8FD4\u56DE\u4E86\u4E0D\u53EF\u89E3\u6790 JSON\uFF1A${r.slice(0,300)}`)}if(!i.ok){let c=n?.error?.message||r||`HTTP ${i.status}`;throw new Error(`\u6A21\u578B\u670D\u52A1\u8BF7\u6C42\u5931\u8D25\uFF08${i.status}\uFF09\uFF1A${c}`)}let o=n?.choices?.[0]?.message?.content?.trim();if(!o)throw new Error("\u6A21\u578B\u670D\u52A1\u6CA1\u6709\u8FD4\u56DE assistant \u6587\u672C");let a=n?.usage?.prompt_tokens,u=n?.usage?.completion_tokens,l=n?.usage?.total_tokens;return{content:o,usage:typeof a=="number"||typeof u=="number"||typeof l=="number"?{promptTokens:a??0,completionTokens:u??0,totalTokens:l??(a??0)+(u??0),estimated:!1}:void 0}}catch(i){throw i instanceof Error&&i.name==="AbortError"?new Error(`\u6A21\u578B\u670D\u52A1\u8BF7\u6C42\u8D85\u65F6\uFF08${e.timeoutSeconds}s\uFF09`):i}finally{clearTimeout(s)}}function ey(e){return typeof e?.timeout=="number"&&e.timeout>0?e.timeout:gs}function GR(e){return Math.min(ey(e),UR)}function WR(e){return typeof e?.temperature=="number"?e.temperature:Qc}function KR(e){if(typeof e?.maxTokens=="number"&&e.maxTokens>0)return e.maxTokens}function zR(e){return e.readinessPing===!0||process.env.BEST_REVIEW_API_READINESS_PING?.toLowerCase()==="true"}function HR(e){return e==="deepseek"?{thinking:{type:"disabled"}}:{}}async function JR(e,t){if(!t.enabled)return{ready:!1,reason:`\u6267\u884C\u5668\u5DF2\u7981\u7528\uFF1A${t.name}`,hint:"\u8BF7\u68C0\u67E5\u6267\u884C\u5668\u914D\u7F6E\u3002",suggestions:["\u542F\u7528\u8BE5\u6267\u884C\u5668\uFF0C\u6216\u79FB\u9664\u7981\u7528\u5B83\u7684\u672C\u5730\u914D\u7F6E\u540E\u91CD\u8BD5\u3002"]};let s=Me({executorOverride:t.name,modelOverride:t.model,settings:t});if(!s.model)return{ready:!1,reason:`\u672A\u914D\u7F6E\u6A21\u578B\uFF1A${t.name}`,hint:"\u8BF7\u5728 ~/.best-review/config.json \u4E2D\u8BBE\u7F6E llm.model\u3002",suggestions:["\u8FD0\u884C best-review init \u91CD\u65B0\u8BBE\u7F6E\u6A21\u578B\u670D\u52A1\u914D\u7F6E\u3002"]};if(!s.apiKey)return{ready:!1,reason:"\u672A\u627E\u5230 API Key",hint:"\u8BF7\u5728 ~/.best-review/config.json \u4E2D\u8BBE\u7F6E llm.apiKey\u3002",suggestions:["\u8FD0\u884C best-review init \u91CD\u65B0\u8BBE\u7F6E API Key\u3002"]};if(zR(t))try{await QD({baseUrl:s.baseUrl,apiKey:s.apiKey,timeoutSeconds:GR(t),payload:{model:s.model,messages:[{role:"system",content:"best-review readiness check. Reply with a short plain-text acknowledgement."},{role:"user",content:"ping"}],temperature:0,max_tokens:8,...HR(s.platform)}})}catch(i){return{ready:!1,reason:`\u6A21\u578B\u670D\u52A1\u8054\u901A\u5931\u8D25\uFF1A${i instanceof Error?i.message:String(i)}`,hint:"\u8BF7\u68C0\u67E5 ~/.best-review/config.json \u4E2D\u7684 llm.platform\u3001llm.baseUrl\u3001llm.apiKey \u548C llm.model \u662F\u5426\u5339\u914D\u5F53\u524D\u6A21\u578B\u670D\u52A1\u3002",suggestions:["\u8FD0\u884C best-review config \u67E5\u770B\u5F53\u524D\u5E73\u53F0\u914D\u7F6E\u3002","\u8FD0\u884C best-review doctor \u91CD\u65B0\u68C0\u67E5\u662F\u5426\u53EF\u4EE5\u76F4\u63A5\u6267\u884C review\u3002"]}}return{ready:!0}}async function YR(e,t){let s=Date.now(),i=t.outputMode==="text"?"":await va(),r=Bi(t.systemPrompt,t.input,i),n=t.executor,o=Me({executorOverride:t.executor.name,modelOverride:t.modelOverride||(typeof n.model=="string"?n.model:void 0),settings:t.executor});if(!o.model)return Oi(t,!1,"","\u672A\u914D\u7F6E\u6A21\u578B\u3002\u8BF7\u5728 ~/.best-review/config.json \u4E2D\u8BBE\u7F6E llm.model\u3002",Date.now()-s,r);if(!o.apiKey)return Oi(t,!1,"","\u672A\u627E\u5230 API Key\u3002\u8BF7\u5728 ~/.best-review/config.json \u4E2D\u8BBE\u7F6E llm.apiKey\u3002",Date.now()-s,r);let a=ey(n),u=WR(n),l=KR(n);try{let c=t.outputMode==="text"?"\u4F60\u662F best-review \u7684\u53EA\u8BFB\u6267\u884C\u5668\u3002\u53EA\u57FA\u4E8E\u7528\u6237\u63D0\u4F9B\u7684 prompt \u8F93\u51FA\u8981\u6C42\u7684\u6700\u7EC8\u5185\u5BB9\uFF0C\u4E0D\u8981\u89E3\u91CA\u8FC7\u7A0B\u3002":"\u4F60\u662F best-review \u7684\u53EA\u8BFB\u4EE3\u7801\u5BA1\u67E5\u6267\u884C\u5668\u3002\u53EA\u57FA\u4E8E\u7528\u6237\u63D0\u4F9B\u7684 prompt \u8F93\u51FA\u8981\u6C42\u7684 JSON\uFF0C\u4E0D\u8981\u89E3\u91CA\u8FC7\u7A0B\u3002",f=await QD({baseUrl:o.baseUrl,apiKey:o.apiKey,timeoutSeconds:a,payload:{model:o.model,messages:[{role:"system",content:c},{role:"user",content:r}],temperature:u,max_tokens:l}}),d=f.content,p=St(r),m=St(d),g=f.usage??{promptTokens:p,completionTokens:m,totalTokens:p+m,estimated:!0};return t.outputMode!=="text"&&!YD(d)?Oi(t,!1,d,"\u6A21\u578B\u6CA1\u6709\u8FD4\u56DE\u53EF\u89E3\u6790\u7684\u5BA1\u67E5 JSON",Date.now()-s,r,g):Oi(t,!0,d,void 0,Date.now()-s,r,g)}catch(c){let f=c instanceof Error?c.message:String(c);return Oi(t,!1,"",`\u6A21\u578B\u670D\u52A1\u8C03\u7528\u5931\u8D25\uFF1A${f}`,Date.now()-s,r)}}function ty(e){return{name:e.name,description:e.description,type:"api",enabled:!0,execute:t=>YR(e,t),getInfo:()=>({name:e.name,description:e.description,type:"api",baseUrl:e.baseUrl,apiKey:e.apiKey,model:e.model,timeout:e.timeout,temperature:e.temperature,maxTokens:e.maxTokens,readinessPing:e.readinessPing,provider:e.provider,enabled:!0}),settingsSchema:XD,checkReady:t=>JR(e,t),applySettings:t=>{let s=XD.safeParse(t),i=s.success?s.data:{},r=typeof t.model=="string"?t.model:void 0,n=Me({executorOverride:e.name,modelOverride:r,settings:{baseUrl:typeof t.baseUrl=="string"?t.baseUrl:void 0,apiKey:typeof t.apiKey=="string"?t.apiKey:void 0,model:r}});return{name:e.name,description:e.description,type:"api",baseUrl:n.baseUrl,apiKey:n.apiKey,model:n.model,timeout:i.timeout??e.timeout,temperature:i.temperature??e.temperature??Qc,maxTokens:i.maxTokens??e.maxTokens,readinessPing:i.readinessPing??e.readinessPing,provider:e.provider,enabled:!0}}}}var af=ty({name:xe,description:"OpenAI Chat Completions \u517C\u5BB9 API",provider:"openai-compatible"}),uf=ty({name:be,description:"DeepSeek Chat Completions API",provider:"deepseek"});var Xs=new Map([[af.name,af],[uf.name,uf]]);function Li(e){return Xs.get(e)}function ZR(){return[...Xs.values()]}function XR(e){let t=Xs.get(e.name);t&&(t.enabled=e.enabled)}async function QR(e){let t=Xs.get(e.executor.name);if(!t){let s=[...Xs.keys()].join(", ");throw new Error(`\u672A\u627E\u5230\u6267\u884C\u5668\uFF1A${e.executor.name}\u3002\u53EF\u7528\u6267\u884C\u5668\uFF1A${s}`)}if(!e.executor.enabled)throw new Error(`\u6267\u884C\u5668\u5DF2\u7981\u7528\uFF1A${e.executor.name}`);if(e.modelOverride&&t.applySettings){let s=t.applySettings({...e.executor,model:e.modelOverride});return t.execute({...e,executor:s})}return t.execute(e)}async function lf(e,t={}){let s=Xs.get(e);if(!s){let n=[...Xs.keys()].join(", ");return{executor:e,ready:!1,reason:`\u6267\u884C\u5668\u4E0D\u5B58\u5728\uFF1A${e}`,hint:`\u53EF\u7528\u6267\u884C\u5668\uFF1A${n}`,suggestions:[`\u628A\u914D\u7F6E\u6216\u547D\u4EE4\u884C\u53C2\u6570\u4E2D\u7684 executor \u6539\u4E3A ${n||"\u5DF2\u6CE8\u518C\u6267\u884C\u5668"}\u3002`,"\u8FD0\u884C best-review executors \u67E5\u770B\u5F53\u524D\u53EF\u7528\u6267\u884C\u5668\u3002"]}}let i=s.applySettings?s.applySettings(t):s.getInfo();if(!i.enabled&&!s.checkReady)return{executor:e,ready:!1,reason:`\u6267\u884C\u5668\u5DF2\u7981\u7528\uFF1A${e}`,hint:"\u8BF7\u68C0\u67E5\u6267\u884C\u5668\u914D\u7F6E\u3002",suggestions:["\u542F\u7528\u8BE5\u6267\u884C\u5668\uFF0C\u6216\u79FB\u9664\u7981\u7528\u5B83\u7684\u672C\u5730\u914D\u7F6E\u540E\u91CD\u8BD5\u3002"]};if(!s.checkReady)return{executor:e,ready:!0};let r=await s.checkReady(i);return{executor:e,...r}}var he={get:Li,listExecutors(){return ZR().map(e=>e.getInfo())},registerExecutor:XR,executeAgent:QR,checkExecutorReadiness:lf};async function Ni(){return he.listExecutors()}je();function Ds(e,t,s=e.executor,i={}){let r=e.executors[s]?.review??{},n=t??(typeof r.model=="string"?r.model:void 0);return{...Me({executorOverride:s,modelOverride:n,config:e}),...typeof r.timeout=="number"&&{timeout:r.timeout},...typeof r.concurrency=="number"&&{concurrency:r.concurrency},...typeof r.batchSize=="number"&&{batchSize:r.batchSize},...(i.requirePing||r.readinessPing===!0)&&{readinessPing:!0}}}async function Mi(e,t={}){let s=t.executorOverride||e.executor,r=await(t.check??lf)(s,Ds(e,t.modelOverride,s,{requirePing:t.requirePing}));return{ok:r.ready,checks:[{executor:s,readiness:r}],message:r.ready?void 0:`${s} \u4E0D\u53EF\u7528`}}M();async function ek(e,t={}){let s=t.executorOverride||e.executor,i=Ds(e,t.modelOverride,s,{requirePing:!0}),r=await Mi(e,{executorOverride:s,modelOverride:t.modelOverride,requirePing:!0,check:t.check});return{ok:r.ok,canReview:r.ok,executor:s,platform:i.platform,baseUrl:i.baseUrl,model:i.model,apiKeySet:!!i.apiKey,checks:r.checks,message:r.message}}function tk(e){for(let t of e.filter(s=>!s.readiness.ready))h.error(`${t.executor} \u4E0D\u53EF\u7528\uFF1A${t.readiness.reason||"\u672A\u7ED9\u51FA\u5931\u8D25\u539F\u56E0"}`),t.readiness.hint&&h.info(t.readiness.hint),t.readiness.suggestions&&t.readiness.suggestions.length>0&&(h.info("\u5EFA\u8BAE\u5904\u7406\uFF1A"),t.readiness.suggestions.forEach((s,i)=>{h.plain(` ${i+1}. ${s}`)}))}function sk(e){h.plain(`best-review doctor
|
|
269
|
+
`),h.plain(`\u5E73\u53F0\uFF1A${e.platform}`),h.plain(`\u6267\u884C\u5668\uFF1A${e.executor}`),h.plain(`Base URL\uFF1A${e.baseUrl}`),h.plain(`\u6A21\u578B\uFF1A${e.model||"\u672A\u8BBE\u7F6E"}`),h.plain(`API Key\uFF1A${e.apiKeySet?"\u5DF2\u8BBE\u7F6E":"\u672A\u8BBE\u7F6E"}`),h.newline(),e.ok?h.success("\u5F53\u524D\u914D\u7F6E\u53EF\u4EE5\u76F4\u63A5\u6267\u884C review"):(h.error("\u5F53\u524D\u914D\u7F6E\u8FD8\u4E0D\u80FD\u6267\u884C review"),tk(e.checks))}async function ji(e){let t=e.projectPath||process.cwd(),s=await le(t),i=await ek(s,{executorOverride:e.executor,modelOverride:e.model});return e.json?h.plain(JSON.stringify(i,null,2)):sk(i),process.exitCode=i.ok?0:1,i}var sy={meta:{name:"config",description:"\u7BA1\u7406\u914D\u7F6E"},run:async()=>{await ji({})},subCommands:{show:{meta:{description:"\u663E\u793A\u5408\u5E76\u540E\u7684\u914D\u7F6E\uFF08\u9ED8\u8BA4\u503C + \u5168\u5C40 + \u9879\u76EE\uFF09"},run:async()=>{await UD()}},edit:{meta:{description:"\u4F7F\u7528 $EDITOR \u7F16\u8F91\u914D\u7F6E"},args:{global:{type:"boolean",description:"\u7F16\u8F91\u5168\u5C40\u914D\u7F6E\uFF08~/.best-review/config.json\uFF09",alias:"g"}},run:async({args:e})=>{await VD({global:e.global})}}}};var iy={meta:{name:"doctor",description:"\u68C0\u67E5\u5F53\u524D\u914D\u7F6E\u662F\u5426\u53EF\u4EE5\u76F4\u63A5\u6267\u884C review"},args:{json:{type:"boolean",description:"\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u8BCA\u65AD\u7ED3\u679C"},executor:{type:"string",description:"\u4E34\u65F6\u8986\u76D6\u6267\u884C\u5668\uFF08openai-compatible-api \u6216 deepseek-api\uFF09"},model:{type:"string",description:"\u4E34\u65F6\u8986\u76D6\u6A21\u578B"}},run:async({args:e})=>{await ji({json:e.json,executor:e.executor,model:e.model})}};Ge();M();je();function ik(e){return e.model}function rk(e){if(e)return e.length<=8?"********":`${e.slice(0,4)}...${e.slice(-4)}`}function nk(e){let t=Li(e);if(!t?.settingsSchema)return[];let s=t.settingsSchema;return"shape"in s&&typeof s.shape=="object"?Object.keys(s.shape):[]}async function ry(){let e=await le(process.cwd()),t=e.executor,s=e.executors[t]||{},i=Me({executorOverride:t,config:e});h.plain(`\u6267\u884C\u5668\uFF1A\x1B[36m${t}\x1B[0m`),h.plain(`\u5E73\u53F0\uFF1A${i.platform}`),h.plain(`Base URL\uFF1A${i.baseUrl}`),h.plain(`\u6A21\u578B\uFF1A${i.model}`),h.newline(),h.plain("\u9636\u6BB5\uFF1A");let r=["review","validation"];for(let n of r){let o=s[n],a=[];o?.model&&a.push(`model=${o.model}`),o?.concurrency&&a.push(`concurrency=${o.concurrency}`),o?.batchSize&&a.push(`batchSize=${o.batchSize}`),o?.timeout&&a.push(`timeout=${o.timeout}`);let u=a.length>0?` (${a.join(", ")})`:"";h.plain(` ${n.padEnd(12)} \u2192 ${t}${u}`)}h.newline()}async function ny(e){let t=Li(e),s=await Ni(),i=t?t.applySettings?.({...Me({executorOverride:e,config:await le(process.cwd())})})||t.getInfo():void 0;if(!i){h.error(`\u6267\u884C\u5668\u4E0D\u5B58\u5728\uFF1A${e}`),h.newline(),h.plain("\u53EF\u7528\u6267\u884C\u5668\uFF1A");for(let n of s)h.plain(` \u2022 ${n.name}`);process.exit(1)}if(h.robot(`\u6267\u884C\u5668\uFF1A${i.name}`),h.newline(),h.plain(`\u7C7B\u578B\uFF1A${i.type}`),h.plain(`\u8BF4\u660E\uFF1A${i.description}`),i.type==="api"){h.plain(`Base URL\uFF1A${i.baseUrl||"\uFF08\u672A\u914D\u7F6E\uFF09"}`),h.plain("API Key\uFF1A\u7528\u6237\u7EA7 config.json \u4E2D\u7684 llm.apiKey\uFF08\u517C\u5BB9 API_KEY \u73AF\u5883\u53D8\u91CF\uFF09");let n=rk(i.apiKey);n&&h.plain(`API Key\uFF1A${n}`);let o=ik(i);o&&h.plain(`\u6A21\u578B\uFF1A${o}`),i.maxTokens&&h.plain(`maxTokens\uFF1A${i.maxTokens}`),h.plain(`\u9ED8\u8BA4\u8054\u901A ping\uFF1A${i.readinessPing?"\u5F00\u542F":"\u5173\u95ED"}`),h.plain(`\u6E29\u5EA6\uFF1A${i.temperature??0}`),h.plain(`\u8D85\u65F6\uFF1A${i.timeout||gs}s`)}let r=nk(e);if(r.length>0){h.newline(),h.plain("\u9636\u6BB5\u914D\u7F6E\u5B57\u6BB5\uFF08config.executors.<executor>.<stage>\uFF09\uFF1A");for(let n of r)h.plain(` \u2022 ${n}`)}}var oy={meta:{name:"executors",description:`\u5217\u51FA\u6267\u884C\u5668\uFF0C\u6216\u67E5\u770B\u67D0\u4E2A\u6267\u884C\u5668\u7684\u8BE6\u60C5
|
|
270
270
|
|
|
271
271
|
Examples:
|
|
272
272
|
best-review executors # \u5217\u51FA\u6240\u6709\u6267\u884C\u5668
|
|
273
|
-
best-review executors deepseek-api # \u67E5\u770B DeepSeek \u6267\u884C\u5668\u8BE6\u60C5`},args:{name:{type:"positional",description:"\u6267\u884C\u5668\u540D\u79F0\uFF08\u53EF\u9009\uFF1B\u4F20\u5165\u540E\u5C55\u793A\u8BE6\u60C5\uFF09",required:!1}},run:async({args:e})=>{e.name?await ny(e.name):await ry()}};var kw=require("node:fs/promises"),Iw=require("node:path");Ge();M();ws();M();function py(){return{id:"load-rules",name:"Load Rules",description:"\u52A0\u8F7D\u5339\u914D\u89C4\u5219\u548C Agent",enabled:!0,order:0,execute:async e=>{let t=Date.now(),[s,i]=await Promise.all([At(),e.agents&&e.agents.length>0?Promise.resolve(e.agents):We()]);if(e.ruleFilter&&e.ruleFilter.length>0){let r=new Set(e.ruleFilter);s=s.filter(n=>r.has(n.name))}if(e.excludeRules&&e.excludeRules.length>0){let r=new Set(e.excludeRules);s=s.filter(n=>!r.has(n.name))}if(e.agentFilter&&e.agentFilter.length>0){let r=new Set(e.agentFilter);i=i.filter(n=>r.has(n.name))}if(e.excludeAgents&&e.excludeAgents.length>0){let r=new Set(e.excludeAgents);i=i.filter(n=>!r.has(n.name))}return e.ruleRefs=s,e.agents=i,e.quiet||h.sync(`\u5DF2\u52A0\u8F7D ${s.length} \u6761\u89C4\u5219\uFF0C${i.length} \u4E2A Agent`),{stageId:"load-rules",stageName:"Load Rules",success:!0,duration:Date.now()-t}}}}ws();var pf=/(^|\/)(auth|oauth|login|session|permission|rbac|acl|token|secret|credential|crypto|security|middleware|passport|jwt|key|cert|env)(\/|\.|-|_)/i,mf=/\b(auth|authorize|permission|token|secret|password|credential|jwt|cookie|session|csrf|xss|sql|eval|exec|crypto|encrypt|decrypt|apiKey|privateKey)\b/i,my=/(^|\/)(cache|queue|worker|job|batch|performance|perf|database|db|query|repository|store|index|search|stream)(\/|\.|-|_)/i,gy=/\b(Promise\.all|Promise\.allSettled|readFileSync|writeFileSync|execSync|spawnSync|cache|memo|query\s*\(|select\s*\(|insert\s*\(|update\s*\(|delete\s*\(|findMany|findAll|pagination|paginate|offset|cursor|stream|buffer|nested\s+loop|O\(n\^2\))\b/i,Dy=/(^|\/)(config|types?|schemas?|api|routes?|controllers?|services?|interfaces?|contracts?|registry|shared|common|package\.json|tsconfig|eslint|prettier)(\/|\.|-|_)/i,yy=/\b(export\s+(interface|type|class|function|const)|interface\s+\w+|type\s+\w+\s*=|class\s+\w+|enum\s+\w+|z\.object|defineCommand|ConfigSchema|schema|option|flag|public\s+API|breaking)\b/i,wy=/\b(parseInt|parseFloat|Number\s*\(|isNaN|z\.|zod|schema|validate|validation|args|argv|option|config|env)\b/i,Fa={"code-security":4,"config-security":4,"code-performance":4,"code-general":3,"code-consistency":3};function
|
|
273
|
+
best-review executors deepseek-api # \u67E5\u770B DeepSeek \u6267\u884C\u5668\u8BE6\u60C5`},args:{name:{type:"positional",description:"\u6267\u884C\u5668\u540D\u79F0\uFF08\u53EF\u9009\uFF1B\u4F20\u5165\u540E\u5C55\u793A\u8BE6\u60C5\uFF09",required:!1}},run:async({args:e})=>{e.name?await ny(e.name):await ry()}};var kw=require("node:fs/promises"),Iw=require("node:path");Ge();M();ws();M();function py(){return{id:"load-rules",name:"Load Rules",description:"\u52A0\u8F7D\u5339\u914D\u89C4\u5219\u548C Agent",enabled:!0,order:0,execute:async e=>{let t=Date.now(),[s,i]=await Promise.all([At(),e.agents&&e.agents.length>0?Promise.resolve(e.agents):We()]);if(e.ruleFilter&&e.ruleFilter.length>0){let r=new Set(e.ruleFilter);s=s.filter(n=>r.has(n.name))}if(e.excludeRules&&e.excludeRules.length>0){let r=new Set(e.excludeRules);s=s.filter(n=>!r.has(n.name))}if(e.agentFilter&&e.agentFilter.length>0){let r=new Set(e.agentFilter);i=i.filter(n=>r.has(n.name))}if(e.excludeAgents&&e.excludeAgents.length>0){let r=new Set(e.excludeAgents);i=i.filter(n=>!r.has(n.name))}return e.ruleRefs=s,e.agents=i,e.quiet||h.sync(`\u5DF2\u52A0\u8F7D ${s.length} \u6761\u89C4\u5219\uFF0C${i.length} \u4E2A Agent`),{stageId:"load-rules",stageName:"Load Rules",success:!0,duration:Date.now()-t}}}}ws();var pf=/(^|\/)(auth|oauth|login|session|permission|rbac|acl|token|secret|credential|crypto|security|middleware|passport|jwt|key|cert|env)(\/|\.|-|_)/i,mf=/\b(auth|authorize|permission|token|secret|password|credential|jwt|cookie|session|csrf|xss|sql|eval|exec|crypto|encrypt|decrypt|apiKey|privateKey)\b/i,my=/(^|\/)(cache|queue|worker|job|batch|performance|perf|database|db|query|repository|store|index|search|stream)(\/|\.|-|_)/i,gy=/\b(Promise\.all|Promise\.allSettled|readFileSync|writeFileSync|execSync|spawnSync|cache|memo|query\s*\(|select\s*\(|insert\s*\(|update\s*\(|delete\s*\(|findMany|findAll|pagination|paginate|offset|cursor|stream|buffer|nested\s+loop|O\(n\^2\))\b/i,Dy=/(^|\/)(config|types?|schemas?|api|routes?|controllers?|services?|interfaces?|contracts?|registry|shared|common|package\.json|tsconfig|eslint|prettier)(\/|\.|-|_)/i,yy=/\b(export\s+(interface|type|class|function|const)|interface\s+\w+|type\s+\w+\s*=|class\s+\w+|enum\s+\w+|z\.object|defineCommand|ConfigSchema|schema|option|flag|public\s+API|breaking)\b/i,wy=/\b(parseInt|parseFloat|Number\s*\(|isNaN|z\.|zod|schema|validate|validation|args|argv|option|config|env)\b/i,Fa={"code-security":4,"config-security":4,"code-performance":4,"code-general":3,"code-consistency":3};function hk(e){return e.reduce((t,s)=>t+s.additions+s.deletions,0)}function pk(e){return e.length>10||hk(e)>600}function mk(e){return new Map(e.map(t=>[t.file,t]))}function gf(e,t,s,i){return s.test(e)||!!(t&&i.test(t.diff))}function by(e,t,s,i){let r=t?t.additions+t.deletions:0,n=Math.min(r,300);return s?.test(e)&&(n+=1e3),t&&i?.test(t.diff)&&(n+=500),n}function fn(e,t,s,i,r){if(!s||e.files.length<=s)return e;let n=[...e.files].sort((u,l)=>{let c=by(l,t.get(l),i,r)-by(u,t.get(u),i,r);return c===0?u.localeCompare(l):c}),o=n.slice(0,s),a=n.slice(s);return{files:o,skipped:[...e.skipped,...a]}}function gk(e,t){let s=e.find(i=>i.rule.name==="code-bugs")??e.find(i=>i.agent.name==="bug-hunter")??e.find(i=>i.rule.name==="code-general")??e.find(i=>i.agent.name==="general")??e.find(i=>i.rule.name==="code-consistency")??e.find(i=>i.agent.name==="consistency-check")??e.find(i=>i.rule.name==="config-security");return!s||s.files.length===0?null:{...s,files:t.filter(i=>s.files.includes(i))}}function Dk(e,t,s){let i=e.rule.name,r=e.agent.name,n=pk(t);if(i==="code-security"){let o=Ca(e.files,s,(a,u)=>gf(a,u,pf,mf));return n?fn(o,s,Fa[i],pf,mf):o}if(i==="config-security"&&n)return fn({files:e.files,skipped:[]},s,Fa[i],pf,mf);if(i==="code-performance"){let o=Ca(e.files,s,(a,u)=>gf(a,u,my,gy));return n?fn(o,s,Fa[i],my,gy):o}if(i==="code-consistency"&&n){let o=Ca(e.files,s,(a,u)=>gf(a,u,Dy,yy));return fn(o,s,Fa[i],Dy,yy)}if((i.includes("validation")||r==="general")&&e.rule.source!=="defaults"&&n){let o=Ca(e.files,s,(a,u)=>!!(u&&wy.test(u.diff)));return fn(o,s,4,void 0,wy)}return{files:e.files,skipped:[]}}function yk(e,t){let s=new Set(t.files);for(let i=e.length-1;i>=0;i-=1){let r=e[i];!r||r.rule!==t.rule.name||r.agent!==t.agent.name||(r.files=r.files.filter(n=>!s.has(n)),r.files.length===0&&e.splice(i,1))}}function wk(e,t,s,i){let r=i.map(l=>l.file),n=new Set(e.flatMap(l=>l.files)),o=r.filter(l=>!n.has(l));if(o.length===0)return;let a=gk(s,o);if(!a||a.files.length===0)return;let u=e.find(l=>l.rule.name===a.rule.name&&l.agent.name===a.agent.name);if(u){let l=new Set([...u.files,...a.files]);u.files=r.filter(c=>l.has(c))}else e.push(a);yk(t,a)}function Ca(e,t,s){let i=[],r=[];for(let n of e)s(n,t.get(n))?i.push(n):r.push(n);return{files:i,skipped:r}}function vy(e,t,s={}){if(s.explicitRuleOrAgentFilter||process.env.BEST_REVIEW_DISABLE_SMART_ROUTING==="true")return{matched:e,skipped:[]};let i=mk(t),r=[],n=[];for(let o of e){let a=Dk(o,t,i);a.files.length>0&&r.push({...o,files:a.files}),a.skipped.length>0&&n.push({rule:o.rule.name,agent:o.agent.name,files:a.skipped,reason:"\u9ED8\u8BA4\u89C4\u5219\u76F8\u5173\u6027\u4E0D\u8DB3\uFF0C\u5DF2\u8DF3\u8FC7\u4EE5\u51CF\u5C11\u65E0\u6548 Agent \u8C03\u7528"})}return wk(r,n,e,t),{matched:r,skipped:n}}M();function Ey(){return{id:"match-rules",name:"Match Rules",description:"\u5C06\u89C4\u5219\u5339\u914D\u5230\u6587\u4EF6",enabled:!0,order:1,execute:async e=>{let t=Date.now(),s=e.ruleRefs??[],i=e.agents??[],r=await df(s,e.diffs,i),n=vy(r,e.diffs,{explicitRuleOrAgentFilter:!!(e.ruleFilter&&e.ruleFilter.length>0)||!!(e.agentFilter&&e.agentFilter.length>0)});e.matchedRules=n.matched;let o=e.diffs.length,a=new Set(n.matched.flatMap(f=>f.files)),u=e.diffs.map(f=>f.file).filter(f=>!a.has(f)),l=o-u.length,c=o===0?1:l/o;if(!e.quiet){h.sync(`\u5DF2\u5339\u914D ${n.matched.length} \u6761\u89C4\u5219`);for(let f of n.matched)h.plain(` ${f.rule.name}\uFF1A${f.files.length} \u4E2A\u6587\u4EF6 \u2192 ${f.agent.name}`);if(n.skipped.length>0){let f=n.skipped.reduce((d,p)=>d+p.files.length,0);h.info(`\u667A\u80FD\u8DEF\u7531\u5DF2\u8DF3\u8FC7 ${n.skipped.length} \u6761\u4F4E\u76F8\u5173\u89C4\u5219\u547D\u4E2D\uFF08${f} \u4E2A\u6587\u4EF6\u547D\u4E2D\uFF09\uFF0C\u53EF\u7528 BEST_REVIEW_DISABLE_SMART_ROUTING=true \u5173\u95ED`)}}return{stageId:"match-rules",stageName:"Match Rules",success:!0,duration:Date.now()-t,output:{matchedRules:n.matched.length,skippedRuleMatches:n.skipped.length,skippedFiles:n.skipped.reduce((f,d)=>f+d.files.length,0),totalDiffFiles:o,coveredFiles:l,uncoveredFiles:u,coverageRate:c}}}}}function qt(e){if(e<1)throw new Error("Concurrency must be at least 1");let t=[],s=0,i=()=>{s--,t.length>0&&t.shift()?.()};return r=>new Promise((n,o)=>{let a=async()=>{s++;try{let u=await r();n(u)}catch(u){o(u)}finally{i()}};s<e?a():t.push(a)})}function Ut(){return{requests:0,modelCalls:0,cachedCalls:0,promptTokens:0,completionTokens:0,totalTokens:0,savedTokens:0,estimated:!1}}function bs(e,t,s={}){let i={...e,requests:e.requests+1};return s.cacheHit?(i.cachedCalls+=1,i.savedTokens+=t?.totalTokens??0,i):(i.modelCalls+=1,t?(i.promptTokens+=t.promptTokens,i.completionTokens+=t.completionTokens,i.totalTokens+=t.totalTokens,i.estimated=i.estimated||t.estimated,i):(i.estimated=!0,i))}function dn(e){let t=Ut();for(let s of e)s&&(t={requests:t.requests+s.requests,modelCalls:t.modelCalls+s.modelCalls,cachedCalls:t.cachedCalls+s.cachedCalls,promptTokens:t.promptTokens+s.promptTokens,completionTokens:t.completionTokens+s.completionTokens,totalTokens:t.totalTokens+s.totalTokens,savedTokens:t.savedTokens+s.savedTokens,estimated:t.estimated||s.estimated});return t}function Fy(e){return dn(e.map(t=>t.usage))}M();var bk="tech-doc-requirements",vk=14e3;function Ek(e,t=vk){if(e.length<=t)return[e];let s=[],i=0;for(;i<e.length;){let r=Math.min(i+t,e.length);if(r<e.length){let n=e.lastIndexOf(`
|
|
274
274
|
|
|
275
|
-
`,r);n>i+Math.floor(t*.5)&&(r=n+2)}s.push(e.slice(i,r)),i=r}return s}function
|
|
276
|
-
${i.description}`.toLowerCase().replace(/\s+/g," ");t.has(r)||(t.add(r),s.push(i))}return s}function
|
|
277
|
-
`)}function
|
|
278
|
-
${e.diff}`;return St(t)}var Sy=36e3,Ay=20;function
|
|
275
|
+
`,r);n>i+Math.floor(t*.5)&&(r=n+2)}s.push(e.slice(i,r)),i=r}return s}function Fk(e){let s=e.match(/<json>\s*([\s\S]*?)\s*<\/json>/i)?.[1]??e.trim(),i=JSON.parse(s);if(!Array.isArray(i.requirements))throw new Error("\u6280\u672F\u6587\u6863\u5F85\u529E\u70B9\u62BD\u53D6\u8F93\u51FA\u7F3A\u5C11 requirements \u6570\u7EC4");return i}function Ck(e){return e==="must"||e==="should"||e==="nice-to-have"?e:"should"}function Cy(e){return Array.isArray(e)?e.map(t=>String(t).trim()).filter(Boolean):[]}function xk(e,t){let s=typeof e.title=="string"?e.title.trim():"",i=typeof e.description=="string"?e.description.trim():"";if(!s&&!i)return null;let r=typeof e.sourceLocation=="string"?e.sourceLocation:typeof e.source_location=="string"?e.source_location:void 0,n=typeof e.sourceQuote=="string"?e.sourceQuote:typeof e.source_quote=="string"?e.source_quote:void 0,o=[...Cy(e.acceptanceSignals),...Cy(e.acceptance_signals)];return{id:typeof e.id=="string"&&e.id.trim()?e.id.trim():`TD-${t+1}`,title:s||i.slice(0,50),description:i||s,acceptanceSignals:o,...r&&{sourceLocation:r},...n&&{sourceQuote:n},priority:Ck(e.priority)}}function Sk(e){let t=new Set,s=[];for(let i of e){let r=`${i.title}
|
|
276
|
+
${i.description}`.toLowerCase().replace(/\s+/g," ");t.has(r)||(t.add(r),s.push(i))}return s}function Ak(e,t,s){return["# Tech Document Requirement Extraction","",`Chunk: ${t+1}/${s}`,"","\u8BF7\u4ECE\u4E0B\u9762\u6280\u672F\u6587\u6863\u7247\u6BB5\u4E2D\u62BD\u53D6\u6240\u6709\u53EF\u9A8C\u6536\u5F85\u529E\u70B9\u3002","\u5FC5\u987B\u8986\u76D6 checkbox\u3001TODO\u3001\u9A8C\u6536\u6807\u51C6\u3001\u4EE5\u53CA\u201C\u5FC5\u987B/\u9700\u8981/\u5E94\u5F53/\u4E0D\u5F97/\u9700\u652F\u6301\u201D\u7B49\u5F3A\u7EA6\u675F\u9700\u6C42\u3002","\u4E0D\u8981\u62BD\u53D6\u7EAF\u80CC\u666F\u3001\u613F\u666F\u3001\u53EF\u9009\u8BA8\u8BBA\u6216\u65E0\u6CD5\u901A\u8FC7\u4EE3\u7801 diff \u9A8C\u8BC1\u7684\u63CF\u8FF0\u3002","","\u53EA\u8FD4\u56DE <json>...</json> \u5305\u88F9\u7684\u5BF9\u8C61\uFF0C\u683C\u5F0F\uFF1A",'<json>{"requirements":[{"id":"REQ-1","title":"...","description":"...","acceptanceSignals":["..."],"sourceLocation":"...","sourceQuote":"...","priority":"must|should|nice-to-have"}]}</json>',"","# Document Chunk",e].join(`
|
|
277
|
+
`)}function Rk(){return{name:bk,description:"\u4ECE\u6280\u672F\u6587\u6863\u4E2D\u62BD\u53D6\u53EF\u9A8C\u6536\u5F85\u529E\u70B9",systemPrompt:"\u4F60\u662F best-review \u7684\u6280\u672F\u6587\u6863\u5F85\u529E\u70B9\u62BD\u53D6 Agent\u3002\u4F60\u53EA\u8D1F\u8D23\u4ECE\u6587\u6863\u4E2D\u5B8C\u6574\u62BD\u53D6\u53EF\u901A\u8FC7\u4EE3\u7801 diff \u9A8C\u6536\u7684\u8981\u6C42\uFF0C\u4E0D\u8BC4\u5BA1\u4EE3\u7801\u3002",enabled:!0,order:1,stage:"review"}}function xy(){return{id:"tech-doc-requirements",name:"Tech Doc Requirements",description:"\u62BD\u53D6\u6280\u672F\u6587\u6863\u4E2D\u7684\u53EF\u9A8C\u6536\u5F85\u529E\u70B9",enabled:!0,order:1.5,execute:async e=>{let t=Date.now();if(!e.techDoc)return{stageId:"tech-doc-requirements",stageName:"Tech Doc Requirements",success:!0,duration:Date.now()-t,output:{skipped:!0}};if(!e.config)return{stageId:"tech-doc-requirements",stageName:"Tech Doc Requirements",success:!1,duration:Date.now()-t,error:"Pipeline \u4E0A\u4E0B\u6587\u4E2D\u7684 config \u5C1A\u672A\u521D\u59CB\u5316"};let s=e.config.executor,i=he.get(s);if(!i)return{stageId:"tech-doc-requirements",stageName:"Tech Doc Requirements",success:!1,duration:Date.now()-t,error:`\u6267\u884C\u5668\u4E0D\u5B58\u5728\uFF1A${s}`};let r=Ek(e.techDoc.rawContent),n=Rk(),o=Ds(e.config,e.modelOverride,s),a=i.applySettings?i.applySettings(o):i.getInfo(),u=Ut(),l=qt(e.concurrency),c=await Promise.all(r.map((p,m)=>l(async()=>{let g={agent:n,executor:a,input:Ak(p,m,r.length),systemPrompt:n.systemPrompt,verbose:e.verbose,quiet:e.quiet,stream:e.stream,cwd:e.metadata.repository,modelOverride:e.modelOverride,outputMode:"text"};return he.executeAgent(g)}))),f=c.find(p=>!p.success);if(f)return{stageId:"tech-doc-requirements",stageName:"Tech Doc Requirements",success:!1,duration:Date.now()-t,error:f.error||"\u6280\u672F\u6587\u6863\u5F85\u529E\u70B9\u62BD\u53D6\u5931\u8D25"};let d=Sk(c.flatMap((p,m)=>(u=bs(u,p.usage),Fk(p.output).requirements.map((D,w)=>xk(D,m*1e3+w)).filter(D=>D!==null))));return e.techDoc.requirements=d,e.techDoc.coverage={assessedRequirementIds:[],unmappedRequirements:[]},e.usage=dn([e.usage,u]),e.quiet||h.info(`\u6280\u672F\u6587\u6863\u5F85\u529E\u70B9\uFF1A\u62BD\u53D6 ${d.length} \u6761\u53EF\u9A8C\u6536\u8981\u6C42`),{stageId:"tech-doc-requirements",stageName:"Tech Doc Requirements",success:!0,duration:Date.now()-t,output:{totalRequirements:d.length,chunks:r.length}}}}}var xa=class{items=new Map;register(t){this.items.set(t.name,t)}get(t){return this.items.get(t)}list(){return Array.from(this.items.values())}remove(t){this.items.delete(t)}clear(){this.items.clear()}count(){return this.items.size}};var Df=class extends xa{listEnabled(){return this.list().filter(t=>t.enabled)}enable(t){let s=this.get(t);s&&(s.enabled=!0)}disable(t){let s=this.get(t);s&&(s.enabled=!1)}setExecutor(t,s){let i=this.get(t);i&&(i.executor=s)}countEnabled(){return this.list().filter(t=>t.enabled).length}},qi=new Df;Ge();function kk(e){let t=`File: ${e.file}
|
|
278
|
+
${e.diff}`;return St(t)}var Sy=36e3,Ay=20;function Ik(){let e=process.env.BEST_REVIEW_BATCH_TOKENS,t=e?parseInt(e,10):Sy,s=process.env.BEST_REVIEW_MAX_FILES_PER_BATCH,i=s?parseInt(s,10):Ay;return{maxTokensPerBatch:isNaN(t)?Sy:t,maxFilesPerBatch:isNaN(i)||i<1?Ay:i}}function hn(e,t,s,i){let r=s||Ik(),n=[],o=St(t),a=r.maxTokensPerBatch-o-1e3,u=p=>i?.(p),l=p=>{let m=u(p);return m===void 0?p.reduce((g,D)=>g+kk(D),0):St(m)},c=p=>{let m=u(p);return{diffs:p,tokenCount:(m===void 0?l(p):St(m))+o,batchIndex:n.length,...m!==void 0&&{input:m}}},f=[],d=0;for(let p of e){let m=l([p]);if(m>a){f.length>0&&(n.push(c(f)),f=[],d=0),n.push(c([p]));continue}let g=[...f,p];((i?l(g):d+m)>a||f.length>=r.maxFilesPerBatch)&&f.length>0&&(n.push(c(f)),f=[],d=0),f.push(p),d=i?l(f):d+m}return f.length>0&&n.push(c(f)),n}function Ry(e,t=!1){let s=e.diffs.length,i=e.tokenCount.toLocaleString();if(t){let r=e.diffs.map(n=>` ${n.file}`).join(`
|
|
279
279
|
`);return`Batch ${e.batchIndex+1}: ${s} file(s), ~${i} tokens
|
|
280
280
|
Files:
|
|
281
|
-
${r}`}return`Batch ${e.batchIndex+1}: ${s} file(s), ~${i} tokens`}yr();var Sa=require("node:fs/promises"),st=require("node:path"),ky=gt(Ic(),1);M();$i();Fi();async function yf(e){try{let{access:t}=await import("node:fs/promises");return await t(e),!0}catch{return!1}}async function Iy(e){let t=(0,st.join)(e,"skills");if(!await yf(t))return[];try{return(await Je("*/SKILL.md",{cwd:t})).map(r=>(0,st.join)(t,(0,st.dirname)(r)))}catch{return[]}}async function
|
|
281
|
+
${r}`}return`Batch ${e.batchIndex+1}: ${s} file(s), ~${i} tokens`}yr();var Sa=require("node:fs/promises"),st=require("node:path"),ky=gt(Ic(),1);M();$i();Fi();async function yf(e){try{let{access:t}=await import("node:fs/promises");return await t(e),!0}catch{return!1}}async function Iy(e){let t=(0,st.join)(e,"skills");if(!await yf(t))return[];try{return(await Je("*/SKILL.md",{cwd:t})).map(r=>(0,st.join)(t,(0,st.dirname)(r)))}catch{return[]}}async function _k(e){let t=(0,st.join)(e,"agents","agent.yaml");if(await yf(t))try{let i=await(0,Sa.readFile)(t,"utf-8"),r=ky.default.parse(i);if(!r||!r.interface)return;let n=r.interface,o=r.review_policy;return{displayName:String(n.display_name??""),shortDescription:String(n.short_description??""),defaultPrompt:String(n.default_prompt??""),reviewPolicy:o?{outputLanguage:o.output_language,outputFormat:o.output_format,autoFixLevels:o.auto_fix_levels,autoFixAction:o.auto_fix_action,suggestLevels:o.suggest_levels}:void 0}}catch{return}}async function $k(e){let t=(0,st.join)(e,"references");if(!await yf(t))return[];try{let i=await Je("*.md",{cwd:t});return(await Promise.all(i.map(async n=>{let o=(0,st.join)(t,n);try{let a=await(0,Sa.readFile)(o,"utf-8");return{name:(0,st.basename)(n,".md"),path:o,content:a}}catch{return null}}))).filter(n=>n!==null)}catch{return[]}}async function _y(e){let t=(0,st.join)(e,"SKILL.md");try{let s=await(0,Sa.readFile)(t,"utf-8"),{frontmatter:i,body:r}=Ps(s),n=typeof i.name=="string"?i.name:(0,st.basename)(e),o=typeof i.description=="string"?i.description:"",[a,u]=await Promise.all([$k(e),_k(e)]);return{name:n,description:o,enabled:!0,prompt:r.trim(),path:e,source:"project",references:a,agentConfig:u}}catch(s){return h.warn(`Failed to load skill from ${e}: ${s instanceof Error?s.message:String(s)}`),null}}async function wf(e,t){let s=`${Ne.SKILLS}:${e}`,i=await pt(s,async()=>{let r=await Iy(e);return r.length===0?[]:(await Promise.all(r.map(n=>_y(n)))).filter(n=>n!==null)});return t?.skills?i.map(r=>{let n=t.skills[r.name];return n?.enabled===void 0?r:{...r,enabled:n.enabled}}):i}function Ui(e){let t=e.filter(i=>i.enabled);if(t.length===0)return"";let s=[];for(let i of t){let r=[];r.push(`# Skill: ${i.name}`),i.description&&r.push(`> ${i.description}`),r.push(""),r.push(i.prompt);for(let n of i.references)r.push(""),r.push(`## Reference: ${n.name}`),r.push(""),r.push(n.content);s.push(r.join(`
|
|
282
282
|
`))}return`## Skill-Enhanced Review Guidelines
|
|
283
283
|
|
|
284
284
|
${s.join(`
|
|
@@ -287,11 +287,11 @@ ${s.join(`
|
|
|
287
287
|
|
|
288
288
|
## End Skill Guidelines`}M();var $y=require("node:crypto"),Vt=require("node:fs/promises"),Aa=require("node:path"),Vi=1,bf=".best-review/cache/review",vf=".best-review/cache/validation";function Ty(e){return(0,$y.createHash)("sha256").update(e).digest("hex")}function Ra(){let e=process.env.BEST_REVIEW_CACHE;return e===void 0?process.env.BEST_REVIEW_DISABLE_CACHE!=="true":["1","true","yes","on"].includes(e.toLowerCase())}function Py(e){return Ty(JSON.stringify({version:Vi,...e}))}function By(e){return Ty(JSON.stringify({version:Vi,...e}))}function ka(e,t,s){return(0,Aa.join)(e,t,`${s}.json`)}async function Oy(e,t){if(!Ra())return null;try{let s=await(0,Vt.readFile)(ka(e,bf,t),"utf-8"),i=JSON.parse(s);return i.version!==Vi||i.key!==t||!Array.isArray(i.issues)?null:i}catch{return null}}async function Ly(e,t){if(!Ra())return;let s={...t,version:Vi,createdAt:Date.now()};try{let i=ka(e,bf,t.key);await(0,Vt.mkdir)((0,Aa.join)(e,bf),{recursive:!0}),await(0,Vt.writeFile)(i,`${JSON.stringify(s,null,2)}
|
|
289
289
|
`,"utf-8")}catch{}}async function Ny(e,t){if(!Ra())return null;try{let s=await(0,Vt.readFile)(ka(e,vf,t),"utf-8"),i=JSON.parse(s);return i.version!==Vi||i.key!==t||typeof i.success!="boolean"||!Array.isArray(i.validIds)||!Array.isArray(i.validatedIssues)||!Array.isArray(i.filteredIssues)?null:i}catch{return null}}async function Ef(e,t){if(!Ra())return;let s={...t,version:Vi,createdAt:Date.now()};try{let i=ka(e,vf,t.key);await(0,Vt.mkdir)((0,Aa.join)(e,vf),{recursive:!0}),await(0,Vt.writeFile)(i,`${JSON.stringify(s,null,2)}
|
|
290
|
-
`,"utf-8")}catch{}}M();function My(e,t){if(t<1)throw new Error("Chunk size must be at least 1");let s=[];for(let i=0;i<e.length;i+=t)s.push(e.slice(i,i+t));return s}function
|
|
290
|
+
`,"utf-8")}catch{}}M();function My(e,t){if(t<1)throw new Error("Chunk size must be at least 1");let s=[];for(let i=0;i<e.length;i+=t)s.push(e.slice(i,i+t));return s}function Tk(e){let{label:t,batchIndex:s,totalBatches:i,itemCount:r,itemName:n="item"}=e;if(i===1)return r!==void 0?`${t} (${r} ${n}${r!==1?"s":""})...`:`${t}...`;let o=`batch ${s+1}/${i}`;return r!==void 0?`${t} (${o}, ${r} ${n}${r!==1?"s":""})...`:`${t} (${o})...`}function Ia(e){let t=e.filter(i=>!!i);if(t.length===0)return;let s=[...new Set(t)];return s.length===1&&t.length>1?`${s[0]} (${t.length} batches)`:s.join("; ")}async function _a(e,t,s,i,r){let n=Date.now(),o=Tk(e),a=t?null:new On(o);try{a?.start();let u=await s(),l=Date.now()-n;if(u.success){let c=i?i(u.data,l):`${e.label} (${l}ms)`;a?.succeed(c)}else{let c=r?r(u.error||"Unknown error"):`${e.label}: ${u.error}`;a?.fail(c)}return{...u,duration:l}}catch(u){let l=Date.now()-n,c=u instanceof Error?u.message:String(u),f=r?r(c):`${e.label}: ${c}`;return a?.fail(f),{success:!1,data:void 0,error:c,duration:l}}finally{a?.stop()}}function jy(e){return e.every(t=>t.success)}function qy(e){return e.filter(t=>!t.success)}M();function Ff(e){return e==="changed-file"?2e4:12e3}function vs(e,t,s=Ff(t)){if(e.length<=s)return e;let i=`
|
|
291
291
|
... \u5DF2\u622A\u65AD ${t} \u4E0A\u4E0B\u6587\uFF0C\u539F\u59CB\u957F\u5EA6 ${e.length} \u5B57\u7B26 ...`,r=Math.max(0,s-i.length);return r===0?`${e.slice(0,s)}${i}`:`${e.slice(0,r)}${i}`}function Ta(e){return["## GitLab Merge Request \u8F93\u51FA\u7EA6\u675F","- \u672C\u6B21\u8F93\u5165\u6765\u81EA GitLab Merge Request \u8FDC\u7A0B diff\u3002",`- \u6700\u7EC8\u8F93\u51FA\u7684 issue.file \u53EA\u80FD\u662F\u8FD9\u4E9B MR \u53D8\u66F4\u6587\u4EF6\u4E4B\u4E00\uFF1A${e.join(", ")}`,"- prompt \u4E2D\u51FA\u73B0\u7684 dependency context \u53EA\u53EF\u4F5C\u4E3A\u63A8\u7406\u4E0A\u4E0B\u6587\uFF0C\u7EDD\u5BF9\u4E0D\u80FD\u4F5C\u4E3A\u6700\u7EC8 issue.file\u3002","- \u5982\u679C\u95EE\u9898\u6210\u56E0\u53D1\u751F\u5728\u4F9D\u8D56\u6587\u4EF6\uFF0C\u8BF7\u5728 evidence \u6216 fullDescription \u4E2D\u8BF4\u660E\uFF0C\u5E76\u628A issue \u4ECD\u7136\u951A\u5B9A\u5230\u5BF9\u5E94\u7684 MR \u53D8\u66F4\u6587\u4EF6\u3002"].join(`
|
|
292
292
|
`)}function pn(){return["## \u8D44\u6DF1\u5DE5\u7A0B\u5E08\u5BA1\u67E5\u6807\u51C6","- \u5FC5\u987B\u9010\u4E2A\u8986\u76D6\u8F93\u5165\u4E2D\u7684\u6BCF\u4E2A `File:` block\uFF1B\u5982\u679C\u67D0\u4E2A\u6587\u4EF6\u6CA1\u6709\u95EE\u9898\uFF0C\u4E5F\u8981\u5148\u5B8C\u6210\u5BA1\u67E5\u5224\u65AD\u518D\u7EE7\u7EED\u4E0B\u4E00\u4E2A\u6587\u4EF6\u3002","- \u7ED3\u5408 Full File Context \u548C Dependency Context \u63A8\u65AD\u672C\u6B21 diff \u7684\u771F\u5B9E\u6267\u884C\u8DEF\u5F84\u3001\u8C03\u7528\u65B9\u5F71\u54CD\u548C\u8DE8\u6587\u4EF6\u5951\u7EA6\u53D8\u5316\u3002","- \u4EE5\u8D44\u6DF1\u5F00\u53D1\u5DE5\u7A0B\u5E08\u7684\u5408\u5E76\u95E8\u69DB\u505A\u5224\u65AD\uFF0C\u4E0D\u8F93\u51FA\u6CDB\u6CDB\u7684\u4EE3\u7801\u5EFA\u8BAE\u3002","- \u6BCF\u6761\u95EE\u9898\u90FD\u5FC5\u987B\u540C\u65F6\u8BF4\u660E\uFF1A\u5931\u6548\u6A21\u5F0F\u3001\u771F\u5B9E\u5F71\u54CD\u3001\u4EE3\u7801\u8BC1\u636E\u3001\u5177\u4F53\u4FEE\u6CD5\u3002","- \u6CA1\u6709\u5F53\u524D\u53EF\u89C2\u5BDF\u7684\u5931\u8D25\u8DEF\u5F84\u3001\u9519\u8BEF\u7ED3\u679C\u3001\u8BEF\u5BFC\u98CE\u9669\u6216\u7EF4\u62A4\u98CE\u9669\u65F6\uFF0C\u4E0D\u8981\u62A5\u95EE\u9898\u3002","- medium/low \u4E0D\u662F\u653E\u5BBD\u6807\u51C6\uFF1B\u5F71\u54CD\u9762\u53EF\u4EE5\u66F4\u5C0F\uFF0C\u4F46\u8BBA\u8BC1\u5F3A\u5EA6\u5FC5\u987B\u548C high \u4E00\u6837\u624E\u5B9E\u3002","- style \u53EA\u6709\u5728\u4F1A\u9020\u6210\u7406\u89E3\u504F\u5DEE\u3001\u8BEF\u7528\u98CE\u9669\u3001\u7EF4\u62A4\u6210\u672C\u4E0A\u5347\u6216\u56E2\u961F\u7EA6\u5B9A\u5931\u6548\u65F6\u624D\u4FDD\u7559\u3002","- docs \u53EA\u6709\u5728\u4F1A\u5BFC\u81F4\u9519\u8BEF\u4F7F\u7528\u3001\u9519\u8BEF\u5B9E\u73B0\u3001\u63A5\u53E3\u5951\u7EA6\u8BEF\u89E3\u6216\u6392\u969C\u8BEF\u5BFC\u65F6\u624D\u4FDD\u7559\u3002","- \u7981\u6B62\u8F93\u51FA\u8FD9\u7C7B\u7ED3\u8BBA\uFF1A\u5EFA\u8BAE\u4F18\u5316\u4E00\u4E0B\u3001\u6700\u597D\u91CD\u6784\u3001\u547D\u540D\u4E0D\u7EDF\u4E00\u3001\u53EF\u4EE5\u8865\u5145\u6587\u6863\u3001\u957F\u671F\u7EF4\u62A4\u4F1A\u66F4\u597D\u3002","- \u5982\u679C\u4E0D\u80FD\u660E\u786E\u8BF4\u51FA\u201C\u73B0\u5728\u4F1A\u600E\u4E48\u9519\u3001\u8C01\u4F1A\u53D7\u5F71\u54CD\u3001\u5E94\u8BE5\u5177\u4F53\u6539\u54EA\u91CC\u201D\uFF0C\u5C31\u4E0D\u8981\u8F93\u51FA\u8BE5\u95EE\u9898\u3002"].join(`
|
|
293
|
-
`)}function
|
|
294
|
-
`)}function
|
|
293
|
+
`)}function Pk(e){return["# Repository Context",`Base path: ${e.metadata.repository}`,"All file paths below are relative to this directory.","Use only the diff and context included in this prompt; paths are relative to the base path.",e.metadata.baseRef?`Base ref: ${e.metadata.baseRef}`:null,e.metadata.headRef?`Head ref: ${e.metadata.headRef}`:null].filter(Boolean).join(`
|
|
294
|
+
`)}function Bk(e,t){let s=e.map(i=>{let r=t.get(i.file);return r?`- ${i.file}: rule="${r}"`:null}).filter(Boolean);return s.length>0?`
|
|
295
295
|
|
|
296
296
|
# File-Rule Mappings
|
|
297
297
|
|
|
@@ -300,7 +300,7 @@ ${s.join(`
|
|
|
300
300
|
`)}`:""}function Uy(e){return vs(e.content,e.role,Ff(e.role))}function $a(e,t){return e.role==="changed-file"?t.has(e.file):!e.relatedFiles||e.relatedFiles.length===0?!0:e.relatedFiles.some(s=>t.has(s))}function Cf(e,t){if(!t||t.length===0)return"";let s=new Set;for(let o of e)s.add(o.file),o.oldPath&&s.add(o.oldPath),o.newPath&&s.add(o.newPath);let i=t.filter(o=>o.role==="changed-file"&&$a(o,s)),r=t.filter(o=>o.role==="dependency"&&$a(o,s)),n=[];return i.length>0&&n.push("# Full File Context","",...i.flatMap(o=>[`File: ${o.file}`,`Source: ${o.source}@${o.ref}`,Uy(o),""])),r.length>0&&n.push("# Dependency Context","",...r.flatMap(o=>[`File: ${o.file}`,`Source: ${o.source}@${o.ref}`,o.relatedFiles&&o.relatedFiles.length>0?`Related to: ${o.relatedFiles.join(", ")}`:"Related to: unknown",Uy(o),""])),n.length>0?`
|
|
301
301
|
|
|
302
302
|
${n.join(`
|
|
303
|
-
`)}`:""}function Qs(e,t,s){return`${
|
|
303
|
+
`)}`:""}function Qs(e,t,s){return`${Pk(s)}${Bk(e,t)}
|
|
304
304
|
|
|
305
305
|
${e.map(i=>`File: ${i.file}
|
|
306
306
|
${i.diff}`).join(`
|
|
@@ -308,20 +308,20 @@ ${i.diff}`).join(`
|
|
|
308
308
|
`)}${Cf(e,s.supplementalContextFiles)}`}function Vy(e,t,s){let i=new Map;for(let a of e)i.set(a.rule.name,a);let r=Array.from(i.keys()).join(", "),n=["\u4F60\u662F best-review \u7684\u5FEB\u901F\u5408\u5E76\u4EE3\u7801\u5BA1\u67E5 Agent\u3002\u8BF7\u5728\u4E00\u6B21\u6A21\u578B\u8C03\u7528\u4E2D\u5B8C\u6210\u7F3A\u9677\u3001\u5B89\u5168\u3001\u6027\u80FD\u3001\u901A\u7528\u8D28\u91CF\u548C\u4E00\u81F4\u6027\u5BA1\u67E5\uFF0C\u907F\u514D\u91CD\u590D\u5206\u6790\u3002","","## \u5BA1\u67E5\u4F18\u5148\u7EA7","","1. \u9996\u5148\u627E\u4F1A\u5BFC\u81F4\u9519\u8BEF\u7ED3\u679C\u3001\u5D29\u6E83\u3001\u6570\u636E\u635F\u574F\u3001\u8D8A\u6743\u3001\u654F\u611F\u4FE1\u606F\u6CC4\u9732\u6216\u5173\u952E\u94FE\u8DEF\u4E0D\u53EF\u7528\u7684\u771F\u5B9E\u95EE\u9898\u3002","2. \u5176\u6B21\u627E\u6709\u660E\u786E\u8BC1\u636E\u7684\u9AD8\u98CE\u9669\u6027\u80FD\u9000\u5316\u3001\u914D\u7F6E\u9519\u8BEF\u3001\u516C\u5171\u63A5\u53E3\u4E0D\u517C\u5BB9\u548C\u7EF4\u62A4\u6027\u95EE\u9898\u3002","3. \u4E2D\u4F4E\u98CE\u9669\u4E5F\u8981\u6536\u96C6\uFF0C\u4F46\u5FC5\u987B\u50CF\u8D44\u6DF1\u5DE5\u7A0B\u5E08\u4E00\u6837\u5199\u6E05\u5931\u6548\u6A21\u5F0F\u3001\u771F\u5B9E\u5F71\u54CD\u548C\u5177\u4F53\u4FEE\u6CD5\uFF0C\u4E0D\u8F93\u51FA\u6CDB\u6CDB\u5EFA\u8BAE\u3002","","## \u4E25\u91CD\u7EA7\u522B\u7EA6\u675F","","- critical\uFF1A\u53EA\u7528\u4E8E\u8BC1\u636E\u660E\u786E\u3001\u5F71\u54CD\u4E25\u91CD\u3001\u53EF\u8FBE\u8DEF\u5F84\u6E05\u695A\u7684\u95EE\u9898\u3002","- high\uFF1A\u5FC5\u987B\u7ED9\u51FA\u63A8\u8350\u5199\u6CD5\u6216\u5177\u4F53\u4FEE\u590D\u65B9\u6848\uFF0C\u4E0D\u80FD\u53EA\u4E0B\u5224\u65AD\u3002","- medium/low\uFF1A\u53EA\u4FDD\u7559\u771F\u5B9E\u3001\u53EF\u590D\u8FF0\u5931\u6548\u6A21\u5F0F\u7684\u95EE\u9898\uFF0C\u4E0D\u7528\u6765\u51D1\u6570\u91CF\u3002","- style/docs\uFF1A\u53EA\u6709\u5728\u4F1A\u8BEF\u5BFC\u5B9E\u73B0\u3001\u8BEF\u5BFC\u4F7F\u7528\u3001\u7834\u574F\u7EA6\u5B9A\u6216\u5E26\u6765\u771F\u5B9E\u7EF4\u62A4\u98CE\u9669\u65F6\u624D\u4FDD\u7559\u3002","","## \u8F93\u51FA\u7EA6\u675F","","- \u9010\u4E2A\u8986\u76D6\u8F93\u5165\u4E2D\u7684\u6BCF\u4E2A `File:` block\uFF1B\u7ED3\u5408\u672C\u6B21 diff\u3001Full File Context \u548C Dependency Context \u5224\u65AD\u3002","- \u4E0D\u8981\u8C03\u7528\u4EFB\u4F55\u5DE5\u5177\uFF0C\u4E0D\u8981\u8BFB\u53D6\u4ED3\u5E93\u6587\u4EF6\uFF0C\u4E0D\u8981\u8FD0\u884C\u547D\u4EE4\u3001\u5168\u4ED3\u641C\u7D22\u6216\u8054\u7F51\uFF1B\u4E0A\u4E0B\u6587\u4E0D\u8DB3\u65F6\u76F4\u63A5\u4E0D\u62A5\u3002","- \u6BCF\u6761\u95EE\u9898\u5FC5\u987B\u6709\u6587\u4EF6\u3001\u884C\u53F7\u3001\u8BC1\u636E\u3001\u771F\u5B9E\u5F71\u54CD\u548C\u5177\u4F53\u5EFA\u8BAE\u3002","- \u6BCF\u6761\u95EE\u9898\u5FC5\u987B\u8F93\u51FA\u6574\u6570 confidence\uFF1B\u65E0\u6CD5\u7ED9\u51FA confidence >= 70 \u65F6\u4E0D\u8981\u62A5\u544A\u3002","- critical/high \u5FC5\u987B\u540C\u65F6\u6709\u7CBE\u51C6\u8BC1\u636E\u3001\u53EF\u8FBE\u8DEF\u5F84\u548C\u5177\u4F53\u4FEE\u590D\u5199\u6CD5\uFF1B\u7F3A\u4E00\u9879\u5C31\u964D\u7EA7\u6216\u4E0D\u62A5\u3002","- medium/low \u4E5F\u5FC5\u987B\u8BF4\u660E\u201D\u73B0\u5728\u4F1A\u600E\u4E48\u9519\u201D\u6216\u201D\u4F1A\u8BEF\u5BFC\u8C01\u201D\uFF0C\u5426\u5219\u4E0D\u62A5\u3002","- \u4E0D\u8981\u8F93\u51FA\u201D\u5EFA\u8BAE\u4F18\u5316\u4E00\u4E0B\u201D\u201D\u5EFA\u8BAE\u91CD\u6784\u201D\u201D\u547D\u540D\u4E0D\u7EDF\u4E00\u201D\u201D\u8865\u5145\u6587\u6863\u5373\u53EF\u201D\u8FD9\u7C7B\u6CDB\u7ED3\u8BBA\u3002","- \u8F93\u51FA\u5B8C\u6574 <json>...</json> \u540E\u7ACB\u5373\u505C\u6B62\u3002"].join(`
|
|
309
309
|
`),o=s?Ui(s):"";return[n,o||null,pn(),r?`\u547D\u4E2D\u7684\u89C4\u5219\uFF1A${r}`:null,t].filter(Boolean).join(`
|
|
310
310
|
|
|
311
|
-
`)}function ei(e,t,s){return{agent:e.name,executor:t,success:!1,output:"",error:s,duration:0,issues:[]}}async function xf(e,t,s,i,r,n,o){let{batches:a,systemPrompt:u,fileToRule:l}=s,c=St(u),f=await Promise.all(a.map(d=>
|
|
311
|
+
`)}function ei(e,t,s){return{agent:e.name,executor:t,success:!1,output:"",error:s,duration:0,issues:[]}}async function xf(e,t,s,i,r,n,o){let{batches:a,systemPrompt:u,fileToRule:l}=s,c=St(u),f=await Promise.all(a.map(d=>Ok(d,a,e,t,u,c,l,i,r,n,o)));return Lk(f,e,a)}async function Ok(e,t,s,i,r,n,o,a,u,l,c){return u(async()=>{let f=c||s.name;e.batchIndex===0&&l?.startTask(f);let d=e.input??Qs(e.diffs,o,a);if(a.verbose&&!a.quiet){let D=e.tokenCount-n,w=e.diffs.map(v=>`File: ${v.file} <diff ${v.diff.length} chars>`).join(`
|
|
312
312
|
`),y=`${r}
|
|
313
313
|
|
|
314
314
|
# Input:
|
|
315
|
-
${w}`;h.newline(),h.plain(`${s.name} \u7684 prompt\uFF08batch ${e.batchIndex+1}/${t.length}\uFF09\uFF1A`),h.plain(` Tokens\uFF1A${e.tokenCount.toLocaleString()}\uFF08\u7EA6 ${n.toLocaleString()} system + ${D.toLocaleString()} input\uFF09`),h.plain("\u2500".repeat(80)),h.plain(y),h.plain("\u2500".repeat(80)),h.newline()}let p=s.executorSettings&&i.applySettings?i.applySettings(s.executorSettings):i.getInfo(),m={agent:s,executor:p,input:d,systemPrompt:r,verbose:a.verbose,quiet:a.quiet,stream:a.stream,cwd:a.metadata.repository,modelOverride:a.modelOverride},g=async()=>{let D=await va(),w=Bi(r,d,D),y=Py({agent:s.name,executor:p.name,model:p.model,baseUrl:p.baseUrl,temperature:p.temperature,maxTokens:p.maxTokens,systemPrompt:r,prompt:w}),v=await Oy(a.metadata.repository,y);if(v)return{success:!0,data:v.issues,usage:v.usage,cacheHit:!0};let E=await he.executeAgent(m),F=JD(E.output,s.name);return E.success&&await Ly(a.metadata.repository,{key:y,agent:s.name,executor:p.name,model:p.model,output:E.output,issues:F,usage:E.usage}),{success:E.success,data:F,error:E.error,usage:E.usage,cacheHit:E.cacheHit}};if(l){let D=Date.now();try{let w=await g(),y=Date.now()-D;return w.success?l.completeBatch(f):l.failTask(f),{...w,duration:y}}catch(w){let y=Date.now()-D,v=w instanceof Error?w.message:String(w);return l.failTask(f),{success:!1,data:[],error:v,duration:y}}}return _a({label:s.name,batchIndex:e.batchIndex,totalBatches:t.length},a.quiet??!1,g,(D,w)=>t.length>1?`${s.name} (batch ${e.batchIndex+1}/${t.length}, ${w}ms)`:`${s.name} (${w}ms)`,D=>t.length>1?`${s.name} (batch ${e.batchIndex+1}/${t.length}): ${D}`:`${s.name}: ${D}`)})}function
|
|
316
|
-
`),n=["# compacted diff: \u4EC5\u4FDD\u7559\u53D8\u66F4\u884C\u3001hunk \u884C\u53F7\u548C\u5C11\u91CF\u4E0A\u4E0B\u6587\uFF1B\u8BBE\u7F6E BEST_REVIEW_FULL_DIFF=true \u53EF\u4F7F\u7528\u5B8C\u6574 diff"],o=null,a=[],u=()=>{o&&(n.push(...
|
|
317
|
-
`)}function Gy(e,t={}){return{...e,diff:
|
|
318
|
-
`)}function
|
|
315
|
+
${w}`;h.newline(),h.plain(`${s.name} \u7684 prompt\uFF08batch ${e.batchIndex+1}/${t.length}\uFF09\uFF1A`),h.plain(` Tokens\uFF1A${e.tokenCount.toLocaleString()}\uFF08\u7EA6 ${n.toLocaleString()} system + ${D.toLocaleString()} input\uFF09`),h.plain("\u2500".repeat(80)),h.plain(y),h.plain("\u2500".repeat(80)),h.newline()}let p=s.executorSettings&&i.applySettings?i.applySettings(s.executorSettings):i.getInfo(),m={agent:s,executor:p,input:d,systemPrompt:r,verbose:a.verbose,quiet:a.quiet,stream:a.stream,cwd:a.metadata.repository,modelOverride:a.modelOverride},g=async()=>{let D=await va(),w=Bi(r,d,D),y=Py({agent:s.name,executor:p.name,model:p.model,baseUrl:p.baseUrl,temperature:p.temperature,maxTokens:p.maxTokens,systemPrompt:r,prompt:w}),v=await Oy(a.metadata.repository,y);if(v)return{success:!0,data:v.issues,usage:v.usage,cacheHit:!0};let E=await he.executeAgent(m),F=JD(E.output,s.name);return E.success&&await Ly(a.metadata.repository,{key:y,agent:s.name,executor:p.name,model:p.model,output:E.output,issues:F,usage:E.usage}),{success:E.success,data:F,error:E.error,usage:E.usage,cacheHit:E.cacheHit}};if(l){let D=Date.now();try{let w=await g(),y=Date.now()-D;return w.success?l.completeBatch(f):l.failTask(f),{...w,duration:y}}catch(w){let y=Date.now()-D,v=w instanceof Error?w.message:String(w);return l.failTask(f),{success:!1,data:[],error:v,duration:y}}}return _a({label:s.name,batchIndex:e.batchIndex,totalBatches:t.length},a.quiet??!1,g,(D,w)=>t.length>1?`${s.name} (batch ${e.batchIndex+1}/${t.length}, ${w}ms)`:`${s.name} (${w}ms)`,D=>t.length>1?`${s.name} (batch ${e.batchIndex+1}/${t.length}): ${D}`:`${s.name}: ${D}`)})}function Lk(e,t,s){let i=[],r=0,n=Ut();for(let u of e)i.push(...u.data),r+=u.duration||0,n=bs(n,u.usage,{cacheHit:u.cacheHit});let o=e.every(u=>u.success),a=Ia(e.map(u=>u.error));return{agent:t.name,executor:t.executor||"unknown",success:o,output:`\u5DF2\u5904\u7406 ${s.length} \u4E2A batch\uFF0C\u53D1\u73B0 ${i.length} \u4E2A\u95EE\u9898`,duration:r,issues:i,error:a,usage:n}}function Nk(){let e=process.env.BEST_REVIEW_DIFF_CONTEXT_LINES;if(!e)return 1;let t=Number.parseInt(e,10);return Number.isNaN(t)||t<0?1:t}function Mk(){let e=process.env.BEST_REVIEW_MAX_DIFF_CHARS_PER_FILE;if(!e)return 6e4;let t=Number.parseInt(e,10);return Number.isNaN(t)||t<1e3?6e4:t}function jk(e){return e.startsWith("+")&&!e.startsWith("+++")||e.startsWith("-")&&!e.startsWith("---")}function qk(e){return e.startsWith("diff --git ")||e.startsWith("Index: ")||e.startsWith("===")||e.startsWith("--- ")||e.startsWith("+++ ")||e.startsWith("rename ")||e.startsWith("similarity index ")||e.startsWith("new file mode ")||e.startsWith("deleted file mode ")}function Uk(e,t,s){let i=t.map((u,l)=>jk(u)?l:-1).filter(u=>u>=0);if(i.length===0)return[e];let r=new Set;for(let u of i)for(let l=-s;l<=s;l+=1){let c=u+l;c>=0&&c<t.length&&r.add(c)}let n=[e],o=Array.from(r).sort((u,l)=>u-l),a=-1;for(let u of o)a>=0&&u-a>1&&n.push(`... \u7701\u7565 ${u-a-1} \u884C\u672A\u53D8\u66F4\u4E0A\u4E0B\u6587 ...`),n.push(t[u]??""),a=u;return n}function Vk(e,t){let s=[],i=0;for(let r of e){let n=i+r.length+1;if(n>t){s.push(`... \u5DF2\u8FBE\u5230\u5355\u6587\u4EF6 diff \u8F93\u5165\u4E0A\u9650 ${t} \u5B57\u7B26\uFF0C\u540E\u7EED\u5185\u5BB9\u7701\u7565 ...`);break}s.push(r),i=n}return s}function Gk(e,t={}){if(process.env.BEST_REVIEW_FULL_DIFF==="true")return e;let s=t.contextLines??Nk(),i=t.maxCharsPerFile??Mk(),r=e.split(`
|
|
316
|
+
`),n=["# compacted diff: \u4EC5\u4FDD\u7559\u53D8\u66F4\u884C\u3001hunk \u884C\u53F7\u548C\u5C11\u91CF\u4E0A\u4E0B\u6587\uFF1B\u8BBE\u7F6E BEST_REVIEW_FULL_DIFF=true \u53EF\u4F7F\u7528\u5B8C\u6574 diff"],o=null,a=[],u=()=>{o&&(n.push(...Uk(o,a,s)),o=null,a=[])};for(let l of r){if(l.startsWith("@@")){u(),o=l;continue}if(o){a.push(l);continue}qk(l)&&n.push(l)}return u(),Vk(n,i).join(`
|
|
317
|
+
`)}function Gy(e,t={}){return{...e,diff:Gk(e.diff,t)}}ws();var Pa="code-review-expert",Wy=`skill:${Pa}`,Wk="tech-doc-compliance",Ky="tech-doc-compliance",Kk=new Set(["code-quality-checklist","security-checklist","solid-checklist","stack-best-practices","typescript-react-best-practices"]),zk=/(?:^|[\s`'"((])((?:\.{0,2}\/)?(?:[A-Za-z0-9_.@-]+\/)+[A-Za-z0-9_.@-]+\.(?:ts|tsx|js|jsx|mjs|cjs|mts|cts|vue|svelte|kt|sh|sql|toml|ini|tf|hcl|xml|json|ya?ml|md|css|scss|html|py|go|java|rb|rs|php|swift)|[A-Za-z0-9_.@-]+\.(?:ts|tsx|js|jsx|mjs|cjs|mts|cts|vue|svelte|kt|sh|sql|toml|ini|tf|hcl|xml|json|ya?ml|md|css|scss|html|py|go|java|rb|rs|php|swift))(?=$|[\s`'",:;).,。;、)])/g;function Ba(e){return e.map(t=>Gy(t))}function Hk(e){let t=e?.find(s=>s.name===Pa&&s.enabled);if(t)return{...t,references:t.references.filter(s=>Kk.has(s.name))}}function zy(e){return(e??[]).filter(t=>t.name!==Pa)}function Hy(e){let t=new Map,s=new Map,i=new Set;for(let r of e)for(let n of r.files){i.add(n);let a=r.rule.patterns.find(l=>ys(n,l))?.length??0,u=s.get(n)??0;a>u&&(t.set(n,r.rule.name),s.set(n,a))}return{fileToRule:t,matchedFileSet:i}}function Jy(e){return new Set([e.file,e.oldPath,e.newPath].filter(t=>!!t))}function Jk(e,t){let s=Jy(e);return t.supplementalContextFiles?.some(i=>i.role==="changed-file"&&s.has(i.file))??!1}function Yk(e,t){let s=Jy(e);return t.supplementalContextFiles?.some(i=>i.role!=="dependency"?!1:!i.relatedFiles||i.relatedFiles.length===0?!0:i.relatedFiles.some(r=>s.has(r)))??!1}function Zk(e,t){let s=e.status==="renamed"&&(e.oldPath||e.newPath)?`, rename=${e.oldPath??"unknown"}->${e.newPath??e.file}`:"";return[`- ${e.file}: status=${e.status}`,s,`, fullFileContext=${Jk(e,t)?"yes":"no"}`,`, dependencyContext=${Yk(e,t)?"yes":"no"}`].join("")}function Xk(e,t){return["# Skill Review Coverage Checklist","","\u8FD9\u4E2A batch \u5C5E\u4E8E code-review-expert \u6574\u4F53\u5BA1\u67E5 pass\u3002\u8F93\u51FA\u524D\u5FC5\u987B\u9010\u4E2A\u5B8C\u6210\u4E0B\u5217 diff \u6587\u4EF6\u7684\u5BA1\u67E5\u5224\u65AD\uFF1B\u6CA1\u6709\u95EE\u9898\u7684\u6587\u4EF6\u4E0D\u8981\u8F93\u51FA\u5360\u4F4D\u9879\u3002",`issue.file \u53EA\u80FD\u662F\u672C\u6E05\u5355\u4E2D\u7684 diff \u6587\u4EF6\uFF1A${e.map(i=>i.file).join(", ")}`,"Dependency Context \u53EA\u80FD\u4F5C\u4E3A\u8BC1\u636E\u548C\u8C03\u7528\u94FE\u4E0A\u4E0B\u6587\uFF1B\u5982\u679C\u95EE\u9898\u6839\u56E0\u5728\u4F9D\u8D56\u6587\u4EF6\uFF0C\u6700\u7EC8 issue \u4ECD\u5FC5\u987B\u951A\u5B9A\u5230\u89E6\u53D1\u98CE\u9669\u7684 diff \u6587\u4EF6\u3002","",...e.map(i=>Zk(i,t))].join(`
|
|
318
|
+
`)}function Qk(e,t,s){return`${Xk(e,s)}
|
|
319
319
|
|
|
320
|
-
${Qs(e,t,s)}`}function
|
|
320
|
+
${Qs(e,t,s)}`}function eI(e){let t=e.techDoc?.requirements??[];return["# Tech Doc Requirements","",`Source: ${e.techDoc?.source??"unknown"}`,e.techDoc?.title?`Title: ${e.techDoc.title}`:null,"",...t.map(s=>[`## ${s.id}: ${s.title}`,`Priority: ${s.priority}`,`Description: ${s.description}`,s.acceptanceSignals.length>0?`Acceptance signals: ${s.acceptanceSignals.join("; ")}`:null,s.sourceLocation?`Source location: ${s.sourceLocation}`:null,s.sourceQuote?`Source quote: ${s.sourceQuote}`:null].filter(Boolean).join(`
|
|
321
321
|
`))].filter(Boolean).join(`
|
|
322
|
-
`)}function
|
|
323
|
-
`)}function Yy(e){return e.replace(/^[ab]\//,"").replace(/^\.\//,"").replace(/^\.\.\//,"").toLowerCase()}function
|
|
324
|
-
`),s=new Set;for(let i of t.matchAll(
|
|
322
|
+
`)}function tI(e,t,s){return[eI(s),"","# Tech Doc Compliance Instructions","","- \u5FC5\u987B\u9010\u6761\u8BC4\u4F30\u4E0A\u9762\u7684\u6BCF\u4E2A requirement \u662F\u5426\u5DF2\u7531\u5F53\u524D diff \u6216\u4E0A\u4E0B\u6587\u6EE1\u8DB3\u3002","- \u53EA\u62A5\u544A\u672A\u5B8C\u6210\u3001\u505A\u9519\u3001\u9057\u6F0F\u9A8C\u6536\u6807\u51C6\u6216\u5B9E\u73B0\u4E0E\u6587\u6863\u8981\u6C42\u4E0D\u4E00\u81F4\u7684\u95EE\u9898\u3002","- \u5DF2\u5B8C\u6210\u7684 requirement \u4E0D\u8981\u8F93\u51FA Issue\u3002","- \u627E\u4E0D\u5230\u76F8\u5173 diff \u6587\u4EF6\u65F6\u4E0D\u8981\u8F93\u51FA Issue\uFF0C\u4E5F\u4E0D\u8981\u4F2A\u9020 file/lineStart/lineEnd\u3002","- \u8F93\u51FA Issue \u65F6 rule \u5FC5\u987B\u4F7F\u7528 tech-doc-compliance\u3002","",Qs(e,t,s)].join(`
|
|
323
|
+
`)}function Yy(e){return e.replace(/^[ab]\//,"").replace(/^\.\//,"").replace(/^\.\.\//,"").toLowerCase()}function sI(e){let t=[e.title,e.description,...e.acceptanceSignals,e.sourceLocation,e.sourceQuote].filter(Boolean).join(`
|
|
324
|
+
`),s=new Set;for(let i of t.matchAll(zk)){let r=i[1];r&&s.add(Yy(r))}return[...s]}function iI(e){let t=e.techDoc?.requirements??[];if(t.length===0)return[];let s=new Set;for(let i of e.diffs)for(let r of[i.file,i.oldPath,i.newPath])r&&s.add(Yy(r));return t.filter(i=>{let r=sI(i);return r.length===0?!1:!r.some(n=>[...s].some(o=>o===n||o.endsWith(`/${n}`)))})}async function Zy(e,t,s){let i=new Map;for(let r of e){let n=t.matchedRules?.filter(m=>m.agent.name===r.name)||[];if(n.length===0)continue;let{fileToRule:o,matchedFileSet:a}=Hy(n),u=Ba(t.diffs.filter(m=>a.has(m.file))),l=r.systemPrompt,c=n.map(m=>m.rule.prompt).filter(Boolean).join(`
|
|
325
325
|
|
|
326
326
|
`);c&&(l=`${l}
|
|
327
327
|
|
|
@@ -333,26 +333,26 @@ ${m}`)}l=`${l}
|
|
|
333
333
|
|
|
334
334
|
${pn()}`,t.metadata.reviewTarget?.kind==="gitlab-mr"&&(l=`${l}
|
|
335
335
|
|
|
336
|
-
${Ta(u.map(m=>m.file))}`);let d=hn(u,l,void 0,m=>Qs(m,o,t)),p=n.map(m=>m.rule.name);i.set(r.name,{batches:d,files:u.length,rules:n.length,ruleNames:p,systemPrompt:l,fileToRule:o})}return i}function Xy(e,t){let s=
|
|
336
|
+
${Ta(u.map(m=>m.file))}`);let d=hn(u,l,void 0,m=>Qs(m,o,t)),p=n.map(m=>m.rule.name);i.set(r.name,{batches:d,files:u.length,rules:n.length,ruleNames:p,systemPrompt:l,fileToRule:o})}return i}function Xy(e,t){let s=Hk(e.skills);if(!s||e.diffs.length===0)return null;let i=Ba(e.diffs),r=new Map(i.map(a=>[a.file,Wy])),n=["\u4F60\u662F best-review \u7684\u6574\u4F53\u4EE3\u7801\u5BA1\u67E5 Skill Agent\u3002\u8BF7\u628A\u6240\u6709\u8F93\u5165\u6587\u4EF6\u4F5C\u4E3A\u4E00\u4E2A\u6574\u4F53\u5BA1\u67E5\uFF0C\u91CD\u70B9\u68C0\u67E5\u8DE8\u6587\u4EF6\u5951\u7EA6\u3001\u67B6\u6784\u4E00\u81F4\u6027\u3001\u5B89\u5168\u3001\u6027\u80FD\u3001\u5220\u9664\u98CE\u9669\u548C\u771F\u5B9E\u8FD0\u884C\u65F6\u5931\u6548\u8DEF\u5F84\u3002",Ui([s]),pn(),e.metadata.reviewTarget?.kind==="gitlab-mr"?Ta(i.map(a=>a.file)):null,t].filter(Boolean).join(`
|
|
337
337
|
|
|
338
|
-
`),o=hn(i,n,void 0,a=>
|
|
338
|
+
`),o=hn(i,n,void 0,a=>Qk(a,r,e));return{agent:{name:Pa,description:s.description||"\u6574\u4F53\u4EE3\u7801\u5BA1\u67E5 Skill",systemPrompt:n,enabled:!0,order:900,stage:"review"},batchInfo:{batches:o,files:i.length,rules:1,ruleNames:[Wy],systemPrompt:n,fileToRule:r}}}function Qy(e){let t=e.techDoc?.requirements??[];if(t.length===0||e.diffs.length===0)return null;let s=Ba(e.diffs),i=new Map(s.map(o=>[o.file,Ky])),r=["\u4F60\u662F best-review \u7684\u6280\u672F\u6587\u6863\u5B8C\u6210\u5EA6\u5BA1\u67E5 Agent\u3002\u4F60\u7684\u4EFB\u52A1\u662F\u628A\u6280\u672F\u6587\u6863\u4E2D\u7684\u53EF\u9A8C\u6536\u5F85\u529E\u70B9\u9010\u6761\u5BF9\u7167\u672C\u6B21 diff\uFF0C\u627E\u51FA\u672A\u5B8C\u6210\u3001\u505A\u9519\u6216\u9057\u6F0F\u7684\u8981\u6C42\u3002",pn(),e.metadata.reviewTarget?.kind==="gitlab-mr"?Ta(s.map(o=>o.file)):null,"\u8F93\u51FA\u7EA6\u675F\uFF1A\u53EA\u8F93\u51FA\u73B0\u6709 Issue JSON\u3002rule \u5FC5\u987B\u662F tech-doc-compliance\u3002file/lineStart/lineEnd \u5FC5\u987B\u951A\u5B9A\u5230\u6700\u76F8\u5173\u7684 diff \u6587\u4EF6\u548C\u53D8\u66F4\u884C\u3002"].filter(Boolean).join(`
|
|
339
339
|
|
|
340
|
-
`),n=hn(s,r,void 0,o=>
|
|
341
|
-
`);return t.trim()?
|
|
340
|
+
`),n=hn(s,r,void 0,o=>tI(o,i,e));return e.techDoc.coverage={assessedRequirementIds:t.map(o=>o.id),unmappedRequirements:iI(e)},{agent:{name:Wk,description:"\u6280\u672F\u6587\u6863\u5B8C\u6210\u5EA6\u5BA1\u67E5 Agent",systemPrompt:r,enabled:!0,order:901,stage:"review"},batchInfo:{batches:n,files:s.length,rules:t.length,ruleNames:[Ky],systemPrompt:r,fileToRule:i}}}function e0(e,t,s){return!(process.env.BEST_REVIEW_MULTI_AGENT==="false")||t&&t.length>0||e.agentFilter&&e.agentFilter.length>0||e.ruleFilter&&e.ruleFilter.length>0?!1:s.length>1}function t0(e,t,s){let i=t.matchedRules??[];if(i.length===0)return null;let{fileToRule:r,matchedFileSet:n}=Hy(i),o=Ba(t.diffs.filter(f=>n.has(f.file)));if(o.length===0)return null;let a=e.find(f=>f.name==="general")??e.find(f=>f.name==="bug-hunter")??e[0];if(!a)return null;let u=Vy(i,s,zy(t.skills)),l=hn(o,u,void 0,f=>Qs(f,r,t)),c=Array.from(new Set(i.map(f=>f.rule.name)));return{agent:{...a,name:"general",description:"\u5408\u5E76\u4EE3\u7801\u5BA1\u67E5 Agent",systemPrompt:u,executorSettings:a.executorSettings},batchInfo:{batches:l,files:o.length,rules:c.length,ruleNames:c,systemPrompt:u,fileToRule:r}}}function rI(e,t){return!t||t.length===0?0:t.filter(s=>$a(s,e)).length}function s0(e,t){return{...e,...t.executorSettings??{},model:e.model}}function i0(){return{id:"review",name:"Review",description:"\u8FD0\u884C\u4EE3\u7801\u5BA1\u67E5 Agent",enabled:!0,order:2,execute:async e=>{let t=Date.now();if(!e.config){let R="Pipeline \u4E0A\u4E0B\u6587\u4E2D\u7684 config \u5C1A\u672A\u521D\u59CB\u5316";return h.error(R),{stageId:"review",stageName:"Review",success:!1,duration:0,error:R}}let s=e.config,i=await ba();if(!e.skills)try{e.skills=await wf(e.metadata.repository,s)}catch(R){h.warn(`Failed to load skills: ${R instanceof Error?R.message:String(R)}`),e.skills=[]}let r=Ds(s,e.modelOverride,s.executor),n=r.concurrency??e.concurrency,o=qt(n);e.verbose&&!e.quiet&&h.plain(`Token \u4F30\u7B97\u5668\uFF1A${ZD()}`);let a=qi.listEnabled();if(a.length===0)return e.quiet||h.warn("\u6CA1\u6709\u627E\u5230\u5DF2\u542F\u7528\u7684 Agent"),{stageId:"review",stageName:"Review",success:!0,duration:Date.now()-t};let u=a.filter(R=>R.stage!=="validation"),l=s.workflows?.review,c=await Zy(a,e,i),f=u.filter(R=>c.has(R.name)),d=u.filter(R=>!c.has(R.name)),p=!1;if(e0(e,l,f)){let R=t0(f,e,i);R&&(c=new Map([[R.agent.name,R.batchInfo]]),f=[R.agent],p=!0)}let m=Xy(e,i);m&&(c.set(m.agent.name,m.batchInfo),f=[...f,m.agent]);let g=Qy(e);g&&(c.set(g.agent.name,g.batchInfo),f=[...f,g.agent]);let D=0;for(let[,R]of c)D+=R.batches.length;if(!e.quiet){h.sync(`\u4EE3\u7801\u5BA1\u67E5\uFF1A${f.length} \u4E2A Agent\uFF08\u5171 ${D} \u4E2A batch\uFF09...`),p&&h.info("\u5FEB\u901F\u5408\u5E76\u5BA1\u67E5\uFF1ABEST_REVIEW_MULTI_AGENT=false \u5DF2\u542F\u7528\uFF0C\u591A\u4E2A\u4E13\u4E1A Agent \u88AB\u5408\u5E76\u4E3A 1 \u6B21\u6A21\u578B\u8C03\u7528\uFF1B\u53D6\u6D88\u8BE5\u73AF\u5883\u53D8\u91CF\u53EF\u6062\u590D\u9ED8\u8BA4\u591A Agent");for(let R of d)h.plain(` \u2022 ${R.name}\uFF1A\u5DF2\u8DF3\u8FC7\uFF08\u6CA1\u6709\u5339\u914D\u89C4\u5219\uFF09`)}let y=!e.quiet&&!e.stream&&!e.verbose?new ui:void 0;if(y){if(l&&l.length>0)for(let R of f){let N=c.get(R.name);if(N)for(let[Y,X]of l.entries()){let se=X.model,ne=[R.name,se||null].filter(Boolean).join(" / "),H=`${R.name}-${Y}`,Q=N.ruleNames.slice(0,3).join(", "),ce=`${N.files} \u4E2A\u6587\u4EF6 | ${Q}${N.rules>3?"...":""}`;y.addTask(H,ne,N.batches.length,N.files,N.rules,ce)}}else for(let R of f){let N=c.get(R.name);if(N){let Y=N.ruleNames.slice(0,3).join(", "),X=`${N.files} \u4E2A\u6587\u4EF6 | ${Y}${N.rules>3?"...":""}`;y.addTask(R.name,R.name,N.batches.length,N.files,N.rules,X)}}y.start()}let v;try{if(l&&l.length>0){e.quiet||h.info(`Workflow \u6A21\u5F0F\uFF1A${f.length} \u4E2A Agent \xD7 ${l.length} \u6B21\u8FD0\u884C = ${f.length*l.length} \u6B21\u6267\u884C`);let R=[];for(let[N,Y]of l.entries()){let X=e.modelOverride||Y.model,se=s.executor,ne=he.get(se);if(!ne){let Q=he.listExecutors().map(Z=>Z.name).join(", "),ce=`\u6267\u884C\u5668\u672A\u6CE8\u518C\uFF1A${se}\u3002\u53EF\u7528\u6267\u884C\u5668\uFF1A${Q}`;e.quiet||h.error(ce);for(let Z of f){let ie=ei(Z,se,ce);e.results.push(ie),R.push(ie)}continue}e.quiet||h.info(` Workflow \u8FD0\u884C ${N+1}/${l.length}\uFF1A${se}${X?`\uFF08\u6A21\u578B\uFF1A${X}\uFF09`:""}`);let H=await Promise.all(f.map(async Q=>{try{let ce=c.get(Q.name);if(!ce){let Qi=`\u672A\u627E\u5230 Agent \u7684 batch \u4FE1\u606F\uFF1A${Q.name}`;e.quiet||h.warn(Qi);let Sn=ei(Q,se,Qi);return e.results.push(Sn),Sn}let Z={...e,modelOverride:X},ie=Ds(s,X,se),ve={...Q,executor:se,executorSettings:s0(ie,Q)},mt=`${Q.name}-${N}`,si=await xf(ve,ne,ce,Z,o,y,mt);return e.issues.push(...si.issues),e.results.push(si),si}catch(ce){let Z=ce instanceof Error?ce.message:String(ce);e.quiet||h.error(`${Q.name} (workflow: ${se}): ${Z}`);let ie=ei(Q,se,Z);return e.results.push(ie),ie}}));R.push(...H)}v=R}else v=await Promise.all(f.map(async R=>{try{let N=s.executor,Y=he.get(N);if(!Y){let ne=he.listExecutors().map(ce=>ce.name).join(", "),H=`\u6267\u884C\u5668\u4E0D\u5B58\u5728\uFF1A${N}\u3002\u53EF\u7528\u6267\u884C\u5668\uFF1A${ne}`;e.quiet||h.warn(H);let Q=ei(R,N,H);return e.results.push(Q),Q}let X=c.get(R.name);if(!X){let ne=`\u672A\u627E\u5230 Agent \u7684 batch \u4FE1\u606F\uFF1A${R.name}`;e.quiet||h.warn(ne);let H=ei(R,N,ne);return e.results.push(H),H}!e.quiet&&e.verbose&&X.batches.forEach(ne=>{h.plain(` ${Ry(ne,!0)}`)});let se=await xf({...R,executor:N,executorSettings:s0(r,R)},Y,X,e,o,y);return e.issues.push(...se.issues),e.results.push(se),se}catch(N){let Y=N instanceof Error?N.message:String(N);e.quiet||h.error(`${R.name}: ${Y}`);let X=ei(R,s.executor,Y);return e.results.push(X),X}}))}finally{y?.stop()}let E=l&&l.length>0?f.length*l.length:f.length,F=v.filter(R=>R?.success).length,S=v.filter(R=>R&&!R.success),B=S.length;e.usage=Fy(e.results);let x=Date.now()-t,$=x>=1e3?`${(x/1e3).toFixed(1)}s`:`${x}ms`,W=Array.from(c.entries()).map(([R,N])=>({agent:R,batches:N.batches.map(Y=>{let X=new Set(Y.diffs.map(se=>se.file));return{batchIndex:Y.batchIndex,inputFiles:Y.diffs.length,contextFiles:rI(X,e.supplementalContextFiles),tokenCount:Y.tokenCount}})}));if(e.quiet||h.done(`Review \u5B8C\u6210\uFF1A${F}/${E} \u6B21\u6267\u884C\u6210\u529F\uFF08${$}\uFF09`),B>0&&!e.quiet)for(let R of S)h.warn(`Agent "${R?.agent}" \u6267\u884C\u5931\u8D25\uFF1A${R?.error||"\u6267\u884C\u5931\u8D25"}\uFF0C\u8BE5 Agent \u7684\u95EE\u9898\u5DF2\u6392\u9664`);let ae=F>0,z;return B>0&&(z=S.map(N=>`${N?.agent||"\u672A\u77E5 Agent"}\uFF1A${N?.error||"\u6267\u884C\u5931\u8D25"}`).filter(Boolean).join("; ")),!ae&&!z&&(z="\u6CA1\u6709\u4EFB\u4F55\u5BA1\u67E5 Agent \u5B8C\u6210\u6267\u884C\uFF0C\u8BF7\u68C0\u67E5\u6267\u884C\u5668\u914D\u7F6E\u3002"),{stageId:"review",stageName:"Review",success:ae,duration:x,error:z,output:{agents:f.length,executions:E,successfulExecutions:F,failedExecutions:B,totalBatches:D,batchInputs:W,techDoc:e.techDoc?{totalRequirements:e.techDoc.requirements?.length??0,assessedRequirementIds:e.techDoc.coverage?.assessedRequirementIds??[],unmappedRequirements:e.techDoc.coverage?.unmappedRequirements??[]}:void 0}}}}}M();function r0(){return{id:"aggregate-results",name:"Aggregate Results",description:"\u6C47\u603B\u5BA1\u67E5\u7ED3\u679C",enabled:!0,order:3,execute:async e=>{let t=Date.now(),s=e.results.filter(r=>r.success).length,i=e.results.filter(r=>!r.success).length;return e.issues=e.results.flatMap(r=>r.issues),e.quiet||h.sync(`\u7ED3\u679C\u6C47\u603B\uFF1A${s} \u4E2A\u6210\u529F\uFF0C${i} \u4E2A\u5931\u8D25\uFF0C\u6536\u96C6 ${e.issues.length} \u4E2A\u539F\u59CB\u95EE\u9898`),{stageId:"aggregate-results",stageName:"Aggregate Results",success:!0,duration:Date.now()-t,output:{totalIssues:e.issues.length,success:s,failed:i}}}}}M();function nI(e){return{...e}}function it(e,t){let s={...t,issue:nI(t.issue)};e.issueAuditTrail=[...e.issueAuditTrail??[],s]}var oI=70,o0=new Set(["critical","high"]),aI=new Set(["style","docs"]),uI=[/^(?:建议|可以|考虑|最好|应该)\s*(?:优化|重构|改进|统一|清理|整理|完善|补充|检查|关注|处理)(?:一下)?[。!!]?$/u,/^(?:建议)?(?:优化一下|重构一下|统一一下|补充文档|加校验|加强校验|改进可读性|提高可维护性)[。!!]?$/u,/^(?:consider|maybe|suggest|recommend)\s+(?:refactoring|refactor|optimizing|optimize|improving|improve|cleaning up|clean up|documenting|document|adding validation|add validation)[.!]?$/i],lI=[/(?:改为|改成|替换为|删除|移除|新增|补充|拆分|提取|限制|缓存|回退到|提前返回|判空|短路|重命名|把.+改|将.+改|为.+添加|在.+(?:前|后))/u,/(?:replace|remove|add|split|extract|guard|return early|rename|update|document|change .+ to|use .+ instead|move .+ to|initialize .+ before)/i],cI=[/(?:可读性|维护性|一致性|优雅|更好|更清晰|更规范|长期维护会更好|可以优化|有优化空间|建议考虑|最好处理一下)/u,/(?:readability|maintainability|cleaner|more consistent|could be improved|might be better|nice to have)/i],fI=[/(?:导致|会让|会在|会把|会使|造成|触发|产生|引发|阻塞|绕过|覆盖|丢失|重复|泄露|崩溃|失败|死锁|误导|误用|混淆|不一致|无法|错误|错用|调用方)/u,/(?:cause|lead to|result in|break|fail|crash|leak|drop|duplicate|race|deadlock|mislead|confus|wrong|incorrect|caller|consumer|contract)/i];function Sf(e){return!!e?.trim()}function Af(e){let t=e.suggestion?.trim();return t?lI.some(s=>s.test(t))?!0:uI.some(s=>s.test(t))?!1:t.length>=14:!1}function Rf(e){let t=[e.shortDescription,e.fullDescription,e.evidence].filter(Boolean).join(`
|
|
341
|
+
`);return t.trim()?fI.some(s=>s.test(t))?!0:aI.has(e.category)?!1:!cI.some(s=>s.test(t)):!1}function dI(e){return o0.has(e.severity)?!Sf(e.evidence)||e.confidence===void 0||!Af(e)||!Rf(e):!1}function hI(e){return o0.has(e.severity)?!1:!Sf(e.evidence)||e.confidence===void 0||!Af(e)||!Rf(e)}function n0(e){let t=[];return Sf(e.evidence)||t.push("\u7F3A\u5C11\u8BC1\u636E"),e.confidence===void 0&&t.push("\u7F3A\u5C11 confidence"),Af(e)||t.push("\u7F3A\u5C11\u5177\u4F53\u4FEE\u590D\u5EFA\u8BAE"),Rf(e)||t.push("\u5F71\u54CD\u63CF\u8FF0\u4E0D\u591F\u5177\u4F53"),t}function a0(){return{id:"confidence-filter",name:"Confidence Filter",description:"\u6309\u7F6E\u4FE1\u5EA6\u9608\u503C\u8FC7\u6EE4\u95EE\u9898",enabled:!0,order:3.5,execute:async e=>{let t=Date.now(),s=e.minConfidence??oI,i=e.issues,r=0,n=0,o=0,a=0,u=i.length,l=[];for(let p of i){if(dI(p)){o++,it(e,{stageId:"confidence-filter",stageName:"Confidence Filter",action:"filtered",reason:`\u9AD8\u5371\u95EE\u9898\u672A\u8FBE\u5230\u8D44\u6DF1\u5DE5\u7A0B\u5E08\u95E8\u69DB\uFF1A${n0(p).join("\u3001")}`,issue:p});continue}if(hI(p)){a++,p.confidence===void 0&&n++,it(e,{stageId:"confidence-filter",stageName:"Confidence Filter",action:"filtered",reason:`\u4E2D\u4F4E\u98CE\u9669\u95EE\u9898\u672A\u8FBE\u5230\u8D44\u6DF1\u5DE5\u7A0B\u5E08\u95E8\u69DB\uFF1A${n0(p).join("\u3001")}`,issue:p});continue}if(p.confidence===void 0){n++,it(e,{stageId:"confidence-filter",stageName:"Confidence Filter",action:"filtered",reason:"\u7F3A\u5C11 confidence\uFF0C\u65E0\u6CD5\u901A\u8FC7\u7F6E\u4FE1\u5EA6\u8FC7\u6EE4",issue:p});continue}if(p.confidence>=s){l.push(p);continue}r++,it(e,{stageId:"confidence-filter",stageName:"Confidence Filter",action:"filtered",reason:`\u7F6E\u4FE1\u5EA6 ${p.confidence}% \u4F4E\u4E8E\u9608\u503C ${s}%`,issue:p})}let c=l.length,f=r,d=f+o+a;return e.issues=l,e.quiet||(u>0&&h.sync(`\u7F6E\u4FE1\u5EA6\u8FC7\u6EE4\uFF08>=${s}%\uFF09\uFF1A\u4FDD\u7559 ${c} \u4E2A\uFF0C\u8FC7\u6EE4 ${d} \u4E2A`),n>0&&h.warn(`${n} \u4E2A\u95EE\u9898\u6CA1\u6709 confidence \u5B57\u6BB5\uFF0C\u5DF2\u6309\u8D44\u6DF1\u5DE5\u7A0B\u5E08\u95E8\u69DB\u8FC7\u6EE4`),o>0&&h.warn(`${o} \u4E2A\u9AD8\u5371\u95EE\u9898\u7F3A\u5C11\u8BC1\u636E\u3001\u4FEE\u590D\u5EFA\u8BAE\u6216 confidence\uFF0C\u5DF2\u8FC7\u6EE4`),a>0&&h.warn(`${a} \u4E2A\u4E2D\u4F4E\u98CE\u9669\u95EE\u9898\u7F3A\u5C11\u660E\u786E\u5F71\u54CD\u3001\u5177\u4F53\u4FEE\u6CD5\u3001\u8BC1\u636E\u6216 confidence\uFF0C\u5DF2\u8FC7\u6EE4`)),{stageId:"confidence-filter",stageName:"Confidence Filter",success:!0,duration:Date.now()-t,output:{totalBefore:u,totalAfter:c,filteredOut:d,confidenceFilteredOut:f,minConfidence:s,withoutConfidence:n,underSpecifiedHighRisk:o,underSpecifiedMediumLow:a}}}}}M();var pI=.6;function u0(e){let t=e.toLowerCase().replace(/[^\w\s]/g," ").split(/\s+/).filter(s=>s.length>2);return new Set(t)}function mI(e,t){if(e.size===0&&t.size===0)return 1;if(e.size===0||t.size===0)return 0;let s=0;for(let r of e)t.has(r)&&s++;let i=e.size+t.size-s;return s/i}function gI(e,t){if(e.file!==t.file||Math.min(Math.abs(e.lineStart-t.lineStart),Math.abs(e.lineEnd-t.lineEnd))>10)return!1;let i=u0(e.shortDescription),r=u0(t.shortDescription);return mI(i,r)>=pI}function l0(){return{id:"deduplication",name:"Deduplication",description:"\u79FB\u9664\u91CD\u590D\u7ED3\u679C\u548C\u95EE\u9898",enabled:!0,order:4,execute:async e=>{let t=Date.now(),s=e.issues,i=s.length,r=new Set,n=[];for(let c of s){let f=`${c.file}:${c.lineStart}:${c.lineEnd}`;if(r.has(f)){it(e,{stageId:"deduplication",stageName:"Deduplication",action:"filtered",reason:"\u4E0E\u540C\u6587\u4EF6\u540C\u884C\u53F7\u7684\u95EE\u9898\u91CD\u590D",issue:c});continue}r.add(f),n.push(c)}let o=[];for(let c of n){let f=o.find(d=>gI(d,c));if(!f){o.push(c);continue}it(e,{stageId:"deduplication",stageName:"Deduplication",action:"filtered",reason:`\u4E0E ${f.file}:${f.lineStart}-${f.lineEnd} \u7684\u95EE\u9898\u8BED\u4E49\u91CD\u590D`,issue:c})}e.issues=o;let a=i-n.length,u=n.length-o.length,l=a+u;if(l>0&&!e.quiet){let c=[];a>0&&c.push(`${a} \u4E2A\u6309\u4F4D\u7F6E\u53BB\u91CD`),u>0&&c.push(`${u} \u4E2A\u6309\u76F8\u4F3C\u5EA6\u53BB\u91CD`),h.sync(`\u5DF2\u79FB\u9664 ${l} \u4E2A\u91CD\u590D\u95EE\u9898\uFF08${c.join(", ")}\uFF09`)}return{stageId:"deduplication",stageName:"Deduplication",success:!0,duration:Date.now()-t,output:{totalBefore:i,totalAfter:o.length,removedByLocation:a,removedBySemantic:u}}}}}Ge();je();M();var f0=require("node:fs/promises");$i();Zo();je();M();var c0={name:"validation",description:"\u590D\u6838\u5176\u4ED6 Agent \u53D1\u73B0\u7684\u95EE\u9898",systemPrompt:`You are a strict senior-level code review validation agent. Your task is to validate issues found by other agents and filter out false positives or generic advice.
|
|
342
342
|
|
|
343
343
|
You may include your analysis and reasoning, but MUST include a JSON array of valid issues somewhere in your response.
|
|
344
344
|
Be strict but fair. Keep medium/low findings only when they still explain a concrete failure mode, a real impact, direct evidence, and a specific fix. Filter generic refactor/style/docs advice.`,enabled:!0,order:999,executor:Ti};async function d0(e){return pt(Ne.VALIDATION_PROMPT,async()=>{try{return(await We({projectPath:e})).find(i=>i.name==="validation"||i.stage==="validation")??c0}catch(t){return h.debug?.(`\u52A0\u8F7D\u9A8C\u8BC1 Agent \u5931\u8D25\uFF1A${t instanceof Error?t.message:String(t)}`),c0}})}async function h0(){try{let e=Yo("prompts","validation-instructions.md");return await(0,f0.readFile)(e,"utf-8")}catch(e){if(e instanceof Error&&"code"in e&&e.code==="ENOENT")h.warn("\u672A\u627E\u5230\u9A8C\u8BC1\u8BF4\u660E\u6587\u4EF6\uFF08defaults/prompts/validation-instructions.md\uFF09\uFF0C\u9A8C\u8BC1\u8D28\u91CF\u53EF\u80FD\u4E0B\u964D\u3002");else{let s=e instanceof Error?e.message:String(e);h.warn(`\u52A0\u8F7D\u9A8C\u8BC1\u8BF4\u660E\u5931\u8D25\uFF08defaults/prompts/validation-instructions.md\uFF09\uFF1A${s}`)}return""}}M();function p0(e,t,s){let i=e.executor||s,r=Li(i);if(!r)return t.quiet||h.warn(`\u9A8C\u8BC1\u6267\u884C\u5668 '${i}' \u4E0D\u5B58\u5728\uFF0C\u5C06\u8DF3\u8FC7\u9A8C\u8BC1\u9636\u6BB5`),null;let n=e.executorSettings&&r.applySettings?r.applySettings(e.executorSettings):r.getInfo();return n.enabled?n:(t.quiet||h.warn(`\u9A8C\u8BC1\u6267\u884C\u5668 '${i}' \u5DF2\u7981\u7528\uFF0C\u5C06\u8DF3\u8FC7\u9A8C\u8BC1\u9636\u6BB5`),null)}var b0=require("node:crypto");M();M();var kf=`
|
|
345
|
-
...\uFF08diff \u8FC7\u957F\uFF0C\u5DF2\u622A\u65AD\uFF09...`,Gi={FILE_EXACT_MATCH:40,FILE_PARTIAL_MATCH:30,LINE_OVERLAP:30,LINE_NEARBY:15,DESCRIPTION:30},Oa={MINIMUM_SCORE:40,LINE_TOLERANCE:5,LINE_EXTENDED_TOLERANCE:20};var ti="\u9A8C\u8BC1\u5668\u786E\u8BA4\u8BE5\u95EE\u9898\u6210\u7ACB\uFF0C\u4F46\u672A\u63D0\u4F9B\u539F\u56E0";function If(e){return e.replace(/\\/g,"/").replace(/^\.\//,"").toLowerCase()}function
|
|
345
|
+
...\uFF08diff \u8FC7\u957F\uFF0C\u5DF2\u622A\u65AD\uFF09...`,Gi={FILE_EXACT_MATCH:40,FILE_PARTIAL_MATCH:30,LINE_OVERLAP:30,LINE_NEARBY:15,DESCRIPTION:30},Oa={MINIMUM_SCORE:40,LINE_TOLERANCE:5,LINE_EXTENDED_TOLERANCE:20};var ti="\u9A8C\u8BC1\u5668\u786E\u8BA4\u8BE5\u95EE\u9898\u6210\u7ACB\uFF0C\u4F46\u672A\u63D0\u4F9B\u539F\u56E0";function If(e){return e.replace(/\\/g,"/").replace(/^\.\//,"").toLowerCase()}function DI(e,t,s,i,r=Oa.LINE_TOLERANCE){return e<=i&&s<=t?!0:Math.abs(e-s)<=r||Math.abs(t-i)<=r||Math.abs(e-i)<=r||Math.abs(t-s)<=r}function yI(e,t,s){let i=0;if(!t.file)return 0;let r=s??If(e.file),n=If(t.file);if(r===n)i+=Gi.FILE_EXACT_MATCH;else if(r.endsWith(n)||n.endsWith(r))i+=Gi.FILE_PARTIAL_MATCH;else return 0;if(typeof t.lineStart=="number"){let o=t.lineEnd??t.lineStart;DI(e.lineStart,e.lineEnd,t.lineStart,o)?i+=Gi.LINE_OVERLAP:Math.abs(e.lineStart-t.lineStart)<=Oa.LINE_EXTENDED_TOLERANCE&&(i+=Gi.LINE_NEARBY)}if(t.shortDescription&&e.shortDescription){let a=new Set(e.shortDescription.toLowerCase().split(/\W+/).filter(f=>f.length>=3)),u=new Set(t.shortDescription.toLowerCase().split(/\W+/).filter(f=>f.length>=3)),c=[...a].filter(f=>u.has(f)).length/Math.max(a.size,u.size,1);i+=Math.round(c*Gi.DESCRIPTION)}return i}function wI(e){let t=[],s=/<(json_output|json)>\s*([\s\S]*?)\s*<\/\1>/gi,i;for(;(i=s.exec(e))!==null;)i[2]&&t.push(i[2].trim());let r=/```(?:json)?\s*([\s\S]*?)```/gi,n;for(;(n=r.exec(e))!==null;)n[1]&&t.push(n[1].trim());let o=e.trim();return(o.startsWith("{")||o.startsWith("["))&&t.push(o),[...new Set(t)]}function g0(e,t){return typeof e=="number"?e:t}function bI(e,t){return typeof e=="string"&&e.trim()?e.trim():t}function m0(e){if(!Array.isArray(e))return null;let t=e.filter(s=>typeof s=="object"&&s!==null&&typeof s.id=="number").map(s=>({id:s.id,confidence:g0(s.confidence,100),reason:bI(s.reason,ti)}));return t.length>0||e.length===0?t:null}function vI(e){return Array.isArray(e)?e.filter(t=>typeof t=="object"&&t!==null&&typeof t.id=="number").map(t=>({id:t.id,confidence:g0(t.confidence,0),reason:typeof t.reason=="string"&&t.reason?t.reason:"\u672A\u63D0\u4F9B\u539F\u56E0"})):[]}function EI(e){if(Array.isArray(e)){if(e.every(r=>typeof r=="number"))return{validatedIssues:e.map(r=>({id:r,confidence:100,reason:ti})),filteredIssues:[]};let i=m0(e);return i?{validatedIssues:i,filteredIssues:[]}:null}if(!e||typeof e!="object")return null;let t=e;if(t.issues===void 0&&t.filtered_issues===void 0&&t.valid_ids===void 0&&t.validIds===void 0)return null;let s=[];if(Array.isArray(t.valid_ids)&&t.valid_ids.every(i=>typeof i=="number"))s=t.valid_ids.map(i=>({id:i,confidence:100,reason:ti}));else if(Array.isArray(t.validIds)&&t.validIds.every(i=>typeof i=="number"))s=t.validIds.map(i=>({id:i,confidence:100,reason:ti}));else{let i=m0(t.issues);if(i===null&&Array.isArray(t.issues)&&t.issues.length>0)return null;s=i??[]}return{validatedIssues:s,filteredIssues:vI(t.filtered_issues)}}var FI=e=>{for(let t of wI(e))try{let s=EI(JSON.parse(t));if(s)return s}catch(s){h.debug?.(`\u89E3\u6790 JSON \u8F93\u51FA\u683C\u5F0F\u5931\u8D25\uFF1A${s instanceof Error?s.message:String(s)}`)}return null},CI=e=>{let t=e.match(/<valid-ids>\s*(\[[\s\S]*?\])\s*<\/valid-ids>/);if(!t?.[1])return null;try{let s=JSON.parse(t[1]);return!Array.isArray(s)||!s.every(r=>typeof r=="number")?null:{validatedIssues:s.map(r=>({id:r,confidence:100,reason:ti})),filteredIssues:[]}}catch(s){return h.debug?.(`\u89E3\u6790\u65E7\u7248 ID \u683C\u5F0F\u5931\u8D25\uFF1A${s instanceof Error?s.message:String(s)}`),null}},xI=e=>{let t=e.match(/\[\s*(\d+\s*(?:,\s*\d+\s*)*)\]/);if(!t?.[1])return null;try{let s=JSON.parse(`[${t[1]}]`);if(!Array.isArray(s))return null;let i=s.filter(n=>typeof n=="number");return i.length===0?null:{validatedIssues:i.map(n=>({id:n,confidence:100,reason:ti})),filteredIssues:[]}}catch(s){return h.debug?.(`\u89E3\u6790\u515C\u5E95\u6570\u7EC4\u683C\u5F0F\u5931\u8D25\uFF1A${s instanceof Error?s.message:String(s)}`),null}},SI=(e,t)=>{if(!t||t.length===0)return null;let s=e.match(/<json>\s*([\s\S]*?)\s*<\/json>/);if(!s?.[1])return null;try{let i=JSON.parse(s[1]);if(!Array.isArray(i)||i.length===0)return null;let r=new Map;for(let a of t)r.set(a.id,If(a.file));let n=new Set;for(let a of i){let u=null,l=0;for(let c of t){if(n.has(c.id))continue;let f=r.get(c.id),d=yI(c,a,f);d>l&&d>=Oa.MINIMUM_SCORE&&(l=d,u=c)}u&&n.add(u.id)}return n.size===0?null:{validatedIssues:Array.from(n).map(a=>({id:a,confidence:100,reason:ti})),filteredIssues:[]}}catch(i){return h.debug?.(`\u89E3\u6790\u6A21\u7CCA\u5339\u914D\u683C\u5F0F\u5931\u8D25\uFF1A${i instanceof Error?i.message:String(i)}`),null}};function D0(e,t){let s=[FI,CI,xI,SI];for(let i of s){let r=i(e,t);if(r!==null)return r}return null}M();function RI(e){return e.map(t=>{let s=[`<issue id="${t.id}">`,`**[${t.severity.toUpperCase()}] ${t.category}** in \`${t.file}:${t.lineStart}-${t.lineEnd}\``,`Agent: ${t.agent}`,"",`**Problem:** ${t.shortDescription}`,"",t.fullDescription];return t.suggestion&&s.push("",`**Suggestion:** ${t.suggestion}`),s.push("</issue>"),s.join(`
|
|
346
346
|
`)}).join(`
|
|
347
347
|
|
|
348
|
-
`)}function
|
|
348
|
+
`)}function kI(e,t){return!t.techDoc?.requirements?.length||!e.some(i=>i.agent==="tech-doc-compliance"||i.rule==="tech-doc-compliance")?"":["","# Tech Doc Requirement Context","",`Source: ${t.techDoc.source}`,t.techDoc.title?`Title: ${t.techDoc.title}`:null,"",...t.techDoc.requirements.map(i=>[`## ${i.id}: ${i.title}`,`Priority: ${i.priority}`,`Description: ${i.description}`,i.acceptanceSignals.length>0?`Acceptance signals: ${i.acceptanceSignals.join("; ")}`:null,i.sourceLocation?`Source location: ${i.sourceLocation}`:null,i.sourceQuote?`Source quote: ${i.sourceQuote}`:null].filter(Boolean).join(`
|
|
349
349
|
`))].filter(Boolean).join(`
|
|
350
|
-
`)}function
|
|
350
|
+
`)}function II(e,t){if(e.length<=t)return e;let s=Math.floor((t-kf.length)/2),i=e.slice(0,s),r=e.slice(-s);return i+kf+r}function y0(e,t,s,i,r){let n=RI(e),o=t.metadata.repository,a=t.metadata.commitMessages?.length?["","## Commit Messages (IMPORTANT: Check these to understand change intent!)","These messages explain WHY the changes were made. Use them to identify INTENTIONAL trade-offs.","",...t.metadata.commitMessages.map((D,w)=>`### Commit ${w+1}:
|
|
351
351
|
${D}`)].join(`
|
|
352
352
|
`):null,u=["# Repository Context",`Base path: ${o}`,"All file paths below are relative to this directory.","Use only the issue payload, changed diffs, full file context, dependency context, project notes, and commit context included in this prompt.","","## Project Context Notes","- Project documentation or code comments may appear in the provided context when available.","- Treat explanatory comments and commit messages as evidence for intentional trade-offs.",t.metadata.baseRef?`Base ref: ${t.metadata.baseRef}`:null,t.metadata.headRef?`Head ref: ${t.metadata.headRef}`:null,a].filter(Boolean).join(`
|
|
353
|
-
`),l=new Set(e.map(D=>D.file)),c=t.diffs.filter(D=>l.has(D.file)),f=c.length>0?["","## Changed Files (diffs for context)","These are the actual changes being reviewed. Use these to verify issues.","",...c.map(D=>{let w=
|
|
353
|
+
`),l=new Set(e.map(D=>D.file)),c=t.diffs.filter(D=>l.has(D.file)),f=c.length>0?["","## Changed Files (diffs for context)","These are the actual changes being reviewed. Use these to verify issues.","",...c.map(D=>{let w=II(D.diff,2e3);return`File: ${D.file}
|
|
354
354
|
${w}`})].join(`
|
|
355
|
-
`):"",d=Cf(c,t.supplementalContextFiles),p=
|
|
355
|
+
`):"",d=Cf(c,t.supplementalContextFiles),p=kI(e,t),m=`${u}${f}${d}${p}
|
|
356
356
|
|
|
357
357
|
${r}
|
|
358
358
|
|
|
@@ -361,14 +361,14 @@ ${r}
|
|
|
361
361
|
${n}`,g=s.systemPrompt;return i&&(g=`${g}
|
|
362
362
|
|
|
363
363
|
${i}`),{input:m,systemPrompt:g}}function w0(e,t,s,i,r,n){if(!e.verbose||e.quiet)return;let o=n>1;h.plain(`
|
|
364
|
-
\u9A8C\u8BC1 prompt${o?`\uFF08batch ${r+1}/${n}\uFF09`:""}\uFF1A`),h.plain(` \u6267\u884C\u5668\uFF1A${t.name}`),h.plain(` \u5F85\u9A8C\u8BC1\u95EE\u9898\u6570\uFF1A${s.length}`),h.plain("\u2500".repeat(80)),h.plain(i.slice(0,2e3)+(i.length>2e3?"...":"")),h.plain("\u2500".repeat(80)),h.newline()}var II="\u9A8C\u8BC1\u5668\u786E\u8BA4\u8BE5\u95EE\u9898\u6210\u7ACB\uFF0C\u4F46\u65E7\u7F13\u5B58\u672A\u8BB0\u5F55\u539F\u56E0";function _I(e,t){let s=e instanceof Error?e.message:String(e);return{success:!1,data:[],validatedIssues:[],filteredIssues:[],error:s,duration:t}}function $I(e){let t=e.map(s=>s.id).sort((s,i)=>s-i).join(",");return(0,b0.createHash)("sha256").update(t).digest("hex")}function TI(e){return e.map(t=>({id:t.id,confidence:t.confidence,reason:typeof t.reason=="string"&&t.reason.trim()?t.reason.trim():II}))}async function PI(e,t){let s=Date.now();try{let i=await e(),r=Date.now()-s;return i.success?t.completeBatch("validation"):t.failTask("validation"),{success:i.success,data:i.data,validatedIssues:i.validatedIssues,filteredIssues:i.filteredIssues,error:i.error,usage:i.usage,cacheHit:i.cacheHit,duration:r}}catch(i){let r=Date.now()-s;return t.failTask("validation"),_I(i,r)}}async function BI(e,t,s,i,r){let n=await _a({label:"Validating",batchIndex:i,totalBatches:r,itemCount:s.length,itemName:"issue"},t.quiet??!1,async()=>{let o=await e();return{success:o.success,data:{validIds:o.data,validatedIssues:o.validatedIssues,filteredIssues:o.filteredIssues},error:o.error,usage:o.usage,cacheHit:o.cacheHit}},(o,a)=>r>1?`\u5DF2\u9A8C\u8BC1 batch ${i+1}/${r}\uFF08${o.validIds.length} \u4E2A\u6709\u6548\uFF0C${a}ms\uFF09`:`\u5DF2\u9A8C\u8BC1 ${o.validIds.length} \u4E2A\u95EE\u9898\uFF08${a}ms\uFF09`,o=>r>1?`\u9A8C\u8BC1\u5931\u8D25\uFF08batch ${i+1}\uFF09\uFF1A${o}`:`\u9A8C\u8BC1\u5931\u8D25\uFF1A${o}`);return{success:n.success,data:n.data?.validIds??[],validatedIssues:n.data?.validatedIssues??[],filteredIssues:n.data?.filteredIssues??[],error:n.error,usage:n.usage,cacheHit:n.cacheHit,duration:n.duration}}async function _f(e){let{repository:t,cacheKey:s,validationAgent:i,executor:r,output:n,error:o,usage:a}=e;await Ef(t,{key:s,success:!1,agent:i.name,executor:r.name,model:r.model,output:n,validIds:[],validatedIssues:[],filteredIssues:[],error:o,usage:a})}async function v0(e,t,s,i,r,n,o,a,u){u&&t===0&&u.startTask("validation");let{input:l,systemPrompt:c}=y0(e,n,i,o,a),f={agent:i,executor:r,input:l,systemPrompt:c,verbose:n.verbose,quiet:n.quiet,cwd:n.metadata.repository,modelOverride:n.modelOverride,outputMode:"text"};w0(n,r,e,l,t,s);let d=async()=>{let p=Bi(c,l,""),m=By({agent:i.name,executor:r.name,model:r.model,baseUrl:r.baseUrl,temperature:r.temperature,maxTokens:r.maxTokens,systemPrompt:c,prompt:p,issueBatchHash:$I(e)}),g=await Ny(n.metadata.repository,m);if(g)return{success:g.success,data:g.validIds,validatedIssues:TI(g.validatedIssues),filteredIssues:g.filteredIssues,error:g.error,usage:g.usage,cacheHit:!0};let D=await he.executeAgent(f);if(!D.success)return{success:!1,data:[],validatedIssues:[],filteredIssues:[],error:D.error,usage:D.usage};await _f({repository:n.metadata.repository,cacheKey:m,validationAgent:i,executor:r,output:D.output,error:"\u9A8C\u8BC1\u8F93\u51FA\u5C1A\u672A\u6210\u529F\u89E3\u6790",usage:D.usage});let w;try{w=D0(D.output,e)}catch(v){let E=v instanceof Error?v.message:String(v);return await _f({repository:n.metadata.repository,cacheKey:m,validationAgent:i,executor:r,output:D.output,error:E,usage:D.usage}),{success:!1,data:[],validatedIssues:[],filteredIssues:[],error:E,usage:D.usage}}if(!w){let v="\u9A8C\u8BC1\u8F93\u51FA\u65E0\u6CD5\u89E3\u6790\u4E3A\u7ED3\u6784\u5316\u7ED3\u679C";return await _f({repository:n.metadata.repository,cacheKey:m,validationAgent:i,executor:r,output:D.output,error:v,usage:D.usage}),{success:!1,data:[],validatedIssues:[],filteredIssues:[],error:v,usage:D.usage}}let y=w.validatedIssues.map(v=>v.id);return await Ef(n.metadata.repository,{key:m,success:!0,agent:i.name,executor:r.name,model:r.model,output:D.output,validIds:y,validatedIssues:w.validatedIssues,filteredIssues:w.filteredIssues,usage:D.usage}),{success:!0,data:y,validatedIssues:w.validatedIssues,filteredIssues:w.filteredIssues,usage:D.usage}};return u?PI(d,u):BI(d,n,e,t,s)}var LI="\u9A8C\u8BC1\u5668\u672A\u8FD4\u56DE\u8BE5\u95EE\u9898\u7684\u4FDD\u7559\u6216\u8FC7\u6EE4\u7ED3\u8BBA\uFF0C\u6309\u672A\u901A\u8FC7\u9A8C\u8BC1\u5904\u7406";function Tf(e,t,s,i){let r;return s==="low-confidence"?r=`\u9A8C\u8BC1\u7F6E\u4FE1\u5EA6\u8FC7\u4F4E\uFF08${t}%\uFF0C\u9608\u503C\uFF1A${i.threshold}%\uFF09`:r=`\u7F6E\u4FE1\u5EA6\u4E0B\u964D\u8FC7\u5927\uFF08${i.delta}\uFF0C\u539F\u59CB\uFF1A${i.originalConfidence}%\uFF0C\u9A8C\u8BC1\u540E\uFF1A${t}%\uFF09`,{id:e,confidence:t,reason:r}}function E0(e,t,s,i){return{id:e.id,status:t,confidence:s,reason:i,file:e.file,lineStart:e.lineStart,lineEnd:e.lineEnd,severity:e.severity,category:e.category,shortDescription:e.shortDescription,agent:e.agent,...e.rule&&{rule:e.rule}}}function F0(e,t,s){let i=new Set,r=[],n=new Map(e.map(d=>[d.id,d])),o=new Map(t.map(d=>[d.id,d])),a=new Set(s.map(d=>d.id));for(let d of t){if(a.has(d.id))continue;let m=n.get(d.id)?.confidence??100,g=d.confidence-m;d.confidence<50?r.push(Tf(d.id,d.confidence,"low-confidence",{threshold:50})):g<-40?r.push(Tf(d.id,d.confidence,"negative-delta",{delta:g,originalConfidence:m})):i.add(d.id)}let u=[...s,...r],l=new Set(u.map(d=>d.id));for(let d of e){if(i.has(d.id)||l.has(d.id))continue;let p=Tf(d.id,0,"low-confidence",{threshold:50});u.push({...p,reason:LI}),l.add(d.id)}let c=new Map(u.map(d=>[d.id,d])),f=e.map(d=>{let p=c.get(d.id);if(p)return E0(d,"filtered",p.confidence,p.reason);let m=o.get(d.id);return E0(d,"kept",m?.confidence??d.confidence??100,m?.reason??"\u9A8C\u8BC1\u5668\u786E\u8BA4\u8BE5\u95EE\u9898\u6210\u7ACB\uFF0C\u4F46\u672A\u63D0\u4F9B\u539F\u56E0")});return{finalValidIds:i,deltaFilteredIssues:r,mergedFilteredIssues:u,validationSummary:{total:e.length,keptCount:i.size,filteredCount:e.length-i.size,decisions:f},issueMap:n}}function MI(e,t=120){return e.length>t?`${e.slice(0,t-1)}\u2026`:e}function jI(e){return[`\u9A8C\u8BC1\u7ED3\u8BBA\uFF1A\u4FDD\u7559 ${e.keptCount}\uFF0C\u8FC7\u6EE4 ${e.filteredCount}`,...e.decisions.map(t=>{let s=t.status==="kept"?"\u2713":"\xD7",i=t.status==="kept"?"\u4FDD\u7559":"\u8FC7\u6EE4";return` ${s} [${t.id}] ${t.file}:${t.lineStart} ${i}\uFF08${t.confidence}%\uFF09\uFF1A${MI(t.reason)}`})]}function C0(){return{id:"validation",name:"Validation",description:"\u590D\u6838\u95EE\u9898\u5E76\u8FC7\u6EE4\u8BEF\u62A5",enabled:!0,order:5,execute:async e=>{let t=Date.now();if(e.skipValidation)return e.quiet||h.sync("\u8DF3\u8FC7\u9A8C\u8BC1\u9636\u6BB5\uFF08--skip-validation\uFF09"),{stageId:"validation",stageName:"Validation",success:!0,duration:Date.now()-t};let s=e.issues;if(s.length===0)return e.quiet||h.sync("\u6CA1\u6709\u9700\u8981\u9A8C\u8BC1\u7684\u95EE\u9898"),{stageId:"validation",stageName:"Validation",success:!0,duration:Date.now()-t};let i=s.map(($,W)=>({...$,id:W+1}));if(!e.config){let $="Pipeline \u4E0A\u4E0B\u6587\u4E2D\u7684 config \u5C1A\u672A\u521D\u59CB\u5316";return h.error($),{stageId:"validation",stageName:"Validation",success:!1,duration:0,error:$}}let r=e.config,[n,o,a]=await Promise.all([d0(e.metadata.repository),ba(),h0()]),u=r.workflows?.validation,l=r.executor,c=e.modelOverride;if(u&&u.length>0){let $=u[u.length-1];$&&(c=e.modelOverride||$.model),e.quiet||h.info(`Workflow \u6A21\u5F0F\uFF1A\u4F7F\u7528 ${l}${c?`\uFF08\u6A21\u578B\uFF1A${c}\uFF09`:""} \u6267\u884C\u9A8C\u8BC1`)}let f=l,p=(r.executors?.[f]||{}).validation||{},m=c??(typeof p.model=="string"?p.model:void 0),g={...Me({executorOverride:f,modelOverride:m,config:r}),...p,...m&&{model:m}},D=g.batchSize??6,w=g.concurrency??e.concurrency,y={...n,executor:f,executorSettings:{...g,...n.executorSettings??{},model:g.model}},v=p0(y,e,f);if(!v)return{stageId:"validation",stageName:"Validation",success:!0,duration:Date.now()-t};let E=c?{...e,modelOverride:c}:e,F=My(i,D),S=v.model;e.quiet||(h.sync(`\u6B63\u5728\u9A8C\u8BC1 ${s.length} \u4E2A\u95EE\u9898...`),e.verbose&&h.plain(` \u6267\u884C\u5668\uFF1A${v.name}${S?`\uFF08\u6A21\u578B\uFF1A${S}\uFF09`:""}`));let x=!e.quiet&&!e.stream&&!e.verbose?new ui:void 0;x&&(x.addTask("validation","Validation",F.length,s.length,1,`${s.length} \u4E2A\u95EE\u9898`),x.start());try{let $,W=qt(w);$=await Promise.all(F.map((Z,ie)=>W(()=>v0(Z,ie,F.length,y,v,E,o,a,x))));let ae=Ut();for(let Z of $)ae=bs(ae,Z.usage,{cacheHit:Z.cacheHit});if(e.usage=dn([e.usage,ae]),x?.stop(),!jy($)){let Z=qy($),ie=Ia(Z.map(ve=>ve.error));return{stageId:"validation",stageName:"Validation",success:!1,duration:Date.now()-t,error:ie}}let z=$.flatMap(Z=>Z.validatedIssues),R=$.flatMap(Z=>Z.filteredIssues),{finalValidIds:N,deltaFilteredIssues:Y,mergedFilteredIssues:X,validationSummary:se,issueMap:ne}=F0(i,z,R);for(let Z of X){let ie=ne.get(Z.id);ie&&it(e,{stageId:"validation",stageName:"Validation",action:"filtered",reason:Z.reason,issue:ie})}e.issues=i.filter(Z=>N.has(Z.id)),e.validation=se;let H=N.size,Q=s.length-H,ce=Date.now()-t;if(!e.quiet){let Z=Y.length,ie=R.length;Z>0?h.done(`\u9A8C\u8BC1\u5B8C\u6210\uFF1A${H} \u4E2A\u6709\u6548\uFF0C${ie} \u4E2A\u88AB\u9A8C\u8BC1\u5668\u8FC7\u6EE4\uFF0C${Z} \u4E2A\u56E0\u7F6E\u4FE1\u5EA6\u53D8\u5316\u8FC7\u6EE4\uFF08${ce}ms\uFF09`):h.done(`\u9A8C\u8BC1\u5B8C\u6210\uFF1A${H} \u4E2A\u6709\u6548\uFF0C${Q} \u4E2A\u88AB\u8FC7\u6EE4\uFF08${ce}ms\uFF09`),h.newline();for(let ve of jI(se))h.plain(ve);if(e.verbose&&X.length>0){h.newline(),h.plain("\u88AB\u8FC7\u6EE4\u7684\u95EE\u9898\uFF1A");for(let ve of X){let mt=ne.get(ve.id);mt?h.plain(` [${ve.id}] ${mt.file}:${mt.lineStart} \u2014 ${ve.reason}`):h.plain(` [${ve.id}] \u2014 ${ve.reason}`)}}}return{stageId:"validation",stageName:"Validation",success:!0,duration:ce,output:{validCount:H,filteredCount:Q,filteredIssues:X,deltaFilteredCount:Y.length,decisions:se.decisions}}}catch($){x?.stop();let W=$ instanceof Error?$.message:String($);return e.quiet||h.error(`\u9A8C\u8BC1\u9636\u6BB5\u9519\u8BEF\uFF1A${W}`),{stageId:"validation",stageName:"Validation",success:!1,duration:Date.now()-t,error:W}}}}}function qI(e){let t=new Set;for(let s of e.diffs)t.add(s.file),s.oldPath&&t.add(s.oldPath),s.newPath&&t.add(s.newPath);return t}function x0(){return{id:"gitlab-mr-issue-filter",name:"GitLab MR Issue Filter",description:"\u8FC7\u6EE4\u6389\u4E0D\u5C5E\u4E8E MR \u53D8\u66F4\u6587\u4EF6\u7684 issue",enabled:!0,order:7,execute:async e=>{let t=Date.now();if(e.metadata.reviewTarget?.kind!=="gitlab-mr")return{stageId:"gitlab-mr-issue-filter",stageName:"GitLab MR Issue Filter",success:!0,duration:Date.now()-t,output:{skipped:!0}};let s=qI(e),i=e.issues.length;e.issues=e.issues.filter(n=>s.has(n.file)?!0:(it(e,{stageId:"gitlab-mr-issue-filter",stageName:"GitLab MR Issue Filter",action:"filtered",reason:`issue.file=${n.file} \u4E0D\u5C5E\u4E8E\u5F53\u524D MR \u53D8\u66F4\u6587\u4EF6`,issue:n}),!1));let r=i-e.issues.length;return{stageId:"gitlab-mr-issue-filter",stageName:"GitLab MR Issue Filter",success:!0,duration:Date.now()-t,output:{totalBefore:i,totalAfter:e.issues.length,filtered:r}}}}}var k0=require("node:child_process"),Ki=require("node:fs/promises"),Rt=require("node:path");je();M();var UI=5,VI=6e4,S0=3e4;function I0(e,t){let s=process.env[e];if(!s)return t;let i=Number.parseInt(s,10);return Number.isNaN(i)||i<1?t:i}function GI(e){let t=new Set,s=[];for(let i of e){let r=`${i.file}:${i.lineStart}:${i.lineEnd}:${i.severity}:${i.shortDescription}`;t.has(r)||(t.add(r),s.push(i))}return s}function _0(e){let t=new Set;for(let s of e.split(`
|
|
365
|
-
`)){let i=s.match(/^diff --git a\/(.+?) b\/(.+)$/);i?.[1]&&t.add(i[1]),i?.[2]&&t.add(i[2])}return[...t]}function Pf(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}function
|
|
366
|
-
`)){if(!n.startsWith("--- ")&&!n.startsWith("+++ "))continue;let o=
|
|
364
|
+
\u9A8C\u8BC1 prompt${o?`\uFF08batch ${r+1}/${n}\uFF09`:""}\uFF1A`),h.plain(` \u6267\u884C\u5668\uFF1A${t.name}`),h.plain(` \u5F85\u9A8C\u8BC1\u95EE\u9898\u6570\uFF1A${s.length}`),h.plain("\u2500".repeat(80)),h.plain(i.slice(0,2e3)+(i.length>2e3?"...":"")),h.plain("\u2500".repeat(80)),h.newline()}var _I="\u9A8C\u8BC1\u5668\u786E\u8BA4\u8BE5\u95EE\u9898\u6210\u7ACB\uFF0C\u4F46\u65E7\u7F13\u5B58\u672A\u8BB0\u5F55\u539F\u56E0";function $I(e,t){let s=e instanceof Error?e.message:String(e);return{success:!1,data:[],validatedIssues:[],filteredIssues:[],error:s,duration:t}}function TI(e){let t=e.map(s=>s.id).sort((s,i)=>s-i).join(",");return(0,b0.createHash)("sha256").update(t).digest("hex")}function PI(e){return e.map(t=>({id:t.id,confidence:t.confidence,reason:typeof t.reason=="string"&&t.reason.trim()?t.reason.trim():_I}))}async function BI(e,t){let s=Date.now();try{let i=await e(),r=Date.now()-s;return i.success?t.completeBatch("validation"):t.failTask("validation"),{success:i.success,data:i.data,validatedIssues:i.validatedIssues,filteredIssues:i.filteredIssues,error:i.error,usage:i.usage,cacheHit:i.cacheHit,duration:r}}catch(i){let r=Date.now()-s;return t.failTask("validation"),$I(i,r)}}async function OI(e,t,s,i,r){let n=await _a({label:"Validating",batchIndex:i,totalBatches:r,itemCount:s.length,itemName:"issue"},t.quiet??!1,async()=>{let o=await e();return{success:o.success,data:{validIds:o.data,validatedIssues:o.validatedIssues,filteredIssues:o.filteredIssues},error:o.error,usage:o.usage,cacheHit:o.cacheHit}},(o,a)=>r>1?`\u5DF2\u9A8C\u8BC1 batch ${i+1}/${r}\uFF08${o.validIds.length} \u4E2A\u6709\u6548\uFF0C${a}ms\uFF09`:`\u5DF2\u9A8C\u8BC1 ${o.validIds.length} \u4E2A\u95EE\u9898\uFF08${a}ms\uFF09`,o=>r>1?`\u9A8C\u8BC1\u5931\u8D25\uFF08batch ${i+1}\uFF09\uFF1A${o}`:`\u9A8C\u8BC1\u5931\u8D25\uFF1A${o}`);return{success:n.success,data:n.data?.validIds??[],validatedIssues:n.data?.validatedIssues??[],filteredIssues:n.data?.filteredIssues??[],error:n.error,usage:n.usage,cacheHit:n.cacheHit,duration:n.duration}}async function _f(e){let{repository:t,cacheKey:s,validationAgent:i,executor:r,output:n,error:o,usage:a}=e;await Ef(t,{key:s,success:!1,agent:i.name,executor:r.name,model:r.model,output:n,validIds:[],validatedIssues:[],filteredIssues:[],error:o,usage:a})}async function v0(e,t,s,i,r,n,o,a,u){u&&t===0&&u.startTask("validation");let{input:l,systemPrompt:c}=y0(e,n,i,o,a),f={agent:i,executor:r,input:l,systemPrompt:c,verbose:n.verbose,quiet:n.quiet,cwd:n.metadata.repository,modelOverride:n.modelOverride,outputMode:"text"};w0(n,r,e,l,t,s);let d=async()=>{let p=Bi(c,l,""),m=By({agent:i.name,executor:r.name,model:r.model,baseUrl:r.baseUrl,temperature:r.temperature,maxTokens:r.maxTokens,systemPrompt:c,prompt:p,issueBatchHash:TI(e)}),g=await Ny(n.metadata.repository,m);if(g)return{success:g.success,data:g.validIds,validatedIssues:PI(g.validatedIssues),filteredIssues:g.filteredIssues,error:g.error,usage:g.usage,cacheHit:!0};let D=await he.executeAgent(f);if(!D.success)return{success:!1,data:[],validatedIssues:[],filteredIssues:[],error:D.error,usage:D.usage};await _f({repository:n.metadata.repository,cacheKey:m,validationAgent:i,executor:r,output:D.output,error:"\u9A8C\u8BC1\u8F93\u51FA\u5C1A\u672A\u6210\u529F\u89E3\u6790",usage:D.usage});let w;try{w=D0(D.output,e)}catch(v){let E=v instanceof Error?v.message:String(v);return await _f({repository:n.metadata.repository,cacheKey:m,validationAgent:i,executor:r,output:D.output,error:E,usage:D.usage}),{success:!1,data:[],validatedIssues:[],filteredIssues:[],error:E,usage:D.usage}}if(!w){let v="\u9A8C\u8BC1\u8F93\u51FA\u65E0\u6CD5\u89E3\u6790\u4E3A\u7ED3\u6784\u5316\u7ED3\u679C";return await _f({repository:n.metadata.repository,cacheKey:m,validationAgent:i,executor:r,output:D.output,error:v,usage:D.usage}),{success:!1,data:[],validatedIssues:[],filteredIssues:[],error:v,usage:D.usage}}let y=w.validatedIssues.map(v=>v.id);return await Ef(n.metadata.repository,{key:m,success:!0,agent:i.name,executor:r.name,model:r.model,output:D.output,validIds:y,validatedIssues:w.validatedIssues,filteredIssues:w.filteredIssues,usage:D.usage}),{success:!0,data:y,validatedIssues:w.validatedIssues,filteredIssues:w.filteredIssues,usage:D.usage}};return u?BI(d,u):OI(d,n,e,t,s)}var NI="\u9A8C\u8BC1\u5668\u672A\u8FD4\u56DE\u8BE5\u95EE\u9898\u7684\u4FDD\u7559\u6216\u8FC7\u6EE4\u7ED3\u8BBA\uFF0C\u6309\u672A\u901A\u8FC7\u9A8C\u8BC1\u5904\u7406";function Tf(e,t,s,i){let r;return s==="low-confidence"?r=`\u9A8C\u8BC1\u7F6E\u4FE1\u5EA6\u8FC7\u4F4E\uFF08${t}%\uFF0C\u9608\u503C\uFF1A${i.threshold}%\uFF09`:r=`\u7F6E\u4FE1\u5EA6\u4E0B\u964D\u8FC7\u5927\uFF08${i.delta}\uFF0C\u539F\u59CB\uFF1A${i.originalConfidence}%\uFF0C\u9A8C\u8BC1\u540E\uFF1A${t}%\uFF09`,{id:e,confidence:t,reason:r}}function E0(e,t,s,i){return{id:e.id,status:t,confidence:s,reason:i,file:e.file,lineStart:e.lineStart,lineEnd:e.lineEnd,severity:e.severity,category:e.category,shortDescription:e.shortDescription,agent:e.agent,...e.rule&&{rule:e.rule}}}function F0(e,t,s){let i=new Set,r=[],n=new Map(e.map(d=>[d.id,d])),o=new Map(t.map(d=>[d.id,d])),a=new Set(s.map(d=>d.id));for(let d of t){if(a.has(d.id))continue;let m=n.get(d.id)?.confidence??100,g=d.confidence-m;d.confidence<50?r.push(Tf(d.id,d.confidence,"low-confidence",{threshold:50})):g<-40?r.push(Tf(d.id,d.confidence,"negative-delta",{delta:g,originalConfidence:m})):i.add(d.id)}let u=[...s,...r],l=new Set(u.map(d=>d.id));for(let d of e){if(i.has(d.id)||l.has(d.id))continue;let p=Tf(d.id,0,"low-confidence",{threshold:50});u.push({...p,reason:NI}),l.add(d.id)}let c=new Map(u.map(d=>[d.id,d])),f=e.map(d=>{let p=c.get(d.id);if(p)return E0(d,"filtered",p.confidence,p.reason);let m=o.get(d.id);return E0(d,"kept",m?.confidence??d.confidence??100,m?.reason??"\u9A8C\u8BC1\u5668\u786E\u8BA4\u8BE5\u95EE\u9898\u6210\u7ACB\uFF0C\u4F46\u672A\u63D0\u4F9B\u539F\u56E0")});return{finalValidIds:i,deltaFilteredIssues:r,mergedFilteredIssues:u,validationSummary:{total:e.length,keptCount:i.size,filteredCount:e.length-i.size,decisions:f},issueMap:n}}function jI(e,t=120){return e.length>t?`${e.slice(0,t-1)}\u2026`:e}function qI(e){return[`\u9A8C\u8BC1\u7ED3\u8BBA\uFF1A\u4FDD\u7559 ${e.keptCount}\uFF0C\u8FC7\u6EE4 ${e.filteredCount}`,...e.decisions.map(t=>{let s=t.status==="kept"?"\u2713":"\xD7",i=t.status==="kept"?"\u4FDD\u7559":"\u8FC7\u6EE4";return` ${s} [${t.id}] ${t.file}:${t.lineStart} ${i}\uFF08${t.confidence}%\uFF09\uFF1A${jI(t.reason)}`})]}function C0(){return{id:"validation",name:"Validation",description:"\u590D\u6838\u95EE\u9898\u5E76\u8FC7\u6EE4\u8BEF\u62A5",enabled:!0,order:5,execute:async e=>{let t=Date.now();if(e.skipValidation)return e.quiet||h.sync("\u8DF3\u8FC7\u9A8C\u8BC1\u9636\u6BB5\uFF08--skip-validation\uFF09"),{stageId:"validation",stageName:"Validation",success:!0,duration:Date.now()-t};let s=e.issues;if(s.length===0)return e.quiet||h.sync("\u6CA1\u6709\u9700\u8981\u9A8C\u8BC1\u7684\u95EE\u9898"),{stageId:"validation",stageName:"Validation",success:!0,duration:Date.now()-t};let i=s.map(($,W)=>({...$,id:W+1}));if(!e.config){let $="Pipeline \u4E0A\u4E0B\u6587\u4E2D\u7684 config \u5C1A\u672A\u521D\u59CB\u5316";return h.error($),{stageId:"validation",stageName:"Validation",success:!1,duration:0,error:$}}let r=e.config,[n,o,a]=await Promise.all([d0(e.metadata.repository),ba(),h0()]),u=r.workflows?.validation,l=r.executor,c=e.modelOverride;if(u&&u.length>0){let $=u[u.length-1];$&&(c=e.modelOverride||$.model),e.quiet||h.info(`Workflow \u6A21\u5F0F\uFF1A\u4F7F\u7528 ${l}${c?`\uFF08\u6A21\u578B\uFF1A${c}\uFF09`:""} \u6267\u884C\u9A8C\u8BC1`)}let f=l,p=(r.executors?.[f]||{}).validation||{},m=c??(typeof p.model=="string"?p.model:void 0),g={...Me({executorOverride:f,modelOverride:m,config:r}),...p,...m&&{model:m}},D=g.batchSize??6,w=g.concurrency??e.concurrency,y={...n,executor:f,executorSettings:{...g,...n.executorSettings??{},model:g.model}},v=p0(y,e,f);if(!v)return{stageId:"validation",stageName:"Validation",success:!0,duration:Date.now()-t};let E=c?{...e,modelOverride:c}:e,F=My(i,D),S=v.model;e.quiet||(h.sync(`\u6B63\u5728\u9A8C\u8BC1 ${s.length} \u4E2A\u95EE\u9898...`),e.verbose&&h.plain(` \u6267\u884C\u5668\uFF1A${v.name}${S?`\uFF08\u6A21\u578B\uFF1A${S}\uFF09`:""}`));let x=!e.quiet&&!e.stream&&!e.verbose?new ui:void 0;x&&(x.addTask("validation","Validation",F.length,s.length,1,`${s.length} \u4E2A\u95EE\u9898`),x.start());try{let $,W=qt(w);$=await Promise.all(F.map((Z,ie)=>W(()=>v0(Z,ie,F.length,y,v,E,o,a,x))));let ae=Ut();for(let Z of $)ae=bs(ae,Z.usage,{cacheHit:Z.cacheHit});if(e.usage=dn([e.usage,ae]),x?.stop(),!jy($)){let Z=qy($),ie=Ia(Z.map(ve=>ve.error));return{stageId:"validation",stageName:"Validation",success:!1,duration:Date.now()-t,error:ie}}let z=$.flatMap(Z=>Z.validatedIssues),R=$.flatMap(Z=>Z.filteredIssues),{finalValidIds:N,deltaFilteredIssues:Y,mergedFilteredIssues:X,validationSummary:se,issueMap:ne}=F0(i,z,R);for(let Z of X){let ie=ne.get(Z.id);ie&&it(e,{stageId:"validation",stageName:"Validation",action:"filtered",reason:Z.reason,issue:ie})}e.issues=i.filter(Z=>N.has(Z.id)),e.validation=se;let H=N.size,Q=s.length-H,ce=Date.now()-t;if(!e.quiet){let Z=Y.length,ie=R.length;Z>0?h.done(`\u9A8C\u8BC1\u5B8C\u6210\uFF1A${H} \u4E2A\u6709\u6548\uFF0C${ie} \u4E2A\u88AB\u9A8C\u8BC1\u5668\u8FC7\u6EE4\uFF0C${Z} \u4E2A\u56E0\u7F6E\u4FE1\u5EA6\u53D8\u5316\u8FC7\u6EE4\uFF08${ce}ms\uFF09`):h.done(`\u9A8C\u8BC1\u5B8C\u6210\uFF1A${H} \u4E2A\u6709\u6548\uFF0C${Q} \u4E2A\u88AB\u8FC7\u6EE4\uFF08${ce}ms\uFF09`),h.newline();for(let ve of qI(se))h.plain(ve);if(e.verbose&&X.length>0){h.newline(),h.plain("\u88AB\u8FC7\u6EE4\u7684\u95EE\u9898\uFF1A");for(let ve of X){let mt=ne.get(ve.id);mt?h.plain(` [${ve.id}] ${mt.file}:${mt.lineStart} \u2014 ${ve.reason}`):h.plain(` [${ve.id}] \u2014 ${ve.reason}`)}}}return{stageId:"validation",stageName:"Validation",success:!0,duration:ce,output:{validCount:H,filteredCount:Q,filteredIssues:X,deltaFilteredCount:Y.length,decisions:se.decisions}}}catch($){x?.stop();let W=$ instanceof Error?$.message:String($);return e.quiet||h.error(`\u9A8C\u8BC1\u9636\u6BB5\u9519\u8BEF\uFF1A${W}`),{stageId:"validation",stageName:"Validation",success:!1,duration:Date.now()-t,error:W}}}}}function UI(e){let t=new Set;for(let s of e.diffs)t.add(s.file),s.oldPath&&t.add(s.oldPath),s.newPath&&t.add(s.newPath);return t}function x0(){return{id:"gitlab-mr-issue-filter",name:"GitLab MR Issue Filter",description:"\u8FC7\u6EE4\u6389\u4E0D\u5C5E\u4E8E MR \u53D8\u66F4\u6587\u4EF6\u7684 issue",enabled:!0,order:7,execute:async e=>{let t=Date.now();if(e.metadata.reviewTarget?.kind!=="gitlab-mr")return{stageId:"gitlab-mr-issue-filter",stageName:"GitLab MR Issue Filter",success:!0,duration:Date.now()-t,output:{skipped:!0}};let s=UI(e),i=e.issues.length;e.issues=e.issues.filter(n=>s.has(n.file)?!0:(it(e,{stageId:"gitlab-mr-issue-filter",stageName:"GitLab MR Issue Filter",action:"filtered",reason:`issue.file=${n.file} \u4E0D\u5C5E\u4E8E\u5F53\u524D MR \u53D8\u66F4\u6587\u4EF6`,issue:n}),!1));let r=i-e.issues.length;return{stageId:"gitlab-mr-issue-filter",stageName:"GitLab MR Issue Filter",success:!0,duration:Date.now()-t,output:{totalBefore:i,totalAfter:e.issues.length,filtered:r}}}}}var k0=require("node:child_process"),Ki=require("node:fs/promises"),Rt=require("node:path");je();M();var VI=5,GI=6e4,S0=3e4;function I0(e,t){let s=process.env[e];if(!s)return t;let i=Number.parseInt(s,10);return Number.isNaN(i)||i<1?t:i}function WI(e){let t=new Set,s=[];for(let i of e){let r=`${i.file}:${i.lineStart}:${i.lineEnd}:${i.severity}:${i.shortDescription}`;t.has(r)||(t.add(r),s.push(i))}return s}function _0(e){let t=new Set;for(let s of e.split(`
|
|
365
|
+
`)){let i=s.match(/^diff --git a\/(.+?) b\/(.+)$/);i?.[1]&&t.add(i[1]),i?.[2]&&t.add(i[2])}return[...t]}function Pf(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}function KI(e){let t=e.match(/<patch>\s*([\s\S]*?)\s*<\/patch>/i);if(t?.[1]?.trim())return t[1].trim();let s=e.match(/```(?:diff|patch)?\s*([\s\S]*?)```/i);if(s?.[1]?.includes("diff --git"))return s[1].trim();let i=e.indexOf("diff --git ");return i>=0?e.slice(i).trim():null}function Bf(e,t){let s=(0,Rt.resolve)(e,t),i=(0,Rt.relative)(e,s);return!i||i.startsWith("..")||(0,Rt.isAbsolute)(i)?null:s}function zI(e){return e.trim().split(/\s+/)[0]?.replace(/^[ab]\//,"")??""}function HI(e,t,s){if(/^GIT binary patch$/m.test(e)||/^Binary files /m.test(e))throw new Error("\u81EA\u52A8\u4FEE\u590D\u8865\u4E01\u5305\u542B\u4E8C\u8FDB\u5236\u53D8\u66F4\uFF0C\u5DF2\u62D2\u7EDD\u5E94\u7528");if(/^(new file mode|deleted file mode|rename from|rename to|copy from|copy to) /m.test(e)||/^--- \/dev\/null$/m.test(e)||/^\+\+\+ \/dev\/null$/m.test(e))throw new Error("\u81EA\u52A8\u4FEE\u590D\u8865\u4E01\u5305\u542B\u65B0\u589E\u3001\u5220\u9664\u3001\u91CD\u547D\u540D\u6216\u590D\u5236\u6587\u4EF6\uFF0C\u5DF2\u62D2\u7EDD\u5E94\u7528");let i=new Set(s.map(Pf)),r=_0(e).map(Pf);if(r.length===0)throw new Error("\u81EA\u52A8\u4FEE\u590D\u8865\u4E01\u6CA1\u6709\u58F0\u660E\u53EF\u4FEE\u6539\u6587\u4EF6");for(let n of r){if(!i.has(n))throw new Error(`\u81EA\u52A8\u4FEE\u590D\u8865\u4E01\u8BD5\u56FE\u4FEE\u6539\u975E\u76EE\u6807\u6587\u4EF6\uFF1A${n}`);if(!Bf(t,n))throw new Error(`\u81EA\u52A8\u4FEE\u590D\u8865\u4E01\u5305\u542B\u4E0D\u5B89\u5168\u8DEF\u5F84\uFF1A${n}`)}for(let n of e.split(`
|
|
366
|
+
`)){if(!n.startsWith("--- ")&&!n.startsWith("+++ "))continue;let o=zI(n.slice(4));if(!o||o==="/dev/null")continue;let a=Pf(o);if(!i.has(a))throw new Error(`\u81EA\u52A8\u4FEE\u590D\u8865\u4E01\u8BD5\u56FE\u4FEE\u6539\u975E\u76EE\u6807\u6587\u4EF6\uFF1A${a}`);if(!Bf(t,a))throw new Error(`\u81EA\u52A8\u4FEE\u590D\u8865\u4E01\u5305\u542B\u4E0D\u5B89\u5168\u8DEF\u5F84\uFF1A${a}`)}}function JI(e,t){return(0,Rt.isAbsolute)(t)?t:(0,Rt.resolve)(e,t)}async function YI(e,t,s){let i=JI(e,t);return await(0,Ki.mkdir)((0,Rt.dirname)(i),{recursive:!0}),await(0,Ki.writeFile)(i,s.endsWith(`
|
|
367
367
|
`)?s:`${s}
|
|
368
|
-
`,"utf-8"),i}async function
|
|
368
|
+
`,"utf-8"),i}async function ZI(e,t){let s=I0("BEST_REVIEW_FIX_MAX_FILE_CHARS",GI),i=Array.from(new Set(t.map(n=>n.file))),r={};for(let n of i){let o=Bf(e,n);if(o)try{let a=await(0,Ki.readFile)(o,"utf-8");r[n]=a.length>s?`${a.slice(0,s)}
|
|
369
369
|
|
|
370
370
|
/* best-review: \u6587\u4EF6\u5185\u5BB9\u8D85\u8FC7 ${s} \u5B57\u7B26\uFF0C\u540E\u7EED\u5DF2\u7701\u7565 */
|
|
371
|
-
`:a}catch(a){r[n]=`/* best-review: \u8BFB\u53D6\u6587\u4EF6\u5931\u8D25\uFF1A${a instanceof Error?a.message:String(a)} */`}}return r}function
|
|
371
|
+
`:a}catch(a){r[n]=`/* best-review: \u8BFB\u53D6\u6587\u4EF6\u5931\u8D25\uFF1A${a instanceof Error?a.message:String(a)} */`}}return r}function XI(e,t){let s=e.map((r,n)=>({id:n+1,file:r.file,lineStart:r.lineStart,lineEnd:r.lineEnd,severity:r.severity,category:r.category,shortDescription:r.shortDescription,fullDescription:r.fullDescription,evidence:r.evidence,suggestion:r.suggestion,rule:r.rule})),i=Object.entries(t).map(([r,n])=>`## ${r}
|
|
372
372
|
|
|
373
373
|
\`\`\`
|
|
374
374
|
${n}
|
|
@@ -380,7 +380,7 @@ ${JSON.stringify(s,null,2)}
|
|
|
380
380
|
|
|
381
381
|
# Current File Contents
|
|
382
382
|
|
|
383
|
-
${i}`}function
|
|
383
|
+
${i}`}function QI(){return`\u4F60\u662F best-review \u7684\u81EA\u52A8\u4FEE\u590D\u6267\u884C\u5668\u3002\u8BF7\u53EA\u4FEE\u590D\u8F93\u5165\u4E2D\u5217\u51FA\u7684\u4E25\u91CD\u98CE\u9669\uFF0C\u4E0D\u8981\u91CD\u6784\u65E0\u5173\u4EE3\u7801\u3002
|
|
384
384
|
|
|
385
385
|
\u8981\u6C42\uFF1A
|
|
386
386
|
- \u8F93\u51FA\u4E00\u4E2A\u53EF\u88AB git apply \u5E94\u7528\u7684 unified diff\u3002
|
|
@@ -390,50 +390,50 @@ ${i}`}function XI(){return`\u4F60\u662F best-review \u7684\u81EA\u52A8\u4FEE\u59
|
|
|
390
390
|
- \u5982\u679C\u65E0\u6CD5\u5B89\u5168\u4FEE\u590D\uFF0C\u8F93\u51FA <patch></patch>\u3002
|
|
391
391
|
- \u5C06\u5B8C\u6574\u8865\u4E01\u5305\u88F9\u5728 <patch>...</patch> \u4E2D\u3002`}async function A0(e,t,s){let i=["apply","--whitespace=nowarn","--recount"];s.checkOnly&&i.push("--check"),i.push("-"),await new Promise((r,n)=>{let o=(0,k0.spawn)("git",i,{cwd:t}),a=[],u=setTimeout(()=>{o.kill(),n(new Error(`git apply \u5728 ${S0/1e3}s \u540E\u8D85\u65F6`))},S0);o.stderr.on("data",l=>a.push(Buffer.isBuffer(l)?l:Buffer.from(l))),o.on("error",l=>{clearTimeout(u),n(l)}),o.on("close",l=>{if(clearTimeout(u),l===0){r();return}n(new Error(Buffer.concat(a).toString("utf-8")||`git apply \u9000\u51FA\u7801 ${l}`))}),o.stdin.end(e.endsWith(`
|
|
392
392
|
`)?e:`${e}
|
|
393
|
-
`)})}function Wi(e,t={}){return{enabled:!!(e.fixSeverities&&e.fixSeverities.length>0),dryRun:!!e.fixDryRun,targetSeverities:e.fixSeverities??[],targetIssueCount:0,changedFiles:[],applied:!1,...t}}function R0(e){return/git apply|patch failed|补丁/i.test(e)?"\u5EFA\u8BAE\u5148\u7528 --fix-dry-run \u751F\u6210\u5E76\u6821\u9A8C\u8865\u4E01\uFF0C\u68C0\u67E5\u5DE5\u4F5C\u533A\u662F\u5426\u5DF2\u6709\u51B2\u7A81\u6216\u6587\u4EF6\u5DF2\u53D8\u66F4\uFF1B\u5FC5\u8981\u65F6\u6309\u5BA1\u67E5\u62A5\u544A\u4E2D\u7684\u4FEE\u590D\u5EFA\u8BAE\u624B\u52A8\u5904\u7406\u3002":/API|执行器|模型|key|baseUrl|timeout|超时/i.test(e)?"\u5EFA\u8BAE\u8FD0\u884C best-review init \u68C0\u67E5 API key\u3001baseUrl \u548C\u6A21\u578B\u914D\u7F6E\uFF0C\u6216\u7528 --executor/--model \u4E34\u65F6\u5207\u6362\u53EF\u7528\u6A21\u578B\u540E\u91CD\u8BD5\u3002":"\u5EFA\u8BAE\u5148\u7528 --fix-dry-run \u91CD\u8BD5\u67E5\u770B\u8865\u4E01\u662F\u5426\u53EF\u751F\u6210\uFF1B\u5982\u679C\u4ECD\u5931\u8D25\uFF0C\u8BF7\u5207\u6362\u66F4\u5F3A\u6A21\u578B\u6216\u6309\u62A5\u544A\u4E2D\u7684 suggestion \u624B\u52A8\u4FEE\u590D\u3002"}function
|
|
394
|
-
`)}function O0(e){let t=new Map;for(let s of e){let i=t.get(s.file)||[];i.push(s),t.set(s.file,i)}return t}function T0(e){return Math.min(...e.map(t=>Of(t.severity)))}function L0(e){if(e.length===0)return`${j.green}\u2713 \u6CA1\u6709\u53D1\u73B0\u95EE\u9898 \u{1F389}${j.reset}`;let t=O0(e),s=[];s.push(""),s.push(`${j.bold}\u5728 ${t.size} \u4E2A\u6587\u4EF6\u4E2D\u53D1\u73B0 ${e.length} \u4E2A\u95EE\u9898${j.reset}`),s.push("");let i=Array.from(t.entries()).sort(([,r],[,n])=>T0(r)-T0(n));for(let[r,n]of i){s.push(`${j.bold}${j.cyan}${r}${j.reset} ${j.dim}\uFF08${n.length} \u4E2A\u95EE\u9898\uFF09${j.reset}`),s.push("");let o=mn(n);for(let a of o)s.push(
|
|
395
|
-
`)}function N0(e,t,s,i,r,n,o,a,u,l,c){let f=e.filter($=>$.severity==="critical").length,d=e.filter($=>$.severity==="high").length,p=e.filter($=>$.severity==="medium").length,m=e.filter($=>$.severity==="low").length,g=La(e),D=mn(e),w=O0(D),y=Array.from(w.entries()).map(([$,W])=>({file:$,issueCount:W.length,issues:mn(W)})),v=o?.qualityScore.score??null,E=o?.qualityScore.status??"valid",F=o?.qualityScore.reason,S=o?.rawIssues??e,B=o?.finalIssues??e,x={success:t,totalDuration:s,...l!==void 0&&{commandDuration:l},qualityScore:v,qualityScoreStatus:E,...F&&{qualityScoreReason:F},stats:{totalIssues:e.length,critical:f,high:d,medium:p,low:m,filesAnalyzed:n,agentsExecuted:i,agentsSucceeded:r,agentsFailed:i-r},riskSummary:g,reviewSummary:{agentExecutions:o?.agentExecutions??{total:i,succeeded:r,failed:i-r},findingCounts:o?.findingCounts??{raw:S.length,afterConfidence:B.length,afterValidation:B.length,final:B.length}},rawIssues:mn(S),finalIssues:mn(B),issues:D,files:y,...a&&{autofix:a},...u&&{usage:u},...c&&{validation:c}};return JSON.stringify(x,null,2)}function M0(e,t){let s=t?.qualityScore??{base:100,min:0,weights:{critical:40,high:15,medium:6,low:2},categoryWeights:{security:1.2,bug:1,performance:.8,quality:.7,style:.4,docs:.3}},i=e.reduce((r,n)=>{let o=s.weights[n.severity]??0,a=s.categoryWeights[n.category]??1;return r+o*a},0);return{score:Math.max(s.min,Math.round(s.base-i)),base:s.base,min:s.min,deductions:i,totalIssues:e.length,weights:{severity:s.weights,category:s.categoryWeights}}}function j0(e,t){return e.find(s=>s.stageId===t)}function
|
|
396
|
-
`,"utf-8"),o}async function
|
|
393
|
+
`)})}function Wi(e,t={}){return{enabled:!!(e.fixSeverities&&e.fixSeverities.length>0),dryRun:!!e.fixDryRun,targetSeverities:e.fixSeverities??[],targetIssueCount:0,changedFiles:[],applied:!1,...t}}function R0(e){return/git apply|patch failed|补丁/i.test(e)?"\u5EFA\u8BAE\u5148\u7528 --fix-dry-run \u751F\u6210\u5E76\u6821\u9A8C\u8865\u4E01\uFF0C\u68C0\u67E5\u5DE5\u4F5C\u533A\u662F\u5426\u5DF2\u6709\u51B2\u7A81\u6216\u6587\u4EF6\u5DF2\u53D8\u66F4\uFF1B\u5FC5\u8981\u65F6\u6309\u5BA1\u67E5\u62A5\u544A\u4E2D\u7684\u4FEE\u590D\u5EFA\u8BAE\u624B\u52A8\u5904\u7406\u3002":/API|执行器|模型|key|baseUrl|timeout|超时/i.test(e)?"\u5EFA\u8BAE\u8FD0\u884C best-review init \u68C0\u67E5 API key\u3001baseUrl \u548C\u6A21\u578B\u914D\u7F6E\uFF0C\u6216\u7528 --executor/--model \u4E34\u65F6\u5207\u6362\u53EF\u7528\u6A21\u578B\u540E\u91CD\u8BD5\u3002":"\u5EFA\u8BAE\u5148\u7528 --fix-dry-run \u91CD\u8BD5\u67E5\u770B\u8865\u4E01\u662F\u5426\u53EF\u751F\u6210\uFF1B\u5982\u679C\u4ECD\u5931\u8D25\uFF0C\u8BF7\u5207\u6362\u66F4\u5F3A\u6A21\u578B\u6216\u6309\u62A5\u544A\u4E2D\u7684 suggestion \u624B\u52A8\u4FEE\u590D\u3002"}function e_(e){return e.fixDryRun?e.fixPatchFile?"dry-run \u5DF2\u5B8C\u6210\uFF0C\u5EFA\u8BAE\u68C0\u67E5\u8865\u4E01\u5185\u5BB9\uFF1B\u786E\u8BA4\u65E0\u8BEF\u540E\u53BB\u6389 --fix-dry-run \u91CD\u65B0\u8FD0\u884C\uFF0C\u6216\u624B\u52A8 git apply \u8865\u4E01\u6587\u4EF6\u3002":"dry-run \u5DF2\u5B8C\u6210\uFF0C\u5EFA\u8BAE\u68C0\u67E5 JSON/report \u4E2D\u7684 autofix.patch\uFF1B\u786E\u8BA4\u65E0\u8BEF\u540E\u53BB\u6389 --fix-dry-run \u91CD\u65B0\u8FD0\u884C\u3002":"\u5DF2\u5199\u5165\u4FEE\u590D\u8865\u4E01\uFF0C\u5EFA\u8BAE\u8FD0\u884C\u9879\u76EE\u6D4B\u8BD5\u5E76\u91CD\u65B0\u6267\u884C best-review review\uFF0C\u786E\u8BA4\u4E25\u91CD\u98CE\u9669\u5DF2\u6D88\u9664\u3002"}function $0(){return{id:"autofix",name:"Autofix",description:"\u6309\u9700\u4FEE\u590D\u4E25\u91CD\u98CE\u9669",enabled:!0,order:7,execute:async e=>{let t=Date.now();if(!e.fixSeverities||e.fixSeverities.length===0)return e.autofix=Wi(e),{stageId:"autofix",stageName:"Autofix",success:!0,duration:Date.now()-t,output:e.autofix};if(e.skipValidation){let o="\u81EA\u52A8\u4FEE\u590D\u9700\u8981\u5148\u5B8C\u6210\u9A8C\u8BC1\u9636\u6BB5\uFF0C\u4E0D\u80FD\u4E0E --skip-validation \u540C\u65F6\u4F7F\u7528";return e.autofix=Wi(e,{error:o,suggestion:"\u8BF7\u79FB\u9664 --skip-validation \u540E\u91CD\u8BD5\uFF1B\u5982\u679C\u53EA\u60F3\u9884\u89C8\u8865\u4E01\uFF0C\u53EF\u4F7F\u7528 --fix-dry-run\u3002"}),{stageId:"autofix",stageName:"Autofix",success:!1,duration:Date.now()-t,error:o,output:e.autofix}}let s=e.fixMaxIssues??I0("BEST_REVIEW_FIX_MAX_ISSUES",VI),i=new Set(e.fixSeverities),r=WI(e.issues.filter(o=>i.has(o.severity))).slice(0,s);if(r.length===0)return e.autofix=Wi(e),e.quiet||h.info("\u81EA\u52A8\u4FEE\u590D\uFF1A\u6CA1\u6709\u547D\u4E2D\u6307\u5B9A\u4E25\u91CD\u7EA7\u522B\u7684\u95EE\u9898"),{stageId:"autofix",stageName:"Autofix",success:!0,duration:Date.now()-t,output:e.autofix};if(!e.config){let o="Pipeline \u4E0A\u4E0B\u6587\u4E2D\u7684 config \u5C1A\u672A\u521D\u59CB\u5316";return e.autofix=Wi(e,{targetIssueCount:r.length,error:o,suggestion:R0(o)}),{stageId:"autofix",stageName:"Autofix",success:!1,duration:0,error:o}}e.quiet||h.sync(`\u81EA\u52A8\u4FEE\u590D\uFF1A\u51C6\u5907\u5904\u7406 ${r.length} \u4E2A ${e.fixSeverities.join(",")} \u95EE\u9898...`);let n;try{let o=e.config.executor,a=he.get(o);if(!a)throw new Error(`\u6267\u884C\u5668\u4E0D\u5B58\u5728\uFF1A${o}`);let u={...Pi(e.config),...e.config.executors[o]?.review??{}},l=a.applySettings?a.applySettings(u):a.getInfo(),c=await ZI(e.metadata.repository,r),f={name:"autofix",description:"\u81EA\u52A8\u4FEE\u590D\u4E25\u91CD\u98CE\u9669",systemPrompt:QI(),enabled:!0,order:99,executor:o},d=await he.executeAgent({agent:f,executor:l,input:XI(r,c),systemPrompt:f.systemPrompt,quiet:e.quiet,verbose:e.verbose,cwd:e.metadata.repository,modelOverride:e.modelOverride,outputMode:"text"});if(e.usage=bs(e.usage??Ut(),d.usage,{cacheHit:d.cacheHit}),!d.success)throw new Error(d.error||"\u6A21\u578B\u672A\u80FD\u751F\u6210\u4FEE\u590D\u8865\u4E01");let p=KI(d.output);if(!p)throw new Error("\u6A21\u578B\u6CA1\u6709\u8FD4\u56DE unified diff \u8865\u4E01");HI(p,e.metadata.repository,r.map(g=>g.file)),n=e.fixPatchFile?await YI(e.metadata.repository,e.fixPatchFile,p):void 0,await A0(p,e.metadata.repository,{checkOnly:!0}),e.fixDryRun||await A0(p,e.metadata.repository,{checkOnly:!1});let m=_0(p);if(e.autofix=Wi(e,{targetIssueCount:r.length,changedFiles:m,applied:!e.fixDryRun,patch:p,...n&&{patchPath:n},suggestion:e_(e)}),!e.quiet){let g=e.fixDryRun?"\u8865\u4E01\u6821\u9A8C\u901A\u8FC7\uFF08\u672A\u5199\u5165\uFF09":"\u8865\u4E01\u5DF2\u5E94\u7528";h.success(`\u81EA\u52A8\u4FEE\u590D\uFF1A${g}\uFF0C\u5F71\u54CD ${m.length} \u4E2A\u6587\u4EF6`),n&&h.info(`\u81EA\u52A8\u4FEE\u590D\u8865\u4E01\u5DF2\u4FDD\u5B58\uFF1A${n}`)}return{stageId:"autofix",stageName:"Autofix",success:!0,duration:Date.now()-t,output:e.autofix}}catch(o){let a=o instanceof Error?o.message:String(o);return e.autofix=Wi(e,{targetIssueCount:r.length,error:a,...n&&{patchPath:n},suggestion:R0(a)}),{stageId:"autofix",stageName:"Autofix",success:!1,duration:Date.now()-t,error:`\u81EA\u52A8\u4FEE\u590D\u5931\u8D25\uFF1A${a}`,output:e.autofix}}}}}var Ma=require("node:fs/promises"),yn=require("node:path"),Lf=require("node:crypto");M();var j={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",red:"\x1B[31m",yellow:"\x1B[33m",blue:"\x1B[34m",cyan:"\x1B[36m",green:"\x1B[32m",gray:"\x1B[90m"},P0=["critical","high","medium","low"],t_={critical:"\u4E25\u91CD",high:"\u9AD8",medium:"\u4E2D",low:"\u4F4E"},gn={critical:"\u4E25\u91CD\u98CE\u9669",high:"\u9AD8\u98CE\u9669",medium:"\u4E2D\u98CE\u9669",low:"\u4F4E\u98CE\u9669"};function s_(e){switch(e){case"critical":return j.red;case"high":return j.yellow;case"medium":return j.blue;case"low":return j.cyan}}function i_(e){switch(e){case"critical":return"\u2717";case"high":return"\u26A0";case"medium":return"\u25CB";case"low":return"\u25C7"}}function r_(e){switch(e){case"security":return"\u{1F512}";case"performance":return"\u26A1";case"bug":return"\u2715";case"quality":return"\u2728";case"style":return"\u{1F3A8}";case"docs":return"\u{1F4DD}"}}function Of(e){return P0.indexOf(e)}function La(e){let t={critical:0,high:0,medium:0,low:0};for(let i of e)t[i.severity]+=1;return{overall:P0.find(i=>t[i]>0)??"none",counts:t,labels:gn}}function B0(e){let t=La(e);return t.overall==="none"?"\u98CE\u9669\u7ED3\u8BBA\uFF1A\u672A\u53D1\u73B0\u98CE\u9669":`\u98CE\u9669\u7ED3\u8BBA\uFF1A\u4E25\u91CD ${t.counts.critical}\uFF0C\u9AD8 ${t.counts.high}\uFF0C\u4E2D ${t.counts.medium}\uFF0C\u4F4E ${t.counts.low}\uFF1B\u6574\u4F53\u98CE\u9669\uFF1A${t_[t.overall]}`}function mn(e){return[...e].sort((t,s)=>{let i=Of(t.severity),r=Of(s.severity);return i-r})}function n_(e,t=!1){let s=s_(e.severity),i=i_(e.severity),r=r_(e.category),n=[];return t?n.push(`${i} ${j.bold}${e.file}:${e.lineStart}${j.reset} - ${s}${e.shortDescription}${j.reset}`):(n.push(""),n.push(`${i} ${s}${j.bold}${gn[e.severity]}${j.reset} ${r} ${j.dim}${e.category}${j.reset}`),n.push(`${j.bold}${e.file}${j.reset}:${j.cyan}${e.lineStart}${e.lineEnd!==e.lineStart?`-${e.lineEnd}`:""}${j.reset}`),n.push(""),n.push(`${j.bold}${e.shortDescription}${j.reset}`),e.fullDescription&&e.fullDescription!==e.shortDescription&&(n.push(""),n.push(`${j.dim}${e.fullDescription}${j.reset}`)),e.evidence&&(n.push(""),n.push(`${j.yellow}\u2192 \u9519\u8BEF\u70B9\uFF1A${j.reset}`),n.push(`${j.dim}${e.evidence}${j.reset}`)),e.suggestion&&(n.push(""),n.push(`${j.green}\u2192 \u5EFA\u8BAE\uFF1A${j.reset}`),n.push(`${j.dim}${e.suggestion}${j.reset}`)),n.push(""),n.push(`${j.gray}Agent\uFF1A${e.agent}${j.reset}`),e.rule&&n.push(`${j.gray}\u89C4\u5219\uFF1A${e.rule}${j.reset}`),e.confidence!==void 0&&n.push(`${j.gray}\u7F6E\u4FE1\u5EA6\uFF1A${e.confidence}%${j.reset}`),n.push(""),n.push(j.gray+"\u2500".repeat(80)+j.reset)),n.join(`
|
|
394
|
+
`)}function O0(e){let t=new Map;for(let s of e){let i=t.get(s.file)||[];i.push(s),t.set(s.file,i)}return t}function T0(e){return Math.min(...e.map(t=>Of(t.severity)))}function L0(e){if(e.length===0)return`${j.green}\u2713 \u6CA1\u6709\u53D1\u73B0\u95EE\u9898 \u{1F389}${j.reset}`;let t=O0(e),s=[];s.push(""),s.push(`${j.bold}\u5728 ${t.size} \u4E2A\u6587\u4EF6\u4E2D\u53D1\u73B0 ${e.length} \u4E2A\u95EE\u9898${j.reset}`),s.push("");let i=Array.from(t.entries()).sort(([,r],[,n])=>T0(r)-T0(n));for(let[r,n]of i){s.push(`${j.bold}${j.cyan}${r}${j.reset} ${j.dim}\uFF08${n.length} \u4E2A\u95EE\u9898\uFF09${j.reset}`),s.push("");let o=mn(n);for(let a of o)s.push(n_(a,!1))}return s.join(`
|
|
395
|
+
`)}function N0(e,t,s,i,r,n,o,a,u,l,c){let f=e.filter($=>$.severity==="critical").length,d=e.filter($=>$.severity==="high").length,p=e.filter($=>$.severity==="medium").length,m=e.filter($=>$.severity==="low").length,g=La(e),D=mn(e),w=O0(D),y=Array.from(w.entries()).map(([$,W])=>({file:$,issueCount:W.length,issues:mn(W)})),v=o?.qualityScore.score??null,E=o?.qualityScore.status??"valid",F=o?.qualityScore.reason,S=o?.rawIssues??e,B=o?.finalIssues??e,x={success:t,totalDuration:s,...l!==void 0&&{commandDuration:l},qualityScore:v,qualityScoreStatus:E,...F&&{qualityScoreReason:F},stats:{totalIssues:e.length,critical:f,high:d,medium:p,low:m,filesAnalyzed:n,agentsExecuted:i,agentsSucceeded:r,agentsFailed:i-r},riskSummary:g,reviewSummary:{agentExecutions:o?.agentExecutions??{total:i,succeeded:r,failed:i-r},findingCounts:o?.findingCounts??{raw:S.length,afterConfidence:B.length,afterValidation:B.length,final:B.length}},rawIssues:mn(S),finalIssues:mn(B),issues:D,files:y,...a&&{autofix:a},...u&&{usage:u},...c&&{validation:c}};return JSON.stringify(x,null,2)}function M0(e,t){let s=t?.qualityScore??{base:100,min:0,weights:{critical:40,high:15,medium:6,low:2},categoryWeights:{security:1.2,bug:1,performance:.8,quality:.7,style:.4,docs:.3}},i=e.reduce((r,n)=>{let o=s.weights[n.severity]??0,a=s.categoryWeights[n.category]??1;return r+o*a},0);return{score:Math.max(s.min,Math.round(s.base-i)),base:s.base,min:s.min,deductions:i,totalIssues:e.length,weights:{severity:s.weights,category:s.categoryWeights}}}function j0(e,t){return e.find(s=>s.stageId===t)}function o_(e,t){if(e===0)return"\u6CA1\u6709\u4EFB\u4F55 Agent \u6210\u529F\u6267\u884C";let s=t.find(i=>!i.success&&i.stageId!=="reporting");if(s)return`\u6838\u5FC3\u9636\u6BB5\u5931\u8D25\uFF1A${s.stageName}`}function Na(e){let t=e.stageResults??[],s=e.results.flatMap(f=>f.issues),i=e.issues,r={total:e.results.length,succeeded:e.results.filter(f=>f.success).length,failed:e.results.filter(f=>!f.success).length},n=j0(t,"confidence-filter")?.output,a=j0(t,"validation")?.output,u={raw:s.length,afterConfidence:typeof n?.totalAfter=="number"?n.totalAfter:s.length,afterValidation:e.skipValidation===!0?null:typeof a?.validCount=="number"?a.validCount:i.length,final:i.length},l=o_(r.succeeded,t);if(l)return{agentExecutions:r,findingCounts:u,qualityScore:{status:"unknown",score:null,reason:l},rawIssues:s,finalIssues:i};let c=M0(i,e.config);return{agentExecutions:r,findingCounts:u,qualityScore:{status:"valid",score:c.score,details:c},rawIssues:s,finalIssues:i}}je();var q0=".best-review/reports";function a_(e){return{critical:e.filter(t=>t.severity==="critical").length,high:e.filter(t=>t.severity==="high").length,medium:e.filter(t=>t.severity==="medium").length,low:e.filter(t=>t.severity==="low").length}}function u_(e){return{file:e.file,status:e.status,additions:e.additions,deletions:e.deletions,...e.hash&&{hash:e.hash}}}function l_(e){let t=e.config?.reporting??{},s=process.env.BEST_REVIEW_REPORT_URL||t.url,i=process.env.BEST_REVIEW_REPORT_TOKEN||t.token,r=process.env.BEST_REVIEW_REPORT_DIR||t.localDir||q0;return{enabled:!!process.env.BEST_REVIEW_REPORT_URL||t.enabled===!0,url:s,token:i,localDir:r,includeDiffs:process.env.BEST_REVIEW_REPORT_INCLUDE_DIFFS==="true"||t.includeDiffs,failOnError:process.env.BEST_REVIEW_REPORT_FAIL_ON_ERROR==="true"||t.failOnError}}function c_(e,t){return(0,yn.isAbsolute)(t)?t:(0,yn.join)(e.metadata.repository,t)}function Dn(e){return String(e).padStart(2,"0")}function U0(e=new Date){return[e.getFullYear(),Dn(e.getMonth()+1),Dn(e.getDate()),Dn(e.getHours()),Dn(e.getMinutes()),Dn(e.getSeconds())].join("-")}function f_(e,t){return`${e}-${t.slice(0,8)}.json`}function d_(e,t){let s=Na(e),i=s.finalIssues,r=a_(i),n=La(i),o=e.results.filter(m=>m.success).length,a=e.diffs.reduce((m,g)=>m+g.additions,0),u=e.diffs.reduce((m,g)=>m+g.deletions,0),l=U0(),c=(0,Lf.randomUUID)(),f=r.critical>0,d=e.config?.executor??Ti,p=e.modelOverride??Pi(e.config).model;return{schemaVersion:2,eventId:c,runId:c,tool:"best-review",toolVersion:ai.version,generatedAt:l,executor:d,...p&&{model:p},metadata:e.metadata,repository:e.metadata.repository,baseRef:e.metadata.baseRef,headRef:e.metadata.headRef,stats:{totalIssues:i.length,...r,filesAnalyzed:e.diffs.length,filesChanged:e.diffs.length,linesAdded:a,linesDeleted:u,agentsExecuted:e.results.length,agentsSucceeded:o,agentsFailed:e.results.length-o},riskSummary:n,qualityScore:s.qualityScore.score,qualityScoreStatus:s.qualityScore.status,...s.qualityScore.reason&&{qualityScoreReason:s.qualityScore.reason},ciBlocked:f,reviewSummary:{agentExecutions:s.agentExecutions,findingCounts:s.findingCounts},...e.usage&&{usage:e.usage},rawIssues:s.rawIssues,finalIssues:s.finalIssues,...e.autofix&&{autofix:e.autofix},issueAuditTrail:e.issueAuditTrail??[],stages:(e.stageResults??[]).map(m=>({stageId:m.stageId,stageName:m.stageName,success:m.success,duration:m.duration,...m.output!==void 0&&{output:m.output},...m.error&&{error:m.error}})),issues:i,agents:e.results.map(m=>({agent:m.agent,executor:m.executor,success:m.success,duration:m.duration,issueCount:m.issues.length,...m.usage&&{usage:m.usage},...m.error&&{error:m.error}})),diffs:t?e.diffs:e.diffs.map(u_)}}async function h_(e,t,s){let i=c_(e,t.localDir||q0),r=typeof s.generatedAt=="string"?s.generatedAt:U0(),n=typeof s.runId=="string"?s.runId:(0,Lf.randomUUID)(),o=(0,yn.join)(i,f_(r,n));return await(0,Ma.mkdir)(i,{recursive:!0}),await(0,Ma.writeFile)(o,`${JSON.stringify(s,null,2)}
|
|
396
|
+
`,"utf-8"),o}async function p_(e,t){if(!t.url)throw new Error("\u672A\u914D\u7F6E Reporting URL");let s={"Content-Type":"application/json"};t.token&&(s.Authorization=`Bearer ${t.token}`);let i=await jt(t.url,{method:"POST",headers:s,body:JSON.stringify(e)});if(!i.ok){let r=await i.text();throw new Error(`\u62A5\u544A\u4E0A\u4F20\u5931\u8D25\uFF1A${i.status} - ${r}`)}}function V0(){return{id:"reporting",name:"Reporting",description:"\u5C06\u5BA1\u67E5\u62A5\u544A\u4FDD\u5B58\u5230\u672C\u5730\uFF0C\u5E76\u6309\u914D\u7F6E\u4E0A\u4F20\u5230\u6548\u80FD\u7CFB\u7EDF",enabled:!0,order:8,execute:async e=>{let t=Date.now(),s=l_(e),i=d_(e,s.includeDiffs??!1),r;try{r=await h_(e,s,i),e.quiet||h.success(`\u5BA1\u67E5\u62A5\u544A\u5DF2\u4FDD\u5B58\uFF1A${r}`)}catch(n){let o=n instanceof Error?n.message:String(n);return e.quiet||h.warn(`\u5BA1\u67E5\u62A5\u544A\u4FDD\u5B58\u5931\u8D25\uFF1A${o}`),{stageId:"reporting",stageName:"Reporting",success:!1,duration:Date.now()-t,error:`\u5BA1\u67E5\u62A5\u544A\u4FDD\u5B58\u5931\u8D25\uFF1A${o}`}}if(!s.enabled)return{stageId:"reporting",stageName:"Reporting",success:!0,duration:Date.now()-t,output:{localPath:r,uploaded:!1,skippedUpload:!0}};if(!s.url){let n="Reporting \u5DF2\u542F\u7528\uFF0C\u4F46\u6CA1\u6709\u914D\u7F6E URL";return e.quiet||h.warn(n),{stageId:"reporting",stageName:"Reporting",success:s.failOnError!==!0,duration:Date.now()-t,output:{localPath:r,uploaded:!1},error:n}}try{return await p_(i,s),e.quiet||h.success("\u5BA1\u67E5\u62A5\u544A\u5DF2\u4E0A\u4F20"),{stageId:"reporting",stageName:"Reporting",success:!0,duration:Date.now()-t,output:{localPath:r,uploaded:!0}}}catch(n){let o=n instanceof Error?n.message:String(n);return e.quiet||h.warn(o),{stageId:"reporting",stageName:"Reporting",success:s.failOnError!==!0,duration:Date.now()-t,output:{localPath:r,uploaded:!1},error:o}}}}}var fw=require("node:crypto");M();var wn=class{diff(t,s,i={}){let r;typeof i=="function"?(r=i,i={}):"callback"in i&&(r=i.callback);let n=this.castInput(t,i),o=this.castInput(s,i),a=this.removeEmpty(this.tokenize(n,i)),u=this.removeEmpty(this.tokenize(o,i));return this.diffWithOptionsObj(a,u,i,r)}diffWithOptionsObj(t,s,i,r){var n;let o=y=>{if(y=this.postProcess(y,i),r){setTimeout(function(){r(y)},0);return}else return y},a=s.length,u=t.length,l=1,c=a+u;i.maxEditLength!=null&&(c=Math.min(c,i.maxEditLength));let f=(n=i.timeout)!==null&&n!==void 0?n:1/0,d=Date.now()+f,p=[{oldPos:-1,lastComponent:void 0}],m=this.extractCommon(p[0],s,t,0,i);if(p[0].oldPos+1>=u&&m+1>=a)return o(this.buildValues(p[0].lastComponent,s,t));let g=-1/0,D=1/0,w=()=>{for(let y=Math.max(g,-l);y<=Math.min(D,l);y+=2){let v,E=p[y-1],F=p[y+1];E&&(p[y-1]=void 0);let S=!1;if(F){let x=F.oldPos-y;S=F&&0<=x&&x<a}let B=E&&E.oldPos+1<u;if(!S&&!B){p[y]=void 0;continue}if(!B||S&&E.oldPos<F.oldPos?v=this.addToPath(F,!0,!1,0,i):v=this.addToPath(E,!1,!0,1,i),m=this.extractCommon(v,s,t,y,i),v.oldPos+1>=u&&m+1>=a)return o(this.buildValues(v.lastComponent,s,t))||!0;p[y]=v,v.oldPos+1>=u&&(D=Math.min(D,y-1)),m+1>=a&&(g=Math.max(g,y+1))}l++};if(r)(function y(){setTimeout(function(){if(l>c||Date.now()>d)return r(void 0);w()||y()},0)})();else for(;l<=c&&Date.now()<=d;){let y=w();if(y)return y}}addToPath(t,s,i,r,n){let o=t.lastComponent;return o&&!n.oneChangePerToken&&o.added===s&&o.removed===i?{oldPos:t.oldPos+r,lastComponent:{count:o.count+1,added:s,removed:i,previousComponent:o.previousComponent}}:{oldPos:t.oldPos+r,lastComponent:{count:1,added:s,removed:i,previousComponent:o}}}extractCommon(t,s,i,r,n){let o=s.length,a=i.length,u=t.oldPos,l=u-r,c=0;for(;l+1<o&&u+1<a&&this.equals(i[u+1],s[l+1],n);)l++,u++,c++,n.oneChangePerToken&&(t.lastComponent={count:1,previousComponent:t.lastComponent,added:!1,removed:!1});return c&&!n.oneChangePerToken&&(t.lastComponent={count:c,previousComponent:t.lastComponent,added:!1,removed:!1}),t.oldPos=u,l}equals(t,s,i){return i.comparator?i.comparator(t,s):t===s||!!i.ignoreCase&&t.toLowerCase()===s.toLowerCase()}removeEmpty(t){let s=[];for(let i=0;i<t.length;i++)t[i]&&s.push(t[i]);return s}castInput(t,s){return t}tokenize(t,s){return Array.from(t)}join(t){return t.join("")}postProcess(t,s){return t}get useLongestToken(){return!1}buildValues(t,s,i){let r=[],n;for(;t;)r.push(t),n=t.previousComponent,delete t.previousComponent,t=n;r.reverse();let o=r.length,a=0,u=0,l=0;for(;a<o;a++){let c=r[a];if(c.removed)c.value=this.join(i.slice(l,l+c.count)),l+=c.count;else{if(!c.added&&this.useLongestToken){let f=s.slice(u,u+c.count);f=f.map(function(d,p){let m=i[l+p];return m.length>d.length?m:d}),c.value=this.join(f)}else c.value=this.join(s.slice(u,u+c.count));u+=c.count,c.added||(l+=c.count)}}return r}};var Nf=class extends wn{constructor(){super(...arguments),this.tokenize=g_}equals(t,s,i){return i.ignoreWhitespace?((!i.newlineIsToken||!t.includes(`
|
|
397
397
|
`))&&(t=t.trim()),(!i.newlineIsToken||!s.includes(`
|
|
398
398
|
`))&&(s=s.trim())):i.ignoreNewlineAtEof&&!i.newlineIsToken&&(t.endsWith(`
|
|
399
399
|
`)&&(t=t.slice(0,-1)),s.endsWith(`
|
|
400
|
-
`)&&(s=s.slice(0,-1))),super.equals(t,s,i)}},
|
|
401
|
-
`));let s=[],i=e.split(/(\n|\r\n)/);i[i.length-1]||i.pop();for(let r=0;r<i.length;r++){let n=i[r];r%2&&!t.newlineIsToken?s[s.length-1]+=n:s.push(n)}return s}var G0={includeIndex:!0,includeUnderline:!0,includeFileHeaders:!0};function jf(e,t,s,i,r,n,o){let a;o?typeof o=="function"?a={callback:o}:a=o:a={},typeof a.context>"u"&&(a.context=4);let u=a.context;if(a.newlineIsToken)throw new Error("newlineIsToken may not be used with patch-generation functions, only with diffing functions");if(a.callback){let{callback:c}=a;Mf(s,i,Object.assign(Object.assign({},a),{callback:f=>{let d=l(f);c(d)}}))}else return l(Mf(s,i,a));function l(c){if(!c)return;c.push({value:"",lines:[]});function f(y){return y.map(function(v){return" "+v})}let d=[],p=0,m=0,g=[],D=1,w=1;for(let y=0;y<c.length;y++){let v=c[y],E=v.lines||
|
|
400
|
+
`)&&(s=s.slice(0,-1))),super.equals(t,s,i)}},m_=new Nf;function Mf(e,t,s){return m_.diff(e,t,s)}function g_(e,t){t.stripTrailingCr&&(e=e.replace(/\r\n/g,`
|
|
401
|
+
`));let s=[],i=e.split(/(\n|\r\n)/);i[i.length-1]||i.pop();for(let r=0;r<i.length;r++){let n=i[r];r%2&&!t.newlineIsToken?s[s.length-1]+=n:s.push(n)}return s}var G0={includeIndex:!0,includeUnderline:!0,includeFileHeaders:!0};function jf(e,t,s,i,r,n,o){let a;o?typeof o=="function"?a={callback:o}:a=o:a={},typeof a.context>"u"&&(a.context=4);let u=a.context;if(a.newlineIsToken)throw new Error("newlineIsToken may not be used with patch-generation functions, only with diffing functions");if(a.callback){let{callback:c}=a;Mf(s,i,Object.assign(Object.assign({},a),{callback:f=>{let d=l(f);c(d)}}))}else return l(Mf(s,i,a));function l(c){if(!c)return;c.push({value:"",lines:[]});function f(y){return y.map(function(v){return" "+v})}let d=[],p=0,m=0,g=[],D=1,w=1;for(let y=0;y<c.length;y++){let v=c[y],E=v.lines||D_(v.value);if(v.lines=E,v.added||v.removed){if(!p){let F=c[y-1];p=D,m=w,F&&(g=u>0?f(F.lines.slice(-u)):[],p-=g.length,m-=g.length)}for(let F of E)g.push((v.added?"+":"-")+F);v.added?w+=E.length:D+=E.length}else{if(p)if(E.length<=u*2&&y<c.length-2)for(let F of f(E))g.push(F);else{let F=Math.min(E.length,u);for(let B of f(E.slice(0,F)))g.push(B);let S={oldStart:p,oldLines:D-p+F,newStart:m,newLines:w-m+F,lines:g};d.push(S),p=0,m=0,g=[]}D+=E.length,w+=E.length}}for(let y of d)for(let v=0;v<y.lines.length;v++)y.lines[v].endsWith(`
|
|
402
402
|
`)?y.lines[v]=y.lines[v].slice(0,-1):(y.lines.splice(v+1,0,"\"),v++);return{oldFileName:e,newFileName:t,oldHeader:r,newHeader:n,hunks:d}}}function ja(e,t){if(t||(t=G0),Array.isArray(e)){if(e.length>1&&!t.includeFileHeaders)throw new Error("Cannot omit file headers on a multi-file patch. (The result would be unparseable; how would a tool trying to apply the patch know which changes are to which file?)");return e.map(i=>ja(i,t)).join(`
|
|
403
403
|
`)}let s=[];t.includeIndex&&e.oldFileName==e.newFileName&&s.push("Index: "+e.oldFileName),t.includeUnderline&&s.push("==================================================================="),t.includeFileHeaders&&(s.push("--- "+e.oldFileName+(typeof e.oldHeader>"u"?"":" "+e.oldHeader)),s.push("+++ "+e.newFileName+(typeof e.newHeader>"u"?"":" "+e.newHeader)));for(let i=0;i<e.hunks.length;i++){let r=e.hunks[i];r.oldLines===0&&(r.oldStart-=1),r.newLines===0&&(r.newStart-=1),s.push("@@ -"+r.oldStart+","+r.oldLines+" +"+r.newStart+","+r.newLines+" @@");for(let n of r.lines)s.push(n)}return s.join(`
|
|
404
404
|
`)+`
|
|
405
|
-
`}function W0(e,t,s,i,r,n,o){if(typeof o=="function"&&(o={callback:o}),o?.callback){let{callback:a}=o;jf(e,t,s,i,r,n,Object.assign(Object.assign({},o),{callback:u=>{a(u?ja(u,o.headerOptions):void 0)}}))}else{let a=jf(e,t,s,i,r,n,o);return a?ja(a,o?.headerOptions):void 0}}function zi(e,t,s,i,r,n){return W0(e,e,t,s,i,r,n)}function
|
|
405
|
+
`}function W0(e,t,s,i,r,n,o){if(typeof o=="function"&&(o={callback:o}),o?.callback){let{callback:a}=o;jf(e,t,s,i,r,n,Object.assign(Object.assign({},o),{callback:u=>{a(u?ja(u,o.headerOptions):void 0)}}))}else{let a=jf(e,t,s,i,r,n,o);return a?ja(a,o?.headerOptions):void 0}}function zi(e,t,s,i,r,n){return W0(e,e,t,s,i,r,n)}function D_(e){let t=e.endsWith(`
|
|
406
406
|
`),s=e.split(`
|
|
407
407
|
`).map(i=>i+`
|
|
408
408
|
`);return t?s.pop():s.push(s.pop().slice(0,-1)),s}var z0=require("node:child_process"),bn=require("node:fs/promises"),H0=require("node:path");$i();M();var K0=3e4;async function pe(e,t=process.cwd()){return new Promise((s,i)=>{let r=(0,z0.spawn)("git",e,{cwd:t}),n=[],o=[];r.stdout.on("data",u=>n.push(u)),r.stderr.on("data",u=>o.push(u));let a=setTimeout(()=>{r.kill(),i(new Error(`git ${e[0]} \u5728 ${K0/1e3}s \u540E\u8D85\u65F6`))},K0);r.on("close",u=>{if(clearTimeout(a),u===0)s(Buffer.concat(n).toString("utf-8"));else{let l=Buffer.concat(o).toString("utf-8");i(new Error(`git ${e[0]} \u6267\u884C\u5931\u8D25\uFF1A${l||`\u9000\u51FA\u7801 ${u}`}`))}}),r.on("error",u=>{clearTimeout(a),i(u)})})}async function J0(){try{let t=(await pe(["rev-parse","--abbrev-ref","HEAD"])).trim();return t==="HEAD"?null:t}catch(e){return h.debug(`getCurrentBranch failed: ${e}`),null}}async function Y0(){try{let i=(await pe(["symbolic-ref","refs/remotes/origin/HEAD"])).trim().replace("refs/remotes/origin/","");if(i)return i}catch{}let e=["main","master","develop"];for(let t of e)try{return await pe(["rev-parse","--verify",t]),t}catch{}return null}async function Z0(e){try{return await pe(["rev-parse","--verify",e]),!0}catch{try{return await pe(["rev-parse","--verify",`origin/${e}`]),!0}catch{return!1}}}async function X0(){return(await pe(["rev-parse","HEAD"])).trim()}async function qf(e){return(await pe(["rev-parse",e])).trim()}async function Q0(e){try{return await pe(["rev-parse","--verify",`${e}^{commit}`]),!0}catch{return!1}}async function ew(e="origin"){try{return(await pe(["remote","get-url",e])).trim()||null}catch{return null}}async function vn(e,t){try{return await pe(["show",`${e}:${t}`])}catch{return null}}async function tw(e){return(await pe(["ls-tree","-r","--name-only",e])).split(`
|
|
409
|
-
`).map(s=>s.trim()).filter(Boolean)}function
|
|
410
|
-
`).filter(t=>t.length>=3).map(t=>({file:t.slice(3),index:t[0]??" ",worktree:t[1]??" "}))}async function sw(){return pt(Ne.GIT_STATUS,async()=>{let e=await pe(["status","--porcelain"]);return
|
|
411
|
-
`),s=0,i=0;for(let r of t)r.startsWith("+")&&!r.startsWith("+++")?s++:r.startsWith("-")&&!r.startsWith("---")&&i++;return{additions:s,deletions:i}}async function iw(){
|
|
412
|
-
`).filter(t=>t.length>0).map(t=>{let[s,...i]=t.split(" "),r=i.join(" "),n="modified";return s==="A"?n="added":s==="D"?n="deleted":s?.startsWith("R")&&(n="modified"),{file:r,status:n}}).filter(t=>t.file)}async function nw(){try{let e=await pe(["diff","--name-status","HEAD~1","HEAD"]),t=rw(e);return t.length===0?[]:(await Promise.all(t.map(async({file:i,status:r})=>{try{let n=await pe(["diff","HEAD~1","HEAD","--",i]),{additions:o,deletions:a}=Uf(n),u=n.startsWith("diff --git")?n:zi(i,"","","HEAD~1","HEAD");return{file:i,status:r,diff:u,additions:o,deletions:a}}catch(n){return h.debug(`getLastCommitDiffs: skipping ${i}: ${n}`),null}}))).filter(i=>i!==null&&i.diff.trim().length>0)}catch(e){throw new Error(`\u83B7\u53D6\u6700\u8FD1\u4E00\u6B21\u63D0\u4EA4 diff \u5931\u8D25\uFF1A${e}`)}}async function ow(e,t="HEAD"){try{return(await pe(["log","--format=%B%n---COMMIT_SEPARATOR---",`${e}..${t}`])).split("---COMMIT_SEPARATOR---").map(i=>i.trim()).filter(i=>i.length>0)}catch(s){return h.debug(`getCommitMessages failed: ${s}`),[]}}async function Vf(e,t="HEAD"){try{let s=await pe(["diff","--name-status",e,t]),i=rw(s);return i.length===0?[]:(await Promise.all(i.map(async({file:n,status:o})=>{try{let a=await pe(["diff",e,t,"--",n]),{additions:u,deletions:l}=Uf(a),c=a.startsWith("diff --git")?a:zi(n,"","",e,t);return{file:n,status:o,diff:c,additions:u,deletions:l}}catch(a){return h.debug(`getCommitDiffs: skipping ${n}: ${a}`),null}}))).filter(n=>n!==null&&n.diff.trim().length>0)}catch(s){throw new Error(`\u83B7\u53D6 ${e} \u548C ${t} \u4E4B\u95F4\u7684 diff \u5931\u8D25\uFF1A${s}`)}}function aw(e,t){let s=new Map(e.map(n=>[n.file,n])),i=[],r=[];for(let n of t){let o=s.get(n);o?i.push(o):r.push(n)}return{matched:i,unmatched:r}}async function
|
|
413
|
-
`).filter(o=>o.startsWith("+")&&!o.startsWith("+++")).length;return{file:e,status:"added",diff:r,additions:n,deletions:0}}catch(s){return h.debug(`createFullFileDiff failed for ${e}: ${s}`),null}}async function uw(e){let t=await Promise.all(e.map(async r=>({file:r,diff:await
|
|
414
|
-
${e}`}function
|
|
415
|
-
`)}async function Wf(e,t,s){try{let i=await jt(`${e.apiBaseUrl}${t}`,{...s,headers:{"PRIVATE-TOKEN":e.token,"Content-Type":"application/json",...s?.headers||{}}},2);if(i.status>=400){let r=await i.text().catch(()=>"");return{ok:!1,error:`HTTP ${i.status}${r?`\uFF1A${r.slice(0,200)}`:""}`}}return i.status===204?{ok:!0}:{ok:!0,data:await i.json()}}catch(i){return{ok:!1,error:i instanceof Error?i.message:String(i)}}}async function
|
|
416
|
-
`)}function
|
|
417
|
-
`)){let l=u.match(/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/);if(l?.[1]&&l[2]){n=Number.parseInt(l[1],10),o=Number.parseInt(l[2],10),a=!0;continue}if(!(!a||u.startsWith("\"))){if(u.startsWith("+")&&!u.startsWith("+++")){t.set(o,{oldPath:i,newPath:r,newLine:o}),o++;continue}if(u.startsWith("-")&&!u.startsWith("---")){s.set(n,{oldPath:i,newPath:r,oldLine:n}),n++;continue}if(u.startsWith(" ")){let c={oldPath:i,newPath:r,oldLine:n,newLine:o};s.set(n,c),t.set(o,c),n++,o++}}}return{byNewLine:t,byOldLine:s}}function Ua(e,t,s){for(let i=t;i<=s;i++){let r=e.get(i);if(r)return r}}function
|
|
418
|
-
`).toLowerCase()}function yw(e){return new Set(e.toLowerCase().replace(/[^\p{L}\p{N}\s]/gu," ").split(/\s+/).filter(t=>t.length>=3))}function z_(e,t){if(e.size===0&&t.size===0)return 1;if(e.size===0||t.size===0)return 0;let s=0;for(let r of e)t.has(r)&&s++;let i=e.size+t.size-s;return s/i}function Ga(e,t,s={}){let i=s.requireSeverity??!0;return!(e.file!==t.file||i&&e.severity!==t.severity||e.category!==t.category||!vw(e.lineStart,e.lineEnd,t.lineStart,t.lineEnd,5)||t.matchText&&!K_(e).includes(t.matchText.toLowerCase()))}function H_(e,t){let s=new Set,i=[],r=[];for(let n of e){let o=t.findIndex((u,l)=>!s.has(l)&&Ga(u,n,{requireSeverity:!1}));if(o===-1){r.push(n),i.push({expected:n});continue}s.add(o);let a=t[o];i.push({expected:n,issue:a,...a.severity!==n.severity&&{severityMismatch:!0}})}return{matches:i,falseNegatives:r,matchedIssueIndexes:s}}function J_(e,t){return e.file!==t.file||e.category!==t.category||!vw(e.lineStart,e.lineEnd,t.lineStart,t.lineEnd,10)?!1:z_(yw(e.shortDescription),yw(t.shortDescription))>=.6}function ww(e){let t=[],s=0;for(let i of e){if(t.some(r=>J_(r,i))){s++;continue}t.push(i)}return s}function Y_(e){let t=e?.find(i=>i.stageId==="validation")?.output;if(!t||typeof t!="object")return{};let s=t;return{validCount:typeof s.validCount=="number"?s.validCount:void 0,filteredCount:typeof s.filteredCount=="number"?s.filteredCount:void 0}}function bw(e,t){return Number.isFinite(e)?Math.min(Math.max(e,0),t):0}function Z_(e,t){let s=e.diffs.length,i=t?.find(r=>r.stageId==="match-rules")?.output;if(i&&typeof i=="object"){let r=i,n=typeof r.totalDiffFiles=="number"?r.totalDiffFiles:s,o=typeof r.coveredFiles=="number"?bw(r.coveredFiles,n):Array.isArray(r.uncoveredFiles)?n-bw(r.uncoveredFiles.length,n):0,a=n-o;return{totalFiles:n,coveredFiles:o,uncoveredFiles:a,coverageRate:Yi(o,n,1)}}return{totalFiles:s,coveredFiles:s,uncoveredFiles:0,coverageRate:Yi(s,s,1)}}function X_(e,t,s){return e.map(i=>{let r=t.find(o=>Ga(o,i,{requireSeverity:!1}));if(r)return{expected:i,status:"leaked",issue:r};let n=s?.map(o=>o.issue).find(o=>Ga(o,i,{requireSeverity:!1}));return n?{expected:i,status:"filtered",issue:n}:{expected:i,status:"absent"}})}function Q_(e,t){return e.filter(s=>t?.some(i=>Ga(i.issue,s,{requireSeverity:!1}))).length}function Yi(e,t,s){return t===0?s:e/t}function Ew(e,t){let s=t.context.results.flatMap(S=>S.issues),i=t.context.issues,{matches:r,falseNegatives:n,matchedIssueIndexes:o}=H_(e.expectedIssues,i),a=i.filter((S,B)=>!o.has(B)),u=X_(e.expectedFilteredIssues,i,t.context.issueAuditTrail),l=Q_(e.expectedFilteredIssues,t.context.issueAuditTrail),c=ww(s),f=ww(i),d=Y_(t.context.stageResults??t.stages),p=d.validCount??0,m=d.filteredCount??0,g=p+m,D=Z_(e,t.context.stageResults??t.stages),w=r.filter(S=>S.issue).length,y=a.length,v=r.filter(S=>S.severityMismatch).length,E=Yi(w,w+y,1),F=Yi(w,e.expectedIssues.length,1);return{fixtureName:e.name,pipelineSuccess:t.success,metrics:{expectedIssues:e.expectedIssues.length,finalIssues:i.length,rawIssues:s.length,truePositives:w,falsePositives:y,falseNegatives:n.length,severityMismatches:v,precision:E,recall:F,f1:E+F===0?0:2*E*F/(E+F),rawDuplicateCount:c,rawDuplicateRate:Yi(c,s.length,0),finalDuplicateCount:f,finalDuplicateRate:Yi(f,i.length,0),validationInputCount:g,validationKeptCount:p,validationFilteredCount:m,validationRetentionRate:g===0?null:p/g,reviewTotalFiles:D.totalFiles,reviewCoveredFiles:D.coveredFiles,reviewUncoveredFiles:D.uncoveredFiles,reviewCoverageRate:D.coverageRate,expectedFilteredIssues:e.expectedFilteredIssues.length,expectedFilteredObserved:l,expectedFilteredLeaked:u.filter(S=>S.status==="leaked").length,expectedFilteredAbsent:u.filter(S=>S.status==="absent").length},matchedExpectedIssues:r,falseNegativeExpectedIssues:n,falsePositiveIssues:a,expectedFilteredResults:u}}ws();function Fw(e){return e||"unversioned"}async function Cw(e){let[t,s]=await Promise.all([We({projectPath:e}),At(e)]);return{prompts:t.map(i=>({name:i.name,version:Fw(i.version),source:i.source,path:i.path})).sort((i,r)=>i.name.localeCompare(r.name)),rules:s.map(i=>({name:i.name,version:Fw(i.version),source:i.source,path:i.path})).sort((i,r)=>i.name.localeCompare(r.name))}}var e$=new Set(["load-rules","match-rules","review","aggregate-results","confidence-filter","deduplication","validation"]);function t$(){return{expectedIssues:0,finalIssues:0,rawIssues:0,truePositives:0,falsePositives:0,falseNegatives:0,severityMismatches:0,precision:1,recall:1,f1:1,rawDuplicateCount:0,rawDuplicateRate:0,finalDuplicateCount:0,finalDuplicateRate:0,validationInputCount:0,validationKeptCount:0,validationFilteredCount:0,validationRetentionRate:null,reviewTotalFiles:0,reviewCoveredFiles:0,reviewUncoveredFiles:0,reviewCoverageRate:1,expectedFilteredIssues:0,expectedFilteredObserved:0,expectedFilteredLeaked:0,expectedFilteredAbsent:0}}function En(e,t,s){return t===0?s:e/t}function s$(e){let t=t$();for(let s of e){let i=s.metrics;t.expectedIssues+=i.expectedIssues,t.finalIssues+=i.finalIssues,t.rawIssues+=i.rawIssues,t.truePositives+=i.truePositives,t.falsePositives+=i.falsePositives,t.falseNegatives+=i.falseNegatives,t.severityMismatches+=i.severityMismatches,t.rawDuplicateCount+=i.rawDuplicateCount,t.finalDuplicateCount+=i.finalDuplicateCount,t.validationInputCount+=i.validationInputCount,t.validationKeptCount+=i.validationKeptCount,t.validationFilteredCount+=i.validationFilteredCount,t.reviewTotalFiles+=i.reviewTotalFiles,t.reviewCoveredFiles+=i.reviewCoveredFiles,t.reviewUncoveredFiles+=i.reviewUncoveredFiles,t.expectedFilteredIssues+=i.expectedFilteredIssues,t.expectedFilteredObserved+=i.expectedFilteredObserved,t.expectedFilteredLeaked+=i.expectedFilteredLeaked,t.expectedFilteredAbsent+=i.expectedFilteredAbsent}return t.precision=En(t.truePositives,t.truePositives+t.falsePositives,1),t.recall=En(t.truePositives,t.expectedIssues,1),t.f1=t.precision+t.recall===0?0:2*t.precision*t.recall/(t.precision+t.recall),t.rawDuplicateRate=En(t.rawDuplicateCount,t.rawIssues,0),t.finalDuplicateRate=En(t.finalDuplicateCount,t.finalIssues,0),t.validationRetentionRate=t.validationInputCount===0?null:t.validationKeptCount/t.validationInputCount,t.reviewCoverageRate=En(t.reviewCoveredFiles,t.reviewTotalFiles,1),t}function xw(e,t,s){if(!t)return[];let i=[];return t.minPrecision!==void 0&&e.precision<t.minPrecision&&i.push(`${s}: precision ${e.precision.toFixed(3)} < ${t.minPrecision}`),t.minRecall!==void 0&&e.recall<t.minRecall&&i.push(`${s}: recall ${e.recall.toFixed(3)} < ${t.minRecall}`),t.maxDuplicateRate!==void 0&&e.rawDuplicateRate>t.maxDuplicateRate&&i.push(`${s}: duplicateRate ${e.rawDuplicateRate.toFixed(3)} > ${t.maxDuplicateRate}`),i}async function i$(e){let t=await Mi(e.config,{executorOverride:e.executor,modelOverride:e.model});if(!t.ok)throw new Error(t.message||"\u6267\u884C\u5668\u914D\u7F6E\u6821\u9A8C\u5931\u8D25");let[s,i]=await Promise.all([Ni(),We({projectPath:e.projectPath,executorOverride:e.executor,modelOverride:e.model})]),r=Va().filter(n=>e$.has(n.id));return async n=>new Hi(i,s,r).execute(n.diffs,{quiet:!0,concurrency:e.config.concurrency,skipValidation:!1,stream:!1,ruleFilter:e.ruleFilter,agentFilter:e.agentFilter,minConfidence:e.confidence,modelOverride:e.model,config:e.config,repositoryPath:e.projectPath,commitMessages:n.commitMessages??[],supplementalContextFiles:n.supplementalContextFiles})}async function r$(e,t){if(e)return t();let s=process.env.BEST_REVIEW_CACHE;process.env.BEST_REVIEW_CACHE="false";try{return await t()}finally{s===void 0?delete process.env.BEST_REVIEW_CACHE:process.env.BEST_REVIEW_CACHE=s}}async function Sw(e){let t=e.fixtures??(e.fixturePath?await Dw(e.fixturePath):[]);if(t.length===0)throw new Error("\u6CA1\u6709\u627E\u5230\u8BC4\u6D4B fixture");let s=await le(e.projectPath),i=e.versions??await Cw(e.projectPath),r=e.executeFixture??await i$({projectPath:e.projectPath,executor:e.executor,model:e.model,agentFilter:e.agentFilter,ruleFilter:e.ruleFilter,confidence:e.confidence,config:s});return r$(e.useCache,async()=>{let n=[],o=[];for(let u of t){let l=await r(u),c=Ew(u,l);n.push(c),o.push(...xw(c.metrics,u.thresholds,u.name)),c.pipelineSuccess||o.push(`${u.name}: pipeline failed`)}let a=s$(n);return o.push(...xw(a,e.thresholds,"summary")),{schemaVersion:1,generatedAt:new Date().toISOString(),projectPath:e.projectPath,passed:o.length===0,thresholdFailures:o,summary:{fixtures:t.length,metrics:a},fixtureResults:n,versions:i}})}M();var n$="evals/golden";function Gt(e){return e===null?"n/a":`${(e*100).toFixed(1)}%`}function Aw(e){return e.length===0?"none":e.map(t=>`${t.name}@${t.version}`).join(", ")}function Rw(e){if(Array.isArray(e))return e.length>0?e:void 0;let t=e?.split(",").map(s=>s.trim()).filter(Boolean);return t&&t.length>0?t:void 0}function Kf(e,t){if(e===void 0||e==="")return;let s=typeof e=="number"?e:Number(e);if(!Number.isFinite(s)||s<0||s>1)throw new Error(`${t} \u5FC5\u987B\u5728 0-1 \u4E4B\u95F4`);return s}function o$(e){if(e===void 0||e==="")return;let t=typeof e=="number"?e:Number(e);if(!Number.isInteger(t)||t<0||t>100)throw new Error("confidence \u5FC5\u987B\u662F 0-100 \u4E4B\u95F4\u7684\u6574\u6570");return t}async function a$(e,t){let s=t||(0,Iw.join)(e,n$);return await(0,kw.access)(s),s}function u$(e){let t={minPrecision:Kf(e.minPrecision,"minPrecision"),minRecall:Kf(e.minRecall,"minRecall"),maxDuplicateRate:Kf(e.maxDuplicateRate,"maxDuplicateRate")};return Object.values(t).some(s=>s!==void 0)?t:void 0}function l$(e){let t=e.summary.metrics,s=["\u5BA1\u67E5\u8D28\u91CF\u8BC4\u6D4B",`status: ${e.passed?"pass":"fail"}`,`fixtures: ${e.summary.fixtures}`,`precision: ${Gt(t.precision)}`,`recall: ${Gt(t.recall)}`,`f1: ${Gt(t.f1)}`,`falsePositives: ${t.falsePositives}`,`falseNegatives: ${t.falseNegatives}`,`severityMismatches: ${t.severityMismatches}`,`duplicateRate: ${Gt(t.rawDuplicateRate)}`,`reviewCoverage: ${Gt(t.reviewCoverageRate)}`,`validationRetention: ${Gt(t.validationRetentionRate)}`,`expectedFiltered: observed ${t.expectedFilteredObserved}, leaked ${t.expectedFilteredLeaked}, absent ${t.expectedFilteredAbsent}`,"",`promptVersions: ${Aw(e.versions.prompts)}`,`ruleVersions: ${Aw(e.versions.rules)}`];if(e.thresholdFailures.length>0){s.push("","thresholdFailures:");for(let i of e.thresholdFailures)s.push(` - ${i}`)}s.push("","fixtures:");for(let i of e.fixtureResults)s.push(` - ${i.fixtureName}: precision ${Gt(i.metrics.precision)}, recall ${Gt(i.metrics.recall)}, FP ${i.metrics.falsePositives}, FN ${i.metrics.falseNegatives}, duplicateRate ${Gt(i.metrics.rawDuplicateRate)}`);return s.join(`
|
|
419
|
-
`)}async function _w(e={}){let t=process.cwd(),s=await
|
|
409
|
+
`).map(s=>s.trim()).filter(Boolean)}function w_(e){return e.trim().split(`
|
|
410
|
+
`).filter(t=>t.length>=3).map(t=>({file:t.slice(3),index:t[0]??" ",worktree:t[1]??" "}))}async function sw(){return pt(Ne.GIT_STATUS,async()=>{let e=await pe(["status","--porcelain"]);return w_(e)})}function b_(){ma(Ne.GIT_STATUS)}async function qa(){try{return await pe(["rev-parse","--git-dir"]),!0}catch(e){return h.debug(`isGitRepository: not a git repo: ${e}`),!1}}async function v_(){try{return(await sw()).map(t=>t.file)}catch(e){throw new Error(`\u83B7\u53D6\u53D8\u66F4\u6587\u4EF6\u5931\u8D25\uFF1A${e}`)}}async function E_(e){try{let t="",s="";try{t=await pe(["show",`HEAD:${e}`])}catch{t=""}try{s=await(0,bn.readFile)(e,"utf-8")}catch{s=""}return zi(e,t,s,"HEAD","\u5DE5\u4F5C\u533A")}catch(t){throw new Error(`\u83B7\u53D6 ${e} \u7684 diff \u5931\u8D25\uFF1A${t}`)}}async function F_(e){try{let s=(await sw()).find(i=>i.file===e);return s?s.index==="A"||s.index==="?"||s.worktree==="?"?"added":s.index==="D"||s.worktree==="D"?"deleted":"modified":"modified"}catch(t){return h.debug(`getFileStatus failed for ${e}: ${t}`),"modified"}}function Uf(e){let t=e.split(`
|
|
411
|
+
`),s=0,i=0;for(let r of t)r.startsWith("+")&&!r.startsWith("+++")?s++:r.startsWith("-")&&!r.startsWith("---")&&i++;return{additions:s,deletions:i}}async function iw(){b_();let e=await v_();return(await Promise.all(e.map(async s=>{try{let[i,r]=await Promise.all([E_(s),F_(s)]),{additions:n,deletions:o}=Uf(i);return{file:s,status:r,diff:i,additions:n,deletions:o}}catch(i){return h.debug(`getAllDiffs: skipping ${s}: ${i}`),null}}))).filter(s=>s!==null).filter(s=>s.diff.trim().length>0)}function rw(e){return e.trim().split(`
|
|
412
|
+
`).filter(t=>t.length>0).map(t=>{let[s,...i]=t.split(" "),r=i.join(" "),n="modified";return s==="A"?n="added":s==="D"?n="deleted":s?.startsWith("R")&&(n="modified"),{file:r,status:n}}).filter(t=>t.file)}async function nw(){try{let e=await pe(["diff","--name-status","HEAD~1","HEAD"]),t=rw(e);return t.length===0?[]:(await Promise.all(t.map(async({file:i,status:r})=>{try{let n=await pe(["diff","HEAD~1","HEAD","--",i]),{additions:o,deletions:a}=Uf(n),u=n.startsWith("diff --git")?n:zi(i,"","","HEAD~1","HEAD");return{file:i,status:r,diff:u,additions:o,deletions:a}}catch(n){return h.debug(`getLastCommitDiffs: skipping ${i}: ${n}`),null}}))).filter(i=>i!==null&&i.diff.trim().length>0)}catch(e){throw new Error(`\u83B7\u53D6\u6700\u8FD1\u4E00\u6B21\u63D0\u4EA4 diff \u5931\u8D25\uFF1A${e}`)}}async function ow(e,t="HEAD"){try{return(await pe(["log","--format=%B%n---COMMIT_SEPARATOR---",`${e}..${t}`])).split("---COMMIT_SEPARATOR---").map(i=>i.trim()).filter(i=>i.length>0)}catch(s){return h.debug(`getCommitMessages failed: ${s}`),[]}}async function Vf(e,t="HEAD"){try{let s=await pe(["diff","--name-status",e,t]),i=rw(s);return i.length===0?[]:(await Promise.all(i.map(async({file:n,status:o})=>{try{let a=await pe(["diff",e,t,"--",n]),{additions:u,deletions:l}=Uf(a),c=a.startsWith("diff --git")?a:zi(n,"","",e,t);return{file:n,status:o,diff:c,additions:u,deletions:l}}catch(a){return h.debug(`getCommitDiffs: skipping ${n}: ${a}`),null}}))).filter(n=>n!==null&&n.diff.trim().length>0)}catch(s){throw new Error(`\u83B7\u53D6 ${e} \u548C ${t} \u4E4B\u95F4\u7684 diff \u5931\u8D25\uFF1A${s}`)}}function aw(e,t){let s=new Map(e.map(n=>[n.file,n])),i=[],r=[];for(let n of t){let o=s.get(n);o?i.push(o):r.push(n)}return{matched:i,unmatched:r}}async function C_(e){let t=(0,H0.resolve)(process.cwd(),e);try{if(!(await(0,bn.stat)(t)).isFile())return null;let i=await(0,bn.readFile)(t,"utf-8"),r=zi(e,"",i,"/dev/null",e),n=r.split(`
|
|
413
|
+
`).filter(o=>o.startsWith("+")&&!o.startsWith("+++")).length;return{file:e,status:"added",diff:r,additions:n,deletions:0}}catch(s){return h.debug(`createFullFileDiff failed for ${e}: ${s}`),null}}async function uw(e){let t=await Promise.all(e.map(async r=>({file:r,diff:await C_(r)}))),s=[],i=[];for(let{file:r,diff:n}of t)n?s.push(n):i.push(r);return{diffs:s,notFound:i}}var dw="<!-- best-review:",Gf={critical:"\u{1F534} \u4E25\u91CD",high:"\u{1F7E0} \u9AD8",medium:"\u{1F7E1} \u4E2D",low:"\u{1F7E2} \u4F4E"},x_={security:"\u5B89\u5168",performance:"\u6027\u80FD",bug:"\u7F3A\u9677",quality:"\u8D28\u91CF",style:"\u98CE\u683C",docs:"\u6587\u6863"};function S_(e){let t=e.trim().replace(/\/+$/,"");return/\/api\/v\d+$/i.test(t)?t:`${t}/api/v4`}function A_(e){let t=process.env.GITLAB_TOKEN?.trim(),s=e.metadata.reviewTarget;if(s)return t?{apiBaseUrl:s.apiBaseUrl.replace(/\/+$/,""),token:t,projectId:s.projectPath,mrIid:s.mrIid,reviewTarget:s}:(e.quiet||h.info("GitLab \u4E0A\u62A5\u5DF2\u8DF3\u8FC7\uFF1A\u7F3A\u5C11 GITLAB_TOKEN"),null);let i=process.env.GITLAB_HOST,r=process.env.GITLAB_PROJECT_ID||process.env.CI_PROJECT_ID,n=process.env.GITLAB_MR_IID||process.env.CI_MERGE_REQUEST_IID;if(!i||!t||!r||!n){if(!e.quiet){let o=[];i||o.push("GITLAB_HOST"),t||o.push("GITLAB_TOKEN"),r||o.push("GITLAB_PROJECT_ID"),n||o.push("GITLAB_MR_IID"),h.info(`GitLab \u4E0A\u62A5\u5DF2\u8DF3\u8FC7\uFF1A\u7F3A\u5C11 ${o.join(", ")}`)}return null}return{apiBaseUrl:S_(i),token:t,projectId:r,mrIid:n}}async function R_(e){if(e.metadata.reviewTarget?.diffVersion)return e.metadata.reviewTarget.diffVersion;let t=process.env.CI_MERGE_REQUEST_DIFF_BASE_SHA||process.env.CI_MERGE_REQUEST_TARGET_BRANCH_SHA,s=process.env.CI_COMMIT_SHA;if(t&&s){let i=process.env.CI_MERGE_REQUEST_TARGET_BRANCH_SHA||t;return{baseSha:t,startSha:s,headSha:i}}try{let i=e.metadata.headRef,r=e.metadata.baseRef;if(!i||!r)return null;let[n,o]=await Promise.all([X0(),qf(r)]),a=await qf(i)||o;return!n||!o?null:{baseSha:o,startSha:n,headSha:a}}catch{return null}}function k_(e){let t=(0,fw.createHash)("sha1").update(e).digest("hex").slice(0,12);return`${dw}hash=${t} -->`}function lw(e,t){return`${k_(t)}
|
|
414
|
+
${e}`}function I_(e){return typeof e=="string"&&e.includes(dw)}function __(e){let t=Gf[e.severity]||e.severity,s=x_[e.category]||e.category,i=[`\u{1F916} **best-review** \xB7 ${t} \xB7 \`${s}\``,"",`> ${e.shortDescription}`,""];return e.fullDescription&&e.fullDescription!==e.shortDescription&&i.push(e.fullDescription,""),e.evidence&&i.push(`**\u8BC1\u636E\uFF1A** ${e.evidence}`,""),e.suggestion&&i.push(`**\u5EFA\u8BAE\uFF1A** ${e.suggestion}`,""),e.rule&&i.push(`*rule: \`${e.rule}\` | agent: \`${e.agent}\`*`,""),i.join(`
|
|
415
|
+
`)}async function Wf(e,t,s){try{let i=await jt(`${e.apiBaseUrl}${t}`,{...s,headers:{"PRIVATE-TOKEN":e.token,"Content-Type":"application/json",...s?.headers||{}}},2);if(i.status>=400){let r=await i.text().catch(()=>"");return{ok:!1,error:`HTTP ${i.status}${r?`\uFF1A${r.slice(0,200)}`:""}`}}return i.status===204?{ok:!0}:{ok:!0,data:await i.json()}}catch(i){return{ok:!1,error:i instanceof Error?i.message:String(i)}}}async function $_(e){let t=await Wf(e,`/projects/${encodeURIComponent(e.projectId)}/merge_requests/${e.mrIid}/discussions`);return t.ok?{data:Array.isArray(t.data)?t.data:[]}:{data:[],error:t.error}}async function T_(e,t,s){let i=await Wf(e,`/projects/${encodeURIComponent(e.projectId)}/merge_requests/${e.mrIid}/discussions/${encodeURIComponent(t)}/notes/${encodeURIComponent(s)}`,{method:"DELETE"});return i.ok?{success:!0}:{success:!1,error:i.error}}async function P_(e){if(!e.reviewTarget)return{deleted:0,failed:0,errors:[]};let t=await $_(e);if(t.error)return{deleted:0,failed:1,errors:[`\u5217\u51FA\u73B0\u6709 discussions \u5931\u8D25\uFF1A${t.error}`]};let s=0,i=[],r=0,n=[];for(let a of t.data){let u=a.id;if(!(u===void 0||!Array.isArray(a.notes)))for(let l of a.notes){let c=l.id;c===void 0||!I_(l.body)||i.push(T_(e,String(u),String(c)).then(f=>({discussionId:String(u),noteId:String(c),result:f})))}}let o=await Promise.allSettled(i);for(let a of o){if(a.status==="rejected"){r++,n.push(`\u5220\u9664 discussion note \u5931\u8D25\uFF1A${a.reason instanceof Error?a.reason.message:String(a.reason)}`);continue}let{discussionId:u,noteId:l,result:c}=a.value;c.success?s++:(r++,n.push(`\u5220\u9664 discussion ${u} note ${l} \u5931\u8D25\uFF1A${c.error}`))}return{deleted:s,failed:r,errors:n}}async function cw(e,t,s){let i={body:t};s&&(i.position=s);let r=await Wf(e,`/projects/${encodeURIComponent(e.projectId)}/merge_requests/${e.mrIid}/discussions`,{method:"POST",body:JSON.stringify(i)});return r.ok?{success:!0}:{success:!1,error:r.error}}function B_(e,t){let s={};for(let r of e)s[r.severity]=(s[r.severity]||0)+1;let i=["## \u{1F916} best-review \u5BA1\u67E5\u7ED3\u679C","",`**${e.length} \u4E2A\u95EE\u9898** \u53D1\u73B0\u4E8E ${t.metadata.baseRef?`${t.metadata.baseRef}...${t.metadata.headRef||"HEAD"}`:"\u4EE3\u7801\u53D8\u66F4"}`,""];for(let[r,n]of Object.entries(s)){let o=Gf[r]||r;i.push(`- ${o}\uFF1A${n} \u4E2A`)}i.push("","<details><summary>\u{1F4CB} \u95EE\u9898\u8BE6\u60C5\uFF08\u70B9\u51FB\u5C55\u5F00\uFF09</summary>","");for(let r=0;r<e.length;r++){let n=e[r],o=Gf[n.severity]||n.severity;i.push(`### ${r+1}. ${o} \u2014 \`${n.file}:${n.lineStart}\``,"",n.shortDescription,""),n.suggestion&&i.push(`**\u5EFA\u8BAE\uFF1A** ${n.suggestion}`,""),i.push("---","")}return i.push("</details>","",`*\u5BA1\u67E5\u65F6\u95F4\uFF1A${new Date().toISOString()}*`),i.join(`
|
|
416
|
+
`)}function O_(e){let t=new Map,s=new Map,i=e.oldPath||e.file,r=e.newPath||e.file,n=0,o=0,a=!1;for(let u of e.diff.split(`
|
|
417
|
+
`)){let l=u.match(/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/);if(l?.[1]&&l[2]){n=Number.parseInt(l[1],10),o=Number.parseInt(l[2],10),a=!0;continue}if(!(!a||u.startsWith("\"))){if(u.startsWith("+")&&!u.startsWith("+++")){t.set(o,{oldPath:i,newPath:r,newLine:o}),o++;continue}if(u.startsWith("-")&&!u.startsWith("---")){s.set(n,{oldPath:i,newPath:r,oldLine:n}),n++;continue}if(u.startsWith(" ")){let c={oldPath:i,newPath:r,oldLine:n,newLine:o};s.set(n,c),t.set(o,c),n++,o++}}}return{byNewLine:t,byOldLine:s}}function Ua(e,t,s){for(let i=t;i<=s;i++){let r=e.get(i);if(r)return r}}function L_(e,t,s){let i=O_(t),r=Math.max(e.lineStart,e.lineEnd),o=t.status==="deleted"||t.isDeletedFile?Ua(i.byOldLine,e.lineStart,r)||Ua(i.byNewLine,e.lineStart,r):Ua(i.byNewLine,e.lineStart,r)||Ua(i.byOldLine,e.lineStart,r);return!o||o.oldLine===void 0&&o.newLine===void 0?null:{base_sha:s.baseSha,start_sha:s.startSha,head_sha:s.headSha,position_type:"text",old_path:o.oldPath,new_path:o.newPath,...o.oldLine!==void 0?{old_line:o.oldLine}:{},...o.newLine!==void 0?{new_line:o.newLine}:{}}}function N_(e,t){return{base_sha:t.baseSha,start_sha:t.startSha,head_sha:t.headSha,position_type:"text",new_path:e.file,new_line:e.lineStart}}function M_(e,t){return t.find(s=>new Set([s.file,s.oldPath,s.newPath].filter(Boolean)).has(e.file))}function hw(){return{id:"gitlab-reporting",name:"GitLab Reporting",description:"\u63A8\u9001\u5BA1\u67E5\u7ED3\u679C\u5230 GitLab MR",enabled:!0,order:9,execute:async e=>{let t=Date.now();if(!(process.env.BEST_REVIEW_GITLAB_ENABLED==="true"||e.metadata.reviewTarget?.kind==="gitlab-mr"))return{stageId:"gitlab-reporting",stageName:"GitLab Reporting",success:!0,duration:Date.now()-t,output:{skipped:!0,reason:"BEST_REVIEW_GITLAB_ENABLED \u672A\u8BBE\u7F6E"}};let i=A_(e);if(!i)return{stageId:"gitlab-reporting",stageName:"GitLab Reporting",success:!0,duration:Date.now()-t,output:{skipped:!0,reason:e.metadata.reviewTarget?"\u7F3A\u5C11 GitLab \u914D\u7F6E\uFF08GITLAB_TOKEN\uFF09":"\u7F3A\u5C11 GitLab \u914D\u7F6E\uFF08GITLAB_HOST/TOKEN/PROJECT_ID/MR_IID\uFF09"}};let r=e.issues;if(r.length===0)return e.quiet||h.info("GitLab \u4E0A\u62A5\uFF1A\u6CA1\u6709\u95EE\u9898\u9700\u8981\u63A8\u9001"),{stageId:"gitlab-reporting",stageName:"GitLab Reporting",success:!0,duration:Date.now()-t,output:{skipped:!0,reason:"\u65E0\u95EE\u9898"}};e.quiet||h.sync(`GitLab \u4E0A\u62A5\uFF1A\u6B63\u5728\u63A8\u9001 ${r.length} \u4E2A\u95EE\u9898...`);let n=await P_(i),o=await R_(e),a=0,u=n.failed,l=[...n.errors],c=[];if(o)for(let p of r){let m=M_(p,e.diffs),g=(m?L_(p,m,o):null)||(i.reviewTarget?null:N_(p,o));if(!g){c.push(p);continue}let D=lw(__(p),`${p.file}:${p.lineStart}:${p.shortDescription}:${p.agent}`),w=await cw(i,D,g);w.success?a++:(u++,l.push(`${p.file}:${p.lineStart} \u2014 ${w.error}`))}else c.push(...r);let f=!1;if(c.length>0){!e.quiet&&o&&h.info(`GitLab \u4E0A\u62A5\uFF1A${c.length} \u4E2A\u95EE\u9898\u65E0\u6CD5\u6620\u5C04\u5230 diff position\uFF0C\u6539\u4E3A summary`);let p=lw(B_(c,e),`summary:${c.map(g=>`${g.file}:${g.lineStart}:${g.shortDescription}`).join("|")}`),m=await cw(i,p);m.success?(a++,f=!0):(u++,l.push(`summary discussion \u63A8\u9001\u5931\u8D25\uFF1A${m.error}`))}e.quiet||h.done(`GitLab \u4E0A\u62A5\u5B8C\u6210\uFF1A${a}/${a+u} \u6761\u8BC4\u8BBA\u5DF2\u63A8\u9001`);let d={pushed:a,failed:u,inline:o!==null,summary:f,cleanupDeleted:n.deleted,cleanupFailed:n.failed,summaryCount:c.length,...l.length>0?{errors:l.slice(0,10)}:{}};return{stageId:"gitlab-reporting",stageName:"GitLab Reporting",success:u===0,duration:Date.now()-t,output:d,...u>0?{error:`${u} \u6761 GitLab \u64CD\u4F5C\u5931\u8D25`}:{}}}}}function Va(){return[py(),Ey(),xy(),i0(),r0(),a0(),l0(),C0(),x0(),$0(),V0(),hw()]}var Hi=class{agents=[];executors=new Map;stages=[];constructor(t=[],s=[],i){this.agents=[...t].sort((r,n)=>r.order-n.order);for(let r of s)this.executors.set(r.name,r),he.registerExecutor(r);for(let r of t)qi.register(r);this.stages=i||Va()}addAgent(t){this.agents.push(t),this.agents.sort((s,i)=>s.order-i.order),qi.register(t)}removeAgent(t){this.agents=this.agents.filter(s=>s.name!==t),qi.remove(t)}getAgents(){return this.agents}getEnabledAgents(){return this.agents.filter(t=>t.enabled)}addExecutor(t){this.executors.set(t.name,t),he.registerExecutor(t)}getExecutor(t){return this.executors.get(t)}async execute(t,s={}){let{verbose:i=!1,quiet:r=!1,concurrency:n=3,skipValidation:o=!1,stream:a=!1,baseRef:u,headRef:l,ruleFilter:c,excludeRules:f,agentFilter:d,excludeAgents:p,minConfidence:m,modelOverride:g,fixSeverities:D,fixDryRun:w=!1,fixMaxIssues:y,fixPatchFile:v,repositoryPath:E}=s,F=Date.now(),S=E||process.cwd(),B=s.config,x=s.commitMessages??[];s.commitMessages===void 0&&u&&l&&(x=await ow(u,l),i&&x.length>0&&h.plain(`\u5DF2\u8BFB\u53D6 ${x.length} \u6761\u63D0\u4EA4\u4FE1\u606F\u4F5C\u4E3A\u4E0A\u4E0B\u6587`));let $={diffs:t,results:[],issues:[],metadata:{timestamp:Date.now(),repository:S,baseRef:u,headRef:l,commitMessages:x.length>0?x:void 0,...s.metadata??{}},verbose:i,quiet:r,stream:a,concurrency:n,agents:[...this.agents],supplementalContextFiles:s.supplementalContextFiles,techDoc:s.techDoc,ruleFilter:c,excludeRules:f,agentFilter:d,excludeAgents:p,skipValidation:o,minConfidence:m,modelOverride:g,fixSeverities:D,fixDryRun:w,fixMaxIssues:y,fixPatchFile:v,config:B},W=[],ae=!1;for(let R of this.stages)if(R.enabled&&!(ae&&R.id!=="reporting"))try{$.stageResults=[...W];let N=await R.execute($);if(W.push(N),$.stageResults=[...W],!N.success&&(h.error(`\u9636\u6BB5 ${R.name} \u5931\u8D25\uFF1A${N.error}`),ae=!0,R.id==="reporting"))break}catch(N){let Y=N instanceof Error?N.message:String(N);if(h.error(`\u9636\u6BB5 ${R.name} \u5931\u8D25\uFF1A${Y}`),W.push({stageId:R.id,stageName:R.name,success:!1,duration:0,error:Y}),$.stageResults=[...W],ae=!0,R.id==="reporting")break}let z=Date.now()-F;return{success:W.every(R=>R.success),context:$,totalDuration:z,stages:W}}};var Ji=require("node:fs/promises"),gw=require("node:path");Zs();var j_=b.enum(["critical","high","medium","low"]),q_=b.enum(["security","performance","bug","quality","style","docs"]),U_=b.object({file:b.string().min(1),status:b.enum(["modified","added","deleted","renamed"]),diff:b.string(),additions:b.number().nonnegative(),deletions:b.number().nonnegative(),hash:b.string().optional(),oldPath:b.string().optional(),newPath:b.string().optional(),isNewFile:b.boolean().optional(),isDeletedFile:b.boolean().optional(),isRenamedFile:b.boolean().optional()}).strict(),pw=b.object({id:b.string().min(1),file:b.string().min(1),lineStart:b.number().positive(),lineEnd:b.number().positive(),severity:j_,category:q_,description:b.string().min(1),matchText:b.string().min(1).optional()}).strict(),V_=b.object({minPrecision:b.number().min(0).max(1).optional(),minRecall:b.number().min(0).max(1).optional(),maxDuplicateRate:b.number().min(0).max(1).optional()}).strict(),G_=b.object({file:b.string().min(1),content:b.string(),role:b.enum(["changed-file","dependency"]),source:b.enum(["gitlab-remote","local-git"]),ref:b.string().min(1),relatedFiles:b.array(b.string()).optional()}).strict(),W_=b.object({schemaVersion:b.literal(1),name:b.string().min(1),description:b.string().optional(),diffs:b.array(U_).min(1),expectedIssues:b.array(pw),expectedFilteredIssues:b.array(pw).default([]),thresholds:V_.optional(),commitMessages:b.array(b.string()).optional(),supplementalContextFiles:b.array(G_).optional()}).strict();function K_(e){return W_.parse(e)}async function mw(e){let t=await(0,Ji.readFile)(e,"utf-8");try{return K_(JSON.parse(t))}catch(s){let i=s instanceof Error?s.message:String(s);throw new Error(`\u8BC4\u6D4B fixture \u65E0\u6548 ${e}\uFF1A${i}`,{cause:s})}}async function Dw(e){if((await(0,Ji.stat)(e)).isFile())return[await mw(e)];let i=(await(0,Ji.readdir)(e)).filter(n=>n.endsWith(".json")).sort((n,o)=>n.localeCompare(o));return(await Promise.all(i.map(n=>mw((0,gw.join)(e,n))))).sort((n,o)=>n.name.localeCompare(o.name))}function vw(e,t,s,i,r){return e<=i&&s<=t?!0:Math.abs(e-s)<=r||Math.abs(t-i)<=r||Math.abs(e-i)<=r||Math.abs(t-s)<=r}function z_(e){return[e.shortDescription,e.fullDescription,e.suggestion,e.evidence,e.rule].filter(Boolean).join(`
|
|
418
|
+
`).toLowerCase()}function yw(e){return new Set(e.toLowerCase().replace(/[^\p{L}\p{N}\s]/gu," ").split(/\s+/).filter(t=>t.length>=3))}function H_(e,t){if(e.size===0&&t.size===0)return 1;if(e.size===0||t.size===0)return 0;let s=0;for(let r of e)t.has(r)&&s++;let i=e.size+t.size-s;return s/i}function Ga(e,t,s={}){let i=s.requireSeverity??!0;return!(e.file!==t.file||i&&e.severity!==t.severity||e.category!==t.category||!vw(e.lineStart,e.lineEnd,t.lineStart,t.lineEnd,5)||t.matchText&&!z_(e).includes(t.matchText.toLowerCase()))}function J_(e,t){let s=new Set,i=[],r=[];for(let n of e){let o=t.findIndex((u,l)=>!s.has(l)&&Ga(u,n,{requireSeverity:!1}));if(o===-1){r.push(n),i.push({expected:n});continue}s.add(o);let a=t[o];i.push({expected:n,issue:a,...a.severity!==n.severity&&{severityMismatch:!0}})}return{matches:i,falseNegatives:r,matchedIssueIndexes:s}}function Y_(e,t){return e.file!==t.file||e.category!==t.category||!vw(e.lineStart,e.lineEnd,t.lineStart,t.lineEnd,10)?!1:H_(yw(e.shortDescription),yw(t.shortDescription))>=.6}function ww(e){let t=[],s=0;for(let i of e){if(t.some(r=>Y_(r,i))){s++;continue}t.push(i)}return s}function Z_(e){let t=e?.find(i=>i.stageId==="validation")?.output;if(!t||typeof t!="object")return{};let s=t;return{validCount:typeof s.validCount=="number"?s.validCount:void 0,filteredCount:typeof s.filteredCount=="number"?s.filteredCount:void 0}}function bw(e,t){return Number.isFinite(e)?Math.min(Math.max(e,0),t):0}function X_(e,t){let s=e.diffs.length,i=t?.find(r=>r.stageId==="match-rules")?.output;if(i&&typeof i=="object"){let r=i,n=typeof r.totalDiffFiles=="number"?r.totalDiffFiles:s,o=typeof r.coveredFiles=="number"?bw(r.coveredFiles,n):Array.isArray(r.uncoveredFiles)?n-bw(r.uncoveredFiles.length,n):0,a=n-o;return{totalFiles:n,coveredFiles:o,uncoveredFiles:a,coverageRate:Yi(o,n,1)}}return{totalFiles:s,coveredFiles:s,uncoveredFiles:0,coverageRate:Yi(s,s,1)}}function Q_(e,t,s){return e.map(i=>{let r=t.find(o=>Ga(o,i,{requireSeverity:!1}));if(r)return{expected:i,status:"leaked",issue:r};let n=s?.map(o=>o.issue).find(o=>Ga(o,i,{requireSeverity:!1}));return n?{expected:i,status:"filtered",issue:n}:{expected:i,status:"absent"}})}function e$(e,t){return e.filter(s=>t?.some(i=>Ga(i.issue,s,{requireSeverity:!1}))).length}function Yi(e,t,s){return t===0?s:e/t}function Ew(e,t){let s=t.context.results.flatMap(S=>S.issues),i=t.context.issues,{matches:r,falseNegatives:n,matchedIssueIndexes:o}=J_(e.expectedIssues,i),a=i.filter((S,B)=>!o.has(B)),u=Q_(e.expectedFilteredIssues,i,t.context.issueAuditTrail),l=e$(e.expectedFilteredIssues,t.context.issueAuditTrail),c=ww(s),f=ww(i),d=Z_(t.context.stageResults??t.stages),p=d.validCount??0,m=d.filteredCount??0,g=p+m,D=X_(e,t.context.stageResults??t.stages),w=r.filter(S=>S.issue).length,y=a.length,v=r.filter(S=>S.severityMismatch).length,E=Yi(w,w+y,1),F=Yi(w,e.expectedIssues.length,1);return{fixtureName:e.name,pipelineSuccess:t.success,metrics:{expectedIssues:e.expectedIssues.length,finalIssues:i.length,rawIssues:s.length,truePositives:w,falsePositives:y,falseNegatives:n.length,severityMismatches:v,precision:E,recall:F,f1:E+F===0?0:2*E*F/(E+F),rawDuplicateCount:c,rawDuplicateRate:Yi(c,s.length,0),finalDuplicateCount:f,finalDuplicateRate:Yi(f,i.length,0),validationInputCount:g,validationKeptCount:p,validationFilteredCount:m,validationRetentionRate:g===0?null:p/g,reviewTotalFiles:D.totalFiles,reviewCoveredFiles:D.coveredFiles,reviewUncoveredFiles:D.uncoveredFiles,reviewCoverageRate:D.coverageRate,expectedFilteredIssues:e.expectedFilteredIssues.length,expectedFilteredObserved:l,expectedFilteredLeaked:u.filter(S=>S.status==="leaked").length,expectedFilteredAbsent:u.filter(S=>S.status==="absent").length},matchedExpectedIssues:r,falseNegativeExpectedIssues:n,falsePositiveIssues:a,expectedFilteredResults:u}}ws();function Fw(e){return e||"unversioned"}async function Cw(e){let[t,s]=await Promise.all([We({projectPath:e}),At(e)]);return{prompts:t.map(i=>({name:i.name,version:Fw(i.version),source:i.source,path:i.path})).sort((i,r)=>i.name.localeCompare(r.name)),rules:s.map(i=>({name:i.name,version:Fw(i.version),source:i.source,path:i.path})).sort((i,r)=>i.name.localeCompare(r.name))}}var t$=new Set(["load-rules","match-rules","review","aggregate-results","confidence-filter","deduplication","validation"]);function s$(){return{expectedIssues:0,finalIssues:0,rawIssues:0,truePositives:0,falsePositives:0,falseNegatives:0,severityMismatches:0,precision:1,recall:1,f1:1,rawDuplicateCount:0,rawDuplicateRate:0,finalDuplicateCount:0,finalDuplicateRate:0,validationInputCount:0,validationKeptCount:0,validationFilteredCount:0,validationRetentionRate:null,reviewTotalFiles:0,reviewCoveredFiles:0,reviewUncoveredFiles:0,reviewCoverageRate:1,expectedFilteredIssues:0,expectedFilteredObserved:0,expectedFilteredLeaked:0,expectedFilteredAbsent:0}}function En(e,t,s){return t===0?s:e/t}function i$(e){let t=s$();for(let s of e){let i=s.metrics;t.expectedIssues+=i.expectedIssues,t.finalIssues+=i.finalIssues,t.rawIssues+=i.rawIssues,t.truePositives+=i.truePositives,t.falsePositives+=i.falsePositives,t.falseNegatives+=i.falseNegatives,t.severityMismatches+=i.severityMismatches,t.rawDuplicateCount+=i.rawDuplicateCount,t.finalDuplicateCount+=i.finalDuplicateCount,t.validationInputCount+=i.validationInputCount,t.validationKeptCount+=i.validationKeptCount,t.validationFilteredCount+=i.validationFilteredCount,t.reviewTotalFiles+=i.reviewTotalFiles,t.reviewCoveredFiles+=i.reviewCoveredFiles,t.reviewUncoveredFiles+=i.reviewUncoveredFiles,t.expectedFilteredIssues+=i.expectedFilteredIssues,t.expectedFilteredObserved+=i.expectedFilteredObserved,t.expectedFilteredLeaked+=i.expectedFilteredLeaked,t.expectedFilteredAbsent+=i.expectedFilteredAbsent}return t.precision=En(t.truePositives,t.truePositives+t.falsePositives,1),t.recall=En(t.truePositives,t.expectedIssues,1),t.f1=t.precision+t.recall===0?0:2*t.precision*t.recall/(t.precision+t.recall),t.rawDuplicateRate=En(t.rawDuplicateCount,t.rawIssues,0),t.finalDuplicateRate=En(t.finalDuplicateCount,t.finalIssues,0),t.validationRetentionRate=t.validationInputCount===0?null:t.validationKeptCount/t.validationInputCount,t.reviewCoverageRate=En(t.reviewCoveredFiles,t.reviewTotalFiles,1),t}function xw(e,t,s){if(!t)return[];let i=[];return t.minPrecision!==void 0&&e.precision<t.minPrecision&&i.push(`${s}: precision ${e.precision.toFixed(3)} < ${t.minPrecision}`),t.minRecall!==void 0&&e.recall<t.minRecall&&i.push(`${s}: recall ${e.recall.toFixed(3)} < ${t.minRecall}`),t.maxDuplicateRate!==void 0&&e.rawDuplicateRate>t.maxDuplicateRate&&i.push(`${s}: duplicateRate ${e.rawDuplicateRate.toFixed(3)} > ${t.maxDuplicateRate}`),i}async function r$(e){let t=await Mi(e.config,{executorOverride:e.executor,modelOverride:e.model});if(!t.ok)throw new Error(t.message||"\u6267\u884C\u5668\u914D\u7F6E\u6821\u9A8C\u5931\u8D25");let[s,i]=await Promise.all([Ni(),We({projectPath:e.projectPath,executorOverride:e.executor,modelOverride:e.model})]),r=Va().filter(n=>t$.has(n.id));return async n=>new Hi(i,s,r).execute(n.diffs,{quiet:!0,concurrency:e.config.concurrency,skipValidation:!1,stream:!1,ruleFilter:e.ruleFilter,agentFilter:e.agentFilter,minConfidence:e.confidence,modelOverride:e.model,config:e.config,repositoryPath:e.projectPath,commitMessages:n.commitMessages??[],supplementalContextFiles:n.supplementalContextFiles})}async function n$(e,t){if(e)return t();let s=process.env.BEST_REVIEW_CACHE;process.env.BEST_REVIEW_CACHE="false";try{return await t()}finally{s===void 0?delete process.env.BEST_REVIEW_CACHE:process.env.BEST_REVIEW_CACHE=s}}async function Sw(e){let t=e.fixtures??(e.fixturePath?await Dw(e.fixturePath):[]);if(t.length===0)throw new Error("\u6CA1\u6709\u627E\u5230\u8BC4\u6D4B fixture");let s=await le(e.projectPath),i=e.versions??await Cw(e.projectPath),r=e.executeFixture??await r$({projectPath:e.projectPath,executor:e.executor,model:e.model,agentFilter:e.agentFilter,ruleFilter:e.ruleFilter,confidence:e.confidence,config:s});return n$(e.useCache,async()=>{let n=[],o=[];for(let u of t){let l=await r(u),c=Ew(u,l);n.push(c),o.push(...xw(c.metrics,u.thresholds,u.name)),c.pipelineSuccess||o.push(`${u.name}: pipeline failed`)}let a=i$(n);return o.push(...xw(a,e.thresholds,"summary")),{schemaVersion:1,generatedAt:new Date().toISOString(),projectPath:e.projectPath,passed:o.length===0,thresholdFailures:o,summary:{fixtures:t.length,metrics:a},fixtureResults:n,versions:i}})}M();var o$="evals/golden";function Gt(e){return e===null?"n/a":`${(e*100).toFixed(1)}%`}function Aw(e){return e.length===0?"none":e.map(t=>`${t.name}@${t.version}`).join(", ")}function Rw(e){if(Array.isArray(e))return e.length>0?e:void 0;let t=e?.split(",").map(s=>s.trim()).filter(Boolean);return t&&t.length>0?t:void 0}function Kf(e,t){if(e===void 0||e==="")return;let s=typeof e=="number"?e:Number(e);if(!Number.isFinite(s)||s<0||s>1)throw new Error(`${t} \u5FC5\u987B\u5728 0-1 \u4E4B\u95F4`);return s}function a$(e){if(e===void 0||e==="")return;let t=typeof e=="number"?e:Number(e);if(!Number.isInteger(t)||t<0||t>100)throw new Error("confidence \u5FC5\u987B\u662F 0-100 \u4E4B\u95F4\u7684\u6574\u6570");return t}async function u$(e,t){let s=t||(0,Iw.join)(e,o$);return await(0,kw.access)(s),s}function l$(e){let t={minPrecision:Kf(e.minPrecision,"minPrecision"),minRecall:Kf(e.minRecall,"minRecall"),maxDuplicateRate:Kf(e.maxDuplicateRate,"maxDuplicateRate")};return Object.values(t).some(s=>s!==void 0)?t:void 0}function c$(e){let t=e.summary.metrics,s=["\u5BA1\u67E5\u8D28\u91CF\u8BC4\u6D4B",`status: ${e.passed?"pass":"fail"}`,`fixtures: ${e.summary.fixtures}`,`precision: ${Gt(t.precision)}`,`recall: ${Gt(t.recall)}`,`f1: ${Gt(t.f1)}`,`falsePositives: ${t.falsePositives}`,`falseNegatives: ${t.falseNegatives}`,`severityMismatches: ${t.severityMismatches}`,`duplicateRate: ${Gt(t.rawDuplicateRate)}`,`reviewCoverage: ${Gt(t.reviewCoverageRate)}`,`validationRetention: ${Gt(t.validationRetentionRate)}`,`expectedFiltered: observed ${t.expectedFilteredObserved}, leaked ${t.expectedFilteredLeaked}, absent ${t.expectedFilteredAbsent}`,"",`promptVersions: ${Aw(e.versions.prompts)}`,`ruleVersions: ${Aw(e.versions.rules)}`];if(e.thresholdFailures.length>0){s.push("","thresholdFailures:");for(let i of e.thresholdFailures)s.push(` - ${i}`)}s.push("","fixtures:");for(let i of e.fixtureResults)s.push(` - ${i.fixtureName}: precision ${Gt(i.metrics.precision)}, recall ${Gt(i.metrics.recall)}, FP ${i.metrics.falsePositives}, FN ${i.metrics.falseNegatives}, duplicateRate ${Gt(i.metrics.rawDuplicateRate)}`);return s.join(`
|
|
419
|
+
`)}async function _w(e={}){let t=process.cwd(),s=await u$(t,e.fixturePath),i=l$(e),r={projectPath:t,fixturePath:s,executor:e.executor,model:e.model,agentFilter:Rw(e.agent),ruleFilter:Rw(e.rule),confidence:a$(e.confidence),useCache:e.useCache,thresholds:i},n=await Sw(r);return e.json?console.log(JSON.stringify(n,null,2)):h.plain(c$(n)),n.passed||(process.exitCode=1),n}var $w={meta:{name:"eval",description:`\u8FD0\u884C\u5BA1\u67E5\u8D28\u91CF\u8BC4\u6D4B golden fixtures\uFF08\u5B9E\u65F6\u8C03\u7528\u6A21\u578B\uFF09
|
|
420
420
|
|
|
421
421
|
Examples:
|
|
422
422
|
best-review eval
|
|
423
423
|
best-review eval evals/golden --json
|
|
424
|
-
best-review eval --model gpt-
|
|
424
|
+
best-review eval --model gpt-5.4-mini --min-recall 0.9 --min-precision 0.75 --max-duplicate-rate 0.25`},args:{path:{type:"positional",required:!1,description:"fixture \u6587\u4EF6\u6216\u76EE\u5F55\uFF08\u9ED8\u8BA4 evals/golden\uFF09"},json:{type:"boolean",description:"\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u8BC4\u6D4B\u62A5\u544A"},executor:{type:"string",description:"\u8986\u76D6\u6267\u884C\u5668\uFF08openai-compatible-api \u6216 deepseek-api\uFF09"},model:{type:"string",description:"\u8986\u76D6\u6A21\u578B"},agent:{type:"string",description:"\u53EA\u8FD0\u884C\u6307\u5B9A Agent\uFF08\u9017\u53F7\u5206\u9694\uFF09"},rule:{type:"string",description:"\u53EA\u8FD0\u884C\u6307\u5B9A\u89C4\u5219\uFF08\u9017\u53F7\u5206\u9694\uFF09"},confidence:{type:"string",description:"\u6700\u5C0F\u7F6E\u4FE1\u5EA6\u9608\u503C 0-100"},"use-cache":{type:"boolean",description:"\u5141\u8BB8\u4F7F\u7528 review/validation \u7F13\u5B58\uFF08\u9ED8\u8BA4\u7981\u7528\uFF0C\u786E\u4FDD\u5B9E\u65F6\u8DD1\u6A21\u578B\uFF09"},"min-precision":{type:"string",description:"\u805A\u5408 precision \u95E8\u7981\u9608\u503C\uFF0C0-1"},"min-recall":{type:"string",description:"\u805A\u5408 recall \u95E8\u7981\u9608\u503C\uFF0C0-1"},"max-duplicate-rate":{type:"string",description:"\u805A\u5408\u539F\u59CB\u91CD\u590D\u7387\u4E0A\u9650\uFF0C0-1"}},run:async({args:e})=>{try{await _w({fixturePath:e.path,json:e.json,executor:e.executor,model:e.model,agent:e.agent,rule:e.rule,confidence:e.confidence,useCache:e["use-cache"],minPrecision:e["min-precision"],minRecall:e["min-recall"],maxDuplicateRate:e["max-duplicate-rate"]})}catch(t){let s=t instanceof Error?t.message:String(t);e.json?console.error(JSON.stringify({error:s})):console.error(s),process.exit(1)}}};Ge();M();Pc();ta();Mc();Vc();na();async function Tw(e={}){let t=e.projectPath||process.cwd(),s;if(e.url?s=[e.url]:s=(await le(t)).extends,s.length===0){h.info("\u6CA1\u6709\u914D\u7F6E extends\u3002\u53EF\u4EE5\u5728 ~/.best-review/config.json \u4E2D\u6DFB\u52A0\uFF1A"),h.info(' { "extends": ["https://github.com/owner/repo"] }'),h.info("\u4E5F\u53EF\u4EE5\u76F4\u63A5\u5B89\u88C5\uFF1Abest-review extends install https://github.com/owner/repo");return}h.info(`\u6B63\u5728\u5B89\u88C5 ${s.length} \u4E2A\u6269\u5C55...`),h.info("");let i=qt(4),r=s.map(l=>i(async()=>{let c=Xo(l);if(!c)return h.error(`Git URL \u65E0\u6548\uFF1A${l}`),h.info(" \u671F\u671B\u683C\u5F0F\uFF1Ahttps://github.com/owner/repo \u6216 git@host:owner/repo"),h.info(" \u53EF\u9009 ref\uFF1Ahttps://github.com/owner/repo#v1.0"),{status:"error",displayRef:l};let f=Qo(c),d=c.ref?`${f}#${c.ref}`:f;if(!e.force&&await sa(l))return h.info(` ${d} - \u5DF2\u5B89\u88C5`),{status:"skipped",displayRef:d};try{h.info(` ${d} - \u6B63\u5728 clone...`);let p=Oc(c,l),m=await jc(p),g=await qc(p.localPath);return await Lc(l,{url:c.url,ref:c.ref,resolvedRef:m,downloadedAt:new Date().toISOString(),path:p.localPath,agents:g.agents,rules:g.rules}),h.success(` ${d} - \u5DF2\u5B89\u88C5\uFF08${g.agents.length} \u4E2A Agent\uFF0C${g.rules.length} \u6761\u89C4\u5219\uFF09`),{status:"success",displayRef:d}}catch(p){let m=p instanceof Error?p.message:String(p);return h.error(` ${d} - \u5931\u8D25\uFF1A${m}`),{status:"error",displayRef:d,message:m}}})),n=await Promise.all(r),o=n.filter(l=>l.status==="success").length,a=n.filter(l=>l.status==="skipped").length,u=n.filter(l=>l.status==="error").length;e.url&&o>0&&(await LD(e.url,!!e.global,t),h.success("\u5DF2\u6DFB\u52A0\u5230\u7528\u6237\u7EA7\u914D\u7F6E")),h.info(""),h.info(`\u5B8C\u6210\uFF1A${o} \u4E2A\u5DF2\u5B89\u88C5\uFF0C${a} \u4E2A\u5DF2\u8DF3\u8FC7\uFF0C${u} \u4E2A\u5931\u8D25`)}async function Pw(){let e=await Bt(),t=Object.entries(e.packages);if(t.length===0){h.info("\u5C1A\u672A\u5B89\u88C5 extends\u3002"),h.info("\u8FD0\u884C `best-review extends install` \u53EF\u6309\u914D\u7F6E\u5B89\u88C5\u3002");return}h.info(`\u5DF2\u5B89\u88C5 extends\uFF08${t.length}\uFF09\uFF1A`),h.info("");for(let[s,i]of t){let r=i.agents.length,n=i.rules.length,o=i.resolvedRef.slice(0,7);h.info(` ${s}`),h.info(` Commit\uFF1A${o}`),h.info(` Agent\uFF1A${r>0?i.agents.join(", "):"\uFF08\u65E0\uFF09"}`),h.info(` \u89C4\u5219\uFF1A${n>0?i.rules.join(", "):"\uFF08\u65E0\uFF09"}`),h.info(` \u4E0B\u8F7D\u65F6\u95F4\uFF1A${i.downloadedAt}`),h.info("")}}async function Bw(e){let t=Xo(e);if(!t){h.error(`Git URL \u65E0\u6548\uFF1A${e}`);return}if(!await sa(e)){h.error(`\u6269\u5C55\u5C1A\u672A\u5B89\u88C5\uFF1A${e}`);return}let i=(await Bt()).packages[e];if(i){await Uc(i.path),await Nc(e);let r=Qo(t);h.success(`\u5DF2\u79FB\u9664\uFF1A${r}`)}}var Ow={meta:{name:"extends",description:`\u7BA1\u7406 extends\uFF08\u4ECE Git \u52A0\u8F7D\u5916\u90E8 Agent \u548C\u89C4\u5219\uFF09
|
|
425
425
|
|
|
426
426
|
Examples:
|
|
427
427
|
best-review extends install # \u6309\u914D\u7F6E\u5B89\u88C5
|
|
428
428
|
best-review extends install https://github.com/org/repo # \u5B89\u88C5\u6307\u5B9A URL
|
|
429
429
|
best-review extends install --force # \u5F3A\u5236\u91CD\u65B0 clone
|
|
430
430
|
best-review extends list # \u5217\u51FA\u5DF2\u5B89\u88C5\u9879
|
|
431
|
-
best-review extends remove https://github.com/org/repo # \u79FB\u9664`},subCommands:{install:{meta:{description:"\u4ECE\u914D\u7F6E\u6216\u6307\u5B9A URL \u5B89\u88C5 extends"},args:{url:{type:"positional",description:"\u8981\u5B89\u88C5\u7684 Git URL\uFF08\u53EF\u9009\uFF1B\u672A\u63D0\u4F9B\u65F6\u8BFB\u53D6\u914D\u7F6E\uFF09",required:!1},force:{type:"boolean",description:"\u5373\u4F7F\u5DF2\u5B89\u88C5\u4E5F\u5F3A\u5236\u91CD\u65B0\u4E0B\u8F7D",alias:"f"},global:{type:"boolean",description:"\u517C\u5BB9\u65E7\u53C2\u6570\uFF1Bextends \u73B0\u5728\u59CB\u7EC8\u5199\u5165 ~/.best-review/config.json",alias:"g"}},run:async({args:e})=>{await Tw({force:e.force,url:e.url,global:e.global})}},list:{meta:{description:"\u5217\u51FA\u5DF2\u5B89\u88C5\u7684 extends"},run:async()=>{await Pw()}},remove:{meta:{description:"\u79FB\u9664\u5DF2\u5B89\u88C5\u7684 extend"},args:{ref:{type:"positional",description:"Git URL\uFF08\u4F8B\u5982 https://github.com/owner/repo\uFF09",required:!0}},run:async({args:e})=>{if(!e.ref)throw new Error("\u5FC5\u987B\u63D0\u4F9B extend \u5F15\u7528");await Bw(e.ref)}}}};var Zi=require("node:process"),Nw=require("node:readline/promises");Ge();je();M();function Lw(e){let t=e?.trim().toLowerCase();if(t){if(["openai","openai-compatible",xe].includes(t))return"openai";if(["deepseek",be].includes(t))return"deepseek"}}function
|
|
431
|
+
best-review extends remove https://github.com/org/repo # \u79FB\u9664`},subCommands:{install:{meta:{description:"\u4ECE\u914D\u7F6E\u6216\u6307\u5B9A URL \u5B89\u88C5 extends"},args:{url:{type:"positional",description:"\u8981\u5B89\u88C5\u7684 Git URL\uFF08\u53EF\u9009\uFF1B\u672A\u63D0\u4F9B\u65F6\u8BFB\u53D6\u914D\u7F6E\uFF09",required:!1},force:{type:"boolean",description:"\u5373\u4F7F\u5DF2\u5B89\u88C5\u4E5F\u5F3A\u5236\u91CD\u65B0\u4E0B\u8F7D",alias:"f"},global:{type:"boolean",description:"\u517C\u5BB9\u65E7\u53C2\u6570\uFF1Bextends \u73B0\u5728\u59CB\u7EC8\u5199\u5165 ~/.best-review/config.json",alias:"g"}},run:async({args:e})=>{await Tw({force:e.force,url:e.url,global:e.global})}},list:{meta:{description:"\u5217\u51FA\u5DF2\u5B89\u88C5\u7684 extends"},run:async()=>{await Pw()}},remove:{meta:{description:"\u79FB\u9664\u5DF2\u5B89\u88C5\u7684 extend"},args:{ref:{type:"positional",description:"Git URL\uFF08\u4F8B\u5982 https://github.com/owner/repo\uFF09",required:!0}},run:async({args:e})=>{if(!e.ref)throw new Error("\u5FC5\u987B\u63D0\u4F9B extend \u5F15\u7528");await Bw(e.ref)}}}};var Zi=require("node:process"),Nw=require("node:readline/promises");Ge();je();M();function Lw(e){let t=e?.trim().toLowerCase();if(t){if(["openai","openai-compatible",xe].includes(t))return"openai";if(["deepseek",be].includes(t))return"deepseek"}}function f$(e){return e==="openai"?xe:be}async function Wa(e,t){let s=(0,Nw.createInterface)({input:Zi.stdin,output:Zi.stdout});try{let i=t?` (${t})`:"";return(await s.question(`${e}${i}: `)).trim()||t||""}finally{s.close()}}function d$(e,t){return{...e,executor:t,executors:{...e.executors,[xe]:{...e.executors[xe],review:{concurrency:2,...e.executors[xe]?.review},validation:{timeout:gs,batchSize:10,concurrency:1,...e.executors[xe]?.validation}},[be]:{...e.executors[be],review:{concurrency:2,...e.executors[be]?.review},validation:{timeout:gs,batchSize:10,concurrency:1,...e.executors[be]?.validation}}}}}async function Mw(e={}){let t=e.projectPath||process.cwd(),s=e.interactive!==!1&&Zi.stdin.isTTY&&Zi.stdout.isTTY,i=Lw(e.provider);if(e.provider&&!i){h.error("\u4E0D\u652F\u6301\u7684\u6A21\u578B\u670D\u52A1\u3002\u8BF7\u4F7F\u7528 openai \u6216 deepseek\u3002"),process.exitCode=1;return}if(!i&&s)for(;!i;)i=Lw(await Wa("\u9009\u62E9\u6A21\u578B\u670D\u52A1\uFF1Aopenai \u6216 deepseek","deepseek")),i||h.warn("\u8BF7\u8F93\u5165 openai \u6216 deepseek\u3002");i??="deepseek";let r=kD(i),n=e.baseUrl||(s?await Wa("BASE_URL",r.baseUrl):r.baseUrl),o=e.apiKey||process.env.API_KEY||"";s&&(o=await Wa("API_KEY",o));let a=e.model||(s?await Wa("MODEL",r.model):r.model);if(!o){h.error("\u7F3A\u5C11 API_KEY\u3002\u8BF7\u91CD\u65B0\u8FD0\u884C best-review init \u5E76\u586B\u5199 API Key\u3002"),process.exitCode=1;return}let u=f$(i),l=e.force?ln():await le(),c=d$(l,u);c.llm={platform:i,baseUrl:n,apiKey:o,model:a},await wa(c);let f=cn(),d={configPath:f,platform:i,executor:u,baseUrl:n,model:a,apiKeySet:!!o};return h.success("\u9879\u76EE\u521D\u59CB\u5316\u5B8C\u6210"),h.plain(`\u914D\u7F6E\uFF1A${f}`),h.plain(`\u5E73\u53F0\uFF1A${i}`),h.plain(`Base URL\uFF1A${n}`),h.plain(`\u6A21\u578B\uFF1A${a}`),h.plain(`API Key\uFF1A${d.apiKeySet?"\u5DF2\u5199\u5165\u7528\u6237\u7EA7 config.json":"\u672A\u8BBE\u7F6E"}`),e.runDoctor!==!1&&await ji({projectPath:t}),d}var jw={meta:{name:"init",description:"\u521D\u59CB\u5316\u7528\u6237\u7EA7 best-review \u914D\u7F6E\u548C\u6A21\u578B\u670D\u52A1"},args:{force:{type:"boolean",description:"\u7528\u9ED8\u8BA4\u503C\u91CD\u5EFA\u7528\u6237\u7EA7 ~/.best-review/config.json",alias:"f"},provider:{type:"string",description:"\u6A21\u578B\u670D\u52A1\uFF1Aopenai \u6216 deepseek"},"base-url":{type:"string",description:"\u6A21\u578B\u670D\u52A1 Base URL"},"api-key":{type:"string",description:"\u6A21\u578B\u670D\u52A1 API Key\uFF0C\u4F1A\u5199\u5165\u7528\u6237\u7EA7 config.json"},model:{type:"string",description:"\u6A21\u578B\u540D\u79F0\uFF0C\u4F8B\u5982 gpt-5.4-mini \u6216 deepseek-v4-flash"},"no-interactive":{type:"boolean",description:"\u7981\u7528\u4EA4\u4E92\u5F0F\u63D0\u95EE"},"skip-doctor":{type:"boolean",description:"\u521D\u59CB\u5316\u540E\u4E0D\u6267\u884C\u8054\u901A\u68C0\u67E5"}},run:async({args:e})=>{await Mw({force:e.force,provider:e.provider,baseUrl:e["base-url"],apiKey:e["api-key"],model:e.model,interactive:!e["no-interactive"],runDoctor:!e["skip-doctor"]})}};ws();M();function h$(e){switch(e){case"defaults":return"\u25C6";case"extends":return"\u25C9";case"user":return"\u25C7";case"project":return"\u25CF";default:return"?"}}async function qw(){let e=await At();if(e.length===0){h.warn("\u6CA1\u6709\u914D\u7F6E\u89C4\u5219");return}h.robot("\u89C4\u5219"),h.newline();for(let t of e){let s=h$(t.source),i=rr(t.path);h.plain(`${s} ${t.name}`),h.plain(` Agent\uFF1A${t.agent}`),h.plain(` \u6A21\u5F0F\uFF1A${t.patterns.join(", ")}`),h.plain(` \u8DEF\u5F84\uFF1A${i}`),h.newline()}h.plain("\u25C6 \u5185\u7F6E \u25C9 extends \u25C7 \u7528\u6237 \u25CF \u9879\u76EE")}async function Uw(e){let{loadRuleFromRef:t}=await Promise.resolve().then(()=>(ws(),hy)),i=(await At()).find(n=>n.name===e);i||(h.error(`\u89C4\u5219\u4E0D\u5B58\u5728\uFF1A${e}`),process.exit(1));let r=await t(i);r||(h.error(`\u52A0\u8F7D\u89C4\u5219\u5185\u5BB9\u5931\u8D25\uFF1A${i.path}`),process.exit(1)),h.robot(`\u89C4\u5219\uFF1A${r.name}`),h.newline(),h.plain(`\u6765\u6E90\uFF1A${i.source}`),h.plain(`\u8DEF\u5F84\uFF1A${i.path}`),h.plain(`\u8BF4\u660E\uFF1A${r.description}`),h.plain(`\u6A21\u5F0F\uFF1A${r.patterns.join(", ")}`),h.plain(`Agent\uFF1A${r.agent}`),r.prompt&&(h.newline(),h.plain("Prompt\uFF1A"),h.separator("\u2500"),h.plain(r.prompt),h.separator("\u2500"))}async function Vw(e,t){let i=(await At()).find(o=>o.name===e);i||(h.error(`\u89C4\u5219\u4E0D\u5B58\u5728\uFF1A${e}`),process.exit(1)),h.robot(`\u6D4B\u8BD5\u89C4\u5219\uFF1A${i.name}`),h.plain(`\u6A21\u5F0F\uFF1A${i.patterns.join(", ")}`),h.newline();let r=[],n=[];for(let o of t)i.patterns.some(u=>ys(o,u))?r.push(o):n.push(o);h.success(`\u547D\u4E2D ${r.length} \u4E2A\u6587\u4EF6\uFF1A`);for(let o of r)h.plain(` \u25CF ${o}`);if(n.length>0){h.newline(),h.plain(`\u672A\u547D\u4E2D ${n.length} \u4E2A\u6587\u4EF6\uFF1A`);for(let o of n)h.plain(` \u25CB ${o}`)}}var Gw={meta:{name:"rules",description:`\u5217\u51FA\u89C4\u5219\uFF0C\u6216\u67E5\u770B\u67D0\u6761\u89C4\u5219\u7684\u8BE6\u60C5
|
|
432
432
|
|
|
433
433
|
Examples:
|
|
434
434
|
best-review rules # \u5217\u51FA\u6240\u6709\u89C4\u5219
|
|
435
435
|
best-review rules code-security # \u67E5\u770B\u89C4\u5219\u8BE6\u60C5
|
|
436
|
-
best-review rules test code-security src/*.ts # \u6D4B\u8BD5\u89C4\u5219\u5339\u914D`},args:{name:{type:"positional",description:'\u89C4\u5219\u540D\u79F0\uFF0C\u6216 "test" \u5B50\u547D\u4EE4',required:!1},rest:{type:"positional",description:"test \u7528\u6CD5\uFF1A<rule-name> <files...>",required:!1}},run:async({args:e})=>{if(e.name==="test"){let t=e._||[],s=t[0],i=t.slice(1);(!s||i.length===0)&&(console.error("\u7528\u6CD5\uFF1Abest-review rules test <rule-name> <files...>"),process.exit(1)),await Vw(s,i)}else e.name?await Uw(e.name):await qw()}};var kt=require("node:fs/promises"),Ww=require("node:os"),Xi=require("node:path"),Kw=require("node:child_process"),zw=require("node:util");M();var
|
|
436
|
+
best-review rules test code-security src/*.ts # \u6D4B\u8BD5\u89C4\u5219\u5339\u914D`},args:{name:{type:"positional",description:'\u89C4\u5219\u540D\u79F0\uFF0C\u6216 "test" \u5B50\u547D\u4EE4',required:!1},rest:{type:"positional",description:"test \u7528\u6CD5\uFF1A<rule-name> <files...>",required:!1}},run:async({args:e})=>{if(e.name==="test"){let t=e._||[],s=t[0],i=t.slice(1);(!s||i.length===0)&&(console.error("\u7528\u6CD5\uFF1Abest-review rules test <rule-name> <files...>"),process.exit(1)),await Vw(s,i)}else e.name?await Uw(e.name):await qw()}};var kt=require("node:fs/promises"),Ww=require("node:os"),Xi=require("node:path"),Kw=require("node:child_process"),zw=require("node:util");M();var p$=(0,zw.promisify)(Kw.execFile),m$="best-review.md",g$="best-review-create-rule.md";async function Hw(e){try{return await p$(e,["--version"]),!0}catch{return!1}}var D$=`---
|
|
437
437
|
description: \u4F7F\u7528 best-review \u8FD0\u884C AI \u4EE3\u7801\u5BA1\u67E5
|
|
438
438
|
---
|
|
439
439
|
|
|
@@ -498,7 +498,7 @@ best-review review $ARGUMENTS
|
|
|
498
498
|
3. \u5173\u952E\u5EFA\u8BAE
|
|
499
499
|
|
|
500
500
|
\u5982\u679C\u53D1\u73B0\u95EE\u9898\uFF0C\u4E3B\u52A8\u63D0\u51FA\u53EF\u4EE5\u7EE7\u7EED\u5E2E\u52A9\u4FEE\u590D\u3002
|
|
501
|
-
`,
|
|
501
|
+
`,y$=`---
|
|
502
502
|
description: \u4EA4\u4E92\u5F0F\u521B\u5EFA\u65B0\u7684 best-review \u89C4\u5219
|
|
503
503
|
---
|
|
504
504
|
|
|
@@ -624,7 +624,7 @@ AI: \u5DF2\u521B\u5EFA .best-review/rules/zod-validation.md
|
|
|
624
624
|
|
|
625
625
|
\u53EF\u4EE5\u8FD9\u6837\u6D4B\u8BD5\uFF1Abest-review review --rule zod-validation
|
|
626
626
|
\`\`\`
|
|
627
|
-
`,Ka=[{filename:
|
|
627
|
+
`,Ka=[{filename:m$,template:D$,commandName:"/best-review"},{filename:g$,template:y$,commandName:"/best-review-create-rule"}];function zf(){let e=(0,Ww.homedir)();return[{name:"Claude Code",path:(0,Xi.join)(e,".claude","commands"),cliCommand:"claude",installUrl:"https://claude.ai/code"},{name:"Cursor Agent",path:(0,Xi.join)(e,".cursor","commands"),cliCommand:"cursor-agent",installUrl:"https://cursor.com"}]}async function za(e){try{return await(0,kt.access)(e),!0}catch{return!1}}async function Jw(e={}){let t=zf(),i=(await Promise.all(t.map(async n=>({target:n,available:await Hw(n.cliCommand)})))).filter(n=>n.available).map(n=>n.target);if(i.length===0){h.error("\u6CA1\u6709\u627E\u5230\u53D7\u652F\u6301\u7684 CLI \u5DE5\u5177"),h.newline(),h.plain("best-review \u547D\u4EE4\u9700\u8981\u4EE5\u4E0B CLI \u5DE5\u5177\u4E4B\u4E00\uFF1A"),h.newline();for(let n of t)h.plain(` ${n.name} (${n.cliCommand})`),h.plain(` \u5B89\u88C5\uFF1A${n.installUrl}`);h.newline(),h.plain("\u5B89\u88C5\u540E\u8FD0\u884C\uFF1Abest-review setup-command");return}let r=0;for(let n of i){if(h.plain(`
|
|
628
628
|
${n.name}:`),!await za(n.path))try{await(0,kt.mkdir)(n.path,{recursive:!0})}catch(o){h.error(` \u521B\u5EFA\u76EE\u5F55\u5931\u8D25\uFF1A${o.message}`);continue}for(let o of Ka){let a=(0,Xi.join)(n.path,o.filename);if(await za(a)&&!e.force)try{if(await(0,kt.readFile)(a,"utf-8")===o.template){h.info(` ${o.commandName}\uFF1A\u5DF2\u5B89\u88C5\uFF08\u6700\u65B0\uFF09`);continue}h.warn(` ${o.commandName}\uFF1A\u5DF2\u5B58\u5728\uFF0C\u4F7F\u7528 --force \u8986\u76D6`);continue}catch(u){h.error(` ${o.commandName}\uFF1A\u8BFB\u53D6\u5931\u8D25\uFF1A${u.message}`);continue}try{await(0,kt.writeFile)(a,o.template,"utf-8"),h.success(` ${o.commandName}\uFF1A\u5DF2\u5B89\u88C5`),r++}catch(u){h.error(` ${o.commandName}\uFF1A\u5B89\u88C5\u5931\u8D25\uFF1A${u.message}`)}}}if(r>0){h.newline();let n=Ka.map(o=>o.commandName).join(", ");h.success(`\u5B8C\u6210\uFF01\u53EF\u7528\u547D\u4EE4\uFF1A${n}`)}}async function Yw(){let e=zf(),t=0;for(let s of e){let i=0;for(let r of Ka){let n=(0,Xi.join)(s.path,r.filename);if(await za(n))try{await(0,kt.unlink)(n),i===0&&h.plain(`
|
|
629
629
|
${s.name}:`),h.success(` ${r.commandName}\uFF1A\u5DF2\u79FB\u9664`),t++,i++}catch(o){h.error(` ${r.commandName}\uFF1A\u79FB\u9664\u5931\u8D25\uFF1A${o.message}`)}}}t===0?h.info("\u6CA1\u6709\u627E\u5230\u5DF2\u5B89\u88C5\u7684\u547D\u4EE4"):(h.newline(),h.success(`\u5DF2\u79FB\u9664 ${t} \u4E2A\u547D\u4EE4\u6587\u4EF6`))}async function Zw(){let e=zf();h.plain(`\u5B89\u88C5\u72B6\u6001
|
|
630
630
|
`);let t=await Promise.all(e.map(async s=>{let i=await Hw(s.cliCommand),r=await Promise.all(Ka.map(async n=>{let o=(0,Xi.join)(s.path,n.filename);return{cmdFile:n,commandPath:o,exists:await za(o)}}));return{target:s,cliAvailable:i,commandStatuses:r}}));for(let{target:s,cliAvailable:i,commandStatuses:r}of t){if(h.plain(`${s.name}:`),!i){h.plain(` \u672A\u627E\u5230 CLI\uFF08${s.cliCommand}\uFF09`),h.plain(` \u5B89\u88C5\uFF1A${s.installUrl}`),h.newline();continue}for(let{cmdFile:o,exists:a}of r)a?h.success(` ${o.commandName}\uFF1A\u5DF2\u5B89\u88C5`):h.warn(` ${o.commandName}\uFF1A\u672A\u5B89\u88C5`);r.every(o=>o.exists)||h.plain(" \u8FD0\u884C\uFF1Abest-review setup-command"),h.newline()}}var Hf={meta:{name:"setup-command",description:`\u4E3A Claude Code\u3001Cursor Agent \u7B49\u5DE5\u5177\u5B89\u88C5 /best-review \u547D\u4EE4
|
|
@@ -633,7 +633,7 @@ Examples:
|
|
|
633
633
|
best-review setup-command # \u5B89\u88C5\u547D\u4EE4
|
|
634
634
|
best-review setup-command --force # \u8986\u76D6\u5DF2\u6709\u547D\u4EE4
|
|
635
635
|
best-review setup-command status # \u67E5\u770B\u5B89\u88C5\u72B6\u6001
|
|
636
|
-
best-review setup-command remove # \u4ECE\u6240\u6709\u5DE5\u5177\u79FB\u9664\u547D\u4EE4`},args:{force:{type:"boolean",description:"\u8986\u76D6\u5DF2\u6709\u5B89\u88C5",alias:"f"}},subCommands:{status:{meta:{description:"\u67E5\u770B\u5B89\u88C5\u72B6\u6001"},run:async()=>{await Zw()}},remove:{meta:{description:"\u4ECE\u6240\u6709\u5DE5\u5177\u79FB\u9664 /best-review \u547D\u4EE4"},run:async()=>{await Yw()}}},run:async({args:e,rawArgs:t})=>{let s=Object.keys(Hf.subCommands||{});t.some(r=>s.includes(r))||await Jw({force:e.force})}};Zs();M();Zs();je();var Ha=["critical","high","medium","low"];function Xw(e){if(e)return e.split(",").map(t=>t.trim())}function Qw(e){return e?e.split(",").map(s=>s.trim()).every(s=>Ha.includes(s)):!0}function eb(e){return e?e.split(",").map(t=>t.trim()).filter(t=>!Ha.includes(t)):[]}function y$(e){if(e)return Number.parseInt(e,10)}function w$(e){return e?/^\d+$/.test(e)&&Number.parseInt(e,10)>0:!0}var rt=b.string().optional().transform(e=>{if(e)return e.split(",").map(t=>t.trim())}),tb=b.string().optional().refine(e=>{if(!e)return!0;let t=parseInt(e,10);return!isNaN(t)&&!e.includes(".")},e=>({message:`\u7F6E\u4FE1\u5EA6\u65E0\u6548\uFF1A"${e}"\u3002\u5FC5\u987B\u662F 0-100 \u4E4B\u95F4\u7684\u6574\u6570\u3002`})).transform(e=>{if(e)return parseInt(e,10)}).refine(e=>e===void 0?!0:e>=0&&e<=100,e=>({message:`\u7F6E\u4FE1\u5EA6\u65E0\u6548\uFF1A${e}\u3002\u5FC5\u987B\u5728 0-100 \u4E4B\u95F4\u3002`})),sb=b.string().optional().refine(w$,e=>({message:`\u81EA\u52A8\u4FEE\u590D\u6570\u91CF\u65E0\u6548\uFF1A"${e}"\u3002\u5FC5\u987B\u662F\u5927\u4E8E 0 \u7684\u6574\u6570\u3002`})).transform(y$),ib=b.string().optional().refine(Qw,e=>({message:`\u4E25\u91CD\u7EA7\u522B\u65E0\u6548\uFF1A${eb(e).join(", ")}\u3002\u53EF\u9009\u503C\uFF1A${Ha.join(", ")}`})).transform(Xw),rb=b.string().optional().refine(Qw,e=>({message:`\u81EA\u52A8\u4FEE\u590D\u4E25\u91CD\u7EA7\u522B\u65E0\u6548\uFF1A${eb(e).join(", ")}\u3002\u53EF\u9009\u503C\uFF1A${Ha.join(", ")}`})).transform(Xw),nb=b.string().optional().refine(e=>!e||[xe,be].includes(e),{message:`\u4EC5\u652F\u6301 ${xe} \u6216 ${be}`}),b$=b.object({confidence:tb,"fix-max-issues":sb,severity:ib,"fix-severity":rb,agent:rt,"exclude-agent":rt,rule:rt,"exclude-rule":rt,files:rt,ignore:rt,base:b.string().optional(),head:b.string().optional(),branch:b.string().optional(),executor:nb,model:b.string().optional(),"fix-patch-file":b.string().optional(),"tech-doc":b.string().optional(),stream:b.boolean().optional(),verbose:b.boolean().optional(),json:b.boolean().optional(),"log-steps":b.boolean().optional(),"skip-validation":b.boolean().optional(),"fix-critical":b.boolean().optional(),"fix-dry-run":b.boolean().optional(),full:b.boolean().optional()}).refine(e=>!(e.full&&!e.files),{message:"--full \u9700\u8981\u540C\u65F6\u4F7F\u7528 --files \u6307\u5B9A\u8981\u5BA1\u67E5\u7684\u6587\u4EF6"}).refine(e=>!(e.full&&e.base),{message:"--full \u548C --base \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528\u3002--full \u7528\u4E8E\u5B8C\u6574\u6587\u4EF6\u5BA1\u67E5\uFF0C--base \u7528\u4E8E Git diff \u6BD4\u8F83\u3002"}),v$=b.object({url:b.string().url("MR \u94FE\u63A5\u65E0\u6548\u3002\u8BF7\u63D0\u4F9B\u5B8C\u6574\u7684 GitLab Merge Request URL\u3002"),confidence:tb,severity:ib,agent:rt,"exclude-agent":rt,rule:rt,"exclude-rule":rt,executor:nb,model:b.string().optional(),"tech-doc":b.string().optional(),stream:b.boolean().optional(),verbose:b.boolean().optional(),json:b.boolean().optional(),"log-steps":b.boolean().optional(),"skip-validation":b.boolean().optional(),base:b.string().optional(),head:b.string().optional(),branch:b.string().optional(),files:rt,ignore:rt,full:b.boolean().optional(),"fix-critical":b.boolean().optional(),"fix-severity":rb,"fix-dry-run":b.boolean().optional(),"fix-max-issues":sb,"fix-patch-file":b.string().optional()}).refine(e=>!e.base,{message:"--base \u4E0D\u652F\u6301\u7528\u4E8E review-mr"}).refine(e=>!e.head,{message:"--head \u4E0D\u652F\u6301\u7528\u4E8E review-mr"}).refine(e=>!e.branch,{message:"--branch \u4E0D\u652F\u6301\u7528\u4E8E review-mr"}).refine(e=>!e.files||e.files.length===0,{message:"--files \u4E0D\u652F\u6301\u7528\u4E8E review-mr"}).refine(e=>!e.full,{message:"--full \u4E0D\u652F\u6301\u7528\u4E8E review-mr"}).refine(e=>!e["fix-critical"]&&!e["fix-severity"]&&!e["fix-dry-run"]&&e["fix-max-issues"]===void 0&&!e["fix-patch-file"],{message:"--fix-* \u4E0D\u652F\u6301\u7528\u4E8E review-mr"});function ob(e){return b$.parse(e)}function ab(e){return v$.parse(e)}Ge();var ub=require("node:fs/promises"),lb=require("node:path");var Wt=require("node:path"),E$=/(?:import\s+(?:type\s+)?(?:[^'"`]*?\s+from\s*)?["'](\.{1,2}\/[^"'`]+)["'])|(?:export\s+(?:\*|\{[^}]*\})\s+from\s*["'](\.{1,2}\/[^"'`]+)["'])|(?:require\(\s*["'](\.{1,2}\/[^"'`]+)["']\s*\))|(?:import\(\s*["'](\.{1,2}\/[^"'`]+)["']\s*\))/g,F$=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"];function Fn(e){let t=[];for(let s of e.matchAll(E$)){let i=s[1]||s[2]||s[3]||s[4];i&&t.push(i)}return t}function Ja(e,t){return Wt.posix.normalize(Wt.posix.join(Wt.posix.dirname(e),t))}function C$(e){let t=Wt.posix.normalize(e);return t!==".."&&!t.startsWith("../")&&!Wt.posix.isAbsolute(t)}function Ya(e){let t=Wt.posix.normalize(e);if(!C$(t))return[];let s=new Set([t]);if(!Wt.posix.extname(t))for(let i of F$)s.add(`${t}${i}`),s.add(Wt.posix.join(t,`index${i}`));return[...s]}function Jf(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}async function A$(e,t){try{return await(0,ub.readFile)((0,lb.join)(e,t),"utf-8")}catch{return null}}async function cb(e){let{repositoryPath:t,filePath:s,headRef:i,readFileAtRef:r}=e;return i?r(i,s):A$(t,s)}async function R$(e){let t=Ja(e.fromFile,e.specifier),s=Ya(t);for(let i of s){let r=await cb({repositoryPath:e.repositoryPath,filePath:i,headRef:e.headRef,readFileAtRef:e.readFileAtRef});if(r!==null)return{file:i,content:r}}return null}async function fb(e){let t=e.readFileAtRef??vn,s=e.changedFileMaxChars??2e4,i=e.dependencyMaxChars??12e3,r=e.headRef??"worktree",n=new Set(e.diffs.map(u=>Jf(u.file))),o=[],a=new Map;for(let u of e.diffs){if(u.isDeletedFile||u.status==="deleted")continue;let l=Jf(u.newPath||u.file),c=await cb({repositoryPath:e.repositoryPath,filePath:l,headRef:e.headRef,readFileAtRef:t});if(c===null)continue;e.fullMode||o.push({file:u.file,content:vs(c,"changed-file",s),role:"changed-file",source:"local-git",ref:r,relatedFiles:[u.file]});let f=Fn(c);for(let d of f){let p=await R$({repositoryPath:e.repositoryPath,fromFile:l,specifier:d,headRef:e.headRef,readFileAtRef:t});if(!p||n.has(Jf(p.file)))continue;let m=a.get(p.file);if(m){let g=new Set([...m.relatedFiles||[],u.file]);m.relatedFiles=[...g];continue}a.set(p.file,{file:p.file,content:vs(p.content,"dependency",i),role:"dependency",source:"local-git",ref:r,relatedFiles:[u.file]})}}return[...o,...a.values()]}var Cn=require("node:path");ws();var k$=new Set([".js",".jsx",".mjs",".cjs",".ts",".tsx",".mts",".cts",".py",".java",".kt",".kts",".go",".rs",".rb",".php",".swift",".scala",".cs",".c",".cc",".cpp",".cxx",".h",".hh",".hpp",".m",".mm",".sh",".bash",".zsh",".fish",".ps1",".sql",".vue",".svelte"]),I$=new Set([".json",".jsonc",".yaml",".yml",".toml",".ini",".cfg",".conf",".properties",".tf",".tfvars",".hcl",".xml"]),_$=new Set(["dockerfile","makefile","gnumakefile","justfile","procfile","jenkinsfile",".gitignore",".gitattributes",".editorconfig",".npmrc",".nvmrc",".yarnrc",".yarnrc.yml",".prettierignore",".prettierrc",".prettierrc.json",".prettierrc.yml",".prettierrc.yaml",".prettierrc.js",".prettierrc.cjs",".prettierrc.mjs",".prettierrc.toml",".eslintrc",".eslintrc.json",".eslintrc.yml",".eslintrc.yaml",".eslintrc.js",".eslintrc.cjs",".babelrc",".babelrc.json",".tool-versions"]),$$=[".env","dockerfile.",".env."];function Yf(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}function T$(e){let t=Yf(e),s=(0,Cn.basename)(t).toLowerCase(),i=(0,Cn.extname)(s);return k$.has(i)||I$.has(i)||_$.has(s)?!0:$$.some(r=>s===r||s.startsWith(r))}function P$(e,t){let s=Yf(e),i=Yf(t.trim()),r=i.startsWith("/"),n=i.replace(/^\.\//,"").replace(/^\/+/,"").replace(/\/+$/,"");if(!n)return!1;let o=O$(n,r);return o.some(a=>ys(s,a))?!0:o.some(a=>s===a||s.startsWith(`${a}/`))}function B$(e){return/[*?[\]{}]/.test(e)}function db(e){return(0,Cn.basename)(e).includes(".")}function O$(e,t){let s=new Set([e]),i=B$(e);return db(e)||s.add(`${e}/**`),t||(s.add(`**/${e}`),(!db(e)||!i)&&s.add(`**/${e}/**`)),Array.from(s)}function L$(e){return e.flatMap(t=>t.split(",")).map(t=>t.trim()).filter(Boolean)}function hb(e,t=[]){let s=[],i=[],r=[],n=L$(t);for(let o of e){if(!T$(o.file)){i.push(o);continue}if(n.some(a=>P$(o.file,a))){r.push(o);continue}s.push(o)}return{included:s,skippedNonReviewable:i,skippedIgnored:r}}var pb=require("node:fs/promises"),Za=require("node:path"),mb="https://open.feishu.cn";function gb(e){try{return new URL(e)}catch{return null}}function Db(e){return e.endsWith("feishu.cn")||e.endsWith("larksuite.com")}function N$(e){let t=gb(e);if(!t||!Db(t.hostname))throw new Error("\u4EC5\u652F\u6301\u98DE\u4E66\u65B0\u7248 docx \u94FE\u63A5\u6216\u672C\u5730 Markdown/\u6587\u672C\u6587\u4EF6");let s=t.pathname.match(/\/docx\/([^/?#]+)/);if(!s?.[1])throw new Error("\u4EC5\u652F\u6301\u98DE\u4E66\u65B0\u7248 docx \u94FE\u63A5\uFF08\u5F62\u5982 https://docs.feishu.cn/docx/<document_id>\uFF09");return decodeURIComponent(s[1])}async function yb(e,t){let s=await e.text(),i;try{i=JSON.parse(s)}catch(r){throw new Error(`${t} \u8FD4\u56DE\u4E86\u4E0D\u53EF\u89E3\u6790 JSON\uFF1A${s.slice(0,300)}`,{cause:r})}if(!e.ok)throw new Error(`${t} \u8BF7\u6C42\u5931\u8D25\uFF08${e.status}\uFF09\uFF1A${s.slice(0,300)}`);return i}async function M$(){let e=process.env.FEISHU_APP_ID,t=process.env.FEISHU_APP_SECRET;if(!e||!t)throw new Error("\u8BFB\u53D6\u98DE\u4E66\u6280\u672F\u6587\u6863\u9700\u8981\u8BBE\u7F6E FEISHU_APP_ID \u548C FEISHU_APP_SECRET\uFF1B\u4E5F\u53EF\u4EE5\u628A\u98DE\u4E66\u6587\u6863\u5BFC\u51FA/\u590D\u5236\u4E3A\u672C\u5730 Markdown \u540E\u4F7F\u7528 --tech-doc <path>\u3002");let s=await fetch(`${mb}/open-apis/auth/v3/tenant_access_token/internal`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({app_id:e,app_secret:t})}),i=await yb(s,"\u98DE\u4E66 tenant_access_token");if(i.code!==0||!i.tenant_access_token)throw new Error(`\u83B7\u53D6\u98DE\u4E66 tenant_access_token \u5931\u8D25\uFF1A${i.msg||`code=${i.code}`}`);return i.tenant_access_token}async function j$(e){let t=N$(e),s=await M$(),i=await fetch(`${mb}/open-apis/docx/v1/documents/${encodeURIComponent(t)}/raw_content`,{method:"GET",headers:{Authorization:`Bearer ${s}`}}),r=await yb(i,"\u98DE\u4E66\u6587\u6863\u7EAF\u6587\u672C");if(r.code!==0)throw new Error(`\u8BFB\u53D6\u98DE\u4E66\u6587\u6863\u7EAF\u6587\u672C\u5931\u8D25\uFF1A${r.msg||`code=${r.code}`}`);let n=r.data?.content??r.data?.raw_content??"";if(!n.trim())throw new Error("\u98DE\u4E66\u6587\u6863\u7EAF\u6587\u672C\u4E3A\u7A7A\uFF0C\u65E0\u6CD5\u6267\u884C\u6280\u672F\u6587\u6863\u5BF9\u7167 review\u3002");return{source:e,type:"feishu-docx",title:t,rawContent:n}}async function wb(e,t=process.cwd()){let s=gb(e);if(s){if(Db(s.hostname))return j$(e);throw new Error("\u4EC5\u652F\u6301\u98DE\u4E66\u65B0\u7248 docx \u94FE\u63A5\u6216\u672C\u5730 Markdown/\u6587\u672C\u6587\u4EF6\u3002")}let i=(0,Za.resolve)(t,e),r=await(0,pb.readFile)(i,"utf-8");if(!r.trim())throw new Error(`\u6280\u672F\u6587\u6863\u4E3A\u7A7A\uFF1A${e}`);return{source:e,type:"local-file",title:(0,Za.basename)(e),rawContent:r}}M();M();function vb(e){switch(e){case"modified":return"~";case"added":return"+";case"deleted":return"-";case"renamed":return"\u2192";default:return"\xB7"}}async function bb(e){let t=await iw();return t.length===0?(e||h.info("\u6CA1\u6709\u672A\u63D0\u4EA4\u53D8\u66F4\uFF0C\u6539\u4E3A\u5BA1\u67E5\u6700\u8FD1\u4E00\u6B21\u63D0\u4EA4..."),t=await nw(),{diffs:t,sourceLabel:"\uFF08\u6700\u8FD1\u63D0\u4EA4\uFF09"}):{diffs:t,sourceLabel:"\uFF08\u672A\u63D0\u4EA4\u53D8\u66F4\uFF09"}}async function Eb(e){let{full:t,filesFilter:s,base:i,head:r,json:n}=e;if(t){(!s||s.length===0)&&(h.error("--full \u9700\u8981\u540C\u65F6\u6307\u5B9A --files"),process.exit(1)),n||h.info(`\u5B8C\u6574\u6587\u4EF6\u5BA1\u67E5\uFF1A${s.length} \u4E2A\u6587\u4EF6`);let{diffs:a,notFound:u}=await uw(s);if(u.length>0&&!n)for(let l of u)h.warn(`\u6587\u4EF6\u4E0D\u5B58\u5728\uFF1A${l}`);return a.length===0&&(h.error("\u6CA1\u6709\u53EF\u8BFB\u53D6\u7684\u6587\u4EF6"),process.exit(1)),{diffs:a,sourceLabel:"\uFF08\u5B8C\u6574\u6587\u4EF6\uFF09"}}if(s&&s.length>0){let a,u;if(i){let f=r||"HEAD";n||h.info(`\u6BD4\u8F83 ${i}...${f}\uFF0C\u9650\u5B9A\u6587\u4EF6\uFF1A${s.join(", ")}`),a=await Vf(i,f),u=` (${i}...${f})`}else{let f=await bb(n);a=f.diffs,u=f.sourceLabel}let{matched:l,unmatched:c}=aw(a,s);if(c.length>0&&!n)for(let f of c)h.warn(`\u6CA1\u6709\u627E\u5230\u8BE5\u6587\u4EF6\u7684\u53D8\u66F4\uFF1A${f}`);return l.length===0?(h.success("\u6307\u5B9A\u6587\u4EF6\u6CA1\u6709\u53EF\u5BA1\u67E5\u7684\u53D8\u66F4"),null):{diffs:l,sourceLabel:u}}if(i){let a=r||"HEAD";n||h.info(`\u6BD4\u8F83 ${i}...${a}`);let u=await Vf(i,a);return u.length===0?(h.success("\u4E24\u4E2A ref \u4E4B\u95F4\u6CA1\u6709\u53D8\u66F4"),null):{diffs:u,sourceLabel:` (${i}...${a})`}}let o=await bb(n);return o.diffs.length===0?(h.success("\u6CA1\u6709\u53EF\u5BA1\u67E5\u7684\u53D8\u66F4"),null):{diffs:o.diffs,sourceLabel:o.sourceLabel}}M();function q$(e){let t=e.checks.filter(s=>!s.readiness.ready);return{error:e.message||"\u6267\u884C\u5668\u4E0D\u53EF\u7528",executors:t.map(s=>({executor:s.executor,reason:s.readiness.reason,hint:s.readiness.hint,suggestions:s.readiness.suggestions??[]}))}}function U$(e){h.error(`${e.executor} \u4E0D\u53EF\u7528\uFF1A${e.readiness.reason||"\u672A\u7ED9\u51FA\u5931\u8D25\u539F\u56E0"}`),e.readiness.hint&&h.info(e.readiness.hint),e.readiness.suggestions&&e.readiness.suggestions.length>0&&(h.info("\u5EFA\u8BAE\u5904\u7406\uFF1A"),e.readiness.suggestions.forEach((t,s)=>{h.plain(` ${s+1}. ${t}`)}))}async function xn(e){let{config:t,executorOverride:s,modelOverride:i,json:r,requirePing:n=!0}=e;r||h.robot(n?"\u6B63\u5728\u6821\u9A8C\u6A21\u578B\u670D\u52A1\u8054\u901A...":"\u6B63\u5728\u6821\u9A8C\u6267\u884C\u5668\u914D\u7F6E...");let o=await Mi(t,{executorOverride:s,modelOverride:i,requirePing:n});if(!o.ok){if(r)console.error(JSON.stringify(q$(o),null,2));else{h.error(o.message||"\u6267\u884C\u5668\u914D\u7F6E\u6821\u9A8C\u5931\u8D25");for(let a of o.checks.filter(u=>!u.readiness.ready))U$(a)}return process.exitCode=1,!1}if(!r){let a=o.checks[0]?.executor||t.executor;h.success(`\u6267\u884C\u5668\u914D\u7F6E\u6821\u9A8C\u901A\u8FC7\uFF1A${a}`)}return!0}M();function Xa(e){return e>=1e3?`${(e/1e3).toFixed(1)}s`:`${e}ms`}function V$(e,t,s){let i=["Review \u6B65\u9AA4\u8017\u65F6\uFF1A"];for(let r of e){let n=r.success?"\u2713":"\u2717",o=r.error?`\uFF0C\u5931\u8D25\uFF1A${r.error}`:"";i.push(` ${n} ${r.stageName}\uFF08${r.stageId}\uFF09\uFF1A${Xa(r.duration)}${o}`)}return i.push(` Pipeline \u603B\u8017\u65F6\uFF1A${Xa(t)}`),s!==void 0&&i.push(` Review \u547D\u4EE4\u603B\u8017\u65F6\uFF1A${Xa(s)}`),i}function Fb(e){let{result:t,filteredDiffs:s,severityFilter:i,json:r,showStepTimings:n=!1,commandDuration:o}=e,a=t.context.issues,u=a.filter(m=>m.severity==="critical").length,l=a;if(i&&i.length>0&&(l=a.filter(m=>i.includes(m.severity))),!r&&t.context.autofix?.enabled){let m=t.context.autofix;h.newline(),m.error?h.warn(`\u81EA\u52A8\u4FEE\u590D\u5931\u8D25\uFF1A${m.error}`):m.targetIssueCount===0?h.info("\u81EA\u52A8\u4FEE\u590D\uFF1A\u6CA1\u6709\u9700\u8981\u5904\u7406\u7684\u76EE\u6807\u95EE\u9898"):m.dryRun?h.success(`\u81EA\u52A8\u4FEE\u590D\uFF1A\u8865\u4E01\u6821\u9A8C\u901A\u8FC7\uFF08dry-run\uFF09\uFF0C\u76EE\u6807 ${m.targetIssueCount} \u4E2A\u95EE\u9898\uFF0C\u5F71\u54CD ${m.changedFiles.length} \u4E2A\u6587\u4EF6`):h.success(`\u81EA\u52A8\u4FEE\u590D\uFF1A\u5DF2\u5E94\u7528\u8865\u4E01\uFF0C\u76EE\u6807 ${m.targetIssueCount} \u4E2A\u95EE\u9898\uFF0C\u4FEE\u6539 ${m.changedFiles.length} \u4E2A\u6587\u4EF6`),m.patchPath&&h.info(`\u8865\u4E01\u6587\u4EF6\uFF1A${m.patchPath}`),m.suggestion&&h.info(m.suggestion)}let c=t.context.results.filter(m=>m.success).length,f=Na(t.context),d=f.agentExecutions.succeeded>0,p=f.findingCounts.afterValidation===null?"\u9A8C\u8BC1\u5DF2\u8DF3\u8FC7":String(f.findingCounts.afterValidation);if(r){let m=N0(l,t.success,t.totalDuration,t.context.results.length,c,s.length,f,t.context.autofix,t.context.usage,o,t.context.validation);console.log(m),(!t.success||u>0)&&(process.exitCode=1);return}if(h.separator(),t.success?h.success(`\u6D41\u6C34\u7EBF\u6267\u884C\u6210\u529F\uFF0C\u8017\u65F6 ${t.totalDuration}ms`):h.warn(`\u6D41\u6C34\u7EBF\u6267\u884C\u5B8C\u6210\uFF0C\u4F46\u5B58\u5728\u9519\u8BEF\uFF0C\u8017\u65F6 ${t.totalDuration}ms`),o!==void 0&&h.chart(`Review \u547D\u4EE4\u603B\u8017\u65F6\uFF1A${Xa(o)}`),n){h.newline();for(let m of V$(t.stages,t.totalDuration,o))h.plain(m)}if(h.chart(`${c}/${t.context.results.length} \u4E2A Agent \u6267\u884C\u6210\u529F`),t.context.usage&&t.context.usage.requests>0){let m=t.context.usage,g=m.estimated?"\uFF08\u542B\u4F30\u7B97\uFF09":"";h.chart(`\u6A21\u578B\u7528\u91CF${g}\uFF1A\u8C03\u7528 ${m.modelCalls} \u6B21\uFF0C\u7F13\u5B58 ${m.cachedCalls} \u6B21\uFF0Ctokens ${m.totalTokens.toLocaleString()}\uFF0C\u7F13\u5B58\u8282\u7701\u7EA6 ${m.savedTokens.toLocaleString()}`)}if(i&&i.length>0){let m=i.map(g=>gn[g]).join(", ");h.info(`\u6309\u4E25\u91CD\u7EA7\u522B\u8FC7\u6EE4\uFF1A${m}`)}if(h.chart(d?B0(l):"\u98CE\u9669\u7ED3\u8BBA\uFF1A\u672A\u77E5\uFF08\u5BA1\u67E5\u672A\u5B8C\u6210\uFF09"),h.chart(`\u53D1\u73B0\u7EDF\u8BA1\uFF1A\u539F\u59CB ${f.findingCounts.raw} -> \u7F6E\u4FE1\u5EA6\u8FC7\u6EE4\u540E ${f.findingCounts.afterConfidence} -> \u9A8C\u8BC1\u540E ${p} -> \u6700\u7EC8\u8BA1\u5206 ${f.findingCounts.final}`),f.qualityScore.status==="valid"?h.chart(`\u8D28\u91CF\u8BC4\u5206\uFF1A${f.qualityScore.score}/${f.qualityScore.details?.base??100}`):h.chart(`\u8D28\u91CF\u8BC4\u5206\uFF1A\u672A\u77E5\uFF08${f.qualityScore.reason||"\u8BC4\u5206\u6761\u4EF6\u4E0D\u6210\u7ACB"}\uFF09`),l.length>0)h.newline(),console.log(L0(l));else if(h.newline(),!d)h.warn("\u5BA1\u67E5\u672A\u5B8C\u6210\uFF1A\u6CA1\u6709\u4EFB\u4F55 Agent \u6210\u529F\u6267\u884C\uFF0C\u4E0D\u80FD\u7ED9\u51FA\u201C\u672A\u53D1\u73B0\u95EE\u9898\u201D\u7684\u53EF\u4FE1\u7ED3\u8BBA");else if(!t.success)h.warn("\u5BA1\u67E5\u672A\u5B8C\u5168\u5B8C\u6210\uFF1A\u5F53\u524D\u6CA1\u6709\u53EF\u5C55\u793A\u95EE\u9898\uFF0C\u4F46\u6D41\u6C34\u7EBF\u5B58\u5728\u9519\u8BEF\uFF0C\u8BF7\u5148\u5904\u7406\u5931\u8D25\u539F\u56E0");else if(i&&i.length>0){let m=i.map(g=>gn[g]).join(", ");h.success(`\u6CA1\u6709\u53D1\u73B0 ${m} \u7EA7\u522B\u7684\u95EE\u9898 \u{1F389}`)}else h.success("\u6CA1\u6709\u53D1\u73B0\u95EE\u9898 \u{1F389}");u>0&&(h.warn(`CI \u95E8\u7981\uFF1A\u672A\u901A\u8FC7\uFF0C\u5B58\u5728 ${u} \u4E2A\u4E25\u91CD\u98CE\u9669`),process.exitCode=1),t.success||(process.exitCode=1),h.newline()}async function Zf(e){let{projectPath:t,config:s,diffs:i,sourceLabel:r,verbose:n,json:o,stream:a,logSteps:u,severityFilter:l,base:c,head:f,skipValidation:d,agentFilter:p,excludeAgents:m,ruleFilter:g,excludeRules:D,executor:w,model:y,confidence:v,ignore:E,fixSeverities:F=[],fixDryRun:S=!1,fixMaxIssues:B,fixPatchFile:x,full:$=!1,metadata:W,supplementalContextFiles:ae,techDoc:z,techDocSource:R,commitMessages:N,commandStartTimeMs:Y,readinessChecked:X=!1}=e,se=[...s.excludePatterns,...E??[]],ne=hb(i,se),H=ne.included;if(H.length===0){h.success("\u6CA1\u6709\u53EF\u5BA1\u67E5\u7684\u4EE3\u7801\u6216\u914D\u7F6E\u53D8\u66F4");return}let Q=H.reduce((Se,Es)=>Se+Es.additions,0),ce=H.reduce((Se,Es)=>Se+Es.deletions,0),Z=Q+ce,ie=H.reduce((Se,Es)=>(Se[Es.status]=(Se[Es.status]||0)+1,Se),{}),ve=ae??await fb({repositoryPath:t,diffs:H,headRef:c?f||"HEAD":void 0,fullMode:$}),mt=z??(R?await wb(R,t):void 0);if(!o){let Se=[];if(ie.modified&&Se.push(`${ie.modified} \u4E2A\u4FEE\u6539`),ie.added&&Se.push(`${ie.added} \u4E2A\u65B0\u589E`),ie.deleted&&Se.push(`${ie.deleted} \u4E2A\u5220\u9664`),ie.renamed&&Se.push(`${ie.renamed} \u4E2A\u91CD\u547D\u540D`),h.file(`${H.length} \u4E2A\u6587\u4EF6${r}\uFF1A${Se.join(", ")}`),h.plain(` ${Z} \u5904\u53D8\u66F4\uFF1A+${Q} -${ce}`),n||H.length<=5){h.newline();for(let ii of H){let eu=vb(ii.status);h.plain(` ${eu} ${ii.file}: +${ii.additions} -${ii.deletions}`)}}if(ne.skippedNonReviewable.length>0&&h.info(`\u5DF2\u81EA\u52A8\u8DF3\u8FC7 ${ne.skippedNonReviewable.length} \u4E2A\u975E\u4EE3\u7801/\u914D\u7F6E\u6587\u4EF6`),ne.skippedIgnored.length>0&&h.info(`\u5DF2\u5FFD\u7565 ${ne.skippedIgnored.length} \u4E2A\u547D\u4E2D\u6392\u9664\u89C4\u5219\u7684\u6587\u4EF6`),E&&E.length>0&&h.info(`\u989D\u5916\u5FFD\u7565\uFF1A${E.join(", ")}`),ve&&ve.length>0){let ii=ve.filter(tu=>tu.role==="changed-file").length,eu=ve.filter(tu=>tu.role==="dependency").length;h.info(`\u8865\u5145\u4E0A\u4E0B\u6587\uFF1A\u53D8\u66F4\u6587\u4EF6\u5168\u6587 ${ii} \u4EFD\uFF0C\u4F9D\u8D56\u6587\u4EF6 ${eu} \u4EFD`)}mt&&h.info(`\u6280\u672F\u6587\u6863\uFF1A${mt.title||mt.source}`),h.newline(),h.robot("\u6B63\u5728\u52A0\u8F7D\u6267\u884C\u5668\u548C Agent...")}let si=await Ni();if(o||h.success(`\u5DF2\u52A0\u8F7D ${si.length} \u4E2A\u6267\u884C\u5668\u5B9A\u4E49`),!X&&!await xn({config:s,executorOverride:w,modelOverride:y,json:o,requirePing:!0}))return;let Qi=await We({projectPath:t,executorOverride:w,modelOverride:y});w&&!o&&h.info(`\u4F7F\u7528\u6267\u884C\u5668\uFF1A${w}`),o||(p&&h.info(`Agent \u8FC7\u6EE4\uFF1A${p.join(", ")}`),m&&h.info(`\u6392\u9664 Agent\uFF1A${m.join(", ")}`),g&&h.info(`\u89C4\u5219\u8FC7\u6EE4\uFF1A${g.join(", ")}`),D&&h.info(`\u6392\u9664\u89C4\u5219\uFF1A${D.join(", ")}`));let Sn=Qi.filter(Se=>Se.enabled);o||(h.success(`\u5DF2\u52A0\u8F7D ${Sn.length} \u4E2A\u53EF\u7528 Agent`),h.newline());let $b=await new Hi(Qi,si).execute(H,{verbose:n,quiet:o,concurrency:s.concurrency,skipValidation:d,stream:a,baseRef:c,headRef:f,agentFilter:p,excludeAgents:m,ruleFilter:g,excludeRules:D,minConfidence:v,modelOverride:y,fixSeverities:F,fixDryRun:S,fixMaxIssues:B,fixPatchFile:x,config:s,repositoryPath:t,metadata:W,supplementalContextFiles:ve,techDoc:mt,commitMessages:N}),Tb=Y===void 0?void 0:Date.now()-Y;Fb({result:$b,filteredDiffs:H,severityFilter:l,json:o,showStepTimings:u,commandDuration:Tb})}async function Cb(e){let t=Date.now(),{verbose:s=!1,json:i=!1,stream:r=!1,logSteps:n=!1,severity:o,base:a,head:u,branch:l,skipValidation:c=!1,agent:f,excludeAgent:d,rule:p,excludeRule:m,executor:g,model:D,confidence:w,files:y,full:v=!1,ignore:E,fixCritical:F=!1,fixSeverity:S,fixDryRun:B=!1,fixMaxIssues:x,fixPatchFile:$,techDoc:W}=e,ae=Array.from(new Set([...F?["critical"]:[],...S??[]]));i||h.logo();let z=process.cwd(),R=await le(z);if(!await xn({config:R,executorOverride:g,modelOverride:D,json:i,requirePing:!0}))return;let Y=a,X=u;if(l!==void 0&&l!==""){let H=l==="."?await J0():l;H||(i||(h.error("\u65E0\u6CD5\u786E\u5B9A\u5F53\u524D\u5206\u652F\uFF08\u53EF\u80FD\u5904\u4E8E detached HEAD\uFF09"),h.info("\u8BF7\u663E\u5F0F\u6307\u5B9A\u5206\u652F\uFF1Abest-review review --branch feature-auth")),process.exit(1));let Q=a||await Y0();Q||(i||(h.error("\u65E0\u6CD5\u68C0\u6D4B\u9ED8\u8BA4\u5206\u652F\uFF08main/master/develop\uFF09"),h.info("\u8BF7\u663E\u5F0F\u6307\u5B9A --base\uFF1Abest-review review --branch --base main")),process.exit(1)),l!=="."&&!await Z0(l)&&(i||h.error(`\u5206\u652F\u4E0D\u5B58\u5728\uFF1A${l}`),process.exit(1)),H===Q?i||h.warn(`\u5206\u652F "${H}" \u5C31\u662F\u57FA\u51C6\u5206\u652F\uFF0C\u5C06\u6539\u4E3A\u5BA1\u67E5\u672A\u63D0\u4EA4\u53D8\u66F4`):(Y=Q,X=H,i||h.info(`\u5BA1\u67E5 "${H}" \u76F8\u5BF9 "${Q}" \u7684\u53D8\u66F4`))}await qa()||(i||h.error("\u5F53\u524D\u76EE\u5F55\u4E0D\u662F Git \u4ED3\u5E93"),process.exit(1)),i||h.chart("\u6B63\u5728\u5206\u6790\u53D8\u66F4...");let ne=await Eb({full:v,filesFilter:y,base:Y,head:X,json:i});ne&&await Zf({projectPath:z,config:R,diffs:ne.diffs,sourceLabel:ne.sourceLabel,verbose:s,json:i,stream:r,logSteps:n,severityFilter:o,base:Y,head:X,skipValidation:c,agentFilter:f,excludeAgents:d,ruleFilter:p,excludeRules:m,executor:g,model:D,confidence:w,ignore:E,fixSeverities:ae,fixDryRun:B,fixMaxIssues:x,fixPatchFile:$,full:v,techDocSource:W,commandStartTimeMs:t,readinessChecked:!0})}var xb={meta:{name:"review",description:`\u5BA1\u67E5\u5F53\u524D\u4EE3\u7801\u53D8\u66F4
|
|
636
|
+
best-review setup-command remove # \u4ECE\u6240\u6709\u5DE5\u5177\u79FB\u9664\u547D\u4EE4`},args:{force:{type:"boolean",description:"\u8986\u76D6\u5DF2\u6709\u5B89\u88C5",alias:"f"}},subCommands:{status:{meta:{description:"\u67E5\u770B\u5B89\u88C5\u72B6\u6001"},run:async()=>{await Zw()}},remove:{meta:{description:"\u4ECE\u6240\u6709\u5DE5\u5177\u79FB\u9664 /best-review \u547D\u4EE4"},run:async()=>{await Yw()}}},run:async({args:e,rawArgs:t})=>{let s=Object.keys(Hf.subCommands||{});t.some(r=>s.includes(r))||await Jw({force:e.force})}};Zs();M();Zs();je();var Ha=["critical","high","medium","low"];function Xw(e){if(e)return e.split(",").map(t=>t.trim())}function Qw(e){return e?e.split(",").map(s=>s.trim()).every(s=>Ha.includes(s)):!0}function eb(e){return e?e.split(",").map(t=>t.trim()).filter(t=>!Ha.includes(t)):[]}function w$(e){if(e)return Number.parseInt(e,10)}function b$(e){return e?/^\d+$/.test(e)&&Number.parseInt(e,10)>0:!0}var rt=b.string().optional().transform(e=>{if(e)return e.split(",").map(t=>t.trim())}),tb=b.string().optional().refine(e=>{if(!e)return!0;let t=parseInt(e,10);return!isNaN(t)&&!e.includes(".")},e=>({message:`\u7F6E\u4FE1\u5EA6\u65E0\u6548\uFF1A"${e}"\u3002\u5FC5\u987B\u662F 0-100 \u4E4B\u95F4\u7684\u6574\u6570\u3002`})).transform(e=>{if(e)return parseInt(e,10)}).refine(e=>e===void 0?!0:e>=0&&e<=100,e=>({message:`\u7F6E\u4FE1\u5EA6\u65E0\u6548\uFF1A${e}\u3002\u5FC5\u987B\u5728 0-100 \u4E4B\u95F4\u3002`})),sb=b.string().optional().refine(b$,e=>({message:`\u81EA\u52A8\u4FEE\u590D\u6570\u91CF\u65E0\u6548\uFF1A"${e}"\u3002\u5FC5\u987B\u662F\u5927\u4E8E 0 \u7684\u6574\u6570\u3002`})).transform(w$),ib=b.string().optional().refine(Qw,e=>({message:`\u4E25\u91CD\u7EA7\u522B\u65E0\u6548\uFF1A${eb(e).join(", ")}\u3002\u53EF\u9009\u503C\uFF1A${Ha.join(", ")}`})).transform(Xw),rb=b.string().optional().refine(Qw,e=>({message:`\u81EA\u52A8\u4FEE\u590D\u4E25\u91CD\u7EA7\u522B\u65E0\u6548\uFF1A${eb(e).join(", ")}\u3002\u53EF\u9009\u503C\uFF1A${Ha.join(", ")}`})).transform(Xw),nb=b.string().optional().refine(e=>!e||[xe,be].includes(e),{message:`\u4EC5\u652F\u6301 ${xe} \u6216 ${be}`}),v$=b.object({confidence:tb,"fix-max-issues":sb,severity:ib,"fix-severity":rb,agent:rt,"exclude-agent":rt,rule:rt,"exclude-rule":rt,files:rt,ignore:rt,base:b.string().optional(),head:b.string().optional(),branch:b.string().optional(),executor:nb,model:b.string().optional(),"fix-patch-file":b.string().optional(),"tech-doc":b.string().optional(),stream:b.boolean().optional(),verbose:b.boolean().optional(),json:b.boolean().optional(),"log-steps":b.boolean().optional(),"skip-validation":b.boolean().optional(),"fix-critical":b.boolean().optional(),"fix-dry-run":b.boolean().optional(),full:b.boolean().optional()}).refine(e=>!(e.full&&!e.files),{message:"--full \u9700\u8981\u540C\u65F6\u4F7F\u7528 --files \u6307\u5B9A\u8981\u5BA1\u67E5\u7684\u6587\u4EF6"}).refine(e=>!(e.full&&e.base),{message:"--full \u548C --base \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528\u3002--full \u7528\u4E8E\u5B8C\u6574\u6587\u4EF6\u5BA1\u67E5\uFF0C--base \u7528\u4E8E Git diff \u6BD4\u8F83\u3002"}),E$=b.object({url:b.string().url("MR \u94FE\u63A5\u65E0\u6548\u3002\u8BF7\u63D0\u4F9B\u5B8C\u6574\u7684 GitLab Merge Request URL\u3002"),confidence:tb,severity:ib,agent:rt,"exclude-agent":rt,rule:rt,"exclude-rule":rt,executor:nb,model:b.string().optional(),"tech-doc":b.string().optional(),stream:b.boolean().optional(),verbose:b.boolean().optional(),json:b.boolean().optional(),"log-steps":b.boolean().optional(),"skip-validation":b.boolean().optional(),base:b.string().optional(),head:b.string().optional(),branch:b.string().optional(),files:rt,ignore:rt,full:b.boolean().optional(),"fix-critical":b.boolean().optional(),"fix-severity":rb,"fix-dry-run":b.boolean().optional(),"fix-max-issues":sb,"fix-patch-file":b.string().optional()}).refine(e=>!e.base,{message:"--base \u4E0D\u652F\u6301\u7528\u4E8E review-mr"}).refine(e=>!e.head,{message:"--head \u4E0D\u652F\u6301\u7528\u4E8E review-mr"}).refine(e=>!e.branch,{message:"--branch \u4E0D\u652F\u6301\u7528\u4E8E review-mr"}).refine(e=>!e.files||e.files.length===0,{message:"--files \u4E0D\u652F\u6301\u7528\u4E8E review-mr"}).refine(e=>!e.full,{message:"--full \u4E0D\u652F\u6301\u7528\u4E8E review-mr"}).refine(e=>!e["fix-critical"]&&!e["fix-severity"]&&!e["fix-dry-run"]&&e["fix-max-issues"]===void 0&&!e["fix-patch-file"],{message:"--fix-* \u4E0D\u652F\u6301\u7528\u4E8E review-mr"});function ob(e){return v$.parse(e)}function ab(e){return E$.parse(e)}Ge();var ub=require("node:fs/promises"),lb=require("node:path");var Wt=require("node:path"),F$=/(?:import\s+(?:type\s+)?(?:[^'"`]*?\s+from\s*)?["'](\.{1,2}\/[^"'`]+)["'])|(?:export\s+(?:\*|\{[^}]*\})\s+from\s*["'](\.{1,2}\/[^"'`]+)["'])|(?:require\(\s*["'](\.{1,2}\/[^"'`]+)["']\s*\))|(?:import\(\s*["'](\.{1,2}\/[^"'`]+)["']\s*\))/g,C$=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"];function Fn(e){let t=[];for(let s of e.matchAll(F$)){let i=s[1]||s[2]||s[3]||s[4];i&&t.push(i)}return t}function Ja(e,t){return Wt.posix.normalize(Wt.posix.join(Wt.posix.dirname(e),t))}function x$(e){let t=Wt.posix.normalize(e);return t!==".."&&!t.startsWith("../")&&!Wt.posix.isAbsolute(t)}function Ya(e){let t=Wt.posix.normalize(e);if(!x$(t))return[];let s=new Set([t]);if(!Wt.posix.extname(t))for(let i of C$)s.add(`${t}${i}`),s.add(Wt.posix.join(t,`index${i}`));return[...s]}function Jf(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}async function R$(e,t){try{return await(0,ub.readFile)((0,lb.join)(e,t),"utf-8")}catch{return null}}async function cb(e){let{repositoryPath:t,filePath:s,headRef:i,readFileAtRef:r}=e;return i?r(i,s):R$(t,s)}async function k$(e){let t=Ja(e.fromFile,e.specifier),s=Ya(t);for(let i of s){let r=await cb({repositoryPath:e.repositoryPath,filePath:i,headRef:e.headRef,readFileAtRef:e.readFileAtRef});if(r!==null)return{file:i,content:r}}return null}async function fb(e){let t=e.readFileAtRef??vn,s=e.changedFileMaxChars??2e4,i=e.dependencyMaxChars??12e3,r=e.headRef??"worktree",n=new Set(e.diffs.map(u=>Jf(u.file))),o=[],a=new Map;for(let u of e.diffs){if(u.isDeletedFile||u.status==="deleted")continue;let l=Jf(u.newPath||u.file),c=await cb({repositoryPath:e.repositoryPath,filePath:l,headRef:e.headRef,readFileAtRef:t});if(c===null)continue;e.fullMode||o.push({file:u.file,content:vs(c,"changed-file",s),role:"changed-file",source:"local-git",ref:r,relatedFiles:[u.file]});let f=Fn(c);for(let d of f){let p=await k$({repositoryPath:e.repositoryPath,fromFile:l,specifier:d,headRef:e.headRef,readFileAtRef:t});if(!p||n.has(Jf(p.file)))continue;let m=a.get(p.file);if(m){let g=new Set([...m.relatedFiles||[],u.file]);m.relatedFiles=[...g];continue}a.set(p.file,{file:p.file,content:vs(p.content,"dependency",i),role:"dependency",source:"local-git",ref:r,relatedFiles:[u.file]})}}return[...o,...a.values()]}var Cn=require("node:path");ws();var I$=new Set([".js",".jsx",".mjs",".cjs",".ts",".tsx",".mts",".cts",".py",".java",".kt",".kts",".go",".rs",".rb",".php",".swift",".scala",".cs",".c",".cc",".cpp",".cxx",".h",".hh",".hpp",".m",".mm",".sh",".bash",".zsh",".fish",".ps1",".sql",".vue",".svelte"]),_$=new Set([".json",".jsonc",".yaml",".yml",".toml",".ini",".cfg",".conf",".properties",".tf",".tfvars",".hcl",".xml"]),$$=new Set(["dockerfile","makefile","gnumakefile","justfile","procfile","jenkinsfile",".gitignore",".gitattributes",".editorconfig",".npmrc",".nvmrc",".yarnrc",".yarnrc.yml",".prettierignore",".prettierrc",".prettierrc.json",".prettierrc.yml",".prettierrc.yaml",".prettierrc.js",".prettierrc.cjs",".prettierrc.mjs",".prettierrc.toml",".eslintrc",".eslintrc.json",".eslintrc.yml",".eslintrc.yaml",".eslintrc.js",".eslintrc.cjs",".babelrc",".babelrc.json",".tool-versions"]),T$=[".env","dockerfile.",".env."];function Yf(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}function P$(e){let t=Yf(e),s=(0,Cn.basename)(t).toLowerCase(),i=(0,Cn.extname)(s);return I$.has(i)||_$.has(i)||$$.has(s)?!0:T$.some(r=>s===r||s.startsWith(r))}function B$(e,t){let s=Yf(e),i=Yf(t.trim()),r=i.startsWith("/"),n=i.replace(/^\.\//,"").replace(/^\/+/,"").replace(/\/+$/,"");if(!n)return!1;let o=L$(n,r);return o.some(a=>ys(s,a))?!0:o.some(a=>s===a||s.startsWith(`${a}/`))}function O$(e){return/[*?[\]{}]/.test(e)}function db(e){return(0,Cn.basename)(e).includes(".")}function L$(e,t){let s=new Set([e]),i=O$(e);return db(e)||s.add(`${e}/**`),t||(s.add(`**/${e}`),(!db(e)||!i)&&s.add(`**/${e}/**`)),Array.from(s)}function N$(e){return e.flatMap(t=>t.split(",")).map(t=>t.trim()).filter(Boolean)}function hb(e,t=[]){let s=[],i=[],r=[],n=N$(t);for(let o of e){if(!P$(o.file)){i.push(o);continue}if(n.some(a=>B$(o.file,a))){r.push(o);continue}s.push(o)}return{included:s,skippedNonReviewable:i,skippedIgnored:r}}var pb=require("node:fs/promises"),Za=require("node:path"),mb="https://open.feishu.cn";function gb(e){try{return new URL(e)}catch{return null}}function Db(e){return e.endsWith("feishu.cn")||e.endsWith("larksuite.com")}function M$(e){let t=gb(e);if(!t||!Db(t.hostname))throw new Error("\u4EC5\u652F\u6301\u98DE\u4E66\u65B0\u7248 docx \u94FE\u63A5\u6216\u672C\u5730 Markdown/\u6587\u672C\u6587\u4EF6");let s=t.pathname.match(/\/docx\/([^/?#]+)/);if(!s?.[1])throw new Error("\u4EC5\u652F\u6301\u98DE\u4E66\u65B0\u7248 docx \u94FE\u63A5\uFF08\u5F62\u5982 https://docs.feishu.cn/docx/<document_id>\uFF09");return decodeURIComponent(s[1])}async function yb(e,t){let s=await e.text(),i;try{i=JSON.parse(s)}catch(r){throw new Error(`${t} \u8FD4\u56DE\u4E86\u4E0D\u53EF\u89E3\u6790 JSON\uFF1A${s.slice(0,300)}`,{cause:r})}if(!e.ok)throw new Error(`${t} \u8BF7\u6C42\u5931\u8D25\uFF08${e.status}\uFF09\uFF1A${s.slice(0,300)}`);return i}async function j$(){let e=process.env.FEISHU_APP_ID,t=process.env.FEISHU_APP_SECRET;if(!e||!t)throw new Error("\u8BFB\u53D6\u98DE\u4E66\u6280\u672F\u6587\u6863\u9700\u8981\u8BBE\u7F6E FEISHU_APP_ID \u548C FEISHU_APP_SECRET\uFF1B\u4E5F\u53EF\u4EE5\u628A\u98DE\u4E66\u6587\u6863\u5BFC\u51FA/\u590D\u5236\u4E3A\u672C\u5730 Markdown \u540E\u4F7F\u7528 --tech-doc <path>\u3002");let s=await fetch(`${mb}/open-apis/auth/v3/tenant_access_token/internal`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({app_id:e,app_secret:t})}),i=await yb(s,"\u98DE\u4E66 tenant_access_token");if(i.code!==0||!i.tenant_access_token)throw new Error(`\u83B7\u53D6\u98DE\u4E66 tenant_access_token \u5931\u8D25\uFF1A${i.msg||`code=${i.code}`}`);return i.tenant_access_token}async function q$(e){let t=M$(e),s=await j$(),i=await fetch(`${mb}/open-apis/docx/v1/documents/${encodeURIComponent(t)}/raw_content`,{method:"GET",headers:{Authorization:`Bearer ${s}`}}),r=await yb(i,"\u98DE\u4E66\u6587\u6863\u7EAF\u6587\u672C");if(r.code!==0)throw new Error(`\u8BFB\u53D6\u98DE\u4E66\u6587\u6863\u7EAF\u6587\u672C\u5931\u8D25\uFF1A${r.msg||`code=${r.code}`}`);let n=r.data?.content??r.data?.raw_content??"";if(!n.trim())throw new Error("\u98DE\u4E66\u6587\u6863\u7EAF\u6587\u672C\u4E3A\u7A7A\uFF0C\u65E0\u6CD5\u6267\u884C\u6280\u672F\u6587\u6863\u5BF9\u7167 review\u3002");return{source:e,type:"feishu-docx",title:t,rawContent:n}}async function wb(e,t=process.cwd()){let s=gb(e);if(s){if(Db(s.hostname))return q$(e);throw new Error("\u4EC5\u652F\u6301\u98DE\u4E66\u65B0\u7248 docx \u94FE\u63A5\u6216\u672C\u5730 Markdown/\u6587\u672C\u6587\u4EF6\u3002")}let i=(0,Za.resolve)(t,e),r=await(0,pb.readFile)(i,"utf-8");if(!r.trim())throw new Error(`\u6280\u672F\u6587\u6863\u4E3A\u7A7A\uFF1A${e}`);return{source:e,type:"local-file",title:(0,Za.basename)(e),rawContent:r}}M();M();function vb(e){switch(e){case"modified":return"~";case"added":return"+";case"deleted":return"-";case"renamed":return"\u2192";default:return"\xB7"}}async function bb(e){let t=await iw();return t.length===0?(e||h.info("\u6CA1\u6709\u672A\u63D0\u4EA4\u53D8\u66F4\uFF0C\u6539\u4E3A\u5BA1\u67E5\u6700\u8FD1\u4E00\u6B21\u63D0\u4EA4..."),t=await nw(),{diffs:t,sourceLabel:"\uFF08\u6700\u8FD1\u63D0\u4EA4\uFF09"}):{diffs:t,sourceLabel:"\uFF08\u672A\u63D0\u4EA4\u53D8\u66F4\uFF09"}}async function Eb(e){let{full:t,filesFilter:s,base:i,head:r,json:n}=e;if(t){(!s||s.length===0)&&(h.error("--full \u9700\u8981\u540C\u65F6\u6307\u5B9A --files"),process.exit(1)),n||h.info(`\u5B8C\u6574\u6587\u4EF6\u5BA1\u67E5\uFF1A${s.length} \u4E2A\u6587\u4EF6`);let{diffs:a,notFound:u}=await uw(s);if(u.length>0&&!n)for(let l of u)h.warn(`\u6587\u4EF6\u4E0D\u5B58\u5728\uFF1A${l}`);return a.length===0&&(h.error("\u6CA1\u6709\u53EF\u8BFB\u53D6\u7684\u6587\u4EF6"),process.exit(1)),{diffs:a,sourceLabel:"\uFF08\u5B8C\u6574\u6587\u4EF6\uFF09"}}if(s&&s.length>0){let a,u;if(i){let f=r||"HEAD";n||h.info(`\u6BD4\u8F83 ${i}...${f}\uFF0C\u9650\u5B9A\u6587\u4EF6\uFF1A${s.join(", ")}`),a=await Vf(i,f),u=` (${i}...${f})`}else{let f=await bb(n);a=f.diffs,u=f.sourceLabel}let{matched:l,unmatched:c}=aw(a,s);if(c.length>0&&!n)for(let f of c)h.warn(`\u6CA1\u6709\u627E\u5230\u8BE5\u6587\u4EF6\u7684\u53D8\u66F4\uFF1A${f}`);return l.length===0?(h.success("\u6307\u5B9A\u6587\u4EF6\u6CA1\u6709\u53EF\u5BA1\u67E5\u7684\u53D8\u66F4"),null):{diffs:l,sourceLabel:u}}if(i){let a=r||"HEAD";n||h.info(`\u6BD4\u8F83 ${i}...${a}`);let u=await Vf(i,a);return u.length===0?(h.success("\u4E24\u4E2A ref \u4E4B\u95F4\u6CA1\u6709\u53D8\u66F4"),null):{diffs:u,sourceLabel:` (${i}...${a})`}}let o=await bb(n);return o.diffs.length===0?(h.success("\u6CA1\u6709\u53EF\u5BA1\u67E5\u7684\u53D8\u66F4"),null):{diffs:o.diffs,sourceLabel:o.sourceLabel}}M();function U$(e){let t=e.checks.filter(s=>!s.readiness.ready);return{error:e.message||"\u6267\u884C\u5668\u4E0D\u53EF\u7528",executors:t.map(s=>({executor:s.executor,reason:s.readiness.reason,hint:s.readiness.hint,suggestions:s.readiness.suggestions??[]}))}}function V$(e){h.error(`${e.executor} \u4E0D\u53EF\u7528\uFF1A${e.readiness.reason||"\u672A\u7ED9\u51FA\u5931\u8D25\u539F\u56E0"}`),e.readiness.hint&&h.info(e.readiness.hint),e.readiness.suggestions&&e.readiness.suggestions.length>0&&(h.info("\u5EFA\u8BAE\u5904\u7406\uFF1A"),e.readiness.suggestions.forEach((t,s)=>{h.plain(` ${s+1}. ${t}`)}))}async function xn(e){let{config:t,executorOverride:s,modelOverride:i,json:r,requirePing:n=!0}=e;r||h.robot(n?"\u6B63\u5728\u6821\u9A8C\u6A21\u578B\u670D\u52A1\u8054\u901A...":"\u6B63\u5728\u6821\u9A8C\u6267\u884C\u5668\u914D\u7F6E...");let o=await Mi(t,{executorOverride:s,modelOverride:i,requirePing:n});if(!o.ok){if(r)console.error(JSON.stringify(U$(o),null,2));else{h.error(o.message||"\u6267\u884C\u5668\u914D\u7F6E\u6821\u9A8C\u5931\u8D25");for(let a of o.checks.filter(u=>!u.readiness.ready))V$(a)}return process.exitCode=1,!1}if(!r){let a=o.checks[0]?.executor||t.executor;h.success(`\u6267\u884C\u5668\u914D\u7F6E\u6821\u9A8C\u901A\u8FC7\uFF1A${a}`)}return!0}M();function Xa(e){return e>=1e3?`${(e/1e3).toFixed(1)}s`:`${e}ms`}function G$(e,t,s){let i=["Review \u6B65\u9AA4\u8017\u65F6\uFF1A"];for(let r of e){let n=r.success?"\u2713":"\u2717",o=r.error?`\uFF0C\u5931\u8D25\uFF1A${r.error}`:"";i.push(` ${n} ${r.stageName}\uFF08${r.stageId}\uFF09\uFF1A${Xa(r.duration)}${o}`)}return i.push(` Pipeline \u603B\u8017\u65F6\uFF1A${Xa(t)}`),s!==void 0&&i.push(` Review \u547D\u4EE4\u603B\u8017\u65F6\uFF1A${Xa(s)}`),i}function Fb(e){let{result:t,filteredDiffs:s,severityFilter:i,json:r,showStepTimings:n=!1,commandDuration:o}=e,a=t.context.issues,u=a.filter(m=>m.severity==="critical").length,l=a;if(i&&i.length>0&&(l=a.filter(m=>i.includes(m.severity))),!r&&t.context.autofix?.enabled){let m=t.context.autofix;h.newline(),m.error?h.warn(`\u81EA\u52A8\u4FEE\u590D\u5931\u8D25\uFF1A${m.error}`):m.targetIssueCount===0?h.info("\u81EA\u52A8\u4FEE\u590D\uFF1A\u6CA1\u6709\u9700\u8981\u5904\u7406\u7684\u76EE\u6807\u95EE\u9898"):m.dryRun?h.success(`\u81EA\u52A8\u4FEE\u590D\uFF1A\u8865\u4E01\u6821\u9A8C\u901A\u8FC7\uFF08dry-run\uFF09\uFF0C\u76EE\u6807 ${m.targetIssueCount} \u4E2A\u95EE\u9898\uFF0C\u5F71\u54CD ${m.changedFiles.length} \u4E2A\u6587\u4EF6`):h.success(`\u81EA\u52A8\u4FEE\u590D\uFF1A\u5DF2\u5E94\u7528\u8865\u4E01\uFF0C\u76EE\u6807 ${m.targetIssueCount} \u4E2A\u95EE\u9898\uFF0C\u4FEE\u6539 ${m.changedFiles.length} \u4E2A\u6587\u4EF6`),m.patchPath&&h.info(`\u8865\u4E01\u6587\u4EF6\uFF1A${m.patchPath}`),m.suggestion&&h.info(m.suggestion)}let c=t.context.results.filter(m=>m.success).length,f=Na(t.context),d=f.agentExecutions.succeeded>0,p=f.findingCounts.afterValidation===null?"\u9A8C\u8BC1\u5DF2\u8DF3\u8FC7":String(f.findingCounts.afterValidation);if(r){let m=N0(l,t.success,t.totalDuration,t.context.results.length,c,s.length,f,t.context.autofix,t.context.usage,o,t.context.validation);console.log(m),(!t.success||u>0)&&(process.exitCode=1);return}if(h.separator(),t.success?h.success(`\u6D41\u6C34\u7EBF\u6267\u884C\u6210\u529F\uFF0C\u8017\u65F6 ${t.totalDuration}ms`):h.warn(`\u6D41\u6C34\u7EBF\u6267\u884C\u5B8C\u6210\uFF0C\u4F46\u5B58\u5728\u9519\u8BEF\uFF0C\u8017\u65F6 ${t.totalDuration}ms`),o!==void 0&&h.chart(`Review \u547D\u4EE4\u603B\u8017\u65F6\uFF1A${Xa(o)}`),n){h.newline();for(let m of G$(t.stages,t.totalDuration,o))h.plain(m)}if(h.chart(`${c}/${t.context.results.length} \u4E2A Agent \u6267\u884C\u6210\u529F`),t.context.usage&&t.context.usage.requests>0){let m=t.context.usage,g=m.estimated?"\uFF08\u542B\u4F30\u7B97\uFF09":"";h.chart(`\u6A21\u578B\u7528\u91CF${g}\uFF1A\u8C03\u7528 ${m.modelCalls} \u6B21\uFF0C\u7F13\u5B58 ${m.cachedCalls} \u6B21\uFF0Ctokens ${m.totalTokens.toLocaleString()}\uFF0C\u7F13\u5B58\u8282\u7701\u7EA6 ${m.savedTokens.toLocaleString()}`)}if(i&&i.length>0){let m=i.map(g=>gn[g]).join(", ");h.info(`\u6309\u4E25\u91CD\u7EA7\u522B\u8FC7\u6EE4\uFF1A${m}`)}if(h.chart(d?B0(l):"\u98CE\u9669\u7ED3\u8BBA\uFF1A\u672A\u77E5\uFF08\u5BA1\u67E5\u672A\u5B8C\u6210\uFF09"),h.chart(`\u53D1\u73B0\u7EDF\u8BA1\uFF1A\u539F\u59CB ${f.findingCounts.raw} -> \u7F6E\u4FE1\u5EA6\u8FC7\u6EE4\u540E ${f.findingCounts.afterConfidence} -> \u9A8C\u8BC1\u540E ${p} -> \u6700\u7EC8\u8BA1\u5206 ${f.findingCounts.final}`),f.qualityScore.status==="valid"?h.chart(`\u8D28\u91CF\u8BC4\u5206\uFF1A${f.qualityScore.score}/${f.qualityScore.details?.base??100}`):h.chart(`\u8D28\u91CF\u8BC4\u5206\uFF1A\u672A\u77E5\uFF08${f.qualityScore.reason||"\u8BC4\u5206\u6761\u4EF6\u4E0D\u6210\u7ACB"}\uFF09`),l.length>0)h.newline(),console.log(L0(l));else if(h.newline(),!d)h.warn("\u5BA1\u67E5\u672A\u5B8C\u6210\uFF1A\u6CA1\u6709\u4EFB\u4F55 Agent \u6210\u529F\u6267\u884C\uFF0C\u4E0D\u80FD\u7ED9\u51FA\u201C\u672A\u53D1\u73B0\u95EE\u9898\u201D\u7684\u53EF\u4FE1\u7ED3\u8BBA");else if(!t.success)h.warn("\u5BA1\u67E5\u672A\u5B8C\u5168\u5B8C\u6210\uFF1A\u5F53\u524D\u6CA1\u6709\u53EF\u5C55\u793A\u95EE\u9898\uFF0C\u4F46\u6D41\u6C34\u7EBF\u5B58\u5728\u9519\u8BEF\uFF0C\u8BF7\u5148\u5904\u7406\u5931\u8D25\u539F\u56E0");else if(i&&i.length>0){let m=i.map(g=>gn[g]).join(", ");h.success(`\u6CA1\u6709\u53D1\u73B0 ${m} \u7EA7\u522B\u7684\u95EE\u9898 \u{1F389}`)}else h.success("\u6CA1\u6709\u53D1\u73B0\u95EE\u9898 \u{1F389}");u>0&&(h.warn(`CI \u95E8\u7981\uFF1A\u672A\u901A\u8FC7\uFF0C\u5B58\u5728 ${u} \u4E2A\u4E25\u91CD\u98CE\u9669`),process.exitCode=1),t.success||(process.exitCode=1),h.newline()}async function Zf(e){let{projectPath:t,config:s,diffs:i,sourceLabel:r,verbose:n,json:o,stream:a,logSteps:u,severityFilter:l,base:c,head:f,skipValidation:d,agentFilter:p,excludeAgents:m,ruleFilter:g,excludeRules:D,executor:w,model:y,confidence:v,ignore:E,fixSeverities:F=[],fixDryRun:S=!1,fixMaxIssues:B,fixPatchFile:x,full:$=!1,metadata:W,supplementalContextFiles:ae,techDoc:z,techDocSource:R,commitMessages:N,commandStartTimeMs:Y,readinessChecked:X=!1}=e,se=[...s.excludePatterns,...E??[]],ne=hb(i,se),H=ne.included;if(H.length===0){h.success("\u6CA1\u6709\u53EF\u5BA1\u67E5\u7684\u4EE3\u7801\u6216\u914D\u7F6E\u53D8\u66F4");return}let Q=H.reduce((Se,Es)=>Se+Es.additions,0),ce=H.reduce((Se,Es)=>Se+Es.deletions,0),Z=Q+ce,ie=H.reduce((Se,Es)=>(Se[Es.status]=(Se[Es.status]||0)+1,Se),{}),ve=ae??await fb({repositoryPath:t,diffs:H,headRef:c?f||"HEAD":void 0,fullMode:$}),mt=z??(R?await wb(R,t):void 0);if(!o){let Se=[];if(ie.modified&&Se.push(`${ie.modified} \u4E2A\u4FEE\u6539`),ie.added&&Se.push(`${ie.added} \u4E2A\u65B0\u589E`),ie.deleted&&Se.push(`${ie.deleted} \u4E2A\u5220\u9664`),ie.renamed&&Se.push(`${ie.renamed} \u4E2A\u91CD\u547D\u540D`),h.file(`${H.length} \u4E2A\u6587\u4EF6${r}\uFF1A${Se.join(", ")}`),h.plain(` ${Z} \u5904\u53D8\u66F4\uFF1A+${Q} -${ce}`),n||H.length<=5){h.newline();for(let ii of H){let eu=vb(ii.status);h.plain(` ${eu} ${ii.file}: +${ii.additions} -${ii.deletions}`)}}if(ne.skippedNonReviewable.length>0&&h.info(`\u5DF2\u81EA\u52A8\u8DF3\u8FC7 ${ne.skippedNonReviewable.length} \u4E2A\u975E\u4EE3\u7801/\u914D\u7F6E\u6587\u4EF6`),ne.skippedIgnored.length>0&&h.info(`\u5DF2\u5FFD\u7565 ${ne.skippedIgnored.length} \u4E2A\u547D\u4E2D\u6392\u9664\u89C4\u5219\u7684\u6587\u4EF6`),E&&E.length>0&&h.info(`\u989D\u5916\u5FFD\u7565\uFF1A${E.join(", ")}`),ve&&ve.length>0){let ii=ve.filter(tu=>tu.role==="changed-file").length,eu=ve.filter(tu=>tu.role==="dependency").length;h.info(`\u8865\u5145\u4E0A\u4E0B\u6587\uFF1A\u53D8\u66F4\u6587\u4EF6\u5168\u6587 ${ii} \u4EFD\uFF0C\u4F9D\u8D56\u6587\u4EF6 ${eu} \u4EFD`)}mt&&h.info(`\u6280\u672F\u6587\u6863\uFF1A${mt.title||mt.source}`),h.newline(),h.robot("\u6B63\u5728\u52A0\u8F7D\u6267\u884C\u5668\u548C Agent...")}let si=await Ni();if(o||h.success(`\u5DF2\u52A0\u8F7D ${si.length} \u4E2A\u6267\u884C\u5668\u5B9A\u4E49`),!X&&!await xn({config:s,executorOverride:w,modelOverride:y,json:o,requirePing:!0}))return;let Qi=await We({projectPath:t,executorOverride:w,modelOverride:y});w&&!o&&h.info(`\u4F7F\u7528\u6267\u884C\u5668\uFF1A${w}`),o||(p&&h.info(`Agent \u8FC7\u6EE4\uFF1A${p.join(", ")}`),m&&h.info(`\u6392\u9664 Agent\uFF1A${m.join(", ")}`),g&&h.info(`\u89C4\u5219\u8FC7\u6EE4\uFF1A${g.join(", ")}`),D&&h.info(`\u6392\u9664\u89C4\u5219\uFF1A${D.join(", ")}`));let Sn=Qi.filter(Se=>Se.enabled);o||(h.success(`\u5DF2\u52A0\u8F7D ${Sn.length} \u4E2A\u53EF\u7528 Agent`),h.newline());let $b=await new Hi(Qi,si).execute(H,{verbose:n,quiet:o,concurrency:s.concurrency,skipValidation:d,stream:a,baseRef:c,headRef:f,agentFilter:p,excludeAgents:m,ruleFilter:g,excludeRules:D,minConfidence:v,modelOverride:y,fixSeverities:F,fixDryRun:S,fixMaxIssues:B,fixPatchFile:x,config:s,repositoryPath:t,metadata:W,supplementalContextFiles:ve,techDoc:mt,commitMessages:N}),Tb=Y===void 0?void 0:Date.now()-Y;Fb({result:$b,filteredDiffs:H,severityFilter:l,json:o,showStepTimings:u,commandDuration:Tb})}async function Cb(e){let t=Date.now(),{verbose:s=!1,json:i=!1,stream:r=!1,logSteps:n=!1,severity:o,base:a,head:u,branch:l,skipValidation:c=!1,agent:f,excludeAgent:d,rule:p,excludeRule:m,executor:g,model:D,confidence:w,files:y,full:v=!1,ignore:E,fixCritical:F=!1,fixSeverity:S,fixDryRun:B=!1,fixMaxIssues:x,fixPatchFile:$,techDoc:W}=e,ae=Array.from(new Set([...F?["critical"]:[],...S??[]]));i||h.logo();let z=process.cwd(),R=await le(z);if(!await xn({config:R,executorOverride:g,modelOverride:D,json:i,requirePing:!0}))return;let Y=a,X=u;if(l!==void 0&&l!==""){let H=l==="."?await J0():l;H||(i||(h.error("\u65E0\u6CD5\u786E\u5B9A\u5F53\u524D\u5206\u652F\uFF08\u53EF\u80FD\u5904\u4E8E detached HEAD\uFF09"),h.info("\u8BF7\u663E\u5F0F\u6307\u5B9A\u5206\u652F\uFF1Abest-review review --branch feature-auth")),process.exit(1));let Q=a||await Y0();Q||(i||(h.error("\u65E0\u6CD5\u68C0\u6D4B\u9ED8\u8BA4\u5206\u652F\uFF08main/master/develop\uFF09"),h.info("\u8BF7\u663E\u5F0F\u6307\u5B9A --base\uFF1Abest-review review --branch --base main")),process.exit(1)),l!=="."&&!await Z0(l)&&(i||h.error(`\u5206\u652F\u4E0D\u5B58\u5728\uFF1A${l}`),process.exit(1)),H===Q?i||h.warn(`\u5206\u652F "${H}" \u5C31\u662F\u57FA\u51C6\u5206\u652F\uFF0C\u5C06\u6539\u4E3A\u5BA1\u67E5\u672A\u63D0\u4EA4\u53D8\u66F4`):(Y=Q,X=H,i||h.info(`\u5BA1\u67E5 "${H}" \u76F8\u5BF9 "${Q}" \u7684\u53D8\u66F4`))}await qa()||(i||h.error("\u5F53\u524D\u76EE\u5F55\u4E0D\u662F Git \u4ED3\u5E93"),process.exit(1)),i||h.chart("\u6B63\u5728\u5206\u6790\u53D8\u66F4...");let ne=await Eb({full:v,filesFilter:y,base:Y,head:X,json:i});ne&&await Zf({projectPath:z,config:R,diffs:ne.diffs,sourceLabel:ne.sourceLabel,verbose:s,json:i,stream:r,logSteps:n,severityFilter:o,base:Y,head:X,skipValidation:c,agentFilter:f,excludeAgents:d,ruleFilter:p,excludeRules:m,executor:g,model:D,confidence:w,ignore:E,fixSeverities:ae,fixDryRun:B,fixMaxIssues:x,fixPatchFile:$,full:v,techDocSource:W,commandStartTimeMs:t,readinessChecked:!0})}var xb={meta:{name:"review",description:`\u5BA1\u67E5\u5F53\u524D\u4EE3\u7801\u53D8\u66F4
|
|
637
637
|
|
|
638
638
|
Examples:
|
|
639
639
|
best-review review \u5BA1\u67E5\u672A\u63D0\u4EA4\u53D8\u66F4
|
|
@@ -653,12 +653,12 @@ Examples:
|
|
|
653
653
|
best-review review --log-steps \u8F93\u51FA\u8BE6\u7EC6\u6B65\u9AA4\u548C\u9636\u6BB5\u8017\u65F6
|
|
654
654
|
best-review review --stream \u5C55\u793A\u6267\u884C\u5668\u652F\u6301\u7684\u6D41\u5F0F\u8F93\u51FA
|
|
655
655
|
best-review review --executor deepseek-api \u4F7F\u7528 DeepSeek API \u6267\u884C\u5668
|
|
656
|
-
best-review review --model deepseek-v4-flash \u8986\u76D6\u6240\u6709 Agent \u7684\u6A21\u578B`},args:{stream:{type:"boolean",description:"\u5C55\u793A\u6267\u884C\u5668\u652F\u6301\u7684\u6D41\u5F0F\u8F93\u51FA"},verbose:{type:"boolean",description:"\u5C55\u793A\u539F\u59CB JSON \u6D41"},json:{type:"boolean",description:"\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u7ED3\u679C"},"log-steps":{type:"boolean",description:"\u8F93\u51FA review \u547D\u4EE4\u8BE6\u7EC6\u6B65\u9AA4\u548C\u9636\u6BB5\u8017\u65F6\uFF08\u9ED8\u8BA4\u5173\u95ED\uFF09"},severity:{type:"string",description:"\u6309\u4E25\u91CD\u7EA7\u522B\u8FC7\u6EE4\u95EE\u9898\uFF08\u9017\u53F7\u5206\u9694\uFF1Acritical,high,medium,low\uFF09"},base:{type:"string",description:"\u6BD4\u8F83\u8D77\u70B9 commit/\u5206\u652F\uFF08\u4F8B\u5982 main\u3001HEAD~3\uFF09"},head:{type:"string",description:"\u6BD4\u8F83\u7EC8\u70B9 commit/\u5206\u652F\uFF08\u9ED8\u8BA4 HEAD\uFF09"},branch:{type:"string",description:'\u5BA1\u67E5\u5206\u652F\u76F8\u5BF9\u57FA\u51C6\u5206\u652F\u7684\u53D8\u66F4\uFF08\u81EA\u52A8\u68C0\u6D4B main\uFF09\uFF1B"." \u8868\u793A\u5F53\u524D\u5206\u652F'},"skip-validation":{type:"boolean",description:"\u8DF3\u8FC7\u9A8C\u8BC1\u9636\u6BB5\uFF08\u76F4\u63A5\u5C55\u793A\u672A\u590D\u6838\u7684\u95EE\u9898\uFF09"},"fix-critical":{type:"boolean",description:"\u5BA1\u67E5\u540E\u81EA\u52A8\u4FEE\u590D critical \u7EA7\u4E25\u91CD\u98CE\u9669"},"fix-severity":{type:"string",description:"\u81EA\u52A8\u4FEE\u590D\u6307\u5B9A\u4E25\u91CD\u7EA7\u522B\uFF08\u9017\u53F7\u5206\u9694\uFF1Acritical,high,medium,low\uFF09"},"fix-dry-run":{type:"boolean",description:"\u53EA\u751F\u6210\u5E76\u6821\u9A8C\u4FEE\u590D\u8865\u4E01\uFF0C\u4E0D\u5199\u5165\u6587\u4EF6"},"fix-max-issues":{type:"string",description:"\u5355\u6B21\u81EA\u52A8\u4FEE\u590D\u6700\u591A\u5904\u7406\u7684\u95EE\u9898\u6570\uFF08\u9ED8\u8BA4 5\uFF09"},"fix-patch-file":{type:"string",description:"\u5C06\u81EA\u52A8\u4FEE\u590D\u751F\u6210\u7684 unified diff \u989D\u5916\u4FDD\u5B58\u5230\u6307\u5B9A\u6587\u4EF6"},agent:{type:"string",description:"\u53EA\u8FD0\u884C\u6307\u5B9A Agent\uFF08\u9017\u53F7\u5206\u9694\uFF1Abug-hunter,security-scan\uFF09"},"exclude-agent":{type:"string",description:"\u6392\u9664\u6307\u5B9A Agent\uFF08\u9017\u53F7\u5206\u9694\uFF09"},rule:{type:"string",description:"\u53EA\u8FD0\u884C\u6307\u5B9A\u89C4\u5219\uFF08\u9017\u53F7\u5206\u9694\uFF1Acode-security,code-bugs\uFF09"},"exclude-rule":{type:"string",description:"\u6392\u9664\u6307\u5B9A\u89C4\u5219\uFF08\u9017\u53F7\u5206\u9694\uFF09"},executor:{type:"string",description:"\u8986\u76D6\u6240\u6709 Agent \u7684\u6267\u884C\u5668\uFF08openai-compatible-api \u6216 deepseek-api\uFF09"},model:{type:"string",description:"\u8986\u76D6\u6240\u6709 Agent \u7684\u6A21\u578B\uFF08\u4F8B\u5982 gpt-
|
|
657
|
-
`))i.startsWith("+")&&!i.startsWith("+++")&&t++,i.startsWith("-")&&!i.startsWith("---")&&s++;return{additions:t,deletions:s}}function
|
|
656
|
+
best-review review --model deepseek-v4-flash \u8986\u76D6\u6240\u6709 Agent \u7684\u6A21\u578B`},args:{stream:{type:"boolean",description:"\u5C55\u793A\u6267\u884C\u5668\u652F\u6301\u7684\u6D41\u5F0F\u8F93\u51FA"},verbose:{type:"boolean",description:"\u5C55\u793A\u539F\u59CB JSON \u6D41"},json:{type:"boolean",description:"\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u7ED3\u679C"},"log-steps":{type:"boolean",description:"\u8F93\u51FA review \u547D\u4EE4\u8BE6\u7EC6\u6B65\u9AA4\u548C\u9636\u6BB5\u8017\u65F6\uFF08\u9ED8\u8BA4\u5173\u95ED\uFF09"},severity:{type:"string",description:"\u6309\u4E25\u91CD\u7EA7\u522B\u8FC7\u6EE4\u95EE\u9898\uFF08\u9017\u53F7\u5206\u9694\uFF1Acritical,high,medium,low\uFF09"},base:{type:"string",description:"\u6BD4\u8F83\u8D77\u70B9 commit/\u5206\u652F\uFF08\u4F8B\u5982 main\u3001HEAD~3\uFF09"},head:{type:"string",description:"\u6BD4\u8F83\u7EC8\u70B9 commit/\u5206\u652F\uFF08\u9ED8\u8BA4 HEAD\uFF09"},branch:{type:"string",description:'\u5BA1\u67E5\u5206\u652F\u76F8\u5BF9\u57FA\u51C6\u5206\u652F\u7684\u53D8\u66F4\uFF08\u81EA\u52A8\u68C0\u6D4B main\uFF09\uFF1B"." \u8868\u793A\u5F53\u524D\u5206\u652F'},"skip-validation":{type:"boolean",description:"\u8DF3\u8FC7\u9A8C\u8BC1\u9636\u6BB5\uFF08\u76F4\u63A5\u5C55\u793A\u672A\u590D\u6838\u7684\u95EE\u9898\uFF09"},"fix-critical":{type:"boolean",description:"\u5BA1\u67E5\u540E\u81EA\u52A8\u4FEE\u590D critical \u7EA7\u4E25\u91CD\u98CE\u9669"},"fix-severity":{type:"string",description:"\u81EA\u52A8\u4FEE\u590D\u6307\u5B9A\u4E25\u91CD\u7EA7\u522B\uFF08\u9017\u53F7\u5206\u9694\uFF1Acritical,high,medium,low\uFF09"},"fix-dry-run":{type:"boolean",description:"\u53EA\u751F\u6210\u5E76\u6821\u9A8C\u4FEE\u590D\u8865\u4E01\uFF0C\u4E0D\u5199\u5165\u6587\u4EF6"},"fix-max-issues":{type:"string",description:"\u5355\u6B21\u81EA\u52A8\u4FEE\u590D\u6700\u591A\u5904\u7406\u7684\u95EE\u9898\u6570\uFF08\u9ED8\u8BA4 5\uFF09"},"fix-patch-file":{type:"string",description:"\u5C06\u81EA\u52A8\u4FEE\u590D\u751F\u6210\u7684 unified diff \u989D\u5916\u4FDD\u5B58\u5230\u6307\u5B9A\u6587\u4EF6"},agent:{type:"string",description:"\u53EA\u8FD0\u884C\u6307\u5B9A Agent\uFF08\u9017\u53F7\u5206\u9694\uFF1Abug-hunter,security-scan\uFF09"},"exclude-agent":{type:"string",description:"\u6392\u9664\u6307\u5B9A Agent\uFF08\u9017\u53F7\u5206\u9694\uFF09"},rule:{type:"string",description:"\u53EA\u8FD0\u884C\u6307\u5B9A\u89C4\u5219\uFF08\u9017\u53F7\u5206\u9694\uFF1Acode-security,code-bugs\uFF09"},"exclude-rule":{type:"string",description:"\u6392\u9664\u6307\u5B9A\u89C4\u5219\uFF08\u9017\u53F7\u5206\u9694\uFF09"},executor:{type:"string",description:"\u8986\u76D6\u6240\u6709 Agent \u7684\u6267\u884C\u5668\uFF08openai-compatible-api \u6216 deepseek-api\uFF09"},model:{type:"string",description:"\u8986\u76D6\u6240\u6709 Agent \u7684\u6A21\u578B\uFF08\u4F8B\u5982 gpt-5.4-mini \u6216 deepseek-v4-flash\uFF09"},confidence:{type:"string",description:"\u6700\u5C0F\u7F6E\u4FE1\u5EA6\u9608\u503C 0-100\uFF08\u9ED8\u8BA4 70\uFF09\uFF0C\u4F4E\u4E8E\u9608\u503C\u7684\u95EE\u9898\u4F1A\u88AB\u8FC7\u6EE4"},files:{type:"string",description:"\u53EA\u5BA1\u67E5\u6307\u5B9A\u6587\u4EF6\uFF08\u8DEF\u5F84\u7528\u9017\u53F7\u5206\u9694\uFF09"},ignore:{type:"string",description:"\u989D\u5916\u5FFD\u7565\u7684\u76EE\u5F55\u6216\u6587\u4EF6\uFF08\u9017\u53F7\u5206\u9694\uFF0C\u4F8B\u5982 dist,fixtures/**\uFF09"},full:{type:"boolean",description:"\u5BA1\u67E5\u5B8C\u6574\u6587\u4EF6\u5185\u5BB9\uFF0C\u4E0D\u4F9D\u8D56 Git diff\uFF08\u9700\u8981 --files\uFF09"},"tech-doc":{type:"string",description:"\u6280\u672F\u6587\u6863\u8DEF\u5F84\u6216\u98DE\u4E66 docx \u94FE\u63A5\uFF0C\u7528\u4E8E\u5BF9\u7167\u9A8C\u6536 diff"}},run:async({args:e})=>{try{let t=ob(e);await Cb({verbose:t.verbose,json:t.json,stream:t.stream,logSteps:t["log-steps"],severity:t.severity,base:t.base,head:t.head,branch:t.branch,skipValidation:t["skip-validation"],agent:t.agent,excludeAgent:t["exclude-agent"],rule:t.rule,excludeRule:t["exclude-rule"],executor:t.executor,model:t.model,confidence:t.confidence,files:t.files,ignore:t.ignore,full:t.full,techDoc:t["tech-doc"],fixCritical:t["fix-critical"],fixSeverity:t["fix-severity"],fixDryRun:t["fix-dry-run"],fixMaxIssues:t["fix-max-issues"],fixPatchFile:t["fix-patch-file"]})}catch(t){if(t instanceof we){let i=t.errors[0]?.message||"\u53C2\u6570\u65E0\u6548";e.json?console.error(JSON.stringify({error:i})):h.error(i),process.exit(1)}throw t}}};Zs();M();Ge();function W$(e){let t=0,s=0;for(let i of e.split(`
|
|
657
|
+
`))i.startsWith("+")&&!i.startsWith("+++")&&t++,i.startsWith("-")&&!i.startsWith("---")&&s++;return{additions:t,deletions:s}}function K$(e){let t=process.env.GITLAB_HOST?.trim();if(t){let s=t.replace(/\/+$/,"");return/\/api\/v\d+$/i.test(s)?s:`${s}/api/v4`}return`${e.origin}/api/v4`}function z$(e){let t=new URL(e),s=t.pathname.replace(/\/+$/,""),i=s.match(/^\/(.+?)(?:\/-|)\/merge_requests\/(\d+)$/);if(!i?.[1]||!i[2])throw new Error("MR \u94FE\u63A5\u65E0\u6548\u3002\u8BF7\u63D0\u4F9B GitLab Merge Request \u9875\u9762 URL\u3002");return{host:t.hostname,projectPath:decodeURIComponent(i[1]),mrIid:i[2],apiBaseUrl:K$(t),webUrl:`${t.origin}${s}`}}function Sb(){let e=process.env.GITLAB_TOKEN?.trim();if(!e)throw new Error("\u7F3A\u5C11 GITLAB_TOKEN\uFF0C\u65E0\u6CD5\u8BFB\u53D6 GitLab Merge Request\u3002");return e}async function Xf(e,t){let s=await jt(`${e.apiBaseUrl}${t}`,{headers:{"PRIVATE-TOKEN":Sb()}});if(!s.ok){let i=await s.text().catch(()=>"");throw new Error(`GitLab API \u8BF7\u6C42\u5931\u8D25\uFF1A${s.status}${i?` ${i.slice(0,200)}`:""}`)}return await s.json()}async function H$(e,t){let s=await jt(`${e.apiBaseUrl}${t}`,{headers:{"PRIVATE-TOKEN":Sb()}});if(!s.ok){let i=await s.text().catch(()=>"");throw new Error(`GitLab \u6587\u4EF6\u8BFB\u53D6\u5931\u8D25\uFF1A${s.status}${i?` ${i.slice(0,200)}`:""}`)}return await s.text()}function J$(e){return e.deleted_file?"deleted":e.new_file?"added":e.renamed_file?"renamed":"modified"}function Y$(e){let t=e.old_path||e.new_path||"",s=e.new_path||e.old_path||"",i=e.deleted_file?t:s,r=e.diff||"",{additions:n,deletions:o}=W$(r);return{file:i,status:J$(e),diff:r,additions:n,deletions:o,oldPath:t,newPath:s,isNewFile:e.new_file===!0,isDeletedFile:e.deleted_file===!0,isRenamedFile:e.renamed_file===!0}}async function Z$(e,t,s){let i=await Promise.all(s.map(async r=>{let n=r.isDeletedFile?r.oldPath||r.file:r.newPath||r.file,o=r.isDeletedFile?t.baseSha:t.headSha,a=encodeURIComponent(n),u=await H$(e,`/projects/${encodeURIComponent(e.projectPath)}/repository/files/${a}/raw?ref=${encodeURIComponent(o)}`);return[r.file,u]}));return Object.fromEntries(i)}async function Ab(e){let t=z$(e),[s,i]=await Promise.all([Xf(t,`/projects/${encodeURIComponent(t.projectPath)}/merge_requests/${t.mrIid}`),Xf(t,`/projects/${encodeURIComponent(t.projectPath)}/merge_requests/${t.mrIid}/versions`)]),r=[...i].filter(l=>l.id&&l.base_commit_sha&&l.start_commit_sha&&l.head_commit_sha).sort((l,c)=>Number(c.id)-Number(l.id))[0];if(!r?.id||!r.base_commit_sha||!r.start_commit_sha||!r.head_commit_sha)throw new Error("GitLab Merge Request \u6CA1\u6709\u53EF\u7528\u7684 diff version\u3002");let n=await Xf(t,`/projects/${encodeURIComponent(t.projectPath)}/merge_requests/${t.mrIid}/versions/${r.id}?unidiff=true`),o={id:String(n.id??r.id),baseSha:n.base_commit_sha||r.base_commit_sha,startSha:n.start_commit_sha||r.start_commit_sha,headSha:n.head_commit_sha||r.head_commit_sha},a=(n.diffs||[]).map(Y$).filter(l=>l.file&&l.diff),u=await Z$(t,o,a);return{target:t,mergeRequest:{iid:String(s.iid??t.mrIid),title:s.title||`MR !${t.mrIid}`,webUrl:s.web_url||t.webUrl},version:o,diffs:a,remoteFiles:u}}function Qf(e){return e.trim().toLowerCase().replace(/:\d+$/,"")}function ed(e){return decodeURIComponent(e).trim().replace(/^\/+/,"").replace(/\.git$/i,"").replace(/\/+$/,"").toLowerCase()}function X$(e){let t=e.trim();if(!t)return null;try{let i=new URL(t),r=i.protocol==="ssh:"?i.pathname.replace(/^\/+/,""):i.pathname.slice(1);return{host:Qf(i.hostname),projectPath:ed(r)}}catch{}let s=t.match(/^(?:[^@]+@)?([^:]+):(.+)$/);return!s?.[1]||!s[2]?null:{host:Qf(s[1]),projectPath:ed(s[2])}}function Q$(e,t,s){let i=X$(e);return i?i.host===Qf(t)&&i.projectPath===ed(s):!1}async function eT(e,t,s,i){let r=Ja(t,s),n=Ya(r);if(i){let o=n.find(a=>i.has(a));return o?{file:o}:null}for(let o of n){let a=await vn(e,o);if(a!==null)return{file:o,content:a}}return null}function tT(e,t,s,i){let r=[];for(let n of e){let o=t[n.file];typeof o=="string"&&r.push({file:n.file,content:vs(o,"changed-file"),role:"changed-file",source:"gitlab-remote",ref:n.isDeletedFile?i:s,relatedFiles:[n.file]})}return r}async function Rb(e){let{reviewTarget:t,diffs:s,remoteFiles:i}=e,r=tT(s,i,t.diffVersion.headSha,t.diffVersion.baseSha);if(!await qa())return r;let o=await ew("origin");if(!o||!Q$(o,t.host,t.projectPath))return r;let a=t.diffVersion.headSha;if(!await Q0(a))return r;let u=await tw(a).catch(()=>null),l=u&&u.length>0?new Set(u):null,c=new Set(s.map(d=>d.file)),f=new Map;for(let d of s){if(d.isDeletedFile)continue;let p=i[d.file];if(!p)continue;let m=Fn(p);for(let g of m){let D=await eT(a,d.newPath||d.file,g,l||void 0);if(!D||c.has(D.file))continue;let w=f.get(D.file);if(w){let v=new Set([...w.relatedFiles||[],d.file]);w.relatedFiles=[...v];continue}let y=D.content??await vn(a,D.file);y!==null&&f.set(D.file,{file:D.file,content:vs(y,"dependency"),role:"dependency",source:"local-git",ref:a,relatedFiles:[d.file]})}}return[...r,...f.values()]}M();async function kb(e){let t=Date.now(),{url:s,verbose:i=!1,json:r=!1,stream:n=!1,logSteps:o=!1,severity:a,skipValidation:u=!1,agent:l,excludeAgent:c,rule:f,excludeRule:d,executor:p,model:m,confidence:g,ignore:D,techDoc:w}=e;r||h.logo();let y=process.cwd(),v=await le(y);if(!await xn({config:v,executorOverride:p,modelOverride:m,json:r,requirePing:!0}))return;r||h.chart("\u6B63\u5728\u8BFB\u53D6 GitLab Merge Request...");let F=await Ab(s),S={kind:"gitlab-mr",mrUrl:F.mergeRequest.webUrl,host:F.target.host,projectPath:F.target.projectPath,mrIid:F.target.mrIid,apiBaseUrl:F.target.apiBaseUrl,diffVersion:F.version},B=await Rb({reviewTarget:S,diffs:F.diffs,remoteFiles:F.remoteFiles});r||h.info(`\u76EE\u6807 MR\uFF1A!${F.mergeRequest.iid} ${F.mergeRequest.title}`),await Zf({projectPath:y,config:v,diffs:F.diffs,sourceLabel:`\uFF08GitLab MR !${F.mergeRequest.iid}\uFF09`,verbose:i,json:r,stream:n,severityFilter:a,base:F.version.baseSha,head:F.version.headSha,skipValidation:u,agentFilter:l,excludeAgents:c,ruleFilter:f,excludeRules:d,executor:p,model:m,confidence:g,ignore:D,fixSeverities:[],metadata:{reviewTarget:S},supplementalContextFiles:B,techDocSource:w,commitMessages:[],commandStartTimeMs:t,logSteps:o,readinessChecked:!0})}var Ib={meta:{name:"review-mr",description:`\u5BA1\u67E5 GitLab Merge Request \u8FDC\u7A0B\u6539\u52A8\uFF0C\u5E76\u76F4\u63A5\u56DE\u8BC4\u5230 MR
|
|
658
658
|
|
|
659
659
|
Examples:
|
|
660
660
|
best-review review-mr https://gitlab.example.com/group/project/-/merge_requests/123
|
|
661
661
|
best-review review-mr <mr-url> --agent security-scan
|
|
662
662
|
best-review review-mr <mr-url> --tech-doc docs/tech-plan.md
|
|
663
663
|
best-review review-mr <mr-url> --log-steps
|
|
664
|
-
best-review review-mr <mr-url> --executor deepseek-api --model deepseek-chat`},args:{url:{type:"positional",required:!0,description:"GitLab Merge Request \u9875\u9762 URL"},stream:{type:"boolean",description:"\u5C55\u793A\u6267\u884C\u5668\u652F\u6301\u7684\u6D41\u5F0F\u8F93\u51FA"},verbose:{type:"boolean",description:"\u5C55\u793A\u539F\u59CB JSON \u6D41"},json:{type:"boolean",description:"\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u7ED3\u679C"},"log-steps":{type:"boolean",description:"\u8F93\u51FA review-mr \u547D\u4EE4\u8BE6\u7EC6\u6B65\u9AA4\u548C\u9636\u6BB5\u8017\u65F6\uFF08\u9ED8\u8BA4\u5173\u95ED\uFF09"},severity:{type:"string",description:"\u6309\u4E25\u91CD\u7EA7\u522B\u8FC7\u6EE4\u95EE\u9898\uFF08\u9017\u53F7\u5206\u9694\uFF1Acritical,high,medium,low\uFF09"},"skip-validation":{type:"boolean",description:"\u8DF3\u8FC7\u9A8C\u8BC1\u9636\u6BB5\uFF08\u76F4\u63A5\u5C55\u793A\u672A\u590D\u6838\u7684\u95EE\u9898\uFF09"},agent:{type:"string",description:"\u53EA\u8FD0\u884C\u6307\u5B9A Agent\uFF08\u9017\u53F7\u5206\u9694\uFF1Abug-hunter,security-scan\uFF09"},"exclude-agent":{type:"string",description:"\u6392\u9664\u6307\u5B9A Agent\uFF08\u9017\u53F7\u5206\u9694\uFF09"},rule:{type:"string",description:"\u53EA\u8FD0\u884C\u6307\u5B9A\u89C4\u5219\uFF08\u9017\u53F7\u5206\u9694\uFF1Acode-security,code-bugs\uFF09"},"exclude-rule":{type:"string",description:"\u6392\u9664\u6307\u5B9A\u89C4\u5219\uFF08\u9017\u53F7\u5206\u9694\uFF09"},executor:{type:"string",description:"\u8986\u76D6\u6240\u6709 Agent \u7684\u6267\u884C\u5668\uFF08openai-compatible-api \u6216 deepseek-api\uFF09"},model:{type:"string",description:"\u8986\u76D6\u6240\u6709 Agent \u7684\u6A21\u578B\uFF08\u4F8B\u5982 gpt-
|
|
664
|
+
best-review review-mr <mr-url> --executor deepseek-api --model deepseek-chat`},args:{url:{type:"positional",required:!0,description:"GitLab Merge Request \u9875\u9762 URL"},stream:{type:"boolean",description:"\u5C55\u793A\u6267\u884C\u5668\u652F\u6301\u7684\u6D41\u5F0F\u8F93\u51FA"},verbose:{type:"boolean",description:"\u5C55\u793A\u539F\u59CB JSON \u6D41"},json:{type:"boolean",description:"\u4EE5 JSON \u683C\u5F0F\u8F93\u51FA\u7ED3\u679C"},"log-steps":{type:"boolean",description:"\u8F93\u51FA review-mr \u547D\u4EE4\u8BE6\u7EC6\u6B65\u9AA4\u548C\u9636\u6BB5\u8017\u65F6\uFF08\u9ED8\u8BA4\u5173\u95ED\uFF09"},severity:{type:"string",description:"\u6309\u4E25\u91CD\u7EA7\u522B\u8FC7\u6EE4\u95EE\u9898\uFF08\u9017\u53F7\u5206\u9694\uFF1Acritical,high,medium,low\uFF09"},"skip-validation":{type:"boolean",description:"\u8DF3\u8FC7\u9A8C\u8BC1\u9636\u6BB5\uFF08\u76F4\u63A5\u5C55\u793A\u672A\u590D\u6838\u7684\u95EE\u9898\uFF09"},agent:{type:"string",description:"\u53EA\u8FD0\u884C\u6307\u5B9A Agent\uFF08\u9017\u53F7\u5206\u9694\uFF1Abug-hunter,security-scan\uFF09"},"exclude-agent":{type:"string",description:"\u6392\u9664\u6307\u5B9A Agent\uFF08\u9017\u53F7\u5206\u9694\uFF09"},rule:{type:"string",description:"\u53EA\u8FD0\u884C\u6307\u5B9A\u89C4\u5219\uFF08\u9017\u53F7\u5206\u9694\uFF1Acode-security,code-bugs\uFF09"},"exclude-rule":{type:"string",description:"\u6392\u9664\u6307\u5B9A\u89C4\u5219\uFF08\u9017\u53F7\u5206\u9694\uFF09"},executor:{type:"string",description:"\u8986\u76D6\u6240\u6709 Agent \u7684\u6267\u884C\u5668\uFF08openai-compatible-api \u6216 deepseek-api\uFF09"},model:{type:"string",description:"\u8986\u76D6\u6240\u6709 Agent \u7684\u6A21\u578B\uFF08\u4F8B\u5982 gpt-5.4-mini \u6216 deepseek-chat\uFF09"},confidence:{type:"string",description:"\u6700\u5C0F\u7F6E\u4FE1\u5EA6\u9608\u503C 0-100\uFF08\u9ED8\u8BA4 70\uFF09\uFF0C\u4F4E\u4E8E\u9608\u503C\u7684\u95EE\u9898\u4F1A\u88AB\u8FC7\u6EE4"},ignore:{type:"string",description:"\u989D\u5916\u5FFD\u7565\u7684\u76EE\u5F55\u6216\u6587\u4EF6\uFF08\u9017\u53F7\u5206\u9694\uFF0C\u4F8B\u5982 dist,fixtures/**\uFF09"},"tech-doc":{type:"string",description:"\u6280\u672F\u6587\u6863\u8DEF\u5F84\u6216\u98DE\u4E66 docx \u94FE\u63A5\uFF0C\u7528\u4E8E\u5BF9\u7167\u9A8C\u6536 MR diff"}},run:async({args:e})=>{try{let t=ab(e);await kb({url:t.url,verbose:t.verbose,json:t.json,stream:t.stream,logSteps:t["log-steps"],severity:t.severity,skipValidation:t["skip-validation"],agent:t.agent,excludeAgent:t["exclude-agent"],rule:t.rule,excludeRule:t["exclude-rule"],executor:t.executor,model:t.model,confidence:t.confidence,ignore:t.ignore,techDoc:t["tech-doc"]})}catch(t){if(t instanceof we){let r=t.errors[0]?.message||"\u53C2\u6570\u65E0\u6548";e.json?console.error(JSON.stringify({error:r})):h.error(r),process.exit(1)}let s=t instanceof Error?t.message:String(t);e.json?console.error(JSON.stringify({error:s})):h.error(s),process.exit(1)}}};var _b={meta:{name:"best-review",version:ai.version,description:"AI \u9A71\u52A8\u7684\u4EE3\u7801\u5BA1\u67E5 CLI"},subCommands:{init:jw,review:xb,"review-mr":Ib,config:sy,doctor:iy,agents:jD,executors:oy,eval:$w,rules:Gw,extends:Ow,"setup-command":Hf}};M();je();ga();var Qa=process.argv.slice(2),sT=["-v","--version","-h","--help"],iT=Qa.length===0||Qa.some(e=>sT.includes(e));iT&&(h.logo(),(Qa.includes("-v")||Qa.includes("--version"))&&(h.plain(`v${ai.version}`),process.exit(0)));qd(_b);
|