best-review 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +611 -0
  2. package/dist/best-review.cjs +664 -0
  3. package/dist/defaults/agents/EXAMPLE.md.template +31 -0
  4. package/dist/defaults/agents/bug-hunter.md +35 -0
  5. package/dist/defaults/agents/consistency-check.md +33 -0
  6. package/dist/defaults/agents/general.md +36 -0
  7. package/dist/defaults/agents/performance-check.md +34 -0
  8. package/dist/defaults/agents/security-scan.md +35 -0
  9. package/dist/defaults/agents/validation.md +35 -0
  10. package/dist/defaults/prompts/output-format.md +37 -0
  11. package/dist/defaults/prompts/output-format.test.ts +15 -0
  12. package/dist/defaults/prompts/validation-instructions.md +116 -0
  13. package/dist/defaults/prompts/validation.md +178 -0
  14. package/dist/defaults/rules/EXAMPLE.md.template +32 -0
  15. package/dist/defaults/rules/code-bugs.md +45 -0
  16. package/dist/defaults/rules/code-consistency.md +100 -0
  17. package/dist/defaults/rules/code-general.md +59 -0
  18. package/dist/defaults/rules/code-performance.md +44 -0
  19. package/dist/defaults/rules/code-security.md +39 -0
  20. package/dist/defaults/rules/config-security.md +31 -0
  21. package/package.json +91 -0
  22. package/src/defaults/agents/EXAMPLE.md.template +31 -0
  23. package/src/defaults/agents/bug-hunter.md +35 -0
  24. package/src/defaults/agents/consistency-check.md +33 -0
  25. package/src/defaults/agents/general.md +36 -0
  26. package/src/defaults/agents/performance-check.md +34 -0
  27. package/src/defaults/agents/security-scan.md +35 -0
  28. package/src/defaults/agents/validation.md +35 -0
  29. package/src/defaults/prompts/output-format.md +37 -0
  30. package/src/defaults/prompts/output-format.test.ts +15 -0
  31. package/src/defaults/prompts/validation-instructions.md +116 -0
  32. package/src/defaults/prompts/validation.md +178 -0
  33. package/src/defaults/rules/EXAMPLE.md.template +32 -0
  34. package/src/defaults/rules/code-bugs.md +45 -0
  35. package/src/defaults/rules/code-consistency.md +100 -0
  36. package/src/defaults/rules/code-general.md +59 -0
  37. package/src/defaults/rules/code-performance.md +44 -0
  38. package/src/defaults/rules/code-security.md +39 -0
  39. package/src/defaults/rules/config-security.md +31 -0
