docuvia 1.8.3 → 1.8.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.
- package/dist/cli.js +9 -9
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
3
|
-
import{a as up,b as dp,d as Ve,f as pp,g as gp,h as fp}from"./chunk-ZROS4Z3Z.js";import{A as bp,B as wp,C as Fp,D as Mp,E as Ll,F as Nl,G as kp,H as Ss,I as Gp,J as xp,K as Ts,L as Up,M as As,N as Mt,O as Zr,P as Ir,a as mp,b as Rl,c as Dn,d as Es,e as Ol,f as yl,g as vn,h as _p,i as Ep,j as Sp,k as mt,l as yr,m as Tp,n as Ap,o as Rp,p as Op,q as yp,r as Il,s as Ip,t as Si,u as Lp,v as Np,w as Cp,x as Pp,y as Dp,z as vp}from"./chunk-YKSTASHC.js";import{a as hp,b as Al,c as h,d as g,e as Ot,g as Lr}from"./chunk-6IZXMRME.js";import{$ as op,A as El,Aa as _s,B as Yd,Ba as lp,C as nr,Ca as Nn,D as hi,Da as sr,E as he,Ea as Ei,F as Tr,Fa as Ar,G as $d,Ga as cp,H as Wd,Ha as Y,I as jd,Ia as Cn,J as Vd,Ja as Pn,K as mi,Ka as Rr,L as zd,La as Or,M as Jd,N as qd,O as Qd,P as Xd,Q as Zd,R as ep,S as at,T as _i,U as tp,V as rp,W as np,X as ip,Y as sp,Z as ir,_ as ht,a as Re,aa as se,b as Ud,ba as K,c as fe,ca as Vt,da as us,e as Hd,ea as E,f as O,fa as ap,g as S,h as y,i as T,j as R,k as A,l as Rt,m as ml,n as B,o as qe,p as Er,q as Oe,r as rr,ra as Sl,s as wt,sa as ds,t as Bd,ta as ps,u as Sr,ua as Tl,v as je,va as Ln,w as _l,wa as gs,x as Kd,xa as fs,y as Xr,ya as hs,z as Ft,za as ms}from"./chunk-H24ZJ4BD.js";import{a as ve,b as U,c as hl}from"./chunk-KVOCOCYJ.js";var Cg=U(Gn=>{"use strict";Object.defineProperty(Gn,"__esModule",{value:!0});Gn.splitWhen=Gn.flatten=void 0;function aR(t){return t.reduce((e,r)=>[].concat(e,r),[])}Gn.flatten=aR;function lR(t,e){let r=[[]],n=0;for(let i of t)e(i)?(n++,r[n]=[]):r[n].push(i);return r}Gn.splitWhen=lR});var Pg=U(Ms=>{"use strict";Object.defineProperty(Ms,"__esModule",{value:!0});Ms.isEnoentCodeError=void 0;function cR(t){return t.code==="ENOENT"}Ms.isEnoentCodeError=cR});var Dg=U(ks=>{"use strict";Object.defineProperty(ks,"__esModule",{value:!0});ks.createDirentFromStats=void 0;var Ul=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function uR(t,e){return new Ul(t,e)}ks.createDirentFromStats=uR});var Fg=U(Me=>{"use strict";Object.defineProperty(Me,"__esModule",{value:!0});Me.convertPosixPathToPattern=Me.convertWindowsPathToPattern=Me.convertPathToPattern=Me.escapePosixPath=Me.escapeWindowsPath=Me.escape=Me.removeLeadingDotSegment=Me.makeAbsolute=Me.unixify=void 0;var dR=ve("os"),pR=ve("path"),vg=dR.platform()==="win32",gR=2,fR=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g,hR=/(\\?)([()[\]{}]|^!|[!+@](?=\())/g,mR=/^\\\\([.?])/,_R=/\\(?![!()+@[\]{}])/g;function ER(t){return t.replace(/\\/g,"/")}Me.unixify=ER;function SR(t,e){return pR.resolve(t,e)}Me.makeAbsolute=SR;function TR(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(gR)}return t}Me.removeLeadingDotSegment=TR;Me.escape=vg?Hl:Bl;function Hl(t){return t.replace(hR,"\\$2")}Me.escapeWindowsPath=Hl;function Bl(t){return t.replace(fR,"\\$2")}Me.escapePosixPath=Bl;Me.convertPathToPattern=vg?bg:wg;function bg(t){return Hl(t).replace(mR,"//$1").replace(_R,"/")}Me.convertWindowsPathToPattern=bg;function wg(t){return Bl(t)}Me.convertPosixPathToPattern=wg});var kg=U((Sx,Mg)=>{"use strict";Mg.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var Ug=U((Tx,xg)=>{"use strict";var AR=kg(),Gg={"{":"}","(":")","[":"]"},RR=function(t){if(t[0]==="!")return!0;for(var e=0,r=-2,n=-2,i=-2,s=-2,o=-2;e<t.length;){if(t[e]==="*"||t[e+1]==="?"&&/[\].+)]/.test(t[e])||n!==-1&&t[e]==="["&&t[e+1]!=="]"&&(n<e&&(n=t.indexOf("]",e)),n>e&&(o===-1||o>n||(o=t.indexOf("\\",e),o===-1||o>n)))||i!==-1&&t[e]==="{"&&t[e+1]!=="}"&&(i=t.indexOf("}",e),i>e&&(o=t.indexOf("\\",e),o===-1||o>i))||s!==-1&&t[e]==="("&&t[e+1]==="?"&&/[:!=]/.test(t[e+2])&&t[e+3]!==")"&&(s=t.indexOf(")",e),s>e&&(o=t.indexOf("\\",e),o===-1||o>s))||r!==-1&&t[e]==="("&&t[e+1]!=="|"&&(r<e&&(r=t.indexOf("|",e)),r!==-1&&t[r+1]!==")"&&(s=t.indexOf(")",r),s>r&&(o=t.indexOf("\\",r),o===-1||o>s))))return!0;if(t[e]==="\\"){var a=t[e+1];e+=2;var l=Gg[a];if(l){var c=t.indexOf(l,e);c!==-1&&(e=c+1)}if(t[e]==="!")return!0}else e++}return!1},OR=function(t){if(t[0]==="!")return!0;for(var e=0;e<t.length;){if(/[*?{}()[\]]/.test(t[e]))return!0;if(t[e]==="\\"){var r=t[e+1];e+=2;var n=Gg[r];if(n){var i=t.indexOf(n,e);i!==-1&&(e=i+1)}if(t[e]==="!")return!0}else e++}return!1};xg.exports=function(e,r){if(typeof e!="string"||e==="")return!1;if(AR(e))return!0;var n=RR;return r&&r.strict===!1&&(n=OR),n(e)}});var Bg=U((Ax,Hg)=>{"use strict";var yR=Ug(),IR=ve("path").posix.dirname,LR=ve("os").platform()==="win32",Kl="/",NR=/\\/g,CR=/[\{\[].*[\}\]]$/,PR=/(^|[^\\])([\{\[]|\([^\)]+$)/,DR=/\\([\!\*\?\|\[\]\(\)\{\}])/g;Hg.exports=function(e,r){var n=Object.assign({flipBackslashes:!0},r);n.flipBackslashes&&LR&&e.indexOf(Kl)<0&&(e=e.replace(NR,Kl)),CR.test(e)&&(e+=Kl),e+="a";do e=IR(e);while(yR(e)||PR.test(e));return e.replace(DR,"$1")}});var Gs=U(It=>{"use strict";It.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;It.find=(t,e)=>t.nodes.find(r=>r.type===e);It.exceedsLimit=(t,e,r=1,n)=>n===!1||!It.isInteger(t)||!It.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=n;It.escapeNode=(t,e=0,r)=>{let n=t.nodes[e];n&&(r&&n.type===r||n.type==="open"||n.type==="close")&&n.escaped!==!0&&(n.value="\\"+n.value,n.escaped=!0)};It.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;It.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0===0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;It.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;It.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);It.flatten=(...t)=>{let e=[],r=n=>{for(let i=0;i<n.length;i++){let s=n[i];if(Array.isArray(s)){r(s);continue}s!==void 0&&e.push(s)}return e};return r(t),e}});var xs=U((Ox,Yg)=>{"use strict";var Kg=Gs();Yg.exports=(t,e={})=>{let r=(n,i={})=>{let s=e.escapeInvalid&&Kg.isInvalidBrace(i),o=n.invalid===!0&&e.escapeInvalid===!0,a="";if(n.value)return(s||o)&&Kg.isOpenOrClose(n)?"\\"+n.value:n.value;if(n.value)return n.value;if(n.nodes)for(let l of n.nodes)a+=r(l);return a};return r(t)}});var Wg=U((yx,$g)=>{"use strict";$g.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var ef=U((Ix,Zg)=>{"use strict";var jg=Wg(),an=(t,e,r)=>{if(jg(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(jg(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let n={relaxZeros:!0,...r};typeof n.strictZeros=="boolean"&&(n.relaxZeros=n.strictZeros===!1);let i=String(n.relaxZeros),s=String(n.shorthand),o=String(n.capture),a=String(n.wrap),l=t+":"+e+"="+i+s+o+a;if(an.cache.hasOwnProperty(l))return an.cache[l].result;let c=Math.min(t,e),u=Math.max(t,e);if(Math.abs(c-u)===1){let _=t+"|"+e;return n.capture?`(${_})`:n.wrap===!1?_:`(?:${_})`}let p=Xg(t)||Xg(e),d={min:t,max:e,a:c,b:u},f=[],m=[];if(p&&(d.isPadded=p,d.maxLen=String(d.max).length),c<0){let _=u<0?Math.abs(u):1;m=Vg(_,Math.abs(c),d,n),c=d.a=0}return u>=0&&(f=Vg(c,u,d,n)),d.negatives=m,d.positives=f,d.result=vR(m,f,n),n.capture===!0?d.result=`(${d.result})`:n.wrap!==!1&&f.length+m.length>1&&(d.result=`(?:${d.result})`),an.cache[l]=d,d.result};function vR(t,e,r){let n=Yl(t,e,"-",!1,r)||[],i=Yl(e,t,"",!1,r)||[],s=Yl(t,e,"-?",!0,r)||[];return n.concat(s).concat(i).join("|")}function bR(t,e){let r=1,n=1,i=Jg(t,r),s=new Set([e]);for(;t<=i&&i<=e;)s.add(i),r+=1,i=Jg(t,r);for(i=qg(e+1,n)-1;t<i&&i<=e;)s.add(i),n+=1,i=qg(e+1,n)-1;return s=[...s],s.sort(MR),s}function wR(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let n=FR(t,e),i=n.length,s="",o=0;for(let a=0;a<i;a++){let[l,c]=n[a];l===c?s+=l:l!=="0"||c!=="9"?s+=kR(l,c,r):o++}return o&&(s+=r.shorthand===!0?"\\d":"[0-9]"),{pattern:s,count:[o],digits:i}}function Vg(t,e,r,n){let i=bR(t,e),s=[],o=t,a;for(let l=0;l<i.length;l++){let c=i[l],u=wR(String(o),String(c),n),p="";if(!r.isPadded&&a&&a.pattern===u.pattern){a.count.length>1&&a.count.pop(),a.count.push(u.count[0]),a.string=a.pattern+Qg(a.count),o=c+1;continue}r.isPadded&&(p=GR(c,r,n)),u.string=p+u.pattern+Qg(u.count),s.push(u),o=c+1,a=u}return s}function Yl(t,e,r,n,i){let s=[];for(let o of t){let{string:a}=o;!n&&!zg(e,"string",a)&&s.push(r+a),n&&zg(e,"string",a)&&s.push(r+a)}return s}function FR(t,e){let r=[];for(let n=0;n<t.length;n++)r.push([t[n],e[n]]);return r}function MR(t,e){return t>e?1:e>t?-1:0}function zg(t,e,r){return t.some(n=>n[e]===r)}function Jg(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function qg(t,e){return t-t%Math.pow(10,e)}function Qg(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function kR(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function Xg(t){return/^-?(0+)\d/.test(t)}function GR(t,e,r){if(!e.isPadded)return t;let n=Math.abs(e.maxLen-String(t).length),i=r.relaxZeros!==!1;switch(n){case 0:return"";case 1:return i?"0?":"0";case 2:return i?"0{0,2}":"00";default:return i?`0{0,${n}}`:`0{${n}}`}}an.cache={};an.clearCache=()=>an.cache={};Zg.exports=an});var jl=U((Lx,lf)=>{"use strict";var xR=ve("util"),rf=ef(),tf=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),UR=t=>e=>t===!0?Number(e):String(e),$l=t=>typeof t=="number"||typeof t=="string"&&t!=="",Pi=t=>Number.isInteger(+t),Wl=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},HR=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,BR=(t,e,r)=>{if(e>0){let n=t[0]==="-"?"-":"";n&&(t=t.slice(1)),t=n+t.padStart(n?e-1:e,"0")}return r===!1?String(t):t},Hs=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length<e;)t="0"+t;return r?"-"+t:t},KR=(t,e,r)=>{t.negatives.sort((a,l)=>a<l?-1:a>l?1:0),t.positives.sort((a,l)=>a<l?-1:a>l?1:0);let n=e.capture?"":"?:",i="",s="",o;return t.positives.length&&(i=t.positives.map(a=>Hs(String(a),r)).join("|")),t.negatives.length&&(s=`-(${n}${t.negatives.map(a=>Hs(String(a),r)).join("|")})`),i&&s?o=`${i}|${s}`:o=i||s,e.wrap?`(${n}${o})`:o},nf=(t,e,r,n)=>{if(r)return rf(t,e,{wrap:!1,...n});let i=String.fromCharCode(t);if(t===e)return i;let s=String.fromCharCode(e);return`[${i}-${s}]`},sf=(t,e,r)=>{if(Array.isArray(t)){let n=r.wrap===!0,i=r.capture?"":"?:";return n?`(${i}${t.join("|")})`:t.join("|")}return rf(t,e,r)},of=(...t)=>new RangeError("Invalid range arguments: "+xR.inspect(...t)),af=(t,e,r)=>{if(r.strictRanges===!0)throw of([t,e]);return[]},YR=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},$R=(t,e,r=1,n={})=>{let i=Number(t),s=Number(e);if(!Number.isInteger(i)||!Number.isInteger(s)){if(n.strictRanges===!0)throw of([t,e]);return[]}i===0&&(i=0),s===0&&(s=0);let o=i>s,a=String(t),l=String(e),c=String(r);r=Math.max(Math.abs(r),1);let u=Wl(a)||Wl(l)||Wl(c),p=u?Math.max(a.length,l.length,c.length):0,d=u===!1&&HR(t,e,n)===!1,f=n.transform||UR(d);if(n.toRegex&&r===1)return nf(Hs(t,p),Hs(e,p),!0,n);let m={negatives:[],positives:[]},_=N=>m[N<0?"negatives":"positives"].push(Math.abs(N)),I=[],L=0;for(;o?i>=s:i<=s;)n.toRegex===!0&&r>1?_(i):I.push(BR(f(i,L),p,d)),i=o?i-r:i+r,L++;return n.toRegex===!0?r>1?KR(m,n,p):sf(I,null,{wrap:!1,...n}):I},WR=(t,e,r=1,n={})=>{if(!Pi(t)&&t.length>1||!Pi(e)&&e.length>1)return af(t,e,n);let i=n.transform||(d=>String.fromCharCode(d)),s=`${t}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,l=Math.min(s,o),c=Math.max(s,o);if(n.toRegex&&r===1)return nf(l,c,!1,n);let u=[],p=0;for(;a?s>=o:s<=o;)u.push(i(s,p)),s=a?s-r:s+r,p++;return n.toRegex===!0?sf(u,null,{wrap:!1,options:n}):u},Us=(t,e,r,n={})=>{if(e==null&&$l(t))return[t];if(!$l(t)||!$l(e))return af(t,e,n);if(typeof r=="function")return Us(t,e,1,{transform:r});if(tf(r))return Us(t,e,0,r);let i={...n};return i.capture===!0&&(i.wrap=!0),r=r||i.step||1,Pi(r)?Pi(t)&&Pi(e)?$R(t,e,r,i):WR(t,e,Math.max(Math.abs(r),1),i):r!=null&&!tf(r)?YR(r,i):Us(t,e,1,r)};lf.exports=Us});var df=U((Nx,uf)=>{"use strict";var jR=jl(),cf=Gs(),VR=(t,e={})=>{let r=(n,i={})=>{let s=cf.isInvalidBrace(i),o=n.invalid===!0&&e.escapeInvalid===!0,a=s===!0||o===!0,l=e.escapeInvalid===!0?"\\":"",c="";if(n.isOpen===!0)return l+n.value;if(n.isClose===!0)return console.log("node.isClose",l,n.value),l+n.value;if(n.type==="open")return a?l+n.value:"(";if(n.type==="close")return a?l+n.value:")";if(n.type==="comma")return n.prev.type==="comma"?"":a?n.value:"|";if(n.value)return n.value;if(n.nodes&&n.ranges>0){let u=cf.reduce(n.nodes),p=jR(...u,{...e,wrap:!1,toRegex:!0,strictZeros:!0});if(p.length!==0)return u.length>1&&p.length>1?`(${p})`:p}if(n.nodes)for(let u of n.nodes)c+=r(u,n);return c};return r(t)};uf.exports=VR});var ff=U((Cx,gf)=>{"use strict";var zR=jl(),pf=xs(),xn=Gs(),ln=(t="",e="",r=!1)=>{let n=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?xn.flatten(e).map(i=>`{${i}}`):e;for(let i of t)if(Array.isArray(i))for(let s of i)n.push(ln(s,e,r));else for(let s of e)r===!0&&typeof s=="string"&&(s=`{${s}}`),n.push(Array.isArray(s)?ln(i,s,r):i+s);return xn.flatten(n)},JR=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,n=(i,s={})=>{i.queue=[];let o=s,a=s.queue;for(;o.type!=="brace"&&o.type!=="root"&&o.parent;)o=o.parent,a=o.queue;if(i.invalid||i.dollar){a.push(ln(a.pop(),pf(i,e)));return}if(i.type==="brace"&&i.invalid!==!0&&i.nodes.length===2){a.push(ln(a.pop(),["{}"]));return}if(i.nodes&&i.ranges>0){let p=xn.reduce(i.nodes);if(xn.exceedsLimit(...p,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let d=zR(...p,e);d.length===0&&(d=pf(i,e)),a.push(ln(a.pop(),d)),i.nodes=[];return}let l=xn.encloseBrace(i),c=i.queue,u=i;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,c=u.queue;for(let p=0;p<i.nodes.length;p++){let d=i.nodes[p];if(d.type==="comma"&&i.type==="brace"){p===1&&c.push(""),c.push("");continue}if(d.type==="close"){a.push(ln(a.pop(),c,l));continue}if(d.value&&d.type!=="open"){c.push(ln(c.pop(),d.value));continue}d.nodes&&n(d,i)}return c};return xn.flatten(n(t))};gf.exports=JR});var mf=U((Px,hf)=>{"use strict";hf.exports={MAX_LENGTH:1e4,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:`
|
|
4
|
-
`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var Af=U((Dx,Tf)=>{"use strict";var qR=xs(),{MAX_LENGTH:_f,CHAR_BACKSLASH:Vl,CHAR_BACKTICK:QR,CHAR_COMMA:XR,CHAR_DOT:ZR,CHAR_LEFT_PARENTHESES:eO,CHAR_RIGHT_PARENTHESES:tO,CHAR_LEFT_CURLY_BRACE:rO,CHAR_RIGHT_CURLY_BRACE:nO,CHAR_LEFT_SQUARE_BRACKET:Ef,CHAR_RIGHT_SQUARE_BRACKET:Sf,CHAR_DOUBLE_QUOTE:iO,CHAR_SINGLE_QUOTE:sO,CHAR_NO_BREAK_SPACE:oO,CHAR_ZERO_WIDTH_NOBREAK_SPACE:aO}=mf(),lO=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},n=typeof r.maxLength=="number"?Math.min(_f,r.maxLength):_f;if(t.length>n)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${n})`);let i={type:"root",input:t,nodes:[]},s=[i],o=i,a=i,l=0,c=t.length,u=0,p=0,d,f=()=>t[u++],m=_=>{if(_.type==="text"&&a.type==="dot"&&(a.type="text"),a&&a.type==="text"&&_.type==="text"){a.value+=_.value;return}return o.nodes.push(_),_.parent=o,_.prev=a,a=_,_};for(m({type:"bos"});u<c;)if(o=s[s.length-1],d=f(),!(d===aO||d===oO)){if(d===Vl){m({type:"text",value:(e.keepEscaping?d:"")+f()});continue}if(d===Sf){m({type:"text",value:"\\"+d});continue}if(d===Ef){l++;let _;for(;u<c&&(_=f());){if(d+=_,_===Ef){l++;continue}if(_===Vl){d+=f();continue}if(_===Sf&&(l--,l===0))break}m({type:"text",value:d});continue}if(d===eO){o=m({type:"paren",nodes:[]}),s.push(o),m({type:"text",value:d});continue}if(d===tO){if(o.type!=="paren"){m({type:"text",value:d});continue}o=s.pop(),m({type:"text",value:d}),o=s[s.length-1];continue}if(d===iO||d===sO||d===QR){let _=d,I;for(e.keepQuotes!==!0&&(d="");u<c&&(I=f());){if(I===Vl){d+=I+f();continue}if(I===_){e.keepQuotes===!0&&(d+=I);break}d+=I}m({type:"text",value:d});continue}if(d===rO){p++;let I={type:"brace",open:!0,close:!1,dollar:a.value&&a.value.slice(-1)==="$"||o.dollar===!0,depth:p,commas:0,ranges:0,nodes:[]};o=m(I),s.push(o),m({type:"open",value:d});continue}if(d===nO){if(o.type!=="brace"){m({type:"text",value:d});continue}let _="close";o=s.pop(),o.close=!0,m({type:_,value:d}),p--,o=s[s.length-1];continue}if(d===XR&&p>0){if(o.ranges>0){o.ranges=0;let _=o.nodes.shift();o.nodes=[_,{type:"text",value:qR(o)}]}m({type:"comma",value:d}),o.commas++;continue}if(d===ZR&&p>0&&o.commas===0){let _=o.nodes;if(p===0||_.length===0){m({type:"text",value:d});continue}if(a.type==="dot"){if(o.range=[],a.value+=d,a.type="range",o.nodes.length!==3&&o.nodes.length!==5){o.invalid=!0,o.ranges=0,a.type="text";continue}o.ranges++,o.args=[];continue}if(a.type==="range"){_.pop();let I=_[_.length-1];I.value+=a.value+d,a=I,o.ranges--;continue}m({type:"dot",value:d});continue}m({type:"text",value:d})}do if(o=s.pop(),o.type!=="root"){o.nodes.forEach(L=>{L.nodes||(L.type==="open"&&(L.isOpen=!0),L.type==="close"&&(L.isClose=!0),L.nodes||(L.type="text"),L.invalid=!0)});let _=s[s.length-1],I=_.nodes.indexOf(o);_.nodes.splice(I,1,...o.nodes)}while(s.length>0);return m({type:"eos"}),i};Tf.exports=lO});var yf=U((vx,Of)=>{"use strict";var Rf=xs(),cO=df(),uO=ff(),dO=Af(),Et=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let i=Et.create(n,e);Array.isArray(i)?r.push(...i):r.push(i)}else r=[].concat(Et.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};Et.parse=(t,e={})=>dO(t,e);Et.stringify=(t,e={})=>Rf(typeof t=="string"?Et.parse(t,e):t,e);Et.compile=(t,e={})=>(typeof t=="string"&&(t=Et.parse(t,e)),cO(t,e));Et.expand=(t,e={})=>{typeof t=="string"&&(t=Et.parse(t,e));let r=uO(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};Et.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Et.compile(t,e):Et.expand(t,e);Of.exports=Et});var Di=U((bx,Pf)=>{"use strict";var pO=ve("path"),Jt="\\\\/",If=`[^${Jt}]`,gO=0,lr="\\.",fO="\\+",hO="\\?",Bs="\\/",mO="(?=.)",Lf="[^/]",zl=`(?:${Bs}|$)`,Nf=`(?:^|${Bs})`,Jl=`${lr}{1,2}${zl}`,_O=`(?!${lr})`,EO=`(?!${Nf}${Jl})`,SO=`(?!${lr}{0,1}${zl})`,TO=`(?!${Jl})`,AO=`[^.${Bs}]`,RO=`${Lf}*?`,Cf={DOT_LITERAL:lr,PLUS_LITERAL:fO,QMARK_LITERAL:hO,SLASH_LITERAL:Bs,ONE_CHAR:mO,QMARK:Lf,END_ANCHOR:zl,DOTS_SLASH:Jl,NO_DOT:_O,NO_DOTS:EO,NO_DOT_SLASH:SO,NO_DOTS_SLASH:TO,QMARK_NO_DOT:AO,STAR:RO,START_ANCHOR:Nf},OO={...Cf,SLASH_LITERAL:`[${Jt}]`,QMARK:If,STAR:`${If}*?`,DOTS_SLASH:`${lr}{1,2}(?:[${Jt}]|$)`,NO_DOT:`(?!${lr})`,NO_DOTS:`(?!(?:^|[${Jt}])${lr}{1,2}(?:[${Jt}]|$))`,NO_DOT_SLASH:`(?!${lr}{0,1}(?:[${Jt}]|$))`,NO_DOTS_SLASH:`(?!${lr}{1,2}(?:[${Jt}]|$))`,QMARK_NO_DOT:`[^.${Jt}]`,START_ANCHOR:`(?:^|[${Jt}])`,END_ANCHOR:`(?:[${Jt}]|$)`},yO={__proto__:null,alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};Pf.exports={DEFAULT_MAX_EXTGLOB_RECURSION:gO,MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:yO,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{__proto__:null,"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:pO.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?OO:Cf}}});var vi=U(ut=>{"use strict";var IO=ve("path"),LO=process.platform==="win32",{REGEX_BACKSLASH:NO,REGEX_REMOVE_BACKSLASH:CO,REGEX_SPECIAL_CHARS:PO,REGEX_SPECIAL_CHARS_GLOBAL:DO}=Di();ut.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);ut.hasRegexChars=t=>PO.test(t);ut.isRegexChar=t=>t.length===1&&ut.hasRegexChars(t);ut.escapeRegex=t=>t.replace(DO,"\\$1");ut.toPosixSlashes=t=>t.replace(NO,"/");ut.removeBackslashes=t=>t.replace(CO,e=>e==="\\"?"":e);ut.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};ut.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:LO===!0||IO.sep==="\\";ut.escapeLast=(t,e,r)=>{let n=t.lastIndexOf(e,r);return n===-1?t:t[n-1]==="\\"?ut.escapeLast(t,e,n-1):`${t.slice(0,n)}\\${t.slice(n)}`};ut.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};ut.wrapOutput=(t,e={},r={})=>{let n=r.contains?"":"^",i=r.contains?"":"$",s=`${n}(?:${t})${i}`;return e.negated===!0&&(s=`(?:^(?!${s}).*$)`),s}});var Gf=U((Fx,kf)=>{"use strict";var Df=vi(),{CHAR_ASTERISK:ql,CHAR_AT:vO,CHAR_BACKWARD_SLASH:bi,CHAR_COMMA:bO,CHAR_DOT:Ql,CHAR_EXCLAMATION_MARK:Xl,CHAR_FORWARD_SLASH:Mf,CHAR_LEFT_CURLY_BRACE:Zl,CHAR_LEFT_PARENTHESES:ec,CHAR_LEFT_SQUARE_BRACKET:wO,CHAR_PLUS:FO,CHAR_QUESTION_MARK:vf,CHAR_RIGHT_CURLY_BRACE:MO,CHAR_RIGHT_PARENTHESES:bf,CHAR_RIGHT_SQUARE_BRACKET:kO}=Di(),wf=t=>t===Mf||t===bi,Ff=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},GO=(t,e)=>{let r=e||{},n=t.length-1,i=r.parts===!0||r.scanToEnd===!0,s=[],o=[],a=[],l=t,c=-1,u=0,p=0,d=!1,f=!1,m=!1,_=!1,I=!1,L=!1,N=!1,w=!1,q=!1,Q=!1,H=0,ne,M,ee={value:"",depth:0,isGlob:!1},_e=()=>c>=n,C=()=>l.charCodeAt(c+1),Te=()=>(ne=M,l.charCodeAt(++c));for(;c<n;){M=Te();let it;if(M===bi){N=ee.backslashes=!0,M=Te(),M===Zl&&(L=!0);continue}if(L===!0||M===Zl){for(H++;_e()!==!0&&(M=Te());){if(M===bi){N=ee.backslashes=!0,Te();continue}if(M===Zl){H++;continue}if(L!==!0&&M===Ql&&(M=Te())===Ql){if(d=ee.isBrace=!0,m=ee.isGlob=!0,Q=!0,i===!0)continue;break}if(L!==!0&&M===bO){if(d=ee.isBrace=!0,m=ee.isGlob=!0,Q=!0,i===!0)continue;break}if(M===MO&&(H--,H===0)){L=!1,d=ee.isBrace=!0,Q=!0;break}}if(i===!0)continue;break}if(M===Mf){if(s.push(c),o.push(ee),ee={value:"",depth:0,isGlob:!1},Q===!0)continue;if(ne===Ql&&c===u+1){u+=2;continue}p=c+1;continue}if(r.noext!==!0&&(M===FO||M===vO||M===ql||M===vf||M===Xl)===!0&&C()===ec){if(m=ee.isGlob=!0,_=ee.isExtglob=!0,Q=!0,M===Xl&&c===u&&(q=!0),i===!0){for(;_e()!==!0&&(M=Te());){if(M===bi){N=ee.backslashes=!0,M=Te();continue}if(M===bf){m=ee.isGlob=!0,Q=!0;break}}continue}break}if(M===ql){if(ne===ql&&(I=ee.isGlobstar=!0),m=ee.isGlob=!0,Q=!0,i===!0)continue;break}if(M===vf){if(m=ee.isGlob=!0,Q=!0,i===!0)continue;break}if(M===wO){for(;_e()!==!0&&(it=Te());){if(it===bi){N=ee.backslashes=!0,Te();continue}if(it===kO){f=ee.isBracket=!0,m=ee.isGlob=!0,Q=!0;break}}if(i===!0)continue;break}if(r.nonegate!==!0&&M===Xl&&c===u){w=ee.negated=!0,u++;continue}if(r.noparen!==!0&&M===ec){if(m=ee.isGlob=!0,i===!0){for(;_e()!==!0&&(M=Te());){if(M===ec){N=ee.backslashes=!0,M=Te();continue}if(M===bf){Q=!0;break}}continue}break}if(m===!0){if(Q=!0,i===!0)continue;break}}r.noext===!0&&(_=!1,m=!1);let ye=l,mr="",D="";u>0&&(mr=l.slice(0,u),l=l.slice(u),p-=u),ye&&m===!0&&p>0?(ye=l.slice(0,p),D=l.slice(p)):m===!0?(ye="",D=l):ye=l,ye&&ye!==""&&ye!=="/"&&ye!==l&&wf(ye.charCodeAt(ye.length-1))&&(ye=ye.slice(0,-1)),r.unescape===!0&&(D&&(D=Df.removeBackslashes(D)),ye&&N===!0&&(ye=Df.removeBackslashes(ye)));let v={prefix:mr,input:t,start:u,base:ye,glob:D,isBrace:d,isBracket:f,isGlob:m,isExtglob:_,isGlobstar:I,negated:w,negatedExtglob:q};if(r.tokens===!0&&(v.maxDepth=0,wf(M)||o.push(ee),v.tokens=o),r.parts===!0||r.tokens===!0){let it;for(let ge=0;ge<s.length;ge++){let Yt=it?it+1:u,$t=s[ge],ft=t.slice(Yt,$t);r.tokens&&(ge===0&&u!==0?(o[ge].isPrefix=!0,o[ge].value=mr):o[ge].value=ft,Ff(o[ge]),v.maxDepth+=o[ge].depth),(ge!==0||ft!=="")&&a.push(ft),it=$t}if(it&&it+1<t.length){let ge=t.slice(it+1);a.push(ge),r.tokens&&(o[o.length-1].value=ge,Ff(o[o.length-1]),v.maxDepth+=o[o.length-1].depth)}v.slashes=s,v.parts=a}return v};kf.exports=GO});var Kf=U((Mx,Bf)=>{"use strict";var wi=Di(),Qe=vi(),{MAX_LENGTH:Ks,POSIX_REGEX_SOURCE:xO,REGEX_NON_SPECIAL_CHARS:UO,REGEX_SPECIAL_CHARS_BACKREF:HO,REPLACEMENTS:xf}=wi,BO=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch{return t.map(i=>Qe.escapeRegex(i)).join("..")}return r},Un=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,Uf=t=>{let e=[],r=0,n=0,i=0,s="",o=!1;for(let a of t){if(o===!0){s+=a,o=!1;continue}if(a==="\\"){s+=a,o=!0;continue}if(a==='"'){i=i===1?0:1,s+=a;continue}if(i===0){if(a==="[")r++;else if(a==="]"&&r>0)r--;else if(r===0){if(a==="(")n++;else if(a===")"&&n>0)n--;else if(a==="|"&&n===0){e.push(s),s="";continue}}}s+=a}return e.push(s),e},KO=t=>{let e=!1;for(let r of t){if(e===!0){e=!1;continue}if(r==="\\"){e=!0;continue}if(/[?*+@!()[\]{}]/.test(r))return!1}return!0},Hf=t=>{let e=t.trim(),r=!0;for(;r===!0;)r=!1,/^@\([^\\()[\]{}|]+\)$/.test(e)&&(e=e.slice(2,-1),r=!0);if(KO(e))return e.replace(/\\(.)/g,"$1")},YO=t=>{let e=t.map(Hf).filter(Boolean);for(let r=0;r<e.length;r++)for(let n=r+1;n<e.length;n++){let i=e[r],s=e[n],o=i[0];if(!(!o||i!==o.repeat(i.length)||s!==o.repeat(s.length))&&(i===s||i.startsWith(s)||s.startsWith(i)))return!0}return!1},tc=(t,e=!0)=>{if(t[0]!=="+"&&t[0]!=="*"||t[1]!=="(")return;let r=0,n=0,i=0,s=!1;for(let o=1;o<t.length;o++){let a=t[o];if(s===!0){s=!1;continue}if(a==="\\"){s=!0;continue}if(a==='"'){i=i===1?0:1;continue}if(i!==1){if(a==="["){r++;continue}if(a==="]"&&r>0){r--;continue}if(!(r>0)){if(a==="("){n++;continue}if(a===")"&&(n--,n===0))return e===!0&&o!==t.length-1?void 0:{type:t[0],body:t.slice(2,o),end:o}}}}},$O=t=>{let e=0,r=[];for(;e<t.length;){let i=tc(t.slice(e),!1);if(!i||i.type!=="*")return;let s=Uf(i.body).map(a=>a.trim());if(s.length!==1)return;let o=Hf(s[0]);if(!o||o.length!==1)return;r.push(o),e+=i.end+1}return r.length<1?void 0:`${r.length===1?Qe.escapeRegex(r[0]):`[${r.map(i=>Qe.escapeRegex(i)).join("")}]`}*`},WO=t=>{let e=0,r=t.trim(),n=tc(r);for(;n;)e++,r=n.body.trim(),n=tc(r);return e},jO=(t,e)=>{if(e.maxExtglobRecursion===!1)return{risky:!1};let r=typeof e.maxExtglobRecursion=="number"?e.maxExtglobRecursion:wi.DEFAULT_MAX_EXTGLOB_RECURSION,n=Uf(t).map(i=>i.trim());if(n.length>1&&(n.some(i=>i==="")||n.some(i=>/^[*?]+$/.test(i))||YO(n)))return{risky:!0};for(let i of n){let s=$O(i);if(s)return{risky:!0,safeOutput:s};if(WO(i)>r)return{risky:!0}}return{risky:!1}},rc=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=xf[t]||t;let r={...e},n=typeof r.maxLength=="number"?Math.min(Ks,r.maxLength):Ks,i=t.length;if(i>n)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${n}`);let s={type:"bos",value:"",output:r.prepend||""},o=[s],a=r.capture?"":"?:",l=Qe.isWindows(e),c=wi.globChars(l),u=wi.extglobChars(c),{DOT_LITERAL:p,PLUS_LITERAL:d,SLASH_LITERAL:f,ONE_CHAR:m,DOTS_SLASH:_,NO_DOT:I,NO_DOT_SLASH:L,NO_DOTS_SLASH:N,QMARK:w,QMARK_NO_DOT:q,STAR:Q,START_ANCHOR:H}=c,ne=x=>`(${a}(?:(?!${H}${x.dot?_:p}).)*?)`,M=r.dot?"":I,ee=r.dot?w:q,_e=r.bash===!0?ne(r):Q;r.capture&&(_e=`(${_e})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let C={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};t=Qe.removePrefix(t,C),i=t.length;let Te=[],ye=[],mr=[],D=s,v,it=()=>C.index===i-1,ge=C.peek=(x=1)=>t[C.index+x],Yt=C.advance=()=>t[++C.index]||"",$t=()=>t.slice(C.index+1),ft=(x="",Ne=0)=>{C.consumed+=x,C.index+=Ne},as=x=>{C.output+=x.output!=null?x.output:x.value,ft(x.value)},DT=()=>{let x=1;for(;ge()==="!"&&(ge(2)!=="("||ge(3)==="?");)Yt(),C.start++,x++;return x%2===0?!1:(C.negated=!0,C.start++,!0)},ls=x=>{C[x]++,mr.push(x)},_r=x=>{C[x]--,mr.pop()},le=x=>{if(D.type==="globstar"){let Ne=C.braces>0&&(x.type==="comma"||x.type==="brace"),G=x.extglob===!0||Te.length&&(x.type==="pipe"||x.type==="paren");x.type!=="slash"&&x.type!=="paren"&&!Ne&&!G&&(C.output=C.output.slice(0,-D.output.length),D.type="star",D.value="*",D.output=_e,C.output+=D.output)}if(Te.length&&x.type!=="paren"&&(Te[Te.length-1].inner+=x.value),(x.value||x.output)&&as(x),D&&D.type==="text"&&x.type==="text"){D.value+=x.value,D.output=(D.output||"")+x.value;return}x.prev=D,o.push(x),D=x},cs=(x,Ne)=>{let G={...u[Ne],conditions:1,inner:""};G.prev=D,G.parens=C.parens,G.output=C.output,G.startIndex=C.index,G.tokensIndex=o.length;let ae=(r.capture?"(":"")+G.open;ls("parens"),le({type:x,value:Ne,output:C.output?"":m}),le({type:"paren",extglob:!0,value:Yt(),output:ae}),Te.push(G)},vT=x=>{let Ne=t.slice(x.startIndex,C.index+1),G=t.slice(x.startIndex+2,C.index),ae=jO(G,r);if((x.type==="plus"||x.type==="star")&&ae.risky){let Ae=ae.safeOutput?(x.output?"":m)+(r.capture?`(${ae.safeOutput})`:ae.safeOutput):void 0,Wt=o[x.tokensIndex];Wt.type="text",Wt.value=Ne,Wt.output=Ae||Qe.escapeRegex(Ne);for(let jt=x.tokensIndex+1;jt<o.length;jt++)o[jt].value="",o[jt].output="",delete o[jt].suffix;C.output=x.output+Wt.output,C.backtrack=!0,le({type:"paren",extglob:!0,value:v,output:""}),_r("parens");return}let Ie=x.close+(r.capture?")":""),Ue;if(x.type==="negate"){let Ae=_e;if(x.inner&&x.inner.length>1&&x.inner.includes("/")&&(Ae=ne(r)),(Ae!==_e||it()||/^\)+$/.test($t()))&&(Ie=x.close=`)$))${Ae}`),x.inner.includes("*")&&(Ue=$t())&&/^\.[^\\/.]+$/.test(Ue)){let Wt=rc(Ue,{...e,fastpaths:!1}).output;Ie=x.close=`)${Wt})${Ae})`}x.prev.type==="bos"&&(C.negatedExtglob=!0)}le({type:"paren",extglob:!0,value:v,output:Ie}),_r("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let x=!1,Ne=t.replace(HO,(G,ae,Ie,Ue,Ae,Wt)=>Ue==="\\"?(x=!0,G):Ue==="?"?ae?ae+Ue+(Ae?w.repeat(Ae.length):""):Wt===0?ee+(Ae?w.repeat(Ae.length):""):w.repeat(Ie.length):Ue==="."?p.repeat(Ie.length):Ue==="*"?ae?ae+Ue+(Ae?_e:""):_e:ae?G:`\\${G}`);return x===!0&&(r.unescape===!0?Ne=Ne.replace(/\\/g,""):Ne=Ne.replace(/\\+/g,G=>G.length%2===0?"\\\\":G?"\\":"")),Ne===t&&r.contains===!0?(C.output=t,C):(C.output=Qe.wrapOutput(Ne,C,e),C)}for(;!it();){if(v=Yt(),v==="\0")continue;if(v==="\\"){let G=ge();if(G==="/"&&r.bash!==!0||G==="."||G===";")continue;if(!G){v+="\\",le({type:"text",value:v});continue}let ae=/^\\+/.exec($t()),Ie=0;if(ae&&ae[0].length>2&&(Ie=ae[0].length,C.index+=Ie,Ie%2!==0&&(v+="\\")),r.unescape===!0?v=Yt():v+=Yt(),C.brackets===0){le({type:"text",value:v});continue}}if(C.brackets>0&&(v!=="]"||D.value==="["||D.value==="[^")){if(r.posix!==!1&&v===":"){let G=D.value.slice(1);if(G.includes("[")&&(D.posix=!0,G.includes(":"))){let ae=D.value.lastIndexOf("["),Ie=D.value.slice(0,ae),Ue=D.value.slice(ae+2),Ae=xO[Ue];if(Ae){D.value=Ie+Ae,C.backtrack=!0,Yt(),!s.output&&o.indexOf(D)===1&&(s.output=m);continue}}}(v==="["&&ge()!==":"||v==="-"&&ge()==="]")&&(v=`\\${v}`),v==="]"&&(D.value==="["||D.value==="[^")&&(v=`\\${v}`),r.posix===!0&&v==="!"&&D.value==="["&&(v="^"),D.value+=v,as({value:v});continue}if(C.quotes===1&&v!=='"'){v=Qe.escapeRegex(v),D.value+=v,as({value:v});continue}if(v==='"'){C.quotes=C.quotes===1?0:1,r.keepQuotes===!0&&le({type:"text",value:v});continue}if(v==="("){ls("parens"),le({type:"paren",value:v});continue}if(v===")"){if(C.parens===0&&r.strictBrackets===!0)throw new SyntaxError(Un("opening","("));let G=Te[Te.length-1];if(G&&C.parens===G.parens+1){vT(Te.pop());continue}le({type:"paren",value:v,output:C.parens?")":"\\)"}),_r("parens");continue}if(v==="["){if(r.nobracket===!0||!$t().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(Un("closing","]"));v=`\\${v}`}else ls("brackets");le({type:"bracket",value:v});continue}if(v==="]"){if(r.nobracket===!0||D&&D.type==="bracket"&&D.value.length===1){le({type:"text",value:v,output:`\\${v}`});continue}if(C.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(Un("opening","["));le({type:"text",value:v,output:`\\${v}`});continue}_r("brackets");let G=D.value.slice(1);if(D.posix!==!0&&G[0]==="^"&&!G.includes("/")&&(v=`/${v}`),D.value+=v,as({value:v}),r.literalBrackets===!1||Qe.hasRegexChars(G))continue;let ae=Qe.escapeRegex(D.value);if(C.output=C.output.slice(0,-D.value.length),r.literalBrackets===!0){C.output+=ae,D.value=ae;continue}D.value=`(${a}${ae}|${D.value})`,C.output+=D.value;continue}if(v==="{"&&r.nobrace!==!0){ls("braces");let G={type:"brace",value:v,output:"(",outputIndex:C.output.length,tokensIndex:C.tokens.length};ye.push(G),le(G);continue}if(v==="}"){let G=ye[ye.length-1];if(r.nobrace===!0||!G){le({type:"text",value:v,output:v});continue}let ae=")";if(G.dots===!0){let Ie=o.slice(),Ue=[];for(let Ae=Ie.length-1;Ae>=0&&(o.pop(),Ie[Ae].type!=="brace");Ae--)Ie[Ae].type!=="dots"&&Ue.unshift(Ie[Ae].value);ae=BO(Ue,r),C.backtrack=!0}if(G.comma!==!0&&G.dots!==!0){let Ie=C.output.slice(0,G.outputIndex),Ue=C.tokens.slice(G.tokensIndex);G.value=G.output="\\{",v=ae="\\}",C.output=Ie;for(let Ae of Ue)C.output+=Ae.output||Ae.value}le({type:"brace",value:v,output:ae}),_r("braces"),ye.pop();continue}if(v==="|"){Te.length>0&&Te[Te.length-1].conditions++,le({type:"text",value:v});continue}if(v===","){let G=v,ae=ye[ye.length-1];ae&&mr[mr.length-1]==="braces"&&(ae.comma=!0,G="|"),le({type:"comma",value:v,output:G});continue}if(v==="/"){if(D.type==="dot"&&C.index===C.start+1){C.start=C.index+1,C.consumed="",C.output="",o.pop(),D=s;continue}le({type:"slash",value:v,output:f});continue}if(v==="."){if(C.braces>0&&D.type==="dot"){D.value==="."&&(D.output=p);let G=ye[ye.length-1];D.type="dots",D.output+=v,D.value+=v,G.dots=!0;continue}if(C.braces+C.parens===0&&D.type!=="bos"&&D.type!=="slash"){le({type:"text",value:v,output:p});continue}le({type:"dot",value:v,output:p});continue}if(v==="?"){if(!(D&&D.value==="(")&&r.noextglob!==!0&&ge()==="("&&ge(2)!=="?"){cs("qmark",v);continue}if(D&&D.type==="paren"){let ae=ge(),Ie=v;if(ae==="<"&&!Qe.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(D.value==="("&&!/[!=<:]/.test(ae)||ae==="<"&&!/<([!=]|\w+>)/.test($t()))&&(Ie=`\\${v}`),le({type:"text",value:v,output:Ie});continue}if(r.dot!==!0&&(D.type==="slash"||D.type==="bos")){le({type:"qmark",value:v,output:q});continue}le({type:"qmark",value:v,output:w});continue}if(v==="!"){if(r.noextglob!==!0&&ge()==="("&&(ge(2)!=="?"||!/[!=<:]/.test(ge(3)))){cs("negate",v);continue}if(r.nonegate!==!0&&C.index===0){DT();continue}}if(v==="+"){if(r.noextglob!==!0&&ge()==="("&&ge(2)!=="?"){cs("plus",v);continue}if(D&&D.value==="("||r.regex===!1){le({type:"plus",value:v,output:d});continue}if(D&&(D.type==="bracket"||D.type==="paren"||D.type==="brace")||C.parens>0){le({type:"plus",value:v});continue}le({type:"plus",value:d});continue}if(v==="@"){if(r.noextglob!==!0&&ge()==="("&&ge(2)!=="?"){le({type:"at",extglob:!0,value:v,output:""});continue}le({type:"text",value:v});continue}if(v!=="*"){(v==="$"||v==="^")&&(v=`\\${v}`);let G=UO.exec($t());G&&(v+=G[0],C.index+=G[0].length),le({type:"text",value:v});continue}if(D&&(D.type==="globstar"||D.star===!0)){D.type="star",D.star=!0,D.value+=v,D.output=_e,C.backtrack=!0,C.globstar=!0,ft(v);continue}let x=$t();if(r.noextglob!==!0&&/^\([^?]/.test(x)){cs("star",v);continue}if(D.type==="star"){if(r.noglobstar===!0){ft(v);continue}let G=D.prev,ae=G.prev,Ie=G.type==="slash"||G.type==="bos",Ue=ae&&(ae.type==="star"||ae.type==="globstar");if(r.bash===!0&&(!Ie||x[0]&&x[0]!=="/")){le({type:"star",value:v,output:""});continue}let Ae=C.braces>0&&(G.type==="comma"||G.type==="brace"),Wt=Te.length&&(G.type==="pipe"||G.type==="paren");if(!Ie&&G.type!=="paren"&&!Ae&&!Wt){le({type:"star",value:v,output:""});continue}for(;x.slice(0,3)==="/**";){let jt=t[C.index+4];if(jt&&jt!=="/")break;x=x.slice(3),ft("/**",3)}if(G.type==="bos"&&it()){D.type="globstar",D.value+=v,D.output=ne(r),C.output=D.output,C.globstar=!0,ft(v);continue}if(G.type==="slash"&&G.prev.type!=="bos"&&!Ue&&it()){C.output=C.output.slice(0,-(G.output+D.output).length),G.output=`(?:${G.output}`,D.type="globstar",D.output=ne(r)+(r.strictSlashes?")":"|$)"),D.value+=v,C.globstar=!0,C.output+=G.output+D.output,ft(v);continue}if(G.type==="slash"&&G.prev.type!=="bos"&&x[0]==="/"){let jt=x[1]!==void 0?"|$":"";C.output=C.output.slice(0,-(G.output+D.output).length),G.output=`(?:${G.output}`,D.type="globstar",D.output=`${ne(r)}${f}|${f}${jt})`,D.value+=v,C.output+=G.output+D.output,C.globstar=!0,ft(v+Yt()),le({type:"slash",value:"/",output:""});continue}if(G.type==="bos"&&x[0]==="/"){D.type="globstar",D.value+=v,D.output=`(?:^|${f}|${ne(r)}${f})`,C.output=D.output,C.globstar=!0,ft(v+Yt()),le({type:"slash",value:"/",output:""});continue}C.output=C.output.slice(0,-D.output.length),D.type="globstar",D.output=ne(r),D.value+=v,C.output+=D.output,C.globstar=!0,ft(v);continue}let Ne={type:"star",value:v,output:_e};if(r.bash===!0){Ne.output=".*?",(D.type==="bos"||D.type==="slash")&&(Ne.output=M+Ne.output),le(Ne);continue}if(D&&(D.type==="bracket"||D.type==="paren")&&r.regex===!0){Ne.output=v,le(Ne);continue}(C.index===C.start||D.type==="slash"||D.type==="dot")&&(D.type==="dot"?(C.output+=L,D.output+=L):r.dot===!0?(C.output+=N,D.output+=N):(C.output+=M,D.output+=M),ge()!=="*"&&(C.output+=m,D.output+=m)),le(Ne)}for(;C.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(Un("closing","]"));C.output=Qe.escapeLast(C.output,"["),_r("brackets")}for(;C.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(Un("closing",")"));C.output=Qe.escapeLast(C.output,"("),_r("parens")}for(;C.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(Un("closing","}"));C.output=Qe.escapeLast(C.output,"{"),_r("braces")}if(r.strictSlashes!==!0&&(D.type==="star"||D.type==="bracket")&&le({type:"maybe_slash",value:"",output:`${f}?`}),C.backtrack===!0){C.output="";for(let x of C.tokens)C.output+=x.output!=null?x.output:x.value,x.suffix&&(C.output+=x.suffix)}return C};rc.fastpaths=(t,e)=>{let r={...e},n=typeof r.maxLength=="number"?Math.min(Ks,r.maxLength):Ks,i=t.length;if(i>n)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${n}`);t=xf[t]||t;let s=Qe.isWindows(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:l,DOTS_SLASH:c,NO_DOT:u,NO_DOTS:p,NO_DOTS_SLASH:d,STAR:f,START_ANCHOR:m}=wi.globChars(s),_=r.dot?p:u,I=r.dot?d:u,L=r.capture?"":"?:",N={negated:!1,prefix:""},w=r.bash===!0?".*?":f;r.capture&&(w=`(${w})`);let q=M=>M.noglobstar===!0?w:`(${L}(?:(?!${m}${M.dot?c:o}).)*?)`,Q=M=>{switch(M){case"*":return`${_}${l}${w}`;case".*":return`${o}${l}${w}`;case"*.*":return`${_}${w}${o}${l}${w}`;case"*/*":return`${_}${w}${a}${l}${I}${w}`;case"**":return _+q(r);case"**/*":return`(?:${_}${q(r)}${a})?${I}${l}${w}`;case"**/*.*":return`(?:${_}${q(r)}${a})?${I}${w}${o}${l}${w}`;case"**/.*":return`(?:${_}${q(r)}${a})?${o}${l}${w}`;default:{let ee=/^(.*?)\.(\w+)$/.exec(M);if(!ee)return;let _e=Q(ee[1]);return _e?_e+o+ee[2]:void 0}}},H=Qe.removePrefix(t,N),ne=Q(H);return ne&&r.strictSlashes!==!0&&(ne+=`${a}?`),ne};Bf.exports=rc});var $f=U((kx,Yf)=>{"use strict";var VO=ve("path"),zO=Gf(),nc=Kf(),ic=vi(),JO=Di(),qO=t=>t&&typeof t=="object"&&!Array.isArray(t),Fe=(t,e,r=!1)=>{if(Array.isArray(t)){let u=t.map(d=>Fe(d,e,r));return d=>{for(let f of u){let m=f(d);if(m)return m}return!1}}let n=qO(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!n)throw new TypeError("Expected pattern to be a non-empty string");let i=e||{},s=ic.isWindows(e),o=n?Fe.compileRe(t,e):Fe.makeRe(t,e,!1,!0),a=o.state;delete o.state;let l=()=>!1;if(i.ignore){let u={...e,ignore:null,onMatch:null,onResult:null};l=Fe(i.ignore,u,r)}let c=(u,p=!1)=>{let{isMatch:d,match:f,output:m}=Fe.test(u,o,e,{glob:t,posix:s}),_={glob:t,state:a,regex:o,posix:s,input:u,output:m,match:f,isMatch:d};return typeof i.onResult=="function"&&i.onResult(_),d===!1?(_.isMatch=!1,p?_:!1):l(u)?(typeof i.onIgnore=="function"&&i.onIgnore(_),_.isMatch=!1,p?_:!1):(typeof i.onMatch=="function"&&i.onMatch(_),p?_:!0)};return r&&(c.state=a),c};Fe.test=(t,e,r,{glob:n,posix:i}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let s=r||{},o=s.format||(i?ic.toPosixSlashes:null),a=t===n,l=a&&o?o(t):t;return a===!1&&(l=o?o(t):t,a=l===n),(a===!1||s.capture===!0)&&(s.matchBase===!0||s.basename===!0?a=Fe.matchBase(t,e,r,i):a=e.exec(l)),{isMatch:!!a,match:a,output:l}};Fe.matchBase=(t,e,r,n=ic.isWindows(r))=>(e instanceof RegExp?e:Fe.makeRe(e,r)).test(VO.basename(t));Fe.isMatch=(t,e,r)=>Fe(e,r)(t);Fe.parse=(t,e)=>Array.isArray(t)?t.map(r=>Fe.parse(r,e)):nc(t,{...e,fastpaths:!1});Fe.scan=(t,e)=>zO(t,e);Fe.compileRe=(t,e,r=!1,n=!1)=>{if(r===!0)return t.output;let i=e||{},s=i.contains?"":"^",o=i.contains?"":"$",a=`${s}(?:${t.output})${o}`;t&&t.negated===!0&&(a=`^(?!${a}).*$`);let l=Fe.toRegex(a,e);return n===!0&&(l.state=t),l};Fe.makeRe=(t,e={},r=!1,n=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let i={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(i.output=nc.fastpaths(t,e)),i.output||(i=nc(t,e)),Fe.compileRe(i,e,r,n)};Fe.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Fe.constants=JO;Yf.exports=Fe});var jf=U((Gx,Wf)=>{"use strict";Wf.exports=$f()});var Xf=U((xx,Qf)=>{"use strict";var zf=ve("util"),Jf=yf(),qt=jf(),sc=vi(),Vf=t=>t===""||t==="./",qf=t=>{let e=t.indexOf("{");return e>-1&&t.indexOf("}",e)>-1},Le=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let n=new Set,i=new Set,s=new Set,o=0,a=u=>{s.add(u.output),r&&r.onResult&&r.onResult(u)};for(let u=0;u<e.length;u++){let p=qt(String(e[u]),{...r,onResult:a},!0),d=p.state.negated||p.state.negatedExtglob;d&&o++;for(let f of t){let m=p(f,!0);(d?!m.isMatch:m.isMatch)&&(d?n.add(m.output):(n.delete(m.output),i.add(m.output)))}}let c=(o===e.length?[...s]:[...i]).filter(u=>!n.has(u));if(r&&c.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(u=>u.replace(/\\/g,"")):e}return c};Le.match=Le;Le.matcher=(t,e)=>qt(t,e);Le.isMatch=(t,e,r)=>qt(e,r)(t);Le.any=Le.isMatch;Le.not=(t,e,r={})=>{e=[].concat(e).map(String);let n=new Set,i=[],s=a=>{r.onResult&&r.onResult(a),i.push(a.output)},o=new Set(Le(t,e,{...r,onResult:s}));for(let a of i)o.has(a)||n.add(a);return[...n]};Le.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${zf.inspect(t)}"`);if(Array.isArray(e))return e.some(n=>Le.contains(t,n,r));if(typeof e=="string"){if(Vf(t)||Vf(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return Le.isMatch(t,e,{...r,contains:!0})};Le.matchKeys=(t,e,r)=>{if(!sc.isObject(t))throw new TypeError("Expected the first argument to be an object");let n=Le(Object.keys(t),e,r),i={};for(let s of n)i[s]=t[s];return i};Le.some=(t,e,r)=>{let n=[].concat(t);for(let i of[].concat(e)){let s=qt(String(i),r);if(n.some(o=>s(o)))return!0}return!1};Le.every=(t,e,r)=>{let n=[].concat(t);for(let i of[].concat(e)){let s=qt(String(i),r);if(!n.every(o=>s(o)))return!1}return!0};Le.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${zf.inspect(t)}"`);return[].concat(e).every(n=>qt(n,r)(t))};Le.capture=(t,e,r)=>{let n=sc.isWindows(r),s=qt.makeRe(String(t),{...r,capture:!0}).exec(n?sc.toPosixSlashes(e):e);if(s)return s.slice(1).map(o=>o===void 0?"":o)};Le.makeRe=(...t)=>qt.makeRe(...t);Le.scan=(...t)=>qt.scan(...t);Le.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let i of Jf(String(n),e))r.push(qt.parse(i,e));return r};Le.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!qf(t)?[t]:Jf(t,e)};Le.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return Le.braces(t,{...e,expand:!0})};Le.hasBraces=qf;Qf.exports=Le});var lh=U(Z=>{"use strict";Object.defineProperty(Z,"__esModule",{value:!0});Z.isAbsolute=Z.partitionAbsoluteAndRelative=Z.removeDuplicateSlashes=Z.matchAny=Z.convertPatternsToRe=Z.makeRe=Z.getPatternParts=Z.expandBraceExpansion=Z.expandPatternsWithBraceExpansion=Z.isAffectDepthOfReadingPattern=Z.endsWithSlashGlobStar=Z.hasGlobStar=Z.getBaseDirectory=Z.isPatternRelatedToParentDirectory=Z.getPatternsOutsideCurrentDirectory=Z.getPatternsInsideCurrentDirectory=Z.getPositivePatterns=Z.getNegativePatterns=Z.isPositivePattern=Z.isNegativePattern=Z.convertToNegativePattern=Z.convertToPositivePattern=Z.isDynamicPattern=Z.isStaticPattern=void 0;var Zf=ve("path"),QO=Bg(),oc=Xf(),eh="**",XO="\\",ZO=/[*?]|^!/,ey=/\[[^[]*]/,ty=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,ry=/[!*+?@]\([^(]*\)/,ny=/,|\.\./,iy=/(?!^)\/{2,}/g;function th(t,e={}){return!rh(t,e)}Z.isStaticPattern=th;function rh(t,e={}){return t===""?!1:!!(e.caseSensitiveMatch===!1||t.includes(XO)||ZO.test(t)||ey.test(t)||ty.test(t)||e.extglob!==!1&&ry.test(t)||e.braceExpansion!==!1&&sy(t))}Z.isDynamicPattern=rh;function sy(t){let e=t.indexOf("{");if(e===-1)return!1;let r=t.indexOf("}",e+1);if(r===-1)return!1;let n=t.slice(e,r);return ny.test(n)}function oy(t){return Ys(t)?t.slice(1):t}Z.convertToPositivePattern=oy;function ay(t){return"!"+t}Z.convertToNegativePattern=ay;function Ys(t){return t.startsWith("!")&&t[1]!=="("}Z.isNegativePattern=Ys;function nh(t){return!Ys(t)}Z.isPositivePattern=nh;function ly(t){return t.filter(Ys)}Z.getNegativePatterns=ly;function cy(t){return t.filter(nh)}Z.getPositivePatterns=cy;function uy(t){return t.filter(e=>!ac(e))}Z.getPatternsInsideCurrentDirectory=uy;function dy(t){return t.filter(ac)}Z.getPatternsOutsideCurrentDirectory=dy;function ac(t){return t.startsWith("..")||t.startsWith("./..")}Z.isPatternRelatedToParentDirectory=ac;function py(t){return QO(t,{flipBackslashes:!1})}Z.getBaseDirectory=py;function gy(t){return t.includes(eh)}Z.hasGlobStar=gy;function ih(t){return t.endsWith("/"+eh)}Z.endsWithSlashGlobStar=ih;function fy(t){let e=Zf.basename(t);return ih(t)||th(e)}Z.isAffectDepthOfReadingPattern=fy;function hy(t){return t.reduce((e,r)=>e.concat(sh(r)),[])}Z.expandPatternsWithBraceExpansion=hy;function sh(t){let e=oc.braces(t,{expand:!0,nodupes:!0,keepEscaping:!0});return e.sort((r,n)=>r.length-n.length),e.filter(r=>r!=="")}Z.expandBraceExpansion=sh;function my(t,e){let{parts:r}=oc.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.length===0&&(r=[t]),r[0].startsWith("/")&&(r[0]=r[0].slice(1),r.unshift("")),r}Z.getPatternParts=my;function oh(t,e){return oc.makeRe(t,e)}Z.makeRe=oh;function _y(t,e){return t.map(r=>oh(r,e))}Z.convertPatternsToRe=_y;function Ey(t,e){return e.some(r=>r.test(t))}Z.matchAny=Ey;function Sy(t){return t.replace(iy,"/")}Z.removeDuplicateSlashes=Sy;function Ty(t){let e=[],r=[];for(let n of t)ah(n)?e.push(n):r.push(n);return[e,r]}Z.partitionAbsoluteAndRelative=Ty;function ah(t){return Zf.isAbsolute(t)}Z.isAbsolute=ah});var ph=U((Hx,dh)=>{"use strict";var Ay=ve("stream"),ch=Ay.PassThrough,Ry=Array.prototype.slice;dh.exports=Oy;function Oy(){let t=[],e=Ry.call(arguments),r=!1,n=e[e.length-1];n&&!Array.isArray(n)&&n.pipe==null?e.pop():n={};let i=n.end!==!1,s=n.pipeError===!0;n.objectMode==null&&(n.objectMode=!0),n.highWaterMark==null&&(n.highWaterMark=64*1024);let o=ch(n);function a(){for(let u=0,p=arguments.length;u<p;u++)t.push(uh(arguments[u],n));return l(),this}function l(){if(r)return;r=!0;let u=t.shift();if(!u){process.nextTick(c);return}Array.isArray(u)||(u=[u]);let p=u.length+1;function d(){--p>0||(r=!1,l())}function f(m){function _(){m.removeListener("merge2UnpipeEnd",_),m.removeListener("end",_),s&&m.removeListener("error",I),d()}function I(L){o.emit("error",L)}if(m._readableState.endEmitted)return d();m.on("merge2UnpipeEnd",_),m.on("end",_),s&&m.on("error",I),m.pipe(o,{end:!1}),m.resume()}for(let m=0;m<u.length;m++)f(u[m]);d()}function c(){r=!1,o.emit("queueDrain"),i&&o.end()}return o.setMaxListeners(0),o.add=a,o.on("unpipe",function(u){u.emit("merge2UnpipeEnd")}),e.length&&a.apply(null,e),o}function uh(t,e){if(Array.isArray(t))for(let r=0,n=t.length;r<n;r++)t[r]=uh(t[r],e);else{if(!t._readableState&&t.pipe&&(t=t.pipe(ch(e))),!t._readableState||!t.pause||!t.pipe)throw new Error("Only readable stream can be merged.");t.pause()}return t}});var fh=U($s=>{"use strict";Object.defineProperty($s,"__esModule",{value:!0});$s.merge=void 0;var yy=ph();function Iy(t){let e=yy(t);return t.forEach(r=>{r.once("error",n=>e.emit("error",n))}),e.once("close",()=>gh(t)),e.once("end",()=>gh(t)),e}$s.merge=Iy;function gh(t){t.forEach(e=>e.emit("close"))}});var hh=U(Hn=>{"use strict";Object.defineProperty(Hn,"__esModule",{value:!0});Hn.isEmpty=Hn.isString=void 0;function Ly(t){return typeof t=="string"}Hn.isString=Ly;function Ny(t){return t===""}Hn.isEmpty=Ny});var cr=U(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.string=Xe.stream=Xe.pattern=Xe.path=Xe.fs=Xe.errno=Xe.array=void 0;var Cy=Cg();Xe.array=Cy;var Py=Pg();Xe.errno=Py;var Dy=Dg();Xe.fs=Dy;var vy=Fg();Xe.path=vy;var by=lh();Xe.pattern=by;var wy=fh();Xe.stream=wy;var Fy=hh();Xe.string=Fy});var Sh=U(Ze=>{"use strict";Object.defineProperty(Ze,"__esModule",{value:!0});Ze.convertPatternGroupToTask=Ze.convertPatternGroupsToTasks=Ze.groupPatternsByBaseDirectory=Ze.getNegativePatternsAsPositive=Ze.getPositivePatterns=Ze.convertPatternsToTasks=Ze.generate=void 0;var kt=cr();function My(t,e){let r=mh(t,e),n=mh(e.ignore,e),i=_h(r),s=Eh(r,n),o=i.filter(u=>kt.pattern.isStaticPattern(u,e)),a=i.filter(u=>kt.pattern.isDynamicPattern(u,e)),l=lc(o,s,!1),c=lc(a,s,!0);return l.concat(c)}Ze.generate=My;function mh(t,e){let r=t;return e.braceExpansion&&(r=kt.pattern.expandPatternsWithBraceExpansion(r)),e.baseNameMatch&&(r=r.map(n=>n.includes("/")?n:`**/${n}`)),r.map(n=>kt.pattern.removeDuplicateSlashes(n))}function lc(t,e,r){let n=[],i=kt.pattern.getPatternsOutsideCurrentDirectory(t),s=kt.pattern.getPatternsInsideCurrentDirectory(t),o=cc(i),a=cc(s);return n.push(...uc(o,e,r)),"."in a?n.push(dc(".",s,e,r)):n.push(...uc(a,e,r)),n}Ze.convertPatternsToTasks=lc;function _h(t){return kt.pattern.getPositivePatterns(t)}Ze.getPositivePatterns=_h;function Eh(t,e){return kt.pattern.getNegativePatterns(t).concat(e).map(kt.pattern.convertToPositivePattern)}Ze.getNegativePatternsAsPositive=Eh;function cc(t){let e={};return t.reduce((r,n)=>{let i=kt.pattern.getBaseDirectory(n);return i in r?r[i].push(n):r[i]=[n],r},e)}Ze.groupPatternsByBaseDirectory=cc;function uc(t,e,r){return Object.keys(t).map(n=>dc(n,t[n],e,r))}Ze.convertPatternGroupsToTasks=uc;function dc(t,e,r,n){return{dynamic:n,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(kt.pattern.convertToNegativePattern))}}Ze.convertPatternGroupToTask=dc});var Ah=U(Ws=>{"use strict";Object.defineProperty(Ws,"__esModule",{value:!0});Ws.read=void 0;function ky(t,e,r){e.fs.lstat(t,(n,i)=>{if(n!==null){Th(r,n);return}if(!i.isSymbolicLink()||!e.followSymbolicLink){pc(r,i);return}e.fs.stat(t,(s,o)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){Th(r,s);return}pc(r,i);return}e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),pc(r,o)})})}Ws.read=ky;function Th(t,e){t(e)}function pc(t,e){t(null,e)}});var Rh=U(js=>{"use strict";Object.defineProperty(js,"__esModule",{value:!0});js.read=void 0;function Gy(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let n=e.fs.statSync(t);return e.markSymbolicLink&&(n.isSymbolicLink=()=>!0),n}catch(n){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw n}}js.read=Gy});var Oh=U(Dr=>{"use strict";Object.defineProperty(Dr,"__esModule",{value:!0});Dr.createFileSystemAdapter=Dr.FILE_SYSTEM_ADAPTER=void 0;var Vs=ve("fs");Dr.FILE_SYSTEM_ADAPTER={lstat:Vs.lstat,stat:Vs.stat,lstatSync:Vs.lstatSync,statSync:Vs.statSync};function xy(t){return t===void 0?Dr.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Dr.FILE_SYSTEM_ADAPTER),t)}Dr.createFileSystemAdapter=xy});var yh=U(fc=>{"use strict";Object.defineProperty(fc,"__esModule",{value:!0});var Uy=Oh(),gc=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=Uy.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e??r}};fc.default=gc});var cn=U(vr=>{"use strict";Object.defineProperty(vr,"__esModule",{value:!0});vr.statSync=vr.stat=vr.Settings=void 0;var Ih=Ah(),Hy=Rh(),hc=yh();vr.Settings=hc.default;function By(t,e,r){if(typeof e=="function"){Ih.read(t,mc(),e);return}Ih.read(t,mc(e),r)}vr.stat=By;function Ky(t,e){let r=mc(e);return Hy.read(t,r)}vr.statSync=Ky;function mc(t={}){return t instanceof hc.default?t:new hc.default(t)}});var Ch=U((qx,Nh)=>{"use strict";var Lh;Nh.exports=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window<"u"?window:global):t=>(Lh||(Lh=Promise.resolve())).then(t).catch(e=>setTimeout(()=>{throw e},0))});var Dh=U((Qx,Ph)=>{"use strict";Ph.exports=$y;var Yy=Ch();function $y(t,e){let r,n,i,s=!0;Array.isArray(t)?(r=[],n=t.length):(i=Object.keys(t),r={},n=i.length);function o(l){function c(){e&&e(l,r),e=null}s?Yy(c):c()}function a(l,c,u){r[l]=u,(--n===0||c)&&o(c)}n?i?i.forEach(function(l){t[l](function(c,u){a(l,c,u)})}):t.forEach(function(l,c){l(function(u,p){a(c,u,p)})}):o(null),s=!1}});var _c=U(Js=>{"use strict";Object.defineProperty(Js,"__esModule",{value:!0});Js.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var zs=process.versions.node.split(".");if(zs[0]===void 0||zs[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var vh=Number.parseInt(zs[0],10),Wy=Number.parseInt(zs[1],10),bh=10,jy=10,Vy=vh>bh,zy=vh===bh&&Wy>=jy;Js.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Vy||zy});var wh=U(qs=>{"use strict";Object.defineProperty(qs,"__esModule",{value:!0});qs.createDirentFromStats=void 0;var Ec=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function Jy(t,e){return new Ec(t,e)}qs.createDirentFromStats=Jy});var Sc=U(Qs=>{"use strict";Object.defineProperty(Qs,"__esModule",{value:!0});Qs.fs=void 0;var qy=wh();Qs.fs=qy});var Tc=U(Xs=>{"use strict";Object.defineProperty(Xs,"__esModule",{value:!0});Xs.joinPathSegments=void 0;function Qy(t,e,r){return t.endsWith(r)?t+e:t+r+e}Xs.joinPathSegments=Qy});var Uh=U(br=>{"use strict";Object.defineProperty(br,"__esModule",{value:!0});br.readdir=br.readdirWithFileTypes=br.read=void 0;var Xy=cn(),Fh=Dh(),Zy=_c(),Mh=Sc(),kh=Tc();function eI(t,e,r){if(!e.stats&&Zy.IS_SUPPORT_READDIR_WITH_FILE_TYPES){Gh(t,e,r);return}xh(t,e,r)}br.read=eI;function Gh(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(n,i)=>{if(n!==null){Zs(r,n);return}let s=i.map(a=>({dirent:a,name:a.name,path:kh.joinPathSegments(t,a.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){Ac(r,s);return}let o=s.map(a=>tI(a,e));Fh(o,(a,l)=>{if(a!==null){Zs(r,a);return}Ac(r,l)})})}br.readdirWithFileTypes=Gh;function tI(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(n,i)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){r(n);return}r(null,t);return}t.dirent=Mh.fs.createDirentFromStats(t.name,i),r(null,t)})}}function xh(t,e,r){e.fs.readdir(t,(n,i)=>{if(n!==null){Zs(r,n);return}let s=i.map(o=>{let a=kh.joinPathSegments(t,o,e.pathSegmentSeparator);return l=>{Xy.stat(a,e.fsStatSettings,(c,u)=>{if(c!==null){l(c);return}let p={name:o,path:a,dirent:Mh.fs.createDirentFromStats(o,u)};e.stats&&(p.stats=u),l(null,p)})}});Fh(s,(o,a)=>{if(o!==null){Zs(r,o);return}Ac(r,a)})})}br.readdir=xh;function Zs(t,e){t(e)}function Ac(t,e){t(null,e)}});var $h=U(wr=>{"use strict";Object.defineProperty(wr,"__esModule",{value:!0});wr.readdir=wr.readdirWithFileTypes=wr.read=void 0;var rI=cn(),nI=_c(),Hh=Sc(),Bh=Tc();function iI(t,e){return!e.stats&&nI.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Kh(t,e):Yh(t,e)}wr.read=iI;function Kh(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(n=>{let i={dirent:n,name:n.name,path:Bh.joinPathSegments(t,n.name,e.pathSegmentSeparator)};if(i.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let s=e.fs.statSync(i.path);i.dirent=Hh.fs.createDirentFromStats(i.name,s)}catch(s){if(e.throwErrorOnBrokenSymbolicLink)throw s}return i})}wr.readdirWithFileTypes=Kh;function Yh(t,e){return e.fs.readdirSync(t).map(n=>{let i=Bh.joinPathSegments(t,n,e.pathSegmentSeparator),s=rI.statSync(i,e.fsStatSettings),o={name:n,path:i,dirent:Hh.fs.createDirentFromStats(n,s)};return e.stats&&(o.stats=s),o})}wr.readdir=Yh});var Wh=U(Fr=>{"use strict";Object.defineProperty(Fr,"__esModule",{value:!0});Fr.createFileSystemAdapter=Fr.FILE_SYSTEM_ADAPTER=void 0;var Bn=ve("fs");Fr.FILE_SYSTEM_ADAPTER={lstat:Bn.lstat,stat:Bn.stat,lstatSync:Bn.lstatSync,statSync:Bn.statSync,readdir:Bn.readdir,readdirSync:Bn.readdirSync};function sI(t){return t===void 0?Fr.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Fr.FILE_SYSTEM_ADAPTER),t)}Fr.createFileSystemAdapter=sI});var jh=U(Oc=>{"use strict";Object.defineProperty(Oc,"__esModule",{value:!0});var oI=ve("path"),aI=cn(),lI=Wh(),Rc=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=lI.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,oI.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new aI.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};Oc.default=Rc});var eo=U(Mr=>{"use strict";Object.defineProperty(Mr,"__esModule",{value:!0});Mr.Settings=Mr.scandirSync=Mr.scandir=void 0;var Vh=Uh(),cI=$h(),yc=jh();Mr.Settings=yc.default;function uI(t,e,r){if(typeof e=="function"){Vh.read(t,Ic(),e);return}Vh.read(t,Ic(e),r)}Mr.scandir=uI;function dI(t,e){let r=Ic(e);return cI.read(t,r)}Mr.scandirSync=dI;function Ic(t={}){return t instanceof yc.default?t:new yc.default(t)}});var Jh=U((aU,zh)=>{"use strict";function pI(t){var e=new t,r=e;function n(){var s=e;return s.next?e=s.next:(e=new t,r=e),s.next=null,s}function i(s){r.next=s,r=s}return{get:n,release:i}}zh.exports=pI});var Qh=U((lU,Lc)=>{"use strict";var gI=Jh();function qh(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),!(r>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");var n=gI(fI),i=null,s=null,o=0,a=null,l={push:_,drain:dt,saturated:dt,pause:u,paused:!1,get concurrency(){return r},set concurrency(H){if(!(H>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");if(r=H,!l.paused)for(;i&&o<r;)o++,L()},running:c,resume:f,idle:m,length:p,getQueue:d,unshift:I,empty:dt,kill:N,killAndDrain:w,error:Q,abort:q};return l;function c(){return o}function u(){l.paused=!0}function p(){for(var H=i,ne=0;H;)H=H.next,ne++;return ne}function d(){for(var H=i,ne=[];H;)ne.push(H.value),H=H.next;return ne}function f(){if(l.paused){if(l.paused=!1,i===null){o++,L();return}for(;i&&o<r;)o++,L()}}function m(){return o===0&&l.length()===0}function _(H,ne){var M=n.get();M.context=t,M.release=L,M.value=H,M.callback=ne||dt,M.errorHandler=a,o>=r||l.paused?s?(s.next=M,s=M):(i=M,s=M,l.saturated()):(o++,e.call(t,M.value,M.worked))}function I(H,ne){var M=n.get();M.context=t,M.release=L,M.value=H,M.callback=ne||dt,M.errorHandler=a,o>=r||l.paused?i?(M.next=i,i=M):(i=M,s=M,l.saturated()):(o++,e.call(t,M.value,M.worked))}function L(H){H&&n.release(H);var ne=i;ne&&o<=r?l.paused?o--:(s===i&&(s=null),i=ne.next,ne.next=null,e.call(t,ne.value,ne.worked),s===null&&l.empty()):--o===0&&l.drain()}function N(){i=null,s=null,l.drain=dt}function w(){i=null,s=null,l.drain(),l.drain=dt}function q(){var H=i;for(i=null,s=null;H;){var ne=H.next,M=H.callback,ee=H.errorHandler,_e=H.value,C=H.context;H.value=null,H.callback=dt,H.errorHandler=null,ee&&ee(new Error("abort"),_e),M.call(C,new Error("abort")),H.release(H),H=ne}l.drain=dt}function Q(H){a=H}}function dt(){}function fI(){this.value=null,this.callback=dt,this.next=null,this.release=dt,this.context=null,this.errorHandler=null;var t=this;this.worked=function(r,n){var i=t.callback,s=t.errorHandler,o=t.value;t.value=null,t.callback=dt,t.errorHandler&&s(r,o),i.call(t.context,r,n),t.release(t)}}function hI(t,e,r){typeof t=="function"&&(r=e,e=t,t=null);function n(u,p){e.call(this,u).then(function(d){p(null,d)},p)}var i=qh(t,n,r),s=i.push,o=i.unshift;return i.push=a,i.unshift=l,i.drained=c,i;function a(u){var p=new Promise(function(d,f){s(u,function(m,_){if(m){f(m);return}d(_)})});return p.catch(dt),p}function l(u){var p=new Promise(function(d,f){o(u,function(m,_){if(m){f(m);return}d(_)})});return p.catch(dt),p}function c(){var u=new Promise(function(p){process.nextTick(function(){if(i.idle())p();else{var d=i.drain;i.drain=function(){typeof d=="function"&&d(),p(),i.drain=d}}})});return u}}Lc.exports=qh;Lc.exports.promise=hI});var to=U(Qt=>{"use strict";Object.defineProperty(Qt,"__esModule",{value:!0});Qt.joinPathSegments=Qt.replacePathSegmentSeparator=Qt.isAppliedFilter=Qt.isFatalError=void 0;function mI(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Qt.isFatalError=mI;function _I(t,e){return t===null||t(e)}Qt.isAppliedFilter=_I;function EI(t,e){return t.split(/[/\\]/).join(e)}Qt.replacePathSegmentSeparator=EI;function SI(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}Qt.joinPathSegments=SI});var Pc=U(Cc=>{"use strict";Object.defineProperty(Cc,"__esModule",{value:!0});var TI=to(),Nc=class{constructor(e,r){this._root=e,this._settings=r,this._root=TI.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};Cc.default=Nc});var bc=U(vc=>{"use strict";Object.defineProperty(vc,"__esModule",{value:!0});var AI=ve("events"),RI=eo(),OI=Qh(),ro=to(),yI=Pc(),Dc=class extends yI.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=RI.scandir,this._emitter=new AI.EventEmitter,this._queue=OI(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let n={directory:e,base:r};this._queue.push(n,i=>{i!==null&&this._handleError(i)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(n,i)=>{if(n!==null){r(n,void 0);return}for(let s of i)this._handleEntry(s,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!ro.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let n=e.path;r!==void 0&&(e.path=ro.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),ro.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&ro.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(n,r===void 0?void 0:e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};vc.default=Dc});var Xh=U(Fc=>{"use strict";Object.defineProperty(Fc,"__esModule",{value:!0});var II=bc(),wc=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new II.default(this._root,this._settings),this._storage=[]}read(e){this._reader.onError(r=>{LI(e,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{NI(e,this._storage)}),this._reader.read()}};Fc.default=wc;function LI(t,e){t(e)}function NI(t,e){t(null,e)}});var Zh=U(kc=>{"use strict";Object.defineProperty(kc,"__esModule",{value:!0});var CI=ve("stream"),PI=bc(),Mc=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new PI.default(this._root,this._settings),this._stream=new CI.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};kc.default=Mc});var em=U(xc=>{"use strict";Object.defineProperty(xc,"__esModule",{value:!0});var DI=eo(),no=to(),vI=Pc(),Gc=class extends vI.default{constructor(){super(...arguments),this._scandir=DI.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let n=this._scandir(e,this._settings.fsScandirSettings);for(let i of n)this._handleEntry(i,r)}catch(n){this._handleError(n)}}_handleError(e){if(no.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let n=e.path;r!==void 0&&(e.path=no.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),no.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&no.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(n,r===void 0?void 0:e.path)}_pushToStorage(e){this._storage.push(e)}};xc.default=Gc});var tm=U(Hc=>{"use strict";Object.defineProperty(Hc,"__esModule",{value:!0});var bI=em(),Uc=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new bI.default(this._root,this._settings)}read(){return this._reader.read()}};Hc.default=Uc});var rm=U(Kc=>{"use strict";Object.defineProperty(Kc,"__esModule",{value:!0});var wI=ve("path"),FI=eo(),Bc=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,wI.sep),this.fsScandirSettings=new FI.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};Kc.default=Bc});var so=U(Xt=>{"use strict";Object.defineProperty(Xt,"__esModule",{value:!0});Xt.Settings=Xt.walkStream=Xt.walkSync=Xt.walk=void 0;var nm=Xh(),MI=Zh(),kI=tm(),Yc=rm();Xt.Settings=Yc.default;function GI(t,e,r){if(typeof e=="function"){new nm.default(t,io()).read(e);return}new nm.default(t,io(e)).read(r)}Xt.walk=GI;function xI(t,e){let r=io(e);return new kI.default(t,r).read()}Xt.walkSync=xI;function UI(t,e){let r=io(e);return new MI.default(t,r).read()}Xt.walkStream=UI;function io(t={}){return t instanceof Yc.default?t:new Yc.default(t)}});var oo=U(Wc=>{"use strict";Object.defineProperty(Wc,"__esModule",{value:!0});var HI=ve("path"),BI=cn(),im=cr(),$c=class{constructor(e){this._settings=e,this._fsStatSettings=new BI.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return HI.resolve(this._settings.cwd,e)}_makeEntry(e,r){let n={name:r,path:r,dirent:im.fs.createDirentFromStats(r,e)};return this._settings.stats&&(n.stats=e),n}_isFatalError(e){return!im.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};Wc.default=$c});var zc=U(Vc=>{"use strict";Object.defineProperty(Vc,"__esModule",{value:!0});var KI=ve("stream"),YI=cn(),$I=so(),WI=oo(),jc=class extends WI.default{constructor(){super(...arguments),this._walkStream=$I.walkStream,this._stat=YI.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let n=e.map(this._getFullEntryPath,this),i=new KI.PassThrough({objectMode:!0});i._write=(s,o,a)=>this._getEntry(n[s],e[s],r).then(l=>{l!==null&&r.entryFilter(l)&&i.push(l),s===n.length-1&&i.end(),a()}).catch(a);for(let s=0;s<n.length;s++)i.write(s);return i}_getEntry(e,r,n){return this._getStat(e).then(i=>this._makeEntry(i,r)).catch(i=>{if(n.errorFilter(i))return null;throw i})}_getStat(e){return new Promise((r,n)=>{this._stat(e,this._fsStatSettings,(i,s)=>i===null?r(s):n(i))})}};Vc.default=jc});var sm=U(qc=>{"use strict";Object.defineProperty(qc,"__esModule",{value:!0});var jI=so(),VI=oo(),zI=zc(),Jc=class extends VI.default{constructor(){super(...arguments),this._walkAsync=jI.walk,this._readerStream=new zI.default(this._settings)}dynamic(e,r){return new Promise((n,i)=>{this._walkAsync(e,r,(s,o)=>{s===null?n(o):i(s)})})}async static(e,r){let n=[],i=this._readerStream.static(e,r);return new Promise((s,o)=>{i.once("error",o),i.on("data",a=>n.push(a)),i.once("end",()=>s(n))})}};qc.default=Jc});var om=U(Xc=>{"use strict";Object.defineProperty(Xc,"__esModule",{value:!0});var Fi=cr(),Qc=class{constructor(e,r,n){this._patterns=e,this._settings=r,this._micromatchOptions=n,this._storage=[],this._fillStorage()}_fillStorage(){for(let e of this._patterns){let r=this._getPatternSegments(e),n=this._splitSegmentsIntoSections(r);this._storage.push({complete:n.length<=1,pattern:e,segments:r,sections:n})}}_getPatternSegments(e){return Fi.pattern.getPatternParts(e,this._micromatchOptions).map(n=>Fi.pattern.isDynamicPattern(n,this._settings)?{dynamic:!0,pattern:n,patternRe:Fi.pattern.makeRe(n,this._micromatchOptions)}:{dynamic:!1,pattern:n})}_splitSegmentsIntoSections(e){return Fi.array.splitWhen(e,r=>r.dynamic&&Fi.pattern.hasGlobStar(r.pattern))}};Xc.default=Qc});var am=U(eu=>{"use strict";Object.defineProperty(eu,"__esModule",{value:!0});var JI=om(),Zc=class extends JI.default{match(e){let r=e.split("/"),n=r.length,i=this._storage.filter(s=>!s.complete||s.segments.length>n);for(let s of i){let o=s.sections[0];if(!s.complete&&n>o.length||r.every((l,c)=>{let u=s.segments[c];return!!(u.dynamic&&u.patternRe.test(l)||!u.dynamic&&u.pattern===l)}))return!0}return!1}};eu.default=Zc});var lm=U(ru=>{"use strict";Object.defineProperty(ru,"__esModule",{value:!0});var ao=cr(),qI=am(),tu=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,n){let i=this._getMatcher(r),s=this._getNegativePatternsRe(n);return o=>this._filter(e,o,i,s)}_getMatcher(e){return new qI.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(ao.pattern.isAffectDepthOfReadingPattern);return ao.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,n,i){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let s=ao.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(s,n)?!1:this._isSkippedByNegativePatterns(s,i)}_isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntryLevel(e,r)>=this._settings.deep}_getEntryLevel(e,r){let n=r.split("/").length;if(e==="")return n;let i=e.split("/").length;return n-i}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!ao.pattern.matchAny(e,r)}};ru.default=tu});var cm=U(iu=>{"use strict";Object.defineProperty(iu,"__esModule",{value:!0});var kr=cr(),nu=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let[n,i]=kr.pattern.partitionAbsoluteAndRelative(r),s={positive:{all:kr.pattern.convertPatternsToRe(e,this._micromatchOptions)},negative:{absolute:kr.pattern.convertPatternsToRe(n,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0})),relative:kr.pattern.convertPatternsToRe(i,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0}))}};return o=>this._filter(o,s)}_filter(e,r){let n=kr.path.removeLeadingDotSegment(e.path);if(this._settings.unique&&this._isDuplicateEntry(n)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e))return!1;let i=this._isMatchToPatternsSet(n,r,e.dirent.isDirectory());return this._settings.unique&&i&&this._createIndexRecord(n),i}_isDuplicateEntry(e){return this.index.has(e)}_createIndexRecord(e){this.index.set(e,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isMatchToPatternsSet(e,r,n){return!(!this._isMatchToPatterns(e,r.positive.all,n)||this._isMatchToPatterns(e,r.negative.relative,n)||this._isMatchToAbsoluteNegative(e,r.negative.absolute,n))}_isMatchToAbsoluteNegative(e,r,n){if(r.length===0)return!1;let i=kr.path.makeAbsolute(this._settings.cwd,e);return this._isMatchToPatterns(i,r,n)}_isMatchToPatterns(e,r,n){if(r.length===0)return!1;let i=kr.pattern.matchAny(e,r);return!i&&n?kr.pattern.matchAny(e+"/",r):i}};iu.default=nu});var um=U(ou=>{"use strict";Object.defineProperty(ou,"__esModule",{value:!0});var QI=cr(),su=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return QI.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};ou.default=su});var pm=U(lu=>{"use strict";Object.defineProperty(lu,"__esModule",{value:!0});var dm=cr(),au=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=dm.path.makeAbsolute(this._settings.cwd,r),r=dm.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};lu.default=au});var lo=U(uu=>{"use strict";Object.defineProperty(uu,"__esModule",{value:!0});var XI=ve("path"),ZI=lm(),eL=cm(),tL=um(),rL=pm(),cu=class{constructor(e){this._settings=e,this.errorFilter=new tL.default(this._settings),this.entryFilter=new eL.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new ZI.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new rL.default(this._settings)}_getRootDirectory(e){return XI.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};uu.default=cu});var gm=U(pu=>{"use strict";Object.defineProperty(pu,"__esModule",{value:!0});var nL=sm(),iL=lo(),du=class extends iL.default{constructor(){super(...arguments),this._reader=new nL.default(this._settings)}async read(e){let r=this._getRootDirectory(e),n=this._getReaderOptions(e);return(await this.api(r,e,n)).map(s=>n.transform(s))}api(e,r,n){return r.dynamic?this._reader.dynamic(e,n):this._reader.static(r.patterns,n)}};pu.default=du});var fm=U(fu=>{"use strict";Object.defineProperty(fu,"__esModule",{value:!0});var sL=ve("stream"),oL=zc(),aL=lo(),gu=class extends aL.default{constructor(){super(...arguments),this._reader=new oL.default(this._settings)}read(e){let r=this._getRootDirectory(e),n=this._getReaderOptions(e),i=this.api(r,e,n),s=new sL.Readable({objectMode:!0,read:()=>{}});return i.once("error",o=>s.emit("error",o)).on("data",o=>s.emit("data",n.transform(o))).once("end",()=>s.emit("end")),s.once("close",()=>i.destroy()),s}api(e,r,n){return r.dynamic?this._reader.dynamic(e,n):this._reader.static(r.patterns,n)}};fu.default=gu});var hm=U(mu=>{"use strict";Object.defineProperty(mu,"__esModule",{value:!0});var lL=cn(),cL=so(),uL=oo(),hu=class extends uL.default{constructor(){super(...arguments),this._walkSync=cL.walkSync,this._statSync=lL.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let n=[];for(let i of e){let s=this._getFullEntryPath(i),o=this._getEntry(s,i,r);o===null||!r.entryFilter(o)||n.push(o)}return n}_getEntry(e,r,n){try{let i=this._getStat(e);return this._makeEntry(i,r)}catch(i){if(n.errorFilter(i))return null;throw i}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};mu.default=hu});var mm=U(Eu=>{"use strict";Object.defineProperty(Eu,"__esModule",{value:!0});var dL=hm(),pL=lo(),_u=class extends pL.default{constructor(){super(...arguments),this._reader=new dL.default(this._settings)}read(e){let r=this._getRootDirectory(e),n=this._getReaderOptions(e);return this.api(r,e,n).map(n.transform)}api(e,r,n){return r.dynamic?this._reader.dynamic(e,n):this._reader.static(r.patterns,n)}};Eu.default=_u});var _m=U(Yn=>{"use strict";Object.defineProperty(Yn,"__esModule",{value:!0});Yn.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var Kn=ve("fs"),gL=ve("os"),fL=Math.max(gL.cpus().length,1);Yn.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:Kn.lstat,lstatSync:Kn.lstatSync,stat:Kn.stat,statSync:Kn.statSync,readdir:Kn.readdir,readdirSync:Kn.readdirSync};var Su=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,fL),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0),this.ignore=[].concat(this.ignore)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},Yn.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};Yn.default=Su});var Ou=U((wU,Sm)=>{"use strict";var Em=Sh(),hL=gm(),mL=fm(),_L=mm(),Tu=_m(),Lt=cr();async function Au(t,e){Gt(t);let r=Ru(t,hL.default,e),n=await Promise.all(r);return Lt.array.flatten(n)}(function(t){t.glob=t,t.globSync=e,t.globStream=r,t.async=t;function e(c,u){Gt(c);let p=Ru(c,_L.default,u);return Lt.array.flatten(p)}t.sync=e;function r(c,u){Gt(c);let p=Ru(c,mL.default,u);return Lt.stream.merge(p)}t.stream=r;function n(c,u){Gt(c);let p=[].concat(c),d=new Tu.default(u);return Em.generate(p,d)}t.generateTasks=n;function i(c,u){Gt(c);let p=new Tu.default(u);return Lt.pattern.isDynamicPattern(c,p)}t.isDynamicPattern=i;function s(c){return Gt(c),Lt.path.escape(c)}t.escapePath=s;function o(c){return Gt(c),Lt.path.convertPathToPattern(c)}t.convertPathToPattern=o;let a;(function(c){function u(d){return Gt(d),Lt.path.escapePosixPath(d)}c.escapePath=u;function p(d){return Gt(d),Lt.path.convertPosixPathToPattern(d)}c.convertPathToPattern=p})(a=t.posix||(t.posix={}));let l;(function(c){function u(d){return Gt(d),Lt.path.escapeWindowsPath(d)}c.escapePath=u;function p(d){return Gt(d),Lt.path.convertWindowsPathToPattern(d)}c.convertPathToPattern=p})(l=t.win32||(t.win32={}))})(Au||(Au={}));function Ru(t,e,r){let n=[].concat(t),i=new Tu.default(r),s=Em.generate(n,i),o=new e(i);return s.map(o.read,o)}function Gt(t){if(![].concat(t).every(n=>Lt.string.isString(n)&&!Lt.string.isEmpty(n)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}Sm.exports=Au});var Cm=U((FU,po)=>{"use strict";function Rm(t){return Array.isArray(t)?t:[t]}var EL=void 0,Iu="",Tm=" ",yu="\\",SL=/^\s+$/,TL=/(?:[^\\]|^)\\$/,AL=/^\\!/,RL=/^\\#/,OL=/\r?\n/g,yL=/^\.{0,2}\/|^\.{1,2}$/,IL=/\/$/,$n="/",Om="node-ignore";typeof Symbol<"u"&&(Om=Symbol.for("node-ignore"));var ym=Om,Wn=(t,e,r)=>(Object.defineProperty(t,e,{value:r}),r),LL=/([0-z])-([0-z])/g,Im=()=>!1,NL=t=>t.replace(LL,(e,r,n)=>r.charCodeAt(0)<=n.charCodeAt(0)?e:Iu),CL=t=>t.startsWith("!")||t.startsWith("\\^")?`^${t.slice(t[0]==="!"?1:2)}`:t,PL=t=>{let{length:e}=t;return t.slice(0,e-e%2)},DL=[[/^\uFEFF/,()=>Iu],[/((?:\\\\)*?)(\\?\s+)$/,(t,e,r)=>e+(r.indexOf("\\")===0?Tm:Iu)],[/(\\+?)\s/g,(t,e)=>{let{length:r}=e;return e.slice(0,r-r%2)+Tm}],[/[\\$.|*+(){^]/g,t=>`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*(?:\\\*\\\*\\\/)+/,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6<r.length?"(?:\\/[^\\/]+)*":"\\/.+"],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(t,e,r)=>{let n=r.replace(/\\\*/g,"[^\\/]*");return e+n}],[/\\\\\\(?=[$.|*+(){^])/g,()=>yu],[/\\\\/g,()=>yu],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(t,e,r,n,i)=>e===yu?`\\[${r}${PL(n)}${i}`:i==="]"&&n.length%2===0?`[${CL(NL(r))}${n}]`:"[]"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`]],vL=/(^|\\\/)?\\\*$/,Mi="regex",co="checkRegex",Am="_",bL={[Mi](t,e){return`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`},[co](t,e){return`${e?`${e}[^/]*`:"[^/]*"}(?=$|\\/$)`}},wL=t=>DL.reduce((e,[r,n])=>e.replace(r,n.bind(t)),t),uo=t=>typeof t=="string",FL=t=>t&&uo(t)&&!SL.test(t)&&!TL.test(t)&&t.indexOf("#")!==0,ML=t=>t.split(OL).filter(Boolean),Lu=class{constructor(e,r,n,i,s,o){this.pattern=e,this.mark=r,this.negative=s,Wn(this,"body",n),Wn(this,"ignoreCase",i),Wn(this,"regexPrefix",o)}get regex(){let e=Am+Mi;return this[e]?this[e]:this._make(Mi,e)}get checkRegex(){let e=Am+co;return this[e]?this[e]:this._make(co,e)}_make(e,r){let n=this.regexPrefix.replace(vL,bL[e]),i=this.ignoreCase?new RegExp(n,"i"):new RegExp(n);return Wn(this,r,i)}},kL=({pattern:t,mark:e},r)=>{let n=!1,i=t;i.indexOf("!")===0&&(n=!0,i=i.substr(1)),i=i.replace(AL,"!").replace(RL,"#");let s=wL(i);return new Lu(t,e,i,r,n,s)},Nu=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[ym]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(uo(e)&&(e={pattern:e}),FL(e.pattern)){let r=kL(e,this._ignoreCase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,Rm(uo(e)?ML(e):e).forEach(this._add,this),this._added}test(e,r,n){let i=!1,s=!1,o;this._rules.forEach(l=>{let{negative:c}=l;s===c&&i!==s||c&&!i&&!s&&!r||!l[n].test(e)||(i=!c,s=c,o=c?EL:l)});let a={ignored:i,unignored:s};return o&&(a.rule=o),a}},GL=(t,e)=>{throw new e(t)},ur=(t,e,r)=>uo(t)?t?ur.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),Lm=t=>yL.test(t);ur.isNotRelative=Lm;ur.convert=t=>t;var Cu=class{constructor({ignorecase:e=!0,ignoreCase:r=e,allowRelativePaths:n=!1}={}){Wn(this,ym,!0),this._rules=new Nu(r),this._strictPathCheck=!n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,r,n,i){let s=e&&ur.convert(e);return ur(s,e,this._strictPathCheck?GL:Im),this._t(s,r,n,i)}checkIgnore(e){if(!IL.test(e))return this.test(e);let r=e.split($n).filter(Boolean);if(r.pop(),r.length){let n=this._t(r.join($n)+$n,this._testCache,!0,r);if(n.ignored)return n}return this._rules.test(e,!1,co)}_t(e,r,n,i){if(e in r)return r[e];if(i||(i=e.split($n).filter(Boolean)),i.pop(),!i.length)return r[e]=this._rules.test(e,n,Mi);let s=this._t(i.join($n)+$n,r,n,i);return r[e]=s.ignored?s:this._rules.test(e,n,Mi)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return Rm(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},Pu=t=>new Cu(t),xL=t=>ur(t&&ur.convert(t),t,Im),Nm=()=>{let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");ur.convert=t;let e=/^[a-z]:\//i;ur.isNotRelative=r=>e.test(r)||Lm(r)};typeof process<"u"&&process.platform==="win32"&&Nm();po.exports=Pu;Pu.default=Pu;po.exports.isPathValid=xL;Wn(po.exports,Symbol.for("setupWindows"),Nm)});import*as NT from"dotenv";import Kt from"process";import{execFile as $T}from"child_process";import{promisify as WT}from"util";import or from"fs/promises";import Ke from"path";import{spawn as bT}from"child_process";import Bp from"fs/promises";import nn from"path";import wT from"os";var Cl=class{value;next;constructor(e){this.value=e}},Ti=class{#t;#s;#c;constructor(){this.clear()}enqueue(e){let r=new Cl(e);this.#t?(this.#s.next=r,this.#s=r):(this.#t=r,this.#s=r),this.#c++}dequeue(){let e=this.#t;if(e)return this.#t=this.#t.next,this.#c--,this.#t||(this.#s=void 0),e.value}peek(){if(this.#t)return this.#t.value}clear(){this.#t=void 0,this.#s=void 0,this.#c=0}get size(){return this.#c}*[Symbol.iterator](){let e=this.#t;for(;e;)yield e.value,e=e.next}*drain(){for(;this.#t;)yield this.dequeue()}};function en(t){let e=!1;if(typeof t=="object"&&({concurrency:t,rejectOnClear:e=!1}=t),Hp(t),typeof e!="boolean")throw new TypeError("Expected `rejectOnClear` to be a boolean");let r=new Ti,n=0,i=()=>{n<t&&r.size>0&&(n++,r.dequeue().run())},s=()=>{n--,i()},o=async(c,u,p)=>{let d=(async()=>c(...p))();u(d);try{await d}catch{}s()},a=(c,u,p,d)=>{let f={reject:p};new Promise(m=>{f.run=m,r.enqueue(f)}).then(o.bind(void 0,c,u,d)),n<t&&i()},l=(c,...u)=>new Promise((p,d)=>{a(c,p,d,u)});return Object.defineProperties(l,{activeCount:{get:()=>n},pendingCount:{get:()=>r.size},clearQueue:{value(){if(!e){r.clear();return}let c=AbortSignal.abort().reason;for(;r.size>0;)r.dequeue().reject(c)}},concurrency:{get:()=>t,set(c){Hp(c),t=c,queueMicrotask(()=>{for(;n<t&&r.size>0;)i()})}},map:{async value(c,u){let p=Array.from(c,(d,f)=>this(u,d,f));return Promise.all(p)}}}),l}function Hp(t){if(!((Number.isInteger(t)||t===Number.POSITIVE_INFINITY)&&t>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up")}var Nr={NAME:"Docuvia",EMAIL:"docuvia@localhost"};var tn="refs/heads/",Pl="HEAD";var FT="fast-import",MT="--quiet",Dl={PIPE:"pipe",IGNORE:"ignore"},Rs={DATA:"data",ERROR:"error",CLOSE:"close"},rn={COMMIT:"commit",COMMITTER:"committer",DATA:"data",FROM:"from",DELETE_ALL:"deleteall",MODIFY:"M"},kT="100644",GT="inline",xT="+0000",UT="stdin write failed: ",HT=(t,e,r)=>{let n=[e,r?`${UT}${r.message}`:""].filter(Boolean).join("; ");return`git fast-import exited with code ${t}${n?": "+n:""}`},BT=300*1e3,Kp="SIGTERM",KT=t=>`git fast-import timed out after ${t}ms and was terminated`,YT=wT.cpus().length*4;async function Yp(t,e){let r=nn.resolve(t),n=e?nn.resolve(e):r;if(!r.startsWith(n+nn.sep)&&r!==n)throw new S(O.FS_PATH_TRAVERSAL,`sourceDir "${t}" escapes allowed root "${n}"`);let i=new Map,s=en(YT),o=async a=>{let l=await Bp.readdir(a,{withFileTypes:!0});await Promise.all(l.map(async c=>{let u=nn.join(a,c.name);if(c.isDirectory())await o(u);else if(c.isFile()){let p=nn.relative(t,u),d=await s(()=>Bp.readFile(u,K));i.set(p,d)}}))};return await o(t),i}function $p(t,e,r,n,i){let s=[];s.push(`${rn.COMMIT} ${tn}${t}`),s.push(`${rn.COMMITTER} ${Nr.NAME} <${Nr.EMAIL}> ${r} ${xT}`),s.push(`${rn.DATA} ${Buffer.byteLength(n,K)}`),s.push(n),i&&s.push(`${rn.FROM} ${i}`),s.push(rn.DELETE_ALL);for(let[o,a]of e){let l=Buffer.from(a,K),c=o.split(nn.sep).join(nn.posix.sep);s.push(`${rn.MODIFY} ${kT} ${GT} ${c}`),s.push(`${rn.DATA} ${l.length}`),s.push(a)}return s.push(""),s.join(`
|
|
3
|
+
import{a as up,b as dp,d as Ve,f as pp,g as gp,h as fp}from"./chunk-ZROS4Z3Z.js";import{A as bp,B as wp,C as Fp,D as Mp,E as Ll,F as Nl,G as kp,H as Ss,I as Gp,J as xp,K as Ts,L as Up,M as As,N as Mt,O as Zr,P as Ir,a as mp,b as Rl,c as Dn,d as Es,e as Ol,f as yl,g as vn,h as _p,i as Ep,j as Sp,k as mt,l as yr,m as Tp,n as Ap,o as Rp,p as Op,q as yp,r as Il,s as Ip,t as Si,u as Lp,v as Np,w as Cp,x as Pp,y as Dp,z as vp}from"./chunk-YKSTASHC.js";import{a as hp,b as Al,c as h,d as g,e as Ot,g as Lr}from"./chunk-6IZXMRME.js";import{$ as op,A as El,Aa as _s,B as Yd,Ba as lp,C as nr,Ca as Nn,D as hi,Da as sr,E as he,Ea as Ei,F as Tr,Fa as Ar,G as $d,Ga as cp,H as Wd,Ha as Y,I as jd,Ia as Cn,J as Vd,Ja as Pn,K as mi,Ka as Rr,L as zd,La as Or,M as Jd,N as qd,O as Qd,P as Xd,Q as Zd,R as ep,S as at,T as _i,U as tp,V as rp,W as np,X as ip,Y as sp,Z as ir,_ as ht,a as Re,aa as se,b as Ud,ba as K,c as fe,ca as Vt,da as us,e as Hd,ea as E,f as O,fa as ap,g as S,h as y,i as T,j as R,k as A,l as Rt,m as ml,n as B,o as Qe,p as Er,q as Oe,r as rr,ra as Sl,s as wt,sa as ds,t as Bd,ta as ps,u as Sr,ua as Tl,v as je,va as Ln,w as _l,wa as gs,x as Kd,xa as fs,y as Xr,ya as hs,z as Ft,za as ms}from"./chunk-H24ZJ4BD.js";import{a as ve,b as U,c as hl}from"./chunk-KVOCOCYJ.js";var Cg=U(Gn=>{"use strict";Object.defineProperty(Gn,"__esModule",{value:!0});Gn.splitWhen=Gn.flatten=void 0;function aR(t){return t.reduce((e,r)=>[].concat(e,r),[])}Gn.flatten=aR;function lR(t,e){let r=[[]],n=0;for(let i of t)e(i)?(n++,r[n]=[]):r[n].push(i);return r}Gn.splitWhen=lR});var Pg=U(Ms=>{"use strict";Object.defineProperty(Ms,"__esModule",{value:!0});Ms.isEnoentCodeError=void 0;function cR(t){return t.code==="ENOENT"}Ms.isEnoentCodeError=cR});var Dg=U(ks=>{"use strict";Object.defineProperty(ks,"__esModule",{value:!0});ks.createDirentFromStats=void 0;var Ul=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function uR(t,e){return new Ul(t,e)}ks.createDirentFromStats=uR});var Fg=U(Me=>{"use strict";Object.defineProperty(Me,"__esModule",{value:!0});Me.convertPosixPathToPattern=Me.convertWindowsPathToPattern=Me.convertPathToPattern=Me.escapePosixPath=Me.escapeWindowsPath=Me.escape=Me.removeLeadingDotSegment=Me.makeAbsolute=Me.unixify=void 0;var dR=ve("os"),pR=ve("path"),vg=dR.platform()==="win32",gR=2,fR=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g,hR=/(\\?)([()[\]{}]|^!|[!+@](?=\())/g,mR=/^\\\\([.?])/,_R=/\\(?![!()+@[\]{}])/g;function ER(t){return t.replace(/\\/g,"/")}Me.unixify=ER;function SR(t,e){return pR.resolve(t,e)}Me.makeAbsolute=SR;function TR(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(gR)}return t}Me.removeLeadingDotSegment=TR;Me.escape=vg?Hl:Bl;function Hl(t){return t.replace(hR,"\\$2")}Me.escapeWindowsPath=Hl;function Bl(t){return t.replace(fR,"\\$2")}Me.escapePosixPath=Bl;Me.convertPathToPattern=vg?bg:wg;function bg(t){return Hl(t).replace(mR,"//$1").replace(_R,"/")}Me.convertWindowsPathToPattern=bg;function wg(t){return Bl(t)}Me.convertPosixPathToPattern=wg});var kg=U((Sx,Mg)=>{"use strict";Mg.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var Ug=U((Tx,xg)=>{"use strict";var AR=kg(),Gg={"{":"}","(":")","[":"]"},RR=function(t){if(t[0]==="!")return!0;for(var e=0,r=-2,n=-2,i=-2,s=-2,o=-2;e<t.length;){if(t[e]==="*"||t[e+1]==="?"&&/[\].+)]/.test(t[e])||n!==-1&&t[e]==="["&&t[e+1]!=="]"&&(n<e&&(n=t.indexOf("]",e)),n>e&&(o===-1||o>n||(o=t.indexOf("\\",e),o===-1||o>n)))||i!==-1&&t[e]==="{"&&t[e+1]!=="}"&&(i=t.indexOf("}",e),i>e&&(o=t.indexOf("\\",e),o===-1||o>i))||s!==-1&&t[e]==="("&&t[e+1]==="?"&&/[:!=]/.test(t[e+2])&&t[e+3]!==")"&&(s=t.indexOf(")",e),s>e&&(o=t.indexOf("\\",e),o===-1||o>s))||r!==-1&&t[e]==="("&&t[e+1]!=="|"&&(r<e&&(r=t.indexOf("|",e)),r!==-1&&t[r+1]!==")"&&(s=t.indexOf(")",r),s>r&&(o=t.indexOf("\\",r),o===-1||o>s))))return!0;if(t[e]==="\\"){var a=t[e+1];e+=2;var l=Gg[a];if(l){var c=t.indexOf(l,e);c!==-1&&(e=c+1)}if(t[e]==="!")return!0}else e++}return!1},OR=function(t){if(t[0]==="!")return!0;for(var e=0;e<t.length;){if(/[*?{}()[\]]/.test(t[e]))return!0;if(t[e]==="\\"){var r=t[e+1];e+=2;var n=Gg[r];if(n){var i=t.indexOf(n,e);i!==-1&&(e=i+1)}if(t[e]==="!")return!0}else e++}return!1};xg.exports=function(e,r){if(typeof e!="string"||e==="")return!1;if(AR(e))return!0;var n=RR;return r&&r.strict===!1&&(n=OR),n(e)}});var Bg=U((Ax,Hg)=>{"use strict";var yR=Ug(),IR=ve("path").posix.dirname,LR=ve("os").platform()==="win32",Kl="/",NR=/\\/g,CR=/[\{\[].*[\}\]]$/,PR=/(^|[^\\])([\{\[]|\([^\)]+$)/,DR=/\\([\!\*\?\|\[\]\(\)\{\}])/g;Hg.exports=function(e,r){var n=Object.assign({flipBackslashes:!0},r);n.flipBackslashes&&LR&&e.indexOf(Kl)<0&&(e=e.replace(NR,Kl)),CR.test(e)&&(e+=Kl),e+="a";do e=IR(e);while(yR(e)||PR.test(e));return e.replace(DR,"$1")}});var Gs=U(It=>{"use strict";It.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;It.find=(t,e)=>t.nodes.find(r=>r.type===e);It.exceedsLimit=(t,e,r=1,n)=>n===!1||!It.isInteger(t)||!It.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=n;It.escapeNode=(t,e=0,r)=>{let n=t.nodes[e];n&&(r&&n.type===r||n.type==="open"||n.type==="close")&&n.escaped!==!0&&(n.value="\\"+n.value,n.escaped=!0)};It.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;It.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0===0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;It.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;It.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);It.flatten=(...t)=>{let e=[],r=n=>{for(let i=0;i<n.length;i++){let s=n[i];if(Array.isArray(s)){r(s);continue}s!==void 0&&e.push(s)}return e};return r(t),e}});var xs=U((Ox,Yg)=>{"use strict";var Kg=Gs();Yg.exports=(t,e={})=>{let r=(n,i={})=>{let s=e.escapeInvalid&&Kg.isInvalidBrace(i),o=n.invalid===!0&&e.escapeInvalid===!0,a="";if(n.value)return(s||o)&&Kg.isOpenOrClose(n)?"\\"+n.value:n.value;if(n.value)return n.value;if(n.nodes)for(let l of n.nodes)a+=r(l);return a};return r(t)}});var Wg=U((yx,$g)=>{"use strict";$g.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var ef=U((Ix,Zg)=>{"use strict";var jg=Wg(),an=(t,e,r)=>{if(jg(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(jg(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let n={relaxZeros:!0,...r};typeof n.strictZeros=="boolean"&&(n.relaxZeros=n.strictZeros===!1);let i=String(n.relaxZeros),s=String(n.shorthand),o=String(n.capture),a=String(n.wrap),l=t+":"+e+"="+i+s+o+a;if(an.cache.hasOwnProperty(l))return an.cache[l].result;let c=Math.min(t,e),u=Math.max(t,e);if(Math.abs(c-u)===1){let _=t+"|"+e;return n.capture?`(${_})`:n.wrap===!1?_:`(?:${_})`}let p=Xg(t)||Xg(e),d={min:t,max:e,a:c,b:u},f=[],m=[];if(p&&(d.isPadded=p,d.maxLen=String(d.max).length),c<0){let _=u<0?Math.abs(u):1;m=Vg(_,Math.abs(c),d,n),c=d.a=0}return u>=0&&(f=Vg(c,u,d,n)),d.negatives=m,d.positives=f,d.result=vR(m,f,n),n.capture===!0?d.result=`(${d.result})`:n.wrap!==!1&&f.length+m.length>1&&(d.result=`(?:${d.result})`),an.cache[l]=d,d.result};function vR(t,e,r){let n=Yl(t,e,"-",!1,r)||[],i=Yl(e,t,"",!1,r)||[],s=Yl(t,e,"-?",!0,r)||[];return n.concat(s).concat(i).join("|")}function bR(t,e){let r=1,n=1,i=Jg(t,r),s=new Set([e]);for(;t<=i&&i<=e;)s.add(i),r+=1,i=Jg(t,r);for(i=qg(e+1,n)-1;t<i&&i<=e;)s.add(i),n+=1,i=qg(e+1,n)-1;return s=[...s],s.sort(MR),s}function wR(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let n=FR(t,e),i=n.length,s="",o=0;for(let a=0;a<i;a++){let[l,c]=n[a];l===c?s+=l:l!=="0"||c!=="9"?s+=kR(l,c,r):o++}return o&&(s+=r.shorthand===!0?"\\d":"[0-9]"),{pattern:s,count:[o],digits:i}}function Vg(t,e,r,n){let i=bR(t,e),s=[],o=t,a;for(let l=0;l<i.length;l++){let c=i[l],u=wR(String(o),String(c),n),p="";if(!r.isPadded&&a&&a.pattern===u.pattern){a.count.length>1&&a.count.pop(),a.count.push(u.count[0]),a.string=a.pattern+Qg(a.count),o=c+1;continue}r.isPadded&&(p=GR(c,r,n)),u.string=p+u.pattern+Qg(u.count),s.push(u),o=c+1,a=u}return s}function Yl(t,e,r,n,i){let s=[];for(let o of t){let{string:a}=o;!n&&!zg(e,"string",a)&&s.push(r+a),n&&zg(e,"string",a)&&s.push(r+a)}return s}function FR(t,e){let r=[];for(let n=0;n<t.length;n++)r.push([t[n],e[n]]);return r}function MR(t,e){return t>e?1:e>t?-1:0}function zg(t,e,r){return t.some(n=>n[e]===r)}function Jg(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function qg(t,e){return t-t%Math.pow(10,e)}function Qg(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function kR(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function Xg(t){return/^-?(0+)\d/.test(t)}function GR(t,e,r){if(!e.isPadded)return t;let n=Math.abs(e.maxLen-String(t).length),i=r.relaxZeros!==!1;switch(n){case 0:return"";case 1:return i?"0?":"0";case 2:return i?"0{0,2}":"00";default:return i?`0{0,${n}}`:`0{${n}}`}}an.cache={};an.clearCache=()=>an.cache={};Zg.exports=an});var jl=U((Lx,lf)=>{"use strict";var xR=ve("util"),rf=ef(),tf=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),UR=t=>e=>t===!0?Number(e):String(e),$l=t=>typeof t=="number"||typeof t=="string"&&t!=="",Pi=t=>Number.isInteger(+t),Wl=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},HR=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,BR=(t,e,r)=>{if(e>0){let n=t[0]==="-"?"-":"";n&&(t=t.slice(1)),t=n+t.padStart(n?e-1:e,"0")}return r===!1?String(t):t},Hs=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length<e;)t="0"+t;return r?"-"+t:t},KR=(t,e,r)=>{t.negatives.sort((a,l)=>a<l?-1:a>l?1:0),t.positives.sort((a,l)=>a<l?-1:a>l?1:0);let n=e.capture?"":"?:",i="",s="",o;return t.positives.length&&(i=t.positives.map(a=>Hs(String(a),r)).join("|")),t.negatives.length&&(s=`-(${n}${t.negatives.map(a=>Hs(String(a),r)).join("|")})`),i&&s?o=`${i}|${s}`:o=i||s,e.wrap?`(${n}${o})`:o},nf=(t,e,r,n)=>{if(r)return rf(t,e,{wrap:!1,...n});let i=String.fromCharCode(t);if(t===e)return i;let s=String.fromCharCode(e);return`[${i}-${s}]`},sf=(t,e,r)=>{if(Array.isArray(t)){let n=r.wrap===!0,i=r.capture?"":"?:";return n?`(${i}${t.join("|")})`:t.join("|")}return rf(t,e,r)},of=(...t)=>new RangeError("Invalid range arguments: "+xR.inspect(...t)),af=(t,e,r)=>{if(r.strictRanges===!0)throw of([t,e]);return[]},YR=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},$R=(t,e,r=1,n={})=>{let i=Number(t),s=Number(e);if(!Number.isInteger(i)||!Number.isInteger(s)){if(n.strictRanges===!0)throw of([t,e]);return[]}i===0&&(i=0),s===0&&(s=0);let o=i>s,a=String(t),l=String(e),c=String(r);r=Math.max(Math.abs(r),1);let u=Wl(a)||Wl(l)||Wl(c),p=u?Math.max(a.length,l.length,c.length):0,d=u===!1&&HR(t,e,n)===!1,f=n.transform||UR(d);if(n.toRegex&&r===1)return nf(Hs(t,p),Hs(e,p),!0,n);let m={negatives:[],positives:[]},_=N=>m[N<0?"negatives":"positives"].push(Math.abs(N)),I=[],L=0;for(;o?i>=s:i<=s;)n.toRegex===!0&&r>1?_(i):I.push(BR(f(i,L),p,d)),i=o?i-r:i+r,L++;return n.toRegex===!0?r>1?KR(m,n,p):sf(I,null,{wrap:!1,...n}):I},WR=(t,e,r=1,n={})=>{if(!Pi(t)&&t.length>1||!Pi(e)&&e.length>1)return af(t,e,n);let i=n.transform||(d=>String.fromCharCode(d)),s=`${t}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,l=Math.min(s,o),c=Math.max(s,o);if(n.toRegex&&r===1)return nf(l,c,!1,n);let u=[],p=0;for(;a?s>=o:s<=o;)u.push(i(s,p)),s=a?s-r:s+r,p++;return n.toRegex===!0?sf(u,null,{wrap:!1,options:n}):u},Us=(t,e,r,n={})=>{if(e==null&&$l(t))return[t];if(!$l(t)||!$l(e))return af(t,e,n);if(typeof r=="function")return Us(t,e,1,{transform:r});if(tf(r))return Us(t,e,0,r);let i={...n};return i.capture===!0&&(i.wrap=!0),r=r||i.step||1,Pi(r)?Pi(t)&&Pi(e)?$R(t,e,r,i):WR(t,e,Math.max(Math.abs(r),1),i):r!=null&&!tf(r)?YR(r,i):Us(t,e,1,r)};lf.exports=Us});var df=U((Nx,uf)=>{"use strict";var jR=jl(),cf=Gs(),VR=(t,e={})=>{let r=(n,i={})=>{let s=cf.isInvalidBrace(i),o=n.invalid===!0&&e.escapeInvalid===!0,a=s===!0||o===!0,l=e.escapeInvalid===!0?"\\":"",c="";if(n.isOpen===!0)return l+n.value;if(n.isClose===!0)return console.log("node.isClose",l,n.value),l+n.value;if(n.type==="open")return a?l+n.value:"(";if(n.type==="close")return a?l+n.value:")";if(n.type==="comma")return n.prev.type==="comma"?"":a?n.value:"|";if(n.value)return n.value;if(n.nodes&&n.ranges>0){let u=cf.reduce(n.nodes),p=jR(...u,{...e,wrap:!1,toRegex:!0,strictZeros:!0});if(p.length!==0)return u.length>1&&p.length>1?`(${p})`:p}if(n.nodes)for(let u of n.nodes)c+=r(u,n);return c};return r(t)};uf.exports=VR});var ff=U((Cx,gf)=>{"use strict";var zR=jl(),pf=xs(),xn=Gs(),ln=(t="",e="",r=!1)=>{let n=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?xn.flatten(e).map(i=>`{${i}}`):e;for(let i of t)if(Array.isArray(i))for(let s of i)n.push(ln(s,e,r));else for(let s of e)r===!0&&typeof s=="string"&&(s=`{${s}}`),n.push(Array.isArray(s)?ln(i,s,r):i+s);return xn.flatten(n)},JR=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,n=(i,s={})=>{i.queue=[];let o=s,a=s.queue;for(;o.type!=="brace"&&o.type!=="root"&&o.parent;)o=o.parent,a=o.queue;if(i.invalid||i.dollar){a.push(ln(a.pop(),pf(i,e)));return}if(i.type==="brace"&&i.invalid!==!0&&i.nodes.length===2){a.push(ln(a.pop(),["{}"]));return}if(i.nodes&&i.ranges>0){let p=xn.reduce(i.nodes);if(xn.exceedsLimit(...p,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let d=zR(...p,e);d.length===0&&(d=pf(i,e)),a.push(ln(a.pop(),d)),i.nodes=[];return}let l=xn.encloseBrace(i),c=i.queue,u=i;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,c=u.queue;for(let p=0;p<i.nodes.length;p++){let d=i.nodes[p];if(d.type==="comma"&&i.type==="brace"){p===1&&c.push(""),c.push("");continue}if(d.type==="close"){a.push(ln(a.pop(),c,l));continue}if(d.value&&d.type!=="open"){c.push(ln(c.pop(),d.value));continue}d.nodes&&n(d,i)}return c};return xn.flatten(n(t))};gf.exports=JR});var mf=U((Px,hf)=>{"use strict";hf.exports={MAX_LENGTH:1e4,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:`
|
|
4
|
+
`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var Af=U((Dx,Tf)=>{"use strict";var qR=xs(),{MAX_LENGTH:_f,CHAR_BACKSLASH:Vl,CHAR_BACKTICK:QR,CHAR_COMMA:XR,CHAR_DOT:ZR,CHAR_LEFT_PARENTHESES:eO,CHAR_RIGHT_PARENTHESES:tO,CHAR_LEFT_CURLY_BRACE:rO,CHAR_RIGHT_CURLY_BRACE:nO,CHAR_LEFT_SQUARE_BRACKET:Ef,CHAR_RIGHT_SQUARE_BRACKET:Sf,CHAR_DOUBLE_QUOTE:iO,CHAR_SINGLE_QUOTE:sO,CHAR_NO_BREAK_SPACE:oO,CHAR_ZERO_WIDTH_NOBREAK_SPACE:aO}=mf(),lO=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},n=typeof r.maxLength=="number"?Math.min(_f,r.maxLength):_f;if(t.length>n)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${n})`);let i={type:"root",input:t,nodes:[]},s=[i],o=i,a=i,l=0,c=t.length,u=0,p=0,d,f=()=>t[u++],m=_=>{if(_.type==="text"&&a.type==="dot"&&(a.type="text"),a&&a.type==="text"&&_.type==="text"){a.value+=_.value;return}return o.nodes.push(_),_.parent=o,_.prev=a,a=_,_};for(m({type:"bos"});u<c;)if(o=s[s.length-1],d=f(),!(d===aO||d===oO)){if(d===Vl){m({type:"text",value:(e.keepEscaping?d:"")+f()});continue}if(d===Sf){m({type:"text",value:"\\"+d});continue}if(d===Ef){l++;let _;for(;u<c&&(_=f());){if(d+=_,_===Ef){l++;continue}if(_===Vl){d+=f();continue}if(_===Sf&&(l--,l===0))break}m({type:"text",value:d});continue}if(d===eO){o=m({type:"paren",nodes:[]}),s.push(o),m({type:"text",value:d});continue}if(d===tO){if(o.type!=="paren"){m({type:"text",value:d});continue}o=s.pop(),m({type:"text",value:d}),o=s[s.length-1];continue}if(d===iO||d===sO||d===QR){let _=d,I;for(e.keepQuotes!==!0&&(d="");u<c&&(I=f());){if(I===Vl){d+=I+f();continue}if(I===_){e.keepQuotes===!0&&(d+=I);break}d+=I}m({type:"text",value:d});continue}if(d===rO){p++;let I={type:"brace",open:!0,close:!1,dollar:a.value&&a.value.slice(-1)==="$"||o.dollar===!0,depth:p,commas:0,ranges:0,nodes:[]};o=m(I),s.push(o),m({type:"open",value:d});continue}if(d===nO){if(o.type!=="brace"){m({type:"text",value:d});continue}let _="close";o=s.pop(),o.close=!0,m({type:_,value:d}),p--,o=s[s.length-1];continue}if(d===XR&&p>0){if(o.ranges>0){o.ranges=0;let _=o.nodes.shift();o.nodes=[_,{type:"text",value:qR(o)}]}m({type:"comma",value:d}),o.commas++;continue}if(d===ZR&&p>0&&o.commas===0){let _=o.nodes;if(p===0||_.length===0){m({type:"text",value:d});continue}if(a.type==="dot"){if(o.range=[],a.value+=d,a.type="range",o.nodes.length!==3&&o.nodes.length!==5){o.invalid=!0,o.ranges=0,a.type="text";continue}o.ranges++,o.args=[];continue}if(a.type==="range"){_.pop();let I=_[_.length-1];I.value+=a.value+d,a=I,o.ranges--;continue}m({type:"dot",value:d});continue}m({type:"text",value:d})}do if(o=s.pop(),o.type!=="root"){o.nodes.forEach(L=>{L.nodes||(L.type==="open"&&(L.isOpen=!0),L.type==="close"&&(L.isClose=!0),L.nodes||(L.type="text"),L.invalid=!0)});let _=s[s.length-1],I=_.nodes.indexOf(o);_.nodes.splice(I,1,...o.nodes)}while(s.length>0);return m({type:"eos"}),i};Tf.exports=lO});var yf=U((vx,Of)=>{"use strict";var Rf=xs(),cO=df(),uO=ff(),dO=Af(),Et=(t,e={})=>{let r=[];if(Array.isArray(t))for(let n of t){let i=Et.create(n,e);Array.isArray(i)?r.push(...i):r.push(i)}else r=[].concat(Et.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};Et.parse=(t,e={})=>dO(t,e);Et.stringify=(t,e={})=>Rf(typeof t=="string"?Et.parse(t,e):t,e);Et.compile=(t,e={})=>(typeof t=="string"&&(t=Et.parse(t,e)),cO(t,e));Et.expand=(t,e={})=>{typeof t=="string"&&(t=Et.parse(t,e));let r=uO(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};Et.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Et.compile(t,e):Et.expand(t,e);Of.exports=Et});var Di=U((bx,Pf)=>{"use strict";var pO=ve("path"),Jt="\\\\/",If=`[^${Jt}]`,gO=0,lr="\\.",fO="\\+",hO="\\?",Bs="\\/",mO="(?=.)",Lf="[^/]",zl=`(?:${Bs}|$)`,Nf=`(?:^|${Bs})`,Jl=`${lr}{1,2}${zl}`,_O=`(?!${lr})`,EO=`(?!${Nf}${Jl})`,SO=`(?!${lr}{0,1}${zl})`,TO=`(?!${Jl})`,AO=`[^.${Bs}]`,RO=`${Lf}*?`,Cf={DOT_LITERAL:lr,PLUS_LITERAL:fO,QMARK_LITERAL:hO,SLASH_LITERAL:Bs,ONE_CHAR:mO,QMARK:Lf,END_ANCHOR:zl,DOTS_SLASH:Jl,NO_DOT:_O,NO_DOTS:EO,NO_DOT_SLASH:SO,NO_DOTS_SLASH:TO,QMARK_NO_DOT:AO,STAR:RO,START_ANCHOR:Nf},OO={...Cf,SLASH_LITERAL:`[${Jt}]`,QMARK:If,STAR:`${If}*?`,DOTS_SLASH:`${lr}{1,2}(?:[${Jt}]|$)`,NO_DOT:`(?!${lr})`,NO_DOTS:`(?!(?:^|[${Jt}])${lr}{1,2}(?:[${Jt}]|$))`,NO_DOT_SLASH:`(?!${lr}{0,1}(?:[${Jt}]|$))`,NO_DOTS_SLASH:`(?!${lr}{1,2}(?:[${Jt}]|$))`,QMARK_NO_DOT:`[^.${Jt}]`,START_ANCHOR:`(?:^|[${Jt}])`,END_ANCHOR:`(?:[${Jt}]|$)`},yO={__proto__:null,alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};Pf.exports={DEFAULT_MAX_EXTGLOB_RECURSION:gO,MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:yO,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{__proto__:null,"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:pO.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?OO:Cf}}});var vi=U(ut=>{"use strict";var IO=ve("path"),LO=process.platform==="win32",{REGEX_BACKSLASH:NO,REGEX_REMOVE_BACKSLASH:CO,REGEX_SPECIAL_CHARS:PO,REGEX_SPECIAL_CHARS_GLOBAL:DO}=Di();ut.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);ut.hasRegexChars=t=>PO.test(t);ut.isRegexChar=t=>t.length===1&&ut.hasRegexChars(t);ut.escapeRegex=t=>t.replace(DO,"\\$1");ut.toPosixSlashes=t=>t.replace(NO,"/");ut.removeBackslashes=t=>t.replace(CO,e=>e==="\\"?"":e);ut.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};ut.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:LO===!0||IO.sep==="\\";ut.escapeLast=(t,e,r)=>{let n=t.lastIndexOf(e,r);return n===-1?t:t[n-1]==="\\"?ut.escapeLast(t,e,n-1):`${t.slice(0,n)}\\${t.slice(n)}`};ut.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};ut.wrapOutput=(t,e={},r={})=>{let n=r.contains?"":"^",i=r.contains?"":"$",s=`${n}(?:${t})${i}`;return e.negated===!0&&(s=`(?:^(?!${s}).*$)`),s}});var Gf=U((Fx,kf)=>{"use strict";var Df=vi(),{CHAR_ASTERISK:ql,CHAR_AT:vO,CHAR_BACKWARD_SLASH:bi,CHAR_COMMA:bO,CHAR_DOT:Ql,CHAR_EXCLAMATION_MARK:Xl,CHAR_FORWARD_SLASH:Mf,CHAR_LEFT_CURLY_BRACE:Zl,CHAR_LEFT_PARENTHESES:ec,CHAR_LEFT_SQUARE_BRACKET:wO,CHAR_PLUS:FO,CHAR_QUESTION_MARK:vf,CHAR_RIGHT_CURLY_BRACE:MO,CHAR_RIGHT_PARENTHESES:bf,CHAR_RIGHT_SQUARE_BRACKET:kO}=Di(),wf=t=>t===Mf||t===bi,Ff=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},GO=(t,e)=>{let r=e||{},n=t.length-1,i=r.parts===!0||r.scanToEnd===!0,s=[],o=[],a=[],l=t,c=-1,u=0,p=0,d=!1,f=!1,m=!1,_=!1,I=!1,L=!1,N=!1,w=!1,q=!1,Q=!1,H=0,ne,M,ee={value:"",depth:0,isGlob:!1},_e=()=>c>=n,C=()=>l.charCodeAt(c+1),Te=()=>(ne=M,l.charCodeAt(++c));for(;c<n;){M=Te();let it;if(M===bi){N=ee.backslashes=!0,M=Te(),M===Zl&&(L=!0);continue}if(L===!0||M===Zl){for(H++;_e()!==!0&&(M=Te());){if(M===bi){N=ee.backslashes=!0,Te();continue}if(M===Zl){H++;continue}if(L!==!0&&M===Ql&&(M=Te())===Ql){if(d=ee.isBrace=!0,m=ee.isGlob=!0,Q=!0,i===!0)continue;break}if(L!==!0&&M===bO){if(d=ee.isBrace=!0,m=ee.isGlob=!0,Q=!0,i===!0)continue;break}if(M===MO&&(H--,H===0)){L=!1,d=ee.isBrace=!0,Q=!0;break}}if(i===!0)continue;break}if(M===Mf){if(s.push(c),o.push(ee),ee={value:"",depth:0,isGlob:!1},Q===!0)continue;if(ne===Ql&&c===u+1){u+=2;continue}p=c+1;continue}if(r.noext!==!0&&(M===FO||M===vO||M===ql||M===vf||M===Xl)===!0&&C()===ec){if(m=ee.isGlob=!0,_=ee.isExtglob=!0,Q=!0,M===Xl&&c===u&&(q=!0),i===!0){for(;_e()!==!0&&(M=Te());){if(M===bi){N=ee.backslashes=!0,M=Te();continue}if(M===bf){m=ee.isGlob=!0,Q=!0;break}}continue}break}if(M===ql){if(ne===ql&&(I=ee.isGlobstar=!0),m=ee.isGlob=!0,Q=!0,i===!0)continue;break}if(M===vf){if(m=ee.isGlob=!0,Q=!0,i===!0)continue;break}if(M===wO){for(;_e()!==!0&&(it=Te());){if(it===bi){N=ee.backslashes=!0,Te();continue}if(it===kO){f=ee.isBracket=!0,m=ee.isGlob=!0,Q=!0;break}}if(i===!0)continue;break}if(r.nonegate!==!0&&M===Xl&&c===u){w=ee.negated=!0,u++;continue}if(r.noparen!==!0&&M===ec){if(m=ee.isGlob=!0,i===!0){for(;_e()!==!0&&(M=Te());){if(M===ec){N=ee.backslashes=!0,M=Te();continue}if(M===bf){Q=!0;break}}continue}break}if(m===!0){if(Q=!0,i===!0)continue;break}}r.noext===!0&&(_=!1,m=!1);let ye=l,mr="",D="";u>0&&(mr=l.slice(0,u),l=l.slice(u),p-=u),ye&&m===!0&&p>0?(ye=l.slice(0,p),D=l.slice(p)):m===!0?(ye="",D=l):ye=l,ye&&ye!==""&&ye!=="/"&&ye!==l&&wf(ye.charCodeAt(ye.length-1))&&(ye=ye.slice(0,-1)),r.unescape===!0&&(D&&(D=Df.removeBackslashes(D)),ye&&N===!0&&(ye=Df.removeBackslashes(ye)));let v={prefix:mr,input:t,start:u,base:ye,glob:D,isBrace:d,isBracket:f,isGlob:m,isExtglob:_,isGlobstar:I,negated:w,negatedExtglob:q};if(r.tokens===!0&&(v.maxDepth=0,wf(M)||o.push(ee),v.tokens=o),r.parts===!0||r.tokens===!0){let it;for(let ge=0;ge<s.length;ge++){let Yt=it?it+1:u,$t=s[ge],ft=t.slice(Yt,$t);r.tokens&&(ge===0&&u!==0?(o[ge].isPrefix=!0,o[ge].value=mr):o[ge].value=ft,Ff(o[ge]),v.maxDepth+=o[ge].depth),(ge!==0||ft!=="")&&a.push(ft),it=$t}if(it&&it+1<t.length){let ge=t.slice(it+1);a.push(ge),r.tokens&&(o[o.length-1].value=ge,Ff(o[o.length-1]),v.maxDepth+=o[o.length-1].depth)}v.slashes=s,v.parts=a}return v};kf.exports=GO});var Kf=U((Mx,Bf)=>{"use strict";var wi=Di(),Xe=vi(),{MAX_LENGTH:Ks,POSIX_REGEX_SOURCE:xO,REGEX_NON_SPECIAL_CHARS:UO,REGEX_SPECIAL_CHARS_BACKREF:HO,REPLACEMENTS:xf}=wi,BO=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch{return t.map(i=>Xe.escapeRegex(i)).join("..")}return r},Un=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,Uf=t=>{let e=[],r=0,n=0,i=0,s="",o=!1;for(let a of t){if(o===!0){s+=a,o=!1;continue}if(a==="\\"){s+=a,o=!0;continue}if(a==='"'){i=i===1?0:1,s+=a;continue}if(i===0){if(a==="[")r++;else if(a==="]"&&r>0)r--;else if(r===0){if(a==="(")n++;else if(a===")"&&n>0)n--;else if(a==="|"&&n===0){e.push(s),s="";continue}}}s+=a}return e.push(s),e},KO=t=>{let e=!1;for(let r of t){if(e===!0){e=!1;continue}if(r==="\\"){e=!0;continue}if(/[?*+@!()[\]{}]/.test(r))return!1}return!0},Hf=t=>{let e=t.trim(),r=!0;for(;r===!0;)r=!1,/^@\([^\\()[\]{}|]+\)$/.test(e)&&(e=e.slice(2,-1),r=!0);if(KO(e))return e.replace(/\\(.)/g,"$1")},YO=t=>{let e=t.map(Hf).filter(Boolean);for(let r=0;r<e.length;r++)for(let n=r+1;n<e.length;n++){let i=e[r],s=e[n],o=i[0];if(!(!o||i!==o.repeat(i.length)||s!==o.repeat(s.length))&&(i===s||i.startsWith(s)||s.startsWith(i)))return!0}return!1},tc=(t,e=!0)=>{if(t[0]!=="+"&&t[0]!=="*"||t[1]!=="(")return;let r=0,n=0,i=0,s=!1;for(let o=1;o<t.length;o++){let a=t[o];if(s===!0){s=!1;continue}if(a==="\\"){s=!0;continue}if(a==='"'){i=i===1?0:1;continue}if(i!==1){if(a==="["){r++;continue}if(a==="]"&&r>0){r--;continue}if(!(r>0)){if(a==="("){n++;continue}if(a===")"&&(n--,n===0))return e===!0&&o!==t.length-1?void 0:{type:t[0],body:t.slice(2,o),end:o}}}}},$O=t=>{let e=0,r=[];for(;e<t.length;){let i=tc(t.slice(e),!1);if(!i||i.type!=="*")return;let s=Uf(i.body).map(a=>a.trim());if(s.length!==1)return;let o=Hf(s[0]);if(!o||o.length!==1)return;r.push(o),e+=i.end+1}return r.length<1?void 0:`${r.length===1?Xe.escapeRegex(r[0]):`[${r.map(i=>Xe.escapeRegex(i)).join("")}]`}*`},WO=t=>{let e=0,r=t.trim(),n=tc(r);for(;n;)e++,r=n.body.trim(),n=tc(r);return e},jO=(t,e)=>{if(e.maxExtglobRecursion===!1)return{risky:!1};let r=typeof e.maxExtglobRecursion=="number"?e.maxExtglobRecursion:wi.DEFAULT_MAX_EXTGLOB_RECURSION,n=Uf(t).map(i=>i.trim());if(n.length>1&&(n.some(i=>i==="")||n.some(i=>/^[*?]+$/.test(i))||YO(n)))return{risky:!0};for(let i of n){let s=$O(i);if(s)return{risky:!0,safeOutput:s};if(WO(i)>r)return{risky:!0}}return{risky:!1}},rc=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=xf[t]||t;let r={...e},n=typeof r.maxLength=="number"?Math.min(Ks,r.maxLength):Ks,i=t.length;if(i>n)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${n}`);let s={type:"bos",value:"",output:r.prepend||""},o=[s],a=r.capture?"":"?:",l=Xe.isWindows(e),c=wi.globChars(l),u=wi.extglobChars(c),{DOT_LITERAL:p,PLUS_LITERAL:d,SLASH_LITERAL:f,ONE_CHAR:m,DOTS_SLASH:_,NO_DOT:I,NO_DOT_SLASH:L,NO_DOTS_SLASH:N,QMARK:w,QMARK_NO_DOT:q,STAR:Q,START_ANCHOR:H}=c,ne=x=>`(${a}(?:(?!${H}${x.dot?_:p}).)*?)`,M=r.dot?"":I,ee=r.dot?w:q,_e=r.bash===!0?ne(r):Q;r.capture&&(_e=`(${_e})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let C={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};t=Xe.removePrefix(t,C),i=t.length;let Te=[],ye=[],mr=[],D=s,v,it=()=>C.index===i-1,ge=C.peek=(x=1)=>t[C.index+x],Yt=C.advance=()=>t[++C.index]||"",$t=()=>t.slice(C.index+1),ft=(x="",Ne=0)=>{C.consumed+=x,C.index+=Ne},as=x=>{C.output+=x.output!=null?x.output:x.value,ft(x.value)},DT=()=>{let x=1;for(;ge()==="!"&&(ge(2)!=="("||ge(3)==="?");)Yt(),C.start++,x++;return x%2===0?!1:(C.negated=!0,C.start++,!0)},ls=x=>{C[x]++,mr.push(x)},_r=x=>{C[x]--,mr.pop()},le=x=>{if(D.type==="globstar"){let Ne=C.braces>0&&(x.type==="comma"||x.type==="brace"),G=x.extglob===!0||Te.length&&(x.type==="pipe"||x.type==="paren");x.type!=="slash"&&x.type!=="paren"&&!Ne&&!G&&(C.output=C.output.slice(0,-D.output.length),D.type="star",D.value="*",D.output=_e,C.output+=D.output)}if(Te.length&&x.type!=="paren"&&(Te[Te.length-1].inner+=x.value),(x.value||x.output)&&as(x),D&&D.type==="text"&&x.type==="text"){D.value+=x.value,D.output=(D.output||"")+x.value;return}x.prev=D,o.push(x),D=x},cs=(x,Ne)=>{let G={...u[Ne],conditions:1,inner:""};G.prev=D,G.parens=C.parens,G.output=C.output,G.startIndex=C.index,G.tokensIndex=o.length;let ae=(r.capture?"(":"")+G.open;ls("parens"),le({type:x,value:Ne,output:C.output?"":m}),le({type:"paren",extglob:!0,value:Yt(),output:ae}),Te.push(G)},vT=x=>{let Ne=t.slice(x.startIndex,C.index+1),G=t.slice(x.startIndex+2,C.index),ae=jO(G,r);if((x.type==="plus"||x.type==="star")&&ae.risky){let Ae=ae.safeOutput?(x.output?"":m)+(r.capture?`(${ae.safeOutput})`:ae.safeOutput):void 0,Wt=o[x.tokensIndex];Wt.type="text",Wt.value=Ne,Wt.output=Ae||Xe.escapeRegex(Ne);for(let jt=x.tokensIndex+1;jt<o.length;jt++)o[jt].value="",o[jt].output="",delete o[jt].suffix;C.output=x.output+Wt.output,C.backtrack=!0,le({type:"paren",extglob:!0,value:v,output:""}),_r("parens");return}let Ie=x.close+(r.capture?")":""),Ue;if(x.type==="negate"){let Ae=_e;if(x.inner&&x.inner.length>1&&x.inner.includes("/")&&(Ae=ne(r)),(Ae!==_e||it()||/^\)+$/.test($t()))&&(Ie=x.close=`)$))${Ae}`),x.inner.includes("*")&&(Ue=$t())&&/^\.[^\\/.]+$/.test(Ue)){let Wt=rc(Ue,{...e,fastpaths:!1}).output;Ie=x.close=`)${Wt})${Ae})`}x.prev.type==="bos"&&(C.negatedExtglob=!0)}le({type:"paren",extglob:!0,value:v,output:Ie}),_r("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let x=!1,Ne=t.replace(HO,(G,ae,Ie,Ue,Ae,Wt)=>Ue==="\\"?(x=!0,G):Ue==="?"?ae?ae+Ue+(Ae?w.repeat(Ae.length):""):Wt===0?ee+(Ae?w.repeat(Ae.length):""):w.repeat(Ie.length):Ue==="."?p.repeat(Ie.length):Ue==="*"?ae?ae+Ue+(Ae?_e:""):_e:ae?G:`\\${G}`);return x===!0&&(r.unescape===!0?Ne=Ne.replace(/\\/g,""):Ne=Ne.replace(/\\+/g,G=>G.length%2===0?"\\\\":G?"\\":"")),Ne===t&&r.contains===!0?(C.output=t,C):(C.output=Xe.wrapOutput(Ne,C,e),C)}for(;!it();){if(v=Yt(),v==="\0")continue;if(v==="\\"){let G=ge();if(G==="/"&&r.bash!==!0||G==="."||G===";")continue;if(!G){v+="\\",le({type:"text",value:v});continue}let ae=/^\\+/.exec($t()),Ie=0;if(ae&&ae[0].length>2&&(Ie=ae[0].length,C.index+=Ie,Ie%2!==0&&(v+="\\")),r.unescape===!0?v=Yt():v+=Yt(),C.brackets===0){le({type:"text",value:v});continue}}if(C.brackets>0&&(v!=="]"||D.value==="["||D.value==="[^")){if(r.posix!==!1&&v===":"){let G=D.value.slice(1);if(G.includes("[")&&(D.posix=!0,G.includes(":"))){let ae=D.value.lastIndexOf("["),Ie=D.value.slice(0,ae),Ue=D.value.slice(ae+2),Ae=xO[Ue];if(Ae){D.value=Ie+Ae,C.backtrack=!0,Yt(),!s.output&&o.indexOf(D)===1&&(s.output=m);continue}}}(v==="["&&ge()!==":"||v==="-"&&ge()==="]")&&(v=`\\${v}`),v==="]"&&(D.value==="["||D.value==="[^")&&(v=`\\${v}`),r.posix===!0&&v==="!"&&D.value==="["&&(v="^"),D.value+=v,as({value:v});continue}if(C.quotes===1&&v!=='"'){v=Xe.escapeRegex(v),D.value+=v,as({value:v});continue}if(v==='"'){C.quotes=C.quotes===1?0:1,r.keepQuotes===!0&&le({type:"text",value:v});continue}if(v==="("){ls("parens"),le({type:"paren",value:v});continue}if(v===")"){if(C.parens===0&&r.strictBrackets===!0)throw new SyntaxError(Un("opening","("));let G=Te[Te.length-1];if(G&&C.parens===G.parens+1){vT(Te.pop());continue}le({type:"paren",value:v,output:C.parens?")":"\\)"}),_r("parens");continue}if(v==="["){if(r.nobracket===!0||!$t().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(Un("closing","]"));v=`\\${v}`}else ls("brackets");le({type:"bracket",value:v});continue}if(v==="]"){if(r.nobracket===!0||D&&D.type==="bracket"&&D.value.length===1){le({type:"text",value:v,output:`\\${v}`});continue}if(C.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(Un("opening","["));le({type:"text",value:v,output:`\\${v}`});continue}_r("brackets");let G=D.value.slice(1);if(D.posix!==!0&&G[0]==="^"&&!G.includes("/")&&(v=`/${v}`),D.value+=v,as({value:v}),r.literalBrackets===!1||Xe.hasRegexChars(G))continue;let ae=Xe.escapeRegex(D.value);if(C.output=C.output.slice(0,-D.value.length),r.literalBrackets===!0){C.output+=ae,D.value=ae;continue}D.value=`(${a}${ae}|${D.value})`,C.output+=D.value;continue}if(v==="{"&&r.nobrace!==!0){ls("braces");let G={type:"brace",value:v,output:"(",outputIndex:C.output.length,tokensIndex:C.tokens.length};ye.push(G),le(G);continue}if(v==="}"){let G=ye[ye.length-1];if(r.nobrace===!0||!G){le({type:"text",value:v,output:v});continue}let ae=")";if(G.dots===!0){let Ie=o.slice(),Ue=[];for(let Ae=Ie.length-1;Ae>=0&&(o.pop(),Ie[Ae].type!=="brace");Ae--)Ie[Ae].type!=="dots"&&Ue.unshift(Ie[Ae].value);ae=BO(Ue,r),C.backtrack=!0}if(G.comma!==!0&&G.dots!==!0){let Ie=C.output.slice(0,G.outputIndex),Ue=C.tokens.slice(G.tokensIndex);G.value=G.output="\\{",v=ae="\\}",C.output=Ie;for(let Ae of Ue)C.output+=Ae.output||Ae.value}le({type:"brace",value:v,output:ae}),_r("braces"),ye.pop();continue}if(v==="|"){Te.length>0&&Te[Te.length-1].conditions++,le({type:"text",value:v});continue}if(v===","){let G=v,ae=ye[ye.length-1];ae&&mr[mr.length-1]==="braces"&&(ae.comma=!0,G="|"),le({type:"comma",value:v,output:G});continue}if(v==="/"){if(D.type==="dot"&&C.index===C.start+1){C.start=C.index+1,C.consumed="",C.output="",o.pop(),D=s;continue}le({type:"slash",value:v,output:f});continue}if(v==="."){if(C.braces>0&&D.type==="dot"){D.value==="."&&(D.output=p);let G=ye[ye.length-1];D.type="dots",D.output+=v,D.value+=v,G.dots=!0;continue}if(C.braces+C.parens===0&&D.type!=="bos"&&D.type!=="slash"){le({type:"text",value:v,output:p});continue}le({type:"dot",value:v,output:p});continue}if(v==="?"){if(!(D&&D.value==="(")&&r.noextglob!==!0&&ge()==="("&&ge(2)!=="?"){cs("qmark",v);continue}if(D&&D.type==="paren"){let ae=ge(),Ie=v;if(ae==="<"&&!Xe.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(D.value==="("&&!/[!=<:]/.test(ae)||ae==="<"&&!/<([!=]|\w+>)/.test($t()))&&(Ie=`\\${v}`),le({type:"text",value:v,output:Ie});continue}if(r.dot!==!0&&(D.type==="slash"||D.type==="bos")){le({type:"qmark",value:v,output:q});continue}le({type:"qmark",value:v,output:w});continue}if(v==="!"){if(r.noextglob!==!0&&ge()==="("&&(ge(2)!=="?"||!/[!=<:]/.test(ge(3)))){cs("negate",v);continue}if(r.nonegate!==!0&&C.index===0){DT();continue}}if(v==="+"){if(r.noextglob!==!0&&ge()==="("&&ge(2)!=="?"){cs("plus",v);continue}if(D&&D.value==="("||r.regex===!1){le({type:"plus",value:v,output:d});continue}if(D&&(D.type==="bracket"||D.type==="paren"||D.type==="brace")||C.parens>0){le({type:"plus",value:v});continue}le({type:"plus",value:d});continue}if(v==="@"){if(r.noextglob!==!0&&ge()==="("&&ge(2)!=="?"){le({type:"at",extglob:!0,value:v,output:""});continue}le({type:"text",value:v});continue}if(v!=="*"){(v==="$"||v==="^")&&(v=`\\${v}`);let G=UO.exec($t());G&&(v+=G[0],C.index+=G[0].length),le({type:"text",value:v});continue}if(D&&(D.type==="globstar"||D.star===!0)){D.type="star",D.star=!0,D.value+=v,D.output=_e,C.backtrack=!0,C.globstar=!0,ft(v);continue}let x=$t();if(r.noextglob!==!0&&/^\([^?]/.test(x)){cs("star",v);continue}if(D.type==="star"){if(r.noglobstar===!0){ft(v);continue}let G=D.prev,ae=G.prev,Ie=G.type==="slash"||G.type==="bos",Ue=ae&&(ae.type==="star"||ae.type==="globstar");if(r.bash===!0&&(!Ie||x[0]&&x[0]!=="/")){le({type:"star",value:v,output:""});continue}let Ae=C.braces>0&&(G.type==="comma"||G.type==="brace"),Wt=Te.length&&(G.type==="pipe"||G.type==="paren");if(!Ie&&G.type!=="paren"&&!Ae&&!Wt){le({type:"star",value:v,output:""});continue}for(;x.slice(0,3)==="/**";){let jt=t[C.index+4];if(jt&&jt!=="/")break;x=x.slice(3),ft("/**",3)}if(G.type==="bos"&&it()){D.type="globstar",D.value+=v,D.output=ne(r),C.output=D.output,C.globstar=!0,ft(v);continue}if(G.type==="slash"&&G.prev.type!=="bos"&&!Ue&&it()){C.output=C.output.slice(0,-(G.output+D.output).length),G.output=`(?:${G.output}`,D.type="globstar",D.output=ne(r)+(r.strictSlashes?")":"|$)"),D.value+=v,C.globstar=!0,C.output+=G.output+D.output,ft(v);continue}if(G.type==="slash"&&G.prev.type!=="bos"&&x[0]==="/"){let jt=x[1]!==void 0?"|$":"";C.output=C.output.slice(0,-(G.output+D.output).length),G.output=`(?:${G.output}`,D.type="globstar",D.output=`${ne(r)}${f}|${f}${jt})`,D.value+=v,C.output+=G.output+D.output,C.globstar=!0,ft(v+Yt()),le({type:"slash",value:"/",output:""});continue}if(G.type==="bos"&&x[0]==="/"){D.type="globstar",D.value+=v,D.output=`(?:^|${f}|${ne(r)}${f})`,C.output=D.output,C.globstar=!0,ft(v+Yt()),le({type:"slash",value:"/",output:""});continue}C.output=C.output.slice(0,-D.output.length),D.type="globstar",D.output=ne(r),D.value+=v,C.output+=D.output,C.globstar=!0,ft(v);continue}let Ne={type:"star",value:v,output:_e};if(r.bash===!0){Ne.output=".*?",(D.type==="bos"||D.type==="slash")&&(Ne.output=M+Ne.output),le(Ne);continue}if(D&&(D.type==="bracket"||D.type==="paren")&&r.regex===!0){Ne.output=v,le(Ne);continue}(C.index===C.start||D.type==="slash"||D.type==="dot")&&(D.type==="dot"?(C.output+=L,D.output+=L):r.dot===!0?(C.output+=N,D.output+=N):(C.output+=M,D.output+=M),ge()!=="*"&&(C.output+=m,D.output+=m)),le(Ne)}for(;C.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(Un("closing","]"));C.output=Xe.escapeLast(C.output,"["),_r("brackets")}for(;C.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(Un("closing",")"));C.output=Xe.escapeLast(C.output,"("),_r("parens")}for(;C.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(Un("closing","}"));C.output=Xe.escapeLast(C.output,"{"),_r("braces")}if(r.strictSlashes!==!0&&(D.type==="star"||D.type==="bracket")&&le({type:"maybe_slash",value:"",output:`${f}?`}),C.backtrack===!0){C.output="";for(let x of C.tokens)C.output+=x.output!=null?x.output:x.value,x.suffix&&(C.output+=x.suffix)}return C};rc.fastpaths=(t,e)=>{let r={...e},n=typeof r.maxLength=="number"?Math.min(Ks,r.maxLength):Ks,i=t.length;if(i>n)throw new SyntaxError(`Input length: ${i}, exceeds maximum allowed length: ${n}`);t=xf[t]||t;let s=Xe.isWindows(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:l,DOTS_SLASH:c,NO_DOT:u,NO_DOTS:p,NO_DOTS_SLASH:d,STAR:f,START_ANCHOR:m}=wi.globChars(s),_=r.dot?p:u,I=r.dot?d:u,L=r.capture?"":"?:",N={negated:!1,prefix:""},w=r.bash===!0?".*?":f;r.capture&&(w=`(${w})`);let q=M=>M.noglobstar===!0?w:`(${L}(?:(?!${m}${M.dot?c:o}).)*?)`,Q=M=>{switch(M){case"*":return`${_}${l}${w}`;case".*":return`${o}${l}${w}`;case"*.*":return`${_}${w}${o}${l}${w}`;case"*/*":return`${_}${w}${a}${l}${I}${w}`;case"**":return _+q(r);case"**/*":return`(?:${_}${q(r)}${a})?${I}${l}${w}`;case"**/*.*":return`(?:${_}${q(r)}${a})?${I}${w}${o}${l}${w}`;case"**/.*":return`(?:${_}${q(r)}${a})?${o}${l}${w}`;default:{let ee=/^(.*?)\.(\w+)$/.exec(M);if(!ee)return;let _e=Q(ee[1]);return _e?_e+o+ee[2]:void 0}}},H=Xe.removePrefix(t,N),ne=Q(H);return ne&&r.strictSlashes!==!0&&(ne+=`${a}?`),ne};Bf.exports=rc});var $f=U((kx,Yf)=>{"use strict";var VO=ve("path"),zO=Gf(),nc=Kf(),ic=vi(),JO=Di(),qO=t=>t&&typeof t=="object"&&!Array.isArray(t),Fe=(t,e,r=!1)=>{if(Array.isArray(t)){let u=t.map(d=>Fe(d,e,r));return d=>{for(let f of u){let m=f(d);if(m)return m}return!1}}let n=qO(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!n)throw new TypeError("Expected pattern to be a non-empty string");let i=e||{},s=ic.isWindows(e),o=n?Fe.compileRe(t,e):Fe.makeRe(t,e,!1,!0),a=o.state;delete o.state;let l=()=>!1;if(i.ignore){let u={...e,ignore:null,onMatch:null,onResult:null};l=Fe(i.ignore,u,r)}let c=(u,p=!1)=>{let{isMatch:d,match:f,output:m}=Fe.test(u,o,e,{glob:t,posix:s}),_={glob:t,state:a,regex:o,posix:s,input:u,output:m,match:f,isMatch:d};return typeof i.onResult=="function"&&i.onResult(_),d===!1?(_.isMatch=!1,p?_:!1):l(u)?(typeof i.onIgnore=="function"&&i.onIgnore(_),_.isMatch=!1,p?_:!1):(typeof i.onMatch=="function"&&i.onMatch(_),p?_:!0)};return r&&(c.state=a),c};Fe.test=(t,e,r,{glob:n,posix:i}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let s=r||{},o=s.format||(i?ic.toPosixSlashes:null),a=t===n,l=a&&o?o(t):t;return a===!1&&(l=o?o(t):t,a=l===n),(a===!1||s.capture===!0)&&(s.matchBase===!0||s.basename===!0?a=Fe.matchBase(t,e,r,i):a=e.exec(l)),{isMatch:!!a,match:a,output:l}};Fe.matchBase=(t,e,r,n=ic.isWindows(r))=>(e instanceof RegExp?e:Fe.makeRe(e,r)).test(VO.basename(t));Fe.isMatch=(t,e,r)=>Fe(e,r)(t);Fe.parse=(t,e)=>Array.isArray(t)?t.map(r=>Fe.parse(r,e)):nc(t,{...e,fastpaths:!1});Fe.scan=(t,e)=>zO(t,e);Fe.compileRe=(t,e,r=!1,n=!1)=>{if(r===!0)return t.output;let i=e||{},s=i.contains?"":"^",o=i.contains?"":"$",a=`${s}(?:${t.output})${o}`;t&&t.negated===!0&&(a=`^(?!${a}).*$`);let l=Fe.toRegex(a,e);return n===!0&&(l.state=t),l};Fe.makeRe=(t,e={},r=!1,n=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let i={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(i.output=nc.fastpaths(t,e)),i.output||(i=nc(t,e)),Fe.compileRe(i,e,r,n)};Fe.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Fe.constants=JO;Yf.exports=Fe});var jf=U((Gx,Wf)=>{"use strict";Wf.exports=$f()});var Xf=U((xx,Qf)=>{"use strict";var zf=ve("util"),Jf=yf(),qt=jf(),sc=vi(),Vf=t=>t===""||t==="./",qf=t=>{let e=t.indexOf("{");return e>-1&&t.indexOf("}",e)>-1},Le=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let n=new Set,i=new Set,s=new Set,o=0,a=u=>{s.add(u.output),r&&r.onResult&&r.onResult(u)};for(let u=0;u<e.length;u++){let p=qt(String(e[u]),{...r,onResult:a},!0),d=p.state.negated||p.state.negatedExtglob;d&&o++;for(let f of t){let m=p(f,!0);(d?!m.isMatch:m.isMatch)&&(d?n.add(m.output):(n.delete(m.output),i.add(m.output)))}}let c=(o===e.length?[...s]:[...i]).filter(u=>!n.has(u));if(r&&c.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(u=>u.replace(/\\/g,"")):e}return c};Le.match=Le;Le.matcher=(t,e)=>qt(t,e);Le.isMatch=(t,e,r)=>qt(e,r)(t);Le.any=Le.isMatch;Le.not=(t,e,r={})=>{e=[].concat(e).map(String);let n=new Set,i=[],s=a=>{r.onResult&&r.onResult(a),i.push(a.output)},o=new Set(Le(t,e,{...r,onResult:s}));for(let a of i)o.has(a)||n.add(a);return[...n]};Le.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${zf.inspect(t)}"`);if(Array.isArray(e))return e.some(n=>Le.contains(t,n,r));if(typeof e=="string"){if(Vf(t)||Vf(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return Le.isMatch(t,e,{...r,contains:!0})};Le.matchKeys=(t,e,r)=>{if(!sc.isObject(t))throw new TypeError("Expected the first argument to be an object");let n=Le(Object.keys(t),e,r),i={};for(let s of n)i[s]=t[s];return i};Le.some=(t,e,r)=>{let n=[].concat(t);for(let i of[].concat(e)){let s=qt(String(i),r);if(n.some(o=>s(o)))return!0}return!1};Le.every=(t,e,r)=>{let n=[].concat(t);for(let i of[].concat(e)){let s=qt(String(i),r);if(!n.every(o=>s(o)))return!1}return!0};Le.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${zf.inspect(t)}"`);return[].concat(e).every(n=>qt(n,r)(t))};Le.capture=(t,e,r)=>{let n=sc.isWindows(r),s=qt.makeRe(String(t),{...r,capture:!0}).exec(n?sc.toPosixSlashes(e):e);if(s)return s.slice(1).map(o=>o===void 0?"":o)};Le.makeRe=(...t)=>qt.makeRe(...t);Le.scan=(...t)=>qt.scan(...t);Le.parse=(t,e)=>{let r=[];for(let n of[].concat(t||[]))for(let i of Jf(String(n),e))r.push(qt.parse(i,e));return r};Le.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!qf(t)?[t]:Jf(t,e)};Le.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return Le.braces(t,{...e,expand:!0})};Le.hasBraces=qf;Qf.exports=Le});var lh=U(Z=>{"use strict";Object.defineProperty(Z,"__esModule",{value:!0});Z.isAbsolute=Z.partitionAbsoluteAndRelative=Z.removeDuplicateSlashes=Z.matchAny=Z.convertPatternsToRe=Z.makeRe=Z.getPatternParts=Z.expandBraceExpansion=Z.expandPatternsWithBraceExpansion=Z.isAffectDepthOfReadingPattern=Z.endsWithSlashGlobStar=Z.hasGlobStar=Z.getBaseDirectory=Z.isPatternRelatedToParentDirectory=Z.getPatternsOutsideCurrentDirectory=Z.getPatternsInsideCurrentDirectory=Z.getPositivePatterns=Z.getNegativePatterns=Z.isPositivePattern=Z.isNegativePattern=Z.convertToNegativePattern=Z.convertToPositivePattern=Z.isDynamicPattern=Z.isStaticPattern=void 0;var Zf=ve("path"),QO=Bg(),oc=Xf(),eh="**",XO="\\",ZO=/[*?]|^!/,ey=/\[[^[]*]/,ty=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,ry=/[!*+?@]\([^(]*\)/,ny=/,|\.\./,iy=/(?!^)\/{2,}/g;function th(t,e={}){return!rh(t,e)}Z.isStaticPattern=th;function rh(t,e={}){return t===""?!1:!!(e.caseSensitiveMatch===!1||t.includes(XO)||ZO.test(t)||ey.test(t)||ty.test(t)||e.extglob!==!1&&ry.test(t)||e.braceExpansion!==!1&&sy(t))}Z.isDynamicPattern=rh;function sy(t){let e=t.indexOf("{");if(e===-1)return!1;let r=t.indexOf("}",e+1);if(r===-1)return!1;let n=t.slice(e,r);return ny.test(n)}function oy(t){return Ys(t)?t.slice(1):t}Z.convertToPositivePattern=oy;function ay(t){return"!"+t}Z.convertToNegativePattern=ay;function Ys(t){return t.startsWith("!")&&t[1]!=="("}Z.isNegativePattern=Ys;function nh(t){return!Ys(t)}Z.isPositivePattern=nh;function ly(t){return t.filter(Ys)}Z.getNegativePatterns=ly;function cy(t){return t.filter(nh)}Z.getPositivePatterns=cy;function uy(t){return t.filter(e=>!ac(e))}Z.getPatternsInsideCurrentDirectory=uy;function dy(t){return t.filter(ac)}Z.getPatternsOutsideCurrentDirectory=dy;function ac(t){return t.startsWith("..")||t.startsWith("./..")}Z.isPatternRelatedToParentDirectory=ac;function py(t){return QO(t,{flipBackslashes:!1})}Z.getBaseDirectory=py;function gy(t){return t.includes(eh)}Z.hasGlobStar=gy;function ih(t){return t.endsWith("/"+eh)}Z.endsWithSlashGlobStar=ih;function fy(t){let e=Zf.basename(t);return ih(t)||th(e)}Z.isAffectDepthOfReadingPattern=fy;function hy(t){return t.reduce((e,r)=>e.concat(sh(r)),[])}Z.expandPatternsWithBraceExpansion=hy;function sh(t){let e=oc.braces(t,{expand:!0,nodupes:!0,keepEscaping:!0});return e.sort((r,n)=>r.length-n.length),e.filter(r=>r!=="")}Z.expandBraceExpansion=sh;function my(t,e){let{parts:r}=oc.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.length===0&&(r=[t]),r[0].startsWith("/")&&(r[0]=r[0].slice(1),r.unshift("")),r}Z.getPatternParts=my;function oh(t,e){return oc.makeRe(t,e)}Z.makeRe=oh;function _y(t,e){return t.map(r=>oh(r,e))}Z.convertPatternsToRe=_y;function Ey(t,e){return e.some(r=>r.test(t))}Z.matchAny=Ey;function Sy(t){return t.replace(iy,"/")}Z.removeDuplicateSlashes=Sy;function Ty(t){let e=[],r=[];for(let n of t)ah(n)?e.push(n):r.push(n);return[e,r]}Z.partitionAbsoluteAndRelative=Ty;function ah(t){return Zf.isAbsolute(t)}Z.isAbsolute=ah});var ph=U((Hx,dh)=>{"use strict";var Ay=ve("stream"),ch=Ay.PassThrough,Ry=Array.prototype.slice;dh.exports=Oy;function Oy(){let t=[],e=Ry.call(arguments),r=!1,n=e[e.length-1];n&&!Array.isArray(n)&&n.pipe==null?e.pop():n={};let i=n.end!==!1,s=n.pipeError===!0;n.objectMode==null&&(n.objectMode=!0),n.highWaterMark==null&&(n.highWaterMark=64*1024);let o=ch(n);function a(){for(let u=0,p=arguments.length;u<p;u++)t.push(uh(arguments[u],n));return l(),this}function l(){if(r)return;r=!0;let u=t.shift();if(!u){process.nextTick(c);return}Array.isArray(u)||(u=[u]);let p=u.length+1;function d(){--p>0||(r=!1,l())}function f(m){function _(){m.removeListener("merge2UnpipeEnd",_),m.removeListener("end",_),s&&m.removeListener("error",I),d()}function I(L){o.emit("error",L)}if(m._readableState.endEmitted)return d();m.on("merge2UnpipeEnd",_),m.on("end",_),s&&m.on("error",I),m.pipe(o,{end:!1}),m.resume()}for(let m=0;m<u.length;m++)f(u[m]);d()}function c(){r=!1,o.emit("queueDrain"),i&&o.end()}return o.setMaxListeners(0),o.add=a,o.on("unpipe",function(u){u.emit("merge2UnpipeEnd")}),e.length&&a.apply(null,e),o}function uh(t,e){if(Array.isArray(t))for(let r=0,n=t.length;r<n;r++)t[r]=uh(t[r],e);else{if(!t._readableState&&t.pipe&&(t=t.pipe(ch(e))),!t._readableState||!t.pause||!t.pipe)throw new Error("Only readable stream can be merged.");t.pause()}return t}});var fh=U($s=>{"use strict";Object.defineProperty($s,"__esModule",{value:!0});$s.merge=void 0;var yy=ph();function Iy(t){let e=yy(t);return t.forEach(r=>{r.once("error",n=>e.emit("error",n))}),e.once("close",()=>gh(t)),e.once("end",()=>gh(t)),e}$s.merge=Iy;function gh(t){t.forEach(e=>e.emit("close"))}});var hh=U(Hn=>{"use strict";Object.defineProperty(Hn,"__esModule",{value:!0});Hn.isEmpty=Hn.isString=void 0;function Ly(t){return typeof t=="string"}Hn.isString=Ly;function Ny(t){return t===""}Hn.isEmpty=Ny});var cr=U(Ze=>{"use strict";Object.defineProperty(Ze,"__esModule",{value:!0});Ze.string=Ze.stream=Ze.pattern=Ze.path=Ze.fs=Ze.errno=Ze.array=void 0;var Cy=Cg();Ze.array=Cy;var Py=Pg();Ze.errno=Py;var Dy=Dg();Ze.fs=Dy;var vy=Fg();Ze.path=vy;var by=lh();Ze.pattern=by;var wy=fh();Ze.stream=wy;var Fy=hh();Ze.string=Fy});var Sh=U(et=>{"use strict";Object.defineProperty(et,"__esModule",{value:!0});et.convertPatternGroupToTask=et.convertPatternGroupsToTasks=et.groupPatternsByBaseDirectory=et.getNegativePatternsAsPositive=et.getPositivePatterns=et.convertPatternsToTasks=et.generate=void 0;var kt=cr();function My(t,e){let r=mh(t,e),n=mh(e.ignore,e),i=_h(r),s=Eh(r,n),o=i.filter(u=>kt.pattern.isStaticPattern(u,e)),a=i.filter(u=>kt.pattern.isDynamicPattern(u,e)),l=lc(o,s,!1),c=lc(a,s,!0);return l.concat(c)}et.generate=My;function mh(t,e){let r=t;return e.braceExpansion&&(r=kt.pattern.expandPatternsWithBraceExpansion(r)),e.baseNameMatch&&(r=r.map(n=>n.includes("/")?n:`**/${n}`)),r.map(n=>kt.pattern.removeDuplicateSlashes(n))}function lc(t,e,r){let n=[],i=kt.pattern.getPatternsOutsideCurrentDirectory(t),s=kt.pattern.getPatternsInsideCurrentDirectory(t),o=cc(i),a=cc(s);return n.push(...uc(o,e,r)),"."in a?n.push(dc(".",s,e,r)):n.push(...uc(a,e,r)),n}et.convertPatternsToTasks=lc;function _h(t){return kt.pattern.getPositivePatterns(t)}et.getPositivePatterns=_h;function Eh(t,e){return kt.pattern.getNegativePatterns(t).concat(e).map(kt.pattern.convertToPositivePattern)}et.getNegativePatternsAsPositive=Eh;function cc(t){let e={};return t.reduce((r,n)=>{let i=kt.pattern.getBaseDirectory(n);return i in r?r[i].push(n):r[i]=[n],r},e)}et.groupPatternsByBaseDirectory=cc;function uc(t,e,r){return Object.keys(t).map(n=>dc(n,t[n],e,r))}et.convertPatternGroupsToTasks=uc;function dc(t,e,r,n){return{dynamic:n,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(kt.pattern.convertToNegativePattern))}}et.convertPatternGroupToTask=dc});var Ah=U(Ws=>{"use strict";Object.defineProperty(Ws,"__esModule",{value:!0});Ws.read=void 0;function ky(t,e,r){e.fs.lstat(t,(n,i)=>{if(n!==null){Th(r,n);return}if(!i.isSymbolicLink()||!e.followSymbolicLink){pc(r,i);return}e.fs.stat(t,(s,o)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){Th(r,s);return}pc(r,i);return}e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),pc(r,o)})})}Ws.read=ky;function Th(t,e){t(e)}function pc(t,e){t(null,e)}});var Rh=U(js=>{"use strict";Object.defineProperty(js,"__esModule",{value:!0});js.read=void 0;function Gy(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let n=e.fs.statSync(t);return e.markSymbolicLink&&(n.isSymbolicLink=()=>!0),n}catch(n){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw n}}js.read=Gy});var Oh=U(Dr=>{"use strict";Object.defineProperty(Dr,"__esModule",{value:!0});Dr.createFileSystemAdapter=Dr.FILE_SYSTEM_ADAPTER=void 0;var Vs=ve("fs");Dr.FILE_SYSTEM_ADAPTER={lstat:Vs.lstat,stat:Vs.stat,lstatSync:Vs.lstatSync,statSync:Vs.statSync};function xy(t){return t===void 0?Dr.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Dr.FILE_SYSTEM_ADAPTER),t)}Dr.createFileSystemAdapter=xy});var yh=U(fc=>{"use strict";Object.defineProperty(fc,"__esModule",{value:!0});var Uy=Oh(),gc=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=Uy.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e??r}};fc.default=gc});var cn=U(vr=>{"use strict";Object.defineProperty(vr,"__esModule",{value:!0});vr.statSync=vr.stat=vr.Settings=void 0;var Ih=Ah(),Hy=Rh(),hc=yh();vr.Settings=hc.default;function By(t,e,r){if(typeof e=="function"){Ih.read(t,mc(),e);return}Ih.read(t,mc(e),r)}vr.stat=By;function Ky(t,e){let r=mc(e);return Hy.read(t,r)}vr.statSync=Ky;function mc(t={}){return t instanceof hc.default?t:new hc.default(t)}});var Ch=U((qx,Nh)=>{"use strict";var Lh;Nh.exports=typeof queueMicrotask=="function"?queueMicrotask.bind(typeof window<"u"?window:global):t=>(Lh||(Lh=Promise.resolve())).then(t).catch(e=>setTimeout(()=>{throw e},0))});var Dh=U((Qx,Ph)=>{"use strict";Ph.exports=$y;var Yy=Ch();function $y(t,e){let r,n,i,s=!0;Array.isArray(t)?(r=[],n=t.length):(i=Object.keys(t),r={},n=i.length);function o(l){function c(){e&&e(l,r),e=null}s?Yy(c):c()}function a(l,c,u){r[l]=u,(--n===0||c)&&o(c)}n?i?i.forEach(function(l){t[l](function(c,u){a(l,c,u)})}):t.forEach(function(l,c){l(function(u,p){a(c,u,p)})}):o(null),s=!1}});var _c=U(Js=>{"use strict";Object.defineProperty(Js,"__esModule",{value:!0});Js.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var zs=process.versions.node.split(".");if(zs[0]===void 0||zs[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var vh=Number.parseInt(zs[0],10),Wy=Number.parseInt(zs[1],10),bh=10,jy=10,Vy=vh>bh,zy=vh===bh&&Wy>=jy;Js.IS_SUPPORT_READDIR_WITH_FILE_TYPES=Vy||zy});var wh=U(qs=>{"use strict";Object.defineProperty(qs,"__esModule",{value:!0});qs.createDirentFromStats=void 0;var Ec=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function Jy(t,e){return new Ec(t,e)}qs.createDirentFromStats=Jy});var Sc=U(Qs=>{"use strict";Object.defineProperty(Qs,"__esModule",{value:!0});Qs.fs=void 0;var qy=wh();Qs.fs=qy});var Tc=U(Xs=>{"use strict";Object.defineProperty(Xs,"__esModule",{value:!0});Xs.joinPathSegments=void 0;function Qy(t,e,r){return t.endsWith(r)?t+e:t+r+e}Xs.joinPathSegments=Qy});var Uh=U(br=>{"use strict";Object.defineProperty(br,"__esModule",{value:!0});br.readdir=br.readdirWithFileTypes=br.read=void 0;var Xy=cn(),Fh=Dh(),Zy=_c(),Mh=Sc(),kh=Tc();function eI(t,e,r){if(!e.stats&&Zy.IS_SUPPORT_READDIR_WITH_FILE_TYPES){Gh(t,e,r);return}xh(t,e,r)}br.read=eI;function Gh(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(n,i)=>{if(n!==null){Zs(r,n);return}let s=i.map(a=>({dirent:a,name:a.name,path:kh.joinPathSegments(t,a.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){Ac(r,s);return}let o=s.map(a=>tI(a,e));Fh(o,(a,l)=>{if(a!==null){Zs(r,a);return}Ac(r,l)})})}br.readdirWithFileTypes=Gh;function tI(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(n,i)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){r(n);return}r(null,t);return}t.dirent=Mh.fs.createDirentFromStats(t.name,i),r(null,t)})}}function xh(t,e,r){e.fs.readdir(t,(n,i)=>{if(n!==null){Zs(r,n);return}let s=i.map(o=>{let a=kh.joinPathSegments(t,o,e.pathSegmentSeparator);return l=>{Xy.stat(a,e.fsStatSettings,(c,u)=>{if(c!==null){l(c);return}let p={name:o,path:a,dirent:Mh.fs.createDirentFromStats(o,u)};e.stats&&(p.stats=u),l(null,p)})}});Fh(s,(o,a)=>{if(o!==null){Zs(r,o);return}Ac(r,a)})})}br.readdir=xh;function Zs(t,e){t(e)}function Ac(t,e){t(null,e)}});var $h=U(wr=>{"use strict";Object.defineProperty(wr,"__esModule",{value:!0});wr.readdir=wr.readdirWithFileTypes=wr.read=void 0;var rI=cn(),nI=_c(),Hh=Sc(),Bh=Tc();function iI(t,e){return!e.stats&&nI.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Kh(t,e):Yh(t,e)}wr.read=iI;function Kh(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(n=>{let i={dirent:n,name:n.name,path:Bh.joinPathSegments(t,n.name,e.pathSegmentSeparator)};if(i.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let s=e.fs.statSync(i.path);i.dirent=Hh.fs.createDirentFromStats(i.name,s)}catch(s){if(e.throwErrorOnBrokenSymbolicLink)throw s}return i})}wr.readdirWithFileTypes=Kh;function Yh(t,e){return e.fs.readdirSync(t).map(n=>{let i=Bh.joinPathSegments(t,n,e.pathSegmentSeparator),s=rI.statSync(i,e.fsStatSettings),o={name:n,path:i,dirent:Hh.fs.createDirentFromStats(n,s)};return e.stats&&(o.stats=s),o})}wr.readdir=Yh});var Wh=U(Fr=>{"use strict";Object.defineProperty(Fr,"__esModule",{value:!0});Fr.createFileSystemAdapter=Fr.FILE_SYSTEM_ADAPTER=void 0;var Bn=ve("fs");Fr.FILE_SYSTEM_ADAPTER={lstat:Bn.lstat,stat:Bn.stat,lstatSync:Bn.lstatSync,statSync:Bn.statSync,readdir:Bn.readdir,readdirSync:Bn.readdirSync};function sI(t){return t===void 0?Fr.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Fr.FILE_SYSTEM_ADAPTER),t)}Fr.createFileSystemAdapter=sI});var jh=U(Oc=>{"use strict";Object.defineProperty(Oc,"__esModule",{value:!0});var oI=ve("path"),aI=cn(),lI=Wh(),Rc=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=lI.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,oI.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new aI.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};Oc.default=Rc});var eo=U(Mr=>{"use strict";Object.defineProperty(Mr,"__esModule",{value:!0});Mr.Settings=Mr.scandirSync=Mr.scandir=void 0;var Vh=Uh(),cI=$h(),yc=jh();Mr.Settings=yc.default;function uI(t,e,r){if(typeof e=="function"){Vh.read(t,Ic(),e);return}Vh.read(t,Ic(e),r)}Mr.scandir=uI;function dI(t,e){let r=Ic(e);return cI.read(t,r)}Mr.scandirSync=dI;function Ic(t={}){return t instanceof yc.default?t:new yc.default(t)}});var Jh=U((aU,zh)=>{"use strict";function pI(t){var e=new t,r=e;function n(){var s=e;return s.next?e=s.next:(e=new t,r=e),s.next=null,s}function i(s){r.next=s,r=s}return{get:n,release:i}}zh.exports=pI});var Qh=U((lU,Lc)=>{"use strict";var gI=Jh();function qh(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),!(r>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");var n=gI(fI),i=null,s=null,o=0,a=null,l={push:_,drain:dt,saturated:dt,pause:u,paused:!1,get concurrency(){return r},set concurrency(H){if(!(H>=1))throw new Error("fastqueue concurrency must be equal to or greater than 1");if(r=H,!l.paused)for(;i&&o<r;)o++,L()},running:c,resume:f,idle:m,length:p,getQueue:d,unshift:I,empty:dt,kill:N,killAndDrain:w,error:Q,abort:q};return l;function c(){return o}function u(){l.paused=!0}function p(){for(var H=i,ne=0;H;)H=H.next,ne++;return ne}function d(){for(var H=i,ne=[];H;)ne.push(H.value),H=H.next;return ne}function f(){if(l.paused){if(l.paused=!1,i===null){o++,L();return}for(;i&&o<r;)o++,L()}}function m(){return o===0&&l.length()===0}function _(H,ne){var M=n.get();M.context=t,M.release=L,M.value=H,M.callback=ne||dt,M.errorHandler=a,o>=r||l.paused?s?(s.next=M,s=M):(i=M,s=M,l.saturated()):(o++,e.call(t,M.value,M.worked))}function I(H,ne){var M=n.get();M.context=t,M.release=L,M.value=H,M.callback=ne||dt,M.errorHandler=a,o>=r||l.paused?i?(M.next=i,i=M):(i=M,s=M,l.saturated()):(o++,e.call(t,M.value,M.worked))}function L(H){H&&n.release(H);var ne=i;ne&&o<=r?l.paused?o--:(s===i&&(s=null),i=ne.next,ne.next=null,e.call(t,ne.value,ne.worked),s===null&&l.empty()):--o===0&&l.drain()}function N(){i=null,s=null,l.drain=dt}function w(){i=null,s=null,l.drain(),l.drain=dt}function q(){var H=i;for(i=null,s=null;H;){var ne=H.next,M=H.callback,ee=H.errorHandler,_e=H.value,C=H.context;H.value=null,H.callback=dt,H.errorHandler=null,ee&&ee(new Error("abort"),_e),M.call(C,new Error("abort")),H.release(H),H=ne}l.drain=dt}function Q(H){a=H}}function dt(){}function fI(){this.value=null,this.callback=dt,this.next=null,this.release=dt,this.context=null,this.errorHandler=null;var t=this;this.worked=function(r,n){var i=t.callback,s=t.errorHandler,o=t.value;t.value=null,t.callback=dt,t.errorHandler&&s(r,o),i.call(t.context,r,n),t.release(t)}}function hI(t,e,r){typeof t=="function"&&(r=e,e=t,t=null);function n(u,p){e.call(this,u).then(function(d){p(null,d)},p)}var i=qh(t,n,r),s=i.push,o=i.unshift;return i.push=a,i.unshift=l,i.drained=c,i;function a(u){var p=new Promise(function(d,f){s(u,function(m,_){if(m){f(m);return}d(_)})});return p.catch(dt),p}function l(u){var p=new Promise(function(d,f){o(u,function(m,_){if(m){f(m);return}d(_)})});return p.catch(dt),p}function c(){var u=new Promise(function(p){process.nextTick(function(){if(i.idle())p();else{var d=i.drain;i.drain=function(){typeof d=="function"&&d(),p(),i.drain=d}}})});return u}}Lc.exports=qh;Lc.exports.promise=hI});var to=U(Qt=>{"use strict";Object.defineProperty(Qt,"__esModule",{value:!0});Qt.joinPathSegments=Qt.replacePathSegmentSeparator=Qt.isAppliedFilter=Qt.isFatalError=void 0;function mI(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Qt.isFatalError=mI;function _I(t,e){return t===null||t(e)}Qt.isAppliedFilter=_I;function EI(t,e){return t.split(/[/\\]/).join(e)}Qt.replacePathSegmentSeparator=EI;function SI(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}Qt.joinPathSegments=SI});var Pc=U(Cc=>{"use strict";Object.defineProperty(Cc,"__esModule",{value:!0});var TI=to(),Nc=class{constructor(e,r){this._root=e,this._settings=r,this._root=TI.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};Cc.default=Nc});var bc=U(vc=>{"use strict";Object.defineProperty(vc,"__esModule",{value:!0});var AI=ve("events"),RI=eo(),OI=Qh(),ro=to(),yI=Pc(),Dc=class extends yI.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=RI.scandir,this._emitter=new AI.EventEmitter,this._queue=OI(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let n={directory:e,base:r};this._queue.push(n,i=>{i!==null&&this._handleError(i)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(n,i)=>{if(n!==null){r(n,void 0);return}for(let s of i)this._handleEntry(s,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!ro.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let n=e.path;r!==void 0&&(e.path=ro.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),ro.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&ro.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(n,r===void 0?void 0:e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};vc.default=Dc});var Xh=U(Fc=>{"use strict";Object.defineProperty(Fc,"__esModule",{value:!0});var II=bc(),wc=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new II.default(this._root,this._settings),this._storage=[]}read(e){this._reader.onError(r=>{LI(e,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{NI(e,this._storage)}),this._reader.read()}};Fc.default=wc;function LI(t,e){t(e)}function NI(t,e){t(null,e)}});var Zh=U(kc=>{"use strict";Object.defineProperty(kc,"__esModule",{value:!0});var CI=ve("stream"),PI=bc(),Mc=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new PI.default(this._root,this._settings),this._stream=new CI.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};kc.default=Mc});var em=U(xc=>{"use strict";Object.defineProperty(xc,"__esModule",{value:!0});var DI=eo(),no=to(),vI=Pc(),Gc=class extends vI.default{constructor(){super(...arguments),this._scandir=DI.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let n=this._scandir(e,this._settings.fsScandirSettings);for(let i of n)this._handleEntry(i,r)}catch(n){this._handleError(n)}}_handleError(e){if(no.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let n=e.path;r!==void 0&&(e.path=no.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),no.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&no.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(n,r===void 0?void 0:e.path)}_pushToStorage(e){this._storage.push(e)}};xc.default=Gc});var tm=U(Hc=>{"use strict";Object.defineProperty(Hc,"__esModule",{value:!0});var bI=em(),Uc=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new bI.default(this._root,this._settings)}read(){return this._reader.read()}};Hc.default=Uc});var rm=U(Kc=>{"use strict";Object.defineProperty(Kc,"__esModule",{value:!0});var wI=ve("path"),FI=eo(),Bc=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,wI.sep),this.fsScandirSettings=new FI.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};Kc.default=Bc});var so=U(Xt=>{"use strict";Object.defineProperty(Xt,"__esModule",{value:!0});Xt.Settings=Xt.walkStream=Xt.walkSync=Xt.walk=void 0;var nm=Xh(),MI=Zh(),kI=tm(),Yc=rm();Xt.Settings=Yc.default;function GI(t,e,r){if(typeof e=="function"){new nm.default(t,io()).read(e);return}new nm.default(t,io(e)).read(r)}Xt.walk=GI;function xI(t,e){let r=io(e);return new kI.default(t,r).read()}Xt.walkSync=xI;function UI(t,e){let r=io(e);return new MI.default(t,r).read()}Xt.walkStream=UI;function io(t={}){return t instanceof Yc.default?t:new Yc.default(t)}});var oo=U(Wc=>{"use strict";Object.defineProperty(Wc,"__esModule",{value:!0});var HI=ve("path"),BI=cn(),im=cr(),$c=class{constructor(e){this._settings=e,this._fsStatSettings=new BI.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return HI.resolve(this._settings.cwd,e)}_makeEntry(e,r){let n={name:r,path:r,dirent:im.fs.createDirentFromStats(r,e)};return this._settings.stats&&(n.stats=e),n}_isFatalError(e){return!im.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};Wc.default=$c});var zc=U(Vc=>{"use strict";Object.defineProperty(Vc,"__esModule",{value:!0});var KI=ve("stream"),YI=cn(),$I=so(),WI=oo(),jc=class extends WI.default{constructor(){super(...arguments),this._walkStream=$I.walkStream,this._stat=YI.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let n=e.map(this._getFullEntryPath,this),i=new KI.PassThrough({objectMode:!0});i._write=(s,o,a)=>this._getEntry(n[s],e[s],r).then(l=>{l!==null&&r.entryFilter(l)&&i.push(l),s===n.length-1&&i.end(),a()}).catch(a);for(let s=0;s<n.length;s++)i.write(s);return i}_getEntry(e,r,n){return this._getStat(e).then(i=>this._makeEntry(i,r)).catch(i=>{if(n.errorFilter(i))return null;throw i})}_getStat(e){return new Promise((r,n)=>{this._stat(e,this._fsStatSettings,(i,s)=>i===null?r(s):n(i))})}};Vc.default=jc});var sm=U(qc=>{"use strict";Object.defineProperty(qc,"__esModule",{value:!0});var jI=so(),VI=oo(),zI=zc(),Jc=class extends VI.default{constructor(){super(...arguments),this._walkAsync=jI.walk,this._readerStream=new zI.default(this._settings)}dynamic(e,r){return new Promise((n,i)=>{this._walkAsync(e,r,(s,o)=>{s===null?n(o):i(s)})})}async static(e,r){let n=[],i=this._readerStream.static(e,r);return new Promise((s,o)=>{i.once("error",o),i.on("data",a=>n.push(a)),i.once("end",()=>s(n))})}};qc.default=Jc});var om=U(Xc=>{"use strict";Object.defineProperty(Xc,"__esModule",{value:!0});var Fi=cr(),Qc=class{constructor(e,r,n){this._patterns=e,this._settings=r,this._micromatchOptions=n,this._storage=[],this._fillStorage()}_fillStorage(){for(let e of this._patterns){let r=this._getPatternSegments(e),n=this._splitSegmentsIntoSections(r);this._storage.push({complete:n.length<=1,pattern:e,segments:r,sections:n})}}_getPatternSegments(e){return Fi.pattern.getPatternParts(e,this._micromatchOptions).map(n=>Fi.pattern.isDynamicPattern(n,this._settings)?{dynamic:!0,pattern:n,patternRe:Fi.pattern.makeRe(n,this._micromatchOptions)}:{dynamic:!1,pattern:n})}_splitSegmentsIntoSections(e){return Fi.array.splitWhen(e,r=>r.dynamic&&Fi.pattern.hasGlobStar(r.pattern))}};Xc.default=Qc});var am=U(eu=>{"use strict";Object.defineProperty(eu,"__esModule",{value:!0});var JI=om(),Zc=class extends JI.default{match(e){let r=e.split("/"),n=r.length,i=this._storage.filter(s=>!s.complete||s.segments.length>n);for(let s of i){let o=s.sections[0];if(!s.complete&&n>o.length||r.every((l,c)=>{let u=s.segments[c];return!!(u.dynamic&&u.patternRe.test(l)||!u.dynamic&&u.pattern===l)}))return!0}return!1}};eu.default=Zc});var lm=U(ru=>{"use strict";Object.defineProperty(ru,"__esModule",{value:!0});var ao=cr(),qI=am(),tu=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,n){let i=this._getMatcher(r),s=this._getNegativePatternsRe(n);return o=>this._filter(e,o,i,s)}_getMatcher(e){return new qI.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(ao.pattern.isAffectDepthOfReadingPattern);return ao.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,n,i){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let s=ao.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(s,n)?!1:this._isSkippedByNegativePatterns(s,i)}_isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntryLevel(e,r)>=this._settings.deep}_getEntryLevel(e,r){let n=r.split("/").length;if(e==="")return n;let i=e.split("/").length;return n-i}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!ao.pattern.matchAny(e,r)}};ru.default=tu});var cm=U(iu=>{"use strict";Object.defineProperty(iu,"__esModule",{value:!0});var kr=cr(),nu=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let[n,i]=kr.pattern.partitionAbsoluteAndRelative(r),s={positive:{all:kr.pattern.convertPatternsToRe(e,this._micromatchOptions)},negative:{absolute:kr.pattern.convertPatternsToRe(n,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0})),relative:kr.pattern.convertPatternsToRe(i,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0}))}};return o=>this._filter(o,s)}_filter(e,r){let n=kr.path.removeLeadingDotSegment(e.path);if(this._settings.unique&&this._isDuplicateEntry(n)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e))return!1;let i=this._isMatchToPatternsSet(n,r,e.dirent.isDirectory());return this._settings.unique&&i&&this._createIndexRecord(n),i}_isDuplicateEntry(e){return this.index.has(e)}_createIndexRecord(e){this.index.set(e,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isMatchToPatternsSet(e,r,n){return!(!this._isMatchToPatterns(e,r.positive.all,n)||this._isMatchToPatterns(e,r.negative.relative,n)||this._isMatchToAbsoluteNegative(e,r.negative.absolute,n))}_isMatchToAbsoluteNegative(e,r,n){if(r.length===0)return!1;let i=kr.path.makeAbsolute(this._settings.cwd,e);return this._isMatchToPatterns(i,r,n)}_isMatchToPatterns(e,r,n){if(r.length===0)return!1;let i=kr.pattern.matchAny(e,r);return!i&&n?kr.pattern.matchAny(e+"/",r):i}};iu.default=nu});var um=U(ou=>{"use strict";Object.defineProperty(ou,"__esModule",{value:!0});var QI=cr(),su=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return QI.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};ou.default=su});var pm=U(lu=>{"use strict";Object.defineProperty(lu,"__esModule",{value:!0});var dm=cr(),au=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=dm.path.makeAbsolute(this._settings.cwd,r),r=dm.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};lu.default=au});var lo=U(uu=>{"use strict";Object.defineProperty(uu,"__esModule",{value:!0});var XI=ve("path"),ZI=lm(),eL=cm(),tL=um(),rL=pm(),cu=class{constructor(e){this._settings=e,this.errorFilter=new tL.default(this._settings),this.entryFilter=new eL.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new ZI.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new rL.default(this._settings)}_getRootDirectory(e){return XI.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};uu.default=cu});var gm=U(pu=>{"use strict";Object.defineProperty(pu,"__esModule",{value:!0});var nL=sm(),iL=lo(),du=class extends iL.default{constructor(){super(...arguments),this._reader=new nL.default(this._settings)}async read(e){let r=this._getRootDirectory(e),n=this._getReaderOptions(e);return(await this.api(r,e,n)).map(s=>n.transform(s))}api(e,r,n){return r.dynamic?this._reader.dynamic(e,n):this._reader.static(r.patterns,n)}};pu.default=du});var fm=U(fu=>{"use strict";Object.defineProperty(fu,"__esModule",{value:!0});var sL=ve("stream"),oL=zc(),aL=lo(),gu=class extends aL.default{constructor(){super(...arguments),this._reader=new oL.default(this._settings)}read(e){let r=this._getRootDirectory(e),n=this._getReaderOptions(e),i=this.api(r,e,n),s=new sL.Readable({objectMode:!0,read:()=>{}});return i.once("error",o=>s.emit("error",o)).on("data",o=>s.emit("data",n.transform(o))).once("end",()=>s.emit("end")),s.once("close",()=>i.destroy()),s}api(e,r,n){return r.dynamic?this._reader.dynamic(e,n):this._reader.static(r.patterns,n)}};fu.default=gu});var hm=U(mu=>{"use strict";Object.defineProperty(mu,"__esModule",{value:!0});var lL=cn(),cL=so(),uL=oo(),hu=class extends uL.default{constructor(){super(...arguments),this._walkSync=cL.walkSync,this._statSync=lL.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let n=[];for(let i of e){let s=this._getFullEntryPath(i),o=this._getEntry(s,i,r);o===null||!r.entryFilter(o)||n.push(o)}return n}_getEntry(e,r,n){try{let i=this._getStat(e);return this._makeEntry(i,r)}catch(i){if(n.errorFilter(i))return null;throw i}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};mu.default=hu});var mm=U(Eu=>{"use strict";Object.defineProperty(Eu,"__esModule",{value:!0});var dL=hm(),pL=lo(),_u=class extends pL.default{constructor(){super(...arguments),this._reader=new dL.default(this._settings)}read(e){let r=this._getRootDirectory(e),n=this._getReaderOptions(e);return this.api(r,e,n).map(n.transform)}api(e,r,n){return r.dynamic?this._reader.dynamic(e,n):this._reader.static(r.patterns,n)}};Eu.default=_u});var _m=U(Yn=>{"use strict";Object.defineProperty(Yn,"__esModule",{value:!0});Yn.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var Kn=ve("fs"),gL=ve("os"),fL=Math.max(gL.cpus().length,1);Yn.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:Kn.lstat,lstatSync:Kn.lstatSync,stat:Kn.stat,statSync:Kn.statSync,readdir:Kn.readdir,readdirSync:Kn.readdirSync};var Su=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,fL),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0),this.ignore=[].concat(this.ignore)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},Yn.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};Yn.default=Su});var Ou=U((wU,Sm)=>{"use strict";var Em=Sh(),hL=gm(),mL=fm(),_L=mm(),Tu=_m(),Lt=cr();async function Au(t,e){Gt(t);let r=Ru(t,hL.default,e),n=await Promise.all(r);return Lt.array.flatten(n)}(function(t){t.glob=t,t.globSync=e,t.globStream=r,t.async=t;function e(c,u){Gt(c);let p=Ru(c,_L.default,u);return Lt.array.flatten(p)}t.sync=e;function r(c,u){Gt(c);let p=Ru(c,mL.default,u);return Lt.stream.merge(p)}t.stream=r;function n(c,u){Gt(c);let p=[].concat(c),d=new Tu.default(u);return Em.generate(p,d)}t.generateTasks=n;function i(c,u){Gt(c);let p=new Tu.default(u);return Lt.pattern.isDynamicPattern(c,p)}t.isDynamicPattern=i;function s(c){return Gt(c),Lt.path.escape(c)}t.escapePath=s;function o(c){return Gt(c),Lt.path.convertPathToPattern(c)}t.convertPathToPattern=o;let a;(function(c){function u(d){return Gt(d),Lt.path.escapePosixPath(d)}c.escapePath=u;function p(d){return Gt(d),Lt.path.convertPosixPathToPattern(d)}c.convertPathToPattern=p})(a=t.posix||(t.posix={}));let l;(function(c){function u(d){return Gt(d),Lt.path.escapeWindowsPath(d)}c.escapePath=u;function p(d){return Gt(d),Lt.path.convertWindowsPathToPattern(d)}c.convertPathToPattern=p})(l=t.win32||(t.win32={}))})(Au||(Au={}));function Ru(t,e,r){let n=[].concat(t),i=new Tu.default(r),s=Em.generate(n,i),o=new e(i);return s.map(o.read,o)}function Gt(t){if(![].concat(t).every(n=>Lt.string.isString(n)&&!Lt.string.isEmpty(n)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}Sm.exports=Au});var Cm=U((FU,po)=>{"use strict";function Rm(t){return Array.isArray(t)?t:[t]}var EL=void 0,Iu="",Tm=" ",yu="\\",SL=/^\s+$/,TL=/(?:[^\\]|^)\\$/,AL=/^\\!/,RL=/^\\#/,OL=/\r?\n/g,yL=/^\.{0,2}\/|^\.{1,2}$/,IL=/\/$/,$n="/",Om="node-ignore";typeof Symbol<"u"&&(Om=Symbol.for("node-ignore"));var ym=Om,Wn=(t,e,r)=>(Object.defineProperty(t,e,{value:r}),r),LL=/([0-z])-([0-z])/g,Im=()=>!1,NL=t=>t.replace(LL,(e,r,n)=>r.charCodeAt(0)<=n.charCodeAt(0)?e:Iu),CL=t=>t.startsWith("!")||t.startsWith("\\^")?`^${t.slice(t[0]==="!"?1:2)}`:t,PL=t=>{let{length:e}=t;return t.slice(0,e-e%2)},DL=[[/^\uFEFF/,()=>Iu],[/((?:\\\\)*?)(\\?\s+)$/,(t,e,r)=>e+(r.indexOf("\\")===0?Tm:Iu)],[/(\\+?)\s/g,(t,e)=>{let{length:r}=e;return e.slice(0,r-r%2)+Tm}],[/[\\$.|*+(){^]/g,t=>`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*(?:\\\*\\\*\\\/)+/,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6<r.length?"(?:\\/[^\\/]+)*":"\\/.+"],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(t,e,r)=>{let n=r.replace(/\\\*/g,"[^\\/]*");return e+n}],[/\\\\\\(?=[$.|*+(){^])/g,()=>yu],[/\\\\/g,()=>yu],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(t,e,r,n,i)=>e===yu?`\\[${r}${PL(n)}${i}`:i==="]"&&n.length%2===0?`[${CL(NL(r))}${n}]`:"[]"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`]],vL=/(^|\\\/)?\\\*$/,Mi="regex",co="checkRegex",Am="_",bL={[Mi](t,e){return`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`},[co](t,e){return`${e?`${e}[^/]*`:"[^/]*"}(?=$|\\/$)`}},wL=t=>DL.reduce((e,[r,n])=>e.replace(r,n.bind(t)),t),uo=t=>typeof t=="string",FL=t=>t&&uo(t)&&!SL.test(t)&&!TL.test(t)&&t.indexOf("#")!==0,ML=t=>t.split(OL).filter(Boolean),Lu=class{constructor(e,r,n,i,s,o){this.pattern=e,this.mark=r,this.negative=s,Wn(this,"body",n),Wn(this,"ignoreCase",i),Wn(this,"regexPrefix",o)}get regex(){let e=Am+Mi;return this[e]?this[e]:this._make(Mi,e)}get checkRegex(){let e=Am+co;return this[e]?this[e]:this._make(co,e)}_make(e,r){let n=this.regexPrefix.replace(vL,bL[e]),i=this.ignoreCase?new RegExp(n,"i"):new RegExp(n);return Wn(this,r,i)}},kL=({pattern:t,mark:e},r)=>{let n=!1,i=t;i.indexOf("!")===0&&(n=!0,i=i.substr(1)),i=i.replace(AL,"!").replace(RL,"#");let s=wL(i);return new Lu(t,e,i,r,n,s)},Nu=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[ym]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(uo(e)&&(e={pattern:e}),FL(e.pattern)){let r=kL(e,this._ignoreCase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,Rm(uo(e)?ML(e):e).forEach(this._add,this),this._added}test(e,r,n){let i=!1,s=!1,o;this._rules.forEach(l=>{let{negative:c}=l;s===c&&i!==s||c&&!i&&!s&&!r||!l[n].test(e)||(i=!c,s=c,o=c?EL:l)});let a={ignored:i,unignored:s};return o&&(a.rule=o),a}},GL=(t,e)=>{throw new e(t)},ur=(t,e,r)=>uo(t)?t?ur.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),Lm=t=>yL.test(t);ur.isNotRelative=Lm;ur.convert=t=>t;var Cu=class{constructor({ignorecase:e=!0,ignoreCase:r=e,allowRelativePaths:n=!1}={}){Wn(this,ym,!0),this._rules=new Nu(r),this._strictPathCheck=!n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,r,n,i){let s=e&&ur.convert(e);return ur(s,e,this._strictPathCheck?GL:Im),this._t(s,r,n,i)}checkIgnore(e){if(!IL.test(e))return this.test(e);let r=e.split($n).filter(Boolean);if(r.pop(),r.length){let n=this._t(r.join($n)+$n,this._testCache,!0,r);if(n.ignored)return n}return this._rules.test(e,!1,co)}_t(e,r,n,i){if(e in r)return r[e];if(i||(i=e.split($n).filter(Boolean)),i.pop(),!i.length)return r[e]=this._rules.test(e,n,Mi);let s=this._t(i.join($n)+$n,r,n,i);return r[e]=s.ignored?s:this._rules.test(e,n,Mi)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return Rm(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},Pu=t=>new Cu(t),xL=t=>ur(t&&ur.convert(t),t,Im),Nm=()=>{let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");ur.convert=t;let e=/^[a-z]:\//i;ur.isNotRelative=r=>e.test(r)||Lm(r)};typeof process<"u"&&process.platform==="win32"&&Nm();po.exports=Pu;Pu.default=Pu;po.exports.isPathValid=xL;Wn(po.exports,Symbol.for("setupWindows"),Nm)});import*as NT from"dotenv";import Kt from"process";import{execFile as $T}from"child_process";import{promisify as WT}from"util";import or from"fs/promises";import Ke from"path";import{spawn as bT}from"child_process";import Bp from"fs/promises";import nn from"path";import wT from"os";var Cl=class{value;next;constructor(e){this.value=e}},Ti=class{#t;#s;#c;constructor(){this.clear()}enqueue(e){let r=new Cl(e);this.#t?(this.#s.next=r,this.#s=r):(this.#t=r,this.#s=r),this.#c++}dequeue(){let e=this.#t;if(e)return this.#t=this.#t.next,this.#c--,this.#t||(this.#s=void 0),e.value}peek(){if(this.#t)return this.#t.value}clear(){this.#t=void 0,this.#s=void 0,this.#c=0}get size(){return this.#c}*[Symbol.iterator](){let e=this.#t;for(;e;)yield e.value,e=e.next}*drain(){for(;this.#t;)yield this.dequeue()}};function en(t){let e=!1;if(typeof t=="object"&&({concurrency:t,rejectOnClear:e=!1}=t),Hp(t),typeof e!="boolean")throw new TypeError("Expected `rejectOnClear` to be a boolean");let r=new Ti,n=0,i=()=>{n<t&&r.size>0&&(n++,r.dequeue().run())},s=()=>{n--,i()},o=async(c,u,p)=>{let d=(async()=>c(...p))();u(d);try{await d}catch{}s()},a=(c,u,p,d)=>{let f={reject:p};new Promise(m=>{f.run=m,r.enqueue(f)}).then(o.bind(void 0,c,u,d)),n<t&&i()},l=(c,...u)=>new Promise((p,d)=>{a(c,p,d,u)});return Object.defineProperties(l,{activeCount:{get:()=>n},pendingCount:{get:()=>r.size},clearQueue:{value(){if(!e){r.clear();return}let c=AbortSignal.abort().reason;for(;r.size>0;)r.dequeue().reject(c)}},concurrency:{get:()=>t,set(c){Hp(c),t=c,queueMicrotask(()=>{for(;n<t&&r.size>0;)i()})}},map:{async value(c,u){let p=Array.from(c,(d,f)=>this(u,d,f));return Promise.all(p)}}}),l}function Hp(t){if(!((Number.isInteger(t)||t===Number.POSITIVE_INFINITY)&&t>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up")}var Nr={NAME:"Docuvia",EMAIL:"docuvia@localhost"};var tn="refs/heads/",Pl="HEAD";var FT="fast-import",MT="--quiet",Dl={PIPE:"pipe",IGNORE:"ignore"},Rs={DATA:"data",ERROR:"error",CLOSE:"close"},rn={COMMIT:"commit",COMMITTER:"committer",DATA:"data",FROM:"from",DELETE_ALL:"deleteall",MODIFY:"M"},kT="100644",GT="inline",xT="+0000",UT="stdin write failed: ",HT=(t,e,r)=>{let n=[e,r?`${UT}${r.message}`:""].filter(Boolean).join("; ");return`git fast-import exited with code ${t}${n?": "+n:""}`},BT=300*1e3,Kp="SIGTERM",KT=t=>`git fast-import timed out after ${t}ms and was terminated`,YT=wT.cpus().length*4;async function Yp(t,e){let r=nn.resolve(t),n=e?nn.resolve(e):r;if(!r.startsWith(n+nn.sep)&&r!==n)throw new S(O.FS_PATH_TRAVERSAL,`sourceDir "${t}" escapes allowed root "${n}"`);let i=new Map,s=en(YT),o=async a=>{let l=await Bp.readdir(a,{withFileTypes:!0});await Promise.all(l.map(async c=>{let u=nn.join(a,c.name);if(c.isDirectory())await o(u);else if(c.isFile()){let p=nn.relative(t,u),d=await s(()=>Bp.readFile(u,K));i.set(p,d)}}))};return await o(t),i}function $p(t,e,r,n,i){let s=[];s.push(`${rn.COMMIT} ${tn}${t}`),s.push(`${rn.COMMITTER} ${Nr.NAME} <${Nr.EMAIL}> ${r} ${xT}`),s.push(`${rn.DATA} ${Buffer.byteLength(n,K)}`),s.push(n),i&&s.push(`${rn.FROM} ${i}`),s.push(rn.DELETE_ALL);for(let[o,a]of e){let l=Buffer.from(a,K),c=o.split(nn.sep).join(nn.posix.sep);s.push(`${rn.MODIFY} ${kT} ${GT} ${c}`),s.push(`${rn.DATA} ${l.length}`),s.push(a)}return s.push(""),s.join(`
|
|
5
5
|
`)}function Wp(t,e,r=BT){return new Promise((n,i)=>{let s=bT("git",[FT,MT],{cwd:t,stdio:[Dl.PIPE,Dl.IGNORE,Dl.PIPE]}),o=setTimeout(()=>{s.kill(Kp),i(new Error(KT(r)))},r);o.unref();let a=[],l;s.stderr.on(Rs.DATA,c=>a.push(c)),s.on(Rs.ERROR,i),s.on(Rs.CLOSE,c=>{if(clearTimeout(o),c===0)return n();let u=Buffer.concat(a).toString(K).trim();i(new Error(HT(c,u,l)))}),s.stdin.on(Rs.ERROR,c=>{l=c});try{s.stdin.end(e,K)}catch(c){s.kill(Kp),clearTimeout(o),i(c instanceof Error?c:new Error(String(c)));return}})}var jT=WT($T),VT={LC_ALL:"C",LANG:"C",LC_MESSAGES:"C"},de=(t,e,r={})=>jT(t,e,{...r,encoding:"utf8",env:{...process.env,...r.env??{},...VT}}),pe={REV_PARSE:"rev-parse",BRANCH:"branch",COMMIT_TREE:"commit-tree",UPDATE_REF:"update-ref",LS_FILES:"ls-files",LS_TREE:"ls-tree",DIFF:"diff",DIFF_TREE:"diff-tree",CAT_FILE:"cat-file",SHOW:"show",LOG:"log",REV_LIST:"rev-list",REMOTE:"remote",STATUS:"status",FETCH:"fetch",PUSH:"push",MERGE_BASE:"merge-base",WORKTREE:"worktree",BLAME:"blame"},re={IS_INSIDE_WORK_TREE:"--is-inside-work-tree",LIST:"--list",DELETE_FORCE:"-D",MESSAGE_FLAG:"-m",STAGED:"-s",OTHERS:"--others",EXCLUDE_STANDARD:"--exclude-standard",NAME_ONLY:"--name-only",BLOB:"blob",MAX_COUNT_FLAG:"-n",LOG_FORMAT_SHA_AND_BODY:"--format=%H%x01%B%x00",GET_URL:"get-url",EMPTY_FORMAT:"--format=",WORKTREE_LIST:"list",PORCELAIN:"--porcelain",NAME_STATUS:"--name-status",END_OF_OPTIONS:"--end-of-options",NO_COMMIT_ID:"--no-commit-id",RECURSIVE:"-r",VERIFY:"--verify",QUIET:"--quiet",IS_ANCESTOR:"--is-ancestor",TREE_SUFFIX:"^{tree}",SUPPRESS_DIFF:"-s",COMMIT_TIMESTAMP_FORMAT:"--format=%ct",PARENT_FLAG:"-p",UNIFIED_ZERO:"--unified=0",NO_COLOR:"--no-color",PATHSPEC_SEPARATOR:"--",GIT_DIR_FLAG:"--git-dir",GIT_COMMON_DIR_FLAG:"--git-common-dir",GIT_PATH_FLAG:"--git-path",NO_VERIFY:"--no-verify"},Os={PATH:"worktree ",BRANCH:"branch "},zT="\0",JT="",vl={RENAMED:"R",ADDED:"A",DELETED:"D"},qT="4b825dc642cb6eb9a060e54bf8d69288fbee4904",jp=".git",Vp="hooks",QT="_",zp="docuvia-knowledge.lock",XT=1e4,ZT=100,eA=6e4,Jp="object",qp="code",we={BRANCH_LIST_FAILED:"git branch --list failed",BRANCH_DELETE_FAILED:"git branch -D failed",COMMIT_TREE_FAILED:"git commit-tree failed",UPDATE_REF_FAILED:"git update-ref failed",HOOK_FILE_WRITE_FAILED:"Writing hook file failed",HOOK_FILE_CHMOD_FAILED:"chmod on hook file failed",LS_FILES_STAGED_FAILED:"git ls-files -s failed",LS_FILES_OTHERS_FAILED:"git ls-files --others failed",DIFF_NAME_ONLY_FAILED:"git diff --name-only failed",CAT_FILE_BLOB_FAILED:"git cat-file blob failed",STATUS_PORCELAIN_FAILED:"git status --porcelain failed",DIFF_TREE_FAILED:"git diff-tree failed",FAST_IMPORT_FAILED:"git fast-import failed",FETCH_FAILED:"git fetch failed",PUSH_FAILED:"git push failed",MERGE_BASE_IS_ANCESTOR_FAILED:"git merge-base --is-ancestor failed",REV_PARSE_TREE_FAILED:"git rev-parse ^{tree} failed",SHOW_COMMIT_TIMESTAMP_FAILED:"git show --format=%ct failed",COMMIT_TREE_MERGE_FAILED:"git commit-tree (merge) failed",KNOWLEDGE_LOCK_ACQUIRE_FAILED:"Failed to acquire knowledge lock",KNOWLEDGE_LOCK_TIMED_OUT:t=>`Timed out waiting for the knowledge branch lock at ${t} \u2014 another Docuvia process may be stuck`},bn=class{async getGitDir(e){try{let{stdout:r}=await de("git",[pe.REV_PARSE,re.GIT_DIR_FLAG],{cwd:e});return Ke.resolve(e,r.trim())}catch{return Ke.join(e,jp)}}async getGitCommonDir(e){try{let{stdout:r}=await de("git",[pe.REV_PARSE,re.GIT_COMMON_DIR_FLAG],{cwd:e});return Ke.resolve(e,r.trim())}catch{return Ke.join(e,jp)}}async resolveHooksDir(e){let r;try{let{stdout:n}=await de("git",[pe.REV_PARSE,re.GIT_PATH_FLAG,Vp],{cwd:e});r=Ke.resolve(e,n.trim())}catch{let n=await this.getGitCommonDir(e);r=Ke.join(n,Vp)}return Ke.basename(r)===QT?Ke.dirname(r):r}async isGitRepository(e){try{return await de("git",[pe.REV_PARSE,re.IS_INSIDE_WORK_TREE],{cwd:e}),!0}catch{return!1}}async branchExists(e,r){try{let{stdout:n}=await de("git",[pe.BRANCH,re.LIST,r],{cwd:e});return n.trim().length>0}catch(n){throw S.wrap(O.GIT_COMMAND_FAILED,we.BRANCH_LIST_FAILED,n)}}async deleteBranch(e,r){try{await de("git",[pe.BRANCH,re.DELETE_FORCE,r],{cwd:e})}catch(n){throw S.wrap(O.GIT_COMMAND_FAILED,we.BRANCH_DELETE_FAILED,n)}}async commitEmptyTree(e,r){try{let{stdout:n}=await de("git",[pe.COMMIT_TREE,qT,re.MESSAGE_FLAG,r],{cwd:e});return n.trim()}catch(n){throw S.wrap(O.GIT_BRANCH_CREATE_FAILED,we.COMMIT_TREE_FAILED,n)}}async updateBranchRef(e,r,n){try{await de("git",[pe.UPDATE_REF,`${tn}${r}`,n],{cwd:e})}catch(i){throw S.wrap(O.GIT_BRANCH_CREATE_FAILED,we.UPDATE_REF_FAILED,i)}}async hooksDirExists(e){try{let r=await this.resolveHooksDir(e);return await or.access(r),!0}catch{return!1}}async readHookFile(e,r){try{let n=await this.resolveHooksDir(e);return await or.readFile(Ke.join(n,r),K)}catch{return}}async appendHookFile(e,r,n){try{let i=await this.resolveHooksDir(e);await or.appendFile(Ke.join(i,r),n)}catch(i){throw S.wrap(O.GIT_HOOK_INSTALL_FAILED,we.HOOK_FILE_WRITE_FAILED,i)}}async writeHookFile(e,r,n){try{let i=await this.resolveHooksDir(e);await or.writeFile(Ke.join(i,r),n)}catch(i){throw S.wrap(O.GIT_HOOK_INSTALL_FAILED,we.HOOK_FILE_WRITE_FAILED,i)}}async makeHookExecutable(e,r){try{let n=await this.resolveHooksDir(e);await or.chmod(Ke.join(n,r),493)}catch(n){throw S.wrap(O.GIT_HOOK_INSTALL_FAILED,we.HOOK_FILE_CHMOD_FAILED,n)}}async listTrackedFilesWithBlobHash(e){let r=new Map;try{let{stdout:n}=await de("git",[pe.LS_FILES,re.STAGED],{cwd:e,maxBuffer:67108864});for(let i of n.split(`
|
|
6
6
|
`)){if(!i.trim())continue;let[s,o]=i.split(" "),a=s.split(" ")[1];o&&a&&r.set(o,a)}return r}catch(n){throw S.wrap(O.GIT_COMMAND_FAILED,we.LS_FILES_STAGED_FAILED,n)}}async listUntrackedFiles(e){try{let{stdout:r}=await de("git",[pe.LS_FILES,re.OTHERS,re.EXCLUDE_STANDARD],{cwd:e,maxBuffer:67108864});return r.split(`
|
|
7
7
|
`).map(n=>n.trim()).filter(Boolean)}catch(r){throw S.wrap(O.GIT_COMMAND_FAILED,we.LS_FILES_OTHERS_FAILED,r)}}async listModifiedFiles(e){try{let{stdout:r}=await de("git",[pe.DIFF,re.NAME_ONLY],{cwd:e});return r.split(`
|
|
@@ -115,7 +115,7 @@ Path: \`${e??t}\`
|
|
|
115
115
|
`,markdownSymbolBody:(t,e)=>`# Symbol: ${t}
|
|
116
116
|
|
|
117
117
|
File: \`${e??""}\`
|
|
118
|
-
`};async function zt(t,e,r){await t.acquireKnowledgeLock(e);try{return await r()}finally{await t.releaseKnowledgeLock(e)}}function FA(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var MA=new RegExp(`(?:^#!.*\\n)?${FA(E.DOCUVIA_HOOK_HEADER_COMMENT)}[\\s\\S]*?^fi$\\n?`,"gm"),vs=class{constructor(e,r=fe(),n=void 0){this.git=e;this.logger=r;this.gitNetworkTimeoutMs=n}git;logger;gitNetworkTimeoutMs;async ensureKnowledgeBranch(e,r=E.KNOWLEDGE_ROOT){return await this.git.branchExists(e,r)?(this.logger.debug(j.KNOWLEDGE_BRANCH_ALREADY_EXISTS,{branchName:r}),{created:!1}):zt(this.git,e,async()=>{if(await this.git.branchExists(e,r))return this.logger.warn(j.CONCURRENT_INITIAL_COMMIT_SKIPPED,{branchName:r}),{created:!1};let n=await cg.mkdtemp(wA.join(bA.tmpdir(),E.EMPTY_KNOWLEDGE_TEMP_DIR_PREFIX));try{await this.packSnapshotToKnowledgeBranchLocked(e,n,r)}finally{await cg.rm(n,{recursive:!0,force:!0})}return this.logger.info(j.CREATED_KNOWLEDGE_BRANCH,{branchName:r}),{created:!0}})}async deleteKnowledgeBranch(e,r=E.KNOWLEDGE_ROOT){if(!await this.git.branchExists(e,r))return this.logger.debug(j.NO_KNOWLEDGE_BRANCH_TO_DELETE,{branchName:r}),{deleted:!1};try{await this.git.deleteBranch(e,r)}catch(n){return this.logger.warn(j.FAILED_TO_DELETE_KNOWLEDGE_BRANCH,{branchName:r,error:n instanceof Error?n.message:String(n)}),{deleted:!1}}return this.logger.info(j.DELETED_KNOWLEDGE_BRANCH,{branchName:r}),{deleted:!0}}hasCurrentPostCommitHook(e){return!!e?.includes(E.POST_COMMIT_HOOK_MARKER)&&!!e?.includes(E.POST_COMMIT_FLUSH_L3_MARKER)&&!!e?.includes(E.POST_COMMIT_NOHUP_MARKER)}resolvePostCommitUpgradeSource(e){if(e?.includes(E.LEGACY_POST_COMMIT_HOOK_MARKER))return E.LEGACY_POST_COMMIT_HOOK_CONTENT;if(e?.includes(E.POST_COMMIT_HOOK_MARKER))return e.includes(E.POST_COMMIT_FLUSH_L3_MARKER)?E.PRE_NOHUP_POST_COMMIT_HOOK_CONTENT:E.PRE_FLUSH_L3_POST_COMMIT_HOOK_CONTENT}async installPostCommitHook(e){let r=E.POST_COMMIT_HOOK_NAME;if(!await this.git.hooksDirExists(e))return this.logger.debug(j.NO_GIT_HOOKS_DIR),{installed:!1};let n=await this.git.readHookFile(e,r);return this.hasCurrentPostCommitHook(n)?(this.logger.debug(j.POST_COMMIT_HOOK_ALREADY_INSTALLED),{installed:!1}):zt(this.git,e,async()=>{let i=await this.git.readHookFile(e,r);if(this.hasCurrentPostCommitHook(i))return this.logger.warn(j.CONCURRENT_HOOK_INSTALL_SKIPPED),{installed:!1};let s=this.resolvePostCommitUpgradeSource(i);try{if(s){let o=i.split(s).join("")+E.POST_COMMIT_HOOK_CONTENT;await this.git.writeHookFile(e,r,o)}else await this.git.appendHookFile(e,r,E.POST_COMMIT_HOOK_CONTENT);await this.git.makeHookExecutable(e,r)}catch(o){return this.logger.warn(j.FAILED_TO_INSTALL_HOOK,{error:o instanceof Error?o.message:String(o)}),{installed:!1}}return this.logger.info(s===E.LEGACY_POST_COMMIT_HOOK_CONTENT?j.UPGRADED_LEGACY_POST_COMMIT_HOOK:s===E.PRE_FLUSH_L3_POST_COMMIT_HOOK_CONTENT?j.UPGRADED_POST_COMMIT_HOOK_FLUSH_L3:s===E.PRE_NOHUP_POST_COMMIT_HOOK_CONTENT?j.UPGRADED_POST_COMMIT_HOOK_NOHUP:j.INSTALLED_POST_COMMIT_HOOK),{installed:!0}})}async installPrePushHook(e){let r=E.PRE_PUSH_HOOK_NAME;if(!await this.git.hooksDirExists(e))return this.logger.debug(j.NO_GIT_HOOKS_DIR),{installed:!1};let n=await this.git.readHookFile(e,r);return this.hasCurrentPrePushHook(n)?(this.logger.debug(j.PRE_PUSH_HOOK_ALREADY_INSTALLED),{installed:!1}):zt(this.git,e,async()=>{let i=await this.git.readHookFile(e,r);if(this.hasCurrentPrePushHook(i))return this.logger.warn(j.CONCURRENT_PRE_PUSH_HOOK_INSTALL_SKIPPED),{installed:!1};let s=this.resolvePrePushUpgradeSource(i);try{if(s){let o=i.split(s).join("")+E.PRE_PUSH_HOOK_CONTENT;await this.git.writeHookFile(e,r,o)}else await this.git.appendHookFile(e,r,E.PRE_PUSH_HOOK_CONTENT);await this.git.makeHookExecutable(e,r)}catch(o){return this.logger.warn(j.FAILED_TO_INSTALL_PRE_PUSH_HOOK,{error:o instanceof Error?o.message:String(o)}),{installed:!1}}return this.logger.info(s?j.UPGRADED_LEGACY_PRE_PUSH_HOOK:j.INSTALLED_PRE_PUSH_HOOK),{installed:!0}})}hasCurrentPrePushHook(e){return!!e?.includes(E.PRE_PUSH_HOOK_MARKER)&&!!e?.includes(E.PRE_PUSH_SYNC_KNOWLEDGE_MARKER)&&!!e?.includes(E.PRE_PUSH_ENV_GATE_MARKER)&&!!e?.includes(E.PRE_PUSH_HOOKS_CHECK_MARKER)&&!!e?.includes(E.PRE_PUSH_FAILURE_HINT_MARKER)}resolvePrePushUpgradeSource(e){if(e?.includes(E.PRE_PUSH_HOOK_MARKER))return e.includes(E.PRE_PUSH_SYNC_KNOWLEDGE_MARKER)?e.includes(E.PRE_PUSH_ENV_GATE_MARKER)?e.includes(E.PRE_PUSH_HOOKS_CHECK_MARKER)?E.HOOKS_CHECK_PRE_PUSH_HOOK_CONTENT:E.ENV_GATE_PRE_PUSH_HOOK_CONTENT:E.SYNC_KNOWLEDGE_PRE_PUSH_HOOK_CONTENT:E.LEGACY_PRE_PUSH_HOOK_CONTENT}async removePostCommitHook(e){let r=E.POST_COMMIT_HOOK_NAME,n=await this.git.readHookFile(e,r);return this.hasAnyPostCommitMarker(n)?zt(this.git,e,async()=>{let i=await this.git.readHookFile(e,r);if(!this.hasAnyPostCommitMarker(i))return{removed:!1};try{let s=i;for(let o of[E.POST_COMMIT_HOOK_CONTENT,E.PRE_FLUSH_L3_POST_COMMIT_HOOK_CONTENT,E.LEGACY_POST_COMMIT_HOOK_CONTENT])s.includes(o)&&(s=s.split(o).join(""));await this.git.writeHookFile(e,r,s)}catch(s){return this.logger.warn(j.FAILED_TO_REMOVE_POST_COMMIT_HOOK,{error:s instanceof Error?s.message:String(s)}),{removed:!1}}return this.logger.info(j.REMOVED_POST_COMMIT_HOOK),{removed:!0}}):(this.logger.debug(j.NO_POST_COMMIT_HOOK_TO_REMOVE),{removed:!1})}hasAnyPostCommitMarker(e){return!!e?.includes(E.POST_COMMIT_HOOK_MARKER)||!!e?.includes(E.LEGACY_POST_COMMIT_HOOK_MARKER)}async removePrePushHook(e){let r=E.PRE_PUSH_HOOK_NAME;return(await this.git.readHookFile(e,r))?.includes(E.PRE_PUSH_HOOK_MARKER)?zt(this.git,e,async()=>{let i=await this.git.readHookFile(e,r);if(!i?.includes(E.PRE_PUSH_HOOK_MARKER))return{removed:!1};try{let s=i;for(let o of[E.PRE_PUSH_HOOK_CONTENT,E.HOOKS_CHECK_PRE_PUSH_HOOK_CONTENT,E.ENV_GATE_PRE_PUSH_HOOK_CONTENT,E.SYNC_KNOWLEDGE_PRE_PUSH_HOOK_CONTENT,E.LEGACY_PRE_PUSH_HOOK_CONTENT])s.includes(o)&&(s=s.split(o).join(""));await this.git.writeHookFile(e,r,s)}catch(s){return this.logger.warn(j.FAILED_TO_REMOVE_PRE_PUSH_HOOK,{error:s instanceof Error?s.message:String(s)}),{removed:!1}}return this.logger.info(j.REMOVED_PRE_PUSH_HOOK),{removed:!0}}):(this.logger.debug(j.NO_PRE_PUSH_HOOK_TO_REMOVE),{removed:!1})}async repairDuplicatePostCommitHook(e){let r=E.POST_COMMIT_HOOK_NAME;return zt(this.git,e,async()=>{let n=await this.git.readHookFile(e,r),i=n?.includes(E.POST_COMMIT_HOOK_MARKER)&&n?.includes(E.LEGACY_POST_COMMIT_HOOK_MARKER);if(!n||!i)return this.logger.debug(j.NOTHING_TO_REPAIR),{repaired:!1};try{let o=n.replace(MA,"")+E.POST_COMMIT_HOOK_CONTENT;await this.git.writeHookFile(e,r,o)}catch(s){return this.logger.warn(j.FAILED_TO_INSTALL_HOOK,{error:s instanceof Error?s.message:String(s)}),{repaired:!1}}return this.logger.info(j.REPAIRED_DUPLICATE_POST_COMMIT_HOOK),{repaired:!0}})}async packSnapshotToKnowledgeBranch(e,r,n=E.KNOWLEDGE_ROOT,i=!0){await zt(this.git,e,()=>this.packSnapshotToKnowledgeBranchLocked(e,r,n,i))}async packSnapshotToKnowledgeBranchLocked(e,r,n,i=!0){let s=await this.buildSnapshotCommitMessage(e),o=await this.git.getHeadSha(e),a;if(o)try{a=await this.git.getCommitTimestamp(e,o)}catch{}await this.git.packDirectoryToBranch(e,r,n,s,a,i),this.logger.info(j.PACKED_SNAPSHOT_ONTO_BRANCH,{branchName:n})}async syncKnowledgeBranch(e,r=E.KNOWLEDGE_ROOT,n=E.DEFAULT_REMOTE_NAME){return zt(this.git,e,()=>this.reconcile(e,r,n))}async reconcile(e,r,n){if(!await this.git.getRemoteUrl(e))return this.logger.debug(j.NO_REMOTE_SKIP_RECONCILIATION,{branchName:r}),{status:qe.NO_REMOTE};if(!await this.tryFetchRemoteBranch(e,r,n))return{status:qe.NO_REMOTE};let o=await this.git.getRefSha(e,`${E.REMOTE_REF_PREFIX}${n}/${r}`),a=await this.git.getBranchTipSha(e,r);return this.resolveBranchSyncOutcome(e,r,n,a,o)}async tryFetchRemoteBranch(e,r,n){try{return await this.git.fetchRef(e,n,r,this.gitNetworkTimeoutMs),!0}catch(i){return this.isRemoteRefMissingError(i)?(this.logger.info(j.REMOTE_KNOWLEDGE_BRANCH_NOT_YET_ON_REMOTE,{branchName:r}),!0):(this.logger.warn(j.FAILED_TO_FETCH_CONTINUING_OFFLINE,{branchName:r,error:i instanceof Error?i.message:String(i)}),!1)}}isRemoteRefMissingError(e){return(e instanceof Error?e.message:String(e)).includes(j.REMOTE_REF_NOT_FOUND_TEXT)}async resolveBranchSyncOutcome(e,r,n,i,s){let o=await this.resolveMissingShaOutcome(e,r,n,i,s);if("resolved"in o)return o.resolved;let{localSha:a,remoteSha:l}=o;if(a===l)return{status:qe.UP_TO_DATE,branchTipSha:a};let c=await this.resolveFastForwardOutcome(e,r,n,a,l);return c||this.mergeDivergedBranches(e,r,n,a,l)}async resolveMissingShaOutcome(e,r,n,i,s){return s?i?{localSha:i,remoteSha:s}:(await this.git.updateBranchRef(e,r,s),this.logger.info(j.ADOPTED_REMOTE_BRANCH,{branchName:r}),{resolved:{status:qe.FAST_FORWARDED_LOCAL,branchTipSha:s}}):(i&&await this.pushQuietly(e,n,r),{resolved:{status:qe.PUSHED_LOCAL,branchTipSha:i}})}async resolveFastForwardOutcome(e,r,n,i,s){if(await this.git.isAncestor(e,i,s))return await this.git.updateBranchRef(e,r,s),this.logger.info(j.FAST_FORWARDED_LOCAL_BRANCH,{branchName:r,remoteSha:s}),{status:qe.FAST_FORWARDED_LOCAL,branchTipSha:s};if(await this.git.isAncestor(e,s,i))return await this.pushQuietly(e,n,r),{status:qe.PUSHED_LOCAL,branchTipSha:i}}async mergeDivergedBranches(e,r,n,i,s){let o=await this.resolveMergeWinner(e,i,s),a=await this.git.getTreeSha(e,o),l=j.mergeCommitMessage(o===i),c=await this.git.createMergeCommit(e,a,[i,s],l);return await this.git.updateBranchRef(e,r,c),await this.pushQuietly(e,n,r),this.logger.info(j.MERGED_DIVERGED_BRANCH,{branchName:r,winner:o===i?j.MERGE_WINNER_LOCAL:j.MERGE_WINNER_REMOTE,mergeSha:c}),{status:qe.MERGED,branchTipSha:c}}async pushQuietly(e,r,n){try{await this.git.pushRef(e,r,n,this.gitNetworkTimeoutMs)}catch(i){this.logger.warn(j.FAILED_TO_PUSH_WILL_RETRY,{branchName:n,error:i instanceof Error?i.message:String(i)})}}async resolveMergeWinner(e,r,n){let[i,s]=await Promise.all([this.git.getCommitLog(e,r,1),this.git.getCommitLog(e,n,1)]),o=i[0]?sr(i[0].message):void 0,a=s[0]?sr(s[0].message):void 0;if(o&&a)try{if(await this.git.isAncestor(e,o,a))return n;if(await this.git.isAncestor(e,a,o))return r}catch{}let[l,c]=await Promise.all([this.git.getCommitTimestamp(e,r),this.git.getCommitTimestamp(e,n)]);return l>=c?r:n}async resolveNewestSourceTrailerSha(e,r=E.KNOWLEDGE_ROOT){let n=await this.git.getCommitLog(e,r,E.KNOWLEDGE_LOG_SCAN_LIMIT);for(let i of n){let s=sr(i.message);if(s)return s}}async hasSourceCommitInHistory(e,r,n=E.KNOWLEDGE_ROOT){let i=await this.git.getCommitLog(e,n,E.KNOWLEDGE_LOG_SCAN_LIMIT);for(let s of i)if(sr(s.message)===r)return!0;return!1}async runUnderKnowledgeLock(e,r){return zt(this.git,e,r)}async buildSnapshotCommitMessage(e){let r=await this.git.getHeadSha(e);return r?j.snapshotCommitMessage(r):j.SNAPSHOT_UNKNOWN}};import Pr from"fs/promises";import _t from"path";import $A from"os";var ug=".md",kA=/[<>:"/\\|?*\x00-\x1f\s]/g,GA=".",xA="..",UA=new Set(["con","prn","aux","nul","com0","com1","com2","com3","com4","com5","com6","com7","com8","com9","lpt0","lpt1","lpt2","lpt3","lpt4","lpt5","lpt6","lpt7","lpt8","lpt9"]),dg="_";function gg(t){let e=t.replace(kA,"_");e.length>100&&(e=e.slice(0,100));let r=e.indexOf("."),n=r===-1?e:e.slice(0,r);return UA.has(n.toLowerCase())?r===-1?`${n}${dg}`:`${n}${dg}${e.slice(r)}`:e}function HA(t){return t.split(/[\\/]+/).filter(e=>e.length>0&&e!==GA&&e!==xA).map(gg).join("/")}function BA(t){let e=t.lastIndexOf("/"),r=e===-1?"":t.slice(0,e),n=e===-1?t:t.slice(e+1),i=n.lastIndexOf("."),s=i<=0?n:n.slice(0,i);return{dir:r,base:s}}function fg(t,e){if(!t.filePath)return;let r=HA(t.filePath);if(!e)return`${E.KNOWLEDGE_DIR_NAME}/${r}${ug}`;let{dir:n,base:i}=BA(r),s=gg(t.name),o=n?`${n}/${i}`:i;return`${E.KNOWLEDGE_DIR_NAME}/${o}/${s}${ug}`}function KA(t){if(!(typeof t!="string"||t.length===0)){try{let e=JSON.parse(t);if(Array.isArray(e)&&e.length>0)return String(e[0])}catch(e){}return t}}function hg(t,e){let r=new Map;for(let s of t)r.set(s.id,KA(s.path_patterns));let n=new Map;for(let s of e)s.link_type===Oe.CONTAINS&&n.set(s.target_node_id,s.source_node_id);let i=new Map;for(let s of t){let o=n.get(s.id),a=o!==void 0?r.get(o):r.get(s.id),l=fg({name:s.name,filePath:a},o!==void 0);l&&i.set(s.id,l)}return i}function mg(t,e){let r=new Map;for(let i of e)i.type===Oe.CONTAINS&&r.set(i.target,i.source);let n=new Map;for(let i of t){let s=r.has(i.nodeKey),o=fg({name:i.name,filePath:i.filePath},s);o&&n.set(i.nodeKey,o)}return n}function pg(t){if(!t)return[];try{let e=JSON.parse(t);return Array.isArray(e)?e.map(String):[]}catch{return[]}}function _g(t,e){let r={content_hash:t.content_hash??"",node_type:t.node_type,title:t.title,l2_path:e,source_commits:pg(t.initial_source_commits??t.source_commits),extraction_model:t.extraction_model,source_files:pg(t.source_files),created_at:t.created_at},n=t.content??"";return`---
|
|
118
|
+
`};async function zt(t,e,r){await t.acquireKnowledgeLock(e);try{return await r()}finally{await t.releaseKnowledgeLock(e)}}function FA(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var MA=new RegExp(`(?:^#!.*\\n)?${FA(E.DOCUVIA_HOOK_HEADER_COMMENT)}[\\s\\S]*?^fi$\\n?`,"gm"),vs=class{constructor(e,r=fe(),n=void 0){this.git=e;this.logger=r;this.gitNetworkTimeoutMs=n}git;logger;gitNetworkTimeoutMs;async ensureKnowledgeBranch(e,r=E.KNOWLEDGE_ROOT){return await this.git.branchExists(e,r)?(this.logger.debug(j.KNOWLEDGE_BRANCH_ALREADY_EXISTS,{branchName:r}),{created:!1}):zt(this.git,e,async()=>{if(await this.git.branchExists(e,r))return this.logger.warn(j.CONCURRENT_INITIAL_COMMIT_SKIPPED,{branchName:r}),{created:!1};let n=await cg.mkdtemp(wA.join(bA.tmpdir(),E.EMPTY_KNOWLEDGE_TEMP_DIR_PREFIX));try{await this.packSnapshotToKnowledgeBranchLocked(e,n,r)}finally{await cg.rm(n,{recursive:!0,force:!0})}return this.logger.info(j.CREATED_KNOWLEDGE_BRANCH,{branchName:r}),{created:!0}})}async deleteKnowledgeBranch(e,r=E.KNOWLEDGE_ROOT){if(!await this.git.branchExists(e,r))return this.logger.debug(j.NO_KNOWLEDGE_BRANCH_TO_DELETE,{branchName:r}),{deleted:!1};try{await this.git.deleteBranch(e,r)}catch(n){return this.logger.warn(j.FAILED_TO_DELETE_KNOWLEDGE_BRANCH,{branchName:r,error:n instanceof Error?n.message:String(n)}),{deleted:!1}}return this.logger.info(j.DELETED_KNOWLEDGE_BRANCH,{branchName:r}),{deleted:!0}}hasCurrentPostCommitHook(e){return!!e?.includes(E.POST_COMMIT_HOOK_MARKER)&&!!e?.includes(E.POST_COMMIT_FLUSH_L3_MARKER)&&!!e?.includes(E.POST_COMMIT_NOHUP_MARKER)}resolvePostCommitUpgradeSource(e){if(e?.includes(E.LEGACY_POST_COMMIT_HOOK_MARKER))return E.LEGACY_POST_COMMIT_HOOK_CONTENT;if(e?.includes(E.POST_COMMIT_HOOK_MARKER))return e.includes(E.POST_COMMIT_FLUSH_L3_MARKER)?E.PRE_NOHUP_POST_COMMIT_HOOK_CONTENT:E.PRE_FLUSH_L3_POST_COMMIT_HOOK_CONTENT}async installPostCommitHook(e){let r=E.POST_COMMIT_HOOK_NAME;if(!await this.git.hooksDirExists(e))return this.logger.debug(j.NO_GIT_HOOKS_DIR),{installed:!1};let n=await this.git.readHookFile(e,r);return this.hasCurrentPostCommitHook(n)?(this.logger.debug(j.POST_COMMIT_HOOK_ALREADY_INSTALLED),{installed:!1}):zt(this.git,e,async()=>{let i=await this.git.readHookFile(e,r);if(this.hasCurrentPostCommitHook(i))return this.logger.warn(j.CONCURRENT_HOOK_INSTALL_SKIPPED),{installed:!1};let s=this.resolvePostCommitUpgradeSource(i);try{if(s){let o=i.split(s).join("")+E.POST_COMMIT_HOOK_CONTENT;await this.git.writeHookFile(e,r,o)}else await this.git.appendHookFile(e,r,E.POST_COMMIT_HOOK_CONTENT);await this.git.makeHookExecutable(e,r)}catch(o){return this.logger.warn(j.FAILED_TO_INSTALL_HOOK,{error:o instanceof Error?o.message:String(o)}),{installed:!1}}return this.logger.info(s===E.LEGACY_POST_COMMIT_HOOK_CONTENT?j.UPGRADED_LEGACY_POST_COMMIT_HOOK:s===E.PRE_FLUSH_L3_POST_COMMIT_HOOK_CONTENT?j.UPGRADED_POST_COMMIT_HOOK_FLUSH_L3:s===E.PRE_NOHUP_POST_COMMIT_HOOK_CONTENT?j.UPGRADED_POST_COMMIT_HOOK_NOHUP:j.INSTALLED_POST_COMMIT_HOOK),{installed:!0}})}async installPrePushHook(e){let r=E.PRE_PUSH_HOOK_NAME;if(!await this.git.hooksDirExists(e))return this.logger.debug(j.NO_GIT_HOOKS_DIR),{installed:!1};let n=await this.git.readHookFile(e,r);return this.hasCurrentPrePushHook(n)?(this.logger.debug(j.PRE_PUSH_HOOK_ALREADY_INSTALLED),{installed:!1}):zt(this.git,e,async()=>{let i=await this.git.readHookFile(e,r);if(this.hasCurrentPrePushHook(i))return this.logger.warn(j.CONCURRENT_PRE_PUSH_HOOK_INSTALL_SKIPPED),{installed:!1};let s=this.resolvePrePushUpgradeSource(i);try{if(s){let o=i.split(s).join("")+E.PRE_PUSH_HOOK_CONTENT;await this.git.writeHookFile(e,r,o)}else await this.git.appendHookFile(e,r,E.PRE_PUSH_HOOK_CONTENT);await this.git.makeHookExecutable(e,r)}catch(o){return this.logger.warn(j.FAILED_TO_INSTALL_PRE_PUSH_HOOK,{error:o instanceof Error?o.message:String(o)}),{installed:!1}}return this.logger.info(s?j.UPGRADED_LEGACY_PRE_PUSH_HOOK:j.INSTALLED_PRE_PUSH_HOOK),{installed:!0}})}hasCurrentPrePushHook(e){return!!e?.includes(E.PRE_PUSH_HOOK_MARKER)&&!!e?.includes(E.PRE_PUSH_SYNC_KNOWLEDGE_MARKER)&&!!e?.includes(E.PRE_PUSH_ENV_GATE_MARKER)&&!!e?.includes(E.PRE_PUSH_HOOKS_CHECK_MARKER)&&!!e?.includes(E.PRE_PUSH_FAILURE_HINT_MARKER)}resolvePrePushUpgradeSource(e){if(e?.includes(E.PRE_PUSH_HOOK_MARKER))return e.includes(E.PRE_PUSH_SYNC_KNOWLEDGE_MARKER)?e.includes(E.PRE_PUSH_ENV_GATE_MARKER)?e.includes(E.PRE_PUSH_HOOKS_CHECK_MARKER)?E.HOOKS_CHECK_PRE_PUSH_HOOK_CONTENT:E.ENV_GATE_PRE_PUSH_HOOK_CONTENT:E.SYNC_KNOWLEDGE_PRE_PUSH_HOOK_CONTENT:E.LEGACY_PRE_PUSH_HOOK_CONTENT}async removePostCommitHook(e){let r=E.POST_COMMIT_HOOK_NAME,n=await this.git.readHookFile(e,r);return this.hasAnyPostCommitMarker(n)?zt(this.git,e,async()=>{let i=await this.git.readHookFile(e,r);if(!this.hasAnyPostCommitMarker(i))return{removed:!1};try{let s=i;for(let o of[E.POST_COMMIT_HOOK_CONTENT,E.PRE_FLUSH_L3_POST_COMMIT_HOOK_CONTENT,E.LEGACY_POST_COMMIT_HOOK_CONTENT])s.includes(o)&&(s=s.split(o).join(""));await this.git.writeHookFile(e,r,s)}catch(s){return this.logger.warn(j.FAILED_TO_REMOVE_POST_COMMIT_HOOK,{error:s instanceof Error?s.message:String(s)}),{removed:!1}}return this.logger.info(j.REMOVED_POST_COMMIT_HOOK),{removed:!0}}):(this.logger.debug(j.NO_POST_COMMIT_HOOK_TO_REMOVE),{removed:!1})}hasAnyPostCommitMarker(e){return!!e?.includes(E.POST_COMMIT_HOOK_MARKER)||!!e?.includes(E.LEGACY_POST_COMMIT_HOOK_MARKER)}async removePrePushHook(e){let r=E.PRE_PUSH_HOOK_NAME;return(await this.git.readHookFile(e,r))?.includes(E.PRE_PUSH_HOOK_MARKER)?zt(this.git,e,async()=>{let i=await this.git.readHookFile(e,r);if(!i?.includes(E.PRE_PUSH_HOOK_MARKER))return{removed:!1};try{let s=i;for(let o of[E.PRE_PUSH_HOOK_CONTENT,E.HOOKS_CHECK_PRE_PUSH_HOOK_CONTENT,E.ENV_GATE_PRE_PUSH_HOOK_CONTENT,E.SYNC_KNOWLEDGE_PRE_PUSH_HOOK_CONTENT,E.LEGACY_PRE_PUSH_HOOK_CONTENT])s.includes(o)&&(s=s.split(o).join(""));await this.git.writeHookFile(e,r,s)}catch(s){return this.logger.warn(j.FAILED_TO_REMOVE_PRE_PUSH_HOOK,{error:s instanceof Error?s.message:String(s)}),{removed:!1}}return this.logger.info(j.REMOVED_PRE_PUSH_HOOK),{removed:!0}}):(this.logger.debug(j.NO_PRE_PUSH_HOOK_TO_REMOVE),{removed:!1})}async repairDuplicatePostCommitHook(e){let r=E.POST_COMMIT_HOOK_NAME;return zt(this.git,e,async()=>{let n=await this.git.readHookFile(e,r),i=n?.includes(E.POST_COMMIT_HOOK_MARKER)&&n?.includes(E.LEGACY_POST_COMMIT_HOOK_MARKER);if(!n||!i)return this.logger.debug(j.NOTHING_TO_REPAIR),{repaired:!1};try{let o=n.replace(MA,"")+E.POST_COMMIT_HOOK_CONTENT;await this.git.writeHookFile(e,r,o)}catch(s){return this.logger.warn(j.FAILED_TO_INSTALL_HOOK,{error:s instanceof Error?s.message:String(s)}),{repaired:!1}}return this.logger.info(j.REPAIRED_DUPLICATE_POST_COMMIT_HOOK),{repaired:!0}})}async packSnapshotToKnowledgeBranch(e,r,n=E.KNOWLEDGE_ROOT,i=!0){await zt(this.git,e,()=>this.packSnapshotToKnowledgeBranchLocked(e,r,n,i))}async packSnapshotToKnowledgeBranchLocked(e,r,n,i=!0){let s=await this.buildSnapshotCommitMessage(e),o=await this.git.getHeadSha(e),a;if(o)try{a=await this.git.getCommitTimestamp(e,o)}catch{}await this.git.packDirectoryToBranch(e,r,n,s,a,i),this.logger.info(j.PACKED_SNAPSHOT_ONTO_BRANCH,{branchName:n})}async syncKnowledgeBranch(e,r=E.KNOWLEDGE_ROOT,n=E.DEFAULT_REMOTE_NAME){return zt(this.git,e,()=>this.reconcile(e,r,n))}async reconcile(e,r,n){if(!await this.git.getRemoteUrl(e))return this.logger.debug(j.NO_REMOTE_SKIP_RECONCILIATION,{branchName:r}),{status:Qe.NO_REMOTE};if(!await this.tryFetchRemoteBranch(e,r,n))return{status:Qe.NO_REMOTE};let o=await this.git.getRefSha(e,`${E.REMOTE_REF_PREFIX}${n}/${r}`),a=await this.git.getBranchTipSha(e,r);return this.resolveBranchSyncOutcome(e,r,n,a,o)}async tryFetchRemoteBranch(e,r,n){try{return await this.git.fetchRef(e,n,r,this.gitNetworkTimeoutMs),!0}catch(i){return this.isRemoteRefMissingError(i)?(this.logger.info(j.REMOTE_KNOWLEDGE_BRANCH_NOT_YET_ON_REMOTE,{branchName:r}),!0):(this.logger.warn(j.FAILED_TO_FETCH_CONTINUING_OFFLINE,{branchName:r,error:i instanceof Error?i.message:String(i)}),!1)}}isRemoteRefMissingError(e){return(e instanceof Error?e.message:String(e)).includes(j.REMOTE_REF_NOT_FOUND_TEXT)}async resolveBranchSyncOutcome(e,r,n,i,s){let o=await this.resolveMissingShaOutcome(e,r,n,i,s);if("resolved"in o)return o.resolved;let{localSha:a,remoteSha:l}=o;if(a===l)return{status:Qe.UP_TO_DATE,branchTipSha:a};let c=await this.resolveFastForwardOutcome(e,r,n,a,l);return c||this.mergeDivergedBranches(e,r,n,a,l)}async resolveMissingShaOutcome(e,r,n,i,s){return s?i?{localSha:i,remoteSha:s}:(await this.git.updateBranchRef(e,r,s),this.logger.info(j.ADOPTED_REMOTE_BRANCH,{branchName:r}),{resolved:{status:Qe.FAST_FORWARDED_LOCAL,branchTipSha:s}}):(i&&await this.pushQuietly(e,n,r),{resolved:{status:Qe.PUSHED_LOCAL,branchTipSha:i}})}async resolveFastForwardOutcome(e,r,n,i,s){if(await this.git.isAncestor(e,i,s))return await this.git.updateBranchRef(e,r,s),this.logger.info(j.FAST_FORWARDED_LOCAL_BRANCH,{branchName:r,remoteSha:s}),{status:Qe.FAST_FORWARDED_LOCAL,branchTipSha:s};if(await this.git.isAncestor(e,s,i))return await this.pushQuietly(e,n,r),{status:Qe.PUSHED_LOCAL,branchTipSha:i}}async mergeDivergedBranches(e,r,n,i,s){let o=await this.resolveMergeWinner(e,i,s),a=await this.git.getTreeSha(e,o),l=j.mergeCommitMessage(o===i),c=await this.git.createMergeCommit(e,a,[i,s],l);return await this.git.updateBranchRef(e,r,c),await this.pushQuietly(e,n,r),this.logger.info(j.MERGED_DIVERGED_BRANCH,{branchName:r,winner:o===i?j.MERGE_WINNER_LOCAL:j.MERGE_WINNER_REMOTE,mergeSha:c}),{status:Qe.MERGED,branchTipSha:c}}async pushQuietly(e,r,n){try{await this.git.pushRef(e,r,n,this.gitNetworkTimeoutMs)}catch(i){this.logger.warn(j.FAILED_TO_PUSH_WILL_RETRY,{branchName:n,error:i instanceof Error?i.message:String(i)})}}async resolveMergeWinner(e,r,n){let[i,s]=await Promise.all([this.git.getCommitLog(e,r,1),this.git.getCommitLog(e,n,1)]),o=i[0]?sr(i[0].message):void 0,a=s[0]?sr(s[0].message):void 0;if(o&&a)try{if(await this.git.isAncestor(e,o,a))return n;if(await this.git.isAncestor(e,a,o))return r}catch{}let[l,c]=await Promise.all([this.git.getCommitTimestamp(e,r),this.git.getCommitTimestamp(e,n)]);return l>=c?r:n}async resolveNewestSourceTrailerSha(e,r=E.KNOWLEDGE_ROOT){let n=await this.git.getCommitLog(e,r,E.KNOWLEDGE_LOG_SCAN_LIMIT);for(let i of n){let s=sr(i.message);if(s)return s}}async hasSourceCommitInHistory(e,r,n=E.KNOWLEDGE_ROOT){let i=await this.git.getCommitLog(e,n,E.KNOWLEDGE_LOG_SCAN_LIMIT);for(let s of i)if(sr(s.message)===r)return!0;return!1}async runUnderKnowledgeLock(e,r){return zt(this.git,e,r)}async buildSnapshotCommitMessage(e){let r=await this.git.getHeadSha(e);return r?j.snapshotCommitMessage(r):j.SNAPSHOT_UNKNOWN}};import Pr from"fs/promises";import _t from"path";import $A from"os";var ug=".md",kA=/[<>:"/\\|?*\x00-\x1f\s]/g,GA=".",xA="..",UA=new Set(["con","prn","aux","nul","com0","com1","com2","com3","com4","com5","com6","com7","com8","com9","lpt0","lpt1","lpt2","lpt3","lpt4","lpt5","lpt6","lpt7","lpt8","lpt9"]),dg="_";function gg(t){let e=t.replace(kA,"_");e.length>100&&(e=e.slice(0,100));let r=e.indexOf("."),n=r===-1?e:e.slice(0,r);return UA.has(n.toLowerCase())?r===-1?`${n}${dg}`:`${n}${dg}${e.slice(r)}`:e}function HA(t){return t.split(/[\\/]+/).filter(e=>e.length>0&&e!==GA&&e!==xA).map(gg).join("/")}function BA(t){let e=t.lastIndexOf("/"),r=e===-1?"":t.slice(0,e),n=e===-1?t:t.slice(e+1),i=n.lastIndexOf("."),s=i<=0?n:n.slice(0,i);return{dir:r,base:s}}function fg(t,e){if(!t.filePath)return;let r=HA(t.filePath);if(!e)return`${E.KNOWLEDGE_DIR_NAME}/${r}${ug}`;let{dir:n,base:i}=BA(r),s=gg(t.name),o=n?`${n}/${i}`:i;return`${E.KNOWLEDGE_DIR_NAME}/${o}/${s}${ug}`}function KA(t){if(!(typeof t!="string"||t.length===0)){try{let e=JSON.parse(t);if(Array.isArray(e)&&e.length>0)return String(e[0])}catch(e){}return t}}function hg(t,e){let r=new Map;for(let s of t)r.set(s.id,KA(s.path_patterns));let n=new Map;for(let s of e)s.link_type===Oe.CONTAINS&&n.set(s.target_node_id,s.source_node_id);let i=new Map;for(let s of t){let o=n.get(s.id),a=o!==void 0?r.get(o):r.get(s.id),l=fg({name:s.name,filePath:a},o!==void 0);l&&i.set(s.id,l)}return i}function mg(t,e){let r=new Map;for(let i of e)i.type===Oe.CONTAINS&&r.set(i.target,i.source);let n=new Map;for(let i of t){let s=r.has(i.nodeKey),o=fg({name:i.name,filePath:i.filePath},s);o&&n.set(i.nodeKey,o)}return n}function pg(t){if(!t)return[];try{let e=JSON.parse(t);return Array.isArray(e)?e.map(String):[]}catch{return[]}}function _g(t,e){let r={content_hash:t.content_hash??"",node_type:t.node_type,title:t.title,l2_path:e,source_commits:pg(t.initial_source_commits??t.source_commits),extraction_model:t.extraction_model,source_files:pg(t.source_files),created_at:t.created_at},n=t.content??"";return`---
|
|
119
119
|
${JSON.stringify(r,null,2)}
|
|
120
120
|
---
|
|
121
121
|
|
|
@@ -130,9 +130,9 @@ ${n}
|
|
|
130
130
|
`).map(e=>e.trim()).filter(Boolean).map(e=>{let r=JSON.parse(e);return{nodeKey:r.id,name:r.name,filePath:r.filePath}}):[]}function tR(t){return t?t.split(`
|
|
131
131
|
`).map(e=>e.trim()).filter(Boolean).map(e=>JSON.parse(e)):[]}async function xl(t,e,r,n,i=fe()){let s=Gl.posix.join(E.KNOWLEDGE_DIR_NAME,E.L3_DIR_NAME),o=await t.listFilesAtRef(e,r,s);if(o.length===0)return{cardsFound:0,imported:0};let[a,l]=await Promise.all([t.readFileAtRef(e,r,Gl.posix.join(E.GRAPH_DIR_NAME,E.NODES_JSONL_NAME)),t.readFileAtRef(e,r,Gl.posix.join(E.GRAPH_DIR_NAME,E.EDGES_JSONL_NAME))]),c=eR(a),u=tR(l),p=new Map;for(let[f,m]of mg(c,u))p.set(m,f);let d=0;for(let f of o){let m=await t.readFileAtRef(e,r,f);if(!m)continue;let _=Eg(m);if(!_)continue;let I=p.get(_.l2_path);if(!I)continue;let L=n.graph.findNodeIdByNodeKey(I);if(L===void 0)continue;n.l3.importCard({l2NodeId:L,contentHash:_.content_hash,title:_.title,content:_.content,nodeType:_.node_type,sourceCommits:_.source_commits,extractionModel:_.extraction_model,sourceFiles:_.source_files,createdAt:_.created_at}).imported&&d++}return i.info(j.IMPORTED_L3_CARDS,{cardsFound:o.length,imported:d}),{cardsFound:o.length,imported:d}}var rR=2e3,nR=50,iR=.5;function sR(t){return t?t.split(`
|
|
132
132
|
`).map(e=>e.trim()).filter(Boolean).map(e=>{let r=JSON.parse(e);return{nodeKey:r.id,name:r.name,filePath:r.filePath}}):[]}function oR(t){return t?t.split(`
|
|
133
|
-
`).map(e=>e.trim()).filter(Boolean).map(e=>JSON.parse(e)):[]}var Fs=class{constructor(e,r=fe()){this.git=e;this.logger=r}git;logger;async resolveHydrationCommit(e,r=E.KNOWLEDGE_ROOT){let n=await this.git.getBranchTipSha(e,r);if(!n)return;let i=await this.git.getCommitLog(e,r,E.KNOWLEDGE_LOG_SCAN_LIMIT),s=new Map;for(let a of i){let l=sr(a.message);l&&!s.has(l)&&s.set(l,a.sha)}if(s.size===0)return n;let o=await this.git.getCommitAncestry(e,E.HEAD_REF,rR);for(let a of o){let l=s.get(a);if(l)return l}return n}async hydrate(e,r,n=E.KNOWLEDGE_ROOT,i){let s=await this.resolveHydrationCommit(e,n);if(!s)return this.logger.debug(j.NOTHING_TO_HYDRATE,{branchName:n}),{hydrated:!1,nodesLoaded:0,edgesLoaded:0,edgesDropped:0};let[o,a]=await Promise.all([this.git.readFileAtRef(e,s,Ng.posix.join(E.GRAPH_DIR_NAME,E.NODES_JSONL_NAME)),this.git.readFileAtRef(e,s,Ng.posix.join(E.GRAPH_DIR_NAME,E.EDGES_JSONL_NAME))]),l=sR(o),c=oR(a);if(!(i?.force??!1)){let d=this.checkDestructiveRebuildGuard(r,l.length);if(d)return this.logger.warn(d.message,{knowledgeSha:s,incomingNodes:l.length}),{hydrated:!1,refused:!0,refusalReason:d.reason,nodesLoaded:0,edgesLoaded:0,edgesDropped:0}}let p=await r.withWriteLock(async()=>{let d=r.graph.bulkLoadGraph({projectId:E.DEFAULT_LOCAL_PROJECT_ID,nodes:l,edges:c});return await xl(this.git,e,s,r,this.logger),r.meta.set(E.META_KEY_KNOWLEDGE_TIP_SHA,s),d});return this.logger.info(j.HYDRATED_KNOWLEDGE_GRAPH,{knowledgeSha:s,...p}),{hydrated:!0,knowledgeSha:s,...p}}checkDestructiveRebuildGuard(e,r){if(e.meta.get(E.META_KEY_KNOWLEDGE_PACK_PENDING))return{reason:"pending-local-write",message:j.HYDRATE_REFUSED_PENDING_WRITE};let n=e.graph.count().l2Nodes;if(n>=nR&&r<n*iR)return{reason:"catastrophic-shrink",message:j.hydrateRefusedCatastrophicShrink(n,r)}}async isStale(e,r,n=E.KNOWLEDGE_ROOT){let i=await this.resolveHydrationCommit(e,n);return i?r.meta.get(E.META_KEY_KNOWLEDGE_TIP_SHA)!==i:!1}async markSynced(e,r,n=E.KNOWLEDGE_ROOT){let i=await this.resolveHydrationCommit(e,n);i&&await r.withWriteLock(()=>{r.meta.set(E.META_KEY_KNOWLEDGE_TIP_SHA,i)})}async importL3Cards(e,r,n){return n.withWriteLock(()=>xl(this.git,e,r,n,this.logger))}};var Du=hl(Ou(),1),wm=hl(Cm(),1);import vm from"path";import bm from"fs/promises";import UL from"crypto";var Se={PACKAGE_JSON_TYPESCRIPT:"package.json:typescript",PACKAGE_JSON_REACT:"package.json:react",PACKAGE_JSON_VUE:"package.json:vue",PACKAGE_JSON_NEXT:"package.json:next",PACKAGE_JSON_EXPRESS:"package.json:express",PACKAGE_JSON_DRIZZLE_ORM:"package.json:drizzle-orm",PACKAGE_JSON_TAILWINDCSS:"package.json:tailwindcss",PACKAGE_JSON_JEST:"package.json:jest",PACKAGE_JSON_VITEST:"package.json:vitest",PACKAGE_JSON_PG:"package.json:pg",PACKAGE_JSON_WORKSPACES:"package.json:workspaces",CARGO_BASE:"cargo:base",CARGO_TOKIO:"cargo:tokio",CARGO_ACTIX:"cargo:actix",CARGO_SERDE:"cargo:serde",CARGO_TAURI:"cargo:tauri",PYTHON_BASE:"python:base",PYTHON_DJANGO:"python:django",PYTHON_FASTAPI:"python:fastapi",PYTHON_PANDAS:"python:pandas",GO_BASE:"go:base",GO_GIN:"go:gin",TSCONFIG_STRICT:"tsconfig:strict",VITE_PRESENCE:"vite:presence",DRIZZLE_PRESENCE:"drizzle:presence",TAURI_PRESENCE:"tauri:presence"},oe={PACKAGE_JSON:"package.json",CARGO_TOML:"Cargo.toml",PYPROJECT_TOML:"pyproject.toml",REQUIREMENTS_TXT:"requirements.txt",GO_MOD:"go.mod",TSCONFIG_JSON:"tsconfig.json",JSCONFIG_JSON:"jsconfig.json"},Gr={VITE_CONFIG:"vite.config",DRIZZLE_CONFIG:"drizzle.config",TAURI_CONF:"tauri.conf",WEBPACK_CONFIG:"webpack.config"},ke={PACKAGE_JSON_TYPESCRIPT:'"typescript"',PACKAGE_JSON_REACT:'"react"',PACKAGE_JSON_VUE:'"vue"',PACKAGE_JSON_NEXT:'"next"',PACKAGE_JSON_EXPRESS:'"express"',PACKAGE_JSON_DRIZZLE_ORM:'"drizzle-orm"',PACKAGE_JSON_TAILWINDCSS:'"tailwindcss"',PACKAGE_JSON_JEST:'"jest"',PACKAGE_JSON_VITEST:'"vitest"',PACKAGE_JSON_PG:'"pg"',PACKAGE_JSON_WORKSPACES:'"workspaces"',CARGO_TOKIO:"tokio",CARGO_ACTIX:"actix",CARGO_SERDE:"serde",CARGO_TAURI:"tauri",PYTHON_DJANGO:"django",PYTHON_FASTAPI:"fastapi",PYTHON_PANDAS:"pandas",GO_GIN:"gin-gonic"},Nt={CONFIG_SCAN_FAILED:"Config scanning failed",STARTING_GIT_BLOB_SCAN:"Starting global AST scan using Git-native blob hashing",GIT_OPS_FAILED_FALLBACK:"Git operations failed during discovery, falling back to manual globbing",GIT_UNAVAILABLE_FALLBACK:"Git unavailable or no .git repository found; falling back to fast-glob + manual sha256 hashing",NO_GITIGNORE_FOUND:"No .gitignore found, proceeding without it",DISCOVERED_SOURCE_FILES:"Discovered source files",SKIPPING_OVERSIZED_FILE:"Skipping oversized file",GIT_HASH_DELTA_CHECK_COMPLETE:"Git hash delta check complete",VCS_HOTSPOT_DOMAINS_EXTRACTED:"VCS hotspot analysis extracted functional domains"},fo=[`${at}/**`,".git/**","dist/**","build/**"],Pm=[at,"dist","build","docs","test","tests","scripts"],ho="src",Dm=[ho,"lib","app"];var HL=".gitignore",mo=class{constructor(e,r=fe()){this.git=e;this.logger=r}git;logger;async discoverFiles(e,r,n={}){let{onlyIndexed:i=!1}=n,s=new Map,o=new Set,{allFiles:a,usingGit:l}=await this.resolveCandidateFiles(e,i,s,o),c=this.buildExistingHashesMap(r),u={workspaceRoot:e,onlyIndexed:i,usingGit:l,gitBlobHashes:s,dirtyFiles:o,existingHashes:c},{filesToParse:p,skippedOversized:d,skippedCount:f}=await this.categorizeFiles(a,u);return this.logger.debug(Nt.GIT_HASH_DELTA_CHECK_COMPLETE,{filesToParse:p.length,skipped:f,skippedOversized:d.length}),{filesToParse:p,existingHashes:c,skippedCount:f,skippedOversized:d}}async resolveCandidateFiles(e,r,n,i){let s=await this.git.isGitRepository(e),o=[];if(s){this.logger.debug(Nt.STARTING_GIT_BLOB_SCAN);let a=await this.scanGitTrackedFiles(e,r,n,i);a?o=a:s=!1}return s||(o=await this.discoverViaGlobFallback(e,i)),o=o.filter(a=>Ln(a)),this.logger.debug(Nt.DISCOVERED_SOURCE_FILES,{count:o.length}),{allFiles:o,usingGit:s}}async scanGitTrackedFiles(e,r,n,i){try{let s=await this.git.listTrackedFilesWithBlobHash(e);for(let[l,c]of s)n.set(l,c);let o=await this.git.listUntrackedFiles(e),a=await this.git.listModifiedFiles(e);return r?[...n.keys()]:([...o,...a].forEach(l=>{l.trim()&&i.add(l.trim())}),[...n.keys(),...o])}catch(s){return this.logger.warn(Nt.GIT_OPS_FAILED_FALLBACK,{error:s instanceof Error?s.message:String(s)}),null}}async discoverViaGlobFallback(e,r){this.logger.debug(Nt.GIT_UNAVAILABLE_FALLBACK);let n=(0,wm.default)();try{let c=await bm.readFile(vm.join(e,HL),K);n.add(c)}catch{this.logger.debug(Nt.NO_GITIGNORE_FOUND)}let i=[...fo,`${he}/**`],[s,o]=await Promise.all([(0,Du.default)(`**/*.{${Tl().join(",")}}`,{cwd:e,ignore:i,absolute:!1}),(0,Du.default)(`**/{${Array.from(Sl).join(",")}}`,{cwd:e,ignore:i,absolute:!1})]),a=[...s,...o],l=n.filter(a);return l.forEach(c=>r.add(c)),l}buildExistingHashesMap(e){let r=new Map;for(let{filePath:n,contentHash:i}of e.getAllHashes())i!==null&&r.set(n,i);return r}async categorizeFiles(e,r){let n=[],i=[],s=0;for(let o of e){let a=await this.resolveFileOutcome(o,r);switch(a.kind){case"parse":n.push(a.entry);break;case"oversized":i.push({file:a.file,sizeBytes:a.sizeBytes});break;case"skip":s++;break;case"unreadable":break}}return{filesToParse:n,skippedOversized:i,skippedCount:s}}async resolveFileOutcome(e,r){let n=this.resolveKnownBlobHash(e,r);if(n&&r.existingHashes.get(e)===n)return{kind:"skip"};let i=await this.readFileForHashing(e,n,r);if(!i)return{kind:"unreadable"};if(r.existingHashes.get(e)===i.hash)return{kind:"skip"};let s=Buffer.byteLength(i.code);return s>512e3?(this.logger.warn(Nt.SKIPPING_OVERSIZED_FILE,{file:e,sizeBytes:s}),{kind:"oversized",file:e,sizeBytes:s}):{kind:"parse",entry:{file:e,hash:i.hash,code:i.code}}}resolveKnownBlobHash(e,r){let n=r.dirtyFiles.has(e),i="";return!n&&r.gitBlobHashes.has(e)&&(i=r.gitBlobHashes.get(e)),r.onlyIndexed&&r.usingGit&&r.gitBlobHashes.has(e)&&(i=r.gitBlobHashes.get(e)),i}async readFileForHashing(e,r,n){try{let i;if(n.onlyIndexed&&n.usingGit&&n.gitBlobHashes.has(e)){let o=n.gitBlobHashes.get(e);i=await this.git.readBlobContent(n.workspaceRoot,o)}else i=await bm.readFile(vm.join(n.workspaceRoot,e),K);let s=r||UL.createHash(Vt).update(i).digest("hex");return{code:i,hash:s}}catch{return null}}};var Mm=hl(Ou(),1);import BL from"path";import KL from"fs/promises";function So(t){return e=>e===t}function vu(t){return e=>e.startsWith(t)}function He(t,e,r,n){return{id:t,matchesFile:e,detect:i=>i.includes(r)?{tags:n}:null}}function jn(t,e,r){return{id:t,matchesFile:e,detect:()=>r}}var xt=So(oe.PACKAGE_JSON),ki=So(oe.CARGO_TOML),_o=t=>t===oe.PYPROJECT_TOML||t===oe.REQUIREMENTS_TXT,Fm=So(oe.GO_MOD),YL=So(oe.TSCONFIG_JSON),$L=[He(Se.PACKAGE_JSON_TYPESCRIPT,xt,ke.PACKAGE_JSON_TYPESCRIPT,[ir.TYPESCRIPT]),He(Se.PACKAGE_JSON_REACT,xt,ke.PACKAGE_JSON_REACT,[ir.REACT,se.FRONTEND]),He(Se.PACKAGE_JSON_VUE,xt,ke.PACKAGE_JSON_VUE,[ir.VUE,se.FRONTEND]),He(Se.PACKAGE_JSON_NEXT,xt,ke.PACKAGE_JSON_NEXT,[se.NEXTJS,se.FRONTEND,se.SSR]),He(Se.PACKAGE_JSON_EXPRESS,xt,ke.PACKAGE_JSON_EXPRESS,[ir.EXPRESS,se.BACKEND]),He(Se.PACKAGE_JSON_DRIZZLE_ORM,xt,ke.PACKAGE_JSON_DRIZZLE_ORM,[se.DRIZZLE,se.DATABASE]),He(Se.PACKAGE_JSON_TAILWINDCSS,xt,ke.PACKAGE_JSON_TAILWINDCSS,[se.TAILWINDCSS,se.CSS]),He(Se.PACKAGE_JSON_JEST,xt,ke.PACKAGE_JSON_JEST,[se.JEST,se.TESTING]),He(Se.PACKAGE_JSON_VITEST,xt,ke.PACKAGE_JSON_VITEST,[se.VITEST,se.TESTING]),He(Se.PACKAGE_JSON_PG,xt,ke.PACKAGE_JSON_PG,[se.POSTGRES,se.DATABASE]),He(Se.PACKAGE_JSON_WORKSPACES,xt,ke.PACKAGE_JSON_WORKSPACES,[se.MONOREPO]),jn(Se.CARGO_BASE,ki,{projectType:ht.RUST,tags:[ht.RUST]}),He(Se.CARGO_TOKIO,ki,ke.CARGO_TOKIO,[se.TOKIO,se.ASYNC]),He(Se.CARGO_ACTIX,ki,ke.CARGO_ACTIX,[se.ACTIX,se.BACKEND]),He(Se.CARGO_SERDE,ki,ke.CARGO_SERDE,[se.SERDE]),He(Se.CARGO_TAURI,ki,ke.CARGO_TAURI,[se.TAURI,se.DESKTOP]),jn(Se.PYTHON_BASE,_o,{projectType:ht.PYTHON,tags:[ht.PYTHON]}),He(Se.PYTHON_DJANGO,_o,ke.PYTHON_DJANGO,[se.DJANGO,se.BACKEND]),He(Se.PYTHON_FASTAPI,_o,ke.PYTHON_FASTAPI,[se.FASTAPI,se.BACKEND]),He(Se.PYTHON_PANDAS,_o,ke.PYTHON_PANDAS,[se.PANDAS,se.DATA]),jn(Se.GO_BASE,Fm,{projectType:ht.GO,tags:[ht.GO]}),He(Se.GO_GIN,Fm,ke.GO_GIN,[se.GIN,se.BACKEND]),{id:Se.TSCONFIG_STRICT,matchesFile:YL,detect:t=>/"strict"\s*:\s*true/.test(t)?{tags:[se.STRICT_TS]}:null},jn(Se.VITE_PRESENCE,vu(Gr.VITE_CONFIG),{tags:[se.VITE,se.BUILD_TOOL]}),jn(Se.DRIZZLE_PRESENCE,vu(Gr.DRIZZLE_CONFIG),{tags:[se.DRIZZLE,se.DATABASE]}),jn(Se.TAURI_PRESENCE,vu(Gr.TAURI_CONF),{tags:[se.TAURI,se.DESKTOP]})],WL=[`**/${oe.PACKAGE_JSON}`,`**/${oe.CARGO_TOML}`,`**/${oe.PYPROJECT_TOML}`,`**/${oe.REQUIREMENTS_TXT}`,`**/${oe.GO_MOD}`,`**/${oe.TSCONFIG_JSON}`,`**/${Gr.VITE_CONFIG}.*`,`**/${Gr.DRIZZLE_CONFIG}.*`,`**/${Gr.WEBPACK_CONFIG}.*`,`**/${Gr.TAURI_CONF}.*`],jL=[...fo,"target/**","venv/**",".venv/**","**/fixtures/**","**/__fixtures__/**","**/test-data/**"],Eo=class{constructor(e=fe()){this.logger=e}logger;async scanConfigs(e){let r=ht.UNKNOWN,n=new Set;try{let i=await(0,Mm.default)(WL,{cwd:e,ignore:jL,absolute:!0,deep:3});r=await this.scanAllConfigFiles(i,n),r=this.resolveJavascriptFallback(r,n)}catch(i){this.logger.warn(Nt.CONFIG_SCAN_FAILED,{error:i?.message??String(i)})}return r===ht.UNKNOWN&&(r=ht.GENERIC),n.size===0&&n.add(op),{projectType:r,tags:Array.from(n)}}async scanAllConfigFiles(e,r){let n=ht.UNKNOWN;for(let i of e){let s=await this.readConfigFileContent(i);if(s===null)continue;let o=BL.basename(i),a=this.applyDetectionRules(o,s,r);a&&(n=a)}return n}async readConfigFileContent(e){try{return await KL.readFile(e,K)}catch{return null}}applyDetectionRules(e,r,n){let i;for(let s of $L){if(!s.matchesFile(e))continue;let o=s.detect(r);if(o){o.projectType&&(i=o.projectType);for(let a of o.tags)n.add(a)}}return i}resolveJavascriptFallback(e,r){return(r.has(ir.TYPESCRIPT)||r.has(ir.REACT)||r.has(ir.EXPRESS)||r.has(ir.VUE))&&e===ht.UNKNOWN?ht.JAVASCRIPT:e}};var bu=".",VL=["packages","artifacts","crates"],zL="domain:";function JL(t){return t[0]===ho&&t.length>1||t.length>2&&t[1]===ho&&VL.includes(t[0])?t[1]:t[0]}function qL(t){let e=t.split("/");if(e.length<=1||e[0].startsWith(bu)||Pm.includes(e[0]))return null;let r=JL(e);return r.includes(bu)||r.startsWith(bu)||Dm.includes(r)?null:r}var To=class{constructor(e,r=fe()){this.git=e;this.logger=r}git;logger;async extractHotspotTags(e){let r=new Set;try{if(!await this.git.isGitRepository(e))return[];let i=await this.git.getRecentChangedFilePaths(e,100),s=this.countChangedPathDomains(i),o=this.selectTopDomains(s);for(let a of o)a.length>2&&r.add(`${zL}${a}`);o.length>0&&this.logger.debug(Nt.VCS_HOTSPOT_DOMAINS_EXTRACTED,{domains:o})}catch{}return Array.from(r)}countChangedPathDomains(e){let r=new Map;for(let n of e){let i=n.trim();if(!i)continue;let s=qL(i);s&&r.set(s,(r.get(s)||0)+1)}return r}selectTopDomains(e){return Array.from(e.entries()).sort((r,n)=>n[1]-r[1]).slice(0,5).map(r=>r[0])}};import nN from"os";import{Worker as QL}from"worker_threads";import*as xi from"path";import*as xr from"fs";import{fileURLToPath as XL}from"url";import ZL from"crypto";var eN=XL(import.meta.url),km=xi.dirname(eN),Ao={FORMAT:"esm",PLATFORM:"node",TARGET:"node20",EXTERNAL_TREE_SITTER:"web-tree-sitter"},Gi={EVAL:"--eval",PRINT:"--print",IMPORT:"--import",TSX_LOADER:"tsx"};async function tN(t,e){let r=await import("esbuild"),n=`${e}.${process.pid}.tmp`;await r.build({entryPoints:[t],outfile:n,bundle:!0,format:Ao.FORMAT,platform:Ao.PLATFORM,target:Ao.TARGET,external:[Ao.EXTERNAL_TREE_SITTER]}),xr.renameSync(n,e)}function rN(t,e){return xr.existsSync(e)?xr.existsSync(t)?xr.statSync(t).mtimeMs>xr.statSync(e).mtimeMs:!1:!0}var Ui=class extends Error{constructor(r,n){super(Ve.workerCrashWhileParsing(r??Ve.UNKNOWN_FILE)+(n instanceof Error?n.message:String(n)));this.filePath=r;this.cause=n;this.name=dp}filePath;cause},Ro=class{constructor(e=fe(),r=3e4,n,i){this.logger=e;this.taskTimeoutMs=r;this.cache=n;this.workerScriptPathOverride=i;this.ipcLogRouter=new Hd(this.logger)}logger;taskTimeoutMs;cache;workerScriptPathOverride;workers=[];workerTasks=new Map;workerOptions={};wPath="";workerQueue=[];spawnChain=Promise.resolve();taskQueue=[];taskCounter=0;pendingTasks=new Map;taskTimeouts=new Map;taskFilePaths=new Map;timedOutWorkers=new WeakSet;shuttingDown=!1;ipcLogRouter;batchChain=Promise.resolve();enqueueSpawn(){return this.spawnChain=this.spawnChain.then(async()=>{this.spawnWorker(),await new Promise(e=>setImmediate(e))}),this.spawnChain}spawnWorker(){let e=new QL(this.wPath,this.workerOptions);e.on("message",n=>{if(this.ipcLogRouter.handleMessage(n))return;this.workerTasks.delete(e);let i=this.taskTimeouts.get(n.taskId);i&&(clearTimeout(i),this.taskTimeouts.delete(n.taskId));let s=this.pendingTasks.get(n.taskId);s&&(this.pendingTasks.delete(n.taskId),this.taskFilePaths.delete(n.taskId),s.resolve(n)),this.workerQueue.push(e),this.processQueue()});let r=n=>{let i=this.timedOutWorkers.delete(e),s=this.workerTasks.get(e),o=s?this.taskFilePaths.get(s):void 0;if(this.shuttingDown?this.logger.debug(Ve.WORKER_EXITED_DURING_SHUTDOWN,{taskId:s,filePath:o}):this.logger.error(Ve.WORKER_CRASHED_EXITED,{taskId:s,filePath:o,hadInFlightTask:!!s,error:n instanceof Error?{message:n.message,name:n.name}:n}),s){let a=this.taskTimeouts.get(s);a&&(clearTimeout(a),this.taskTimeouts.delete(s));let l=this.pendingTasks.get(s);l&&(l.reject(new Ui(o,i?new Error(Ve.taskTimedOutAfterMs(s,this.taskTimeoutMs)):n||new Error(Ve.WORKER_EXITED_UNEXPECTEDLY))),this.pendingTasks.delete(s)),this.workerTasks.delete(e),this.taskFilePaths.delete(s)}this.workers=this.workers.filter(a=>a!==e),this.workerQueue=this.workerQueue.filter(a=>a!==e),this.shuttingDown||this.enqueueSpawn()};return e.on("error",r),e.on("exit",n=>{n!==0&&r(new Error(Ve.workerExitedWithCode(n)))}),this.workers.push(e),this.workerQueue.push(e),this.processQueue(),e}async initialize(e=2){if(this.workers.length>0)return;if(this.shuttingDown=!1,this.workerScriptPathOverride){this.wPath=this.workerScriptPathOverride,this.workerOptions.execArgv=process.execArgv.filter(n=>!n.includes(Gi.EVAL)&&!n.includes(Gi.PRINT)),this.workerOptions.execArgv.some(n=>n.includes(Gi.TSX_LOADER))||this.workerOptions.execArgv.push(Gi.IMPORT,Gi.TSX_LOADER);for(let n=0;n<e;n++)await this.enqueueSpawn();return}this.wPath=xi.resolve(km,"./ast-worker.js");let r=xi.resolve(km,"./ast-worker.ts");rN(r,this.wPath)&&await tN(r,this.wPath),this.workerOptions.execArgv=[];for(let n=0;n<e;n++)await this.enqueueSpawn()}parse(e){return new Promise((r,n)=>{let i;if(this.cache){i=ZL.createHash(Vt).update(e.code).digest("hex");let o=performance.now(),a=this.cache.get(i),l=performance.now()-o;if(a){this.logger.debug(Ve.PARSE_CACHE_HIT,{contentHash:i,cacheLookupTimeMs:Number(l.toFixed(2))}),r(a);return}}let s=Date.now();this.taskQueue.push({request:e,resolve:o=>{if(this.cache){this.cache.set(i,o);let a=this.cache.metrics;if(a.hits+a.misses>0&&(a.hits+a.misses)%100===0){let l=a.hits/(a.hits+a.misses)*100,c=Date.now()-s;this.logger.info(Ve.CACHE_METRICS_AND_QUEUE_PERFORMANCE,{hitRate:Number(l.toFixed(2)),queueWaitTimeMs:c,...a})}}r(o)},reject:n}),this.processQueue()})}processQueue(){for(;this.taskQueue.length>0&&this.workerQueue.length>0;){let e=this.taskQueue.shift(),r=this.workerQueue.shift(),n=String(++this.taskCounter);this.pendingTasks.set(n,{resolve:e.resolve,reject:e.reject}),this.workerTasks.set(r,n),this.taskFilePaths.set(n,e.request.filePath);let i=setTimeout(()=>{this.taskTimeouts.delete(n),this.timedOutWorkers.add(r),this.logger.error(Ve.TASK_TIMED_OUT_TERMINATING,{taskId:n,filePath:this.taskFilePaths.get(n),taskTimeoutMs:this.taskTimeoutMs}),r.terminate().catch(s=>{this.logger.warn(Ve.WORKER_TERMINATE_FAILED,{taskId:n,filePath:this.taskFilePaths.get(n),error:s instanceof Error?{message:s.message,name:s.name}:s})})},this.taskTimeoutMs);this.taskTimeouts.set(n,i),r.postMessage({...e.request,taskId:n})}}async terminate(){this.shuttingDown=!0;let e=new Error(Ve.POOL_TERMINATED);for(let n of this.taskTimeouts.values())clearTimeout(n);this.taskTimeouts.clear();for(let n of this.pendingTasks.values())n.reject(e);this.pendingTasks.clear();for(let n of this.taskQueue)n.reject(e);this.taskQueue=[],this.workerTasks.clear(),this.taskFilePaths.clear(),this.workerQueue=[];let r=this.workers;this.workers=[],await Promise.all(r.map(n=>n.terminate()))}async serializeBatch(e){let r=this.batchChain.then(e);return this.batchChain=r.then(()=>{},()=>{}),r}};var Oo=class{constructor(e,r=fe()){this.workerPool=e;this.logger=r}workerPool;logger;async processFiles(e,r){return this.workerPool.serializeBatch(()=>this.runBatch(e,r))}async runBatch(e,r){let n=this.workerPool,i=Math.max(1,(nN.cpus().length||4)-1);await n.initialize(i);let s=u=>ds(u)??ap.TYPESCRIPT,o=[],a=[],l=new Array(r.length),c=r.map(async(u,p)=>{try{let d=await n.parse({filePath:u.file,code:u.code,language:s(u.file)});if(d.success&&d.data)l[p]={outcome:"parsed",result:{file:u.file,hash:u.hash,data:d.data,language:ds(u.file)}};else{let f=d.error??Ve.PARSE_FAILURE_NO_DETAIL;this.logger.warn(Ve.PARSE_FAILURE_RESULT,{file:u.file,error:f}),l[p]={outcome:"failed",failure:{file:u.file,hash:u.hash,error:f}}}}catch(d){let f=d instanceof Ui||d instanceof Error?d.message:String(d);this.logger.error(Ve.PARSE_THREW,{file:u.file,error:f}),l[p]={outcome:"failed",failure:{file:u.file,hash:u.hash,error:f}}}});await Promise.all(c);for(let u of l)u.outcome==="parsed"?o.push(u.result):a.push(u.failure);return await n.terminate(),{parsed:o,failures:a}}};import*as et from"path";import*as pt from"fs";import*as Io from"fs";import yo from"path";function Hi(t,e){let r=yo.resolve(t),n=yo.resolve(r,e),i=r.endsWith(yo.sep)?r:r+yo.sep;return n===r||n.startsWith(i)?n:null}function Lo(t,e){let r=Hi(t,e);if(!r||!Io.existsSync(r))return null;try{return Io.readFileSync(r,K)}catch{return null}}function Gm(t){return t.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*|\/\*[\s\S]*?\*\/)/g,(e,r)=>r?"":e)}var iN="tsconfig.base.json",sN="pnpm-workspace.yaml",oN="index.js",aN="src",lN="index",No="*",xm=".",Um=[".ts",".js",".tsx",".jsx",".py",".rs",".go",".java",".cpp",".cc",".c",".h",".hpp"],cN=["/index.ts","/index.js"],Hm=".go",Bm={TSCONFIG_PARSE_FAILED:"Failed to JSON-parse tsconfig.json",TSCONFIG_FILES_READ_FAILED:"Failed to read or parse tsconfig files"},wu="*",uN="node:",dN=/^(@[^/]+\/[^/]+|[^/]+)/,Co=class t{constructor(e,r=fe()){this.workspaceRoot=e;this.logger=r;this.loadTsConfigPaths()}workspaceRoot;logger;exportsByFile=new Map;importsByFile=new Map;localsByFile=new Map;tsConfigPaths={};goFilesByDirectory=new Map;loadTsConfigPaths(){try{this.mergeProjectTsConfigPaths(),this.mergeBaseTsConfigPaths()}catch(e){this.logger.debug(Bm.TSCONFIG_FILES_READ_FAILED,{error:e?.message??String(e)})}}mergeProjectTsConfigPaths(){let e=et.join(this.workspaceRoot,oe.TSCONFIG_JSON);if(!pt.existsSync(e))return;let r=pt.readFileSync(e,K),n=Gm(r);try{let i=JSON.parse(n);i.compilerOptions&&i.compilerOptions.paths&&(this.tsConfigPaths={...this.tsConfigPaths,...i.compilerOptions.paths})}catch(i){this.logger.debug(Bm.TSCONFIG_PARSE_FAILED,{error:i instanceof Error?i.message:String(i)})}}mergeBaseTsConfigPaths(){let e=et.join(this.workspaceRoot,iN);if(!pt.existsSync(e))return;let r=pt.readFileSync(e,K),n=Gm(r),i=JSON.parse(n);i.compilerOptions&&i.compilerOptions.paths&&(this.tsConfigPaths={...i.compilerOptions.paths,...this.tsConfigPaths})}registerFile(e,r,n,i){let s=e.replace(/\\/g,"/");if(this.importsByFile.set(s,r),this.exportsByFile.set(s,new Set(n)),this.localsByFile.set(s,new Set(i)),s.endsWith(Hm)){let o=et.posix.dirname(s),a=this.goFilesByDirectory.get(o);a||(a=new Set,this.goFilesByDirectory.set(o,a)),a.add(s)}}resolveCall(e,r){let n=e.replace(/\\/g,"/"),i=this.localsByFile.get(n);if(i&&i.has(r))return{targetFile:n,targetSymbol:r};let s=this.importsByFile.get(n)||[];for(let o of s){if(o.localName!==r)continue;let a=this.resolveImportedBinding(n,o,r);if(a)return a}if(n.endsWith(Hm)){let o=this.resolveGoSamePackageCall(n,r);if(o)return o}return null}resolveImportedBinding(e,r,n){let i=this.resolveModulePath(e,r.modulePath);if(!i)return null;let s=r.originalName===wu?n:r.originalName;return this.resolveReexportTarget(e,i,s)??{targetFile:i,targetSymbol:s}}resolveMemberCall(e,r,n){let i=e.replace(/\\/g,"/");if(r==="this"||r==="super")return this.localsByFile.get(i)?.has(n)?{targetFile:i,targetSymbol:n}:null;let s=this.resolveImportReceiverMethod(i,r,n);return s||(this.localsByFile.get(i)?.has(n)?{targetFile:i,targetSymbol:n}:null)}resolveImportReceiverMethod(e,r,n){let i=this.importsByFile.get(e)||[];for(let s of i){if(s.localName!==r)continue;let o=this.resolveModulePath(e,s.modulePath);if(!o)continue;let a=this.resolveReexportTarget(e,o,n);if(a)return a;if(this.localsByFile.get(o)?.has(n))return{targetFile:o,targetSymbol:n};let l=this.resolveMethodAtReceiverDeclaration(e,s,r,n,o);if(l)return l}return null}resolveMethodAtReceiverDeclaration(e,r,n,i,s){let o=r.originalName===wu?n:r.originalName,a=this.resolveReexportTarget(e,s,o);return!a||!this.localsByFile.get(a.targetFile)?.has(i)?null:{targetFile:a.targetFile,targetSymbol:i}}isExternalBinding(e,r){let n=e.replace(/\\/g,"/");return(this.importsByFile.get(n)||[]).some(s=>s.localName===r&&this.isExternalSpecifier(n,s.modulePath))}hasBinding(e,r){return(this.importsByFile.get(e.replace(/\\/g,"/"))??[]).some(n=>n.localName===r)}declaresLocal(e,r){return this.localsByFile.get(e.replace(/\\/g,"/"))?.has(r)??!1}isExternalSpecifier(e,r){if(r.startsWith(uN))return!0;if(r.startsWith(xm))return!1;let n=dN.exec(r)?.[1];if(n&&this.getWorkspacePackageDirs().has(n)||this.matchesTsConfigAlias(r))return!1;let i=this.resolveModulePath(e,r);return i?i.startsWith(`${at}/`)||i.includes(`/${at}/`):!0}matchesTsConfigAlias(e){return Object.keys(this.tsConfigPaths).some(r=>e.startsWith(r.replace(No,"")))}resolveReexportTarget(e,r,n){let i=r,s=n,o=new Set([e]);for(;!o.has(i);){if(o.add(i),this.localsByFile.get(i)?.has(s))return{targetFile:i,targetSymbol:s};let a=this.importsByFile.get(i)?.find(c=>c.localName===s);if(!a)return null;let l=this.resolveModulePath(i,a.modulePath);if(!l)return null;i=l,s=a.originalName===wu?s:a.originalName}return null}resolveGoSamePackageCall(e,r){let n=et.posix.dirname(e),i=this.goFilesByDirectory.get(n);if(!i)return null;for(let s of i)if(s!==e&&this.localsByFile.get(s)?.has(r))return{targetFile:s,targetSymbol:r};return null}resolveWorkerSpawnPath(e,r){let n=et.posix.dirname(e.replace(/\\/g,"/")),i=et.posix.join(n,r.replace(/\.jsx?$/,""));return this.findFileWithExtension(i)}resolveModulePath(e,r){if(r.startsWith(xm)){let n=et.posix.dirname(e),i=et.posix.join(n,r);return this.findFileWithExtension(i)}for(let[n,i]of Object.entries(this.tsConfigPaths)){let s=n.replace(No,"");if(r.startsWith(s)){let o=r.slice(s.length);for(let a of i){let l=a.replace(No,o),c=this.findFileWithExtension(l);if(c)return c}}}return this.resolveBareImport(r)}packageDirCache=null;getWorkspacePackageDirs(){if(this.packageDirCache)return this.packageDirCache;let e=new Map;for(let r of this.getWorkspaceGlobs())this.collectPackageDirsForGlob(r,e);return this.packageDirCache=e,e}collectPackageDirsForGlob(e,r){let n=e.indexOf(No),i=(n>=0?e.slice(0,n):e).replace(/\/$/,""),s=Hi(this.workspaceRoot,i);if(!s||!pt.existsSync(s))return;let o;try{o=pt.readdirSync(s,{withFileTypes:!0})}catch{return}for(let a of o)this.registerPackageDirEntry(i,s,a,r)}registerPackageDirEntry(e,r,n,i){if(!n.isDirectory())return;let s=et.join(r,n.name,oe.PACKAGE_JSON);if(pt.existsSync(s))try{let o=JSON.parse(pt.readFileSync(s,K));o.name&&i.set(o.name,et.posix.join(e,n.name))}catch{}}getWorkspaceGlobs(){try{let e=Lo(this.workspaceRoot,sN);if(e){let n=/packages:\s*\n((?:\s*-\s+.+\n?)+)/.exec(e);if(n){let i=[...n[1].matchAll(/^\s*-\s+["']?([^"'\n#]+?)["']?\s*$/gm)].map(s=>s[1].trim());if(i.length>0)return i}}let r=Lo(this.workspaceRoot,oe.PACKAGE_JSON);if(r){let n=JSON.parse(r);if(Array.isArray(n.workspaces))return n.workspaces;if(Array.isArray(n.workspaces?.packages))return n.workspaces.packages}}catch{}return[]}resolveBareImport(e){let r=/^(@[^/]+\/[^/]+|[^/]+)(\/.*)?$/.exec(e);if(!r)return null;let n=r[1],i=r[2]?.slice(1),s=this.resolveWorkspaceSiblingImport(n,i);return s||this.resolveNodeModulesImport(n,i)}resolveWorkspaceSiblingImport(e,r){let n=this.getWorkspacePackageDirs().get(e);if(!n)return null;let i=r?et.posix.join(n,r):et.posix.join(n,aN,lN),s=this.findFileWithExtension(i);return s||this.findFileWithExtension(n)}resolveNodeModulesImport(e,r){try{let n=Lo(this.workspaceRoot,et.join(at,e,oe.PACKAGE_JSON));if(!n)return null;let i=JSON.parse(n),s=r||i.module||i.main||oN,o=et.posix.join(at,e,s);return Hi(this.workspaceRoot,o)?o:null}catch{return null}}static COMPILED_JS_EXTENSION_PATTERN=/\.(m|c)?jsx?$/;firstExisting(e,r=!1){for(let n of e){let i=Hi(this.workspaceRoot,n);if(!(!i||!pt.existsSync(i))&&!(r&&!pt.statSync(i).isFile()))return n}return null}findFileWithExtension(e){let r=this.firstExisting([e],!0);if(r)return r;let n=this.firstExisting(Um.map(i=>e+i));if(n)return n;if(t.COMPILED_JS_EXTENSION_PATTERN.test(e)){let i=e.replace(t.COMPILED_JS_EXTENSION_PATTERN,""),s=this.firstExisting(Um.map(o=>i+o));if(s)return s}return this.firstExisting(cN.map(i=>e+i))}};function un(t,e,r){if(!t.has(e))return e;let n=`${e}@L${r}`;if(!t.has(n))return n;let i=2;for(;t.has(`${n}#${i}`);)i++;return`${n}#${i}`}function Bi(t,e,r){return r?`${t}#${r}.${e}`:`${t}#${e}`}function pN(){return{total:0,resolved:0,selfDiscarded:0,unresolvable:0,external:0,unknownReceiver:0}}function gN(t){return{total:t.total,resolved:t.resolved,selfDiscarded:t.selfDiscarded,unresolvable:t.unresolvable,external:t.external,unknownReceiver:t.unknownReceiver,unresolved:t.total-t.resolved-t.selfDiscarded-t.unresolvable-t.external-t.unknownReceiver}}var Do=class{async persist(e){let{store:r,workspaceRoot:n,projectId:i,parsedResults:s,tags:o}=e;return r.withWriteLock(()=>this.persistLocked(r,n,i,s,o))}persistLocked(e,r,n,i,s){return e.withTransaction(()=>{let o=new Co(r);this.registerResolverFiles(o,i);let a=new Map,l=new Map,c={};this.upsertTags(e,s),e.graph.withFtsSyncSuspended(()=>{this.persistFileAndSymbolNodes(e,n,i,s,a,l)});let u=this.linkParsedResults(e,o,n,i,a,l,c),d=Object.keys(c).length>0?Ar(c):void 0;return{updatedCount:u,callResolution:d,callResolutionByFile:c}})}registerResolverFiles(e,r){for(let n of r){let i=[];n.data.functions&&i.push(...n.data.functions.map(s=>s.name)),n.data.classes&&i.push(...n.data.classes.map(s=>s.name)),n.data.variables&&i.push(...n.data.variables.map(s=>s.name)),e.registerFile(n.file,n.data.imports||[],[],i)}}upsertTags(e,r){for(let n of r)e.tags.upsertTag(n)}persistFileAndSymbolNodes(e,r,n,i,s,o){for(let a of n){e.graph.deleteNodesForPath(a.file),e.callSites.deleteForFile(r,a.file),e.callSites.insertMany(r,a.file,(a.data.calls??[]).map(p=>({targetFunction:p.targetFunction,startLine:p.startLine,startColumn:p.startColumn,calleeName:p.calleeName,receiverText:p.receiverText,calleeKind:p.calleeKind})));let l=e.graph.insertNode({projectId:r,name:a.file,type:Er.MODULE,description:"",pathPatterns:[a.file],nodeKey:a.file,contentHash:a.hash});s.set(a.file,l);let c=new Map;o.set(a.file,c),this.linkFileToTags(e,l,i);let u=new Set([a.file]);this.insertFunctionNodes(e,r,a,l,c,u),this.insertClassNodes(e,r,a,l,c,u),this.insertVariableNodes(e,r,a,l,c,u)}}linkFileToTags(e,r,n){for(let i of n){let s=e.tags.getIdByName(i);s!==void 0&&e.tags.linkNodeToTag(r,s)}}insertFunctionNodes(e,r,n,i,s,o){for(let a of n.data.functions??[]){let l=un(o,Bi(n.file,a.name,a.containerName),a.startLine);o.add(l);let c=e.graph.insertNode({projectId:r,name:a.name,type:Er.MODULE,description:"",pathPatterns:[n.file],nodeKey:l,contentHash:a.contentHash});s.set(a.name,c),e.graph.insertLink({sourceNodeId:i,targetNodeId:c,linkType:Oe.CONTAINS})}}insertClassNodes(e,r,n,i,s,o){for(let a of n.data.classes??[]){let l=un(o,`${n.file}#${a.name}`,a.startLine);o.add(l);let c=e.graph.insertNode({projectId:r,name:a.name,type:Er.MODULE,description:"",pathPatterns:[n.file],nodeKey:l,contentHash:a.contentHash});s.set(a.name,c),e.graph.insertLink({sourceNodeId:i,targetNodeId:c,linkType:Oe.CONTAINS})}}insertVariableNodes(e,r,n,i,s,o){for(let a of n.data.variables??[]){let l=un(o,`${n.file}#${a.name}`,a.startLine);o.add(l);let c=e.graph.insertNode({projectId:r,name:a.name,type:Er.MODULE,description:"",pathPatterns:[n.file],nodeKey:l,contentHash:a.contentHash});s.set(a.name,c),e.graph.insertLink({sourceNodeId:i,targetNodeId:c,linkType:Oe.CONTAINS})}}linkParsedResults(e,r,n,i,s,o,a){let l=0;for(let c of i){let u=s.get(c.file);if(!u)continue;let p=pN();this.linkParsedResultRelations(e,r,c,u,s,o,p),p.total>0&&(a[c.file]=gN(p)),e.files.upsertFile({projectId:n,filePath:c.file,contentHash:c.hash}),l++}return l}linkParsedResultRelations(e,r,n,i,s,o,a){let l=o.get(n.file);for(let c of n.data.calls??[])this.linkSymbolReference(e,r,n.file,i,l,s,o,c.sourceFunction,c.targetFunction,Oe.CALLS,!1,a,{calleeName:c.calleeName,receiverText:c.receiverText,calleeKind:c.calleeKind});for(let c of n.data.implements??[])this.linkSymbolReference(e,r,n.file,i,l,s,o,c.sourceClass,c.targetInterface,Oe.IMPLEMENTS,!0);for(let c of n.data.extends??[])this.linkSymbolReference(e,r,n.file,i,l,s,o,c.sourceClass,c.targetClass,Oe.EXTENDS,!0);for(let c of n.data.workerSpawns??[])this.linkWorkerSpawn(e,r,n.file,i,l,s,o,c.sourceFunction,c.targetPath);this.linkReexports(e,r,n,i,s,o)}linkReexports(e,r,n,i,s,o){for(let a of n.data.imports??[])a.viaReexport&&this.linkReexport(e,r,n.file,i,s,o,a.localName)}linkReexport(e,r,n,i,s,o,a){let l=r.resolveCall(n,a);if(!l)return;let c=this.resolveTargetNodeId(e,s,o,l.targetFile,l.targetSymbol);!c||c===i||e.graph.insertLink({sourceNodeId:i,targetNodeId:c,linkType:Oe.DEPENDS_ON})}linkWorkerSpawn(e,r,n,i,s,o,a,l,c){let u=r.resolveWorkerSpawnPath(n,c);if(!u)return;let p=this.resolveTargetNodeId(e,o,a,u,u);if(!p)return;let d=this.resolveSourceNodeId(s,l,i);p!==d&&e.graph.insertLink({sourceNodeId:d,targetNodeId:p,linkType:Oe.DEPENDS_ON})}isUnresolvableCallShape(e,r){let n=r?.calleeKind;return n==="arg-chain"||n==="computed"||!n&&e.includes("(")}resolveCallTarget(e,r,n,i){let s=i?.calleeKind;return(s==="member"||s==="this")&&i?.calleeName&&i.receiverText?e.resolveMemberCall(r,i.receiverText,i.calleeName):e.resolveCall(r,n)}classifyUnresolvedCall(e,r,n,i){let s=i?.calleeKind==="member"?i.receiverText:void 0;return e.isExternalBinding(r,s??n)?"external":s?this.classifyUnresolvedReceiver(e,r,s):i?.calleeKind!=="bare"?null:this.classifyUnresolvedBareCallee(e,r,n)}classifyUnresolvedReceiver(e,r,n){return e.hasBinding(r,n)||e.declaresLocal(r,n)?null:"unknownReceiver"}classifyUnresolvedBareCallee(e,r,n){return e.hasBinding(r,n)||e.declaresLocal(r,n)?null:"external"}linkSymbolReference(e,r,n,i,s,o,a,l,c,u,p=!1,d,f){if(d&&d.total++,this.isUnresolvableCallShape(c,f)){d&&d.unresolvable++;return}let m=this.resolveCallTarget(r,n,c,f),_=this.insertResolvedLink(e,m,c,p,s,l,i,o,a,u);if(!d)return;if(_==="linked"){d.resolved++;return}if(_==="self-discarded"){d.selfDiscarded++;return}let I=this.classifyUnresolvedCall(r,n,c,f);I==="external"?d.external++:I==="unknownReceiver"&&d.unknownReceiver++}insertResolvedLink(e,r,n,i,s,o,a,l,c,u){let p=r?this.resolveTargetNodeId(e,l,c,r.targetFile,r.targetSymbol):i?e.graph.findNodeByName(n)?.id:void 0;if(!p)return"no-target";let d=this.resolveSourceNodeId(s,o,a);return p===d?"self-discarded":(e.graph.insertLink({sourceNodeId:d,targetNodeId:p,linkType:u}),"linked")}resolveTargetNodeId(e,r,n,i,s){return n.get(i)?.get(s)??e.graph.findNodeIdByName(i,s)??r.get(i)??e.graph.findNodeIdByName(i,i)}resolveSourceNodeId(e,r,n){return(r&&r!==up?e?.get(r):void 0)??n}};import Vn from"fs/promises";import $i from"path";import{tracingChannel as fN,channel as hN}from"diagnostics_channel";var ze=hN("lru-cache:metrics"),Ki=fN("lru-cache"),mN=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Fu=()=>ze.hasSubscribers||Ki.hasSubscribers,Ym=new Set,Km=typeof process=="object"&&process?process:{},_N=(t,e,r,n)=>{typeof Km.emitWarning=="function"?Km.emitWarning(t,e,r,n):console.error(`[${r}] ${e}: ${t}`)},EN=t=>!Ym.has(t),Ur=t=>!!t&&t===Math.floor(t)&&t>0&&isFinite(t),$m=t=>Ur(t)?t<=Math.pow(2,8)?Uint8Array:t<=Math.pow(2,16)?Uint16Array:t<=Math.pow(2,32)?Uint32Array:t<=Number.MAX_SAFE_INTEGER?vo:null:null,vo=class extends Array{constructor(t){super(t),this.fill(0)}},SN=class Yi{heap;length;static#t=!1;static create(e){let r=$m(e);if(!r)return[];Yi.#t=!0;let n=new Yi(e,r);return Yi.#t=!1,n}constructor(e,r){if(!Yi.#t)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new r(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},Wm=class jm{#t;#s;#c;#P;#_;#M;#k;#E;get perf(){return this.#E}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;backgroundFetchSize;#o;#S;#i;#n;#e;#d;#g;#u;#a;#T;#l;#A;#R;#f;#h;#O;#G;#p;#D;static unsafeExposeInternals(e){return{starts:e.#R,ttls:e.#f,autopurgeTimers:e.#h,sizes:e.#A,keyMap:e.#i,keyList:e.#n,valList:e.#e,next:e.#d,prev:e.#g,get head(){return e.#u},get tail(){return e.#a},free:e.#T,isBackgroundFetch:r=>e.#r(r),backgroundFetch:(r,n,i,s)=>e.#H(r,n,i,s),moveToTail:r=>e.#F(r),indexes:r=>e.#y(r),rindexes:r=>e.#I(r),isStale:r=>e.#m(r)}}get max(){return this.#t}get maxSize(){return this.#s}get calculatedSize(){return this.#S}get size(){return this.#o}get fetchMethod(){return this.#M}get memoMethod(){return this.#k}get dispose(){return this.#c}get onInsert(){return this.#P}get disposeAfter(){return this.#_}constructor(e){let{max:r=0,ttl:n,ttlResolution:i=1,ttlAutopurge:s,updateAgeOnGet:o,updateAgeOnHas:a,allowStale:l,dispose:c,onInsert:u,disposeAfter:p,noDisposeOnSet:d,noUpdateTTL:f,maxSize:m=0,maxEntrySize:_=0,sizeCalculation:I,fetchMethod:L,memoMethod:N,noDeleteOnFetchRejection:w,noDeleteOnStaleGet:q,allowStaleOnFetchRejection:Q,allowStaleOnFetchAbort:H,ignoreFetchAbort:ne,backgroundFetchSize:M=1,perf:ee}=e;if(this.backgroundFetchSize=M,ee!==void 0&&typeof ee?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#E=ee??mN,r!==0&&!Ur(r))throw new TypeError("max option must be a nonnegative integer");let _e=r?$m(r):Array;if(!_e)throw new Error("invalid max value: "+r);if(this.#t=r,this.#s=m,this.maxEntrySize=_||this.#s,this.sizeCalculation=I,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(N!==void 0&&typeof N!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#k=N,L!==void 0&&typeof L!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#M=L,this.#G=!!L,this.#i=new Map,this.#n=Array.from({length:r}).fill(void 0),this.#e=Array.from({length:r}).fill(void 0),this.#d=new _e(r),this.#g=new _e(r),this.#u=0,this.#a=0,this.#T=SN.create(r),this.#o=0,this.#S=0,typeof c=="function"&&(this.#c=c),typeof u=="function"&&(this.#P=u),typeof p=="function"?(this.#_=p,this.#l=[]):(this.#_=void 0,this.#l=void 0),this.#O=!!this.#c,this.#D=!!this.#P,this.#p=!!this.#_,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!f,this.noDeleteOnFetchRejection=!!w,this.allowStaleOnFetchRejection=!!Q,this.allowStaleOnFetchAbort=!!H,this.ignoreFetchAbort=!!ne,this.maxEntrySize!==0){if(this.#s!==0&&!Ur(this.#s))throw new TypeError("maxSize must be a positive integer if specified");if(!Ur(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#z()}if(this.allowStale=!!l,this.noDeleteOnStaleGet=!!q,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!a,this.ttlResolution=Ur(i)||i===0?i:1,this.ttlAutopurge=!!s,this.ttl=n||0,this.ttl){if(!Ur(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#B()}if(this.#t===0&&this.ttl===0&&this.#s===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#t&&!this.#s){let C="LRU_CACHE_UNBOUNDED";EN(C)&&(Ym.add(C),_N("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",C,jm))}}getRemainingTTL(e){return this.#i.has(e)?1/0:0}#B(){let e=new vo(this.#t),r=new vo(this.#t);this.#f=e,this.#R=r;let n=this.ttlAutopurge?Array.from({length:this.#t}):void 0;this.#h=n,this.#K=(l,c,u=this.#E.now())=>{r[l]=c!==0?u:0,e[l]=c,i(l,c)},this.#v=l=>{r[l]=e[l]!==0?this.#E.now():0,i(l,e[l])};let i=this.ttlAutopurge?(l,c)=>{if(n?.[l]&&(clearTimeout(n[l]),n[l]=void 0),c&&c!==0&&n){let u=setTimeout(()=>{this.#m(l)?(this.#L(this.#n[l],"expire"),n[l]=void 0):i(l,a(l))},c+1);u.unref&&u.unref(),n[l]=u}}:()=>{};this.#N=(l,c)=>{if(e[c]){let u=e[c],p=r[c];if(!u||!p)return;l.ttl=u,l.start=p,l.now=s||o();let d=l.now-p;l.remainingTTL=u-d}};let s=0,o=()=>{let l=this.#E.now();if(this.ttlResolution>0){s=l;let c=setTimeout(()=>s=0,this.ttlResolution);c.unref&&c.unref()}return l};this.getRemainingTTL=l=>{let c=this.#i.get(l);return c===void 0?0:a(c)};let a=l=>{let c=e[l],u=r[l];if(!c||!u)return 1/0;let p=(s||o())-u;return c-p};this.#m=l=>{let c=r[l],u=e[l];return!!u&&!!c&&(s||o())-c>u}}#v=()=>{};#N=()=>{};#K=()=>{};#m=()=>!1;#z(){let e=new vo(this.#t);this.#S=0,this.#A=e,this.#b=r=>{this.#S-=e[r],e[r]=0},this.#Y=(r,n,i,s)=>{if(!Ur(i)){if(this.#r(n))return this.backgroundFetchSize;if(s){if(typeof s!="function")throw new TypeError("sizeCalculation must be a function");if(i=s(n,r),!Ur(i))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 i},this.#x=(r,n,i)=>{if(e[r]=n,this.#s){let s=this.#s-e[r];for(;this.#S>s;)this.#U(!0)}this.#S+=e[r],i&&(i.entrySize=n,i.totalCalculatedSize=this.#S)}}#b=e=>{};#x=(e,r,n)=>{};#Y=(e,r,n,i)=>{if(n||i)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#y({allowStale:e=this.allowStale}={}){if(this.#o)for(let r=this.#a;this.#$(r)&&((e||!this.#m(r))&&(yield r),r!==this.#u);)r=this.#g[r]}*#I({allowStale:e=this.allowStale}={}){if(this.#o)for(let r=this.#u;this.#$(r)&&((e||!this.#m(r))&&(yield r),r!==this.#a);)r=this.#d[r]}#$(e){return e!==void 0&&this.#i.get(this.#n[e])===e}*entries(){for(let e of this.#y())this.#e[e]!==void 0&&this.#n[e]!==void 0&&!this.#r(this.#e[e])&&(yield[this.#n[e],this.#e[e]])}*rentries(){for(let e of this.#I())this.#e[e]!==void 0&&this.#n[e]!==void 0&&!this.#r(this.#e[e])&&(yield[this.#n[e],this.#e[e]])}*keys(){for(let e of this.#y()){let r=this.#n[e];r!==void 0&&!this.#r(this.#e[e])&&(yield r)}}*rkeys(){for(let e of this.#I()){let r=this.#n[e];r!==void 0&&!this.#r(this.#e[e])&&(yield r)}}*values(){for(let e of this.#y())this.#e[e]!==void 0&&!this.#r(this.#e[e])&&(yield this.#e[e])}*rvalues(){for(let e of this.#I())this.#e[e]!==void 0&&!this.#r(this.#e[e])&&(yield this.#e[e])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(e,r={}){for(let n of this.#y()){let i=this.#e[n],s=this.#r(i)?i.__staleWhileFetching:i;if(s!==void 0&&e(s,this.#n[n],this))return this.#w(this.#n[n],r)}}forEach(e,r=this){for(let n of this.#y()){let i=this.#e[n],s=this.#r(i)?i.__staleWhileFetching:i;s!==void 0&&e.call(r,s,this.#n[n],this)}}rforEach(e,r=this){for(let n of this.#I()){let i=this.#e[n],s=this.#r(i)?i.__staleWhileFetching:i;s!==void 0&&e.call(r,s,this.#n[n],this)}}purgeStale(){let e=!1;for(let r of this.#I({allowStale:!0}))this.#m(r)&&(this.#L(this.#n[r],"expire"),e=!0);return e}info(e){let r=this.#i.get(e);if(r===void 0)return;let n=this.#e[r],i=this.#r(n)?n.__staleWhileFetching:n;if(i===void 0)return;let s={value:i};if(this.#f&&this.#R){let o=this.#f[r],a=this.#R[r];if(o&&a){let l=o-(this.#E.now()-a);s.ttl=l,s.start=Date.now()}}return this.#A&&(s.size=this.#A[r]),s}dump(){let e=[];for(let r of this.#y({allowStale:!0})){let n=this.#n[r],i=this.#e[r],s=this.#r(i)?i.__staleWhileFetching:i;if(s===void 0||n===void 0)continue;let o={value:s};if(this.#f&&this.#R){o.ttl=this.#f[r];let a=this.#E.now()-this.#R[r];o.start=Math.floor(Date.now()-a)}this.#A&&(o.size=this.#A[r]),e.unshift([n,o])}return e}load(e){this.clear();for(let[r,n]of e){if(n.start){let i=Date.now()-n.start;n.start=this.#E.now()-i}this.#C(r,n.value,n)}}set(e,r,n={}){let{status:i=ze.hasSubscribers?{}:void 0}=n;n.status=i,i&&(i.op="set",i.key=e,r!==void 0&&(i.value=r),i.cache=this);let s=this.#C(e,r,n);return i&&ze.hasSubscribers&&ze.publish(i),s}#C(e,r,n,i){let{ttl:s=this.ttl,start:o,noDisposeOnSet:a=this.noDisposeOnSet,sizeCalculation:l=this.sizeCalculation,status:c}=n,u=this.#r(r);if(r===void 0)return c&&(c.set="deleted"),this.delete(e),this;let{noUpdateTTL:p=this.noUpdateTTL}=n;c&&!u&&(c.value=r);let d=this.#Y(e,r,n.size||0,l,c);if(this.maxEntrySize&&d>this.maxEntrySize)return this.#L(e,"set"),c&&(c.set="miss",c.maxEntrySizeExceeded=!0),this;let f=this.#o===0?void 0:this.#i.get(e);if(f===void 0)f=this.#o===0?this.#a:this.#T.length!==0?this.#T.pop():this.#o===this.#t?this.#U(!1):this.#o,this.#n[f]=e,this.#e[f]=r,this.#i.set(e,f),this.#d[this.#a]=f,this.#g[f]=this.#a,this.#a=f,this.#o++,this.#x(f,d,c),c&&(c.set="add"),p=!1,this.#D&&!u&&this.#P?.(r,e,"add");else{this.#F(f);let m=this.#e[f];if(r!==m){if(!a)if(this.#r(m)){m!==i&&m.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:_}=m;_!==void 0&&_!==r&&(this.#O&&this.#c?.(_,e,"set"),this.#p&&this.#l?.push([_,e,"set"]))}else this.#O&&this.#c?.(m,e,"set"),this.#p&&this.#l?.push([m,e,"set"]);if(this.#b(f),this.#x(f,d,c),this.#e[f]=r,!u){let _=m&&this.#r(m)?m.__staleWhileFetching:m,I=_===void 0?"add":r!==_?"replace":"update";c&&(c.set=I,_!==void 0&&(c.oldValue=_)),this.#D&&this.onInsert?.(r,e,I)}}else u||(c&&(c.set="update"),this.#D&&this.onInsert?.(r,e,"update"))}if(s!==0&&!this.#f&&this.#B(),this.#f&&(p||this.#K(f,s,o),c&&this.#N(c,f)),!a&&this.#p&&this.#l){let m=this.#l,_;for(;_=m?.shift();)this.#_?.(..._)}return this}pop(){try{for(;this.#o;){let e=this.#e[this.#u];if(this.#U(!0),this.#r(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(e!==void 0)return e}}finally{if(this.#p&&this.#l){let e=this.#l,r;for(;r=e?.shift();)this.#_?.(...r)}}}#U(e){let r=this.#u,n=this.#n[r],i=this.#e[r],s=this.#r(i);s&&i.__abortController.abort(new Error("evicted"));let o=s?i.__staleWhileFetching:i;return(this.#O||this.#p)&&o!==void 0&&(this.#O&&this.#c?.(o,n,"evict"),this.#p&&this.#l?.push([o,n,"evict"])),this.#b(r),this.#h?.[r]&&(clearTimeout(this.#h[r]),this.#h[r]=void 0),e&&(this.#n[r]=void 0,this.#e[r]=void 0,this.#T.push(r)),this.#o===1?(this.#u=this.#a=0,this.#T.length=0):this.#u=this.#d[r],this.#i.delete(n),this.#o--,r}has(e,r={}){let{status:n=ze.hasSubscribers?{}:void 0}=r;r.status=n,n&&(n.op="has",n.key=e,n.cache=this);let i=this.#J(e,r);return ze.hasSubscribers&&ze.publish(n),i}#J(e,r={}){let{updateAgeOnHas:n=this.updateAgeOnHas,status:i}=r,s=this.#i.get(e);if(s!==void 0){let o=this.#e[s];if(this.#r(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#m(s))i&&(i.has="stale",this.#N(i,s));else return n&&this.#v(s),i&&(i.has="hit",this.#N(i,s)),!0}else i&&(i.has="miss");return!1}peek(e,r={}){let{status:n=Fu()?{}:void 0}=r;n&&(n.op="peek",n.key=e,n.cache=this),r.status=n;let i=this.#q(e,r);return ze.hasSubscribers&&ze.publish(n),i}#q(e,r){let{status:n,allowStale:i=this.allowStale}=r,s=this.#i.get(e);if(s===void 0||!i&&this.#m(s)){n&&(n.peek=s===void 0?"miss":"stale");return}let o=this.#e[s],a=this.#r(o)?o.__staleWhileFetching:o;return n&&(a!==void 0?(n.peek="hit",n.value=a):n.peek="miss"),a}#H(e,r,n,i){let s=r===void 0?void 0:this.#e[r];if(this.#r(s))return s;let o=new AbortController,{signal:a}=n;a?.addEventListener("abort",()=>o.abort(a.reason),{signal:o.signal});let l={signal:o.signal,options:n,context:i},c=(_,I=!1)=>{let{aborted:L}=o.signal,N=n.ignoreFetchAbort&&_!==void 0,w=n.ignoreFetchAbort||!!(n.allowStaleOnFetchAbort&&_!==void 0);if(n.status&&(L&&!I?(n.status.fetchAborted=!0,n.status.fetchError=o.signal.reason,N&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),L&&!N&&!I)return p(o.signal.reason,w);let q=f,Q=this.#e[r];return(Q===f||Q===void 0&&N&&I)&&(_===void 0?q.__staleWhileFetching!==void 0?this.#e[r]=q.__staleWhileFetching:this.#L(e,"fetch"):(n.status&&(n.status.fetchUpdated=!0),this.#C(e,_,l.options,q))),_},u=_=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=_),p(_,!1)),p=(_,I)=>{let{aborted:L}=o.signal,N=L&&n.allowStaleOnFetchAbort,w=N||n.allowStaleOnFetchRejection,q=w||n.noDeleteOnFetchRejection,Q=f;if(this.#e[r]===f&&(!q||!I&&Q.__staleWhileFetching===void 0?this.#L(e,"fetch"):N||(this.#e[r]=Q.__staleWhileFetching)),w)return n.status&&Q.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),Q.__staleWhileFetching;if(Q.__returned===Q)throw _},d=(_,I)=>{let L=this.#M?.(e,s,l);o.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(_(void 0),n.allowStaleOnFetchAbort&&(_=N=>c(N,!0)))}),L&&L instanceof Promise?L.then(N=>_(N===void 0?void 0:N),I):L!==void 0&&_(L)};n.status&&(n.status.fetchDispatched=!0);let f=new Promise(d).then(c,u),m=Object.assign(f,{__abortController:o,__staleWhileFetching:s,__returned:void 0});return r===void 0?(this.#C(e,m,{...l.options,status:void 0}),r=this.#i.get(e)):this.#e[r]=m,m}#r(e){if(!this.#G)return!1;let r=e;return!!r&&r instanceof Promise&&r.hasOwnProperty("__staleWhileFetching")&&r.__abortController instanceof AbortController}fetch(e,r={}){let n=Ki.hasSubscribers,{status:i=Fu()?{}:void 0}=r;r.status=i,i&&r.context&&(i.context=r.context);let s=this.#W(e,r);return i&&n&&(i.trace=!0,Ki.tracePromise(()=>s,i).catch(()=>{})),s}async#W(e,r={}){let{allowStale:n=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:s=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:l=0,sizeCalculation:c=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:p=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:f=this.ignoreFetchAbort,allowStaleOnFetchAbort:m=this.allowStaleOnFetchAbort,context:_,forceRefresh:I=!1,status:L,signal:N}=r;if(L&&(L.op="fetch",L.key=e,I&&(L.forceRefresh=!0),L.cache=this),!this.#G)return L&&(L.fetch="get"),this.#w(e,{allowStale:n,updateAgeOnGet:i,noDeleteOnStaleGet:s,status:L});let w={allowStale:n,updateAgeOnGet:i,noDeleteOnStaleGet:s,ttl:o,noDisposeOnSet:a,size:l,sizeCalculation:c,noUpdateTTL:u,noDeleteOnFetchRejection:p,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:m,ignoreFetchAbort:f,status:L,signal:N},q=this.#i.get(e);if(q===void 0){L&&(L.fetch="miss");let Q=this.#H(e,q,w,_);return Q.__returned=Q}else{let Q=this.#e[q];if(this.#r(Q)){let ee=n&&Q.__staleWhileFetching!==void 0;return L&&(L.fetch="inflight",ee&&(L.returnedStale=!0)),ee?Q.__staleWhileFetching:Q.__returned=Q}let H=this.#m(q);if(!I&&!H)return L&&(L.fetch="hit"),this.#F(q),i&&this.#v(q),L&&this.#N(L,q),Q;let ne=this.#H(e,q,w,_),M=ne.__staleWhileFetching!==void 0&&n;return L&&(L.fetch=H?"stale":"refresh",M&&H&&(L.returnedStale=!0)),M?ne.__staleWhileFetching:ne.__returned=ne}}forceFetch(e,r={}){let n=Ki.hasSubscribers,{status:i=Fu()?{}:void 0}=r;r.status=i,i&&r.context&&(i.context=r.context);let s=this.#Q(e,r);return i&&n&&(i.trace=!0,Ki.tracePromise(()=>s,i).catch(()=>{})),s}async#Q(e,r={}){let n=await this.#W(e,r);if(n===void 0)throw new Error("fetch() returned undefined");return n}memo(e,r={}){let{status:n=ze.hasSubscribers?{}:void 0}=r;r.status=n,n&&(n.op="memo",n.key=e,r.context&&(n.context=r.context),n.cache=this);let i=this.#X(e,r);return n&&(n.value=i),ze.hasSubscribers&&ze.publish(n),i}#X(e,r={}){let n=this.#k;if(!n)throw new Error("no memoMethod provided to constructor");let{context:i,status:s,forceRefresh:o,...a}=r;s&&o&&(s.forceRefresh=!0);let l=this.#w(e,a),c=o||l===void 0;if(s&&(s.memo=c?"miss":"hit",c||(s.value=l)),!c)return l;let u=n(e,l,{options:a,context:i});return s&&(s.value=u),this.#C(e,u,a),u}get(e,r={}){let{status:n=ze.hasSubscribers?{}:void 0}=r;r.status=n,n&&(n.op="get",n.key=e,n.cache=this);let i=this.#w(e,r);return n&&(i!==void 0&&(n.value=i),ze.hasSubscribers&&ze.publish(n)),i}#w(e,r={}){let{allowStale:n=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:s=this.noDeleteOnStaleGet,status:o}=r,a=this.#i.get(e);if(a===void 0){o&&(o.get="miss");return}let l=this.#e[a],c=this.#r(l);return o&&this.#N(o,a),this.#m(a)?c?(o&&(o.get="stale-fetching"),n&&l.__staleWhileFetching!==void 0?(o&&(o.returnedStale=!0),l.__staleWhileFetching):void 0):(s||this.#L(e,"expire"),o&&(o.get="stale"),n?(o&&(o.returnedStale=!0),l):void 0):(o&&(o.get=c?"fetching":"hit"),this.#F(a),i&&this.#v(a),c?l.__staleWhileFetching:l)}#j(e,r){this.#g[r]=e,this.#d[e]=r}#F(e){e!==this.#a&&(e===this.#u?this.#u=this.#d[e]:this.#j(this.#g[e],this.#d[e]),this.#j(this.#a,e),this.#a=e)}delete(e){return this.#L(e,"delete")}#L(e,r){ze.hasSubscribers&&ze.publish({op:"delete",delete:r,key:e,cache:this});let n=!1;if(this.#o!==0){let i=this.#i.get(e);if(i!==void 0)if(this.#h?.[i]&&(clearTimeout(this.#h[i]),this.#h[i]=void 0),n=!0,this.#o===1)this.#V(r);else{this.#b(i);let s=this.#e[i];if(this.#r(s)?s.__abortController.abort(new Error("deleted")):(this.#O||this.#p)&&(this.#O&&this.#c?.(s,e,r),this.#p&&this.#l?.push([s,e,r])),this.#i.delete(e),this.#n[i]=void 0,this.#e[i]=void 0,i===this.#a)this.#a=this.#g[i];else if(i===this.#u)this.#u=this.#d[i];else{let o=this.#g[i];this.#d[o]=this.#d[i];let a=this.#d[i];this.#g[a]=this.#g[i]}this.#o--,this.#T.push(i)}}if(this.#p&&this.#l?.length){let i=this.#l,s;for(;s=i?.shift();)this.#_?.(...s)}return n}clear(){return this.#V("delete")}#V(e){for(let r of this.#I({allowStale:!0})){let n=this.#e[r];if(this.#r(n))n.__abortController.abort(new Error("deleted"));else{let i=this.#n[r];this.#O&&this.#c?.(n,i,e),this.#p&&this.#l?.push([n,i,e])}}if(this.#i.clear(),this.#e.fill(void 0),this.#n.fill(void 0),this.#f&&this.#R){this.#f.fill(0),this.#R.fill(0);for(let r of this.#h??[])r!==void 0&&clearTimeout(r);this.#h?.fill(void 0)}if(this.#A&&this.#A.fill(0),this.#u=0,this.#a=0,this.#T.length=0,this.#S=0,this.#o=0,this.#p&&this.#l){let r=this.#l,n;for(;n=r?.shift();)this.#_?.(...n)}}};var TN="tmp",dr={INITIALIZED:"TempFileManager initialized",INIT_FAILED:"Failed to initialize TempFileManager",FILE_TRACKED:"File tracked",TRACK_FAILED:"Failed to track file",ACCESS_FAILED:"Failed to access file",FILE_REMOVED:"File removed",CLEANUP_FAILED:"Cleanup failed",CLEANUP_COMPLETED:"Temp directory cleanup completed",CLEANUP_ERROR:"Cleanup error"},bo=class{constructor(e,r=fe(),n=1024*1024*1024,i=14400*1e3,s=1800*1e3){this.logger=r;let o=$i.resolve(e);this.tempDir=$i.join(o,he,TN),this.ttlMs=i,this.lruCache=new Wm({max:1e4,maxSize:n,sizeCalculation:a=>a.sizeBytes,ttl:i,allowStale:!1})}logger;tempDir;lruCache;cleanupInterval=null;concurrencyLimit=en(5);ttlMs;async initialize(){try{await Vn.mkdir(this.tempDir,{recursive:!0});let e=$i.dirname($i.dirname(this.tempDir)),[r,n]=await Promise.all([Vn.realpath(e),Vn.realpath(this.tempDir)]);if(!n.startsWith(r+$i.sep))throw new S(O.FS_PATH_TRAVERSAL,`Resolved temp directory "${n}" escapes workspace root "${r}" \u2014 possible path traversal via symlink`);this.logger.info(dr.INITIALIZED,{tempDir:this.tempDir}),this.startCleanupSchedule(1800*1e3)}catch(e){throw e instanceof S||this.logger.error(dr.INIT_FAILED,{error:e instanceof Error?e.message:String(e)}),e}}async trackFile(e){return this.concurrencyLimit(async()=>{try{let r=await Vn.stat(e),n={filePath:e,createdAt:Date.now(),lastAccessedAt:Date.now(),sizeBytes:r.size};this.lruCache.set(e,n),this.logger.debug(dr.FILE_TRACKED,{filePath:e,sizeBytes:r.size})}catch(r){this.logger.warn(dr.TRACK_FAILED,{filePath:e,error:r instanceof Error?r.message:String(r)})}})}async accessFile(e){return this.concurrencyLimit(async()=>{try{let r=this.lruCache.get(e);return r&&(r.lastAccessedAt=Date.now(),this.lruCache.set(e,r)),await Vn.readFile(e,K)}catch(r){return this.logger.warn(dr.ACCESS_FAILED,{filePath:e,error:r instanceof Error?r.message:String(r)}),null}})}async removeFileSync(e){try{await Vn.unlink(e),this.logger.debug(dr.FILE_REMOVED,{filePath:e})}catch(r){if(r?.code!==fs)throw r}}startCleanupSchedule(e){this.cleanupInterval=setInterval(()=>{this.cleanup().catch(r=>{this.logger.error(dr.CLEANUP_FAILED,{error:r instanceof Error?r.message:String(r)})})},e),this.cleanupInterval.unref()}async cleanup(){return this.concurrencyLimit(async()=>{try{let e=Date.now(),r=[];for(let[n,i]of this.lruCache.entries())e-i.lastAccessedAt>this.ttlMs&&r.push(n);for(let n of r)this.lruCache.delete(n),await this.removeFileSync(n);this.logger.info(dr.CLEANUP_COMPLETED,{removedCount:r.length,cacheSize:this.lruCache.size})}catch(e){this.logger.error(dr.CLEANUP_ERROR,{error:e instanceof Error?e.message:String(e)})}})}stopCleanup(){this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null)}getTempDirPath(){return this.tempDir}getCacheSize(){return this.lruCache.size}getTotalSize(){let e=0;for(let r of this.lruCache.values())e+=r.sizeBytes;return e}};var wo={INVALID_LIMIT_FALLBACK:"Ignoring invalid query limit, falling back to default",SEARCHED_LOCAL_KNOWLEDGE_GRAPH:"Searched local knowledge graph",GET_CONTEXT_FAILED:"getContext() failed during query(), falling back to null context",linkedTo:t=>`Linked to ${t}`},AN=new Set(["a","an","and","are","can","do","does","for","from","how","i","in","is","it","me","of","on","or","show","that","the","this","to","what","when","where","which","who","why","with"]),RN=5,ON=25;function yN(t){return Math.max(t*RN,ON)}function Vm(t,e){return e.length<=1?t:t.map(r=>({row:r,coverage:e.reduce((n,i)=>i.has(r.id)?n+1:n,0)})).sort((r,n)=>n.coverage-r.coverage).map(({row:r})=>r)}var Fo=class{constructor(e=fe()){this.logger=e}logger;extractKeywords(e){let r=e.split(/[^\w./-]+/).map(n=>n.trim()).filter(n=>n.length>0&&!AN.has(n.toLowerCase()));return Array.from(new Set(r))}getContext(e,r){let n=e.graph.findNodeByName(r);if(!n)return null;let i=e.graph.getIncomingRelations(n.id).filter(a=>a.linkType!==Oe.CONTAINS).map(({name:a,linkType:l})=>({name:a,linkType:l})),s=e.graph.getOutgoingRelations(n.id).filter(a=>a.linkType!==Oe.CONTAINS).map(({name:a,linkType:l})=>({name:a,linkType:l})),o=Ei(e,n.filePath,i.length===0,s.length===0);return{incoming:i,outgoing:s,...o?{tierBCoverage:o}:{}}}search(e,r,n=10){n!==void 0&&(!Number.isInteger(n)||n<=0)&&(this.logger.warn(wo.INVALID_LIMIT_FALLBACK,{target:r,invalidLimit:n,fallback:10}),n=10);let i=new Map,s=l=>{let c=`${l.layer}:${l.id}`,u=i.get(c);(!u||l.score>u.score)&&i.set(c,l)},o=this.extractKeywords(r);if(o.length>0){let l=yN(n),c=()=>o.map(f=>new Set(e.fts.searchL2Nodes([f],l).map(m=>m.id))),u=()=>o.map(f=>new Set(e.fts.searchL3Nodes([f],l).map(m=>m.id)));Vm(e.fts.searchL2Nodes(o,l),o.length>1?c():[]).slice(0,n).forEach((f,m)=>s({layer:Xr.L2,id:f.id,title:f.name,content:f.description,score:.9-m*.01,matchType:"keyword"})),Vm(e.fts.searchL3Nodes(o,l),o.length>1?u():[]).slice(0,n).forEach((f,m)=>s({layer:Xr.L3,id:f.id,title:f.title,content:f.content,score:.85-m*.01,matchType:"keyword"}))}let a=r.trim();if(a){let l=e.graph.findNodeByName(a);l&&(s({layer:Xr.L2,id:l.id,title:l.name,content:null,score:.95,matchType:"exact"}),[...e.graph.getOutgoingEdges(l.id),...e.graph.getIncomingEdges(l.id)].slice(0,n).forEach((u,p)=>s({layer:Xr.L2,id:u.id,title:u.name,content:wo.linkedTo(l.name),score:.7-p*.01,matchType:"neighbor"})))}return this.logger.debug(wo.SEARCHED_LOCAL_KNOWLEDGE_GRAPH,{target:r,resultCount:i.size}),Array.from(i.values()).sort((l,c)=>c.score-l.score).slice(0,n).map(({score:l,...c})=>c)}query(e,r,n=10){let i=this.search(e,r,n),s=i.find(c=>c.layer===Xr.L2),o=i.filter(c=>c.layer===Xr.L3),a=null;try{a=this.getContext(e,r)}catch(c){this.logger.debug(wo.GET_CONTEXT_FAILED,{target:r,error:c instanceof Error?c.message:String(c)}),a=null}let l=s?e.graph.findNodeByName(s.title):void 0;return{l2:s?{name:s.title,type:l?.type??"",filePath:l?.filePath,matchType:s.matchType}:null,l3:o.map(c=>this.toL3Entry(e,c)),context:a}}toL3Entry(e,r){let n=e.l3.getById(r.id);return n?{title:r.title,content:r.content,id:n.id,nodeType:n.node_type,source:n.source,confidence:n.confidence,commitHash:n.commit_hash,validityStatus:n.validity_status,createdAt:n.created_at}:{title:r.title,content:r.content}}};var NN=2e3,CN="(ungrouped)",PN=".",Mo=class{build(e,r={}){let n=e.l2Rows.map(w=>({id:w.id,name:w.name,filePath:UN(w.path_patterns),type:w.type})),i=e.linkRows.map(w=>({sourceNodeId:w.source_node_id,targetNodeId:w.target_node_id,linkType:w.link_type,commitSha:w.commit_sha??void 0,diffSummary:w.diff_summary??void 0})),s=e.l3Rows.map(w=>({id:w.id,l2NodeId:w.l2_node_id,title:w.title,content:w.content??void 0,nodeType:w.node_type,confidence:w.confidence??void 0,validityStatus:w.validity_status,sourceCommits:HN(w.source_commits)})),o=e.tagRows,a=DN(n),l=vN(i),c=bN(o),u=r.maxNodes??NN,p=n.length+s.length,d=wN(r,p,u),f=d?GN(n,i,s,l,a):kN(n,i,s,l,a),m=f.nodes,_=f.links,I=new Set(m.map(w=>w.id)),L=_.filter(w=>I.has(w.source)&&I.has(w.target)),N=FN(m,c);return MN(m,L),{topologyVersion:2,generatedAt:new Date().toISOString(),workspaceRoot:e.workspaceRoot,collapsed:d,nodes:m,links:L,groups:N,stats:{nodeCount:m.length,linkCount:L.length,groupCount:N.length,foldedLinkCount:f.foldedLinkCount??0}}}};function DN(t){let e=new Map;for(let r of t)e.set(String(r.id),r.filePath);return e}function vN(t){let e=new Map;for(let r of t)r.linkType===Oe.CONTAINS&&e.set(String(r.targetNodeId),String(r.sourceNodeId));return e}function bN(t){let e=new Map;for(let r of t){let n=String(r.l2NodeId),i=e.get(n);i?i.push(r.name):e.set(n,[r.name])}return e}function wN(t,e,r){return t.collapse===El.FILE||t.collapse!==El.SYMBOL&&e>r}function FN(t,e){let r=new Map,n=[];for(let i of t){let s=xN(i.filePath),o=r.get(s);if(o===void 0&&(o=n.length,r.set(s,o),n.push({id:o,label:s,source:Yd.DIRECTORY,count:0})),i.group=o,n[o].count++,i.kind===Ft.FILE){let a=e.get(i.id.slice("l2:".length));a&&a.length&&(i.tags=a)}}return n}function MN(t,e){let r=new Map;for(let n of e)r.set(n.source,(r.get(n.source)??0)+1),r.set(n.target,(r.get(n.target)??0)+1);for(let n of t)n.degree=r.get(n.id)??0}function kN(t,e,r,n,i){let s=t.map(a=>({id:yt(a.id),label:a.name,kind:n.has(String(a.id))?Ft.SYMBOL:Ft.FILE,group:0,filePath:i.get(String(a.id)),degree:0,l2Type:a.type})),o=e.map(a=>({source:yt(a.sourceNodeId),target:yt(a.targetNodeId),linkType:a.linkType,confidence:1,commitSha:a.commitSha,diffSummary:a.diffSummary}));return zm(s,o,r,i),{nodes:s,links:o,foldedLinkCount:0}}function GN(t,e,r,n,i){let s=u=>{let p=String(u),d=new Set([p]);for(;;){let f=n.get(p);if(f===void 0||d.has(f))return p;d.add(f),p=f}},o=t.filter(u=>!n.has(String(u.id))).map(u=>({id:yt(u.id),label:u.name,kind:Ft.FILE,group:0,filePath:i.get(String(u.id)),degree:0,l2Type:u.type})),a=[],l=new Set,c=0;for(let u of e){if(u.linkType===Oe.CONTAINS)continue;let p=s(u.sourceNodeId),d=s(u.targetNodeId);if(p===d){c++;continue}let f=p+"|"+d+"|"+u.linkType;l.has(f)||(l.add(f),a.push({source:yt(p),target:yt(d),linkType:u.linkType,confidence:1,commitSha:u.commitSha,diffSummary:u.diffSummary}))}return zm(o,a,r,i),{nodes:o,links:a,foldedLinkCount:c}}function zm(t,e,r,n){let i=new Set(t.map(s=>s.id));for(let s of r){let o=yt(s.l2NodeId);i.has(o)&&(t.push({id:Ml(s.id),label:s.title,kind:Ft.DECISION,group:0,filePath:n.get(String(s.l2NodeId)),parent:o,degree:0,decisionType:s.nodeType,content:s.content,confidence:s.confidence,validityStatus:s.validityStatus,sourceCommits:s.sourceCommits}),e.push({source:Ml(s.id),target:o,linkType:Oe.DECISION,confidence:1}))}}function xN(t){if(!t)return CN;let r=t.split("\\").join("/").split("/").filter(Boolean);return r.length<=1?PN:r.slice(0,Math.min(2,r.length-1)).join("/")}function UN(t){if(!(typeof t!="string"||t.length===0)){try{let e=JSON.parse(t);if(Array.isArray(e)&&e.length>0)return String(e[0])}catch(e){}return t}}function HN(t){if(!(typeof t!="string"||t.length===0))try{let e=JSON.parse(t);if(Array.isArray(e)&&e.length>0)return e.map(String)}catch(e){}}import*as qm from"path";import*as Qm from"fs";import{Parser as Jm,Language as BN}from"web-tree-sitter";var ko={DETECTOR_FAILED:"SemanticDiffDetector failed; treating file as unclassified for Tier B",NO_GRAMMAR_AVAILABLE:"No tree-sitter grammar available for semantic-diff classification; changed file will still be re-parsed",GRAMMAR_LOAD_FAILED:"Failed to load tree-sitter grammar for semantic-diff classification"};var Go=class{constructor(e=fe()){this.logger=e}logger;registryPromise;parserInitPromise;detectors=new Map;async analyzeFile(e){let{filePath:r,oldContent:n,newContent:i,changedLineRanges:s}=e;if(s.length===0)return[];let o=await this.getDetectorForFile(r);if(!o)return[];try{return o.analyze(n,i,s).map(l=>({nodeId:l.nodeId,nodeType:l.nodeType,pruningLevel:l.pruningLevel===1?1:0,newRange:l.newRange}))}catch(a){return this.logger.warn(ko.DETECTOR_FAILED,{filePath:r,error:a instanceof Error?a.message:String(a)}),[]}}async getDetectorForFile(e){let r=await this.getRegistry(),n=qm.extname(e),i=r.getProviderForExtension(n);if(!i)return;let s=this.detectors.get(i.wasm_file);if(s!==void 0)return s??void 0;this.parserInitPromise??=Jm.init(),await this.parserInitPromise;let{wasmPath:o,attemptedPaths:a}=fp(i.wasm_file);if(!Qm.existsSync(o)){this.logger.debug(ko.NO_GRAMMAR_AVAILABLE,{filePath:e,wasmFile:i.wasm_file,attemptedPaths:a}),this.detectors.set(i.wasm_file,null);return}try{let l=await BN.load(o),c=new Jm,u=new gp(c,l);return this.detectors.set(i.wasm_file,u),u}catch(l){this.logger.warn(ko.GRAMMAR_LOAD_FAILED,{filePath:e,wasmFile:i.wasm_file,error:l instanceof Error?l.message:String(l)}),this.detectors.set(i.wasm_file,null);return}}getRegistry(){return this.registryPromise??=pp(),this.registryPromise}};import e_ from"fs";import xo from"path";import{execFile as KN}from"child_process";import{promisify as YN}from"util";var ku=YN(KN),$N=[".cmd",".CMD",".exe",""];function Mu(t,e){return e?{...t,env:e}:t}function WN(t,e){let r=xo.join(t,at,".bin"),n=process.platform==="win32"?$N.map(i=>`${e}${i}`):[e];for(let i of n){let s=xo.join(r,i);if(e_.existsSync(s))return s}}function Zt(t,e,r){let n=e.buildEnv?.();if(r?.binary)return Mu({command:r.binary,args:r.args??e.defaultArgs,locallyResolved:!0,fromUserOverride:!0},n);let i=e.binaryName??e.packageName,s=WN(t,i);if(s)return Mu({command:s,args:e.defaultArgs,locallyResolved:!0},n);let o=i===e.packageName?["--no-install",e.packageName,...e.defaultArgs]:["--no-install","--package",e.packageName,i,...e.defaultArgs];return Mu({command:"npx",args:o,locallyResolved:!1},n)}var Xm=5e3,jN=5e3;async function VN(t){try{if(process.platform==="win32"){let{stdout:n}=await ku("where",[t],{timeout:Xm});return n.split(/\r?\n/).map(i=>i.trim()).find(i=>i.length>0)}let{stdout:e}=await ku("sh",["-c",`command -v ${t}`],{timeout:Xm}),r=e.trim();return r.length>0?r:void 0}catch{return}}function zN(t,e){if(!e)return;let r=process.platform==="win32"?[`${t}.exe`,t]:[t];for(let n of e)for(let i of r){let s=xo.join(n,i);if(e_.existsSync(s))return s}}async function Ce(t,e){if(e?.binary)return{command:e.binary,args:e.args??t.defaultArgs,locallyResolved:!0,fromUserOverride:!0};let r=await VN(t.binaryName);if(r)return{command:r,args:t.defaultArgs,locallyResolved:!0};let n=zN(t.binaryName,t.extraCandidateDirs);return n?{command:n,args:t.defaultArgs,locallyResolved:!0}:{command:t.binaryName,args:t.defaultArgs,locallyResolved:!1}}function Zm(t){let e=t.trim().replace(/\\/g,"/");return xo.posix.basename(e).replace(/\.exe$/i,"").toLowerCase()}async function t_(t,e=jN,r){if(r&&!r.some(n=>Zm(n)===Zm(t)))return!1;try{return await ku(t,["--version"],{timeout:e}),!0}catch{return!1}}var Ct={PACKAGE_NAME:"typescript-language-server",NPX_COMMAND:"npx",NPX_NO_INSTALL_FLAG:"--no-install",STDIO_ARG:"--stdio",VERSION_FLAG:"--version"},Uo=8192,zn={binaryUnresolvable:"typescript-language-server is not resolvable (no local node_modules/.bin copy and `npx --no-install` cannot find it) -- install it as a project devDependency to enable LSP-precision cross-file edges",nodeModulesMissing:"node_modules is missing -- run the project's package manager install first",tsconfigMissing:"no tsconfig.json/jsconfig.json found at the workspace root"};var JN=["PATH","HOME","USERPROFILE","PATHEXT","SYSTEMROOT","COMSPEC","LANG","LC_ALL","TERM"];function r_(){let t={};for(let e of JN){let r=process.env[e];r!==void 0&&(t[e]=r)}return t}function qN(){let t=r_(),e=process.env.NODE_OPTIONS??"";if(e.includes("--max-old-space-size"))return t.NODE_OPTIONS=e,t;let r=`--max-old-space-size=${Uo}`;return t.NODE_OPTIONS=e?`${e} ${r}`:r,t}function Ho(t,e){return Zt(t,{packageName:Ct.PACKAGE_NAME,defaultArgs:[Ct.STDIO_ARG],buildEnv:qN},e)}import Bo from"fs";import Ko from"path";import{execFile as nC}from"child_process";import{promisify as iC}from"util";import QN from"path";import{execFile as XN}from"child_process";import{promisify as ZN}from"util";var eC=ZN(XN),tC=new Set([".cmd",".bat",".ps1"]),n_=new Set(["npx"]);function Hr(t){return process.platform!=="win32"?!1:tC.has(QN.extname(t).toLowerCase())||n_.has(t.toLowerCase())}function Gu(t){return`"${t.replace(/"/g,'""')}"`}var rC=5e3;async function xu(t,e){try{let{stdout:r}=await eC("where",[t],{timeout:rC,env:e});return r.split(/\r?\n/).map(i=>i.trim()).find(i=>i.length>0)??t}catch{return t}}function Uu(t){return n_.has(t.toLowerCase())}async function Jn(t,e,r){return[Uu(t)?await xu(t,r):t,...e].map(Gu).join(" ")}var i_=iC(nC),s_=5e3,sC=[oe.TSCONFIG_JSON,oe.JSCONFIG_JSON];function oC(t){return Bo.existsSync(Ko.join(t,at))}function aC(t){return!!(sC.some(r=>Bo.existsSync(Ko.join(t,r)))||Bo.existsSync(Ko.join(t,"tsconfig.base.json"))||Bo.existsSync(Ko.join(t,"src",oe.TSCONFIG_JSON)))}async function lC(t){let e=[Ct.NPX_NO_INSTALL_FLAG,Ct.PACKAGE_NAME,Ct.VERSION_FLAG];try{if(Hr(Ct.NPX_COMMAND)){let r=await Jn(Ct.NPX_COMMAND,e,void 0);await i_(r,[],{cwd:t,timeout:s_,shell:!0})}else await i_(Ct.NPX_COMMAND,e,{cwd:t,timeout:s_});return!0}catch{return!1}}async function o_(t,e){let r=oC(t),n=aC(t);if(!r)return{nodeModulesPresent:r,tsconfigResolvable:n,lspBinaryResolvable:!1,ready:!1,reason:zn.nodeModulesMissing};if(!n)return{nodeModulesPresent:r,tsconfigResolvable:n,lspBinaryResolvable:!1,ready:!1,reason:zn.tsconfigMissing};let s=Ho(t,e).locallyResolved?!0:await lC(t);return s?{nodeModulesPresent:r,tsconfigResolvable:n,lspBinaryResolvable:s,ready:!0}:{nodeModulesPresent:r,tsconfigResolvable:n,lspBinaryResolvable:s,ready:!1,reason:zn.binaryUnresolvable}}import yC from"fs/promises";import Hu from"os";import pn from"path";import{pathToFileURL as p_,fileURLToPath as g_}from"url";import{spawn as a_}from"child_process";var dn={CONTENT_LENGTH_HEADER_PREFIX:"Content-Length: ",HEADER_BODY_SEPARATOR:`\r
|
|
133
|
+
`).map(e=>e.trim()).filter(Boolean).map(e=>JSON.parse(e)):[]}var Fs=class{constructor(e,r=fe()){this.git=e;this.logger=r}git;logger;async resolveHydrationCommit(e,r=E.KNOWLEDGE_ROOT){let n=await this.git.getBranchTipSha(e,r);if(!n)return;let i=await this.git.getCommitLog(e,r,E.KNOWLEDGE_LOG_SCAN_LIMIT),s=new Map;for(let a of i){let l=sr(a.message);l&&!s.has(l)&&s.set(l,a.sha)}if(s.size===0)return n;let o=await this.git.getCommitAncestry(e,E.HEAD_REF,rR);for(let a of o){let l=s.get(a);if(l)return l}return n}async hydrate(e,r,n=E.KNOWLEDGE_ROOT,i){let s=await this.resolveHydrationCommit(e,n);if(!s)return this.logger.debug(j.NOTHING_TO_HYDRATE,{branchName:n}),{hydrated:!1,nodesLoaded:0,edgesLoaded:0,edgesDropped:0};let[o,a]=await Promise.all([this.git.readFileAtRef(e,s,Ng.posix.join(E.GRAPH_DIR_NAME,E.NODES_JSONL_NAME)),this.git.readFileAtRef(e,s,Ng.posix.join(E.GRAPH_DIR_NAME,E.EDGES_JSONL_NAME))]),l=sR(o),c=oR(a);if(!(i?.force??!1)){let d=this.checkDestructiveRebuildGuard(r,l.length);if(d)return this.logger.warn(d.message,{knowledgeSha:s,incomingNodes:l.length}),{hydrated:!1,refused:!0,refusalReason:d.reason,nodesLoaded:0,edgesLoaded:0,edgesDropped:0}}let p=await r.withWriteLock(async()=>{let d=r.graph.bulkLoadGraph({projectId:E.DEFAULT_LOCAL_PROJECT_ID,nodes:l,edges:c});return await xl(this.git,e,s,r,this.logger),r.meta.set(E.META_KEY_KNOWLEDGE_TIP_SHA,s),d});return this.logger.info(j.HYDRATED_KNOWLEDGE_GRAPH,{knowledgeSha:s,...p}),{hydrated:!0,knowledgeSha:s,...p}}checkDestructiveRebuildGuard(e,r){if(e.meta.get(E.META_KEY_KNOWLEDGE_PACK_PENDING))return{reason:"pending-local-write",message:j.HYDRATE_REFUSED_PENDING_WRITE};let n=e.graph.count().l2Nodes;if(n>=nR&&r<n*iR)return{reason:"catastrophic-shrink",message:j.hydrateRefusedCatastrophicShrink(n,r)}}async isStale(e,r,n=E.KNOWLEDGE_ROOT){let i=await this.resolveHydrationCommit(e,n);return i?r.meta.get(E.META_KEY_KNOWLEDGE_TIP_SHA)!==i:!1}async markSynced(e,r,n=E.KNOWLEDGE_ROOT){let i=await this.resolveHydrationCommit(e,n);i&&await r.withWriteLock(()=>{r.meta.set(E.META_KEY_KNOWLEDGE_TIP_SHA,i)})}async importL3Cards(e,r,n){return n.withWriteLock(()=>xl(this.git,e,r,n,this.logger))}};var Du=hl(Ou(),1),wm=hl(Cm(),1);import vm from"path";import bm from"fs/promises";import UL from"crypto";var Se={PACKAGE_JSON_TYPESCRIPT:"package.json:typescript",PACKAGE_JSON_REACT:"package.json:react",PACKAGE_JSON_VUE:"package.json:vue",PACKAGE_JSON_NEXT:"package.json:next",PACKAGE_JSON_EXPRESS:"package.json:express",PACKAGE_JSON_DRIZZLE_ORM:"package.json:drizzle-orm",PACKAGE_JSON_TAILWINDCSS:"package.json:tailwindcss",PACKAGE_JSON_JEST:"package.json:jest",PACKAGE_JSON_VITEST:"package.json:vitest",PACKAGE_JSON_PG:"package.json:pg",PACKAGE_JSON_WORKSPACES:"package.json:workspaces",CARGO_BASE:"cargo:base",CARGO_TOKIO:"cargo:tokio",CARGO_ACTIX:"cargo:actix",CARGO_SERDE:"cargo:serde",CARGO_TAURI:"cargo:tauri",PYTHON_BASE:"python:base",PYTHON_DJANGO:"python:django",PYTHON_FASTAPI:"python:fastapi",PYTHON_PANDAS:"python:pandas",GO_BASE:"go:base",GO_GIN:"go:gin",TSCONFIG_STRICT:"tsconfig:strict",VITE_PRESENCE:"vite:presence",DRIZZLE_PRESENCE:"drizzle:presence",TAURI_PRESENCE:"tauri:presence"},oe={PACKAGE_JSON:"package.json",CARGO_TOML:"Cargo.toml",PYPROJECT_TOML:"pyproject.toml",REQUIREMENTS_TXT:"requirements.txt",GO_MOD:"go.mod",TSCONFIG_JSON:"tsconfig.json",JSCONFIG_JSON:"jsconfig.json"},Gr={VITE_CONFIG:"vite.config",DRIZZLE_CONFIG:"drizzle.config",TAURI_CONF:"tauri.conf",WEBPACK_CONFIG:"webpack.config"},ke={PACKAGE_JSON_TYPESCRIPT:'"typescript"',PACKAGE_JSON_REACT:'"react"',PACKAGE_JSON_VUE:'"vue"',PACKAGE_JSON_NEXT:'"next"',PACKAGE_JSON_EXPRESS:'"express"',PACKAGE_JSON_DRIZZLE_ORM:'"drizzle-orm"',PACKAGE_JSON_TAILWINDCSS:'"tailwindcss"',PACKAGE_JSON_JEST:'"jest"',PACKAGE_JSON_VITEST:'"vitest"',PACKAGE_JSON_PG:'"pg"',PACKAGE_JSON_WORKSPACES:'"workspaces"',CARGO_TOKIO:"tokio",CARGO_ACTIX:"actix",CARGO_SERDE:"serde",CARGO_TAURI:"tauri",PYTHON_DJANGO:"django",PYTHON_FASTAPI:"fastapi",PYTHON_PANDAS:"pandas",GO_GIN:"gin-gonic"},Nt={CONFIG_SCAN_FAILED:"Config scanning failed",STARTING_GIT_BLOB_SCAN:"Starting global AST scan using Git-native blob hashing",GIT_OPS_FAILED_FALLBACK:"Git operations failed during discovery, falling back to manual globbing",GIT_UNAVAILABLE_FALLBACK:"Git unavailable or no .git repository found; falling back to fast-glob + manual sha256 hashing",NO_GITIGNORE_FOUND:"No .gitignore found, proceeding without it",DISCOVERED_SOURCE_FILES:"Discovered source files",SKIPPING_OVERSIZED_FILE:"Skipping oversized file",GIT_HASH_DELTA_CHECK_COMPLETE:"Git hash delta check complete",VCS_HOTSPOT_DOMAINS_EXTRACTED:"VCS hotspot analysis extracted functional domains"},fo=[`${at}/**`,".git/**","dist/**","build/**"],Pm=[at,"dist","build","docs","test","tests","scripts"],ho="src",Dm=[ho,"lib","app"];var HL=".gitignore",mo=class{constructor(e,r=fe()){this.git=e;this.logger=r}git;logger;async discoverFiles(e,r,n={}){let{onlyIndexed:i=!1}=n,s=new Map,o=new Set,{allFiles:a,usingGit:l}=await this.resolveCandidateFiles(e,i,s,o),c=this.buildExistingHashesMap(r),u={workspaceRoot:e,onlyIndexed:i,usingGit:l,gitBlobHashes:s,dirtyFiles:o,existingHashes:c},{filesToParse:p,skippedOversized:d,skippedCount:f}=await this.categorizeFiles(a,u);return this.logger.debug(Nt.GIT_HASH_DELTA_CHECK_COMPLETE,{filesToParse:p.length,skipped:f,skippedOversized:d.length}),{filesToParse:p,existingHashes:c,skippedCount:f,skippedOversized:d}}async resolveCandidateFiles(e,r,n,i){let s=await this.git.isGitRepository(e),o=[];if(s){this.logger.debug(Nt.STARTING_GIT_BLOB_SCAN);let a=await this.scanGitTrackedFiles(e,r,n,i);a?o=a:s=!1}return s||(o=await this.discoverViaGlobFallback(e,i)),o=o.filter(a=>Ln(a)),this.logger.debug(Nt.DISCOVERED_SOURCE_FILES,{count:o.length}),{allFiles:o,usingGit:s}}async scanGitTrackedFiles(e,r,n,i){try{let s=await this.git.listTrackedFilesWithBlobHash(e);for(let[l,c]of s)n.set(l,c);let o=await this.git.listUntrackedFiles(e),a=await this.git.listModifiedFiles(e);return r?[...n.keys()]:([...o,...a].forEach(l=>{l.trim()&&i.add(l.trim())}),[...n.keys(),...o])}catch(s){return this.logger.warn(Nt.GIT_OPS_FAILED_FALLBACK,{error:s instanceof Error?s.message:String(s)}),null}}async discoverViaGlobFallback(e,r){this.logger.debug(Nt.GIT_UNAVAILABLE_FALLBACK);let n=(0,wm.default)();try{let c=await bm.readFile(vm.join(e,HL),K);n.add(c)}catch{this.logger.debug(Nt.NO_GITIGNORE_FOUND)}let i=[...fo,`${he}/**`],[s,o]=await Promise.all([(0,Du.default)(`**/*.{${Tl().join(",")}}`,{cwd:e,ignore:i,absolute:!1}),(0,Du.default)(`**/{${Array.from(Sl).join(",")}}`,{cwd:e,ignore:i,absolute:!1})]),a=[...s,...o],l=n.filter(a);return l.forEach(c=>r.add(c)),l}buildExistingHashesMap(e){let r=new Map;for(let{filePath:n,contentHash:i}of e.getAllHashes())i!==null&&r.set(n,i);return r}async categorizeFiles(e,r){let n=[],i=[],s=0;for(let o of e){let a=await this.resolveFileOutcome(o,r);switch(a.kind){case"parse":n.push(a.entry);break;case"oversized":i.push({file:a.file,sizeBytes:a.sizeBytes});break;case"skip":s++;break;case"unreadable":break}}return{filesToParse:n,skippedOversized:i,skippedCount:s}}async resolveFileOutcome(e,r){let n=this.resolveKnownBlobHash(e,r);if(n&&r.existingHashes.get(e)===n)return{kind:"skip"};let i=await this.readFileForHashing(e,n,r);if(!i)return{kind:"unreadable"};if(r.existingHashes.get(e)===i.hash)return{kind:"skip"};let s=Buffer.byteLength(i.code);return s>512e3?(this.logger.warn(Nt.SKIPPING_OVERSIZED_FILE,{file:e,sizeBytes:s}),{kind:"oversized",file:e,sizeBytes:s}):{kind:"parse",entry:{file:e,hash:i.hash,code:i.code}}}resolveKnownBlobHash(e,r){let n=r.dirtyFiles.has(e),i="";return!n&&r.gitBlobHashes.has(e)&&(i=r.gitBlobHashes.get(e)),r.onlyIndexed&&r.usingGit&&r.gitBlobHashes.has(e)&&(i=r.gitBlobHashes.get(e)),i}async readFileForHashing(e,r,n){try{let i;if(n.onlyIndexed&&n.usingGit&&n.gitBlobHashes.has(e)){let o=n.gitBlobHashes.get(e);i=await this.git.readBlobContent(n.workspaceRoot,o)}else i=await bm.readFile(vm.join(n.workspaceRoot,e),K);let s=r||UL.createHash(Vt).update(i).digest("hex");return{code:i,hash:s}}catch{return null}}};var Mm=hl(Ou(),1);import BL from"path";import KL from"fs/promises";function So(t){return e=>e===t}function vu(t){return e=>e.startsWith(t)}function He(t,e,r,n){return{id:t,matchesFile:e,detect:i=>i.includes(r)?{tags:n}:null}}function jn(t,e,r){return{id:t,matchesFile:e,detect:()=>r}}var xt=So(oe.PACKAGE_JSON),ki=So(oe.CARGO_TOML),_o=t=>t===oe.PYPROJECT_TOML||t===oe.REQUIREMENTS_TXT,Fm=So(oe.GO_MOD),YL=So(oe.TSCONFIG_JSON),$L=[He(Se.PACKAGE_JSON_TYPESCRIPT,xt,ke.PACKAGE_JSON_TYPESCRIPT,[ir.TYPESCRIPT]),He(Se.PACKAGE_JSON_REACT,xt,ke.PACKAGE_JSON_REACT,[ir.REACT,se.FRONTEND]),He(Se.PACKAGE_JSON_VUE,xt,ke.PACKAGE_JSON_VUE,[ir.VUE,se.FRONTEND]),He(Se.PACKAGE_JSON_NEXT,xt,ke.PACKAGE_JSON_NEXT,[se.NEXTJS,se.FRONTEND,se.SSR]),He(Se.PACKAGE_JSON_EXPRESS,xt,ke.PACKAGE_JSON_EXPRESS,[ir.EXPRESS,se.BACKEND]),He(Se.PACKAGE_JSON_DRIZZLE_ORM,xt,ke.PACKAGE_JSON_DRIZZLE_ORM,[se.DRIZZLE,se.DATABASE]),He(Se.PACKAGE_JSON_TAILWINDCSS,xt,ke.PACKAGE_JSON_TAILWINDCSS,[se.TAILWINDCSS,se.CSS]),He(Se.PACKAGE_JSON_JEST,xt,ke.PACKAGE_JSON_JEST,[se.JEST,se.TESTING]),He(Se.PACKAGE_JSON_VITEST,xt,ke.PACKAGE_JSON_VITEST,[se.VITEST,se.TESTING]),He(Se.PACKAGE_JSON_PG,xt,ke.PACKAGE_JSON_PG,[se.POSTGRES,se.DATABASE]),He(Se.PACKAGE_JSON_WORKSPACES,xt,ke.PACKAGE_JSON_WORKSPACES,[se.MONOREPO]),jn(Se.CARGO_BASE,ki,{projectType:ht.RUST,tags:[ht.RUST]}),He(Se.CARGO_TOKIO,ki,ke.CARGO_TOKIO,[se.TOKIO,se.ASYNC]),He(Se.CARGO_ACTIX,ki,ke.CARGO_ACTIX,[se.ACTIX,se.BACKEND]),He(Se.CARGO_SERDE,ki,ke.CARGO_SERDE,[se.SERDE]),He(Se.CARGO_TAURI,ki,ke.CARGO_TAURI,[se.TAURI,se.DESKTOP]),jn(Se.PYTHON_BASE,_o,{projectType:ht.PYTHON,tags:[ht.PYTHON]}),He(Se.PYTHON_DJANGO,_o,ke.PYTHON_DJANGO,[se.DJANGO,se.BACKEND]),He(Se.PYTHON_FASTAPI,_o,ke.PYTHON_FASTAPI,[se.FASTAPI,se.BACKEND]),He(Se.PYTHON_PANDAS,_o,ke.PYTHON_PANDAS,[se.PANDAS,se.DATA]),jn(Se.GO_BASE,Fm,{projectType:ht.GO,tags:[ht.GO]}),He(Se.GO_GIN,Fm,ke.GO_GIN,[se.GIN,se.BACKEND]),{id:Se.TSCONFIG_STRICT,matchesFile:YL,detect:t=>/"strict"\s*:\s*true/.test(t)?{tags:[se.STRICT_TS]}:null},jn(Se.VITE_PRESENCE,vu(Gr.VITE_CONFIG),{tags:[se.VITE,se.BUILD_TOOL]}),jn(Se.DRIZZLE_PRESENCE,vu(Gr.DRIZZLE_CONFIG),{tags:[se.DRIZZLE,se.DATABASE]}),jn(Se.TAURI_PRESENCE,vu(Gr.TAURI_CONF),{tags:[se.TAURI,se.DESKTOP]})],WL=[`**/${oe.PACKAGE_JSON}`,`**/${oe.CARGO_TOML}`,`**/${oe.PYPROJECT_TOML}`,`**/${oe.REQUIREMENTS_TXT}`,`**/${oe.GO_MOD}`,`**/${oe.TSCONFIG_JSON}`,`**/${Gr.VITE_CONFIG}.*`,`**/${Gr.DRIZZLE_CONFIG}.*`,`**/${Gr.WEBPACK_CONFIG}.*`,`**/${Gr.TAURI_CONF}.*`],jL=[...fo,"target/**","venv/**",".venv/**","**/fixtures/**","**/__fixtures__/**","**/test-data/**"],Eo=class{constructor(e=fe()){this.logger=e}logger;async scanConfigs(e){let r=ht.UNKNOWN,n=new Set;try{let i=await(0,Mm.default)(WL,{cwd:e,ignore:jL,absolute:!0,deep:3});r=await this.scanAllConfigFiles(i,n),r=this.resolveJavascriptFallback(r,n)}catch(i){this.logger.warn(Nt.CONFIG_SCAN_FAILED,{error:i?.message??String(i)})}return r===ht.UNKNOWN&&(r=ht.GENERIC),n.size===0&&n.add(op),{projectType:r,tags:Array.from(n)}}async scanAllConfigFiles(e,r){let n=ht.UNKNOWN;for(let i of e){let s=await this.readConfigFileContent(i);if(s===null)continue;let o=BL.basename(i),a=this.applyDetectionRules(o,s,r);a&&(n=a)}return n}async readConfigFileContent(e){try{return await KL.readFile(e,K)}catch{return null}}applyDetectionRules(e,r,n){let i;for(let s of $L){if(!s.matchesFile(e))continue;let o=s.detect(r);if(o){o.projectType&&(i=o.projectType);for(let a of o.tags)n.add(a)}}return i}resolveJavascriptFallback(e,r){return(r.has(ir.TYPESCRIPT)||r.has(ir.REACT)||r.has(ir.EXPRESS)||r.has(ir.VUE))&&e===ht.UNKNOWN?ht.JAVASCRIPT:e}};var bu=".",VL=["packages","artifacts","crates"],zL="domain:";function JL(t){return t[0]===ho&&t.length>1||t.length>2&&t[1]===ho&&VL.includes(t[0])?t[1]:t[0]}function qL(t){let e=t.split("/");if(e.length<=1||e[0].startsWith(bu)||Pm.includes(e[0]))return null;let r=JL(e);return r.includes(bu)||r.startsWith(bu)||Dm.includes(r)?null:r}var To=class{constructor(e,r=fe()){this.git=e;this.logger=r}git;logger;async extractHotspotTags(e){let r=new Set;try{if(!await this.git.isGitRepository(e))return[];let i=await this.git.getRecentChangedFilePaths(e,100),s=this.countChangedPathDomains(i),o=this.selectTopDomains(s);for(let a of o)a.length>2&&r.add(`${zL}${a}`);o.length>0&&this.logger.debug(Nt.VCS_HOTSPOT_DOMAINS_EXTRACTED,{domains:o})}catch{}return Array.from(r)}countChangedPathDomains(e){let r=new Map;for(let n of e){let i=n.trim();if(!i)continue;let s=qL(i);s&&r.set(s,(r.get(s)||0)+1)}return r}selectTopDomains(e){return Array.from(e.entries()).sort((r,n)=>n[1]-r[1]).slice(0,5).map(r=>r[0])}};import nN from"os";import{Worker as QL}from"worker_threads";import*as xi from"path";import*as xr from"fs";import{fileURLToPath as XL}from"url";import ZL from"crypto";var eN=XL(import.meta.url),km=xi.dirname(eN),Ao={FORMAT:"esm",PLATFORM:"node",TARGET:"node20",EXTERNAL_TREE_SITTER:"web-tree-sitter"},Gi={EVAL:"--eval",PRINT:"--print",IMPORT:"--import",TSX_LOADER:"tsx"};async function tN(t,e){let r=await import("esbuild"),n=`${e}.${process.pid}.tmp`;await r.build({entryPoints:[t],outfile:n,bundle:!0,format:Ao.FORMAT,platform:Ao.PLATFORM,target:Ao.TARGET,external:[Ao.EXTERNAL_TREE_SITTER]}),xr.renameSync(n,e)}function rN(t,e){return xr.existsSync(e)?xr.existsSync(t)?xr.statSync(t).mtimeMs>xr.statSync(e).mtimeMs:!1:!0}var Ui=class extends Error{constructor(r,n){super(Ve.workerCrashWhileParsing(r??Ve.UNKNOWN_FILE)+(n instanceof Error?n.message:String(n)));this.filePath=r;this.cause=n;this.name=dp}filePath;cause},Ro=class{constructor(e=fe(),r=3e4,n,i){this.logger=e;this.taskTimeoutMs=r;this.cache=n;this.workerScriptPathOverride=i;this.ipcLogRouter=new Hd(this.logger)}logger;taskTimeoutMs;cache;workerScriptPathOverride;workers=[];workerTasks=new Map;workerOptions={};wPath="";workerQueue=[];spawnChain=Promise.resolve();taskQueue=[];taskCounter=0;pendingTasks=new Map;taskTimeouts=new Map;taskFilePaths=new Map;timedOutWorkers=new WeakSet;shuttingDown=!1;ipcLogRouter;batchChain=Promise.resolve();enqueueSpawn(){return this.spawnChain=this.spawnChain.then(async()=>{this.spawnWorker(),await new Promise(e=>setImmediate(e))}),this.spawnChain}spawnWorker(){let e=new QL(this.wPath,this.workerOptions);e.on("message",n=>{if(this.ipcLogRouter.handleMessage(n))return;this.workerTasks.delete(e);let i=this.taskTimeouts.get(n.taskId);i&&(clearTimeout(i),this.taskTimeouts.delete(n.taskId));let s=this.pendingTasks.get(n.taskId);s&&(this.pendingTasks.delete(n.taskId),this.taskFilePaths.delete(n.taskId),s.resolve(n)),this.workerQueue.push(e),this.processQueue()});let r=n=>{let i=this.timedOutWorkers.delete(e),s=this.workerTasks.get(e),o=s?this.taskFilePaths.get(s):void 0;if(this.shuttingDown?this.logger.debug(Ve.WORKER_EXITED_DURING_SHUTDOWN,{taskId:s,filePath:o}):this.logger.error(Ve.WORKER_CRASHED_EXITED,{taskId:s,filePath:o,hadInFlightTask:!!s,error:n instanceof Error?{message:n.message,name:n.name}:n}),s){let a=this.taskTimeouts.get(s);a&&(clearTimeout(a),this.taskTimeouts.delete(s));let l=this.pendingTasks.get(s);l&&(l.reject(new Ui(o,i?new Error(Ve.taskTimedOutAfterMs(s,this.taskTimeoutMs)):n||new Error(Ve.WORKER_EXITED_UNEXPECTEDLY))),this.pendingTasks.delete(s)),this.workerTasks.delete(e),this.taskFilePaths.delete(s)}this.workers=this.workers.filter(a=>a!==e),this.workerQueue=this.workerQueue.filter(a=>a!==e),this.shuttingDown||this.enqueueSpawn()};return e.on("error",r),e.on("exit",n=>{n!==0&&r(new Error(Ve.workerExitedWithCode(n)))}),this.workers.push(e),this.workerQueue.push(e),this.processQueue(),e}async initialize(e=2){if(this.workers.length>0)return;if(this.shuttingDown=!1,this.workerScriptPathOverride){this.wPath=this.workerScriptPathOverride,this.workerOptions.execArgv=process.execArgv.filter(n=>!n.includes(Gi.EVAL)&&!n.includes(Gi.PRINT)),this.workerOptions.execArgv.some(n=>n.includes(Gi.TSX_LOADER))||this.workerOptions.execArgv.push(Gi.IMPORT,Gi.TSX_LOADER);for(let n=0;n<e;n++)await this.enqueueSpawn();return}this.wPath=xi.resolve(km,"./ast-worker.js");let r=xi.resolve(km,"./ast-worker.ts");rN(r,this.wPath)&&await tN(r,this.wPath),this.workerOptions.execArgv=[];for(let n=0;n<e;n++)await this.enqueueSpawn()}parse(e){return new Promise((r,n)=>{let i;if(this.cache){i=ZL.createHash(Vt).update(e.code).digest("hex");let o=performance.now(),a=this.cache.get(i),l=performance.now()-o;if(a){this.logger.debug(Ve.PARSE_CACHE_HIT,{contentHash:i,cacheLookupTimeMs:Number(l.toFixed(2))}),r(a);return}}let s=Date.now();this.taskQueue.push({request:e,resolve:o=>{if(this.cache){this.cache.set(i,o);let a=this.cache.metrics;if(a.hits+a.misses>0&&(a.hits+a.misses)%100===0){let l=a.hits/(a.hits+a.misses)*100,c=Date.now()-s;this.logger.info(Ve.CACHE_METRICS_AND_QUEUE_PERFORMANCE,{hitRate:Number(l.toFixed(2)),queueWaitTimeMs:c,...a})}}r(o)},reject:n}),this.processQueue()})}processQueue(){for(;this.taskQueue.length>0&&this.workerQueue.length>0;){let e=this.taskQueue.shift(),r=this.workerQueue.shift(),n=String(++this.taskCounter);this.pendingTasks.set(n,{resolve:e.resolve,reject:e.reject}),this.workerTasks.set(r,n),this.taskFilePaths.set(n,e.request.filePath);let i=setTimeout(()=>{this.taskTimeouts.delete(n),this.timedOutWorkers.add(r),this.logger.error(Ve.TASK_TIMED_OUT_TERMINATING,{taskId:n,filePath:this.taskFilePaths.get(n),taskTimeoutMs:this.taskTimeoutMs}),r.terminate().catch(s=>{this.logger.warn(Ve.WORKER_TERMINATE_FAILED,{taskId:n,filePath:this.taskFilePaths.get(n),error:s instanceof Error?{message:s.message,name:s.name}:s})})},this.taskTimeoutMs);this.taskTimeouts.set(n,i),r.postMessage({...e.request,taskId:n})}}async terminate(){this.shuttingDown=!0;let e=new Error(Ve.POOL_TERMINATED);for(let n of this.taskTimeouts.values())clearTimeout(n);this.taskTimeouts.clear();for(let n of this.pendingTasks.values())n.reject(e);this.pendingTasks.clear();for(let n of this.taskQueue)n.reject(e);this.taskQueue=[],this.workerTasks.clear(),this.taskFilePaths.clear(),this.workerQueue=[];let r=this.workers;this.workers=[],await Promise.all(r.map(n=>n.terminate()))}async serializeBatch(e){let r=this.batchChain.then(e);return this.batchChain=r.then(()=>{},()=>{}),r}};var Oo=class{constructor(e,r=fe()){this.workerPool=e;this.logger=r}workerPool;logger;async processFiles(e,r){return this.workerPool.serializeBatch(()=>this.runBatch(e,r))}async runBatch(e,r){let n=this.workerPool,i=Math.max(1,(nN.cpus().length||4)-1);await n.initialize(i);let s=u=>ds(u)??ap.TYPESCRIPT,o=[],a=[],l=new Array(r.length),c=r.map(async(u,p)=>{try{let d=await n.parse({filePath:u.file,code:u.code,language:s(u.file)});if(d.success&&d.data)l[p]={outcome:"parsed",result:{file:u.file,hash:u.hash,data:d.data,language:ds(u.file)}};else{let f=d.error??Ve.PARSE_FAILURE_NO_DETAIL;this.logger.warn(Ve.PARSE_FAILURE_RESULT,{file:u.file,error:f}),l[p]={outcome:"failed",failure:{file:u.file,hash:u.hash,error:f}}}}catch(d){let f=d instanceof Ui||d instanceof Error?d.message:String(d);this.logger.error(Ve.PARSE_THREW,{file:u.file,error:f}),l[p]={outcome:"failed",failure:{file:u.file,hash:u.hash,error:f}}}});await Promise.all(c);for(let u of l)u.outcome==="parsed"?o.push(u.result):a.push(u.failure);return await n.terminate(),{parsed:o,failures:a}}};import*as tt from"path";import*as pt from"fs";import*as Io from"fs";import yo from"path";function Hi(t,e){let r=yo.resolve(t),n=yo.resolve(r,e),i=r.endsWith(yo.sep)?r:r+yo.sep;return n===r||n.startsWith(i)?n:null}function Lo(t,e){let r=Hi(t,e);if(!r||!Io.existsSync(r))return null;try{return Io.readFileSync(r,K)}catch{return null}}function Gm(t){return t.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*|\/\*[\s\S]*?\*\/)/g,(e,r)=>r?"":e)}var iN="tsconfig.base.json",sN="pnpm-workspace.yaml",oN="index.js",aN="src",lN="index",No="*",xm=".",Um=[".ts",".js",".tsx",".jsx",".py",".rs",".go",".java",".cpp",".cc",".c",".h",".hpp"],cN=["/index.ts","/index.js"],Hm=".go",Bm={TSCONFIG_PARSE_FAILED:"Failed to JSON-parse tsconfig.json",TSCONFIG_FILES_READ_FAILED:"Failed to read or parse tsconfig files"},wu="*",uN="node:",dN=/^(@[^/]+\/[^/]+|[^/]+)/,Co=class t{constructor(e,r=fe()){this.workspaceRoot=e;this.logger=r;this.loadTsConfigPaths()}workspaceRoot;logger;exportsByFile=new Map;importsByFile=new Map;localsByFile=new Map;tsConfigPaths={};goFilesByDirectory=new Map;loadTsConfigPaths(){try{this.mergeProjectTsConfigPaths(),this.mergeBaseTsConfigPaths()}catch(e){this.logger.debug(Bm.TSCONFIG_FILES_READ_FAILED,{error:e?.message??String(e)})}}mergeProjectTsConfigPaths(){let e=tt.join(this.workspaceRoot,oe.TSCONFIG_JSON);if(!pt.existsSync(e))return;let r=pt.readFileSync(e,K),n=Gm(r);try{let i=JSON.parse(n);i.compilerOptions&&i.compilerOptions.paths&&(this.tsConfigPaths={...this.tsConfigPaths,...i.compilerOptions.paths})}catch(i){this.logger.debug(Bm.TSCONFIG_PARSE_FAILED,{error:i instanceof Error?i.message:String(i)})}}mergeBaseTsConfigPaths(){let e=tt.join(this.workspaceRoot,iN);if(!pt.existsSync(e))return;let r=pt.readFileSync(e,K),n=Gm(r),i=JSON.parse(n);i.compilerOptions&&i.compilerOptions.paths&&(this.tsConfigPaths={...i.compilerOptions.paths,...this.tsConfigPaths})}registerFile(e,r,n,i){let s=e.replace(/\\/g,"/");if(this.importsByFile.set(s,r),this.exportsByFile.set(s,new Set(n)),this.localsByFile.set(s,new Set(i)),s.endsWith(Hm)){let o=tt.posix.dirname(s),a=this.goFilesByDirectory.get(o);a||(a=new Set,this.goFilesByDirectory.set(o,a)),a.add(s)}}resolveCall(e,r){let n=e.replace(/\\/g,"/"),i=this.localsByFile.get(n);if(i&&i.has(r))return{targetFile:n,targetSymbol:r};let s=this.importsByFile.get(n)||[];for(let o of s){if(o.localName!==r)continue;let a=this.resolveImportedBinding(n,o,r);if(a)return a}if(n.endsWith(Hm)){let o=this.resolveGoSamePackageCall(n,r);if(o)return o}return null}resolveImportedBinding(e,r,n){let i=this.resolveModulePath(e,r.modulePath);if(!i)return null;let s=r.originalName===wu?n:r.originalName;return this.resolveReexportTarget(e,i,s)??{targetFile:i,targetSymbol:s}}resolveMemberCall(e,r,n){let i=e.replace(/\\/g,"/");if(r==="this"||r==="super")return this.localsByFile.get(i)?.has(n)?{targetFile:i,targetSymbol:n}:null;let s=this.resolveImportReceiverMethod(i,r,n);return s||(this.localsByFile.get(i)?.has(n)?{targetFile:i,targetSymbol:n}:null)}resolveImportReceiverMethod(e,r,n){let i=this.importsByFile.get(e)||[];for(let s of i){if(s.localName!==r)continue;let o=this.resolveModulePath(e,s.modulePath);if(!o)continue;let a=this.resolveReexportTarget(e,o,n);if(a)return a;if(this.localsByFile.get(o)?.has(n))return{targetFile:o,targetSymbol:n};let l=this.resolveMethodAtReceiverDeclaration(e,s,r,n,o);if(l)return l}return null}resolveMethodAtReceiverDeclaration(e,r,n,i,s){let o=r.originalName===wu?n:r.originalName,a=this.resolveReexportTarget(e,s,o);return!a||!this.localsByFile.get(a.targetFile)?.has(i)?null:{targetFile:a.targetFile,targetSymbol:i}}isExternalBinding(e,r){let n=e.replace(/\\/g,"/");return(this.importsByFile.get(n)||[]).some(s=>s.localName===r&&this.isExternalSpecifier(n,s.modulePath))}hasBinding(e,r){return(this.importsByFile.get(e.replace(/\\/g,"/"))??[]).some(n=>n.localName===r)}declaresLocal(e,r){return this.localsByFile.get(e.replace(/\\/g,"/"))?.has(r)??!1}isExternalSpecifier(e,r){if(r.startsWith(uN))return!0;if(r.startsWith(xm))return!1;let n=dN.exec(r)?.[1];if(n&&this.getWorkspacePackageDirs().has(n)||this.matchesTsConfigAlias(r))return!1;let i=this.resolveModulePath(e,r);return i?i.startsWith(`${at}/`)||i.includes(`/${at}/`):!0}matchesTsConfigAlias(e){return Object.keys(this.tsConfigPaths).some(r=>e.startsWith(r.replace(No,"")))}resolveReexportTarget(e,r,n){let i=r,s=n,o=new Set([e]);for(;!o.has(i);){if(o.add(i),this.localsByFile.get(i)?.has(s))return{targetFile:i,targetSymbol:s};let a=this.importsByFile.get(i)?.find(c=>c.localName===s);if(!a)return null;let l=this.resolveModulePath(i,a.modulePath);if(!l)return null;i=l,s=a.originalName===wu?s:a.originalName}return null}resolveGoSamePackageCall(e,r){let n=tt.posix.dirname(e),i=this.goFilesByDirectory.get(n);if(!i)return null;for(let s of i)if(s!==e&&this.localsByFile.get(s)?.has(r))return{targetFile:s,targetSymbol:r};return null}resolveWorkerSpawnPath(e,r){let n=tt.posix.dirname(e.replace(/\\/g,"/")),i=tt.posix.join(n,r.replace(/\.jsx?$/,""));return this.findFileWithExtension(i)}resolveModulePath(e,r){if(r.startsWith(xm)){let n=tt.posix.dirname(e),i=tt.posix.join(n,r);return this.findFileWithExtension(i)}for(let[n,i]of Object.entries(this.tsConfigPaths)){let s=n.replace(No,"");if(r.startsWith(s)){let o=r.slice(s.length);for(let a of i){let l=a.replace(No,o),c=this.findFileWithExtension(l);if(c)return c}}}return this.resolveBareImport(r)}packageDirCache=null;getWorkspacePackageDirs(){if(this.packageDirCache)return this.packageDirCache;let e=new Map;for(let r of this.getWorkspaceGlobs())this.collectPackageDirsForGlob(r,e);return this.packageDirCache=e,e}collectPackageDirsForGlob(e,r){let n=e.indexOf(No),i=(n>=0?e.slice(0,n):e).replace(/\/$/,""),s=Hi(this.workspaceRoot,i);if(!s||!pt.existsSync(s))return;let o;try{o=pt.readdirSync(s,{withFileTypes:!0})}catch{return}for(let a of o)this.registerPackageDirEntry(i,s,a,r)}registerPackageDirEntry(e,r,n,i){if(!n.isDirectory())return;let s=tt.join(r,n.name,oe.PACKAGE_JSON);if(pt.existsSync(s))try{let o=JSON.parse(pt.readFileSync(s,K));o.name&&i.set(o.name,tt.posix.join(e,n.name))}catch{}}getWorkspaceGlobs(){try{let e=Lo(this.workspaceRoot,sN);if(e){let n=/packages:\s*\n((?:\s*-\s+.+\n?)+)/.exec(e);if(n){let i=[...n[1].matchAll(/^\s*-\s+["']?([^"'\n#]+?)["']?\s*$/gm)].map(s=>s[1].trim());if(i.length>0)return i}}let r=Lo(this.workspaceRoot,oe.PACKAGE_JSON);if(r){let n=JSON.parse(r);if(Array.isArray(n.workspaces))return n.workspaces;if(Array.isArray(n.workspaces?.packages))return n.workspaces.packages}}catch{}return[]}resolveBareImport(e){let r=/^(@[^/]+\/[^/]+|[^/]+)(\/.*)?$/.exec(e);if(!r)return null;let n=r[1],i=r[2]?.slice(1),s=this.resolveWorkspaceSiblingImport(n,i);return s||this.resolveNodeModulesImport(n,i)}resolveWorkspaceSiblingImport(e,r){let n=this.getWorkspacePackageDirs().get(e);if(!n)return null;let i=r?tt.posix.join(n,r):tt.posix.join(n,aN,lN),s=this.findFileWithExtension(i);return s||this.findFileWithExtension(n)}resolveNodeModulesImport(e,r){try{let n=Lo(this.workspaceRoot,tt.join(at,e,oe.PACKAGE_JSON));if(!n)return null;let i=JSON.parse(n),s=r||i.module||i.main||oN,o=tt.posix.join(at,e,s);return Hi(this.workspaceRoot,o)?o:null}catch{return null}}static COMPILED_JS_EXTENSION_PATTERN=/\.(m|c)?jsx?$/;firstExisting(e,r=!1){for(let n of e){let i=Hi(this.workspaceRoot,n);if(!(!i||!pt.existsSync(i))&&!(r&&!pt.statSync(i).isFile()))return n}return null}findFileWithExtension(e){let r=this.firstExisting([e],!0);if(r)return r;let n=this.firstExisting(Um.map(i=>e+i));if(n)return n;if(t.COMPILED_JS_EXTENSION_PATTERN.test(e)){let i=e.replace(t.COMPILED_JS_EXTENSION_PATTERN,""),s=this.firstExisting(Um.map(o=>i+o));if(s)return s}return this.firstExisting(cN.map(i=>e+i))}};function un(t,e,r){if(!t.has(e))return e;let n=`${e}@L${r}`;if(!t.has(n))return n;let i=2;for(;t.has(`${n}#${i}`);)i++;return`${n}#${i}`}function Bi(t,e,r){return r?`${t}#${r}.${e}`:`${t}#${e}`}function pN(){return{total:0,resolved:0,selfDiscarded:0,unresolvable:0,external:0,unknownReceiver:0}}function gN(t){return{total:t.total,resolved:t.resolved,selfDiscarded:t.selfDiscarded,unresolvable:t.unresolvable,external:t.external,unknownReceiver:t.unknownReceiver,unresolved:t.total-t.resolved-t.selfDiscarded-t.unresolvable-t.external-t.unknownReceiver}}var Do=class{async persist(e){let{store:r,workspaceRoot:n,projectId:i,parsedResults:s,tags:o}=e;return r.withWriteLock(()=>this.persistLocked(r,n,i,s,o))}persistLocked(e,r,n,i,s){return e.withTransaction(()=>{let o=new Co(r);this.registerResolverFiles(o,i);let a=new Map,l=new Map,c={};this.upsertTags(e,s),e.graph.withFtsSyncSuspended(()=>{this.persistFileAndSymbolNodes(e,n,i,s,a,l)});let u=this.linkParsedResults(e,o,n,i,a,l,c),d=Object.keys(c).length>0?Ar(c):void 0;return{updatedCount:u,callResolution:d,callResolutionByFile:c}})}registerResolverFiles(e,r){for(let n of r){let i=[];n.data.functions&&i.push(...n.data.functions.map(s=>s.name)),n.data.classes&&i.push(...n.data.classes.map(s=>s.name)),n.data.variables&&i.push(...n.data.variables.map(s=>s.name)),e.registerFile(n.file,n.data.imports||[],[],i)}}upsertTags(e,r){for(let n of r)e.tags.upsertTag(n)}persistFileAndSymbolNodes(e,r,n,i,s,o){for(let a of n){e.graph.deleteNodesForPath(a.file),e.callSites.deleteForFile(r,a.file),e.callSites.insertMany(r,a.file,(a.data.calls??[]).map(p=>({targetFunction:p.targetFunction,startLine:p.startLine,startColumn:p.startColumn,calleeName:p.calleeName,receiverText:p.receiverText,calleeKind:p.calleeKind})));let l=e.graph.insertNode({projectId:r,name:a.file,type:Er.MODULE,description:"",pathPatterns:[a.file],nodeKey:a.file,contentHash:a.hash});s.set(a.file,l);let c=new Map;o.set(a.file,c),this.linkFileToTags(e,l,i);let u=new Set([a.file]);this.insertFunctionNodes(e,r,a,l,c,u),this.insertClassNodes(e,r,a,l,c,u),this.insertVariableNodes(e,r,a,l,c,u)}}linkFileToTags(e,r,n){for(let i of n){let s=e.tags.getIdByName(i);s!==void 0&&e.tags.linkNodeToTag(r,s)}}insertFunctionNodes(e,r,n,i,s,o){for(let a of n.data.functions??[]){let l=un(o,Bi(n.file,a.name,a.containerName),a.startLine);o.add(l);let c=e.graph.insertNode({projectId:r,name:a.name,type:Er.MODULE,description:"",pathPatterns:[n.file],nodeKey:l,contentHash:a.contentHash});s.set(a.name,c),e.graph.insertLink({sourceNodeId:i,targetNodeId:c,linkType:Oe.CONTAINS})}}insertClassNodes(e,r,n,i,s,o){for(let a of n.data.classes??[]){let l=un(o,`${n.file}#${a.name}`,a.startLine);o.add(l);let c=e.graph.insertNode({projectId:r,name:a.name,type:Er.MODULE,description:"",pathPatterns:[n.file],nodeKey:l,contentHash:a.contentHash});s.set(a.name,c),e.graph.insertLink({sourceNodeId:i,targetNodeId:c,linkType:Oe.CONTAINS})}}insertVariableNodes(e,r,n,i,s,o){for(let a of n.data.variables??[]){let l=un(o,`${n.file}#${a.name}`,a.startLine);o.add(l);let c=e.graph.insertNode({projectId:r,name:a.name,type:Er.MODULE,description:"",pathPatterns:[n.file],nodeKey:l,contentHash:a.contentHash});s.set(a.name,c),e.graph.insertLink({sourceNodeId:i,targetNodeId:c,linkType:Oe.CONTAINS})}}linkParsedResults(e,r,n,i,s,o,a){let l=0;for(let c of i){let u=s.get(c.file);if(!u)continue;let p=pN();this.linkParsedResultRelations(e,r,c,u,s,o,p),p.total>0&&(a[c.file]=gN(p)),e.files.upsertFile({projectId:n,filePath:c.file,contentHash:c.hash}),l++}return l}linkParsedResultRelations(e,r,n,i,s,o,a){let l=o.get(n.file);for(let c of n.data.calls??[])this.linkSymbolReference(e,r,n.file,i,l,s,o,c.sourceFunction,c.targetFunction,Oe.CALLS,!1,a,{calleeName:c.calleeName,receiverText:c.receiverText,calleeKind:c.calleeKind});for(let c of n.data.implements??[])this.linkSymbolReference(e,r,n.file,i,l,s,o,c.sourceClass,c.targetInterface,Oe.IMPLEMENTS,!0);for(let c of n.data.extends??[])this.linkSymbolReference(e,r,n.file,i,l,s,o,c.sourceClass,c.targetClass,Oe.EXTENDS,!0);for(let c of n.data.workerSpawns??[])this.linkWorkerSpawn(e,r,n.file,i,l,s,o,c.sourceFunction,c.targetPath);this.linkReexports(e,r,n,i,s,o)}linkReexports(e,r,n,i,s,o){for(let a of n.data.imports??[])a.viaReexport&&this.linkReexport(e,r,n.file,i,s,o,a.localName)}linkReexport(e,r,n,i,s,o,a){let l=r.resolveCall(n,a);if(!l)return;let c=this.resolveTargetNodeId(e,s,o,l.targetFile,l.targetSymbol);!c||c===i||e.graph.insertLink({sourceNodeId:i,targetNodeId:c,linkType:Oe.DEPENDS_ON})}linkWorkerSpawn(e,r,n,i,s,o,a,l,c){let u=r.resolveWorkerSpawnPath(n,c);if(!u)return;let p=this.resolveTargetNodeId(e,o,a,u,u);if(!p)return;let d=this.resolveSourceNodeId(s,l,i);p!==d&&e.graph.insertLink({sourceNodeId:d,targetNodeId:p,linkType:Oe.DEPENDS_ON})}isUnresolvableCallShape(e,r){let n=r?.calleeKind;return n==="arg-chain"||n==="computed"||!n&&e.includes("(")}resolveCallTarget(e,r,n,i){let s=i?.calleeKind;return(s==="member"||s==="this")&&i?.calleeName&&i.receiverText?e.resolveMemberCall(r,i.receiverText,i.calleeName):e.resolveCall(r,n)}classifyUnresolvedCall(e,r,n,i){let s=i?.calleeKind==="member"?i.receiverText:void 0;return e.isExternalBinding(r,s??n)?"external":s?this.classifyUnresolvedReceiver(e,r,s):i?.calleeKind!=="bare"?null:this.classifyUnresolvedBareCallee(e,r,n)}classifyUnresolvedReceiver(e,r,n){return e.hasBinding(r,n)||e.declaresLocal(r,n)?null:"unknownReceiver"}classifyUnresolvedBareCallee(e,r,n){return e.hasBinding(r,n)||e.declaresLocal(r,n)?null:"external"}linkSymbolReference(e,r,n,i,s,o,a,l,c,u,p=!1,d,f){if(d&&d.total++,this.isUnresolvableCallShape(c,f)){d&&d.unresolvable++;return}let m=this.resolveCallTarget(r,n,c,f),_=this.insertResolvedLink(e,m,c,p,s,l,i,o,a,u);if(!d)return;if(_==="linked"){d.resolved++;return}if(_==="self-discarded"){d.selfDiscarded++;return}let I=this.classifyUnresolvedCall(r,n,c,f);I==="external"?d.external++:I==="unknownReceiver"&&d.unknownReceiver++}insertResolvedLink(e,r,n,i,s,o,a,l,c,u){let p=r?this.resolveTargetNodeId(e,l,c,r.targetFile,r.targetSymbol):i?e.graph.findNodeByName(n)?.id:void 0;if(!p)return"no-target";let d=this.resolveSourceNodeId(s,o,a);return p===d?"self-discarded":(e.graph.insertLink({sourceNodeId:d,targetNodeId:p,linkType:u}),"linked")}resolveTargetNodeId(e,r,n,i,s){return n.get(i)?.get(s)??e.graph.findNodeIdByName(i,s)??r.get(i)??e.graph.findNodeIdByName(i,i)}resolveSourceNodeId(e,r,n){return(r&&r!==up?e?.get(r):void 0)??n}};import Vn from"fs/promises";import $i from"path";import{tracingChannel as fN,channel as hN}from"diagnostics_channel";var ze=hN("lru-cache:metrics"),Ki=fN("lru-cache"),mN=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Fu=()=>ze.hasSubscribers||Ki.hasSubscribers,Ym=new Set,Km=typeof process=="object"&&process?process:{},_N=(t,e,r,n)=>{typeof Km.emitWarning=="function"?Km.emitWarning(t,e,r,n):console.error(`[${r}] ${e}: ${t}`)},EN=t=>!Ym.has(t),Ur=t=>!!t&&t===Math.floor(t)&&t>0&&isFinite(t),$m=t=>Ur(t)?t<=Math.pow(2,8)?Uint8Array:t<=Math.pow(2,16)?Uint16Array:t<=Math.pow(2,32)?Uint32Array:t<=Number.MAX_SAFE_INTEGER?vo:null:null,vo=class extends Array{constructor(t){super(t),this.fill(0)}},SN=class Yi{heap;length;static#t=!1;static create(e){let r=$m(e);if(!r)return[];Yi.#t=!0;let n=new Yi(e,r);return Yi.#t=!1,n}constructor(e,r){if(!Yi.#t)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new r(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},Wm=class jm{#t;#s;#c;#P;#_;#M;#k;#E;get perf(){return this.#E}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;backgroundFetchSize;#o;#S;#i;#n;#e;#d;#g;#u;#a;#T;#l;#A;#R;#f;#h;#O;#G;#p;#D;static unsafeExposeInternals(e){return{starts:e.#R,ttls:e.#f,autopurgeTimers:e.#h,sizes:e.#A,keyMap:e.#i,keyList:e.#n,valList:e.#e,next:e.#d,prev:e.#g,get head(){return e.#u},get tail(){return e.#a},free:e.#T,isBackgroundFetch:r=>e.#r(r),backgroundFetch:(r,n,i,s)=>e.#H(r,n,i,s),moveToTail:r=>e.#F(r),indexes:r=>e.#y(r),rindexes:r=>e.#I(r),isStale:r=>e.#m(r)}}get max(){return this.#t}get maxSize(){return this.#s}get calculatedSize(){return this.#S}get size(){return this.#o}get fetchMethod(){return this.#M}get memoMethod(){return this.#k}get dispose(){return this.#c}get onInsert(){return this.#P}get disposeAfter(){return this.#_}constructor(e){let{max:r=0,ttl:n,ttlResolution:i=1,ttlAutopurge:s,updateAgeOnGet:o,updateAgeOnHas:a,allowStale:l,dispose:c,onInsert:u,disposeAfter:p,noDisposeOnSet:d,noUpdateTTL:f,maxSize:m=0,maxEntrySize:_=0,sizeCalculation:I,fetchMethod:L,memoMethod:N,noDeleteOnFetchRejection:w,noDeleteOnStaleGet:q,allowStaleOnFetchRejection:Q,allowStaleOnFetchAbort:H,ignoreFetchAbort:ne,backgroundFetchSize:M=1,perf:ee}=e;if(this.backgroundFetchSize=M,ee!==void 0&&typeof ee?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(this.#E=ee??mN,r!==0&&!Ur(r))throw new TypeError("max option must be a nonnegative integer");let _e=r?$m(r):Array;if(!_e)throw new Error("invalid max value: "+r);if(this.#t=r,this.#s=m,this.maxEntrySize=_||this.#s,this.sizeCalculation=I,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(N!==void 0&&typeof N!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#k=N,L!==void 0&&typeof L!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#M=L,this.#G=!!L,this.#i=new Map,this.#n=Array.from({length:r}).fill(void 0),this.#e=Array.from({length:r}).fill(void 0),this.#d=new _e(r),this.#g=new _e(r),this.#u=0,this.#a=0,this.#T=SN.create(r),this.#o=0,this.#S=0,typeof c=="function"&&(this.#c=c),typeof u=="function"&&(this.#P=u),typeof p=="function"?(this.#_=p,this.#l=[]):(this.#_=void 0,this.#l=void 0),this.#O=!!this.#c,this.#D=!!this.#P,this.#p=!!this.#_,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!f,this.noDeleteOnFetchRejection=!!w,this.allowStaleOnFetchRejection=!!Q,this.allowStaleOnFetchAbort=!!H,this.ignoreFetchAbort=!!ne,this.maxEntrySize!==0){if(this.#s!==0&&!Ur(this.#s))throw new TypeError("maxSize must be a positive integer if specified");if(!Ur(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#z()}if(this.allowStale=!!l,this.noDeleteOnStaleGet=!!q,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!a,this.ttlResolution=Ur(i)||i===0?i:1,this.ttlAutopurge=!!s,this.ttl=n||0,this.ttl){if(!Ur(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#B()}if(this.#t===0&&this.ttl===0&&this.#s===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#t&&!this.#s){let C="LRU_CACHE_UNBOUNDED";EN(C)&&(Ym.add(C),_N("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",C,jm))}}getRemainingTTL(e){return this.#i.has(e)?1/0:0}#B(){let e=new vo(this.#t),r=new vo(this.#t);this.#f=e,this.#R=r;let n=this.ttlAutopurge?Array.from({length:this.#t}):void 0;this.#h=n,this.#K=(l,c,u=this.#E.now())=>{r[l]=c!==0?u:0,e[l]=c,i(l,c)},this.#v=l=>{r[l]=e[l]!==0?this.#E.now():0,i(l,e[l])};let i=this.ttlAutopurge?(l,c)=>{if(n?.[l]&&(clearTimeout(n[l]),n[l]=void 0),c&&c!==0&&n){let u=setTimeout(()=>{this.#m(l)?(this.#L(this.#n[l],"expire"),n[l]=void 0):i(l,a(l))},c+1);u.unref&&u.unref(),n[l]=u}}:()=>{};this.#N=(l,c)=>{if(e[c]){let u=e[c],p=r[c];if(!u||!p)return;l.ttl=u,l.start=p,l.now=s||o();let d=l.now-p;l.remainingTTL=u-d}};let s=0,o=()=>{let l=this.#E.now();if(this.ttlResolution>0){s=l;let c=setTimeout(()=>s=0,this.ttlResolution);c.unref&&c.unref()}return l};this.getRemainingTTL=l=>{let c=this.#i.get(l);return c===void 0?0:a(c)};let a=l=>{let c=e[l],u=r[l];if(!c||!u)return 1/0;let p=(s||o())-u;return c-p};this.#m=l=>{let c=r[l],u=e[l];return!!u&&!!c&&(s||o())-c>u}}#v=()=>{};#N=()=>{};#K=()=>{};#m=()=>!1;#z(){let e=new vo(this.#t);this.#S=0,this.#A=e,this.#b=r=>{this.#S-=e[r],e[r]=0},this.#Y=(r,n,i,s)=>{if(!Ur(i)){if(this.#r(n))return this.backgroundFetchSize;if(s){if(typeof s!="function")throw new TypeError("sizeCalculation must be a function");if(i=s(n,r),!Ur(i))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 i},this.#x=(r,n,i)=>{if(e[r]=n,this.#s){let s=this.#s-e[r];for(;this.#S>s;)this.#U(!0)}this.#S+=e[r],i&&(i.entrySize=n,i.totalCalculatedSize=this.#S)}}#b=e=>{};#x=(e,r,n)=>{};#Y=(e,r,n,i)=>{if(n||i)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#y({allowStale:e=this.allowStale}={}){if(this.#o)for(let r=this.#a;this.#$(r)&&((e||!this.#m(r))&&(yield r),r!==this.#u);)r=this.#g[r]}*#I({allowStale:e=this.allowStale}={}){if(this.#o)for(let r=this.#u;this.#$(r)&&((e||!this.#m(r))&&(yield r),r!==this.#a);)r=this.#d[r]}#$(e){return e!==void 0&&this.#i.get(this.#n[e])===e}*entries(){for(let e of this.#y())this.#e[e]!==void 0&&this.#n[e]!==void 0&&!this.#r(this.#e[e])&&(yield[this.#n[e],this.#e[e]])}*rentries(){for(let e of this.#I())this.#e[e]!==void 0&&this.#n[e]!==void 0&&!this.#r(this.#e[e])&&(yield[this.#n[e],this.#e[e]])}*keys(){for(let e of this.#y()){let r=this.#n[e];r!==void 0&&!this.#r(this.#e[e])&&(yield r)}}*rkeys(){for(let e of this.#I()){let r=this.#n[e];r!==void 0&&!this.#r(this.#e[e])&&(yield r)}}*values(){for(let e of this.#y())this.#e[e]!==void 0&&!this.#r(this.#e[e])&&(yield this.#e[e])}*rvalues(){for(let e of this.#I())this.#e[e]!==void 0&&!this.#r(this.#e[e])&&(yield this.#e[e])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(e,r={}){for(let n of this.#y()){let i=this.#e[n],s=this.#r(i)?i.__staleWhileFetching:i;if(s!==void 0&&e(s,this.#n[n],this))return this.#w(this.#n[n],r)}}forEach(e,r=this){for(let n of this.#y()){let i=this.#e[n],s=this.#r(i)?i.__staleWhileFetching:i;s!==void 0&&e.call(r,s,this.#n[n],this)}}rforEach(e,r=this){for(let n of this.#I()){let i=this.#e[n],s=this.#r(i)?i.__staleWhileFetching:i;s!==void 0&&e.call(r,s,this.#n[n],this)}}purgeStale(){let e=!1;for(let r of this.#I({allowStale:!0}))this.#m(r)&&(this.#L(this.#n[r],"expire"),e=!0);return e}info(e){let r=this.#i.get(e);if(r===void 0)return;let n=this.#e[r],i=this.#r(n)?n.__staleWhileFetching:n;if(i===void 0)return;let s={value:i};if(this.#f&&this.#R){let o=this.#f[r],a=this.#R[r];if(o&&a){let l=o-(this.#E.now()-a);s.ttl=l,s.start=Date.now()}}return this.#A&&(s.size=this.#A[r]),s}dump(){let e=[];for(let r of this.#y({allowStale:!0})){let n=this.#n[r],i=this.#e[r],s=this.#r(i)?i.__staleWhileFetching:i;if(s===void 0||n===void 0)continue;let o={value:s};if(this.#f&&this.#R){o.ttl=this.#f[r];let a=this.#E.now()-this.#R[r];o.start=Math.floor(Date.now()-a)}this.#A&&(o.size=this.#A[r]),e.unshift([n,o])}return e}load(e){this.clear();for(let[r,n]of e){if(n.start){let i=Date.now()-n.start;n.start=this.#E.now()-i}this.#C(r,n.value,n)}}set(e,r,n={}){let{status:i=ze.hasSubscribers?{}:void 0}=n;n.status=i,i&&(i.op="set",i.key=e,r!==void 0&&(i.value=r),i.cache=this);let s=this.#C(e,r,n);return i&&ze.hasSubscribers&&ze.publish(i),s}#C(e,r,n,i){let{ttl:s=this.ttl,start:o,noDisposeOnSet:a=this.noDisposeOnSet,sizeCalculation:l=this.sizeCalculation,status:c}=n,u=this.#r(r);if(r===void 0)return c&&(c.set="deleted"),this.delete(e),this;let{noUpdateTTL:p=this.noUpdateTTL}=n;c&&!u&&(c.value=r);let d=this.#Y(e,r,n.size||0,l,c);if(this.maxEntrySize&&d>this.maxEntrySize)return this.#L(e,"set"),c&&(c.set="miss",c.maxEntrySizeExceeded=!0),this;let f=this.#o===0?void 0:this.#i.get(e);if(f===void 0)f=this.#o===0?this.#a:this.#T.length!==0?this.#T.pop():this.#o===this.#t?this.#U(!1):this.#o,this.#n[f]=e,this.#e[f]=r,this.#i.set(e,f),this.#d[this.#a]=f,this.#g[f]=this.#a,this.#a=f,this.#o++,this.#x(f,d,c),c&&(c.set="add"),p=!1,this.#D&&!u&&this.#P?.(r,e,"add");else{this.#F(f);let m=this.#e[f];if(r!==m){if(!a)if(this.#r(m)){m!==i&&m.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:_}=m;_!==void 0&&_!==r&&(this.#O&&this.#c?.(_,e,"set"),this.#p&&this.#l?.push([_,e,"set"]))}else this.#O&&this.#c?.(m,e,"set"),this.#p&&this.#l?.push([m,e,"set"]);if(this.#b(f),this.#x(f,d,c),this.#e[f]=r,!u){let _=m&&this.#r(m)?m.__staleWhileFetching:m,I=_===void 0?"add":r!==_?"replace":"update";c&&(c.set=I,_!==void 0&&(c.oldValue=_)),this.#D&&this.onInsert?.(r,e,I)}}else u||(c&&(c.set="update"),this.#D&&this.onInsert?.(r,e,"update"))}if(s!==0&&!this.#f&&this.#B(),this.#f&&(p||this.#K(f,s,o),c&&this.#N(c,f)),!a&&this.#p&&this.#l){let m=this.#l,_;for(;_=m?.shift();)this.#_?.(..._)}return this}pop(){try{for(;this.#o;){let e=this.#e[this.#u];if(this.#U(!0),this.#r(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(e!==void 0)return e}}finally{if(this.#p&&this.#l){let e=this.#l,r;for(;r=e?.shift();)this.#_?.(...r)}}}#U(e){let r=this.#u,n=this.#n[r],i=this.#e[r],s=this.#r(i);s&&i.__abortController.abort(new Error("evicted"));let o=s?i.__staleWhileFetching:i;return(this.#O||this.#p)&&o!==void 0&&(this.#O&&this.#c?.(o,n,"evict"),this.#p&&this.#l?.push([o,n,"evict"])),this.#b(r),this.#h?.[r]&&(clearTimeout(this.#h[r]),this.#h[r]=void 0),e&&(this.#n[r]=void 0,this.#e[r]=void 0,this.#T.push(r)),this.#o===1?(this.#u=this.#a=0,this.#T.length=0):this.#u=this.#d[r],this.#i.delete(n),this.#o--,r}has(e,r={}){let{status:n=ze.hasSubscribers?{}:void 0}=r;r.status=n,n&&(n.op="has",n.key=e,n.cache=this);let i=this.#J(e,r);return ze.hasSubscribers&&ze.publish(n),i}#J(e,r={}){let{updateAgeOnHas:n=this.updateAgeOnHas,status:i}=r,s=this.#i.get(e);if(s!==void 0){let o=this.#e[s];if(this.#r(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#m(s))i&&(i.has="stale",this.#N(i,s));else return n&&this.#v(s),i&&(i.has="hit",this.#N(i,s)),!0}else i&&(i.has="miss");return!1}peek(e,r={}){let{status:n=Fu()?{}:void 0}=r;n&&(n.op="peek",n.key=e,n.cache=this),r.status=n;let i=this.#q(e,r);return ze.hasSubscribers&&ze.publish(n),i}#q(e,r){let{status:n,allowStale:i=this.allowStale}=r,s=this.#i.get(e);if(s===void 0||!i&&this.#m(s)){n&&(n.peek=s===void 0?"miss":"stale");return}let o=this.#e[s],a=this.#r(o)?o.__staleWhileFetching:o;return n&&(a!==void 0?(n.peek="hit",n.value=a):n.peek="miss"),a}#H(e,r,n,i){let s=r===void 0?void 0:this.#e[r];if(this.#r(s))return s;let o=new AbortController,{signal:a}=n;a?.addEventListener("abort",()=>o.abort(a.reason),{signal:o.signal});let l={signal:o.signal,options:n,context:i},c=(_,I=!1)=>{let{aborted:L}=o.signal,N=n.ignoreFetchAbort&&_!==void 0,w=n.ignoreFetchAbort||!!(n.allowStaleOnFetchAbort&&_!==void 0);if(n.status&&(L&&!I?(n.status.fetchAborted=!0,n.status.fetchError=o.signal.reason,N&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),L&&!N&&!I)return p(o.signal.reason,w);let q=f,Q=this.#e[r];return(Q===f||Q===void 0&&N&&I)&&(_===void 0?q.__staleWhileFetching!==void 0?this.#e[r]=q.__staleWhileFetching:this.#L(e,"fetch"):(n.status&&(n.status.fetchUpdated=!0),this.#C(e,_,l.options,q))),_},u=_=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=_),p(_,!1)),p=(_,I)=>{let{aborted:L}=o.signal,N=L&&n.allowStaleOnFetchAbort,w=N||n.allowStaleOnFetchRejection,q=w||n.noDeleteOnFetchRejection,Q=f;if(this.#e[r]===f&&(!q||!I&&Q.__staleWhileFetching===void 0?this.#L(e,"fetch"):N||(this.#e[r]=Q.__staleWhileFetching)),w)return n.status&&Q.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),Q.__staleWhileFetching;if(Q.__returned===Q)throw _},d=(_,I)=>{let L=this.#M?.(e,s,l);o.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(_(void 0),n.allowStaleOnFetchAbort&&(_=N=>c(N,!0)))}),L&&L instanceof Promise?L.then(N=>_(N===void 0?void 0:N),I):L!==void 0&&_(L)};n.status&&(n.status.fetchDispatched=!0);let f=new Promise(d).then(c,u),m=Object.assign(f,{__abortController:o,__staleWhileFetching:s,__returned:void 0});return r===void 0?(this.#C(e,m,{...l.options,status:void 0}),r=this.#i.get(e)):this.#e[r]=m,m}#r(e){if(!this.#G)return!1;let r=e;return!!r&&r instanceof Promise&&r.hasOwnProperty("__staleWhileFetching")&&r.__abortController instanceof AbortController}fetch(e,r={}){let n=Ki.hasSubscribers,{status:i=Fu()?{}:void 0}=r;r.status=i,i&&r.context&&(i.context=r.context);let s=this.#W(e,r);return i&&n&&(i.trace=!0,Ki.tracePromise(()=>s,i).catch(()=>{})),s}async#W(e,r={}){let{allowStale:n=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:s=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:l=0,sizeCalculation:c=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:p=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:f=this.ignoreFetchAbort,allowStaleOnFetchAbort:m=this.allowStaleOnFetchAbort,context:_,forceRefresh:I=!1,status:L,signal:N}=r;if(L&&(L.op="fetch",L.key=e,I&&(L.forceRefresh=!0),L.cache=this),!this.#G)return L&&(L.fetch="get"),this.#w(e,{allowStale:n,updateAgeOnGet:i,noDeleteOnStaleGet:s,status:L});let w={allowStale:n,updateAgeOnGet:i,noDeleteOnStaleGet:s,ttl:o,noDisposeOnSet:a,size:l,sizeCalculation:c,noUpdateTTL:u,noDeleteOnFetchRejection:p,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:m,ignoreFetchAbort:f,status:L,signal:N},q=this.#i.get(e);if(q===void 0){L&&(L.fetch="miss");let Q=this.#H(e,q,w,_);return Q.__returned=Q}else{let Q=this.#e[q];if(this.#r(Q)){let ee=n&&Q.__staleWhileFetching!==void 0;return L&&(L.fetch="inflight",ee&&(L.returnedStale=!0)),ee?Q.__staleWhileFetching:Q.__returned=Q}let H=this.#m(q);if(!I&&!H)return L&&(L.fetch="hit"),this.#F(q),i&&this.#v(q),L&&this.#N(L,q),Q;let ne=this.#H(e,q,w,_),M=ne.__staleWhileFetching!==void 0&&n;return L&&(L.fetch=H?"stale":"refresh",M&&H&&(L.returnedStale=!0)),M?ne.__staleWhileFetching:ne.__returned=ne}}forceFetch(e,r={}){let n=Ki.hasSubscribers,{status:i=Fu()?{}:void 0}=r;r.status=i,i&&r.context&&(i.context=r.context);let s=this.#Q(e,r);return i&&n&&(i.trace=!0,Ki.tracePromise(()=>s,i).catch(()=>{})),s}async#Q(e,r={}){let n=await this.#W(e,r);if(n===void 0)throw new Error("fetch() returned undefined");return n}memo(e,r={}){let{status:n=ze.hasSubscribers?{}:void 0}=r;r.status=n,n&&(n.op="memo",n.key=e,r.context&&(n.context=r.context),n.cache=this);let i=this.#X(e,r);return n&&(n.value=i),ze.hasSubscribers&&ze.publish(n),i}#X(e,r={}){let n=this.#k;if(!n)throw new Error("no memoMethod provided to constructor");let{context:i,status:s,forceRefresh:o,...a}=r;s&&o&&(s.forceRefresh=!0);let l=this.#w(e,a),c=o||l===void 0;if(s&&(s.memo=c?"miss":"hit",c||(s.value=l)),!c)return l;let u=n(e,l,{options:a,context:i});return s&&(s.value=u),this.#C(e,u,a),u}get(e,r={}){let{status:n=ze.hasSubscribers?{}:void 0}=r;r.status=n,n&&(n.op="get",n.key=e,n.cache=this);let i=this.#w(e,r);return n&&(i!==void 0&&(n.value=i),ze.hasSubscribers&&ze.publish(n)),i}#w(e,r={}){let{allowStale:n=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:s=this.noDeleteOnStaleGet,status:o}=r,a=this.#i.get(e);if(a===void 0){o&&(o.get="miss");return}let l=this.#e[a],c=this.#r(l);return o&&this.#N(o,a),this.#m(a)?c?(o&&(o.get="stale-fetching"),n&&l.__staleWhileFetching!==void 0?(o&&(o.returnedStale=!0),l.__staleWhileFetching):void 0):(s||this.#L(e,"expire"),o&&(o.get="stale"),n?(o&&(o.returnedStale=!0),l):void 0):(o&&(o.get=c?"fetching":"hit"),this.#F(a),i&&this.#v(a),c?l.__staleWhileFetching:l)}#j(e,r){this.#g[r]=e,this.#d[e]=r}#F(e){e!==this.#a&&(e===this.#u?this.#u=this.#d[e]:this.#j(this.#g[e],this.#d[e]),this.#j(this.#a,e),this.#a=e)}delete(e){return this.#L(e,"delete")}#L(e,r){ze.hasSubscribers&&ze.publish({op:"delete",delete:r,key:e,cache:this});let n=!1;if(this.#o!==0){let i=this.#i.get(e);if(i!==void 0)if(this.#h?.[i]&&(clearTimeout(this.#h[i]),this.#h[i]=void 0),n=!0,this.#o===1)this.#V(r);else{this.#b(i);let s=this.#e[i];if(this.#r(s)?s.__abortController.abort(new Error("deleted")):(this.#O||this.#p)&&(this.#O&&this.#c?.(s,e,r),this.#p&&this.#l?.push([s,e,r])),this.#i.delete(e),this.#n[i]=void 0,this.#e[i]=void 0,i===this.#a)this.#a=this.#g[i];else if(i===this.#u)this.#u=this.#d[i];else{let o=this.#g[i];this.#d[o]=this.#d[i];let a=this.#d[i];this.#g[a]=this.#g[i]}this.#o--,this.#T.push(i)}}if(this.#p&&this.#l?.length){let i=this.#l,s;for(;s=i?.shift();)this.#_?.(...s)}return n}clear(){return this.#V("delete")}#V(e){for(let r of this.#I({allowStale:!0})){let n=this.#e[r];if(this.#r(n))n.__abortController.abort(new Error("deleted"));else{let i=this.#n[r];this.#O&&this.#c?.(n,i,e),this.#p&&this.#l?.push([n,i,e])}}if(this.#i.clear(),this.#e.fill(void 0),this.#n.fill(void 0),this.#f&&this.#R){this.#f.fill(0),this.#R.fill(0);for(let r of this.#h??[])r!==void 0&&clearTimeout(r);this.#h?.fill(void 0)}if(this.#A&&this.#A.fill(0),this.#u=0,this.#a=0,this.#T.length=0,this.#S=0,this.#o=0,this.#p&&this.#l){let r=this.#l,n;for(;n=r?.shift();)this.#_?.(...n)}}};var TN="tmp",dr={INITIALIZED:"TempFileManager initialized",INIT_FAILED:"Failed to initialize TempFileManager",FILE_TRACKED:"File tracked",TRACK_FAILED:"Failed to track file",ACCESS_FAILED:"Failed to access file",FILE_REMOVED:"File removed",CLEANUP_FAILED:"Cleanup failed",CLEANUP_COMPLETED:"Temp directory cleanup completed",CLEANUP_ERROR:"Cleanup error"},bo=class{constructor(e,r=fe(),n=1024*1024*1024,i=14400*1e3,s=1800*1e3){this.logger=r;let o=$i.resolve(e);this.tempDir=$i.join(o,he,TN),this.ttlMs=i,this.lruCache=new Wm({max:1e4,maxSize:n,sizeCalculation:a=>a.sizeBytes,ttl:i,allowStale:!1})}logger;tempDir;lruCache;cleanupInterval=null;concurrencyLimit=en(5);ttlMs;async initialize(){try{await Vn.mkdir(this.tempDir,{recursive:!0});let e=$i.dirname($i.dirname(this.tempDir)),[r,n]=await Promise.all([Vn.realpath(e),Vn.realpath(this.tempDir)]);if(!n.startsWith(r+$i.sep))throw new S(O.FS_PATH_TRAVERSAL,`Resolved temp directory "${n}" escapes workspace root "${r}" \u2014 possible path traversal via symlink`);this.logger.info(dr.INITIALIZED,{tempDir:this.tempDir}),this.startCleanupSchedule(1800*1e3)}catch(e){throw e instanceof S||this.logger.error(dr.INIT_FAILED,{error:e instanceof Error?e.message:String(e)}),e}}async trackFile(e){return this.concurrencyLimit(async()=>{try{let r=await Vn.stat(e),n={filePath:e,createdAt:Date.now(),lastAccessedAt:Date.now(),sizeBytes:r.size};this.lruCache.set(e,n),this.logger.debug(dr.FILE_TRACKED,{filePath:e,sizeBytes:r.size})}catch(r){this.logger.warn(dr.TRACK_FAILED,{filePath:e,error:r instanceof Error?r.message:String(r)})}})}async accessFile(e){return this.concurrencyLimit(async()=>{try{let r=this.lruCache.get(e);return r&&(r.lastAccessedAt=Date.now(),this.lruCache.set(e,r)),await Vn.readFile(e,K)}catch(r){return this.logger.warn(dr.ACCESS_FAILED,{filePath:e,error:r instanceof Error?r.message:String(r)}),null}})}async removeFileSync(e){try{await Vn.unlink(e),this.logger.debug(dr.FILE_REMOVED,{filePath:e})}catch(r){if(r?.code!==fs)throw r}}startCleanupSchedule(e){this.cleanupInterval=setInterval(()=>{this.cleanup().catch(r=>{this.logger.error(dr.CLEANUP_FAILED,{error:r instanceof Error?r.message:String(r)})})},e),this.cleanupInterval.unref()}async cleanup(){return this.concurrencyLimit(async()=>{try{let e=Date.now(),r=[];for(let[n,i]of this.lruCache.entries())e-i.lastAccessedAt>this.ttlMs&&r.push(n);for(let n of r)this.lruCache.delete(n),await this.removeFileSync(n);this.logger.info(dr.CLEANUP_COMPLETED,{removedCount:r.length,cacheSize:this.lruCache.size})}catch(e){this.logger.error(dr.CLEANUP_ERROR,{error:e instanceof Error?e.message:String(e)})}})}stopCleanup(){this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null)}getTempDirPath(){return this.tempDir}getCacheSize(){return this.lruCache.size}getTotalSize(){let e=0;for(let r of this.lruCache.values())e+=r.sizeBytes;return e}};var wo={INVALID_LIMIT_FALLBACK:"Ignoring invalid query limit, falling back to default",SEARCHED_LOCAL_KNOWLEDGE_GRAPH:"Searched local knowledge graph",GET_CONTEXT_FAILED:"getContext() failed during query(), falling back to null context",linkedTo:t=>`Linked to ${t}`},AN=new Set(["a","an","and","are","can","do","does","for","from","how","i","in","is","it","me","of","on","or","show","that","the","this","to","what","when","where","which","who","why","with"]),RN=5,ON=25;function yN(t){return Math.max(t*RN,ON)}function Vm(t,e){return e.length<=1?t:t.map(r=>({row:r,coverage:e.reduce((n,i)=>i.has(r.id)?n+1:n,0)})).sort((r,n)=>n.coverage-r.coverage).map(({row:r})=>r)}var Fo=class{constructor(e=fe()){this.logger=e}logger;extractKeywords(e){let r=e.split(/[^\w./-]+/).map(n=>n.trim()).filter(n=>n.length>0&&!AN.has(n.toLowerCase()));return Array.from(new Set(r))}getContext(e,r){let n=e.graph.findNodeByName(r);if(!n)return null;let i=e.graph.getIncomingRelations(n.id).filter(a=>a.linkType!==Oe.CONTAINS).map(({name:a,linkType:l})=>({name:a,linkType:l})),s=e.graph.getOutgoingRelations(n.id).filter(a=>a.linkType!==Oe.CONTAINS).map(({name:a,linkType:l})=>({name:a,linkType:l})),o=Ei(e,n.filePath,i.length===0,s.length===0);return{incoming:i,outgoing:s,...o?{tierBCoverage:o}:{}}}search(e,r,n=10){n!==void 0&&(!Number.isInteger(n)||n<=0)&&(this.logger.warn(wo.INVALID_LIMIT_FALLBACK,{target:r,invalidLimit:n,fallback:10}),n=10);let i=new Map,s=l=>{let c=`${l.layer}:${l.id}`,u=i.get(c);(!u||l.score>u.score)&&i.set(c,l)},o=this.extractKeywords(r);if(o.length>0){let l=yN(n),c=()=>o.map(f=>new Set(e.fts.searchL2Nodes([f],l).map(m=>m.id))),u=()=>o.map(f=>new Set(e.fts.searchL3Nodes([f],l).map(m=>m.id)));Vm(e.fts.searchL2Nodes(o,l),o.length>1?c():[]).slice(0,n).forEach((f,m)=>s({layer:Xr.L2,id:f.id,title:f.name,content:f.description,score:.9-m*.01,matchType:"keyword"})),Vm(e.fts.searchL3Nodes(o,l),o.length>1?u():[]).slice(0,n).forEach((f,m)=>s({layer:Xr.L3,id:f.id,title:f.title,content:f.content,score:.85-m*.01,matchType:"keyword"}))}let a=r.trim();if(a){let l=e.graph.findNodeByName(a);l&&(s({layer:Xr.L2,id:l.id,title:l.name,content:null,score:.95,matchType:"exact"}),[...e.graph.getOutgoingEdges(l.id),...e.graph.getIncomingEdges(l.id)].slice(0,n).forEach((u,p)=>s({layer:Xr.L2,id:u.id,title:u.name,content:wo.linkedTo(l.name),score:.7-p*.01,matchType:"neighbor"})))}return this.logger.debug(wo.SEARCHED_LOCAL_KNOWLEDGE_GRAPH,{target:r,resultCount:i.size}),Array.from(i.values()).sort((l,c)=>c.score-l.score).slice(0,n).map(({score:l,...c})=>c)}query(e,r,n=10){let i=this.search(e,r,n),s=i.find(c=>c.layer===Xr.L2),o=i.filter(c=>c.layer===Xr.L3),a=null;try{a=this.getContext(e,r)}catch(c){this.logger.debug(wo.GET_CONTEXT_FAILED,{target:r,error:c instanceof Error?c.message:String(c)}),a=null}let l=s?e.graph.findNodeByName(s.title):void 0;return{l2:s?{name:s.title,type:l?.type??"",filePath:l?.filePath,matchType:s.matchType}:null,l3:o.map(c=>this.toL3Entry(e,c)),context:a}}toL3Entry(e,r){let n=e.l3.getById(r.id);return n?{title:r.title,content:r.content,id:n.id,nodeType:n.node_type,source:n.source,confidence:n.confidence,commitHash:n.commit_hash,validityStatus:n.validity_status,createdAt:n.created_at}:{title:r.title,content:r.content}}};var NN=2e3,CN="(ungrouped)",PN=".",Mo=class{build(e,r={}){let n=e.l2Rows.map(w=>({id:w.id,name:w.name,filePath:UN(w.path_patterns),type:w.type})),i=e.linkRows.map(w=>({sourceNodeId:w.source_node_id,targetNodeId:w.target_node_id,linkType:w.link_type,commitSha:w.commit_sha??void 0,diffSummary:w.diff_summary??void 0})),s=e.l3Rows.map(w=>({id:w.id,l2NodeId:w.l2_node_id,title:w.title,content:w.content??void 0,nodeType:w.node_type,confidence:w.confidence??void 0,validityStatus:w.validity_status,sourceCommits:HN(w.source_commits)})),o=e.tagRows,a=DN(n),l=vN(i),c=bN(o),u=r.maxNodes??NN,p=n.length+s.length,d=wN(r,p,u),f=d?GN(n,i,s,l,a):kN(n,i,s,l,a),m=f.nodes,_=f.links,I=new Set(m.map(w=>w.id)),L=_.filter(w=>I.has(w.source)&&I.has(w.target)),N=FN(m,c);return MN(m,L),{topologyVersion:2,generatedAt:new Date().toISOString(),workspaceRoot:e.workspaceRoot,collapsed:d,nodes:m,links:L,groups:N,stats:{nodeCount:m.length,linkCount:L.length,groupCount:N.length,foldedLinkCount:f.foldedLinkCount??0}}}};function DN(t){let e=new Map;for(let r of t)e.set(String(r.id),r.filePath);return e}function vN(t){let e=new Map;for(let r of t)r.linkType===Oe.CONTAINS&&e.set(String(r.targetNodeId),String(r.sourceNodeId));return e}function bN(t){let e=new Map;for(let r of t){let n=String(r.l2NodeId),i=e.get(n);i?i.push(r.name):e.set(n,[r.name])}return e}function wN(t,e,r){return t.collapse===El.FILE||t.collapse!==El.SYMBOL&&e>r}function FN(t,e){let r=new Map,n=[];for(let i of t){let s=xN(i.filePath),o=r.get(s);if(o===void 0&&(o=n.length,r.set(s,o),n.push({id:o,label:s,source:Yd.DIRECTORY,count:0})),i.group=o,n[o].count++,i.kind===Ft.FILE){let a=e.get(i.id.slice("l2:".length));a&&a.length&&(i.tags=a)}}return n}function MN(t,e){let r=new Map;for(let n of e)r.set(n.source,(r.get(n.source)??0)+1),r.set(n.target,(r.get(n.target)??0)+1);for(let n of t)n.degree=r.get(n.id)??0}function kN(t,e,r,n,i){let s=t.map(a=>({id:yt(a.id),label:a.name,kind:n.has(String(a.id))?Ft.SYMBOL:Ft.FILE,group:0,filePath:i.get(String(a.id)),degree:0,l2Type:a.type})),o=e.map(a=>({source:yt(a.sourceNodeId),target:yt(a.targetNodeId),linkType:a.linkType,confidence:1,commitSha:a.commitSha,diffSummary:a.diffSummary}));return zm(s,o,r,i),{nodes:s,links:o,foldedLinkCount:0}}function GN(t,e,r,n,i){let s=u=>{let p=String(u),d=new Set([p]);for(;;){let f=n.get(p);if(f===void 0||d.has(f))return p;d.add(f),p=f}},o=t.filter(u=>!n.has(String(u.id))).map(u=>({id:yt(u.id),label:u.name,kind:Ft.FILE,group:0,filePath:i.get(String(u.id)),degree:0,l2Type:u.type})),a=[],l=new Set,c=0;for(let u of e){if(u.linkType===Oe.CONTAINS)continue;let p=s(u.sourceNodeId),d=s(u.targetNodeId);if(p===d){c++;continue}let f=p+"|"+d+"|"+u.linkType;l.has(f)||(l.add(f),a.push({source:yt(p),target:yt(d),linkType:u.linkType,confidence:1,commitSha:u.commitSha,diffSummary:u.diffSummary}))}return zm(o,a,r,i),{nodes:o,links:a,foldedLinkCount:c}}function zm(t,e,r,n){let i=new Set(t.map(s=>s.id));for(let s of r){let o=yt(s.l2NodeId);i.has(o)&&(t.push({id:Ml(s.id),label:s.title,kind:Ft.DECISION,group:0,filePath:n.get(String(s.l2NodeId)),parent:o,degree:0,decisionType:s.nodeType,content:s.content,confidence:s.confidence,validityStatus:s.validityStatus,sourceCommits:s.sourceCommits}),e.push({source:Ml(s.id),target:o,linkType:Oe.DECISION,confidence:1}))}}function xN(t){if(!t)return CN;let r=t.split("\\").join("/").split("/").filter(Boolean);return r.length<=1?PN:r.slice(0,Math.min(2,r.length-1)).join("/")}function UN(t){if(!(typeof t!="string"||t.length===0)){try{let e=JSON.parse(t);if(Array.isArray(e)&&e.length>0)return String(e[0])}catch(e){}return t}}function HN(t){if(!(typeof t!="string"||t.length===0))try{let e=JSON.parse(t);if(Array.isArray(e)&&e.length>0)return e.map(String)}catch(e){}}import*as qm from"path";import*as Qm from"fs";import{Parser as Jm,Language as BN}from"web-tree-sitter";var ko={DETECTOR_FAILED:"SemanticDiffDetector failed; treating file as unclassified for Tier B",NO_GRAMMAR_AVAILABLE:"No tree-sitter grammar available for semantic-diff classification; changed file will still be re-parsed",GRAMMAR_LOAD_FAILED:"Failed to load tree-sitter grammar for semantic-diff classification"};var Go=class{constructor(e=fe()){this.logger=e}logger;registryPromise;parserInitPromise;detectors=new Map;async analyzeFile(e){let{filePath:r,oldContent:n,newContent:i,changedLineRanges:s}=e;if(s.length===0)return[];let o=await this.getDetectorForFile(r);if(!o)return[];try{return o.analyze(n,i,s).map(l=>({nodeId:l.nodeId,nodeType:l.nodeType,pruningLevel:l.pruningLevel===1?1:0,newRange:l.newRange}))}catch(a){return this.logger.warn(ko.DETECTOR_FAILED,{filePath:r,error:a instanceof Error?a.message:String(a)}),[]}}async getDetectorForFile(e){let r=await this.getRegistry(),n=qm.extname(e),i=r.getProviderForExtension(n);if(!i)return;let s=this.detectors.get(i.wasm_file);if(s!==void 0)return s??void 0;this.parserInitPromise??=Jm.init(),await this.parserInitPromise;let{wasmPath:o,attemptedPaths:a}=fp(i.wasm_file);if(!Qm.existsSync(o)){this.logger.debug(ko.NO_GRAMMAR_AVAILABLE,{filePath:e,wasmFile:i.wasm_file,attemptedPaths:a}),this.detectors.set(i.wasm_file,null);return}try{let l=await BN.load(o),c=new Jm,u=new gp(c,l);return this.detectors.set(i.wasm_file,u),u}catch(l){this.logger.warn(ko.GRAMMAR_LOAD_FAILED,{filePath:e,wasmFile:i.wasm_file,error:l instanceof Error?l.message:String(l)}),this.detectors.set(i.wasm_file,null);return}}getRegistry(){return this.registryPromise??=pp(),this.registryPromise}};import e_ from"fs";import xo from"path";import{execFile as KN}from"child_process";import{promisify as YN}from"util";var ku=YN(KN),$N=[".cmd",".CMD",".exe",""];function Mu(t,e){return e?{...t,env:e}:t}function WN(t,e){let r=xo.join(t,at,".bin"),n=process.platform==="win32"?$N.map(i=>`${e}${i}`):[e];for(let i of n){let s=xo.join(r,i);if(e_.existsSync(s))return s}}function Zt(t,e,r){let n=e.buildEnv?.();if(r?.binary)return Mu({command:r.binary,args:r.args??e.defaultArgs,locallyResolved:!0,fromUserOverride:!0},n);let i=e.binaryName??e.packageName,s=WN(t,i);if(s)return Mu({command:s,args:e.defaultArgs,locallyResolved:!0},n);let o=i===e.packageName?["--no-install",e.packageName,...e.defaultArgs]:["--no-install","--package",e.packageName,i,...e.defaultArgs];return Mu({command:"npx",args:o,locallyResolved:!1},n)}var Xm=5e3,jN=5e3;async function VN(t){try{if(process.platform==="win32"){let{stdout:n}=await ku("where",[t],{timeout:Xm});return n.split(/\r?\n/).map(i=>i.trim()).find(i=>i.length>0)}let{stdout:e}=await ku("sh",["-c",`command -v ${t}`],{timeout:Xm}),r=e.trim();return r.length>0?r:void 0}catch{return}}function zN(t,e){if(!e)return;let r=process.platform==="win32"?[`${t}.exe`,t]:[t];for(let n of e)for(let i of r){let s=xo.join(n,i);if(e_.existsSync(s))return s}}async function Ce(t,e){if(e?.binary)return{command:e.binary,args:e.args??t.defaultArgs,locallyResolved:!0,fromUserOverride:!0};let r=await VN(t.binaryName);if(r)return{command:r,args:t.defaultArgs,locallyResolved:!0};let n=zN(t.binaryName,t.extraCandidateDirs);return n?{command:n,args:t.defaultArgs,locallyResolved:!0}:{command:t.binaryName,args:t.defaultArgs,locallyResolved:!1}}function Zm(t){let e=t.trim().replace(/\\/g,"/");return xo.posix.basename(e).replace(/\.exe$/i,"").toLowerCase()}async function t_(t,e=jN,r){if(r&&!r.some(n=>Zm(n)===Zm(t)))return!1;try{return await ku(t,["--version"],{timeout:e}),!0}catch{return!1}}var Ct={PACKAGE_NAME:"typescript-language-server",NPX_COMMAND:"npx",NPX_NO_INSTALL_FLAG:"--no-install",STDIO_ARG:"--stdio",VERSION_FLAG:"--version"},Uo=8192,zn={binaryUnresolvable:"typescript-language-server is not resolvable (no local node_modules/.bin copy and `npx --no-install` cannot find it) -- install it as a project devDependency to enable LSP-precision cross-file edges",nodeModulesMissing:"node_modules is missing -- run the project's package manager install first",tsconfigMissing:"no tsconfig.json/jsconfig.json found at the workspace root"};var JN=["PATH","HOME","USERPROFILE","PATHEXT","SYSTEMROOT","COMSPEC","LANG","LC_ALL","TERM"];function r_(){let t={};for(let e of JN){let r=process.env[e];r!==void 0&&(t[e]=r)}return t}function qN(){let t=r_(),e=process.env.NODE_OPTIONS??"";if(e.includes("--max-old-space-size"))return t.NODE_OPTIONS=e,t;let r=`--max-old-space-size=${Uo}`;return t.NODE_OPTIONS=e?`${e} ${r}`:r,t}function Ho(t,e){return Zt(t,{packageName:Ct.PACKAGE_NAME,defaultArgs:[Ct.STDIO_ARG],buildEnv:qN},e)}import Bo from"fs";import Ko from"path";import{execFile as nC}from"child_process";import{promisify as iC}from"util";import QN from"path";import{execFile as XN}from"child_process";import{promisify as ZN}from"util";var eC=ZN(XN),tC=new Set([".cmd",".bat",".ps1"]),n_=new Set(["npx"]);function Hr(t){return process.platform!=="win32"?!1:tC.has(QN.extname(t).toLowerCase())||n_.has(t.toLowerCase())}function Gu(t){return`"${t.replace(/"/g,'""')}"`}var rC=5e3;async function xu(t,e){try{let{stdout:r}=await eC("where",[t],{timeout:rC,env:e});return r.split(/\r?\n/).map(i=>i.trim()).find(i=>i.length>0)??t}catch{return t}}function Uu(t){return n_.has(t.toLowerCase())}async function Jn(t,e,r){return[Uu(t)?await xu(t,r):t,...e].map(Gu).join(" ")}var i_=iC(nC),s_=5e3,sC=[oe.TSCONFIG_JSON,oe.JSCONFIG_JSON];function oC(t){return Bo.existsSync(Ko.join(t,at))}function aC(t){return!!(sC.some(r=>Bo.existsSync(Ko.join(t,r)))||Bo.existsSync(Ko.join(t,"tsconfig.base.json"))||Bo.existsSync(Ko.join(t,"src",oe.TSCONFIG_JSON)))}async function lC(t){let e=[Ct.NPX_NO_INSTALL_FLAG,Ct.PACKAGE_NAME,Ct.VERSION_FLAG];try{if(Hr(Ct.NPX_COMMAND)){let r=await Jn(Ct.NPX_COMMAND,e,void 0);await i_(r,[],{cwd:t,timeout:s_,shell:!0})}else await i_(Ct.NPX_COMMAND,e,{cwd:t,timeout:s_});return!0}catch{return!1}}async function o_(t,e){let r=oC(t),n=aC(t);if(!r)return{nodeModulesPresent:r,tsconfigResolvable:n,lspBinaryResolvable:!1,ready:!1,reason:zn.nodeModulesMissing};if(!n)return{nodeModulesPresent:r,tsconfigResolvable:n,lspBinaryResolvable:!1,ready:!1,reason:zn.tsconfigMissing};let s=Ho(t,e).locallyResolved?!0:await lC(t);return s?{nodeModulesPresent:r,tsconfigResolvable:n,lspBinaryResolvable:s,ready:!0}:{nodeModulesPresent:r,tsconfigResolvable:n,lspBinaryResolvable:s,ready:!1,reason:zn.binaryUnresolvable}}import yC from"fs/promises";import Hu from"os";import pn from"path";import{pathToFileURL as p_,fileURLToPath as g_}from"url";import{spawn as a_}from"child_process";var dn={CONTENT_LENGTH_HEADER_PREFIX:"Content-Length: ",HEADER_BODY_SEPARATOR:`\r
|
|
134
134
|
\r
|
|
135
|
-
`,JSON_RPC_VERSION:"2.0"},Ut={INITIALIZE:"initialize",INITIALIZED:"initialized",SHUTDOWN:"shutdown",EXIT:"exit",DID_OPEN:"textDocument/didOpen",DID_CLOSE:"textDocument/didClose",DOCUMENT_SYMBOL:"textDocument/documentSymbol",REFERENCES:"textDocument/references",DEFINITION:"textDocument/definition"},pr={NAMESPACE:3,CLASS:5,METHOD:6,CONSTRUCTOR:9,FUNCTION:12,OBJECT:19},tt={clientNotRunning:t=>`LSP request "${t}" attempted after the client stopped running`,requestTimedOut:(t,e)=>`LSP request "${t}" timed out after ${e}ms`,serverExited:(t,e)=>`LSP server process exited (code=${String(t)}) before responding`+(e?` -- stderr: ${e}`:""),spawnFailed:(t,e)=>`Failed to spawn LSP server "${t}": ${e}`,initializeFailed:t=>`LSP server exited before completing its initialize handshake: ${t}`,batchTimedOut:t=>`Tier B LSP batch exceeded its ${t}ms timeout and was aborted`,resolutionFailedForFile:t=>`Tier B LSP resolution failed for ${t}`,skippedMultiLocationDefinition:t=>`Tier B forward resolution: first definition result for ${t} resolved outside the workspace; falling through to the next in-workspace result`,concurrencyClamped:(t,e)=>`Tier B LSP batch: maxConcurrentFiles=${t} clamped to ${e} (bounded by file count and maxOpenFiles)`,processShardsClamped:(t,e)=>`Tier B LSP batch: maxProcesses=${t} clamped to ${e} (bounded by file count)`,processShardsMemoryClamped:(t,e,r,n)=>`Tier B LSP batch: maxProcesses=${t} clamped to ${e} by memory (${r}MiB budget / ${n}MiB per shard)`};var cC=["PATH","HOME","USERPROFILE","PATHEXT","SYSTEMROOT","COMSPEC","LANG","LC_ALL","TERM"];function uC(){let t={};for(let e of cC){let r=process.env[e];r!==void 0&&(t[e]=r)}return t}function l_(){return["pipe","pipe","pipe"]}var dC=4e3,Yo=class{child;buffer=Buffer.alloc(0);nextId=1;pending=new Map;stopped=!1;stderrTail="";async start(e){let r=Hr(e.command),n=e.env??uC(),i=r&&Uu(e.command)?await xu(e.command,e.env):e.command,s=r?a_([i,...e.args].map(Gu).join(" "),{cwd:e.cwd,stdio:l_(),shell:!0,env:n}):a_(e.command,e.args,{cwd:e.cwd,stdio:l_(),env:n});this.child=s,s.stdout.on("data",o=>this.onData(o)),s.stderr.on("data",o=>this.onStderr(o)),s.on("exit",o=>this.onExit(o)),s.on("error",o=>this.onError(o)),await new Promise((o,a)=>{let l=!1;s.once("spawn",()=>{l=!0,o()}),s.once("error",c=>{l||(l=!0,a(c))})})}request(e,r,n){if(!this.child||this.stopped)return Promise.reject(new Error(tt.clientNotRunning(e)));let i=this.nextId++;return new Promise((s,o)=>{let a=n>0?setTimeout(()=>{this.pending.delete(i),o(new Error(tt.requestTimedOut(e,n)))},n):void 0;this.pending.set(i,{resolve:l=>{a&&clearTimeout(a),s(l)},reject:l=>{a&&clearTimeout(a),o(l)}}),this.write({jsonrpc:dn.JSON_RPC_VERSION,id:i,method:e,params:r})})}notify(e,r){!this.child||this.stopped||this.write({jsonrpc:dn.JSON_RPC_VERSION,method:e,params:r})}async stop(){if(!this.child||this.stopped)return;this.stopped=!0;let e=this.child;try{e.stdin.end()}catch{}try{e.kill()}catch{}}write(e){let r=JSON.stringify(e),n=`${dn.CONTENT_LENGTH_HEADER_PREFIX}${Buffer.byteLength(r,K)}`+dn.HEADER_BODY_SEPARATOR;this.child.stdin.write(n+r,K)}onData(e){for(this.buffer=Buffer.concat([this.buffer,e]);;)if(!this.tryConsumeOneMessage())return}tryConsumeOneMessage(){let e=this.buffer.indexOf(dn.HEADER_BODY_SEPARATOR);if(e===-1)return!1;let r=this.buffer.subarray(0,e).toString(K),n=/Content-Length:\s*(\d+)/i.exec(r),i=e+dn.HEADER_BODY_SEPARATOR.length;if(!n)return this.buffer=this.buffer.subarray(i),this.buffer.length>0;let s=Number(n[1]);if(this.buffer.length<i+s)return!1;let o=this.buffer.subarray(i,i+s).toString(K);return this.buffer=this.buffer.subarray(i+s),this.handleMessage(o),!0}handleMessage(e){let r;try{r=JSON.parse(e)}catch{return}if(r.id===void 0)return;let n=this.pending.get(r.id);n&&(this.pending.delete(r.id),r.error?n.reject(new Error(r.error.message)):n.resolve(r.result))}onStderr(e){this.stderrTail=(this.stderrTail+e.toString(K)).slice(-dC)}onExit(e){this.stopped=!0,this.rejectAllPending(new Error(tt.serverExited(e,this.stderrTail||void 0)))}onError(e){this.stopped=!0,this.rejectAllPending(e)}rejectAllPending(e){for(let r of this.pending.values())r.reject(e);this.pending.clear()}};import Wi from"fs";import Ye from"path";var pC=[{languageId:B.RUST,basenames:[oe.CARGO_TOML],suffixes:[]},{languageId:B.GO,basenames:[oe.GO_MOD],suffixes:[]},{languageId:B.TYPESCRIPT,basenames:[oe.PACKAGE_JSON,oe.TSCONFIG_JSON,oe.JSCONFIG_JSON],suffixes:[]},{languageId:B.PYTHON,basenames:[oe.PYPROJECT_TOML,"setup.py","setup.cfg"],suffixes:[]},{languageId:B.CSHARP,basenames:[],suffixes:[".csproj",".sln",".slnx"]},{languageId:B.JAVA,basenames:["pom.xml","build.gradle","build.gradle.kts"],suffixes:[]},{languageId:B.CPP,basenames:["CMakeLists.txt","meson.build","BUILD","Makefile"],suffixes:[]},{languageId:B.PHP,basenames:["composer.json"],suffixes:[]},{languageId:B.RUBY,basenames:["Gemfile"],suffixes:[".gemspec"]}];function gC(t,e,r){let n=r.get(t);if(n!==void 0)return n;let i=!1;if(e.basenames.length>0&&(i=e.basenames.some(s=>Wi.existsSync(Ye.join(t,s)))),!i&&e.suffixes.length>0)try{i=Wi.readdirSync(t).some(s=>e.suffixes.some(o=>s.endsWith(o)))}catch{i=!1}return r.set(t,i),i}function fC(t,e,r,n){let i=Ye.dirname(Ye.join(t,e));for(;;){if(gC(i,r,n))return i;if(i===t)return t;let s=Ye.dirname(i);if(s===i)return t;i=s}}function hC(t){let e=$o(t,oe.CARGO_TOML);if(e===void 0)return[];let r=[],n="";for(let i of e.split(/\r?\n/)){let s=i.trim(),o=s.match(/^\[(.+)\]$/);if(o){n=o[1].trim().toLowerCase();continue}if(n==="workspace"){for(let a of s.matchAll(/"([^"]+)"/g))r.push(a[1]);continue}if(n.includes("dependencies")||n.startsWith("patch")||n.startsWith("replace"))for(let a of s.matchAll(/path\s*=\s*"([^"]+)"/g))r.push(a[1])}return r.map(i=>u_(t,i))}function mC(t){let e=$o(t,oe.GO_MOD);if(e===void 0)return[];let r=[];for(let n of e.split(/\r?\n/)){let i=n.trim().match(/^replace\s+\S+\s+=>\s+(\S+)\s*$/);if(!i)continue;let s=i[1];!s.startsWith(".")&&!Ye.isAbsolute(s)||r.push(s)}return r.map(n=>u_(t,n))}function _C(t){return[...SC(t),...TC(t)]}function EC(t,e){if(!e.includes("*"))return[Ye.resolve(t,e)];let r=Ye.resolve(t,Ye.dirname(e)),n=Ye.basename(e);try{return Wi.readdirSync(r).filter(i=>n==="*"||i.includes(n.slice(0,n.indexOf("*")))).map(i=>Ye.join(r,i))}catch{return[]}}function SC(t){let e=c_(t,oe.PACKAGE_JSON);if(e===void 0)return[];let r=e.workspaces,n=Array.isArray(r)?r:typeof r=="object"&&r!==null&&Array.isArray(r.packages)?r.packages:[],i=[];for(let s of n)typeof s=="string"&&i.push(...EC(t,s));return i}function TC(t){let e=c_(t,oe.TSCONFIG_JSON);if(e===void 0)return[];let r=[],n=e.references;if(Array.isArray(n))for(let s of n){if(typeof s!="object"||s===null)continue;let o=s.path;typeof o=="string"&&r.push(Ye.resolve(t,o))}let i=e.extends;return typeof i=="string"&&r.push(Ye.resolve(t,i)),r}function AC(t){let e=[],r=[];try{r=Wi.readdirSync(t)}catch{return e}for(let n of r){if(!n.endsWith(".csproj"))continue;let i=$o(t,n);if(i!==void 0)for(let s of i.matchAll(/<ProjectReference[^>]*Include\s*=\s*"([^"]+)"/g)){let o=Ye.resolve(t,s[1].split("\\").join("/"));e.push(Ye.dirname(o))}}return e}function $o(t,e){try{return Wi.readFileSync(Ye.join(t,e),"utf8")}catch{return}}function c_(t,e){let r=$o(t,e);if(r!==void 0)try{let n=JSON.parse(r);return typeof n=="object"&&n!==null&&!Array.isArray(n)?n:void 0}catch{return}}function u_(t,e){return Ye.normalize(Ye.resolve(t,e))}function RC(t,e){switch(e){case B.RUST:return hC(t);case B.GO:return mC(t);case B.TYPESCRIPT:return _C(t);case B.CSHARP:return AC(t);default:return[]}}function OC(t){let e=new Map(t.map((l,c)=>[l.root,c])),r=new Map,n=new Map;for(let l of t){let c=[...new Set(l.deps.filter(u=>u!==l.root))].filter(u=>e.has(u)).sort();n.set(l.root,c.length);for(let u of c){let p=r.get(u)??[];p.push(l.root),r.set(u,p)}}let i=t.filter(l=>n.get(l.root)===0).map(l=>l.root).sort(),s=[],o=new Set;for(;i.length>0;){let l=i.shift();if(!o.has(l)){o.add(l),s.push(t[e.get(l)]);for(let c of(r.get(l)??[]).sort())o.has(c)||(n.set(c,n.get(c)-1),n.get(c)===0&&i.push(c));i.sort()}}let a=t.filter(l=>!o.has(l.root)).sort((l,c)=>l.root.localeCompare(c.root));return[...s,...a]}function d_(t){let e=Ye.resolve(t.workspaceRoot),r=pC.find(a=>a.languageId===t.languageId)??null,n=new Map,i=new Map,s=new Map;for(let a of t.files){let l=r?fC(e,a,r,n):e;s.set(a,l);let c=i.get(l);c?c.push(a):i.set(l,[a])}let o=[];for(let[a,l]of i)o.push({root:a,files:l,deps:r?RC(a,t.languageId):[]});return{groups:OC(o),fileToProjectRoot:s}}var IC=12e4,LC=3e4,NC=200,CC=512,PC=.25,Wo=new Set([pr.FUNCTION,pr.METHOD,pr.CONSTRUCTOR,pr.CLASS]),DC=new Set([pr.CLASS]);function f_(t,e){return e.has(t)}function qn(t){return t.split("\\").join("/")}var zo=class extends Error{};function vC(t){return"location"in t}function bC(t){return t?t.map(e=>vC(e)?{name:e.name,kind:e.kind,range:e.location.range,selectionRange:e.location.range}:e):[]}function Bu(t,e){return e.normalizeSymbolName?e.normalizeSymbolName(t):t}function wC(t,e){let r=e.line>t.start.line||e.line===t.start.line&&e.character>=t.start.character,n=e.line<t.end.line||e.line===t.end.line&&e.character<=t.end.character;return r&&n}function jo(t,e,r,n){for(let i of t){if(!wC(i.range,e))continue;let s=f_(i.kind,r)?i.name:n;return(i.children?jo(i.children,e,r,s):void 0)??{symbol:i,containerName:n}}}function Vo(t,e,r){let n=[];for(let i of t)if(Wo.has(i.kind)&&n.push({symbol:i,containerName:r}),i.children){let s=f_(i.kind,e)?i.name:r;n.push(...Vo(i.children,e,s))}return n}var Ge=class{name;config={};logger;createClient;languageConfig;containmentKinds;constructor(e,r,n=()=>new Yo){this.languageConfig=e,this.name=e.name,this.logger=r??fe(),this.createClient=n,this.containmentKinds=e.containmentSymbolKinds??DC}configure(e){this.config=e}get requestTimeoutMs(){return this.config.timeoutMs??LC}get maxOpenFiles(){return this.config.maxOpenFiles??NC}get maxConcurrentFiles(){return this.config.maxConcurrentFiles??1}get maxProcesses(){if(this.config.maxProcesses!==void 0)return this.config.maxProcesses;let e=Math.floor(this.maxProcessMemoryMb()/this.processMemoryEstimateMb());return Math.max(1,Math.min(Hu.availableParallelism(),e))}processMemoryEstimateMb(){return this.config.processMemoryEstimateMb??this.languageConfig.processMemoryEstimateMb??CC}maxProcessMemoryMb(){return this.config.maxProcessMemoryMb!==void 0?this.config.maxProcessMemoryMb:Math.max(Math.round(Hu.totalmem()/1024/1024*PC),this.processMemoryEstimateMb())}effectiveConcurrency(e){let r=this.maxConcurrentFiles,n=Math.max(1,Math.min(r,e,this.maxOpenFiles-1));return n!==r&&this.logger.debug(tt.concurrencyClamped(r,n)),n}effectiveProcesses(e){let r=this.maxProcesses,n=Math.floor(this.maxProcessMemoryMb()/this.processMemoryEstimateMb()),i=Hu.availableParallelism(),s=Math.max(1,Math.min(r,e,i,n));return s!==r&&(this.logger.debug(tt.processShardsClamped(r,s)),s<r&&n<Math.min(r,e,i)&&this.logger.debug(tt.processShardsMemoryClamped(r,s,this.maxProcessMemoryMb(),this.processMemoryEstimateMb()))),s}async checkAvailability(e){let r=await this.languageConfig.checkPreflight(e,{binary:this.config.binaryOverride,args:this.config.argsOverride});return r.ready?{available:!0}:{available:!1,reason:r.reason}}async resolveEdges(e){if(e.files.length===0)return{edges:[],filesProcessed:[],filesFailed:[]};let r=this.config.timeoutMs??IC,n=this.effectiveProcesses(e.files.length);if(n<=1){let o=this.createClient();return this.runBatch(o,e,r)}let i=this.buildProjectShards(e,n),s=await Promise.all(i.map(o=>{let a=this.createClient();return this.runBatch(a,o,r)}));return this.mergeShardOutcomes(s,e.files)}languageIdFor(e){return this.languageConfig.languageIdByExtension[pn.extname(e)]??this.languageConfig.defaultLanguageId}buildProjectShards(e,r){let i=d_({workspaceRoot:e.workspaceRoot,languageId:this.languageConfig.tierBLanguageId,files:e.files}).groups,s=(d,f)=>{let m={};for(let _ of f){let I=e.callsByFile?.[_];I&&(m[_]=I)}return{workspaceRoot:e.workspaceRoot,serverRoot:d,files:f,callsByFile:m}};if(i.length<=r)return i.map(d=>s(d.root,d.files));let o=[...i].sort((d,f)=>d.files.length-f.files.length||d.root.localeCompare(f.root)),a=r-1,l=new Set(o.slice(-a).map(d=>d.root)),c=[],u=[];for(let d of i)l.has(d.root)?c.push(s(d.root,d.files)):u.push(...d.files);let p=[...c];return u.length>0&&p.push(s(e.workspaceRoot,u)),p}mergeShardOutcomes(e,r){let n=[],i=new Set,s=new Map,o=0;for(let u=0;u<e.length;u++){let p=e[u];for(let d of p.edges)n.push(d);for(let d of p.filesProcessed)i.add(d);for(let d of p.filesFailed)s.set(d.file,d);p.unavailableReason&&o++}n.sort((u,p)=>(u.sourceNodeKey+"->"+u.targetNodeKey).localeCompare(p.sourceNodeKey+"->"+p.targetNodeKey));let{filesProcessed:a,filesFailed:l}=this.reorderFiles(r,i,s),c={edges:n,filesProcessed:a,filesFailed:l};return o===e.length&&e.length>0&&(c.unavailableReason=e.find(u=>u.unavailableReason)?.unavailableReason),c}reorderFiles(e,r,n){let i=[],s=[];for(let o of e)r.has(o)?i.push(o):n.has(o)&&s.push(n.get(o));return{filesProcessed:i,filesFailed:s}}async runBatch(e,r,n){let{workspaceRoot:i,files:s,callsByFile:o}=r,a=r.serverRoot??i,l=await this.languageConfig.resolveBinary(i,{binary:this.config.binaryOverride,args:this.config.argsOverride});try{await e.start({command:l.command,args:l.args,cwd:a,env:l.env})}catch(u){return{edges:[],filesProcessed:[],filesFailed:[],unavailableReason:tt.spawnFailed(l.command,u instanceof Error?u.message:String(u))}}try{await this.initializeSession(e,a)}catch(u){let p=u instanceof Error?u.message:String(u);await this.shutdownSession(e);let d=this.languageConfig.unavailableReasonForUnresolvableBinary;return!l.locallyResolved&&d?(this.logger.debug(tt.initializeFailed(p)),{edges:[],filesProcessed:[],filesFailed:[],unavailableReason:d}):{edges:[],filesProcessed:[],filesFailed:[],unavailableReason:tt.initializeFailed(p)}}await this.waitForColdStart(e,i,s);let c=n>0?Date.now()+n:void 0;try{return await this.processAllFiles(e,i,s,o,c,n)}finally{await this.shutdownSession(e)}}async settleColdStart(){let e=this.config.coldStartSettleMs??this.languageConfig.coldStartSettleMs??0;e>0&&await new Promise(r=>setTimeout(r,e))}async waitForColdStart(e,r,n){await this.settleColdStart(),(this.config.coldStartSettleMs??this.languageConfig.coldStartSettleMs??0)>0&&await this.waitForServerReady(e,r,n)}async waitForServerReady(e,r,n){let i=this.config.coldStartPollMs??5e3,s=this.config.coldStartMaxWaitMs??12e4,o=Date.now();for(;;){if(await this.probeServerReady(e,r,n)||Date.now()-o>=s)return;await new Promise(c=>setTimeout(c,i))}}async probeServerReady(e,r,n){let s={openFileCache:new Map,inFlightOpens:new Map,pinnedPaths:new Set,usedNodeKeysByFile:new Map};try{let o=!1;for(let a=0;a<Math.min(n.length,12);a++){let l=await this.openAndGetSymbols(e,r,n[a],s),c=Vo(l.symbols,this.containmentKinds);if(c.length===0)continue;if(o=!0,(await Promise.all(c.map(({symbol:p})=>e.request(Ut.REFERENCES,{textDocument:{uri:l.uri},position:p.selectionRange.start,context:{includeDeclaration:!1}},this.requestTimeoutMs)))).some(p=>(p?.length??0)>0))return!0}return o?!1:n.length<=12}finally{for(let o of[...s.openFileCache.values()])this.closeOpenFile(e,o,s.openFileCache)}}async initializeSession(e,r){let n=p_(r).toString();await e.request(Ut.INITIALIZE,{processId:process.pid,rootUri:n,capabilities:{textDocument:{documentSymbol:{hierarchicalDocumentSymbolSupport:!0}}},workspaceFolders:[{uri:n,name:pn.basename(r)}],...this.languageConfig.initializationOptions?{initializationOptions:this.languageConfig.initializationOptions}:{}},this.requestTimeoutMs),e.notify(Ut.INITIALIZED,{})}async shutdownSession(e){try{await e.request(Ut.SHUTDOWN,null,this.requestTimeoutMs),e.notify(Ut.EXIT,{})}catch{}finally{await e.stop()}}async processAllFiles(e,r,n,i,s,o){let a={openFileCache:new Map,inFlightOpens:new Map,pinnedPaths:new Set,usedNodeKeysByFile:new Map},l=new Array(n.length),c=0,u=!1,p=async()=>{for(;;){if(u)return;let L=s!==void 0?s-Date.now():void 0;if(L!==void 0&&L<=0){u=!0;return}let N=c++;if(N>=n.length)return;let w=n[N];a.pinnedPaths.add(w);try{let q=await this.runOneSlot(e,r,w,i,a,L,o);l[N]=q,!q.ok&&q.deadlineExceeded&&(u=!0)}finally{a.pinnedPaths.delete(w)}}},d=this.effectiveConcurrency(n.length);await Promise.allSettled(Array.from({length:d},()=>p()));let f=[],m=new Set,_=[],I=[];for(let L=0;L<n.length;L++){let N=l[L];if(N)if(N.ok){_.push(n[L]);for(let w of N.edges){let q=`${w.sourceNodeKey}->${w.targetNodeKey}`;m.has(q)||(m.add(q),f.push(w))}}else I.push({file:n[L],reason:N.reason,retryable:N.deadlineExceeded})}return u&&this.markUnreachedFilesFailed(n,_,I,o),{edges:f,filesProcessed:_,filesFailed:I,...u?{unavailableReason:tt.batchTimedOut(o)}:{}}}raceAgainstDeadline(e,r){return new Promise((n,i)=>{let s=setTimeout(()=>i(new zo),r);s.unref?.(),e.then(o=>{clearTimeout(s),n(o)},o=>{clearTimeout(s),i(o)})})}async runOneSlot(e,r,n,i,s,o,a){try{let l=o!==void 0?await this.raceAgainstDeadline(this.processOneFile(e,r,n,i,s),o):await this.processOneFile(e,r,n,i,s);return this.closeAndEvict(e,n,s),{ok:!0,edges:l}}catch(l){if(l instanceof zo)return{ok:!1,deadlineExceeded:!0,reason:tt.batchTimedOut(a)};let c=l instanceof Error?l.message:String(l);return this.logger.warn(tt.resolutionFailedForFile(n),{error:c}),this.closeAndEvict(e,n,s),{ok:!1,deadlineExceeded:!1,reason:c}}}closeOpenFile(e,r,n){n.delete(r.relativePath),e.notify(Ut.DID_CLOSE,{textDocument:{uri:r.uri}})}closeAndEvict(e,r,n){let i=n.openFileCache.get(r);i&&this.closeOpenFile(e,i,n.openFileCache)}markUnreachedFilesFailed(e,r,n,i){let s=new Set([...r,...n.map(o=>o.file)]);for(let o of e)s.has(o)||n.push({file:o,reason:tt.batchTimedOut(i),retryable:!0})}qualifiedContainerName(e){if(!(!this.languageConfig.supportsQualifiedContainment||!e))return Bu(e,this.languageConfig)}resolveNodeKeyForFile(e,r,n,i,s,o){let a=e.usedNodeKeysByFile.get(r);if(!a){a={used:new Set([r]),resolved:new Map},e.usedNodeKeysByFile.set(r,a);let p=[...Vo(n,this.containmentKinds)].sort((d,f)=>d.symbol.selectionRange.start.line-f.symbol.selectionRange.start.line);for(let{symbol:d,containerName:f}of p){let m=`${d.name}@${d.selectionRange.start.line}`;if(a.resolved.has(m))continue;let _=un(a.used,Bi(r,Bu(d.name,this.languageConfig),this.qualifiedContainerName(f)),d.selectionRange.start.line);a.used.add(_),a.resolved.set(m,_)}}let l=`${i}@${s}`,c=a.resolved.get(l);if(c)return c;let u=un(a.used,Bi(r,Bu(i,this.languageConfig),this.qualifiedContainerName(o)),s);return a.used.add(u),a.resolved.set(l,u),u}async processOneFile(e,r,n,i,s){let o=i?.[n];return this.languageConfig.definitionResolution==="forward"&&o&&o.length>0?this.processOneFileForward(e,r,n,o,s):this.processOneFileReverse(e,r,n,s)}async processOneFileReverse(e,r,n,i){let s=await this.openAndGetSymbols(e,r,n,i),o=Vo(s.symbols,this.containmentKinds),a=await Promise.all(o.map(({symbol:c})=>e.request(Ut.REFERENCES,{textDocument:{uri:s.uri},position:c.selectionRange.start,context:{includeDeclaration:!1}},this.requestTimeoutMs))),l=[];for(let c=0;c<o.length;c++){let{symbol:u,containerName:p}=o[c],d=a[c]??[],f=qn(this.resolveNodeKeyForFile(i,n,s.symbols,u.name,u.selectionRange.start.line,p));for(let m of d){let _=await this.resolveReferenceEdge(e,r,m,f,n,i);_&&l.push(_)}}return l}async processOneFileForward(e,r,n,i,s){let o=await this.openAndGetSymbols(e,r,n,s),a=[],l=await Promise.all(i.map(({startLine:c,startColumn:u})=>e.request(Ut.DEFINITION,{textDocument:{uri:o.uri},position:{line:c,character:u}},this.requestTimeoutMs)));for(let c=0;c<i.length;c++){let{startLine:u,startColumn:p}=i[c],d=await this.resolveFirstDefinitionTarget(e,r,n,l[c],s);if(d===void 0)continue;let f=jo(o.symbols,{line:u,character:p},this.containmentKinds),m=f&&Wo.has(f.symbol.kind)?qn(this.resolveNodeKeyForFile(s,n,o.symbols,f.symbol.name,f.symbol.selectionRange.start.line,f.containerName)):n;m!==d&&a.push({sourceNodeKey:m,targetNodeKey:d,source:ml.LSP})}return a}async resolveFirstDefinitionTarget(e,r,n,i,s){if(!i)return;let o=Array.isArray(i)?i:[i];for(let a=0;a<o.length;a++){let l=await this.resolveTargetNodeKey(e,r,n,o[a],s);if(l!==void 0)return a>0&&this.logger.debug(tt.skippedMultiLocationDefinition(n)),l}}async resolveTargetNodeKey(e,r,n,i,s){let o=pn.relative(r,g_(i.uri));if(pn.isAbsolute(o)||o.startsWith(".."))return;let a=qn(o);if(a===n)return;let l=await this.openAndGetSymbols(e,r,a,s),c=jo(l.symbols,i.range.start,this.containmentKinds);return c&&Wo.has(c.symbol.kind)?qn(this.resolveNodeKeyForFile(s,a,l.symbols,c.symbol.name,c.symbol.selectionRange.start.line,c.containerName)):a}async resolveReferenceEdge(e,r,n,i,s,o){let a=pn.relative(r,g_(n.uri));if(pn.isAbsolute(a)||a.startsWith(".."))return;let l=qn(a);if(l===s)return;let c=await this.openAndGetSymbols(e,r,l,o),u=jo(c.symbols,n.range.start,this.containmentKinds);return{sourceNodeKey:u&&Wo.has(u.symbol.kind)?qn(this.resolveNodeKeyForFile(o,l,c.symbols,u.symbol.name,u.symbol.selectionRange.start.line,u.containerName)):l,targetNodeKey:i,source:ml.LSP}}async openAndGetSymbols(e,r,n,i){let s=i.openFileCache,o=s.get(n);if(o)return s.delete(n),s.set(n,o),o;let a=i.inFlightOpens.get(n);if(a)return a;let l=this.doOpenAndGetSymbols(e,r,n,i).finally(()=>i.inFlightOpens.delete(n));return i.inFlightOpens.set(n,l),l}pickEvictionVictim(e){for(let[r,n]of e.openFileCache)if(!e.pinnedPaths.has(r))return n}async doOpenAndGetSymbols(e,r,n,i){for(;i.openFileCache.size+i.inFlightOpens.size>=this.maxOpenFiles;){let p=this.pickEvictionVictim(i);if(!p)break;this.closeOpenFile(e,p,i.openFileCache)}let s=pn.join(r,n),o=await yC.readFile(s,K),a=p_(s).toString();e.notify(Ut.DID_OPEN,{textDocument:{uri:a,languageId:this.languageIdFor(n),version:1,text:o}});let l=await e.request(Ut.DOCUMENT_SYMBOL,{textDocument:{uri:a}},this.requestTimeoutMs),c=bC(l),u={relativePath:n,uri:a,symbols:c};return i.openFileCache.set(n,u),u}};var Jo="typescript",FC={".ts":Jo,".mts":Jo,".cts":Jo,".tsx":"typescriptreact",".js":"javascript",".mjs":"javascript",".cjs":"javascript",".jsx":"javascriptreact"},MC={name:Ct.PACKAGE_NAME,tierBLanguageId:B.TYPESCRIPT,languageIdByExtension:FC,defaultLanguageId:Jo,resolveBinary:Ho,checkPreflight:o_,supportsQualifiedContainment:!0,initializationOptions:{maxTsServerMemory:Uo},definitionResolution:"forward",unavailableReasonForUnresolvableBinary:zn.binaryUnresolvable},qo=class extends Ge{constructor(e,r){super(MC,e,r)}};import kC from"fs";import GC from"path";import{execFile as xC}from"child_process";import{promisify as UC}from"util";var st={PACKAGE_NAME:"pyright",BINARY_NAME:"pyright-langserver",NPX_COMMAND:"npx",NPX_NO_INSTALL_FLAG:"--no-install",STDIO_ARG:"--stdio",VERSION_FLAG:"--version"},ji={binaryUnresolvable:"pyright-langserver is not resolvable (no local node_modules/.bin copy and `npx --no-install` cannot find pyright) -- install pyright as a project devDependency (`npm install -D pyright`) to enable LSP-precision cross-file edges for Python",markerFileMissing:"no pyproject.toml/requirements.txt found at the workspace root"};var h_=UC(xC),m_=5e3,HC=[oe.PYPROJECT_TOML,oe.REQUIREMENTS_TXT];function BC(t){return HC.some(e=>kC.existsSync(GC.join(t,e)))}async function KC(t){let e=[st.NPX_NO_INSTALL_FLAG,st.PACKAGE_NAME,st.VERSION_FLAG];try{if(Hr(st.NPX_COMMAND)){let r=await Jn(st.NPX_COMMAND,e,void 0);await h_(r,[],{cwd:t,timeout:m_,shell:!0})}else await h_(st.NPX_COMMAND,e,{cwd:t,timeout:m_});return!0}catch{return!1}}async function __(t,e){let r=BC(t),i=Zt(t,{packageName:st.PACKAGE_NAME,binaryName:st.BINARY_NAME,defaultArgs:[st.STDIO_ARG]},e).locallyResolved?!0:await KC(t);return r?i?{markerFileResolvable:r,lspBinaryResolvable:i,ready:!0}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:ji.binaryUnresolvable}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:ji.markerFileMissing}}var E_="python",YC={".py":E_},$C={name:st.PACKAGE_NAME,tierBLanguageId:B.PYTHON,languageIdByExtension:YC,defaultLanguageId:E_,resolveBinary:(t,e)=>Zt(t,{packageName:st.PACKAGE_NAME,binaryName:st.BINARY_NAME,defaultArgs:[st.STDIO_ARG]},e),checkPreflight:__,supportsQualifiedContainment:!0,definitionResolution:"reverse",unavailableReasonForUnresolvableBinary:ji.binaryUnresolvable},Qo=class extends Ge{constructor(e,r){super($C,e,r)}};import WC from"fs";import Yu from"path";import jC from"os";var gn={BINARY_NAME:"gopls",DEFAULT_ARGS:[]};function S_(t){let e=/^\((\*?)([^(]*)\)\.(.+)$/.exec(t);if(!e)return t;let[,,r,n]=e;return`${r}.${n}`}var Ku={binaryUnresolvable:"gopls is not resolvable (not found on PATH, $GOBIN, $GOPATH/bin, or ~/go/bin) -- install gopls to enable LSP-precision cross-file edges for Go",markerFileMissing:"no go.mod found at the workspace root"};function VC(t){return WC.existsSync(Yu.join(t,oe.GO_MOD))}function zC(){let t=[];return process.env.GOBIN&&t.push(process.env.GOBIN),process.env.GOPATH&&t.push(Yu.join(process.env.GOPATH,"bin")),t.push(Yu.join(jC.homedir(),"go","bin")),t}async function T_(t,e){let r=VC(t),i=(await Ce({binaryName:gn.BINARY_NAME,defaultArgs:gn.DEFAULT_ARGS,extraCandidateDirs:zC()},e)).locallyResolved;return r?i?{markerFileResolvable:r,lspBinaryResolvable:i,ready:!0}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Ku.binaryUnresolvable}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Ku.markerFileMissing}}var A_="go",JC={".go":A_},qC={name:gn.BINARY_NAME,tierBLanguageId:B.GO,languageIdByExtension:JC,defaultLanguageId:A_,resolveBinary:(t,e)=>Ce({binaryName:gn.BINARY_NAME,defaultArgs:gn.DEFAULT_ARGS},e),checkPreflight:T_,supportsQualifiedContainment:!1,normalizeSymbolName:S_,definitionResolution:"reverse"},Xo=class extends Ge{constructor(e,r){super(qC,e,r)}};import iP from"path";import sP from"os";import QC from"fs";import $u from"path";import XC from"os";var Zo=class{get env(){return process.env}get version(){return process.version}get platform(){return process.platform}get argv(){return process.argv}cwd(){return process.cwd()}};var Br={BINARY_NAME:"rust-analyzer",DEFAULT_ARGS:[]},ea={binaryUnresolvable:"rust-analyzer is not resolvable (not found on PATH, $CARGO_HOME/bin, or ~/.cargo/bin) -- install rust-analyzer to enable LSP-precision cross-file edges for Rust",binaryNotSpawnable:"rust-analyzer resolves on PATH but cannot be spawned -- usually a rustup proxy for a component that isn't installed; run `rustup component add rust-analyzer` (or install rust-analyzer) to enable LSP-precision cross-file edges for Rust",markerFileMissing:"no Cargo.toml found at the workspace root"};function R_(t){return t.startsWith("impl ")?t.slice(5):t}function ZC(t){return QC.existsSync($u.join(t,oe.CARGO_TOML))}var eP=new Zo;function tP(t){return $u.join(t.env.CARGO_HOME??$u.join(XC.homedir(),".cargo"),"bin")}var rP=5e3;async function nP(t,e){return t_(t,rP,e)}async function O_(t,e,r=eP){let n=ZC(t),i=await Ce({binaryName:Br.BINARY_NAME,defaultArgs:Br.DEFAULT_ARGS,extraCandidateDirs:[tP(r)]},e),s=i.locallyResolved,o=!s||await nP(i.command,i.fromUserOverride?void 0:[Br.BINARY_NAME]);return n?s?o?{markerFileResolvable:n,lspBinaryResolvable:s,lspBinarySpawnable:o,ready:!0}:{markerFileResolvable:n,lspBinaryResolvable:s,lspBinarySpawnable:o,ready:!1,reason:ea.binaryNotSpawnable}:{markerFileResolvable:n,lspBinaryResolvable:s,lspBinarySpawnable:o,ready:!1,reason:ea.binaryUnresolvable}:{markerFileResolvable:n,lspBinaryResolvable:s,lspBinarySpawnable:o,ready:!1,reason:ea.markerFileMissing}}var y_="rust",oP={".rs":y_};function aP(){return iP.join(sP.homedir(),".cargo","bin")}var lP={name:Br.BINARY_NAME,tierBLanguageId:B.RUST,languageIdByExtension:oP,defaultLanguageId:y_,resolveBinary:(t,e)=>Ce({binaryName:Br.BINARY_NAME,defaultArgs:Br.DEFAULT_ARGS,extraCandidateDirs:[aP()]},e),checkPreflight:O_,supportsQualifiedContainment:!0,containmentSymbolKinds:new Set([pr.CLASS,pr.OBJECT]),normalizeSymbolName:R_,definitionResolution:"reverse",coldStartSettleMs:8e3,processMemoryEstimateMb:2048},ta=class extends Ge{constructor(e,r){super(lP,e,r)}};import cP from"fs";import I_ from"path";var fn={BINARY_NAME:"clangd",DEFAULT_ARGS:[]},Wu={binaryUnresolvable:"clangd is not resolvable (not found on PATH or common LLVM install locations) -- install clangd to enable LSP-precision cross-file edges for C/C++",markerFileMissing:"no compile_commands.json/CMakeLists.txt found at the workspace root"};var uP=["compile_commands.json","CMakeLists.txt"];function dP(t){return uP.some(e=>cP.existsSync(I_.join(t,e)))}function pP(){return process.platform==="win32"?[I_.join(process.env.ProgramFiles??"C:\\Program Files","LLVM","bin")]:process.platform==="darwin"?["/opt/homebrew/opt/llvm/bin","/usr/local/opt/llvm/bin"]:["/usr/lib/llvm/bin","/usr/local/bin"]}async function L_(t,e){let r=dP(t),i=(await Ce({binaryName:fn.BINARY_NAME,defaultArgs:fn.DEFAULT_ARGS,extraCandidateDirs:pP()},e)).locallyResolved;return r?i?{markerFileResolvable:r,lspBinaryResolvable:i,ready:!0}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Wu.binaryUnresolvable}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Wu.markerFileMissing}}var gr="cpp",gP={".c":"c",".h":"c",".cpp":gr,".cxx":gr,".cc":gr,".hpp":gr,".hxx":gr,".hh":gr,".cu":gr,".cuh":gr},fP={name:fn.BINARY_NAME,tierBLanguageId:B.CPP,languageIdByExtension:gP,defaultLanguageId:gr,resolveBinary:(t,e)=>Ce({binaryName:fn.BINARY_NAME,defaultArgs:fn.DEFAULT_ARGS},e),checkPreflight:L_,supportsQualifiedContainment:!1,definitionResolution:"reverse"},ra=class extends Ge{constructor(e,r){super(fP,e,r)}};import hP from"fs";import na from"path";import N_ from"os";var hn={BINARY_NAME:"jdtls",DEFAULT_ARGS:[]},ju={binaryUnresolvable:"jdtls is not resolvable (not found on PATH or common install locations) -- install jdtls to enable LSP-precision cross-file edges for Java",markerFileMissing:"no pom.xml/build.gradle found at the workspace root"};var mP=["pom.xml","build.gradle"];function _P(t){return mP.some(e=>hP.existsSync(na.join(t,e)))}function EP(){return process.platform==="win32"?[na.join(N_.homedir(),"scoop","shims"),na.join(process.env.ChocolateyInstall??"C:\\ProgramData\\chocolatey","bin")]:process.platform==="darwin"?["/opt/homebrew/bin","/usr/local/bin"]:["/usr/local/bin","/usr/bin",na.join(N_.homedir(),".local","share","jdtls","bin")]}async function C_(t,e){let r=_P(t),i=(await Ce({binaryName:hn.BINARY_NAME,defaultArgs:hn.DEFAULT_ARGS,extraCandidateDirs:EP()},e)).locallyResolved;return r?i?{markerFileResolvable:r,lspBinaryResolvable:i,ready:!0}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:ju.binaryUnresolvable}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:ju.markerFileMissing}}var P_="java",SP={".java":P_},TP={name:hn.BINARY_NAME,tierBLanguageId:B.JAVA,languageIdByExtension:SP,defaultLanguageId:P_,resolveBinary:(t,e)=>Ce({binaryName:hn.BINARY_NAME,defaultArgs:hn.DEFAULT_ARGS},e),checkPreflight:C_,supportsQualifiedContainment:!0,definitionResolution:"reverse"},ia=class extends Ge{constructor(e,r){super(TP,e,r)}};import AP from"fs";import RP from"path";import OP from"os";var mn={BINARY_NAME:"csharp-ls",DEFAULT_ARGS:[]},Vu={binaryUnresolvable:"csharp-ls is not resolvable (not found on PATH or ~/.dotnet/tools) -- install it with `dotnet tool install --global csharp-ls` to enable LSP-precision cross-file edges for C#",markerFileMissing:"no solution (.sln/.slnx) or project file (*.csproj) found at the workspace root"};function yP(){return RP.join(OP.homedir(),".dotnet","tools")}function IP(t){try{return AP.readdirSync(t).some(r=>r.endsWith(".sln")||r.endsWith(".slnx")||r.endsWith(".csproj"))}catch{return!1}}async function D_(t,e){let r=IP(t),i=(await Ce({binaryName:mn.BINARY_NAME,defaultArgs:mn.DEFAULT_ARGS,extraCandidateDirs:[yP()]},e)).locallyResolved;return r?i?{markerFileResolvable:r,lspBinaryResolvable:i,ready:!0}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Vu.binaryUnresolvable}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Vu.markerFileMissing}}var v_="csharp",LP={".cs":v_},NP={name:mn.BINARY_NAME,tierBLanguageId:B.CSHARP,languageIdByExtension:LP,defaultLanguageId:v_,resolveBinary:(t,e)=>Ce({binaryName:mn.BINARY_NAME,defaultArgs:mn.DEFAULT_ARGS},e),checkPreflight:D_,supportsQualifiedContainment:!0,definitionResolution:"reverse"},sa=class extends Ge{constructor(e,r){super(NP,e,r)}};import CP from"fs";import PP from"path";import{execFile as DP}from"child_process";import{promisify as vP}from"util";var St={PACKAGE_NAME:"intelephense",NPX_COMMAND:"npx",NPX_NO_INSTALL_FLAG:"--no-install",STDIO_ARG:"--stdio",VERSION_FLAG:"--version"},Vi={binaryUnresolvable:"intelephense is not resolvable (no local node_modules/.bin copy and `npx --no-install` cannot find intelephense) -- install intelephense as a project devDependency (`npm install -D intelephense`) to enable LSP-precision cross-file edges for PHP",markerFileMissing:"no composer.json found at the workspace root"};var b_=vP(DP),w_=5e3;function bP(t){return CP.existsSync(PP.join(t,"composer.json"))}async function wP(t){let e=[St.NPX_NO_INSTALL_FLAG,St.PACKAGE_NAME,St.VERSION_FLAG];try{if(Hr(St.NPX_COMMAND)){let r=await Jn(St.NPX_COMMAND,e,void 0);await b_(r,[],{cwd:t,timeout:w_,shell:!0})}else await b_(St.NPX_COMMAND,e,{cwd:t,timeout:w_});return!0}catch{return!1}}async function F_(t,e){let r=bP(t),i=Zt(t,{packageName:St.PACKAGE_NAME,defaultArgs:[St.STDIO_ARG]},e).locallyResolved?!0:await wP(t);return r?i?{markerFileResolvable:r,lspBinaryResolvable:i,ready:!0}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Vi.binaryUnresolvable}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Vi.markerFileMissing}}var _n="php",FP={".php":_n,".phtml":_n,".php3":_n,".php4":_n,".php5":_n,".phps":_n},MP={name:St.PACKAGE_NAME,tierBLanguageId:B.PHP,languageIdByExtension:FP,defaultLanguageId:_n,resolveBinary:(t,e)=>Zt(t,{packageName:St.PACKAGE_NAME,defaultArgs:[St.STDIO_ARG]},e),checkPreflight:F_,supportsQualifiedContainment:!0,definitionResolution:"reverse",unavailableReasonForUnresolvableBinary:Vi.binaryUnresolvable},oa=class extends Ge{constructor(e,r){super(MP,e,r)}};import kP from"fs";import Ju from"path";import GP from"os";var En={BINARY_NAME:"ruby-lsp",DEFAULT_ARGS:[]},zu={binaryUnresolvable:"ruby-lsp is not resolvable (not found on PATH, ~/.rbenv/shims, or ~/.rvm/bin) -- install ruby-lsp to enable LSP-precision cross-file edges for Ruby",markerFileMissing:"no Gemfile or Gemfile.lock found at the workspace root"};var xP=["Gemfile","Gemfile.lock"];function UP(t){return xP.some(e=>kP.existsSync(Ju.join(t,e)))}function HP(){if(process.platform==="win32")return[];let t=GP.homedir();return[Ju.join(t,".rbenv","shims"),Ju.join(t,".rvm","bin")]}async function M_(t,e){let r=UP(t),i=(await Ce({binaryName:En.BINARY_NAME,defaultArgs:En.DEFAULT_ARGS,extraCandidateDirs:HP()},e)).locallyResolved;return r?i?{markerFileResolvable:r,lspBinaryResolvable:i,ready:!0}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:zu.binaryUnresolvable}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:zu.markerFileMissing}}var aa="ruby",BP={".rb":aa,".rake":aa,".gemspec":aa},KP={name:En.BINARY_NAME,tierBLanguageId:B.RUBY,languageIdByExtension:BP,defaultLanguageId:aa,resolveBinary:(t,e)=>Ce({binaryName:En.BINARY_NAME,defaultArgs:En.DEFAULT_ARGS},e),checkPreflight:M_,supportsQualifiedContainment:!0,definitionResolution:"reverse"},la=class extends Ge{constructor(e,r){super(KP,e,r)}};R.register(A.KnowledgeGitService,(t,e)=>new vs(t.resolve(A.GitProvider),e?.logger,e?.gitNetworkTimeoutMs));R.register(A.FileDiscovery,(t,e)=>new mo(t.resolve(A.GitProvider),e?.logger));R.register(A.ConfigScanner,(t,e)=>new Eo(e?.logger));R.register(A.VcsScanner,(t,e)=>new To(t.resolve(A.GitProvider),e?.logger));var YP=new Ro;R.register(A.AstProcessor,(t,e)=>new Oo(YP,e?.logger));R.register(A.GraphPersister,()=>new Do);R.register(A.TempFileManager,()=>(t,e)=>new bo(t,e));R.register(A.QueryService,(t,e)=>new Fo(e?.logger));R.register(A.TierBCoverageHintProvider,()=>({resolve:Ei}));R.register(A.ImpactService,(t,e)=>new kn(e?.logger));R.register(A.ChangeDetectionService,(t,e)=>new ws(t.resolve(A.ImpactService,e),e?.logger));R.register(A.TopologyBuilder,()=>new Mo);R.register(A.SnapshotRenderer,()=>new bs);R.register(A.HydrationService,(t,e)=>new Fs(t.resolve(A.GitProvider),e?.logger));R.register(A.SemanticDiffAnalyzer,(t,e)=>new Go(e?.logger));R.register(A.EdgeResolutionProviders,(t,e)=>({typescript:()=>new qo(e?.logger),python:()=>new Qo(e?.logger),go:()=>new Xo(e?.logger),rust:()=>new ta(e?.logger),cpp:()=>new ra(e?.logger),java:()=>new ia(e?.logger),csharp:()=>new sa(e?.logger),php:()=>new oa(e?.logger),ruby:()=>new la(e?.logger)}));var Kr={METHOD_POST:"POST",HEADER_AUTHORIZATION:"Authorization",HEADER_CONTENT_TYPE:"Content-Type",CONTENT_TYPE_JSON:"application/json",bearerAuth:t=>`Bearer ${t}`};var Yr={CLIENT_USED_BEFORE_INITIALIZE:"FetchRemoteSyncClient used before initialize() was called",FETCH_L2_NODES_FAILED:"Failed to fetch remote L2 nodes",fetchL2NodesFailedWithReason:t=>`Failed to fetch remote L2 nodes: ${t}`,FETCH_L2_NODES_INVALID_JSON:"Failed to fetch remote L2 nodes: response body was not valid JSON",SYNC_PUSH_FAILED:"Sync push failed",syncPushFailedWithReason:t=>`Sync push failed: ${t}`,SYNC_PUSH_INVALID_JSON:"Sync push failed: response body was not valid JSON"};var qu={l2Nodes:t=>`/projects/${t}/l2-nodes`,SYNC_PUSH:"/sync/push"};var k_=3e4,zi=class{config;initialize(e){this.config=e}getConfig(){if(!this.config)throw new S(O.SYNC_FETCH_FAILED,Yr.CLIENT_USED_BEFORE_INITIALIZE);return this.config}async parseErrorBody(e){try{return(await e.json()).error??e.statusText}catch{return e.statusText}}async fetchRemoteL2Nodes(e){let{apiUrl:r,pat:n}=this.getConfig(),i;try{i=await fetch(`${r}${qu.l2Nodes(e)}`,{headers:{[Kr.HEADER_AUTHORIZATION]:Kr.bearerAuth(n)},signal:AbortSignal.timeout(k_)})}catch(s){throw S.wrap(O.SYNC_FETCH_FAILED,Yr.FETCH_L2_NODES_FAILED,s)}if(!i.ok){let s=await this.parseErrorBody(i);throw new S(O.SYNC_FETCH_FAILED,Yr.fetchL2NodesFailedWithReason(s))}try{return await i.json()}catch(s){throw S.wrap(O.SYNC_FETCH_FAILED,Yr.FETCH_L2_NODES_INVALID_JSON,s)}}async pushSyncEvents(e,r){let{apiUrl:n,pat:i}=this.getConfig(),s;try{s=await fetch(`${n}${qu.SYNC_PUSH}`,{method:Kr.METHOD_POST,headers:{[Kr.HEADER_CONTENT_TYPE]:Kr.CONTENT_TYPE_JSON,[Kr.HEADER_AUTHORIZATION]:Kr.bearerAuth(i)},body:JSON.stringify({projectId:Number(e),events:r}),signal:AbortSignal.timeout(k_)})}catch(o){throw S.wrap(O.SYNC_PUSH_FAILED,Yr.SYNC_PUSH_FAILED,o)}if(!s.ok){let o=await this.parseErrorBody(s);throw new S(O.SYNC_PUSH_FAILED,Yr.syncPushFailedWithReason(o))}try{return await s.json()}catch(o){throw S.wrap(O.SYNC_PUSH_FAILED,Yr.SYNC_PUSH_INVALID_JSON,o)}}};R.register(A.RemoteSyncClient,()=>()=>new zi);var ot={METHOD_POST:"POST",METHOD_GET:"GET",HEADER_CONTENT_TYPE:"Content-Type",HEADER_AUTHORIZATION:"Authorization",CONTENT_TYPE_JSON:"application/json",CONTENT_TYPE_EVENT_STREAM:"text/event-stream",SSE_DATA_PREFIX:"data: ",SSE_DONE_SENTINEL:"[DONE]",SSE_BLOCK_SEPARATOR:`
|
|
135
|
+
`,JSON_RPC_VERSION:"2.0"},Ut={INITIALIZE:"initialize",INITIALIZED:"initialized",SHUTDOWN:"shutdown",EXIT:"exit",DID_OPEN:"textDocument/didOpen",DID_CLOSE:"textDocument/didClose",DOCUMENT_SYMBOL:"textDocument/documentSymbol",REFERENCES:"textDocument/references",DEFINITION:"textDocument/definition"},pr={NAMESPACE:3,CLASS:5,METHOD:6,CONSTRUCTOR:9,FUNCTION:12,OBJECT:19},Je={clientNotRunning:t=>`LSP request "${t}" attempted after the client stopped running`,clientStoppedBeforeResponse:"LSP client stopped before the server responded to the request",requestTimedOut:(t,e)=>`LSP request "${t}" timed out after ${e}ms`,serverExited:(t,e)=>`LSP server process exited (code=${String(t)}) before responding`+(e?` -- stderr: ${e}`:""),spawnFailed:(t,e)=>`Failed to spawn LSP server "${t}": ${e}`,initializeFailed:t=>`LSP server exited before completing its initialize handshake: ${t}`,batchTimedOut:t=>`Tier B LSP batch exceeded its ${t}ms timeout and was aborted`,resolutionFailedForFile:t=>`Tier B LSP resolution failed for ${t}`,skippedMultiLocationDefinition:t=>`Tier B forward resolution: first definition result for ${t} resolved outside the workspace; falling through to the next in-workspace result`,concurrencyClamped:(t,e)=>`Tier B LSP batch: maxConcurrentFiles=${t} clamped to ${e} (bounded by file count and maxOpenFiles)`,processShardsClamped:(t,e)=>`Tier B LSP batch: maxProcesses=${t} clamped to ${e} (bounded by file count)`,processShardsMemoryClamped:(t,e,r,n)=>`Tier B LSP batch: maxProcesses=${t} clamped to ${e} by memory (${r}MiB budget / ${n}MiB per shard)`};var cC=["PATH","HOME","USERPROFILE","PATHEXT","SYSTEMROOT","COMSPEC","LANG","LC_ALL","TERM"];function uC(){let t={};for(let e of cC){let r=process.env[e];r!==void 0&&(t[e]=r)}return t}function l_(){return["pipe","pipe","pipe"]}var dC=4e3,Yo=class{child;buffer=Buffer.alloc(0);nextId=1;pending=new Map;stopped=!1;stderrTail="";async start(e){let r=Hr(e.command),n=e.env??uC(),i=r&&Uu(e.command)?await xu(e.command,e.env):e.command,s=r?a_([i,...e.args].map(Gu).join(" "),{cwd:e.cwd,stdio:l_(),shell:!0,env:n}):a_(e.command,e.args,{cwd:e.cwd,stdio:l_(),env:n});this.child=s,s.stdout.on("data",o=>this.onData(o)),s.stderr.on("data",o=>this.onStderr(o)),s.on("exit",o=>this.onExit(o)),s.on("error",o=>this.onError(o)),await new Promise((o,a)=>{let l=!1;s.once("spawn",()=>{l=!0,o()}),s.once("error",c=>{l||(l=!0,a(c))})})}request(e,r,n){if(!this.child||this.stopped)return Promise.reject(new Error(Je.clientNotRunning(e)));let i=this.nextId++;return new Promise((s,o)=>{let a=n>0?setTimeout(()=>{this.pending.delete(i),o(new Error(Je.requestTimedOut(e,n)))},n):void 0;this.pending.set(i,{resolve:l=>{a&&clearTimeout(a),s(l)},reject:l=>{a&&clearTimeout(a),o(l)}}),this.write({jsonrpc:dn.JSON_RPC_VERSION,id:i,method:e,params:r})})}notify(e,r){!this.child||this.stopped||this.write({jsonrpc:dn.JSON_RPC_VERSION,method:e,params:r})}async stop(){if(!this.child||this.stopped)return;this.stopped=!0;let e=this.child;this.child=void 0,this.rejectAllPending(new Error(Je.clientStoppedBeforeResponse)),this.buffer=Buffer.alloc(0),this.stderrTail="",e.stdout.removeAllListeners("data"),e.stderr.removeAllListeners("data"),e.removeAllListeners("exit"),e.removeAllListeners("error"),e.removeAllListeners("spawn"),e.on("error",()=>{});try{e.stdin.end()}catch{}try{e.stdin.destroy(),e.stdout.destroy(),e.stderr.destroy()}catch{}try{e.kill()}catch{}try{e.unref()}catch{}}write(e){let r=JSON.stringify(e),n=`${dn.CONTENT_LENGTH_HEADER_PREFIX}${Buffer.byteLength(r,K)}`+dn.HEADER_BODY_SEPARATOR;this.child.stdin.write(n+r,K)}onData(e){for(this.buffer=Buffer.concat([this.buffer,e]);;)if(!this.tryConsumeOneMessage())return}tryConsumeOneMessage(){let e=this.buffer.indexOf(dn.HEADER_BODY_SEPARATOR);if(e===-1)return!1;let r=this.buffer.subarray(0,e).toString(K),n=/Content-Length:\s*(\d+)/i.exec(r),i=e+dn.HEADER_BODY_SEPARATOR.length;if(!n)return this.buffer=this.buffer.subarray(i),this.buffer.length>0;let s=Number(n[1]);if(this.buffer.length<i+s)return!1;let o=this.buffer.subarray(i,i+s).toString(K);return this.buffer=this.buffer.subarray(i+s),this.handleMessage(o),!0}handleMessage(e){let r;try{r=JSON.parse(e)}catch{return}if(r.id===void 0)return;let n=this.pending.get(r.id);n&&(this.pending.delete(r.id),r.error?n.reject(new Error(r.error.message)):n.resolve(r.result))}onStderr(e){this.stderrTail=(this.stderrTail+e.toString(K)).slice(-dC)}onExit(e){this.stopped=!0,this.rejectAllPending(new Error(Je.serverExited(e,this.stderrTail||void 0)))}onError(e){this.stopped=!0,this.rejectAllPending(e)}rejectAllPending(e){for(let r of this.pending.values())r.reject(e);this.pending.clear()}};import Wi from"fs";import Ye from"path";var pC=[{languageId:B.RUST,basenames:[oe.CARGO_TOML],suffixes:[]},{languageId:B.GO,basenames:[oe.GO_MOD],suffixes:[]},{languageId:B.TYPESCRIPT,basenames:[oe.PACKAGE_JSON,oe.TSCONFIG_JSON,oe.JSCONFIG_JSON],suffixes:[]},{languageId:B.PYTHON,basenames:[oe.PYPROJECT_TOML,"setup.py","setup.cfg"],suffixes:[]},{languageId:B.CSHARP,basenames:[],suffixes:[".csproj",".sln",".slnx"]},{languageId:B.JAVA,basenames:["pom.xml","build.gradle","build.gradle.kts"],suffixes:[]},{languageId:B.CPP,basenames:["CMakeLists.txt","meson.build","BUILD","Makefile"],suffixes:[]},{languageId:B.PHP,basenames:["composer.json"],suffixes:[]},{languageId:B.RUBY,basenames:["Gemfile"],suffixes:[".gemspec"]}];function gC(t,e,r){let n=r.get(t);if(n!==void 0)return n;let i=!1;if(e.basenames.length>0&&(i=e.basenames.some(s=>Wi.existsSync(Ye.join(t,s)))),!i&&e.suffixes.length>0)try{i=Wi.readdirSync(t).some(s=>e.suffixes.some(o=>s.endsWith(o)))}catch{i=!1}return r.set(t,i),i}function fC(t,e,r,n){let i=Ye.dirname(Ye.join(t,e));for(;;){if(gC(i,r,n))return i;if(i===t)return t;let s=Ye.dirname(i);if(s===i)return t;i=s}}function hC(t){let e=$o(t,oe.CARGO_TOML);if(e===void 0)return[];let r=[],n="";for(let i of e.split(/\r?\n/)){let s=i.trim(),o=s.match(/^\[(.+)\]$/);if(o){n=o[1].trim().toLowerCase();continue}if(n==="workspace"){for(let a of s.matchAll(/"([^"]+)"/g))r.push(a[1]);continue}if(n.includes("dependencies")||n.startsWith("patch")||n.startsWith("replace"))for(let a of s.matchAll(/path\s*=\s*"([^"]+)"/g))r.push(a[1])}return r.map(i=>u_(t,i))}function mC(t){let e=$o(t,oe.GO_MOD);if(e===void 0)return[];let r=[];for(let n of e.split(/\r?\n/)){let i=n.trim().match(/^replace\s+\S+\s+=>\s+(\S+)\s*$/);if(!i)continue;let s=i[1];!s.startsWith(".")&&!Ye.isAbsolute(s)||r.push(s)}return r.map(n=>u_(t,n))}function _C(t){return[...SC(t),...TC(t)]}function EC(t,e){if(!e.includes("*"))return[Ye.resolve(t,e)];let r=Ye.resolve(t,Ye.dirname(e)),n=Ye.basename(e);try{return Wi.readdirSync(r).filter(i=>n==="*"||i.includes(n.slice(0,n.indexOf("*")))).map(i=>Ye.join(r,i))}catch{return[]}}function SC(t){let e=c_(t,oe.PACKAGE_JSON);if(e===void 0)return[];let r=e.workspaces,n=Array.isArray(r)?r:typeof r=="object"&&r!==null&&Array.isArray(r.packages)?r.packages:[],i=[];for(let s of n)typeof s=="string"&&i.push(...EC(t,s));return i}function TC(t){let e=c_(t,oe.TSCONFIG_JSON);if(e===void 0)return[];let r=[],n=e.references;if(Array.isArray(n))for(let s of n){if(typeof s!="object"||s===null)continue;let o=s.path;typeof o=="string"&&r.push(Ye.resolve(t,o))}let i=e.extends;return typeof i=="string"&&r.push(Ye.resolve(t,i)),r}function AC(t){let e=[],r=[];try{r=Wi.readdirSync(t)}catch{return e}for(let n of r){if(!n.endsWith(".csproj"))continue;let i=$o(t,n);if(i!==void 0)for(let s of i.matchAll(/<ProjectReference[^>]*Include\s*=\s*"([^"]+)"/g)){let o=Ye.resolve(t,s[1].split("\\").join("/"));e.push(Ye.dirname(o))}}return e}function $o(t,e){try{return Wi.readFileSync(Ye.join(t,e),"utf8")}catch{return}}function c_(t,e){let r=$o(t,e);if(r!==void 0)try{let n=JSON.parse(r);return typeof n=="object"&&n!==null&&!Array.isArray(n)?n:void 0}catch{return}}function u_(t,e){return Ye.normalize(Ye.resolve(t,e))}function RC(t,e){switch(e){case B.RUST:return hC(t);case B.GO:return mC(t);case B.TYPESCRIPT:return _C(t);case B.CSHARP:return AC(t);default:return[]}}function OC(t){let e=new Map(t.map((l,c)=>[l.root,c])),r=new Map,n=new Map;for(let l of t){let c=[...new Set(l.deps.filter(u=>u!==l.root))].filter(u=>e.has(u)).sort();n.set(l.root,c.length);for(let u of c){let p=r.get(u)??[];p.push(l.root),r.set(u,p)}}let i=t.filter(l=>n.get(l.root)===0).map(l=>l.root).sort(),s=[],o=new Set;for(;i.length>0;){let l=i.shift();if(!o.has(l)){o.add(l),s.push(t[e.get(l)]);for(let c of(r.get(l)??[]).sort())o.has(c)||(n.set(c,n.get(c)-1),n.get(c)===0&&i.push(c));i.sort()}}let a=t.filter(l=>!o.has(l.root)).sort((l,c)=>l.root.localeCompare(c.root));return[...s,...a]}function d_(t){let e=Ye.resolve(t.workspaceRoot),r=pC.find(a=>a.languageId===t.languageId)??null,n=new Map,i=new Map,s=new Map;for(let a of t.files){let l=r?fC(e,a,r,n):e;s.set(a,l);let c=i.get(l);c?c.push(a):i.set(l,[a])}let o=[];for(let[a,l]of i)o.push({root:a,files:l,deps:r?RC(a,t.languageId):[]});return{groups:OC(o),fileToProjectRoot:s}}var IC=12e4,LC=3e4,NC=200,CC=512,PC=.25,Wo=new Set([pr.FUNCTION,pr.METHOD,pr.CONSTRUCTOR,pr.CLASS]),DC=new Set([pr.CLASS]);function f_(t,e){return e.has(t)}function qn(t){return t.split("\\").join("/")}var zo=class extends Error{};function vC(t){return"location"in t}function bC(t){return t?t.map(e=>vC(e)?{name:e.name,kind:e.kind,range:e.location.range,selectionRange:e.location.range}:e):[]}function Bu(t,e){return e.normalizeSymbolName?e.normalizeSymbolName(t):t}function wC(t,e){let r=e.line>t.start.line||e.line===t.start.line&&e.character>=t.start.character,n=e.line<t.end.line||e.line===t.end.line&&e.character<=t.end.character;return r&&n}function jo(t,e,r,n){for(let i of t){if(!wC(i.range,e))continue;let s=f_(i.kind,r)?i.name:n;return(i.children?jo(i.children,e,r,s):void 0)??{symbol:i,containerName:n}}}function Vo(t,e,r){let n=[];for(let i of t)if(Wo.has(i.kind)&&n.push({symbol:i,containerName:r}),i.children){let s=f_(i.kind,e)?i.name:r;n.push(...Vo(i.children,e,s))}return n}var Ge=class{name;config={};logger;createClient;languageConfig;containmentKinds;constructor(e,r,n=()=>new Yo){this.languageConfig=e,this.name=e.name,this.logger=r??fe(),this.createClient=n,this.containmentKinds=e.containmentSymbolKinds??DC}configure(e){this.config=e}get requestTimeoutMs(){return this.config.timeoutMs??LC}get maxOpenFiles(){return this.config.maxOpenFiles??NC}get maxConcurrentFiles(){return this.config.maxConcurrentFiles??1}get maxProcesses(){if(this.config.maxProcesses!==void 0)return this.config.maxProcesses;let e=Math.floor(this.maxProcessMemoryMb()/this.processMemoryEstimateMb());return Math.max(1,Math.min(Hu.availableParallelism(),e))}processMemoryEstimateMb(){return this.config.processMemoryEstimateMb??this.languageConfig.processMemoryEstimateMb??CC}maxProcessMemoryMb(){return this.config.maxProcessMemoryMb!==void 0?this.config.maxProcessMemoryMb:Math.max(Math.round(Hu.totalmem()/1024/1024*PC),this.processMemoryEstimateMb())}effectiveConcurrency(e){let r=this.maxConcurrentFiles,n=Math.max(1,Math.min(r,e,this.maxOpenFiles-1));return n!==r&&this.logger.debug(Je.concurrencyClamped(r,n)),n}effectiveProcesses(e){let r=this.maxProcesses,n=Math.floor(this.maxProcessMemoryMb()/this.processMemoryEstimateMb()),i=Hu.availableParallelism(),s=Math.max(1,Math.min(r,e,i,n));return s!==r&&(this.logger.debug(Je.processShardsClamped(r,s)),s<r&&n<Math.min(r,e,i)&&this.logger.debug(Je.processShardsMemoryClamped(r,s,this.maxProcessMemoryMb(),this.processMemoryEstimateMb()))),s}async checkAvailability(e){let r=await this.languageConfig.checkPreflight(e,{binary:this.config.binaryOverride,args:this.config.argsOverride});return r.ready?{available:!0}:{available:!1,reason:r.reason}}async resolveEdges(e){if(e.files.length===0)return{edges:[],filesProcessed:[],filesFailed:[]};let r=this.config.timeoutMs??IC,n=this.effectiveProcesses(e.files.length);if(n<=1){let o=this.createClient();return this.runBatch(o,e,r)}let i=this.buildProjectShards(e,n),s=await Promise.all(i.map(o=>{let a=this.createClient();return this.runBatch(a,o,r)}));return this.mergeShardOutcomes(s,e.files)}languageIdFor(e){return this.languageConfig.languageIdByExtension[pn.extname(e)]??this.languageConfig.defaultLanguageId}buildProjectShards(e,r){let i=d_({workspaceRoot:e.workspaceRoot,languageId:this.languageConfig.tierBLanguageId,files:e.files}).groups,s=(d,f)=>{let m={};for(let _ of f){let I=e.callsByFile?.[_];I&&(m[_]=I)}return{workspaceRoot:e.workspaceRoot,serverRoot:d,files:f,callsByFile:m}};if(i.length<=r)return i.map(d=>s(d.root,d.files));let o=[...i].sort((d,f)=>d.files.length-f.files.length||d.root.localeCompare(f.root)),a=r-1,l=new Set(o.slice(-a).map(d=>d.root)),c=[],u=[];for(let d of i)l.has(d.root)?c.push(s(d.root,d.files)):u.push(...d.files);let p=[...c];return u.length>0&&p.push(s(e.workspaceRoot,u)),p}mergeShardOutcomes(e,r){let n=[],i=new Set,s=new Map,o=0;for(let u=0;u<e.length;u++){let p=e[u];for(let d of p.edges)n.push(d);for(let d of p.filesProcessed)i.add(d);for(let d of p.filesFailed)s.set(d.file,d);p.unavailableReason&&o++}n.sort((u,p)=>(u.sourceNodeKey+"->"+u.targetNodeKey).localeCompare(p.sourceNodeKey+"->"+p.targetNodeKey));let{filesProcessed:a,filesFailed:l}=this.reorderFiles(r,i,s),c={edges:n,filesProcessed:a,filesFailed:l};return o===e.length&&e.length>0&&(c.unavailableReason=e.find(u=>u.unavailableReason)?.unavailableReason),c}reorderFiles(e,r,n){let i=[],s=[];for(let o of e)r.has(o)?i.push(o):n.has(o)&&s.push(n.get(o));return{filesProcessed:i,filesFailed:s}}async runBatch(e,r,n){let{workspaceRoot:i,files:s,callsByFile:o}=r,a=r.serverRoot??i,l=await this.languageConfig.resolveBinary(i,{binary:this.config.binaryOverride,args:this.config.argsOverride});try{await e.start({command:l.command,args:l.args,cwd:a,env:l.env})}catch(u){return{edges:[],filesProcessed:[],filesFailed:[],unavailableReason:Je.spawnFailed(l.command,u instanceof Error?u.message:String(u))}}try{await this.initializeSession(e,a)}catch(u){let p=u instanceof Error?u.message:String(u);await this.shutdownSession(e);let d=this.languageConfig.unavailableReasonForUnresolvableBinary;return!l.locallyResolved&&d?(this.logger.debug(Je.initializeFailed(p)),{edges:[],filesProcessed:[],filesFailed:[],unavailableReason:d}):{edges:[],filesProcessed:[],filesFailed:[],unavailableReason:Je.initializeFailed(p)}}await this.waitForColdStart(e,i,s);let c=n>0?Date.now()+n:void 0;try{return await this.processAllFiles(e,i,s,o,c,n)}finally{await this.shutdownSession(e)}}async settleColdStart(){let e=this.config.coldStartSettleMs??this.languageConfig.coldStartSettleMs??0;e>0&&await new Promise(r=>setTimeout(r,e))}async waitForColdStart(e,r,n){await this.settleColdStart(),(this.config.coldStartSettleMs??this.languageConfig.coldStartSettleMs??0)>0&&await this.waitForServerReady(e,r,n)}async waitForServerReady(e,r,n){let i=this.config.coldStartPollMs??5e3,s=this.config.coldStartMaxWaitMs??12e4,o=Date.now();for(;;){if(await this.probeServerReady(e,r,n)||Date.now()-o>=s)return;await new Promise(c=>setTimeout(c,i))}}async probeServerReady(e,r,n){let s={openFileCache:new Map,inFlightOpens:new Map,pinnedPaths:new Set,usedNodeKeysByFile:new Map};try{let o=!1;for(let a=0;a<Math.min(n.length,12);a++){let l=await this.openAndGetSymbols(e,r,n[a],s),c=Vo(l.symbols,this.containmentKinds);if(c.length===0)continue;if(o=!0,(await Promise.all(c.map(({symbol:p})=>e.request(Ut.REFERENCES,{textDocument:{uri:l.uri},position:p.selectionRange.start,context:{includeDeclaration:!1}},this.requestTimeoutMs)))).some(p=>(p?.length??0)>0))return!0}return o?!1:n.length<=12}finally{for(let o of[...s.openFileCache.values()])this.closeOpenFile(e,o,s.openFileCache)}}async initializeSession(e,r){let n=p_(r).toString();await e.request(Ut.INITIALIZE,{processId:process.pid,rootUri:n,capabilities:{textDocument:{documentSymbol:{hierarchicalDocumentSymbolSupport:!0}}},workspaceFolders:[{uri:n,name:pn.basename(r)}],...this.languageConfig.initializationOptions?{initializationOptions:this.languageConfig.initializationOptions}:{}},this.requestTimeoutMs),e.notify(Ut.INITIALIZED,{})}async shutdownSession(e){try{await e.request(Ut.SHUTDOWN,null,this.requestTimeoutMs),e.notify(Ut.EXIT,{})}catch{}finally{await e.stop()}}async processAllFiles(e,r,n,i,s,o){let a={openFileCache:new Map,inFlightOpens:new Map,pinnedPaths:new Set,usedNodeKeysByFile:new Map},l=new Array(n.length),c=0,u=!1,p=async()=>{for(;;){if(u)return;let L=s!==void 0?s-Date.now():void 0;if(L!==void 0&&L<=0){u=!0;return}let N=c++;if(N>=n.length)return;let w=n[N];a.pinnedPaths.add(w);try{let q=await this.runOneSlot(e,r,w,i,a,L,o);l[N]=q,!q.ok&&q.deadlineExceeded&&(u=!0)}finally{a.pinnedPaths.delete(w)}}},d=this.effectiveConcurrency(n.length);await Promise.allSettled(Array.from({length:d},()=>p()));let f=[],m=new Set,_=[],I=[];for(let L=0;L<n.length;L++){let N=l[L];if(N)if(N.ok){_.push(n[L]);for(let w of N.edges){let q=`${w.sourceNodeKey}->${w.targetNodeKey}`;m.has(q)||(m.add(q),f.push(w))}}else I.push({file:n[L],reason:N.reason,retryable:N.deadlineExceeded})}return u&&this.markUnreachedFilesFailed(n,_,I,o),{edges:f,filesProcessed:_,filesFailed:I,...u?{unavailableReason:Je.batchTimedOut(o)}:{}}}raceAgainstDeadline(e,r){return new Promise((n,i)=>{let s=setTimeout(()=>i(new zo),r);s.unref?.(),e.then(o=>{clearTimeout(s),n(o)},o=>{clearTimeout(s),i(o)})})}async runOneSlot(e,r,n,i,s,o,a){try{let l=o!==void 0?await this.raceAgainstDeadline(this.processOneFile(e,r,n,i,s),o):await this.processOneFile(e,r,n,i,s);return this.closeAndEvict(e,n,s),{ok:!0,edges:l}}catch(l){if(l instanceof zo)return{ok:!1,deadlineExceeded:!0,reason:Je.batchTimedOut(a)};let c=l instanceof Error?l.message:String(l);return this.logger.warn(Je.resolutionFailedForFile(n),{error:c}),this.closeAndEvict(e,n,s),{ok:!1,deadlineExceeded:!1,reason:c}}}closeOpenFile(e,r,n){n.delete(r.relativePath),e.notify(Ut.DID_CLOSE,{textDocument:{uri:r.uri}})}closeAndEvict(e,r,n){let i=n.openFileCache.get(r);i&&this.closeOpenFile(e,i,n.openFileCache)}markUnreachedFilesFailed(e,r,n,i){let s=new Set([...r,...n.map(o=>o.file)]);for(let o of e)s.has(o)||n.push({file:o,reason:Je.batchTimedOut(i),retryable:!0})}qualifiedContainerName(e){if(!(!this.languageConfig.supportsQualifiedContainment||!e))return Bu(e,this.languageConfig)}resolveNodeKeyForFile(e,r,n,i,s,o){let a=e.usedNodeKeysByFile.get(r);if(!a){a={used:new Set([r]),resolved:new Map},e.usedNodeKeysByFile.set(r,a);let p=[...Vo(n,this.containmentKinds)].sort((d,f)=>d.symbol.selectionRange.start.line-f.symbol.selectionRange.start.line);for(let{symbol:d,containerName:f}of p){let m=`${d.name}@${d.selectionRange.start.line}`;if(a.resolved.has(m))continue;let _=un(a.used,Bi(r,Bu(d.name,this.languageConfig),this.qualifiedContainerName(f)),d.selectionRange.start.line);a.used.add(_),a.resolved.set(m,_)}}let l=`${i}@${s}`,c=a.resolved.get(l);if(c)return c;let u=un(a.used,Bi(r,Bu(i,this.languageConfig),this.qualifiedContainerName(o)),s);return a.used.add(u),a.resolved.set(l,u),u}async processOneFile(e,r,n,i,s){let o=i?.[n];return this.languageConfig.definitionResolution==="forward"&&o&&o.length>0?this.processOneFileForward(e,r,n,o,s):this.processOneFileReverse(e,r,n,s)}async processOneFileReverse(e,r,n,i){let s=await this.openAndGetSymbols(e,r,n,i),o=Vo(s.symbols,this.containmentKinds),a=await Promise.all(o.map(({symbol:c})=>e.request(Ut.REFERENCES,{textDocument:{uri:s.uri},position:c.selectionRange.start,context:{includeDeclaration:!1}},this.requestTimeoutMs))),l=[];for(let c=0;c<o.length;c++){let{symbol:u,containerName:p}=o[c],d=a[c]??[],f=qn(this.resolveNodeKeyForFile(i,n,s.symbols,u.name,u.selectionRange.start.line,p));for(let m of d){let _=await this.resolveReferenceEdge(e,r,m,f,n,i);_&&l.push(_)}}return l}async processOneFileForward(e,r,n,i,s){let o=await this.openAndGetSymbols(e,r,n,s),a=[],l=await Promise.all(i.map(({startLine:c,startColumn:u})=>e.request(Ut.DEFINITION,{textDocument:{uri:o.uri},position:{line:c,character:u}},this.requestTimeoutMs)));for(let c=0;c<i.length;c++){let{startLine:u,startColumn:p}=i[c],d=await this.resolveFirstDefinitionTarget(e,r,n,l[c],s);if(d===void 0)continue;let f=jo(o.symbols,{line:u,character:p},this.containmentKinds),m=f&&Wo.has(f.symbol.kind)?qn(this.resolveNodeKeyForFile(s,n,o.symbols,f.symbol.name,f.symbol.selectionRange.start.line,f.containerName)):n;m!==d&&a.push({sourceNodeKey:m,targetNodeKey:d,source:ml.LSP})}return a}async resolveFirstDefinitionTarget(e,r,n,i,s){if(!i)return;let o=Array.isArray(i)?i:[i];for(let a=0;a<o.length;a++){let l=await this.resolveTargetNodeKey(e,r,n,o[a],s);if(l!==void 0)return a>0&&this.logger.debug(Je.skippedMultiLocationDefinition(n)),l}}async resolveTargetNodeKey(e,r,n,i,s){let o=pn.relative(r,g_(i.uri));if(pn.isAbsolute(o)||o.startsWith(".."))return;let a=qn(o);if(a===n)return;let l=await this.openAndGetSymbols(e,r,a,s),c=jo(l.symbols,i.range.start,this.containmentKinds);return c&&Wo.has(c.symbol.kind)?qn(this.resolveNodeKeyForFile(s,a,l.symbols,c.symbol.name,c.symbol.selectionRange.start.line,c.containerName)):a}async resolveReferenceEdge(e,r,n,i,s,o){let a=pn.relative(r,g_(n.uri));if(pn.isAbsolute(a)||a.startsWith(".."))return;let l=qn(a);if(l===s)return;let c=await this.openAndGetSymbols(e,r,l,o),u=jo(c.symbols,n.range.start,this.containmentKinds);return{sourceNodeKey:u&&Wo.has(u.symbol.kind)?qn(this.resolveNodeKeyForFile(o,l,c.symbols,u.symbol.name,u.symbol.selectionRange.start.line,u.containerName)):l,targetNodeKey:i,source:ml.LSP}}async openAndGetSymbols(e,r,n,i){let s=i.openFileCache,o=s.get(n);if(o)return s.delete(n),s.set(n,o),o;let a=i.inFlightOpens.get(n);if(a)return a;let l=this.doOpenAndGetSymbols(e,r,n,i).finally(()=>i.inFlightOpens.delete(n));return i.inFlightOpens.set(n,l),l}pickEvictionVictim(e){for(let[r,n]of e.openFileCache)if(!e.pinnedPaths.has(r))return n}async doOpenAndGetSymbols(e,r,n,i){for(;i.openFileCache.size+i.inFlightOpens.size>=this.maxOpenFiles;){let p=this.pickEvictionVictim(i);if(!p)break;this.closeOpenFile(e,p,i.openFileCache)}let s=pn.join(r,n),o=await yC.readFile(s,K),a=p_(s).toString();e.notify(Ut.DID_OPEN,{textDocument:{uri:a,languageId:this.languageIdFor(n),version:1,text:o}});let l=await e.request(Ut.DOCUMENT_SYMBOL,{textDocument:{uri:a}},this.requestTimeoutMs),c=bC(l),u={relativePath:n,uri:a,symbols:c};return i.openFileCache.set(n,u),u}};var Jo="typescript",FC={".ts":Jo,".mts":Jo,".cts":Jo,".tsx":"typescriptreact",".js":"javascript",".mjs":"javascript",".cjs":"javascript",".jsx":"javascriptreact"},MC={name:Ct.PACKAGE_NAME,tierBLanguageId:B.TYPESCRIPT,languageIdByExtension:FC,defaultLanguageId:Jo,resolveBinary:Ho,checkPreflight:o_,supportsQualifiedContainment:!0,initializationOptions:{maxTsServerMemory:Uo},definitionResolution:"forward",unavailableReasonForUnresolvableBinary:zn.binaryUnresolvable},qo=class extends Ge{constructor(e,r){super(MC,e,r)}};import kC from"fs";import GC from"path";import{execFile as xC}from"child_process";import{promisify as UC}from"util";var st={PACKAGE_NAME:"pyright",BINARY_NAME:"pyright-langserver",NPX_COMMAND:"npx",NPX_NO_INSTALL_FLAG:"--no-install",STDIO_ARG:"--stdio",VERSION_FLAG:"--version"},ji={binaryUnresolvable:"pyright-langserver is not resolvable (no local node_modules/.bin copy and `npx --no-install` cannot find pyright) -- install pyright as a project devDependency (`npm install -D pyright`) to enable LSP-precision cross-file edges for Python",markerFileMissing:"no pyproject.toml/requirements.txt found at the workspace root"};var h_=UC(xC),m_=5e3,HC=[oe.PYPROJECT_TOML,oe.REQUIREMENTS_TXT];function BC(t){return HC.some(e=>kC.existsSync(GC.join(t,e)))}async function KC(t){let e=[st.NPX_NO_INSTALL_FLAG,st.PACKAGE_NAME,st.VERSION_FLAG];try{if(Hr(st.NPX_COMMAND)){let r=await Jn(st.NPX_COMMAND,e,void 0);await h_(r,[],{cwd:t,timeout:m_,shell:!0})}else await h_(st.NPX_COMMAND,e,{cwd:t,timeout:m_});return!0}catch{return!1}}async function __(t,e){let r=BC(t),i=Zt(t,{packageName:st.PACKAGE_NAME,binaryName:st.BINARY_NAME,defaultArgs:[st.STDIO_ARG]},e).locallyResolved?!0:await KC(t);return r?i?{markerFileResolvable:r,lspBinaryResolvable:i,ready:!0}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:ji.binaryUnresolvable}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:ji.markerFileMissing}}var E_="python",YC={".py":E_},$C={name:st.PACKAGE_NAME,tierBLanguageId:B.PYTHON,languageIdByExtension:YC,defaultLanguageId:E_,resolveBinary:(t,e)=>Zt(t,{packageName:st.PACKAGE_NAME,binaryName:st.BINARY_NAME,defaultArgs:[st.STDIO_ARG]},e),checkPreflight:__,supportsQualifiedContainment:!0,definitionResolution:"reverse",unavailableReasonForUnresolvableBinary:ji.binaryUnresolvable},Qo=class extends Ge{constructor(e,r){super($C,e,r)}};import WC from"fs";import Yu from"path";import jC from"os";var gn={BINARY_NAME:"gopls",DEFAULT_ARGS:[]};function S_(t){let e=/^\((\*?)([^(]*)\)\.(.+)$/.exec(t);if(!e)return t;let[,,r,n]=e;return`${r}.${n}`}var Ku={binaryUnresolvable:"gopls is not resolvable (not found on PATH, $GOBIN, $GOPATH/bin, or ~/go/bin) -- install gopls to enable LSP-precision cross-file edges for Go",markerFileMissing:"no go.mod found at the workspace root"};function VC(t){return WC.existsSync(Yu.join(t,oe.GO_MOD))}function zC(){let t=[];return process.env.GOBIN&&t.push(process.env.GOBIN),process.env.GOPATH&&t.push(Yu.join(process.env.GOPATH,"bin")),t.push(Yu.join(jC.homedir(),"go","bin")),t}async function T_(t,e){let r=VC(t),i=(await Ce({binaryName:gn.BINARY_NAME,defaultArgs:gn.DEFAULT_ARGS,extraCandidateDirs:zC()},e)).locallyResolved;return r?i?{markerFileResolvable:r,lspBinaryResolvable:i,ready:!0}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Ku.binaryUnresolvable}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Ku.markerFileMissing}}var A_="go",JC={".go":A_},qC={name:gn.BINARY_NAME,tierBLanguageId:B.GO,languageIdByExtension:JC,defaultLanguageId:A_,resolveBinary:(t,e)=>Ce({binaryName:gn.BINARY_NAME,defaultArgs:gn.DEFAULT_ARGS},e),checkPreflight:T_,supportsQualifiedContainment:!1,normalizeSymbolName:S_,definitionResolution:"reverse"},Xo=class extends Ge{constructor(e,r){super(qC,e,r)}};import iP from"path";import sP from"os";import QC from"fs";import $u from"path";import XC from"os";var Zo=class{get env(){return process.env}get version(){return process.version}get platform(){return process.platform}get argv(){return process.argv}cwd(){return process.cwd()}};var Br={BINARY_NAME:"rust-analyzer",DEFAULT_ARGS:[]},ea={binaryUnresolvable:"rust-analyzer is not resolvable (not found on PATH, $CARGO_HOME/bin, or ~/.cargo/bin) -- install rust-analyzer to enable LSP-precision cross-file edges for Rust",binaryNotSpawnable:"rust-analyzer resolves on PATH but cannot be spawned -- usually a rustup proxy for a component that isn't installed; run `rustup component add rust-analyzer` (or install rust-analyzer) to enable LSP-precision cross-file edges for Rust",markerFileMissing:"no Cargo.toml found at the workspace root"};function R_(t){return t.startsWith("impl ")?t.slice(5):t}function ZC(t){return QC.existsSync($u.join(t,oe.CARGO_TOML))}var eP=new Zo;function tP(t){return $u.join(t.env.CARGO_HOME??$u.join(XC.homedir(),".cargo"),"bin")}var rP=5e3;async function nP(t,e){return t_(t,rP,e)}async function O_(t,e,r=eP){let n=ZC(t),i=await Ce({binaryName:Br.BINARY_NAME,defaultArgs:Br.DEFAULT_ARGS,extraCandidateDirs:[tP(r)]},e),s=i.locallyResolved,o=!s||await nP(i.command,i.fromUserOverride?void 0:[Br.BINARY_NAME]);return n?s?o?{markerFileResolvable:n,lspBinaryResolvable:s,lspBinarySpawnable:o,ready:!0}:{markerFileResolvable:n,lspBinaryResolvable:s,lspBinarySpawnable:o,ready:!1,reason:ea.binaryNotSpawnable}:{markerFileResolvable:n,lspBinaryResolvable:s,lspBinarySpawnable:o,ready:!1,reason:ea.binaryUnresolvable}:{markerFileResolvable:n,lspBinaryResolvable:s,lspBinarySpawnable:o,ready:!1,reason:ea.markerFileMissing}}var y_="rust",oP={".rs":y_};function aP(){return iP.join(sP.homedir(),".cargo","bin")}var lP={name:Br.BINARY_NAME,tierBLanguageId:B.RUST,languageIdByExtension:oP,defaultLanguageId:y_,resolveBinary:(t,e)=>Ce({binaryName:Br.BINARY_NAME,defaultArgs:Br.DEFAULT_ARGS,extraCandidateDirs:[aP()]},e),checkPreflight:O_,supportsQualifiedContainment:!0,containmentSymbolKinds:new Set([pr.CLASS,pr.OBJECT]),normalizeSymbolName:R_,definitionResolution:"reverse",coldStartSettleMs:8e3,processMemoryEstimateMb:2048},ta=class extends Ge{constructor(e,r){super(lP,e,r)}};import cP from"fs";import I_ from"path";var fn={BINARY_NAME:"clangd",DEFAULT_ARGS:[]},Wu={binaryUnresolvable:"clangd is not resolvable (not found on PATH or common LLVM install locations) -- install clangd to enable LSP-precision cross-file edges for C/C++",markerFileMissing:"no compile_commands.json/CMakeLists.txt found at the workspace root"};var uP=["compile_commands.json","CMakeLists.txt"];function dP(t){return uP.some(e=>cP.existsSync(I_.join(t,e)))}function pP(){return process.platform==="win32"?[I_.join(process.env.ProgramFiles??"C:\\Program Files","LLVM","bin")]:process.platform==="darwin"?["/opt/homebrew/opt/llvm/bin","/usr/local/opt/llvm/bin"]:["/usr/lib/llvm/bin","/usr/local/bin"]}async function L_(t,e){let r=dP(t),i=(await Ce({binaryName:fn.BINARY_NAME,defaultArgs:fn.DEFAULT_ARGS,extraCandidateDirs:pP()},e)).locallyResolved;return r?i?{markerFileResolvable:r,lspBinaryResolvable:i,ready:!0}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Wu.binaryUnresolvable}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Wu.markerFileMissing}}var gr="cpp",gP={".c":"c",".h":"c",".cpp":gr,".cxx":gr,".cc":gr,".hpp":gr,".hxx":gr,".hh":gr,".cu":gr,".cuh":gr},fP={name:fn.BINARY_NAME,tierBLanguageId:B.CPP,languageIdByExtension:gP,defaultLanguageId:gr,resolveBinary:(t,e)=>Ce({binaryName:fn.BINARY_NAME,defaultArgs:fn.DEFAULT_ARGS},e),checkPreflight:L_,supportsQualifiedContainment:!1,definitionResolution:"reverse"},ra=class extends Ge{constructor(e,r){super(fP,e,r)}};import hP from"fs";import na from"path";import N_ from"os";var hn={BINARY_NAME:"jdtls",DEFAULT_ARGS:[]},ju={binaryUnresolvable:"jdtls is not resolvable (not found on PATH or common install locations) -- install jdtls to enable LSP-precision cross-file edges for Java",markerFileMissing:"no pom.xml/build.gradle found at the workspace root"};var mP=["pom.xml","build.gradle"];function _P(t){return mP.some(e=>hP.existsSync(na.join(t,e)))}function EP(){return process.platform==="win32"?[na.join(N_.homedir(),"scoop","shims"),na.join(process.env.ChocolateyInstall??"C:\\ProgramData\\chocolatey","bin")]:process.platform==="darwin"?["/opt/homebrew/bin","/usr/local/bin"]:["/usr/local/bin","/usr/bin",na.join(N_.homedir(),".local","share","jdtls","bin")]}async function C_(t,e){let r=_P(t),i=(await Ce({binaryName:hn.BINARY_NAME,defaultArgs:hn.DEFAULT_ARGS,extraCandidateDirs:EP()},e)).locallyResolved;return r?i?{markerFileResolvable:r,lspBinaryResolvable:i,ready:!0}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:ju.binaryUnresolvable}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:ju.markerFileMissing}}var P_="java",SP={".java":P_},TP={name:hn.BINARY_NAME,tierBLanguageId:B.JAVA,languageIdByExtension:SP,defaultLanguageId:P_,resolveBinary:(t,e)=>Ce({binaryName:hn.BINARY_NAME,defaultArgs:hn.DEFAULT_ARGS},e),checkPreflight:C_,supportsQualifiedContainment:!0,definitionResolution:"reverse"},ia=class extends Ge{constructor(e,r){super(TP,e,r)}};import AP from"fs";import RP from"path";import OP from"os";var mn={BINARY_NAME:"csharp-ls",DEFAULT_ARGS:[]},Vu={binaryUnresolvable:"csharp-ls is not resolvable (not found on PATH or ~/.dotnet/tools) -- install it with `dotnet tool install --global csharp-ls` to enable LSP-precision cross-file edges for C#",markerFileMissing:"no solution (.sln/.slnx) or project file (*.csproj) found at the workspace root"};function yP(){return RP.join(OP.homedir(),".dotnet","tools")}function IP(t){try{return AP.readdirSync(t).some(r=>r.endsWith(".sln")||r.endsWith(".slnx")||r.endsWith(".csproj"))}catch{return!1}}async function D_(t,e){let r=IP(t),i=(await Ce({binaryName:mn.BINARY_NAME,defaultArgs:mn.DEFAULT_ARGS,extraCandidateDirs:[yP()]},e)).locallyResolved;return r?i?{markerFileResolvable:r,lspBinaryResolvable:i,ready:!0}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Vu.binaryUnresolvable}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Vu.markerFileMissing}}var v_="csharp",LP={".cs":v_},NP={name:mn.BINARY_NAME,tierBLanguageId:B.CSHARP,languageIdByExtension:LP,defaultLanguageId:v_,resolveBinary:(t,e)=>Ce({binaryName:mn.BINARY_NAME,defaultArgs:mn.DEFAULT_ARGS},e),checkPreflight:D_,supportsQualifiedContainment:!0,definitionResolution:"reverse"},sa=class extends Ge{constructor(e,r){super(NP,e,r)}};import CP from"fs";import PP from"path";import{execFile as DP}from"child_process";import{promisify as vP}from"util";var St={PACKAGE_NAME:"intelephense",NPX_COMMAND:"npx",NPX_NO_INSTALL_FLAG:"--no-install",STDIO_ARG:"--stdio",VERSION_FLAG:"--version"},Vi={binaryUnresolvable:"intelephense is not resolvable (no local node_modules/.bin copy and `npx --no-install` cannot find intelephense) -- install intelephense as a project devDependency (`npm install -D intelephense`) to enable LSP-precision cross-file edges for PHP",markerFileMissing:"no composer.json found at the workspace root"};var b_=vP(DP),w_=5e3;function bP(t){return CP.existsSync(PP.join(t,"composer.json"))}async function wP(t){let e=[St.NPX_NO_INSTALL_FLAG,St.PACKAGE_NAME,St.VERSION_FLAG];try{if(Hr(St.NPX_COMMAND)){let r=await Jn(St.NPX_COMMAND,e,void 0);await b_(r,[],{cwd:t,timeout:w_,shell:!0})}else await b_(St.NPX_COMMAND,e,{cwd:t,timeout:w_});return!0}catch{return!1}}async function F_(t,e){let r=bP(t),i=Zt(t,{packageName:St.PACKAGE_NAME,defaultArgs:[St.STDIO_ARG]},e).locallyResolved?!0:await wP(t);return r?i?{markerFileResolvable:r,lspBinaryResolvable:i,ready:!0}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Vi.binaryUnresolvable}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:Vi.markerFileMissing}}var _n="php",FP={".php":_n,".phtml":_n,".php3":_n,".php4":_n,".php5":_n,".phps":_n},MP={name:St.PACKAGE_NAME,tierBLanguageId:B.PHP,languageIdByExtension:FP,defaultLanguageId:_n,resolveBinary:(t,e)=>Zt(t,{packageName:St.PACKAGE_NAME,defaultArgs:[St.STDIO_ARG]},e),checkPreflight:F_,supportsQualifiedContainment:!0,definitionResolution:"reverse",unavailableReasonForUnresolvableBinary:Vi.binaryUnresolvable},oa=class extends Ge{constructor(e,r){super(MP,e,r)}};import kP from"fs";import Ju from"path";import GP from"os";var En={BINARY_NAME:"ruby-lsp",DEFAULT_ARGS:[]},zu={binaryUnresolvable:"ruby-lsp is not resolvable (not found on PATH, ~/.rbenv/shims, or ~/.rvm/bin) -- install ruby-lsp to enable LSP-precision cross-file edges for Ruby",markerFileMissing:"no Gemfile or Gemfile.lock found at the workspace root"};var xP=["Gemfile","Gemfile.lock"];function UP(t){return xP.some(e=>kP.existsSync(Ju.join(t,e)))}function HP(){if(process.platform==="win32")return[];let t=GP.homedir();return[Ju.join(t,".rbenv","shims"),Ju.join(t,".rvm","bin")]}async function M_(t,e){let r=UP(t),i=(await Ce({binaryName:En.BINARY_NAME,defaultArgs:En.DEFAULT_ARGS,extraCandidateDirs:HP()},e)).locallyResolved;return r?i?{markerFileResolvable:r,lspBinaryResolvable:i,ready:!0}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:zu.binaryUnresolvable}:{markerFileResolvable:r,lspBinaryResolvable:i,ready:!1,reason:zu.markerFileMissing}}var aa="ruby",BP={".rb":aa,".rake":aa,".gemspec":aa},KP={name:En.BINARY_NAME,tierBLanguageId:B.RUBY,languageIdByExtension:BP,defaultLanguageId:aa,resolveBinary:(t,e)=>Ce({binaryName:En.BINARY_NAME,defaultArgs:En.DEFAULT_ARGS},e),checkPreflight:M_,supportsQualifiedContainment:!0,definitionResolution:"reverse"},la=class extends Ge{constructor(e,r){super(KP,e,r)}};R.register(A.KnowledgeGitService,(t,e)=>new vs(t.resolve(A.GitProvider),e?.logger,e?.gitNetworkTimeoutMs));R.register(A.FileDiscovery,(t,e)=>new mo(t.resolve(A.GitProvider),e?.logger));R.register(A.ConfigScanner,(t,e)=>new Eo(e?.logger));R.register(A.VcsScanner,(t,e)=>new To(t.resolve(A.GitProvider),e?.logger));var YP=new Ro;R.register(A.AstProcessor,(t,e)=>new Oo(YP,e?.logger));R.register(A.GraphPersister,()=>new Do);R.register(A.TempFileManager,()=>(t,e)=>new bo(t,e));R.register(A.QueryService,(t,e)=>new Fo(e?.logger));R.register(A.TierBCoverageHintProvider,()=>({resolve:Ei}));R.register(A.ImpactService,(t,e)=>new kn(e?.logger));R.register(A.ChangeDetectionService,(t,e)=>new ws(t.resolve(A.ImpactService,e),e?.logger));R.register(A.TopologyBuilder,()=>new Mo);R.register(A.SnapshotRenderer,()=>new bs);R.register(A.HydrationService,(t,e)=>new Fs(t.resolve(A.GitProvider),e?.logger));R.register(A.SemanticDiffAnalyzer,(t,e)=>new Go(e?.logger));R.register(A.EdgeResolutionProviders,(t,e)=>({typescript:()=>new qo(e?.logger),python:()=>new Qo(e?.logger),go:()=>new Xo(e?.logger),rust:()=>new ta(e?.logger),cpp:()=>new ra(e?.logger),java:()=>new ia(e?.logger),csharp:()=>new sa(e?.logger),php:()=>new oa(e?.logger),ruby:()=>new la(e?.logger)}));var Kr={METHOD_POST:"POST",HEADER_AUTHORIZATION:"Authorization",HEADER_CONTENT_TYPE:"Content-Type",CONTENT_TYPE_JSON:"application/json",bearerAuth:t=>`Bearer ${t}`};var Yr={CLIENT_USED_BEFORE_INITIALIZE:"FetchRemoteSyncClient used before initialize() was called",FETCH_L2_NODES_FAILED:"Failed to fetch remote L2 nodes",fetchL2NodesFailedWithReason:t=>`Failed to fetch remote L2 nodes: ${t}`,FETCH_L2_NODES_INVALID_JSON:"Failed to fetch remote L2 nodes: response body was not valid JSON",SYNC_PUSH_FAILED:"Sync push failed",syncPushFailedWithReason:t=>`Sync push failed: ${t}`,SYNC_PUSH_INVALID_JSON:"Sync push failed: response body was not valid JSON"};var qu={l2Nodes:t=>`/projects/${t}/l2-nodes`,SYNC_PUSH:"/sync/push"};var k_=3e4,zi=class{config;initialize(e){this.config=e}getConfig(){if(!this.config)throw new S(O.SYNC_FETCH_FAILED,Yr.CLIENT_USED_BEFORE_INITIALIZE);return this.config}async parseErrorBody(e){try{return(await e.json()).error??e.statusText}catch{return e.statusText}}async fetchRemoteL2Nodes(e){let{apiUrl:r,pat:n}=this.getConfig(),i;try{i=await fetch(`${r}${qu.l2Nodes(e)}`,{headers:{[Kr.HEADER_AUTHORIZATION]:Kr.bearerAuth(n)},signal:AbortSignal.timeout(k_)})}catch(s){throw S.wrap(O.SYNC_FETCH_FAILED,Yr.FETCH_L2_NODES_FAILED,s)}if(!i.ok){let s=await this.parseErrorBody(i);throw new S(O.SYNC_FETCH_FAILED,Yr.fetchL2NodesFailedWithReason(s))}try{return await i.json()}catch(s){throw S.wrap(O.SYNC_FETCH_FAILED,Yr.FETCH_L2_NODES_INVALID_JSON,s)}}async pushSyncEvents(e,r){let{apiUrl:n,pat:i}=this.getConfig(),s;try{s=await fetch(`${n}${qu.SYNC_PUSH}`,{method:Kr.METHOD_POST,headers:{[Kr.HEADER_CONTENT_TYPE]:Kr.CONTENT_TYPE_JSON,[Kr.HEADER_AUTHORIZATION]:Kr.bearerAuth(i)},body:JSON.stringify({projectId:Number(e),events:r}),signal:AbortSignal.timeout(k_)})}catch(o){throw S.wrap(O.SYNC_PUSH_FAILED,Yr.SYNC_PUSH_FAILED,o)}if(!s.ok){let o=await this.parseErrorBody(s);throw new S(O.SYNC_PUSH_FAILED,Yr.syncPushFailedWithReason(o))}try{return await s.json()}catch(o){throw S.wrap(O.SYNC_PUSH_FAILED,Yr.SYNC_PUSH_INVALID_JSON,o)}}};R.register(A.RemoteSyncClient,()=>()=>new zi);var ot={METHOD_POST:"POST",METHOD_GET:"GET",HEADER_CONTENT_TYPE:"Content-Type",HEADER_AUTHORIZATION:"Authorization",CONTENT_TYPE_JSON:"application/json",CONTENT_TYPE_EVENT_STREAM:"text/event-stream",SSE_DATA_PREFIX:"data: ",SSE_DONE_SENTINEL:"[DONE]",SSE_BLOCK_SEPARATOR:`
|
|
136
136
|
|
|
137
137
|
`,bearerAuth:t=>`Bearer ${t}`};var Tt={CLIENT_USED_BEFORE_INITIALIZE:"FetchLlmClient used before initialize() was called",CHAT_COMPLETION_FAILED:"Chat completion failed",chatCompletionFailedWithReason:t=>`Chat completion failed: ${t}`,CHAT_COMPLETION_INVALID_JSON:"Chat completion failed: response body was not valid JSON",CHAT_COMPLETION_STREAM_FAILED:"Chat completion stream failed",chatCompletionStreamFailedWithReason:t=>`Chat completion stream failed: ${t}`,CHAT_COMPLETION_STREAM_INVALID_JSON:"Chat completion stream failed: chunk was not valid JSON",AVAILABILITY_CHECK_FAILED:"Reachability check failed",availabilityCheckFailedWithReason:t=>`Reachability check failed: ${t}`,BRIDGE_PROBE_FAILED:"Tier C bridge probe failed",bridgeProbeFailedWithReason:t=>`Tier C bridge probe failed: ${t}`,bridgeProbeRejectedWithReason:(t,e)=>`Tier C bridge rejected the probe (HTTP ${t}): ${e}`};var G_={CHAT_COMPLETIONS:"/v1/chat/completions"};var U_=3e4,x_=4e3,Ji=class{config;initialize(e){this.config=e}getConfig(){if(!this.config)throw new S(O.LLM_NOT_INITIALIZED,Tt.CLIENT_USED_BEFORE_INITIALIZE);return this.config}async parseErrorBody(e){try{return(await e.json()).error??e.statusText}catch{return e.statusText}}buildCompletionsUrl(e){let r=e.endsWith("/")?e.slice(0,-1):e;return`${r.endsWith("/v1")?r.slice(0,-3):r}${G_.CHAT_COMPLETIONS}`}buildHeaders(e,r){let n={[ot.HEADER_CONTENT_TYPE]:ot.CONTENT_TYPE_JSON};return r&&(n.Accept=r),e.apiKey&&(n[ot.HEADER_AUTHORIZATION]=ot.bearerAuth(e.apiKey)),n}toWireToolCalls(e){if(e)return e.map(r=>({id:r.id,type:r.type,function:r.function}))}toWireMessage(e){return{role:e.role,content:e.content,...e.name!==void 0?{name:e.name}:{},...e.toolCallId!==void 0?{tool_call_id:e.toolCallId}:{},...e.toolCalls!==void 0?{tool_calls:this.toWireToolCalls(e.toolCalls)}:{}}}buildRequestBody(e,r){return{model:e.model,messages:e.messages.map(n=>this.toWireMessage(n)),...e.tools!==void 0?{tools:e.tools}:{},...e.toolChoice!==void 0?{tool_choice:e.toolChoice}:{},...e.temperature!==void 0?{temperature:e.temperature}:{},...e.maxTokens!==void 0?{max_tokens:e.maxTokens}:{},stream:r}}fromWireToolCalls(e){if(e)return e.map(r=>({id:r.id,type:r.type,function:r.function}))}fromWireMessage(e){return{role:e.role,content:e.content,...e.name!==void 0?{name:e.name}:{},...e.tool_call_id!==void 0?{toolCallId:e.tool_call_id}:{},...e.tool_calls!==void 0?{toolCalls:this.fromWireToolCalls(e.tool_calls)}:{}}}fromWireResult(e){return{id:e.id,model:e.model,choices:e.choices.map(r=>({index:r.index,message:this.fromWireMessage(r.message),finishReason:r.finish_reason}))}}fromWireChunk(e){return{id:e.id,model:e.model,choices:e.choices.map(r=>({index:r.index,delta:{...r.delta.role!==void 0?{role:r.delta.role}:{},...r.delta.content!==void 0?{content:r.delta.content}:{},...r.delta.tool_calls!==void 0?{toolCalls:this.fromWireToolCalls(r.delta.tool_calls)}:{}},finishReason:r.finish_reason}))}}async checkAvailability(){try{let e=this.getConfig();return await fetch(e.baseUrl,{method:ot.METHOD_GET,signal:AbortSignal.timeout(x_)}),{available:!0}}catch(e){let r=e instanceof Error?e.message:String(e);return{available:!1,reason:Tt.availabilityCheckFailedWithReason(r)}}}async checkBridgeReachability(e){try{let r=this.getConfig(),n=await fetch(this.buildCompletionsUrl(r.baseUrl),{method:ot.METHOD_POST,headers:this.buildHeaders(r),body:JSON.stringify({model:e,messages:[{role:Sr.USER,content:"ping"}],max_tokens:1,stream:!1}),signal:AbortSignal.timeout(x_)});if(!n.ok){let i=await this.parseErrorBody(n);return{available:!1,reason:Tt.bridgeProbeRejectedWithReason(n.status,i)}}return{available:!0}}catch(r){let n=r instanceof Error?r.message:String(r);return{available:!1,reason:Tt.bridgeProbeFailedWithReason(n)}}}async chatCompletion(e){let r=this.getConfig(),n;try{n=await fetch(this.buildCompletionsUrl(r.baseUrl),{method:ot.METHOD_POST,headers:this.buildHeaders(r),body:JSON.stringify(this.buildRequestBody(e,!1)),signal:AbortSignal.timeout(U_)})}catch(i){throw S.wrap(O.LLM_CHAT_COMPLETION_FAILED,Tt.CHAT_COMPLETION_FAILED,i)}if(!n.ok){let i=await this.parseErrorBody(n);throw n.status===429?new S(O.LLM_RATE_LIMITED,Tt.chatCompletionFailedWithReason(i)):n.status===401||n.status===403?new S(O.LLM_AUTH_FAILED,Tt.chatCompletionFailedWithReason(i)):new S(O.LLM_HTTP_FAILED,Tt.chatCompletionFailedWithReason(i))}try{let i=await n.json();return this.fromWireResult(i)}catch(i){throw S.wrap(O.LLM_INVALID_RESPONSE,Tt.CHAT_COMPLETION_INVALID_JSON,i)}}streamChatCompletion(e){let r=this.getConfig(),n=this.buildHeaders(r,ot.CONTENT_TYPE_EVENT_STREAM),i=JSON.stringify(this.buildRequestBody(e,!0)),s=this.buildCompletionsUrl(r.baseUrl),o=this.parseErrorBody.bind(this),a=this.fromWireChunk.bind(this);async function*l(){let c=await $P(s,n,i,o);if(!c.body)return;let u=c.body.getReader(),p=new TextDecoder,d="";for(;;){let{done:f,value:m}=await u.read();if(f)break;d+=p.decode(m,{stream:!0});let _;for(;(_=d.indexOf(ot.SSE_BLOCK_SEPARATOR))!==-1;){let I=d.slice(0,_);d=d.slice(_+ot.SSE_BLOCK_SEPARATOR.length);let L=WP(I,a);if(L.kind==="done")return;L.kind==="chunk"&&(yield L.chunk)}}}return l()}};async function $P(t,e,r,n){let i;try{i=await fetch(t,{method:ot.METHOD_POST,headers:e,body:r,signal:AbortSignal.timeout(U_)})}catch(s){throw S.wrap(O.LLM_CHAT_COMPLETION_FAILED,Tt.CHAT_COMPLETION_STREAM_FAILED,s)}if(!i.ok){let s=await n(i);throw new S(O.LLM_CHAT_COMPLETION_FAILED,Tt.chatCompletionStreamFailedWithReason(s))}return i}function WP(t,e){let r=t.trim();if(!r)return{kind:"skip"};let n=r.startsWith(ot.SSE_DATA_PREFIX)?r.slice(ot.SSE_DATA_PREFIX.length):r;if(n===ot.SSE_DONE_SENTINEL)return{kind:"done"};try{let i=JSON.parse(n);return{kind:"chunk",chunk:e(i)}}catch(i){throw S.wrap(O.LLM_STREAM_FAILED,Tt.CHAT_COMPLETION_STREAM_INVALID_JSON,i)}}R.register(A.LlmClient,()=>()=>new Ji);import nl from"process";import Cb from"crypto";import{z as Ad}from"zod";import qv from"fs";import Qv from"path";var H_={MISSING_MEMORY_KEY:(t,e)=>`docuviaApi: no "${t}" set in memory scope "${e}"`};var Pe={INITIALIZING:t=>`Initializing project in ${t}...`,INSTALLING_HOOK:"Installing post-commit hook...",INSTALLING_PRE_PUSH_HOOK:"Installing pre-push hook...",SCANNING_WORKSPACE:"Scanning workspace files...",PARSING_AST:"Parsing source files via AST...",INITIALIZING_TEMP_FILES:"Initializing temp file manager...",PERSISTING_GRAPH:"Persisting knowledge graph...",SNAPSHOTTING_KNOWLEDGE_BRANCH:"Packing initial knowledge graph onto the knowledge branch...",SNAPSHOT_AFTER_INIT_FAILED:"Failed to pack the knowledge graph onto the knowledge branch (non-fatal -- the local graph is intact; run `docuvia snapshot` manually or push to retry)",SUCCESS:"Project initialized successfully",ALREADY_INITIALIZED:"Project already initialized \u2014 skipped re-ingestion; run `docuvia analyze` to pick up new changes, or delete .docuvia/ to force a full re-init",PARTIAL_SUCCESS:(t,e)=>`Project initialized \u2014 ${t} of ${e} files failed to parse (see .docuvia/logs/init.log)`,SUCCESS_WITH_SKIPPED_OVERSIZED:t=>`Project initialized successfully \u2014 ${t} oversized file(s) skipped (see .docuvia/logs/init.log)`,OPEN_DB_FAILED:"Failed to open the local database",TEMP_FILE_MANAGER_INITIALIZED:"Temp file manager initialized",TEMP_FILE_MANAGER_INIT_FAILED:"Failed to initialize temp file manager (non-fatal)",CLEANING_UP_TEMP_FILES:"Cleaning up temp files on shutdown...",TEMP_FILE_CLEANUP_FAILED:"Temp file cleanup on shutdown failed",PARSE_FAILURES_OR_SKIPPED:"init completed with parse failures or skipped files"},$r={START:"init.start",SUMMARY:"init.summary",PARSE_FAILURE:"init.parse_failure",FILE_SKIPPED_OVERSIZED:"init.file_skipped_oversized",SNAPSHOT_AFTER_INIT_FAILED:"init.snapshot_after_init_failed",ALREADY_INITIALIZED:"init.already_initialized"};import B_ from"fs/promises";import K_ from"path";async function De(t,e,r){let n=K_.join(t,he,Tr,e);await B_.mkdir(K_.dirname(n),{recursive:!0}),await B_.appendFile(n,JSON.stringify({ts:new Date().toISOString(),...r})+`
|
|
138
138
|
`,K)}async function Qn(t,e){await De(t,$d,e)}async function Y_(t,e){await Qn(t,{event:$r.SUMMARY,...e})}async function $_(t,e,r){let{created:n}=await t.ensureKnowledgeBranch(e);r.info(Pe.INSTALLING_HOOK);let{installed:i}=await t.installPostCommitHook(e);r.info(Pe.INSTALLING_PRE_PUSH_HOOK);let{installed:s}=await t.installPrePushHook(e);return{branchCreated:n,hookInstalled:i,prePushHookInstalled:s}}import W_ from"path";import{pathToFileURL as jP}from"url";async function Xn(t,e,r){let n=t.getFirst();if(n)return n;let s=await e.getRemoteUrl(r)??jP(W_.resolve(r)).href;return t.getOrInsert({name:W_.basename(r),repoUrl:s})}async function ca(t){let[e,r,n]=await Promise.all([t.configScanner.scanConfigs(t.workspaceRoot),t.vcsScanner.extractHotspotTags(t.workspaceRoot),t.fileDiscovery.discoverFiles(t.workspaceRoot,t.filesRepo)]),i=new Set([...e.tags,...r]);return{filesToParse:n.filesToParse,skippedOversized:n.skippedOversized,tags:i,projectType:e.projectType}}async function Zn(t){let{astProcessor:e,graphPersister:r,store:n,workspaceRoot:i,projectId:s,filesToParse:o,skippedOversized:a,appendLogLine:l,logEvents:c}=t,{parsed:u,failures:p}=await e.processFiles(i,o),d=new Set(t.tags);for(let m of u)m.language&&d.add(m.language);for(let m of p)await l(i,{event:c.parseFailure,...m});for(let m of a)await l(i,{event:c.fileSkippedOversized,...m});let f=await r.persist({store:n,workspaceRoot:i,projectId:s,parsedResults:u,tags:Array.from(d)});return{parsedResults:u,failures:p,tags:d,callResolutionByFile:f.callResolutionByFile}}function qi(t){let e=t.meta.get(E.META_KEY_TIER_B_QUEUE);if(!e)return[];try{let r=JSON.parse(e);return Array.isArray(r)?r.filter(n=>n&&typeof n.file=="string"&&typeof n.commitSha=="string"):[]}catch{return[]}}function ei(t,e){if(e.length===0)return;let r=qi(t),n=new Map(r.map(i=>[i.file,i]));for(let i of e)n.set(i.file,i);t.meta.set(E.META_KEY_TIER_B_QUEUE,JSON.stringify(Array.from(n.values())))}async function ua(t){let{store:e,git:r,workspaceRoot:n,parsedResults:i}=t,s=await r.getHeadSha(n);if(!s)return;let o=i.map(a=>({file:a.file,commitSha:s}));await e.withWriteLock(()=>{e.meta.set(E.META_KEY_LAST_INGESTED_SOURCE_SHA,s),e.meta.set(E.META_KEY_NODE_KEY_FORMAT_VERSION,"2"),o.length>0&&ei(e,o)})}function VP(t){return JSON.stringify({byFile:t})}function da(t){let e=t.meta.get(E.META_KEY_CALL_RESOLUTION_STATS);if(!e)return{};try{return JSON.parse(e).byFile??{}}catch{return{}}}function j_(t,e){Object.keys(e).length!==0&&t.meta.set(E.META_KEY_CALL_RESOLUTION_STATS,VP(e))}function pa(t,e){Object.keys(e).length!==0&&j_(t,e)}function V_(t,e,r){let n=da(t);for(let i of r)delete n[i];for(let[i,s]of Object.entries(e))n[i]=s;j_(t,n)}function z_(t){let e=da(t);return{byFile:e,total:Ar(e)}}async function J_(t,e,r){try{let n=t(e,r);return await n.initialize(),r.info(Pe.TEMP_FILE_MANAGER_INITIALIZED,{tempDir:n.getTempDirPath()}),{tempFileManager:n,stop:()=>n.stopCleanup()}}catch(n){r.warn(Pe.TEMP_FILE_MANAGER_INIT_FAILED,{error:n?.message??String(n)});return}}function q_(t){let{filesRequested:e,filesParsed:r,filesFailed:n,failures:i,filesSkippedOversized:s}=t,o=n>0?Pe.PARTIAL_SUCCESS(n,e):s>0?Pe.SUCCESS_WITH_SKIPPED_OVERSIZED(s):Pe.SUCCESS;return{success:!0,partialFailure:n>0,message:o,filesRequested:e,filesParsed:r,filesFailed:n,failures:i,filesSkippedOversized:s,skippedExistingGraph:!1}}function Q_(){return{success:!0,partialFailure:!1,message:Pe.ALREADY_INITIALIZED,filesRequested:0,filesParsed:0,filesFailed:0,failures:[],filesSkippedOversized:0,skippedExistingGraph:!0}}import zP from"path";function ie(t){return zP.join(t,he,_i)}import Z_ from"fs/promises";import JP from"os";import qP from"path";var ga={SNAPSHOTTING:"Packing knowledge graph snapshot...",DB_NOT_FOUND:'Local database not found. Please run "docuvia init".'},ti={START:"snapshot.start",ERROR:"snapshot.error",SUMMARY:"snapshot.summary",TIER_B_FINALIZED:"snapshot.tierB.finalized"},X_="docuvia-snapshot-";async function ri(t,e,r){let n=R.resolve(A.SnapshotRenderer),i=e.graph.getAllNodes(),s=e.graph.getAllLinks(),o=await Z_.mkdtemp(qP.join(JP.tmpdir(),X_));try{let a=await n.render({outDir:o,l2Rows:i,linkRows:s,l3Rows:e.l3.getAllExportable()});return await e.withWriteLock(()=>{e.meta.set(E.META_KEY_KNOWLEDGE_PACK_PENDING,"true")}),await r.packSnapshotToKnowledgeBranch(t,o),await e.withWriteLock(()=>{e.meta.set(E.META_KEY_KNOWLEDGE_PACK_PENDING,"")}),a}finally{await Z_.rm(o,{recursive:!0,force:!0})}}var eE=["SIGTERM","SIGINT"],fa=class{constructor(e,r){this.workspaceRoot=e;this.logger=r}workspaceRoot;logger;async execute(){let{workspaceRoot:e,logger:r}=this;r.info(Pe.INITIALIZING(e)),await Qn(e,{event:$r.START,workspaceRoot:e});let n=R.resolve(A.GitProvider),i=R.resolve(A.KnowledgeGitService,{logger:r}),s=R.resolve(A.FileDiscovery,{logger:r}),o=R.resolve(A.ConfigScanner,{logger:r}),a=R.resolve(A.VcsScanner,{logger:r}),l=R.resolve(A.AstProcessor,{logger:r}),c=R.resolve(A.GraphPersister),u=R.resolve(A.TempFileManager),p=R.resolve(A.GraphStoreOpener),d;try{d=await p({dbPath:ie(e)})}catch(f){throw S.wrap(O.INIT_WORKFLOW_FAILED,Pe.OPEN_DB_FAILED,f)}try{let f=d.projects.getFirst(),{l2Nodes:m}=d.graph.count(),_=f!==void 0&&m>0;if(await $_(i,e,r),_)return r.info(Pe.ALREADY_INITIALIZED),await Qn(e,{event:$r.ALREADY_INITIALIZED,workspaceRoot:e}),Q_();let I=await Xn(d.projects,n,e);r.info(Pe.SCANNING_WORKSPACE);let L=await ca({configScanner:o,vcsScanner:a,fileDiscovery:s,filesRepo:d.files,workspaceRoot:e});r.info(Pe.PARSING_AST);let{parsedResults:N,failures:w,callResolutionByFile:q}=await Zn({astProcessor:l,graphPersister:c,store:d,workspaceRoot:e,projectId:I.id,filesToParse:L.filesToParse,skippedOversized:L.skippedOversized,tags:L.tags,appendLogLine:Qn,logEvents:{parseFailure:$r.PARSE_FAILURE,fileSkippedOversized:$r.FILE_SKIPPED_OVERSIZED}});r.info(Pe.PERSISTING_GRAPH),pa(d,q??{}),await ua({store:d,git:n,workspaceRoot:e,parsedResults:N}),r.info(Pe.SNAPSHOTTING_KNOWLEDGE_BRANCH);let Q=R.resolve(A.HydrationService,{logger:r});try{await ri(e,d,i),await Q.markSynced(e,d)}catch(M){r.warn(Pe.SNAPSHOT_AFTER_INIT_FAILED,{error:M instanceof Error?M.message:String(M)}),await Qn(e,{event:$r.SNAPSHOT_AFTER_INIT_FAILED,message:M instanceof Error?M.message:String(M)})}r.info(Pe.INITIALIZING_TEMP_FILES);let H=await J_(u,e,r),ne=QP(H,r);try{let M=L.filesToParse.length,ee=N.length,_e=w.length,C=L.skippedOversized.length;(_e>0||C>0)&&r.warn(Pe.PARSE_FAILURES_OR_SKIPPED,{filesRequested:M,filesParsed:ee,filesFailed:_e,filesSkippedOversized:C});let Te=q_({filesRequested:M,filesParsed:ee,filesFailed:_e,failures:w,filesSkippedOversized:C});return await Y_(e,{filesRequested:M,filesParsed:ee,filesFailed:_e,failures:w,filesSkippedOversized:C}),Te}finally{ne()}}finally{await d.close()}}};function QP(t,e){if(!t)return()=>{};let r=()=>{e.info(Pe.CLEANING_UP_TEMP_FILES),t.tempFileManager.cleanup().catch(n=>e.error(Pe.TEMP_FILE_CLEANUP_FAILED,{error:String(n)})).finally(()=>t.stop())};for(let n of eE)process.on(n,r);return()=>{for(let n of eE)process.removeListener(n,r)}}import tE from"fs/promises";var Sn={CLEANING:t=>`Cleaning ${t}...`,DELETED:"Cleaned .docuvia/local.db database.",NOT_FOUND:"No local database found to clean.",DELETE_FAILED:t=>`Failed to delete database at ${t}`,PATH_ESCAPES_WORKSPACE:(t,e)=>`Refusing to delete database at ${t}: resolved outside workspace ${e}`,DELETED_AT:t=>`Deleted local database at ${t}`},ha={START:"clean.start",SUMMARY:"clean.summary"};async function Qu(t,e){await De(t,Wd,e)}async function Xu(t,e){await Qu(t,{event:ha.SUMMARY,...e})}import Zu from"path";function ma(t,e){let r=Zu.resolve(e),n=Zu.resolve(t);return n===r||n.startsWith(`${r}${Zu.sep}`)}var _a=class{constructor(e,r){this.workspaceRoot=e;this.logger=r}workspaceRoot;logger;async execute(){let{workspaceRoot:e,logger:r}=this,n=ie(e);if(!ma(n,e))throw new S(O.CLEAN_WORKFLOW_FAILED,Sn.PATH_ESCAPES_WORKSPACE(n,e));r.info(Sn.CLEANING(n)),await Qu(e,{event:ha.START});let i=!0;try{await tE.access(n)}catch{i=!1}if(!i){let o={deleted:!1,message:Sn.NOT_FOUND};return await Xu(e,o),o}try{await tE.unlink(n)}catch(o){throw S.wrap(O.CLEAN_WORKFLOW_FAILED,Sn.DELETE_FAILED(n),o)}r.info(Sn.DELETED_AT(n));let s={deleted:!0,message:Sn.DELETED};return await Xu(e,s),s}};var Ea={GETTING_STATUS:"Getting status...",DB_NOT_FOUND:'Local database not found. Please run "docuvia init".'},Sa={START:"status.start",ERROR:"status.error",SUMMARY:"status.summary"};async function Ta(t,e){await De(t,jd,e)}var XP="ensureHydrated: automatic hydration refused; local.db left untouched (see reason)";async function Wr(t,e){let r=R.resolve(A.GraphStoreOpener),n;try{n=await r({dbPath:ie(t),readonly:!1})}catch{return}try{let i=R.resolve(A.HydrationService,{logger:e});if(await i.isStale(t,n)){let s=await i.hydrate(t,n);s.refused&&e.warn(XP,{refusalReason:s.refusalReason})}}finally{await n.close()}}var Tn={COMMIT_MESSAGE:"commitMessage",CONTRACT_SYMBOL:"contractSymbol"};function er(t){let e=t.meta.get(E.META_KEY_TIER_C_QUEUE);if(!e)return[];try{let r=JSON.parse(e);return Array.isArray(r)?r.filter(ZP):[]}catch{return[]}}function ZP(t){if(!t||typeof t!="object")return!1;let e=t;return(e.kind===Tn.COMMIT_MESSAGE||e.kind===Tn.CONTRACT_SYMBOL)&&typeof e.target=="string"&&typeof e.commitSha=="string"}function rE(t,e){if(e.length===0)return;let r=er(t),n=new Map(r.map(i=>[i.target,i]));for(let i of e)n.set(i.target,i);t.meta.set(E.META_KEY_TIER_C_QUEUE,JSON.stringify(Array.from(n.values())))}function nE(t,e){if(e.length===0)return;let r=new Set(e),n=er(t).filter(i=>!r.has(i.target));t.meta.set(E.META_KEY_TIER_C_QUEUE,JSON.stringify(n))}function iE(t,e,r){let n=er(t),i=n.findIndex(a=>a.target===e);if(i===-1)return{evicted:!1,failCount:0};let s=(n[i].failCount??0)+1;if(s>=r){let a=n.filter((l,c)=>c!==i);return t.meta.set(E.META_KEY_TIER_C_QUEUE,JSON.stringify(a)),{evicted:!0,failCount:s}}let o=n.slice();return o[i]={...o[i],failCount:s},t.meta.set(E.META_KEY_TIER_C_QUEUE,JSON.stringify(o)),{evicted:!1,failCount:s}}var Aa=class{constructor(e,r){this.workspaceRoot=e;this.logger=r}workspaceRoot;logger;async execute(){let{workspaceRoot:e,logger:r}=this;r.info(Ea.GETTING_STATUS),await Ta(e,{event:Sa.START}),await Wr(e,r);let n=R.resolve(A.GraphStoreOpener),i;try{i=await n({dbPath:ie(e),readonly:!0})}catch(s){if(s instanceof S&&s.code===O.DB_NOT_FOUND){let o=new S(O.DB_NOT_FOUND,Ea.DB_NOT_FOUND,s);throw await Ta(e,{event:Sa.ERROR,message:Ea.DB_NOT_FOUND}),o}throw s}try{let{l2Nodes:s,l3Nodes:o}=i.graph.count(),{totalFiles:a,processedFiles:l}=i.files.getTierBCoverage(),c={projects:i.projects.count(),l2Nodes:s,l3Nodes:o,tierBFilesProcessed:l,tierBFilesTotal:a,tierCQueued:er(i).length,graphFreshness:await this.resolveGraphFreshness(i)};return await Ta(e,{event:Sa.SUMMARY,...c}),c}finally{await i.close()}}async resolveGraphFreshness(e){try{if(!R.has(A.GitProvider))return"unknown";let n=await R.resolve(A.GitProvider).getHeadSha(this.workspaceRoot);if(!n)return"unknown";let i=e.meta.get(E.META_KEY_LAST_INGESTED_SOURCE_SHA);return i?i===n?"fresh":"stale":"unknown"}catch{return"unknown"}}};var An={STARTING:t=>`Starting sync for project ${t}...`,DB_NOT_FOUND:'Local database not found. Please run "docuvia init".',NOTHING_TO_SYNC:"Nothing to sync: no changed files detected.",NOTHING_NEW:t=>`Nothing new to sync (${t} module(s) skipped, no remote match).`,SYNCED:(t,e)=>`Synced ${t} decision(s), ${e} module(s) skipped.`},Rn={START:"sync.start",ERROR:"sync.error",SUMMARY:"sync.summary"};async function On(t,e){await De(t,Vd,e)}import Ra from"fs/promises";import ed from"path";function td(t){return ed.join(t,he,Tr,np)}var eD=1e4,tD=100,rD=6e4,nD=".lock",iD={TIMED_OUT_WAITING:t=>`Timed out waiting for the sync-state lock at ${t} \u2014 another docuvia publish may be stuck`};async function sD(t){let e=`${t}${nD}`;await Ra.mkdir(ed.dirname(e),{recursive:!0});try{return await Nn(e,{maxWaitMs:eD,retryIntervalMs:tD,staleAfterMs:rD})}catch(r){throw r instanceof lp?S.wrap(O.DB_LOCKED,iD.TIMED_OUT_WAITING(e),r):r}}async function sE(t,e){let r=await sD(td(t));try{return await e()}finally{await r.release()}}async function oE(t){try{let e=await Ra.readFile(td(t),K);return JSON.parse(e)}catch{return{}}}async function aE(t,e){let r=td(t);await Ra.mkdir(ed.dirname(r),{recursive:!0}),await Ra.writeFile(r,JSON.stringify(e,null,2),K)}var Oa=class{constructor(e,r,n,i){this.workspaceRoot=e;this.logger=r;this.apiUrl=n;this.pat=i}workspaceRoot;logger;apiUrl;pat;async execute(e){let{workspaceRoot:r,logger:n}=this,{projectId:i,commitSha:s}=e;n.info(An.STARTING(i)),await On(r,{event:Rn.START,projectId:i,commitSha:s??null});let o=R.resolve(A.GitProvider),a=s?await o.getFilesChangedByCommit(r,s):[...await o.listModifiedFiles(r),...await o.listUntrackedFiles(r)],l=new Set(a.filter(Boolean));if(l.size===0){let p={synced:0,skipped:0,message:An.NOTHING_TO_SYNC};return await On(r,{event:Rn.SUMMARY,projectId:i,...p}),p}let c=R.resolve(A.GraphStoreOpener),u;try{u=await c({dbPath:ie(r),readonly:!0})}catch(p){throw p instanceof S&&p.code===O.DB_NOT_FOUND?(await On(r,{event:Rn.ERROR,projectId:i,message:An.DB_NOT_FOUND}),new S(O.DB_NOT_FOUND,An.DB_NOT_FOUND,p)):p}try{let d=R.resolve(A.RemoteSyncClient)();d.initialize({apiUrl:this.apiUrl,pat:this.pat});let f;try{f=await d.fetchRemoteL2Nodes(i)}catch(L){let N=L instanceof Error?L.message:String(L);throw await On(r,{event:Rn.ERROR,projectId:i,message:N}),L}let m=new Map(f.map(L=>[L.name,L.id])),_=u.graph.findNodesForChangedFiles(Array.from(l)),I=await sE(r,async()=>{let L=await oE(r),N=L[i]??{syncedContentHashes:[]},w=new Set(N.syncedContentHashes),{events:q,newlySyncedHashes:Q,skippedL2Count:H}=this.buildSyncPushEvents(_,m,w);if(q.length===0)return{synced:0,skipped:H,message:An.NOTHING_NEW(H)};let ne;try{ne=await d.pushSyncEvents(i,q)}catch(ee){let _e=ee instanceof Error?ee.message:String(ee);throw await On(r,{event:Rn.ERROR,projectId:i,message:_e}),ee}N.syncedContentHashes=Array.from(new Set([...w,...Q])),L[i]=N,await aE(r,L);let M=ne.processed??q.length;return{synced:M,skipped:H,message:An.SYNCED(M,H)}});return await On(r,{event:Rn.SUMMARY,projectId:i,...I}),I}finally{await u.close()}}buildSyncPushEvents(e,r,n){let i=[],s=[],o=0;for(let{l2Node:a,l3Nodes:l}of e){let c=r.get(a.name);if(c===void 0){o++;continue}for(let u of l)u.content_hash&&n.has(u.content_hash)||(i.push(this.buildL3PushEvent(c,u)),u.content_hash&&s.push(u.content_hash))}return{events:i,newlySyncedHashes:s,skippedL2Count:o}}buildL3PushEvent(e,r){return{type:Bd.CREATE_L3,payload:{l2NodeId:e,title:r.title,content:r.content,nodeType:r.node_type,confidence:r.confidence,sourceCommits:r.source_commits?JSON.parse(r.source_commits):void 0,contentHash:r.content_hash}}}};import Cv from"fs";import Pv from"path";var J={ANALYZING:"Analyzing project...",AUTO_ANALYZING:"Checking knowledge graph freshness...",AUTO_FULL_INGESTION:"No existing knowledge graph found \u2014 running full ingestion...",SNAPSHOT_AFTER_FULL_INGESTION_FAILED:"Failed to pack the knowledge graph onto the knowledge branch (non-fatal -- the local graph is intact; run `docuvia snapshot` manually or push to retry)",AUTO_DELTA_INGESTION:"Re-parsing changed files since the last analysis...",NODE_KEY_FORMAT_STALE:"Knowledge graph predates the current node_key format -- running a full re-ingestion instead of a delta to avoid mixing old and new formats...",HEAD_NOT_DESCENDANT_OF_LAST_INGESTED:"HEAD has moved backward relative to the last-ingested commit (e.g. a soft reset, undone amend, or aborted rebase) -- running a full re-ingestion instead of a delta to avoid misclassifying still-present files as deleted...",AUTO_NOOP:"Knowledge graph already up to date with HEAD.",AUTO_NOOP_DIRTY_WORKTREE:"Knowledge graph already up to date with HEAD -- but the working tree has uncommitted changes that won't be reflected until they're committed (analyze's fast-path only tracks HEAD, not the filesystem).",TIER_B_CAP_NUDGE:"Changed code since the last Tier B batch has exceeded the cap -- push, or run `docuvia analyze --escalate-to-lsp && docuvia snapshot`, to trigger it.",EXTRACTING:t=>`Extracting decisions from ${t}...`,FILES_DROPPED:t=>`Dropped ${t} file(s) from decision extraction (file-count/byte cap)`,NO_GRAPH_TO_ATTACH:"run `docuvia init` first \u2014 decisions need a graph to attach to",AGENT_AUTHORED_ANCHOR_UNRESOLVABLE:t=>`cannot anchor a decision to ${t}: it is not a parseable source file, so it can never have an L2 node. Write the decision against a source file this change touched (e.g. a .ts/.py/.go file) instead`,PATH_NOT_FOUND:t=>`Path does not exist: ${t}`,LLM_NON_JSON_OUTPUT:"LLM returned non-JSON output for decision extraction",FILE_READ_FAILED:"Failed to read file for decision extraction",TIER_B_STARTING:"Running the Tier B LSP escalation batch...",TIER_B_FULL_RESYNC_QUEUED:t=>`Full resync (--full): queued ${t} tracked file(s) for Tier B re-processing`,TIER_B_EMPTY_QUEUE:"Tier B queue is empty -- nothing to escalate.",TIER_B_DEGRADED:t=>`LSP unavailable -- AST-level edges left untouched (${t})`,TIER_B_SUMMARY:(t,e,r)=>`Tier B batch complete: ${t} file(s) processed, ${e} corrected edge(s) applied`+(r>0?`, ${r} file(s) permanently failed (dropped from the re-try queue)`:""),TIER_B_FORWARD_SEEDED:(t,e,r,n)=>`Tier B forward resolution seeded ${e}/${r} ${t} file(s) (staleness-skipped: ${n})`,TIER_C_SKIPPED:t=>`Tier C drain skipped this run (${t})`,TIER_C_ITEM_EVICTED:(t,e,r)=>`Tier C candidate permanently failed after ${r} attempt(s), evicted from queue (${t}: ${e})`,TIER_C_SUMMARY:(t,e)=>`Tier C drain complete: ${t} candidate(s) processed, ${e} decision(s) persisted`,FLUSH_STAGED_L3_DISABLED:"commit-l3-write is disabled -- skipping the staged-L3 flush",FLUSH_STAGED_L3_EMPTY:"No staged L3 decisions to flush.",FLUSH_STAGED_L3_SUMMARY:(t,e)=>`Flushed ${t} staged L3 decision(s)`+(e>0?`, ${e} left staged for a future commit.`:"."),FLUSH_STAGED_L3_FILE_DELETED:t=>`Staged L3 decision(s) for ${t} dropped -- the file was deleted by this commit`,FLUSH_STAGED_L3_ERROR:t=>`Flush of staged L3 decisions failed: ${t} -- the staging file was left untouched for the next flush to retry`,L3_ANCHOR_CONTRADICTION:(t,e,r)=>`Staged decision "${t}" conflicts with an existing ${e} decision on the same anchor`+(r?` (written at commit ${r})`:"")+" with divergent content -- verify which rationale is correct before building on either"},$={AUTO_START:"analyze.auto.start",AUTO_ERROR:"analyze.auto.error",DELTA_NOOP:"analyze.delta.noop",DELTA_NO_HEAD:"analyze.delta.no_head",TIER_B_COMMIT_CAP_NUDGE:"analyze.auto.tier_b_cap_nudge",FULL_START:"analyze.full.start",FULL_SUMMARY:"analyze.full.summary",FULL_PARSE_FAILURE:"analyze.full.parse_failure",FULL_FILE_SKIPPED_OVERSIZED:"analyze.full.file_skipped_oversized",FULL_SNAPSHOT_FAILED:"analyze.full.snapshot_failed",FULL_CALL_RESOLUTION:"analyze.full.call_resolution",DELTA_START:"analyze.delta.start",DELTA_NODE_KEY_FORMAT_STALE:"analyze.delta.node_key_format_stale",DELTA_HEAD_NOT_DESCENDANT:"analyze.delta.head_not_descendant",DELTA_SUMMARY:"analyze.delta.summary",DELTA_FILE_SKIPPED_OVERSIZED:"analyze.delta.file_skipped_oversized",DELTA_PARSE_FAILURE:"analyze.delta.parse_failure",DELTA_CALL_RESOLUTION:"analyze.delta.call_resolution",FOCUSED_START:"analyze.focused.start",FOCUSED_ERROR:"analyze.focused.error",FOCUSED_SUMMARY:"analyze.focused.summary",FOCUSED_PERSISTED:"analyze.focused.persisted",FOCUSED_PERSIST_SKIPPED:"analyze.focused.persist_skipped",TIER_B_START:"analyze.tierB.start",TIER_B_FULL_RESYNC_QUEUED:"analyze.tierB.full_resync_queued",TIER_B_EMPTY_QUEUE:"analyze.tierB.empty_queue",TIER_B_FILE_DROPPED_DELETED:"analyze.tierB.file_dropped_deleted",TIER_B_FILE_SKIPPED_LANGUAGE:"analyze.tierB.file_skipped_language",TIER_B_DEGRADED:"analyze.tierB.degraded",TIER_B_FILE_FAILED:"analyze.tierB.file_failed",TIER_B_SUMMARY:"analyze.tierB.summary",TIER_B_ERROR:"analyze.tierB.error",TIER_B_FORWARD_SEEDED:"analyze.tierB.forward_seeded",TIER_C_START:"analyze.tierC.start",TIER_C_EMPTY_QUEUE:"analyze.tierC.empty_queue",TIER_C_SKIPPED:"analyze.tierC.skipped",TIER_C_LOAD_NOTE:"analyze.tierC.load_note",TIER_C_ITEM_SUCCESS:"analyze.tierC.item_success",TIER_C_ITEM_FAILED:"analyze.tierC.item_failed",TIER_C_ITEM_EVICTED:"analyze.tierC.item_evicted",TIER_C_SUMMARY:"analyze.tierC.summary",FLUSH_STAGED_L3_DISABLED:"analyze.flushStagedL3.disabled",FLUSH_STAGED_L3_SUMMARY:"analyze.flushStagedL3.summary"},lE=`You are an expert software architect reviewing source code directly (not commit history).
|
|
@@ -166,10 +166,10 @@ ${I.content}`).join(`
|
|
|
166
166
|
`).filter(o=>o.trim().length>0);for(let o of s)try{let a=JSON.parse(o);if(typeof a.ts=="string"){let l=Date.parse(a.ts);if(!Number.isNaN(l)&&i-l<=n)return!0}}catch{}return!1}async runTierCQueueDiagnostic(e){if(!R.has(A.GraphStoreOpener))return!0;let r;try{r=await R.resolve(A.GraphStoreOpener)({dbPath:ie(this.workspaceRoot),readonly:!0});let i=er(r).length;if(i===0)return e[ue.TIER_C_QUEUE]={status:Y.PASS,message:k.TIER_C_QUEUE_OK(0,0)},!0;let s=await this.readLastTierCDrainOutcome();return s?s.processed===0?(e[ue.TIER_C_QUEUE]={status:Y.FAIL,message:k.TIER_C_QUEUE_STUCK(i,s.reason??"unknown"),suggestion:k.TIER_C_QUEUE_STUCK_SUGGESTION},!1):(e[ue.TIER_C_QUEUE]={status:Y.PASS,message:k.TIER_C_QUEUE_OK(i,s.processed)},!0):(e[ue.TIER_C_QUEUE]={status:Y.FAIL,message:k.TIER_C_QUEUE_NEVER_DRAINED(i),suggestion:k.TIER_C_QUEUE_NEVER_DRAINED_SUGGESTION},!1)}catch{return!0}finally{await r?.close()}}async runStagedL3Diagnostic(e){let r;try{r=await ai(this.workspaceRoot,this.logger)}catch{return!0}let n=Date.now(),i=r.filter(a=>{let l=Date.parse(a.stagedAt);return Number.isFinite(l)&&n-l>=E.DEFAULT_STAGED_L3_STRANDED_AFTER_MS});if(i.length===0)return e[ue.STAGED_L3_DECISIONS]={status:Y.PASS,message:k.STAGED_L3_OK(r.length)},!0;let s=i.reduce((a,l)=>Date.parse(a.stagedAt)<=Date.parse(l.stagedAt)?a:l),o=Math.floor((n-Date.parse(s.stagedAt))/E.DEFAULT_STAGED_L3_STRANDED_AFTER_MS);return e[ue.STAGED_L3_DECISIONS]={status:Y.FAIL,message:k.STAGED_L3_STRANDED(i.length,o,s.filePath),suggestion:k.STAGED_L3_STRANDED_SUGGESTION},!1}async readLastTierCDrainOutcome(){let e=At.join(this.workspaceRoot,he,Tr,mi),r;try{r=await tr.readFile(e,K)}catch{return}let n,i;for(let s of r.split(`
|
|
167
167
|
`))try{let o=JSON.parse(s);o.event===$.TIER_C_SUMMARY?n={processed:Number(o.processed??0)}:o.event===$.TIER_C_ITEM_FAILED&&typeof o.reason=="string"&&(i=o.reason)}catch{}if(n)return{processed:n.processed,reason:i}}async runL2SemanticCoverageDiagnostic(e,r){if(!R.has(A.GraphStoreOpener))return!0;let n;try{n=await R.resolve(A.GraphStoreOpener)({dbPath:ie(this.workspaceRoot),readonly:!0});let{totalNodes:s,describedNodes:o}=n.graph.getSemanticCoverage(),a=s>0?o/s:1,l=a<E.DEFAULT_L2_SEMANTIC_COVERAGE_FAIL_THRESHOLD,c=!!r;return e[ue.L2_SEMANTIC_COVERAGE]=l?c?{status:Y.FAIL,message:k.L2_SEMANTIC_COVERAGE_LOW(o,s,a*100),suggestion:k.L2_SEMANTIC_COVERAGE_LOW_SUGGESTION}:{status:Y.PASS,message:k.L2_SEMANTIC_COVERAGE_STRUCTURAL_ONLY(o,s)}:{status:Y.PASS,message:k.L2_SEMANTIC_COVERAGE_OK(o,s)},!(l&&c)}catch{return!0}finally{await n?.close()}}async runWorktreeDivergenceDiagnostic(e){if(!R.has(A.GitProvider))return!0;try{let n=await R.resolve(A.GitProvider).listWorktrees(this.workspaceRoot),i=At.resolve(this.workspaceRoot),s=[];for(let o of n){if(At.resolve(o.path)===i)continue;let a=At.join(o.path,he,_i);await tr.stat(a).catch(()=>null)&&s.push(o.path)}return e[ue.WORKTREE_DIVERGENCE]=s.length>0?{status:Y.FAIL,message:k.WORKTREE_DIVERGENCE_FAIL(s.length,s),suggestion:k.WORKTREE_DIVERGENCE_SUGGESTION}:{status:Y.PASS,message:k.WORKTREE_DIVERGENCE_OK(n.length)},s.length===0}catch{return!0}}async runAgentAuthoredAdoptionDiagnostic(e){if(!R.has(A.GraphStoreOpener)||!R.has(A.GitProvider))return!0;let r;try{let n=R.resolve(A.GitProvider);r=await R.resolve(A.GraphStoreOpener)({dbPath:ie(this.workspaceRoot),readonly:!0});let s=await n.getHeadSha(this.workspaceRoot),o=r.meta.get(E.META_KEY_LAST_INGESTED_SOURCE_SHA),a=o&&o!==s?await n.getChangedFilesSince(this.workspaceRoot,o):[];if(a.length===0)return e[ue.AGENT_AUTHED_ADOPTION]={status:Y.PASS,message:k.AGENT_AUTHED_ADOPTION_SKIPPED},!0;let l=await ai(this.workspaceRoot,this.logger),c=new Set(l.map(d=>d.filePath)),u=r.l3.getAllExportable().filter(d=>d.source===wt.AGENT_AUTHORED).length,p=a.filter(d=>!c.has(d.file)).length;return e[ue.AGENT_AUTHED_ADOPTION]={status:Y.PASS,message:k.AGENT_AUTHED_ADOPTION_OK(l.length,a.length,p,u)},!0}catch{return!0}finally{await r?.close()}}async runCallGraphResolutionDiagnostic(e){if(!R.has(A.GraphStoreOpener))return!0;let r;try{r=await R.resolve(A.GraphStoreOpener)({dbPath:ie(this.workspaceRoot),readonly:!0});let{byFile:i,total:s}=z_(r),o=Object.keys(i).length;if(o===0||s.total===0)return e[ue.CALL_GRAPH_RESOLUTION]={status:Y.PASS,message:k.CALL_GRAPH_RESOLUTION_NO_DATA},!0;let a=cp(s),l=a>0?s.resolved/a:1,c=l<E.DEFAULT_CALL_RESOLUTION_NOTE_THRESHOLD;return e[ue.CALL_GRAPH_RESOLUTION]=c?{status:Y.PASS,message:k.CALL_GRAPH_RESOLUTION_LOW(s.resolved,a,l*100,o),suggestion:k.CALL_GRAPH_RESOLUTION_LOW_SUGGESTION}:{status:Y.PASS,message:k.CALL_GRAPH_RESOLUTION_OK(s.resolved,a,o)},!0}catch{return!0}finally{await r?.close()}}async runDbDiagnostics(e){let r=At.join(this.workspaceRoot,he,_i);if(!await tr.stat(r).catch(()=>null))return e[ue.DB_FOUND]={status:Y.FAIL,message:k.DB_NOT_FOUND_AT(r)},!1;if(!R.has(A.DiagnosticRunnerDb))return e[ue.DB_RUNNER]={status:Y.FAIL,message:k.DB_RUNNER_NOT_REGISTERED},!1;let s=await R.resolve(A.DiagnosticRunnerDb).checkHealth(r);return this.mergeDiagnosticResults(e,s)}async runGitDiagnostics(e){if(!R.has(A.DiagnosticRunnerGit))return e[ue.GIT_RUNNER]={status:Y.FAIL,message:k.GIT_RUNNER_NOT_REGISTERED},!1;try{let n=await R.resolve(A.DiagnosticRunnerGit,{logger:this.logger}).checkHealth(this.workspaceRoot);return this.mergeDiagnosticResults(e,n)}catch(r){return e[ue.GIT_REACHABILITY]=this.buildGitReachabilityFailure(r),!1}}mergeDiagnosticResults(e,r){let n=!0;for(let[i,s]of Object.entries(r))e[i]=s,s.status===Y.FAIL&&(n=!1);return n}buildGitReachabilityFailure(e){let r=e instanceof S||e instanceof Error?e.message:String(e),n;return e instanceof S&&(e.code===O.GIT_NETWORK_TIMEOUT?n=k.GIT_NETWORK_TIMEOUT_SUGGESTION:e.code===O.GIT_COMMAND_FAILED&&r.includes(k.GIT_NOT_A_REPO_TEXT)?n=k.GIT_NOT_A_REPO_SUGGESTION:e.code===O.GIT_COMMAND_FAILED&&r.includes(k.GIT_REMOTE_UNREADABLE_TEXT)&&(n=k.GIT_REMOTE_UNREADABLE_SUGGESTION)),{status:Y.FAIL,message:k.GIT_REACHABILITY_FAILED(r),suggestion:n}}async runLogsDiagnostics(e){let r=At.join(this.workspaceRoot,he,Tr);try{let{errorsFound:n,logsChecked:i}=await this.scanLogFiles(r);return n>0?(e[ue.LOGS]={status:Y.FAIL,message:k.LOGS_ERRORS_FOUND(n),suggestion:k.LOGS_ERRORS_FOUND_SUGGESTION},!1):(e[ue.LOGS]={status:Y.PASS,message:k.LOGS_CHECKED_CLEAN(i)},!0)}catch{return e[ue.LOGS]={status:Y.PASS,message:k.LOGS_NOT_FOUND_AT(r)},!0}}async scanLogFiles(e){let r=0,n=0,i=await tr.readdir(e);for(let s of i){if(!s.endsWith(oS))continue;n++;let a=(await tr.readFile(At.join(e,s),K)).split(`
|
|
168
168
|
`).filter(l=>l.trim().length>0);for(let l of a)try{let c=JSON.parse(l);c.level&&c.level>=50&&r++}catch{}}return{errorsFound:r,logsChecked:n}}};var Va=class{constructor(e,r){this.workspaceRoot=e;this.logger=r}workspaceRoot;logger;async execute(e=!1){let{workspaceRoot:r,logger:n}=this,i=R.resolve(A.KnowledgeGitService,{logger:n}),s=await this.removeHookSafely(()=>i.removePostCommitHook(r),E.POST_COMMIT_HOOK_NAME),o=await this.removeHookSafely(()=>i.removePrePushHook(r),E.PRE_PUSH_HOOK_NAME),a=!1;if(!e)try{({deleted:a}=await i.deleteKnowledgeBranch(r))}catch(l){this.logger.warn("Failed to delete the docuvia-knowledge git branch",{error:l instanceof Error?l.message:String(l)})}return{postCommitRemoved:s,prePushRemoved:o,knowledgeBranchDeleted:a}}async removeHookSafely(e,r){try{let{removed:n}=await e();return n}catch(n){return this.logger.warn(`Failed to remove the ${r} git hook`,{error:n instanceof Error?n.message:String(n)}),!1}}};import uS from"fs/promises";import Jv from"path";var dS={REMOVED:"Removed .docuvia/ directory",NOT_FOUND:".docuvia/ directory not present; nothing to remove"};async function pS(t,e){let r=Jv.join(t,he);if(!ma(r,t))throw new S(O.UNINSTALL_WORKFLOW_FAILED,`Refusing to remove directory at ${r}: resolved outside workspace ${t}`);let n=!0;try{await uS.access(r)}catch{n=!1}return n?(await uS.rm(r,{recursive:!0,force:!0}),e.info(dS.REMOVED),{removed:!0}):(e.debug(dS.NOT_FOUND),{removed:!1})}async function gS(t,e){return li(t,e)}async function fS(t,e,r,n){return await QE(t,e,r,n),li(t,n)}function Ee(t,e){let r=T.get(t,e);if(r===void 0)throw new S(O.INVALID_INPUT,H_.MISSING_MEMORY_KEY(e,t));return r}function hS(t){let e=T.get(t,y.LSP_BINARY_OVERRIDE),r=T.get(t,y.LSP_ARGS_OVERRIDE),n=T.get(t,y.LSP_TIMEOUT_MS),i=T.get(t,y.LSP_MAX_PROCESSES);if(!(e===void 0&&r===void 0&&n===void 0&&i===void 0))return{binaryOverride:e,argsOverride:r,timeoutMs:n,maxProcesses:i}}var X={async init(t,e){let r=Ee(t,y.WORKSPACE_ROOT);return new fa(r,e).execute()},async clean(t,e){let r=Ee(t,y.WORKSPACE_ROOT);return new _a(r,e).execute()},async status(t,e){let r=Ee(t,y.WORKSPACE_ROOT);return new Aa(r,e).execute()},async sync(t,e,r){let n=Ee(t,y.WORKSPACE_ROOT),i=Ee(t,y.API_URL),s=Ee(t,y.PROJECT_ID),o=T.get(t,y.COMMIT_SHA);return new Oa(n,e,i,r).execute({projectId:s,commitSha:o})},async analyze(t,e,r){let n=Ee(t,y.WORKSPACE_ROOT);if(T.get(t,y.FLUSH_STAGED_L3))return new zr(n,e,{flushStagedL3:!0}).execute();let s=T.get(t,y.TARGET_PATH),o=T.get(t,y.AGENT_AUTHORED_DECISIONS);if(s&&o)return new zr(n,e,{targetPath:s,agentAuthoredDecisions:o}).execute();if(s){let l=Ee(t,y.LLM_BASE_URL),c=Ee(t,y.LLM_MODEL);return new zr(n,e,{targetPath:s,llmBaseUrl:l,llmApiKey:r,llmModel:c}).execute()}return T.get(t,y.ESCALATE_TO_LSP)?new zr(n,e,{escalateToLsp:!0,lspProviderConfig:hS(t),tierBCommitCap:T.get(t,y.TIER_B_COMMIT_CAP),full:T.get(t,y.TIER_B_FULL_RESYNC),llmBaseUrl:T.get(t,y.LLM_BASE_URL),llmApiKey:r,llmModel:T.get(t,y.LLM_MODEL),tierCDailyCallCap:T.get(t,y.TIER_C_DAILY_CALL_CAP),tierCDailyTokenCap:T.get(t,y.TIER_C_DAILY_TOKEN_CAP),tierCWallClockMs:T.get(t,y.TIER_C_WALL_CLOCK_MS),tierCItemCap:T.get(t,y.TIER_C_ITEM_CAP),tierCLoadThreshold:T.get(t,y.TIER_C_LOAD_THRESHOLD),force:T.get(t,y.FORCE),tierCDrainAll:T.get(t,y.TIER_C_DRAIN_ALL)}).execute():new zr(n,e).execute()},async stageAgentAuthoredDecisions(t,e){let r=Ee(t,y.WORKSPACE_ROOT),n=Ee(t,y.TARGET_PATH),i=Ee(t,y.AGENT_AUTHORED_DECISIONS),s=Qv.resolve(r,n);if(!qv.existsSync(s))throw new S(O.FS_READ_FAILED,J.PATH_NOT_FOUND(n));return VE(r,n,i,e)},async review(t,e){let r=Ee(t,y.WORKSPACE_ROOT),n=T.get(t,y.BASE_REF);return new Da(r,e).execute(n)},async impact(t,e){let r=Ee(t,y.WORKSPACE_ROOT),n=Ee(t,y.TARGET);return new va(r,e).execute(n)},async query(t,e){let r=Ee(t,y.WORKSPACE_ROOT),n=Ee(t,y.TARGET),i=T.get(t,y.LIMIT);return new Ma(r,e).execute(n,i)},async exportTopology(t,e){let r=Ee(t,y.WORKSPACE_ROOT),n=T.get(t,y.COLLAPSE);return new Ua(r,e).execute({collapse:n})},async snapshot(t,e){let r=Ee(t,y.WORKSPACE_ROOT);return new Ha(r,e).execute()},async hydrate(t,e,r){let n=Ee(t,y.WORKSPACE_ROOT);return new Ya(n,e).execute(r)},async syncKnowledge(t,e){let r=Ee(t,y.WORKSPACE_ROOT),n=T.get(t,y.GIT_NETWORK_TIMEOUT_MS);return new Wa(r,e,n).execute()},async doctor(t,e,r){let n=Ee(t,y.WORKSPACE_ROOT);return new ja(n,e).execute(r)},async uninstallGitHooks(t,e){let r=Ee(t,y.WORKSPACE_ROOT),n=T.get(t,y.KEEP_DB);return new Va(r,e).execute(n)},async removeDocuviaDir(t,e){let r=Ee(t,y.WORKSPACE_ROOT);return pS(r,e)},async listHooks(t,e){let r=Ee(t,y.WORKSPACE_ROOT);return gS(r,e)},async setHookEnabled(t,e){let r=Ee(t,y.WORKSPACE_ROOT),n=Ee(t,y.HOOK_NAME),i=Ee(t,y.HOOK_ENABLED);return fS(r,n,i,e)},async checkTierBGate(t,e){let r=Ee(t,y.WORKSPACE_ROOT);return aS(r,e,hS(t))}};import mS from"pino";import{createRequire as Xv}from"module";var Zv=Xv(import.meta.url),Sd="pino-pretty",eb=`[docuvia] ${Sd} unavailable, falling back to plain JSON logs.
|
|
169
|
-
`,tb=["req.headers.authorization","req.headers.Authorization","*.authorization","*.Authorization","*.*.authorization","*.*.Authorization","password","*.password","*.*.password","token","*.token","*.*.token","apiKey","*.apiKey","*.*.apiKey","OPENAI_API_KEY","*.OPENAI_API_KEY","*.*.OPENAI_API_KEY"],rb="[REDACTED]",nb="1";function ib(){if(process.env.DOCUVIA_PRETTY_LOGS===nb)try{return Zv.resolve(Sd),{target:Sd,options:{colorize:!0,destination:2}}}catch{process.stderr.write(eb);return}}function te(){let t=ib(),e=mS({level:process.env.LOG_LEVEL||Re.INFO,redact:{paths:[...tb],censor:rb},transport:t},t?void 0:mS.destination(2)),r=new Ud;return r.onLog(n=>{e[n.level](n.context??{},n.message)}),r}var Jr={UNKNOWN_OPTIONS:t=>`Unknown options provided: ${t}`,UNKNOWN_PLATFORMS:(t,e)=>`Unknown --platform value(s): ${t}. Available platforms: ${e}`,WORKSPACE_ROOT_EMPTY:"workspace root must not be empty",INVALID_FORMAT:(t,e)=>`Unknown --format value: ${t}. Available formats: ${e}`};var gt=class{};import*as rt from"fs/promises";import*as vt from"path";var _S=".js",ES=".cjs",za=class extends gt{name=Ip;slug=Dp;async installHooks(e){await this.configureHooks(e),await this.configureMcpServer(e)}async configureHooks(e){let r=vt.join(e,Pn);await rt.mkdir(r,{recursive:!0}),await rt.writeFile(vt.join(r,Or),As,{mode:493});let n=Zr.replace(/\${HOOKS_DIR}/g,Nl).replace(_S,ES);await Ot(vt.join(r,Dn),n,Or)}async configureMcpServer(e){let r=vt.join(e,Ol);try{let n={mcpServers:{}};try{let i=await rt.readFile(r,K);n=JSON.parse(i)}catch{await rt.mkdir(vt.dirname(r),{recursive:!0})}n.mcpServers=n.mcpServers||{},n.mcpServers[vn]={command:Ss,args:[xp,...Ts]},await rt.writeFile(r,JSON.stringify(n,null,2)),h.success(g.INIT_HOOKS_REGISTERED_MCP+r)}catch(n){let i=n instanceof Error?n.message:String(n);h.warn(g.INIT_HOOKS_FAIL_CURSOR_MCP+i)}}async uninstallHooks(e){let r=vt.join(e,Pn);try{await rt.unlink(vt.join(r,Or)),h.success(`${g.UNINSTALL_REMOVED_FILE_PREFIX}${Or}`)}catch{}let{removeBlock:n}=await import("./fs-utils-PBXD64EA.js"),{CURSOR_RULES_FILENAME:i,AGENT_INSTRUCTIONS_MARKER:s,AGENT_INSTRUCTIONS_END_MARKER:o}=await import("./init-templates-62WJOWDV.js"),a=vt.join(e,i);await n(a,`<!-- ${s} -->`,`<!-- ${o} -->`);let l=vt.join(r,Dn),c=!1;try{(await rt.readFile(l,K)).trim()===Zr.replace(/\$\{HOOKS_DIR\}/g,Nl).replace(_S,ES).trim()&&(await rt.unlink(l),c=!0)}catch{}if(c)try{await rt.rmdir(r)}catch{}let u=vt.join(e,Ol);try{let p=await rt.readFile(u,K),d=JSON.parse(p);d?.mcpServers&&d.mcpServers[vn]&&(delete d.mcpServers[vn],await rt.writeFile(u,JSON.stringify(d,null,2)),h.success(`${g.UNINSTALL_REMOVED_MCP_SERVER_PREFIX}${u}`))}catch{}}};import*as
|
|
170
|
-
`,K))}async function hb(t,e){let r;try{let s=await
|
|
169
|
+
`,tb=["req.headers.authorization","req.headers.Authorization","*.authorization","*.Authorization","*.*.authorization","*.*.Authorization","password","*.password","*.*.password","token","*.token","*.*.token","apiKey","*.apiKey","*.*.apiKey","OPENAI_API_KEY","*.OPENAI_API_KEY","*.*.OPENAI_API_KEY"],rb="[REDACTED]",nb="1";function ib(){if(process.env.DOCUVIA_PRETTY_LOGS===nb)try{return Zv.resolve(Sd),{target:Sd,options:{colorize:!0,destination:2}}}catch{process.stderr.write(eb);return}}function te(){let t=ib(),e=mS({level:process.env.LOG_LEVEL||Re.INFO,redact:{paths:[...tb],censor:rb},transport:t},t?void 0:mS.destination(2)),r=new Ud;return r.onLog(n=>{e[n.level](n.context??{},n.message)}),r}var Jr={UNKNOWN_OPTIONS:t=>`Unknown options provided: ${t}`,UNKNOWN_PLATFORMS:(t,e)=>`Unknown --platform value(s): ${t}. Available platforms: ${e}`,WORKSPACE_ROOT_EMPTY:"workspace root must not be empty",INVALID_FORMAT:(t,e)=>`Unknown --format value: ${t}. Available formats: ${e}`};var gt=class{};import*as rt from"fs/promises";import*as vt from"path";var _S=".js",ES=".cjs",za=class extends gt{name=Ip;slug=Dp;async installHooks(e){await this.configureHooks(e),await this.configureMcpServer(e)}async configureHooks(e){let r=vt.join(e,Pn);await rt.mkdir(r,{recursive:!0}),await rt.writeFile(vt.join(r,Or),As,{mode:493});let n=Zr.replace(/\${HOOKS_DIR}/g,Nl).replace(_S,ES);await Ot(vt.join(r,Dn),n,Or)}async configureMcpServer(e){let r=vt.join(e,Ol);try{let n={mcpServers:{}};try{let i=await rt.readFile(r,K);n=JSON.parse(i)}catch{await rt.mkdir(vt.dirname(r),{recursive:!0})}n.mcpServers=n.mcpServers||{},n.mcpServers[vn]={command:Ss,args:[xp,...Ts]},await rt.writeFile(r,JSON.stringify(n,null,2)),h.success(g.INIT_HOOKS_REGISTERED_MCP+r)}catch(n){let i=n instanceof Error?n.message:String(n);h.warn(g.INIT_HOOKS_FAIL_CURSOR_MCP+i)}}async uninstallHooks(e){let r=vt.join(e,Pn);try{await rt.unlink(vt.join(r,Or)),h.success(`${g.UNINSTALL_REMOVED_FILE_PREFIX}${Or}`)}catch{}let{removeBlock:n}=await import("./fs-utils-PBXD64EA.js"),{CURSOR_RULES_FILENAME:i,AGENT_INSTRUCTIONS_MARKER:s,AGENT_INSTRUCTIONS_END_MARKER:o}=await import("./init-templates-62WJOWDV.js"),a=vt.join(e,i);await n(a,`<!-- ${s} -->`,`<!-- ${o} -->`);let l=vt.join(r,Dn),c=!1;try{(await rt.readFile(l,K)).trim()===Zr.replace(/\$\{HOOKS_DIR\}/g,Nl).replace(_S,ES).trim()&&(await rt.unlink(l),c=!0)}catch{}if(c)try{await rt.rmdir(r)}catch{}let u=vt.join(e,Ol);try{let p=await rt.readFile(u,K),d=JSON.parse(p);d?.mcpServers&&d.mcpServers[vn]&&(delete d.mcpServers[vn],await rt.writeFile(u,JSON.stringify(d,null,2)),h.success(`${g.UNINSTALL_REMOVED_MCP_SERVER_PREFIX}${u}`))}catch{}}};import*as qe from"fs/promises";import*as nt from"path";import os from"process";var sb="win32",ob="darwin",ab="Library",lb="Application Support",cb=".config";async function ub(t){try{await qe.unlink(nt.join(t,Rr)),h.success(`${g.UNINSTALL_REMOVED_FILE_PREFIX}${Rr}`)}catch{}}async function db(t){let e=nt.join(t,Dn);try{if((await qe.readFile(e,K)).trim()===Zr.replace(/\$\{HOOKS_DIR\}/g,Ll).trim())return await qe.unlink(e),!0}catch{}return!1}async function pb(t){try{await qe.rmdir(t)}catch{}}function SS(){let t=Zr.replace(/\${HOOKS_DIR}/g,kp);return JSON.parse(t)[Mt][0]}function AS(t){let e=t.hooks,r=Array.isArray(e)?e[0]?.command:void 0;return typeof r=="string"?r:""}function RS(t,e){let r=t?.hooks;return Array.isArray(r)&&r.some(n=>n?.command===e)}async function gb(t){try{let e=await qe.readFile(t,K);return{settings:JSON.parse(e),aborted:!1}}catch(e){return e?.code!==fs?(h.warn(`${g.FS_READ_ERROR}${t} (${e?.code??g.FS_READ_ERROR_UNKNOWN_CODE}); leaving it untouched`),{settings:{},aborted:!0}):{settings:{},aborted:!1}}}async function fb(t,e){let{settings:r,aborted:n}=await gb(t);if(n)return;if(r.hooks=r.hooks??{},r.hooks[Mt]!==void 0&&!Array.isArray(r.hooks[Mt])){h.warn(g.FS_UNEXPECTED_SHAPE(Mt,t));return}r.hooks[Mt]=r.hooks[Mt]??[];let i=r.hooks[Mt],s=AS(e);i.some(o=>RS(o,s))||(i.push(e),await qe.mkdir(nt.dirname(t),{recursive:!0}),await qe.writeFile(t,`${JSON.stringify(r,null,2)}
|
|
170
|
+
`,K))}async function hb(t,e){let r;try{let s=await qe.readFile(t,K);r=JSON.parse(s)}catch{return}let n=r?.hooks?.[Mt];if(!Array.isArray(n))return;let i=n.filter(s=>!RS(s,e));if(i.length!==n.length){if(i.length===0?delete r.hooks[Mt]:r.hooks[Mt]=i,Object.keys(r.hooks).length===0&&delete r.hooks,Object.keys(r).length===0){await qe.unlink(t),h.success(g.UNINSTALL_REMOVED_FILE_PREFIX+Es);return}await qe.writeFile(t,`${JSON.stringify(r,null,2)}
|
|
171
171
|
`,K),h.success(g.UNINSTALL_REMOVED_HOOK_FROM_SETTINGS_PREFIX+t)}}function mb(t){let e=nt.join(t,yl);h.info(`${g.UNINSTALL_CLAUDE_MCP_MANUAL_REMINDER} (${e}).`)}function TS(){return os.platform===sb?nt.join(os.env.APPDATA||"",Si):os.platform===ob?nt.join(os.env.HOME||"",ab,lb,Si):nt.join(os.env.HOME||"",cb,Si)}var Ja=class extends gt{name=Si;slug=vp;async installHooks(e){await this.configureHooks(e),this.printMcpServerSnippet(e)}printMcpServerSnippet(e){let r=TS();if(!r)return;let n=nt.join(r,yl),i=JSON.stringify({mcpServers:{[vn]:{command:Ss,args:[Gp,...Ts],env:{[Up]:e}}}},null,2);h.info(`${g.INIT_CLAUDE_MCP_MANUAL_SNIPPET} (${n}):
|
|
172
|
-
${i}`)}async configureHooks(e){let r=nt.join(e,Cn);await
|
|
172
|
+
${i}`)}async configureHooks(e){let r=nt.join(e,Cn);await qe.mkdir(r,{recursive:!0}),await qe.writeFile(nt.join(r,Rr),As,{mode:493});let n=Zr.replace(/\${HOOKS_DIR}/g,Ll);await Ot(nt.join(r,Dn),n,Rr),await fb(nt.join(e,Rl,Es),SS())}async uninstallHooks(e){let r=nt.join(e,Cn);await ub(r),await db(r)&&await pb(r);try{await hb(nt.join(e,Rl,Es),AS(SS()))}catch{}let i=TS();i&&mb(i)}};import*as OS from"path";var qa=class extends gt{name=Lp;slug=bp;instructionsPath(e){return OS.join(e,mp,_p)}async installHooks(e){await Ot(this.instructionsPath(e),Ir,mt)}async uninstallHooks(e){await Lr(this.instructionsPath(e),`<!-- ${mt} -->`,`<!-- ${yr} -->`)}};import*as yS from"path";var Qa=class extends gt{name=Np;slug=wp;agentsMdPath(e){return yS.join(e,Rp)}async installHooks(e){await Ot(this.agentsMdPath(e),Ir,mt)}async uninstallHooks(e){await Lr(this.agentsMdPath(e),`<!-- ${mt} -->`,`<!-- ${yr} -->`)}};import*as Za from"fs/promises";import*as Td from"path";var Xa=class extends gt{name=Cp;slug=Fp;rulesDir(e){return Td.join(e,yp)}rulesFilePath(e){return Td.join(this.rulesDir(e),Il)}async installHooks(e){await Ot(this.rulesFilePath(e),Ir,mt)}async uninstallHooks(e){try{await Za.unlink(this.rulesFilePath(e)),h.success(`${g.UNINSTALL_REMOVED_FILE_PREFIX}${Il}`)}catch{return}try{await Za.rmdir(this.rulesDir(e))}catch{}}};import*as IS from"path";var el=class extends gt{name=Pp;slug=Mp;hermesMdPath(e){return IS.join(e,Op)}async installHooks(e){await Ot(this.hermesMdPath(e),Ir,mt)}async uninstallHooks(e){await Lr(this.hermesMdPath(e),`<!-- ${mt} -->`,`<!-- ${yr} -->`)}};function _b(){return[new za,new Ja,new qa,new Qa,new Xa,new el]}function Eb(t){return t.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean)}async function tl(t,e,r,n=_b()){if(e!==void 0){let i=Eb(e),s=n.map(a=>a.slug),o=i.filter(a=>!s.includes(a));if(o.length>0)throw new Error(Jr.UNKNOWN_PLATFORMS(o.join(", "),s.join(", ")));return n.filter(a=>i.includes(a.slug))}if(r){let i=n.map(o=>({name:o.name,value:o.name,checked:!0})),s=await h.askCheckbox(t,i);return n.filter(o=>s.includes(o.name))}return n}import Sb from"fs/promises";import LS from"path";var Tb=30*6e4,Ab=1e4,Rb=3e4;async function rl(t,e,r){let n=LS.join(t,he,tp);await Sb.mkdir(LS.dirname(n),{recursive:!0});let i=await Nn(n,{maxWaitMs:Tb,heartbeatIntervalMs:Ab,staleAfterMs:Rb,onWaiting:r});try{return await e()}finally{await i.release()}}import*as Ht from"fs";import*as ci from"path";var Ob=["---","name: docuvia-exploring","description: >"," Use when exploring or navigating an unfamiliar codebase -- before reaching for"," Grep, Glob, or Read. Queries the local Docuvia knowledge graph for concepts,"," files, and symbols, and checks blast radius before editing. Falls back to raw"," file tools only when the graph returns nothing or the target is flagged unprocessed.","---","","# Explore the Codebase via Docuvia","","## When to use this skill","","You are exploring, navigating, or learning about a codebase. Before any Grep, Glob, or Read","call, query the knowledge graph first -- it is structurally aware and orders of magnitude","cheaper than raw file scanning.","","## Exploration workflow","","**Step 1 -- Query the graph for the concept.**","","Use the `docuvia_query` MCP tool (or CLI fallback):","```",'npx --no-install docuvia query "<concept_or_file>" --format=prompt',"```","","The result includes `match_type` (exact/keyword/neighbor) -- treat a non-`exact` match on","what should be a well-known symbol as a signal to cross-check with Grep/Glob.","","**Step 2 -- Check blast radius before editing.**","","Before modifying any file or symbol, run:","```","npx --no-install docuvia impact <symbolOrFile>","```","","This returns which other parts of the codebase would be affected, with a risk level","assessment. Stop and warn the user if it comes back HIGH or CRITICAL.","","**Step 3 -- Only fall back to raw file tools when:**","","- The graph returns empty results",'- The target is flagged `tier_b_status="unprocessed"` (unknown, not zero)',"- You need exact source text, formatting, or a diff","- `query` returns a non-`exact` `match_type` for what should be a well-known symbol","","## After making code changes","","If your change reflects a real architectural decision, rule, or notable rationale, stage it:","","```","npx --no-install docuvia analyze <file> --agent-authored --stage","```","","Pipe a JSON payload on stdin or pass `--decisions-file=<path>`. Staged decisions flush","into the knowledge graph automatically on the next commit touching that file."].join(`
|
|
173
173
|
`),yb=["---","name: docuvia-impact-analysis","description: >"," Use before making any code change to analyze blast radius -- which other parts of"," the codebase would be affected, with a risk level assessment. Also use after"," receiving a code review or diff to understand downstream impact.","---","","# Impact Analysis with Docuvia","","## When to use this skill","","You are about to modify code, or you have received a review/diff and need to understand","downstream impact. Always run impact analysis before touching shared interfaces, constants,","or widely-imported modules.","","## Impact analysis workflow","","**Step 1 -- Run impact analysis on the target.**","","```","npx --no-install docuvia impact <symbolOrFile>","```","",'Or via MCP: `docuvia_impact` with `{ "target": "<symbolOrFile>" }`',"","The result includes:","- `blastRadius`: array of affected nodes with filePath, edgeType, and depth","- `riskLevel`: LOW / MEDIUM / HIGH / CRITICAL / UNKNOWN","- L3 decision context explaining *why* each dependent matters",'- Entries with `"edgeSource": "lsp-fallback"` were recovered from raw call sites, not',' resolved edges -- treat them as "a call to this name exists here" and verify before'," relying on them","","**Step 2 -- Assess the risk level.**","","- **LOW**: Safe to proceed -- changes are localized","- **MEDIUM**: Review the affected files -- some cross-cutting concern may exist","- **HIGH**: Stop and warn the user -- significant downstream impact detected","- **CRITICAL**: Do not proceed without explicit user confirmation","","**Step 3 -- Cross-reference with query if needed.**","","If impact returns unexpected results or you need more context on a specific dependent,","query the graph:","```",'npx --no-install docuvia query "<dependent_symbol>" --format=prompt',"```","","**Step 4 -- After changes, stage decisions.**","","If your change reflects architectural rationale, stage it for the knowledge graph:","```","npx --no-install docuvia analyze <file> --agent-authored --stage","```"].join(`
|
|
174
174
|
`),Ib=["---","name: docuvia-knowledge-graph","description: >"," Use when querying the Docuvia knowledge graph -- guides effective query construction,"," result interpretation (match types, L2/L3 data), and when to cross-check with raw"," file tools.","---","","# Querying the Knowledge Graph","","## When to use this skill","","You need to look up a concept, file, symbol, or architectural decision in the codebase.","The knowledge graph provides structural awareness that Grep/Glob/Read cannot match.","","## Query workflow","","**Step 1 -- Construct a targeted query.**","","Use the `docuvia_query` MCP tool (or CLI fallback):","```",'npx --no-install docuvia query "<target>" --format=prompt',"```","","Tips for effective queries:",'- Use exact symbol names for best results (`match_type: "exact"`)',"- Concept phrases work but may return `keyword` matches -- cross-check those","- File paths resolve to their containing module's structural data","- Use `--limit=N` to cap results when exploring broadly","","**Step 2 -- Interpret the result.**","","Each result includes:","- `matchType`: `exact` (high confidence) / `keyword` (medium) / `neighbor` (low)","- `node`: L2 structural data (type, filePath, key)","- `l3Decisions`: L3 rationale if available (why this code exists)","","**Step 3 -- Decide trust level.**","",'- `matchType: "exact"` on a well-known symbol -> trust it','- `matchType: "keyword"` or `"neighbor"` -> cross-check with Grep/Glob',"- Empty result -> fall back to raw file tools",'- `tier_b_status: "unprocessed"` -> graph has not seen this file yet, treat as unknown',"","**Step 4 -- Use impact for dependency analysis.**","","After finding a symbol, check who depends on it:","```","npx --no-install docuvia impact <symbolOrFile>","```"].join(`
|
|
175
175
|
`),Lb=["---","name: docuvia-agent-authored","description: >"," Use after making code changes that reflect architectural decisions, rules, or"," notable rationale -- stages L3 decisions into the knowledge graph for future"," query/impact context. Supports both MCP tool and CLI fallback.","---","","# Stage Agent-Authored L3 Decisions","","## When to use this skill","","You have just made (or are about to commit) a code change that reflects:","- An architectural decision (why this approach was chosen)","- A rule or constraint (what must not be changed)","- Context that future agents need (why this code exists this way)","","## Staging decisions","","**Option A -- MCP tool (preferred, when available):**","","Use `docuvia_apply_decision` with:","```json","{",' "targetPath": "src/path/to/file.ts",',' "decisions": ['," {",' "title": "Decision title",',' "content": "Detailed rationale",',' "nodeType": "decision",',' "confidence": 0.9'," }"," ]","}","```","","**Option B -- CLI fallback:**","","```","npx --no-install docuvia analyze <file> --agent-authored --stage","```","","Pipe JSON on stdin or use `--decisions-file=<path>`.","","**Option C -- CLI (direct write, no staging):**","","```","npx --no-install docuvia analyze <file> --agent-authored","```","","## Decision fields","","- `title`: Short description of the decision","- `content`: Detailed rationale -- why this approach was chosen","- `nodeType`: One of `change`, `rule`, `decision`, `context`","- `confidence`: 0.0 to 1.0 -- how certain you are about this rationale","","## How it works","","Staged decisions (Options A/B) are flushed into `l3_nodes` automatically on the next git","commit that touches the target file -- via the post-commit hook's `--flush-staged-l3` step.","No manual flush step needed.","","Direct writes (Option C) persist immediately to `l3_nodes` with `source='agent-authored'`."].join(`
|
|
@@ -185,7 +185,7 @@ ${i}`)}async configureHooks(e){let r=nt.join(e,Cn);await Je.mkdir(r,{recursive:!
|
|
|
185
185
|
`)}function $w(){let t=[];return t.push("var dragging = false, moved = false, lastX = 0, lastY = 0;"),t.push('canvas.addEventListener("mousedown", function (e) { dragging = true; moved = false; lastX = e.clientX; lastY = e.clientY; canvas.classList.add("dragging"); });'),t.push('window.addEventListener("mousemove", function (e) {'),t.push(" if (!dragging) return;"),t.push(" var dx = e.clientX - lastX, dy = e.clientY - lastY;"),t.push(" if (Math.abs(dx) + Math.abs(dy) > 3) moved = true;"),t.push(" ox += dx; oy += dy; lastX = e.clientX; lastY = e.clientY;"),t.push(" draw();"),t.push("});"),t.push('window.addEventListener("mouseup", function (e) {'),t.push(' canvas.classList.remove("dragging");'),t.push(" if (dragging && !moved) handleClick(e);"),t.push(" dragging = false;"),t.push("});"),t.push('canvas.addEventListener("wheel", function (e) {'),t.push(" e.preventDefault();"),t.push(" var f = Math.exp(-e.deltaY * 0.0012);"),t.push(" var wx = (e.offsetX - ox) / scale, wy = (e.offsetY - oy) / scale;"),t.push(" scale = Math.min(Math.max(scale * f, 0.03), 10);"),t.push(" ox = e.offsetX - wx * scale; oy = e.offsetY - wy * scale;"),t.push(" draw();"),t.push("}, { passive: false });"),t.push('document.getElementById("btn-zoom-in").addEventListener("click", function() {'),t.push(" var w = canvas.clientWidth, h = canvas.clientHeight;"),t.push(" var wx = (w / 2 - ox) / scale, wy = (h / 2 - oy) / scale;"),t.push(" scale = Math.min(scale * 1.4, 10);"),t.push(" ox = w / 2 - wx * scale; oy = h / 2 - wy * scale;"),t.push(" draw();"),t.push("});"),t.push('document.getElementById("btn-zoom-out").addEventListener("click", function() {'),t.push(" var w = canvas.clientWidth, h = canvas.clientHeight;"),t.push(" var wx = (w / 2 - ox) / scale, wy = (h / 2 - oy) / scale;"),t.push(" scale = Math.max(scale / 1.4, 0.03);"),t.push(" ox = w / 2 - wx * scale; oy = h / 2 - wy * scale;"),t.push(" draw();"),t.push("});"),t.push('document.getElementById("btn-fit").addEventListener("click", function() { fitView(); draw(); });'),t.push("function handleClick(e) {"),t.push(" var rect = canvas.getBoundingClientRect();"),t.push(" var wx = (e.clientX - rect.left - ox) / scale, wy = (e.clientY - rect.top - oy) / scale;"),t.push(" var best = null, bestD = 12 / scale + 6;"),t.push(" nodes.forEach(function (n) {"),t.push(" if (hiddenGroups[n.group]) return;"),t.push(" var d = Math.hypot(n.x - wx, n.y - wy);"),t.push(" if (d < bestD + nodeRadius(n)) { best = n; bestD = d; }"),t.push(" });"),t.push(" if (!best) { selected = null; blast = null; renderInfo(); draw(); return; }"),t.push(" if (selected && selected.id === best.id) {"),t.push(" blast = blast ? null : computeBlast(best.id);"),t.push(" } else {"),t.push(" selected = best; blast = null;"),t.push(" }"),t.push(" renderInfo();"),t.push(" draw();"),t.push("}"),t.push("function selectNode(id) {"),t.push(" selected = nodeById[id]; blast = null;"),t.push(" ox = canvas.clientWidth / 2 - selected.x * scale;"),t.push(" oy = canvas.clientHeight / 2 - selected.y * scale;"),t.push(" renderInfo();"),t.push(" draw();"),t.push("}"),t.join(`
|
|
186
186
|
`)}function Ww(){let t=[];return t.push("function renderInfo() {"),t.push(' var info = document.getElementById("info");'),t.push(' var nb = document.getElementById("neighbors");'),t.push(' nb.textContent = "";'),t.push(' info.textContent = "";'),t.push(" if (!selected) {"),t.push(' var muted = document.createElement("span");'),t.push(' muted.className = "muted";'),t.push(' muted.textContent = "Click a node to inspect it. Click again to see its blast radius (upstream dependents).";'),t.push(" info.appendChild(muted);"),t.push(" return;"),t.push(" }"),t.push(" var n = selected;"),t.push(' var title = document.createElement("div");'),t.push(' var bold = document.createElement("b"); bold.textContent = n.label;'),t.push(' var badge = document.createElement("span"); badge.className = "kind-badge kind-" + n.kind; badge.textContent = n.kind;'),t.push(" title.appendChild(bold); title.appendChild(badge);"),t.push(" info.appendChild(title);"),t.push(" var addField = function (k, v) {"),t.push(" if (!v) return;"),t.push(' var d = document.createElement("div");'),t.push(' d.textContent = k + ": " + v;'),t.push(" info.appendChild(d);"),t.push(" };"),t.push(' addField("file", n.filePath);'),t.push(' addField("group", (GRAPH.groups[n.group] || {}).label);'),t.push(' addField("degree", String(n.degree));'),t.push(' addField("tags", (n.tags || []).join(", "));'),t.push(' addField("type", n.l2Type);'),t.push(' addField("decision type", n.decisionType);'),t.push(' addField("confidence", n.confidence != null ? String(n.confidence) : "");'),t.push(' addField("validity", n.validityStatus);'),t.push(' addField("source commits", (n.sourceCommits || []).join(", "));'),t.push(' addField("content", n.content);'),t.push(" if (blast) {"),t.push(" var count = Object.keys(blast).length - 1;"),t.push(' var d = document.createElement("div");'),t.push(' var b = document.createElement("b");'),t.push(' b.textContent = "blast radius: " + count + " upstream node" + (count === 1 ? "" : "s");'),t.push(" d.appendChild(b);"),t.push(" info.appendChild(d);"),t.push(" }"),t.push(" var neigh = {};"),t.push(' (incoming[n.id] || []).forEach(function (l) { neigh[l.source] = "in:" + l.linkType; });'),t.push(' (outgoing[n.id] || []).forEach(function (l) { neigh[l.target] = "out:" + l.linkType; });'),t.push(" Object.keys(neigh).slice(0, 25).forEach(function (id) {"),t.push(" var m = nodeById[id];"),t.push(' var item = document.createElement("div");'),t.push(' item.className = "neighbor-item";'),t.push(' item.textContent = neigh[id] + " - " + m.label;'),t.push(' item.addEventListener("click", function () { selectNode(id); });'),t.push(" nb.appendChild(item);"),t.push(" });"),t.push("}"),t.push('var searchInput = document.getElementById("search");'),t.push('var searchResults = document.getElementById("search-results");'),t.push('searchInput.addEventListener("input", function () {'),t.push(" var q = searchInput.value.trim().toLowerCase();"),t.push(' searchResults.textContent = "";'),t.push(" if (!q) return;"),t.push(" nodes.filter(function (n) { return n.label.toLowerCase().indexOf(q) >= 0; })"),t.push(" .slice(0, 20)"),t.push(" .forEach(function (n) {"),t.push(' var item = document.createElement("div");'),t.push(' item.className = "search-item";'),t.push(' item.textContent = n.label + " (" + n.kind + ")";'),t.push(' item.addEventListener("click", function () { selectNode(n.id); });'),t.push(" searchResults.appendChild(item);"),t.push(" });"),t.push("});"),t.push('var legendItems = document.getElementById("legend-items");'),t.push("GRAPH.groups.forEach(function (g) {"),t.push(' var item = document.createElement("div");'),t.push(' item.className = "legend-item";'),t.push(' var dot = document.createElement("span");'),t.push(' dot.className = "legend-dot";'),t.push(" dot.style.background = PALETTE[g.id % PALETTE.length];"),t.push(' var label = document.createElement("span");'),t.push(' label.className = "legend-label";'),t.push(" label.textContent = g.label;"),t.push(' var count = document.createElement("span");'),t.push(' count.className = "legend-count";'),t.push(" count.textContent = String(g.count);"),t.push(" item.appendChild(dot); item.appendChild(label); item.appendChild(count);"),t.push(' item.addEventListener("click", function () {'),t.push(" hiddenGroups[g.id] = !hiddenGroups[g.id];"),t.push(' item.classList.toggle("off", !!hiddenGroups[g.id]);'),t.push(" draw();"),t.push(" });"),t.push(" legendItems.appendChild(item);"),t.push("});"),t.join(`
|
|
187
187
|
`)}function jw(){let t=[];return t.push('document.getElementById("stats").textContent ='),t.push(' GRAPH.stats.nodeCount + " nodes, " + GRAPH.stats.linkCount + " links, " +'),t.push(' GRAPH.stats.groupCount + " groups" + (GRAPH.collapsed ? " (collapsed to file level)" : "") +'),t.push(' " - generated " + GRAPH.generatedAt.slice(0, 19).replace("T", " ");'),t.push('window.addEventListener("resize", resize);'),t.push("renderInfo();"),t.push("resize();"),t.push("function loop() {"),t.push(" if (ticksLeft > 0) {"),t.push(" for (var i = 0; i < 4 && ticksLeft > 0; i++) { tick(); ticksLeft--; }"),t.push(" if (ticksLeft === 260) fitView();"),t.push(" draw();"),t.push(" requestAnimationFrame(loop);"),t.push(" } else {"),t.push(" fitView();"),t.push(" draw();"),t.push(" }"),t.push("}"),t.push("loop();"),t.join(`
|
|
188
|
-
`)}function Vw(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}var zS="topology.json",JS="topology.html";function Jw(t,e){let r=t?pi.resolve(e,t):pi.join(e,he);if(!r.startsWith(e+pi.sep)&&r!==e)throw new S(O.FS_PATH_TRAVERSAL,`Resolved output directory "${r}" escapes workspace root "${e}" \u2014 possible path traversal via --out`);return r}function qw(t,e){h.info(g.EXPORT_STATS_LINE(t.stats.nodeCount,t.stats.linkCount,t.stats.groupCount)),t.collapsed&&h.info(g.EXPORT_COLLAPSED_LINE),t.stats.foldedLinkCount>0&&h.info(g.EXPORT_FOLDED_LINE(t.stats.foldedLinkCount)),e&&h.info(g.EXPORT_HTML_PATH_LINE(e))}async function QS(t={},e=qS.cwd()){h.header(g.EXPORT_HEADER);let r=h.spinner(g.EXPORT_START).start(),n=zw.randomUUID(),i=te();i.onLog(a=>{a.level===Re.INFO&&(r.text=a.message)}),T.createScope(n),T.set(n,y.WORKSPACE_ROOT,e),t.collapse&&T.set(n,y.COLLAPSE,t.collapse);let s,o;try{s=Jw(t.out,pi.resolve(e)),o=await X.exportTopology(n,i),await Ld.mkdir(s,{recursive:!0});let a=pi.join(s,zS);await Ld.writeFile(a,JSON.stringify(o,null,2));let l;t.jsonOnly||(l=pi.join(s,JS),await Ld.writeFile(l,VS(o))),r.succeed(g.EXPORT_SUCCESS+a),qw(o,l)}catch(a){let l=a instanceof S||a instanceof Error?a.message:String(a);r.fail(g.EXPORT_FAIL+l),qS.exitCode=1}finally{T.deleteScope(n)}}import XS from"process";import Qw from"crypto";async function ZS(t=XS.cwd()){h.header(g.SNAPSHOT_HEADER);let e=h.spinner(g.SNAPSHOT_START).start(),r=Qw.randomUUID(),n=te();n.onLog(i=>{i.level===Re.INFO&&(e.text=i.message)}),T.createScope(r),T.set(r,y.WORKSPACE_ROOT,t);try{let i=await X.snapshot(r,n);e.succeed(g.SNAPSHOT_SUCCESS),h.info(g.SNAPSHOT_NODES_WRITTEN_LINE(i.nodesWritten)),h.info(g.SNAPSHOT_EDGES_WRITTEN_LINE(i.edgesWritten)),h.info(g.SNAPSHOT_MARKDOWN_WRITTEN_LINE(i.markdownFilesWritten))}catch(i){let s=i instanceof S||i instanceof Error?i.message:String(i);e.fail(g.SNAPSHOT_FAIL+s),XS.exitCode=1}finally{T.deleteScope(r)}}import eT from"process";import Xw from"crypto";async function tT(t=eT.cwd(),e){h.header(g.HYDRATE_HEADER);let r=h.spinner(g.HYDRATE_START).start(),n=Xw.randomUUID(),i=te();i.onLog(s=>{s.level===Re.INFO&&(r.text=s.message)}),T.createScope(n),T.set(n,y.WORKSPACE_ROOT,t);try{let s=await X.hydrate(n,i,e);if(s.refused){r.warn(g.HYDRATE_REFUSED(s.refusalReason));return}if(!s.hydrated){r.warn(g.HYDRATE_NOTHING);return}r.succeed(g.HYDRATE_SUCCESS),h.info(g.HYDRATE_NODES_LOADED_LINE(s.nodesLoaded)),h.info(g.HYDRATE_EDGES_LOADED_LINE(s.edgesLoaded)),s.edgesDropped>0&&h.info(g.HYDRATE_EDGES_DROPPED_LINE(s.edgesDropped))}catch(s){let o=s instanceof S||s instanceof Error?s.message:String(s);r.fail(g.HYDRATE_FAIL+o),eT.exitCode=1}finally{T.deleteScope(n)}}import Nd from"process";import Zw from"crypto";var rT={[qe.NO_REMOTE]:g.SYNC_KNOWLEDGE_NO_REMOTE,[qe.UP_TO_DATE]:g.SYNC_KNOWLEDGE_UP_TO_DATE,[qe.FAST_FORWARDED_LOCAL]:g.SYNC_KNOWLEDGE_FAST_FORWARDED,[qe.PUSHED_LOCAL]:g.SYNC_KNOWLEDGE_PUSHED,[qe.MERGED]:g.SYNC_KNOWLEDGE_MERGED};async function nT(t=Nd.cwd()){h.header(g.SYNC_KNOWLEDGE_HEADER);let e=h.spinner(g.SYNC_KNOWLEDGE_START).start(),r=Zw.randomUUID(),n=te();n.onLog(s=>{s.level===Re.INFO&&(e.text=s.message)}),T.createScope(r),T.set(r,y.WORKSPACE_ROOT,t);let i=Nd.env.DOCUVIA_PUSH_TIMEOUT_MS;i&&T.set(r,y.GIT_NETWORK_TIMEOUT_MS,Number(i));try{let s=await X.syncKnowledge(r,n);if(s.status===qe.NO_REMOTE){e.warn(rT[s.status]);return}e.succeed(rT[s.status])}catch(s){let o=s instanceof S||s instanceof Error?s.message:String(s);e.fail(g.SYNC_KNOWLEDGE_FAIL+o),Nd.exitCode=1}finally{T.deleteScope(r)}}import Cd from"crypto";import*as iT from"path";async function eF(t){let e=[Ep,Sp,Tp,Ap];for(let r of e)await Lr(iT.join(t,r),`<!-- ${mt} -->`,`<!-- ${yr} -->`)}async function tF(t,e,r){let n=[];for(let i of t)try{await i.uninstallHooks(e)}catch(s){let o=s instanceof Error?s.message:String(s);r.warn(`${g.UNINSTALL_HOOKS_FAIL_LOG}${z.DOUBLE_QUOTE}${i.name}${z.DOUBLE_QUOTE}`,{platform:i.name,error:o}),h.warn(g.UNINSTALL_PLATFORM_FAIL+i.name+g.UNINSTALL_PLATFORM_FAIL_MID+o),n.push(i.name)}return n}async function rF(t,e,r){let n=Cd.randomUUID();T.createScope(n),T.set(n,y.WORKSPACE_ROOT,t),T.set(n,y.KEEP_DB,e);try{let i=await X.uninstallGitHooks(n,r);return h.success(g.UNINSTALL_GIT_HOOKS_SUCCESS(i.postCommitRemoved,i.prePushRemoved)),i.knowledgeBranchDeleted&&h.success(g.UNINSTALL_KNOWLEDGE_BRANCH_DELETED),null}catch(i){let s=i instanceof S||i instanceof Error?i.message:String(i);return r.warn(g.UNINSTALL_GIT_HOOKS_FAIL_LOG,{error:s}),h.warn(g.UNINSTALL_GIT_HOOKS_FAIL+s),g.UNINSTALL_GIT_HOOKS_FAILURE_NAME}finally{T.deleteScope(n)}}async function nF(t,e,r){if(e)return null;let n=Cd.randomUUID();T.createScope(n),T.set(n,y.WORKSPACE_ROOT,t);try{return(await X.removeDocuviaDir(n,r)).removed&&h.success(g.UNINSTALL_DOCUVIA_DIR_REMOVED),null}catch(i){let s=i instanceof S||i instanceof Error?i.message:String(i);return r.warn(g.UNINSTALL_DOCUVIA_DIR_FAIL_LOG,{error:s}),h.warn(g.UNINSTALL_DOCUVIA_DIR_FAIL+s),g.UNINSTALL_DOCUVIA_DIR_FAILURE_NAME}finally{T.deleteScope(n)}}async function iF(t,e,r){if(e)return h.info(g.UNINSTALL_KEEP_DB),null;let n=Cd.randomUUID();T.createScope(n),T.set(n,y.WORKSPACE_ROOT,t);try{let i=await X.clean(n,r);return h.success(g.UNINSTALL_SUCCESS_CLEAN+i.message),null}catch(i){let s=i instanceof S||i instanceof Error?i.message:String(i);return r.warn(g.UNINSTALL_DB_CLEANUP_FAIL_LOG,{error:s}),h.warn(g.UNINSTALL_FAIL_CLEAN+s),g.UNINSTALL_DB_CLEANUP_FAILURE_NAME}finally{T.deleteScope(n)}}function sF(t){try{let e=DS(t);e.length>0?h.success(`Removed ${e.length} skill(s): ${e.join(", ")}`):h.info("No Docuvia skill files found to remove.")}catch(e){h.warn(`Skill removal failed: ${e instanceof Error?e.message:String(e)}`)}}async function oF(t,e,r,n){let i=await tF(t,e,n);await eF(e);let s=await rF(e,r,n);s&&i.push(s);let o=await iF(e,r,n);o&&i.push(o);let a=await nF(e,r,n);return a&&i.push(a),i}function aF(t){t.length>0?(h.warn(g.UNINSTALL_PARTIAL+t.join(", ")),process.exitCode=1):h.success(g.UNINSTALL_SUCCESS)}async function sT(t,e,r=!1,n=!1,i=!1){if(!t){h.error(g.UNINSTALL_INVALID_WORKSPACE_ROOT),process.exitCode=1;return}let s=te();try{h.header(g.UNINSTALL_HEADER),h.info(g.UNINSTALL_START);let o=await tl(g.UNINSTALL_HOOKS_SELECT,e,n),a=await oF(o,t,r,s);i&&sF(t),aF(a)}catch(o){let a=o instanceof Error?o.message:String(o);s.error(g.UNINSTALL_FAIL_LOG,{error:a}),h.warn(g.UNINSTALL_FAIL+a),process.exitCode=1}}import gi from"process";import uF from"crypto";var lF=[{category:g.DOCTOR_CATEGORY_DATABASE,test:t=>t.startsWith("sqlite_")||t==="db_runner"||t==="db_found"||t==="graph_empty"||t==="l2_semantic_coverage"||t==="call_graph_resolution"||t==="canary_self_test"},{category:g.DOCTOR_CATEGORY_GIT_HOOKS,test:t=>t==="git_hook"||t==="pre_push_hook"},{category:g.DOCTOR_CATEGORY_GIT,test:t=>t.startsWith("git_")||t==="worktree_divergence"},{category:g.DOCTOR_CATEGORY_LOGS,test:t=>t==="logs"},{category:g.DOCTOR_CATEGORY_TIER_B,test:t=>t==="tier_b_commit_cap"},{category:g.DOCTOR_CATEGORY_TIER_B_COVERAGE,test:t=>t==="tier_b_coverage"},{category:g.DOCTOR_CATEGORY_LLM,test:t=>t==="llm_reachability"||t==="tier_c_queue"},{category:g.DOCTOR_CATEGORY_LSP,test:t=>t.startsWith("lsp_binary")},{category:g.DOCTOR_CATEGORY_AGENT_HOOKS,test:t=>t.startsWith("agent_hooks_")},{category:g.DOCTOR_CATEGORY_AGENT_ADOPTION,test:t=>t==="agent_authored_adoption"}],oT=[g.DOCTOR_CATEGORY_DATABASE,g.DOCTOR_CATEGORY_GIT,g.DOCTOR_CATEGORY_GIT_HOOKS,g.DOCTOR_CATEGORY_LOGS,g.DOCTOR_CATEGORY_TIER_B,g.DOCTOR_CATEGORY_TIER_B_COVERAGE,g.DOCTOR_CATEGORY_LLM,g.DOCTOR_CATEGORY_LSP,g.DOCTOR_CATEGORY_AGENT_HOOKS,g.DOCTOR_CATEGORY_AGENT_ADOPTION,g.DOCTOR_CATEGORY_OTHER];function cF(t){return lF.find(e=>e.test(t))?.category??g.DOCTOR_CATEGORY_OTHER}function aT(t){let e=new Map;for(let[r,n]of Object.entries(t)){let i=cF(r),s=e.get(i)??[];s.push([r,n]),e.set(i,s)}return e}var lT=[{header:g.DOCTOR_COL_CHECK},{header:g.DOCTOR_COL_STATUS},{header:g.DOCTOR_COL_MESSAGE,maxWidth:70},{header:g.DOCTOR_COL_FIX,maxWidth:50}];function cT(t,e){let r=e.status===Y.PASS?`${Al.PASS} ${g.DOCTOR_STATUS_PASS}`:`${Al.FAIL} ${g.DOCTOR_STATUS_FAIL}`,n=e.details?`${e.message}${z.OPEN_PAREN}${e.details}${z.CLOSE_PAREN}`:e.message;return[t,r,n,e.suggestion??z.EMPTY]}function uT(t){let e=Object.values(t);return{passed:e.filter(n=>n.status===Y.PASS).length,total:e.length}}var dF=60;function pF(){return{llmBaseUrl:gi.env.AI_DOCUVIA_INTEGRATIONS_OPENAI_BASE_URL,llmApiKey:gi.env.AI_DOCUVIA_INTEGRATIONS_OPENAI_API_KEY,llmModel:gi.env.AI_DOCUVIA_MODEL||gi.env.AI_DOCUVIA_FAST_MODEL}}function gF(t){let e=aT(t);for(let r of oT){let n=e.get(r);!n||n.length===0||(h.section(r),h.table(lT,n.map(([i,s])=>cT(i,s))))}}function fF(t,e){let{passed:r,total:n}=uT(t);h.log(""),h.log(hp.HORIZONTAL.repeat(dF));let i=g.DOCTOR_SUMMARY_PASSED(r,n);if(e){h.success(i);return}h.error(i),h.info(g.DOCTOR_FIX_HINT)}async function hF(t,e,r,n){T.createScope(t),T.set(t,y.WORKSPACE_ROOT,r);try{let i=await X.doctor(t,e,{...n,...pF()});return gF(i.diagnostics),fF(i.diagnostics,i.allPassed),i.allPassed}catch(i){let s=i instanceof S||i instanceof Error?i.message:String(i);return h.error(g.DOCTOR_FAIL+s),!1}finally{T.deleteScope(t)}}function mF(t){let{skipDb:e=!1,skipGit:r=!1,skipHooks:n=!1,skipLogs:i=!1,skipLsp:s=!1,skipLlm:o=!1,fix:a=!1}=t;return{skipDb:e,skipGit:r,skipHooks:n,skipLogs:i,skipLsp:s,skipLlm:o,fix:a}}async function dT(t,e={}){try{h.header(g.DOCTOR_HEADER),h.info(g.DOCTOR_START);let r=uF.randomUUID(),n=te();await hF(r,n,t,mF(e))||(gi.exitCode=1)}catch(r){let n=r instanceof Error?r.message:String(r);h.error(g.DOCTOR_FAIL+n),gi.exitCode=1}}import qr from"process";import Pd from"crypto";var cl={LIST:"list",ENABLE:"enable",DISABLE:"disable",CHECK:"check"};function gT(t){return!!t&&Object.values(nr).includes(t)}async function _F(t){let e=Pd.randomUUID(),r=te();T.createScope(e),T.set(e,y.WORKSPACE_ROOT,t);try{let n=await X.listHooks(e,r);h.header(g.HOOKS_HEADER),h.table([{header:g.HOOKS_COL_NAME},{header:g.HOOKS_COL_STATUS}],Object.values(nr).map(i=>[i,n[i]?g.HOOKS_STATUS_ENABLED:g.HOOKS_STATUS_DISABLED]))}catch(n){let i=n instanceof S||n instanceof Error?n.message:String(n);h.error(g.HOOKS_LIST_FAIL+i),qr.exitCode=1}finally{T.deleteScope(e)}}async function pT(t,e,r){if(!gT(e)){h.error(g.HOOKS_INVALID_NAME(e,Object.values(nr))),qr.exitCode=1;return}let n=Pd.randomUUID(),i=te();T.createScope(n),T.set(n,y.WORKSPACE_ROOT,t),T.set(n,y.HOOK_NAME,e),T.set(n,y.HOOK_ENABLED,r);try{let s=await X.setHookEnabled(n,i);h.success(r?g.HOOKS_ENABLED(e):g.HOOKS_DISABLED(e)),h.table([{header:g.HOOKS_COL_NAME},{header:g.HOOKS_COL_STATUS}],Object.values(nr).map(o=>[o,s[o]?g.HOOKS_STATUS_ENABLED:g.HOOKS_STATUS_DISABLED]))}catch(s){let o=s instanceof S||s instanceof Error?s.message:String(s);h.error(g.HOOKS_SET_FAIL+o),qr.exitCode=1}finally{T.deleteScope(n)}}async function EF(t,e){if(!gT(e)){qr.exitCode=1;return}let r=Pd.randomUUID();T.createScope(r),T.set(r,y.WORKSPACE_ROOT,t);try{let n=await X.listHooks(r,fe());qr.exitCode=n[e]?0:1}catch{qr.exitCode=0}finally{T.deleteScope(r)}}async function fT(t,e,r=qr.cwd()){switch(t){case cl.LIST:await _F(r);return;case cl.ENABLE:await pT(r,e,!0);return;case cl.DISABLE:await pT(r,e,!1);return;case cl.CHECK:await EF(r,e);return;default:h.error(g.HOOKS_UNKNOWN_SUBCOMMAND(t)),qr.exitCode=1}}import{Server as zF}from"@modelcontextprotocol/sdk/server/index.js";import{StdioServerTransport as JF}from"@modelcontextprotocol/sdk/server/stdio.js";import{CallToolRequestSchema as qF,ListToolsRequestSchema as QF}from"@modelcontextprotocol/sdk/types.js";import OF from"crypto";import{z as yF}from"zod";import{createRequire as SF}from"module";import{existsSync as TF}from"fs";import{dirname as hT,join as AF}from"path";import{fileURLToPath as RF}from"url";var ul;function dl(){if(ul!==void 0)return ul;let t=hT(RF(import.meta.url));for(;;){let e=AF(t,"package.json");if(TF(e)){let n=SF(import.meta.url)(e);if(typeof n.version!="string")throw S.wrap(O.FS_READ_FAILED,`Package manifest at ${e} has no string "version" field`,void 0);return ul=n.version,ul}let r=hT(t);if(r===t)break;t=r}throw S.wrap(O.FS_READ_FAILED,"Could not locate the CLI package.json by walking up from the running module",void 0)}var mT="docuvia-local-mcp",_T=dl(),ET=["Docuvia maintains a local knowledge graph of this workspace: modules, dependencies, blast radius, and recorded architectural decisions ('why' rationale).","Workflow:","1. Before exploring code structure with Grep/Glob/Read, call docuvia_query \u2014 it returns structural context those tools cannot.","2. Before editing or deleting a symbol/file, call docuvia_impact to see who depends on it.","3. After finishing edits, call docuvia_detect_changes as a pre-commit risk check.","4. If results look empty or suspicious, call docuvia_status \u2014 incomplete Tier B coverage means partial answers.","Treat non-'exact' match_type results and 'unprocessed'/incomplete-coverage flags as lower confidence \u2014 unknown, not zero; cross-check before relying on them."].join(`
|
|
188
|
+
`)}function Vw(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}var zS="topology.json",JS="topology.html";function Jw(t,e){let r=t?pi.resolve(e,t):pi.join(e,he);if(!r.startsWith(e+pi.sep)&&r!==e)throw new S(O.FS_PATH_TRAVERSAL,`Resolved output directory "${r}" escapes workspace root "${e}" \u2014 possible path traversal via --out`);return r}function qw(t,e){h.info(g.EXPORT_STATS_LINE(t.stats.nodeCount,t.stats.linkCount,t.stats.groupCount)),t.collapsed&&h.info(g.EXPORT_COLLAPSED_LINE),t.stats.foldedLinkCount>0&&h.info(g.EXPORT_FOLDED_LINE(t.stats.foldedLinkCount)),e&&h.info(g.EXPORT_HTML_PATH_LINE(e))}async function QS(t={},e=qS.cwd()){h.header(g.EXPORT_HEADER);let r=h.spinner(g.EXPORT_START).start(),n=zw.randomUUID(),i=te();i.onLog(a=>{a.level===Re.INFO&&(r.text=a.message)}),T.createScope(n),T.set(n,y.WORKSPACE_ROOT,e),t.collapse&&T.set(n,y.COLLAPSE,t.collapse);let s,o;try{s=Jw(t.out,pi.resolve(e)),o=await X.exportTopology(n,i),await Ld.mkdir(s,{recursive:!0});let a=pi.join(s,zS);await Ld.writeFile(a,JSON.stringify(o,null,2));let l;t.jsonOnly||(l=pi.join(s,JS),await Ld.writeFile(l,VS(o))),r.succeed(g.EXPORT_SUCCESS+a),qw(o,l)}catch(a){let l=a instanceof S||a instanceof Error?a.message:String(a);r.fail(g.EXPORT_FAIL+l),qS.exitCode=1}finally{T.deleteScope(n)}}import XS from"process";import Qw from"crypto";async function ZS(t=XS.cwd()){h.header(g.SNAPSHOT_HEADER);let e=h.spinner(g.SNAPSHOT_START).start(),r=Qw.randomUUID(),n=te();n.onLog(i=>{i.level===Re.INFO&&(e.text=i.message)}),T.createScope(r),T.set(r,y.WORKSPACE_ROOT,t);try{let i=await X.snapshot(r,n);e.succeed(g.SNAPSHOT_SUCCESS),h.info(g.SNAPSHOT_NODES_WRITTEN_LINE(i.nodesWritten)),h.info(g.SNAPSHOT_EDGES_WRITTEN_LINE(i.edgesWritten)),h.info(g.SNAPSHOT_MARKDOWN_WRITTEN_LINE(i.markdownFilesWritten))}catch(i){let s=i instanceof S||i instanceof Error?i.message:String(i);e.fail(g.SNAPSHOT_FAIL+s),XS.exitCode=1}finally{T.deleteScope(r)}}import eT from"process";import Xw from"crypto";async function tT(t=eT.cwd(),e){h.header(g.HYDRATE_HEADER);let r=h.spinner(g.HYDRATE_START).start(),n=Xw.randomUUID(),i=te();i.onLog(s=>{s.level===Re.INFO&&(r.text=s.message)}),T.createScope(n),T.set(n,y.WORKSPACE_ROOT,t);try{let s=await X.hydrate(n,i,e);if(s.refused){r.warn(g.HYDRATE_REFUSED(s.refusalReason));return}if(!s.hydrated){r.warn(g.HYDRATE_NOTHING);return}r.succeed(g.HYDRATE_SUCCESS),h.info(g.HYDRATE_NODES_LOADED_LINE(s.nodesLoaded)),h.info(g.HYDRATE_EDGES_LOADED_LINE(s.edgesLoaded)),s.edgesDropped>0&&h.info(g.HYDRATE_EDGES_DROPPED_LINE(s.edgesDropped))}catch(s){let o=s instanceof S||s instanceof Error?s.message:String(s);r.fail(g.HYDRATE_FAIL+o),eT.exitCode=1}finally{T.deleteScope(n)}}import Nd from"process";import Zw from"crypto";var rT={[Qe.NO_REMOTE]:g.SYNC_KNOWLEDGE_NO_REMOTE,[Qe.UP_TO_DATE]:g.SYNC_KNOWLEDGE_UP_TO_DATE,[Qe.FAST_FORWARDED_LOCAL]:g.SYNC_KNOWLEDGE_FAST_FORWARDED,[Qe.PUSHED_LOCAL]:g.SYNC_KNOWLEDGE_PUSHED,[Qe.MERGED]:g.SYNC_KNOWLEDGE_MERGED};async function nT(t=Nd.cwd()){h.header(g.SYNC_KNOWLEDGE_HEADER);let e=h.spinner(g.SYNC_KNOWLEDGE_START).start(),r=Zw.randomUUID(),n=te();n.onLog(s=>{s.level===Re.INFO&&(e.text=s.message)}),T.createScope(r),T.set(r,y.WORKSPACE_ROOT,t);let i=Nd.env.DOCUVIA_PUSH_TIMEOUT_MS;i&&T.set(r,y.GIT_NETWORK_TIMEOUT_MS,Number(i));try{let s=await X.syncKnowledge(r,n);if(s.status===Qe.NO_REMOTE){e.warn(rT[s.status]);return}e.succeed(rT[s.status])}catch(s){let o=s instanceof S||s instanceof Error?s.message:String(s);e.fail(g.SYNC_KNOWLEDGE_FAIL+o),Nd.exitCode=1}finally{T.deleteScope(r)}}import Cd from"crypto";import*as iT from"path";async function eF(t){let e=[Ep,Sp,Tp,Ap];for(let r of e)await Lr(iT.join(t,r),`<!-- ${mt} -->`,`<!-- ${yr} -->`)}async function tF(t,e,r){let n=[];for(let i of t)try{await i.uninstallHooks(e)}catch(s){let o=s instanceof Error?s.message:String(s);r.warn(`${g.UNINSTALL_HOOKS_FAIL_LOG}${z.DOUBLE_QUOTE}${i.name}${z.DOUBLE_QUOTE}`,{platform:i.name,error:o}),h.warn(g.UNINSTALL_PLATFORM_FAIL+i.name+g.UNINSTALL_PLATFORM_FAIL_MID+o),n.push(i.name)}return n}async function rF(t,e,r){let n=Cd.randomUUID();T.createScope(n),T.set(n,y.WORKSPACE_ROOT,t),T.set(n,y.KEEP_DB,e);try{let i=await X.uninstallGitHooks(n,r);return h.success(g.UNINSTALL_GIT_HOOKS_SUCCESS(i.postCommitRemoved,i.prePushRemoved)),i.knowledgeBranchDeleted&&h.success(g.UNINSTALL_KNOWLEDGE_BRANCH_DELETED),null}catch(i){let s=i instanceof S||i instanceof Error?i.message:String(i);return r.warn(g.UNINSTALL_GIT_HOOKS_FAIL_LOG,{error:s}),h.warn(g.UNINSTALL_GIT_HOOKS_FAIL+s),g.UNINSTALL_GIT_HOOKS_FAILURE_NAME}finally{T.deleteScope(n)}}async function nF(t,e,r){if(e)return null;let n=Cd.randomUUID();T.createScope(n),T.set(n,y.WORKSPACE_ROOT,t);try{return(await X.removeDocuviaDir(n,r)).removed&&h.success(g.UNINSTALL_DOCUVIA_DIR_REMOVED),null}catch(i){let s=i instanceof S||i instanceof Error?i.message:String(i);return r.warn(g.UNINSTALL_DOCUVIA_DIR_FAIL_LOG,{error:s}),h.warn(g.UNINSTALL_DOCUVIA_DIR_FAIL+s),g.UNINSTALL_DOCUVIA_DIR_FAILURE_NAME}finally{T.deleteScope(n)}}async function iF(t,e,r){if(e)return h.info(g.UNINSTALL_KEEP_DB),null;let n=Cd.randomUUID();T.createScope(n),T.set(n,y.WORKSPACE_ROOT,t);try{let i=await X.clean(n,r);return h.success(g.UNINSTALL_SUCCESS_CLEAN+i.message),null}catch(i){let s=i instanceof S||i instanceof Error?i.message:String(i);return r.warn(g.UNINSTALL_DB_CLEANUP_FAIL_LOG,{error:s}),h.warn(g.UNINSTALL_FAIL_CLEAN+s),g.UNINSTALL_DB_CLEANUP_FAILURE_NAME}finally{T.deleteScope(n)}}function sF(t){try{let e=DS(t);e.length>0?h.success(`Removed ${e.length} skill(s): ${e.join(", ")}`):h.info("No Docuvia skill files found to remove.")}catch(e){h.warn(`Skill removal failed: ${e instanceof Error?e.message:String(e)}`)}}async function oF(t,e,r,n){let i=await tF(t,e,n);await eF(e);let s=await rF(e,r,n);s&&i.push(s);let o=await iF(e,r,n);o&&i.push(o);let a=await nF(e,r,n);return a&&i.push(a),i}function aF(t){t.length>0?(h.warn(g.UNINSTALL_PARTIAL+t.join(", ")),process.exitCode=1):h.success(g.UNINSTALL_SUCCESS)}async function sT(t,e,r=!1,n=!1,i=!1){if(!t){h.error(g.UNINSTALL_INVALID_WORKSPACE_ROOT),process.exitCode=1;return}let s=te();try{h.header(g.UNINSTALL_HEADER),h.info(g.UNINSTALL_START);let o=await tl(g.UNINSTALL_HOOKS_SELECT,e,n),a=await oF(o,t,r,s);i&&sF(t),aF(a)}catch(o){let a=o instanceof Error?o.message:String(o);s.error(g.UNINSTALL_FAIL_LOG,{error:a}),h.warn(g.UNINSTALL_FAIL+a),process.exitCode=1}}import gi from"process";import uF from"crypto";var lF=[{category:g.DOCTOR_CATEGORY_DATABASE,test:t=>t.startsWith("sqlite_")||t==="db_runner"||t==="db_found"||t==="graph_empty"||t==="l2_semantic_coverage"||t==="call_graph_resolution"||t==="canary_self_test"},{category:g.DOCTOR_CATEGORY_GIT_HOOKS,test:t=>t==="git_hook"||t==="pre_push_hook"},{category:g.DOCTOR_CATEGORY_GIT,test:t=>t.startsWith("git_")||t==="worktree_divergence"},{category:g.DOCTOR_CATEGORY_LOGS,test:t=>t==="logs"},{category:g.DOCTOR_CATEGORY_TIER_B,test:t=>t==="tier_b_commit_cap"},{category:g.DOCTOR_CATEGORY_TIER_B_COVERAGE,test:t=>t==="tier_b_coverage"},{category:g.DOCTOR_CATEGORY_LLM,test:t=>t==="llm_reachability"||t==="tier_c_queue"},{category:g.DOCTOR_CATEGORY_LSP,test:t=>t.startsWith("lsp_binary")},{category:g.DOCTOR_CATEGORY_AGENT_HOOKS,test:t=>t.startsWith("agent_hooks_")},{category:g.DOCTOR_CATEGORY_AGENT_ADOPTION,test:t=>t==="agent_authored_adoption"}],oT=[g.DOCTOR_CATEGORY_DATABASE,g.DOCTOR_CATEGORY_GIT,g.DOCTOR_CATEGORY_GIT_HOOKS,g.DOCTOR_CATEGORY_LOGS,g.DOCTOR_CATEGORY_TIER_B,g.DOCTOR_CATEGORY_TIER_B_COVERAGE,g.DOCTOR_CATEGORY_LLM,g.DOCTOR_CATEGORY_LSP,g.DOCTOR_CATEGORY_AGENT_HOOKS,g.DOCTOR_CATEGORY_AGENT_ADOPTION,g.DOCTOR_CATEGORY_OTHER];function cF(t){return lF.find(e=>e.test(t))?.category??g.DOCTOR_CATEGORY_OTHER}function aT(t){let e=new Map;for(let[r,n]of Object.entries(t)){let i=cF(r),s=e.get(i)??[];s.push([r,n]),e.set(i,s)}return e}var lT=[{header:g.DOCTOR_COL_CHECK},{header:g.DOCTOR_COL_STATUS},{header:g.DOCTOR_COL_MESSAGE,maxWidth:70},{header:g.DOCTOR_COL_FIX,maxWidth:50}];function cT(t,e){let r=e.status===Y.PASS?`${Al.PASS} ${g.DOCTOR_STATUS_PASS}`:`${Al.FAIL} ${g.DOCTOR_STATUS_FAIL}`,n=e.details?`${e.message}${z.OPEN_PAREN}${e.details}${z.CLOSE_PAREN}`:e.message;return[t,r,n,e.suggestion??z.EMPTY]}function uT(t){let e=Object.values(t);return{passed:e.filter(n=>n.status===Y.PASS).length,total:e.length}}var dF=60;function pF(){return{llmBaseUrl:gi.env.AI_DOCUVIA_INTEGRATIONS_OPENAI_BASE_URL,llmApiKey:gi.env.AI_DOCUVIA_INTEGRATIONS_OPENAI_API_KEY,llmModel:gi.env.AI_DOCUVIA_MODEL||gi.env.AI_DOCUVIA_FAST_MODEL}}function gF(t){let e=aT(t);for(let r of oT){let n=e.get(r);!n||n.length===0||(h.section(r),h.table(lT,n.map(([i,s])=>cT(i,s))))}}function fF(t,e){let{passed:r,total:n}=uT(t);h.log(""),h.log(hp.HORIZONTAL.repeat(dF));let i=g.DOCTOR_SUMMARY_PASSED(r,n);if(e){h.success(i);return}h.error(i),h.info(g.DOCTOR_FIX_HINT)}async function hF(t,e,r,n){T.createScope(t),T.set(t,y.WORKSPACE_ROOT,r);try{let i=await X.doctor(t,e,{...n,...pF()});return gF(i.diagnostics),fF(i.diagnostics,i.allPassed),i.allPassed}catch(i){let s=i instanceof S||i instanceof Error?i.message:String(i);return h.error(g.DOCTOR_FAIL+s),!1}finally{T.deleteScope(t)}}function mF(t){let{skipDb:e=!1,skipGit:r=!1,skipHooks:n=!1,skipLogs:i=!1,skipLsp:s=!1,skipLlm:o=!1,fix:a=!1}=t;return{skipDb:e,skipGit:r,skipHooks:n,skipLogs:i,skipLsp:s,skipLlm:o,fix:a}}async function dT(t,e={}){try{h.header(g.DOCTOR_HEADER),h.info(g.DOCTOR_START);let r=uF.randomUUID(),n=te();await hF(r,n,t,mF(e))||(gi.exitCode=1)}catch(r){let n=r instanceof Error?r.message:String(r);h.error(g.DOCTOR_FAIL+n),gi.exitCode=1}}import qr from"process";import Pd from"crypto";var cl={LIST:"list",ENABLE:"enable",DISABLE:"disable",CHECK:"check"};function gT(t){return!!t&&Object.values(nr).includes(t)}async function _F(t){let e=Pd.randomUUID(),r=te();T.createScope(e),T.set(e,y.WORKSPACE_ROOT,t);try{let n=await X.listHooks(e,r);h.header(g.HOOKS_HEADER),h.table([{header:g.HOOKS_COL_NAME},{header:g.HOOKS_COL_STATUS}],Object.values(nr).map(i=>[i,n[i]?g.HOOKS_STATUS_ENABLED:g.HOOKS_STATUS_DISABLED]))}catch(n){let i=n instanceof S||n instanceof Error?n.message:String(n);h.error(g.HOOKS_LIST_FAIL+i),qr.exitCode=1}finally{T.deleteScope(e)}}async function pT(t,e,r){if(!gT(e)){h.error(g.HOOKS_INVALID_NAME(e,Object.values(nr))),qr.exitCode=1;return}let n=Pd.randomUUID(),i=te();T.createScope(n),T.set(n,y.WORKSPACE_ROOT,t),T.set(n,y.HOOK_NAME,e),T.set(n,y.HOOK_ENABLED,r);try{let s=await X.setHookEnabled(n,i);h.success(r?g.HOOKS_ENABLED(e):g.HOOKS_DISABLED(e)),h.table([{header:g.HOOKS_COL_NAME},{header:g.HOOKS_COL_STATUS}],Object.values(nr).map(o=>[o,s[o]?g.HOOKS_STATUS_ENABLED:g.HOOKS_STATUS_DISABLED]))}catch(s){let o=s instanceof S||s instanceof Error?s.message:String(s);h.error(g.HOOKS_SET_FAIL+o),qr.exitCode=1}finally{T.deleteScope(n)}}async function EF(t,e){if(!gT(e)){qr.exitCode=1;return}let r=Pd.randomUUID();T.createScope(r),T.set(r,y.WORKSPACE_ROOT,t);try{let n=await X.listHooks(r,fe());qr.exitCode=n[e]?0:1}catch{qr.exitCode=0}finally{T.deleteScope(r)}}async function fT(t,e,r=qr.cwd()){switch(t){case cl.LIST:await _F(r);return;case cl.ENABLE:await pT(r,e,!0);return;case cl.DISABLE:await pT(r,e,!1);return;case cl.CHECK:await EF(r,e);return;default:h.error(g.HOOKS_UNKNOWN_SUBCOMMAND(t)),qr.exitCode=1}}import{Server as zF}from"@modelcontextprotocol/sdk/server/index.js";import{StdioServerTransport as JF}from"@modelcontextprotocol/sdk/server/stdio.js";import{CallToolRequestSchema as qF,ListToolsRequestSchema as QF}from"@modelcontextprotocol/sdk/types.js";import OF from"crypto";import{z as yF}from"zod";import{createRequire as SF}from"module";import{existsSync as TF}from"fs";import{dirname as hT,join as AF}from"path";import{fileURLToPath as RF}from"url";var ul;function dl(){if(ul!==void 0)return ul;let t=hT(RF(import.meta.url));for(;;){let e=AF(t,"package.json");if(TF(e)){let n=SF(import.meta.url)(e);if(typeof n.version!="string")throw S.wrap(O.FS_READ_FAILED,`Package manifest at ${e} has no string "version" field`,void 0);return ul=n.version,ul}let r=hT(t);if(r===t)break;t=r}throw S.wrap(O.FS_READ_FAILED,"Could not locate the CLI package.json by walking up from the running module",void 0)}var mT="docuvia-local-mcp",_T=dl(),ET=["Docuvia maintains a local knowledge graph of this workspace: modules, dependencies, blast radius, and recorded architectural decisions ('why' rationale).","Workflow:","1. Before exploring code structure with Grep/Glob/Read, call docuvia_query \u2014 it returns structural context those tools cannot.","2. Before editing or deleting a symbol/file, call docuvia_impact to see who depends on it.","3. After finishing edits, call docuvia_detect_changes as a pre-commit risk check.","4. If results look empty or suspicious, call docuvia_status \u2014 incomplete Tier B coverage means partial answers.","Treat non-'exact' match_type results and 'unprocessed'/incomplete-coverage flags as lower confidence \u2014 unknown, not zero; cross-check before relying on them."].join(`
|
|
189
189
|
`),ST="Docuvia Local MCP Server running on stdio",TT=t=>`Tool not found: ${t}`,Be="text";function bt(t,e){return async r=>{try{return await e(r)}catch(n){return{content:[{type:Be,text:`${t}: ${n.message}`}],isError:!0}}}}var xe={ERROR_INITIALIZING:"Error initializing Docuvia",ERROR_QUERYING:"Error querying Docuvia knowledge graph",ERROR_ANALYZING_IMPACT:"Error analyzing impact",ERROR_APPLYING_DECISION:"Error applying decision",ERROR_GETTING_STATUS:"Error getting Docuvia status",ERROR_DETECTING_CHANGES:"Error detecting changes",QUERY_TOOL_DESCRIPTION:"Search the codebase knowledge graph (symbols, modules, architectural decisions, caller/callee context) BEFORE reaching for Grep/Glob/Read \u2014 it returns precomputed structural awareness those tools lack. Use it to locate where a concept lives, understand a module's role, or surface recorded 'why' decisions. Read match_type in the response: exact = confirmed symbol/file; keyword/neighbor = lower confidence, cross-check before relying on it. An empty result means unknown (not zero) \u2014 run docuvia_status; if Tier B coverage is incomplete, results may be partial.",IMPACT_TOOL_DESCRIPTION:"Compute the blast radius of a file or symbol: every module that depends on it upstream/downstream, with a risk level (low/medium/high/critical) and any recorded rationale ('why') per dependent. Call this BEFORE editing or deleting a symbol/file so you know who breaks. Returns null when the target isn't in the graph (unknown target, not confirmed-isolated); a non-null but empty blast radius with an incomplete-coverage note may also be incomplete rather than truly dependency-free.",STATUS_TOOL_DESCRIPTION:"Report knowledge-graph health: project/module/decision counts and Tier B (LSP cross-file) processing coverage. Call this when graph results look empty, stale, or suspiciously low-confidence \u2014 if Tier B coverage is below 100%, structural answers may be incomplete until 'docuvia analyze --escalate-to-lsp --full' runs.",DETECT_CHANGES_TOOL_DESCRIPTION:"Compare the current workspace against a git ref and report which tracked files changed, which graph nodes those changes touch, an overall risk level, and a natural-language analysis of what the diff puts at risk. Use it after finishing edits (or with baseRef set to your merge base) as a pre-commit safety check, instead of manually reading diffs.",QUERY_NEXT_STEP_HINT:"Next steps: before editing any file or symbol above, call docuvia_impact on it to see who depends on it.",IMPACT_NOT_FOUND_HINT:"The target was not found in the knowledge graph \u2014 this means unknown, not isolated. Verify the exact name with docuvia_query first; if it exists there but not here, the graph is likely stale or Tier B coverage is incomplete (see docuvia_status).",IMPACT_EMPTY_HINT:"No dependents found. If Tier B coverage below 100% is reported above, treat this as possibly incomplete \u2014 runtime/computed imports are invisible to static analysis \u2014 and cross-check with Grep before deleting.",REVIEW_NEXT_STEP_HINT:"Next steps: inspect the affected nodes above before committing; call docuvia_impact on any node you're about to change further."};var IF=yF.object({}).strict(),LF="docuvia_init",NF="Initialize the local Docuvia SQLite database in the current workspace.",CF="object",Dd={definition:{name:LF,description:NF,inputSchema:{type:CF,properties:{}}},handler:bt(xe.ERROR_INITIALIZING,async t=>{IF.parse(t??{});let e=OF.randomUUID(),r=te();T.createScope(e),T.set(e,y.WORKSPACE_ROOT,process.cwd());try{let n=await rl(process.cwd(),()=>X.init(e,r));return{content:[{type:Be,text:n.message}]}}finally{T.deleteScope(e)}})};import PF from"crypto";import{z as vd}from"zod";var DF=vd.object({target:vd.string().min(1),limit:vd.number().int().positive().optional()}).strict(),vF="docuvia_query",bd={definition:{name:vF,description:xe.QUERY_TOOL_DESCRIPTION,inputSchema:{type:"object",properties:{target:{type:"string",description:"Symbol name, file path, or concept phrase to search for."},limit:{type:"number",description:"Maximum number of L3 decisions to return."}},required:["target"]}},handler:bt(xe.ERROR_QUERYING,async t=>{let e=DF.parse(t??{}),r=PF.randomUUID(),n=te();T.createScope(r),T.set(r,y.WORKSPACE_ROOT,process.cwd()),T.set(r,y.TARGET,e.target),e.limit!==void 0&&T.set(r,y.LIMIT,e.limit);try{let i=await X.query(r,n);return{content:[{type:Be,text:al(i)},{type:Be,text:xe.QUERY_NEXT_STEP_HINT}]}}finally{T.deleteScope(r)}})};import bF from"crypto";import{z as AT}from"zod";var wF=AT.object({target:AT.string().min(1)}).strict(),FF="docuvia_impact",wd={definition:{name:FF,description:xe.IMPACT_TOOL_DESCRIPTION,inputSchema:{type:"object",properties:{target:{type:"string",description:"Symbol name or file path whose dependents (blast radius) should be computed."}},required:["target"]}},handler:bt(xe.ERROR_ANALYZING_IMPACT,async t=>{let e=wF.parse(t??{}),r=bF.randomUUID(),n=te();T.createScope(r),T.set(r,y.WORKSPACE_ROOT,process.cwd()),T.set(r,y.TARGET,e.target);try{let i=await X.impact(r,n);if(!i)return{content:[{type:Be,text:"null"},{type:Be,text:xe.IMPACT_NOT_FOUND_HINT}]};let s=[{type:Be,text:JSON.stringify(i,null,2)}];return i.blastRadius.length===0&&i.tierBCoverage&&i.tierBCoverage.workspaceFilesProcessed<i.tierBCoverage.workspaceFilesTotal&&s.push({type:Be,text:xe.IMPACT_EMPTY_HINT}),{content:s}}finally{T.deleteScope(r)}})};import MF from"crypto";import{z as kF}from"zod";var GF=kF.object({}).strict(),xF="docuvia_status",Fd={definition:{name:xF,description:xe.STATUS_TOOL_DESCRIPTION,inputSchema:{type:"object",properties:{}}},handler:bt(xe.ERROR_GETTING_STATUS,async t=>{GF.parse(t??{});let e=MF.randomUUID(),r=te();T.createScope(e),T.set(e,y.WORKSPACE_ROOT,process.cwd());try{let n=await X.status(e,r),i=n.tierBFilesTotal>0?Number((n.tierBFilesProcessed/n.tierBFilesTotal*100).toFixed(1)):0;return{content:[{type:Be,text:JSON.stringify({...n,tierBCoveragePct:i},null,2)}]}}finally{T.deleteScope(e)}})};import UF from"crypto";import{z as RT}from"zod";var HF=RT.object({baseRef:RT.string().min(1).optional()}).strict(),BF="docuvia_detect_changes",Md={definition:{name:BF,description:xe.DETECT_CHANGES_TOOL_DESCRIPTION,inputSchema:{type:"object",properties:{baseRef:{type:"string",description:"Git ref to diff against (branch name, tag, or SHA). Defaults to the workspace's configured base branch."}}}},handler:bt(xe.ERROR_DETECTING_CHANGES,async t=>{let e=HF.parse(t??{}),r=UF.randomUUID(),n=te();T.createScope(r),T.set(r,y.WORKSPACE_ROOT,process.cwd()),e.baseRef&&T.set(r,y.BASE_REF,e.baseRef);try{let i=await X.review(r,n);return{content:[{type:Be,text:JSON.stringify(i,null,2)},{type:Be,text:xe.REVIEW_NEXT_STEP_HINT}]}}finally{T.deleteScope(r)}})};import KF from"crypto";import{z as Qr}from"zod";var YF=Qr.object({title:Qr.string().min(1,"title is required"),content:Qr.string().min(1,"content is required"),nodeType:Qr.enum(["change","rule","decision","context"]),confidence:Qr.number().min(0).max(1)}),$F=Qr.object({targetPath:Qr.string().min(1,"targetPath is required").describe("File path (relative to workspace root) these decisions apply to"),decisions:Qr.array(YF).min(1,"at least one decision is required").describe("Array of L3 decisions to stage for this file")}).strict(),WF="docuvia_apply_decision",jF="Stage agent-authored L3 decisions for a file. Staged decisions are flushed into the knowledge graph automatically on the next git commit that touches the target file. Use this after making code changes that reflect architectural decisions, rules, or notable rationale.",VF="object",kd={definition:{name:WF,description:jF,inputSchema:{type:VF,properties:{targetPath:{type:"string",description:"File path (relative to workspace root) these decisions apply to"},decisions:{type:"array",description:"Array of L3 decisions to stage for this file",items:{type:"object",properties:{title:{type:"string",description:"Decision title"},content:{type:"string",description:"Decision content / rationale"},nodeType:{type:"string",enum:["change","rule","decision","context"],description:"Type of the L3 node"},confidence:{type:"number",description:"Confidence score between 0 and 1"}},required:["title","content","nodeType","confidence"]}}},required:["targetPath","decisions"]}},handler:bt(xe.ERROR_APPLYING_DECISION,async t=>{let e=$F.parse(t??{}),r=KF.randomUUID(),n=te();T.createScope(r),T.set(r,y.WORKSPACE_ROOT,process.cwd()),T.set(r,y.TARGET_PATH,e.targetPath),T.set(r,y.AGENT_AUTHORED_DECISIONS,e.decisions);try{let i=await X.stageAgentAuthoredDecisions(r,n);return{content:[{type:Be,text:`${i.staged} decision(s) staged \u2014 flushed automatically on the next commit that touches ${e.targetPath}.`}]}}finally{T.deleteScope(r)}})};var Gd={[Dd.definition.name]:Dd,[bd.definition.name]:bd,[wd.definition.name]:wd,[Fd.definition.name]:Fd,[Md.definition.name]:Md,[kd.definition.name]:kd},OT=Object.values(Gd).map(t=>t.definition);async function yT(){let t=new zF({name:mT,version:_T},{capabilities:{tools:{}},instructions:ET});t.setRequestHandler(QF,async()=>({tools:OT})),t.setRequestHandler(qF,async n=>{let{name:i,arguments:s}=n.params,o=Gd[i];if(o)return o.handler(s);throw new Error(TT(i))});let e=new JF;await t.connect(e),te().info(ST)}var W={INIT:"init",MCP:"mcp",CLEAN:"clean",STATUS:"status",PUBLISH:"publish",ANALYZE:"analyze",REVIEW:"review",IMPACT:"impact",QUERY:"query",EXPORT_TOPOLOGY:"export-topology",SNAPSHOT:"snapshot",HYDRATE:"hydrate",SYNC_KNOWLEDGE:"sync-knowledge",UNINSTALL:"uninstall",DOCTOR:"doctor",HOOKS:"hooks"},pl={[W.INIT]:"Initialize local project and agent hooks",[W.MCP]:"Start the local MCP stdio server",[W.CLEAN]:"Wipe the local Docuvia SQLite database",[W.STATUS]:"Show local knowledge graph row counts",[W.PUBLISH]:"Push locally-generated decisions to the remote backend",[W.ANALYZE]:"Detect project type/tags and run full AST ingestion into the knowledge graph",[W.REVIEW]:"Detect changed-file blast radius and risk level",[W.IMPACT]:"Show the blast radius/risk level for a symbol or module",[W.QUERY]:"Query the local knowledge graph (keyword + structural search)",[W.EXPORT_TOPOLOGY]:"Export the knowledge graph as topology.json/topology.html",[W.SNAPSHOT]:"Pack the local knowledge graph onto the hidden knowledge branch",[W.HYDRATE]:"Rebuild the local database from the hidden knowledge branch",[W.SYNC_KNOWLEDGE]:"Reconcile the hidden knowledge branch with the remote (fetch/merge/push)",[W.UNINSTALL]:"Uninstall Docuvia2 integrations and local DB",[W.DOCTOR]:"Run diagnostic checks on Docuvia2 setup",[W.HOOKS]:"List/enable/disable Docuvia's automation hooks (context-injection, commit-l3-write, tier-b-c-prepush)"},We={[W.INIT]:[F.PLATFORM,F.INTERACTIVE,F.INTERACTIVE_SHORT,F.SKILLS],[W.MCP]:[],[W.CLEAN]:[F.INTERACTIVE,F.INTERACTIVE_SHORT],[W.STATUS]:[],[W.PUBLISH]:[F.COMMIT_SHA,F.INTERACTIVE,F.INTERACTIVE_SHORT],[W.ANALYZE]:[F.ESCALATE_TO_LSP,F.FALLBACK_AST,F.LSP_TIMEOUT,F.LSP_PROCESSES,F.FULL,F.INTERACTIVE,F.INTERACTIVE_SHORT,F.FORCE,F.FORCE_SHORT,F.AGENT_AUTHORED,F.DECISIONS_FILE,F.STAGE,F.FLUSH_STAGED_L3,F.TIER_C_ALL],[W.REVIEW]:[F.FORMAT],[W.IMPACT]:[F.FORMAT],[W.QUERY]:[F.FORMAT,F.LIMIT,F.INTERACTIVE,F.INTERACTIVE_SHORT],[W.EXPORT_TOPOLOGY]:[F.OUT,F.JSON_ONLY,F.COLLAPSE],[W.SNAPSHOT]:[],[W.HYDRATE]:[F.FORCE,F.FORCE_SHORT],[W.SYNC_KNOWLEDGE]:[],[W.UNINSTALL]:[F.PLATFORM,F.KEEP_DB,F.INTERACTIVE,F.INTERACTIVE_SHORT,F.SKILLS],[W.DOCTOR]:[F.SKIP_DB,F.SKIP_GIT,F.SKIP_HOOKS,F.SKIP_LOGS,F.SKIP_LSP,F.SKIP_LLM,F.FIX],[W.HOOKS]:[]};function xd(){return["Usage:",...Object.values(W).map(t=>` docuvia ${t.padEnd(40)} # ${pl[t]}`),"","Options:"," docuvia --help, -h # Show this help"," docuvia --version, -v # Show the installed version"," docuvia <command> --help, -h # Show flags for a specific command"," docuvia -i, --interactive # Launch the wizard menu (requires a real terminal)"," docuvia <command> -i, --interactive # Allow that command to prompt instead of using its non-interactive default"].join(`
|
|
190
190
|
`)}function IT(t){let e=We[t],r=[`docuvia ${t}`,` ${pl[t]}`];return e.length>0&&r.push("","Flags:",...e.map(n=>` ${n}`)),r.join(`
|
|
191
191
|
`)}var gl=class{args;parsedFlags=new Map;positionals=[];constructor(e){this.args=e,this.parse()}parse(){for(let e=0;e<this.args.length;e++){let r=this.args[e];if(r.startsWith("--"))if(r.includes("=")){let[n,...i]=r.split("=");this.parsedFlags.set(n,i.join("="))}else e+1<this.args.length&&!this.args[e+1].startsWith("-")?(this.parsedFlags.set(r,this.args[e+1]),e++):this.parsedFlags.set(r,!0);else r.startsWith("-")?this.parsedFlags.set(r,!0):this.positionals.push(r)}}hasFlag(e){let r=e.endsWith("=")?e.slice(0,-1):e;return this.parsedFlags.has(r)}getFlagValue(e){let r=e.endsWith("=")?e.slice(0,-1):e,n=this.parsedFlags.get(r);return typeof n=="string"?n:void 0}getPositional(e){return this.positionals[e]}getAllPositionals(){return this.positionals}checkUnknownFlags(e){let r=e.map(i=>i.endsWith("=")?i.slice(0,-1):i),n=Array.from(this.parsedFlags.keys()).filter(i=>!r.includes(i));if(n.length>0)throw new Error(Jr.UNKNOWN_OPTIONS(n.join(", ")))}};function fl(t){if(t===void 0)return;let e=Object.values(Bt);if(e.includes(t))return t;throw new Error(Jr.INVALID_FORMAT(t,e.join(", ")))}NT.config({quiet:!0});function CT(){h.error(xd())}function ZF(){return dl()}function eM(t){return t===F.HELP||t===F.HELP_SHORT}function tM(t){return t===F.VERSION||t===F.VERSION_SHORT}function PT(t){return t===F.INTERACTIVE||t===F.INTERACTIVE_SHORT}async function rM(t){t.parser.checkUnknownFlags(We[W.INIT]);let e=t.parser.getFlagValue(F.PLATFORM),r=t.parser.hasFlag(F.SKILLS);await vS(t.workspaceRoot,e,t.isInteractive,r)}async function nM(t){t.parser.checkUnknownFlags(We[W.MCP]),await yT()}async function iM(t){t.parser.checkUnknownFlags(We[W.CLEAN]),await bS(t.workspaceRoot,t.isInteractive)}async function sM(t){t.parser.checkUnknownFlags(We[W.STATUS]),await FS(t.workspaceRoot)}async function oM(t){t.parser.checkUnknownFlags(We[W.PUBLISH]);let e=t.parser.getPositional(0),r=t.parser.getFlagValue(F.COMMIT_SHA);await MS({projectId:e,commitSha:r},t.workspaceRoot,t.isInteractive)}async function aM(t){t.parser.checkUnknownFlags(We[W.ANALYZE]);let e=t.parser.getPositional(0),r=t.parser.hasFlag(F.ESCALATE_TO_LSP),n=t.parser.hasFlag(F.FALLBACK_AST),i=t.parser.hasFlag(F.FULL),s=t.parser.hasFlag(F.FORCE)||t.parser.hasFlag(F.FORCE_SHORT),o=t.parser.getFlagValue(F.LSP_TIMEOUT),a=o!==void 0?Number(o):void 0,l=t.parser.getFlagValue(F.LSP_PROCESSES),c=l!==void 0?Number(l):void 0,u=t.parser.hasFlag(F.AGENT_AUTHORED),p=t.parser.getFlagValue(F.DECISIONS_FILE),d=t.parser.hasFlag(F.STAGE),f=t.parser.hasFlag(F.FLUSH_STAGED_L3),m=t.parser.hasFlag(F.TIER_C_ALL);await BS(e,t.workspaceRoot,{escalateToLsp:r,fallbackAst:n,isInteractive:t.isInteractive,force:s,lspTimeoutMs:a,lspProcesses:c,full:i,agentAuthored:u,decisionsFile:p,stage:d,flushStagedL3:f,tierCAll:m})}async function lM(t){t.parser.checkUnknownFlags(We[W.REVIEW]);let e=t.parser.getPositional(0),r=fl(t.parser.getFlagValue(F.FORMAT));await YS(e,{format:r},t.workspaceRoot)}async function cM(t){t.parser.checkUnknownFlags(We[W.IMPACT]);let e=t.parser.getPositional(0);if(!e){h.error(g.IMPACT_MISSING_TARGET),Kt.exitCode=1;return}let r=fl(t.parser.getFlagValue(F.FORMAT));await $S(e,{format:r},t.workspaceRoot)}async function uM(t){t.parser.checkUnknownFlags(We[W.QUERY]);let e=t.parser.getPositional(0),r=fl(t.parser.getFlagValue(F.FORMAT)),n=t.parser.getFlagValue(F.LIMIT),i=n?Number(n):void 0;await jS(e,{format:r,limit:i},t.workspaceRoot,t.isInteractive)}async function dM(t){t.parser.checkUnknownFlags(We[W.EXPORT_TOPOLOGY]);let e=t.parser.getFlagValue(F.OUT),r=t.parser.hasFlag(F.JSON_ONLY),n=t.parser.getFlagValue(F.COLLAPSE);await QS({out:e,jsonOnly:r,collapse:n},t.workspaceRoot)}async function pM(t){t.parser.checkUnknownFlags(We[W.SNAPSHOT]),await ZS(t.workspaceRoot)}async function gM(t){t.parser.checkUnknownFlags(We[W.HYDRATE]);let e=t.parser.hasFlag(F.FORCE)||t.parser.hasFlag(F.FORCE_SHORT);await tT(t.workspaceRoot,{force:e})}async function fM(t){t.parser.checkUnknownFlags(We[W.UNINSTALL]);let e=t.parser.getFlagValue(F.PLATFORM),r=t.parser.hasFlag(F.KEEP_DB),n=t.parser.hasFlag(F.SKILLS);await sT(t.workspaceRoot,e,r,t.isInteractive,n)}async function hM(t){t.parser.checkUnknownFlags(We[W.DOCTOR]);let e=t.parser.hasFlag(F.SKIP_DB),r=t.parser.hasFlag(F.SKIP_GIT),n=t.parser.hasFlag(F.SKIP_HOOKS),i=t.parser.hasFlag(F.SKIP_LOGS),s=t.parser.hasFlag(F.SKIP_LSP),o=t.parser.hasFlag(F.SKIP_LLM),a=t.parser.hasFlag(F.FIX);await dT(t.workspaceRoot,{skipDb:e,skipGit:r,skipHooks:n,skipLogs:i,skipLsp:s,skipLlm:o,fix:a})}async function mM(t){t.parser.checkUnknownFlags(We[W.SYNC_KNOWLEDGE]),await nT(t.workspaceRoot)}async function _M(t){t.parser.checkUnknownFlags(We[W.HOOKS]);let e=t.parser.getPositional(0),r=t.parser.getPositional(1);await fT(e,r,t.workspaceRoot)}var EM={[W.INIT]:rM,[W.MCP]:nM,[W.CLEAN]:iM,[W.STATUS]:sM,[W.PUBLISH]:oM,[W.ANALYZE]:aM,[W.REVIEW]:lM,[W.IMPACT]:cM,[W.QUERY]:uM,[W.EXPORT_TOPOLOGY]:dM,[W.SNAPSHOT]:pM,[W.HYDRATE]:gM,[W.SYNC_KNOWLEDGE]:mM,[W.UNINSTALL]:fM,[W.DOCTOR]:hM,[W.HOOKS]:_M};async function SM(t,e,r){let n=PT(t)?void 0:t;if(n)return n;e||(CT(),Kt.exit(1)),r||(h.error(g.CLI_INTERACTIVE_NO_TTY),Kt.exit(1)),h.header(g.CLI_HEADER);let i=Object.values(W).filter(o=>o!==W.MCP).map(o=>({name:o,value:o,description:pl[o]}));return await h.askSelect(g.CLI_PROMPT_ACTION,i)}function TM(t){return eM(t)?(h.log(xd()),!0):tM(t)?(h.log(ZF()),!0):!1}function AM(t,e){let r=PT(t)||e.hasFlag(F.INTERACTIVE)||e.hasFlag(F.INTERACTIVE_SHORT),n=r&&!!Kt.stdin.isTTY&&!Kt.env.CI;return{wantsInteractive:r,interactiveEligible:n}}async function RM(t,e,r,n,i,s){if(!t||!e){h.error(g.CLI_UNKNOWN_COMMAND+t),CT(),Kt.exit(1);return}if(r.hasFlag(F.HELP)||r.hasFlag(F.HELP_SHORT)){h.log(IT(t));return}n&&!i&&h.warn(g.CLI_INTERACTIVE_UNAVAILABLE),await e({parser:r,isInteractive:i,workspaceRoot:s})}async function OM(){let t=Kt.argv[2];if(TM(t))return;let e=Kt.argv.slice(3),r=new gl(e),n=Kt.cwd(),{wantsInteractive:i,interactiveEligible:s}=AM(t,r),o=await SM(t,i,s),a=o?EM[o]:void 0;try{await RM(o,a,r,i,s,n)}catch(l){let c=l instanceof Error?l.message:String(l);h.error(g.CLI_FATAL_ERROR+c),Kt.exit(1)}}OM().catch(t=>{h.error(g.CLI_FATAL_ERROR+(t instanceof Error?t.message:String(t))),Kt.exit(1)});
|