@principal-ai/quality-lens-cli 0.1.85 → 0.1.86
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
CHANGED
|
@@ -1134,7 +1134,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
|
|
|
1134
1134
|
`+l.map(s=>s.message).join(`
|
|
1135
1135
|
`)),this.errors=l}},Gdr=class extends SR{constructor(l){super(l)}},Tmt=Lo.default.build("{{digit}}{4}",{digit:bE}),Amt=Lo.default.build("{{digit}}{2}",{digit:bE}),kmt=Lo.default.build("{{digit}}{2}",{digit:bE}),Fmt=/[Tt ]/,w3e=Lo.default.build("{{digit}}{2}",{digit:bE}),I3e=Lo.default.build("{{digit}}{2}",{digit:bE}),wmt=Lo.default.build("{{digit}}{2}",{digit:bE}),Hdr=Lo.default.build("\\.{{digit}}+",{digit:bE}),Kdr=Lo.default.build("[+-]{{timeHour}}:{{timeMinute}}",{timeHour:w3e,timeMinute:I3e}),Qdr=Lo.default.build("[Zz]|{{timeNumOffset}}",{timeNumOffset:Kdr}),P3e=Lo.default.build("{{timeHour}}:{{timeMinute}}:{{timeSecond}}{{timeSecFrac}}?",{timeHour:w3e,timeMinute:I3e,timeSecond:wmt,timeSecFrac:Hdr}),N3e=Lo.default.build("{{dateFullYear}}-{{dateMonth}}-{{dateMDay}}",{dateFullYear:Tmt,dateMonth:Amt,dateMDay:kmt}),Ydr=Lo.default.build("{{partialTime}}{{timeOffset}}",{partialTime:P3e,timeOffset:Qdr}),Xdr=Lo.default.build("{{fullDate}}{{timeDelim}}{{fullTime}}",{fullDate:N3e,timeDelim:Fmt,fullTime:Ydr}),Zdr=Lo.default.build("{{fullDate}}{{timeDelim}}{{partialTime}}",{fullDate:N3e,timeDelim:Fmt,partialTime:P3e}),emr=N3e,Imt=P3e,tmr=Lo.default.build("{{offsetDateTime}}|{{localDateTime}}|{{localDate}}|{{localTime}}",{offsetDateTime:Xdr,localDateTime:Zdr,localDate:emr,localTime:Imt}),Lce=Qu({name:"DateTime",pattern:tmr}),rmr=l=>{let s=Lo.default.build("({{dateFullYear}})-({{dateMonth}})-({{dateMDay}})",{dateFullYear:Tmt,dateMonth:Amt,dateMDay:kmt}),u=Lo.default.exec(l,s);if(u){let p=Number(u[1]),g=Number(u[2]),E=Number(u[3]),k=new Date(p,g-1,E);return k.getFullYear()===p&&k.getMonth()+1===g&&k.getDate()===E}return!0},nmr=l=>{let s=Lo.default.build("({{timeHour}}):({{timeMinute}}):({{timeSecond}})",{timeHour:w3e,timeMinute:I3e,timeSecond:wmt}),u=Lo.default.exec(l,s);if(u){let p=Number(u[1]),g=Number(u[2]),E=Number(u[3]),k=new Date(0,0,0,p,g,E);return k.getHours()===p&&k.getMinutes()===g&&k.getSeconds()===E}return!0},imr=l=>rmr(l)&&nmr(l);Vy(Lce,l=>{var s;if(!imr(l))throw new SR(`Invalid date time: ${l}`);return((s=l.match(Imt))==null?void 0:s.index)===0?l:new Date(l)});var Pmt=Qu({name:"DotSeparator",pattern:/\./,label:"."}),S3e=Qu({name:"ExpressionNewLine",pattern:VF}),smr=xmt,Nmt=Lo.default.build("{{digit}}({{digit}}|{{underscore}}{{digit}})*",{digit:bE,underscore:rG}),amr=Lo.default.build("({{minus}}|{{plus}})?{{zeroPrefixableInt}}",{minus:k3e,plus:F3e,zeroPrefixableInt:Nmt}),omr=Lo.default.build("[Ee]{{floatExpPart}}",{floatExpPart:amr}),cmr=/\./,umr=Lo.default.build("{{decimalPoint}}{{zeroPrefixableInt}}",{decimalPoint:cmr,zeroPrefixableInt:Nmt}),lmr=/inf/,fmr=/nan/,_mr=Lo.default.build("({{minus}}|{{plus}})?({{inf}}|{{nan}})",{minus:k3e,plus:F3e,inf:lmr,nan:fmr}),pmr=Lo.default.build("{{floatIntPart}}({{exp}}|{{frac}}{{exp}}?)|{{specialFloat}}",{floatIntPart:smr,exp:omr,frac:umr,specialFloat:_mr}),Mce=Qu({name:"Float",pattern:pmr}),dmr=l=>l==="inf"||l==="+inf"?1/0:l==="-inf"?-1/0:l==="nan"||l==="+nan"||l==="-nan"?NaN:null;Vy(Mce,l=>{let s=dmr(l);if(s!==null)return s;let u=l.replace(/_/g,"");return parseFloat(u)});var mmr=/}/,E3e=Qu({name:"InlineTableClose",pattern:mmr,label:"}",pop_mode:!0}),hmr=/{/,Omt=Qu({name:"InlineTableOpen",pattern:hmr,label:"{",push_mode:"InlineTable"}),gmr=/,/,Lmt=Qu({name:"InlineTableSep",pattern:gmr,label:",",pop_mode:!0,push_mode:"InlineTable"}),nG=Qu({name:"Integer",pattern:K_.NA});Vy(nG,Z$);var O3e=Qu({name:"KeyValueSeparator",pattern:/=/,label:"=",push_mode:"Value"}),Mmt=Qu({name:"Newline",pattern:VF,pop_mode:!0}),zF=Qu({name:"SimpleKey",pattern:K_.NA});Vy(zF,Z$);var Rmt=Qu({name:"StdTableClose",pattern:/]/,label:"]",push_mode:"Value"}),Bmt=Qu({name:"StdTableOpen",pattern:/\[/,label:"["}),qN=Qu({name:"String",pattern:K_.NA});Vy(qN,Z$);var ymr=Lo.default.build("{{whiteSpaceChar}}+",{whiteSpaceChar:ER}),jmt=Qu({name:"WhiteSpace",pattern:ymr,group:K_.SKIPPED}),vmr=Lo.default.build("^{{whiteSpaceChar}}*{{newline}}(?:{{whiteSpaceChar}}|{{newline}})*",{whiteSpaceChar:ER,newline:VF}),Dmr=l=>{let s=Lo.default.exec(l,vmr);return s?s[0].length:0},qmt=l=>{let s="";for(let u=0;u<l.length;u++){let p=l[u];if(p==="\\"){u++;let g=Dmr(l.slice(u));if(g>0){u+=g-1;continue}switch(l[u]){case"b":s+="\b";break;case"t":s+=" ";break;case"n":s+=`
|
|
1136
1136
|
`;break;case"f":s+="\f";break;case"r":s+="\r";break;case'"':s+='"';break;case"\\":s+="\\";break;case"u":{let E=l.slice(u+1,u+5),k=parseInt(E,16);if(k>55295&&k<57344)throw new SR(`Invalid Unicode code point: \\u${E}`);s+=String.fromCodePoint(k),u+=4;break}case"U":{let E=l.slice(u+1,u+9),k=parseInt(E,16);if(k>1114111)throw new SR(`Invalid Unicode code point: \\U${E}`);s+=String.fromCodePoint(k),u+=8;break}case l.match(/^[0-7]{1,3}$/):}}else s+=p}return s},Jmt=l=>l.substring(3,l.length-3).replace(/^(\r\n|\n)/,""),bmr=Lo.default.build("{{quotationMark}}{3}",{quotationMark:T3e}),Cmr=Lo.default.build("{{whiteSpaceChar}}|!|[#-\\x5B]|[\\x5D-~]|{{nonAscii}}",{whiteSpaceChar:ER,nonAscii:tG}),Smr=Lo.default.build("{{multiLineBasicUnescaped}}|{{escaped}}",{multiLineBasicUnescaped:Cmr,escaped:Emt}),Emr=Lo.default.build("{{whiteSpaceChar}}*",{whiteSpaceChar:ER}),xmr=Lo.default.build("{{escape}}{{whiteSpace}}{{newline}}({{whiteSpaceChar}}|{{newline}})*",{escape:Cmt,whiteSpace:Emr,newline:VF,whiteSpaceChar:ER}),Tmr=Lo.default.build("{{multiLineBasicChar}}|{{newline}}|{{multiLineBasicEscapedNewline}}",{multiLineBasicChar:Smr,newline:VF,multiLineBasicEscapedNewline:xmr}),Amr=Lo.default.build("{{quotationMark}}{1,2}",{quotationMark:T3e}),kmr=Lo.default.build("{{multiLineBasicContent}}*({{multiLineBasicQuotes}}{{multiLineBasicContent}}+)*{{multiLineBasicQuotes}}?",{multiLineBasicContent:Tmr,multiLineBasicQuotes:Amr}),Umt=Qu({name:"MultiLineBasicString",pattern:Lo.default.build("{{multiLineBasicStringDelimiter}}{{newline}}?{{multiLineBasicBody}}{{multiLineBasicStringDelimiter}}",{multiLineBasicStringDelimiter:bmr,newline:VF,multiLineBasicBody:kmr}),label:'"""MultiLineBasicString"""',categories:[qN],line_breaks:!0});Vy(Umt,l=>{let s=Jmt(l);return qmt(s)});var Fmr=Lo.default.build("{{apostrophe}}{3}",{apostrophe:A3e}),wmr=Lo.default.build(" |[ -&]|[\\x28-~]|{{nonAscii}}",{nonAscii:tG}),Imr=Lo.default.build("{{multiLineLiteralChar}}|{{newline}}",{multiLineLiteralChar:wmr,newline:VF}),Pmr=Lo.default.build("{{apostrophe}}{1,2}",{apostrophe:A3e}),Nmr=Lo.default.build("{{multiLineLiteralContent}}*({{multiLineLiteralQuotes}}{{multiLineLiteralContent}}+)*{{multiLineLiteralQuotes}}?",{multiLineLiteralContent:Imr,multiLineLiteralQuotes:Pmr}),Wmt=Qu({name:"MultiLineLiteralString",pattern:Lo.default.build("{{multiLineLiteralStringDelimiter}}{{newline}}?{{multiLineLiteralBody}}{{multiLineLiteralStringDelimiter}}",{multiLineLiteralStringDelimiter:Fmr,newline:VF,multiLineLiteralBody:Nmr}),label:"'''MultiLineLiteralString'''",categories:[qN],line_breaks:!0});Vy(Wmt,Jmt);var L3e=Qu({name:"QuotedKey",pattern:K_.NA,categories:[zF]});Vy(L3e,Z$);var Omr=Lo.default.build("{{whiteSpaceChar}}|!|[#-\\x5B]|[\\x5D-~]|{{nonAscii}}",{whiteSpaceChar:ER,nonAscii:tG}),Lmr=Lo.default.build("{{basicUnescaped}}|{{escaped}}",{basicUnescaped:Omr,escaped:Emt}),M3e=Qu({name:"BasicString",pattern:Lo.default.build("{{quotationMark}}{{basicChar}}*{{quotationMark}}",{quotationMark:T3e,basicChar:Lmr}),label:'"BasicString"',categories:[L3e,qN]});Vy(M3e,l=>{let s=l.slice(1,-1);return qmt(s)});var Mmr=Lo.default.build(" |[ -&]|[\\x28-~]|{{nonAscii}}",{nonAscii:tG}),R3e=Qu({name:"LiteralString",pattern:Lo.default.build("{{apostrophe}}{{literalChar}}*{{apostrophe}}",{apostrophe:A3e,literalChar:Mmr}),label:"'LiteralString'",categories:[L3e,qN]});Vy(R3e,l=>l.slice(1,-1));var Rmr=/0x/,Bmr=/0o/,jmr=/0b/,qmr=/[0-7]/,Jmr=/[01]/,Umr=Lo.default.build("{{hexPrefix}}{{hexDigit}}({{hexDigit}}|{{underscore}}{{hexDigit}})*",{hexPrefix:Rmr,hexDigit:Smt,underscore:rG}),Wmr=Lo.default.build("{{octPrefix}}{{digit0_7}}({{digit0_7}}|{{underscore}}{{digit0_7}})*",{octPrefix:Bmr,digit0_7:qmr,underscore:rG}),zmr=Lo.default.build("{{binPrefix}}{{digit0_1}}({{digit0_1}}|{{underscore}}{{digit0_1}})*",{binPrefix:jmr,digit0_1:Jmr,underscore:rG}),Vmr=Lo.default.build("{{hexInteger}}|{{octalInteger}}|{{binaryInteger}}",{hexInteger:Umr,octalInteger:Wmr,binaryInteger:zmr}),zmt=Qu({name:"NonDecimalInteger",pattern:Vmr,categories:[nG]}),$mr=(l,s)=>{let u=BigInt(0);for(let p=0;p<l.length;p++){let g=l[p],E=parseInt(g,s);u=u*BigInt(s)+BigInt(E)}return u},Gmr=l=>{if(l.startsWith("0x"))return 16;if(l.startsWith("0o"))return 8;if(l.startsWith("0b"))return 2};Vy(zmt,l=>{let s=l.replace(/_/g,"").slice(2),u=Gmr(l),p=parseInt(s,u);return Number.isSafeInteger(p)?p:$mr(s,u)});var Vmt=Qu({name:"DecimalInteger",pattern:xmt,categories:[nG]});Vy(Vmt,l=>{let s=l.replace(/_/g,""),u=parseInt(s);return Number.isSafeInteger(u)?u||0:BigInt(s)});var Hmr=/[a-zA-Z]/,Kmr=Lo.default.build("({{alpha}}|{{digit}}|-|_)+",{alpha:Hmr,digit:bE}),$mt=Qu({name:"UnquotedKey",pattern:Kmr,categories:[zF]});Vy($mt,l=>l);var Qmr=/#/,Ymr=Lo.default.build(" |[ -~]|{{nonAscii}}",{nonAscii:tG}),Xmr=Lo.default.build("{{commentStartChar}}{{nonEol}}*",{commentStartChar:Qmr,nonEol:Ymr}),Gmt=Qu({name:"Comment",pattern:Xmr,group:"comment"}),Zmr=/true/,Hmt=Qu({name:"True",pattern:Zmr,label:"true",categories:[eG]});Vy(Hmt,()=>!0);var ehr=/false/,Kmt=Qu({name:"False",pattern:ehr,label:"false",categories:[eG]});Vy(Kmt,()=>!1);var thr=Qu({name:"IgnoredNewline",pattern:VF,group:K_.SKIPPED}),rhr=Qu({name:"InlineTableKeyValSep",pattern:/=/,label:"=",push_mode:"Value",pop_mode:!0,categories:[O3e]}),pmt=[jmt,M3e,R3e,$mt,Pmt,zF],dmt=[jmt,Umt,Wmt,M3e,R3e,Hmt,Kmt,Lce,Mce,zmt,Vmt,ymt,Omt,Gmt],Qmt={modes:{Key:[Gmt,S3e,O3e,bmt,Dmt,Bmt,Rmt,...pmt],Value:[...dmt,Mmt,Lmt,E3e],Array:[...dmt,thr,vmt,gmt],InlineTable:[...pmt,rhr,E3e]},defaultMode:"Key"},nhr=new K_(Qmt,{ensureOptimizations:!0,skipValidations:!Oce.isDebug(),traceInitPerf:Oce.isDebug()}),ihr=class extends i${toml=this.RULE("toml",()=>{this.MANY(()=>this.CONSUME(S3e)),this.MANY1(()=>{this.SUBRULE1(this.expression),this.OPTION2(()=>{this.CONSUME1(Mmt),this.MANY3(()=>this.CONSUME2(S3e))})})});valueCache;dottedKey=this.RULE("dottedKey",()=>{this.CONSUME(zF),this.AT_LEAST_ONE(()=>{this.CONSUME(Pmt),this.CONSUME1(zF)})});key=this.RULE("key",()=>{this.OR({MAX_LOOKAHEAD:2,DEF:[{ALT:()=>this.SUBRULE(this.dottedKey)},{ALT:()=>this.CONSUME(zF)}]})});inlineTableKeyValues=this.RULE("inlineTableKeyValues",()=>{this.MANY_SEP({SEP:Lmt,DEF:()=>this.SUBRULE(this.keyValue)})});inlineTable=this.RULE("inlineTable",()=>{this.CONSUME(Omt),this.OPTION(()=>this.SUBRULE(this.inlineTableKeyValues)),this.CONSUME(E3e)});array=this.RULE("array",()=>{this.CONSUME(ymt),this.OPTION(()=>this.SUBRULE(this.arrayValues)),this.CONSUME(gmt)});value=this.RULE("value",()=>{this.OR(this.valueCache||(this.valueCache=[{ALT:()=>this.CONSUME(qN)},{ALT:()=>this.CONSUME(eG)},{ALT:()=>this.SUBRULE(this.array)},{ALT:()=>this.SUBRULE(this.inlineTable)},{ALT:()=>this.CONSUME(Lce)},{ALT:()=>this.CONSUME(Mce)},{ALT:()=>this.CONSUME(nG)}]))});keyValue=this.RULE("keyValue",()=>{this.SUBRULE(this.key),this.CONSUME(O3e),this.SUBRULE(this.value)});arrayValues=this.RULE("arrayValues",()=>{this.SUBRULE(this.value);let l=!0;this.MANY({GATE:()=>l,DEF:()=>{this.CONSUME(vmt),this.OPTION(()=>this.SUBRULE1(this.value))||(l=!1)}})});stdTable=this.RULE("stdTable",()=>{this.CONSUME(Bmt),this.SUBRULE(this.key),this.CONSUME(Rmt)});arrayTable=this.RULE("arrayTable",()=>{this.CONSUME(bmt),this.SUBRULE(this.key),this.CONSUME(Dmt)});table=this.RULE("table",()=>{this.OR([{ALT:()=>this.SUBRULE(this.stdTable)},{ALT:()=>this.SUBRULE(this.arrayTable)}])});expression=this.RULE("expression",()=>{this.OR([{ALT:()=>this.SUBRULE(this.keyValue)},{ALT:()=>this.SUBRULE(this.table)}])});constructor(){super(Qmt,{traceInitPerf:Oce.isDebug(),maxLookahead:1,skipValidations:!Oce.isDebug()}),this.performSelfAnalysis()}},X$=new ihr,mmt=l=>l&&(l.constructor===Object||l.constructor===void 0),Nce=()=>Object.create(null),b3e=(l,s)=>{try{return l()}catch(u){if(u instanceof CR)throw new Gdr(s)}},CR=class extends Error{},shr=X$.getBaseCstVisitorConstructor(),C3e=Symbol("explicitlyDeclared"),hmt=Symbol("implicitlyDeclared"),Y$=Symbol("notEditable"),ahr=class extends shr{constructor(){super(),this.validateVisitor()}toml(l){var s;let u=Nce(),p=u;return(s=l.expression)==null||s.forEach(g=>p=this.visit(g,{current:p,root:u})),this.cleanInternalProperties(u),u}expression(l,{current:s,root:u}){if(l.keyValue)return this.visit(l.keyValue,s),s;if(l.table)return this.visit(l.table,u)}keyValue(l,s){let u=this.visit(l.key),p=this.visit(l.value);b3e(()=>this.assignValue(u,p,s),`Cannot assign value to '${u.join(".")}'`)}key(l){return l.dottedKey?this.visit(l.dottedKey):[this.interpret(l,zF)]}dottedKey(l){return this.interpret(l,zF)}inlineTableKeyValues(l,s){l.keyValue&&l.keyValue.forEach(u=>this.visit(u,s))}inlineTable(l){let s=Nce();return s[Y$]=!0,l.inlineTableKeyValues&&this.visit(l.inlineTableKeyValues,s),s}value(l){return l.array?this.visit(l.array):l.inlineTable?this.visit(l.inlineTable):this.interpret(l,qN,Mce,eG,Lce,nG)}arrayValues(l,s){return l.value.forEach(u=>s.push(this.visit(u))),s}array(l){let s=[];return s[Y$]=!0,l.arrayValues?this.visit(l.arrayValues,s):s}table(l,s){if(l.stdTable)return this.visit(l.stdTable,s);if(l.arrayTable)return this.visit(l.arrayTable,s)}stdTable(l,s){let u=this.visit(l.key);return b3e(()=>this.createTable(u,s),`Cannot create table '${u.join(".")}'`)}arrayTable(l,s){let u=this.visit(l.key);return b3e(()=>{let p=this.getOrCreateArray(u,s);if(p[Y$])throw new CR;let g=Nce();return p.push(g),g},`Cannot create array table '${u.join(".")}'`)}cleanInternalProperties(l){for(let s of Object.getOwnPropertySymbols(l))delete l[s];for(let s in l)typeof l[s]=="object"&&this.cleanInternalProperties(l[s]),Array.isArray(l[s])&&l[s].forEach(u=>this.cleanInternalProperties(u))}interpret(l,...s){for(let u of s)if(l[u.name]){let p=l[u.name].map(g=>x3e[u.name](g.image,g,u.name));return p.length===1?p[0]:p}}assignPrimitiveValue(l,s,u){if(l in u)throw new CR;return mmt(s)&&(s[C3e]=!0),u[l]=s,u}tryCreatingObject(l,s,u,p,g){if(s[l]){if(!mmt(s[l])||!g&&s[l][C3e]||!p&&s[l][hmt]||s[l][Y$])throw new CR}else s[l]=Nce(),u&&(s[l][u]=!0);return s[l]}assignValue(l,s,u){let[p,...g]=l;return g.length>0?(this.tryCreatingObject(p,u,hmt,!0,!1),this.assignValue(g,s,u[p])):this.assignPrimitiveValue(p,s,u)}createTable(l,s){let[u,...p]=l;if(p.length>0){if(Array.isArray(s[u])){if(s[u][Y$])throw new CR;let g=s[u][s[u].length-1];return this.createTable(p,g)}return this.tryCreatingObject(u,s,null,!0,!0),this.createTable(p,s[u])}return this.tryCreatingObject(u,s,C3e,!1,!1)}getOrCreateArray(l,s){let[u,...p]=l;if(p.length>0){if(Array.isArray(s[u])){let g=s[u][s[u].length-1];return this.getOrCreateArray(p,g)}return this.tryCreatingObject(u,s,null,!0,!0),this.getOrCreateArray(p,s[u])}if(s[u]&&!Array.isArray(s[u]))throw new CR;return s[u]=s[u]||[],s[u]}},ohr=new ahr,B3e=l=>{let s=nhr.tokenize(l);if(s.errors.length>0)throw new Vdr(s.errors);X$.input=s.tokens;let u=X$.toml();if(X$.errors.length>0)throw new $dr(X$.errors);return ohr.visit(u)};var bgt=cp(Nht(),1);var Dgt=cp(_ue(),1);var F4e={eslint:{toolId:"eslint",displayName:"ESLint",packageName:"eslint",configPatterns:["eslint.config.js","eslint.config.mjs","eslint.config.cjs",".eslintrc.*"],defaultCommand:"eslint .",minVersion:"9.0.0"},typescript:{toolId:"typescript",displayName:"TypeScript",packageName:"typescript",configPatterns:["tsconfig.json","tsconfig.*.json"],defaultCommand:"tsc --noEmit",minVersion:"5.0.0"},prettier:{toolId:"prettier",displayName:"Prettier",packageName:"prettier",configPatterns:[".prettierrc",".prettierrc.*","prettier.config.*"],defaultCommand:"prettier --check .",minVersion:"3.0.0"},jest:{toolId:"jest",displayName:"Jest",packageName:"jest",configPatterns:["jest.config.*"],defaultCommand:"jest",minVersion:"29.0.0"},vitest:{toolId:"vitest",displayName:"Vitest",packageName:"vitest",configPatterns:["vitest.config.*","vite.config.*"],defaultCommand:"vitest run",minVersion:"1.0.0"},"bun-test":{toolId:"bun-test",displayName:"Bun Test",packageName:"bun",configPatterns:["bunfig.toml"],defaultCommand:"bun test"},knip:{toolId:"knip",displayName:"Knip",packageName:"knip",configPatterns:["knip.json","knip.jsonc","knip.ts","knip.config.ts"],defaultCommand:"knip",minVersion:"5.0.0"},biome:{toolId:"biome",displayName:"Biome",packageName:"@biomejs/biome",configPatterns:["biome.json","biome.jsonc"],defaultCommand:"biome check .",minVersion:"1.0.0"}},W0r={"@biomejs/biome":["biome","biome-lint","biome-format"],typescript:["typescript"],eslint:["eslint"],prettier:["prettier"],jest:["jest"],vitest:["vitest"],knip:["knip"],bun:["bun-test"]},pue=class{ecosystem="node";displayName="Node.js";detectToolAvailability(s,u,p){let g=F4e[s],E={...u.dependencies,...u.devDependencies},k=g?.packageName??s,L=E[k],W=!!L,Y=p[s]?.exists??!1,ue=u.commands.some(U=>U.lensId===s||U.name===s);return{installed:W,configured:Y,hasRunCommand:ue,source:"dependency",version:L}}getInstallInstructions(s,u="npm"){let p=F4e[s],g=p?.packageName??s,E=p?.minVersion?`@${p.minVersion}`:"",k={npm:`npm install -D ${g}${E}`,yarn:`yarn add -D ${g}${E}`,pnpm:`pnpm add -D ${g}${E}`,bun:`bun add -d ${g}${E}`};return{command:k[u]??k.npm,alternatives:k}}getDefaultCommand(s){return F4e[s]?.defaultCommand??s}isToolchainTool(s){return!1}getToolIdFromPackage(s){return W0r[s]??[s]}},due=new pue;var w4e={ruff:{toolId:"ruff",displayName:"Ruff",packageName:"ruff",configPatterns:["ruff.toml",".ruff.toml"],configAlternatives:["pyproject.toml [tool.ruff]"],defaultCommand:"ruff check .",minVersion:"0.8.0"},"ruff-format":{toolId:"ruff-format",displayName:"Ruff Format",packageName:"ruff",configPatterns:["ruff.toml",".ruff.toml"],configAlternatives:["pyproject.toml [tool.ruff]"],defaultCommand:"ruff format .",minVersion:"0.8.0"},mypy:{toolId:"mypy",displayName:"MyPy",packageName:"mypy",configPatterns:["mypy.ini",".mypy.ini"],configAlternatives:["pyproject.toml [tool.mypy]","setup.cfg [mypy]"],defaultCommand:"mypy .",minVersion:"1.0.0"},pyright:{toolId:"pyright",displayName:"Pyright",packageName:"pyright",configPatterns:["pyrightconfig.json"],configAlternatives:["pyproject.toml [tool.pyright]"],defaultCommand:"pyright",minVersion:"1.1.0"},pytest:{toolId:"pytest",displayName:"Pytest",packageName:"pytest",configPatterns:["pytest.ini","conftest.py"],configAlternatives:["pyproject.toml [tool.pytest]","setup.cfg [tool:pytest]"],defaultCommand:"pytest",minVersion:"8.0.0"},black:{toolId:"black",displayName:"Black",packageName:"black",configPatterns:[".black","black.toml"],configAlternatives:["pyproject.toml [tool.black]"],defaultCommand:"black --check .",minVersion:"24.0.0"},isort:{toolId:"isort",displayName:"isort",packageName:"isort",configPatterns:[".isort.cfg","isort.cfg"],configAlternatives:["pyproject.toml [tool.isort]","setup.cfg [isort]"],defaultCommand:"isort --check .",minVersion:"5.0.0"},flake8:{toolId:"flake8",displayName:"Flake8",packageName:"flake8",configPatterns:[".flake8","flake8.ini"],configAlternatives:["setup.cfg [flake8]"],defaultCommand:"flake8 ."},pylint:{toolId:"pylint",displayName:"Pylint",packageName:"pylint",configPatterns:[".pylintrc","pylintrc","pylint.toml"],configAlternatives:["pyproject.toml [tool.pylint]"],defaultCommand:"pylint ."}},z0r={ruff:["ruff","ruff-format"],mypy:["mypy"],pyright:["pyright"],pytest:["pytest"],black:["black"],isort:["isort"],flake8:["flake8"],pylint:["pylint"]},V0r=["dev","development","test","testing","lint","linting","dev-dependencies"],mue=class{ecosystem="python";displayName="Python";detectToolAvailability(s,u,p){let E=w4e[s]?.packageName??s,k=!1,L,W="dependency";if(u.dependencies[E]&&(k=!0,L=u.dependencies[E]),!k&&u.devDependencies[E]&&(k=!0,L=u.devDependencies[E],W="dev-group"),!k&&u.dependencyGroups)for(let U of V0r){let Oe=u.dependencyGroups[U];if(Oe&&Oe[E]){k=!0,L=Oe[E],W="dev-group";break}}let Y=p[s]?.exists??!1;return{installed:k,configured:Y,hasRunCommand:k,source:W,version:L,details:W==="dev-group"?"Found in dev dependency group":void 0}}getInstallInstructions(s,u="pip"){let g=w4e[s]?.packageName??s,E={pip:`pip install ${g}`,uv:`uv add --dev ${g}`,poetry:`poetry add --group dev ${g}`,pipenv:`pipenv install --dev ${g}`};return{command:E[u]??E.pip,alternatives:E,notes:"Install in your virtual environment or use a tool like uv for isolated installs"}}getDefaultCommand(s){return w4e[s]?.defaultCommand??s}isToolchainTool(s){return!1}getToolIdFromPackage(s){return z0r[s]??[s]}},hue=new mue;var gue={"golangci-lint":{toolId:"golangci-lint",displayName:"golangci-lint",packageName:"github.com/golangci/golangci-lint/cmd/golangci-lint",goModule:"github.com/golangci/golangci-lint/cmd/golangci-lint",configPatterns:[".golangci.yml",".golangci.yaml",".golangci.toml",".golangci.json"],defaultCommand:"golangci-lint run",minVersion:"1.60.0"},staticcheck:{toolId:"staticcheck",displayName:"Staticcheck",packageName:"honnef.co/go/tools/cmd/staticcheck",goModule:"honnef.co/go/tools/cmd/staticcheck",configPatterns:["staticcheck.conf"],defaultCommand:"staticcheck ./..."},"go-test":{toolId:"go-test",displayName:"Go Test",packageName:"go",configPatterns:[],defaultCommand:"go test ./..."},"go-vet":{toolId:"go-vet",displayName:"Go Vet",packageName:"go",configPatterns:[],defaultCommand:"go vet ./..."},gofmt:{toolId:"gofmt",displayName:"gofmt",packageName:"go",configPatterns:[],defaultCommand:"gofmt -l ."},goimports:{toolId:"goimports",displayName:"goimports",packageName:"golang.org/x/tools/cmd/goimports",goModule:"golang.org/x/tools/cmd/goimports",configPatterns:[],defaultCommand:"goimports -l ."},govulncheck:{toolId:"govulncheck",displayName:"govulncheck",packageName:"golang.org/x/vuln/cmd/govulncheck",goModule:"golang.org/x/vuln/cmd/govulncheck",configPatterns:[],defaultCommand:"govulncheck ./..."},"go-critic":{toolId:"go-critic",displayName:"go-critic",packageName:"github.com/go-critic/go-critic/cmd/gocritic",goModule:"github.com/go-critic/go-critic/cmd/gocritic",configPatterns:[],defaultCommand:"gocritic check ./..."}},I4e=new Set(["go-test","go-vet","gofmt"]),$0r=/import\s*\(\s*([\s\S]*?)\s*\)/,G0r=/_\s+"([^"]+)"/g,yue=class{ecosystem="go";displayName="Go";detectToolAvailability(s,u,p){let g=gue[s];if(I4e.has(s))return{installed:!0,configured:!0,hasRunCommand:!0,source:"toolchain",details:"Built into Go toolchain"};let E=!1,k="binary";u.toolsGoContent&&g?.goModule&&(E=this.checkToolsGo(u.toolsGoContent,g.goModule),E&&(k="dependency"));let W=p[s]?.exists??!1;return W&&!E&&(E=!0),{installed:E,configured:W,hasRunCommand:E,source:k,details:k==="dependency"?"Pinned in tools.go":"Available as binary"}}checkToolsGo(s,u){let p=s.match($0r);if(!p)return!1;let g=p[1],E;for(;(E=G0r.exec(g))!==null;)if(E[1]===u)return!0;return!1}getInstallInstructions(s,u){let p=gue[s];if(I4e.has(s))return{command:"Built into Go - no installation needed",notes:"This tool is part of the Go toolchain"};let g=p?.goModule??p?.packageName??s;return{command:`go install ${g}@latest`,additionalSteps:["Optionally pin version in tools.go:"," 1. Create tools.go with //go:build tools constraint",` 2. Add blank import: _ "${g}"`," 3. Run: go mod tidy"],notes:"Make sure $GOBIN or $GOPATH/bin is in your PATH"}}getDefaultCommand(s){return gue[s]?.defaultCommand??s}isToolchainTool(s){return I4e.has(s)}getToolIdFromPackage(s){for(let[u,p]of Object.entries(gue))if(p.goModule===s||p.packageName===s)return[u];return[s]}},vue=new yue;var Due={clippy:{toolId:"clippy",displayName:"Clippy",packageName:"clippy",isRustupComponent:!0,configPatterns:["clippy.toml",".clippy.toml"],configAlternatives:["Cargo.toml [lints.clippy]"],defaultCommand:"cargo clippy -- -D warnings"},rustfmt:{toolId:"rustfmt",displayName:"rustfmt",packageName:"rustfmt",isRustupComponent:!0,configPatterns:["rustfmt.toml",".rustfmt.toml"],defaultCommand:"cargo fmt --check"},"cargo-test":{toolId:"cargo-test",displayName:"Cargo Test",packageName:"cargo",configPatterns:[],defaultCommand:"cargo test"},"cargo-nextest":{toolId:"cargo-nextest",displayName:"cargo-nextest",packageName:"cargo-nextest",configPatterns:[".config/nextest.toml"],defaultCommand:"cargo nextest run"},"cargo-llvm-cov":{toolId:"cargo-llvm-cov",displayName:"cargo-llvm-cov",packageName:"cargo-llvm-cov",configPatterns:[],defaultCommand:"cargo llvm-cov"},"cargo-audit":{toolId:"cargo-audit",displayName:"cargo-audit",packageName:"cargo-audit",configPatterns:[],defaultCommand:"cargo audit"},"cargo-deny":{toolId:"cargo-deny",displayName:"cargo-deny",packageName:"cargo-deny",configPatterns:["deny.toml"],defaultCommand:"cargo deny check"},"cargo-machete":{toolId:"cargo-machete",displayName:"cargo-machete",packageName:"cargo-machete",configPatterns:[],defaultCommand:"cargo machete"}},P4e=new Set(["clippy","rustfmt"]),N4e=new Set(["cargo-test"]),bue=class{ecosystem="rust";displayName="Rust";detectToolAvailability(s,u,p){let g=Due[s];if(N4e.has(s))return{installed:!0,configured:!0,hasRunCommand:!0,source:"toolchain",details:"Built into Cargo"};if(P4e.has(s))return{installed:!0,configured:p[s]?.exists??!1,hasRunCommand:!0,source:"toolchain",details:"Available via rustup component"};let E=!1,k,L=g?.packageName??s;u.devDependencies[L]&&(E=!0,k=u.devDependencies[L]);let H=p[s]?.exists??!1;return H&&!E&&(E=!0),{installed:E,configured:H,hasRunCommand:E,source:E&&k?"dependency":"binary",version:k,details:k?"In dev-dependencies":"Cargo-installed binary"}}getInstallInstructions(s,u){let p=Due[s];if(N4e.has(s))return{command:"Built into Cargo - no installation needed",notes:"This tool is part of the Rust toolchain"};if(P4e.has(s))return{command:`rustup component add ${p?.packageName??s}`,notes:"This is a rustup component, typically included with rustup default"};let g=p?.packageName??s;return{command:`cargo install ${g}`,alternatives:{"cargo-binstall":`cargo binstall ${g}`},notes:"cargo-binstall is faster if you have it installed (downloads pre-built binaries)"}}getDefaultCommand(s){return Due[s]?.defaultCommand??s}isToolchainTool(s){return P4e.has(s)||N4e.has(s)}getToolIdFromPackage(s){for(let[u,p]of Object.entries(Due))if(p.packageName===s)return[u];return[s]}},Cue=new bue;var H0r={node:due,python:hue,go:vue,rust:Cue};function PR(l){let s=H0r[l];if(!s)throw new Error(`No tool detection strategy found for ecosystem: ${l}`);return s}function HF(l){switch(l){case"node":case"package":return"node";case"python":return"python";case"cargo":return"rust";case"go":return"go";default:return"node"}}var K0r={eslint:"linting",biome:"linting","biome-lint":"linting",oxlint:"linting",ruff:"linting",flake8:"linting",pylint:"linting","golangci-lint":"linting",staticcheck:"linting","go-vet":"linting",clippy:"linting",typescript:"types",flow:"types",mypy:"types",pyright:"types",test:"tests",jest:"tests",vitest:"tests","bun-test":"tests",mocha:"tests",playwright:"tests",cypress:"tests",pytest:"tests","go-test":"tests","cargo-test":"tests","cargo-nextest":"tests",prettier:"formatting","biome-format":"formatting",black:"formatting",isort:"formatting","ruff-format":"formatting",gofmt:"formatting",goimports:"formatting",rustfmt:"formatting",knip:"deadCode",depcheck:"deadCode","cargo-machete":"deadCode",govulncheck:"deadCode","cargo-audit":"deadCode","cargo-deny":"deadCode",typedoc:"documentation",jsdoc:"documentation",alexandria:"documentation"},Q0r=[{pattern:/^bun\s+test\b/,lensId:"bun-test"},{pattern:/^bun\s+run\s+test\b/,lensId:"bun-test"},{pattern:/\bbiome\s+(check|lint|ci)\b/,lensId:"biome-lint"},{pattern:/\bbiome\s+format\b/,lensId:"biome-format"},{pattern:/\bvitest\b/,lensId:"vitest"},{pattern:/\bjest\b/,lensId:"jest"},{pattern:/\bruff\s+(check|lint)\b/,lensId:"ruff"},{pattern:/\bruff\s+format\b/,lensId:"ruff-format"},{pattern:/\bmypy\b/,lensId:"mypy"},{pattern:/\bpytest\b/,lensId:"pytest"},{pattern:/\bpython\s+-m\s+pytest\b/,lensId:"pytest"},{pattern:/\bblack\b/,lensId:"black"},{pattern:/\bisort\b/,lensId:"isort"},{pattern:/\bflake8\b/,lensId:"flake8"},{pattern:/\bpylint\b/,lensId:"pylint"},{pattern:/\bpyright\b/,lensId:"pyright"}],Y0r=["eslint","typescript","test","prettier","knip","typedoc","alexandria"],vgt={lint:"eslint",eslint:"eslint",ruff:"ruff",flake8:"flake8",pylint:"pylint",typecheck:"typescript","type-check":"typescript",tsc:"typescript",mypy:"mypy",pyright:"pyright",test:"test",jest:"jest",vitest:"vitest",pytest:"pytest",format:"prettier",prettier:"prettier",black:"black",isort:"isort",knip:"knip",unused:"knip",docs:"alexandria",alexandria:"alexandria",typedoc:"typedoc"},HN=class{static detectLensCommands(s){let u=new Map;for(let p of s)if(p.name.startsWith("lens:")){let g=p.name.split(":");if(g.length>=3){let E=g[1],k=g[2];u.has(E)||u.set(E,{lensId:E,operations:new Set}),u.get(E).operations.add(k),p.isLensCommand=!0,p.lensId=E,p.lensOperation=k}}return u.size===0&&this.applyFallbackDetection(s,u),u}static detectLensFromScriptContent(s){if(!s)return null;for(let{pattern:u,lensId:p}of Q0r)if(u.test(s))return p;return null}static applyFallbackDetection(s,u){for(let p of s){let g=this.detectLensFromScriptContent(p.description);if(!g){let E=p.name.split(":")[0];g=vgt[p.name]||vgt[E]||null}if(g){u.has(g)||u.set(g,{lensId:g,operations:new Set});let E=p.name.includes("coverage")?"coverage":"check";u.get(g).operations.add(E),p.isLensCommand=!0,p.lensId=g,p.lensOperation=E}}}static calculateMetrics(s,u){let p={};for(let[g]of s){let E=K0r[g];if(E){let k=u?.get(g);k!==void 0&&(p[E]=k)}}return p}static getAvailableLenses(s){return Array.from(s.keys())}static getMissingLenses(s){let u=new Set(s.keys());return Y0r.filter(p=>!u.has(p))}static calculateQualityProfile(s,u){let p=this.detectLensCommands(s),g=this.calculateMetrics(p,u),E=this.getAvailableLenses(p),k=this.getMissingLenses(p);return{hexagon:g,availableLenses:E,missingLenses:k}}static calculateLensReadiness(s,u,p,g){let E=HF(s),k=PR(E),L={},W=g??Object.keys(Dgt.ALL_LENS_REQUIREMENTS);for(let H of W){let Y=k.detectToolAvailability(H,u,p),ue=k.getInstallInstructions(H,u.packageManager),U=k.getDefaultCommand(H),Oe=k.isToolchainTool(H),ye=[];ye.push({requirement:{type:"devDependency",name:H,critical:!0},satisfied:Y.installed,foundValue:Y.version}),ye.push({requirement:{type:"config",name:`${H} config`,critical:!1},satisfied:Y.configured,foundValue:p[H]?.path});let ve=[];!Y.installed&&!Oe&&ve.push({type:"devDependency",name:H,critical:!0,suggestedFix:ue.command});let Ge=Y.installed||Oe,lt=!Ge&&Y.configured;L[H]={lensId:H,displayName:H,ready:Ge,partial:lt,checks:ye,missing:ve,ecosystem:E,toolAvailability:Y,installInstructions:ue,defaultCommand:U,isToolchainTool:Oe}}return L}static getToolInstallInstructions(s,u,p){let g=HF(u);return PR(g).getInstallInstructions(s,p)}static checkToolAvailability(s,u,p,g){let E=HF(u);return PR(E).detectToolAvailability(s,p,g)}static getToolDefaultCommand(s,u){let p=HF(u);return PR(p).getDefaultCommand(s)}};var NR=class{manifestFileName="package.json";packageType="node";canParse(s){return s.endsWith("package.json")}parseContent(s){try{return JSON.parse(s)}catch{return null}}extractPackageData(s,u){let p;u==="package.json"?p="":u.endsWith("/package.json")?p=u.slice(0,-13):p=u;let g=this.extractCommands(s,p),E;if(s.author){if(typeof s.author=="string")E=s.author;else if(s.author.name){let L=s.author.name;s.author.email&&(L+=` <${s.author.email}>`),s.author.url&&(L+=` (${s.author.url})`),E=L}}let k;return s.repository&&(typeof s.repository=="string"?k=s.repository:s.repository.url&&(k=s.repository.url)),{name:s.name||"unnamed",version:s.version,path:p,manifestPath:u,packageManager:"unknown",dependencies:s.dependencies||{},devDependencies:s.devDependencies||{},peerDependencies:s.peerDependencies||{},description:s.description,license:s.license,author:E,repository:k,homepage:s.homepage,keywords:s.keywords,isMonorepoRoot:!!s.workspaces,isWorkspace:!1,parentPackage:void 0,availableCommands:g}}extractCommands(s,u){let p=[];return s.scripts&&Object.entries(s.scripts).forEach(([E,k])=>{p.push({name:E,command:`npm run ${E}`,description:k.length>50?k.substring(0,47)+"...":k,type:"script",workingDirectory:u})}),[{name:"install",command:"npm install",description:"Install dependencies"},{name:"ci",command:"npm ci",description:"Clean install dependencies"},{name:"update",command:"npm update",description:"Update dependencies"}].forEach(E=>{p.push({...E,type:"standard",workingDirectory:u})}),p}detectWorkspaces(s){return Array.isArray(s.workspaces)?s.workspaces:s.workspaces&&typeof s.workspaces=="object"&&"packages"in s.workspaces&&s.workspaces.packages||null}detectPackageManager(s,u){if(s.packageManager){let p=s.packageManager.split("@")[0];if(["npm","yarn","pnpm","bun"].includes(p))return p}return u.some(p=>p.endsWith("bun.lockb")||p.endsWith("bun.lock"))?"bun":u.some(p=>p.endsWith("yarn.lock"))?"yarn":u.some(p=>p.endsWith("pnpm-lock.yaml"))?"pnpm":(u.some(p=>p.endsWith("package-lock.json")),"npm")}detectConfigs(s,u,p){let g={},E={knip:["knip.json","knip.jsonc",".knip.json","knip.config.js","knip.config.ts","knip.config.mjs"],eslint:[".eslintrc",".eslintrc.js",".eslintrc.json",".eslintrc.yml",".eslintrc.yaml","eslint.config.js","eslint.config.mjs",".eslintrc.cjs"],prettier:[".prettierrc",".prettierrc.js",".prettierrc.json",".prettierrc.yml",".prettierrc.yaml","prettier.config.js",".prettierrc.toml"],typescript:["tsconfig.json","tsconfig.base.json"],jest:["jest.config.js","jest.config.ts","jest.config.mjs","jest.config.cjs","jest.config.json"],vitest:["vitest.config.js","vitest.config.ts","vitest.config.mjs"],biome:["biome.json","biome.jsonc"],webpack:["webpack.config.js","webpack.config.ts","webpack.config.mjs"],vite:["vite.config.js","vite.config.ts","vite.config.mjs"],rollup:["rollup.config.js","rollup.config.ts","rollup.config.mjs"],babel:[".babelrc",".babelrc.js",".babelrc.json","babel.config.js","babel.config.json"],dockerfile:["Dockerfile","dockerfile","Dockerfile.dev","Dockerfile.prod"],gitignore:[".gitignore"],editorconfig:[".editorconfig"]},k=s==="."||s===""?"":s.endsWith("/")?s:s+"/";if(u.allFiles)for(let[L,W]of Object.entries(E))for(let H of W){let Y=k+H;if(u.allFiles.some(U=>U.path===Y||U.relativePath===Y)){g[L]={path:Y,exists:!0,type:this.getConfigFileType(H)};break}}return p&&(p.eslintConfig&&(g.eslint={path:k+"package.json",exists:!0,type:"json",isInline:!0,inlineField:"eslintConfig"}),p.prettier&&(g.prettier={path:k+"package.json",exists:!0,type:"json",isInline:!0,inlineField:"prettier"}),p.jest&&(g.jest={path:k+"package.json",exists:!0,type:"json",isInline:!0,inlineField:"jest"}),p.babel&&(g.babel={path:k+"package.json",exists:!0,type:"json",isInline:!0,inlineField:"babel"}),p.vitest&&(g.vitest={path:k+"package.json",exists:!0,type:"json",isInline:!0,inlineField:"vitest"}),p.knip&&(g.knip={path:k+"package.json",exists:!0,type:"json",isInline:!0,inlineField:"knip"}),p.biome&&(g.biome={path:k+"package.json",exists:!0,type:"json",isInline:!0,inlineField:"biome"}),p.stylelint&&(g.stylelint={path:k+"package.json",exists:!0,type:"json",isInline:!0,inlineField:"stylelint"}),p.commitlint&&(g.commitlint={path:k+"package.json",exists:!0,type:"json",isInline:!0,inlineField:"commitlint"}),p["lint-staged"]&&(g["lint-staged"]={path:k+"package.json",exists:!0,type:"json",isInline:!0,inlineField:"lint-staged"})),g}getConfigFileType(s){return s.endsWith(".json")||s.endsWith(".jsonc")?"json":s.endsWith(".yml")||s.endsWith(".yaml")?"yaml":s.endsWith(".toml")?"toml":s.endsWith(".js")||s.endsWith(".mjs")||s.endsWith(".cjs")?"js":s.endsWith(".ts")||s.endsWith(".mts")||s.endsWith(".cts")?"ts":s.endsWith(".ini")?"ini":"custom"}detectDocsFolder(s,u,p){let g=["docs","documentation","doc"],E=s==="."||s===""?"":s;if(E&&!E.endsWith("/")&&(E+="/"),!u.allFiles)return;for(let H of g){let Y=E+H;if(u.allFiles.some(U=>U.path?.toLowerCase().startsWith(Y.toLowerCase()+"/"))){let U=u.allFiles.find(Oe=>Oe.path?.toLowerCase().startsWith(Y.toLowerCase()+"/"))?.path;return U?U.substring(0,U.indexOf("/",E.length)).substring(E.length):H}}let k=new Map;for(let H of u.allFiles){if(!H.path||E!==""&&!H.path.startsWith(E))continue;let ue=(E===""?H.path:H.path.substring(E.length)).split("/");if(ue.length===2){let U=ue[0],Oe=ue[1];k.has(U)||k.set(U,{docFiles:0,totalFiles:0});let ye=k.get(U);ye.totalFiles++,this.isDocumentationFile(Oe)&&ye.docFiles++}}let L,W=.5;for(let[H,Y]of Array.from(k.entries()))if(Y.docFiles>=2){let ue=Y.docFiles/Y.totalFiles;ue>W&&(W=ue,L=H)}return L}isDocumentationFile(s){let u=s.toLowerCase();return[".md",".mdx",".rst",".txt",".adoc",".asciidoc"].some(k=>u.endsWith(k))?!0:[/^readme/i,/^changelog/i,/^changes/i,/^history/i,/^license/i,/^copying/i,/^install/i,/^usage/i,/^guide/i,/^tutorial/i,/^manual/i,/^faq/i,/^api/i,/^reference/i,/^spec/i,/^specification/i].some(k=>k.test(s))}},O4e=class{manifestFileName="pyproject.toml";packageType="python";canParse(s){return s.endsWith("pyproject.toml")||s.endsWith("setup.py")||s.endsWith("requirements.txt")}parseContent(s){try{return B3e(s)}catch{return null}}extractPackageData(s,u){let p,g=u.split("/").pop()||"";u===g?p="":p=u.substring(0,u.lastIndexOf("/"));let E=s.tool?.poetry,k=s.project,L=E?.name||k?.name||"unnamed",W=E?.version||k?.version,H={},Y={};if(E?.dependencies&&Object.entries(E.dependencies).forEach(([Vt,Nr])=>{Vt!=="python"&&(H[Vt]=typeof Nr=="string"?Nr:JSON.stringify(Nr))}),E?.["dev-dependencies"]&&Object.entries(E["dev-dependencies"]).forEach(([Vt,Nr])=>{Y[Vt]=typeof Nr=="string"?Nr:JSON.stringify(Nr)}),k?.dependencies&&Array.isArray(k.dependencies))try{let Vt=k.dependencies.join(`
|
|
1137
|
-
`);(0,bgt.parsePipRequirementsFile)(Vt).forEach(Lr=>{if(Lr.type==="ProjectName"&&Lr.name){let Fr="*";Lr.versionSpec&&Lr.versionSpec.length>0&&(Fr=Lr.versionSpec[0].version||"*"),H[Lr.name]=Fr}})}catch(Vt){console.warn("Failed to parse PEP 621 dependencies with pip-requirements-js, falling back to simple parsing:",Vt),k.dependencies.forEach(Nr=>{let Lr=Nr.trim(),Fr=Lr.indexOf(" ");Fr>0?H[Lr.substring(0,Fr)]="*":H[Lr]="*"})}let ue=this.detectPythonPackageManager(s),U=E?.description||k?.description,Oe;E?.license?Oe=E.license:k?.license&&(Oe=typeof k.license=="string"?k.license:k.license.text);let ye,ve;E?.authors&&E.authors.length>0?(ye=E.authors,ve=E.authors[0]):k?.authors&&k.authors.length>0&&(ye=k.authors.map(Vt=>Vt.name&&Vt.email?`${Vt.name} <${Vt.email}>`:Vt.name||Vt.email||"").filter(Boolean),ve=ye[0]);let Ge,lt;E?(Ge=E.repository,lt=E.homepage):k?.urls&&(Ge=k.urls.repository||k.urls.Repository||k.urls.source||k.urls.Source,lt=k.urls.homepage||k.urls.Homepage||k.urls.home||k.urls.Home);let Bt=E?.keywords||k?.keywords;return{name:L,version:W,path:p,manifestPath:u,packageManager:ue,dependencies:H,devDependencies:Y,peerDependencies:{},description:U,license:Oe,author:ve,authors:ye,repository:Ge,homepage:lt,keywords:Bt,isMonorepoRoot:!1,isWorkspace:!1,parentPackage:void 0,availableCommands:[]}}detectWorkspaces(s){return null}detectPackageManager(s,u){return this.detectPythonPackageManager(s)}detectPythonPackageManager(s){return s.tool?.poetry?"poetry":"pip"}detectDocsFolder(s,u,p){return new NR().detectDocsFolder(s,u,{})}detectConfigs(s,u,p){let g={},E={ruff:["ruff.toml",".ruff.toml"],mypy:["mypy.ini",".mypy.ini"],pytest:["pytest.ini","conftest.py"],black:[".black","black.toml"],isort:[".isort.cfg","isort.cfg"],flake8:[".flake8","flake8.ini"],pylint:[".pylintrc","pylintrc","pylint.toml"],coverage:[".coveragerc","coverage.ini"],precommit:[".pre-commit-config.yaml",".pre-commit-config.yml"],dockerfile:["Dockerfile","dockerfile","Dockerfile.dev","Dockerfile.prod"],gitignore:[".gitignore"],editorconfig:[".editorconfig"]},k=["mypy","pytest","flake8","isort","coverage"],L=s==="."||s===""?"":s.endsWith("/")?s:s+"/";if(u.allFiles){for(let[Y,ue]of Object.entries(E))for(let U of ue){let Oe=L+U;if(u.allFiles.some(ve=>ve.path===Oe||ve.relativePath===Oe)){g[Y]={path:Oe,exists:!0,type:this.getConfigFileType(U)};break}}let W=L+"setup.cfg";if(u.allFiles.some(Y=>Y.path===W||Y.relativePath===W))for(let Y of k)g[Y]||(g[Y]={path:W,exists:!0,type:"ini",isInline:!0,inlineField:`tool:${Y}`})}if(p?.tool){let W=L+"pyproject.toml";p.tool.ruff&&!g.ruff&&(g.ruff={path:W,exists:!0,type:"toml",isInline:!0,inlineField:"tool.ruff"}),p.tool.mypy&&!g.mypy&&(g.mypy={path:W,exists:!0,type:"toml",isInline:!0,inlineField:"tool.mypy"}),p.tool.pytest&&!g.pytest&&(g.pytest={path:W,exists:!0,type:"toml",isInline:!0,inlineField:"tool.pytest"}),p.tool.black&&!g.black&&(g.black={path:W,exists:!0,type:"toml",isInline:!0,inlineField:"tool.black"}),p.tool.isort&&!g.isort&&(g.isort={path:W,exists:!0,type:"toml",isInline:!0,inlineField:"tool.isort"}),p.tool.pylint&&!g.pylint&&(g.pylint={path:W,exists:!0,type:"toml",isInline:!0,inlineField:"tool.pylint"}),p.tool.coverage&&!g.coverage&&(g.coverage={path:W,exists:!0,type:"toml",isInline:!0,inlineField:"tool.coverage"})}return g}getConfigFileType(s){return s.endsWith(".json")||s.endsWith(".jsonc")?"json":s.endsWith(".yml")||s.endsWith(".yaml")?"yaml":s.endsWith(".toml")?"toml":s.endsWith(".ini")||s.endsWith(".cfg")?"ini":s.endsWith(".py")?"custom":s.startsWith(".")&&!s.includes(".")?"ini":"custom"}},L4e=class{manifestFileName="Cargo.toml";packageType="cargo";canParse(s){return s.endsWith("Cargo.toml")}parseContent(s){try{return B3e(s)}catch{return null}}extractPackageData(s,u){let p=s.package;if(!p)return null;let g;u==="Cargo.toml"?g="":u.endsWith("/Cargo.toml")?g=u.slice(0,-11):g=u;let E={},k={};s.dependencies&&Object.entries(s.dependencies).forEach(([H,Y])=>{E[H]=typeof Y=="string"?Y:JSON.stringify(Y)}),s["dev-dependencies"]&&Object.entries(s["dev-dependencies"]).forEach(([H,Y])=>{k[H]=typeof Y=="string"?Y:JSON.stringify(Y)});let L=p.authors?.[0],W=p.homepage||p.documentation;return{name:p.name||"unnamed",version:p.version,path:g,manifestPath:u,packageManager:"cargo",dependencies:E,devDependencies:k,peerDependencies:{},description:p.description,license:p.license,author:L,authors:p.authors,repository:p.repository,homepage:W,keywords:p.keywords,isMonorepoRoot:!!s.workspace,isWorkspace:!1,parentPackage:void 0,availableCommands:[]}}detectWorkspaces(s){return s.workspace?.members||null}detectPackageManager(){return"cargo"}detectDocsFolder(s,u,p){return new NR().detectDocsFolder(s,u,{})}},OR=class{parsers=[new NR,new O4e,new L4e];async discoverPackages(s,u){let p=[];if(!s.allFiles)return p;let g=s.allFiles.filter(H=>H.path?this.parsers.some(Y=>Y.canParse(H.path)):!1),E=s.allFiles.map(H=>H.path).filter(Boolean);for(let H of g){if(!H.path)continue;let Y=this.parsers.find(vr=>vr.canParse(H.path));if(!Y)continue;let ue=null;if(u)try{let vr=await u(H.path);vr&&(ue=Y.parseContent(vr))}catch(vr){console.warn(`Could not read or parse ${H.path}:`,vr);continue}else{let vr=H.path.split("/").slice(-2,-1)[0]||"unnamed";ue=this.createMinimalManifest(Y.packageType,vr)}if(!ue)continue;let U=Y.extractPackageData(ue,H.path);if(!U){console.warn(`[PackageLayerModule] extractPackageData returned null for ${H.path}`,{content:ue,parser:Y.packageType});continue}let Oe=H.path.substring(0,H.path.lastIndexOf("/")),ye=E.filter(vr=>vr.startsWith(Oe)&&this.isLockFile(vr));U.packageManager=Y.detectPackageManager(ue,ye),Y.packageType==="node"&&U.availableCommands&&U.packageManager&&U.packageManager!=="unknown"&&U.packageManager!=="npm"&&(U.availableCommands=U.availableCommands.map(vr=>{if(vr.command.includes("npm ")){let Ci=vr.command;return U.packageManager==="yarn"?Ci=Ci.replace("npm run","yarn").replace("npm install","yarn install").replace("npm ci","yarn install --frozen-lockfile").replace("npm update","yarn upgrade"):U.packageManager==="pnpm"&&(Ci=Ci.replace("npm","pnpm")),{...vr,command:Ci}}return vr}));let ve={id:`package-manifest-${U.path}`,name:Y.manifestFileName,patterns:[{type:"exact",pattern:H.path,description:`${Y.packageType} package manifest`}],matchedFiles:[H.path],fileCount:1},Ge;Y.detectConfigs&&(Ge=Y.detectConfigs(U.path,s,ue));let lt;Y.detectDocsFolder&&(lt=Y.detectDocsFolder(U.path,s,ue));let Bt=U.availableCommands?HN.calculateQualityProfile(U.availableCommands):void 0,Vt={name:U.name,ecosystem:HF(Y.packageType),path:U.path,dependencies:U.dependencies,devDependencies:U.devDependencies,commands:U.availableCommands||[],packageManager:U.packageManager,manifestContent:ue},Nr=HN.calculateLensReadiness(Y.packageType,Vt,Ge||{}),Lr=Bt?{...Bt,lensReadiness:Nr}:{hexagon:{},availableLenses:[],missingLenses:[],lensReadiness:Nr},Fr={id:`package-${Y.packageType}-${U.path.replace(/[^a-zA-Z0-9-]/g,"-")}`,name:U.name,type:Y.packageType,enabled:!0,derivedFrom:{fileSets:[ve],derivationType:"content",description:`${Y.packageType} package defined in ${Y.manifestFileName}`,contentExtraction:{method:"parse",parser:{format:Y.manifestFileName.endsWith(".json")?"json":"toml",paths:Y.packageType==="node"?[""]:Y.packageType==="python"?["tool.poetry","project"]:["package"]}}},packageData:U,configFiles:Ge,docsFolder:lt,qualityMetrics:Lr,pillar:"foundationHealth"};p.push(Fr)}this.resolveWorkspaceRelationships(p);let k=p.find(H=>H.packageData.path===""||H.packageData.path==="."),{orchestrator:L}=this.detectMonorepoOrchestrator(E),W=k?.packageData.isMonorepoRoot||L!=="none";if(k&&W){L!=="none"&&!k.packageData.isMonorepoRoot&&(k.packageData.isMonorepoRoot=!0);let H=g.find(U=>U.path==="package.json"||U.path==="./package.json"),Y;if(H&&u)try{let U=await u(H.path),Oe=JSON.parse(U);Y=new NR().detectWorkspaces(Oe)||void 0}catch{}let ue=await this.buildMonorepoMetadata(E,Y,u,k.configFiles);ue&&(k.packageData.monorepoMetadata=ue)}return this.propagateRootConfigs(p,k),this.recalculateLensReadinessWithInheritance(p,k),p}createPackageLayersFromBoundaries(s){return s.map(u=>{let p={id:`package-manifest-${u.rootPath||"root"}`,name:"package.json",patterns:[{type:"exact",pattern:u.packageJsonPath,description:"Node.js package manifest"}],matchedFiles:[u.packageJsonPath],fileCount:1},g={name:u.packageData?.name||u.name,version:u.packageData?.version,path:u.rootPath||".",manifestPath:u.packageJsonPath,packageManager:"unknown",dependencies:{},devDependencies:{},peerDependencies:{},isMonorepoRoot:!!u.packageData?.workspaces,isWorkspace:!u.isRoot&&s.length>1,parentPackage:u.isRoot?void 0:"root"};return{id:`package-node-${u.id}`,name:g.name,type:"node",enabled:!0,derivedFrom:{fileSets:[p],derivationType:"content",description:"Node.js package defined in package.json"},packageData:g,pillar:"foundationHealth"}})}isLockFile(s){return["package-lock.json","yarn.lock","pnpm-lock.yaml","bun.lockb","bun.lock","poetry.lock","Pipfile.lock","Cargo.lock"].some(p=>s.endsWith(p))}resolveWorkspaceRelationships(s){let u=s.filter(p=>p.packageData.path==="."||p.packageData.path==="");s.forEach(p=>{if(p.packageData.path!=="."&&p.packageData.path!==""){p.packageData.isWorkspace=!0;let g=p.packageData.path.includes("/")?p.packageData.path.substring(0,p.packageData.path.lastIndexOf("/")):".",E=s.find(k=>k.packageData.path===g);E&&(p.packageData.parentPackage=E.packageData.name)}})}createMinimalManifest(s,u){switch(s){case"node":return{name:u,version:"0.0.0",dependencies:{},devDependencies:{}};case"python":return{project:{name:u,version:"0.0.0"}};case"cargo":return{package:{name:u,version:"0.0.0"}};default:return{}}}detectMonorepoOrchestrator(s){return s.includes("turbo.json")?{orchestrator:"turbo",configPath:"turbo.json"}:s.includes("nx.json")?{orchestrator:"nx",configPath:"nx.json"}:s.includes("lerna.json")?{orchestrator:"lerna",configPath:"lerna.json"}:s.includes("pnpm-workspace.yaml")?{orchestrator:"pnpm",configPath:"pnpm-workspace.yaml"}:s.includes("rush.json")?{orchestrator:"rush",configPath:"rush.json"}:{orchestrator:"none"}}parseTurboConfig(s){try{let u=JSON.parse(s),p=[],g=u.tasks||u.pipeline||{};for(let[E,k]of Object.entries(g)){let L=E.split("#"),W=L.length>1?E:void 0,H=L.length>1?L[1]:E,Y=this.inferToolFromTaskName(H);p.push({name:H,tool:Y,filter:W})}return p}catch{return[]}}parseNxConfig(s){try{let u=JSON.parse(s),p=[];if(u.targetDefaults)for(let[g,E]of Object.entries(u.targetDefaults)){let k=this.inferToolFromTaskName(g);p.push({name:g,tool:k})}return p}catch{return[]}}inferToolFromTaskName(s){return{lint:"eslint",typecheck:"typescript","type-check":"typescript",tsc:"typescript",test:"jest",format:"prettier",prettier:"prettier",build:"build",dev:"dev",start:"start",check:"biome"}[s.toLowerCase()]}async buildMonorepoMetadata(s,u,p,g){let{orchestrator:E,configPath:k}=this.detectMonorepoOrchestrator(s);if(E==="none"&&!u)return;let L={orchestrator:E,orchestratorConfigPath:k,workspacePatterns:u};if(k&&p)try{let ue=await p(k);E==="turbo"?L.definedTasks=this.parseTurboConfig(ue):E==="nx"&&(L.definedTasks=this.parseNxConfig(ue))}catch{}if(g){let ue=[];for(let[U,Oe]of Object.entries(g))Oe&&Oe.exists&&ue.push({tool:U,configPath:Oe.path,isInline:Oe.isInline});ue.length>0&&(L.rootConfigs=ue)}let{role:W,hasSourceCode:H,sourceDirs:Y}=this.detectRootRole(s);return L.rootRole=W,L.rootHasSourceCode=H,Y.length>0&&(L.rootSourceDirs=Y),L}detectRootRole(s){let u=["src","lib","app"],p=["scripts","e2e","test","tests","tools","__tests__"],g=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".rs",".go"],E=[],k=[];for(let Y of s)if(!(Y.startsWith("packages/")||Y.startsWith("apps/")||Y.startsWith("libs/")||Y.startsWith("node_modules/"))){for(let ue of u)Y.startsWith(`${ue}/`)&&g.some(Oe=>Y.endsWith(Oe))&&!E.includes(ue)&&E.push(ue);for(let ue of p)Y.startsWith(`${ue}/`)&&g.some(Oe=>Y.endsWith(Oe))&&!k.includes(ue)&&k.push(ue)}let L=E.length>0,W=k.length>0,H=[...E,...k];return L?{role:"application",hasSourceCode:!0,sourceDirs:H}:W?{role:"hybrid",hasSourceCode:!0,sourceDirs:H}:{role:"orchestrator",hasSourceCode:!1,sourceDirs:[]}}propagateRootConfigs(s,u){if(!u?.configFiles||!u.packageData.monorepoMetadata)return;let p=u.configFiles;for(let g of s)if(!(g.packageData.path===""||g.packageData.path===".")){g.configFiles||(g.configFiles={});for(let[E,k]of Object.entries(p)){if(!k||!k.exists)continue;let L=g.configFiles[E];(!L||!L.exists)&&(g.configFiles[E]={...k,isInherited:!0,inheritedFrom:"",inheritanceType:"root"})}}}recalculateLensReadinessWithInheritance(s,u){if(!(!u?.configFiles||!u.packageData.monorepoMetadata))for(let p of s){if(p.packageData.path===""||p.packageData.path==="."||!(p.configFiles&&Object.values(p.configFiles).some(L=>L?.isInherited)))continue;let E={name:p.packageData.name,ecosystem:HF(p.type),path:p.packageData.path,dependencies:p.packageData.dependencies,devDependencies:p.packageData.devDependencies,commands:p.packageData.availableCommands||[],packageManager:p.packageData.packageManager},k=HN.calculateLensReadiness(p.type,E,p.configFiles||{});for(let[L,W]of Object.entries(k)){let H=p.qualityMetrics?.lensReadiness?.[L];if(W.ready&&H&&!H.ready){W.readyViaInheritance=!0;let Y=W.checks.filter(ue=>ue.satisfied?p.configFiles?.[L]?.isInherited&&ue.requirement.type==="config":!1).length;Y>0&&(W.inheritedChecks=Y)}}p.qualityMetrics&&(p.qualityMetrics.lensReadiness=k)}}};var Gy=cp(u0t(),1);var v0t=cp(Pue(),1),fw={basename:l=>l.split("/").pop()||"",join:(...l)=>l.filter(u=>u).join("/").replace(/\/+/g,"/"),relative:(l,s)=>!l||l==="."?s:s.startsWith(l+"/")?s.slice(l.length+1):s===l?".":s,dirname:l=>{let s=l.lastIndexOf("/");return s>0?l.slice(0,s):""},extname:l=>{let s=l.lastIndexOf(".");return s>0?l.slice(s):""}},JR=class{adapter;filterStats={totalFiltered:0,filteredByLayer:{},examples:[],filteredByDirectory:{}};constructor(s){this.adapter=s}async buildFileSystemTreeFromPath(s,u,p){console.time("[FilesystemService] Total build time"),this.filterStats={totalFiltered:0,filteredByLayer:{},examples:[],filteredByDirectory:{}};let g=u||[],E=p?.enableInverseFiltering||!1;if(!this.adapter){let Vt={path:s,name:s.split("/").pop()||s,children:[],fileCount:0,totalSize:0,depth:0,relativePath:"."};return{sha:"",root:Vt,allFiles:[],allDirectories:[Vt],stats:{totalFiles:0,totalDirectories:1,totalSize:0,maxDepth:0},metadata:{id:`fs-${Date.now()}`,timestamp:new Date,sourceType:"filesystem",sourceInfo:{path:s}},filterStats:this.filterStats,appliedFilters:g,inverseMatches:E?[]:void 0}}console.time("[FilesystemService] Build file tree");let k=[],L;for(let Vt of g)Vt.enabled&&Vt.filterData?.excludedPatterns&&(k.push(...Vt.filterData.excludedPatterns.map(Nr=>Nr.pattern)),Vt.filterData.sourceDirectory&&(L=Vt.filterData.sourceDirectory));let W=await this.adapter.buildFilteredFileTree(s,k,L),H=W.paths,Y=W.stats,ue=this.createIgnoreInstances(g);for(let Vt of H)this.shouldIncludeFile(Vt,ue,g)||this.filterStats.totalFiltered++;console.timeEnd("[FilesystemService] Build file tree"),console.log(`[FilesystemService] Found ${H.length} paths after filtering`),console.time("[FilesystemService] Convert to tree structure");let{allFiles:U,allDirectories:Oe,rootDir:ye}=await this.convertPathsToTree(H,s,Y);console.timeEnd("[FilesystemService] Convert to tree structure");let ve=[];E&&(ve=await this.findInverseMatches(s,ue,g));let Ge=U.reduce((Vt,Nr)=>Vt+(Nr.size||0),0),lt=Math.max(...Oe.map(Vt=>Vt.depth||0));g.forEach(Vt=>{Vt.enabled&&this.filterStats.filteredByLayer[Vt.id]&&(Vt.filterData.stats||(Vt.filterData.stats={totalFiltered:0,bytesExcluded:0}),Vt.filterData.stats.totalFiltered=this.filterStats.filteredByLayer[Vt.id])});let Bt={sha:"",root:ye||{path:".",name:fw.basename(s)||"root",children:[],fileCount:0,totalSize:0,depth:0,relativePath:"."},allFiles:U,allDirectories:Oe,stats:{totalFiles:U.length,totalDirectories:Oe.length,totalSize:Ge,maxDepth:lt},metadata:{id:`fs-${Date.now()}`,timestamp:new Date,sourceType:"filesystem",sourceInfo:{path:s}},filterStats:this.filterStats,appliedFilters:g,inverseMatches:ve};return console.timeEnd("[FilesystemService] Total build time"),Bt}createIgnoreInstances(s){let u=new Map;for(let p of s){if(!p.enabled||!p.filterData?.excludedPatterns)continue;let g=p.filterData.sourceDirectory||"",E=`${p.id}:${g}`,k=(0,v0t.default)(),L=p.filterData.excludedPatterns.map(W=>W.pattern);k.add(L),u.set(E,{ignore:k,sourceDirectory:g,filterId:p.id,filterName:p.name})}return u}shouldIncludeFile(s,u,p){for(let[,{ignore:g,sourceDirectory:E,filterId:k,filterName:L}]of u){if(E!==""&&!s.startsWith(E+"/")&&s!==E)continue;let W=s;if(E!==""&&s.startsWith(E+"/")&&(W=s.slice(E.length+1)),!(!W||W===".")&&g.ignores(W)){this.filterStats.totalFiltered++,this.filterStats.filteredByLayer[k]=(this.filterStats.filteredByLayer[k]||0)+1;let H=fw.dirname(s)||".";return this.filterStats.filteredByDirectory[H]||(this.filterStats.filteredByDirectory[H]={count:0,reasons:new Set}),this.filterStats.filteredByDirectory[H].count++,this.filterStats.filteredByDirectory[H].reasons.add(L),!1}}return!0}async convertPathsToTree(s,u,p){let g=[],E=[],k=new Map,L=p||new Map;if(!p&&this.adapter&&"getFileStats"in this.adapter){let H=s.map(async Y=>{try{let ue=fw.join(u,Y),U=await this.adapter.getFileStats(ue);U&&L.set(Y,{size:U.size||0,lastModified:U.lastModified||new Date,isDirectory:U.isDirectory||!1})}catch{}});await Promise.all(H)}for(let H of s){let Y=L.get(H);if(Y?.isDirectory||H.endsWith("/")){let U={path:H||".",name:fw.basename(H)||"root",children:[],fileCount:0,totalSize:0,depth:H.split("/").length-1,relativePath:H||"."};E.push(U),k.set(H,U)}else{let U={path:H,name:fw.basename(H),extension:fw.extname(H).toLowerCase(),size:Y?.size||0,lastModified:Y?.lastModified||new Date,isDirectory:!1,relativePath:H};g.push(U)}}let W=k.get(".")||k.get("")||{path:".",name:fw.basename(u)||"root",children:[],fileCount:g.length,totalSize:g.reduce((H,Y)=>H+(Y.size||0),0),depth:0,relativePath:"."};return{allFiles:g,allDirectories:E,rootDir:W}}async findInverseMatches(s,u,p){console.log("[FilesystemService] Running inverse filter analysis...");let g=[];if(!this.adapter)return[];let k=(await this.adapter.buildFilteredFileTree(s)).paths;console.log(`[FilesystemService] Found ${k.length} total paths for inverse analysis`);for(let L of k){let W=[];for(let[,{ignore:H,sourceDirectory:Y,filterName:ue}]of u){if(Y!==""&&!L.startsWith(Y+"/")&&L!==Y)continue;let U=L;Y!==""&&L.startsWith(Y+"/")&&(U=L.slice(Y.length+1)),!(!U||U===".")&&H.ignores(U)&&W.push(ue)}W.length>0&&g.push({path:L,matchedFilters:W})}return console.log(`[FilesystemService] Inverse analysis complete: ${g.length} files matched filters`),g}getFilterStats(){return{...this.filterStats}}getEmptyTree(s){let u={path:".",name:fw.basename(s)||"root",children:[],fileCount:0,totalSize:0,depth:0,relativePath:"."};return{sha:"",root:u,allFiles:[],allDirectories:[u],stats:{totalFiles:0,totalDirectories:1,totalSize:0,maxDepth:0},metadata:{id:`fs-${Date.now()}`,timestamp:new Date,sourceType:"filesystem",sourceInfo:{path:s}},filterStats:this.filterStats,appliedFilters:[],inverseMatches:[]}}};var OC=cp(require("fs/promises"),1),dwe=cp(require("path"),1),D0t=cp(Pue(),1),dG=class{async readFile(s){try{return{content:await OC.readFile(s,"utf-8")}}catch{return null}}async fileExists(s){try{return await OC.access(s),!0}catch{return!1}}async isDirectory(s){try{return(await OC.stat(s)).isDirectory()}catch{return!1}}async readDirectory(s){try{return await OC.readdir(s)}catch{return[]}}async getFileStats(s){try{let u=await OC.stat(s);return{size:u.size,isDirectory:u.isDirectory(),lastModified:u.mtime}}catch{return null}}async buildFilteredFileTree(s,u,p){let g=[],E=new Map,k=u&&u.length>0?(0,D0t.default)().add(u):null,L=async(W,H="")=>{try{let Y=await OC.readdir(W,{withFileTypes:!0});for(let ue of Y){let U=dwe.join(W,ue.name),Oe=H?dwe.join(H,ue.name):ue.name;if(!(k&&k.ignores(Oe))&&!(ue.isDirectory()&&this.shouldSkipDirectory(ue.name)))if(ue.isDirectory()){g.push(Oe+"/");let ye=await OC.stat(U);E.set(Oe+"/",{size:0,isDirectory:!0,lastModified:ye.mtime}),await L(U,Oe)}else{g.push(Oe);let ye=await OC.stat(U);E.set(Oe,{size:ye.size,isDirectory:!1,lastModified:ye.mtime})}}}catch(Y){console.warn(`Error walking directory ${W}:`,Y)}};return await L(s),{paths:g,stats:E}}shouldSkipDirectory(s){return["node_modules",".git","dist","build","coverage",".next",".turbo",".cache","tmp",".vscode",".idea"].includes(s)}};var r1r=cp(Pue(),1);var XT=cp(require("path")),_w=cp(require("fs/promises")),mwe=class{constructor(s){this.basePath=s}async readFile(s){try{let u=XT.isAbsolute(s)?s:XT.join(this.basePath,s);return{content:await _w.readFile(u,"utf-8")}}catch(u){return console.error(`[CLIFileSystemAdapter] Failed to read ${s}:`,u),null}}async fileExists(s){try{let u=XT.isAbsolute(s)?s:XT.join(this.basePath,s);return await _w.access(u),!0}catch{return!1}}async readDirectory(s){try{let u=XT.isAbsolute(s)?s:XT.join(this.basePath,s);return await _w.readdir(u)}catch(u){return console.error(`[CLIFileSystemAdapter] Failed to read directory ${s}:`,u),[]}}async isDirectory(s){try{let u=XT.isAbsolute(s)?s:XT.join(this.basePath,s);return(await _w.stat(u)).isDirectory()}catch{return!1}}buildFilteredFileTree(s,u,p){return Promise.resolve({paths:[]})}},ZN=class{constructor(){this.packageModule=new OR}async extractPackages(s,u){try{let p=new mwe(u),g=async k=>(await p.readFile(k))?.content||"",E=await this.packageModule.discoverPackages(s,g);return console.info(`[RepositoryScanner] Found ${E.length} packages in ${u}`),E}catch(p){return console.error("[RepositoryScanner] Failed to extract packages:",p),[]}}};var Pf=cp(_ue());var hwe=require("child_process"),gwe=require("stream"),Nue=class{constructor(){this.type="node"}async execute(s,u=[],p={}){let g=Date.now();return new Promise(E=>{let k="",L="",H={...p.env||process.env};delete H.NODE_OPTIONS,delete H.TS_NODE_PROJECT,delete H.TS_NODE_TRANSPILE_ONLY;let Y=(0,hwe.spawn)(s,u,{cwd:p.cwd,env:H,shell:!0});Y.stdout&&Y.stdout.on("data",U=>{k+=U.toString()}),Y.stderr&&Y.stderr.on("data",U=>{L+=U.toString()});let ue;p.timeout&&(ue=setTimeout(()=>{Y.kill("SIGTERM")},p.timeout)),Y.on("error",U=>{ue&&clearTimeout(ue),E({stdout:k,stderr:L||U.message,exitCode:1,duration:Date.now()-g,command:s,args:u,error:U})}),Y.on("close",U=>{ue&&clearTimeout(ue),E({stdout:k,stderr:L,exitCode:U??0,duration:Date.now()-g,command:s,args:u})})})}stream(s,u=[],p={}){let E={...p.env||process.env};delete E.NODE_OPTIONS,delete E.TS_NODE_PROJECT,delete E.TS_NODE_TRANSPILE_ONLY;let k=(0,hwe.spawn)(s,u,{cwd:p.cwd,env:E,shell:!0}),L=new Promise(W=>{let H="",Y="",ue=Date.now();k.stdout&&k.stdout.on("data",U=>{H+=U.toString()}),k.stderr&&k.stderr.on("data",U=>{Y+=U.toString()}),k.on("close",U=>{W({stdout:H,stderr:Y,exitCode:U??0,duration:Date.now()-ue,command:s,args:u})}),k.on("error",U=>{W({stdout:H,stderr:Y||U.message,exitCode:1,duration:Date.now()-ue,command:s,args:u,error:U})})});return{stdout:k.stdout||new gwe.Readable({read(){}}),stderr:k.stderr||new gwe.Readable({read(){}}),exitPromise:L,kill:()=>{k.kill("SIGTERM")}}}async isAvailable(s){try{let u=["--version"];return(await this.execute(s,u,{timeout:5e3})).exitCode===0}catch{return!1}}};var Oue=class{constructor(){this.executor=new Nue;let s=new dG;this.filesystemService=new JR(s),this.sourceFilesCache=new Map,this.lenses=new Map,this.initializeLenses()}initializeLenses(){console.log("[QualityLensService] Initializing lenses...");let s=new Pf.ESLintLens(this.executor);this.lenses.set("eslint",s),this.lenses.set("lint",s);let u=new Pf.JestLens(this.executor);this.lenses.set("jest",u),this.lenses.set("test",u);let p=new Pf.BunTestLens(this.executor);this.lenses.set("bun-test",p),this.lenses.set("bun",p);let g=new Pf.VitestLens(this.executor);this.lenses.set("vitest",g);let E=new Pf.NodeTestLens(this.executor);this.lenses.set("node-test",E),this.lenses.set("typescript",null),this.lenses.set("typecheck",null),this.lenses.set("tsc",null),this.lenses.set("knip",null),this.lenses.set("deadcode",null);let k=new Pf.PrettierLens(this.executor);this.lenses.set("prettier",k),this.lenses.set("format",k);let L=new Pf.BiomeLens(this.executor);L.setMode("lint"),this.lenses.set("biome-lint",L),this.lenses.set("biome",L);let W=new Pf.BiomeLens(this.executor);W.setMode("format"),this.lenses.set("biome-format",W);let H=new Pf.GitLens(this.executor);this.lenses.set("git",H);let Y=new Pf.AlexandriaLens(this.executor);this.lenses.set("alexandria",Y),this.lenses.set("docs",Y)}async checkIfBunTestRunner(s,u){try{let p=await import("fs/promises"),E=(await import("path")).join(s,"package.json"),k=await p.readFile(E,"utf-8"),L=JSON.parse(k),W=u.replace(/^(npm|yarn|pnpm)\s+run\s+/,"").split(" ")[0]||"test",H=L.scripts?.[W];return!!(H&&(H.startsWith("bun test")||H.startsWith("bun run test")))}catch{return!1}}async checkIfNodeTestRunner(s,u){try{let p=await import("fs/promises"),E=(await import("path")).join(s,"package.json"),k=await p.readFile(E,"utf-8"),L=JSON.parse(k),W=u.replace(/^(npm|yarn|pnpm)\s+run\s+/,"").split(" ")[0]||"test",H=L.scripts?.[W];return!!(H&&(H.includes("node --test")||H.includes("tsx --test")))}catch{return!1}}async discoverSourceFiles(s,u){let p=`${s}:${Array.from(u).join(",")}`;if(this.sourceFilesCache.has(p))return this.sourceFilesCache.get(p);try{let E=(await this.filesystemService.buildFileSystemTreeFromPath(s)).allFiles.filter(k=>u.has(k.extension)).map(k=>k.relativePath);return this.sourceFilesCache.set(p,E),console.log(`[QualityLensService] Discovered ${E.length} source files in ${s}`),E}catch(g){return console.warn(`[QualityLensService] Failed to discover source files in ${s}:`,g),[]}}async getLensForExecution(s,u,p){let g=s.toLowerCase();if(["typescript","typecheck","tsc"].includes(g)){let E=await this.discoverSourceFiles(u,Pf.TS_SOURCE_EXTENSIONS);return new Pf.TypeScriptLens(this.executor,{sourceFiles:E})}if(["knip","deadcode"].includes(g)){let E=await this.discoverSourceFiles(u,Pf.SOURCE_EXTENSIONS);return new Pf.KnipLens(this.executor,{sourceFiles:E})}if(["test","jest"].includes(g))return p&&(p.includes("node --test")||p.includes("tsx --test"))?(console.log("[QualityLensService] Detected Node.js native test runner (from command)"),this.lenses.get("node-test")||null):p&&p.includes("bun test")?(console.log("[QualityLensService] Detected Bun test runner (from command)"),this.lenses.get("bun-test")||null):await this.checkIfNodeTestRunner(u,p||"test")?(console.log("[QualityLensService] Detected Node.js native test runner (from package.json)"),this.lenses.get("node-test")||null):await this.checkIfBunTestRunner(u,p||"test")?(console.log("[QualityLensService] Detected Bun test runner (from package.json)"),this.lenses.get("bun-test")||null):this.lenses.get("jest")||null;if(g==="node-test")return this.lenses.get("node-test")||null;if(["bun-test","bun"].includes(g))return this.lenses.get("bun-test")||null;if(g==="biome-lint"){console.log("[QualityLensService] Using Biome lint lens");let E=await this.discoverSourceFiles(u,Pf.SOURCE_EXTENSIONS),k=new Pf.BiomeLens(this.executor,{sourceFiles:E});return k.setMode("lint"),k}if(g==="biome-format"){console.log("[QualityLensService] Using Biome format lens");let E=await this.discoverSourceFiles(u,Pf.SOURCE_EXTENSIONS),k=new Pf.BiomeLens(this.executor,{sourceFiles:E});return k.setMode("format"),k}return this.lenses.get(g)||null}async executeTool(s){let u=Date.now();if(!s.packageLayer||!s.packageCommand)throw new Error("packageLayer and packageCommand are required. Legacy execution has been removed.");return this.executeWithPackageLayer(s,u)}async executeWithPackageLayer(s,u){let{repoPath:p,packageLayer:g,packageCommand:E}=s;if(!g||!E)throw new Error("packageLayer and packageCommand are required for new execution path");let k=g.packageData.path||"",L=k?`${p}/${k}`:p;if(!E.isLensCommand||!E.lensId)return console.log(`[QualityLensService] Not a lens command, executing directly: ${E.name}`),this.executeNonLensCommand(s,E,L,u);let W=await this.getLensForExecution(E.lensId,L,E.command);if(!W)return console.warn(`[QualityLensService] No lens registered for: ${E.lensId}`),this.executeNonLensCommand(s,E,L,u);console.log(`[QualityLensService] Using ${W.name} for command: ${E.name} (lensId: ${E.lensId})`);try{let{command:H,args:Y}=this.parseCommandString(E.command);W.configure({cwd:L,tool:{name:E.lensId,command:H,args:Y,cwd:L,available:!0}});let ue=await W.run(),{success:U,exitCode:Oe}=this.determineLensSuccess(ue);return{success:U,toolName:E.lensId,command:E.command,packagePath:k,exitCode:Oe,duration:Date.now()-u,stdout:ue.raw?.stdout||"",stderr:ue.raw?.stderr||ue.error?.message||"",lensResult:ue,qualityContext:{lensId:E.lensId,operation:E.lensOperation,availableLenses:g.qualityMetrics?.availableLenses,missingLenses:g.qualityMetrics?.missingLenses}}}catch(H){console.error("[QualityLensService] Error:",H);let Y=H instanceof Error?H:new Error(String(H));return this.createErrorResponse(E.lensId||E.name,E.command,k,Y,u)}}async executeNonLensCommand(s,u,p,g){let{command:E,args:k}=this.parseCommandString(u.command);try{let L=await this.executor.execute(E,k,{cwd:p});return{success:L.exitCode===0,toolName:u.name,command:u.command,packagePath:s.packageLayer?.packageData.path,exitCode:L.exitCode,duration:Date.now()-g,stdout:L.stdout,stderr:L.stderr}}catch(L){let W=L instanceof Error?L:new Error(String(L));return this.createErrorResponse(u.name,u.command,s.packageLayer?.packageData.path,W,g)}}parseCommandString(s){if(s.startsWith("npm run "))return{command:"npm",args:["run",...s.split(" ").slice(2)]};if(s.startsWith("yarn "))return{command:"yarn",args:s.split(" ").slice(1)};if(s.startsWith("pnpm "))return{command:"pnpm",args:s.split(" ").slice(1)};let u=s.split(" ");return{command:u[0]||"",args:u.slice(1)}}determineLensSuccess(s){let u=0;return s.raw?.exitCode!==void 0?u=s.raw.exitCode:(s.error||s.metrics?.issuesBySeverity?.error&&s.metrics.issuesBySeverity.error>0)&&(u=1),{success:u!==127,exitCode:u}}createErrorResponse(s,u,p,g,E){return{success:!1,toolName:s,command:u,packagePath:p,exitCode:1,duration:Date.now()-E,stdout:"",stderr:g.message||"Tool execution failed",error:g.message}}getAvailableLenses(){return Array.from(this.lenses.keys())}hasLensForTool(s){return this.lenses.has(s.toLowerCase())}};Mue();var Rue=class{constructor(){this.fileCountsByPackage=new Map}setFileTree(s){this.fileTree=s,this.calculateFileCountsPerPackage()}calculateFileCountsPerPackage(){if(!this.fileTree)return;this.fileCountsByPackage.clear();let s=new Set(["ts","tsx","js","jsx","mts","mjs","cts","cjs",".ts",".tsx",".js",".jsx",".mts",".mjs",".cts",".cjs"]);for(let u of this.fileTree.allFiles){let p=u.extension||"";if(!s.has(p)&&!s.has(p.replace(/^\./,"")))continue;let g=u.relativePath;if(g.includes(".test.")||g.includes(".spec.")||g.includes("__tests__")||g.includes("__mocks__")||g.endsWith(".config.ts")||g.endsWith(".config.js"))continue;let E=this.fileCountsByPackage.get("")||0;this.fileCountsByPackage.set("",E+1);let k=g.split("/"),L="";for(let W=0;W<k.length-1;W++){let H=k[W]??"";L=L?`${L}/${H}`:H;let Y=this.fileCountsByPackage.get(L)||0;this.fileCountsByPackage.set(L,Y+1)}}}getFileCountForPackage(s){return this.fileCountsByPackage.get(s||"")||0}mapLensToHexagonDimension(s){let u={tests:"tests","dead-code":"deadCode",formatting:"formatting",linting:"linting",types:"types",documentation:"documentation",security:"linting",complexity:"linting"},p=UR(s.toLowerCase());return p&&p in u?u[p]:{test:"tests",deadcode:"deadCode",format:"formatting",lint:"linting",typecheck:"types",tsc:"types",docs:"documentation"}[s.toLowerCase()]||null}getIssuePath(s){return s.file}findOwningPackage(s,u){let p,g=0;for(let E of u)E.path&&(s.startsWith(E.path+"/")||s===E.path)&&E.path.length>g&&(g=E.path.length,p=E);return p}distributeIssuesToPackages(s){let u=s.filter(L=>!!(L.packagePath&&L.packagePath!=="")).map(L=>({name:L.package,path:L.packagePath})).filter((L,W,H)=>H.findIndex(Y=>Y.path===L.path)===W);if(u.length===0)return s;let p=new Map,g=new Map,E=[];for(let L of s){if(L.packagePath&&L.packagePath!==""){E.push(L);continue}let W=L.result?.lensResult?.issues,H=L.result?.lensResult?.fileMetrics,Y=[];if(H&&H.length>0)for(let U of H){let Oe=this.findOwningPackage(U.file,u);if(Oe){let ye=Oe.path,ve=g.get(ye);ve||(ve=new Map,g.set(ye,ve));let Ge=ve.get(L.lens);Ge||(Ge=[],ve.set(L.lens,Ge)),Ge.push(U)}else Y.push(U)}if(!W||W.length===0){if(L.result?.lensResult&&H&&H.length>0){let U={...L,result:{...L.result,lensResult:{...L.result.lensResult,fileMetrics:Y.length>0?Y:void 0}}};E.push(U)}else E.push(L);continue}let ue=[];for(let U of W){let Oe=this.getIssuePath(U);if(!Oe){ue.push(U);continue}let ye=this.findOwningPackage(Oe,u);if(ye){let ve=ye.path,Ge=p.get(ve);Ge||(Ge=new Map,p.set(ve,Ge));let lt=Ge.get(L.lens);lt||(lt=[],Ge.set(L.lens,lt));let Bt=Oe.slice(ye.path.length+1),Vt={...U,file:Bt,originalPath:Oe};lt.push(Vt)}else ue.push(U)}if(L.result?.lensResult){let U={...L,result:{...L.result,lensResult:{...L.result.lensResult,issues:ue,metrics:this.recalculateMetricsFromIssues(L.result.lensResult.metrics,ue),fileMetrics:Y.length>0?Y:void 0}}};E.push(U)}else E.push(L)}for(let[L,W]of p){let H=u.find(Y=>Y.path===L);if(H)for(let[Y,ue]of W){let U=g.get(L)?.get(Y),Oe=E.findIndex(ye=>ye.packagePath===L&&ye.lens===Y);if(Oe>=0){let ye=E[Oe];if(ye?.result?.lensResult){let Ge=[...ye.result.lensResult.issues||[],...ue],lt=ye.result.lensResult.fileMetrics||[],Bt=U?[...lt,...U]:lt;E[Oe]={...ye,result:{...ye.result,lensResult:{...ye.result.lensResult,issues:Ge,metrics:this.recalculateMetricsFromIssues(ye.result.lensResult.metrics,Ge),fileMetrics:Bt.length>0?Bt:void 0}}}}}else{let ye=s.find(Ge=>Ge.lens===Y&&(!Ge.packagePath||Ge.packagePath==="")),ve={lensName:Y,tool:Y,timestamp:Date.now(),success:!0,issues:ue,metrics:this.createMetricsFromIssues(ue),fileMetrics:U};E.push({package:H.name,packagePath:H.path,lens:Y,command:ye?.command||Y,timestamp:ye?.timestamp||Date.now(),result:{success:!0,toolName:Y,command:ye?.command||Y,packagePath:H.path,exitCode:ue.length>0?1:0,duration:0,stdout:"",stderr:"",lensResult:ve}})}}}let k=s.filter(L=>(!L.packagePath||L.packagePath==="")&&L.result?.success);for(let L of k)for(let W of u){if(E.some(Oe=>Oe.packagePath===W.path&&Oe.lens===L.lens))continue;let Y=this.getFileCountForPackage(W.path);if(Y===0)continue;let ue=g.get(W.path)?.get(L.lens),U={lensName:L.lens,tool:L.lens,timestamp:Date.now(),success:!0,issues:[],metrics:{filesAnalyzed:Y,totalIssues:0,issuesBySeverity:{error:0,warning:0,info:0,hint:0},executionTime:0},qualityScore:100,fileMetrics:ue};E.push({package:W.name,packagePath:W.path,lens:L.lens,command:L.command,timestamp:L.timestamp,result:{success:!0,toolName:L.lens,command:L.command,packagePath:W.path,exitCode:0,duration:0,stdout:"",stderr:"",lensResult:U}})}return E}createMetricsFromIssues(s){let u={error:0,warning:0,info:0,hint:0};for(let g of s){let E=g.severity?.toLowerCase()||"warning";E in u&&u[E]++}return{filesAnalyzed:new Set(s.map(g=>this.getIssuePath(g)).filter(Boolean)).size||1,totalIssues:s.length,issuesBySeverity:u,executionTime:0}}recalculateMetricsFromIssues(s,u){let p=this.createMetricsFromIssues(u);return s?.custom&&(p.custom=s.custom),s?.executionTime&&(p.executionTime=s.executionTime),p}extractQualityScore(s){if(s.result?.lensResult?.qualityScore!==void 0&&s.result.lensResult.qualityScore!==null&&s.result.lensResult.qualityScore>0)return s.result.lensResult.qualityScore;if(!s.result?.success)return 0;let u=s.result?.lensResult?.metrics,p=s.result?.exitCode??0,g=this.mapLensToHexagonDimension(s.lens);if(g==="tests"){let ue=u?.custom;if(ue?.passRate!==void 0&&ue.passRate!==null)return Math.round(ue.passRate);if(p!==0&&(ue?.failedSuites&&ue.failedSuites>0||ue?.totalTests===0))return 0}if(g==="types"&&p===2&&(u?.filesAnalyzed??0)===0)return 0;let E=s.result?.lensResult?.issues||[];if(E.length===0&&p!==0&&(u?.filesAnalyzed??0)===0)return 0;if(E.length===0)return 100;let k=new Set(E.map(ue=>ue.file)).size,L=s.packagePath||"",W=this.getFileCountForPackage(L);if(W===0){let ue=s.result?.lensResult?.metrics?.filesAnalyzed||1,U=Math.max(0,ue-k);return Math.round(U/ue*100)}let H=Math.max(0,W-k);return Math.round(H/W*100)}calculateHexagonMetrics(s){let u={tests:0,deadCode:0,formatting:0,linting:0,types:0,documentation:0};for(let p of s){let g=this.mapLensToHexagonDimension(p.lens);if(g){let E=this.extractQualityScore(p);g==="deadCode"&&(E=100-E),g==="deadCode"?u[g]=u[g]===0?E:Math.min(u[g],E):u[g]=Math.max(u[g],E)}}return u}getGitMetadata(){let s={};if(process.env.GITHUB_SHA&&(s.commit=process.env.GITHUB_SHA),process.env.GITHUB_REF){let u=process.env.GITHUB_REF;u.startsWith("refs/heads/")?s.branch=u.replace("refs/heads/",""):u.startsWith("refs/pull/")&&(s.branch=u)}if(process.env.GITHUB_REPOSITORY&&(s.repository=process.env.GITHUB_REPOSITORY),Object.keys(s).length!==0)return s}calculatePerPackageMetrics(s){let u=new Map;for(let g of s){let E=u.get(g.package);E?(E.results.push(g),E.lenses.add(g.lens)):u.set(g.package,{path:g.packagePath,results:[g],lenses:new Set([g.lens])})}let p=[];for(let[g,{path:E,results:k,lenses:L}]of u)p.push({name:g,path:E,hexagon:this.calculateHexagonMetrics(k),lensesRan:Array.from(L)});return p}format(s,u,p){let g=this.getGitMetadata(),E=this.distributeIssuesToPackages(s),k=this.calculatePerPackageMetrics(E);if(p){let W=k.find(H=>H.name===p);W&&(W.isOrchestrator=!0)}if(u&&u.length>0)for(let W of u)k.push({name:W.name,path:W.path,hexagon:{tests:0,deadCode:0,linting:0,formatting:0,types:0,documentation:0},lensesRan:[]});let L={metadata:{timestamp:new Date().toISOString(),version:"1.0.0",totalPackages:k.length,totalLenses:E.length,...g&&{git:g}},results:E.map(W=>({package:{name:W.package,path:W.packagePath},lens:{id:W.lens,command:W.command},execution:{success:W.result?.success??!1,exitCode:W.result?.exitCode,duration:W.result?.duration,timestamp:W.timestamp},issues:W.result?.lensResult?.issues||[],metrics:W.result?.lensResult?.metrics||{},coverage:W.result?.lensResult?.coverage,fileMetrics:W.result?.lensResult?.fileMetrics,qualityContext:W.result?.qualityContext||{},error:W.error}))};return k.length>0&&(L.qualityMetrics={packages:k}),JSON.stringify(L,null,2)}};var N0t=(l=0)=>s=>`\x1B[${s+l}m`,O0t=(l=0)=>s=>`\x1B[${38+l};5;${s}m`,L0t=(l=0)=>(s,u,p)=>`\x1B[${38+l};2;${s};${u};${p}m`,od={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},jWr=Object.keys(od.modifier),R1r=Object.keys(od.color),B1r=Object.keys(od.bgColor),qWr=[...R1r,...B1r];function j1r(){let l=new Map;for(let[s,u]of Object.entries(od)){for(let[p,g]of Object.entries(u))od[p]={open:`\x1B[${g[0]}m`,close:`\x1B[${g[1]}m`},u[p]=od[p],l.set(g[0],g[1]);Object.defineProperty(od,s,{value:u,enumerable:!1})}return Object.defineProperty(od,"codes",{value:l,enumerable:!1}),od.color.close="\x1B[39m",od.bgColor.close="\x1B[49m",od.color.ansi=N0t(),od.color.ansi256=O0t(),od.color.ansi16m=L0t(),od.bgColor.ansi=N0t(10),od.bgColor.ansi256=O0t(10),od.bgColor.ansi16m=L0t(10),Object.defineProperties(od,{rgbToAnsi256:{value(s,u,p){return s===u&&u===p?s<8?16:s>248?231:Math.round((s-8)/247*24)+232:16+36*Math.round(s/255*5)+6*Math.round(u/255*5)+Math.round(p/255*5)},enumerable:!1},hexToRgb:{value(s){let u=/[a-f\d]{6}|[a-f\d]{3}/i.exec(s.toString(16));if(!u)return[0,0,0];let[p]=u;p.length===3&&(p=[...p].map(E=>E+E).join(""));let g=Number.parseInt(p,16);return[g>>16&255,g>>8&255,g&255]},enumerable:!1},hexToAnsi256:{value:s=>od.rgbToAnsi256(...od.hexToRgb(s)),enumerable:!1},ansi256ToAnsi:{value(s){if(s<8)return 30+s;if(s<16)return 90+(s-8);let u,p,g;if(s>=232)u=((s-232)*10+8)/255,p=u,g=u;else{s-=16;let L=s%36;u=Math.floor(s/36)/5,p=Math.floor(L/6)/5,g=L%6/5}let E=Math.max(u,p,g)*2;if(E===0)return 30;let k=30+(Math.round(g)<<2|Math.round(p)<<1|Math.round(u));return E===2&&(k+=60),k},enumerable:!1},rgbToAnsi:{value:(s,u,p)=>od.ansi256ToAnsi(od.rgbToAnsi256(s,u,p)),enumerable:!1},hexToAnsi:{value:s=>od.ansi256ToAnsi(od.hexToAnsi256(s)),enumerable:!1}}),od}var q1r=j1r(),AE=q1r;var jue=cp(require("node:process"),1),R0t=cp(require("node:os"),1),Ewe=cp(require("node:tty"),1);function MC(l,s=globalThis.Deno?globalThis.Deno.args:jue.default.argv){let u=l.startsWith("-")?"":l.length===1?"-":"--",p=s.indexOf(u+l),g=s.indexOf("--");return p!==-1&&(g===-1||p<g)}var{env:cd}=jue.default,Bue;MC("no-color")||MC("no-colors")||MC("color=false")||MC("color=never")?Bue=0:(MC("color")||MC("colors")||MC("color=true")||MC("color=always"))&&(Bue=1);function J1r(){if("FORCE_COLOR"in cd)return cd.FORCE_COLOR==="true"?1:cd.FORCE_COLOR==="false"?0:cd.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(cd.FORCE_COLOR,10),3)}function U1r(l){return l===0?!1:{level:l,hasBasic:!0,has256:l>=2,has16m:l>=3}}function W1r(l,{streamIsTTY:s,sniffFlags:u=!0}={}){let p=J1r();p!==void 0&&(Bue=p);let g=u?Bue:p;if(g===0)return 0;if(u){if(MC("color=16m")||MC("color=full")||MC("color=truecolor"))return 3;if(MC("color=256"))return 2}if("TF_BUILD"in cd&&"AGENT_NAME"in cd)return 1;if(l&&!s&&g===void 0)return 0;let E=g||0;if(cd.TERM==="dumb")return E;if(jue.default.platform==="win32"){let k=R0t.default.release().split(".");return Number(k[0])>=10&&Number(k[2])>=10586?Number(k[2])>=14931?3:2:1}if("CI"in cd)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(k=>k in cd)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(k=>k in cd)||cd.CI_NAME==="codeship"?1:E;if("TEAMCITY_VERSION"in cd)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(cd.TEAMCITY_VERSION)?1:0;if(cd.COLORTERM==="truecolor"||cd.TERM==="xterm-kitty"||cd.TERM==="xterm-ghostty"||cd.TERM==="wezterm")return 3;if("TERM_PROGRAM"in cd){let k=Number.parseInt((cd.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(cd.TERM_PROGRAM){case"iTerm.app":return k>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(cd.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(cd.TERM)||"COLORTERM"in cd?1:E}function M0t(l,s={}){let u=W1r(l,{streamIsTTY:l&&l.isTTY,...s});return U1r(u)}var z1r={stdout:M0t({isTTY:Ewe.default.isatty(1)}),stderr:M0t({isTTY:Ewe.default.isatty(2)})},B0t=z1r;function j0t(l,s,u){let p=l.indexOf(s);if(p===-1)return l;let g=s.length,E=0,k="";do k+=l.slice(E,p)+s+u,E=p+g,p=l.indexOf(s,E);while(p!==-1);return k+=l.slice(E),k}function q0t(l,s,u,p){let g=0,E="";do{let k=l[p-1]==="\r";E+=l.slice(g,k?p-1:p)+s+(k?`\r
|
|
1137
|
+
`);(0,bgt.parsePipRequirementsFile)(Vt).forEach(Lr=>{if(Lr.type==="ProjectName"&&Lr.name){let Fr="*";Lr.versionSpec&&Lr.versionSpec.length>0&&(Fr=Lr.versionSpec[0].version||"*"),H[Lr.name]=Fr}})}catch(Vt){console.warn("Failed to parse PEP 621 dependencies with pip-requirements-js, falling back to simple parsing:",Vt),k.dependencies.forEach(Nr=>{let Lr=Nr.trim(),Fr=Lr.indexOf(" ");Fr>0?H[Lr.substring(0,Fr)]="*":H[Lr]="*"})}let ue=this.detectPythonPackageManager(s),U=E?.description||k?.description,Oe;E?.license?Oe=E.license:k?.license&&(Oe=typeof k.license=="string"?k.license:k.license.text);let ye,ve;E?.authors&&E.authors.length>0?(ye=E.authors,ve=E.authors[0]):k?.authors&&k.authors.length>0&&(ye=k.authors.map(Vt=>Vt.name&&Vt.email?`${Vt.name} <${Vt.email}>`:Vt.name||Vt.email||"").filter(Boolean),ve=ye[0]);let Ge,lt;E?(Ge=E.repository,lt=E.homepage):k?.urls&&(Ge=k.urls.repository||k.urls.Repository||k.urls.source||k.urls.Source,lt=k.urls.homepage||k.urls.Homepage||k.urls.home||k.urls.Home);let Bt=E?.keywords||k?.keywords;return{name:L,version:W,path:p,manifestPath:u,packageManager:ue,dependencies:H,devDependencies:Y,peerDependencies:{},description:U,license:Oe,author:ve,authors:ye,repository:Ge,homepage:lt,keywords:Bt,isMonorepoRoot:!1,isWorkspace:!1,parentPackage:void 0,availableCommands:[]}}detectWorkspaces(s){return null}detectPackageManager(s,u){return this.detectPythonPackageManager(s)}detectPythonPackageManager(s){return s.tool?.poetry?"poetry":"pip"}detectDocsFolder(s,u,p){return new NR().detectDocsFolder(s,u,{})}detectConfigs(s,u,p){let g={},E={ruff:["ruff.toml",".ruff.toml"],mypy:["mypy.ini",".mypy.ini"],pytest:["pytest.ini","conftest.py"],black:[".black","black.toml"],isort:[".isort.cfg","isort.cfg"],flake8:[".flake8","flake8.ini"],pylint:[".pylintrc","pylintrc","pylint.toml"],coverage:[".coveragerc","coverage.ini"],precommit:[".pre-commit-config.yaml",".pre-commit-config.yml"],dockerfile:["Dockerfile","dockerfile","Dockerfile.dev","Dockerfile.prod"],gitignore:[".gitignore"],editorconfig:[".editorconfig"]},k=["mypy","pytest","flake8","isort","coverage"],L=s==="."||s===""?"":s.endsWith("/")?s:s+"/";if(u.allFiles){for(let[Y,ue]of Object.entries(E))for(let U of ue){let Oe=L+U;if(u.allFiles.some(ve=>ve.path===Oe||ve.relativePath===Oe)){g[Y]={path:Oe,exists:!0,type:this.getConfigFileType(U)};break}}let W=L+"setup.cfg";if(u.allFiles.some(Y=>Y.path===W||Y.relativePath===W))for(let Y of k)g[Y]||(g[Y]={path:W,exists:!0,type:"ini",isInline:!0,inlineField:`tool:${Y}`})}if(p?.tool){let W=L+"pyproject.toml";p.tool.ruff&&!g.ruff&&(g.ruff={path:W,exists:!0,type:"toml",isInline:!0,inlineField:"tool.ruff"}),p.tool.mypy&&!g.mypy&&(g.mypy={path:W,exists:!0,type:"toml",isInline:!0,inlineField:"tool.mypy"}),p.tool.pytest&&!g.pytest&&(g.pytest={path:W,exists:!0,type:"toml",isInline:!0,inlineField:"tool.pytest"}),p.tool.black&&!g.black&&(g.black={path:W,exists:!0,type:"toml",isInline:!0,inlineField:"tool.black"}),p.tool.isort&&!g.isort&&(g.isort={path:W,exists:!0,type:"toml",isInline:!0,inlineField:"tool.isort"}),p.tool.pylint&&!g.pylint&&(g.pylint={path:W,exists:!0,type:"toml",isInline:!0,inlineField:"tool.pylint"}),p.tool.coverage&&!g.coverage&&(g.coverage={path:W,exists:!0,type:"toml",isInline:!0,inlineField:"tool.coverage"})}return g}getConfigFileType(s){return s.endsWith(".json")||s.endsWith(".jsonc")?"json":s.endsWith(".yml")||s.endsWith(".yaml")?"yaml":s.endsWith(".toml")?"toml":s.endsWith(".ini")||s.endsWith(".cfg")?"ini":s.endsWith(".py")?"custom":s.startsWith(".")&&!s.includes(".")?"ini":"custom"}},L4e=class{manifestFileName="Cargo.toml";packageType="cargo";canParse(s){return s.endsWith("Cargo.toml")}parseContent(s){try{return B3e(s)}catch{return null}}extractPackageData(s,u){let p=s.package;if(!p)return null;let g;u==="Cargo.toml"?g="":u.endsWith("/Cargo.toml")?g=u.slice(0,-11):g=u;let E={},k={};s.dependencies&&Object.entries(s.dependencies).forEach(([H,Y])=>{E[H]=typeof Y=="string"?Y:JSON.stringify(Y)}),s["dev-dependencies"]&&Object.entries(s["dev-dependencies"]).forEach(([H,Y])=>{k[H]=typeof Y=="string"?Y:JSON.stringify(Y)});let L=p.authors?.[0],W=p.homepage||p.documentation;return{name:p.name||"unnamed",version:p.version,path:g,manifestPath:u,packageManager:"cargo",dependencies:E,devDependencies:k,peerDependencies:{},description:p.description,license:p.license,author:L,authors:p.authors,repository:p.repository,homepage:W,keywords:p.keywords,isMonorepoRoot:!!s.workspace,isWorkspace:!1,parentPackage:void 0,availableCommands:[]}}detectWorkspaces(s){return s.workspace?.members||null}detectPackageManager(){return"cargo"}detectDocsFolder(s,u,p){return new NR().detectDocsFolder(s,u,{})}},OR=class{parsers=[new NR,new O4e,new L4e];async discoverPackages(s,u){let p=[];if(!s.allFiles)return p;let g=s.allFiles.filter(H=>H.path?this.parsers.some(Y=>Y.canParse(H.path)):!1),E=s.allFiles.map(H=>H.path).filter(Boolean);for(let H of g){if(!H.path)continue;let Y=this.parsers.find(vr=>vr.canParse(H.path));if(!Y)continue;let ue=null;if(u)try{let vr=await u(H.path);vr&&(ue=Y.parseContent(vr))}catch(vr){console.warn(`Could not read or parse ${H.path}:`,vr);continue}else{let vr=H.path.split("/").slice(-2,-1)[0]||"unnamed";ue=this.createMinimalManifest(Y.packageType,vr)}if(!ue)continue;let U=Y.extractPackageData(ue,H.path);if(!U){console.warn(`[PackageLayerModule] extractPackageData returned null for ${H.path}`,{content:ue,parser:Y.packageType});continue}let Oe=H.path.substring(0,H.path.lastIndexOf("/")),ye=E.filter(vr=>vr.startsWith(Oe)&&this.isLockFile(vr));U.packageManager=Y.detectPackageManager(ue,ye),Y.packageType==="node"&&U.availableCommands&&U.packageManager&&U.packageManager!=="unknown"&&U.packageManager!=="npm"&&(U.availableCommands=U.availableCommands.map(vr=>{if(vr.command.includes("npm ")){let Ci=vr.command;return U.packageManager==="yarn"?Ci=Ci.replace("npm run","yarn").replace("npm install","yarn install").replace("npm ci","yarn install --frozen-lockfile").replace("npm update","yarn upgrade"):U.packageManager==="pnpm"&&(Ci=Ci.replace("npm","pnpm")),{...vr,command:Ci}}return vr}));let ve={id:`package-manifest-${U.path}`,name:Y.manifestFileName,patterns:[{type:"exact",pattern:H.path,description:`${Y.packageType} package manifest`}],matchedFiles:[H.path],fileCount:1},Ge;Y.detectConfigs&&(Ge=Y.detectConfigs(U.path,s,ue));let lt;Y.detectDocsFolder&&(lt=Y.detectDocsFolder(U.path,s,ue));let Bt=U.availableCommands?HN.calculateQualityProfile(U.availableCommands):void 0,Vt={name:U.name,ecosystem:HF(Y.packageType),path:U.path,dependencies:U.dependencies,devDependencies:U.devDependencies,commands:U.availableCommands||[],packageManager:U.packageManager,manifestContent:ue},Nr=HN.calculateLensReadiness(Y.packageType,Vt,Ge||{}),Lr=Bt?{...Bt,lensReadiness:Nr}:{hexagon:{},availableLenses:[],missingLenses:[],lensReadiness:Nr},Fr={id:`package-${Y.packageType}-${U.path.replace(/[^a-zA-Z0-9-]/g,"-")}`,name:U.name,type:Y.packageType,enabled:!0,derivedFrom:{fileSets:[ve],derivationType:"content",description:`${Y.packageType} package defined in ${Y.manifestFileName}`,contentExtraction:{method:"parse",parser:{format:Y.manifestFileName.endsWith(".json")?"json":"toml",paths:Y.packageType==="node"?[""]:Y.packageType==="python"?["tool.poetry","project"]:["package"]}}},packageData:U,configFiles:Ge,docsFolder:lt,qualityMetrics:Lr,pillar:"foundationHealth"};p.push(Fr)}this.resolveWorkspaceRelationships(p);let k=p.find(H=>H.packageData.path===""||H.packageData.path==="."),{orchestrator:L}=this.detectMonorepoOrchestrator(E),W=k?.packageData.isMonorepoRoot||L!=="none";if(k&&W){L!=="none"&&!k.packageData.isMonorepoRoot&&(k.packageData.isMonorepoRoot=!0);let H=g.find(U=>U.path==="package.json"||U.path==="./package.json"),Y;if(H&&u)try{let U=await u(H.path),Oe=JSON.parse(U);Y=new NR().detectWorkspaces(Oe)||void 0}catch{}let ue=await this.buildMonorepoMetadata(E,Y,u,k.configFiles);ue&&(k.packageData.monorepoMetadata=ue)}return this.propagateRootConfigs(p,k),this.recalculateLensReadinessWithInheritance(p,k),p}createPackageLayersFromBoundaries(s){return s.map(u=>{let p={id:`package-manifest-${u.rootPath||"root"}`,name:"package.json",patterns:[{type:"exact",pattern:u.packageJsonPath,description:"Node.js package manifest"}],matchedFiles:[u.packageJsonPath],fileCount:1},g={name:u.packageData?.name||u.name,version:u.packageData?.version,path:u.rootPath||".",manifestPath:u.packageJsonPath,packageManager:"unknown",dependencies:{},devDependencies:{},peerDependencies:{},isMonorepoRoot:!!u.packageData?.workspaces,isWorkspace:!u.isRoot&&s.length>1,parentPackage:u.isRoot?void 0:"root"};return{id:`package-node-${u.id}`,name:g.name,type:"node",enabled:!0,derivedFrom:{fileSets:[p],derivationType:"content",description:"Node.js package defined in package.json"},packageData:g,pillar:"foundationHealth"}})}isLockFile(s){return["package-lock.json","yarn.lock","pnpm-lock.yaml","bun.lockb","bun.lock","poetry.lock","Pipfile.lock","Cargo.lock"].some(p=>s.endsWith(p))}resolveWorkspaceRelationships(s){let u=s.filter(p=>p.packageData.path==="."||p.packageData.path==="");s.forEach(p=>{if(p.packageData.path!=="."&&p.packageData.path!==""){p.packageData.isWorkspace=!0;let g=p.packageData.path.includes("/")?p.packageData.path.substring(0,p.packageData.path.lastIndexOf("/")):".",E=s.find(k=>k.packageData.path===g);E&&(p.packageData.parentPackage=E.packageData.name)}})}createMinimalManifest(s,u){switch(s){case"node":return{name:u,version:"0.0.0",dependencies:{},devDependencies:{}};case"python":return{project:{name:u,version:"0.0.0"}};case"cargo":return{package:{name:u,version:"0.0.0"}};default:return{}}}detectMonorepoOrchestrator(s){return s.includes("turbo.json")?{orchestrator:"turbo",configPath:"turbo.json"}:s.includes("nx.json")?{orchestrator:"nx",configPath:"nx.json"}:s.includes("lerna.json")?{orchestrator:"lerna",configPath:"lerna.json"}:s.includes("pnpm-workspace.yaml")?{orchestrator:"pnpm",configPath:"pnpm-workspace.yaml"}:s.includes("rush.json")?{orchestrator:"rush",configPath:"rush.json"}:{orchestrator:"none"}}parseTurboConfig(s){try{let u=JSON.parse(s),p=[],g=u.tasks||u.pipeline||{};for(let[E,k]of Object.entries(g)){let L=E.split("#"),W=L.length>1?E:void 0,H=L.length>1?L[1]:E,Y=this.inferToolFromTaskName(H);p.push({name:H,tool:Y,filter:W})}return p}catch{return[]}}parseNxConfig(s){try{let u=JSON.parse(s),p=[];if(u.targetDefaults)for(let[g,E]of Object.entries(u.targetDefaults)){let k=this.inferToolFromTaskName(g);p.push({name:g,tool:k})}return p}catch{return[]}}inferToolFromTaskName(s){return{lint:"eslint",typecheck:"typescript","type-check":"typescript",tsc:"typescript",test:"jest",format:"prettier",prettier:"prettier",build:"build",dev:"dev",start:"start",check:"biome"}[s.toLowerCase()]}async buildMonorepoMetadata(s,u,p,g){let{orchestrator:E,configPath:k}=this.detectMonorepoOrchestrator(s);if(E==="none"&&!u)return;let L={orchestrator:E,orchestratorConfigPath:k,workspacePatterns:u};if(k&&p)try{let ue=await p(k);E==="turbo"?L.definedTasks=this.parseTurboConfig(ue):E==="nx"&&(L.definedTasks=this.parseNxConfig(ue))}catch{}if(g){let ue=[];for(let[U,Oe]of Object.entries(g))Oe&&Oe.exists&&ue.push({tool:U,configPath:Oe.path,isInline:Oe.isInline});ue.length>0&&(L.rootConfigs=ue)}let{role:W,hasSourceCode:H,sourceDirs:Y}=this.detectRootRole(s);return L.rootRole=W,L.rootHasSourceCode=H,Y.length>0&&(L.rootSourceDirs=Y),L}detectRootRole(s){let u=["src","lib","app"],p=["scripts","e2e","test","tests","tools","__tests__"],g=[".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".rs",".go"],E=[],k=[];for(let Y of s)if(!(Y.startsWith("packages/")||Y.startsWith("apps/")||Y.startsWith("libs/")||Y.startsWith("node_modules/"))){for(let ue of u)Y.startsWith(`${ue}/`)&&g.some(Oe=>Y.endsWith(Oe))&&!E.includes(ue)&&E.push(ue);for(let ue of p)Y.startsWith(`${ue}/`)&&g.some(Oe=>Y.endsWith(Oe))&&!k.includes(ue)&&k.push(ue)}let L=E.length>0,W=k.length>0,H=[...E,...k];return L?{role:"application",hasSourceCode:!0,sourceDirs:H}:W?{role:"hybrid",hasSourceCode:!0,sourceDirs:H}:{role:"orchestrator",hasSourceCode:!1,sourceDirs:[]}}propagateRootConfigs(s,u){if(!u?.configFiles||!u.packageData.monorepoMetadata)return;let p=u.configFiles;for(let g of s)if(!(g.packageData.path===""||g.packageData.path===".")){g.configFiles||(g.configFiles={});for(let[E,k]of Object.entries(p)){if(!k||!k.exists)continue;let L=g.configFiles[E];(!L||!L.exists)&&(g.configFiles[E]={...k,isInherited:!0,inheritedFrom:"",inheritanceType:"root"})}}}recalculateLensReadinessWithInheritance(s,u){if(!(!u?.configFiles||!u.packageData.monorepoMetadata))for(let p of s){if(p.packageData.path===""||p.packageData.path==="."||!(p.configFiles&&Object.values(p.configFiles).some(L=>L?.isInherited)))continue;let E={name:p.packageData.name,ecosystem:HF(p.type),path:p.packageData.path,dependencies:p.packageData.dependencies,devDependencies:p.packageData.devDependencies,commands:p.packageData.availableCommands||[],packageManager:p.packageData.packageManager},k=HN.calculateLensReadiness(p.type,E,p.configFiles||{});for(let[L,W]of Object.entries(k)){let H=p.qualityMetrics?.lensReadiness?.[L];if(W.ready&&H&&!H.ready){W.readyViaInheritance=!0;let Y=W.checks.filter(ue=>ue.satisfied?p.configFiles?.[L]?.isInherited&&ue.requirement.type==="config":!1).length;Y>0&&(W.inheritedChecks=Y)}}p.qualityMetrics&&(p.qualityMetrics.lensReadiness=k)}}};var Gy=cp(u0t(),1);var v0t=cp(Pue(),1),fw={basename:l=>l.split("/").pop()||"",join:(...l)=>l.filter(u=>u).join("/").replace(/\/+/g,"/"),relative:(l,s)=>!l||l==="."?s:s.startsWith(l+"/")?s.slice(l.length+1):s===l?".":s,dirname:l=>{let s=l.lastIndexOf("/");return s>0?l.slice(0,s):""},extname:l=>{let s=l.lastIndexOf(".");return s>0?l.slice(s):""}},JR=class{adapter;filterStats={totalFiltered:0,filteredByLayer:{},examples:[],filteredByDirectory:{}};constructor(s){this.adapter=s}async buildFileSystemTreeFromPath(s,u,p){console.time("[FilesystemService] Total build time"),this.filterStats={totalFiltered:0,filteredByLayer:{},examples:[],filteredByDirectory:{}};let g=u||[],E=p?.enableInverseFiltering||!1;if(!this.adapter){let Vt={path:s,name:s.split("/").pop()||s,children:[],fileCount:0,totalSize:0,depth:0,relativePath:"."};return{sha:"",root:Vt,allFiles:[],allDirectories:[Vt],stats:{totalFiles:0,totalDirectories:1,totalSize:0,maxDepth:0},metadata:{id:`fs-${Date.now()}`,timestamp:new Date,sourceType:"filesystem",sourceInfo:{path:s}},filterStats:this.filterStats,appliedFilters:g,inverseMatches:E?[]:void 0}}console.time("[FilesystemService] Build file tree");let k=[],L;for(let Vt of g)Vt.enabled&&Vt.filterData?.excludedPatterns&&(k.push(...Vt.filterData.excludedPatterns.map(Nr=>Nr.pattern)),Vt.filterData.sourceDirectory&&(L=Vt.filterData.sourceDirectory));let W=await this.adapter.buildFilteredFileTree(s,k,L),H=W.paths,Y=W.stats,ue=this.createIgnoreInstances(g);for(let Vt of H)this.shouldIncludeFile(Vt,ue,g)||this.filterStats.totalFiltered++;console.timeEnd("[FilesystemService] Build file tree"),console.log(`[FilesystemService] Found ${H.length} paths after filtering`),console.time("[FilesystemService] Convert to tree structure");let{allFiles:U,allDirectories:Oe,rootDir:ye}=await this.convertPathsToTree(H,s,Y);console.timeEnd("[FilesystemService] Convert to tree structure");let ve=[];E&&(ve=await this.findInverseMatches(s,ue,g));let Ge=U.reduce((Vt,Nr)=>Vt+(Nr.size||0),0),lt=Math.max(...Oe.map(Vt=>Vt.depth||0));g.forEach(Vt=>{Vt.enabled&&this.filterStats.filteredByLayer[Vt.id]&&(Vt.filterData.stats||(Vt.filterData.stats={totalFiltered:0,bytesExcluded:0}),Vt.filterData.stats.totalFiltered=this.filterStats.filteredByLayer[Vt.id])});let Bt={sha:"",root:ye||{path:".",name:fw.basename(s)||"root",children:[],fileCount:0,totalSize:0,depth:0,relativePath:"."},allFiles:U,allDirectories:Oe,stats:{totalFiles:U.length,totalDirectories:Oe.length,totalSize:Ge,maxDepth:lt},metadata:{id:`fs-${Date.now()}`,timestamp:new Date,sourceType:"filesystem",sourceInfo:{path:s}},filterStats:this.filterStats,appliedFilters:g,inverseMatches:ve};return console.timeEnd("[FilesystemService] Total build time"),Bt}createIgnoreInstances(s){let u=new Map;for(let p of s){if(!p.enabled||!p.filterData?.excludedPatterns)continue;let g=p.filterData.sourceDirectory||"",E=`${p.id}:${g}`,k=(0,v0t.default)(),L=p.filterData.excludedPatterns.map(W=>W.pattern);k.add(L),u.set(E,{ignore:k,sourceDirectory:g,filterId:p.id,filterName:p.name})}return u}shouldIncludeFile(s,u,p){for(let[,{ignore:g,sourceDirectory:E,filterId:k,filterName:L}]of u){if(E!==""&&!s.startsWith(E+"/")&&s!==E)continue;let W=s;if(E!==""&&s.startsWith(E+"/")&&(W=s.slice(E.length+1)),!(!W||W===".")&&g.ignores(W)){this.filterStats.totalFiltered++,this.filterStats.filteredByLayer[k]=(this.filterStats.filteredByLayer[k]||0)+1;let H=fw.dirname(s)||".";return this.filterStats.filteredByDirectory[H]||(this.filterStats.filteredByDirectory[H]={count:0,reasons:new Set}),this.filterStats.filteredByDirectory[H].count++,this.filterStats.filteredByDirectory[H].reasons.add(L),!1}}return!0}async convertPathsToTree(s,u,p){let g=[],E=[],k=new Map,L=p||new Map;if(!p&&this.adapter&&"getFileStats"in this.adapter){let H=s.map(async Y=>{try{let ue=fw.join(u,Y),U=await this.adapter.getFileStats(ue);U&&L.set(Y,{size:U.size||0,lastModified:U.lastModified||new Date,isDirectory:U.isDirectory||!1})}catch{}});await Promise.all(H)}for(let H of s){let Y=L.get(H);if(Y?.isDirectory||H.endsWith("/")){let U={path:H||".",name:fw.basename(H)||"root",children:[],fileCount:0,totalSize:0,depth:H.split("/").length-1,relativePath:H||"."};E.push(U),k.set(H,U)}else{let U={path:H,name:fw.basename(H),extension:fw.extname(H).toLowerCase(),size:Y?.size||0,lastModified:Y?.lastModified||new Date,isDirectory:!1,relativePath:H};g.push(U)}}let W=k.get(".")||k.get("")||{path:".",name:fw.basename(u)||"root",children:[],fileCount:g.length,totalSize:g.reduce((H,Y)=>H+(Y.size||0),0),depth:0,relativePath:"."};return{allFiles:g,allDirectories:E,rootDir:W}}async findInverseMatches(s,u,p){console.log("[FilesystemService] Running inverse filter analysis...");let g=[];if(!this.adapter)return[];let k=(await this.adapter.buildFilteredFileTree(s)).paths;console.log(`[FilesystemService] Found ${k.length} total paths for inverse analysis`);for(let L of k){let W=[];for(let[,{ignore:H,sourceDirectory:Y,filterName:ue}]of u){if(Y!==""&&!L.startsWith(Y+"/")&&L!==Y)continue;let U=L;Y!==""&&L.startsWith(Y+"/")&&(U=L.slice(Y.length+1)),!(!U||U===".")&&H.ignores(U)&&W.push(ue)}W.length>0&&g.push({path:L,matchedFilters:W})}return console.log(`[FilesystemService] Inverse analysis complete: ${g.length} files matched filters`),g}getFilterStats(){return{...this.filterStats}}getEmptyTree(s){let u={path:".",name:fw.basename(s)||"root",children:[],fileCount:0,totalSize:0,depth:0,relativePath:"."};return{sha:"",root:u,allFiles:[],allDirectories:[u],stats:{totalFiles:0,totalDirectories:1,totalSize:0,maxDepth:0},metadata:{id:`fs-${Date.now()}`,timestamp:new Date,sourceType:"filesystem",sourceInfo:{path:s}},filterStats:this.filterStats,appliedFilters:[],inverseMatches:[]}}};var OC=cp(require("fs/promises"),1),dwe=cp(require("path"),1),D0t=cp(Pue(),1),dG=class{async readFile(s){try{return{content:await OC.readFile(s,"utf-8")}}catch{return null}}async fileExists(s){try{return await OC.access(s),!0}catch{return!1}}async isDirectory(s){try{return(await OC.stat(s)).isDirectory()}catch{return!1}}async readDirectory(s){try{return await OC.readdir(s)}catch{return[]}}async getFileStats(s){try{let u=await OC.stat(s);return{size:u.size,isDirectory:u.isDirectory(),lastModified:u.mtime}}catch{return null}}async buildFilteredFileTree(s,u,p){let g=[],E=new Map,k=u&&u.length>0?(0,D0t.default)().add(u):null,L=async(W,H="")=>{try{let Y=await OC.readdir(W,{withFileTypes:!0});for(let ue of Y){let U=dwe.join(W,ue.name),Oe=H?dwe.join(H,ue.name):ue.name;if(!(k&&k.ignores(Oe))&&!(ue.isDirectory()&&this.shouldSkipDirectory(ue.name)))if(ue.isDirectory()){g.push(Oe+"/");let ye=await OC.stat(U);E.set(Oe+"/",{size:0,isDirectory:!0,lastModified:ye.mtime}),await L(U,Oe)}else{g.push(Oe);let ye=await OC.stat(U);E.set(Oe,{size:ye.size,isDirectory:!1,lastModified:ye.mtime})}}}catch(Y){console.warn(`Error walking directory ${W}:`,Y)}};return await L(s),{paths:g,stats:E}}shouldSkipDirectory(s){return["node_modules",".git","dist","build","coverage",".next",".turbo",".cache","tmp",".vscode",".idea"].includes(s)}};var r1r=cp(Pue(),1);var XT=cp(require("path")),_w=cp(require("fs/promises")),mwe=class{constructor(s){this.basePath=s}async readFile(s){try{let u=XT.isAbsolute(s)?s:XT.join(this.basePath,s);return{content:await _w.readFile(u,"utf-8")}}catch(u){return console.error(`[CLIFileSystemAdapter] Failed to read ${s}:`,u),null}}async fileExists(s){try{let u=XT.isAbsolute(s)?s:XT.join(this.basePath,s);return await _w.access(u),!0}catch{return!1}}async readDirectory(s){try{let u=XT.isAbsolute(s)?s:XT.join(this.basePath,s);return await _w.readdir(u)}catch(u){return console.error(`[CLIFileSystemAdapter] Failed to read directory ${s}:`,u),[]}}async isDirectory(s){try{let u=XT.isAbsolute(s)?s:XT.join(this.basePath,s);return(await _w.stat(u)).isDirectory()}catch{return!1}}buildFilteredFileTree(s,u,p){return Promise.resolve({paths:[]})}},ZN=class{constructor(){this.packageModule=new OR}async extractPackages(s,u){try{let p=new mwe(u),g=async k=>(await p.readFile(k))?.content||"",E=await this.packageModule.discoverPackages(s,g);return console.info(`[RepositoryScanner] Found ${E.length} packages in ${u}`),E}catch(p){return console.error("[RepositoryScanner] Failed to extract packages:",p),[]}}};var Pf=cp(_ue());var hwe=require("child_process"),gwe=require("stream"),Nue=class{constructor(){this.type="node"}async execute(s,u=[],p={}){let g=Date.now();return new Promise(E=>{let k="",L="",H={...p.env||process.env};delete H.NODE_OPTIONS,delete H.TS_NODE_PROJECT,delete H.TS_NODE_TRANSPILE_ONLY;let Y=(0,hwe.spawn)(s,u,{cwd:p.cwd,env:H,shell:!0});Y.stdout&&Y.stdout.on("data",U=>{k+=U.toString()}),Y.stderr&&Y.stderr.on("data",U=>{L+=U.toString()});let ue;p.timeout&&(ue=setTimeout(()=>{Y.kill("SIGTERM")},p.timeout)),Y.on("error",U=>{ue&&clearTimeout(ue),E({stdout:k,stderr:L||U.message,exitCode:1,duration:Date.now()-g,command:s,args:u,error:U})}),Y.on("close",U=>{ue&&clearTimeout(ue),E({stdout:k,stderr:L,exitCode:U??0,duration:Date.now()-g,command:s,args:u})})})}stream(s,u=[],p={}){let E={...p.env||process.env};delete E.NODE_OPTIONS,delete E.TS_NODE_PROJECT,delete E.TS_NODE_TRANSPILE_ONLY;let k=(0,hwe.spawn)(s,u,{cwd:p.cwd,env:E,shell:!0}),L=new Promise(W=>{let H="",Y="",ue=Date.now();k.stdout&&k.stdout.on("data",U=>{H+=U.toString()}),k.stderr&&k.stderr.on("data",U=>{Y+=U.toString()}),k.on("close",U=>{W({stdout:H,stderr:Y,exitCode:U??0,duration:Date.now()-ue,command:s,args:u})}),k.on("error",U=>{W({stdout:H,stderr:Y||U.message,exitCode:1,duration:Date.now()-ue,command:s,args:u,error:U})})});return{stdout:k.stdout||new gwe.Readable({read(){}}),stderr:k.stderr||new gwe.Readable({read(){}}),exitPromise:L,kill:()=>{k.kill("SIGTERM")}}}async isAvailable(s){try{let u=["--version"];return(await this.execute(s,u,{timeout:5e3})).exitCode===0}catch{return!1}}};var Oue=class{constructor(){this.executor=new Nue;let s=new dG;this.filesystemService=new JR(s),this.sourceFilesCache=new Map,this.lenses=new Map,this.initializeLenses()}initializeLenses(){console.log("[QualityLensService] Initializing lenses...");let s=new Pf.ESLintLens(this.executor);this.lenses.set("eslint",s),this.lenses.set("lint",s);let u=new Pf.JestLens(this.executor);this.lenses.set("jest",u),this.lenses.set("test",u);let p=new Pf.BunTestLens(this.executor);this.lenses.set("bun-test",p),this.lenses.set("bun",p);let g=new Pf.VitestLens(this.executor);this.lenses.set("vitest",g);let E=new Pf.NodeTestLens(this.executor);this.lenses.set("node-test",E),this.lenses.set("typescript",null),this.lenses.set("typecheck",null),this.lenses.set("tsc",null),this.lenses.set("knip",null),this.lenses.set("deadcode",null);let k=new Pf.PrettierLens(this.executor);this.lenses.set("prettier",k),this.lenses.set("format",k);let L=new Pf.BiomeLens(this.executor);L.setMode("lint"),this.lenses.set("biome-lint",L),this.lenses.set("biome",L);let W=new Pf.BiomeLens(this.executor);W.setMode("format"),this.lenses.set("biome-format",W);let H=new Pf.GitLens(this.executor);this.lenses.set("git",H);let Y=new Pf.AlexandriaLens(this.executor);this.lenses.set("alexandria",Y),this.lenses.set("docs",Y)}async checkIfBunTestRunner(s,u){try{let p=await import("fs/promises"),E=(await import("path")).join(s,"package.json"),k=await p.readFile(E,"utf-8"),L=JSON.parse(k),W=u.replace(/^(npm|yarn|pnpm)\s+run\s+/,"").split(" ")[0]||"test",H=L.scripts?.[W];return!!(H&&(H.startsWith("bun test")||H.startsWith("bun run test")))}catch{return!1}}async checkIfNodeTestRunner(s,u){try{let p=await import("fs/promises"),E=(await import("path")).join(s,"package.json"),k=await p.readFile(E,"utf-8"),L=JSON.parse(k),W=u.replace(/^(npm|yarn|pnpm)\s+run\s+/,"").split(" ")[0]||"test",H=L.scripts?.[W];return!!(H&&(H.includes("node --test")||H.includes("tsx --test")))}catch{return!1}}async discoverSourceFiles(s,u){let p=`${s}:${Array.from(u).join(",")}`;if(this.sourceFilesCache.has(p))return this.sourceFilesCache.get(p);try{let E=(await this.filesystemService.buildFileSystemTreeFromPath(s)).allFiles.filter(k=>u.has(k.extension)).map(k=>k.relativePath);return this.sourceFilesCache.set(p,E),console.log(`[QualityLensService] Discovered ${E.length} source files in ${s}`),E}catch(g){return console.warn(`[QualityLensService] Failed to discover source files in ${s}:`,g),[]}}async getLensForExecution(s,u,p){let g=s.toLowerCase();if(["typescript","typecheck","tsc"].includes(g)){let E=await this.discoverSourceFiles(u,Pf.TS_SOURCE_EXTENSIONS);return new Pf.TypeScriptLens(this.executor,{sourceFiles:E})}if(["knip","deadcode"].includes(g)){let E=await this.discoverSourceFiles(u,Pf.SOURCE_EXTENSIONS);return new Pf.KnipLens(this.executor,{sourceFiles:E})}if(["test","jest"].includes(g))return p&&(p.includes("node --test")||p.includes("tsx --test"))?(console.log("[QualityLensService] Detected Node.js native test runner (from command)"),this.lenses.get("node-test")||null):p&&p.includes("bun test")?(console.log("[QualityLensService] Detected Bun test runner (from command)"),this.lenses.get("bun-test")||null):await this.checkIfNodeTestRunner(u,p||"test")?(console.log("[QualityLensService] Detected Node.js native test runner (from package.json)"),this.lenses.get("node-test")||null):await this.checkIfBunTestRunner(u,p||"test")?(console.log("[QualityLensService] Detected Bun test runner (from package.json)"),this.lenses.get("bun-test")||null):this.lenses.get("jest")||null;if(g==="node-test")return this.lenses.get("node-test")||null;if(["bun-test","bun"].includes(g))return this.lenses.get("bun-test")||null;if(g==="biome-lint"){console.log("[QualityLensService] Using Biome lint lens");let E=await this.discoverSourceFiles(u,Pf.SOURCE_EXTENSIONS),k=new Pf.BiomeLens(this.executor,{sourceFiles:E});return k.setMode("lint"),k}if(g==="biome-format"){console.log("[QualityLensService] Using Biome format lens");let E=await this.discoverSourceFiles(u,Pf.SOURCE_EXTENSIONS),k=new Pf.BiomeLens(this.executor,{sourceFiles:E});return k.setMode("format"),k}return this.lenses.get(g)||null}async executeTool(s){let u=Date.now();if(!s.packageLayer||!s.packageCommand)throw new Error("packageLayer and packageCommand are required. Legacy execution has been removed.");return this.executeWithPackageLayer(s,u)}async executeWithPackageLayer(s,u){let{repoPath:p,packageLayer:g,packageCommand:E}=s;if(!g||!E)throw new Error("packageLayer and packageCommand are required for new execution path");let k=g.packageData.path||"",L=k?`${p}/${k}`:p;if(!E.isLensCommand||!E.lensId)return console.log(`[QualityLensService] Not a lens command, executing directly: ${E.name}`),this.executeNonLensCommand(s,E,L,u);let W=await this.getLensForExecution(E.lensId,L,E.command);if(!W)return console.warn(`[QualityLensService] No lens registered for: ${E.lensId}`),this.executeNonLensCommand(s,E,L,u);console.log(`[QualityLensService] Using ${W.name} for command: ${E.name} (lensId: ${E.lensId})`);try{let{command:H,args:Y}=this.parseCommandString(E.command);W.configure({cwd:L,tool:{name:E.lensId,command:H,args:Y,cwd:L,available:!0}});let ue=await W.run(),{success:U,exitCode:Oe}=this.determineLensSuccess(ue);return{success:U,toolName:E.lensId,command:E.command,packagePath:k,exitCode:Oe,duration:Date.now()-u,stdout:ue.raw?.stdout||"",stderr:ue.raw?.stderr||ue.error?.message||"",lensResult:ue,qualityContext:{lensId:E.lensId,operation:E.lensOperation,availableLenses:g.qualityMetrics?.availableLenses,missingLenses:g.qualityMetrics?.missingLenses}}}catch(H){console.error("[QualityLensService] Error:",H);let Y=H instanceof Error?H:new Error(String(H));return this.createErrorResponse(E.lensId||E.name,E.command,k,Y,u)}}async executeNonLensCommand(s,u,p,g){let{command:E,args:k}=this.parseCommandString(u.command);try{let L=await this.executor.execute(E,k,{cwd:p});return{success:L.exitCode===0,toolName:u.name,command:u.command,packagePath:s.packageLayer?.packageData.path,exitCode:L.exitCode,duration:Date.now()-g,stdout:L.stdout,stderr:L.stderr}}catch(L){let W=L instanceof Error?L:new Error(String(L));return this.createErrorResponse(u.name,u.command,s.packageLayer?.packageData.path,W,g)}}parseCommandString(s){if(s.startsWith("npm run "))return{command:"npm",args:["run",...s.split(" ").slice(2)]};if(s.startsWith("yarn "))return{command:"yarn",args:s.split(" ").slice(1)};if(s.startsWith("pnpm "))return{command:"pnpm",args:s.split(" ").slice(1)};let u=s.split(" ");return{command:u[0]||"",args:u.slice(1)}}determineLensSuccess(s){let u=0;return s.raw?.exitCode!==void 0?u=s.raw.exitCode:(s.error||s.metrics?.issuesBySeverity?.error&&s.metrics.issuesBySeverity.error>0)&&(u=1),{success:u!==127,exitCode:u}}createErrorResponse(s,u,p,g,E){return{success:!1,toolName:s,command:u,packagePath:p,exitCode:1,duration:Date.now()-E,stdout:"",stderr:g.message||"Tool execution failed",error:g.message}}getAvailableLenses(){return Array.from(this.lenses.keys())}hasLensForTool(s){return this.lenses.has(s.toLowerCase())}};Mue();var Rue=class{constructor(){this.fileCountsByPackage=new Map}setFileTree(s){this.fileTree=s,this.calculateFileCountsPerPackage()}calculateFileCountsPerPackage(){if(!this.fileTree)return;this.fileCountsByPackage.clear();let s=new Set(["ts","tsx","js","jsx","mts","mjs","cts","cjs",".ts",".tsx",".js",".jsx",".mts",".mjs",".cts",".cjs"]);for(let u of this.fileTree.allFiles){let p=u.extension||"";if(!s.has(p)&&!s.has(p.replace(/^\./,"")))continue;let g=u.relativePath;if(g.includes(".test.")||g.includes(".spec.")||g.includes("__tests__")||g.includes("__mocks__")||g.endsWith(".config.ts")||g.endsWith(".config.js"))continue;let E=this.fileCountsByPackage.get("")||0;this.fileCountsByPackage.set("",E+1);let k=g.split("/"),L="";for(let W=0;W<k.length-1;W++){let H=k[W]??"";L=L?`${L}/${H}`:H;let Y=this.fileCountsByPackage.get(L)||0;this.fileCountsByPackage.set(L,Y+1)}}}getFileCountForPackage(s){return this.fileCountsByPackage.get(s||"")||0}mapLensToHexagonDimension(s){let u={tests:"tests","dead-code":"deadCode",formatting:"formatting",linting:"linting",types:"types",documentation:"documentation",security:"linting",complexity:"linting"},p=UR(s.toLowerCase());return p&&p in u?u[p]:{test:"tests",deadcode:"deadCode",format:"formatting",lint:"linting",typecheck:"types",tsc:"types",docs:"documentation"}[s.toLowerCase()]||null}getIssuePath(s){return s.file}findOwningPackage(s,u){let p,g=0;for(let E of u)E.path&&(s.startsWith(E.path+"/")||s===E.path)&&E.path.length>g&&(g=E.path.length,p=E);return p}distributeIssuesToPackages(s){let u=s.filter(L=>!!(L.packagePath&&L.packagePath!=="")).map(L=>({name:L.package,path:L.packagePath})).filter((L,W,H)=>H.findIndex(Y=>Y.path===L.path)===W);if(u.length===0)return s;let p=new Map,g=new Map,E=[];for(let L of s){if(L.packagePath&&L.packagePath!==""){E.push(L);continue}let W=L.result?.lensResult?.issues,H=L.result?.lensResult?.fileMetrics,Y=[];if(H&&H.length>0)for(let U of H){let Oe=this.findOwningPackage(U.file,u);if(Oe){let ye=Oe.path,ve=g.get(ye);ve||(ve=new Map,g.set(ye,ve));let Ge=ve.get(L.lens);Ge||(Ge=[],ve.set(L.lens,Ge)),Ge.push(U)}else Y.push(U)}if(!W||W.length===0){if(L.result?.lensResult&&H&&H.length>0){let U={...L,result:{...L.result,lensResult:{...L.result.lensResult,fileMetrics:Y.length>0?Y:void 0}}};E.push(U)}else E.push(L);continue}let ue=[];for(let U of W){let Oe=this.getIssuePath(U);if(!Oe){ue.push(U);continue}let ye=this.findOwningPackage(Oe,u);if(ye){let ve=ye.path,Ge=p.get(ve);Ge||(Ge=new Map,p.set(ve,Ge));let lt=Ge.get(L.lens);lt||(lt=[],Ge.set(L.lens,lt));let Bt=Oe.slice(ye.path.length+1),Vt={...U,file:Bt,originalPath:Oe};lt.push(Vt)}else ue.push(U)}if(L.result?.lensResult){let U={...L,result:{...L.result,lensResult:{...L.result.lensResult,issues:ue,metrics:this.recalculateMetricsFromIssues(L.result.lensResult.metrics,ue),fileMetrics:Y.length>0?Y:void 0}}};E.push(U)}else E.push(L)}for(let[L,W]of p){let H=u.find(Y=>Y.path===L);if(H)for(let[Y,ue]of W){let U=g.get(L)?.get(Y),Oe=E.findIndex(ye=>ye.packagePath===L&&ye.lens===Y);if(Oe>=0){let ye=E[Oe];if(ye?.result?.lensResult){let Ge=[...ye.result.lensResult.issues||[],...ue],lt=ye.result.lensResult.fileMetrics||[],Bt=U?[...lt,...U]:lt;E[Oe]={...ye,result:{...ye.result,lensResult:{...ye.result.lensResult,issues:Ge,metrics:this.recalculateMetricsFromIssues(ye.result.lensResult.metrics,Ge),fileMetrics:Bt.length>0?Bt:void 0}}}}}else{let ye=s.find(Ge=>Ge.lens===Y&&(!Ge.packagePath||Ge.packagePath==="")),ve={lensName:Y,tool:Y,timestamp:Date.now(),success:!0,issues:ue,metrics:this.createMetricsFromIssues(ue),fileMetrics:U};E.push({package:H.name,packagePath:H.path,lens:Y,command:ye?.command||Y,timestamp:ye?.timestamp||Date.now(),result:{success:!0,toolName:Y,command:ye?.command||Y,packagePath:H.path,exitCode:ue.length>0?1:0,duration:0,stdout:"",stderr:"",lensResult:ve}})}}}let k=s.filter(L=>(!L.packagePath||L.packagePath==="")&&L.result?.success);for(let L of k)for(let W of u){if(E.some(ye=>ye.packagePath===W.path&&ye.lens===L.lens))continue;let Y=this.getFileCountForPackage(W.path);if(Y===0)continue;let ue=g.get(W.path)?.get(L.lens),U=100;if(ue&&ue.length>0){let ye=ue.reduce((ve,Ge)=>ve+Ge.score,0)/ue.length;U=Math.round(ye*100)/100}let Oe={lensName:L.lens,tool:L.lens,timestamp:Date.now(),success:!0,issues:[],metrics:{filesAnalyzed:ue?.length||Y,totalIssues:0,issuesBySeverity:{error:0,warning:0,info:0,hint:0},executionTime:0},qualityScore:U,fileMetrics:ue};E.push({package:W.name,packagePath:W.path,lens:L.lens,command:L.command,timestamp:L.timestamp,result:{success:!0,toolName:L.lens,command:L.command,packagePath:W.path,exitCode:0,duration:0,stdout:"",stderr:"",lensResult:Oe,qualityContext:{qualityScore:U,distributed:!0,sourcePackage:L.package||"@root"}}})}return E}createMetricsFromIssues(s){let u={error:0,warning:0,info:0,hint:0};for(let g of s){let E=g.severity?.toLowerCase()||"warning";E in u&&u[E]++}return{filesAnalyzed:new Set(s.map(g=>this.getIssuePath(g)).filter(Boolean)).size||1,totalIssues:s.length,issuesBySeverity:u,executionTime:0}}recalculateMetricsFromIssues(s,u){let p=this.createMetricsFromIssues(u);return s?.custom&&(p.custom=s.custom),s?.executionTime&&(p.executionTime=s.executionTime),p}extractQualityScore(s){if(s.result?.lensResult?.qualityScore!==void 0&&s.result.lensResult.qualityScore!==null&&s.result.lensResult.qualityScore>0)return s.result.lensResult.qualityScore;if(!s.result?.success)return 0;let u=s.result?.lensResult?.metrics,p=s.result?.exitCode??0,g=this.mapLensToHexagonDimension(s.lens);if(g==="tests"){let ue=u?.custom;if(ue?.passRate!==void 0&&ue.passRate!==null)return Math.round(ue.passRate);if(p!==0&&(ue?.failedSuites&&ue.failedSuites>0||ue?.totalTests===0))return 0}if(g==="types"&&p===2&&(u?.filesAnalyzed??0)===0)return 0;let E=s.result?.lensResult?.issues||[];if(E.length===0&&p!==0&&(u?.filesAnalyzed??0)===0)return 0;if(E.length===0)return 100;let k=new Set(E.map(ue=>ue.file)).size,L=s.packagePath||"",W=this.getFileCountForPackage(L);if(W===0){let ue=s.result?.lensResult?.metrics?.filesAnalyzed||1,U=Math.max(0,ue-k);return Math.round(U/ue*100)}let H=Math.max(0,W-k);return Math.round(H/W*100)}calculateHexagonMetrics(s){let u={tests:0,deadCode:0,formatting:0,linting:0,types:0,documentation:0};for(let p of s){let g=this.mapLensToHexagonDimension(p.lens);if(g){let E=this.extractQualityScore(p);g==="deadCode"&&(E=100-E),g==="deadCode"?u[g]=u[g]===0?E:Math.min(u[g],E):u[g]=Math.max(u[g],E)}}return u}getGitMetadata(){let s={};if(process.env.GITHUB_SHA&&(s.commit=process.env.GITHUB_SHA),process.env.GITHUB_REF){let u=process.env.GITHUB_REF;u.startsWith("refs/heads/")?s.branch=u.replace("refs/heads/",""):u.startsWith("refs/pull/")&&(s.branch=u)}if(process.env.GITHUB_REPOSITORY&&(s.repository=process.env.GITHUB_REPOSITORY),Object.keys(s).length!==0)return s}calculatePerPackageMetrics(s){let u=new Map;for(let g of s){let E=u.get(g.package);E?(E.results.push(g),E.lenses.add(g.lens)):u.set(g.package,{path:g.packagePath,results:[g],lenses:new Set([g.lens])})}let p=[];for(let[g,{path:E,results:k,lenses:L}]of u)p.push({name:g,path:E,hexagon:this.calculateHexagonMetrics(k),lensesRan:Array.from(L)});return p}format(s,u,p){let g=this.getGitMetadata(),E=this.distributeIssuesToPackages(s),k=this.calculatePerPackageMetrics(E);if(p){let W=k.find(H=>H.name===p);W&&(W.isOrchestrator=!0)}if(u&&u.length>0)for(let W of u)k.push({name:W.name,path:W.path,hexagon:{tests:0,deadCode:0,linting:0,formatting:0,types:0,documentation:0},lensesRan:[]});let L={metadata:{timestamp:new Date().toISOString(),version:"1.0.0",totalPackages:k.length,totalLenses:E.length,...g&&{git:g}},results:E.map(W=>({package:{name:W.package,path:W.packagePath},lens:{id:W.lens,command:W.command},execution:{success:W.result?.success??!1,exitCode:W.result?.exitCode,duration:W.result?.duration,timestamp:W.timestamp},issues:W.result?.lensResult?.issues||[],metrics:W.result?.lensResult?.metrics||{},coverage:W.result?.lensResult?.coverage,fileMetrics:W.result?.lensResult?.fileMetrics,qualityContext:W.result?.qualityContext||{},error:W.error}))};return k.length>0&&(L.qualityMetrics={packages:k}),JSON.stringify(L,null,2)}};var N0t=(l=0)=>s=>`\x1B[${s+l}m`,O0t=(l=0)=>s=>`\x1B[${38+l};5;${s}m`,L0t=(l=0)=>(s,u,p)=>`\x1B[${38+l};2;${s};${u};${p}m`,od={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},jWr=Object.keys(od.modifier),R1r=Object.keys(od.color),B1r=Object.keys(od.bgColor),qWr=[...R1r,...B1r];function j1r(){let l=new Map;for(let[s,u]of Object.entries(od)){for(let[p,g]of Object.entries(u))od[p]={open:`\x1B[${g[0]}m`,close:`\x1B[${g[1]}m`},u[p]=od[p],l.set(g[0],g[1]);Object.defineProperty(od,s,{value:u,enumerable:!1})}return Object.defineProperty(od,"codes",{value:l,enumerable:!1}),od.color.close="\x1B[39m",od.bgColor.close="\x1B[49m",od.color.ansi=N0t(),od.color.ansi256=O0t(),od.color.ansi16m=L0t(),od.bgColor.ansi=N0t(10),od.bgColor.ansi256=O0t(10),od.bgColor.ansi16m=L0t(10),Object.defineProperties(od,{rgbToAnsi256:{value(s,u,p){return s===u&&u===p?s<8?16:s>248?231:Math.round((s-8)/247*24)+232:16+36*Math.round(s/255*5)+6*Math.round(u/255*5)+Math.round(p/255*5)},enumerable:!1},hexToRgb:{value(s){let u=/[a-f\d]{6}|[a-f\d]{3}/i.exec(s.toString(16));if(!u)return[0,0,0];let[p]=u;p.length===3&&(p=[...p].map(E=>E+E).join(""));let g=Number.parseInt(p,16);return[g>>16&255,g>>8&255,g&255]},enumerable:!1},hexToAnsi256:{value:s=>od.rgbToAnsi256(...od.hexToRgb(s)),enumerable:!1},ansi256ToAnsi:{value(s){if(s<8)return 30+s;if(s<16)return 90+(s-8);let u,p,g;if(s>=232)u=((s-232)*10+8)/255,p=u,g=u;else{s-=16;let L=s%36;u=Math.floor(s/36)/5,p=Math.floor(L/6)/5,g=L%6/5}let E=Math.max(u,p,g)*2;if(E===0)return 30;let k=30+(Math.round(g)<<2|Math.round(p)<<1|Math.round(u));return E===2&&(k+=60),k},enumerable:!1},rgbToAnsi:{value:(s,u,p)=>od.ansi256ToAnsi(od.rgbToAnsi256(s,u,p)),enumerable:!1},hexToAnsi:{value:s=>od.ansi256ToAnsi(od.hexToAnsi256(s)),enumerable:!1}}),od}var q1r=j1r(),AE=q1r;var jue=cp(require("node:process"),1),R0t=cp(require("node:os"),1),Ewe=cp(require("node:tty"),1);function MC(l,s=globalThis.Deno?globalThis.Deno.args:jue.default.argv){let u=l.startsWith("-")?"":l.length===1?"-":"--",p=s.indexOf(u+l),g=s.indexOf("--");return p!==-1&&(g===-1||p<g)}var{env:cd}=jue.default,Bue;MC("no-color")||MC("no-colors")||MC("color=false")||MC("color=never")?Bue=0:(MC("color")||MC("colors")||MC("color=true")||MC("color=always"))&&(Bue=1);function J1r(){if("FORCE_COLOR"in cd)return cd.FORCE_COLOR==="true"?1:cd.FORCE_COLOR==="false"?0:cd.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(cd.FORCE_COLOR,10),3)}function U1r(l){return l===0?!1:{level:l,hasBasic:!0,has256:l>=2,has16m:l>=3}}function W1r(l,{streamIsTTY:s,sniffFlags:u=!0}={}){let p=J1r();p!==void 0&&(Bue=p);let g=u?Bue:p;if(g===0)return 0;if(u){if(MC("color=16m")||MC("color=full")||MC("color=truecolor"))return 3;if(MC("color=256"))return 2}if("TF_BUILD"in cd&&"AGENT_NAME"in cd)return 1;if(l&&!s&&g===void 0)return 0;let E=g||0;if(cd.TERM==="dumb")return E;if(jue.default.platform==="win32"){let k=R0t.default.release().split(".");return Number(k[0])>=10&&Number(k[2])>=10586?Number(k[2])>=14931?3:2:1}if("CI"in cd)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(k=>k in cd)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(k=>k in cd)||cd.CI_NAME==="codeship"?1:E;if("TEAMCITY_VERSION"in cd)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(cd.TEAMCITY_VERSION)?1:0;if(cd.COLORTERM==="truecolor"||cd.TERM==="xterm-kitty"||cd.TERM==="xterm-ghostty"||cd.TERM==="wezterm")return 3;if("TERM_PROGRAM"in cd){let k=Number.parseInt((cd.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(cd.TERM_PROGRAM){case"iTerm.app":return k>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(cd.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(cd.TERM)||"COLORTERM"in cd?1:E}function M0t(l,s={}){let u=W1r(l,{streamIsTTY:l&&l.isTTY,...s});return U1r(u)}var z1r={stdout:M0t({isTTY:Ewe.default.isatty(1)}),stderr:M0t({isTTY:Ewe.default.isatty(2)})},B0t=z1r;function j0t(l,s,u){let p=l.indexOf(s);if(p===-1)return l;let g=s.length,E=0,k="";do k+=l.slice(E,p)+s+u,E=p+g,p=l.indexOf(s,E);while(p!==-1);return k+=l.slice(E),k}function q0t(l,s,u,p){let g=0,E="";do{let k=l[p-1]==="\r";E+=l.slice(g,k?p-1:p)+s+(k?`\r
|
|
1138
1138
|
`:`
|
|
1139
1139
|
`)+u,g=p+1,p=l.indexOf(`
|
|
1140
1140
|
`,g)}while(p!==-1);return E+=l.slice(g),E}var{stdout:J0t,stderr:U0t}=B0t,xwe=Symbol("GENERATOR"),WR=Symbol("STYLER"),gG=Symbol("IS_EMPTY"),W0t=["ansi","ansi","ansi256","ansi16m"],zR=Object.create(null),V1r=(l,s={})=>{if(s.level&&!(Number.isInteger(s.level)&&s.level>=0&&s.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let u=J0t?J0t.level:0;l.level=s.level===void 0?u:s.level};var $1r=l=>{let s=(...u)=>u.join(" ");return V1r(s,l),Object.setPrototypeOf(s,yG.prototype),s};function yG(l){return $1r(l)}Object.setPrototypeOf(yG.prototype,Function.prototype);for(let[l,s]of Object.entries(AE))zR[l]={get(){let u=que(this,Awe(s.open,s.close,this[WR]),this[gG]);return Object.defineProperty(this,l,{value:u}),u}};zR.visible={get(){let l=que(this,this[WR],!0);return Object.defineProperty(this,"visible",{value:l}),l}};var Twe=(l,s,u,...p)=>l==="rgb"?s==="ansi16m"?AE[u].ansi16m(...p):s==="ansi256"?AE[u].ansi256(AE.rgbToAnsi256(...p)):AE[u].ansi(AE.rgbToAnsi(...p)):l==="hex"?Twe("rgb",s,u,...AE.hexToRgb(...p)):AE[u][l](...p),G1r=["rgb","hex","ansi256"];for(let l of G1r){zR[l]={get(){let{level:u}=this;return function(...p){let g=Awe(Twe(l,W0t[u],"color",...p),AE.color.close,this[WR]);return que(this,g,this[gG])}}};let s="bg"+l[0].toUpperCase()+l.slice(1);zR[s]={get(){let{level:u}=this;return function(...p){let g=Awe(Twe(l,W0t[u],"bgColor",...p),AE.bgColor.close,this[WR]);return que(this,g,this[gG])}}}}var H1r=Object.defineProperties(()=>{},{...zR,level:{enumerable:!0,get(){return this[xwe].level},set(l){this[xwe].level=l}}}),Awe=(l,s,u)=>{let p,g;return u===void 0?(p=l,g=s):(p=u.openAll+l,g=s+u.closeAll),{open:l,close:s,openAll:p,closeAll:g,parent:u}},que=(l,s,u)=>{let p=(...g)=>K1r(p,g.length===1?""+g[0]:g.join(" "));return Object.setPrototypeOf(p,H1r),p[xwe]=l,p[WR]=s,p[gG]=u,p},K1r=(l,s)=>{if(l.level<=0||!s)return l[gG]?"":s;let u=l[WR];if(u===void 0)return s;let{openAll:p,closeAll:g}=u;if(s.includes("\x1B"))for(;u!==void 0;)s=j0t(s,u.close,u.open),u=u.parent;let E=s.indexOf(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonFormatter.d.ts","sourceRoot":"","sources":["../../src/output/JsonFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,WAAW,EAKZ,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAI3E,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,CAAC;AAKnD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,qBAAqB,CAAC;IAE/B,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAKD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,GAAG,CAAC,EAAE,WAAW,CAAC;KACnB,CAAC;IACF,OAAO,EAAE,KAAK,CAAC;QACb,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACzC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QACtC,SAAS,EAAE;YACT,OAAO,EAAE,OAAO,CAAC;YACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,cAAc,CAAC,EAAE;QACf,QAAQ,EAAE,qBAAqB,EAAE,CAAC;KACnC,CAAC;CACH;AAKD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAoBD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,mBAAmB,CAAkC;IAK7D,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IASrC,OAAO,CAAC,6BAA6B;IAmErC,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAOnD,OAAO,CAAC,yBAAyB;IAuCjC,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,0BAA0B;
|
|
1
|
+
{"version":3,"file":"JsonFormatter.d.ts","sourceRoot":"","sources":["../../src/output/JsonFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,WAAW,EAKZ,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAI3E,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,CAAC;AAKnD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,qBAAqB,CAAC;IAE/B,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAKD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,GAAG,CAAC,EAAE,WAAW,CAAC;KACnB,CAAC;IACF,OAAO,EAAE,KAAK,CAAC;QACb,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACzC,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QACtC,SAAS,EAAE;YACT,OAAO,EAAE,OAAO,CAAC;YACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACxC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,cAAc,CAAC,EAAE;QACf,QAAQ,EAAE,qBAAqB,EAAE,CAAC;KACnC,CAAC;CACH;AAKD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAoBD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,mBAAmB,CAAkC;IAK7D,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IASrC,OAAO,CAAC,6BAA6B;IAmErC,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAOnD,OAAO,CAAC,yBAAyB;IAuCjC,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,0BAA0B;IAuTlC,OAAO,CAAC,uBAAuB;IA+B/B,OAAO,CAAC,4BAA4B;IAqBpC,OAAO,CAAC,mBAAmB;IAoG3B,OAAO,CAAC,uBAAuB;IA2C/B,OAAO,CAAC,cAAc;IAiCtB,OAAO,CAAC,0BAA0B;IAsClC,MAAM,CACJ,OAAO,EAAE,mBAAmB,EAAE,EAC9B,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACxD,uBAAuB,CAAC,EAAE,MAAM,GAC/B,MAAM;CA6EV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QualityLensService.d.ts","sourceRoot":"","sources":["../../src/service/QualityLensService.ts"],"names":[],"mappings":"AAKA,OAAO,EAeL,KAAK,UAAU,EAChB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,oCAAoC,CAAC;AAM5C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAKD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"QualityLensService.d.ts","sourceRoot":"","sources":["../../src/service/QualityLensService.ts"],"names":[],"mappings":"AAKA,OAAO,EAeL,KAAK,UAAU,EAChB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,oCAAoC,CAAC;AAM5C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAKD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,gBAAgB,CAAwB;;IAoBhD,OAAO,CAAC,gBAAgB;YAwDV,oBAAoB;YAwBpB,qBAAqB;YAyBrB,mBAAmB;YA2BnB,mBAAmB;IAgFpB,WAAW,CACtB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;YAgBnB,uBAAuB;YA0GvB,qBAAqB;IAqCnC,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,mBAAmB;IAuBpB,kBAAkB,IAAI,MAAM,EAAE;IAO9B,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGjD"}
|