@@ -0,0 +1,664 @@
1
+ #!/usr/bin/env node
2
+ "use strict";var Pb=Object.create;var su=Object.defineProperty;var Bb=Object.getOwnPropertyDescriptor;var Ob=Object.getOwnPropertyNames;var Lb=Object.getPrototypeOf,Nb=Object.prototype.hasOwnProperty;var re=(e,t)=>()=>(e&&(t=e(e=0)),t);var I=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),er=(e,t)=>{for(var s in t)su(e,s,{get:t[s],enumerable:!0})},Mb=(e,t,s,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ob(t))!Nb.call(e,r)&&r!==s&&su(e,r,{get:()=>t[r],enumerable:!(i=Bb(t,r))||i.enumerable});return e};var gt=(e,t,s)=>(s=e!=null?Pb(Lb(e)):{},Mb(t||!e||!e.__esModule?su(s,"default",{value:e,enumerable:!0}):s,e));var _d={};er(_d,{kCancel:()=>kd,prompt:()=>Id});function iv(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function rv(){if(cd)return du;cd=1;let e="\x1B",t=`${e}[`,s="\x07",i={to(o,a){return a?`${t}${a+1};${o+1}H`:`${t}${o+1}G`},move(o,a){let u="";return o<0?u+=`${t}${-o}D`:o>0&&(u+=`${t}${o}C`),a<0?u+=`${t}${-a}A`:a>0&&(u+=`${t}${a}B`),u},up:(o=1)=>`${t}${o}A`,down:(o=1)=>`${t}${o}B`,forward:(o=1)=>`${t}${o}C`,backward:(o=1)=>`${t}${o}D`,nextLine:(o=1)=>`${t}E`.repeat(o),prevLine:(o=1)=>`${t}F`.repeat(o),left:`${t}G`,hide:`${t}?25l`,show:`${t}?25h`,save:`${e}7`,restore:`${e}8`},r={up:(o=1)=>`${t}S`.repeat(o),down:(o=1)=>`${t}T`.repeat(o)},n={screen:`${t}2J`,up:(o=1)=>`${t}1J`.repeat(o),down:(o=1)=>`${t}J`.repeat(o),line:`${t}2K`,lineEnd:`${t}K`,lineStart:`${t}1K`,lines(o){let a="";for(let u=0;u<o;u++)a+=this.line+(u<o-1?i.up():"");return o&&(a+=i.left),a}};return du={cursor:i,scroll:r,erase:n,beep:s},du}function nv(){if(fd)return Rn.exports;fd=1;let e=process||{},t=e.argv||[],s=e.env||{},i=!(s.NO_COLOR||t.includes("--no-color"))&&(!!s.FORCE_COLOR||t.includes("--color")||e.platform==="win32"||(e.stdout||{}).isTTY&&s.TERM!=="dumb"||!!s.CI),r=(a,u,l=a)=>c=>{let f=""+c,d=f.indexOf(u,a.length);return~d?a+n(f,u,l,d)+u:a+f+u},n=(a,u,l,c)=>{let f="",d=0;do f+=a.substring(d,c)+l,d=c+u.length,c=a.indexOf(u,d);while(~c);return f+a.substring(d)},o=(a=i)=>{let u=a?r:()=>String;return{isColorSupported:a,reset:u("\x1B[0m","\x1B[0m"),bold:u("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:u("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:u("\x1B[3m","\x1B[23m"),underline:u("\x1B[4m","\x1B[24m"),inverse:u("\x1B[7m","\x1B[27m"),hidden:u("\x1B[8m","\x1B[28m"),strikethrough:u("\x1B[9m","\x1B[29m"),black:u("\x1B[30m","\x1B[39m"),red:u("\x1B[31m","\x1B[39m"),green:u("\x1B[32m","\x1B[39m"),yellow:u("\x1B[33m","\x1B[39m"),blue:u("\x1B[34m","\x1B[39m"),magenta:u("\x1B[35m","\x1B[39m"),cyan:u("\x1B[36m","\x1B[39m"),white:u("\x1B[37m","\x1B[39m"),gray:u("\x1B[90m","\x1B[39m"),bgBlack:u("\x1B[40m","\x1B[49m"),bgRed:u("\x1B[41m","\x1B[49m"),bgGreen:u("\x1B[42m","\x1B[49m"),bgYellow:u("\x1B[43m","\x1B[49m"),bgBlue:u("\x1B[44m","\x1B[49m"),bgMagenta:u("\x1B[45m","\x1B[49m"),bgCyan:u("\x1B[46m","\x1B[49m"),bgWhite:u("\x1B[47m","\x1B[49m"),blackBright:u("\x1B[90m","\x1B[39m"),redBright:u("\x1B[91m","\x1B[39m"),greenBright:u("\x1B[92m","\x1B[39m"),yellowBright:u("\x1B[93m","\x1B[39m"),blueBright:u("\x1B[94m","\x1B[39m"),magentaBright:u("\x1B[95m","\x1B[39m"),cyanBright:u("\x1B[96m","\x1B[39m"),whiteBright:u("\x1B[97m","\x1B[39m"),bgBlackBright:u("\x1B[100m","\x1B[49m"),bgRedBright:u("\x1B[101m","\x1B[49m"),bgGreenBright:u("\x1B[102m","\x1B[49m"),bgYellowBright:u("\x1B[103m","\x1B[49m"),bgBlueBright:u("\x1B[104m","\x1B[49m"),bgMagentaBright:u("\x1B[105m","\x1B[49m"),bgCyanBright:u("\x1B[106m","\x1B[49m"),bgWhiteBright:u("\x1B[107m","\x1B[49m")}};return Rn.exports=o(),Rn.exports.createColors=o,Rn.exports}function av({onlyFirst:e=!1}={}){let t=["[\\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(t,e?void 0:"g")}function Fd(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(uv,"")}function Cd(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function sr(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=Fd(e),e.length===0))return 0;e=e.replace(dv()," ");let s=t.ambiguousIsNarrow?1:2,i=0;for(let r of e){let n=r.codePointAt(0);if(!(n<=31||n>=127&&n<=159||n>=768&&n<=879))switch(cv.eastAsianWidth(r)){case"F":case"W":i+=2;break;case"A":i+=s;break;default:i+=1}}return i}function mv(){let e=new Map;for(let[t,s]of Object.entries(oe)){for(let[i,r]of Object.entries(s))oe[i]={open:`\x1B[${r[0]}m`,close:`\x1B[${r[1]}m`},s[i]=oe[i],e.set(r[0],r[1]);Object.defineProperty(oe,t,{value:s,enumerable:!1})}return Object.defineProperty(oe,"codes",{value:e,enumerable:!1}),oe.color.close="\x1B[39m",oe.bgColor.close="\x1B[49m",oe.color.ansi=dd(),oe.color.ansi256=hd(),oe.color.ansi16m=pd(),oe.bgColor.ansi=dd(hu),oe.bgColor.ansi256=hd(hu),oe.bgColor.ansi16m=pd(hu),Object.defineProperties(oe,{rgbToAnsi256:{value:(t,s,i)=>t===s&&s===i?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(s/255*5)+Math.round(i/255*5),enumerable:!1},hexToRgb:{value:t=>{let s=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!s)return[0,0,0];let[i]=s;i.length===3&&(i=[...i].map(n=>n+n).join(""));let r=Number.parseInt(i,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:t=>oe.rgbToAnsi256(...oe.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value:t=>{if(t<8)return 30+t;if(t<16)return 90+(t-8);let s,i,r;if(t>=232)s=((t-232)*10+8)/255,i=s,r=s;else{t-=16;let a=t%36;s=Math.floor(t/36)/5,i=Math.floor(a/6)/5,r=a%6/5}let n=Math.max(s,i,r)*2;if(n===0)return 30;let o=30+(Math.round(r)<<2|Math.round(i)<<1|Math.round(s));return n===2&&(o+=60),o},enumerable:!1},rgbToAnsi:{value:(t,s,i)=>oe.ansi256ToAnsi(oe.rgbToAnsi256(t,s,i)),enumerable:!1},hexToAnsi:{value:t=>oe.ansi256ToAnsi(oe.hexToAnsi256(t)),enumerable:!1}}),oe}function Dd(e,t,s){return String(e).normalize().replace(/\r\n/g,`
3
+ `).split(`
4
+ `).map(i=>vv(i,t,s)).join(`
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
+ `),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(`
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
+ `?(n&&(i+=gd("")),r&&f&&(i+=md(f))):c===`
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(`
11
+ `),kn(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let t=Dd(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
12
+ `).length-1;this.output.write(nt.cursor.move(-999,t*-1))}render(){let t=Dd(this._render(this)??"",process.stdout.columns,{hard:!0});if(t!==this._prevFrame){if(this.state==="initial")this.output.write(nt.cursor.hide);else{let s=Fv(this._prevFrame,t);if(this.restoreCursor(),s&&s?.length===1){let i=s[0];this.output.write(nt.cursor.move(0,i)),this.output.write(nt.erase.lines(1));let r=t.split(`
13
+ `);this.output.write(r[i]),this._prevFrame=t,this.output.write(nt.cursor.move(0,r.length-i-1));return}if(s&&s?.length>1){let i=s[0];this.output.write(nt.cursor.move(0,i)),this.output.write(nt.erase.down());let r=t.split(`
14
+ `).slice(i);this.output.write(r.join(`
15
+ `)),this._prevFrame=t;return}this.output.write(nt.erase.down())}this.output.write(t),this.state==="initial"&&(this.state="active"),this._prevFrame=t}}},gu=class extends ri{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",s=>{this.output.write(nt.cursor.move(0,-1)),this.value=s,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}},Sv=Object.defineProperty,Av=(e,t,s)=>t in e?Sv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,wd=(e,t,s)=>(Av(e,typeof t!="symbol"?t+"":t,s),s),Rv=class extends ri{constructor(e){super(e,!1),wd(this,"options"),wd(this,"cursor",0),this.options=e.options,this.value=[...e.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:t})=>t===e.cursorAt),0),this.on("key",t=>{t==="a"&&this.toggleAll()}),this.on("cursor",t=>{switch(t){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){let e=this.value.length===this.options.length;this.value=e?[]:this.options.map(t=>t.value)}toggleValue(){let e=this.value.includes(this._value);this.value=e?this.value.filter(t=>t!==this._value):[...this.value,this._value]}},kv=Object.defineProperty,Iv=(e,t,s)=>t in e?kv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,bd=(e,t,s)=>(Iv(e,typeof t!="symbol"?t+"":t,s),s),Du=class extends ri{constructor(t){super(t,!1),bd(this,"options"),bd(this,"cursor",0),this.options=t.options,this.cursor=this.options.findIndex(({value:s})=>s===t.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",s=>{switch(s){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}},yu=class extends ri{get valueWithCursor(){if(this.state==="submit")return this.value;if(this.cursor>=this.value.length)return`${this.value}\u2588`;let t=this.value.slice(0,this.cursor),[s,...i]=this.value.slice(this.cursor);return`${t}${A.inverse(s)}${i.join("")}`}get cursor(){return this._cursor}constructor(t){super(t),this.on("finalize",()=>{this.value||(this.value=t.defaultValue)})}};$v=_v(),ot=(e,t)=>$v?e:t,Tv=ot("\u276F",">"),Pv=ot("\u25A0","x"),Bv=ot("\u25B2","x"),Ov=ot("\u2714","\u221A"),te=ot(""),ni=ot(""),wu=ot("\u25CF",">"),bu=ot("\u25CB"," "),Lv=ot("\u25FB","[\u2022]"),vd=ot("\u25FC","[+]"),Nv=ot("\u25FB","[ ]"),$n=e=>{switch(e){case"initial":case"active":return A.cyan(Tv);case"cancel":return A.red(Pv);case"error":return A.yellow(Bv);case"submit":return A.green(Ov)}},vu=e=>{let{cursor:t,options:s,style:i}=e,r=e.maxItems??Number.POSITIVE_INFINITY,n=Math.max(process.stdout.rows-4,0),o=Math.min(n,Math.max(r,5)),a=0;t>=a+o-3?a=Math.max(Math.min(t-o+3,s.length-o),0):t<a+2&&(a=Math.max(t-2,0));let u=o<s.length&&a>0,l=o<s.length&&a+o<s.length;return s.slice(a,a+o).map((c,f,d)=>{let p=f===0&&u,m=f===d.length-1&&l;return p||m?A.dim("..."):i(c,f+a===t)})},Mv=e=>new yu({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,render(){let t=`${A.gray(te)}
16
+ ${$n(this.state)} ${e.message}
17
+ `,s=e.placeholder?A.inverse(e.placeholder[0])+A.dim(e.placeholder.slice(1)):A.inverse(A.hidden("_")),i=this.value?this.valueWithCursor:s;switch(this.state){case"error":return`${t.trim()}
18
+ ${A.yellow(te)} ${i}
19
+ ${A.yellow(ni)} ${A.yellow(this.error)}
20
+ `;case"submit":return`${t}${A.gray(te)} ${A.dim(this.value||e.placeholder)}`;case"cancel":return`${t}${A.gray(te)} ${A.strikethrough(A.dim(this.value??""))}${this.value?.trim()?`
21
+ ${A.gray(te)}`:""}`;default:return`${t}${A.cyan(te)} ${i}
22
+ ${A.cyan(ni)}
23
+ `}}}).prompt(),jv=e=>{let t=e.active??"Yes",s=e.inactive??"No";return new gu({active:t,inactive:s,initialValue:e.initialValue??!0,render(){let i=`${A.gray(te)}
24
+ ${$n(this.state)} ${e.message}
25
+ `,r=this.value?t:s;switch(this.state){case"submit":return`${i}${A.gray(te)} ${A.dim(r)}`;case"cancel":return`${i}${A.gray(te)} ${A.strikethrough(A.dim(r))}
26
+ ${A.gray(te)}`;default:return`${i}${A.cyan(te)} ${this.value?`${A.green(wu)} ${t}`:`${A.dim(bu)} ${A.dim(t)}`} ${A.dim("/")} ${this.value?`${A.dim(bu)} ${A.dim(s)}`:`${A.green(wu)} ${s}`}
27
+ ${A.cyan(ni)}
28
+ `}}}).prompt()},qv=e=>{let t=(s,i)=>{let r=s.label??String(s.value);switch(i){case"selected":return`${A.dim(r)}`;case"active":return`${A.green(wu)} ${r} ${s.hint?A.dim(`(${s.hint})`):""}`;case"cancelled":return`${A.strikethrough(A.dim(r))}`;default:return`${A.dim(bu)} ${A.dim(r)}`}};return new Du({options:e.options,initialValue:e.initialValue,render(){let s=`${A.gray(te)}
29
+ ${$n(this.state)} ${e.message}
30
+ `;switch(this.state){case"submit":return`${s}${A.gray(te)} ${t(this.options[this.cursor],"selected")}`;case"cancel":return`${s}${A.gray(te)} ${t(this.options[this.cursor],"cancelled")}
31
+ ${A.gray(te)}`;default:return`${s}${A.cyan(te)} ${vu({cursor:this.cursor,options:this.options,maxItems:e.maxItems,style:(i,r)=>t(i,r?"active":"inactive")}).join(`
32
+ ${A.cyan(te)} `)}
33
+ ${A.cyan(ni)}
34
+ `}}}).prompt()},Uv=e=>{let t=(s,i)=>{let r=s.label??String(s.value);return i==="active"?`${A.cyan(Lv)} ${r} ${s.hint?A.dim(`(${s.hint})`):""}`:i==="selected"?`${A.green(vd)} ${A.dim(r)}`:i==="cancelled"?`${A.strikethrough(A.dim(r))}`:i==="active-selected"?`${A.green(vd)} ${r} ${s.hint?A.dim(`(${s.hint})`):""}`:i==="submitted"?`${A.dim(r)}`:`${A.dim(Nv)} ${A.dim(r)}`};return new Rv({options:e.options,initialValues:e.initialValues,required:e.required??!0,cursorAt:e.cursorAt,validate(s){if(this.required&&s.length===0)return`Please select at least one option.
35
+ ${A.reset(A.dim(`Press ${A.gray(A.bgWhite(A.inverse(" space ")))} to select, ${A.gray(A.bgWhite(A.inverse(" enter ")))} to submit`))}`},render(){let s=`${A.gray(te)}
36
+ ${$n(this.state)} ${e.message}
37
+ `,i=(r,n)=>{let o=this.value.includes(r.value);return n&&o?t(r,"active-selected"):o?t(r,"selected"):t(r,n?"active":"inactive")};switch(this.state){case"submit":return`${s}${A.gray(te)} ${this.options.filter(({value:r})=>this.value.includes(r)).map(r=>t(r,"submitted")).join(A.dim(", "))||A.dim("none")}`;case"cancel":{let r=this.options.filter(({value:n})=>this.value.includes(n)).map(n=>t(n,"cancelled")).join(A.dim(", "));return`${s}${A.gray(te)} ${r.trim()?`${r}
38
+ ${A.gray(te)}`:""}`}case"error":{let r=this.error.split(`
39
+ `).map((n,o)=>o===0?`${A.yellow(ni)} ${A.yellow(n)}`:` ${n}`).join(`
40
+ `);return`${s+A.yellow(te)} ${vu({options:this.options,cursor:this.cursor,maxItems:e.maxItems,style:i}).join(`
41
+ ${A.yellow(te)} `)}
42
+ ${r}
43
+ `}default:return`${s}${A.cyan(te)} ${vu({options:this.options,cursor:this.cursor,maxItems:e.maxItems,style:i}).join(`
44
+ ${A.cyan(te)} `)}
45
+ ${A.cyan(ni)}
46
+ `}}}).prompt()};`${A.gray(te)}`;kd=Symbol.for("cancel")});function Vd(){process.stdout.write("\x1B[?25h")}function rr(e){if(!e)return"-";if(e.startsWith("embedded:"))return e;let t=(0,Ud.homedir)(),s=process.cwd();return e.startsWith(t)?"~"+e.slice(t.length):e.startsWith(s)?"."+e.slice(s.length):e}var Ud,T,Bn,h,On,VE,ui,M=re(()=>{"use strict";Ud=require("node:os"),T={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",gray:"\x1B[90m"},Bn=new Set;process.on("SIGINT",()=>{for(let e of Bn)e.stop();Vd(),console.log(`
47
+ ${T.yellow}!${T.reset} Interrupted - shutting down gracefully`),process.exit(130)});process.on("SIGTERM",()=>{for(let e of Bn)e.stop();Vd(),console.log(`
48
+ ${T.yellow}!${T.reset} Terminated - shutting down gracefully`),process.exit(143)});h={success:e=>{console.log(`${T.green}\u2713${T.reset} ${e}`)},error:(e,t)=>{let s=t?`${e} ${t}`:e;console.error(`${T.red}\u2717${T.reset} ${s}`)},warn:(e,t)=>{let s=t?`${e} ${t}`:e;console.warn(`${T.yellow}!${T.reset} ${s}`)},info:e=>{console.log(`${T.blue}\u25CB${T.reset} ${e}`)},debug:e=>{process.env.DEBUG&&console.log(`${T.gray}\xB7${T.reset} ${e}`)},plain:e=>{console.log(e)},load:e=>console.log(`${T.cyan}\u25B8${T.reset} ${e}`),match:e=>console.log(`${T.magenta}\u25C6${T.reset} ${e}`),execute:e=>console.log(`${T.blue}\u203A${T.reset} ${e}`),agent:e=>console.log(`${T.cyan}\u25C9${T.reset} ${e}`),done:e=>console.log(`${T.green}\u2713${T.reset} ${e}`),analyze:e=>console.log(`${T.blue}\u25CB${T.reset} ${e}`),run:e=>console.log(`${T.green}\u25B6${T.reset} ${e}`),stats:e=>console.log(` ${e}`),rocket:e=>console.log(`${T.magenta}\u25B2${T.reset} ${e}`),robot:e=>console.log(`${T.cyan}\u25C9${T.reset} ${e}`),chart:e=>console.log(`${T.blue}\u25A0${T.reset} ${e}`),file:e=>console.log(`${T.gray}\u25C7${T.reset} ${e}`),sync:e=>console.log(`${T.cyan}\u21BB${T.reset} ${e}`),lightning:e=>console.log(`${T.yellow}\u26A1${T.reset} ${e}`),sparkles:e=>console.log(`${T.magenta}\u2726${T.reset} ${e}`),logo:()=>{console.log(`
49
+ ${T.bold}best-review${T.reset}
50
+ Multi-agent code review
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(`
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&lt)}calledReaddir(){return!!(this.#t&Lu)}isENOENT(){return!!(this.#t&lt)}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&lt||(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&lt)===0)try{return this.#V(await this.#e.promises.lstat(this.fullpath())),this}catch(e){this.#I(e.code)}}lstatSync(){if((this.#t&lt)===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(`
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
+ `)?ol(s,t):s.includes(`
57
+ `)?`
58
+ `+ol(s,t):(e.endsWith(" ")?"":" ")+s;ao.indentComment=ol;ao.lineComment=XC;ao.stringifyComment=ZC});var xp=I(Sr=>{"use strict";var QC="flow",al="block",uo="quoted";function ex(e,t,s="flow",{indentAtStart:i,lineWidth:r=80,minContentWidth:n=20,onFold:o,onOverflow:a}={}){if(!r||r<0)return e;r<n&&(n=0);let u=Math.max(1+n,1+r-t.length);if(e.length<=u)return e;let l=[],c={},f=r-t.length;typeof i=="number"&&(i>r-Math.max(2,n)?l.push(0):f=r-i);let d,p,m=!1,g=-1,D=-1,w=-1;s===al&&(g=Cp(e,g,t.length),g!==-1&&(f=g+u));for(let v;v=e[g+=1];){if(s===uo&&v==="\\"){switch(D=g,e[g+1]){case"x":g+=3;break;case"u":g+=5;break;case"U":g+=9;break;default:g+=1}w=g}if(v===`
59
+ `)s===al&&(g=Cp(e,g,t.length)),f=g+t.length+u,d=void 0;else{if(v===" "&&p&&p!==" "&&p!==`
60
+ `&&p!==" "){let E=e[g+1];E&&E!==" "&&E!==`
61
+ `&&E!==" "&&(d=g)}if(g>=f)if(d)l.push(d),f=d+u,d=void 0;else if(s===uo){for(;p===" "||p===" ";)p=v,v=e[g+=1],m=!0;let E=g>w+1?g-2:D-1;if(c[E])return e;l.push(E),c[E]=!0,f=E+u,d=void 0}else m=!0}p=v}if(m&&a&&a(),l.length===0)return e;o&&o();let y=e.slice(0,l[0]);for(let v=0;v<l.length;++v){let E=l[v],F=l[v+1]||e.length;E===0?y=`
62
+ ${t}${e.slice(0,F)}`:(s===uo&&c[E]&&(y+=`${e[E]}\\`),y+=`
63
+ ${t}${e.slice(E+1,F)}`)}return y}function Cp(e,t,s){let i=t,r=t+1,n=e[r];for(;n===" "||n===" ";)if(t<r+s)n=e[++t];else{do n=e[++t];while(n&&n!==`
64
+ `);i=t,r=t+1,n=e[r]}return i}Sr.FOLD_BLOCK=al;Sr.FOLD_FLOW=QC;Sr.FOLD_QUOTED=uo;Sr.foldFlowLines=ex});var Rr=I(Sp=>{"use strict";var ct=fe(),ss=xp(),co=(e,t)=>({indentAtStart:t?e.indent.length:e.indentAtStart,lineWidth:e.options.lineWidth,minContentWidth:e.options.minContentWidth}),fo=e=>/^(%|---|\.\.\.)/m.test(e);function tx(e,t,s){if(!t||t<0)return!1;let i=t-s,r=e.length;if(r<=i)return!1;for(let n=0,o=0;n<r;++n)if(e[n]===`
65
+ `){if(n-o>i)return!0;if(o=n+1,r-o<=i)return!1}return!0}function Ar(e,t){let s=JSON.stringify(e);if(t.options.doubleQuotedAsJSON)return s;let{implicitKey:i}=t,r=t.options.doubleQuotedMinMultiLineLength,n=t.indent||(fo(e)?" ":""),o="",a=0;for(let u=0,l=s[u];l;l=s[++u])if(l===" "&&s[u+1]==="\\"&&s[u+2]==="n"&&(o+=s.slice(a,u)+"\\ ",u+=1,a=u,l="\\"),l==="\\")switch(s[u+1]){case"u":{o+=s.slice(a,u);let c=s.substr(u+2,4);switch(c){case"0000":o+="\\0";break;case"0007":o+="\\a";break;case"000b":o+="\\v";break;case"001b":o+="\\e";break;case"0085":o+="\\N";break;case"00a0":o+="\\_";break;case"2028":o+="\\L";break;case"2029":o+="\\P";break;default:c.substr(0,2)==="00"?o+="\\x"+c.substr(2):o+=s.substr(u,6)}u+=5,a=u+1}break;case"n":if(i||s[u+2]==='"'||s.length<r)u+=1;else{for(o+=s.slice(a,u)+`
66
+
67
+ `;s[u+2]==="\\"&&s[u+3]==="n"&&s[u+4]!=='"';)o+=`
68
+ `,u+=2;o+=n,s[u+2]===" "&&(o+="\\"),u+=1,a=u+1}break;default:u+=1}return o=a?o+s.slice(a):s,i?o:ss.foldFlowLines(o,n,ss.FOLD_QUOTED,co(t,!1))}function ul(e,t){if(t.options.singleQuote===!1||t.implicitKey&&e.includes(`
69
+ `)||/[ \t]\n|\n[ \t]/.test(e))return Ar(e,t);let s=t.indent||(fo(e)?" ":""),i="'"+e.replace(/'/g,"''").replace(/\n+/g,`$&
70
+ ${s}`)+"'";return t.implicitKey?i:ss.foldFlowLines(i,s,ss.FOLD_FLOW,co(t,!1))}function mi(e,t){let{singleQuote:s}=t.options,i;if(s===!1)i=Ar;else{let r=e.includes('"'),n=e.includes("'");r&&!n?i=ul:n&&!r?i=Ar:i=s?ul:Ar}return i(e,t)}var ll;try{ll=new RegExp(`(^|(?<!
71
+ ))
72
+ +(?!
73
+ |$)`,"g")}catch{ll=/\n+(?!\n|$)/g}function lo({comment:e,type:t,value:s},i,r,n){let{blockQuote:o,commentString:a,lineWidth:u}=i.options;if(!o||/\n[\t ]+$/.test(s))return mi(s,i);let l=i.indent||(i.forceBlockIndent||fo(s)?" ":""),c=o==="literal"?!0:o==="folded"||t===ct.Scalar.BLOCK_FOLDED?!1:t===ct.Scalar.BLOCK_LITERAL?!0:!tx(s,u,l.length);if(!s)return c?`|
74
+ `:`>
75
+ `;let f,d;for(d=s.length;d>0;--d){let F=s[d-1];if(F!==`
76
+ `&&F!==" "&&F!==" ")break}let p=s.substring(d),m=p.indexOf(`
77
+ `);m===-1?f="-":s===p||m!==p.length-1?(f="+",n&&n()):f="",p&&(s=s.slice(0,-p.length),p[p.length-1]===`
78
+ `&&(p=p.slice(0,-1)),p=p.replace(ll,`$&${l}`));let g=!1,D,w=-1;for(D=0;D<s.length;++D){let F=s[D];if(F===" ")g=!0;else if(F===`
79
+ `)w=D;else break}let y=s.substring(0,w<D?w+1:D);y&&(s=s.substring(y.length),y=y.replace(/\n+/g,`$&${l}`));let E=(g?l?"2":"1":"")+f;if(e&&(E+=" "+a(e.replace(/ ?[\r\n]+/g," ")),r&&r()),!c){let F=s.replace(/\n+/g,`
80
+ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${l}`),S=!1,B=co(i,!0);o!=="folded"&&t!==ct.Scalar.BLOCK_FOLDED&&(B.onOverflow=()=>{S=!0});let x=ss.foldFlowLines(`${y}${F}${p}`,l,ss.FOLD_BLOCK,B);if(!S)return`>${E}
81
+ ${l}${x}`}return s=s.replace(/\n+/g,`$&${l}`),`|${E}
82
+ ${l}${y}${s}${p}`}function sx(e,t,s,i){let{type:r,value:n}=e,{actualString:o,implicitKey:a,indent:u,indentStep:l,inFlow:c}=t;if(a&&n.includes(`
83
+ `)||c&&/[[\]{},]/.test(n))return mi(n,t);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(n))return a||c||!n.includes(`
84
+ `)?mi(n,t):lo(e,t,s,i);if(!a&&!c&&r!==ct.Scalar.PLAIN&&n.includes(`
85
+ `))return lo(e,t,s,i);if(fo(n)){if(u==="")return t.forceBlockIndent=!0,lo(e,t,s,i);if(a&&u===l)return mi(n,t)}let f=n.replace(/\n+/g,`$&
86
+ ${u}`);if(o){let d=g=>g.default&&g.tag!=="tag:yaml.org,2002:str"&&g.test?.test(f),{compat:p,tags:m}=t.doc.schema;if(m.some(d)||p?.some(d))return mi(n,t)}return a?f:ss.foldFlowLines(f,u,ss.FOLD_FLOW,co(t,!1))}function ix(e,t,s,i){let{implicitKey:r,inFlow:n}=t,o=typeof e.value=="string"?e:Object.assign({},e,{value:String(e.value)}),{type:a}=e;a!==ct.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(o.value)&&(a=ct.Scalar.QUOTE_DOUBLE);let u=c=>{switch(c){case ct.Scalar.BLOCK_FOLDED:case ct.Scalar.BLOCK_LITERAL:return r||n?mi(o.value,t):lo(o,t,s,i);case ct.Scalar.QUOTE_DOUBLE:return Ar(o.value,t);case ct.Scalar.QUOTE_SINGLE:return ul(o.value,t);case ct.Scalar.PLAIN:return sx(o,t,s,i);default:return null}},l=u(a);if(l===null){let{defaultKeyType:c,defaultStringType:f}=t.options,d=r&&c||f;if(l=u(d),l===null)throw new Error(`Unsupported default string type ${d}`)}return l}Sp.stringifyString=ix});var kr=I(cl=>{"use strict";var rx=so(),is=K(),nx=xr(),ox=Rr();function ax(e,t){let s=Object.assign({blockQuote:!0,commentString:nx.stringifyComment,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trailingComma:!1,trueStr:"true",verifyAliasOrder:!0},e.schema.toStringOptions,t),i;switch(s.collectionStyle){case"block":i=!1;break;case"flow":i=!0;break;default:i=null}return{anchors:new Set,doc:e,flowCollectionPadding:s.flowCollectionPadding?" ":"",indent:"",indentStep:typeof s.indent=="number"?" ".repeat(s.indent):" ",inFlow:i,options:s}}function ux(e,t){if(t.tag){let r=e.filter(n=>n.tag===t.tag);if(r.length>0)return r.find(n=>n.format===t.format)??r[0]}let s,i;if(is.isScalar(t)){i=t.value;let r=e.filter(n=>n.identify?.(i));if(r.length>1){let n=r.filter(o=>o.test);n.length>0&&(r=n)}s=r.find(n=>n.format===t.format)??r.find(n=>!n.format)}else i=t,s=e.find(r=>r.nodeClass&&i instanceof r.nodeClass);if(!s){let r=i?.constructor?.name??(i===null?"null":typeof i);throw new Error(`Tag not resolved for ${r} value`)}return s}function lx(e,t,{anchors:s,doc:i}){if(!i.directives)return"";let r=[],n=(is.isScalar(e)||is.isCollection(e))&&e.anchor;n&&rx.anchorIsValid(n)&&(s.add(n),r.push(`&${n}`));let o=e.tag??(t.default?null:t.tag);return o&&r.push(i.directives.tagString(o)),r.join(" ")}function cx(e,t,s,i){if(is.isPair(e))return e.toString(t,s,i);if(is.isAlias(e)){if(t.doc.directives)return e.toString(t);if(t.resolvedAliases?.has(e))throw new TypeError("Cannot stringify circular structure without alias nodes");t.resolvedAliases?t.resolvedAliases.add(e):t.resolvedAliases=new Set([e]),e=e.resolve(t.doc)}let r,n=is.isNode(e)?e:t.doc.createNode(e,{onTagObj:u=>r=u});r??(r=ux(t.doc.schema.tags,n));let o=lx(n,r,t);o.length>0&&(t.indentAtStart=(t.indentAtStart??0)+o.length+1);let a=typeof r.stringify=="function"?r.stringify(n,t,s,i):is.isScalar(n)?ox.stringifyString(n,t,s,i):n.toString(t,s,i);return o?is.isScalar(n)||a[0]==="{"||a[0]==="["?`${o} ${a}`:`${o}
87
+ ${t.indent}${a}`:a}cl.createStringifyContext=ax;cl.stringify=cx});var Ip=I(kp=>{"use strict";var Pt=K(),Ap=fe(),Rp=kr(),Ir=xr();function fx({key:e,value:t},s,i,r){let{allNullValues:n,doc:o,indent:a,indentStep:u,options:{commentString:l,indentSeq:c,simpleKeys:f}}=s,d=Pt.isNode(e)&&e.comment||null;if(f){if(d)throw new Error("With simple keys, key nodes cannot have comments");if(Pt.isCollection(e)||!Pt.isNode(e)&&typeof e=="object"){let B="With simple keys, collection cannot be used as a key value";throw new Error(B)}}let p=!f&&(!e||d&&t==null&&!s.inFlow||Pt.isCollection(e)||(Pt.isScalar(e)?e.type===Ap.Scalar.BLOCK_FOLDED||e.type===Ap.Scalar.BLOCK_LITERAL:typeof e=="object"));s=Object.assign({},s,{allNullValues:!1,implicitKey:!p&&(f||!n),indent:a+u});let m=!1,g=!1,D=Rp.stringify(e,s,()=>m=!0,()=>g=!0);if(!p&&!s.inFlow&&D.length>1024){if(f)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");p=!0}if(s.inFlow){if(n||t==null)return m&&i&&i(),D===""?"?":p?`? ${D}`:D}else if(n&&!f||t==null&&p)return D=`? ${D}`,d&&!m?D+=Ir.lineComment(D,s.indent,l(d)):g&&r&&r(),D;m&&(d=null),p?(d&&(D+=Ir.lineComment(D,s.indent,l(d))),D=`? ${D}
88
+ ${a}:`):(D=`${D}:`,d&&(D+=Ir.lineComment(D,s.indent,l(d))));let w,y,v;Pt.isNode(t)?(w=!!t.spaceBefore,y=t.commentBefore,v=t.comment):(w=!1,y=null,v=null,t&&typeof t=="object"&&(t=o.createNode(t))),s.implicitKey=!1,!p&&!d&&Pt.isScalar(t)&&(s.indentAtStart=D.length+1),g=!1,!c&&u.length>=2&&!s.inFlow&&!p&&Pt.isSeq(t)&&!t.flow&&!t.tag&&!t.anchor&&(s.indent=s.indent.substring(2));let E=!1,F=Rp.stringify(t,s,()=>E=!0,()=>g=!0),S=" ";if(d||w||y){if(S=w?`
89
+ `:"",y){let B=l(y);S+=`
90
+ ${Ir.indentComment(B,s.indent)}`}F===""&&!s.inFlow?S===`
91
+ `&&v&&(S=`
92
+
93
+ `):S+=`
94
+ ${s.indent}`}else if(!p&&Pt.isCollection(t)){let B=F[0],x=F.indexOf(`
95
+ `),$=x!==-1,W=s.inFlow??t.flow??t.items.length===0;if($||!W){let ae=!1;if($&&(B==="&"||B==="!")){let z=F.indexOf(" ");B==="&"&&z!==-1&&z<x&&F[z+1]==="!"&&(z=F.indexOf(" ",z+1)),(z===-1||x<z)&&(ae=!0)}ae||(S=`
96
+ ${s.indent}`)}}else(F===""||F[0]===`
97
+ `)&&(S="");return D+=S+F,s.inFlow?E&&i&&i():v&&!E?D+=Ir.lineComment(D,s.indent,l(v)):g&&r&&r(),D}kp.stringifyPair=fx});var dl=I(fl=>{"use strict";var _p=require("process");function dx(e,...t){e==="debug"&&console.log(...t)}function hx(e,t){(e==="debug"||e==="warn")&&(typeof _p.emitWarning=="function"?_p.emitWarning(t):console.warn(t))}fl.debug=dx;fl.warn=hx});var go=I(mo=>{"use strict";var _r=K(),$p=fe(),ho="<<",po={identify:e=>e===ho||typeof e=="symbol"&&e.description===ho,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new $p.Scalar(Symbol(ho)),{addToJSMap:Tp}),stringify:()=>ho},px=(e,t)=>(po.identify(t)||_r.isScalar(t)&&(!t.type||t.type===$p.Scalar.PLAIN)&&po.identify(t.value))&&e?.doc.schema.tags.some(s=>s.tag===po.tag&&s.default);function Tp(e,t,s){if(s=e&&_r.isAlias(s)?s.resolve(e.doc):s,_r.isSeq(s))for(let i of s.items)hl(e,t,i);else if(Array.isArray(s))for(let i of s)hl(e,t,i);else hl(e,t,s)}function hl(e,t,s){let i=e&&_r.isAlias(s)?s.resolve(e.doc):s;if(!_r.isMap(i))throw new Error("Merge sources must be maps or map aliases");let r=i.toJSON(null,e,Map);for(let[n,o]of r)t instanceof Map?t.has(n)||t.set(n,o):t instanceof Set?t.add(n):Object.prototype.hasOwnProperty.call(t,n)||Object.defineProperty(t,n,{value:o,writable:!0,enumerable:!0,configurable:!0});return t}mo.addMergeToJSMap=Tp;mo.isMergeKey=px;mo.merge=po});var ml=I(Op=>{"use strict";var mx=dl(),Pp=go(),gx=kr(),Bp=K(),pl=es();function Dx(e,t,{key:s,value:i}){if(Bp.isNode(s)&&s.addToJSMap)s.addToJSMap(e,t,i);else if(Pp.isMergeKey(e,s))Pp.addMergeToJSMap(e,t,i);else{let r=pl.toJS(s,"",e);if(t instanceof Map)t.set(r,pl.toJS(i,r,e));else if(t instanceof Set)t.add(r);else{let n=yx(s,r,e),o=pl.toJS(i,n,e);n in t?Object.defineProperty(t,n,{value:o,writable:!0,enumerable:!0,configurable:!0}):t[n]=o}}return t}function yx(e,t,s){if(t===null)return"";if(typeof t!="object")return String(t);if(Bp.isNode(e)&&s?.doc){let i=gx.createStringifyContext(s.doc,{});i.anchors=new Set;for(let n of s.anchors.keys())i.anchors.add(n.anchor);i.inFlow=!0,i.inStringifyKey=!0;let r=e.toString(i);if(!s.mapKeyWarned){let n=JSON.stringify(r);n.length>40&&(n=n.substring(0,36)+'..."'),mx.warn(s.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${n}. Set mapAsMap: true to use object keys.`),s.mapKeyWarned=!0}return r}return JSON.stringify(t)}Op.addPairToJSMap=Dx});var rs=I(gl=>{"use strict";var Lp=Cr(),wx=Ip(),bx=ml(),Do=K();function vx(e,t,s){let i=Lp.createNode(e,void 0,s),r=Lp.createNode(t,void 0,s);return new yo(i,r)}var yo=class e{constructor(t,s=null){Object.defineProperty(this,Do.NODE_TYPE,{value:Do.PAIR}),this.key=t,this.value=s}clone(t){let{key:s,value:i}=this;return Do.isNode(s)&&(s=s.clone(t)),Do.isNode(i)&&(i=i.clone(t)),new e(s,i)}toJSON(t,s){let i=s?.mapAsMap?new Map:{};return bx.addPairToJSMap(s,i,this)}toString(t,s,i){return t?.doc?wx.stringifyPair(this,t,s,i):JSON.stringify(this)}};gl.Pair=yo;gl.createPair=vx});var Dl=I(Mp=>{"use strict";var Rs=K(),Np=kr(),wo=xr();function Ex(e,t,s){return(t.inFlow??e.flow?Cx:Fx)(e,t,s)}function Fx({comment:e,items:t},s,{blockItemPrefix:i,flowChars:r,itemIndent:n,onChompKeep:o,onComment:a}){let{indent:u,options:{commentString:l}}=s,c=Object.assign({},s,{indent:n,type:null}),f=!1,d=[];for(let m=0;m<t.length;++m){let g=t[m],D=null;if(Rs.isNode(g))!f&&g.spaceBefore&&d.push(""),bo(s,d,g.commentBefore,f),g.comment&&(D=g.comment);else if(Rs.isPair(g)){let y=Rs.isNode(g.key)?g.key:null;y&&(!f&&y.spaceBefore&&d.push(""),bo(s,d,y.commentBefore,f))}f=!1;let w=Np.stringify(g,c,()=>D=null,()=>f=!0);D&&(w+=wo.lineComment(w,n,l(D))),f&&D&&(f=!1),d.push(i+w)}let p;if(d.length===0)p=r.start+r.end;else{p=d[0];for(let m=1;m<d.length;++m){let g=d[m];p+=g?`
98
+ ${u}${g}`:`
99
+ `}}return e?(p+=`
100
+ `+wo.indentComment(l(e),u),a&&a()):f&&o&&o(),p}function Cx({items:e},t,{flowChars:s,itemIndent:i}){let{indent:r,indentStep:n,flowCollectionPadding:o,options:{commentString:a}}=t;i+=n;let u=Object.assign({},t,{indent:i,inFlow:!0,type:null}),l=!1,c=0,f=[];for(let m=0;m<e.length;++m){let g=e[m],D=null;if(Rs.isNode(g))g.spaceBefore&&f.push(""),bo(t,f,g.commentBefore,!1),g.comment&&(D=g.comment);else if(Rs.isPair(g)){let y=Rs.isNode(g.key)?g.key:null;y&&(y.spaceBefore&&f.push(""),bo(t,f,y.commentBefore,!1),y.comment&&(l=!0));let v=Rs.isNode(g.value)?g.value:null;v?(v.comment&&(D=v.comment),v.commentBefore&&(l=!0)):g.value==null&&y?.comment&&(D=y.comment)}D&&(l=!0);let w=Np.stringify(g,u,()=>D=null);l||(l=f.length>c||w.includes(`
101
+ `)),m<e.length-1?w+=",":t.options.trailingComma&&(t.options.lineWidth>0&&(l||(l=f.reduce((y,v)=>y+v.length+2,2)+(w.length+2)>t.options.lineWidth)),l&&(w+=",")),D&&(w+=wo.lineComment(w,i,a(D))),f.push(w),c=f.length}let{start:d,end:p}=s;if(f.length===0)return d+p;if(!l){let m=f.reduce((g,D)=>g+D.length+2,2);l=t.options.lineWidth>0&&m>t.options.lineWidth}if(l){let m=d;for(let g of f)m+=g?`
102
+ ${n}${r}${g}`:`
103
+ `;return`${m}
104
+ ${r}${p}`}else return`${d}${o}${f.join(" ")}${o}${p}`}function bo({indent:e,options:{commentString:t}},s,i,r){if(i&&r&&(i=i.replace(/^\n+/,"")),i){let n=wo.indentComment(t(i),e);s.push(n.trimStart())}}Mp.stringifyCollection=Ex});var os=I(wl=>{"use strict";var xx=Dl(),Sx=ml(),Ax=oo(),ns=K(),vo=rs(),Rx=fe();function $r(e,t){let s=ns.isScalar(t)?t.value:t;for(let i of e)if(ns.isPair(i)&&(i.key===t||i.key===s||ns.isScalar(i.key)&&i.key.value===s))return i}var yl=class extends Ax.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor(t){super(ns.MAP,t),this.items=[]}static from(t,s,i){let{keepUndefined:r,replacer:n}=i,o=new this(t),a=(u,l)=>{if(typeof n=="function")l=n.call(s,u,l);else if(Array.isArray(n)&&!n.includes(u))return;(l!==void 0||r)&&o.items.push(vo.createPair(u,l,i))};if(s instanceof Map)for(let[u,l]of s)a(u,l);else if(s&&typeof s=="object")for(let u of Object.keys(s))a(u,s[u]);return typeof t.sortMapEntries=="function"&&o.items.sort(t.sortMapEntries),o}add(t,s){let i;ns.isPair(t)?i=t:!t||typeof t!="object"||!("key"in t)?i=new vo.Pair(t,t?.value):i=new vo.Pair(t.key,t.value);let r=$r(this.items,i.key),n=this.schema?.sortMapEntries;if(r){if(!s)throw new Error(`Key ${i.key} already set`);ns.isScalar(r.value)&&Rx.isScalarValue(i.value)?r.value.value=i.value:r.value=i.value}else if(n){let o=this.items.findIndex(a=>n(i,a)<0);o===-1?this.items.push(i):this.items.splice(o,0,i)}else this.items.push(i)}delete(t){let s=$r(this.items,t);return s?this.items.splice(this.items.indexOf(s),1).length>0:!1}get(t,s){let r=$r(this.items,t)?.value;return(!s&&ns.isScalar(r)?r.value:r)??void 0}has(t){return!!$r(this.items,t)}set(t,s){this.add(new vo.Pair(t,s),!0)}toJSON(t,s,i){let r=i?new i:s?.mapAsMap?new Map:{};s?.onCreate&&s.onCreate(r);for(let n of this.items)Sx.addPairToJSMap(s,r,n);return r}toString(t,s,i){if(!t)return JSON.stringify(this);for(let r of this.items)if(!ns.isPair(r))throw new Error(`Map items must all be pairs; found ${JSON.stringify(r)} instead`);return!t.allNullValues&&this.hasAllNullValues(!1)&&(t=Object.assign({},t,{allNullValues:!0})),xx.stringifyCollection(this,t,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:t.indent||"",onChompKeep:i,onComment:s})}};wl.YAMLMap=yl;wl.findPair=$r});var gi=I(qp=>{"use strict";var kx=K(),jp=os(),Ix={collection:"map",default:!0,nodeClass:jp.YAMLMap,tag:"tag:yaml.org,2002:map",resolve(e,t){return kx.isMap(e)||t("Expected a mapping for this tag"),e},createNode:(e,t,s)=>jp.YAMLMap.from(e,t,s)};qp.map=Ix});var as=I(Up=>{"use strict";var _x=Cr(),$x=Dl(),Tx=oo(),Fo=K(),Px=fe(),Bx=es(),bl=class extends Tx.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(t){super(Fo.SEQ,t),this.items=[]}add(t){this.items.push(t)}delete(t){let s=Eo(t);return typeof s!="number"?!1:this.items.splice(s,1).length>0}get(t,s){let i=Eo(t);if(typeof i!="number")return;let r=this.items[i];return!s&&Fo.isScalar(r)?r.value:r}has(t){let s=Eo(t);return typeof s=="number"&&s<this.items.length}set(t,s){let i=Eo(t);if(typeof i!="number")throw new Error(`Expected a valid index, not ${t}.`);let r=this.items[i];Fo.isScalar(r)&&Px.isScalarValue(s)?r.value=s:this.items[i]=s}toJSON(t,s){let i=[];s?.onCreate&&s.onCreate(i);let r=0;for(let n of this.items)i.push(Bx.toJS(n,String(r++),s));return i}toString(t,s,i){return t?$x.stringifyCollection(this,t,{blockItemPrefix:"- ",flowChars:{start:"[",end:"]"},itemIndent:(t.indent||"")+" ",onChompKeep:i,onComment:s}):JSON.stringify(this)}static from(t,s,i){let{replacer:r}=i,n=new this(t);if(s&&Symbol.iterator in Object(s)){let o=0;for(let a of s){if(typeof r=="function"){let u=s instanceof Set?a:String(o++);a=r.call(s,u,a)}n.items.push(_x.createNode(a,void 0,i))}}return n}};function Eo(e){let t=Fo.isScalar(e)?e.value:e;return t&&typeof t=="string"&&(t=Number(t)),typeof t=="number"&&Number.isInteger(t)&&t>=0?t:null}Up.YAMLSeq=bl});var Di=I(Gp=>{"use strict";var Ox=K(),Vp=as(),Lx={collection:"seq",default:!0,nodeClass:Vp.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve(e,t){return Ox.isSeq(e)||t("Expected a sequence for this tag"),e},createNode:(e,t,s)=>Vp.YAMLSeq.from(e,t,s)};Gp.seq=Lx});var Tr=I(Wp=>{"use strict";var Nx=Rr(),Mx={identify:e=>typeof e=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:e=>e,stringify(e,t,s,i){return t=Object.assign({actualString:!0},t),Nx.stringifyString(e,t,s,i)}};Wp.string=Mx});var Co=I(Hp=>{"use strict";var Kp=fe(),zp={identify:e=>e==null,createNode:()=>new Kp.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new Kp.Scalar(null),stringify:({source:e},t)=>typeof e=="string"&&zp.test.test(e)?e:t.options.nullStr};Hp.nullTag=zp});var vl=I(Yp=>{"use strict";var jx=fe(),Jp={identify:e=>typeof e=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:e=>new jx.Scalar(e[0]==="t"||e[0]==="T"),stringify({source:e,value:t},s){if(e&&Jp.test.test(e)){let i=e[0]==="t"||e[0]==="T";if(t===i)return e}return t?s.options.trueStr:s.options.falseStr}};Yp.boolTag=Jp});var yi=I(Zp=>{"use strict";function qx({format:e,minFractionDigits:t,tag:s,value:i}){if(typeof i=="bigint")return String(i);let r=typeof i=="number"?i:Number(i);if(!isFinite(r))return isNaN(r)?".nan":r<0?"-.inf":".inf";let n=Object.is(i,-0)?"-0":JSON.stringify(i);if(!e&&t&&(!s||s==="tag:yaml.org,2002:float")&&/^\d/.test(n)){let o=n.indexOf(".");o<0&&(o=n.length,n+=".");let a=t-(n.length-o-1);for(;a-- >0;)n+="0"}return n}Zp.stringifyNumber=qx});var Fl=I(xo=>{"use strict";var Ux=fe(),El=yi(),Vx={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>e.slice(-3).toLowerCase()==="nan"?NaN:e[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:El.stringifyNumber},Gx={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e),stringify(e){let t=Number(e.value);return isFinite(t)?t.toExponential():El.stringifyNumber(e)}},Wx={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(e){let t=new Ux.Scalar(parseFloat(e)),s=e.indexOf(".");return s!==-1&&e[e.length-1]==="0"&&(t.minFractionDigits=e.length-s-1),t},stringify:El.stringifyNumber};xo.float=Wx;xo.floatExp=Gx;xo.floatNaN=Vx});var xl=I(Ao=>{"use strict";var Xp=yi(),So=e=>typeof e=="bigint"||Number.isInteger(e),Cl=(e,t,s,{intAsBigInt:i})=>i?BigInt(e):parseInt(e.substring(t),s);function Qp(e,t,s){let{value:i}=e;return So(i)&&i>=0?s+i.toString(t):Xp.stringifyNumber(e)}var Kx={identify:e=>So(e)&&e>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(e,t,s)=>Cl(e,2,8,s),stringify:e=>Qp(e,8,"0o")},zx={identify:So,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(e,t,s)=>Cl(e,0,10,s),stringify:Xp.stringifyNumber},Hx={identify:e=>So(e)&&e>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(e,t,s)=>Cl(e,2,16,s),stringify:e=>Qp(e,16,"0x")};Ao.int=zx;Ao.intHex=Hx;Ao.intOct=Kx});var tm=I(em=>{"use strict";var Jx=gi(),Yx=Co(),Zx=Di(),Xx=Tr(),Qx=vl(),Sl=Fl(),Al=xl(),eS=[Jx.map,Zx.seq,Xx.string,Yx.nullTag,Qx.boolTag,Al.intOct,Al.int,Al.intHex,Sl.floatNaN,Sl.floatExp,Sl.float];em.schema=eS});var rm=I(im=>{"use strict";var tS=fe(),sS=gi(),iS=Di();function sm(e){return typeof e=="bigint"||Number.isInteger(e)}var Ro=({value:e})=>JSON.stringify(e),rS=[{identify:e=>typeof e=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:e=>e,stringify:Ro},{identify:e=>e==null,createNode:()=>new tS.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:Ro},{identify:e=>typeof e=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:e=>e==="true",stringify:Ro},{identify:sm,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(e,t,{intAsBigInt:s})=>s?BigInt(e):parseInt(e,10),stringify:({value:e})=>sm(e)?e.toString():JSON.stringify(e)},{identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:e=>parseFloat(e),stringify:Ro}],nS={default:!0,tag:"",test:/^/,resolve(e,t){return t(`Unresolved plain scalar ${JSON.stringify(e)}`),e}},oS=[sS.map,iS.seq].concat(rS,nS);im.schema=oS});var kl=I(nm=>{"use strict";var Pr=require("buffer"),Rl=fe(),aS=Rr(),uS={identify:e=>e instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(e,t){if(typeof Pr.Buffer=="function")return Pr.Buffer.from(e,"base64");if(typeof atob=="function"){let s=atob(e.replace(/[\n\r]/g,"")),i=new Uint8Array(s.length);for(let r=0;r<s.length;++r)i[r]=s.charCodeAt(r);return i}else return t("This environment does not support reading binary tags; either Buffer or atob is required"),e},stringify({comment:e,type:t,value:s},i,r,n){if(!s)return"";let o=s,a;if(typeof Pr.Buffer=="function")a=o instanceof Pr.Buffer?o.toString("base64"):Pr.Buffer.from(o.buffer).toString("base64");else if(typeof btoa=="function"){let u="";for(let l=0;l<o.length;++l)u+=String.fromCharCode(o[l]);a=btoa(u)}else throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required");if(t??(t=Rl.Scalar.BLOCK_LITERAL),t!==Rl.Scalar.QUOTE_DOUBLE){let u=Math.max(i.options.lineWidth-i.indent.length,i.options.minContentWidth),l=Math.ceil(a.length/u),c=new Array(l);for(let f=0,d=0;f<l;++f,d+=u)c[f]=a.substr(d,u);a=c.join(t===Rl.Scalar.BLOCK_LITERAL?`
105
+ `:" ")}return aS.stringifyString({comment:e,type:t,value:a},i,r,n)}};nm.binary=uS});var _o=I(Io=>{"use strict";var ko=K(),Il=rs(),lS=fe(),cS=as();function om(e,t){if(ko.isSeq(e))for(let s=0;s<e.items.length;++s){let i=e.items[s];if(!ko.isPair(i)){if(ko.isMap(i)){i.items.length>1&&t("Each pair must have its own sequence indicator");let r=i.items[0]||new Il.Pair(new lS.Scalar(null));if(i.commentBefore&&(r.key.commentBefore=r.key.commentBefore?`${i.commentBefore}
106
+ ${r.key.commentBefore}`:i.commentBefore),i.comment){let n=r.value??r.key;n.comment=n.comment?`${i.comment}
107
+ ${n.comment}`:i.comment}i=r}e.items[s]=ko.isPair(i)?i:new Il.Pair(i)}}else t("Expected a sequence for this tag");return e}function am(e,t,s){let{replacer:i}=s,r=new cS.YAMLSeq(e);r.tag="tag:yaml.org,2002:pairs";let n=0;if(t&&Symbol.iterator in Object(t))for(let o of t){typeof i=="function"&&(o=i.call(t,String(n++),o));let a,u;if(Array.isArray(o))if(o.length===2)a=o[0],u=o[1];else throw new TypeError(`Expected [key, value] tuple: ${o}`);else if(o&&o instanceof Object){let l=Object.keys(o);if(l.length===1)a=l[0],u=o[a];else throw new TypeError(`Expected tuple with one key, not ${l.length} keys`)}else a=o;r.items.push(Il.createPair(a,u,s))}return r}var fS={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:om,createNode:am};Io.createPairs=am;Io.pairs=fS;Io.resolvePairs=om});var Tl=I($l=>{"use strict";var um=K(),_l=es(),Br=os(),dS=as(),lm=_o(),ks=class e extends dS.YAMLSeq{constructor(){super(),this.add=Br.YAMLMap.prototype.add.bind(this),this.delete=Br.YAMLMap.prototype.delete.bind(this),this.get=Br.YAMLMap.prototype.get.bind(this),this.has=Br.YAMLMap.prototype.has.bind(this),this.set=Br.YAMLMap.prototype.set.bind(this),this.tag=e.tag}toJSON(t,s){if(!s)return super.toJSON(t);let i=new Map;s?.onCreate&&s.onCreate(i);for(let r of this.items){let n,o;if(um.isPair(r)?(n=_l.toJS(r.key,"",s),o=_l.toJS(r.value,n,s)):n=_l.toJS(r,"",s),i.has(n))throw new Error("Ordered maps must not include duplicate keys");i.set(n,o)}return i}static from(t,s,i){let r=lm.createPairs(t,s,i),n=new this;return n.items=r.items,n}};ks.tag="tag:yaml.org,2002:omap";var hS={collection:"seq",identify:e=>e instanceof Map,nodeClass:ks,default:!1,tag:"tag:yaml.org,2002:omap",resolve(e,t){let s=lm.resolvePairs(e,t),i=[];for(let{key:r}of s.items)um.isScalar(r)&&(i.includes(r.value)?t(`Ordered maps must not include duplicate keys: ${r.value}`):i.push(r.value));return Object.assign(new ks,s)},createNode:(e,t,s)=>ks.from(e,t,s)};$l.YAMLOMap=ks;$l.omap=hS});var pm=I(Pl=>{"use strict";var cm=fe();function fm({value:e,source:t},s){return t&&(e?dm:hm).test.test(t)?t:e?s.options.trueStr:s.options.falseStr}var dm={identify:e=>e===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new cm.Scalar(!0),stringify:fm},hm={identify:e=>e===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new cm.Scalar(!1),stringify:fm};Pl.falseTag=hm;Pl.trueTag=dm});var mm=I($o=>{"use strict";var pS=fe(),Bl=yi(),mS={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:e=>e.slice(-3).toLowerCase()==="nan"?NaN:e[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:Bl.stringifyNumber},gS={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:e=>parseFloat(e.replace(/_/g,"")),stringify(e){let t=Number(e.value);return isFinite(t)?t.toExponential():Bl.stringifyNumber(e)}},DS={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(e){let t=new pS.Scalar(parseFloat(e.replace(/_/g,""))),s=e.indexOf(".");if(s!==-1){let i=e.substring(s+1).replace(/_/g,"");i[i.length-1]==="0"&&(t.minFractionDigits=i.length)}return t},stringify:Bl.stringifyNumber};$o.float=DS;$o.floatExp=gS;$o.floatNaN=mS});var Dm=I(Lr=>{"use strict";var gm=yi(),Or=e=>typeof e=="bigint"||Number.isInteger(e);function To(e,t,s,{intAsBigInt:i}){let r=e[0];if((r==="-"||r==="+")&&(t+=1),e=e.substring(t).replace(/_/g,""),i){switch(s){case 2:e=`0b${e}`;break;case 8:e=`0o${e}`;break;case 16:e=`0x${e}`;break}let o=BigInt(e);return r==="-"?BigInt(-1)*o:o}let n=parseInt(e,s);return r==="-"?-1*n:n}function Ol(e,t,s){let{value:i}=e;if(Or(i)){let r=i.toString(t);return i<0?"-"+s+r.substr(1):s+r}return gm.stringifyNumber(e)}var yS={identify:Or,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(e,t,s)=>To(e,2,2,s),stringify:e=>Ol(e,2,"0b")},wS={identify:Or,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(e,t,s)=>To(e,1,8,s),stringify:e=>Ol(e,8,"0")},bS={identify:Or,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(e,t,s)=>To(e,0,10,s),stringify:gm.stringifyNumber},vS={identify:Or,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(e,t,s)=>To(e,2,16,s),stringify:e=>Ol(e,16,"0x")};Lr.int=bS;Lr.intBin=yS;Lr.intHex=vS;Lr.intOct=wS});var Nl=I(Ll=>{"use strict";var Oo=K(),Po=rs(),Bo=os(),Is=class e extends Bo.YAMLMap{constructor(t){super(t),this.tag=e.tag}add(t){let s;Oo.isPair(t)?s=t:t&&typeof t=="object"&&"key"in t&&"value"in t&&t.value===null?s=new Po.Pair(t.key,null):s=new Po.Pair(t,null),Bo.findPair(this.items,s.key)||this.items.push(s)}get(t,s){let i=Bo.findPair(this.items,t);return!s&&Oo.isPair(i)?Oo.isScalar(i.key)?i.key.value:i.key:i}set(t,s){if(typeof s!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof s}`);let i=Bo.findPair(this.items,t);i&&!s?this.items.splice(this.items.indexOf(i),1):!i&&s&&this.items.push(new Po.Pair(t))}toJSON(t,s){return super.toJSON(t,s,Set)}toString(t,s,i){if(!t)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},t,{allNullValues:!0}),s,i);throw new Error("Set items must all have null values")}static from(t,s,i){let{replacer:r}=i,n=new this(t);if(s&&Symbol.iterator in Object(s))for(let o of s)typeof r=="function"&&(o=r.call(s,o,o)),n.items.push(Po.createPair(o,null,i));return n}};Is.tag="tag:yaml.org,2002:set";var ES={collection:"map",identify:e=>e instanceof Set,nodeClass:Is,default:!1,tag:"tag:yaml.org,2002:set",createNode:(e,t,s)=>Is.from(e,t,s),resolve(e,t){if(Oo.isMap(e)){if(e.hasAllNullValues(!0))return Object.assign(new Is,e);t("Set items must all have null values")}else t("Expected a mapping for this tag");return e}};Ll.YAMLSet=Is;Ll.set=ES});var jl=I(Lo=>{"use strict";var FS=yi();function Ml(e,t){let s=e[0],i=s==="-"||s==="+"?e.substring(1):e,r=o=>t?BigInt(o):Number(o),n=i.replace(/_/g,"").split(":").reduce((o,a)=>o*r(60)+r(a),r(0));return s==="-"?r(-1)*n:n}function ym(e){let{value:t}=e,s=o=>o;if(typeof t=="bigint")s=o=>BigInt(o);else if(isNaN(t)||!isFinite(t))return FS.stringifyNumber(e);let i="";t<0&&(i="-",t*=s(-1));let r=s(60),n=[t%r];return t<60?n.unshift(0):(t=(t-n[0])/r,n.unshift(t%r),t>=60&&(t=(t-n[0])/r,n.unshift(t))),i+n.map(o=>String(o).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var CS={identify:e=>typeof e=="bigint"||Number.isInteger(e),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(e,t,{intAsBigInt:s})=>Ml(e,s),stringify:ym},xS={identify:e=>typeof e=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:e=>Ml(e,!1),stringify:ym},wm={identify:e=>e instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(e){let t=e.match(wm.test);if(!t)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,s,i,r,n,o,a]=t.map(Number),u=t[7]?Number((t[7]+"00").substr(1,3)):0,l=Date.UTC(s,i-1,r,n||0,o||0,a||0,u),c=t[8];if(c&&c!=="Z"){let f=Ml(c,!1);Math.abs(f)<30&&(f*=60),l-=6e4*f}return new Date(l)},stringify:({value:e})=>e?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};Lo.floatTime=xS;Lo.intTime=CS;Lo.timestamp=wm});var Em=I(vm=>{"use strict";var SS=gi(),AS=Co(),RS=Di(),kS=Tr(),IS=kl(),bm=pm(),ql=mm(),No=Dm(),_S=go(),$S=Tl(),TS=_o(),PS=Nl(),Ul=jl(),BS=[SS.map,RS.seq,kS.string,AS.nullTag,bm.trueTag,bm.falseTag,No.intBin,No.intOct,No.int,No.intHex,ql.floatNaN,ql.floatExp,ql.float,IS.binary,_S.merge,$S.omap,TS.pairs,PS.set,Ul.intTime,Ul.floatTime,Ul.timestamp];vm.schema=BS});var $m=I(Wl=>{"use strict";var Sm=gi(),OS=Co(),Am=Di(),LS=Tr(),NS=vl(),Vl=Fl(),Gl=xl(),MS=tm(),jS=rm(),Rm=kl(),Nr=go(),km=Tl(),Im=_o(),Fm=Em(),_m=Nl(),Mo=jl(),Cm=new Map([["core",MS.schema],["failsafe",[Sm.map,Am.seq,LS.string]],["json",jS.schema],["yaml11",Fm.schema],["yaml-1.1",Fm.schema]]),xm={binary:Rm.binary,bool:NS.boolTag,float:Vl.float,floatExp:Vl.floatExp,floatNaN:Vl.floatNaN,floatTime:Mo.floatTime,int:Gl.int,intHex:Gl.intHex,intOct:Gl.intOct,intTime:Mo.intTime,map:Sm.map,merge:Nr.merge,null:OS.nullTag,omap:km.omap,pairs:Im.pairs,seq:Am.seq,set:_m.set,timestamp:Mo.timestamp},qS={"tag:yaml.org,2002:binary":Rm.binary,"tag:yaml.org,2002:merge":Nr.merge,"tag:yaml.org,2002:omap":km.omap,"tag:yaml.org,2002:pairs":Im.pairs,"tag:yaml.org,2002:set":_m.set,"tag:yaml.org,2002:timestamp":Mo.timestamp};function US(e,t,s){let i=Cm.get(t);if(i&&!e)return s&&!i.includes(Nr.merge)?i.concat(Nr.merge):i.slice();let r=i;if(!r)if(Array.isArray(e))r=[];else{let n=Array.from(Cm.keys()).filter(o=>o!=="yaml11").map(o=>JSON.stringify(o)).join(", ");throw new Error(`Unknown schema "${t}"; use one of ${n} or define customTags array`)}if(Array.isArray(e))for(let n of e)r=r.concat(n);else typeof e=="function"&&(r=e(r.slice()));return s&&(r=r.concat(Nr.merge)),r.reduce((n,o)=>{let a=typeof o=="string"?xm[o]:o;if(!a){let u=JSON.stringify(o),l=Object.keys(xm).map(c=>JSON.stringify(c)).join(", ");throw new Error(`Unknown custom tag ${u}; use one of ${l}`)}return n.includes(a)||n.push(a),n},[])}Wl.coreKnownTags=qS;Wl.getTags=US});var Hl=I(Tm=>{"use strict";var Kl=K(),VS=gi(),GS=Di(),WS=Tr(),jo=$m(),KS=(e,t)=>e.key<t.key?-1:e.key>t.key?1:0,zl=class e{constructor({compat:t,customTags:s,merge:i,resolveKnownTags:r,schema:n,sortMapEntries:o,toStringDefaults:a}){this.compat=Array.isArray(t)?jo.getTags(t,"compat"):t?jo.getTags(null,t):null,this.name=typeof n=="string"&&n||"core",this.knownTags=r?jo.coreKnownTags:{},this.tags=jo.getTags(s,this.name,i),this.toStringOptions=a??null,Object.defineProperty(this,Kl.MAP,{value:VS.map}),Object.defineProperty(this,Kl.SCALAR,{value:WS.string}),Object.defineProperty(this,Kl.SEQ,{value:GS.seq}),this.sortMapEntries=typeof o=="function"?o:o===!0?KS:null}clone(){let t=Object.create(e.prototype,Object.getOwnPropertyDescriptors(this));return t.tags=this.tags.slice(),t}};Tm.Schema=zl});var Bm=I(Pm=>{"use strict";var zS=K(),Jl=kr(),Mr=xr();function HS(e,t){let s=[],i=t.directives===!0;if(t.directives!==!1&&e.directives){let u=e.directives.toString(e);u?(s.push(u),i=!0):e.directives.docStart&&(i=!0)}i&&s.push("---");let r=Jl.createStringifyContext(e,t),{commentString:n}=r.options;if(e.commentBefore){s.length!==1&&s.unshift("");let u=n(e.commentBefore);s.unshift(Mr.indentComment(u,""))}let o=!1,a=null;if(e.contents){if(zS.isNode(e.contents)){if(e.contents.spaceBefore&&i&&s.push(""),e.contents.commentBefore){let c=n(e.contents.commentBefore);s.push(Mr.indentComment(c,""))}r.forceBlockIndent=!!e.comment,a=e.contents.comment}let u=a?void 0:()=>o=!0,l=Jl.stringify(e.contents,r,()=>a=null,u);a&&(l+=Mr.lineComment(l,"",n(a))),(l[0]==="|"||l[0]===">")&&s[s.length-1]==="---"?s[s.length-1]=`--- ${l}`:s.push(l)}else s.push(Jl.stringify(e.contents,r));if(e.directives?.docEnd)if(e.comment){let u=n(e.comment);u.includes(`
108
+ `)?(s.push("..."),s.push(Mr.indentComment(u,""))):s.push(`... ${u}`)}else s.push("...");else{let u=e.comment;u&&o&&(u=u.replace(/^\n+/,"")),u&&((!o||a)&&s[s.length-1]!==""&&s.push(""),s.push(Mr.indentComment(n(u),"")))}return s.join(`
109
+ `)+`
110
+ `}Pm.stringifyDocument=HS});var jr=I(Om=>{"use strict";var JS=Fr(),wi=oo(),Ye=K(),YS=rs(),ZS=es(),XS=Hl(),QS=Bm(),Yl=so(),e2=el(),t2=Cr(),Zl=Qu(),Xl=class e{constructor(t,s,i){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,Ye.NODE_TYPE,{value:Ye.DOC});let r=null;typeof s=="function"||Array.isArray(s)?r=s:i===void 0&&s&&(i=s,s=void 0);let n=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},i);this.options=n;let{version:o}=n;i?._directives?(this.directives=i._directives.atDocument(),this.directives.yaml.explicit&&(o=this.directives.yaml.version)):this.directives=new Zl.Directives({version:o}),this.setSchema(o,i),this.contents=t===void 0?null:this.createNode(t,r,i)}clone(){let t=Object.create(e.prototype,{[Ye.NODE_TYPE]:{value:Ye.DOC}});return t.commentBefore=this.commentBefore,t.comment=this.comment,t.errors=this.errors.slice(),t.warnings=this.warnings.slice(),t.options=Object.assign({},this.options),this.directives&&(t.directives=this.directives.clone()),t.schema=this.schema.clone(),t.contents=Ye.isNode(this.contents)?this.contents.clone(t.schema):this.contents,this.range&&(t.range=this.range.slice()),t}add(t){bi(this.contents)&&this.contents.add(t)}addIn(t,s){bi(this.contents)&&this.contents.addIn(t,s)}createAlias(t,s){if(!t.anchor){let i=Yl.anchorNames(this);t.anchor=!s||i.has(s)?Yl.findNewAnchor(s||"a",i):s}return new JS.Alias(t.anchor)}createNode(t,s,i){let r;if(typeof s=="function")t=s.call({"":t},"",t),r=s;else if(Array.isArray(s)){let D=y=>typeof y=="number"||y instanceof String||y instanceof Number,w=s.filter(D).map(String);w.length>0&&(s=s.concat(w)),r=s}else i===void 0&&s&&(i=s,s=void 0);let{aliasDuplicateObjects:n,anchorPrefix:o,flow:a,keepUndefined:u,onTagObj:l,tag:c}=i??{},{onAnchor:f,setAnchors:d,sourceObjects:p}=Yl.createNodeAnchors(this,o||"a"),m={aliasDuplicateObjects:n??!0,keepUndefined:u??!1,onAnchor:f,onTagObj:l,replacer:r,schema:this.schema,sourceObjects:p},g=t2.createNode(t,c,m);return a&&Ye.isCollection(g)&&(g.flow=!0),d(),g}createPair(t,s,i={}){let r=this.createNode(t,null,i),n=this.createNode(s,null,i);return new YS.Pair(r,n)}delete(t){return bi(this.contents)?this.contents.delete(t):!1}deleteIn(t){return wi.isEmptyPath(t)?this.contents==null?!1:(this.contents=null,!0):bi(this.contents)?this.contents.deleteIn(t):!1}get(t,s){return Ye.isCollection(this.contents)?this.contents.get(t,s):void 0}getIn(t,s){return wi.isEmptyPath(t)?!s&&Ye.isScalar(this.contents)?this.contents.value:this.contents:Ye.isCollection(this.contents)?this.contents.getIn(t,s):void 0}has(t){return Ye.isCollection(this.contents)?this.contents.has(t):!1}hasIn(t){return wi.isEmptyPath(t)?this.contents!==void 0:Ye.isCollection(this.contents)?this.contents.hasIn(t):!1}set(t,s){this.contents==null?this.contents=wi.collectionFromPath(this.schema,[t],s):bi(this.contents)&&this.contents.set(t,s)}setIn(t,s){wi.isEmptyPath(t)?this.contents=s:this.contents==null?this.contents=wi.collectionFromPath(this.schema,Array.from(t),s):bi(this.contents)&&this.contents.setIn(t,s)}setSchema(t,s={}){typeof t=="number"&&(t=String(t));let i;switch(t){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new Zl.Directives({version:"1.1"}),i={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=t:this.directives=new Zl.Directives({version:t}),i={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,i=null;break;default:{let r=JSON.stringify(t);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${r}`)}}if(s.schema instanceof Object)this.schema=s.schema;else if(i)this.schema=new XS.Schema(Object.assign(i,s));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:t,jsonArg:s,mapAsMap:i,maxAliasCount:r,onAnchor:n,reviver:o}={}){let a={anchors:new Map,doc:this,keep:!t,mapAsMap:i===!0,mapKeyWarned:!1,maxAliasCount:typeof r=="number"?r:100},u=ZS.toJS(this.contents,s??"",a);if(typeof n=="function")for(let{count:l,res:c}of a.anchors.values())n(c,l);return typeof o=="function"?e2.applyReviver(o,{"":u},"",u):u}toJSON(t,s){return this.toJS({json:!0,jsonArg:t,mapAsMap:!1,onAnchor:s})}toString(t={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in t&&(!Number.isInteger(t.indent)||Number(t.indent)<=0)){let s=JSON.stringify(t.indent);throw new Error(`"indent" option must be a positive integer, not ${s}`)}return QS.stringifyDocument(this,t)}};function bi(e){if(Ye.isCollection(e))return!0;throw new Error("Expected a YAML collection as document contents")}Om.Document=Xl});var Vr=I(Ur=>{"use strict";var qr=class extends Error{constructor(t,s,i,r){super(),this.name=t,this.code=i,this.message=r,this.pos=s}},Ql=class extends qr{constructor(t,s,i){super("YAMLParseError",t,s,i)}},ec=class extends qr{constructor(t,s,i){super("YAMLWarning",t,s,i)}},s2=(e,t)=>s=>{if(s.pos[0]===-1)return;s.linePos=s.pos.map(a=>t.linePos(a));let{line:i,col:r}=s.linePos[0];s.message+=` at line ${i}, column ${r}`;let n=r-1,o=e.substring(t.lineStarts[i-1],t.lineStarts[i]).replace(/[\n\r]+$/,"");if(n>=60&&o.length>80){let a=Math.min(n-39,o.length-79);o="\u2026"+o.substring(a),n-=a-1}if(o.length>80&&(o=o.substring(0,79)+"\u2026"),i>1&&/^ *$/.test(o.substring(0,n))){let a=e.substring(t.lineStarts[i-2],t.lineStarts[i-1]);a.length>80&&(a=a.substring(0,79)+`\u2026
111
+ `),o=a+o}if(/[^ ]/.test(o)){let a=1,u=s.linePos[1];u?.line===i&&u.col>r&&(a=Math.max(1,Math.min(u.col-r,80-n)));let l=" ".repeat(n)+"^".repeat(a);s.message+=`:
112
+
113
+ ${o}
114
+ ${l}
115
+ `}};Ur.YAMLError=qr;Ur.YAMLParseError=Ql;Ur.YAMLWarning=ec;Ur.prettifyError=s2});var Gr=I(Lm=>{"use strict";function i2(e,{flow:t,indicator:s,next:i,offset:r,onError:n,parentIndent:o,startOnNewline:a}){let u=!1,l=a,c=a,f="",d="",p=!1,m=!1,g=null,D=null,w=null,y=null,v=null,E=null,F=null;for(let x of e)switch(m&&(x.type!=="space"&&x.type!=="newline"&&x.type!=="comma"&&n(x.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),m=!1),g&&(l&&x.type!=="comment"&&x.type!=="newline"&&n(g,"TAB_AS_INDENT","Tabs are not allowed as indentation"),g=null),x.type){case"space":!t&&(s!=="doc-start"||i?.type!=="flow-collection")&&x.source.includes(" ")&&(g=x),c=!0;break;case"comment":{c||n(x,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let $=x.source.substring(1)||" ";f?f+=d+$:f=$,d="",l=!1;break}case"newline":l?f?f+=x.source:(!E||s!=="seq-item-ind")&&(u=!0):d+=x.source,l=!0,p=!0,(D||w)&&(y=x),c=!0;break;case"anchor":D&&n(x,"MULTIPLE_ANCHORS","A node can have at most one anchor"),x.source.endsWith(":")&&n(x.offset+x.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),D=x,F??(F=x.offset),l=!1,c=!1,m=!0;break;case"tag":{w&&n(x,"MULTIPLE_TAGS","A node can have at most one tag"),w=x,F??(F=x.offset),l=!1,c=!1,m=!0;break}case s:(D||w)&&n(x,"BAD_PROP_ORDER",`Anchors and tags must be after the ${x.source} indicator`),E&&n(x,"UNEXPECTED_TOKEN",`Unexpected ${x.source} in ${t??"collection"}`),E=x,l=s==="seq-item-ind"||s==="explicit-key-ind",c=!1;break;case"comma":if(t){v&&n(x,"UNEXPECTED_TOKEN",`Unexpected , in ${t}`),v=x,l=!1,c=!1;break}default:n(x,"UNEXPECTED_TOKEN",`Unexpected ${x.type} token`),l=!1,c=!1}let S=e[e.length-1],B=S?S.offset+S.source.length:r;return m&&i&&i.type!=="space"&&i.type!=="newline"&&i.type!=="comma"&&(i.type!=="scalar"||i.source!=="")&&n(i.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),g&&(l&&g.indent<=o||i?.type==="block-map"||i?.type==="block-seq")&&n(g,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:v,found:E,spaceBefore:u,comment:f,hasNewline:p,anchor:D,tag:w,newlineAfterProp:y,end:B,start:F??B}}Lm.resolveProps=i2});var qo=I(Nm=>{"use strict";function tc(e){if(!e)return null;switch(e.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(e.source.includes(`
116
+ `))return!0;if(e.end){for(let t of e.end)if(t.type==="newline")return!0}return!1;case"flow-collection":for(let t of e.items){for(let s of t.start)if(s.type==="newline")return!0;if(t.sep){for(let s of t.sep)if(s.type==="newline")return!0}if(tc(t.key)||tc(t.value))return!0}return!1;default:return!0}}Nm.containsNewline=tc});var sc=I(Mm=>{"use strict";var r2=qo();function n2(e,t,s){if(t?.type==="flow-collection"){let i=t.end[0];i.indent===e&&(i.source==="]"||i.source==="}")&&r2.containsNewline(t)&&s(i,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}Mm.flowIndentCheck=n2});var ic=I(qm=>{"use strict";var jm=K();function o2(e,t,s){let{uniqueKeys:i}=e.options;if(i===!1)return!1;let r=typeof i=="function"?i:(n,o)=>n===o||jm.isScalar(n)&&jm.isScalar(o)&&n.value===o.value;return t.some(n=>r(n.key,s))}qm.mapIncludes=o2});var zm=I(Km=>{"use strict";var Um=rs(),a2=os(),Vm=Gr(),u2=qo(),Gm=sc(),l2=ic(),Wm="All mapping items must start at the same column";function c2({composeNode:e,composeEmptyNode:t},s,i,r,n){let o=n?.nodeClass??a2.YAMLMap,a=new o(s.schema);s.atRoot&&(s.atRoot=!1);let u=i.offset,l=null;for(let c of i.items){let{start:f,key:d,sep:p,value:m}=c,g=Vm.resolveProps(f,{indicator:"explicit-key-ind",next:d??p?.[0],offset:u,onError:r,parentIndent:i.indent,startOnNewline:!0}),D=!g.found;if(D){if(d&&(d.type==="block-seq"?r(u,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in d&&d.indent!==i.indent&&r(u,"BAD_INDENT",Wm)),!g.anchor&&!g.tag&&!p){l=g.end,g.comment&&(a.comment?a.comment+=`
117
+ `+g.comment:a.comment=g.comment);continue}(g.newlineAfterProp||u2.containsNewline(d))&&r(d??f[f.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else g.found?.indent!==i.indent&&r(u,"BAD_INDENT",Wm);s.atKey=!0;let w=g.end,y=d?e(s,d,g,r):t(s,w,f,null,g,r);s.schema.compat&&Gm.flowIndentCheck(i.indent,d,r),s.atKey=!1,l2.mapIncludes(s,a.items,y)&&r(w,"DUPLICATE_KEY","Map keys must be unique");let v=Vm.resolveProps(p??[],{indicator:"map-value-ind",next:m,offset:y.range[2],onError:r,parentIndent:i.indent,startOnNewline:!d||d.type==="block-scalar"});if(u=v.end,v.found){D&&(m?.type==="block-map"&&!v.hasNewline&&r(u,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),s.options.strict&&g.start<v.found.offset-1024&&r(y.range,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit block mapping key"));let E=m?e(s,m,v,r):t(s,u,p,null,v,r);s.schema.compat&&Gm.flowIndentCheck(i.indent,m,r),u=E.range[2];let F=new Um.Pair(y,E);s.options.keepSourceTokens&&(F.srcToken=c),a.items.push(F)}else{D&&r(y.range,"MISSING_CHAR","Implicit map keys need to be followed by map values"),v.comment&&(y.comment?y.comment+=`
118
+ `+v.comment:y.comment=v.comment);let E=new Um.Pair(y);s.options.keepSourceTokens&&(E.srcToken=c),a.items.push(E)}}return l&&l<u&&r(l,"IMPOSSIBLE","Map comment with trailing content"),a.range=[i.offset,u,l??u],a}Km.resolveBlockMap=c2});var Jm=I(Hm=>{"use strict";var f2=as(),d2=Gr(),h2=sc();function p2({composeNode:e,composeEmptyNode:t},s,i,r,n){let o=n?.nodeClass??f2.YAMLSeq,a=new o(s.schema);s.atRoot&&(s.atRoot=!1),s.atKey&&(s.atKey=!1);let u=i.offset,l=null;for(let{start:c,value:f}of i.items){let d=d2.resolveProps(c,{indicator:"seq-item-ind",next:f,offset:u,onError:r,parentIndent:i.indent,startOnNewline:!0});if(!d.found)if(d.anchor||d.tag||f)f?.type==="block-seq"?r(d.end,"BAD_INDENT","All sequence items must start at the same column"):r(u,"MISSING_CHAR","Sequence item without - indicator");else{l=d.end,d.comment&&(a.comment=d.comment);continue}let p=f?e(s,f,d,r):t(s,d.end,c,null,d,r);s.schema.compat&&h2.flowIndentCheck(i.indent,f,r),u=p.range[2],a.items.push(p)}return a.range=[i.offset,u,l??u],a}Hm.resolveBlockSeq=p2});var vi=I(Ym=>{"use strict";function m2(e,t,s,i){let r="";if(e){let n=!1,o="";for(let a of e){let{source:u,type:l}=a;switch(l){case"space":n=!0;break;case"comment":{s&&!n&&i(a,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let c=u.substring(1)||" ";r?r+=o+c:r=c,o="";break}case"newline":r&&(o+=u),n=!0;break;default:i(a,"UNEXPECTED_TOKEN",`Unexpected ${l} at node end`)}t+=u.length}}return{comment:r,offset:t}}Ym.resolveEnd=m2});var eg=I(Qm=>{"use strict";var g2=K(),D2=rs(),Zm=os(),y2=as(),w2=vi(),Xm=Gr(),b2=qo(),v2=ic(),rc="Block collections are not allowed within flow collections",nc=e=>e&&(e.type==="block-map"||e.type==="block-seq");function E2({composeNode:e,composeEmptyNode:t},s,i,r,n){let o=i.start.source==="{",a=o?"flow map":"flow sequence",u=n?.nodeClass??(o?Zm.YAMLMap:y2.YAMLSeq),l=new u(s.schema);l.flow=!0;let c=s.atRoot;c&&(s.atRoot=!1),s.atKey&&(s.atKey=!1);let f=i.offset+i.start.source.length;for(let D=0;D<i.items.length;++D){let w=i.items[D],{start:y,key:v,sep:E,value:F}=w,S=Xm.resolveProps(y,{flow:a,indicator:"explicit-key-ind",next:v??E?.[0],offset:f,onError:r,parentIndent:i.indent,startOnNewline:!1});if(!S.found){if(!S.anchor&&!S.tag&&!E&&!F){D===0&&S.comma?r(S.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${a}`):D<i.items.length-1&&r(S.start,"UNEXPECTED_TOKEN",`Unexpected empty item in ${a}`),S.comment&&(l.comment?l.comment+=`
119
+ `+S.comment:l.comment=S.comment),f=S.end;continue}!o&&s.options.strict&&b2.containsNewline(v)&&r(v,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line")}if(D===0)S.comma&&r(S.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${a}`);else if(S.comma||r(S.start,"MISSING_CHAR",`Missing , between ${a} items`),S.comment){let B="";e:for(let x of y)switch(x.type){case"comma":case"space":break;case"comment":B=x.source.substring(1);break e;default:break e}if(B){let x=l.items[l.items.length-1];g2.isPair(x)&&(x=x.value??x.key),x.comment?x.comment+=`
120
+ `+B:x.comment=B,S.comment=S.comment.substring(B.length+1)}}if(!o&&!E&&!S.found){let B=F?e(s,F,S,r):t(s,S.end,E,null,S,r);l.items.push(B),f=B.range[2],nc(F)&&r(B.range,"BLOCK_IN_FLOW",rc)}else{s.atKey=!0;let B=S.end,x=v?e(s,v,S,r):t(s,B,y,null,S,r);nc(v)&&r(x.range,"BLOCK_IN_FLOW",rc),s.atKey=!1;let $=Xm.resolveProps(E??[],{flow:a,indicator:"map-value-ind",next:F,offset:x.range[2],onError:r,parentIndent:i.indent,startOnNewline:!1});if($.found){if(!o&&!S.found&&s.options.strict){if(E)for(let z of E){if(z===$.found)break;if(z.type==="newline"){r(z,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line");break}}S.start<$.found.offset-1024&&r($.found,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit flow sequence key")}}else F&&("source"in F&&F.source?.[0]===":"?r(F,"MISSING_CHAR",`Missing space after : in ${a}`):r($.start,"MISSING_CHAR",`Missing , or : between ${a} items`));let W=F?e(s,F,$,r):$.found?t(s,$.end,E,null,$,r):null;W?nc(F)&&r(W.range,"BLOCK_IN_FLOW",rc):$.comment&&(x.comment?x.comment+=`
121
+ `+$.comment:x.comment=$.comment);let ae=new D2.Pair(x,W);if(s.options.keepSourceTokens&&(ae.srcToken=w),o){let z=l;v2.mapIncludes(s,z.items,x)&&r(B,"DUPLICATE_KEY","Map keys must be unique"),z.items.push(ae)}else{let z=new Zm.YAMLMap(s.schema);z.flow=!0,z.items.push(ae);let R=(W??x).range;z.range=[x.range[0],R[1],R[2]],l.items.push(z)}f=W?W.range[2]:$.end}}let d=o?"}":"]",[p,...m]=i.end,g=f;if(p?.source===d)g=p.offset+p.source.length;else{let D=a[0].toUpperCase()+a.substring(1),w=c?`${D} must end with a ${d}`:`${D} in block collection must be sufficiently indented and end with a ${d}`;r(f,c?"MISSING_CHAR":"BAD_INDENT",w),p&&p.source.length!==1&&m.unshift(p)}if(m.length>0){let D=w2.resolveEnd(m,g,s.options.strict,r);D.comment&&(l.comment?l.comment+=`
122
+ `+D.comment:l.comment=D.comment),l.range=[i.offset,g,D.offset]}else l.range=[i.offset,g,g];return l}Qm.resolveFlowCollection=E2});var sg=I(tg=>{"use strict";var F2=K(),C2=fe(),x2=os(),S2=as(),A2=zm(),R2=Jm(),k2=eg();function oc(e,t,s,i,r,n){let o=s.type==="block-map"?A2.resolveBlockMap(e,t,s,i,n):s.type==="block-seq"?R2.resolveBlockSeq(e,t,s,i,n):k2.resolveFlowCollection(e,t,s,i,n),a=o.constructor;return r==="!"||r===a.tagName?(o.tag=a.tagName,o):(r&&(o.tag=r),o)}function I2(e,t,s,i,r){let n=i.tag,o=n?t.directives.tagName(n.source,d=>r(n,"TAG_RESOLVE_FAILED",d)):null;if(s.type==="block-seq"){let{anchor:d,newlineAfterProp:p}=i,m=d&&n?d.offset>n.offset?d:n:d??n;m&&(!p||p.offset<m.offset)&&r(m,"MISSING_CHAR","Missing newline after block sequence props")}let a=s.type==="block-map"?"map":s.type==="block-seq"?"seq":s.start.source==="{"?"map":"seq";if(!n||!o||o==="!"||o===x2.YAMLMap.tagName&&a==="map"||o===S2.YAMLSeq.tagName&&a==="seq")return oc(e,t,s,r,o);let u=t.schema.tags.find(d=>d.tag===o&&d.collection===a);if(!u){let d=t.schema.knownTags[o];if(d?.collection===a)t.schema.tags.push(Object.assign({},d,{default:!1})),u=d;else return d?r(n,"BAD_COLLECTION_TYPE",`${d.tag} used for ${a} collection, but expects ${d.collection??"scalar"}`,!0):r(n,"TAG_RESOLVE_FAILED",`Unresolved tag: ${o}`,!0),oc(e,t,s,r,o)}let l=oc(e,t,s,r,o,u),c=u.resolve?.(l,d=>r(n,"TAG_RESOLVE_FAILED",d),t.options)??l,f=F2.isNode(c)?c:new C2.Scalar(c);return f.range=l.range,f.tag=o,u?.format&&(f.format=u.format),f}tg.composeCollection=I2});var uc=I(ig=>{"use strict";var ac=fe();function _2(e,t,s){let i=t.offset,r=$2(t,e.options.strict,s);if(!r)return{value:"",type:null,comment:"",range:[i,i,i]};let n=r.mode===">"?ac.Scalar.BLOCK_FOLDED:ac.Scalar.BLOCK_LITERAL,o=t.source?T2(t.source):[],a=o.length;for(let g=o.length-1;g>=0;--g){let D=o[g][1];if(D===""||D==="\r")a=g;else break}if(a===0){let g=r.chomp==="+"&&o.length>0?`
123
+ `.repeat(Math.max(1,o.length-1)):"",D=i+r.length;return t.source&&(D+=t.source.length),{value:g,type:n,comment:r.comment,range:[i,D,D]}}let u=t.indent+r.indent,l=t.offset+r.length,c=0;for(let g=0;g<a;++g){let[D,w]=o[g];if(w===""||w==="\r")r.indent===0&&D.length>u&&(u=D.length);else{D.length<u&&s(l+D.length,"MISSING_CHAR","Block scalars with more-indented leading empty lines must use an explicit indentation indicator"),r.indent===0&&(u=D.length),c=g,u===0&&!e.atRoot&&s(l,"BAD_INDENT","Block scalar values in collections must be indented");break}l+=D.length+w.length+1}for(let g=o.length-1;g>=a;--g)o[g][0].length>u&&(a=g+1);let f="",d="",p=!1;for(let g=0;g<c;++g)f+=o[g][0].slice(u)+`
124
+ `;for(let g=c;g<a;++g){let[D,w]=o[g];l+=D.length+w.length+1;let y=w[w.length-1]==="\r";if(y&&(w=w.slice(0,-1)),w&&D.length<u){let E=`Block scalar lines must not be less indented than their ${r.indent?"explicit indentation indicator":"first line"}`;s(l-w.length-(y?2:1),"BAD_INDENT",E),D=""}n===ac.Scalar.BLOCK_LITERAL?(f+=d+D.slice(u)+w,d=`
125
+ `):D.length>u||w[0]===" "?(d===" "?d=`
126
+ `:!p&&d===`
127
+ `&&(d=`
128
+
129
+ `),f+=d+D.slice(u)+w,d=`
130
+ `,p=!0):w===""?d===`
131
+ `?f+=`
132
+ `:d=`
133
+ `:(f+=d+w,d=" ",p=!1)}switch(r.chomp){case"-":break;case"+":for(let g=a;g<o.length;++g)f+=`
134
+ `+o[g][0].slice(u);f[f.length-1]!==`
135
+ `&&(f+=`
136
+ `);break;default:f+=`
137
+ `}let m=i+r.length+t.source.length;return{value:f,type:n,comment:r.comment,range:[i,m,m]}}function $2({offset:e,props:t},s,i){if(t[0].type!=="block-scalar-header")return i(t[0],"IMPOSSIBLE","Block scalar header not found"),null;let{source:r}=t[0],n=r[0],o=0,a="",u=-1;for(let d=1;d<r.length;++d){let p=r[d];if(!a&&(p==="-"||p==="+"))a=p;else{let m=Number(p);!o&&m?o=m:u===-1&&(u=e+d)}}u!==-1&&i(u,"UNEXPECTED_TOKEN",`Block scalar header includes extra characters: ${r}`);let l=!1,c="",f=r.length;for(let d=1;d<t.length;++d){let p=t[d];switch(p.type){case"space":l=!0;case"newline":f+=p.source.length;break;case"comment":s&&!l&&i(p,"MISSING_CHAR","Comments must be separated from other tokens by white space characters"),f+=p.source.length,c=p.source.substring(1);break;case"error":i(p,"UNEXPECTED_TOKEN",p.message),f+=p.source.length;break;default:{let m=`Unexpected token in block scalar header: ${p.type}`;i(p,"UNEXPECTED_TOKEN",m);let g=p.source;g&&typeof g=="string"&&(f+=g.length)}}}return{mode:n,indent:o,chomp:a,comment:c,length:f}}function T2(e){let t=e.split(/\n( *)/),s=t[0],i=s.match(/^( *)/),n=[i?.[1]?[i[1],s.slice(i[1].length)]:["",s]];for(let o=1;o<t.length;o+=2)n.push([t[o],t[o+1]]);return n}ig.resolveBlockScalar=_2});var cc=I(ng=>{"use strict";var lc=fe(),P2=vi();function B2(e,t,s){let{offset:i,type:r,source:n,end:o}=e,a,u,l=(d,p,m)=>s(i+d,p,m);switch(r){case"scalar":a=lc.Scalar.PLAIN,u=O2(n,l);break;case"single-quoted-scalar":a=lc.Scalar.QUOTE_SINGLE,u=L2(n,l);break;case"double-quoted-scalar":a=lc.Scalar.QUOTE_DOUBLE,u=N2(n,l);break;default:return s(e,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${r}`),{value:"",type:null,comment:"",range:[i,i+n.length,i+n.length]}}let c=i+n.length,f=P2.resolveEnd(o,c,t,s);return{value:u,type:a,comment:f.comment,range:[i,c,f.offset]}}function O2(e,t){let s="";switch(e[0]){case" ":s="a tab character";break;case",":s="flow indicator character ,";break;case"%":s="directive indicator character %";break;case"|":case">":{s=`block scalar indicator ${e[0]}`;break}case"@":case"`":{s=`reserved character ${e[0]}`;break}}return s&&t(0,"BAD_SCALAR_START",`Plain value cannot start with ${s}`),rg(e)}function L2(e,t){return(e[e.length-1]!=="'"||e.length===1)&&t(e.length,"MISSING_CHAR","Missing closing 'quote"),rg(e.slice(1,-1)).replace(/''/g,"'")}function rg(e){let t,s;try{t=new RegExp(`(.*?)(?<![ ])[ ]*\r?
138
+ `,"sy"),s=new RegExp(`[ ]*(.*?)(?:(?<![ ])[ ]*)?\r?
139
+ `,"sy")}catch{t=/(.*?)[ \t]*\r?\n/sy,s=/[ \t]*(.*?)[ \t]*\r?\n/sy}let i=t.exec(e);if(!i)return e;let r=i[1],n=" ",o=t.lastIndex;for(s.lastIndex=o;i=s.exec(e);)i[1]===""?n===`
140
+ `?r+=n:n=`
141
+ `:(r+=n+i[1],n=" "),o=s.lastIndex;let a=/[ \t]*(.*)/sy;return a.lastIndex=o,i=a.exec(e),r+n+(i?.[1]??"")}function N2(e,t){let s="";for(let i=1;i<e.length-1;++i){let r=e[i];if(!(r==="\r"&&e[i+1]===`
142
+ `))if(r===`
143
+ `){let{fold:n,offset:o}=M2(e,i);s+=n,i=o}else if(r==="\\"){let n=e[++i],o=j2[n];if(o)s+=o;else if(n===`
144
+ `)for(n=e[i+1];n===" "||n===" ";)n=e[++i+1];else if(n==="\r"&&e[i+1]===`
145
+ `)for(n=e[++i+1];n===" "||n===" ";)n=e[++i+1];else if(n==="x"||n==="u"||n==="U"){let a={x:2,u:4,U:8}[n];s+=q2(e,i+1,a,t),i+=a}else{let a=e.substr(i-1,2);t(i-1,"BAD_DQ_ESCAPE",`Invalid escape sequence ${a}`),s+=a}}else if(r===" "||r===" "){let n=i,o=e[i+1];for(;o===" "||o===" ";)o=e[++i+1];o!==`
146
+ `&&!(o==="\r"&&e[i+2]===`
147
+ `)&&(s+=i>n?e.slice(n,i+1):r)}else s+=r}return(e[e.length-1]!=='"'||e.length===1)&&t(e.length,"MISSING_CHAR",'Missing closing "quote'),s}function M2(e,t){let s="",i=e[t+1];for(;(i===" "||i===" "||i===`
148
+ `||i==="\r")&&!(i==="\r"&&e[t+2]!==`
149
+ `);)i===`
150
+ `&&(s+=`
151
+ `),t+=1,i=e[t+1];return s||(s=" "),{fold:s,offset:t}}var j2={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:`
152
+ `,r:"\r",t:" ",v:"\v",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function q2(e,t,s,i){let r=e.substr(t,s),o=r.length===s&&/^[0-9a-fA-F]+$/.test(r)?parseInt(r,16):NaN;if(isNaN(o)){let a=e.substr(t-2,s+2);return i(t-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${a}`),a}return String.fromCodePoint(o)}ng.resolveFlowScalar=B2});var ug=I(ag=>{"use strict";var _s=K(),og=fe(),U2=uc(),V2=cc();function G2(e,t,s,i){let{value:r,type:n,comment:o,range:a}=t.type==="block-scalar"?U2.resolveBlockScalar(e,t,i):V2.resolveFlowScalar(t,e.options.strict,i),u=s?e.directives.tagName(s.source,f=>i(s,"TAG_RESOLVE_FAILED",f)):null,l;e.options.stringKeys&&e.atKey?l=e.schema[_s.SCALAR]:u?l=W2(e.schema,r,u,s,i):t.type==="scalar"?l=K2(e,r,t,i):l=e.schema[_s.SCALAR];let c;try{let f=l.resolve(r,d=>i(s??t,"TAG_RESOLVE_FAILED",d),e.options);c=_s.isScalar(f)?f:new og.Scalar(f)}catch(f){let d=f instanceof Error?f.message:String(f);i(s??t,"TAG_RESOLVE_FAILED",d),c=new og.Scalar(r)}return c.range=a,c.source=r,n&&(c.type=n),u&&(c.tag=u),l.format&&(c.format=l.format),o&&(c.comment=o),c}function W2(e,t,s,i,r){if(s==="!")return e[_s.SCALAR];let n=[];for(let a of e.tags)if(!a.collection&&a.tag===s)if(a.default&&a.test)n.push(a);else return a;for(let a of n)if(a.test?.test(t))return a;let o=e.knownTags[s];return o&&!o.collection?(e.tags.push(Object.assign({},o,{default:!1,test:void 0})),o):(r(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${s}`,s!=="tag:yaml.org,2002:str"),e[_s.SCALAR])}function K2({atKey:e,directives:t,schema:s},i,r,n){let o=s.tags.find(a=>(a.default===!0||e&&a.default==="key")&&a.test?.test(i))||s[_s.SCALAR];if(s.compat){let a=s.compat.find(u=>u.default&&u.test?.test(i))??s[_s.SCALAR];if(o.tag!==a.tag){let u=t.tagString(o.tag),l=t.tagString(a.tag),c=`Value may be parsed as either ${u} or ${l}`;n(r,"TAG_RESOLVE_FAILED",c,!0)}}return o}ag.composeScalar=G2});var cg=I(lg=>{"use strict";function z2(e,t,s){if(t){s??(s=t.length);for(let i=s-1;i>=0;--i){let r=t[i];switch(r.type){case"space":case"comment":case"newline":e-=r.source.length;continue}for(r=t[++i];r?.type==="space";)e+=r.source.length,r=t[++i];break}}return e}lg.emptyScalarPosition=z2});var hg=I(dc=>{"use strict";var H2=Fr(),J2=K(),Y2=sg(),fg=ug(),Z2=vi(),X2=cg(),Q2={composeNode:dg,composeEmptyNode:fc};function dg(e,t,s,i){let r=e.atKey,{spaceBefore:n,comment:o,anchor:a,tag:u}=s,l,c=!0;switch(t.type){case"alias":l=e1(e,t,i),(a||u)&&i(t,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":l=fg.composeScalar(e,t,u,i),a&&(l.anchor=a.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":try{l=Y2.composeCollection(Q2,e,t,s,i),a&&(l.anchor=a.source.substring(1))}catch(f){let d=f instanceof Error?f.message:String(f);i(t,"RESOURCE_EXHAUSTION",d)}break;default:{let f=t.type==="error"?t.message:`Unsupported token (type: ${t.type})`;i(t,"UNEXPECTED_TOKEN",f),c=!1}}return l??(l=fc(e,t.offset,void 0,null,s,i)),a&&l.anchor===""&&i(a,"BAD_ALIAS","Anchor cannot be an empty string"),r&&e.options.stringKeys&&(!J2.isScalar(l)||typeof l.value!="string"||l.tag&&l.tag!=="tag:yaml.org,2002:str")&&i(u??t,"NON_STRING_KEY","With stringKeys, all keys must be strings"),n&&(l.spaceBefore=!0),o&&(t.type==="scalar"&&t.source===""?l.comment=o:l.commentBefore=o),e.options.keepSourceTokens&&c&&(l.srcToken=t),l}function fc(e,t,s,i,{spaceBefore:r,comment:n,anchor:o,tag:a,end:u},l){let c={type:"scalar",offset:X2.emptyScalarPosition(t,s,i),indent:-1,source:""},f=fg.composeScalar(e,c,a,l);return o&&(f.anchor=o.source.substring(1),f.anchor===""&&l(o,"BAD_ALIAS","Anchor cannot be an empty string")),r&&(f.spaceBefore=!0),n&&(f.comment=n,f.range[2]=u),f}function e1({options:e},{offset:t,source:s,end:i},r){let n=new H2.Alias(s.substring(1));n.source===""&&r(t,"BAD_ALIAS","Alias cannot be an empty string"),n.source.endsWith(":")&&r(t+s.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let o=t+s.length,a=Z2.resolveEnd(i,o,e.strict,r);return n.range=[t,o,a.offset],a.comment&&(n.comment=a.comment),n}dc.composeEmptyNode=fc;dc.composeNode=dg});var gg=I(mg=>{"use strict";var t1=jr(),pg=hg(),s1=vi(),i1=Gr();function r1(e,t,{offset:s,start:i,value:r,end:n},o){let a=Object.assign({_directives:t},e),u=new t1.Document(void 0,a),l={atKey:!1,atRoot:!0,directives:u.directives,options:u.options,schema:u.schema},c=i1.resolveProps(i,{indicator:"doc-start",next:r??n?.[0],offset:s,onError:o,parentIndent:0,startOnNewline:!0});c.found&&(u.directives.docStart=!0,r&&(r.type==="block-map"||r.type==="block-seq")&&!c.hasNewline&&o(c.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),u.contents=r?pg.composeNode(l,r,c,o):pg.composeEmptyNode(l,c.end,i,null,c,o);let f=u.contents.range[2],d=s1.resolveEnd(n,f,!1,o);return d.comment&&(u.comment=d.comment),u.range=[s,f,d.offset],u}mg.composeDoc=r1});var pc=I(wg=>{"use strict";var n1=require("process"),o1=Qu(),a1=jr(),Wr=Vr(),Dg=K(),u1=gg(),l1=vi();function Kr(e){if(typeof e=="number")return[e,e+1];if(Array.isArray(e))return e.length===2?e:[e[0],e[1]];let{offset:t,source:s}=e;return[t,t+(typeof s=="string"?s.length:1)]}function yg(e){let t="",s=!1,i=!1;for(let r=0;r<e.length;++r){let n=e[r];switch(n[0]){case"#":t+=(t===""?"":i?`
153
+
154
+ `:`
155
+ `)+(n.substring(1)||" "),s=!0,i=!1;break;case"%":e[r+1]?.[0]!=="#"&&(r+=1),s=!1;break;default:s||(i=!0),s=!1}}return{comment:t,afterEmptyLine:i}}var hc=class{constructor(t={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(s,i,r,n)=>{let o=Kr(s);n?this.warnings.push(new Wr.YAMLWarning(o,i,r)):this.errors.push(new Wr.YAMLParseError(o,i,r))},this.directives=new o1.Directives({version:t.version||"1.2"}),this.options=t}decorate(t,s){let{comment:i,afterEmptyLine:r}=yg(this.prelude);if(i){let n=t.contents;if(s)t.comment=t.comment?`${t.comment}
156
+ ${i}`:i;else if(r||t.directives.docStart||!n)t.commentBefore=i;else if(Dg.isCollection(n)&&!n.flow&&n.items.length>0){let o=n.items[0];Dg.isPair(o)&&(o=o.key);let a=o.commentBefore;o.commentBefore=a?`${i}
157
+ ${a}`:i}else{let o=n.commentBefore;n.commentBefore=o?`${i}
158
+ ${o}`:i}}s?(Array.prototype.push.apply(t.errors,this.errors),Array.prototype.push.apply(t.warnings,this.warnings)):(t.errors=this.errors,t.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:yg(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(t,s=!1,i=-1){for(let r of t)yield*this.next(r);yield*this.end(s,i)}*next(t){switch(n1.env.LOG_STREAM&&console.dir(t,{depth:null}),t.type){case"directive":this.directives.add(t.source,(s,i,r)=>{let n=Kr(t);n[0]+=s,this.onError(n,"BAD_DIRECTIVE",i,r)}),this.prelude.push(t.source),this.atDirectives=!0;break;case"document":{let s=u1.composeDoc(this.options,this.directives,t,this.onError);this.atDirectives&&!s.directives.docStart&&this.onError(t,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(s,!1),this.doc&&(yield this.doc),this.doc=s,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(t.source);break;case"error":{let s=t.source?`${t.message}: ${JSON.stringify(t.source)}`:t.message,i=new Wr.YAMLParseError(Kr(t),"UNEXPECTED_TOKEN",s);this.atDirectives||!this.doc?this.errors.push(i):this.doc.errors.push(i);break}case"doc-end":{if(!this.doc){let i="Unexpected doc-end without preceding document";this.errors.push(new Wr.YAMLParseError(Kr(t),"UNEXPECTED_TOKEN",i));break}this.doc.directives.docEnd=!0;let s=l1.resolveEnd(t.end,t.offset+t.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),s.comment){let i=this.doc.comment;this.doc.comment=i?`${i}
159
+ ${s.comment}`:s.comment}this.doc.range[2]=s.offset;break}default:this.errors.push(new Wr.YAMLParseError(Kr(t),"UNEXPECTED_TOKEN",`Unsupported token ${t.type}`))}}*end(t=!1,s=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(t){let i=Object.assign({_directives:this.directives},this.options),r=new a1.Document(void 0,i);this.atDirectives&&this.onError(s,"MISSING_CHAR","Missing directives-end indicator line"),r.range=[0,s,s],this.decorate(r,!1),yield r}}};wg.Composer=hc});var Eg=I(Uo=>{"use strict";var c1=uc(),f1=cc(),d1=Vr(),bg=Rr();function h1(e,t=!0,s){if(e){let i=(r,n,o)=>{let a=typeof r=="number"?r:Array.isArray(r)?r[0]:r.offset;if(s)s(a,n,o);else throw new d1.YAMLParseError([a,a+1],n,o)};switch(e.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return f1.resolveFlowScalar(e,t,i);case"block-scalar":return c1.resolveBlockScalar({options:{strict:t}},e,i)}}return null}function p1(e,t){let{implicitKey:s=!1,indent:i,inFlow:r=!1,offset:n=-1,type:o="PLAIN"}=t,a=bg.stringifyString({type:o,value:e},{implicitKey:s,indent:i>0?" ".repeat(i):"",inFlow:r,options:{blockQuote:!0,lineWidth:-1}}),u=t.end??[{type:"newline",offset:-1,indent:i,source:`
160
+ `}];switch(a[0]){case"|":case">":{let l=a.indexOf(`
161
+ `),c=a.substring(0,l),f=a.substring(l+1)+`
162
+ `,d=[{type:"block-scalar-header",offset:n,indent:i,source:c}];return vg(d,u)||d.push({type:"newline",offset:-1,indent:i,source:`
163
+ `}),{type:"block-scalar",offset:n,indent:i,props:d,source:f}}case'"':return{type:"double-quoted-scalar",offset:n,indent:i,source:a,end:u};case"'":return{type:"single-quoted-scalar",offset:n,indent:i,source:a,end:u};default:return{type:"scalar",offset:n,indent:i,source:a,end:u}}}function m1(e,t,s={}){let{afterKey:i=!1,implicitKey:r=!1,inFlow:n=!1,type:o}=s,a="indent"in e?e.indent:null;if(i&&typeof a=="number"&&(a+=2),!o)switch(e.type){case"single-quoted-scalar":o="QUOTE_SINGLE";break;case"double-quoted-scalar":o="QUOTE_DOUBLE";break;case"block-scalar":{let l=e.props[0];if(l.type!=="block-scalar-header")throw new Error("Invalid block scalar header");o=l.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:o="PLAIN"}let u=bg.stringifyString({type:o,value:t},{implicitKey:r||a===null,indent:a!==null&&a>0?" ".repeat(a):"",inFlow:n,options:{blockQuote:!0,lineWidth:-1}});switch(u[0]){case"|":case">":g1(e,u);break;case'"':mc(e,u,"double-quoted-scalar");break;case"'":mc(e,u,"single-quoted-scalar");break;default:mc(e,u,"scalar")}}function g1(e,t){let s=t.indexOf(`
164
+ `),i=t.substring(0,s),r=t.substring(s+1)+`
165
+ `;if(e.type==="block-scalar"){let n=e.props[0];if(n.type!=="block-scalar-header")throw new Error("Invalid block scalar header");n.source=i,e.source=r}else{let{offset:n}=e,o="indent"in e?e.indent:-1,a=[{type:"block-scalar-header",offset:n,indent:o,source:i}];vg(a,"end"in e?e.end:void 0)||a.push({type:"newline",offset:-1,indent:o,source:`
166
+ `});for(let u of Object.keys(e))u!=="type"&&u!=="offset"&&delete e[u];Object.assign(e,{type:"block-scalar",indent:o,props:a,source:r})}}function vg(e,t){if(t)for(let s of t)switch(s.type){case"space":case"comment":e.push(s);break;case"newline":return e.push(s),!0}return!1}function mc(e,t,s){switch(e.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":e.type=s,e.source=t;break;case"block-scalar":{let i=e.props.slice(1),r=t.length;e.props[0].type==="block-scalar-header"&&(r-=e.props[0].source.length);for(let n of i)n.offset+=r;delete e.props,Object.assign(e,{type:s,source:t,end:i});break}case"block-map":case"block-seq":{let r={type:"newline",offset:e.offset+t.length,indent:e.indent,source:`
167
+ `};delete e.items,Object.assign(e,{type:s,source:t,end:[r]});break}default:{let i="indent"in e?e.indent:-1,r="end"in e&&Array.isArray(e.end)?e.end.filter(n=>n.type==="space"||n.type==="comment"||n.type==="newline"):[];for(let n of Object.keys(e))n!=="type"&&n!=="offset"&&delete e[n];Object.assign(e,{type:s,indent:i,source:t,end:r})}}}Uo.createScalarToken=p1;Uo.resolveAsScalar=h1;Uo.setScalarValue=m1});var Cg=I(Fg=>{"use strict";var D1=e=>"type"in e?Go(e):Vo(e);function Go(e){switch(e.type){case"block-scalar":{let t="";for(let s of e.props)t+=Go(s);return t+e.source}case"block-map":case"block-seq":{let t="";for(let s of e.items)t+=Vo(s);return t}case"flow-collection":{let t=e.start.source;for(let s of e.items)t+=Vo(s);for(let s of e.end)t+=s.source;return t}case"document":{let t=Vo(e);if(e.end)for(let s of e.end)t+=s.source;return t}default:{let t=e.source;if("end"in e&&e.end)for(let s of e.end)t+=s.source;return t}}}function Vo({start:e,key:t,sep:s,value:i}){let r="";for(let n of e)r+=n.source;if(t&&(r+=Go(t)),s)for(let n of s)r+=n.source;return i&&(r+=Go(i)),r}Fg.stringify=D1});var Rg=I(Ag=>{"use strict";var gc=Symbol("break visit"),y1=Symbol("skip children"),xg=Symbol("remove item");function $s(e,t){"type"in e&&e.type==="document"&&(e={start:e.start,value:e.value}),Sg(Object.freeze([]),e,t)}$s.BREAK=gc;$s.SKIP=y1;$s.REMOVE=xg;$s.itemAtPath=(e,t)=>{let s=e;for(let[i,r]of t){let n=s?.[i];if(n&&"items"in n)s=n.items[r];else return}return s};$s.parentCollection=(e,t)=>{let s=$s.itemAtPath(e,t.slice(0,-1)),i=t[t.length-1][0],r=s?.[i];if(r&&"items"in r)return r;throw new Error("Parent collection not found")};function Sg(e,t,s){let i=s(t,e);if(typeof i=="symbol")return i;for(let r of["key","value"]){let n=t[r];if(n&&"items"in n){for(let o=0;o<n.items.length;++o){let a=Sg(Object.freeze(e.concat([[r,o]])),n.items[o],s);if(typeof a=="number")o=a-1;else{if(a===gc)return gc;a===xg&&(n.items.splice(o,1),o-=1)}}typeof i=="function"&&r==="key"&&(i=i(t,e))}}return typeof i=="function"?i(t,e):i}Ag.visit=$s});var Wo=I(Oe=>{"use strict";var Dc=Eg(),w1=Cg(),b1=Rg(),yc="\uFEFF",wc="",bc="",vc="",v1=e=>!!e&&"items"in e,E1=e=>!!e&&(e.type==="scalar"||e.type==="single-quoted-scalar"||e.type==="double-quoted-scalar"||e.type==="block-scalar");function F1(e){switch(e){case yc:return"<BOM>";case wc:return"<DOC>";case bc:return"<FLOW_END>";case vc:return"<SCALAR>";default:return JSON.stringify(e)}}function C1(e){switch(e){case yc:return"byte-order-mark";case wc:return"doc-mode";case bc:return"flow-error-end";case vc:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
168
+ `:case`\r
169
+ `:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(e[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}Oe.createScalarToken=Dc.createScalarToken;Oe.resolveAsScalar=Dc.resolveAsScalar;Oe.setScalarValue=Dc.setScalarValue;Oe.stringify=w1.stringify;Oe.visit=b1.visit;Oe.BOM=yc;Oe.DOCUMENT=wc;Oe.FLOW_END=bc;Oe.SCALAR=vc;Oe.isCollection=v1;Oe.isScalar=E1;Oe.prettyToken=F1;Oe.tokenType=C1});var Cc=I(Ig=>{"use strict";var zr=Wo();function ft(e){switch(e){case void 0:case" ":case`
170
+ `:case"\r":case" ":return!0;default:return!1}}var kg=new Set("0123456789ABCDEFabcdef"),x1=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),Ko=new Set(",[]{}"),S1=new Set(` ,[]{}
171
+ \r `),Ec=e=>!e||S1.has(e),Fc=class{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(t,s=!1){if(t){if(typeof t!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+t:t,this.lineEndPos=null}this.atEnd=!s;let i=this.next??"stream";for(;i&&(s||this.hasChars(1));)i=yield*this.parseNext(i)}atLineEnd(){let t=this.pos,s=this.buffer[t];for(;s===" "||s===" ";)s=this.buffer[++t];return!s||s==="#"||s===`
172
+ `?!0:s==="\r"?this.buffer[t+1]===`
173
+ `:!1}charAt(t){return this.buffer[this.pos+t]}continueScalar(t){let s=this.buffer[t];if(this.indentNext>0){let i=0;for(;s===" ";)s=this.buffer[++i+t];if(s==="\r"){let r=this.buffer[i+t+1];if(r===`
174
+ `||!r&&!this.atEnd)return t+i+1}return s===`
175
+ `||i>=this.indentNext||!s&&!this.atEnd?t+i:-1}if(s==="-"||s==="."){let i=this.buffer.substr(t,3);if((i==="---"||i==="...")&&ft(this.buffer[t+3]))return-1}return t}getLine(){let t=this.lineEndPos;return(typeof t!="number"||t!==-1&&t<this.pos)&&(t=this.buffer.indexOf(`
176
+ `,this.pos),this.lineEndPos=t),t===-1?this.atEnd?this.buffer.substring(this.pos):null:(this.buffer[t-1]==="\r"&&(t-=1),this.buffer.substring(this.pos,t))}hasChars(t){return this.pos+t<=this.buffer.length}setNext(t){return this.buffer=this.buffer.substring(this.pos),this.pos=0,this.lineEndPos=null,this.next=t,null}peek(t){return this.buffer.substr(this.pos,t)}*parseNext(t){switch(t){case"stream":return yield*this.parseStream();case"line-start":return yield*this.parseLineStart();case"block-start":return yield*this.parseBlockStart();case"doc":return yield*this.parseDocument();case"flow":return yield*this.parseFlowCollection();case"quoted-scalar":return yield*this.parseQuotedScalar();case"block-scalar":return yield*this.parseBlockScalar();case"plain-scalar":return yield*this.parsePlainScalar()}}*parseStream(){let t=this.getLine();if(t===null)return this.setNext("stream");if(t[0]===zr.BOM&&(yield*this.pushCount(1),t=t.substring(1)),t[0]==="%"){let s=t.length,i=t.indexOf("#");for(;i!==-1;){let n=t[i-1];if(n===" "||n===" "){s=i-1;break}else i=t.indexOf("#",i+1)}for(;;){let n=t[s-1];if(n===" "||n===" ")s-=1;else break}let r=(yield*this.pushCount(s))+(yield*this.pushSpaces(!0));return yield*this.pushCount(t.length-r),this.pushNewline(),"stream"}if(this.atLineEnd()){let s=yield*this.pushSpaces(!0);return yield*this.pushCount(t.length-s),yield*this.pushNewline(),"stream"}return yield zr.DOCUMENT,yield*this.parseLineStart()}*parseLineStart(){let t=this.charAt(0);if(!t&&!this.atEnd)return this.setNext("line-start");if(t==="-"||t==="."){if(!this.atEnd&&!this.hasChars(4))return this.setNext("line-start");let s=this.peek(3);if((s==="---"||s==="...")&&ft(this.charAt(3)))return yield*this.pushCount(3),this.indentValue=0,this.indentNext=0,s==="---"?"doc":"stream"}return this.indentValue=yield*this.pushSpaces(!1),this.indentNext>this.indentValue&&!ft(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){let[t,s]=this.peek(2);if(!s&&!this.atEnd)return this.setNext("block-start");if((t==="-"||t==="?"||t===":")&&ft(s)){let i=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=i,yield*this.parseBlockStart()}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);let t=this.getLine();if(t===null)return this.setNext("doc");let s=yield*this.pushIndicators();switch(t[s]){case"#":yield*this.pushCount(t.length-s);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(Ec),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return s+=yield*this.parseBlockScalarHeader(),s+=yield*this.pushSpaces(!0),yield*this.pushCount(t.length-s),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let t,s,i=-1;do t=yield*this.pushNewline(),t>0?(s=yield*this.pushSpaces(!1),this.indentValue=i=s):s=0,s+=yield*this.pushSpaces(!0);while(t+s>0);let r=this.getLine();if(r===null)return this.setNext("flow");if((i!==-1&&i<this.indentNext&&r[0]!=="#"||i===0&&(r.startsWith("---")||r.startsWith("..."))&&ft(r[3]))&&!(i===this.indentNext-1&&this.flowLevel===1&&(r[0]==="]"||r[0]==="}")))return this.flowLevel=0,yield zr.FLOW_END,yield*this.parseLineStart();let n=0;for(;r[n]===",";)n+=yield*this.pushCount(1),n+=yield*this.pushSpaces(!0),this.flowKey=!1;switch(n+=yield*this.pushIndicators(),r[n]){case void 0:return"flow";case"#":return yield*this.pushCount(r.length-n),"flow";case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel+=1,"flow";case"}":case"]":return yield*this.pushCount(1),this.flowKey=!0,this.flowLevel-=1,this.flowLevel?"flow":"doc";case"*":return yield*this.pushUntil(Ec),"flow";case'"':case"'":return this.flowKey=!0,yield*this.parseQuotedScalar();case":":{let o=this.charAt(1);if(this.flowKey||ft(o)||o===",")return this.flowKey=!1,yield*this.pushCount(1),yield*this.pushSpaces(!0),"flow"}default:return this.flowKey=!1,yield*this.parsePlainScalar()}}*parseQuotedScalar(){let t=this.charAt(0),s=this.buffer.indexOf(t,this.pos+1);if(t==="'")for(;s!==-1&&this.buffer[s+1]==="'";)s=this.buffer.indexOf("'",s+2);else for(;s!==-1;){let n=0;for(;this.buffer[s-1-n]==="\\";)n+=1;if(n%2===0)break;s=this.buffer.indexOf('"',s+1)}let i=this.buffer.substring(0,s),r=i.indexOf(`
177
+ `,this.pos);if(r!==-1){for(;r!==-1;){let n=this.continueScalar(r+1);if(n===-1)break;r=i.indexOf(`
178
+ `,n)}r!==-1&&(s=r-(i[r-1]==="\r"?2:1))}if(s===-1){if(!this.atEnd)return this.setNext("quoted-scalar");s=this.buffer.length}return yield*this.pushToIndex(s+1,!1),this.flowLevel?"flow":"doc"}*parseBlockScalarHeader(){this.blockScalarIndent=-1,this.blockScalarKeep=!1;let t=this.pos;for(;;){let s=this.buffer[++t];if(s==="+")this.blockScalarKeep=!0;else if(s>"0"&&s<="9")this.blockScalarIndent=Number(s)-1;else if(s!=="-")break}return yield*this.pushUntil(s=>ft(s)||s==="#")}*parseBlockScalar(){let t=this.pos-1,s=0,i;e:for(let n=this.pos;i=this.buffer[n];++n)switch(i){case" ":s+=1;break;case`
179
+ `:t=n,s=0;break;case"\r":{let o=this.buffer[n+1];if(!o&&!this.atEnd)return this.setNext("block-scalar");if(o===`
180
+ `)break}default:break e}if(!i&&!this.atEnd)return this.setNext("block-scalar");if(s>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=s:this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{let n=this.continueScalar(t+1);if(n===-1)break;t=this.buffer.indexOf(`
181
+ `,n)}while(t!==-1);if(t===-1){if(!this.atEnd)return this.setNext("block-scalar");t=this.buffer.length}}let r=t+1;for(i=this.buffer[r];i===" ";)i=this.buffer[++r];if(i===" "){for(;i===" "||i===" "||i==="\r"||i===`
182
+ `;)i=this.buffer[++r];t=r-1}else if(!this.blockScalarKeep)do{let n=t-1,o=this.buffer[n];o==="\r"&&(o=this.buffer[--n]);let a=n;for(;o===" ";)o=this.buffer[--n];if(o===`
183
+ `&&n>=this.pos&&n+1+s>a)t=n;else break}while(!0);return yield zr.SCALAR,yield*this.pushToIndex(t+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let t=this.flowLevel>0,s=this.pos-1,i=this.pos-1,r;for(;r=this.buffer[++i];)if(r===":"){let n=this.buffer[i+1];if(ft(n)||t&&Ko.has(n))break;s=i}else if(ft(r)){let n=this.buffer[i+1];if(r==="\r"&&(n===`
184
+ `?(i+=1,r=`
185
+ `,n=this.buffer[i+1]):s=i),n==="#"||t&&Ko.has(n))break;if(r===`
186
+ `){let o=this.continueScalar(i+1);if(o===-1)break;i=Math.max(i,o-2)}}else{if(t&&Ko.has(r))break;s=i}return!r&&!this.atEnd?this.setNext("plain-scalar"):(yield zr.SCALAR,yield*this.pushToIndex(s+1,!0),t?"flow":"doc")}*pushCount(t){return t>0?(yield this.buffer.substr(this.pos,t),this.pos+=t,t):0}*pushToIndex(t,s){let i=this.buffer.slice(this.pos,t);return i?(yield i,this.pos+=i.length,i.length):(s&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(Ec))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{let t=this.flowLevel>0,s=this.charAt(1);if(ft(s)||t&&Ko.has(s))return t?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}return 0}*pushTag(){if(this.charAt(1)==="<"){let t=this.pos+2,s=this.buffer[t];for(;!ft(s)&&s!==">";)s=this.buffer[++t];return yield*this.pushToIndex(s===">"?t+1:t,!1)}else{let t=this.pos+1,s=this.buffer[t];for(;s;)if(x1.has(s))s=this.buffer[++t];else if(s==="%"&&kg.has(this.buffer[t+1])&&kg.has(this.buffer[t+2]))s=this.buffer[t+=3];else break;return yield*this.pushToIndex(t,!1)}}*pushNewline(){let t=this.buffer[this.pos];return t===`
187
+ `?yield*this.pushCount(1):t==="\r"&&this.charAt(1)===`
188
+ `?yield*this.pushCount(2):0}*pushSpaces(t){let s=this.pos-1,i;do i=this.buffer[++s];while(i===" "||t&&i===" ");let r=s-this.pos;return r>0&&(yield this.buffer.substr(this.pos,r),this.pos=s),r}*pushUntil(t){let s=this.pos,i=this.buffer[s];for(;!t(i);)i=this.buffer[++s];return yield*this.pushToIndex(s,!1)}};Ig.Lexer=Fc});var Sc=I(_g=>{"use strict";var xc=class{constructor(){this.lineStarts=[],this.addNewLine=t=>this.lineStarts.push(t),this.linePos=t=>{let s=0,i=this.lineStarts.length;for(;s<i;){let n=s+i>>1;this.lineStarts[n]<t?s=n+1:i=n}if(this.lineStarts[s]===t)return{line:s+1,col:1};if(s===0)return{line:0,col:t};let r=this.lineStarts[s-1];return{line:s,col:t-r+1}}}};_g.LineCounter=xc});var Rc=I(Og=>{"use strict";var A1=require("process"),$g=Wo(),R1=Cc();function us(e,t){for(let s=0;s<e.length;++s)if(e[s].type===t)return!0;return!1}function Tg(e){for(let t=0;t<e.length;++t)switch(e[t].type){case"space":case"comment":case"newline":break;default:return t}return-1}function Bg(e){switch(e?.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"flow-collection":return!0;default:return!1}}function zo(e){switch(e.type){case"document":return e.start;case"block-map":{let t=e.items[e.items.length-1];return t.sep??t.start}case"block-seq":return e.items[e.items.length-1].start;default:return[]}}function Ei(e){if(e.length===0)return[];let t=e.length;e:for(;--t>=0;)switch(e[t].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;e[++t]?.type==="space";);return e.splice(t,e.length)}function Pg(e){if(e.start.type==="flow-seq-start")for(let t of e.items)t.sep&&!t.value&&!us(t.start,"explicit-key-ind")&&!us(t.sep,"map-value-ind")&&(t.key&&(t.value=t.key),delete t.key,Bg(t.value)?t.value.end?Array.prototype.push.apply(t.value.end,t.sep):t.value.end=t.sep:Array.prototype.push.apply(t.start,t.sep),delete t.sep)}var Ac=class{constructor(t){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new R1.Lexer,this.onNewLine=t}*parse(t,s=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(let i of this.lexer.lex(t,s))yield*this.next(i);s||(yield*this.end())}*next(t){if(this.source=t,A1.env.LOG_TOKENS&&console.log("|",$g.prettyToken(t)),this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=t.length;return}let s=$g.tokenType(t);if(s)if(s==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=s,yield*this.step(),s){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+t.length);break;case"space":this.atNewLine&&t[0]===" "&&(this.indent+=t.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=t.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=t.length}else{let i=`Not a YAML token: ${t}`;yield*this.pop({type:"error",offset:this.offset,message:i,source:t}),this.offset+=t.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let t=this.peek(1);if(this.type==="doc-end"&&t?.type!=="doc-end"){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!t)return yield*this.stream();switch(t.type){case"document":return yield*this.document(t);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(t);case"block-scalar":return yield*this.blockScalar(t);case"block-map":return yield*this.blockMap(t);case"block-seq":return yield*this.blockSequence(t);case"flow-collection":return yield*this.flowCollection(t);case"doc-end":return yield*this.documentEnd(t)}yield*this.pop()}peek(t){return this.stack[this.stack.length-t]}*pop(t){let s=t??this.stack.pop();if(!s)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield s;else{let i=this.peek(1);switch(s.type==="block-scalar"?s.indent="indent"in i?i.indent:0:s.type==="flow-collection"&&i.type==="document"&&(s.indent=0),s.type==="flow-collection"&&Pg(s),i.type){case"document":i.value=s;break;case"block-scalar":i.props.push(s);break;case"block-map":{let r=i.items[i.items.length-1];if(r.value){i.items.push({start:[],key:s,sep:[]}),this.onKeyLine=!0;return}else if(r.sep)r.value=s;else{Object.assign(r,{key:s,sep:[]}),this.onKeyLine=!r.explicitKey;return}break}case"block-seq":{let r=i.items[i.items.length-1];r.value?i.items.push({start:[],value:s}):r.value=s;break}case"flow-collection":{let r=i.items[i.items.length-1];!r||r.value?i.items.push({start:[],key:s,sep:[]}):r.sep?r.value=s:Object.assign(r,{key:s,sep:[]});return}default:yield*this.pop(),yield*this.pop(s)}if((i.type==="document"||i.type==="block-map"||i.type==="block-seq")&&(s.type==="block-map"||s.type==="block-seq")){let r=s.items[s.items.length-1];r&&!r.sep&&!r.value&&r.start.length>0&&Tg(r.start)===-1&&(s.indent===0||r.start.every(n=>n.type!=="comment"||n.indent<s.indent))&&(i.type==="document"?i.end=r.start:i.items.push({start:r.start}),s.items.splice(-1,1))}}}*stream(){switch(this.type){case"directive-line":yield{type:"directive",offset:this.offset,source:this.source};return;case"byte-order-mark":case"space":case"comment":case"newline":yield this.sourceToken;return;case"doc-mode":case"doc-start":{let t={type:"document",offset:this.offset,start:[]};this.type==="doc-start"&&t.start.push(this.sourceToken),this.stack.push(t);return}}yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML stream`,source:this.source}}*document(t){if(t.value)return yield*this.lineEnd(t);switch(this.type){case"doc-start":{Tg(t.start)!==-1?(yield*this.pop(),yield*this.step()):t.start.push(this.sourceToken);return}case"anchor":case"tag":case"space":case"comment":case"newline":t.start.push(this.sourceToken);return}let s=this.startBlockValue(t);s?this.stack.push(s):yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML document`,source:this.source}}*scalar(t){if(this.type==="map-value-ind"){let s=zo(this.peek(2)),i=Ei(s),r;t.end?(r=t.end,r.push(this.sourceToken),delete t.end):r=[this.sourceToken];let n={type:"block-map",offset:t.offset,indent:t.indent,items:[{start:i,key:t,sep:r}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=n}else yield*this.lineEnd(t)}*blockScalar(t){switch(this.type){case"space":case"comment":case"newline":t.props.push(this.sourceToken);return;case"scalar":if(t.source=this.source,this.atNewLine=!0,this.indent=0,this.onNewLine){let s=this.source.indexOf(`
189
+ `)+1;for(;s!==0;)this.onNewLine(this.offset+s),s=this.source.indexOf(`
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
+ `)+1;for(;s!==0;)this.onNewLine(this.offset+s),s=this.source.indexOf(`
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(`
194
+ `)),r.args.push(`
195
+ `+r.additional.join(`
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(`
197
+ `).splice(t.split(`
198
+ `).length).map(r=>r.trim().replace("file://","").replace(s,""))}function Gb(e,t){return(t.__write||t.write).call(t,e)}var uu=e=>e?`[${e}]`:"",tr=class{formatStack(t,s,i){let r=" ".repeat((i?.errorLevel||0)+1);return r+cu(t,s).join(`
199
+ ${r}`)}formatError(t,s){let i=t.message??(0,lu.formatWithOptions)(s,t),r=t.stack?this.formatStack(t.stack,i,s):"",n=s?.errorLevel||0,o=n>0?`${" ".repeat(n)}[cause]: `:"",a=t.cause?`
200
+
201
+ `+this.formatError(t.cause,{...s,errorLevel:n+1}):"";return o+i+`
202
+ `+r+a}formatArgs(t,s){let i=t.map(r=>r&&typeof r.stack=="string"?this.formatError(r,s):r);return(0,lu.formatWithOptions)(s,...i)}formatDate(t,s){return s.date?t.toLocaleTimeString():""}filterAndJoin(t){return t.filter(Boolean).join(" ")}formatLogObj(t,s){let i=this.formatArgs(t.args,s);return t.type==="box"?`
203
+ `+[uu(t.tag),t.title&&t.title,...i.split(`
204
+ `)].filter(Boolean).map(r=>" > "+r).join(`
205
+ `)+`
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
+ `,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
+ `),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`
210
+ ${r}`+cu(t,s).map(n=>" "+n.replace(/^at +/,o=>ee.gray(o)).replace(/\((.+)\)/,(o,a)=>`(${ee.cyan(a)})`)).join(`
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
+ `);if(t.type==="box")return fu(Tn(i+(r.length>0?`
213
+ `+r.join(`
214
+ `):"")),{title:t.title?Tn(t.title):void 0,style:t.style});let n=this.formatDate(t.date,s),o=n&&ee.gray(n),a=t.badge??t.level<2,u=this.formatType(t,a,s),l=t.tag?ee.gray(t.tag):"",c,f=this.filterAndJoin([u,Tn(i)]),d=this.filterAndJoin(s.columns?[l,o]:[l]),p=(s.columns||0)-Bd(f)-Bd(d)-2;if(c=p>0&&(s.columns||0)>=80?f+" ".repeat(p)+d:(d?`${ee.gray(`[${d}]`)} `:"")+f,c+=Tn(r.length>0?`
215
+ `+r.join(`
216
+ `):""),t.type==="trace"){let m=new Error("Trace: "+t.message);c+=this.formatStack(m.stack||"",m.message)}return a?`
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 CT=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
+ `)}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
+ `)}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
+ `)}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.4",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
+
224
+ Examples:
225
+ best-review agents # \u5217\u51FA\u6240\u6709 Agent
226
+ best-review agents validation # \u67E5\u770B validation Agent \u8BE6\u60C5
227
+ best-review agents general # \u67E5\u770B general Agent \u8BE6\u60C5`},args:{name:{type:"positional",description:"Agent \u540D\u79F0\uFF08\u53EF\u9009\uFF1B\u4F20\u5165\u540E\u5C55\u793A\u8BE6\u60C5\uFF09",required:!1}},run:async({args:e})=>{e.name?await MD(e.name):await ND()}};var qD=require("node:child_process");Ge();M();je();function BR(e){if(!e||typeof e!="object")return e;let t=JSON.parse(JSON.stringify(e));return t.llm?.apiKey&&(t.llm.apiKey="********"),t}async function UD(e){let t=e||process.cwd(),s=await le(t),i=Pi(s),r=cn(),n=nf(t),o=await of(),a=await BD(t);h.plain(`\u914D\u7F6E
228
+ `),h.plain(`\u5168\u5C40\uFF1A${r}${o?"":"\uFF08\u672A\u627E\u5230\uFF09"}`),h.plain(`\u9879\u76EE\uFF1A${n}${a?"\uFF08\u5DF2\u5F03\u7528\uFF0C\u4E0D\u518D\u9ED8\u8BA4\u8BFB\u53D6\uFF09":"\uFF08\u672A\u627E\u5230\uFF09"}`),h.plain(`
229
+ \u5F53\u524D\u5E73\u53F0\uFF1A${i.platform}`),h.plain(`Base URL\uFF1A${i.baseUrl}`),h.plain(`\u6A21\u578B\uFF1A${i.model}`),h.plain(`API Key\uFF1A${i.apiKey?"\u5DF2\u8BBE\u7F6E":"\u672A\u8BBE\u7F6E"}`),h.plain(`
230
+ \u5408\u5E76\u540E\u7684\u914D\u7F6E\uFF1A
231
+ `),h.plain(JSON.stringify(BR(s),null,2))}async function VD(e){let t=process.env.EDITOR||"nano",s;s=cn(),await of()||(h.warn("\u7528\u6237\u7EA7\u914D\u7F6E\u4E0D\u5B58\u5728\uFF0C\u6B63\u5728\u7528\u9ED8\u8BA4\u503C\u521B\u5EFA..."),await wa(ln())),h.info(`\u6B63\u5728\u7528 ${t} \u6253\u5F00 ${s}...`);let r=(0,qD.spawnSync)(t,[s],{stdio:"inherit"});r.error&&(h.error(`\u6253\u5F00\u7F16\u8F91\u5668\u5931\u8D25\uFF1A${r.error.message}`),process.exit(1))}Ge();Zs();$i();M();var KD=require("node:fs/promises");Zo();var OR=3,GD=1e3;async function WD(e){return new Promise(t=>setTimeout(t,e))}async function jt(e,t,s=OR){let i;for(let r=0;r<s;r++)try{let n=await fetch(e,t);if(n.ok||n.status>=400&&n.status<500&&n.status!==429)return n;if(i=new Error(`HTTP ${n.status}`),r<s-1){let o=GD*Math.pow(2,r);process.env.DEBUG&&h.plain(`\u23F3 Retry ${r+1}/${s-1} after ${o}ms (${n.status})`),await WD(o)}}catch(n){if(i=n instanceof Error?n:new Error(String(n)),r<s-1){let o=GD*Math.pow(2,r);process.env.DEBUG&&h.plain(`\u23F3 Retry ${r+1}/${s-1} after ${o}ms (${i.message})`),await WD(o)}}throw i||new Error("Max retries exceeded")}var LR=`# Output Format
232
+
233
+ Return your findings as a **JSON array** wrapped in \`<json>...</json>\` XML tags:
234
+
235
+ <json>
236
+ [
237
+ {
238
+ "file": "path/to/file.ts",
239
+ "lineStart": 10,
240
+ "lineEnd": 15,
241
+ "severity": "critical|high|medium|low",
242
+ "category": "security|performance|bug|quality|style|docs",
243
+ "shortDescription": "Brief one-line description",
244
+ "fullDescription": "Detailed description of the issue",
245
+ "suggestion": "Concrete fix or safer alternative",
246
+ "rule": "rule-name-from-file-rule-mappings",
247
+ "evidence": "Concrete code/config evidence; critical/high must include reachable path",
248
+ "confidence": 90
249
+ }
250
+ ]
251
+ </json>
252
+
253
+ Return empty array if no issues found: \`<json>[]</json>\`
254
+
255
+ Rules:
256
+ - Only return findings with confidence >= 70 and direct evidence from the provided diff/context.
257
+ - Every finding must explain failure mode, real impact, concrete evidence, and a specific fix.
258
+ - critical/high require precise evidence, reachable impact, concrete suggestion, and integer confidence.
259
+ - medium/low are allowed only when the current change has a concrete failure mode or a real misuse/maintenance risk.
260
+ - style findings are allowed only when they create confusion, misuse risk, or maintenance drag.
261
+ - docs findings are allowed only when they would mislead implementation, usage, or debugging.
262
+ - Do not output generic advice like "consider refactoring", "optimize this", "rename for consistency", or "add some documentation".
263
+ - If the evidence is weak or the fix is vague, downgrade the severity or omit the finding.
264
+ `;async function va(){return pt(Ne.OUTPUT_FORMAT,async()=>{try{let e=Yo("prompts","output-format.md");return await(0,KD.readFile)(e,"utf-8")}catch{return LR}})}function Bi(e,t,s){let i=s.trim().length>0,r=["# Execution Constraints","",i?"- \u53EA\u5BA1\u67E5\u672C prompt \u4E2D\u9644\u5E26\u7684 diff\u3001\u5168\u6587\u4E0A\u4E0B\u6587\u3001\u4F9D\u8D56\u4E0A\u4E0B\u6587\u3001\u89C4\u5219\u548C\u8F93\u51FA\u683C\u5F0F\uFF0C\u4E0D\u8981\u4E3B\u52A8\u505A\u5168\u4ED3\u626B\u63CF\u3002":"- \u53EA\u57FA\u4E8E\u672C prompt \u4E2D\u9644\u5E26\u7684\u4E0A\u4E0B\u6587\u548C\u8F93\u51FA\u8981\u6C42\u4F5C\u7B54\uFF0C\u4E0D\u8981\u4E3B\u52A8\u505A\u5168\u4ED3\u626B\u63CF\u3002","- \u4E0D\u8981\u8FD0\u884C bash\u3001\u6D4B\u8BD5\u3001\u6784\u5EFA\u3001\u5B89\u88C5\u547D\u4EE4\u6216\u8054\u7F51\u67E5\u8BE2\uFF1B\u4E0D\u8981\u5047\u8BBE\u53EF\u4EE5\u8BFB\u53D6\u672A\u63D0\u4F9B\u7684\u4ED3\u5E93\u6587\u4EF6\u3002","- \u6BCF\u6761\u95EE\u9898\u90FD\u5FC5\u987B\u80FD\u88AB evidence \u5B57\u6BB5\u76F4\u63A5\u652F\u6491\uFF1B\u6CA1\u6709\u53EF\u8FBE\u8DEF\u5F84\u6216\u653B\u51FB\u8DEF\u5F84\u65F6\u4E0D\u8981\u8F93\u51FA high/critical\u3002",i?"- \u8F93\u51FA\u5FC5\u987B\u53EA\u5305\u542B\u8981\u6C42\u7684 JSON\uFF0C\u4E0D\u8981\u8F93\u51FA\u601D\u8003\u8FC7\u7A0B\u3001\u603B\u7ED3\u6216\u989D\u5916 Markdown\u3002":"- \u8F93\u51FA\u5FC5\u987B\u53EA\u5305\u542B\u672C prompt \u8981\u6C42\u7684\u6700\u7EC8\u5185\u5BB9\uFF0C\u4E0D\u8981\u8F93\u51FA\u601D\u8003\u8FC7\u7A0B\u3001\u603B\u7ED3\u6216\u989D\u5916 Markdown\u3002"].join(`
265
+ `);return[e,r,`# Input:
266
+ ${t}`,s.trim()||null].filter(Boolean).join(`
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"),ek(e.checks))}async function ji(e){let t=e.projectPath||process.cwd(),s=await le(t),i=await QR(s,{executorOverride:e.executor,modelOverride:e.model});return e.json?h.plain(JSON.stringify(i,null,2)):tk(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 sk(e){return e.model}function ik(e){if(e)return e.length<=8?"********":`${e.slice(0,4)}...${e.slice(-4)}`}function rk(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=ik(i.apiKey);n&&h.plain(`API Key\uFF1A${n}`);let o=sk(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=rk(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
+
271
+ Examples:
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 dk(e){return e.reduce((t,s)=>t+s.additions+s.deletions,0)}function hk(e){return e.length>10||dk(e)>600}function pk(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 mk(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 gk(e,t,s){let i=e.rule.name,r=e.agent.name,n=hk(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 Dk(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 yk(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=mk(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);Dk(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=pk(t),r=[],n=[];for(let o of e){let a=gk(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 yk(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 wk="tech-doc-requirements",bk=14e3;function vk(e,t=bk){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
+
275
+ `,r);n>i+Math.floor(t*.5)&&(r=n+2)}s.push(e.slice(i,r)),i=r}return s}function Ek(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 Fk(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 Ck(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:Fk(e.priority)}}function xk(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 Sk(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 Ak(){return{name:wk,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=vk(e.techDoc.rawContent),n=Ak(),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:Sk(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=xk(c.flatMap((p,m)=>(u=bs(u,p.usage),Ek(p.output).requirements.map((D,w)=>Ck(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 Rk(e){let t=`File: ${e.file}
278
+ ${e.diff}`;return St(t)}var Sy=36e3,Ay=20;function kk(){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||kk(),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+Rk(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
+ `);return`Batch ${e.batchIndex+1}: ${s} file(s), ~${i} tokens
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 Ik(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),Ik(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
+ `))}return`## Skill-Enhanced Review Guidelines
283
+
284
+ ${s.join(`
285
+
286
+ `)}
287
+
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
+ `,"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 $k(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=$k(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
+ ... \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
+ `)}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 Tk(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 Pk(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
+
296
+ # File-Rule Mappings
297
+
298
+ Each file was matched by a specific rule. Include the rule name in the "rule" field of each issue:
299
+ ${s.join(`
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
+
302
+ ${n.join(`
303
+ `)}`:""}function Qs(e,t,s){return`${Tk(s)}${Pk(e,t)}
304
+
305
+ ${e.map(i=>`File: ${i.file}
306
+ ${i.diff}`).join(`
307
+
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
+ `),o=s?Ui(s):"";return[n,o||null,pn(),r?`\u547D\u4E2D\u7684\u89C4\u5219\uFF1A${r}`:null,t].filter(Boolean).join(`
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=>Bk(d,a,e,t,u,c,l,i,r,n,o)));return Ok(f,e,a)}async function Bk(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
+ `),y=`${r}
313
+
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 Ok(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 Lk(){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 Nk(){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 Mk(e){return e.startsWith("+")&&!e.startsWith("+++")||e.startsWith("-")&&!e.startsWith("---")}function jk(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 qk(e,t,s){let i=t.map((u,l)=>Mk(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 Uk(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 Vk(e,t={}){if(process.env.BEST_REVIEW_FULL_DIFF==="true")return e;let s=t.contextLines??Lk(),i=t.maxCharsPerFile??Nk(),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(...qk(o,a,s)),o=null,a=[])};for(let l of r){if(l.startsWith("@@")){u(),o=l;continue}if(o){a.push(l);continue}jk(l)&&n.push(l)}return u(),Uk(n,i).join(`
317
+ `)}function Gy(e,t={}){return{...e,diff:Vk(e.diff,t)}}ws();var Pa="code-review-expert",Wy=`skill:${Pa}`,Gk="tech-doc-compliance",Ky="tech-doc-compliance",Wk=new Set(["code-quality-checklist","security-checklist","solid-checklist","stack-best-practices","typescript-react-best-practices"]),Kk=/(?:^|[\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 zk(e){let t=e?.find(s=>s.name===Pa&&s.enabled);if(t)return{...t,references:t.references.filter(s=>Wk.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 Hk(e,t){let s=Jy(e);return t.supplementalContextFiles?.some(i=>i.role==="changed-file"&&s.has(i.file))??!1}function Jk(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 Yk(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=${Hk(e,t)?"yes":"no"}`,`, dependencyContext=${Jk(e,t)?"yes":"no"}`].join("")}function Zk(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=>Yk(i,t))].join(`
318
+ `)}function Xk(e,t,s){return`${Zk(e,s)}
319
+
320
+ ${Qs(e,t,s)}`}function Qk(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
+ `))].filter(Boolean).join(`
322
+ `)}function eI(e,t,s){return[Qk(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 tI(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(Kk)){let r=i[1];r&&s.add(Yy(r))}return[...s]}function sI(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=tI(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
+
326
+ `);c&&(l=`${l}
327
+
328
+ ${c}`),s&&(l=`${l}
329
+
330
+ ${s}`);let f=zy(t.skills);if(f.length>0){let m=Ui(f);m&&(l=`${l}
331
+
332
+ ${m}`)}l=`${l}
333
+
334
+ ${pn()}`,t.metadata.reviewTarget?.kind==="gitlab-mr"&&(l=`${l}
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=zk(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
+
338
+ `),o=hn(i,n,void 0,a=>Xk(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
+
340
+ `),n=hn(s,r,void 0,o=>eI(o,i,e));return e.techDoc.coverage={assessedRequirementIds:t.map(o=>o.id),unmappedRequirements:sI(e)},{agent:{name:Gk,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 iI(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:iI(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 rI(e){return{...e}}function it(e,t){let s={...t,issue:rI(t.issue)};e.issueAuditTrail=[...e.issueAuditTrail??[],s]}var nI=70,o0=new Set(["critical","high"]),oI=new Set(["style","docs"]),aI=[/^(?:建议|可以|考虑|最好|应该)\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],uI=[/(?:改为|改成|替换为|删除|移除|新增|补充|拆分|提取|限制|缓存|回退到|提前返回|判空|短路|重命名|把.+改|将.+改|为.+添加|在.+(?:前|后))/u,/(?:replace|remove|add|split|extract|guard|return early|rename|update|document|change .+ to|use .+ instead|move .+ to|initialize .+ before)/i],lI=[/(?:可读性|维护性|一致性|优雅|更好|更清晰|更规范|长期维护会更好|可以优化|有优化空间|建议考虑|最好处理一下)/u,/(?:readability|maintainability|cleaner|more consistent|could be improved|might be better|nice to have)/i],cI=[/(?:导致|会让|会在|会把|会使|造成|触发|产生|引发|阻塞|绕过|覆盖|丢失|重复|泄露|崩溃|失败|死锁|误导|误用|混淆|不一致|无法|错误|错用|调用方)/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?uI.some(s=>s.test(t))?!0:aI.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()?cI.some(s=>s.test(t))?!0:oI.has(e.category)?!1:!lI.some(s=>s.test(t)):!1}function fI(e){return o0.has(e.severity)?!Sf(e.evidence)||e.confidence===void 0||!Af(e)||!Rf(e):!1}function dI(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??nI,i=e.issues,r=0,n=0,o=0,a=0,u=i.length,l=[];for(let p of i){if(fI(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(dI(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 hI=.6;function u0(e){let t=e.toLowerCase().replace(/[^\w\s]/g," ").split(/\s+/).filter(s=>s.length>2);return new Set(t)}function pI(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 mI(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 pI(i,r)>=hI}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=>mI(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
+
343
+ You may include your analysis and reasoning, but MUST include a JSON array of valid issues somewhere in your response.
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 gI(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 DI(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;gI(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 yI(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 wI(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:wI(s.reason,ti)}));return t.length>0||e.length===0?t:null}function bI(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 vI(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:bI(t.filtered_issues)}}var EI=e=>{for(let t of yI(e))try{let s=vI(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},FI=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}},CI=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}},xI=(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=DI(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=[EI,FI,CI,xI];for(let i of s){let r=i(e,t);if(r!==null)return r}return null}M();function AI(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
+ `)}).join(`
347
+
348
+ `)}function RI(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
+ `))].filter(Boolean).join(`
350
+ `)}function kI(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=AI(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
+ ${D}`)].join(`
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=kI(D.diff,2e3);return`File: ${D.file}
354
+ ${w}`})].join(`
355
+ `):"",d=Cf(c,t.supplementalContextFiles),p=RI(e,t),m=`${u}${f}${d}${p}
356
+
357
+ ${r}
358
+
359
+ # Issues to validate (${e.length} total):
360
+
361
+ ${n}`,g=s.systemPrompt;return i&&(g=`${g}
362
+
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 WI(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 KI(e){return e.trim().split(/\s+/)[0]?.replace(/^[ab]\//,"")??""}function zI(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=KI(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 HI(e,t){return(0,Rt.isAbsolute)(t)?t:(0,Rt.resolve)(e,t)}async function JI(e,t,s){let i=HI(e,t);return await(0,Ki.mkdir)((0,Rt.dirname)(i),{recursive:!0}),await(0,Ki.writeFile)(i,s.endsWith(`
367
+ `)?s:`${s}
368
+ `,"utf-8"),i}async function YI(e,t){let s=I0("BEST_REVIEW_FIX_MAX_FILE_CHARS",VI),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
+
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 ZI(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
+
373
+ \`\`\`
374
+ ${n}
375
+ \`\`\``).join(`
376
+
377
+ `);return`# Issues To Fix
378
+
379
+ ${JSON.stringify(s,null,2)}
380
+
381
+ # Current File Contents
382
+
383
+ ${i}`}function XI(){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
+
385
+ \u8981\u6C42\uFF1A
386
+ - \u8F93\u51FA\u4E00\u4E2A\u53EF\u88AB git apply \u5E94\u7528\u7684 unified diff\u3002
387
+ - diff \u8DEF\u5F84\u5FC5\u987B\u76F8\u5BF9\u4ED3\u5E93\u6839\u76EE\u5F55\uFF0C\u683C\u5F0F\u4F7F\u7528 diff --git a/<file> b/<file>\u3002
388
+ - \u53EA\u4FEE\u6539\u548C\u76EE\u6807\u95EE\u9898\u76F4\u63A5\u76F8\u5173\u7684\u6700\u5C0F\u4EE3\u7801\u3002
389
+ - \u4E0D\u8981\u65B0\u589E\u89E3\u91CA\u3001\u603B\u7ED3\u3001Markdown \u6807\u9898\u6216\u989D\u5916\u6587\u672C\u3002
390
+ - \u5982\u679C\u65E0\u6CD5\u5B89\u5168\u4FEE\u590D\uFF0C\u8F93\u51FA <patch></patch>\u3002
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
+ `)?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 QI(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",UI),i=new Set(e.fixSeverities),r=GI(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 YI(e.metadata.repository,r),f={name:"autofix",description:"\u81EA\u52A8\u4FEE\u590D\u4E25\u91CD\u98CE\u9669",systemPrompt:XI(),enabled:!0,order:99,executor:o},d=await he.executeAgent({agent:f,executor:l,input:ZI(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=WI(d.output);if(!p)throw new Error("\u6A21\u578B\u6CA1\u6709\u8FD4\u56DE unified diff \u8865\u4E01");zI(p,e.metadata.repository,r.map(g=>g.file)),n=e.fixPatchFile?await JI(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:QI(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"],e_={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 t_(e){switch(e){case"critical":return j.red;case"high":return j.yellow;case"medium":return j.blue;case"low":return j.cyan}}function s_(e){switch(e){case"critical":return"\u2717";case"high":return"\u26A0";case"medium":return"\u25CB";case"low":return"\u25C7"}}function i_(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${e_[t.overall]}`}function mn(e){return[...e].sort((t,s)=>{let i=Of(t.severity),r=Of(s.severity);return i-r})}function r_(e,t=!1){let s=t_(e.severity),i=s_(e.severity),r=i_(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(r_(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 n_(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=n_(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 o_(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 a_(e){return{file:e.file,status:e.status,additions:e.additions,deletions:e.deletions,...e.hash&&{hash:e.hash}}}function u_(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 l_(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 c_(e,t){return`${e}-${t.slice(0,8)}.json`}function f_(e,t){let s=Na(e),i=s.finalIssues,r=o_(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(a_)}}async function d_(e,t,s){let i=l_(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,c_(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 h_(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=u_(e),i=f_(e,s.includeDiffs??!1),r;try{r=await d_(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 h_(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=m_}equals(t,s,i){return i.ignoreWhitespace?((!i.newlineIsToken||!t.includes(`
397
+ `))&&(t=t.trim()),(!i.newlineIsToken||!s.includes(`
398
+ `))&&(s=s.trim())):i.ignoreNewlineAtEof&&!i.newlineIsToken&&(t.endsWith(`
399
+ `)&&(t=t.slice(0,-1)),s.endsWith(`
400
+ `)&&(s=s.slice(0,-1))),super.equals(t,s,i)}},p_=new Nf;function Mf(e,t,s){return p_.diff(e,t,s)}function m_(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||g_(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
+ `)?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
+ `)}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
+ `)+`
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 g_(e){let t=e.endsWith(`
406
+ `),s=e.split(`
407
+ `).map(i=>i+`
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 y_(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 y_(e)})}function w_(){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 b_(){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 v_(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 E_(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(){w_();let e=await b_();return(await Promise.all(e.map(async s=>{try{let[i,r]=await Promise.all([v_(s),E_(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 F_(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 F_(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"},C_={security:"\u5B89\u5168",performance:"\u6027\u80FD",bug:"\u7F3A\u9677",quality:"\u8D28\u91CF",style:"\u98CE\u683C",docs:"\u6587\u6863"};function x_(e){let t=e.trim().replace(/\/+$/,"");return/\/api\/v\d+$/i.test(t)?t:`${t}/api/v4`}function S_(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:x_(i),token:t,projectId:r,mrIid:n}}async function A_(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 R_(e){let t=(0,fw.createHash)("sha1").update(e).digest("hex").slice(0,12);return`${dw}hash=${t} -->`}function lw(e,t){return`${R_(t)}
414
+ ${e}`}function k_(e){return typeof e=="string"&&e.includes(dw)}function I_(e){let t=Gf[e.severity]||e.severity,s=C_[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 $_(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 T_(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||!k_(l.body)||i.push($_(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 P_(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 B_(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 O_(e,t,s){let i=B_(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 L_(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 N_(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=S_(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 T_(i),o=await A_(e),a=0,u=n.failed,l=[...n.errors],c=[];if(o)for(let p of r){let m=N_(p,e.diffs),g=(m?O_(p,m,o):null)||(i.reviewTarget?null:L_(p,o));if(!g){c.push(p);continue}let D=lw(I_(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(P_(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 M_=b.enum(["critical","high","medium","low"]),j_=b.enum(["security","performance","bug","quality","style","docs"]),q_=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:M_,category:j_,description:b.string().min(1),matchText:b.string().min(1).optional()}).strict(),U_=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(),V_=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(),G_=b.object({schemaVersion:b.literal(1),name:b.string().min(1),description:b.string().optional(),diffs:b.array(q_).min(1),expectedIssues:b.array(pw),expectedFilteredIssues:b.array(pw).default([]),thresholds:U_.optional(),commitMessages:b.array(b.string()).optional(),supplementalContextFiles:b.array(V_).optional()}).strict();function W_(e){return G_.parse(e)}async function mw(e){let t=await(0,Ji.readFile)(e,"utf-8");try{return W_(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 K_(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 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 a$(t,e.fixturePath),i=u$(e),r={projectPath:t,fixturePath:s,executor:e.executor,model:e.model,agentFilter:Rw(e.agent),ruleFilter:Rw(e.rule),confidence:o$(e.confidence),useCache:e.useCache,thresholds:i},n=await Sw(r);return e.json?console.log(JSON.stringify(n,null,2)):h.plain(l$(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
+
421
+ Examples:
422
+ best-review eval
423
+ best-review eval evals/golden --json
424
+ best-review eval --model gpt-4o-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
+
426
+ Examples:
427
+ best-review extends install # \u6309\u914D\u7F6E\u5B89\u88C5
428
+ best-review extends install https://github.com/org/repo # \u5B89\u88C5\u6307\u5B9A URL
429
+ best-review extends install --force # \u5F3A\u5236\u91CD\u65B0 clone
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 c$(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 f$(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=c$(i),l=e.force?ln():await le(),c=f$(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-4o-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 d$(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=d$(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
+
433
+ Examples:
434
+ best-review rules # \u5217\u51FA\u6240\u6709\u89C4\u5219
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 h$=(0,zw.promisify)(Kw.execFile),p$="best-review.md",m$="best-review-create-rule.md";async function Hw(e){try{return await h$(e,["--version"]),!0}catch{return!1}}var g$=`---
437
+ description: \u4F7F\u7528 best-review \u8FD0\u884C AI \u4EE3\u7801\u5BA1\u67E5
438
+ ---
439
+
440
+ # best-review \u4EE3\u7801\u5BA1\u67E5
441
+
442
+ \u4F60\u6B63\u5728\u8FD0\u884C best-review\uFF0C\u8FD9\u662F\u4E00\u4E2A\u672C\u5730\u591A Agent AI \u4EE3\u7801\u5BA1\u67E5\u5DE5\u5177\u3002
443
+
444
+ ## \u6267\u884C\u5668
445
+
446
+ best-review \u76F4\u63A5\u8C03\u7528 OpenAI Chat Completions \u517C\u5BB9\u6A21\u578B\u670D\u52A1\u3002\u6267\u884C\u5BA1\u67E5\u524D\u8BF7\u5148\u521D\u59CB\u5316\u6A21\u578B\u914D\u7F6E\uFF1A
447
+ \`\`\`bash
448
+ best-review init
449
+ \`\`\`
450
+
451
+ \u521D\u59CB\u5316\u4F1A\u9009\u62E9 openai/deepseek \u5BF9\u5E94 executor\uFF0C\u5E76\u628A\u5E73\u53F0\u3001Base URL\u3001API Key \u548C\u6A21\u578B\u5199\u5165\u7528\u6237\u7EA7 \`~/.best-review/config.json\`\u3002
452
+
453
+ ## \u8FD0\u884C\u6A21\u5F0F
454
+
455
+ ### \u5982\u679C \`$ARGUMENTS\` \u5305\u542B\u53C2\u6570\uFF1A
456
+ \u4E0D\u518D\u8FFD\u95EE\uFF0C\u76F4\u63A5\u628A\u53C2\u6570\u4F20\u7ED9 best-review\uFF1A
457
+ \`\`\`bash
458
+ best-review review $ARGUMENTS
459
+ \`\`\`
460
+
461
+ ### \u5982\u679C \`$ARGUMENTS\` \u4E3A\u7A7A\uFF1A
462
+ \u4F7F\u7528 AskUserQuestion \u6309\u987A\u5E8F\u63D0\u95EE\uFF0C\u4E00\u6B21\u53EA\u95EE\u4E00\u4E2A\u95EE\u9898\uFF0C\u7B49\u7528\u6237\u56DE\u7B54\u540E\u518D\u7EE7\u7EED\uFF1A
463
+
464
+ **\u6B65\u9AA4 1\uFF1A** \u8BE2\u95EE\u201C\u4F60\u60F3\u5BA1\u67E5\u4EC0\u4E48\uFF1F\u201D
465
+ \u9009\u9879\uFF1A
466
+ 1. **\u672A\u63D0\u4EA4\u53D8\u66F4** - \u5BA1\u67E5\u5F53\u524D staged/unstaged \u53D8\u66F4
467
+ 2. **\u6700\u8FD1\u4E00\u6B21\u63D0\u4EA4** - \u5BA1\u67E5\u6700\u65B0\u63D0\u4EA4
468
+ 3. **\u5F53\u524D\u5206\u652F vs main** - \u5BA1\u67E5\u5F53\u524D\u5206\u652F\u76F8\u5BF9 main \u7684\u5168\u90E8\u53D8\u66F4
469
+ 4. **\u6307\u5B9A\u6587\u4EF6** - \u8BA9\u7528\u6237\u8F93\u5165\u8981\u5BA1\u67E5\u7684\u6587\u4EF6
470
+
471
+ \u7B49\u5F85\u7528\u6237\u56DE\u7B54\u3002
472
+
473
+ **\u6B65\u9AA4 2\uFF1A** \u5982\u679C\u7528\u6237\u5728\u6B65\u9AA4 1 \u9009\u62E9\u201C\u6307\u5B9A\u6587\u4EF6\u201D\uFF0C\u8BE2\u95EE\u201C\u5BA1\u67E5\u54EA\u4E9B\u6587\u4EF6\uFF1F\uFF08\u8DEF\u5F84\u7528\u9017\u53F7\u5206\u9694\uFF09\u201D
474
+
475
+ \u5FC5\u8981\u65F6\u7B49\u5F85\u7528\u6237\u56DE\u7B54\u3002
476
+
477
+ **\u6B65\u9AA4 3\uFF1A** \u4F7F\u7528 best-review \u6267\u884C\u5BF9\u5E94\u547D\u4EE4\uFF1A
478
+ - \u672A\u63D0\u4EA4\u53D8\u66F4\uFF1A\`best-review review\`
479
+ - \u6700\u8FD1\u4E00\u6B21\u63D0\u4EA4\uFF1A\`best-review review --base HEAD~1\`
480
+ - \u5F53\u524D\u5206\u652F vs main\uFF1A\`best-review review --branch .\`
481
+ - \u6307\u5B9A\u6587\u4EF6\uFF1A\`best-review review --files <files>\`
482
+
483
+ ## \u5E38\u7528\u793A\u4F8B
484
+
485
+ - \`/best-review\` - \u4EA4\u4E92\u6A21\u5F0F\uFF0C\u8BE2\u95EE\u5BA1\u67E5\u8303\u56F4
486
+ - \`/best-review --base main\` - \u6BD4\u8F83\u5F53\u524D HEAD \u548C main \u5206\u652F
487
+ - \`/best-review --branch .\` - \u5BA1\u67E5\u5F53\u524D\u5206\u652F\u76F8\u5BF9 main \u7684\u53D8\u66F4\uFF08\u81EA\u52A8\u68C0\u6D4B\uFF09
488
+ - \`/best-review --files src/auth.ts\` - \u5BA1\u67E5\u6307\u5B9A\u6587\u4EF6
489
+ - \`/best-review --agent security-scan\` - \u53EA\u8FD0\u884C\u5B89\u5168 Agent
490
+ - \`/best-review --severity critical,high\` - \u53EA\u5C55\u793A critical/high \u95EE\u9898
491
+ - \`/best-review --model deepseek-v4-flash --executor deepseek-api\` - \u4F7F\u7528 DeepSeek \u5BA1\u67E5
492
+
493
+ ## \u8F93\u51FA\u8981\u6C42
494
+
495
+ \u547D\u4EE4\u8FD0\u884C\u540E\uFF0C\u603B\u7ED3\uFF1A
496
+ 1. \u5BA1\u67E5\u4E86\u591A\u5C11\u6587\u4EF6
497
+ 2. \u53D1\u73B0\u7684\u95EE\u9898\uFF0C\u6309\u4E25\u91CD\u7EA7\u522B\u5F52\u7C7B
498
+ 3. \u5173\u952E\u5EFA\u8BAE
499
+
500
+ \u5982\u679C\u53D1\u73B0\u95EE\u9898\uFF0C\u4E3B\u52A8\u63D0\u51FA\u53EF\u4EE5\u7EE7\u7EED\u5E2E\u52A9\u4FEE\u590D\u3002
501
+ `,D$=`---
502
+ description: \u4EA4\u4E92\u5F0F\u521B\u5EFA\u65B0\u7684 best-review \u89C4\u5219
503
+ ---
504
+
505
+ # \u521B\u5EFA best-review \u89C4\u5219
506
+
507
+ \u4F60\u6B63\u5728\u5E2E\u52A9\u7528\u6237\u521B\u5EFA\u4E00\u4E2A\u65B0\u7684 best-review \u4EE3\u7801\u5BA1\u67E5\u89C4\u5219\u3002
508
+
509
+ ## \u6B65\u9AA4 1\uFF1A\u6536\u96C6\u4FE1\u606F
510
+
511
+ \u4F7F\u7528 AskUserQuestion \u9010\u9879\u6536\u96C6\u4EE5\u4E0B\u4FE1\u606F\uFF1A
512
+
513
+ ### 1.1 \u89C4\u5219\u540D\u79F0
514
+ \u8BE2\u95EE\uFF1A\u201C\u8FD9\u4E2A\u89C4\u5219\u53EB\u4EC0\u4E48\uFF1F\u8BF7\u4F7F\u7528 kebab-case\uFF0C\u4F8B\u5982 input-validation\u201D
515
+
516
+ ### 1.2 \u63CF\u8FF0
517
+ \u8BE2\u95EE\uFF1A\u201C\u8FD9\u4E2A\u89C4\u5219\u8981\u68C0\u67E5\u4EC0\u4E48\uFF1F\u8BF7\u7528\u4E00\u53E5\u8BDD\u63CF\u8FF0\u3002\u201D
518
+
519
+ ### 1.3 \u9009\u62E9 Agent
520
+ \u5148\u8FD0\u884C \`best-review agents\` \u67E5\u770B\u53EF\u7528 Agent\u3002
521
+ \u7136\u540E\u8BE2\u95EE\uFF1A\u201C\u54EA\u4E2A Agent \u8D1F\u8D23\u8FD9\u4E2A\u89C4\u5219\uFF1F\u201D
522
+ \u9009\u9879\uFF1A
523
+ - **general** - \u901A\u7528\u4EE3\u7801\u8D28\u91CF\u3001\u53EF\u8BFB\u6027\u3001\u7ED3\u6784
524
+ - **bug-hunter** - bug\u3001\u903B\u8F91\u9519\u8BEF\u3001\u8FB9\u754C\u6761\u4EF6
525
+ - **security-scan** - \u5B89\u5168\u6F0F\u6D1E
526
+ - **performance-check** - \u6027\u80FD\u95EE\u9898
527
+ - **consistency-check** - \u4EE3\u7801\u98CE\u683C\u548C\u6A21\u5F0F\u4E00\u81F4\u6027
528
+
529
+ ### 1.4 \u6587\u4EF6\u6A21\u5F0F
530
+ \u4F7F\u7528 Glob \u5206\u6790\u9879\u76EE\u7ED3\u6784\uFF0C\u627E\u51FA\u5E38\u89C1\u76EE\u5F55\uFF08src/\u3001lib/\u3001app/\uFF09\u3002
531
+ \u7136\u540E\u8BE2\u95EE\uFF1A\u201C\u8FD9\u4E2A\u89C4\u5219\u5E94\u7528\u5230\u54EA\u4E9B\u6587\u4EF6\uFF1F\u201D
532
+ \u6839\u636E\u9879\u76EE\u7ED3\u6784\u7ED9\u51FA\u5EFA\u8BAE\uFF0C\u5E76\u5305\u542B\u5E38\u89C1\u6A21\u5F0F\uFF1A
533
+ - \`**/*.ts\` - \u6240\u6709 TypeScript \u6587\u4EF6
534
+ - \`**/*.tsx\` - \u6240\u6709 React TypeScript \u6587\u4EF6
535
+ - \`src/**/*.ts\` - src/ \u4E0B\u7684 TypeScript \u6587\u4EF6
536
+ \u5141\u8BB8\u7528\u6237\u8F93\u5165\u81EA\u5B9A\u4E49\u6A21\u5F0F\u3002
537
+
538
+ ### 1.5 \u4FDD\u5B58\u4F4D\u7F6E
539
+ \u8BE2\u95EE\uFF1A\u201C\u89C4\u5219\u4FDD\u5B58\u5230\u54EA\u91CC\uFF1F\u201D
540
+ \u9009\u9879\uFF1A
541
+ - **Project** (.best-review/rules/) - \u4EC5\u5F53\u524D\u9879\u76EE
542
+ - **User** (~/.best-review/rules/) - \u6240\u6709\u9879\u76EE\u901A\u7528
543
+
544
+ ## \u6B65\u9AA4 2\uFF1A\u751F\u6210\u89C4\u5219 prompt
545
+
546
+ \u6839\u636E\u7528\u6237\u63CF\u8FF0\u751F\u6210\u8BE6\u7EC6\u89C4\u5219 prompt\uFF0C\u5305\u542B\uFF1A
547
+
548
+ 1. **\u6807\u9898** - \u6E05\u695A\u8BF4\u660E\u89C4\u5219\u68C0\u67E5\u4EC0\u4E48
549
+ 2. **\u68C0\u67E5\u5185\u5BB9** - \u5177\u4F53\u68C0\u67E5\u9879\u5217\u8868
550
+ 3. **\u274C \u907F\u514D** - \u8FDD\u89C4\u4EE3\u7801\u793A\u4F8B
551
+ 4. **\u2705 \u63A8\u8350\u505A\u6CD5** - \u6B63\u786E\u6A21\u5F0F\u793A\u4F8B
552
+ 5. **\u4F55\u65F6\u62A5\u544A** - \u5E94\u8BE5\u62A5\u544A\u95EE\u9898\u7684\u60C5\u51B5
553
+ 6. **\u4F55\u65F6\u4E0D\u8981\u62A5\u544A** - \u9700\u8981\u907F\u514D\u7684\u8BEF\u62A5
554
+
555
+ ## \u6B65\u9AA4 3\uFF1A\u521B\u5EFA\u89C4\u5219\u6587\u4EF6
556
+
557
+ \u751F\u6210\u5E26 YAML frontmatter \u7684 Markdown \u89C4\u5219\u6587\u4EF6\uFF1A
558
+
559
+ \`\`\`markdown
560
+ ---
561
+ name: <rule-name>
562
+ description: <description>
563
+ patterns:
564
+ - "<pattern1>"
565
+ - "<pattern2>"
566
+ agent: <agent-name>
567
+ ---
568
+
569
+ <\u751F\u6210\u7684\u89C4\u5219 prompt>
570
+ \`\`\`
571
+
572
+ \u4FDD\u5B58\u5230\u7528\u6237\u9009\u62E9\u7684\u4F4D\u7F6E\uFF1A
573
+ - Project\uFF1A\`.best-review/rules/<name>.md\`
574
+ - User\uFF1A\`~/.best-review/rules/<name>.md\`
575
+
576
+ \u5982\u679C\u76EE\u5F55\u4E0D\u5B58\u5728\uFF0C\u5148\u521B\u5EFA\u76EE\u5F55\u3002
577
+
578
+ ## \u6B65\u9AA4 4\uFF1A\u9A8C\u8BC1
579
+
580
+ \u521B\u5EFA\u6587\u4EF6\u540E\uFF1A
581
+ 1. \u8FD0\u884C \`best-review rules\`\uFF0C\u786E\u8BA4\u89C4\u5219\u51FA\u73B0\u5728\u5217\u8868\u4E2D
582
+ 2. \u8FD0\u884C \`best-review rules <name>\`\uFF0C\u5C55\u793A\u89C4\u5219\u8BE6\u60C5
583
+ 3. \u544A\u8BC9\u7528\u6237\u53EF\u4EE5\u7528 \`best-review review --rule <name>\` \u6D4B\u8BD5
584
+
585
+ ## \u4EA4\u4E92\u793A\u4F8B
586
+
587
+ \`\`\`
588
+ User: /best-review-create-rule
589
+
590
+ AI: \u6211\u6765\u5E2E\u4F60\u521B\u5EFA\u65B0\u7684 best-review \u89C4\u5219\u3002\u5148\u95EE\u51E0\u4E2A\u95EE\u9898\u3002
591
+
592
+ AI: \u8FD9\u4E2A\u89C4\u5219\u53EB\u4EC0\u4E48\uFF1F\u8BF7\u4F7F\u7528 kebab-case\u3002
593
+ User: zod-validation
594
+
595
+ AI: \u8FD9\u4E2A\u89C4\u5219\u8981\u68C0\u67E5\u4EC0\u4E48\uFF1F
596
+ User: \u6240\u6709\u7528\u6237\u8F93\u5165\u90FD\u5FC5\u987B\u4F7F\u7528 Zod schema \u6821\u9A8C
597
+
598
+ AI: \u54EA\u4E2A Agent \u8D1F\u8D23\u8FD9\u4E2A\u89C4\u5219\uFF1F
599
+ - general\uFF08\u63A8\u8350\u7528\u4E8E\u6821\u9A8C\u6A21\u5F0F\uFF09
600
+ - security-scan
601
+ - bug-hunter
602
+ User: general
603
+
604
+ AI: \u8FD9\u4E2A\u89C4\u5219\u5E94\u7528\u5230\u54EA\u4E9B\u6587\u4EF6\uFF1F
605
+ \u6211\u53D1\u73B0\u8FD9\u4E9B\u76EE\u5F55\uFF1Asrc/\u3001lib/
606
+ \u5EFA\u8BAE\uFF1A
607
+ - **/*.ts\uFF08\u6240\u6709 TypeScript\uFF09
608
+ - src/**/*.ts\uFF08\u4EC5 src\uFF09
609
+ User: src/**/*.ts
610
+
611
+ AI: \u89C4\u5219\u4FDD\u5B58\u5230\u54EA\u91CC\uFF1F
612
+ - Project\uFF08.best-review/rules/\uFF09
613
+ - User\uFF08~/.best-review/rules/\uFF09
614
+ User: Project
615
+
616
+ AI: \u6B63\u5728\u521B\u5EFA\u89C4\u5219...
617
+
618
+ [Writes .best-review/rules/zod-validation.md]
619
+
620
+ AI: \u5DF2\u521B\u5EFA .best-review/rules/zod-validation.md
621
+
622
+ \u5DF2\u901A\u8FC7 best-review rules \u9A8C\u8BC1\uFF1A
623
+ - zod-validation (\u25CF) - \u6240\u6709\u7528\u6237\u8F93\u5165\u90FD\u5FC5\u987B\u4F7F\u7528 Zod schema \u6821\u9A8C
624
+
625
+ \u53EF\u4EE5\u8FD9\u6837\u6D4B\u8BD5\uFF1Abest-review review --rule zod-validation
626
+ \`\`\`
627
+ `,Ka=[{filename:p$,template:g$,commandName:"/best-review"},{filename:m$,template:D$,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
+ ${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
+ ${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
+ `);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
631
+
632
+ Examples:
633
+ best-review setup-command # \u5B89\u88C5\u547D\u4EE4
634
+ best-review setup-command --force # \u8986\u76D6\u5DF2\u6709\u547D\u4EE4
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
637
+
638
+ Examples:
639
+ best-review review \u5BA1\u67E5\u672A\u63D0\u4EA4\u53D8\u66F4
640
+ best-review review --files src/auth.ts \u53EA\u5BA1\u67E5\u6307\u5B9A\u6587\u4EF6\u53D8\u66F4
641
+ best-review review --files src/a.ts,src/b.ts \u5BA1\u67E5\u591A\u4E2A\u6587\u4EF6
642
+ best-review review --files src/auth.ts --full \u5BA1\u67E5\u5B8C\u6574\u6587\u4EF6\u5185\u5BB9\uFF0C\u4E0D\u4F9D\u8D56 Git
643
+ best-review review --files src/auth.ts --base main \u5BA1\u67E5\u6587\u4EF6\u76F8\u5BF9 main \u7684\u53D8\u66F4
644
+ best-review review --ignore dist,coverage/** \u4E34\u65F6\u5FFD\u7565\u67D0\u4E9B\u76EE\u5F55\u6216\u6587\u4EF6
645
+ best-review review --branch . \u5F53\u524D\u5206\u652F\u76F8\u5BF9\u9ED8\u8BA4\u5206\u652F
646
+ best-review review --base main \u6BD4\u8F83 HEAD \u548C main
647
+ best-review review --agent general \u53EA\u8FD0\u884C general Agent
648
+ best-review review --severity critical,high
649
+ best-review review --fix-critical \u81EA\u52A8\u4FEE\u590D\u4E25\u91CD\u98CE\u9669
650
+ best-review review --fix-severity critical,high --fix-dry-run
651
+ best-review review --fix-critical --fix-max-issues 3 --fix-patch-file .best-review/fix.patch
652
+ best-review review --tech-doc docs/tech-plan.md \u5BF9\u7167\u6280\u672F\u6587\u6863\u9A8C\u6536 diff
653
+ best-review review --log-steps \u8F93\u51FA\u8BE6\u7EC6\u6B65\u9AA4\u548C\u9636\u6BB5\u8017\u65F6
654
+ best-review review --stream \u5C55\u793A\u6267\u884C\u5668\u652F\u6301\u7684\u6D41\u5F0F\u8F93\u51FA
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-4o-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 G$(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 W$(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 K$(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:W$(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 z$(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 H$(e){return e.deleted_file?"deleted":e.new_file?"added":e.renamed_file?"renamed":"modified"}function J$(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}=G$(r);return{file:i,status:H$(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 Y$(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 z$(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=K$(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(J$).filter(l=>l.file&&l.diff),u=await Y$(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 Z$(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 X$(e,t,s){let i=Z$(e);return i?i.host===Qf(t)&&i.projectPath===ed(s):!1}async function Q$(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 eT(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=eT(s,i,t.diffVersion.headSha,t.diffVersion.baseSha);if(!await qa())return r;let o=await ew("origin");if(!o||!X$(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 Q$(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
+
659
+ Examples:
660
+ best-review review-mr https://gitlab.example.com/group/project/-/merge_requests/123
661
+ best-review review-mr <mr-url> --agent security-scan
662
+ best-review review-mr <mr-url> --tech-doc docs/tech-plan.md
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-4o-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),tT=["-v","--version","-h","--help"],sT=Qa.length===0||Qa.some(e=>tT.includes(e));sT&&(h.logo(),(Qa.includes("-v")||Qa.includes("--version"))&&(h.plain(`v${ai.version}`),process.exit(0)));qd(_b);