faf-cli 7.5.0 → 7.5.1
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/README.md +4 -4
- package/dist/cli.js +145 -145
- package/dist/cli.js.map +4 -4
- package/dist/core/types.d.ts +2 -1
- package/dist/index.js +50 -50
- package/dist/index.js.map +4 -4
- package/package.json +1 -1
- package/project.faf +3 -3
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import{createRequire as
|
|
2
|
-
`)}}m.defaultYaml={explicit:!1,version:"1.2"};m.defaultTags={"!!":"tag:yaml.org,2002:"};
|
|
1
|
+
import{createRequire as a9}from"node:module";var c9=Object.defineProperty;var R=($,Z)=>()=>(Z||$((Z={exports:{}}).exports,Z),Z.exports);var i9=($)=>$;function r9($,Z){this[$]=i9.bind(null,Z)}var s9=($,Z)=>{for(var U in Z)c9($,U,{get:Z[U],enumerable:!0,configurable:!0,set:r9.bind(Z,U)})};var r0=a9(import.meta.url);var C=R((WZ)=>{var u$=Symbol.for("yaml.alias"),M3=Symbol.for("yaml.document"),g1=Symbol.for("yaml.map"),K3=Symbol.for("yaml.pair"),k$=Symbol.for("yaml.scalar"),x1=Symbol.for("yaml.seq"),t=Symbol.for("yaml.node.type"),qZ=($)=>!!$&&typeof $==="object"&&$[t]===u$,YZ=($)=>!!$&&typeof $==="object"&&$[t]===M3,GZ=($)=>!!$&&typeof $==="object"&&$[t]===g1,_Z=($)=>!!$&&typeof $==="object"&&$[t]===K3,F3=($)=>!!$&&typeof $==="object"&&$[t]===k$,BZ=($)=>!!$&&typeof $==="object"&&$[t]===x1;function P3($){if($&&typeof $==="object")switch($[t]){case g1:case x1:return!0}return!1}function VZ($){if($&&typeof $==="object")switch($[t]){case u$:case g1:case k$:case x1:return!0}return!1}var OZ=($)=>(F3($)||P3($))&&!!$.anchor;WZ.ALIAS=u$;WZ.DOC=M3;WZ.MAP=g1;WZ.NODE_TYPE=t;WZ.PAIR=K3;WZ.SCALAR=k$;WZ.SEQ=x1;WZ.hasAnchor=OZ;WZ.isAlias=qZ;WZ.isCollection=P3;WZ.isDocument=YZ;WZ.isMap=GZ;WZ.isNode=VZ;WZ.isPair=_Z;WZ.isScalar=F3;WZ.isSeq=BZ});var t0=R((jZ)=>{var h=C(),k=Symbol("break visit"),A3=Symbol("skip children"),s=Symbol("remove node");function h1($,Z){let U=T3(Z);if(h.isDocument($)){if(b0(null,$.contents,U,Object.freeze([$]))===s)$.contents=null}else b0(null,$,U,Object.freeze([]))}h1.BREAK=k;h1.SKIP=A3;h1.REMOVE=s;function b0($,Z,U,X){let Q=N3($,Z,U,X);if(h.isNode(Q)||h.isPair(Q))return w3($,X,Q),b0($,Q,U,X);if(typeof Q!=="symbol"){if(h.isCollection(Z)){X=Object.freeze(X.concat(Z));for(let z=0;z<Z.items.length;++z){let J=b0(z,Z.items[z],U,X);if(typeof J==="number")z=J-1;else if(J===k)return k;else if(J===s)Z.items.splice(z,1),z-=1}}else if(h.isPair(Z)){X=Object.freeze(X.concat(Z));let z=b0("key",Z.key,U,X);if(z===k)return k;else if(z===s)Z.key=null;let J=b0("value",Z.value,U,X);if(J===k)return k;else if(J===s)Z.value=null}}return Q}async function y1($,Z){let U=T3(Z);if(h.isDocument($)){if(await S0(null,$.contents,U,Object.freeze([$]))===s)$.contents=null}else await S0(null,$,U,Object.freeze([]))}y1.BREAK=k;y1.SKIP=A3;y1.REMOVE=s;async function S0($,Z,U,X){let Q=await N3($,Z,U,X);if(h.isNode(Q)||h.isPair(Q))return w3($,X,Q),S0($,Q,U,X);if(typeof Q!=="symbol"){if(h.isCollection(Z)){X=Object.freeze(X.concat(Z));for(let z=0;z<Z.items.length;++z){let J=await S0(z,Z.items[z],U,X);if(typeof J==="number")z=J-1;else if(J===k)return k;else if(J===s)Z.items.splice(z,1),z-=1}}else if(h.isPair(Z)){X=Object.freeze(X.concat(Z));let z=await S0("key",Z.key,U,X);if(z===k)return k;else if(z===s)Z.key=null;let J=await S0("value",Z.value,U,X);if(J===k)return k;else if(J===s)Z.value=null}}return Q}function T3($){if(typeof $==="object"&&($.Collection||$.Node||$.Value))return Object.assign({Alias:$.Node,Map:$.Node,Scalar:$.Node,Seq:$.Node},$.Value&&{Map:$.Value,Scalar:$.Value,Seq:$.Value},$.Collection&&{Map:$.Collection,Seq:$.Collection},$);return $}function N3($,Z,U,X){if(typeof U==="function")return U($,Z,X);if(h.isMap(Z))return U.Map?.($,Z,X);if(h.isSeq(Z))return U.Seq?.($,Z,X);if(h.isPair(Z))return U.Pair?.($,Z,X);if(h.isScalar(Z))return U.Scalar?.($,Z,X);if(h.isAlias(Z))return U.Alias?.($,Z,X);return}function w3($,Z,U){let X=Z[Z.length-1];if(h.isCollection(X))X.items[$]=U;else if(h.isPair(X))if($==="key")X.key=U;else X.value=U;else if(h.isDocument(X))X.contents=U;else{let Q=h.isAlias(X)?"alias":"scalar";throw Error(`Cannot replace node with ${Q} parent`)}}jZ.visit=h1;jZ.visitAsync=y1});var v$=R((uZ)=>{var C3=C(),hZ=t0(),yZ={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},fZ=($)=>$.replace(/[!,[\]{}]/g,(Z)=>yZ[Z]);class m{constructor($,Z){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},m.defaultYaml,$),this.tags=Object.assign({},m.defaultTags,Z)}clone(){let $=new m(this.yaml,this.tags);return $.docStart=this.docStart,$}atDocument(){let $=new m(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:m.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},m.defaultTags);break}return $}add($,Z){if(this.atNextDocument)this.yaml={explicit:m.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},m.defaultTags),this.atNextDocument=!1;let U=$.trim().split(/[ \t]+/),X=U.shift();switch(X){case"%TAG":{if(U.length!==2){if(Z(0,"%TAG directive should contain exactly two parts"),U.length<2)return!1}let[Q,z]=U;return this.tags[Q]=z,!0}case"%YAML":{if(this.yaml.explicit=!0,U.length!==1)return Z(0,"%YAML directive should contain exactly one part"),!1;let[Q]=U;if(Q==="1.1"||Q==="1.2")return this.yaml.version=Q,!0;else{let z=/^\d+\.\d+$/.test(Q);return Z(6,`Unsupported YAML version ${Q}`,z),!1}}default:return Z(0,`Unknown directive ${X}`,!0),!1}}tagName($,Z){if($==="!")return"!";if($[0]!=="!")return Z(`Not a valid tag: ${$}`),null;if($[1]==="<"){let z=$.slice(2,-1);if(z==="!"||z==="!!")return Z(`Verbatim tags aren't resolved, so ${$} is invalid.`),null;if($[$.length-1]!==">")Z("Verbatim tags must end with a >");return z}let[,U,X]=$.match(/^(.*!)([^!]*)$/s);if(!X)Z(`The ${$} tag has no suffix`);let Q=this.tags[U];if(Q)try{return Q+decodeURIComponent(X)}catch(z){return Z(String(z)),null}if(U==="!")return $;return Z(`Could not resolve tag: ${$}`),null}tagString($){for(let[Z,U]of Object.entries(this.tags))if($.startsWith(U))return Z+fZ($.substring(U.length));return $[0]==="!"?$:`!<${$}>`}toString($){let Z=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],U=Object.entries(this.tags),X;if($&&U.length>0&&C3.isNode($.contents)){let Q={};hZ.visit($.contents,(z,J)=>{if(C3.isNode(J)&&J.tag)Q[J.tag]=!0}),X=Object.keys(Q)}else X=[];for(let[Q,z]of U){if(Q==="!!"&&z==="tag:yaml.org,2002:")continue;if(!$||X.some((J)=>J.startsWith(z)))Z.push(`%TAG ${Q} ${z}`)}return Z.join(`
|
|
2
|
+
`)}}m.defaultYaml={explicit:!1,version:"1.2"};m.defaultTags={"!!":"tag:yaml.org,2002:"};uZ.Directives=m});var f1=R((lZ)=>{var b3=C(),vZ=t0();function mZ($){if(/[\x00-\x19\s,[\]{}]/.test($)){let U=`Anchor must not contain whitespace or control characters: ${JSON.stringify($)}`;throw Error(U)}return!0}function S3($){let Z=new Set;return vZ.visit($,{Value(U,X){if(X.anchor)Z.add(X.anchor)}}),Z}function E3($,Z){for(let U=1;;++U){let X=`${$}${U}`;if(!Z.has(X))return X}}function pZ($,Z){let U=[],X=new Map,Q=null;return{onAnchor:(z)=>{U.push(z),Q??(Q=S3($));let J=E3(Z,Q);return Q.add(J),J},setAnchors:()=>{for(let z of U){let J=X.get(z);if(typeof J==="object"&&J.anchor&&(b3.isScalar(J.node)||b3.isCollection(J.node)))J.node.anchor=J.anchor;else{let H=Error("Failed to resolve repeated object (this should not happen)");throw H.source=z,H}}},sourceObjects:X}}lZ.anchorIsValid=mZ;lZ.anchorNames=S3;lZ.createNodeAnchors=pZ;lZ.findNewAnchor=E3});var m$=R((sZ)=>{function e0($,Z,U,X){if(X&&typeof X==="object")if(Array.isArray(X))for(let Q=0,z=X.length;Q<z;++Q){let J=X[Q],H=e0($,X,String(Q),J);if(H===void 0)delete X[Q];else if(H!==J)X[Q]=H}else if(X instanceof Map)for(let Q of Array.from(X.keys())){let z=X.get(Q),J=e0($,X,Q,z);if(J===void 0)X.delete(Q);else if(J!==z)X.set(Q,J)}else if(X instanceof Set)for(let Q of Array.from(X)){let z=e0($,X,Q,Q);if(z===void 0)X.delete(Q);else if(z!==Q)X.delete(Q),X.add(z)}else for(let[Q,z]of Object.entries(X)){let J=e0($,X,Q,z);if(J===void 0)delete X[Q];else if(J!==z)X[Q]=J}return $.call(Z,U,X)}sZ.applyReviver=e0});var X0=R((oZ)=>{var nZ=C();function j3($,Z,U){if(Array.isArray($))return $.map((X,Q)=>j3(X,String(Q),U));if($&&typeof $.toJSON==="function"){if(!U||!nZ.hasAnchor($))return $.toJSON(Z,U);let X={aliasCount:0,count:1,res:void 0};U.anchors.set($,X),U.onCreate=(z)=>{X.res=z,delete U.onCreate};let Q=$.toJSON(Z,U);if(U.onCreate)U.onCreate(Q);return Q}if(typeof $==="bigint"&&!U?.keep)return Number($);return $}oZ.toJS=j3});var u1=R((Z4)=>{var eZ=m$(),g3=C(),$4=X0();class x3{constructor($){Object.defineProperty(this,g3.NODE_TYPE,{value:$})}clone(){let $=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));if(this.range)$.range=this.range.slice();return $}toJS($,{mapAsMap:Z,maxAliasCount:U,onAnchor:X,reviver:Q}={}){if(!g3.isDocument($))throw TypeError("A document argument is required");let z={anchors:new Map,doc:$,keep:!0,mapAsMap:Z===!0,mapKeyWarned:!1,maxAliasCount:typeof U==="number"?U:100},J=$4.toJS(this,"",z);if(typeof X==="function")for(let{count:H,res:q}of z.anchors.values())X(q,H);return typeof Q==="function"?eZ.applyReviver(Q,{"":J},"",J):J}}Z4.NodeBase=x3});var $1=R((H4)=>{var X4=f1(),Q4=t0(),E0=C(),z4=u1(),J4=X0();class h3 extends z4.NodeBase{constructor($){super(E0.ALIAS);this.source=$,Object.defineProperty(this,"tag",{set(){throw Error("Alias nodes cannot have tags")}})}resolve($,Z){let U;if(Z?.aliasResolveCache)U=Z.aliasResolveCache;else if(U=[],Q4.visit($,{Node:(Q,z)=>{if(E0.isAlias(z)||E0.hasAnchor(z))U.push(z)}}),Z)Z.aliasResolveCache=U;let X=void 0;for(let Q of U){if(Q===this)break;if(Q.anchor===this.source)X=Q}return X}toJSON($,Z){if(!Z)return{source:this.source};let{anchors:U,doc:X,maxAliasCount:Q}=Z,z=this.resolve(X,Z);if(!z){let H=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(H)}let J=U.get(z);if(!J)J4.toJS(z,null,Z),J=U.get(z);if(J?.res===void 0)throw ReferenceError("This should not happen: Alias anchor was not resolved?");if(Q>=0){if(J.count+=1,J.aliasCount===0)J.aliasCount=k1(X,z,U);if(J.count*J.aliasCount>Q)throw ReferenceError("Excessive alias count indicates a resource exhaustion attack")}return J.res}toString($,Z,U){let X=`*${this.source}`;if($){if(X4.anchorIsValid(this.source),$.options.verifyAliasOrder&&!$.anchors.has(this.source)){let Q=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(Q)}if($.implicitKey)return`${X} `}return X}}function k1($,Z,U){if(E0.isAlias(Z)){let X=Z.resolve($),Q=U&&X&&U.get(X);return Q?Q.count*Q.aliasCount:0}else if(E0.isCollection(Z)){let X=0;for(let Q of Z.items){let z=k1($,Q,U);if(z>X)X=z}return X}else if(E0.isPair(Z)){let X=k1($,Z.key,U),Q=k1($,Z.value,U);return Math.max(X,Q)}return 1}H4.Alias=h3});var x=R((V4)=>{var Y4=C(),G4=u1(),_4=X0(),B4=($)=>!$||typeof $!=="function"&&typeof $!=="object";class O0 extends G4.NodeBase{constructor($){super(Y4.SCALAR);this.value=$}toJSON($,Z){return Z?.keep?this.value:_4.toJS(this.value,$,Z)}toString(){return String(this.value)}}O0.BLOCK_FOLDED="BLOCK_FOLDED";O0.BLOCK_LITERAL="BLOCK_LITERAL";O0.PLAIN="PLAIN";O0.QUOTE_DOUBLE="QUOTE_DOUBLE";O0.QUOTE_SINGLE="QUOTE_SINGLE";V4.Scalar=O0;V4.isScalarValue=B4});var Z1=R((M4)=>{var D4=$1(),W0=C(),y3=x(),I4="tag:yaml.org,2002:";function L4($,Z,U){if(Z){let X=U.filter((z)=>z.tag===Z),Q=X.find((z)=>!z.format)??X[0];if(!Q)throw Error(`Tag ${Z} not found`);return Q}return U.find((X)=>X.identify?.($)&&!X.format)}function R4($,Z,U){if(W0.isDocument($))$=$.contents;if(W0.isNode($))return $;if(W0.isPair($)){let _=U.schema[W0.MAP].createNode?.(U.schema,null,U);return _.items.push($),_}if($ instanceof String||$ instanceof Number||$ instanceof Boolean||typeof BigInt<"u"&&$ instanceof BigInt)$=$.valueOf();let{aliasDuplicateObjects:X,onAnchor:Q,onTagObj:z,schema:J,sourceObjects:H}=U,q=void 0;if(X&&$&&typeof $==="object")if(q=H.get($),q)return q.anchor??(q.anchor=Q($)),new D4.Alias(q.anchor);else q={anchor:null,node:null},H.set($,q);if(Z?.startsWith("!!"))Z=I4+Z.slice(2);let Y=L4($,Z,J.tags);if(!Y){if($&&typeof $.toJSON==="function")$=$.toJSON();if(!$||typeof $!=="object"){let _=new y3.Scalar($);if(q)q.node=_;return _}Y=$ instanceof Map?J[W0.MAP]:(Symbol.iterator in Object($))?J[W0.SEQ]:J[W0.MAP]}if(z)z(Y),delete U.onTagObj;let G=Y?.createNode?Y.createNode(U.schema,$,U):typeof Y?.nodeClass?.from==="function"?Y.nodeClass.from(U.schema,$,U):new y3.Scalar($);if(Z)G.tag=Z;else if(!Y.default)G.tag=Y.tag;if(q)q.node=G;return G}M4.createNode=R4});var v1=R((A4)=>{var F4=Z1(),a=C(),P4=u1();function p$($,Z,U){let X=U;for(let Q=Z.length-1;Q>=0;--Q){let z=Z[Q];if(typeof z==="number"&&Number.isInteger(z)&&z>=0){let J=[];J[z]=X,X=J}else X=new Map([[z,X]])}return F4.createNode(X,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error("This should not happen, please report a bug.")},schema:$,sourceObjects:new Map})}var f3=($)=>$==null||typeof $==="object"&&!!$[Symbol.iterator]().next().done;class u3 extends P4.NodeBase{constructor($,Z){super($);Object.defineProperty(this,"schema",{value:Z,configurable:!0,enumerable:!1,writable:!0})}clone($){let Z=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));if($)Z.schema=$;if(Z.items=Z.items.map((U)=>a.isNode(U)||a.isPair(U)?U.clone($):U),this.range)Z.range=this.range.slice();return Z}addIn($,Z){if(f3($))this.add(Z);else{let[U,...X]=$,Q=this.get(U,!0);if(a.isCollection(Q))Q.addIn(X,Z);else if(Q===void 0&&this.schema)this.set(U,p$(this.schema,X,Z));else throw Error(`Expected YAML collection at ${U}. Remaining path: ${X}`)}}deleteIn($){let[Z,...U]=$;if(U.length===0)return this.delete(Z);let X=this.get(Z,!0);if(a.isCollection(X))return X.deleteIn(U);else throw Error(`Expected YAML collection at ${Z}. Remaining path: ${U}`)}getIn($,Z){let[U,...X]=$,Q=this.get(U,!0);if(X.length===0)return!Z&&a.isScalar(Q)?Q.value:Q;else return a.isCollection(Q)?Q.getIn(X,Z):void 0}hasAllNullValues($){return this.items.every((Z)=>{if(!a.isPair(Z))return!1;let U=Z.value;return U==null||$&&a.isScalar(U)&&U.value==null&&!U.commentBefore&&!U.comment&&!U.tag})}hasIn($){let[Z,...U]=$;if(U.length===0)return this.has(Z);let X=this.get(Z,!0);return a.isCollection(X)?X.hasIn(U):!1}setIn($,Z){let[U,...X]=$;if(X.length===0)this.set(U,Z);else{let Q=this.get(U,!0);if(a.isCollection(Q))Q.setIn(X,Z);else if(Q===void 0&&this.schema)this.set(U,p$(this.schema,X,Z));else throw Error(`Expected YAML collection at ${U}. Remaining path: ${X}`)}}}A4.Collection=u3;A4.collectionFromPath=p$;A4.isEmptyPath=f3});var U1=R((S4)=>{var C4=($)=>$.replace(/^(?!$)(?: $)?/gm,"#");function l$($,Z){if(/^\n+$/.test($))return $.substring(1);return Z?$.replace(/^(?! *$)/gm,Z):$}var b4=($,Z,U)=>$.endsWith(`
|
|
3
3
|
`)?l$(U,Z):U.includes(`
|
|
4
4
|
`)?`
|
|
5
|
-
`+l$(U,Z):($.endsWith(" ")?"":" ")+U;
|
|
5
|
+
`+l$(U,Z):($.endsWith(" ")?"":" ")+U;S4.indentComment=l$;S4.lineComment=b4;S4.stringifyComment=C4});var v3=R((h4)=>{function x4($,Z,U="flow",{indentAtStart:X,lineWidth:Q=80,minContentWidth:z=20,onFold:J,onOverflow:H}={}){if(!Q||Q<0)return $;if(Q<z)z=0;let q=Math.max(1+z,1+Q-Z.length);if($.length<=q)return $;let Y=[],G={},_=Q-Z.length;if(typeof X==="number")if(X>Q-Math.max(2,z))Y.push(0);else _=Q-X;let B=void 0,O=void 0,D=!1,V=-1,W=-1,I=-1;if(U==="block"){if(V=k3($,V,Z.length),V!==-1)_=V+q}for(let F;F=$[V+=1];){if(U==="quoted"&&F==="\\"){switch(W=V,$[V+1]){case"x":V+=3;break;case"u":V+=5;break;case"U":V+=9;break;default:V+=1}I=V}if(F===`
|
|
6
6
|
`){if(U==="block")V=k3($,V,Z.length);_=V+Z.length+q,B=void 0}else{if(F===" "&&O&&O!==" "&&O!==`
|
|
7
7
|
`&&O!=="\t"){let A=$[V+1];if(A&&A!==" "&&A!==`
|
|
8
8
|
`&&A!=="\t")B=V}if(V>=_)if(B)Y.push(B),_=B+q,B=void 0;else if(U==="quoted"){while(O===" "||O==="\t")O=F,F=$[V+=1],D=!0;let A=V>I+1?V-2:W-1;if(G[A])return $;Y.push(A),G[A]=!0,_=A+q,B=void 0}else D=!0}O=F}if(D&&H)H();if(Y.length===0)return $;if(J)J();let L=$.slice(0,Y[0]);for(let F=0;F<Y.length;++F){let A=Y[F],T=Y[F+1]||$.length;if(A===0)L=`
|
|
9
9
|
${Z}${$.slice(0,T)}`;else{if(U==="quoted"&&G[A])L+=`${$[A]}\\`;L+=`
|
|
10
10
|
${Z}${$.slice(A+1,T)}`}}return L}function k3($,Z,U){let X=Z,Q=Z+1,z=$[Q];while(z===" "||z==="\t")if(Z<Q+U)z=$[++Z];else{do z=$[++Z];while(z&&z!==`
|
|
11
|
-
`);X=Z,Q=Z+1,z=$[Q]}return X}
|
|
11
|
+
`);X=Z,Q=Z+1,z=$[Q]}return X}h4.FOLD_BLOCK="block";h4.FOLD_FLOW="flow";h4.FOLD_QUOTED="quoted";h4.foldFlowLines=x4});var Q1=R((l4)=>{var d=x(),Q0=v3(),p1=($,Z)=>({indentAtStart:Z?$.indent.length:$.indentAtStart,lineWidth:$.options.lineWidth,minContentWidth:$.options.minContentWidth}),l1=($)=>/^(%|---|\.\.\.)/m.test($);function v4($,Z,U){if(!Z||Z<0)return!1;let X=Z-U,Q=$.length;if(Q<=X)return!1;for(let z=0,J=0;z<Q;++z)if($[z]===`
|
|
12
12
|
`){if(z-J>X)return!0;if(J=z+1,Q-J<=X)return!1}return!0}function X1($,Z){let U=JSON.stringify($);if(Z.options.doubleQuotedAsJSON)return U;let{implicitKey:X}=Z,Q=Z.options.doubleQuotedMinMultiLineLength,z=Z.indent||(l1($)?" ":""),J="",H=0;for(let q=0,Y=U[q];Y;Y=U[++q]){if(Y===" "&&U[q+1]==="\\"&&U[q+2]==="n")J+=U.slice(H,q)+"\\ ",q+=1,H=q,Y="\\";if(Y==="\\")switch(U[q+1]){case"u":{J+=U.slice(H,q);let G=U.substr(q+2,4);switch(G){case"0000":J+="\\0";break;case"0007":J+="\\a";break;case"000b":J+="\\v";break;case"001b":J+="\\e";break;case"0085":J+="\\N";break;case"00a0":J+="\\_";break;case"2028":J+="\\L";break;case"2029":J+="\\P";break;default:if(G.substr(0,2)==="00")J+="\\x"+G.substr(2);else J+=U.substr(q,6)}q+=5,H=q+1}break;case"n":if(X||U[q+2]==='"'||U.length<Q)q+=1;else{J+=U.slice(H,q)+`
|
|
13
13
|
|
|
14
14
|
`;while(U[q+2]==="\\"&&U[q+3]==="n"&&U[q+4]!=='"')J+=`
|
|
@@ -17,7 +17,7 @@ ${Z}${$.slice(A+1,T)}`}}return L}function k3($,Z,U){let X=Z,Q=Z+1,z=$[Q];while(z
|
|
|
17
17
|
${U}`)+"'";return Z.implicitKey?X:Q0.foldFlowLines(X,U,Q0.FOLD_FLOW,p1(Z,!1))}function j0($,Z){let{singleQuote:U}=Z.options,X;if(U===!1)X=X1;else{let Q=$.includes('"'),z=$.includes("'");if(Q&&!z)X=d$;else if(z&&!Q)X=X1;else X=U?d$:X1}return X($,Z)}var c$;try{c$=new RegExp(`(^|(?<!
|
|
18
18
|
))
|
|
19
19
|
+(?!
|
|
20
|
-
|$)`,"g")}catch{c$=/\n+(?!\n|$)/g}function m1({comment:$,type:Z,value:U},X,Q,z){let{blockQuote:J,commentString:H,lineWidth:q}=X.options;if(!J||/\n[\t ]+$/.test(U))return j0(U,X);let Y=X.indent||(X.forceBlockIndent||l1(U)?" ":""),G=J==="literal"?!0:J==="folded"||Z===d.Scalar.BLOCK_FOLDED?!1:Z===d.Scalar.BLOCK_LITERAL?!0:!
|
|
20
|
+
|$)`,"g")}catch{c$=/\n+(?!\n|$)/g}function m1({comment:$,type:Z,value:U},X,Q,z){let{blockQuote:J,commentString:H,lineWidth:q}=X.options;if(!J||/\n[\t ]+$/.test(U))return j0(U,X);let Y=X.indent||(X.forceBlockIndent||l1(U)?" ":""),G=J==="literal"?!0:J==="folded"||Z===d.Scalar.BLOCK_FOLDED?!1:Z===d.Scalar.BLOCK_LITERAL?!0:!v4(U,q,Y.length);if(!U)return G?`|
|
|
21
21
|
`:`>
|
|
22
22
|
`;let _,B;for(B=U.length;B>0;--B){let T=U[B-1];if(T!==`
|
|
23
23
|
`&&T!=="\t"&&T!==" ")break}let O=U.substring(B),D=O.indexOf(`
|
|
@@ -26,47 +26,47 @@ ${U}`)+"'";return Z.implicitKey?X:Q0.foldFlowLines(X,U,Q0.FOLD_FLOW,p1(Z,!1))}fu
|
|
|
26
26
|
`)I=W;else break}let L=U.substring(0,I<W?I+1:W);if(L)U=U.substring(L.length),L=L.replace(/\n+/g,`$&${Y}`);let A=(V?Y?"2":"1":"")+_;if($){if(A+=" "+H($.replace(/ ?[\r\n]+/g," ")),Q)Q()}if(!G){let T=U.replace(/\n+/g,`
|
|
27
27
|
$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${Y}`),N=!1,b=p1(X,!0);if(J!=="folded"&&Z!==d.Scalar.BLOCK_FOLDED)b.onOverflow=()=>{N=!0};let P=Q0.foldFlowLines(`${L}${T}${O}`,Y,Q0.FOLD_BLOCK,b);if(!N)return`>${A}
|
|
28
28
|
${Y}${P}`}return U=U.replace(/\n+/g,`$&${Y}`),`|${A}
|
|
29
|
-
${Y}${L}${U}${O}`}function
|
|
29
|
+
${Y}${L}${U}${O}`}function m4($,Z,U,X){let{type:Q,value:z}=$,{actualString:J,implicitKey:H,indent:q,indentStep:Y,inFlow:G}=Z;if(H&&z.includes(`
|
|
30
30
|
`)||G&&/[[\]{},]/.test(z))return j0(z,Z);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(z))return H||G||!z.includes(`
|
|
31
31
|
`)?j0(z,Z):m1($,Z,U,X);if(!H&&!G&&Q!==d.Scalar.PLAIN&&z.includes(`
|
|
32
32
|
`))return m1($,Z,U,X);if(l1(z)){if(q==="")return Z.forceBlockIndent=!0,m1($,Z,U,X);else if(H&&q===Y)return j0(z,Z)}let _=z.replace(/\n+/g,`$&
|
|
33
|
-
${q}`);if(J){let B=(V)=>V.default&&V.tag!=="tag:yaml.org,2002:str"&&V.test?.test(_),{compat:O,tags:D}=Z.doc.schema;if(D.some(B)||O?.some(B))return j0(z,Z)}return H?_:Q0.foldFlowLines(_,q,Q0.FOLD_FLOW,p1(Z,!1))}function
|
|
34
|
-
${Z.indent}${H}`}
|
|
35
|
-
${H}:`}else if(W=`${W}:`,B)W+=J1.lineComment(W,U.indent,Y(B));let I,L,F;if(
|
|
33
|
+
${q}`);if(J){let B=(V)=>V.default&&V.tag!=="tag:yaml.org,2002:str"&&V.test?.test(_),{compat:O,tags:D}=Z.doc.schema;if(D.some(B)||O?.some(B))return j0(z,Z)}return H?_:Q0.foldFlowLines(_,q,Q0.FOLD_FLOW,p1(Z,!1))}function p4($,Z,U,X){let{implicitKey:Q,inFlow:z}=Z,J=typeof $.value==="string"?$:Object.assign({},$,{value:String($.value)}),{type:H}=$;if(H!==d.Scalar.QUOTE_DOUBLE){if(/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(J.value))H=d.Scalar.QUOTE_DOUBLE}let q=(G)=>{switch(G){case d.Scalar.BLOCK_FOLDED:case d.Scalar.BLOCK_LITERAL:return Q||z?j0(J.value,Z):m1(J,Z,U,X);case d.Scalar.QUOTE_DOUBLE:return X1(J.value,Z);case d.Scalar.QUOTE_SINGLE:return d$(J.value,Z);case d.Scalar.PLAIN:return m4(J,Z,U,X);default:return null}},Y=q(H);if(Y===null){let{defaultKeyType:G,defaultStringType:_}=Z.options,B=Q&&G||_;if(Y=q(B),Y===null)throw Error(`Unsupported default string type ${B}`)}return Y}l4.stringifyString=p4});var z1=R((t4)=>{var c4=f1(),z0=C(),i4=U1(),r4=Q1();function s4($,Z){let U=Object.assign({blockQuote:!0,commentString:i4.stringifyComment,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trailingComma:!1,trueStr:"true",verifyAliasOrder:!0},$.schema.toStringOptions,Z),X;switch(U.collectionStyle){case"block":X=!1;break;case"flow":X=!0;break;default:X=null}return{anchors:new Set,doc:$,flowCollectionPadding:U.flowCollectionPadding?" ":"",indent:"",indentStep:typeof U.indent==="number"?" ".repeat(U.indent):" ",inFlow:X,options:U}}function a4($,Z){if(Z.tag){let Q=$.filter((z)=>z.tag===Z.tag);if(Q.length>0)return Q.find((z)=>z.format===Z.format)??Q[0]}let U=void 0,X;if(z0.isScalar(Z)){X=Z.value;let Q=$.filter((z)=>z.identify?.(X));if(Q.length>1){let z=Q.filter((J)=>J.test);if(z.length>0)Q=z}U=Q.find((z)=>z.format===Z.format)??Q.find((z)=>!z.format)}else X=Z,U=$.find((Q)=>Q.nodeClass&&X instanceof Q.nodeClass);if(!U){let Q=X?.constructor?.name??(X===null?"null":typeof X);throw Error(`Tag not resolved for ${Q} value`)}return U}function n4($,Z,{anchors:U,doc:X}){if(!X.directives)return"";let Q=[],z=(z0.isScalar($)||z0.isCollection($))&&$.anchor;if(z&&c4.anchorIsValid(z))U.add(z),Q.push(`&${z}`);let J=$.tag??(Z.default?null:Z.tag);if(J)Q.push(X.directives.tagString(J));return Q.join(" ")}function o4($,Z,U,X){if(z0.isPair($))return $.toString(Z,U,X);if(z0.isAlias($)){if(Z.doc.directives)return $.toString(Z);if(Z.resolvedAliases?.has($))throw TypeError("Cannot stringify circular structure without alias nodes");else{if(Z.resolvedAliases)Z.resolvedAliases.add($);else Z.resolvedAliases=new Set([$]);$=$.resolve(Z.doc)}}let Q=void 0,z=z0.isNode($)?$:Z.doc.createNode($,{onTagObj:(q)=>Q=q});Q??(Q=a4(Z.doc.schema.tags,z));let J=n4(z,Q,Z);if(J.length>0)Z.indentAtStart=(Z.indentAtStart??0)+J.length+1;let H=typeof Q.stringify==="function"?Q.stringify(z,Z,U,X):z0.isScalar(z)?r4.stringifyString(z,Z,U,X):z.toString(Z,U,X);if(!J)return H;return z0.isScalar(z)||H[0]==="{"||H[0]==="["?`${J} ${H}`:`${J}
|
|
34
|
+
${Z.indent}${H}`}t4.createStringifyContext=s4;t4.stringify=o4});var l3=R((U5)=>{var e=C(),m3=x(),p3=z1(),J1=U1();function Z5({key:$,value:Z},U,X,Q){let{allNullValues:z,doc:J,indent:H,indentStep:q,options:{commentString:Y,indentSeq:G,simpleKeys:_}}=U,B=e.isNode($)&&$.comment||null;if(_){if(B)throw Error("With simple keys, key nodes cannot have comments");if(e.isCollection($)||!e.isNode($)&&typeof $==="object")throw Error("With simple keys, collection cannot be used as a key value")}let O=!_&&(!$||B&&Z==null&&!U.inFlow||e.isCollection($)||(e.isScalar($)?$.type===m3.Scalar.BLOCK_FOLDED||$.type===m3.Scalar.BLOCK_LITERAL:typeof $==="object"));U=Object.assign({},U,{allNullValues:!1,implicitKey:!O&&(_||!z),indent:H+q});let D=!1,V=!1,W=p3.stringify($,U,()=>D=!0,()=>V=!0);if(!O&&!U.inFlow&&W.length>1024){if(_)throw Error("With simple keys, single line scalar must not span more than 1024 characters");O=!0}if(U.inFlow){if(z||Z==null){if(D&&X)X();return W===""?"?":O?`? ${W}`:W}}else if(z&&!_||Z==null&&O){if(W=`? ${W}`,B&&!D)W+=J1.lineComment(W,U.indent,Y(B));else if(V&&Q)Q();return W}if(D)B=null;if(O){if(B)W+=J1.lineComment(W,U.indent,Y(B));W=`? ${W}
|
|
35
|
+
${H}:`}else if(W=`${W}:`,B)W+=J1.lineComment(W,U.indent,Y(B));let I,L,F;if(e.isNode(Z))I=!!Z.spaceBefore,L=Z.commentBefore,F=Z.comment;else if(I=!1,L=null,F=null,Z&&typeof Z==="object")Z=J.createNode(Z);if(U.implicitKey=!1,!O&&!B&&e.isScalar(Z))U.indentAtStart=W.length+1;if(V=!1,!G&&q.length>=2&&!U.inFlow&&!O&&e.isSeq(Z)&&!Z.flow&&!Z.tag&&!Z.anchor)U.indent=U.indent.substring(2);let A=!1,T=p3.stringify(Z,U,()=>A=!0,()=>V=!0),N=" ";if(B||I||L){if(N=I?`
|
|
36
36
|
`:"",L){let b=Y(L);N+=`
|
|
37
37
|
${J1.indentComment(b,U.indent)}`}if(T===""&&!U.inFlow){if(N===`
|
|
38
38
|
`&&F)N=`
|
|
39
39
|
|
|
40
40
|
`}else N+=`
|
|
41
|
-
${U.indent}`}else if(!O&&
|
|
41
|
+
${U.indent}`}else if(!O&&e.isCollection(Z)){let b=T[0],P=T.indexOf(`
|
|
42
42
|
`),w=P!==-1,v=U.inFlow??Z.flow??Z.items.length===0;if(w||!v){let S=!1;if(w&&(b==="&"||b==="!")){let g=T.indexOf(" ");if(b==="&"&&g!==-1&&g<P&&T[g+1]==="!")g=T.indexOf(" ",g+1);if(g===-1||P<g)S=!0}if(!S)N=`
|
|
43
43
|
${U.indent}`}}else if(T===""||T[0]===`
|
|
44
|
-
`)N="";if(W+=N+T,U.inFlow){if(A&&X)X()}else if(F&&!A)W+=J1.lineComment(W,U.indent,Y(F));else if(V&&Q)Q();return W}
|
|
44
|
+
`)N="";if(W+=N+T,U.inFlow){if(A&&X)X()}else if(F&&!A)W+=J1.lineComment(W,U.indent,Y(F));else if(V&&Q)Q();return W}U5.stringifyPair=Z5});var i$=R((J5)=>{var d3=r0("process");function Q5($,...Z){if($==="debug")console.log(...Z)}function z5($,Z){if($==="debug"||$==="warn")if(typeof d3.emitWarning==="function")d3.emitWarning(Z);else console.warn(Z)}J5.debug=Q5;J5.warn=z5});var i1=R((G5)=>{var H1=C(),c3=x(),d1="<<",c1={identify:($)=>$===d1||typeof $==="symbol"&&$.description===d1,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new c3.Scalar(Symbol(d1)),{addToJSMap:i3}),stringify:()=>d1},Y5=($,Z)=>(c1.identify(Z)||H1.isScalar(Z)&&(!Z.type||Z.type===c3.Scalar.PLAIN)&&c1.identify(Z.value))&&$?.doc.schema.tags.some((U)=>U.tag===c1.tag&&U.default);function i3($,Z,U){if(U=$&&H1.isAlias(U)?U.resolve($.doc):U,H1.isSeq(U))for(let X of U.items)r$($,Z,X);else if(Array.isArray(U))for(let X of U)r$($,Z,X);else r$($,Z,U)}function r$($,Z,U){let X=$&&H1.isAlias(U)?U.resolve($.doc):U;if(!H1.isMap(X))throw Error("Merge sources must be maps or map aliases");let Q=X.toJSON(null,$,Map);for(let[z,J]of Q)if(Z instanceof Map){if(!Z.has(z))Z.set(z,J)}else if(Z instanceof Set)Z.add(z);else if(!Object.prototype.hasOwnProperty.call(Z,z))Object.defineProperty(Z,z,{value:J,writable:!0,enumerable:!0,configurable:!0});return Z}G5.addMergeToJSMap=i3;G5.isMergeKey=Y5;G5.merge=c1});var a$=R((L5)=>{var O5=i$(),r3=i1(),W5=z1(),s3=C(),s$=X0();function D5($,Z,{key:U,value:X}){if(s3.isNode(U)&&U.addToJSMap)U.addToJSMap($,Z,X);else if(r3.isMergeKey($,U))r3.addMergeToJSMap($,Z,X);else{let Q=s$.toJS(U,"",$);if(Z instanceof Map)Z.set(Q,s$.toJS(X,Q,$));else if(Z instanceof Set)Z.add(Q);else{let z=I5(U,Q,$),J=s$.toJS(X,z,$);if(z in Z)Object.defineProperty(Z,z,{value:J,writable:!0,enumerable:!0,configurable:!0});else Z[z]=J}}return Z}function I5($,Z,U){if(Z===null)return"";if(typeof Z!=="object")return String(Z);if(s3.isNode($)&&U?.doc){let X=W5.createStringifyContext(U.doc,{});X.anchors=new Set;for(let z of U.anchors.keys())X.anchors.add(z.anchor);X.inFlow=!0,X.inStringifyKey=!0;let Q=$.toString(X);if(!U.mapKeyWarned){let z=JSON.stringify(Q);if(z.length>40)z=z.substring(0,36)+'..."';O5.warn(U.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${z}. Set mapAsMap: true to use object keys.`),U.mapKeyWarned=!0}return Q}return JSON.stringify(Z)}L5.addPairToJSMap=D5});var J0=R((P5)=>{var a3=Z1(),M5=l3(),K5=a$(),r1=C();function F5($,Z,U){let X=a3.createNode($,void 0,U),Q=a3.createNode(Z,void 0,U);return new s1(X,Q)}class s1{constructor($,Z=null){Object.defineProperty(this,r1.NODE_TYPE,{value:r1.PAIR}),this.key=$,this.value=Z}clone($){let{key:Z,value:U}=this;if(r1.isNode(Z))Z=Z.clone($);if(r1.isNode(U))U=U.clone($);return new s1(Z,U)}toJSON($,Z){let U=Z?.mapAsMap?new Map:{};return K5.addPairToJSMap(Z,U,this)}toString($,Z,U){return $?.doc?M5.stringifyPair(this,$,Z,U):JSON.stringify(this)}}P5.Pair=s1;P5.createPair=F5});var n$=R((b5)=>{var D0=C(),n3=z1(),a1=U1();function N5($,Z,U){return(Z.inFlow??$.flow?C5:w5)($,Z,U)}function w5({comment:$,items:Z},U,{blockItemPrefix:X,flowChars:Q,itemIndent:z,onChompKeep:J,onComment:H}){let{indent:q,options:{commentString:Y}}=U,G=Object.assign({},U,{indent:z,type:null}),_=!1,B=[];for(let D=0;D<Z.length;++D){let V=Z[D],W=null;if(D0.isNode(V)){if(!_&&V.spaceBefore)B.push("");if(n1(U,B,V.commentBefore,_),V.comment)W=V.comment}else if(D0.isPair(V)){let L=D0.isNode(V.key)?V.key:null;if(L){if(!_&&L.spaceBefore)B.push("");n1(U,B,L.commentBefore,_)}}_=!1;let I=n3.stringify(V,G,()=>W=null,()=>_=!0);if(W)I+=a1.lineComment(I,z,Y(W));if(_&&W)_=!1;B.push(X+I)}let O;if(B.length===0)O=Q.start+Q.end;else{O=B[0];for(let D=1;D<B.length;++D){let V=B[D];O+=V?`
|
|
45
45
|
${q}${V}`:`
|
|
46
46
|
`}}if($){if(O+=`
|
|
47
|
-
`+a1.indentComment(Y($),q),H)H()}else if(_&&J)J();return O}function
|
|
47
|
+
`+a1.indentComment(Y($),q),H)H()}else if(_&&J)J();return O}function C5({items:$},Z,{flowChars:U,itemIndent:X}){let{indent:Q,indentStep:z,flowCollectionPadding:J,options:{commentString:H}}=Z;X+=z;let q=Object.assign({},Z,{indent:X,inFlow:!0,type:null}),Y=!1,G=0,_=[];for(let D=0;D<$.length;++D){let V=$[D],W=null;if(D0.isNode(V)){if(V.spaceBefore)_.push("");if(n1(Z,_,V.commentBefore,!1),V.comment)W=V.comment}else if(D0.isPair(V)){let L=D0.isNode(V.key)?V.key:null;if(L){if(L.spaceBefore)_.push("");if(n1(Z,_,L.commentBefore,!1),L.comment)Y=!0}let F=D0.isNode(V.value)?V.value:null;if(F){if(F.comment)W=F.comment;if(F.commentBefore)Y=!0}else if(V.value==null&&L?.comment)W=L.comment}if(W)Y=!0;let I=n3.stringify(V,q,()=>W=null);if(Y||(Y=_.length>G||I.includes(`
|
|
48
48
|
`)),D<$.length-1)I+=",";else if(Z.options.trailingComma){if(Z.options.lineWidth>0)Y||(Y=_.reduce((L,F)=>L+F.length+2,2)+(I.length+2)>Z.options.lineWidth);if(Y)I+=","}if(W)I+=a1.lineComment(I,X,H(W));_.push(I),G=_.length}let{start:B,end:O}=U;if(_.length===0)return B+O;else{if(!Y){let D=_.reduce((V,W)=>V+W.length+2,2);Y=Z.options.lineWidth>0&&D>Z.options.lineWidth}if(Y){let D=B;for(let V of _)D+=V?`
|
|
49
49
|
${z}${Q}${V}`:`
|
|
50
50
|
`;return`${D}
|
|
51
|
-
${Q}${O}`}else return`${B}${J}${_.join(" ")}${J}${O}`}}function n1({indent:$,options:{commentString:Z}},U,X,Q){if(X&&Q)X=X.replace(/^\n+/,"");if(X){let z=a1.indentComment(Z(X),$);U.push(z.trimStart())}}
|
|
52
|
-
`:" ")}return
|
|
51
|
+
${Q}${O}`}else return`${B}${J}${_.join(" ")}${J}${O}`}}function n1({indent:$,options:{commentString:Z}},U,X,Q){if(X&&Q)X=X.replace(/^\n+/,"");if(X){let z=a1.indentComment(Z(X),$);U.push(z.trimStart())}}b5.stringifyCollection=N5});var q0=R((h5)=>{var E5=n$(),j5=a$(),g5=v1(),H0=C(),o1=J0(),x5=x();function q1($,Z){let U=H0.isScalar(Z)?Z.value:Z;for(let X of $)if(H0.isPair(X)){if(X.key===Z||X.key===U)return X;if(H0.isScalar(X.key)&&X.key.value===U)return X}return}class o3 extends g5.Collection{static get tagName(){return"tag:yaml.org,2002:map"}constructor($){super(H0.MAP,$);this.items=[]}static from($,Z,U){let{keepUndefined:X,replacer:Q}=U,z=new this($),J=(H,q)=>{if(typeof Q==="function")q=Q.call(Z,H,q);else if(Array.isArray(Q)&&!Q.includes(H))return;if(q!==void 0||X)z.items.push(o1.createPair(H,q,U))};if(Z instanceof Map)for(let[H,q]of Z)J(H,q);else if(Z&&typeof Z==="object")for(let H of Object.keys(Z))J(H,Z[H]);if(typeof $.sortMapEntries==="function")z.items.sort($.sortMapEntries);return z}add($,Z){let U;if(H0.isPair($))U=$;else if(!$||typeof $!=="object"||!("key"in $))U=new o1.Pair($,$?.value);else U=new o1.Pair($.key,$.value);let X=q1(this.items,U.key),Q=this.schema?.sortMapEntries;if(X){if(!Z)throw Error(`Key ${U.key} already set`);if(H0.isScalar(X.value)&&x5.isScalarValue(U.value))X.value.value=U.value;else X.value=U.value}else if(Q){let z=this.items.findIndex((J)=>Q(U,J)<0);if(z===-1)this.items.push(U);else this.items.splice(z,0,U)}else this.items.push(U)}delete($){let Z=q1(this.items,$);if(!Z)return!1;return this.items.splice(this.items.indexOf(Z),1).length>0}get($,Z){let X=q1(this.items,$)?.value;return(!Z&&H0.isScalar(X)?X.value:X)??void 0}has($){return!!q1(this.items,$)}set($,Z){this.add(new o1.Pair($,Z),!0)}toJSON($,Z,U){let X=U?new U:Z?.mapAsMap?new Map:{};if(Z?.onCreate)Z.onCreate(X);for(let Q of this.items)j5.addPairToJSMap(Z,X,Q);return X}toString($,Z,U){if(!$)return JSON.stringify(this);for(let X of this.items)if(!H0.isPair(X))throw Error(`Map items must all be pairs; found ${JSON.stringify(X)} instead`);if(!$.allNullValues&&this.hasAllNullValues(!1))$=Object.assign({},$,{allNullValues:!0});return E5.stringifyCollection(this,$,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:$.indent||"",onChompKeep:U,onComment:Z})}}h5.YAMLMap=o3;h5.findPair=q1});var g0=R((v5)=>{var u5=C(),t3=q0(),k5={collection:"map",default:!0,nodeClass:t3.YAMLMap,tag:"tag:yaml.org,2002:map",resolve($,Z){if(!u5.isMap($))Z("Expected a mapping for this tag");return $},createNode:($,Z,U)=>t3.YAMLMap.from($,Z,U)};v5.map=k5});var Y0=R((r5)=>{var p5=Z1(),l5=n$(),d5=v1(),e1=C(),c5=x(),i5=X0();class e3 extends d5.Collection{static get tagName(){return"tag:yaml.org,2002:seq"}constructor($){super(e1.SEQ,$);this.items=[]}add($){this.items.push($)}delete($){let Z=t1($);if(typeof Z!=="number")return!1;return this.items.splice(Z,1).length>0}get($,Z){let U=t1($);if(typeof U!=="number")return;let X=this.items[U];return!Z&&e1.isScalar(X)?X.value:X}has($){let Z=t1($);return typeof Z==="number"&&Z<this.items.length}set($,Z){let U=t1($);if(typeof U!=="number")throw Error(`Expected a valid index, not ${$}.`);let X=this.items[U];if(e1.isScalar(X)&&c5.isScalarValue(Z))X.value=Z;else this.items[U]=Z}toJSON($,Z){let U=[];if(Z?.onCreate)Z.onCreate(U);let X=0;for(let Q of this.items)U.push(i5.toJS(Q,String(X++),Z));return U}toString($,Z,U){if(!$)return JSON.stringify(this);return l5.stringifyCollection(this,$,{blockItemPrefix:"- ",flowChars:{start:"[",end:"]"},itemIndent:($.indent||"")+" ",onChompKeep:U,onComment:Z})}static from($,Z,U){let{replacer:X}=U,Q=new this($);if(Z&&Symbol.iterator in Object(Z)){let z=0;for(let J of Z){if(typeof X==="function"){let H=Z instanceof Set?J:String(z++);J=X.call(Z,H,J)}Q.items.push(p5.createNode(J,void 0,U))}}return Q}}function t1($){let Z=e1.isScalar($)?$.value:$;if(Z&&typeof Z==="string")Z=Number(Z);return typeof Z==="number"&&Number.isInteger(Z)&&Z>=0?Z:null}r5.YAMLSeq=e3});var x0=R((o5)=>{var a5=C(),$8=Y0(),n5={collection:"seq",default:!0,nodeClass:$8.YAMLSeq,tag:"tag:yaml.org,2002:seq",resolve($,Z){if(!a5.isSeq($))Z("Expected a sequence for this tag");return $},createNode:($,Z,U)=>$8.YAMLSeq.from($,Z,U)};o5.seq=n5});var Y1=R((ZU)=>{var e5=Q1(),$U={identify:($)=>typeof $==="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:($)=>$,stringify($,Z,U,X){return Z=Object.assign({actualString:!0},Z),e5.stringifyString($,Z,U,X)}};ZU.string=$U});var $$=R((XU)=>{var Z8=x(),U8={identify:($)=>$==null,createNode:()=>new Z8.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new Z8.Scalar(null),stringify:({source:$},Z)=>typeof $==="string"&&U8.test.test($)?$:Z.options.nullStr};XU.nullTag=U8});var o$=R((JU)=>{var zU=x(),X8={identify:($)=>typeof $==="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:($)=>new zU.Scalar($[0]==="t"||$[0]==="T"),stringify({source:$,value:Z},U){if($&&X8.test.test($)){let X=$[0]==="t"||$[0]==="T";if(Z===X)return $}return Z?U.options.trueStr:U.options.falseStr}};JU.boolTag=X8});var h0=R((YU)=>{function qU({format:$,minFractionDigits:Z,tag:U,value:X}){if(typeof X==="bigint")return String(X);let Q=typeof X==="number"?X:Number(X);if(!isFinite(Q))return isNaN(Q)?".nan":Q<0?"-.inf":".inf";let z=Object.is(X,-0)?"-0":JSON.stringify(X);if(!$&&Z&&(!U||U==="tag:yaml.org,2002:float")&&/^\d/.test(z)){let J=z.indexOf(".");if(J<0)J=z.length,z+=".";let H=Z-(z.length-J-1);while(H-- >0)z+="0"}return z}YU.stringifyNumber=qU});var e$=R((WU)=>{var _U=x(),t$=h0(),BU={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:($)=>$.slice(-3).toLowerCase()==="nan"?NaN:$[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:t$.stringifyNumber},VU={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:($)=>parseFloat($),stringify($){let Z=Number($.value);return isFinite(Z)?Z.toExponential():t$.stringifyNumber($)}},OU={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve($){let Z=new _U.Scalar(parseFloat($)),U=$.indexOf(".");if(U!==-1&&$[$.length-1]==="0")Z.minFractionDigits=$.length-U-1;return Z},stringify:t$.stringifyNumber};WU.float=OU;WU.floatExp=VU;WU.floatNaN=BU});var Z2=R((FU)=>{var Q8=h0(),Z$=($)=>typeof $==="bigint"||Number.isInteger($),$2=($,Z,U,{intAsBigInt:X})=>X?BigInt($):parseInt($.substring(Z),U);function z8($,Z,U){let{value:X}=$;if(Z$(X)&&X>=0)return U+X.toString(Z);return Q8.stringifyNumber($)}var RU={identify:($)=>Z$($)&&$>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:($,Z,U)=>$2($,2,8,U),stringify:($)=>z8($,8,"0o")},MU={identify:Z$,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:($,Z,U)=>$2($,0,10,U),stringify:Q8.stringifyNumber},KU={identify:($)=>Z$($)&&$>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:($,Z,U)=>$2($,2,16,U),stringify:($)=>z8($,16,"0x")};FU.int=MU;FU.intHex=KU;FU.intOct=RU});var J8=R((jU)=>{var NU=g0(),wU=$$(),CU=x0(),bU=Y1(),SU=o$(),U2=e$(),X2=Z2(),EU=[NU.map,CU.seq,bU.string,wU.nullTag,SU.boolTag,X2.intOct,X2.int,X2.intHex,U2.floatNaN,U2.floatExp,U2.float];jU.schema=EU});var q8=R((vU)=>{var xU=x(),hU=g0(),yU=x0();function H8($){return typeof $==="bigint"||Number.isInteger($)}var U$=({value:$})=>JSON.stringify($),fU=[{identify:($)=>typeof $==="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:($)=>$,stringify:U$},{identify:($)=>$==null,createNode:()=>new xU.Scalar(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:U$},{identify:($)=>typeof $==="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:($)=>$==="true",stringify:U$},{identify:H8,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:($,Z,{intAsBigInt:U})=>U?BigInt($):parseInt($,10),stringify:({value:$})=>H8($)?$.toString():JSON.stringify($)},{identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:($)=>parseFloat($),stringify:U$}],uU={default:!0,tag:"",test:/^/,resolve($,Z){return Z(`Unresolved plain scalar ${JSON.stringify($)}`),$}},kU=[hU.map,yU.seq].concat(fU,uU);vU.schema=kU});var z2=R((dU)=>{var G1=r0("buffer"),Q2=x(),pU=Q1(),lU={identify:($)=>$ instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve($,Z){if(typeof G1.Buffer==="function")return G1.Buffer.from($,"base64");else if(typeof atob==="function"){let U=atob($.replace(/[\n\r]/g,"")),X=new Uint8Array(U.length);for(let Q=0;Q<U.length;++Q)X[Q]=U.charCodeAt(Q);return X}else return Z("This environment does not support reading binary tags; either Buffer or atob is required"),$},stringify({comment:$,type:Z,value:U},X,Q,z){if(!U)return"";let J=U,H;if(typeof G1.Buffer==="function")H=J instanceof G1.Buffer?J.toString("base64"):G1.Buffer.from(J.buffer).toString("base64");else if(typeof btoa==="function"){let q="";for(let Y=0;Y<J.length;++Y)q+=String.fromCharCode(J[Y]);H=btoa(q)}else throw Error("This environment does not support writing binary tags; either Buffer or btoa is required");if(Z??(Z=Q2.Scalar.BLOCK_LITERAL),Z!==Q2.Scalar.QUOTE_DOUBLE){let q=Math.max(X.options.lineWidth-X.indent.length,X.options.minContentWidth),Y=Math.ceil(H.length/q),G=Array(Y);for(let _=0,B=0;_<Y;++_,B+=q)G[_]=H.substr(B,q);H=G.join(Z===Q2.Scalar.BLOCK_LITERAL?`
|
|
52
|
+
`:" ")}return pU.stringifyString({comment:$,type:Z,value:H},X,Q,z)}};dU.binary=lU});var Q$=R((aU)=>{var X$=C(),J2=J0(),iU=x(),rU=Y0();function Y8($,Z){if(X$.isSeq($))for(let U=0;U<$.items.length;++U){let X=$.items[U];if(X$.isPair(X))continue;else if(X$.isMap(X)){if(X.items.length>1)Z("Each pair must have its own sequence indicator");let Q=X.items[0]||new J2.Pair(new iU.Scalar(null));if(X.commentBefore)Q.key.commentBefore=Q.key.commentBefore?`${X.commentBefore}
|
|
53
53
|
${Q.key.commentBefore}`:X.commentBefore;if(X.comment){let z=Q.value??Q.key;z.comment=z.comment?`${X.comment}
|
|
54
|
-
${z.comment}`:X.comment}X=Q}$.items[U]=X$.isPair(X)?X:new J2.Pair(X)}else Z("Expected a sequence for this tag");return $}function G8($,Z,U){let{replacer:X}=U,Q=new i7.YAMLSeq($);Q.tag="tag:yaml.org,2002:pairs";let z=0;if(Z&&Symbol.iterator in Object(Z))for(let J of Z){if(typeof X==="function")J=X.call(Z,String(z++),J);let H,q;if(Array.isArray(J))if(J.length===2)H=J[0],q=J[1];else throw TypeError(`Expected [key, value] tuple: ${J}`);else if(J&&J instanceof Object){let Y=Object.keys(J);if(Y.length===1)H=Y[0],q=J[H];else throw TypeError(`Expected tuple with one key, not ${Y.length} keys`)}else H=J;Q.items.push(J2.createPair(H,q,U))}return Q}var r7={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:Y8,createNode:G8};s7.createPairs=G8;s7.pairs=r7;s7.resolvePairs=Y8});var q2=R(($U)=>{var _8=C(),H2=X0(),_1=q0(),t7=Y0(),B8=Q$();class I0 extends t7.YAMLSeq{constructor(){super();this.add=_1.YAMLMap.prototype.add.bind(this),this.delete=_1.YAMLMap.prototype.delete.bind(this),this.get=_1.YAMLMap.prototype.get.bind(this),this.has=_1.YAMLMap.prototype.has.bind(this),this.set=_1.YAMLMap.prototype.set.bind(this),this.tag=I0.tag}toJSON($,Z){if(!Z)return super.toJSON($);let U=new Map;if(Z?.onCreate)Z.onCreate(U);for(let X of this.items){let Q,z;if(_8.isPair(X))Q=H2.toJS(X.key,"",Z),z=H2.toJS(X.value,Q,Z);else Q=H2.toJS(X,"",Z);if(U.has(Q))throw Error("Ordered maps must not include duplicate keys");U.set(Q,z)}return U}static from($,Z,U){let X=B8.createPairs($,Z,U),Q=new this;return Q.items=X.items,Q}}I0.tag="tag:yaml.org,2002:omap";var e7={collection:"seq",identify:($)=>$ instanceof Map,nodeClass:I0,default:!1,tag:"tag:yaml.org,2002:omap",resolve($,Z){let U=B8.resolvePairs($,Z),X=[];for(let{key:Q}of U.items)if(_8.isScalar(Q))if(X.includes(Q.value))Z(`Ordered maps must not include duplicate keys: ${Q.value}`);else X.push(Q.value);return Object.assign(new I0,U)},createNode:($,Z,U)=>I0.from($,Z,U)};$U.YAMLOMap=I0;$U.omap=e7});var I8=R((XU)=>{var V8=x();function O8({value:$,source:Z},U){if(Z&&($?W8:D8).test.test(Z))return Z;return $?U.options.trueStr:U.options.falseStr}var W8={identify:($)=>$===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new V8.Scalar(!0),stringify:O8},D8={identify:($)=>$===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new V8.Scalar(!1),stringify:O8};XU.falseTag=D8;XU.trueTag=W8});var L8=R((GU)=>{var JU=x(),Y2=h0(),HU={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:($)=>$.slice(-3).toLowerCase()==="nan"?NaN:$[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:Y2.stringifyNumber},qU={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:($)=>parseFloat($.replace(/_/g,"")),stringify($){let Z=Number($.value);return isFinite(Z)?Z.toExponential():Y2.stringifyNumber($)}},YU={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve($){let Z=new JU.Scalar(parseFloat($.replace(/_/g,""))),U=$.indexOf(".");if(U!==-1){let X=$.substring(U+1).replace(/_/g,"");if(X[X.length-1]==="0")Z.minFractionDigits=X.length}return Z},stringify:Y2.stringifyNumber};GU.float=YU;GU.floatExp=qU;GU.floatNaN=HU});var M8=R((LU)=>{var R8=h0(),B1=($)=>typeof $==="bigint"||Number.isInteger($);function z$($,Z,U,{intAsBigInt:X}){let Q=$[0];if(Q==="-"||Q==="+")Z+=1;if($=$.substring(Z).replace(/_/g,""),X){switch(U){case 2:$=`0b${$}`;break;case 8:$=`0o${$}`;break;case 16:$=`0x${$}`;break}let J=BigInt($);return Q==="-"?BigInt(-1)*J:J}let z=parseInt($,U);return Q==="-"?-1*z:z}function G2($,Z,U){let{value:X}=$;if(B1(X)){let Q=X.toString(Z);return X<0?"-"+U+Q.substr(1):U+Q}return R8.stringifyNumber($)}var OU={identify:B1,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:($,Z,U)=>z$($,2,2,U),stringify:($)=>G2($,2,"0b")},WU={identify:B1,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:($,Z,U)=>z$($,1,8,U),stringify:($)=>G2($,8,"0")},DU={identify:B1,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:($,Z,U)=>z$($,0,10,U),stringify:R8.stringifyNumber},IU={identify:B1,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:($,Z,U)=>z$($,2,16,U),stringify:($)=>G2($,16,"0x")};LU.int=DU;LU.intBin=OU;LU.intHex=IU;LU.intOct=WU});var _2=R((AU)=>{var q$=C(),J$=J0(),H$=q0();class L0 extends H$.YAMLMap{constructor($){super($);this.tag=L0.tag}add($){let Z;if(q$.isPair($))Z=$;else if($&&typeof $==="object"&&"key"in $&&"value"in $&&$.value===null)Z=new J$.Pair($.key,null);else Z=new J$.Pair($,null);if(!H$.findPair(this.items,Z.key))this.items.push(Z)}get($,Z){let U=H$.findPair(this.items,$);return!Z&&q$.isPair(U)?q$.isScalar(U.key)?U.key.value:U.key:U}set($,Z){if(typeof Z!=="boolean")throw Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof Z}`);let U=H$.findPair(this.items,$);if(U&&!Z)this.items.splice(this.items.indexOf(U),1);else if(!U&&Z)this.items.push(new J$.Pair($))}toJSON($,Z){return super.toJSON($,Z,Set)}toString($,Z,U){if(!$)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},$,{allNullValues:!0}),Z,U);else throw Error("Set items must all have null values")}static from($,Z,U){let{replacer:X}=U,Q=new this($);if(Z&&Symbol.iterator in Object(Z))for(let z of Z){if(typeof X==="function")z=X.call(Z,z,z);Q.items.push(J$.createPair(z,null,U))}return Q}}L0.tag="tag:yaml.org,2002:set";var PU={collection:"map",identify:($)=>$ instanceof Set,nodeClass:L0,default:!1,tag:"tag:yaml.org,2002:set",createNode:($,Z,U)=>L0.from($,Z,U),resolve($,Z){if(q$.isMap($))if($.hasAllNullValues(!0))return Object.assign(new L0,$);else Z("Set items must all have null values");else Z("Expected a mapping for this tag");return $}};AU.YAMLSet=L0;AU.set=PU});var V2=R((SU)=>{var wU=h0();function B2($,Z){let U=$[0],X=U==="-"||U==="+"?$.substring(1):$,Q=(J)=>Z?BigInt(J):Number(J),z=X.replace(/_/g,"").split(":").reduce((J,H)=>J*Q(60)+Q(H),Q(0));return U==="-"?Q(-1)*z:z}function K8($){let{value:Z}=$,U=(J)=>J;if(typeof Z==="bigint")U=(J)=>BigInt(J);else if(isNaN(Z)||!isFinite(Z))return wU.stringifyNumber($);let X="";if(Z<0)X="-",Z*=U(-1);let Q=U(60),z=[Z%Q];if(Z<60)z.unshift(0);else if(Z=(Z-z[0])/Q,z.unshift(Z%Q),Z>=60)Z=(Z-z[0])/Q,z.unshift(Z);return X+z.map((J)=>String(J).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var CU={identify:($)=>typeof $==="bigint"||Number.isInteger($),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:($,Z,{intAsBigInt:U})=>B2($,U),stringify:K8},bU={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:($)=>B2($,!1),stringify:K8},F8={identify:($)=>$ instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve($){let Z=$.match(F8.test);if(!Z)throw Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,U,X,Q,z,J,H]=Z.map(Number),q=Z[7]?Number((Z[7]+"00").substr(1,3)):0,Y=Date.UTC(U,X-1,Q,z||0,J||0,H||0,q),G=Z[8];if(G&&G!=="Z"){let _=B2(G,!1);if(Math.abs(_)<30)_*=60;Y-=60000*_}return new Date(Y)},stringify:({value:$})=>$?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};SU.floatTime=bU;SU.intTime=CU;SU.timestamp=F8});var A8=R((dU)=>{var xU=g0(),hU=$$(),yU=x0(),fU=Y1(),uU=z2(),P8=I8(),O2=L8(),Y$=M8(),kU=i1(),vU=q2(),mU=Q$(),pU=_2(),W2=V2(),lU=[xU.map,yU.seq,fU.string,hU.nullTag,P8.trueTag,P8.falseTag,Y$.intBin,Y$.intOct,Y$.int,Y$.intHex,O2.floatNaN,O2.floatExp,O2.float,uU.binary,kU.merge,vU.omap,mU.pairs,pU.set,W2.intTime,W2.floatTime,W2.timestamp];dU.schema=lU});var x8=R((eU)=>{var C8=g0(),iU=$$(),b8=x0(),rU=Y1(),sU=o$(),D2=e$(),I2=Z2(),aU=J8(),nU=q8(),S8=z2(),V1=i1(),E8=q2(),j8=Q$(),T8=A8(),g8=_2(),G$=V2(),N8=new Map([["core",aU.schema],["failsafe",[C8.map,b8.seq,rU.string]],["json",nU.schema],["yaml11",T8.schema],["yaml-1.1",T8.schema]]),w8={binary:S8.binary,bool:sU.boolTag,float:D2.float,floatExp:D2.floatExp,floatNaN:D2.floatNaN,floatTime:G$.floatTime,int:I2.int,intHex:I2.intHex,intOct:I2.intOct,intTime:G$.intTime,map:C8.map,merge:V1.merge,null:iU.nullTag,omap:E8.omap,pairs:j8.pairs,seq:b8.seq,set:g8.set,timestamp:G$.timestamp},oU={"tag:yaml.org,2002:binary":S8.binary,"tag:yaml.org,2002:merge":V1.merge,"tag:yaml.org,2002:omap":E8.omap,"tag:yaml.org,2002:pairs":j8.pairs,"tag:yaml.org,2002:set":g8.set,"tag:yaml.org,2002:timestamp":G$.timestamp};function tU($,Z,U){let X=N8.get(Z);if(X&&!$)return U&&!X.includes(V1.merge)?X.concat(V1.merge):X.slice();let Q=X;if(!Q)if(Array.isArray($))Q=[];else{let z=Array.from(N8.keys()).filter((J)=>J!=="yaml11").map((J)=>JSON.stringify(J)).join(", ");throw Error(`Unknown schema "${Z}"; use one of ${z} or define customTags array`)}if(Array.isArray($))for(let z of $)Q=Q.concat(z);else if(typeof $==="function")Q=$(Q.slice());if(U)Q=Q.concat(V1.merge);return Q.reduce((z,J)=>{let H=typeof J==="string"?w8[J]:J;if(!H){let q=JSON.stringify(J),Y=Object.keys(w8).map((G)=>JSON.stringify(G)).join(", ");throw Error(`Unknown custom tag ${q}; use one of ${Y}`)}if(!z.includes(H))z.push(H);return z},[])}eU.coreKnownTags=oU;eU.getTags=tU});var M2=R((JX)=>{var L2=C(),UX=g0(),XX=x0(),QX=Y1(),_$=x8(),zX=($,Z)=>$.key<Z.key?-1:$.key>Z.key?1:0;class R2{constructor({compat:$,customTags:Z,merge:U,resolveKnownTags:X,schema:Q,sortMapEntries:z,toStringDefaults:J}){this.compat=Array.isArray($)?_$.getTags($,"compat"):$?_$.getTags(null,$):null,this.name=typeof Q==="string"&&Q||"core",this.knownTags=X?_$.coreKnownTags:{},this.tags=_$.getTags(Z,this.name,U),this.toStringOptions=J??null,Object.defineProperty(this,L2.MAP,{value:UX.map}),Object.defineProperty(this,L2.SCALAR,{value:QX.string}),Object.defineProperty(this,L2.SEQ,{value:XX.seq}),this.sortMapEntries=typeof z==="function"?z:z===!0?zX:null}clone(){let $=Object.create(R2.prototype,Object.getOwnPropertyDescriptors(this));return $.tags=this.tags.slice(),$}}JX.Schema=R2});var h8=R((GX)=>{var qX=C(),K2=z1(),O1=U1();function YX($,Z){let U=[],X=Z.directives===!0;if(Z.directives!==!1&&$.directives){let q=$.directives.toString($);if(q)U.push(q),X=!0;else if($.directives.docStart)X=!0}if(X)U.push("---");let Q=K2.createStringifyContext($,Z),{commentString:z}=Q.options;if($.commentBefore){if(U.length!==1)U.unshift("");let q=z($.commentBefore);U.unshift(O1.indentComment(q,""))}let J=!1,H=null;if($.contents){if(qX.isNode($.contents)){if($.contents.spaceBefore&&X)U.push("");if($.contents.commentBefore){let G=z($.contents.commentBefore);U.push(O1.indentComment(G,""))}Q.forceBlockIndent=!!$.comment,H=$.contents.comment}let q=H?void 0:()=>J=!0,Y=K2.stringify($.contents,Q,()=>H=null,q);if(H)Y+=O1.lineComment(Y,"",z(H));if((Y[0]==="|"||Y[0]===">")&&U[U.length-1]==="---")U[U.length-1]=`--- ${Y}`;else U.push(Y)}else U.push(K2.stringify($.contents,Q));if($.directives?.docEnd)if($.comment){let q=z($.comment);if(q.includes(`
|
|
54
|
+
${z.comment}`:X.comment}X=Q}$.items[U]=X$.isPair(X)?X:new J2.Pair(X)}else Z("Expected a sequence for this tag");return $}function G8($,Z,U){let{replacer:X}=U,Q=new rU.YAMLSeq($);Q.tag="tag:yaml.org,2002:pairs";let z=0;if(Z&&Symbol.iterator in Object(Z))for(let J of Z){if(typeof X==="function")J=X.call(Z,String(z++),J);let H,q;if(Array.isArray(J))if(J.length===2)H=J[0],q=J[1];else throw TypeError(`Expected [key, value] tuple: ${J}`);else if(J&&J instanceof Object){let Y=Object.keys(J);if(Y.length===1)H=Y[0],q=J[H];else throw TypeError(`Expected tuple with one key, not ${Y.length} keys`)}else H=J;Q.items.push(J2.createPair(H,q,U))}return Q}var sU={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:Y8,createNode:G8};aU.createPairs=G8;aU.pairs=sU;aU.resolvePairs=Y8});var q2=R((Z7)=>{var _8=C(),H2=X0(),_1=q0(),eU=Y0(),B8=Q$();class I0 extends eU.YAMLSeq{constructor(){super();this.add=_1.YAMLMap.prototype.add.bind(this),this.delete=_1.YAMLMap.prototype.delete.bind(this),this.get=_1.YAMLMap.prototype.get.bind(this),this.has=_1.YAMLMap.prototype.has.bind(this),this.set=_1.YAMLMap.prototype.set.bind(this),this.tag=I0.tag}toJSON($,Z){if(!Z)return super.toJSON($);let U=new Map;if(Z?.onCreate)Z.onCreate(U);for(let X of this.items){let Q,z;if(_8.isPair(X))Q=H2.toJS(X.key,"",Z),z=H2.toJS(X.value,Q,Z);else Q=H2.toJS(X,"",Z);if(U.has(Q))throw Error("Ordered maps must not include duplicate keys");U.set(Q,z)}return U}static from($,Z,U){let X=B8.createPairs($,Z,U),Q=new this;return Q.items=X.items,Q}}I0.tag="tag:yaml.org,2002:omap";var $7={collection:"seq",identify:($)=>$ instanceof Map,nodeClass:I0,default:!1,tag:"tag:yaml.org,2002:omap",resolve($,Z){let U=B8.resolvePairs($,Z),X=[];for(let{key:Q}of U.items)if(_8.isScalar(Q))if(X.includes(Q.value))Z(`Ordered maps must not include duplicate keys: ${Q.value}`);else X.push(Q.value);return Object.assign(new I0,U)},createNode:($,Z,U)=>I0.from($,Z,U)};Z7.YAMLOMap=I0;Z7.omap=$7});var I8=R((Q7)=>{var V8=x();function O8({value:$,source:Z},U){if(Z&&($?W8:D8).test.test(Z))return Z;return $?U.options.trueStr:U.options.falseStr}var W8={identify:($)=>$===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new V8.Scalar(!0),stringify:O8},D8={identify:($)=>$===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new V8.Scalar(!1),stringify:O8};Q7.falseTag=D8;Q7.trueTag=W8});var L8=R((_7)=>{var H7=x(),Y2=h0(),q7={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:($)=>$.slice(-3).toLowerCase()==="nan"?NaN:$[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:Y2.stringifyNumber},Y7={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:($)=>parseFloat($.replace(/_/g,"")),stringify($){let Z=Number($.value);return isFinite(Z)?Z.toExponential():Y2.stringifyNumber($)}},G7={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve($){let Z=new H7.Scalar(parseFloat($.replace(/_/g,""))),U=$.indexOf(".");if(U!==-1){let X=$.substring(U+1).replace(/_/g,"");if(X[X.length-1]==="0")Z.minFractionDigits=X.length}return Z},stringify:Y2.stringifyNumber};_7.float=G7;_7.floatExp=Y7;_7.floatNaN=q7});var M8=R((R7)=>{var R8=h0(),B1=($)=>typeof $==="bigint"||Number.isInteger($);function z$($,Z,U,{intAsBigInt:X}){let Q=$[0];if(Q==="-"||Q==="+")Z+=1;if($=$.substring(Z).replace(/_/g,""),X){switch(U){case 2:$=`0b${$}`;break;case 8:$=`0o${$}`;break;case 16:$=`0x${$}`;break}let J=BigInt($);return Q==="-"?BigInt(-1)*J:J}let z=parseInt($,U);return Q==="-"?-1*z:z}function G2($,Z,U){let{value:X}=$;if(B1(X)){let Q=X.toString(Z);return X<0?"-"+U+Q.substr(1):U+Q}return R8.stringifyNumber($)}var W7={identify:B1,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:($,Z,U)=>z$($,2,2,U),stringify:($)=>G2($,2,"0b")},D7={identify:B1,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:($,Z,U)=>z$($,1,8,U),stringify:($)=>G2($,8,"0")},I7={identify:B1,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:($,Z,U)=>z$($,0,10,U),stringify:R8.stringifyNumber},L7={identify:B1,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:($,Z,U)=>z$($,2,16,U),stringify:($)=>G2($,16,"0x")};R7.int=I7;R7.intBin=W7;R7.intHex=L7;R7.intOct=D7});var _2=R((T7)=>{var q$=C(),J$=J0(),H$=q0();class L0 extends H$.YAMLMap{constructor($){super($);this.tag=L0.tag}add($){let Z;if(q$.isPair($))Z=$;else if($&&typeof $==="object"&&"key"in $&&"value"in $&&$.value===null)Z=new J$.Pair($.key,null);else Z=new J$.Pair($,null);if(!H$.findPair(this.items,Z.key))this.items.push(Z)}get($,Z){let U=H$.findPair(this.items,$);return!Z&&q$.isPair(U)?q$.isScalar(U.key)?U.key.value:U.key:U}set($,Z){if(typeof Z!=="boolean")throw Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof Z}`);let U=H$.findPair(this.items,$);if(U&&!Z)this.items.splice(this.items.indexOf(U),1);else if(!U&&Z)this.items.push(new J$.Pair($))}toJSON($,Z){return super.toJSON($,Z,Set)}toString($,Z,U){if(!$)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},$,{allNullValues:!0}),Z,U);else throw Error("Set items must all have null values")}static from($,Z,U){let{replacer:X}=U,Q=new this($);if(Z&&Symbol.iterator in Object(Z))for(let z of Z){if(typeof X==="function")z=X.call(Z,z,z);Q.items.push(J$.createPair(z,null,U))}return Q}}L0.tag="tag:yaml.org,2002:set";var A7={collection:"map",identify:($)=>$ instanceof Set,nodeClass:L0,default:!1,tag:"tag:yaml.org,2002:set",createNode:($,Z,U)=>L0.from($,Z,U),resolve($,Z){if(q$.isMap($))if($.hasAllNullValues(!0))return Object.assign(new L0,$);else Z("Set items must all have null values");else Z("Expected a mapping for this tag");return $}};T7.YAMLSet=L0;T7.set=A7});var V2=R((E7)=>{var C7=h0();function B2($,Z){let U=$[0],X=U==="-"||U==="+"?$.substring(1):$,Q=(J)=>Z?BigInt(J):Number(J),z=X.replace(/_/g,"").split(":").reduce((J,H)=>J*Q(60)+Q(H),Q(0));return U==="-"?Q(-1)*z:z}function K8($){let{value:Z}=$,U=(J)=>J;if(typeof Z==="bigint")U=(J)=>BigInt(J);else if(isNaN(Z)||!isFinite(Z))return C7.stringifyNumber($);let X="";if(Z<0)X="-",Z*=U(-1);let Q=U(60),z=[Z%Q];if(Z<60)z.unshift(0);else if(Z=(Z-z[0])/Q,z.unshift(Z%Q),Z>=60)Z=(Z-z[0])/Q,z.unshift(Z);return X+z.map((J)=>String(J).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}var b7={identify:($)=>typeof $==="bigint"||Number.isInteger($),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:($,Z,{intAsBigInt:U})=>B2($,U),stringify:K8},S7={identify:($)=>typeof $==="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:($)=>B2($,!1),stringify:K8},F8={identify:($)=>$ instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve($){let Z=$.match(F8.test);if(!Z)throw Error("!!timestamp expects a date, starting with yyyy-mm-dd");let[,U,X,Q,z,J,H]=Z.map(Number),q=Z[7]?Number((Z[7]+"00").substr(1,3)):0,Y=Date.UTC(U,X-1,Q,z||0,J||0,H||0,q),G=Z[8];if(G&&G!=="Z"){let _=B2(G,!1);if(Math.abs(_)<30)_*=60;Y-=60000*_}return new Date(Y)},stringify:({value:$})=>$?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""};E7.floatTime=S7;E7.intTime=b7;E7.timestamp=F8});var A8=R((c7)=>{var h7=g0(),y7=$$(),f7=x0(),u7=Y1(),k7=z2(),P8=I8(),O2=L8(),Y$=M8(),v7=i1(),m7=q2(),p7=Q$(),l7=_2(),W2=V2(),d7=[h7.map,f7.seq,u7.string,y7.nullTag,P8.trueTag,P8.falseTag,Y$.intBin,Y$.intOct,Y$.int,Y$.intHex,O2.floatNaN,O2.floatExp,O2.float,k7.binary,v7.merge,m7.omap,p7.pairs,l7.set,W2.intTime,W2.floatTime,W2.timestamp];c7.schema=d7});var x8=R(($X)=>{var C8=g0(),r7=$$(),b8=x0(),s7=Y1(),a7=o$(),D2=e$(),I2=Z2(),n7=J8(),o7=q8(),S8=z2(),V1=i1(),E8=q2(),j8=Q$(),T8=A8(),g8=_2(),G$=V2(),N8=new Map([["core",n7.schema],["failsafe",[C8.map,b8.seq,s7.string]],["json",o7.schema],["yaml11",T8.schema],["yaml-1.1",T8.schema]]),w8={binary:S8.binary,bool:a7.boolTag,float:D2.float,floatExp:D2.floatExp,floatNaN:D2.floatNaN,floatTime:G$.floatTime,int:I2.int,intHex:I2.intHex,intOct:I2.intOct,intTime:G$.intTime,map:C8.map,merge:V1.merge,null:r7.nullTag,omap:E8.omap,pairs:j8.pairs,seq:b8.seq,set:g8.set,timestamp:G$.timestamp},t7={"tag:yaml.org,2002:binary":S8.binary,"tag:yaml.org,2002:merge":V1.merge,"tag:yaml.org,2002:omap":E8.omap,"tag:yaml.org,2002:pairs":j8.pairs,"tag:yaml.org,2002:set":g8.set,"tag:yaml.org,2002:timestamp":G$.timestamp};function e7($,Z,U){let X=N8.get(Z);if(X&&!$)return U&&!X.includes(V1.merge)?X.concat(V1.merge):X.slice();let Q=X;if(!Q)if(Array.isArray($))Q=[];else{let z=Array.from(N8.keys()).filter((J)=>J!=="yaml11").map((J)=>JSON.stringify(J)).join(", ");throw Error(`Unknown schema "${Z}"; use one of ${z} or define customTags array`)}if(Array.isArray($))for(let z of $)Q=Q.concat(z);else if(typeof $==="function")Q=$(Q.slice());if(U)Q=Q.concat(V1.merge);return Q.reduce((z,J)=>{let H=typeof J==="string"?w8[J]:J;if(!H){let q=JSON.stringify(J),Y=Object.keys(w8).map((G)=>JSON.stringify(G)).join(", ");throw Error(`Unknown custom tag ${q}; use one of ${Y}`)}if(!z.includes(H))z.push(H);return z},[])}$X.coreKnownTags=t7;$X.getTags=e7});var M2=R((HX)=>{var L2=C(),XX=g0(),QX=x0(),zX=Y1(),_$=x8(),JX=($,Z)=>$.key<Z.key?-1:$.key>Z.key?1:0;class R2{constructor({compat:$,customTags:Z,merge:U,resolveKnownTags:X,schema:Q,sortMapEntries:z,toStringDefaults:J}){this.compat=Array.isArray($)?_$.getTags($,"compat"):$?_$.getTags(null,$):null,this.name=typeof Q==="string"&&Q||"core",this.knownTags=X?_$.coreKnownTags:{},this.tags=_$.getTags(Z,this.name,U),this.toStringOptions=J??null,Object.defineProperty(this,L2.MAP,{value:XX.map}),Object.defineProperty(this,L2.SCALAR,{value:zX.string}),Object.defineProperty(this,L2.SEQ,{value:QX.seq}),this.sortMapEntries=typeof z==="function"?z:z===!0?JX:null}clone(){let $=Object.create(R2.prototype,Object.getOwnPropertyDescriptors(this));return $.tags=this.tags.slice(),$}}HX.Schema=R2});var h8=R((_X)=>{var YX=C(),K2=z1(),O1=U1();function GX($,Z){let U=[],X=Z.directives===!0;if(Z.directives!==!1&&$.directives){let q=$.directives.toString($);if(q)U.push(q),X=!0;else if($.directives.docStart)X=!0}if(X)U.push("---");let Q=K2.createStringifyContext($,Z),{commentString:z}=Q.options;if($.commentBefore){if(U.length!==1)U.unshift("");let q=z($.commentBefore);U.unshift(O1.indentComment(q,""))}let J=!1,H=null;if($.contents){if(YX.isNode($.contents)){if($.contents.spaceBefore&&X)U.push("");if($.contents.commentBefore){let G=z($.contents.commentBefore);U.push(O1.indentComment(G,""))}Q.forceBlockIndent=!!$.comment,H=$.contents.comment}let q=H?void 0:()=>J=!0,Y=K2.stringify($.contents,Q,()=>H=null,q);if(H)Y+=O1.lineComment(Y,"",z(H));if((Y[0]==="|"||Y[0]===">")&&U[U.length-1]==="---")U[U.length-1]=`--- ${Y}`;else U.push(Y)}else U.push(K2.stringify($.contents,Q));if($.directives?.docEnd)if($.comment){let q=z($.comment);if(q.includes(`
|
|
55
55
|
`))U.push("..."),U.push(O1.indentComment(q,""));else U.push(`... ${q}`)}else U.push("...");else{let q=$.comment;if(q&&J)q=q.replace(/^\n+/,"");if(q){if((!J||H)&&U[U.length-1]!=="")U.push("");U.push(O1.indentComment(z(q),""))}}return U.join(`
|
|
56
56
|
`)+`
|
|
57
|
-
`}
|
|
57
|
+
`}_X.stringifyDocument=GX});var W1=R((MX)=>{var VX=$1(),y0=v1(),p=C(),OX=J0(),WX=X0(),DX=M2(),IX=h8(),F2=f1(),LX=m$(),RX=Z1(),P2=v$();class A2{constructor($,Z,U){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,p.NODE_TYPE,{value:p.DOC});let X=null;if(typeof Z==="function"||Array.isArray(Z))X=Z;else if(U===void 0&&Z)U=Z,Z=void 0;let Q=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},U);this.options=Q;let{version:z}=Q;if(U?._directives){if(this.directives=U._directives.atDocument(),this.directives.yaml.explicit)z=this.directives.yaml.version}else this.directives=new P2.Directives({version:z});this.setSchema(z,U),this.contents=$===void 0?null:this.createNode($,X,U)}clone(){let $=Object.create(A2.prototype,{[p.NODE_TYPE]:{value:p.DOC}});if($.commentBefore=this.commentBefore,$.comment=this.comment,$.errors=this.errors.slice(),$.warnings=this.warnings.slice(),$.options=Object.assign({},this.options),this.directives)$.directives=this.directives.clone();if($.schema=this.schema.clone(),$.contents=p.isNode(this.contents)?this.contents.clone($.schema):this.contents,this.range)$.range=this.range.slice();return $}add($){if(f0(this.contents))this.contents.add($)}addIn($,Z){if(f0(this.contents))this.contents.addIn($,Z)}createAlias($,Z){if(!$.anchor){let U=F2.anchorNames(this);$.anchor=!Z||U.has(Z)?F2.findNewAnchor(Z||"a",U):Z}return new VX.Alias($.anchor)}createNode($,Z,U){let X=void 0;if(typeof Z==="function")$=Z.call({"":$},"",$),X=Z;else if(Array.isArray(Z)){let V=(I)=>typeof I==="number"||I instanceof String||I instanceof Number,W=Z.filter(V).map(String);if(W.length>0)Z=Z.concat(W);X=Z}else if(U===void 0&&Z)U=Z,Z=void 0;let{aliasDuplicateObjects:Q,anchorPrefix:z,flow:J,keepUndefined:H,onTagObj:q,tag:Y}=U??{},{onAnchor:G,setAnchors:_,sourceObjects:B}=F2.createNodeAnchors(this,z||"a"),O={aliasDuplicateObjects:Q??!0,keepUndefined:H??!1,onAnchor:G,onTagObj:q,replacer:X,schema:this.schema,sourceObjects:B},D=RX.createNode($,Y,O);if(J&&p.isCollection(D))D.flow=!0;return _(),D}createPair($,Z,U={}){let X=this.createNode($,null,U),Q=this.createNode(Z,null,U);return new OX.Pair(X,Q)}delete($){return f0(this.contents)?this.contents.delete($):!1}deleteIn($){if(y0.isEmptyPath($)){if(this.contents==null)return!1;return this.contents=null,!0}return f0(this.contents)?this.contents.deleteIn($):!1}get($,Z){return p.isCollection(this.contents)?this.contents.get($,Z):void 0}getIn($,Z){if(y0.isEmptyPath($))return!Z&&p.isScalar(this.contents)?this.contents.value:this.contents;return p.isCollection(this.contents)?this.contents.getIn($,Z):void 0}has($){return p.isCollection(this.contents)?this.contents.has($):!1}hasIn($){if(y0.isEmptyPath($))return this.contents!==void 0;return p.isCollection(this.contents)?this.contents.hasIn($):!1}set($,Z){if(this.contents==null)this.contents=y0.collectionFromPath(this.schema,[$],Z);else if(f0(this.contents))this.contents.set($,Z)}setIn($,Z){if(y0.isEmptyPath($))this.contents=Z;else if(this.contents==null)this.contents=y0.collectionFromPath(this.schema,Array.from($),Z);else if(f0(this.contents))this.contents.setIn($,Z)}setSchema($,Z={}){if(typeof $==="number")$=String($);let U;switch($){case"1.1":if(this.directives)this.directives.yaml.version="1.1";else this.directives=new P2.Directives({version:"1.1"});U={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":if(this.directives)this.directives.yaml.version=$;else this.directives=new P2.Directives({version:$});U={resolveKnownTags:!0,schema:"core"};break;case null:if(this.directives)delete this.directives;U=null;break;default:{let X=JSON.stringify($);throw Error(`Expected '1.1', '1.2' or null as first argument, but found: ${X}`)}}if(Z.schema instanceof Object)this.schema=Z.schema;else if(U)this.schema=new DX.Schema(Object.assign(U,Z));else throw Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:$,jsonArg:Z,mapAsMap:U,maxAliasCount:X,onAnchor:Q,reviver:z}={}){let J={anchors:new Map,doc:this,keep:!$,mapAsMap:U===!0,mapKeyWarned:!1,maxAliasCount:typeof X==="number"?X:100},H=WX.toJS(this.contents,Z??"",J);if(typeof Q==="function")for(let{count:q,res:Y}of J.anchors.values())Q(Y,q);return typeof z==="function"?LX.applyReviver(z,{"":H},"",H):H}toJSON($,Z){return this.toJS({json:!0,jsonArg:$,mapAsMap:!1,onAnchor:Z})}toString($={}){if(this.errors.length>0)throw Error("Document with errors cannot be stringified");if("indent"in $&&(!Number.isInteger($.indent)||Number($.indent)<=0)){let Z=JSON.stringify($.indent);throw Error(`"indent" option must be a positive integer, not ${Z}`)}return IX.stringifyDocument(this,$)}}function f0($){if(p.isCollection($))return!0;throw Error("Expected a YAML collection as document contents")}MX.Document=A2});var D1=R((PX)=>{class B$ extends Error{constructor($,Z,U,X){super();this.name=$,this.code=U,this.message=X,this.pos=Z}}class y8 extends B${constructor($,Z,U){super("YAMLParseError",$,Z,U)}}class f8 extends B${constructor($,Z,U){super("YAMLWarning",$,Z,U)}}var FX=($,Z)=>(U)=>{if(U.pos[0]===-1)return;U.linePos=U.pos.map((H)=>Z.linePos(H));let{line:X,col:Q}=U.linePos[0];U.message+=` at line ${X}, column ${Q}`;let z=Q-1,J=$.substring(Z.lineStarts[X-1],Z.lineStarts[X]).replace(/[\n\r]+$/,"");if(z>=60&&J.length>80){let H=Math.min(z-39,J.length-79);J="…"+J.substring(H),z-=H-1}if(J.length>80)J=J.substring(0,79)+"…";if(X>1&&/^ *$/.test(J.substring(0,z))){let H=$.substring(Z.lineStarts[X-2],Z.lineStarts[X-1]);if(H.length>80)H=H.substring(0,79)+`…
|
|
58
58
|
`;J=H+J}if(/[^ ]/.test(J)){let H=1,q=U.linePos[1];if(q?.line===X&&q.col>Q)H=Math.max(1,Math.min(q.col-Q,80-z));let Y=" ".repeat(z)+"^".repeat(H);U.message+=`:
|
|
59
59
|
|
|
60
60
|
${J}
|
|
61
61
|
${Y}
|
|
62
|
-
`}};
|
|
63
|
-
`))return!0;if($.end){for(let Z of $.end)if(Z.type==="newline")return!0}return!1;case"flow-collection":for(let Z of $.items){for(let U of Z.start)if(U.type==="newline")return!0;if(Z.sep){for(let U of Z.sep)if(U.type==="newline")return!0}if(T2(Z.key)||T2(Z.value))return!0}return!1;default:return!0}}
|
|
64
|
-
`+V.comment;else H.comment=V.comment;continue}if(V.newlineAfterProp||
|
|
65
|
-
`+F.comment;else L.comment=F.comment;let A=new k8.Pair(L);if(U.options.keepSourceTokens)A.srcToken=G;H.items.push(A)}}if(Y&&Y<q)Q(Y,"IMPOSSIBLE","Map comment with trailing content");return H.range=[X.offset,q,Y??q],H}
|
|
66
|
-
`+N.comment;else Y.comment=N.comment;_=N.end;continue}if(!J&&U.options.strict&&
|
|
62
|
+
`}};PX.YAMLError=B$;PX.YAMLParseError=y8;PX.YAMLWarning=f8;PX.prettifyError=FX});var I1=R((bX)=>{function CX($,{flow:Z,indicator:U,next:X,offset:Q,onError:z,parentIndent:J,startOnNewline:H}){let q=!1,Y=H,G=H,_="",B="",O=!1,D=!1,V=null,W=null,I=null,L=null,F=null,A=null,T=null;for(let P of $){if(D){if(P.type!=="space"&&P.type!=="newline"&&P.type!=="comma")z(P.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space");D=!1}if(V){if(Y&&P.type!=="comment"&&P.type!=="newline")z(V,"TAB_AS_INDENT","Tabs are not allowed as indentation");V=null}switch(P.type){case"space":if(!Z&&(U!=="doc-start"||X?.type!=="flow-collection")&&P.source.includes("\t"))V=P;G=!0;break;case"comment":{if(!G)z(P,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let w=P.source.substring(1)||" ";if(!_)_=w;else _+=B+w;B="",Y=!1;break}case"newline":if(Y){if(_)_+=P.source;else if(!A||U!=="seq-item-ind")q=!0}else B+=P.source;if(Y=!0,O=!0,W||I)L=P;G=!0;break;case"anchor":if(W)z(P,"MULTIPLE_ANCHORS","A node can have at most one anchor");if(P.source.endsWith(":"))z(P.offset+P.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0);W=P,T??(T=P.offset),Y=!1,G=!1,D=!0;break;case"tag":{if(I)z(P,"MULTIPLE_TAGS","A node can have at most one tag");I=P,T??(T=P.offset),Y=!1,G=!1,D=!0;break}case U:if(W||I)z(P,"BAD_PROP_ORDER",`Anchors and tags must be after the ${P.source} indicator`);if(A)z(P,"UNEXPECTED_TOKEN",`Unexpected ${P.source} in ${Z??"collection"}`);A=P,Y=U==="seq-item-ind"||U==="explicit-key-ind",G=!1;break;case"comma":if(Z){if(F)z(P,"UNEXPECTED_TOKEN",`Unexpected , in ${Z}`);F=P,Y=!1,G=!1;break}default:z(P,"UNEXPECTED_TOKEN",`Unexpected ${P.type} token`),Y=!1,G=!1}}let N=$[$.length-1],b=N?N.offset+N.source.length:Q;if(D&&X&&X.type!=="space"&&X.type!=="newline"&&X.type!=="comma"&&(X.type!=="scalar"||X.source!==""))z(X.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space");if(V&&(Y&&V.indent<=J||X?.type==="block-map"||X?.type==="block-seq"))z(V,"TAB_AS_INDENT","Tabs are not allowed as indentation");return{comma:F,found:A,spaceBefore:q,comment:_,hasNewline:O,anchor:W,tag:I,newlineAfterProp:L,end:b,start:T??b}}bX.resolveProps=CX});var V$=R((EX)=>{function T2($){if(!$)return null;switch($.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if($.source.includes(`
|
|
63
|
+
`))return!0;if($.end){for(let Z of $.end)if(Z.type==="newline")return!0}return!1;case"flow-collection":for(let Z of $.items){for(let U of Z.start)if(U.type==="newline")return!0;if(Z.sep){for(let U of Z.sep)if(U.type==="newline")return!0}if(T2(Z.key)||T2(Z.value))return!0}return!1;default:return!0}}EX.containsNewline=T2});var N2=R((hX)=>{var gX=V$();function xX($,Z,U){if(Z?.type==="flow-collection"){let X=Z.end[0];if(X.indent===$&&(X.source==="]"||X.source==="}")&&gX.containsNewline(Z))U(X,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}hX.flowIndentCheck=xX});var w2=R((uX)=>{var u8=C();function fX($,Z,U){let{uniqueKeys:X}=$.options;if(X===!1)return!1;let Q=typeof X==="function"?X:(z,J)=>z===J||u8.isScalar(z)&&u8.isScalar(J)&&z.value===J.value;return Z.some((z)=>Q(z.key,U))}uX.mapIncludes=fX});var l8=R((dX)=>{var k8=J0(),vX=q0(),v8=I1(),mX=V$(),m8=N2(),pX=w2(),p8="All mapping items must start at the same column";function lX({composeNode:$,composeEmptyNode:Z},U,X,Q,z){let H=new(z?.nodeClass??vX.YAMLMap)(U.schema);if(U.atRoot)U.atRoot=!1;let q=X.offset,Y=null;for(let G of X.items){let{start:_,key:B,sep:O,value:D}=G,V=v8.resolveProps(_,{indicator:"explicit-key-ind",next:B??O?.[0],offset:q,onError:Q,parentIndent:X.indent,startOnNewline:!0}),W=!V.found;if(W){if(B){if(B.type==="block-seq")Q(q,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key");else if("indent"in B&&B.indent!==X.indent)Q(q,"BAD_INDENT",p8)}if(!V.anchor&&!V.tag&&!O){if(Y=V.end,V.comment)if(H.comment)H.comment+=`
|
|
64
|
+
`+V.comment;else H.comment=V.comment;continue}if(V.newlineAfterProp||mX.containsNewline(B))Q(B??_[_.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else if(V.found?.indent!==X.indent)Q(q,"BAD_INDENT",p8);U.atKey=!0;let I=V.end,L=B?$(U,B,V,Q):Z(U,I,_,null,V,Q);if(U.schema.compat)m8.flowIndentCheck(X.indent,B,Q);if(U.atKey=!1,pX.mapIncludes(U,H.items,L))Q(I,"DUPLICATE_KEY","Map keys must be unique");let F=v8.resolveProps(O??[],{indicator:"map-value-ind",next:D,offset:L.range[2],onError:Q,parentIndent:X.indent,startOnNewline:!B||B.type==="block-scalar"});if(q=F.end,F.found){if(W){if(D?.type==="block-map"&&!F.hasNewline)Q(q,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings");if(U.options.strict&&V.start<F.found.offset-1024)Q(L.range,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit block mapping key")}let A=D?$(U,D,F,Q):Z(U,q,O,null,F,Q);if(U.schema.compat)m8.flowIndentCheck(X.indent,D,Q);q=A.range[2];let T=new k8.Pair(L,A);if(U.options.keepSourceTokens)T.srcToken=G;H.items.push(T)}else{if(W)Q(L.range,"MISSING_CHAR","Implicit map keys need to be followed by map values");if(F.comment)if(L.comment)L.comment+=`
|
|
65
|
+
`+F.comment;else L.comment=F.comment;let A=new k8.Pair(L);if(U.options.keepSourceTokens)A.srcToken=G;H.items.push(A)}}if(Y&&Y<q)Q(Y,"IMPOSSIBLE","Map comment with trailing content");return H.range=[X.offset,q,Y??q],H}dX.resolveBlockMap=lX});var d8=R((nX)=>{var iX=Y0(),rX=I1(),sX=N2();function aX({composeNode:$,composeEmptyNode:Z},U,X,Q,z){let H=new(z?.nodeClass??iX.YAMLSeq)(U.schema);if(U.atRoot)U.atRoot=!1;if(U.atKey)U.atKey=!1;let q=X.offset,Y=null;for(let{start:G,value:_}of X.items){let B=rX.resolveProps(G,{indicator:"seq-item-ind",next:_,offset:q,onError:Q,parentIndent:X.indent,startOnNewline:!0});if(!B.found)if(B.anchor||B.tag||_)if(_?.type==="block-seq")Q(B.end,"BAD_INDENT","All sequence items must start at the same column");else Q(q,"MISSING_CHAR","Sequence item without - indicator");else{if(Y=B.end,B.comment)H.comment=B.comment;continue}let O=_?$(U,_,B,Q):Z(U,B.end,G,null,B,Q);if(U.schema.compat)sX.flowIndentCheck(X.indent,_,Q);q=O.range[2],H.items.push(O)}return H.range=[X.offset,q,Y??q],H}nX.resolveBlockSeq=aX});var u0=R((eX)=>{function tX($,Z,U,X){let Q="";if($){let z=!1,J="";for(let H of $){let{source:q,type:Y}=H;switch(Y){case"space":z=!0;break;case"comment":{if(U&&!z)X(H,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");let G=q.substring(1)||" ";if(!Q)Q=G;else Q+=J+G;J="";break}case"newline":if(Q)J+=q;z=!0;break;default:X(H,"UNEXPECTED_TOKEN",`Unexpected ${Y} at node end`)}Z+=q.length}}return{comment:Q,offset:Z}}eX.resolveEnd=tX});var r8=R((qQ)=>{var ZQ=C(),UQ=J0(),c8=q0(),XQ=Y0(),QQ=u0(),i8=I1(),zQ=V$(),JQ=w2(),C2="Block collections are not allowed within flow collections",b2=($)=>$&&($.type==="block-map"||$.type==="block-seq");function HQ({composeNode:$,composeEmptyNode:Z},U,X,Q,z){let J=X.start.source==="{",H=J?"flow map":"flow sequence",Y=new(z?.nodeClass??(J?c8.YAMLMap:XQ.YAMLSeq))(U.schema);Y.flow=!0;let G=U.atRoot;if(G)U.atRoot=!1;if(U.atKey)U.atKey=!1;let _=X.offset+X.start.source.length;for(let W=0;W<X.items.length;++W){let I=X.items[W],{start:L,key:F,sep:A,value:T}=I,N=i8.resolveProps(L,{flow:H,indicator:"explicit-key-ind",next:F??A?.[0],offset:_,onError:Q,parentIndent:X.indent,startOnNewline:!1});if(!N.found){if(!N.anchor&&!N.tag&&!A&&!T){if(W===0&&N.comma)Q(N.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${H}`);else if(W<X.items.length-1)Q(N.start,"UNEXPECTED_TOKEN",`Unexpected empty item in ${H}`);if(N.comment)if(Y.comment)Y.comment+=`
|
|
66
|
+
`+N.comment;else Y.comment=N.comment;_=N.end;continue}if(!J&&U.options.strict&&zQ.containsNewline(F))Q(F,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line")}if(W===0){if(N.comma)Q(N.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${H}`)}else{if(!N.comma)Q(N.start,"MISSING_CHAR",`Missing , between ${H} items`);if(N.comment){let b="";$:for(let P of L)switch(P.type){case"comma":case"space":break;case"comment":b=P.source.substring(1);break $;default:break $}if(b){let P=Y.items[Y.items.length-1];if(ZQ.isPair(P))P=P.value??P.key;if(P.comment)P.comment+=`
|
|
67
67
|
`+b;else P.comment=b;N.comment=N.comment.substring(b.length+1)}}}if(!J&&!A&&!N.found){let b=T?$(U,T,N,Q):Z(U,N.end,A,null,N,Q);if(Y.items.push(b),_=b.range[2],b2(T))Q(b.range,"BLOCK_IN_FLOW",C2)}else{U.atKey=!0;let b=N.end,P=F?$(U,F,N,Q):Z(U,b,L,null,N,Q);if(b2(F))Q(P.range,"BLOCK_IN_FLOW",C2);U.atKey=!1;let w=i8.resolveProps(A??[],{flow:H,indicator:"map-value-ind",next:T,offset:P.range[2],onError:Q,parentIndent:X.indent,startOnNewline:!1});if(w.found){if(!J&&!N.found&&U.options.strict){if(A)for(let g of A){if(g===w.found)break;if(g.type==="newline"){Q(g,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line");break}}if(N.start<w.found.offset-1024)Q(w.found,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit flow sequence key")}}else if(T)if("source"in T&&T.source?.[0]===":")Q(T,"MISSING_CHAR",`Missing space after : in ${H}`);else Q(w.start,"MISSING_CHAR",`Missing , or : between ${H} items`);let v=T?$(U,T,w,Q):w.found?Z(U,w.end,A,null,w,Q):null;if(v){if(b2(T))Q(v.range,"BLOCK_IN_FLOW",C2)}else if(w.comment)if(P.comment)P.comment+=`
|
|
68
|
-
`+w.comment;else P.comment=w.comment;let S=new
|
|
69
|
-
`+W.comment;else Y.comment=W.comment;Y.range=[X.offset,V,W.offset]}else Y.range=[X.offset,V,V];return Y}
|
|
68
|
+
`+w.comment;else P.comment=w.comment;let S=new UQ.Pair(P,v);if(U.options.keepSourceTokens)S.srcToken=I;if(J){let g=Y;if(JQ.mapIncludes(U,g.items,P))Q(b,"DUPLICATE_KEY","Map keys must be unique");g.items.push(S)}else{let g=new c8.YAMLMap(U.schema);g.flow=!0,g.items.push(S);let i0=(v??P).range;g.range=[P.range[0],i0[1],i0[2]],Y.items.push(g)}_=v?v.range[2]:w.end}}let B=J?"}":"]",[O,...D]=X.end,V=_;if(O?.source===B)V=O.offset+O.source.length;else{let W=H[0].toUpperCase()+H.substring(1),I=G?`${W} must end with a ${B}`:`${W} in block collection must be sufficiently indented and end with a ${B}`;if(Q(_,G?"MISSING_CHAR":"BAD_INDENT",I),O&&O.source.length!==1)D.unshift(O)}if(D.length>0){let W=QQ.resolveEnd(D,V,U.options.strict,Q);if(W.comment)if(Y.comment)Y.comment+=`
|
|
69
|
+
`+W.comment;else Y.comment=W.comment;Y.range=[X.offset,V,W.offset]}else Y.range=[X.offset,V,V];return Y}qQ.resolveFlowCollection=HQ});var s8=R((LQ)=>{var GQ=C(),_Q=x(),BQ=q0(),VQ=Y0(),OQ=l8(),WQ=d8(),DQ=r8();function S2($,Z,U,X,Q,z){let J=U.type==="block-map"?OQ.resolveBlockMap($,Z,U,X,z):U.type==="block-seq"?WQ.resolveBlockSeq($,Z,U,X,z):DQ.resolveFlowCollection($,Z,U,X,z),H=J.constructor;if(Q==="!"||Q===H.tagName)return J.tag=H.tagName,J;if(Q)J.tag=Q;return J}function IQ($,Z,U,X,Q){let z=X.tag,J=!z?null:Z.directives.tagName(z.source,(B)=>Q(z,"TAG_RESOLVE_FAILED",B));if(U.type==="block-seq"){let{anchor:B,newlineAfterProp:O}=X,D=B&&z?B.offset>z.offset?B:z:B??z;if(D&&(!O||O.offset<D.offset))Q(D,"MISSING_CHAR","Missing newline after block sequence props")}let H=U.type==="block-map"?"map":U.type==="block-seq"?"seq":U.start.source==="{"?"map":"seq";if(!z||!J||J==="!"||J===BQ.YAMLMap.tagName&&H==="map"||J===VQ.YAMLSeq.tagName&&H==="seq")return S2($,Z,U,Q,J);let q=Z.schema.tags.find((B)=>B.tag===J&&B.collection===H);if(!q){let B=Z.schema.knownTags[J];if(B?.collection===H)Z.schema.tags.push(Object.assign({},B,{default:!1})),q=B;else{if(B)Q(z,"BAD_COLLECTION_TYPE",`${B.tag} used for ${H} collection, but expects ${B.collection??"scalar"}`,!0);else Q(z,"TAG_RESOLVE_FAILED",`Unresolved tag: ${J}`,!0);return S2($,Z,U,Q,J)}}let Y=S2($,Z,U,Q,J,q),G=q.resolve?.(Y,(B)=>Q(z,"TAG_RESOLVE_FAILED",B),Z.options)??Y,_=GQ.isNode(G)?G:new _Q.Scalar(G);if(_.range=Y.range,_.tag=J,q?.format)_.format=q.format;return _}LQ.composeCollection=IQ});var j2=R((PQ)=>{var E2=x();function MQ($,Z,U){let X=Z.offset,Q=KQ(Z,$.options.strict,U);if(!Q)return{value:"",type:null,comment:"",range:[X,X,X]};let z=Q.mode===">"?E2.Scalar.BLOCK_FOLDED:E2.Scalar.BLOCK_LITERAL,J=Z.source?FQ(Z.source):[],H=J.length;for(let V=J.length-1;V>=0;--V){let W=J[V][1];if(W===""||W==="\r")H=V;else break}if(H===0){let V=Q.chomp==="+"&&J.length>0?`
|
|
70
70
|
`.repeat(Math.max(1,J.length-1)):"",W=X+Q.length;if(Z.source)W+=Z.source.length;return{value:V,type:z,comment:Q.comment,range:[X,W,W]}}let q=Z.indent+Q.indent,Y=Z.offset+Q.length,G=0;for(let V=0;V<H;++V){let[W,I]=J[V];if(I===""||I==="\r"){if(Q.indent===0&&W.length>q)q=W.length}else{if(W.length<q)U(Y+W.length,"MISSING_CHAR","Block scalars with more-indented leading empty lines must use an explicit indentation indicator");if(Q.indent===0)q=W.length;if(G=V,q===0&&!$.atRoot)U(Y,"BAD_INDENT","Block scalar values in collections must be indented");break}Y+=W.length+I.length+1}for(let V=J.length-1;V>=H;--V)if(J[V][0].length>q)H=V+1;let _="",B="",O=!1;for(let V=0;V<G;++V)_+=J[V][0].slice(q)+`
|
|
71
71
|
`;for(let V=G;V<H;++V){let[W,I]=J[V];Y+=W.length+I.length+1;let L=I[I.length-1]==="\r";if(L)I=I.slice(0,-1);if(I&&W.length<q){let A=`Block scalar lines must not be less indented than their ${Q.indent?"explicit indentation indicator":"first line"}`;U(Y-I.length-(L?2:1),"BAD_INDENT",A),W=""}if(z===E2.Scalar.BLOCK_LITERAL)_+=B+W.slice(q)+I,B=`
|
|
72
72
|
`;else if(W.length>q||I[0]==="\t"){if(B===" ")B=`
|
|
@@ -81,41 +81,41 @@ ${Y}
|
|
|
81
81
|
`+J[V][0].slice(q);if(_[_.length-1]!==`
|
|
82
82
|
`)_+=`
|
|
83
83
|
`;break;default:_+=`
|
|
84
|
-
`}let D=X+Q.length+Z.source.length;return{value:_,type:z,comment:Q.comment,range:[X,D,D]}}function
|
|
84
|
+
`}let D=X+Q.length+Z.source.length;return{value:_,type:z,comment:Q.comment,range:[X,D,D]}}function KQ({offset:$,props:Z},U,X){if(Z[0].type!=="block-scalar-header")return X(Z[0],"IMPOSSIBLE","Block scalar header not found"),null;let{source:Q}=Z[0],z=Q[0],J=0,H="",q=-1;for(let B=1;B<Q.length;++B){let O=Q[B];if(!H&&(O==="-"||O==="+"))H=O;else{let D=Number(O);if(!J&&D)J=D;else if(q===-1)q=$+B}}if(q!==-1)X(q,"UNEXPECTED_TOKEN",`Block scalar header includes extra characters: ${Q}`);let Y=!1,G="",_=Q.length;for(let B=1;B<Z.length;++B){let O=Z[B];switch(O.type){case"space":Y=!0;case"newline":_+=O.source.length;break;case"comment":if(U&&!Y)X(O,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");_+=O.source.length,G=O.source.substring(1);break;case"error":X(O,"UNEXPECTED_TOKEN",O.message),_+=O.source.length;break;default:{let D=`Unexpected token in block scalar header: ${O.type}`;X(O,"UNEXPECTED_TOKEN",D);let V=O.source;if(V&&typeof V==="string")_+=V.length}}}return{mode:z,indent:J,chomp:H,comment:G,length:_}}function FQ($){let Z=$.split(/\n( *)/),U=Z[0],X=U.match(/^( *)/),z=[X?.[1]?[X[1],U.slice(X[1].length)]:["",U]];for(let J=1;J<Z.length;J+=2)z.push([Z[J],Z[J+1]]);return z}PQ.resolveBlockScalar=MQ});var x2=R((gQ)=>{var g2=x(),TQ=u0();function NQ($,Z,U){let{offset:X,type:Q,source:z,end:J}=$,H,q,Y=(B,O,D)=>U(X+B,O,D);switch(Q){case"scalar":H=g2.Scalar.PLAIN,q=wQ(z,Y);break;case"single-quoted-scalar":H=g2.Scalar.QUOTE_SINGLE,q=CQ(z,Y);break;case"double-quoted-scalar":H=g2.Scalar.QUOTE_DOUBLE,q=bQ(z,Y);break;default:return U($,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${Q}`),{value:"",type:null,comment:"",range:[X,X+z.length,X+z.length]}}let G=X+z.length,_=TQ.resolveEnd(J,G,Z,U);return{value:q,type:H,comment:_.comment,range:[X,G,_.offset]}}function wQ($,Z){let U="";switch($[0]){case"\t":U="a tab character";break;case",":U="flow indicator character ,";break;case"%":U="directive indicator character %";break;case"|":case">":{U=`block scalar indicator ${$[0]}`;break}case"@":case"`":{U=`reserved character ${$[0]}`;break}}if(U)Z(0,"BAD_SCALAR_START",`Plain value cannot start with ${U}`);return a8($)}function CQ($,Z){if($[$.length-1]!=="'"||$.length===1)Z($.length,"MISSING_CHAR","Missing closing 'quote");return a8($.slice(1,-1)).replace(/''/g,"'")}function a8($){let Z,U;try{Z=new RegExp(`(.*?)(?<![ ])[ ]*\r?
|
|
85
85
|
`,"sy"),U=new RegExp(`[ ]*(.*?)(?:(?<![ ])[ ]*)?\r?
|
|
86
86
|
`,"sy")}catch{Z=/(.*?)[ \t]*\r?\n/sy,U=/[ \t]*(.*?)[ \t]*\r?\n/sy}let X=Z.exec($);if(!X)return $;let Q=X[1],z=" ",J=Z.lastIndex;U.lastIndex=J;while(X=U.exec($)){if(X[1]==="")if(z===`
|
|
87
87
|
`)Q+=z;else z=`
|
|
88
|
-
`;else Q+=z+X[1],z=" ";J=U.lastIndex}let H=/[ \t]*(.*)/sy;return H.lastIndex=J,X=H.exec($),Q+z+(X?.[1]??"")}function
|
|
88
|
+
`;else Q+=z+X[1],z=" ";J=U.lastIndex}let H=/[ \t]*(.*)/sy;return H.lastIndex=J,X=H.exec($),Q+z+(X?.[1]??"")}function bQ($,Z){let U="";for(let X=1;X<$.length-1;++X){let Q=$[X];if(Q==="\r"&&$[X+1]===`
|
|
89
89
|
`)continue;if(Q===`
|
|
90
|
-
`){let{fold:z,offset:J}=
|
|
90
|
+
`){let{fold:z,offset:J}=SQ($,X);U+=z,X=J}else if(Q==="\\"){let z=$[++X],J=EQ[z];if(J)U+=J;else if(z===`
|
|
91
91
|
`){z=$[X+1];while(z===" "||z==="\t")z=$[++X+1]}else if(z==="\r"&&$[X+1]===`
|
|
92
|
-
`){z=$[++X+1];while(z===" "||z==="\t")z=$[++X+1]}else if(z==="x"||z==="u"||z==="U"){let H={x:2,u:4,U:8}[z];U+=
|
|
92
|
+
`){z=$[++X+1];while(z===" "||z==="\t")z=$[++X+1]}else if(z==="x"||z==="u"||z==="U"){let H={x:2,u:4,U:8}[z];U+=jQ($,X+1,H,Z),X+=H}else{let H=$.substr(X-1,2);Z(X-1,"BAD_DQ_ESCAPE",`Invalid escape sequence ${H}`),U+=H}}else if(Q===" "||Q==="\t"){let z=X,J=$[X+1];while(J===" "||J==="\t")J=$[++X+1];if(J!==`
|
|
93
93
|
`&&!(J==="\r"&&$[X+2]===`
|
|
94
|
-
`))U+=X>z?$.slice(z,X+1):Q}else U+=Q}if($[$.length-1]!=='"'||$.length===1)Z($.length,"MISSING_CHAR",'Missing closing "quote');return U}function
|
|
94
|
+
`))U+=X>z?$.slice(z,X+1):Q}else U+=Q}if($[$.length-1]!=='"'||$.length===1)Z($.length,"MISSING_CHAR",'Missing closing "quote');return U}function SQ($,Z){let U="",X=$[Z+1];while(X===" "||X==="\t"||X===`
|
|
95
95
|
`||X==="\r"){if(X==="\r"&&$[Z+2]!==`
|
|
96
96
|
`)break;if(X===`
|
|
97
97
|
`)U+=`
|
|
98
|
-
`;Z+=1,X=$[Z+1]}if(!U)U=" ";return{fold:U,offset:Z}}var
|
|
99
|
-
`,r:"\r",t:"\t",v:"\v",N:"
",_:" ",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\","\t":"\t"};function
|
|
98
|
+
`;Z+=1,X=$[Z+1]}if(!U)U=" ";return{fold:U,offset:Z}}var EQ={"0":"\x00",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:`
|
|
99
|
+
`,r:"\r",t:"\t",v:"\v",N:"
",_:" ",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\","\t":"\t"};function jQ($,Z,U,X){let Q=$.substr(Z,U),J=Q.length===U&&/^[0-9a-fA-F]+$/.test(Q)?parseInt(Q,16):NaN;if(isNaN(J)){let H=$.substr(Z-2,U+2);return X(Z-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${H}`),H}return String.fromCodePoint(J)}gQ.resolveFlowScalar=NQ});var o8=R((vQ)=>{var R0=C(),n8=x(),hQ=j2(),yQ=x2();function fQ($,Z,U,X){let{value:Q,type:z,comment:J,range:H}=Z.type==="block-scalar"?hQ.resolveBlockScalar($,Z,X):yQ.resolveFlowScalar(Z,$.options.strict,X),q=U?$.directives.tagName(U.source,(_)=>X(U,"TAG_RESOLVE_FAILED",_)):null,Y;if($.options.stringKeys&&$.atKey)Y=$.schema[R0.SCALAR];else if(q)Y=uQ($.schema,Q,q,U,X);else if(Z.type==="scalar")Y=kQ($,Q,Z,X);else Y=$.schema[R0.SCALAR];let G;try{let _=Y.resolve(Q,(B)=>X(U??Z,"TAG_RESOLVE_FAILED",B),$.options);G=R0.isScalar(_)?_:new n8.Scalar(_)}catch(_){let B=_ instanceof Error?_.message:String(_);X(U??Z,"TAG_RESOLVE_FAILED",B),G=new n8.Scalar(Q)}if(G.range=H,G.source=Q,z)G.type=z;if(q)G.tag=q;if(Y.format)G.format=Y.format;if(J)G.comment=J;return G}function uQ($,Z,U,X,Q){if(U==="!")return $[R0.SCALAR];let z=[];for(let H of $.tags)if(!H.collection&&H.tag===U)if(H.default&&H.test)z.push(H);else return H;for(let H of z)if(H.test?.test(Z))return H;let J=$.knownTags[U];if(J&&!J.collection)return $.tags.push(Object.assign({},J,{default:!1,test:void 0})),J;return Q(X,"TAG_RESOLVE_FAILED",`Unresolved tag: ${U}`,U!=="tag:yaml.org,2002:str"),$[R0.SCALAR]}function kQ({atKey:$,directives:Z,schema:U},X,Q,z){let J=U.tags.find((H)=>(H.default===!0||$&&H.default==="key")&&H.test?.test(X))||U[R0.SCALAR];if(U.compat){let H=U.compat.find((q)=>q.default&&q.test?.test(X))??U[R0.SCALAR];if(J.tag!==H.tag){let q=Z.tagString(J.tag),Y=Z.tagString(H.tag),G=`Value may be parsed as either ${q} or ${Y}`;z(Q,"TAG_RESOLVE_FAILED",G,!0)}}return J}vQ.composeScalar=fQ});var t8=R((lQ)=>{function pQ($,Z,U){if(Z){U??(U=Z.length);for(let X=U-1;X>=0;--X){let Q=Z[X];switch(Q.type){case"space":case"comment":case"newline":$-=Q.source.length;continue}Q=Z[++X];while(Q?.type==="space")$+=Q.source.length,Q=Z[++X];break}}return $}lQ.emptyScalarPosition=pQ});var Z6=R((tQ)=>{var cQ=$1(),iQ=C(),rQ=s8(),e8=o8(),sQ=u0(),aQ=t8(),nQ={composeNode:$6,composeEmptyNode:h2};function $6($,Z,U,X){let Q=$.atKey,{spaceBefore:z,comment:J,anchor:H,tag:q}=U,Y,G=!0;switch(Z.type){case"alias":if(Y=oQ($,Z,X),H||q)X(Z,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":if(Y=e8.composeScalar($,Z,q,X),H)Y.anchor=H.source.substring(1);break;case"block-map":case"block-seq":case"flow-collection":try{if(Y=rQ.composeCollection(nQ,$,Z,U,X),H)Y.anchor=H.source.substring(1)}catch(_){let B=_ instanceof Error?_.message:String(_);X(Z,"RESOURCE_EXHAUSTION",B)}break;default:{let _=Z.type==="error"?Z.message:`Unsupported token (type: ${Z.type})`;X(Z,"UNEXPECTED_TOKEN",_),G=!1}}if(Y??(Y=h2($,Z.offset,void 0,null,U,X)),H&&Y.anchor==="")X(H,"BAD_ALIAS","Anchor cannot be an empty string");if(Q&&$.options.stringKeys&&(!iQ.isScalar(Y)||typeof Y.value!=="string"||Y.tag&&Y.tag!=="tag:yaml.org,2002:str"))X(q??Z,"NON_STRING_KEY","With stringKeys, all keys must be strings");if(z)Y.spaceBefore=!0;if(J)if(Z.type==="scalar"&&Z.source==="")Y.comment=J;else Y.commentBefore=J;if($.options.keepSourceTokens&&G)Y.srcToken=Z;return Y}function h2($,Z,U,X,{spaceBefore:Q,comment:z,anchor:J,tag:H,end:q},Y){let G={type:"scalar",offset:aQ.emptyScalarPosition(Z,U,X),indent:-1,source:""},_=e8.composeScalar($,G,H,Y);if(J){if(_.anchor=J.source.substring(1),_.anchor==="")Y(J,"BAD_ALIAS","Anchor cannot be an empty string")}if(Q)_.spaceBefore=!0;if(z)_.comment=z,_.range[2]=q;return _}function oQ({options:$},{offset:Z,source:U,end:X},Q){let z=new cQ.Alias(U.substring(1));if(z.source==="")Q(Z,"BAD_ALIAS","Alias cannot be an empty string");if(z.source.endsWith(":"))Q(Z+U.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);let J=Z+U.length,H=sQ.resolveEnd(X,J,$.strict,Q);if(z.range=[Z,J,H.offset],H.comment)z.comment=H.comment;return z}tQ.composeEmptyNode=h2;tQ.composeNode=$6});var X6=R((zz)=>{var Zz=W1(),U6=Z6(),Uz=u0(),Xz=I1();function Qz($,Z,{offset:U,start:X,value:Q,end:z},J){let H=Object.assign({_directives:Z},$),q=new Zz.Document(void 0,H),Y={atKey:!1,atRoot:!0,directives:q.directives,options:q.options,schema:q.schema},G=Xz.resolveProps(X,{indicator:"doc-start",next:Q??z?.[0],offset:U,onError:J,parentIndent:0,startOnNewline:!0});if(G.found){if(q.directives.docStart=!0,Q&&(Q.type==="block-map"||Q.type==="block-seq")&&!G.hasNewline)J(G.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")}q.contents=Q?U6.composeNode(Y,Q,G,J):U6.composeEmptyNode(Y,G.end,X,null,G,J);let _=q.contents.range[2],B=Uz.resolveEnd(z,_,!1,J);if(B.comment)q.comment=B.comment;return q.range=[U,_,B.offset],q}zz.composeDoc=Qz});var y2=R((Bz)=>{var Hz=r0("process"),qz=v$(),Yz=W1(),L1=D1(),Q6=C(),Gz=X6(),_z=u0();function R1($){if(typeof $==="number")return[$,$+1];if(Array.isArray($))return $.length===2?$:[$[0],$[1]];let{offset:Z,source:U}=$;return[Z,Z+(typeof U==="string"?U.length:1)]}function z6($){let Z="",U=!1,X=!1;for(let Q=0;Q<$.length;++Q){let z=$[Q];switch(z[0]){case"#":Z+=(Z===""?"":X?`
|
|
100
100
|
|
|
101
101
|
`:`
|
|
102
|
-
`)+(z.substring(1)||" "),U=!0,X=!1;break;case"%":if($[Q+1]?.[0]!=="#")Q+=1;U=!1;break;default:if(!U)X=!0;U=!1}}return{comment:Z,afterEmptyLine:X}}class J6{constructor($={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(Z,U,X,Q)=>{let z=R1(Z);if(Q)this.warnings.push(new L1.YAMLWarning(z,U,X));else this.errors.push(new L1.YAMLParseError(z,U,X))},this.directives=new
|
|
102
|
+
`)+(z.substring(1)||" "),U=!0,X=!1;break;case"%":if($[Q+1]?.[0]!=="#")Q+=1;U=!1;break;default:if(!U)X=!0;U=!1}}return{comment:Z,afterEmptyLine:X}}class J6{constructor($={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(Z,U,X,Q)=>{let z=R1(Z);if(Q)this.warnings.push(new L1.YAMLWarning(z,U,X));else this.errors.push(new L1.YAMLParseError(z,U,X))},this.directives=new qz.Directives({version:$.version||"1.2"}),this.options=$}decorate($,Z){let{comment:U,afterEmptyLine:X}=z6(this.prelude);if(U){let Q=$.contents;if(Z)$.comment=$.comment?`${$.comment}
|
|
103
103
|
${U}`:U;else if(X||$.directives.docStart||!Q)$.commentBefore=U;else if(Q6.isCollection(Q)&&!Q.flow&&Q.items.length>0){let z=Q.items[0];if(Q6.isPair(z))z=z.key;let J=z.commentBefore;z.commentBefore=J?`${U}
|
|
104
104
|
${J}`:U}else{let z=Q.commentBefore;Q.commentBefore=z?`${U}
|
|
105
|
-
${z}`:U}}if(Z)Array.prototype.push.apply($.errors,this.errors),Array.prototype.push.apply($.warnings,this.warnings);else $.errors=this.errors,$.warnings=this.warnings;this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:z6(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose($,Z=!1,U=-1){for(let X of $)yield*this.next(X);yield*this.end(Z,U)}*next($){if(
|
|
106
|
-
${Z.comment}`:Z.comment}this.doc.range[2]=Z.offset;break}default:this.errors.push(new L1.YAMLParseError(R1($),"UNEXPECTED_TOKEN",`Unsupported token ${$.type}`))}}*end($=!1,Z=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if($){let U=Object.assign({_directives:this.directives},this.options),X=new
|
|
105
|
+
${z}`:U}}if(Z)Array.prototype.push.apply($.errors,this.errors),Array.prototype.push.apply($.warnings,this.warnings);else $.errors=this.errors,$.warnings=this.warnings;this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:z6(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose($,Z=!1,U=-1){for(let X of $)yield*this.next(X);yield*this.end(Z,U)}*next($){if(Hz.env.LOG_STREAM)console.dir($,{depth:null});switch($.type){case"directive":this.directives.add($.source,(Z,U,X)=>{let Q=R1($);Q[0]+=Z,this.onError(Q,"BAD_DIRECTIVE",U,X)}),this.prelude.push($.source),this.atDirectives=!0;break;case"document":{let Z=Gz.composeDoc(this.options,this.directives,$,this.onError);if(this.atDirectives&&!Z.directives.docStart)this.onError($,"MISSING_CHAR","Missing directives-end/doc-start indicator line");if(this.decorate(Z,!1),this.doc)yield this.doc;this.doc=Z,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push($.source);break;case"error":{let Z=$.source?`${$.message}: ${JSON.stringify($.source)}`:$.message,U=new L1.YAMLParseError(R1($),"UNEXPECTED_TOKEN",Z);if(this.atDirectives||!this.doc)this.errors.push(U);else this.doc.errors.push(U);break}case"doc-end":{if(!this.doc){this.errors.push(new L1.YAMLParseError(R1($),"UNEXPECTED_TOKEN","Unexpected doc-end without preceding document"));break}this.doc.directives.docEnd=!0;let Z=_z.resolveEnd($.end,$.offset+$.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),Z.comment){let U=this.doc.comment;this.doc.comment=U?`${U}
|
|
106
|
+
${Z.comment}`:Z.comment}this.doc.range[2]=Z.offset;break}default:this.errors.push(new L1.YAMLParseError(R1($),"UNEXPECTED_TOKEN",`Unsupported token ${$.type}`))}}*end($=!1,Z=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if($){let U=Object.assign({_directives:this.directives},this.options),X=new Yz.Document(void 0,U);if(this.atDirectives)this.onError(Z,"MISSING_CHAR","Missing directives-end indicator line");X.range=[0,Z,Z],this.decorate(X,!1),yield X}}}Bz.Composer=J6});var Y6=R((Kz)=>{var Oz=j2(),Wz=x2(),Dz=D1(),H6=Q1();function Iz($,Z=!0,U){if($){let X=(Q,z,J)=>{let H=typeof Q==="number"?Q:Array.isArray(Q)?Q[0]:Q.offset;if(U)U(H,z,J);else throw new Dz.YAMLParseError([H,H+1],z,J)};switch($.type){case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return Wz.resolveFlowScalar($,Z,X);case"block-scalar":return Oz.resolveBlockScalar({options:{strict:Z}},$,X)}}return null}function Lz($,Z){let{implicitKey:U=!1,indent:X,inFlow:Q=!1,offset:z=-1,type:J="PLAIN"}=Z,H=H6.stringifyString({type:J,value:$},{implicitKey:U,indent:X>0?" ".repeat(X):"",inFlow:Q,options:{blockQuote:!0,lineWidth:-1}}),q=Z.end??[{type:"newline",offset:-1,indent:X,source:`
|
|
107
107
|
`}];switch(H[0]){case"|":case">":{let Y=H.indexOf(`
|
|
108
108
|
`),G=H.substring(0,Y),_=H.substring(Y+1)+`
|
|
109
109
|
`,B=[{type:"block-scalar-header",offset:z,indent:X,source:G}];if(!q6(B,q))B.push({type:"newline",offset:-1,indent:X,source:`
|
|
110
|
-
`});return{type:"block-scalar",offset:z,indent:X,props:B,source:_}}case'"':return{type:"double-quoted-scalar",offset:z,indent:X,source:H,end:q};case"'":return{type:"single-quoted-scalar",offset:z,indent:X,source:H,end:q};default:return{type:"scalar",offset:z,indent:X,source:H,end:q}}}function
|
|
110
|
+
`});return{type:"block-scalar",offset:z,indent:X,props:B,source:_}}case'"':return{type:"double-quoted-scalar",offset:z,indent:X,source:H,end:q};case"'":return{type:"single-quoted-scalar",offset:z,indent:X,source:H,end:q};default:return{type:"scalar",offset:z,indent:X,source:H,end:q}}}function Rz($,Z,U={}){let{afterKey:X=!1,implicitKey:Q=!1,inFlow:z=!1,type:J}=U,H="indent"in $?$.indent:null;if(X&&typeof H==="number")H+=2;if(!J)switch($.type){case"single-quoted-scalar":J="QUOTE_SINGLE";break;case"double-quoted-scalar":J="QUOTE_DOUBLE";break;case"block-scalar":{let Y=$.props[0];if(Y.type!=="block-scalar-header")throw Error("Invalid block scalar header");J=Y.source[0]===">"?"BLOCK_FOLDED":"BLOCK_LITERAL";break}default:J="PLAIN"}let q=H6.stringifyString({type:J,value:Z},{implicitKey:Q||H===null,indent:H!==null&&H>0?" ".repeat(H):"",inFlow:z,options:{blockQuote:!0,lineWidth:-1}});switch(q[0]){case"|":case">":Mz($,q);break;case'"':f2($,q,"double-quoted-scalar");break;case"'":f2($,q,"single-quoted-scalar");break;default:f2($,q,"scalar")}}function Mz($,Z){let U=Z.indexOf(`
|
|
111
111
|
`),X=Z.substring(0,U),Q=Z.substring(U+1)+`
|
|
112
112
|
`;if($.type==="block-scalar"){let z=$.props[0];if(z.type!=="block-scalar-header")throw Error("Invalid block scalar header");z.source=X,$.source=Q}else{let{offset:z}=$,J="indent"in $?$.indent:-1,H=[{type:"block-scalar-header",offset:z,indent:J,source:X}];if(!q6(H,"end"in $?$.end:void 0))H.push({type:"newline",offset:-1,indent:J,source:`
|
|
113
113
|
`});for(let q of Object.keys($))if(q!=="type"&&q!=="offset")delete $[q];Object.assign($,{type:"block-scalar",indent:J,props:H,source:Q})}}function q6($,Z){if(Z)for(let U of Z)switch(U.type){case"space":case"comment":$.push(U);break;case"newline":return $.push(U),!0}return!1}function f2($,Z,U){switch($.type){case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":$.type=U,$.source=Z;break;case"block-scalar":{let X=$.props.slice(1),Q=Z.length;if($.props[0].type==="block-scalar-header")Q-=$.props[0].source.length;for(let z of X)z.offset+=Q;delete $.props,Object.assign($,{type:U,source:Z,end:X});break}case"block-map":case"block-seq":{let Q={type:"newline",offset:$.offset+Z.length,indent:$.indent,source:`
|
|
114
|
-
`};delete $.items,Object.assign($,{type:U,source:Z,end:[Q]});break}default:{let X="indent"in $?$.indent:-1,Q="end"in $&&Array.isArray($.end)?$.end.filter((z)=>z.type==="space"||z.type==="comment"||z.type==="newline"):[];for(let z of Object.keys($))if(z!=="type"&&z!=="offset")delete $[z];Object.assign($,{type:U,indent:X,source:Z,end:Q})}}}
|
|
114
|
+
`};delete $.items,Object.assign($,{type:U,source:Z,end:[Q]});break}default:{let X="indent"in $?$.indent:-1,Q="end"in $&&Array.isArray($.end)?$.end.filter((z)=>z.type==="space"||z.type==="comment"||z.type==="newline"):[];for(let z of Object.keys($))if(z!=="type"&&z!=="offset")delete $[z];Object.assign($,{type:U,indent:X,source:Z,end:Q})}}}Kz.createScalarToken=Lz;Kz.resolveAsScalar=Iz;Kz.setScalarValue=Rz});var G6=R((Nz)=>{var Tz=($)=>("type"in $)?W$($):O$($);function W$($){switch($.type){case"block-scalar":{let Z="";for(let U of $.props)Z+=W$(U);return Z+$.source}case"block-map":case"block-seq":{let Z="";for(let U of $.items)Z+=O$(U);return Z}case"flow-collection":{let Z=$.start.source;for(let U of $.items)Z+=O$(U);for(let U of $.end)Z+=U.source;return Z}case"document":{let Z=O$($);if($.end)for(let U of $.end)Z+=U.source;return Z}default:{let Z=$.source;if("end"in $&&$.end)for(let U of $.end)Z+=U.source;return Z}}}function O$({start:$,key:Z,sep:U,value:X}){let Q="";for(let z of $)Q+=z.source;if(Z)Q+=W$(Z);if(U)for(let z of U)Q+=z.source;if(X)Q+=W$(X);return Q}Nz.stringify=Tz});var V6=R((bz)=>{var u2=Symbol("break visit"),Cz=Symbol("skip children"),_6=Symbol("remove item");function M0($,Z){if("type"in $&&$.type==="document")$={start:$.start,value:$.value};B6(Object.freeze([]),$,Z)}M0.BREAK=u2;M0.SKIP=Cz;M0.REMOVE=_6;M0.itemAtPath=($,Z)=>{let U=$;for(let[X,Q]of Z){let z=U?.[X];if(z&&"items"in z)U=z.items[Q];else return}return U};M0.parentCollection=($,Z)=>{let U=M0.itemAtPath($,Z.slice(0,-1)),X=Z[Z.length-1][0],Q=U?.[X];if(Q&&"items"in Q)return Q;throw Error("Parent collection not found")};function B6($,Z,U){let X=U(Z,$);if(typeof X==="symbol")return X;for(let Q of["key","value"]){let z=Z[Q];if(z&&"items"in z){for(let J=0;J<z.items.length;++J){let H=B6(Object.freeze($.concat([[Q,J]])),z.items[J],U);if(typeof H==="number")J=H-1;else if(H===u2)return u2;else if(H===_6)z.items.splice(J,1),J-=1}if(typeof X==="function"&&Q==="key")X=X(Z,$)}}return typeof X==="function"?X(Z,$):X}bz.visit=M0});var D$=R((fz)=>{var k2=Y6(),Ez=G6(),jz=V6(),v2="\uFEFF",m2="\x02",p2="\x18",l2="\x1F",gz=($)=>!!$&&("items"in $),xz=($)=>!!$&&($.type==="scalar"||$.type==="single-quoted-scalar"||$.type==="double-quoted-scalar"||$.type==="block-scalar");function hz($){switch($){case v2:return"<BOM>";case m2:return"<DOC>";case p2:return"<FLOW_END>";case l2:return"<SCALAR>";default:return JSON.stringify($)}}function yz($){switch($){case v2:return"byte-order-mark";case m2:return"doc-mode";case p2:return"flow-error-end";case l2:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
|
|
115
115
|
`:case`\r
|
|
116
|
-
`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch($[0]){case" ":case"\t":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}
|
|
117
|
-
`:case"\r":case"\t":return!0;default:return!1}}var O6=new Set("0123456789ABCDEFabcdef"),
|
|
118
|
-
\r `),d2=($)=>!$||
|
|
116
|
+
`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch($[0]){case" ":case"\t":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}fz.createScalarToken=k2.createScalarToken;fz.resolveAsScalar=k2.resolveAsScalar;fz.setScalarValue=k2.setScalarValue;fz.stringify=Ez.stringify;fz.visit=jz.visit;fz.BOM=v2;fz.DOCUMENT=m2;fz.FLOW_END=p2;fz.SCALAR=l2;fz.isCollection=gz;fz.isScalar=xz;fz.prettyToken=hz;fz.tokenType=yz});var c2=R((ez)=>{var M1=D$();function c($){switch($){case void 0:case" ":case`
|
|
117
|
+
`:case"\r":case"\t":return!0;default:return!1}}var O6=new Set("0123456789ABCDEFabcdef"),oz=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),I$=new Set(",[]{}"),tz=new Set(` ,[]{}
|
|
118
|
+
\r `),d2=($)=>!$||tz.has($);class W6{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex($,Z=!1){if($){if(typeof $!=="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+$:$,this.lineEndPos=null}this.atEnd=!Z;let U=this.next??"stream";while(U&&(Z||this.hasChars(1)))U=yield*this.parseNext(U)}atLineEnd(){let $=this.pos,Z=this.buffer[$];while(Z===" "||Z==="\t")Z=this.buffer[++$];if(!Z||Z==="#"||Z===`
|
|
119
119
|
`)return!0;if(Z==="\r")return this.buffer[$+1]===`
|
|
120
120
|
`;return!1}charAt($){return this.buffer[this.pos+$]}continueScalar($){let Z=this.buffer[$];if(this.indentNext>0){let U=0;while(Z===" ")Z=this.buffer[++U+$];if(Z==="\r"){let X=this.buffer[U+$+1];if(X===`
|
|
121
121
|
`||!X&&!this.atEnd)return $+U+1}return Z===`
|
|
@@ -130,16 +130,16 @@ ${Z.comment}`:Z.comment}this.doc.range[2]=Z.offset;break}default:this.errors.pus
|
|
|
130
130
|
`&&Q>=this.pos&&Q+1+Z>J)$=Q;else break}while(!0);return yield M1.SCALAR,yield*this.pushToIndex($+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){let $=this.flowLevel>0,Z=this.pos-1,U=this.pos-1,X;while(X=this.buffer[++U])if(X===":"){let Q=this.buffer[U+1];if(c(Q)||$&&I$.has(Q))break;Z=U}else if(c(X)){let Q=this.buffer[U+1];if(X==="\r")if(Q===`
|
|
131
131
|
`)U+=1,X=`
|
|
132
132
|
`,Q=this.buffer[U+1];else Z=U;if(Q==="#"||$&&I$.has(Q))break;if(X===`
|
|
133
|
-
`){let z=this.continueScalar(U+1);if(z===-1)break;U=Math.max(U,z-2)}}else{if($&&I$.has(X))break;Z=U}if(!X&&!this.atEnd)return this.setNext("plain-scalar");return yield M1.SCALAR,yield*this.pushToIndex(Z+1,!0),$?"flow":"doc"}*pushCount($){if($>0)return yield this.buffer.substr(this.pos,$),this.pos+=$,$;return 0}*pushToIndex($,Z){let U=this.buffer.slice(this.pos,$);if(U)return yield U,this.pos+=U.length,U.length;else if(Z)yield"";return 0}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(d2))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{let $=this.flowLevel>0,Z=this.charAt(1);if(c(Z)||$&&I$.has(Z)){if(!$)this.indentNext=this.indentValue+1;else if(this.flowKey)this.flowKey=!1;return(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}}return 0}*pushTag(){if(this.charAt(1)==="<"){let $=this.pos+2,Z=this.buffer[$];while(!c(Z)&&Z!==">")Z=this.buffer[++$];return yield*this.pushToIndex(Z===">"?$+1:$,!1)}else{let $=this.pos+1,Z=this.buffer[$];while(Z)if(
|
|
133
|
+
`){let z=this.continueScalar(U+1);if(z===-1)break;U=Math.max(U,z-2)}}else{if($&&I$.has(X))break;Z=U}if(!X&&!this.atEnd)return this.setNext("plain-scalar");return yield M1.SCALAR,yield*this.pushToIndex(Z+1,!0),$?"flow":"doc"}*pushCount($){if($>0)return yield this.buffer.substr(this.pos,$),this.pos+=$,$;return 0}*pushToIndex($,Z){let U=this.buffer.slice(this.pos,$);if(U)return yield U,this.pos+=U.length,U.length;else if(Z)yield"";return 0}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(d2))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{let $=this.flowLevel>0,Z=this.charAt(1);if(c(Z)||$&&I$.has(Z)){if(!$)this.indentNext=this.indentValue+1;else if(this.flowKey)this.flowKey=!1;return(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}}return 0}*pushTag(){if(this.charAt(1)==="<"){let $=this.pos+2,Z=this.buffer[$];while(!c(Z)&&Z!==">")Z=this.buffer[++$];return yield*this.pushToIndex(Z===">"?$+1:$,!1)}else{let $=this.pos+1,Z=this.buffer[$];while(Z)if(oz.has(Z))Z=this.buffer[++$];else if(Z==="%"&&O6.has(this.buffer[$+1])&&O6.has(this.buffer[$+2]))Z=this.buffer[$+=3];else break;return yield*this.pushToIndex($,!1)}}*pushNewline(){let $=this.buffer[this.pos];if($===`
|
|
134
134
|
`)return yield*this.pushCount(1);else if($==="\r"&&this.charAt(1)===`
|
|
135
|
-
`)return yield*this.pushCount(2);else return 0}*pushSpaces($){let Z=this.pos-1,U;do U=this.buffer[++Z];while(U===" "||$&&U==="\t");let X=Z-this.pos;if(X>0)yield this.buffer.substr(this.pos,X),this.pos=Z;return X}*pushUntil($){let Z=this.pos,U=this.buffer[Z];while(!$(U))U=this.buffer[++Z];return yield*this.pushToIndex(Z,!1)}}
|
|
135
|
+
`)return yield*this.pushCount(2);else return 0}*pushSpaces($){let Z=this.pos-1,U;do U=this.buffer[++Z];while(U===" "||$&&U==="\t");let X=Z-this.pos;if(X>0)yield this.buffer.substr(this.pos,X),this.pos=Z;return X}*pushUntil($){let Z=this.pos,U=this.buffer[Z];while(!$(U))U=this.buffer[++Z];return yield*this.pushToIndex(Z,!1)}}ez.Lexer=W6});var i2=R((ZJ)=>{class D6{constructor(){this.lineStarts=[],this.addNewLine=($)=>this.lineStarts.push($),this.linePos=($)=>{let Z=0,U=this.lineStarts.length;while(Z<U){let Q=Z+U>>1;if(this.lineStarts[Q]<$)Z=Q+1;else U=Q}if(this.lineStarts[Z]===$)return{line:Z+1,col:1};if(Z===0)return{line:0,col:$};let X=this.lineStarts[Z-1];return{line:Z,col:$-X+1}}}}ZJ.LineCounter=D6});var r2=R((zJ)=>{var XJ=r0("process"),I6=D$(),QJ=c2();function G0($,Z){for(let U=0;U<$.length;++U)if($[U].type===Z)return!0;return!1}function L6($){for(let Z=0;Z<$.length;++Z)switch($[Z].type){case"space":case"comment":case"newline":break;default:return Z}return-1}function M6($){switch($?.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"flow-collection":return!0;default:return!1}}function L$($){switch($.type){case"document":return $.start;case"block-map":{let Z=$.items[$.items.length-1];return Z.sep??Z.start}case"block-seq":return $.items[$.items.length-1].start;default:return[]}}function k0($){if($.length===0)return[];let Z=$.length;$:while(--Z>=0)switch($[Z].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break $}while($[++Z]?.type==="space");return $.splice(Z,$.length)}function R6($){if($.start.type==="flow-seq-start"){for(let Z of $.items)if(Z.sep&&!Z.value&&!G0(Z.start,"explicit-key-ind")&&!G0(Z.sep,"map-value-ind")){if(Z.key)Z.value=Z.key;if(delete Z.key,M6(Z.value))if(Z.value.end)Array.prototype.push.apply(Z.value.end,Z.sep);else Z.value.end=Z.sep;else Array.prototype.push.apply(Z.start,Z.sep);delete Z.sep}}}class K6{constructor($){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new QJ.Lexer,this.onNewLine=$}*parse($,Z=!1){if(this.onNewLine&&this.offset===0)this.onNewLine(0);for(let U of this.lexer.lex($,Z))yield*this.next(U);if(!Z)yield*this.end()}*next($){if(this.source=$,XJ.env.LOG_TOKENS)console.log("|",I6.prettyToken($));if(this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=$.length;return}let Z=I6.tokenType($);if(!Z){let U=`Not a YAML token: ${$}`;yield*this.pop({type:"error",offset:this.offset,message:U,source:$}),this.offset+=$.length}else if(Z==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=Z,yield*this.step(),Z){case"newline":if(this.atNewLine=!0,this.indent=0,this.onNewLine)this.onNewLine(this.offset+$.length);break;case"space":if(this.atNewLine&&$[0]===" ")this.indent+=$.length;break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":if(this.atNewLine)this.indent+=$.length;break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=$.length}}*end(){while(this.stack.length>0)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){let $=this.peek(1);if(this.type==="doc-end"&&$?.type!=="doc-end"){while(this.stack.length>0)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!$)return yield*this.stream();switch($.type){case"document":return yield*this.document($);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar($);case"block-scalar":return yield*this.blockScalar($);case"block-map":return yield*this.blockMap($);case"block-seq":return yield*this.blockSequence($);case"flow-collection":return yield*this.flowCollection($);case"doc-end":return yield*this.documentEnd($)}yield*this.pop()}peek($){return this.stack[this.stack.length-$]}*pop($){let Z=$??this.stack.pop();if(!Z)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield Z;else{let U=this.peek(1);if(Z.type==="block-scalar")Z.indent="indent"in U?U.indent:0;else if(Z.type==="flow-collection"&&U.type==="document")Z.indent=0;if(Z.type==="flow-collection")R6(Z);switch(U.type){case"document":U.value=Z;break;case"block-scalar":U.props.push(Z);break;case"block-map":{let X=U.items[U.items.length-1];if(X.value){U.items.push({start:[],key:Z,sep:[]}),this.onKeyLine=!0;return}else if(X.sep)X.value=Z;else{Object.assign(X,{key:Z,sep:[]}),this.onKeyLine=!X.explicitKey;return}break}case"block-seq":{let X=U.items[U.items.length-1];if(X.value)U.items.push({start:[],value:Z});else X.value=Z;break}case"flow-collection":{let X=U.items[U.items.length-1];if(!X||X.value)U.items.push({start:[],key:Z,sep:[]});else if(X.sep)X.value=Z;else Object.assign(X,{key:Z,sep:[]});return}default:yield*this.pop(),yield*this.pop(Z)}if((U.type==="document"||U.type==="block-map"||U.type==="block-seq")&&(Z.type==="block-map"||Z.type==="block-seq")){let X=Z.items[Z.items.length-1];if(X&&!X.sep&&!X.value&&X.start.length>0&&L6(X.start)===-1&&(Z.indent===0||X.start.every((Q)=>Q.type!=="comment"||Q.indent<Z.indent))){if(U.type==="document")U.end=X.start;else U.items.push({start:X.start});Z.items.splice(-1,1)}}}}*stream(){switch(this.type){case"directive-line":yield{type:"directive",offset:this.offset,source:this.source};return;case"byte-order-mark":case"space":case"comment":case"newline":yield this.sourceToken;return;case"doc-mode":case"doc-start":{let $={type:"document",offset:this.offset,start:[]};if(this.type==="doc-start")$.start.push(this.sourceToken);this.stack.push($);return}}yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML stream`,source:this.source}}*document($){if($.value)return yield*this.lineEnd($);switch(this.type){case"doc-start":{if(L6($.start)!==-1)yield*this.pop(),yield*this.step();else $.start.push(this.sourceToken);return}case"anchor":case"tag":case"space":case"comment":case"newline":$.start.push(this.sourceToken);return}let Z=this.startBlockValue($);if(Z)this.stack.push(Z);else yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML document`,source:this.source}}*scalar($){if(this.type==="map-value-ind"){let Z=L$(this.peek(2)),U=k0(Z),X;if($.end)X=$.end,X.push(this.sourceToken),delete $.end;else X=[this.sourceToken];let Q={type:"block-map",offset:$.offset,indent:$.indent,items:[{start:U,key:$,sep:X}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=Q}else yield*this.lineEnd($)}*blockScalar($){switch(this.type){case"space":case"comment":case"newline":$.props.push(this.sourceToken);return;case"scalar":if($.source=this.source,this.atNewLine=!0,this.indent=0,this.onNewLine){let Z=this.source.indexOf(`
|
|
136
136
|
`)+1;while(Z!==0)this.onNewLine(this.offset+Z),Z=this.source.indexOf(`
|
|
137
137
|
`,Z)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap($){let Z=$.items[$.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,Z.value){let U="end"in Z.value?Z.value.end:void 0;if((Array.isArray(U)?U[U.length-1]:void 0)?.type==="comment")U?.push(this.sourceToken);else $.items.push({start:[this.sourceToken]})}else if(Z.sep)Z.sep.push(this.sourceToken);else Z.start.push(this.sourceToken);return;case"space":case"comment":if(Z.value)$.items.push({start:[this.sourceToken]});else if(Z.sep)Z.sep.push(this.sourceToken);else{if(this.atIndentedComment(Z.start,$.indent)){let X=$.items[$.items.length-2]?.value?.end;if(Array.isArray(X)){Array.prototype.push.apply(X,Z.start),X.push(this.sourceToken),$.items.pop();return}}Z.start.push(this.sourceToken)}return}if(this.indent>=$.indent){let U=!this.onKeyLine&&this.indent===$.indent,X=U&&(Z.sep||Z.explicitKey)&&this.type!=="seq-item-ind",Q=[];if(X&&Z.sep&&!Z.value){let z=[];for(let J=0;J<Z.sep.length;++J){let H=Z.sep[J];switch(H.type){case"newline":z.push(J);break;case"space":break;case"comment":if(H.indent>$.indent)z.length=0;break;default:z.length=0}}if(z.length>=2)Q=Z.sep.splice(z[1])}switch(this.type){case"anchor":case"tag":if(X||Z.value)Q.push(this.sourceToken),$.items.push({start:Q}),this.onKeyLine=!0;else if(Z.sep)Z.sep.push(this.sourceToken);else Z.start.push(this.sourceToken);return;case"explicit-key-ind":if(!Z.sep&&!Z.explicitKey)Z.start.push(this.sourceToken),Z.explicitKey=!0;else if(X||Z.value)Q.push(this.sourceToken),$.items.push({start:Q,explicitKey:!0});else this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]});this.onKeyLine=!0;return;case"map-value-ind":if(Z.explicitKey)if(!Z.sep)if(G0(Z.start,"newline"))Object.assign(Z,{key:null,sep:[this.sourceToken]});else{let z=k0(Z.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:z,key:null,sep:[this.sourceToken]}]})}else if(Z.value)$.items.push({start:[],key:null,sep:[this.sourceToken]});else if(G0(Z.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:Q,key:null,sep:[this.sourceToken]}]});else if(M6(Z.key)&&!G0(Z.sep,"newline")){let z=k0(Z.start),J=Z.key,H=Z.sep;H.push(this.sourceToken),delete Z.key,delete Z.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:z,key:J,sep:H}]})}else if(Q.length>0)Z.sep=Z.sep.concat(Q,this.sourceToken);else Z.sep.push(this.sourceToken);else if(!Z.sep)Object.assign(Z,{key:null,sep:[this.sourceToken]});else if(Z.value||X)$.items.push({start:Q,key:null,sep:[this.sourceToken]});else if(G0(Z.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]});else Z.sep.push(this.sourceToken);this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let z=this.flowScalar(this.type);if(X||Z.value)$.items.push({start:Q,key:z,sep:[]}),this.onKeyLine=!0;else if(Z.sep)this.stack.push(z);else Object.assign(Z,{key:z,sep:[]}),this.onKeyLine=!0;return}default:{let z=this.startBlockValue($);if(z){if(z.type==="block-seq"){if(!Z.explicitKey&&Z.sep&&!G0(Z.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else if(U)$.items.push({start:Q});this.stack.push(z);return}}}}yield*this.pop(),yield*this.step()}*blockSequence($){let Z=$.items[$.items.length-1];switch(this.type){case"newline":if(Z.value){let U="end"in Z.value?Z.value.end:void 0;if((Array.isArray(U)?U[U.length-1]:void 0)?.type==="comment")U?.push(this.sourceToken);else $.items.push({start:[this.sourceToken]})}else Z.start.push(this.sourceToken);return;case"space":case"comment":if(Z.value)$.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(Z.start,$.indent)){let X=$.items[$.items.length-2]?.value?.end;if(Array.isArray(X)){Array.prototype.push.apply(X,Z.start),X.push(this.sourceToken),$.items.pop();return}}Z.start.push(this.sourceToken)}return;case"anchor":case"tag":if(Z.value||this.indent<=$.indent)break;Z.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==$.indent)break;if(Z.value||G0(Z.start,"seq-item-ind"))$.items.push({start:[this.sourceToken]});else Z.start.push(this.sourceToken);return}if(this.indent>$.indent){let U=this.startBlockValue($);if(U){this.stack.push(U);return}}yield*this.pop(),yield*this.step()}*flowCollection($){let Z=$.items[$.items.length-1];if(this.type==="flow-error-end"){let U;do yield*this.pop(),U=this.peek(1);while(U?.type==="flow-collection")}else if($.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":if(!Z||Z.sep)$.items.push({start:[this.sourceToken]});else Z.start.push(this.sourceToken);return;case"map-value-ind":if(!Z||Z.value)$.items.push({start:[],key:null,sep:[this.sourceToken]});else if(Z.sep)Z.sep.push(this.sourceToken);else Object.assign(Z,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":if(!Z||Z.value)$.items.push({start:[this.sourceToken]});else if(Z.sep)Z.sep.push(this.sourceToken);else Z.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let X=this.flowScalar(this.type);if(!Z||Z.value)$.items.push({start:[],key:X,sep:[]});else if(Z.sep)this.stack.push(X);else Object.assign(Z,{key:X,sep:[]});return}case"flow-map-end":case"flow-seq-end":$.end.push(this.sourceToken);return}let U=this.startBlockValue($);if(U)this.stack.push(U);else yield*this.pop(),yield*this.step()}else{let U=this.peek(2);if(U.type==="block-map"&&(this.type==="map-value-ind"&&U.indent===$.indent||this.type==="newline"&&!U.items[U.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&U.type!=="flow-collection"){let X=L$(U),Q=k0(X);R6($);let z=$.end.splice(1,$.end.length);z.push(this.sourceToken);let J={type:"block-map",offset:$.offset,indent:$.indent,items:[{start:Q,key:$,sep:z}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=J}else yield*this.lineEnd($)}}flowScalar($){if(this.onNewLine){let Z=this.source.indexOf(`
|
|
138
138
|
`)+1;while(Z!==0)this.onNewLine(this.offset+Z),Z=this.source.indexOf(`
|
|
139
|
-
`,Z)+1}return{type:$,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue($){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let Z=L$($),U=k0(Z);return U.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:U,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let Z=L$($),U=k0(Z);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:U,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment($,Z){if(this.type!=="comment")return!1;if(this.indent<=Z)return!1;return $.every((U)=>U.type==="newline"||U.type==="space")}*documentEnd($){if(this.type!=="doc-mode"){if($.end)$.end.push(this.sourceToken);else $.end=[this.sourceToken];if(this.type==="newline")yield*this.pop()}}*lineEnd($){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:if($.end)$.end.push(this.sourceToken);else $.end=[this.sourceToken];if(this.type==="newline")yield*this.pop()}}}QJ.Parser=K6});var N6=R((VJ)=>{var F6=y2(),JJ=W1(),K1=D1(),HJ=i$(),qJ=C(),YJ=i2(),P6=r2();function A6($){let Z=$.prettyErrors!==!1;return{lineCounter:$.lineCounter||Z&&new YJ.LineCounter||null,prettyErrors:Z}}function GJ($,Z={}){let{lineCounter:U,prettyErrors:X}=A6(Z),Q=new P6.Parser(U?.addNewLine),z=new F6.Composer(Z),J=Array.from(z.compose(Q.parse($)));if(X&&U)for(let H of J)H.errors.forEach(K1.prettifyError($,U)),H.warnings.forEach(K1.prettifyError($,U));if(J.length>0)return J;return Object.assign([],{empty:!0},z.streamInfo())}function T6($,Z={}){let{lineCounter:U,prettyErrors:X}=A6(Z),Q=new P6.Parser(U?.addNewLine),z=new F6.Composer(Z),J=null;for(let H of z.compose(Q.parse($),!0,$.length))if(!J)J=H;else if(J.options.logLevel!=="silent"){J.errors.push(new K1.YAMLParseError(H.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}if(X&&U)J.errors.forEach(K1.prettifyError($,U)),J.warnings.forEach(K1.prettifyError($,U));return J}function _J($,Z,U){let X=void 0;if(typeof Z==="function")X=Z;else if(U===void 0&&Z&&typeof Z==="object")U=Z;let Q=T6($,U);if(!Q)return null;if(Q.warnings.forEach((z)=>HJ.warn(Q.options.logLevel,z)),Q.errors.length>0)if(Q.options.logLevel!=="silent")throw Q.errors[0];else Q.errors=[];return Q.toJS(Object.assign({reviver:X},U))}function BJ($,Z,U){let X=null;if(typeof Z==="function"||Array.isArray(Z))X=Z;else if(U===void 0&&Z)U=Z;if(typeof U==="string")U=U.length;if(typeof U==="number"){let Q=Math.round(U);U=Q<1?void 0:Q>8?{indent:8}:{indent:Q}}if($===void 0){let{keepUndefined:Q}=U??Z??{};if(!Q)return}if(qJ.isDocument($)&&!X)return $.toString(U);return new JJ.Document($,X,U).toString(U)}VJ.parse=_J;VJ.parseAllDocuments=GJ;VJ.parseDocument=T6;VJ.stringify=BJ});var y=[{index:1,path:"project.name",label:"Name",description:"Project name",category:"project"},{index:2,path:"project.goal",label:"Goal",description:"Goal (use case)",category:"project"},{index:3,path:"project.main_language",label:"Language",description:"Primary language",category:"project"},{index:4,path:"human_context.who",label:"Who",description:"Who is this for?",category:"human"},{index:5,path:"human_context.what",label:"What",description:"What are they building",category:"human"},{index:6,path:"human_context.why",label:"Why",description:"Why does it exist",category:"human"},{index:7,path:"human_context.where",label:"Where",description:"Where does it run",category:"human"},{index:8,path:"human_context.when",label:"When",description:"When was it started / timeline",category:"human"},{index:9,path:"human_context.how",label:"How",description:"How is it built",category:"human"},{index:10,path:"stack.frontend",canonical:"stack.framework",label:"Framework",description:"Framework (React, Svelte, etc.)",category:"frontend"},{index:11,path:"stack.css_framework",canonical:"stack.css",label:"CSS",description:"CSS framework",category:"frontend"},{index:12,path:"stack.ui_library",label:"UI Library",description:"UI component library",category:"frontend"},{index:13,path:"stack.state_management",canonical:"stack.state",label:"State",description:"State management",category:"frontend"},{index:14,path:"stack.backend",label:"Backend",description:"Backend framework",category:"backend"},{index:15,path:"stack.api_type",canonical:"stack.api",label:"API",description:"API style (REST, GraphQL, etc.)",category:"backend"},{index:16,path:"stack.runtime",label:"Runtime",description:"Runtime (Node, Bun, Python, etc.)",category:"backend"},{index:17,path:"stack.database",canonical:"stack.db",label:"Database",description:"Database",category:"backend"},{index:18,path:"stack.connection",label:"Connection",description:"Connection method (Prisma, etc.)",category:"backend"},{index:19,path:"stack.hosting",label:"Hosting",description:"Hosting platform",category:"universal"},{index:20,path:"stack.build",label:"Build",description:"Build tool",category:"universal"},{index:21,path:"stack.cicd",label:"CI/CD",description:"CI/CD",category:"universal"},{index:22,path:"stack.monorepo_tool",label:"Monorepo",description:"Monorepo tool",category:"enterprise_infra"},{index:23,path:"stack.package_manager",canonical:"stack.pkg_manager",label:"Package Manager",description:"Package manager",category:"enterprise_infra"},{index:24,path:"stack.workspaces",label:"Workspaces",description:"Workspace configuration",category:"enterprise_infra"},{index:25,path:"monorepo.packages_count",label:"Packages",description:"Number of packages",category:"enterprise_infra"},{index:26,path:"monorepo.build_orchestrator",label:"Build Orchestrator",description:"Build orchestration tool",category:"enterprise_infra"},{index:27,path:"stack.admin",label:"Admin",description:"Admin panel",category:"enterprise_app"},{index:28,path:"stack.cache",label:"Cache",description:"Caching layer",category:"enterprise_app"},{index:29,path:"stack.search",label:"Search",description:"Search engine",category:"enterprise_app"},{index:30,path:"stack.storage",label:"Storage",description:"Object storage",category:"enterprise_app"},{index:31,path:"monorepo.versioning_strategy",label:"Versioning",description:"Version strategy",category:"enterprise_ops"},{index:32,path:"monorepo.shared_configs",label:"Shared Configs",description:"Shared configs",category:"enterprise_ops"},{index:33,path:"monorepo.remote_cache",label:"Remote Cache",description:"Remote build cache",category:"enterprise_ops"}],s0=new Map(y.flatMap(($)=>$.canonical?[[$.path,$],[$.canonical,$]]:[[$.path,$]])),ZG=new Map(y.filter(($)=>$.canonical).map(($)=>[$.canonical,$.path])),UG=new Map(y.filter(($)=>$.canonical).map(($)=>[$.path,$.canonical]));function L3($,Z){let U=(Q)=>{let z=Q.split("."),J=$;for(let H of z)if(J&&typeof J==="object"&&H in J)J=J[H];else return;return J},X=U(Z.path);if(X!==void 0)return X;if(Z.canonical)return U(Z.canonical);return}function a9($){return y.filter((Z)=>Z.category===$)}var n9=y.filter(($)=>$.index<=21),o9=y,S1=new Set(["describe your project goal","development teams","cloud platform","null","none","unknown","n/a","not applicable"]);function V0($){if($===null||$===void 0||$==="")return!0;if(typeof $==="string")return S1.has($.toLowerCase().trim());if(Array.isArray($)&&$.length===0)return!0;if(typeof $==="object"&&Object.keys($).length===0)return!0;return!1}var w0={about:[],documentation:["project","human"],intent:["project","human"],encyclopedia:["project","human"],cli:["project","human","universal"],library:["project","human","universal"],sdk:["project","human","universal"],wasm:["project","human","universal"],html:["project","human","universal"],"server-card":["project","human","universal"],frontend:["project","frontend","human","universal"],website:["project","frontend","human","universal"],mobile:["project","frontend","human","universal"],extension:["project","frontend","human","universal"],mcp:["project","backend","human","universal"],backend:["project","backend","universal","human"],"data-science":["project","backend","human","universal"],fullstack:["project","frontend","backend","universal","human"],svelte:["project","frontend","backend","universal","human"],framework:["project","frontend","backend","universal","human"],"monorepo-root":["project","human","enterprise_infra","enterprise_app","enterprise_ops"],mcpaas:["project","backend","universal","human","enterprise_app","enterprise_ops"],saas:["project","frontend","backend","universal","human","enterprise_app"],enterprise:["project","frontend","backend","universal","human","enterprise_infra","enterprise_app","enterprise_ops"]};var j$=($)=>(Z)=>`\x1B[${$}m${Z}\x1B[0m`,E1=j$("1"),a0=j$("2"),QG=j$("3"),n0={cyan:"#00D4D4",cyanDeep:"#0E8C8C",orange:"#FF6B35"},j1=($)=>`\x1B[38;2;0;212;212m${$}\x1B[0m`,g$=($)=>`\x1B[38;2;14;140;140m${$}\x1B[0m`,C0=($)=>`\x1B[38;5;208m${$}\x1B[0m`;var n=[{name:"TROPHY",indicator:`${C0("✪")} ${C0("TROPHY")}`,threshold:100},{name:"GOLD",indicator:`${C0(E1("★"))} ${C0("GOLD")}`,threshold:99},{name:"SILVER",indicator:`${j1("◆")} ${j1("SILVER")}`,threshold:95},{name:"BRONZE",indicator:`${g$("◇")} ${g$("BRONZE")}`,threshold:85},{name:"GREEN",indicator:`${E1("●")} GREEN`,threshold:70},{name:"YELLOW",indicator:`${a0("●")} YELLOW`,threshold:55},{name:"RED",indicator:`${a0("○")} RED`,threshold:1},{name:"WHITE",indicator:`${a0("♡")}`,threshold:0}];function o0($){for(let Z of n)if($>=Z.threshold)return Z;return n[n.length-1]}function t9($){let Z=o0($),U=n.indexOf(Z);return U>0?n[U-1]:null}var y$={};r9(y$,{validate:()=>$Z,sdkVersion:()=>zZ,scoreFafb:()=>QZ,scoreEnterprise:()=>e9,score:()=>h$,fafbInfo:()=>XZ,decompile:()=>UZ,compile:()=>ZZ});var x$=null;function U0(){if(x$)return x$;try{let $=r0("faf-scoring-kernel");return x$=$,$}catch{throw Error(`faf-scoring-kernel not installed.
|
|
139
|
+
`,Z)+1}return{type:$,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue($){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let Z=L$($),U=k0(Z);return U.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:U,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let Z=L$($),U=k0(Z);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:U,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment($,Z){if(this.type!=="comment")return!1;if(this.indent<=Z)return!1;return $.every((U)=>U.type==="newline"||U.type==="space")}*documentEnd($){if(this.type!=="doc-mode"){if($.end)$.end.push(this.sourceToken);else $.end=[this.sourceToken];if(this.type==="newline")yield*this.pop()}}*lineEnd($){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:if($.end)$.end.push(this.sourceToken);else $.end=[this.sourceToken];if(this.type==="newline")yield*this.pop()}}}zJ.Parser=K6});var N6=R((OJ)=>{var F6=y2(),HJ=W1(),K1=D1(),qJ=i$(),YJ=C(),GJ=i2(),P6=r2();function A6($){let Z=$.prettyErrors!==!1;return{lineCounter:$.lineCounter||Z&&new GJ.LineCounter||null,prettyErrors:Z}}function _J($,Z={}){let{lineCounter:U,prettyErrors:X}=A6(Z),Q=new P6.Parser(U?.addNewLine),z=new F6.Composer(Z),J=Array.from(z.compose(Q.parse($)));if(X&&U)for(let H of J)H.errors.forEach(K1.prettifyError($,U)),H.warnings.forEach(K1.prettifyError($,U));if(J.length>0)return J;return Object.assign([],{empty:!0},z.streamInfo())}function T6($,Z={}){let{lineCounter:U,prettyErrors:X}=A6(Z),Q=new P6.Parser(U?.addNewLine),z=new F6.Composer(Z),J=null;for(let H of z.compose(Q.parse($),!0,$.length))if(!J)J=H;else if(J.options.logLevel!=="silent"){J.errors.push(new K1.YAMLParseError(H.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}if(X&&U)J.errors.forEach(K1.prettifyError($,U)),J.warnings.forEach(K1.prettifyError($,U));return J}function BJ($,Z,U){let X=void 0;if(typeof Z==="function")X=Z;else if(U===void 0&&Z&&typeof Z==="object")U=Z;let Q=T6($,U);if(!Q)return null;if(Q.warnings.forEach((z)=>qJ.warn(Q.options.logLevel,z)),Q.errors.length>0)if(Q.options.logLevel!=="silent")throw Q.errors[0];else Q.errors=[];return Q.toJS(Object.assign({reviver:X},U))}function VJ($,Z,U){let X=null;if(typeof Z==="function"||Array.isArray(Z))X=Z;else if(U===void 0&&Z)U=Z;if(typeof U==="string")U=U.length;if(typeof U==="number"){let Q=Math.round(U);U=Q<1?void 0:Q>8?{indent:8}:{indent:Q}}if($===void 0){let{keepUndefined:Q}=U??Z??{};if(!Q)return}if(YJ.isDocument($)&&!X)return $.toString(U);return new HJ.Document($,X,U).toString(U)}OJ.parse=BJ;OJ.parseAllDocuments=_J;OJ.parseDocument=T6;OJ.stringify=VJ});var y=[{index:1,path:"project.name",label:"Name",description:"Project name",category:"project"},{index:2,path:"project.goal",label:"Goal",description:"Goal (use case)",category:"project"},{index:3,path:"project.main_language",label:"Language",description:"Primary language",category:"project"},{index:4,path:"human_context.who",label:"Who",description:"Who is this for?",category:"human"},{index:5,path:"human_context.what",label:"What",description:"What are they building",category:"human"},{index:6,path:"human_context.why",label:"Why",description:"Why does it exist",category:"human"},{index:7,path:"human_context.where",label:"Where",description:"Where does it run",category:"human"},{index:8,path:"human_context.when",label:"When",description:"When was it started / timeline",category:"human"},{index:9,path:"human_context.how",label:"How",description:"How is it built",category:"human"},{index:10,path:"stack.frontend",canonical:"stack.framework",label:"Framework",description:"Framework (React, Svelte, etc.)",category:"frontend"},{index:11,path:"stack.css_framework",canonical:"stack.css",label:"CSS",description:"CSS framework",category:"frontend"},{index:12,path:"stack.ui_library",label:"UI Library",description:"UI component library",category:"frontend"},{index:13,path:"stack.state_management",canonical:"stack.state",label:"State",description:"State management",category:"frontend"},{index:14,path:"stack.backend",label:"Backend",description:"Backend framework",category:"backend"},{index:15,path:"stack.api_type",canonical:"stack.api",label:"API",description:"API style (REST, GraphQL, etc.)",category:"backend"},{index:16,path:"stack.runtime",label:"Runtime",description:"Runtime (Node, Bun, Python, etc.)",category:"backend"},{index:17,path:"stack.database",canonical:"stack.db",label:"Database",description:"Database",category:"backend"},{index:18,path:"stack.connection",label:"Connection",description:"Connection method (Prisma, etc.)",category:"backend"},{index:19,path:"stack.hosting",label:"Hosting",description:"Hosting platform",category:"universal"},{index:20,path:"stack.build",label:"Build",description:"Build tool",category:"universal"},{index:21,path:"stack.cicd",label:"CI/CD",description:"CI/CD",category:"universal"},{index:22,path:"stack.monorepo_tool",label:"Monorepo",description:"Monorepo tool",category:"enterprise_infra"},{index:23,path:"stack.package_manager",canonical:"stack.pkg_manager",label:"Package Manager",description:"Package manager",category:"enterprise_infra"},{index:24,path:"stack.workspaces",label:"Workspaces",description:"Workspace configuration",category:"enterprise_infra"},{index:25,path:"monorepo.packages_count",label:"Packages",description:"Number of packages",category:"enterprise_infra"},{index:26,path:"monorepo.build_orchestrator",label:"Build Orchestrator",description:"Build orchestration tool",category:"enterprise_infra"},{index:27,path:"stack.admin",label:"Admin",description:"Admin panel",category:"enterprise_app"},{index:28,path:"stack.cache",label:"Cache",description:"Caching layer",category:"enterprise_app"},{index:29,path:"stack.search",label:"Search",description:"Search engine",category:"enterprise_app"},{index:30,path:"stack.storage",label:"Storage",description:"Object storage",category:"enterprise_app"},{index:31,path:"monorepo.versioning_strategy",label:"Versioning",description:"Version strategy",category:"enterprise_ops"},{index:32,path:"monorepo.shared_configs",label:"Shared Configs",description:"Shared configs",category:"enterprise_ops"},{index:33,path:"monorepo.remote_cache",label:"Remote Cache",description:"Remote build cache",category:"enterprise_ops"}],s0=new Map(y.flatMap(($)=>$.canonical?[[$.path,$],[$.canonical,$]]:[[$.path,$]])),ZG=new Map(y.filter(($)=>$.canonical).map(($)=>[$.canonical,$.path])),UG=new Map(y.filter(($)=>$.canonical).map(($)=>[$.path,$.canonical]));function L3($,Z){let U=(Q)=>{let z=Q.split("."),J=$;for(let H of z)if(J&&typeof J==="object"&&H in J)J=J[H];else return;return J},X=U(Z.path);if(X!==void 0)return X;if(Z.canonical)return U(Z.canonical);return}function n9($){return y.filter((Z)=>Z.category===$)}var o9=y.filter(($)=>$.index<=21),t9=y,S1=new Set(["describe your project goal","development teams","cloud platform","null","none","unknown","n/a","not applicable"]);function V0($){if($===null||$===void 0||$==="")return!0;if(typeof $==="string")return S1.has($.toLowerCase().trim());if(Array.isArray($)&&$.length===0)return!0;if(typeof $==="object"&&Object.keys($).length===0)return!0;return!1}var w0={about:[],documentation:["project","human"],intent:["project","human"],encyclopedia:["project","human"],cli:["project","human","universal"],library:["project","human","universal"],sdk:["project","human","universal"],wasm:["project","human","universal"],html:["project","human","universal"],"server-card":["project","human","universal"],frontend:["project","frontend","human","universal"],website:["project","frontend","human","universal"],mobile:["project","frontend","human","universal"],extension:["project","frontend","human","universal"],mcp:["project","backend","human","universal"],backend:["project","backend","universal","human"],"data-science":["project","backend","human","universal"],fullstack:["project","frontend","backend","universal","human"],svelte:["project","frontend","backend","universal","human"],framework:["project","frontend","backend","universal","human"],"monorepo-root":["project","human","enterprise_infra","enterprise_app","enterprise_ops"],mcpaas:["project","backend","universal","human","enterprise_app","enterprise_ops"],saas:["project","frontend","backend","universal","human","enterprise_app"],enterprise:["project","frontend","backend","universal","human","enterprise_infra","enterprise_app","enterprise_ops"]};var j$=($)=>(Z)=>`\x1B[${$}m${Z}\x1B[0m`,E1=j$("1"),a0=j$("2"),QG=j$("3"),n0={cyan:"#00D4D4",cyanDeep:"#0E8C8C",orange:"#FF6B35"},j1=($)=>`\x1B[38;2;0;212;212m${$}\x1B[0m`,g$=($)=>`\x1B[38;2;14;140;140m${$}\x1B[0m`,C0=($)=>`\x1B[38;5;208m${$}\x1B[0m`;var o=[{name:"TROPHY",indicator:`${C0("✪")} ${C0("TROPHY")}`,threshold:100},{name:"GOLD",indicator:`${C0(E1("★"))} ${C0("GOLD")}`,threshold:99},{name:"SILVER",indicator:`${j1("◆")} ${j1("SILVER")}`,threshold:95},{name:"BRONZE",indicator:`${g$("◇")} ${g$("BRONZE")}`,threshold:85},{name:"GREEN",indicator:`${E1("●")} GREEN`,threshold:70},{name:"YELLOW",indicator:`${a0("●")} YELLOW`,threshold:55},{name:"RED",indicator:`${a0("○")} RED`,threshold:1},{name:"WHITE",indicator:`${a0("♡")}`,threshold:0}];function o0($){for(let Z of o)if($>=Z.threshold)return Z;return o[o.length-1]}function e9($){let Z=o0($),U=o.indexOf(Z);return U>0?o[U-1]:null}var y$={};s9(y$,{validate:()=>ZZ,sdkVersion:()=>JZ,scoreFafb:()=>zZ,scoreEnterprise:()=>$Z,score:()=>h$,fafbInfo:()=>QZ,decompile:()=>XZ,compile:()=>UZ});var x$=null;function U0(){if(x$)return x$;try{let $=r0("faf-scoring-kernel");return x$=$,$}catch{throw Error(`faf-scoring-kernel not installed.
|
|
140
140
|
|
|
141
141
|
Run: npm install faf-scoring-kernel
|
|
142
|
-
`)}}function h$($){return JSON.parse(U0().score_faf($))}function
|
|
142
|
+
`)}}function h$($){return JSON.parse(U0().score_faf($))}function $Z($){return JSON.parse(U0().score_faf_enterprise($))}function ZZ($){return U0().validate_faf($)}function UZ($){return U0().compile_fafb($)}function XZ($){return JSON.parse(U0().decompile_fafb($))}function QZ($){return JSON.parse(U0().fafb_info($))}function zZ($){return JSON.parse(U0().score_fafb($))}function JZ(){return U0().sdk_version()}function R3($){return{score:$.score,tier:o0($.score),populated:$.populated,empty:$.empty,ignored:$.ignored,active:$.active,total:$.total,slots:$.slots}}function f$($){if(/^\s*app_type:\s*about\s*$/m.test($)){let U=$.match(/^\s+source_score:\s*(\d+)\s*$/m),X=U?parseInt(U[1],10):-1,Q=X>=0&&X<=100?X:-1,z=$.match(/^\s+represents:\s*(\S+)\s*$/m),J=z?z[1]:void 0;return{score:Q,tier:Q>=0?o0(Q):o[o.length-1],populated:0,empty:0,ignored:0,active:0,total:0,slots:{},inherited:!0,represents:J}}return R3(h$($))}function HZ($){let Z=[];if(!$||typeof $!=="object")return Z.push("File is not a valid YAML mapping"),{valid:!1,errors:Z};let U=$;if(!U.faf_version)Z.push("Missing required field: faf_version");if(!U.project?.name)Z.push("Missing required field: project.name");if(U.app_type==="about"){if(!U.about?.represents)Z.push("app_type 'about' requires about.represents (owner/repo of the source codebase)");else if(!/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(U.about.represents))Z.push(`about.represents must be "owner/repo" format (got: ${U.about.represents})`);if(U.about?.source_score!==void 0){let X=U.about.source_score;if(typeof X!=="number"||X<0||X>100)Z.push(`about.source_score must be a number 0-100 (got: ${X})`)}}return{valid:Z.length===0,errors:Z}}import{readFileSync as S6,writeFileSync as E_,existsSync as C6}from"fs";import{join as b6,dirname as UH,basename as g_}from"path";var RJ=y2(),MJ=W1(),KJ=M2(),s2=D1(),FJ=$1(),_0=C(),PJ=J0(),AJ=x(),TJ=q0(),NJ=Y0(),C_=D$(),wJ=c2(),CJ=i2(),bJ=r2(),R$=N6(),w6=t0();var SJ=RJ.Composer,EJ=MJ.Document,jJ=KJ.Schema,gJ=s2.YAMLError,xJ=s2.YAMLParseError,hJ=s2.YAMLWarning,yJ=FJ.Alias,fJ=_0.isAlias,uJ=_0.isCollection,kJ=_0.isDocument,vJ=_0.isMap,mJ=_0.isNode,pJ=_0.isPair,lJ=_0.isScalar,dJ=_0.isSeq,cJ=PJ.Pair,iJ=AJ.Scalar,rJ=TJ.YAMLMap,sJ=NJ.YAMLSeq;var aJ=wJ.Lexer,nJ=CJ.LineCounter,oJ=bJ.Parser,$0=R$.parse,tJ=R$.parseAllDocuments,eJ=R$.parseDocument,M$=R$.stringify,$H=w6.visit,ZH=w6.visitAsync;function XH($){let Z=S6($,"utf-8");return $0(Z)}function E6($){return S6($,"utf-8")}function j6($=process.cwd()){let Z=["project.faf",".faf"];for(let X of Z){let Q=b6($,X);if(C6(Q))return Q}let U=UH($);if(U!==$)for(let X of Z){let Q=b6(U,X);if(C6(Q))return Q}return null}import{writeFileSync as QH}from"fs";import{join as zH}from"path";var g6=n0.orange,JH=n0.cyan,HH=n0.cyanDeep,qH="#FF9500",YH="#FF3B30",GH="#E6EDF3",_H="#6E7681",x6={TROPHY:{glyph:"✪",color:g6},GOLD:{glyph:"★",color:g6},SILVER:{glyph:"◆",color:JH},BRONZE:{glyph:"◇",color:HH},GREEN:{glyph:"●",color:GH},YELLOW:{glyph:"●",color:qH},RED:{glyph:"○",color:YH},WHITE:{glyph:"♡",color:_H}};function v0($){return String($??"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}var h6=["who","what","why","where","when","how"];function K$($){return $.filter(([,Z])=>Z!==void 0&&Z!==null&&String(Z).trim()!=="").map(([Z,U])=>`<div class="row"><div class="k">${v0(Z)}</div><div class="v">${v0(U)}</div></div>`).join(`
|
|
143
143
|
`)}function y6($,Z,U="project.faf"){let X=v0($.project?.name??"Project"),Q=Z.tier?.name??"WHITE",z=x6[Q]??x6.WHITE,J=Z.inherited?Z.represents?`inherited from ${v0(Z.represents)}`:"inherited":`${Z.score}%`,H=Q==="TROPHY"&&!Z.inherited,q=$.human_context??{},Y=h6.map((V)=>[V,q[V]]),G=Object.entries(q).filter(([V])=>!h6.includes(V)),_=[["goal",$.project?.goal],["main_language",$.project?.main_language],["type",$.project?.type],["framework",$.project?.framework],["faf_version",$.faf_version]],B=Object.entries($.stack??{}),O=B.filter(([,V])=>V&&V!=="slotignored"&&String(V).trim()!==""),D=B.filter(([,V])=>V==="slotignored").length;return`<!DOCTYPE html>
|
|
144
144
|
<html lang="en">
|
|
145
145
|
<head>
|
|
@@ -210,19 +210,19 @@ Rendered on-demand from your current <strong>${v0(U)}</strong><br>
|
|
|
210
210
|
</div>
|
|
211
211
|
</body>
|
|
212
212
|
</html>
|
|
213
|
-
`}function
|
|
214
|
-
`,"utf-8"),Q}var n2=["ephemeral","standard","high","critical"],B0=Object.fromEntries(n2.map(($,Z)=>[$,Z])),F$=new Set(["user","feedback","project","reference"]),o2=new Set(["version","profile","namepoint","created","last_etched","retention","index","memory"]),t2=new Set(["facts","sessions","preferences","custom"]),e2={low:"ephemeral",medium:"standard"};import{readFileSync as KH,writeFileSync as FH,existsSync as PH}from"fs";function m0(){return new Date().toISOString().replace(/\.\d{3}Z$/,"Z")}function u($){return $===null||$===void 0}function F1($){if(u($))return"standard";if(e2[$])return e2[$];if($ in B0)return $;return"standard"}var AH=new Set(["text","id","type","priority","tags","links","timestamp","source"]);function p6($){if(typeof $==="string")return{text:$,id:null,type:null,priority:"standard",tags:[],links:[],timestamp:null,source:null,extra:{}};if(!$||typeof $!=="object"||!("text"in $))throw Error(`fact must be a string or a mapping with 'text': ${JSON.stringify($)}`);let Z=$,U={};for(let[X,Q]of Object.entries(Z))if(!AH.has(X))U[X]=Q;return{text:String(Z.text),id:Z.id??null,type:Z.type??null,priority:F1(Z.priority),tags:Array.isArray(Z.tags)?Z.tags.slice():[],links:Array.isArray(Z.links)?Z.links.slice():[],timestamp:Z.timestamp??null,source:Z.source??null,extra:U}}function l6($){if(u($.id)&&u($.type)&&$.tags.length===0&&$.links.length===0&&u($.timestamp)&&u($.source)&&Object.keys($.extra).length===0&&$.priority==="standard")return $.text;let U={text:$.text};if(!u($.id))U.id=$.id;if(!u($.type))U.type=$.type;if(U.priority=$.priority,$.tags.length)U.tags=$.tags;if($.links.length)U.links=$.links;if(!u($.timestamp))U.timestamp=$.timestamp;if(!u($.source))U.source=$.source;return Object.assign(U,$.extra),U}class K0{namepoint;profile;retention;created;last_etched;_facts;_byId;_index;_sessions;_preferences;_custom;_extra;_memoryExtra;constructor($,Z={}){this.namepoint=$,this.profile=Z.profile??"knowledge",this.retention=Z.retention??"forever",this.created=Z.created??m0(),this.last_etched=this.created,this._facts=Z.facts?Z.facts.slice():[],this._byId=new Map,this._facts.forEach((U,X)=>{if(!u(U.id))this._byId.set(U.id,X)}),this._index=Z.index?Z.index.slice():[],this._sessions=Z.sessions?structuredClone(Z.sessions):[],this._preferences=Z.preferences?{...Z.preferences}:{},this._custom=Z.custom?{...Z.custom}:{},this._extra=Z.extra?{...Z.extra}:{},this._memoryExtra=Z.memoryExtra?{...Z.memoryExtra}:{}}get facts(){return this._facts}get index(){return this._index}get sessions(){return this._sessions}get preferences(){return this._preferences}get custom(){return this._custom}get extra(){return this._extra}get memoryExtra(){return this._memoryExtra}static load($){if(!PH($))throw Error(`soul file not found: ${$}`);let Z=KH($,"utf-8"),U=e(Z);if(!U||typeof U!=="object")throw Error("soul is not a YAML mapping");let X=U.memory&&typeof U.memory==="object"?U.memory:{},Q=Array.isArray(X.facts)?X.facts:[],z={};for(let[q,Y]of Object.entries(U))if(!o2.has(q))z[q]=structuredClone(Y);let J={};for(let[q,Y]of Object.entries(X))if(!t2.has(q))J[q]=structuredClone(Y);let H=new K0(String(U.namepoint??$.replace(/.*\//,"").replace(/\.fafm$/,"")),{profile:String(U.profile??"voice"),facts:Q.map(p6),retention:String(U.retention??"forever"),created:U.created??null,index:Array.isArray(U.index)?U.index.slice():[],sessions:Array.isArray(X.sessions)?structuredClone(X.sessions):[],preferences:X.preferences&&typeof X.preferences==="object"?structuredClone(X.preferences):{},custom:X.custom&&typeof X.custom==="object"?structuredClone(X.custom):{},extra:z,memoryExtra:J});return H.last_etched=String(U.last_etched??H.created),H}static fromFile($){return K0.load($)}toDoc(){let $={facts:this._facts.map(l6),sessions:structuredClone(this._sessions),preferences:structuredClone(this._preferences),custom:structuredClone(this._custom)};for(let[U,X]of Object.entries(this._memoryExtra))if(!t2.has(U))$[U]=structuredClone(X);let Z={version:"1.1",profile:this.profile,namepoint:this.namepoint,created:this.created,last_etched:this.last_etched,retention:this.retention,index:this._index.slice(),memory:$};for(let[U,X]of Object.entries(this._extra))if(!o2.has(U))Z[U]=structuredClone(X);return Z}toYaml(){return M$(this.toDoc(),{lineWidth:100})}rebuildIndex($=80){return this._index=this._facts.map((Z)=>`${Z.id??"?"} — ${Z.text.slice(0,$)}`),this._index}save($,Z={}){if(Z.reindex!==!1)this.rebuildIndex();return FH($,this.toYaml(),"utf-8"),$}toFile($,Z={}){return this.save($,Z)}add($){if(!u($.id)&&this._byId.has($.id)){let Z=this._byId.get($.id);if(Z!==void 0)this._facts[Z]=$}else if(this._facts.push($),!u($.id))this._byId.set($.id,this._facts.length-1);if($.timestamp&&$.timestamp>(this.last_etched||""))this.last_etched=$.timestamp;return $}etch($,Z={}){return this.add({text:$,id:Z.id??null,type:Z.type??null,priority:F1(Z.priority),tags:Z.tags?Z.tags.slice():[],links:Z.links?Z.links.slice():[],timestamp:m0(),source:Z.source??null,extra:{}})}recall($,Z={}){let U=B0[F1(Z.minPriority??"ephemeral")]??0,X=($??"").toLowerCase(),Q=new Set(Z.tags??[]),z=[];this._facts.forEach((H,q)=>{if(X&&!H.text.toLowerCase().includes(X))return;if(Q.size>0&&![...Q].some((Y)=>H.tags.includes(Y)))return;if(!u(Z.type)&&H.type!==Z.type)return;if((B0[H.priority]??1)<U)return;z.push([q,H])}),z.sort((H,q)=>{let Y=B0[H[1].priority]??1,G=B0[q[1].priority]??1;if(G!==Y)return G-Y;let _=H[1].timestamp??"",B=q[1].timestamp??"";if(B!==_)return B<_?-1:B>_?1:0;return q[0]-H[0]});let J=z.map(([,H])=>H);if(!u(Z.limit))return J.slice(0,Z.limit);return J}getFact($){let Z=this._byId.get($);return Z===void 0?null:this._facts[Z]}deleteFact($){let Z=this._byId.get($);if(Z===void 0)return!1;return this._facts.splice(Z,1),this._byId.clear(),this._facts.forEach((U,X)=>{if(!u(U.id))this._byId.set(U.id,X)}),!0}}import{readdirSync as TH,readFileSync as NH,statSync as d6,existsSync as wH}from"fs";import{join as CH,basename as c6,resolve as bH}from"path";var i6=new Set(["MEMORY.md","MEMORY-FULL.md","README.md"]),SH=/\[\[([^\]]+)\]\]/g;function EH($){let Z=d6($).mtimeMs;return new Date(Z).toISOString().replace(/\.\d{3}Z$/,"Z")}function jH($){if(!$.startsWith("---"))return{fm:null,body:$};let Z=$.split("---");if(Z.length<3)return{fm:null,body:$};try{let U=e(Z[1]);if(!U||typeof U!=="object")return{fm:null,body:Z.slice(2).join("---").trim()};return{fm:U,body:Z.slice(2).join("---").trim()}}catch{return{fm:null,body:$}}}function gH($,Z,U){if(!U.name)return null;let X=U.metadata&&typeof U.metadata==="object"?U.metadata:{},Q=X.type;if(typeof Q!=="string"||!F$.has(Q))return null;let z=String(U.name).trim(),H=(U.description!==void 0&&U.description!==null&&String(U.description).trim()?String(U.description).trim():"")||z,q={};if(X.originSessionId)q.provenance=[`session:${X.originSessionId}`];let Y=[...new Set([...Z.matchAll(SH)].map((G)=>G[1]))].sort();return{text:H,id:z,type:Q,priority:"standard",tags:[],links:Y,timestamp:EH($),source:`claude-code memory: ${c6($)}`,extra:q}}function r6($,Z={}){let U=bH($);if(!wH(U))throw Error(`Claude memory directory not found: ${U}`);if(!d6(U).isDirectory())throw Error(`Claude memory path is not a directory: ${U}`);let X=Z.skip??i6,Q=Z.namepoint??`@claude-code:${c6(U)}`,z=[],J=TH(U).filter((_)=>_.endsWith(".md")).sort();for(let _ of J){if(X.has(_))continue;let B=CH(U,_),O;try{O=NH(B,"utf-8")}catch{continue}let{fm:D,body:V}=jH(O);if(!D)continue;let W=gH(B,V,D);if(W)z.push(W)}let H=z.map((_)=>_.timestamp).filter(Boolean),q=H.length?H.reduce((_,B)=>_<B?_:B):m0(),Y=H.length?H.reduce((_,B)=>_>B?_:B):q,G=new K0(Q,{profile:"knowledge",facts:z,created:q});return G.last_etched=Y,G.rebuildIndex(),G}var t6="faf-interview/1",p0="(terse — 3-4 words)",$3=[{path:"project.name",question:"What is the name of this project?",header:"Name",type:"text",required:!0},{path:"project.goal",question:"What does this project do? (one sentence)",header:"Goal",type:"text",required:!0},{path:"human_context.who",question:`Who is this for? ${p0}`,header:"Who",type:"text",required:!0},{path:"human_context.what",question:`What are they building? ${p0}`,header:"What",type:"text",required:!0},{path:"human_context.why",question:`Why does it exist? ${p0}`,header:"Why",type:"text",required:!0},{path:"human_context.where",question:`Where does it run or ship? ${p0}`,header:"Where",type:"text",required:!0},{path:"human_context.when",question:`When — timeline or stage? ${p0}`,header:"When",type:"text",required:!0},{path:"human_context.how",question:`How is it built or used? ${p0}`,header:"How",type:"text",required:!0}],e6=[{path:"project.main_language",question:"What is the primary programming language?",header:"Language",type:"select",required:!0,options:[{label:"TypeScript",value:"TypeScript",description:"JavaScript with types"},{label:"JavaScript",value:"JavaScript",description:"Vanilla JS or Node.js"},{label:"Python",value:"Python",description:"Python 3.x"},{label:"Rust",value:"Rust",description:"Systems programming"},{label:"Go",value:"Go",description:"Golang"},{label:"Other",value:"Other",description:"Specify manually"}]},{path:"stack.frontend",question:"What frontend framework does it use?",header:"Frontend",type:"select",required:!1,options:[{label:"React",value:"React",description:"React.js"},{label:"Vue",value:"Vue",description:"Vue.js"},{label:"Svelte",value:"Svelte",description:"Svelte/SvelteKit"},{label:"Next.js",value:"Next.js",description:"React framework"},{label:"None",value:"None",description:"No frontend"},{label:"Other",value:"Other",description:"Specify manually"}]},{path:"stack.backend",question:"What backend framework does it use?",header:"Backend",type:"select",required:!1,options:[{label:"Express",value:"Express",description:"Node.js Express"},{label:"Fastify",value:"Fastify",description:"Node.js Fastify"},{label:"Django",value:"Django",description:"Python Django"},{label:"FastAPI",value:"FastAPI",description:"Python FastAPI"},{label:"None",value:"None",description:"No backend"},{label:"Other",value:"Other",description:"Specify manually"}]},{path:"stack.database",question:"What database does it use?",header:"Database",type:"select",required:!1,options:[{label:"PostgreSQL",value:"PostgreSQL",description:"Postgres"},{label:"MySQL",value:"MySQL",description:"MySQL/MariaDB"},{label:"SQLite",value:"SQLite",description:"Embedded SQL"},{label:"MongoDB",value:"MongoDB",description:"Document store"},{label:"None",value:"None",description:"No database"},{label:"Other",value:"Other",description:"Specify manually"}]},{path:"stack.runtime",question:"What runtime does it run on?",header:"Runtime",type:"text",required:!1},{path:"stack.hosting",question:"Where is it hosted or distributed?",header:"Hosting",type:"text",required:!1},{path:"stack.build",question:"What is the build tool?",header:"Build",type:"text",required:!1},{path:"stack.cicd",question:"What CI/CD does it use?",header:"CI/CD",type:"text",required:!1}],l0=[...$3,...e6],$9=new Map(l0.map(($)=>[$.path,$])),xH=Object.fromEntries(l0.map(($)=>[$.path,$]));function Z3($){let Z=$9.get($);if(Z)return Z.question;let U=s0.get($)??y.find((X)=>X.canonical===$);return U?`${U.description}?`.replace(/\?\?$/,"?"):`${$}?`}function hH($,Z){return l0.filter((U)=>{let X=U.path.split("."),Q=$;for(let z of X)if(Q&&typeof Q==="object"&&z in Q)Q=Q[z];else{Q=void 0;break}if(Q==="slotignored")return!1;return Z(Q)})}var yH=new Set(["developers","development teams","development team","teams","development","cloud platform","web platform","platform","best practices","improve development efficiency","development efficiency","modern development practices","modern development","test-driven development","production/stable","production","stable","app","project","tool"]),fH=[["npm",/\bnpm\b/i],["PyPI",/\bpypi\b/i],["crates.io",/\bcrates\.io\b/i],["Homebrew",/\bhomebrew\b/i],["Docker",/\bdocker\b/i],["Cloudflare",/\bcloudflare\b/i],["Vercel",/\bvercel\b/i],["Netlify",/\bnetlify\b/i],["AWS",/\baws\b/i],["Cloud Run",/\bcloud run\b/i],["edge",/\bedge\b/i],["browser",/\bbrowser\b/i],["WASM",/\bwasm\b/i],["GitHub",/\bgithub\b/i],["MCP Registry",/\bmcp registry\b/i],["Chrome Web Store",/\bchrome web store\b/i],["Smithery",/\bsmithery\b/i]],s6=($)=>yH.has($.toLowerCase().trim()),uH=/^(?:with|and|or|using|for|to|that|who|whom|whose|the|a|an|in|on|of|via|by|&)$/i;function a6($,Z=5){let U=$.trim().split(/\s+/).filter(Boolean).slice(0,Z);while(U.length&&uH.test(U[U.length-1].replace(/[.,;:]+$/,"")))U.pop();return U.join(" ")}function Z9($){let Z={};if(!$||typeof $!=="string")return Z;let U=$.trim(),X=U.replace(/^[^A-Za-z0-9]+/,"").split(/\s+(?:for|that|which|to)\s+|\s+[—–]\s+|\s-\s|:\s|\.\s|,\s/)[0].trim(),Q=a6(X);if(Q.split(/\s+/).filter(Boolean).length>=2&&!s6(Q))Z.what=Q;let z=fH.filter(([,q])=>q.test(U)).map(([q])=>q);if(z.length)Z.where=z.slice(0,4).join(", ");let J=U.match(/\bfor ((?:[A-Za-z][\w./+-]* )?(?:any |all )?(?:developers?|teams?|engineers?|builders?|users?|integrators?)\b[^.,;:—]*)/i),H=a6((J?.[1]||"").trim().replace(/\s+/g," "));if(H&&!s6(H))Z.who=H;return Z}function n6($,Z){let U=$;for(let X of Z.split("."))if(U&&typeof U==="object"&&X in U)U=U[X];else return;return U}function o6($){if(typeof $!=="string")return!1;let Z=$.trim();if(!Z||Z==="slotignored")return!1;return!V0(Z)}function kH($,Z={}){let U=$&&typeof $==="object"?$:{},X=n6(U,"project.goal"),Q=(o6(X)?String(X).trim():"")||(Z.goal??"").trim(),z=Z9(Q),J=Z.detailed??{},H={"project.goal":Q||void 0,"human_context.what":z.what,"human_context.where":z.where,"human_context.who":z.who},q=(O)=>{let D=H[O];if(D)return{value:D,source:"project goal",confidence:0.9};let V=O.startsWith("human_context.")?O.slice(14):"",W=V?J[V]:void 0;return W?{value:W.value,source:W.source,confidence:W.confidence}:void 0},Y=$3.map((O,D)=>{let V={n:D+1,path:O.path,header:O.header,question:O.question},W=n6(U,O.path);if(o6(W))return{...V,value:String(W).trim(),status:"filled",seeded:!1};let I=q(O.path);if(I)return{...V,value:I.value,status:"seeded",seeded:!0,source:I.source,confidence:I.confidence};return{...V,value:"",status:"empty",seeded:!1}}),G=Y.filter((O)=>O.status==="filled").length,_=Y.filter((O)=>O.status==="seeded").length,B=Y.filter((O)=>O.status==="empty").length;return{version:t6,rows:Y,filledCount:G,seededCount:_,emptyCount:B,complete:B===0}}function P$($){if($===null||$===void 0)return!0;if(typeof $==="string"){let Z=$.trim();return Z===""||V0(Z)}return!1}function vH($,Z){let U=$;for(let X of Z.split("."))if(U&&typeof U==="object"&&X in U)U=U[X];else return;return U}function U9($){if($==="project.goal")return!0;return s0.get($)?.category==="human"}function X9($,Z=P$){let U=[],X=[];for(let Q of l0){let z=vH($,Q.path);if(z==="slotignored")continue;if(!Z(z))continue;(U9(Q.path)?U:X).push(Q.path)}return{human:U,sourceable:X}}function Q9($,Z,U=P$){let X=X9(Z,U),Q;if($>=100||X.human.length===0&&X.sourceable.length===0)Q="done";else if(X.sourceable.length>0)Q="can-source";else Q="needs-human";let z=Q==="needs-human"?U3(X):[];return{status:Q,score:$,gaps:X,ask:z}}function U3($){return $.human.map((Z)=>({path:Z,question:Z3(Z)}))}function mH($,Z={}){let U=Math.max(1,Z.maxRounds??5),X=Z.isEmpty??P$,Q=[],z=0;for(let H=0;H<=U;H++){let q=$.read();if(!q)return{status:"no-faf",score:0,rounds:z,history:Q,ask:[]};let Y=$.score(q.yaml);Q.push(Y);let G=Q9(Y,q.data,X);if(G.status==="done")return{status:"done",score:Y,rounds:z,history:Q,ask:[]};if(G.status==="needs-human")return{status:"needs-human",score:Y,rounds:z,history:Q,ask:G.ask};if(Q.length>=2&&Y<=Q[Q.length-2])return G.gaps.human.length?{status:"needs-human",score:Y,rounds:z,history:Q,ask:U3(G.gaps)}:{status:"stuck",score:Y,rounds:z,history:Q,ask:[]};if(z>=U)return{status:"capped",score:Y,rounds:z,history:Q,ask:U3(G.gaps)};$.runAuto(),z++}return{status:"capped",score:Q[Q.length-1]??0,rounds:z,history:Q,ask:[]}}import{createHash as J9}from"crypto";var X3="faf-bench/1",pH={"project.name":"What is the project's name?","project.goal":"What is the project's goal — what is it for?","project.main_language":"What is the primary programming language?","human_context.who":"Who is this project for?","human_context.what":"What are they building?","human_context.why":"Why does this project exist?","human_context.where":"Where does it run or get distributed?","human_context.when":"When — what is the project's timeline or stage?","human_context.how":"How is it built or used?"};function lH($,Z){return pH[$]??`What is the project's ${Z.replace(/\s*\(.*\)$/,"").toLowerCase()}?`}var H9=[["typescript","ts"],["javascript","js"],["python","py","python3"],["node","nodejs","node js","node.js"],["github actions","gh actions","actions"],["postgresql","postgres","pg"],["kubernetes","k8s"],["npm","npm registry"],["cloudflare workers","cf workers","workers"],["google cloud run","cloud run","gcp cloud run"]],P1=new Map;H9.forEach(($,Z)=>$.forEach((U)=>P1.set(U,Z)));var dH=new Set(["a","an","the","and","or","of","for","to","in","on","with","is","it","its","their","your","via","by","using","use","used"]);function A$($){return $.toLowerCase().replace(/[^a-z0-9\s.+#-]/g," ").replace(/\.(?=\s|$)/g," ").replace(/\s+/g," ").trim()}function z9($){return A$($).split(" ").filter((Z)=>Z&&!dH.has(Z))}function q9($,Z){let U=A$($),X=A$(Z);if(!U||!X)return!1;if(U===X)return!0;let Q=P1.get(U);if(Q!==void 0&&P1.get(X)===Q)return!0;let z=z9($);if(z.length===0)return!1;let J=new Set(z9(Z));return z.every((H)=>{if(J.has(H))return!0;let q=P1.get(H);return q!==void 0&&[...J].some((Y)=>P1.get(Y)===q)})}function cH($){let Z=f$($),U=e($),X=[],Q={},z=0;for(let q of y){if(Z.slots[q.path]!=="populated")continue;let Y=L3(U,q);if(typeof Y!=="string")continue;let G=Y.trim();if(!G||S1.has(G.toLowerCase()))continue;z+=1,X.push({n:z,path:q.path,question:lH(q.path,q.description)}),Q[z]=G}let J=JSON.stringify({v:X3,q:X.map((q)=>[q.path,q.question])}),H=J9("sha256").update(J).digest("hex").slice(0,12);return{version:X3,qsetHash:H,questions:X,answers:Q}}function iH($){return{version:$.version,qsetHash:$.qsetHash,questions:$.questions}}function rH($,Z){let U=$.questions.map((Q)=>{let z=Z[String(Q.n)]??Z[Q.path]??"";return{n:Q.n,path:Q.path,ok:typeof z==="string"&&z.trim()!==""&&q9($.answers[Q.n],z)}}),X=$.questions.filter((Q)=>!U[Q.n-1].ok);return{correct:U.filter((Q)=>Q.ok).length,total:$.questions.length,misses:X,perQuestion:U}}function sH($,Z){let U=JSON.stringify({v:$.version,repo:Z??null,qset:$.qsetHash,protocol:$.protocol,cold:$.cold??null,faf:$.faf??null});return{projection:U,hash:J9("sha256").update(U).digest("hex")}}import{existsSync as oq,readdirSync as M9,readFileSync as tq}from"fs";import{join as Y3,dirname as eq,extname as $Y,resolve as ZY}from"path";var Q3={"package.json":{frameworks:["Node.js","JavaScript","TypeScript"],slots:{packageManager:"npm/yarn/pnpm",mainLanguage:"JavaScript/TypeScript"},priority:35,intelligence:"ultra-high"},"README.md":{frameworks:[],slots:{targetUser:"developers",coreProblem:"understanding project",missionPurpose:"project documentation"},priority:25,intelligence:"high"},"requirements.txt":{frameworks:["Python"],slots:{packageManager:"pip",mainLanguage:"Python"},priority:35,intelligence:"ultra-high"},Pipfile:{frameworks:["Python"],slots:{packageManager:"pipenv",mainLanguage:"Python"},priority:35,intelligence:"ultra-high"},"pyproject.toml":{frameworks:["Python"],slots:{mainLanguage:"Python",runtime:"Python",backend:"Python"},priority:36,intelligence:"ultra-high"},Gemfile:{frameworks:["Ruby","Rails"],slots:{packageManager:"bundler",mainLanguage:"Ruby"},priority:35,intelligence:"ultra-high"},"composer.json":{frameworks:["PHP","Laravel","Symfony"],slots:{packageManager:"composer",mainLanguage:"PHP"},priority:35,intelligence:"ultra-high"},"Cargo.toml":{frameworks:["Rust"],slots:{packageManager:"cargo",mainLanguage:"Rust",buildTool:"cargo"},priority:36,intelligence:"ultra-high"},"go.mod":{frameworks:["Go"],slots:{packageManager:"go modules",mainLanguage:"Go",buildTool:"go build"},priority:36,intelligence:"ultra-high"},"*.csproj":{frameworks:["C#",".NET"],slots:{packageManager:"NuGet",mainLanguage:"C#",buildTool:"dotnet"},priority:36,intelligence:"ultra-high"},"pubspec.yaml":{frameworks:["Dart"],slots:{packageManager:"pub",mainLanguage:"Dart"},priority:35,intelligence:"ultra-high"},"pom.xml":{frameworks:["Java"],slots:{packageManager:"maven",mainLanguage:"Java",buildTool:"maven"},priority:35,intelligence:"ultra-high"},"build.gradle":{frameworks:["Java","Gradle"],slots:{packageManager:"gradle",mainLanguage:"Java",buildTool:"gradle"},priority:35,intelligence:"ultra-high"},"settings.gradle":{frameworks:["Java","Gradle"],slots:{packageManager:"gradle",mainLanguage:"Java",buildTool:"gradle"},priority:34,intelligence:"high"},"settings.gradle.kts":{frameworks:["Kotlin","Gradle"],slots:{packageManager:"gradle",mainLanguage:"Kotlin",buildTool:"gradle"},priority:34,intelligence:"high"},"next.config.js":{frameworks:["Next.js"],slots:{framework:"Next.js",runtime:"Node.js",buildTool:"Next.js",mainLanguage:"JavaScript",server:"Node.js"},priority:30,intelligence:"high"},"next.config.mjs":{frameworks:["Next.js"],slots:{framework:"Next.js",runtime:"Node.js",buildTool:"Next.js",mainLanguage:"JavaScript",server:"Node.js"},priority:30,intelligence:"high"},"next.config.ts":{frameworks:["Next.js 13+"],slots:{framework:"Next.js 13+",runtime:"Node.js",buildTool:"Next.js",mainLanguage:"TypeScript",server:"Node.js"},priority:30,intelligence:"high"},"nuxt.config.js":{frameworks:["Nuxt 2"],slots:{framework:"Nuxt 2",runtime:"Node.js",buildTool:"Nuxt",mainLanguage:"JavaScript",server:"Node.js"},priority:30,intelligence:"high"},"nuxt.config.ts":{frameworks:["Nuxt 3"],slots:{framework:"Nuxt 3",runtime:"Node.js",buildTool:"Nuxt",mainLanguage:"TypeScript",server:"Node.js"},priority:30,intelligence:"high"},"svelte.config.js":{frameworks:["SvelteKit"],slots:{framework:"SvelteKit",buildTool:"Vite",mainLanguage:"JavaScript",server:"Node.js"},priority:30,intelligence:"high"},"angular.json":{frameworks:["Angular"],slots:{framework:"Angular",buildTool:"Angular CLI",mainLanguage:"TypeScript",server:"Node.js"},priority:30,intelligence:"high"},"manifest.json":{frameworks:["Chrome Extension","Browser Extension"],slots:{framework:"Chrome Extension",runtime:"Chrome/Browser",mainLanguage:"JavaScript",hosting:"Chrome Web Store",apiType:"Chrome APIs"},priority:35,intelligence:"ultra-high",confirmWith:["popup.html","background.js","content.js"]},"vue.config.js":{frameworks:["Vue"],slots:{framework:"Vue",buildTool:"Vue CLI",mainLanguage:"JavaScript"},priority:30,intelligence:"high"},"remix.config.js":{frameworks:["Remix"],slots:{framework:"Remix",runtime:"Node.js",mainLanguage:"JavaScript",server:"Node.js"},priority:30,intelligence:"high"},"gatsby-config.js":{frameworks:["Gatsby"],slots:{framework:"Gatsby",buildTool:"Gatsby",mainLanguage:"JavaScript",server:"Node.js"},priority:30,intelligence:"high"},"gatsby-config.ts":{frameworks:["Gatsby"],slots:{framework:"Gatsby",buildTool:"Gatsby",mainLanguage:"TypeScript",server:"Node.js"},priority:30,intelligence:"high"},"astro.config.mjs":{frameworks:["Astro"],slots:{framework:"Astro",buildTool:"Vite",mainLanguage:"JavaScript",server:"Node.js"},priority:30,intelligence:"high"},"redwood.toml":{frameworks:["RedwoodJS"],slots:{framework:"RedwoodJS",buildTool:"Webpack",mainLanguage:"JavaScript/TypeScript",server:"Node.js",database:"Prisma"},priority:30,intelligence:"high"},"blitz.config.ts":{frameworks:["Blitz.js"],slots:{framework:"Blitz.js",buildTool:"Next.js",mainLanguage:"TypeScript",server:"Node.js",database:"Prisma"},priority:30,intelligence:"high"},"qwik.config.ts":{frameworks:["Qwik"],slots:{framework:"Qwik",buildTool:"Vite",mainLanguage:"TypeScript",server:"Node.js"},priority:30,intelligence:"high"},"manage.py":{frameworks:["Django"],slots:{framework:"Django",backend:"Django",mainLanguage:"Python",server:"Django",apiType:"Django Views"},priority:30,intelligence:"high"},artisan:{frameworks:["Laravel"],slots:{framework:"Laravel",backend:"Laravel",mainLanguage:"PHP",server:"PHP",apiType:"Laravel Routes"},priority:30,intelligence:"high"},"mix.exs":{frameworks:["Phoenix","Elixir"],slots:{framework:"Phoenix",backend:"Phoenix",mainLanguage:"Elixir",server:"BEAM"},priority:30,intelligence:"high"},"nest-cli.json":{frameworks:["NestJS"],slots:{framework:"NestJS",backend:"NestJS",mainLanguage:"TypeScript",server:"Node.js",apiType:"REST API"},priority:30,intelligence:"high"},"strapi.config.js":{frameworks:["Strapi"],slots:{backend:"Strapi",apiType:"REST API",database:"Required",server:"Node.js"},priority:30,intelligence:"high"},Dockerfile:{frameworks:["Docker"],slots:{hosting:"Docker",connection:"Containerized"},priority:30,intelligence:"high"},"docker-compose.yml":{frameworks:["Docker Compose"],slots:{hosting:"Docker",connection:"Multi-container"},priority:30,intelligence:"high"},"docker-compose.yaml":{frameworks:["Docker Compose"],slots:{hosting:"Docker",connection:"Multi-container"},priority:30,intelligence:"high"},"kubernetes.yml":{frameworks:["Kubernetes"],slots:{hosting:"Kubernetes",connection:"Orchestrated"},priority:30,intelligence:"high"},"k8s.yaml":{frameworks:["Kubernetes"],slots:{hosting:"Kubernetes",connection:"Orchestrated"},priority:30,intelligence:"high"},"vercel.json":{frameworks:["Vercel"],slots:{hosting:"Vercel",cicd:"Vercel"},priority:30,intelligence:"high"},"netlify.toml":{frameworks:["Netlify"],slots:{hosting:"Netlify",cicd:"Netlify"},priority:30,intelligence:"high"},"render.yaml":{frameworks:["Render"],slots:{hosting:"Render",cicd:"Render"},priority:30,intelligence:"high"},"fly.toml":{frameworks:["Fly.io"],slots:{hosting:"Fly.io",cicd:"Fly.io"},priority:30,intelligence:"high"},"railway.json":{frameworks:["Railway"],slots:{hosting:"Railway",cicd:"Railway"},priority:30,intelligence:"high"},"railway.toml":{frameworks:["Railway"],slots:{hosting:"Railway",cicd:"Railway"},priority:30,intelligence:"high"},"app.yaml":{frameworks:["Google App Engine"],slots:{hosting:"Google Cloud",cicd:"Google Cloud"},priority:30,intelligence:"high"},Procfile:{frameworks:["Heroku"],slots:{hosting:"Heroku",cicd:"Heroku"},priority:30,intelligence:"high"},"vite.config.js":{frameworks:["Vite"],slots:{buildTool:"Vite"},priority:25,intelligence:"medium"},"vite.config.ts":{frameworks:["Vite"],slots:{buildTool:"Vite",mainLanguage:"TypeScript"},priority:25,intelligence:"medium"},"webpack.config.js":{frameworks:["Webpack"],slots:{buildTool:"Webpack"},priority:25,intelligence:"medium"},"rollup.config.js":{frameworks:["Rollup"],slots:{buildTool:"Rollup"},priority:25,intelligence:"medium"},"esbuild.config.js":{frameworks:["esbuild"],slots:{buildTool:"esbuild"},priority:25,intelligence:"medium"},"parcel.config.js":{frameworks:["Parcel"],slots:{buildTool:"Parcel"},priority:25,intelligence:"medium"},"snowpack.config.js":{frameworks:["Snowpack"],slots:{buildTool:"Snowpack"},priority:25,intelligence:"medium"},"tsconfig.json":{frameworks:["TypeScript"],slots:{mainLanguage:"TypeScript"},priority:25,intelligence:"medium"},"jsconfig.json":{frameworks:["JavaScript"],slots:{mainLanguage:"JavaScript"},priority:20,intelligence:"medium"},"babel.config.js":{frameworks:["Babel"],slots:{buildTool:"Babel"},priority:20,intelligence:"medium"},".babelrc":{frameworks:["Babel"],slots:{buildTool:"Babel"},priority:20,intelligence:"medium"},"jest.config.js":{frameworks:["Jest"],slots:{cicd:"Jest"},priority:25,intelligence:"medium"},"jest.config.ts":{frameworks:["Jest"],slots:{cicd:"Jest",mainLanguage:"TypeScript"},priority:25,intelligence:"medium"},"vitest.config.ts":{frameworks:["Vitest"],slots:{cicd:"Vitest",mainLanguage:"TypeScript"},priority:25,intelligence:"medium"},"cypress.config.js":{frameworks:["Cypress"],slots:{cicd:"Cypress"},priority:25,intelligence:"medium"},"playwright.config.ts":{frameworks:["Playwright"],slots:{cicd:"Playwright",mainLanguage:"TypeScript"},priority:25,intelligence:"medium"},"karma.conf.js":{frameworks:["Karma"],slots:{cicd:"Karma"},priority:20,intelligence:"medium"},"mocha.opts":{frameworks:["Mocha"],slots:{cicd:"Mocha"},priority:20,intelligence:"medium"},".rspec":{frameworks:["RSpec"],slots:{cicd:"RSpec",mainLanguage:"Ruby"},priority:25,intelligence:"medium"},"pytest.ini":{frameworks:["Pytest"],slots:{cicd:"Pytest",mainLanguage:"Python"},priority:25,intelligence:"medium"},"phpunit.xml":{frameworks:["PHPUnit"],slots:{cicd:"PHPUnit",mainLanguage:"PHP"},priority:25,intelligence:"medium"},"schema.prisma":{frameworks:["Prisma"],slots:{database:"Prisma ORM",connection:"Prisma"},priority:25,intelligence:"medium"},"drizzle.config.ts":{frameworks:["Drizzle"],slots:{database:"Drizzle ORM",connection:"Drizzle",mainLanguage:"TypeScript"},priority:25,intelligence:"medium"},"ormconfig.js":{frameworks:["TypeORM"],slots:{database:"TypeORM",connection:"TypeORM"},priority:25,intelligence:"medium"},"knexfile.js":{frameworks:["Knex.js"],slots:{database:"Knex.js",connection:"Knex.js"},priority:25,intelligence:"medium"},"sequelize.config.js":{frameworks:["Sequelize"],slots:{database:"Sequelize",connection:"Sequelize"},priority:25,intelligence:"medium"},"alembic.ini":{frameworks:["Alembic"],slots:{database:"Alembic",mainLanguage:"Python"},priority:25,intelligence:"medium"},".github/workflows":{frameworks:["GitHub Actions"],slots:{cicd:"GitHub Actions"},priority:25,intelligence:"medium"},".gitlab-ci.yml":{frameworks:["GitLab CI"],slots:{cicd:"GitLab CI"},priority:25,intelligence:"medium"},Jenkinsfile:{frameworks:["Jenkins"],slots:{cicd:"Jenkins"},priority:25,intelligence:"medium"},".circleci/config.yml":{frameworks:["CircleCI"],slots:{cicd:"CircleCI"},priority:25,intelligence:"medium"},".travis.yml":{frameworks:["Travis CI"],slots:{cicd:"Travis CI"},priority:25,intelligence:"medium"},"azure-pipelines.yml":{frameworks:["Azure DevOps"],slots:{cicd:"Azure DevOps"},priority:25,intelligence:"medium"},"bitbucket-pipelines.yml":{frameworks:["Bitbucket Pipelines"],slots:{cicd:"Bitbucket Pipelines"},priority:25,intelligence:"medium"},"tailwind.config.js":{frameworks:["Tailwind CSS"],slots:{cssFramework:"Tailwind CSS"},priority:20,intelligence:"medium"},"tailwind.config.ts":{frameworks:["Tailwind CSS"],slots:{cssFramework:"Tailwind CSS",mainLanguage:"TypeScript"},priority:20,intelligence:"medium"},"postcss.config.js":{frameworks:["PostCSS"],slots:{cssFramework:"PostCSS"},priority:20,intelligence:"medium"},"uno.config.ts":{frameworks:["UnoCSS"],slots:{cssFramework:"UnoCSS",mainLanguage:"TypeScript"},priority:20,intelligence:"medium"},"styled-components.config.js":{frameworks:["styled-components"],slots:{cssFramework:"styled-components",uiLibrary:"styled-components"},priority:20,intelligence:"medium"},"emotion.config.js":{frameworks:["Emotion"],slots:{cssFramework:"Emotion",uiLibrary:"Emotion"},priority:20,intelligence:"medium"},"metro.config.js":{frameworks:["React Native"],slots:{framework:"React Native",mainLanguage:"JavaScript"},priority:25,intelligence:"medium"},"expo.config.js":{frameworks:["Expo"],slots:{framework:"React Native",buildTool:"Expo"},priority:25,intelligence:"medium"},"app.json":{frameworks:["React Native","Expo"],slots:{framework:"React Native"},priority:20,intelligence:"medium",confirmWith:["expo"]},"capacitor.config.ts":{frameworks:["Capacitor"],slots:{framework:"Capacitor",mainLanguage:"TypeScript"},priority:25,intelligence:"medium"},"ionic.config.json":{frameworks:["Ionic"],slots:{framework:"Ionic",uiLibrary:"Ionic"},priority:25,intelligence:"medium"},"nx.json":{frameworks:["Nx"],slots:{buildTool:"Nx"},priority:25,intelligence:"medium"},"turbo.json":{frameworks:["Turborepo"],slots:{buildTool:"Turborepo"},priority:25,intelligence:"medium"},"lerna.json":{frameworks:["Lerna"],slots:{buildTool:"Lerna"},priority:25,intelligence:"medium"},"rush.json":{frameworks:["Rush"],slots:{buildTool:"Rush"},priority:25,intelligence:"medium"},"pnpm-workspace.yaml":{frameworks:["pnpm workspaces"],slots:{packageManager:"pnpm",buildTool:"pnpm workspaces"},priority:25,intelligence:"medium"},"*.svelte":{frameworks:["Svelte","SvelteKit"],slots:{framework:"Svelte"},priority:15,intelligence:"low"},"*.vue":{frameworks:["Vue"],slots:{framework:"Vue"},priority:15,intelligence:"low"},"*.jsx":{frameworks:["React"],slots:{framework:"React",mainLanguage:"JavaScript"},priority:15,intelligence:"low"},"*.ts":{frameworks:["TypeScript"],slots:{mainLanguage:"TypeScript"},priority:15,intelligence:"low"},"*.tsx":{frameworks:["React","TypeScript"],slots:{framework:"React",mainLanguage:"TypeScript"},priority:15,intelligence:"low"},"*.py":{frameworks:["Python"],slots:{mainLanguage:"Python"},priority:15,intelligence:"low"},"*.rb":{frameworks:["Ruby"],slots:{mainLanguage:"Ruby"},priority:15,intelligence:"low"},"*.php":{frameworks:["PHP"],slots:{mainLanguage:"PHP"},priority:15,intelligence:"low"},"*.java":{frameworks:["Java"],slots:{mainLanguage:"Java"},priority:15,intelligence:"low"},"*.kt":{frameworks:["Kotlin"],slots:{mainLanguage:"Kotlin"},priority:15,intelligence:"low"},"*.swift":{frameworks:["Swift"],slots:{mainLanguage:"Swift"},priority:15,intelligence:"low"},"*.go":{frameworks:["Go"],slots:{mainLanguage:"Go"},priority:15,intelligence:"low"},"*.rs":{frameworks:["Rust"],slots:{mainLanguage:"Rust"},priority:15,intelligence:"low"},"*.dart":{frameworks:["Flutter","Dart"],slots:{mainLanguage:"Dart"},priority:15,intelligence:"low"},"*.ex":{frameworks:["Elixir"],slots:{mainLanguage:"Elixir"},priority:15,intelligence:"low"},"*.exs":{frameworks:["Elixir"],slots:{mainLanguage:"Elixir"},priority:15,intelligence:"low"},"*.scala":{frameworks:["Scala"],slots:{mainLanguage:"Scala"},priority:15,intelligence:"low"},"*.clj":{frameworks:["Clojure"],slots:{mainLanguage:"Clojure"},priority:15,intelligence:"low"},"*.lua":{frameworks:["Lua"],slots:{mainLanguage:"Lua"},priority:15,intelligence:"low"},"*.r":{frameworks:["R"],slots:{mainLanguage:"R"},priority:15,intelligence:"low"},"*.R":{frameworks:["R"],slots:{mainLanguage:"R"},priority:15,intelligence:"low"},"*.jl":{frameworks:["Julia"],slots:{mainLanguage:"Julia"},priority:15,intelligence:"low"},"*.nim":{frameworks:["Nim"],slots:{mainLanguage:"Nim"},priority:15,intelligence:"low"},"*.zig":{frameworks:["Zig"],slots:{mainLanguage:"Zig"},priority:15,intelligence:"low"},"build.zig":{frameworks:["Zig"],slots:{packageManager:"Zig Package Manager",mainLanguage:"Zig",buildTool:"zig build",framework:"Zig",build:"zig build"},priority:35,intelligence:"ultra-high"},"openapi.json":{frameworks:["OpenAPI"],slots:{apiType:"REST API",backend:"API Server"},priority:30,intelligence:"high"},"openapi.yaml":{frameworks:["OpenAPI"],slots:{apiType:"REST API",backend:"API Server"},priority:30,intelligence:"high"},"swagger.json":{frameworks:["Swagger"],slots:{apiType:"REST API",backend:"API Server"},priority:30,intelligence:"high"},"graphql.schema":{frameworks:["GraphQL"],slots:{apiType:"GraphQL",backend:"GraphQL Server"},priority:30,intelligence:"high"},"schema.graphql":{frameworks:["GraphQL"],slots:{apiType:"GraphQL",backend:"GraphQL Server"},priority:30,intelligence:"high"},".graphqlconfig":{frameworks:["GraphQL"],slots:{apiType:"GraphQL"},priority:25,intelligence:"medium"},"redux.config.js":{frameworks:["Redux"],slots:{stateManagement:"Redux"},priority:20,intelligence:"medium"},"mobx.config.js":{frameworks:["MobX"],slots:{stateManagement:"MobX"},priority:20,intelligence:"medium"},"vuex.config.js":{frameworks:["Vuex"],slots:{stateManagement:"Vuex",framework:"Vue"},priority:20,intelligence:"medium"},"pinia.config.js":{frameworks:["Pinia"],slots:{stateManagement:"Pinia",framework:"Vue"},priority:20,intelligence:"medium"},"zustand.config.js":{frameworks:["Zustand"],slots:{stateManagement:"Zustand"},priority:20,intelligence:"medium"},".eslintrc.js":{frameworks:["ESLint"],slots:{},priority:15,intelligence:"low"},".eslintrc.json":{frameworks:["ESLint"],slots:{},priority:15,intelligence:"low"},".prettierrc":{frameworks:["Prettier"],slots:{},priority:15,intelligence:"low"},".prettierrc.json":{frameworks:["Prettier"],slots:{},priority:15,intelligence:"low"},"biome.json":{frameworks:["Biome"],slots:{},priority:15,intelligence:"low"},".editorconfig":{frameworks:["EditorConfig"],slots:{},priority:10,intelligence:"low"},"serverless.yml":{frameworks:["Serverless Framework"],slots:{hosting:"AWS Lambda/Azure/GCP",backend:"Serverless",apiType:"API Gateway"},priority:30,intelligence:"high"},"serverless.yaml":{frameworks:["Serverless Framework"],slots:{hosting:"AWS Lambda/Azure/GCP",backend:"Serverless",apiType:"API Gateway"},priority:30,intelligence:"high"},"sam.yaml":{frameworks:["AWS SAM"],slots:{hosting:"AWS Lambda",backend:"AWS SAM",cicd:"AWS SAM CLI"},priority:30,intelligence:"high"},"template.yaml":{frameworks:["AWS SAM","CloudFormation"],slots:{hosting:"AWS",backend:"AWS SAM/CloudFormation",cicd:"AWS"},priority:25,intelligence:"medium",confirmWith:["samconfig.toml"]},"amplify.yml":{frameworks:["AWS Amplify"],slots:{hosting:"AWS Amplify",backend:"AWS Amplify",cicd:"AWS Amplify"},priority:30,intelligence:"high"},Podfile:{frameworks:["CocoaPods","iOS"],slots:{packageManager:"CocoaPods",mainLanguage:"Swift/Objective-C",framework:"iOS Native"},priority:30,intelligence:"high"},"build.gradle.kts":{frameworks:["Kotlin","Gradle"],slots:{packageManager:"gradle",mainLanguage:"Kotlin",buildTool:"gradle"},priority:35,intelligence:"ultra-high"},"*.ipynb":{frameworks:["Jupyter","Python"],slots:{mainLanguage:"Python",framework:"Jupyter Notebook"},priority:30,intelligence:"high"},MLproject:{frameworks:["MLflow"],slots:{mainLanguage:"Python",framework:"MLflow",backend:"MLflow",cicd:"MLflow"},priority:30,intelligence:"high"},"dvc.yaml":{frameworks:["DVC","Data Version Control"],slots:{mainLanguage:"Python",framework:"DVC",cicd:"DVC Pipelines"},priority:30,intelligence:"high"},"dvc.lock":{frameworks:["DVC"],slots:{framework:"DVC"},priority:20,intelligence:"medium"},"wrangler.toml":{frameworks:["Cloudflare Workers","Cloudflare"],slots:{hosting:"Cloudflare Workers",backend:"Cloudflare Workers",runtime:"V8 Isolates"},priority:30,intelligence:"high"},"deno.json":{frameworks:["Deno"],slots:{runtime:"Deno",mainLanguage:"TypeScript",packageManager:"Deno"},priority:30,intelligence:"high"},"bun.lockb":{frameworks:["Bun"],slots:{runtime:"Bun",packageManager:"Bun",mainLanguage:"TypeScript/JavaScript"},priority:30,intelligence:"high"},"codecov.yml":{frameworks:["Codecov"],slots:{cicd:"Codecov"},priority:25,intelligence:"high"},"dependabot.yml":{frameworks:["Dependabot","GitHub"],slots:{cicd:"Dependabot"},priority:25,intelligence:"high"},"renovate.json":{frameworks:["Renovate"],slots:{cicd:"Renovate"},priority:25,intelligence:"high"},Makefile:{frameworks:["Make","GNU Make"],slots:{buildTool:"Make"},priority:30,intelligence:"high"},"CMakeLists.txt":{frameworks:["CMake","C","C++"],slots:{buildTool:"CMake",mainLanguage:"C/C++"},priority:30,intelligence:"high"},"meson.build":{frameworks:["Meson","C","C++"],slots:{buildTool:"Meson",mainLanguage:"C/C++"},priority:30,intelligence:"high"},"*.c":{frameworks:["C"],slots:{mainLanguage:"C"},priority:30,intelligence:"high"},"*.cpp":{frameworks:["C++"],slots:{mainLanguage:"C++"},priority:30,intelligence:"high"},"*.cc":{frameworks:["C++"],slots:{mainLanguage:"C++"},priority:30,intelligence:"high"},"*.cxx":{frameworks:["C++"],slots:{mainLanguage:"C++"},priority:25,intelligence:"high"},"*.h":{frameworks:["C","C++"],slots:{mainLanguage:"C/C++"},priority:25,intelligence:"high"},"*.hpp":{frameworks:["C++"],slots:{mainLanguage:"C++"},priority:25,intelligence:"high"},"*.hxx":{frameworks:["C++"],slots:{mainLanguage:"C++"},priority:20,intelligence:"medium"},".env":{frameworks:[],slots:{},priority:20,intelligence:"medium"},".env.example":{frameworks:[],slots:{},priority:25,intelligence:"high"},".env.local":{frameworks:[],slots:{},priority:20,intelligence:"medium"},".env.development":{frameworks:[],slots:{},priority:20,intelligence:"medium"},".env.production":{frameworks:[],slots:{},priority:20,intelligence:"medium"},"skaffold.yaml":{frameworks:["Skaffold","Kubernetes"],slots:{hosting:"Kubernetes",cicd:"Skaffold"},priority:30,intelligence:"high"},"Chart.yaml":{frameworks:["Helm","Kubernetes"],slots:{hosting:"Kubernetes",backend:"Helm"},priority:30,intelligence:"high"},"values.yaml":{frameworks:["Helm","Kubernetes"],slots:{hosting:"Kubernetes"},priority:25,intelligence:"high",confirmWith:["Chart.yaml"]},"pulumi.yaml":{frameworks:["Pulumi"],slots:{hosting:"Cloud",cicd:"Pulumi"},priority:30,intelligence:"high"},"Pulumi.yaml":{frameworks:["Pulumi"],slots:{hosting:"Cloud",cicd:"Pulumi"},priority:30,intelligence:"high"},"terragrunt.hcl":{frameworks:["Terragrunt","Terraform"],slots:{hosting:"Cloud",cicd:"Terragrunt"},priority:30,intelligence:"high"},"ansible.yml":{frameworks:["Ansible"],slots:{cicd:"Ansible"},priority:30,intelligence:"high"},"playbook.yml":{frameworks:["Ansible"],slots:{cicd:"Ansible"},priority:25,intelligence:"high"},"*.cs":{frameworks:["C#",".NET","Unity"],slots:{mainLanguage:"C#"},priority:30,intelligence:"high"},"*.m":{frameworks:["Objective-C","iOS"],slots:{mainLanguage:"Objective-C"},priority:25,intelligence:"high"},".nvmrc":{frameworks:["Node.js","nvm"],slots:{runtime:"Node.js"},priority:25,intelligence:"high"},".tool-versions":{frameworks:["asdf"],slots:{},priority:25,intelligence:"high"},".ruby-version":{frameworks:["Ruby","rbenv"],slots:{mainLanguage:"Ruby",runtime:"Ruby"},priority:25,intelligence:"high"},".python-version":{frameworks:["Python","pyenv"],slots:{mainLanguage:"Python",runtime:"Python"},priority:25,intelligence:"high"},".dockerignore":{frameworks:["Docker"],slots:{},priority:20,intelligence:"medium"},".gitattributes":{frameworks:["Git"],slots:{},priority:15,intelligence:"low"},".npmrc":{frameworks:["npm","Node.js"],slots:{packageManager:"npm"},priority:20,intelligence:"medium"},"sonar-project.properties":{frameworks:["SonarQube","SonarCloud"],slots:{cicd:"SonarQube"},priority:25,intelligence:"high"},"*.fs":{frameworks:["F#",".NET"],slots:{mainLanguage:"F#"},priority:25,intelligence:"high"},"*.mm":{frameworks:["Objective-C++","iOS","macOS"],slots:{mainLanguage:"Objective-C++"},priority:25,intelligence:"high"},"build.zig.zon":{frameworks:["Zig"],slots:{mainLanguage:"Zig",packageManager:"Zig Package Manager",buildTool:"zig build"},priority:35,intelligence:"ultra-high"},"gleam.toml":{frameworks:["Gleam","BEAM","Erlang"],slots:{mainLanguage:"Gleam",runtime:"BEAM",packageManager:"Gleam"},priority:30,intelligence:"high"},"bunfig.toml":{frameworks:["Bun"],slots:{runtime:"Bun",packageManager:"Bun",buildTool:"Bun"},priority:30,intelligence:"high"},"mise.toml":{frameworks:["mise"],slots:{},priority:25,intelligence:"high"},".mise.toml":{frameworks:["mise"],slots:{},priority:25,intelligence:"high"},"manifest.toml":{frameworks:["Flox","Nix"],slots:{},priority:25,intelligence:"high",confirmWith:[".flox"]},justfile:{frameworks:["Just"],slots:{buildTool:"Just"},priority:25,intelligence:"high"},".pre-commit-config.yaml":{frameworks:["pre-commit"],slots:{cicd:"pre-commit"},priority:25,intelligence:"high"},"CLAUDE.md":{frameworks:["Claude Code"],slots:{},priority:30,intelligence:"high",confirmWith:[".claude"]}};import{existsSync as Y9,readFileSync as nH,readdirSync as oH}from"fs";import{join as z3}from"path";var d0={version:2,_doc:"SINGLE SOURCE of Dart/Flutter detection KNOWLEDGE (A+B hybrid, the Truth-is-faf-cli spec). faf-cli imports this directly; faf-python-sdk vendors a synced copy (phase 2); MCPs compose it. Bolster Dart/Flutter by editing THIS file. Logic stays in dart.ts. Refreshed 2026-08-01 (knowledge v2) — community receipt on top of 6.13.0 Dart Edition.",flutterDeps:["flutter"],mcpDeps:["dart_mcp","mcp_server","mcp_dart","dart_mcp_server","mcp","dart_mcpserver"],serverFrameworks:[["serverpod","Serverpod"],["dart_frog","Dart Frog"],["conduit","Conduit"],["angel3_framework","Angel3"],["alfred","Alfred"],["shelf","Shelf"],["jaspr","Jaspr"],["relic","Relic"]],stateManagement:[["flutter_riverpod","Riverpod"],["hooks_riverpod","Riverpod"],["riverpod_annotation","Riverpod"],["riverpod","Riverpod"],["flutter_bloc","Bloc"],["bloc","Bloc"],["provider","Provider"],["get","GetX"],["flutter_mobx","MobX"],["mobx","MobX"],["signals","Signals"],["flutter_hooks","Hooks"]],routing:[["go_router","go_router"],["auto_route","auto_route"],["beamer","Beamer"],["routemaster","Routemaster"]]};var tH=d0.flutterDeps,eH=d0.mcpDeps,$q=d0.serverFrameworks,Zq=d0.stateManagement,Uq=d0.routing;function Xq($){let Z=new Set,U=!1;for(let X of $.split(`
|
|
215
|
-
`)){if(/^(dependencies|dev_dependencies|dependency_overrides):\s*$/.test(X)){U=!0;continue}if(/^\S/.test(X))U=!1;if(U){let Q=X.match(/^\s{2}([a-zA-Z0-9_]+):/);if(Q)Z.add(Q[1].toLowerCase())}}return Z}function T$($){let Z=z3($,"pubspec.yaml");if(!Y9(Z))return null;let U;try{U=
|
|
216
|
-
`)){let Q=X.replace(/\/\/.*$/,"").trim();if(!Q)continue;if(/^require\s*\(\s*$/.test(Q)){U=!0;continue}if(U){if(Q===")"){U=!1;continue}let J=Q.match(/^(\S+)/);if(J)Z.add(J[1].toLowerCase());continue}let z=Q.match(/^require\s+(\S+)/);if(z&&z[1]!=="(")Z.add(z[1].toLowerCase())}return Z}function V9($,Z){let U=Z.toLowerCase();for(let X of $)if(X===U||X.startsWith(`${U}/`))return!0;return!1}function _9($,Z){let U;for(let X of Z){if(!V9($,X[0]))continue;if(!U||X[0].length>U[0].length)U=X}return U}function Gq($,Z){let U;for(let X of Z){if(!V9($,X))continue;if(!U||X.length>U.length)U=X}return U}function _q($){let Z=$.match(/^module\s+(\S+)/m);return Z?Z[1]:""}function Bq($){let Z=w$($,"cmd");if(!J3(Z))return!1;try{for(let U of G9(Z)){let X=w$(Z,U);try{if(zq(X).isDirectory()){if(G9(X).some((z)=>z.endsWith(".go")))return!0}else if(U.endsWith(".go"))return!0}catch{}}}catch{}return!1}function Vq($){let Z=w$($,"main.go");if(!J3(Z))return!1;try{let U=B9(Z,"utf-8");return/^package\s+main\b/m.test(U)}catch{return!1}}function C$($){let Z=w$($,"go.mod");if(!J3(Z))return null;let U;try{U=B9(Z,"utf-8")}catch{return null}let X=_q(U),Q=Yq(U),z=Gq(Q,Jq),J=_9(Q,Hq),H=_9(Q,qq),q=Bq($),Y=Vq($),G,_="",B;if(z)G="mcp",B=`go.mod + ${z} (Go MCP server)`;else if(J)G="backend",_=J[1],B=`go.mod + ${J[0]} (Go backend)`;else if(H)G="cli",_=H[1],B=`go.mod + ${H[0]} (Go CLI)`;else if(q)G="cli",B="go.mod + cmd/ (Go CLI layout)";else if(Y&&!J)G="cli",B="go.mod + main.go package main (Go CLI)";else G="library",B="go.mod (Go module)";return{appType:G,modulePath:X,framework:_,found:B}}import{existsSync as Wq,readFileSync as Dq,readdirSync as Iq}from"fs";import{join as Lq}from"path";var F0={version:1,_doc:"SINGLE SOURCE of C# /.NET detection KNOWLEDGE (Truth-is-faf-cli). faf-cli imports this; SDKs/MCPs compose it. Bolster C# by editing THIS file. Logic stays in csharp.ts. Content-aware: .csproj alone ≠ type — Sdk first, then props/packages. Kill line: .csproj alone ≠ type. 2026-08-01 initial.",mcpPackages:["ModelContextProtocol","ModelContextProtocol.AspNetCore","ModelContextProtocol.Core","ModelContextProtocol.Extensions.Tasks","ModelContextProtocol.Extensions.Apps"],cliPackages:[["System.CommandLine","System.CommandLine"],["Spectre.Console.Cli","Spectre.Console"],["Spectre.Console","Spectre.Console"],["McMaster.Extensions.CommandLineUtils","McMaster"]],testPackages:[["Microsoft.NET.Test.Sdk","VSTest"],["xunit.v3","xUnit"],["xunit","xUnit"],["NUnit","NUnit"],["MSTest.TestFramework","MSTest"],["MSTest","MSTest"]],grpcServerPackages:["Grpc.AspNetCore"],specializedSdks:[["Microsoft.NET.Sdk.Web","web","ASP.NET Core"],["Microsoft.NET.Sdk.Worker","worker","Worker"],["Microsoft.NET.Sdk.BlazorWebAssembly","blazor-wasm","Blazor WebAssembly"],["Microsoft.NET.Sdk.Razor","razor-lib","Razor Class Library"],["MSTest.Sdk","test","MSTest"],["Aspire.AppHost.Sdk","aspire","Aspire AppHost"]],baseSdk:"Microsoft.NET.Sdk"};var Rq=F0.mcpPackages.map(($)=>$.toLowerCase()),Mq=F0.cliPackages.map(([$,Z])=>[$.toLowerCase(),Z]),Kq=F0.testPackages.map(([$,Z])=>[$.toLowerCase(),Z]),Fq=F0.grpcServerPackages.map(($)=>$.toLowerCase()),Pq=F0.specializedSdks,O9=F0.baseSdk.toLowerCase();function Aq($){let Z=$.match(/<Project\b[^>]*\bSdk\s*=\s*"([^"/]+)(?:\/[^"]*)?"/i),U=$.match(/<Sdk\b[^>]*\bName\s*=\s*"([^"]+)"/i),X=(Z?.[1]||U?.[1]||"").trim(),Q=($.match(/<OutputType>\s*([^<]+?)\s*<\/OutputType>/i)?.[1]||"").trim(),z=$.match(/<TargetFramework>\s*([^<]+?)\s*<\/TargetFramework>/i)?.[1],H=($.match(/<TargetFrameworks>\s*([^<]+?)\s*<\/TargetFrameworks>/i)?.[1]||z||"").trim(),q=/<IsTestProject>\s*true\s*<\/IsTestProject>/i.test($),Y=/<UseMaui>\s*true\s*<\/UseMaui>/i.test($),G=/<UseWPF>\s*true\s*<\/UseWPF>/i.test($),_=/<UseWindowsForms>\s*true\s*<\/UseWindowsForms>/i.test($),B=new Set;for(let D of $.matchAll(/<PackageReference\b[^>]*\bInclude\s*=\s*"([^"]+)"/gi))B.add(D[1].toLowerCase());for(let D of $.matchAll(/<PackageReference\s+Include\s*=\s*"([^"]+)"/gi))B.add(D[1].toLowerCase());let O=new Set;for(let D of $.matchAll(/<FrameworkReference\b[^>]*\bInclude\s*=\s*"([^"]+)"/gi))O.add(D[1].toLowerCase());return{sdk:X,outputType:Q,targetFramework:H,isTestProject:q,useMaui:Y,useWpf:G,useWindowsForms:_,packages:B,frameworkRefs:O}}function H3($,Z){let U=Z.toLowerCase();if($.has(U))return!0;for(let X of $)if(X===U||X.startsWith(`${U}.`))return!0;return!1}function W9($,Z){let U;for(let[X,Q]of Z){if(!H3($,X))continue;if(!U||X.length>U[0].length)U=[X,Q]}return U}function Tq($){let Z;for(let U of Rq){if(!H3($,U))continue;if(!Z||U.length>Z.length)Z=U}for(let U of $)if(U==="modelcontextprotocol"||U.startsWith("modelcontextprotocol.")){if(!Z||U.length>Z.length)Z=U}return Z}function Nq($){let Z=$.toLowerCase();if(!Z)return;let U;for(let X of Pq){let Q=X[0].toLowerCase();if(Z===Q||Z.startsWith(`${Q}/`)){if(!U||Q.length>U[0].length)U=X}}return U}function b$($){let Z=$.toLowerCase();return Z==="exe"||Z==="winexe"}function wq($,Z){if($==="mcp")return 0;if($==="mobile")return 1;if($==="backend")return 2;if($==="cli")return 3;if(Z&&Z!=="")return 4;return 5}function Cq($,Z){let U=Z.replace(/\.csproj$/i,""),{sdk:X,packages:Q,frameworkRefs:z,outputType:J}=$,H,q="",Y,G=Tq(Q),_=Nq(X),B=W9(Q,Kq),O=W9(Q,Mq),D=Fq.some((W)=>H3(Q,W)),V=z.has("microsoft.aspnetcore.app");if(G)H="mcp",q="MCP",Y=`${Z} + ${G} (C# MCP server)`;else if($.isTestProject||_?.[1]==="test"||B)H="library",q=B?.[1]||(_?.[1]==="test"?_[2]:"Test"),Y=`${Z} + test (${q})`;else if($.useMaui)H="mobile",q="MAUI",Y=`${Z} + UseMaui (MAUI)`;else if($.useWpf||$.useWindowsForms)H="backend",q=$.useWpf&&$.useWindowsForms?"WPF+WinForms":$.useWpf?"WPF":"Windows Forms",Y=`${Z} + ${q}`;else if(_?.[1]==="web")H="backend",q=D?"gRPC":_[2],Y=`${Z} + Sdk=${_[0]}${D?" + Grpc.AspNetCore":""} (ASP.NET Core)`;else if(_?.[1]==="worker")H="backend",q=_[2],Y=`${Z} + Sdk=${_[0]} (Worker)`;else if(_?.[1]==="blazor-wasm")H="backend",q=_[2],Y=`${Z} + Sdk=${_[0]} (Blazor WASM)`;else if(_?.[1]==="aspire")H="backend",q=_[2],Y=`${Z} + Sdk=${_[0]} (Aspire)`;else if(_?.[1]==="razor-lib")H="library",q=_[2],Y=`${Z} + Sdk=${_[0]} (Razor class library)`;else if(V&&b$(J))H="backend",q="ASP.NET Core",Y=`${Z} + FrameworkReference Microsoft.AspNetCore.App (host)`;else if(V&&!b$(J))H="library",q="ASP.NET Core",Y=`${Z} + FrameworkReference Microsoft.AspNetCore.App (web library)`;else if(O&&(b$(J)||!J))H="cli",q=O[1],Y=`${Z} + ${O[0]} (C# CLI)`;else if(b$(J))H="cli",Y=`${Z} + OutputType=Exe (C# console)`;else{H="library";let W=X?` Sdk=${X}`:"";if(Y=`${Z}${W} (C# class library)`.replace(" Sdk=Microsoft.NET.Sdk",""),!X||X.toLowerCase()===O9||X.toLowerCase().startsWith(`${O9}/`))Y=`${Z} (C# class library)`}return{appType:H,projectName:U,targetFramework:$.targetFramework,sdk:X||"Microsoft.NET.Sdk",framework:q,found:Y}}function A1($){if(!Wq($))return[];try{return Iq($).filter((Z)=>Z.toLowerCase().endsWith(".csproj")).sort()}catch{return[]}}function S$($){let Z=A1($);if(Z.length===0)return null;let U=null,X=999;for(let Q of Z){let z=Lq($,Q),J;try{J=Dq(z,"utf-8")}catch{continue}let H=Aq(J),q=Cq(H,Q),Y=wq(q.appType,q.framework);if(!U||Y<X)U=q,X=Y}return U}import{existsSync as P0,readFileSync as Sq,readdirSync as Eq,statSync as jq}from"fs";import{join as l}from"path";var i={version:1,_doc:"SINGLE SOURCE of JVM (Java/Kotlin) detection KNOWLEDGE (Truth-is-faf-cli). faf-cli imports this; SDKs/MCPs compose it. Bolster JVM by editing THIS file. Logic stays in jvm.ts. Kill line: pom / gradle alone ≠ type. Content-aware: plugins · parents · packaging · deps · version catalogs. One brand JVM — Android/KMP are facets, not a second Kotlin Edition. 2026-08-03 initial (post-intel).",mcpArtifacts:["io.modelcontextprotocol.sdk:mcp","io.modelcontextprotocol.sdk:mcp-core","io.modelcontextprotocol.sdk:mcp-spring-webflux","io.modelcontextprotocol.sdk:mcp-spring-webmvc","org.springframework.ai:spring-ai-starter-mcp-server","org.springframework.ai:spring-ai-starter-mcp-server-webmvc","org.springframework.ai:spring-ai-starter-mcp-server-webflux","org.springframework.ai:spring-ai-starter-mcp-client","org.springframework.ai:spring-ai-mcp-server-spring-boot-starter","org.springframework.ai:spring-ai-mcp-client-spring-boot-starter","io.modelcontextprotocol:kotlin-sdk","io.modelcontextprotocol.kotlin:mcp"],webPlugins:[["org.springframework.boot","Spring Boot"],["io.quarkus","Quarkus"],["io.quarkus.gradle.plugin","Quarkus"],["io.micronaut.application","Micronaut"],["io.micronaut.library","Micronaut"]],webParents:[["org.springframework.boot:spring-boot-starter-parent","Spring Boot"],["io.quarkus.platform:quarkus-bom","Quarkus"],["io.micronaut.platform:micronaut-parent","Micronaut"]],webArtifacts:[["org.springframework.boot:spring-boot-starter-web","Spring Boot"],["org.springframework.boot:spring-boot-starter-webflux","Spring Boot"],["org.springframework.boot:spring-boot-starter","Spring Boot"],["io.quarkus:quarkus-core","Quarkus"],["io.micronaut:micronaut-http-server-netty","Micronaut"],["io.ktor:ktor-server-core","Ktor"],["io.ktor:ktor-server-netty","Ktor"],["io.ktor:ktor-server-cio","Ktor"]],androidPlugins:["com.android.application","com.android.library","com.android.kotlin.multiplatform.library"],kmpPlugins:["org.jetbrains.kotlin.multiplatform","kotlin-multiplatform"],jvmKotlinPlugins:["org.jetbrains.kotlin.jvm","kotlin-jvm","org.jetbrains.kotlin.android","kotlin-android"],cliPlugins:[["org.gradle.application","application"],["application","application"]],cliArtifacts:[["info.picocli:picocli","Picocli"],["com.github.ajalt.clikt:clikt","Clikt"],["com.github.ajalt.clikt:clikt-jvm","Clikt"]],libraryPlugins:["java-library","org.gradle.java-library"]};var gq=i.mcpArtifacts.map(($)=>$.toLowerCase()),xq=i.webPlugins.map(([$,Z])=>[$.toLowerCase(),Z]),hq=i.webParents.map(([$,Z])=>[$.toLowerCase(),Z]),yq=i.webArtifacts.map(([$,Z])=>[$.toLowerCase(),Z]),yB=i.androidPlugins.map(($)=>$.toLowerCase()),fq=i.kmpPlugins.map(($)=>$.toLowerCase()),uq=i.jvmKotlinPlugins.map(($)=>$.toLowerCase()),kq=i.cliPlugins.map(([$,Z])=>[$.toLowerCase(),Z]),vq=i.cliArtifacts.map(([$,Z])=>[$.toLowerCase(),Z]),mq=i.libraryPlugins.map(($)=>$.toLowerCase()),pq=["pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts"];function q3($){return pq.some((Z)=>P0(l($,Z)))}function N1($){try{return Sq($,"utf-8")}catch{return null}}function lq($){let Z=new Map,U=new Map,X="";for(let Q of $.split(`
|
|
217
|
-
`)){let z=Q.replace(/#.*$/,"").trim();if(!z)continue;let J=z.match(/^\[([^\]]+)\]$/);if(J){X=J[1].trim().toLowerCase();continue}let H=z.match(/^([A-Za-z0-9_.-]+)\s*=\s*\{[^}]*\bid\s*=\s*"([^"]+)"/);if(H&&(X==="plugins"||X.endsWith(".plugins"))){Z.set(H[1].replace(/-/g,".").toLowerCase(),H[2].toLowerCase()),Z.set(H[1].toLowerCase(),H[2].toLowerCase());continue}let q=z.match(/^([A-Za-z0-9_.-]+)\s*=\s*\{[^}]*\bmodule\s*=\s*"([^"]+)"/);if(q&&(X==="libraries"||X.endsWith(".libraries"))){let _=q[1].toLowerCase();U.set(_,q[2].toLowerCase()),U.set(_.replace(/-/g,"."),q[2].toLowerCase());continue}let Y=z.match(/^([A-Za-z0-9_.-]+)\s*=\s*\{[^}]*\bgroup\s*=\s*"([^"]+)"[^}]*\bname\s*=\s*"([^"]+)"/);if(Y&&(X==="libraries"||X.endsWith(".libraries"))){let _=`${Y[2]}:${Y[3]}`.toLowerCase(),B=Y[1].toLowerCase();U.set(B,_),U.set(B.replace(/-/g,"."),_);continue}let G=z.match(/^([A-Za-z0-9_.-]+)\s*=\s*"([^"]+)"/);if(G){let _=G[1].toLowerCase(),B=G[2];if(X==="plugins"||X.endsWith(".plugins")){let O=B.split(":")[0].toLowerCase();Z.set(_,O),Z.set(_.replace(/-/g,"."),O)}else if(X==="libraries"||X.endsWith(".libraries")){let O=B.split(":");if(O.length>=2){let D=`${O[0]}:${O[1]}`.toLowerCase();U.set(_,D),U.set(_.replace(/-/g,"."),D)}}}}return{plugins:Z,libraries:U}}function dq($){let Z=l($,"gradle","libs.versions.toml");if(!P0(Z))return{plugins:new Map,libraries:new Map};let U=N1(Z);if(!U)return{plugins:new Map,libraries:new Map};return lq(U)}function cq($){let Z=[];for(let U of $.matchAll(/include\s*\(\s*([^)]+)\)/g))for(let X of U[1].split(",")){let Q=X.replace(/['":\s]/g,"").replace(/^:/,"");if(Q)Z.push(Q.replace(/:/g,"/"))}for(let U of $.matchAll(/include\s+((?:['"][^'"]+['"]\s*,?\s*)+)/g))for(let X of U[1].split(",")){let Q=X.replace(/['":\s]/g,"").replace(/^:/,"");if(Q)Z.push(Q.replace(/:/g,"/"))}for(let U of $.matchAll(/project\s*\(\s*["']:([^"']+)["']\s*\)\s*\.projectDir\s*=\s*file\s*\(\s*["']([^"']+)["']\s*\)/g))Z.push(U[2].replace(/^\.\//,""));return[...new Set(Z)]}function iq($,Z){let U=new Set;for(let X of $.matchAll(/\bid\s*\(\s*["']([^"']+)["']\s*\)/g))U.add(X[1].toLowerCase());for(let X of $.matchAll(/\bid\s+['"]([^'"]+)['"]/g))U.add(X[1].toLowerCase());for(let X of $.matchAll(/plugins\s*\{([\s\S]*?)\}/g))for(let Q of X[1].split(/[\n;]/)){let z=Q.replace(/\/\/.*$/,"").trim();if(!z||z.startsWith("id")||z.startsWith("kotlin")||z.startsWith("alias"))continue;let J=z.match(/^`([a-zA-Z0-9.-]+)`$/)||z.match(/^([a-zA-Z][a-zA-Z0-9.-]*)$/);if(J)U.add(J[1].toLowerCase())}for(let X of $.matchAll(/\bkotlin\s*\(\s*["']([^"']+)["']\s*\)/g)){let Q=X[1].toLowerCase();if(Q==="jvm")U.add("org.jetbrains.kotlin.jvm");else if(Q==="multiplatform")U.add("org.jetbrains.kotlin.multiplatform");else if(Q==="android")U.add("org.jetbrains.kotlin.android");else U.add(`org.jetbrains.kotlin.${Q}`)}for(let X of $.matchAll(/libs\.plugins\.([A-Za-z0-9_.]+)/g)){let Q=X[1].toLowerCase(),z=Z.plugins.get(Q)||Z.plugins.get(Q.replace(/\./g,"-"))||Z.plugins.get(Q.replace(/-/g,"."));if(z)U.add(z);else if(Q.includes("spring")&&Q.includes("boot"))U.add("org.springframework.boot")}for(let X of $.matchAll(/apply\s+plugin\s*:\s*['"]([^'"]+)['"]/g))U.add(X[1].toLowerCase());return U}function rq($,Z){let U=new Set;for(let X of $.matchAll(/["']([A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+)(?::[^"']+)?["']/g))U.add(X[1].toLowerCase());for(let X of $.matchAll(/libs\.([A-Za-z0-9_.]+)/g)){let Q=X[1].toLowerCase();if(Q.startsWith("plugins."))continue;let z=[Q,Q.replace(/\./g,"-"),Q.replace(/-/g,".")];for(let J of z){let H=Z.libraries.get(J);if(H){U.add(H.includes(":")?H.split(":").slice(0,2).join(":"):H);break}}}return U}function L9($){let Z=($.match(/<packaging>\s*([^<]+?)\s*<\/packaging>/i)?.[1]||"jar").trim().toLowerCase(),U=new Set,X=$.match(/<parent>([\s\S]*?)<\/parent>/i);if(X){let J=X[1].match(/<groupId>\s*([^<]+?)\s*<\/groupId>/i)?.[1]?.trim(),H=X[1].match(/<artifactId>\s*([^<]+?)\s*<\/artifactId>/i)?.[1]?.trim();if(J&&H)U.add(`${J}:${H}`.toLowerCase())}let Q=new Set;for(let J of $.matchAll(/<dependency>([\s\S]*?)<\/dependency>/gi)){let H=J[1].match(/<groupId>\s*([^<]+?)\s*<\/groupId>/i)?.[1]?.trim(),q=J[1].match(/<artifactId>\s*([^<]+?)\s*<\/artifactId>/i)?.[1]?.trim();if(H&&q)Q.add(`${H}:${q}`.toLowerCase())}let z=[];for(let J of $.matchAll(/<module>\s*([^<]+?)\s*<\/module>/gi))z.push(J[1].trim());return{packaging:Z,parents:U,artifacts:Q,modules:z}}function $0($,Z){let U=Z.toLowerCase();if($.has(U))return!0;for(let X of $)if(X===U||X.endsWith(`.${U}`)||X===U.replace(/^org\.gradle\./,""))return!0;return!1}function T1($,Z,U){let X;for(let[Q,z]of Z){let J=!1;if(U==="plugin")J=$0($,Q);else if(J=$.has(Q)||[...$].some((H)=>H===Q||H.startsWith(`${Q}:`)||H.startsWith(`${Q}.`)),!J&&U==="artifact")J=[...$].some((H)=>H===Q||H.startsWith(`${Q}`));if(!J)continue;if(!X||Q.length>X[0].length)X=[Q,z]}return X}function sq($){let Z;for(let U of gq)for(let X of $){if(X===U||X.startsWith(`${U}:`)||X.startsWith(U.replace(/:mcp$/,":"))){if(!Z||U.length>Z.length)Z=U}if(X.startsWith("io.modelcontextprotocol")||X.includes("spring-ai-starter-mcp")||X.includes("spring-ai-mcp")){if(!Z||X.length>Z.length)Z=X}}return Z}function R9($){let Z=new Set,U=!1,X=!1,Q=[l($,"src"),l($,"src","main")],z=(J,H)=>{if(H>4||!P0(J))return;let q;try{q=Eq(J)}catch{return}for(let Y of q){if(Y==="androidMain"||Y==="commonMain"||Y==="jvmMain"||Y==="iosMain")Z.add(Y);let G=l(J,Y);try{if(jq(G).isDirectory())z(G,H+1);else if(Y.endsWith(".kt")||Y.endsWith(".kts"))U=!0;else if(Y.endsWith(".java"))X=!0}catch{}}};for(let J of Q)z(J,0);return{kotlin:U,java:X,hints:Z}}function aq($){let Z=[],U=$.plugins,X=$.artifacts,Q=fq.some((A)=>$0(U,A))||$.sourceHints.has("commonMain"),z=$0(U,"com.android.application"),J=$0(U,"com.android.library")||$0(U,"com.android.kotlin.multiplatform.library");if(z||J)Z.push("android");if(Q)Z.push("multiplatform");let H=sq(X),q=T1(U,xq,"plugin"),Y=T1($.parents,hq,"parent"),G=T1(X,yq,"artifact"),_=T1(U,kq,"plugin"),B=T1(X,vq,"artifact"),O=mq.some((A)=>$0(U,A)),D=$.packaging==="pom",V,W="",I;if(z)V="mobile",W=Q?"Android+KMP":"Android",I=`${$.path||"root"} + com.android.application (${W})`;else if(H)V="mcp",W="MCP",Z.push("mcp"),I=`${$.path||"root"} + ${H} (JVM MCP server)`;else if(q||Y||G){V="backend",W=q?.[1]||Y?.[1]||G?.[1]||"JVM";let A=q?.[0]||Y?.[0]||G?.[0]||"web";I=`${$.path||"root"} + ${A} (JVM backend)`}else if(Q&&!J)V="library",W="Kotlin Multiplatform",I=`${$.path||"root"} + kotlin multiplatform (KMP library)`;else if(J)V="library",W=Q?"Android+KMP":"Android",I=`${$.path||"root"} + android library (${W})`;else if(B||$.hasApplicationPlugin&&($.hasMainClass||_)||_&&$.hasMainClass)V="cli",W=B?.[1]||"application",I=B?`${$.path||"root"} + ${B[0]} (JVM CLI)`:`${$.path||"root"} + application plugin (JVM CLI)`;else if($.hasApplicationPlugin&&!O)V="cli",W="application",I=`${$.path||"root"} + application plugin (JVM CLI)`;else if(D)V="library",I=`${$.path||"root"} + packaging=pom (Maven aggregator/BOM)`;else{V="library";let A=$.kotlinSources&&!$.javaSources?"Kotlin":"JVM";if(I=`${$.path||"root"} (${A} library)`,O)I=`${$.path||"root"} + java-library (JVM library)`}let L="Java";if($.kotlinSources&&$.javaSources)L="Java/Kotlin";else if($.kotlinSources||uq.some((A)=>$0(U,A))||Q)L="Kotlin";let F=[...new Set(Z)];return{appType:V,framework:W,facets:F,found:I,buildTool:$.buildTool,mainLanguage:L}}function nq($,Z){if($==="mcp")return 0;if($==="mobile")return 1;if(Z.includes("multiplatform")&&$==="backend")return 2;if($==="backend")return 3;if($==="cli")return 4;if(Z.includes("multiplatform"))return 5;if(Z.includes("android"))return 6;return 7}function D9($,Z,U){let X=Z?l($,Z):$,Q=l(X,"build.gradle.kts"),z=l(X,"build.gradle"),J=P0(Q)?Q:P0(z)?z:null;if(!J)return null;let H=N1(J);if(!H)return null;let q=iq(H,U),Y=rq(H,U),G=R9(X),_=/mainClass\s*[.=]/.test(H)||/mainClassName\s*=/.test(H)||/Main-Class/.test(H),B=$0(q,"application")||$0(q,"org.gradle.application");return{path:Z||"build.gradle",plugins:q,artifacts:Y,packaging:"jar",parents:new Set,hasMainClass:_,hasApplicationPlugin:B,sourceHints:G.hints,kotlinSources:G.kotlin||J.endsWith(".kts"),javaSources:G.java,buildTool:"gradle"}}function I9($,Z){let U=Z?l($,Z):$,X=l(U,"pom.xml");if(!P0(X))return null;let Q=N1(X);if(!Q)return null;let{packaging:z,parents:J,artifacts:H}=L9(Q),q=R9(U);return{path:Z?`${Z}/pom.xml`:"pom.xml",plugins:new Set,artifacts:H,packaging:z,parents:J,hasMainClass:/<mainClass>/.test(Q),hasApplicationPlugin:!1,sourceHints:q.hints,kotlinSources:q.kotlin,javaSources:q.java,buildTool:"maven"}}function w1($){if(!q3($))return null;let Z=dq($),U=[],X=null;for(let Y of["settings.gradle.kts","settings.gradle"]){let G=l($,Y);if(P0(G)){X=N1(G);break}}let Q=X?cq(X):[],z=D9($,"",Z);if(z)U.push(z);for(let Y of Q){let G=D9($,Y,Z);if(G)U.push(G)}let J=I9($,"");if(J){U.push(J);let Y=N1(l($,"pom.xml"));if(Y){let{modules:G}=L9(Y);for(let _ of G){let B=I9($,_);if(B)U.push(B)}}}if(U.length===0&&X)return{appType:"library",framework:"",buildTool:"gradle",mainLanguage:"Java/Kotlin",facets:[],found:"settings.gradle (Gradle multi-project root)"};if(U.length===0)return null;let H=null,q=999;for(let Y of U){let G=aq(Y),_=nq(G.appType,G.facets);if(!H||_<q)H={appType:G.appType,framework:G.framework,buildTool:G.buildTool,mainLanguage:G.mainLanguage,facets:G.facets,found:G.found},q=_}if(H&&Q.length>0&&!H.found.includes("multi-project"));return H}var UY=new Set(["node_modules",".git","dist","build","venv",".venv","__pycache__","target","coverage",".next",".svelte-kit","vendor"]),XY=new Set([".py",".ts",".tsx",".js",".jsx",".svelte",".vue",".rb",".go",".rs",".php",".java",".kt",".swift"]),QY={mainLanguage:["project","main_language"],main_language:["project","main_language"],framework:["stack","frontend"],cssFramework:["stack","css_framework"],css:["stack","css_framework"],uiLibrary:["stack","ui_library"],ui_library:["stack","ui_library"],stateManagement:["stack","state_management"],state:["stack","state_management"],backend:["stack","backend"],apiType:["stack","api_type"],api:["stack","api_type"],runtime:["stack","runtime"],database:["stack","database"],db:["stack","database"],connection:["stack","connection"],hosting:["stack","hosting"],buildTool:["stack","build"],build_tool:["stack","build"],build:["stack","build"],packageManager:["stack","package_manager"],pkg_manager:["stack","package_manager"],cicd:["stack","cicd"]},zY=[["packageManager","package-manager"],["pkg_manager","package-manager"],["mainLanguage","language"],["main_language","language"],["framework","framework"],["backend","backend"],["database","database"],["db","database"],["cicd","ci-cd"],["hosting","hosting"],["buildTool","build"],["build_tool","build"],["build","build"],["runtime","runtime"],["cssFramework","css"],["css","css"],["uiLibrary","ui-library"],["stateManagement","state-management"],["apiType","api"],["api","api"]];function JY($,Z){for(let[U,X]of zY)if(U in $)return X;return Z.length>0?"framework":"config"}function HY($){try{let Z=JSON.parse(tq($,"utf-8")),U=["background","content_scripts","action","browser_action","permissions"].some((X)=>(X in Z));if(typeof Z.manifest_version==="number"&&U)return"chrome";return"other"}catch{return"other"}}function qY($){let Z=[],U=ZY($),X=oq(Y3($,".git")),Q=new Set;for(let z=0;z<10;z++){let J;try{J=M9(U)}catch{break}for(let q of J){if(q.toLowerCase().endsWith(".csproj")){let G=S$(U);if(G){let _={mainLanguage:"C#",packageManager:"NuGet",buildTool:"dotnet"};if(G.appType==="backend"&&G.framework)_.backend=G.framework;else if(G.appType==="cli"&&G.framework)_.framework=G.framework;else if(G.appType==="mcp")_.apiType="MCP";else if(G.appType==="mobile"&&G.framework)_.framework=G.framework;if(G.targetFramework)_.runtime=G.targetFramework;let B=G.framework?[G.framework,"C#",".NET"]:["C#",".NET"];Z.push({slots:_,priority:36,frameworks:B,fileName:q})}continue}let Y=Q3[q];if(!Y)continue;if(q==="manifest.json"&&HY(Y3(U,q))!=="chrome")continue;if(q==="pubspec.yaml"){let G=T$(U);if(G){let _={mainLanguage:"Dart",packageManager:"pub"};if(G.isFlutter){if(_.framework="Flutter",G.stateManagement)_.stateManagement=G.stateManagement}else if(G.appType==="backend"&&G.framework)_.backend=G.framework;else if(G.appType==="mcp")_.apiType="MCP";Z.push({slots:_,priority:Y.priority,frameworks:G.isFlutter?["Flutter","Dart"]:["Dart"],fileName:q});continue}}if(q==="go.mod"){let G=C$(U);if(G){let _={mainLanguage:"Go",packageManager:"go modules",buildTool:"go build"};if(G.appType==="backend"&&G.framework)_.backend=G.framework;else if(G.appType==="cli"&&G.framework)_.framework=G.framework;else if(G.appType==="mcp")_.apiType="MCP";let B=G.framework?[G.framework,"Go"]:["Go"];Z.push({slots:_,priority:Y.priority,frameworks:B,fileName:q});continue}}if(q==="pom.xml"||q==="build.gradle"||q==="build.gradle.kts"||q==="settings.gradle"||q==="settings.gradle.kts"){if(Q.has(U))continue;Q.add(U);let G=w1(U);if(G){let _={mainLanguage:G.mainLanguage==="Java/Kotlin"?"Kotlin":G.mainLanguage,packageManager:G.buildTool==="maven"?"maven":"gradle",buildTool:G.buildTool};if(G.appType==="backend"&&G.framework)_.backend=G.framework;else if(G.appType==="cli"&&G.framework)_.framework=G.framework;else if(G.appType==="mcp")_.apiType="MCP";else if(G.appType==="mobile")_.framework=G.framework||"Android";if(G.facets.includes("multiplatform"))_.framework=G.framework||"Kotlin Multiplatform";let B=G.framework?[G.framework,"JVM",G.mainLanguage==="Kotlin"?"Kotlin":"Java"]:["JVM",G.mainLanguage==="Kotlin"?"Kotlin":"Java"];Z.push({slots:_,priority:Y.priority??35,frameworks:B,fileName:q});continue}}Z.push({slots:Y.slots||{},priority:Y.priority,frameworks:Y.frameworks,fileName:q})}if(X&&z===0)break;let H=eq(U);if(H===U)break;U=H}return Z}function YY($){let Z=[];for(let U of F9($,2,{count:0})){let X=Q3[`*${U}`],Q=X?.slots?.mainLanguage;if(Q)Z.push({slots:{mainLanguage:Q},priority:X.priority,frameworks:X.frameworks})}return Z}function K9($){let Z=[...qY($),...YY($)],U={},X={},Q=new Set;for(let Y of Z){Y.frameworks.forEach((G)=>Q.add(G));for(let[G,_]of Object.entries(Y.slots))if(_&&!_.includes("/")&&(!(G in U)||Y.priority>X[G]))U[G]=_,X[G]=Y.priority}let z=new Map;for(let Y of Z){if(!Y.fileName)continue;if(!z.has(Y.fileName))z.set(Y.fileName,{fileName:Y.fileName,category:JY(Y.slots,Y.frameworks),priority:Y.priority})}let J=[...z.values()].sort((Y,G)=>G.priority-Y.priority||Y.fileName.localeCompare(G.fileName)),H=[];if(U.mainLanguage)H.push(U.mainLanguage.toLowerCase());if(U.framework)H.push(U.framework.toLowerCase());let q=H.length>0?H.join("-"):"unknown-stack";return{slotFills:U,frameworks:[...Q],confirmedCount:Z.length,discoveredFormats:J,stackSignature:q}}function G3($){let{slotFills:Z}=K9($),U={};for(let[X,Q]of Object.entries(Z)){let z=QY[X];if(!z||!Q)continue;let[J,H]=z;if(J==="project")(U.project??={})[H]=Q;else(U.stack??={})[H]=Q}return U}function F9($,Z,U){let X=new Set;if(Z<0||U.count>400)return X;let Q;try{Q=M9($,{withFileTypes:!0})}catch{return X}for(let z of Q){if(U.count++>400)break;if(!z.isDirectory()){let J=$Y(z.name);if(XY.has(J))X.add(J);continue}if(UY.has(z.name)||z.name.startsWith("."))continue;for(let J of F9(Y3($,z.name),Z-1,U))X.add(J)}return X}import{existsSync as P9,readFileSync as A9}from"fs";import{join as T9}from"path";var f=($,Z,U)=>({value:$,source:Z,confidence:U});function N9($){let Z=GY($),U=_Y($),X={},Q=(z,J)=>{if(J)X[z]=J};return Q("what",BY(Z,U)),Q("who",VY(U)),Q("why",OY(U)),Q("where",WY(Z,U)),Q("when",DY(U)),Q("how",IY(Z,U)),X}function _3($){let Z=N9($),U={};return Object.keys(Z).forEach((X)=>{let Q=Z[X];if(Q)U[X]=Q.value}),U}function GY($){let Z=T9($,"package.json");if(!P9(Z))return null;try{return JSON.parse(A9(Z,"utf-8"))}catch{return null}}function _Y($){let Z=T9($,"README.md");if(!P9(Z))return"";let U;try{U=A9(Z,"utf-8")}catch{return""}return U.split(`
|
|
213
|
+
`}function BH($,Z,U,X="project.faf"){QH(zH($,"project.html"),y6(Z,U,X),"utf-8")}import{writeFileSync as VH}from"fs";import{join as OH}from"path";var f6="application/vnd.faf+yaml",WH="https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json",DH=/^[a-zA-Z0-9.-]+\/[a-zA-Z0-9._-]+$/;function k6($){let Z=String($.project?.name??"project").trim();if(Z.includes("/")&&DH.test(Z))return Z;let U=$.project?.homepage??$.project?.website??$.project?.url,X="local";if(U)try{X=new URL(U).hostname.replace(/^www\./,"").split(".").reverse().join(".")}catch{}let Q=Z.replace(/[^a-zA-Z0-9._-]/g,"-").replace(/^-+|-+$/g,"")||"project";return`${X}/${Q}`}function IH($){let Z=String($.project?.goal??$.context??$.project?.name??"MCP server").replace(/\s+/g," ").trim();if(!Z)return"MCP server";return Z.length<=100?Z:`${Z.slice(0,97).trimEnd()}...`}function a2($,Z={}){return{faf:Z.fafPointer??"./project.faf",mediaType:f6,iana:`https://www.iana.org/assignments/media-types/${f6}`,deterministic:!0,...Z.scoreEndpoint?{scoreEndpoint:Z.scoreEndpoint}:{},generated:$.generated??Z.now??new Date().toISOString()}}function v6($,Z={}){let U={$schema:WH,name:k6($),version:String($.project?.version??"0.1.0"),description:IH($)},X=MH($)??$.project?.name;if(X&&X.length<=100)U.title=X;let Q=$.project?.homepage??$.project?.website??$.project?.url;if(Q)U.websiteUrl=Q;if(Z.remoteUrl)U.remotes=[{type:"streamable-http",url:Z.remoteUrl}];return U._meta={"one.faf/context":a2($,Z)},U}var m6="io.modelcontextprotocol.registry/publisher-provided",u6=4096;function LH($,Z={}){let U={"one.faf/context":a2($,Z)},X=new TextEncoder().encode(JSON.stringify(U)).length;if(X>u6)throw Error(`publisher-provided _meta is ${X}B — exceeds the registry ${u6}B cap`);return{[m6]:U}}function RH($){return k6($)}function MH($){let Z=$.project?.title;if(typeof Z==="string"){let U=Z.trim();if(U&&U.length<=100)return U}return}function KH($,Z,U={}){let X=v6(Z,U),Q=OH($,"server-card");return VH(Q,`${JSON.stringify(X,null,2)}
|
|
214
|
+
`,"utf-8"),Q}var n2=["ephemeral","standard","high","critical"],B0=Object.fromEntries(n2.map(($,Z)=>[$,Z])),F$=new Set(["user","feedback","project","reference"]),o2=new Set(["version","profile","namepoint","created","last_etched","retention","index","memory"]),t2=new Set(["facts","sessions","preferences","custom"]),e2={low:"ephemeral",medium:"standard"};import{readFileSync as FH,writeFileSync as PH,existsSync as AH}from"fs";function m0(){return new Date().toISOString().replace(/\.\d{3}Z$/,"Z")}function u($){return $===null||$===void 0}function F1($){if(u($))return"standard";if(e2[$])return e2[$];if($ in B0)return $;return"standard"}var TH=new Set(["text","id","type","priority","tags","links","timestamp","source"]);function p6($){if(typeof $==="string")return{text:$,id:null,type:null,priority:"standard",tags:[],links:[],timestamp:null,source:null,extra:{}};if(!$||typeof $!=="object"||!("text"in $))throw Error(`fact must be a string or a mapping with 'text': ${JSON.stringify($)}`);let Z=$,U={};for(let[X,Q]of Object.entries(Z))if(!TH.has(X))U[X]=Q;return{text:String(Z.text),id:Z.id??null,type:Z.type??null,priority:F1(Z.priority),tags:Array.isArray(Z.tags)?Z.tags.slice():[],links:Array.isArray(Z.links)?Z.links.slice():[],timestamp:Z.timestamp??null,source:Z.source??null,extra:U}}function l6($){if(u($.id)&&u($.type)&&$.tags.length===0&&$.links.length===0&&u($.timestamp)&&u($.source)&&Object.keys($.extra).length===0&&$.priority==="standard")return $.text;let U={text:$.text};if(!u($.id))U.id=$.id;if(!u($.type))U.type=$.type;if(U.priority=$.priority,$.tags.length)U.tags=$.tags;if($.links.length)U.links=$.links;if(!u($.timestamp))U.timestamp=$.timestamp;if(!u($.source))U.source=$.source;return Object.assign(U,$.extra),U}class K0{namepoint;profile;retention;created;last_etched;_facts;_byId;_index;_sessions;_preferences;_custom;_extra;_memoryExtra;constructor($,Z={}){this.namepoint=$,this.profile=Z.profile??"knowledge",this.retention=Z.retention??"forever",this.created=Z.created??m0(),this.last_etched=this.created,this._facts=Z.facts?Z.facts.slice():[],this._byId=new Map,this._facts.forEach((U,X)=>{if(!u(U.id))this._byId.set(U.id,X)}),this._index=Z.index?Z.index.slice():[],this._sessions=Z.sessions?structuredClone(Z.sessions):[],this._preferences=Z.preferences?{...Z.preferences}:{},this._custom=Z.custom?{...Z.custom}:{},this._extra=Z.extra?{...Z.extra}:{},this._memoryExtra=Z.memoryExtra?{...Z.memoryExtra}:{}}get facts(){return this._facts}get index(){return this._index}get sessions(){return this._sessions}get preferences(){return this._preferences}get custom(){return this._custom}get extra(){return this._extra}get memoryExtra(){return this._memoryExtra}static load($){if(!AH($))throw Error(`soul file not found: ${$}`);let Z=FH($,"utf-8"),U=$0(Z);if(!U||typeof U!=="object")throw Error("soul is not a YAML mapping");let X=U.memory&&typeof U.memory==="object"?U.memory:{},Q=Array.isArray(X.facts)?X.facts:[],z={};for(let[q,Y]of Object.entries(U))if(!o2.has(q))z[q]=structuredClone(Y);let J={};for(let[q,Y]of Object.entries(X))if(!t2.has(q))J[q]=structuredClone(Y);let H=new K0(String(U.namepoint??$.replace(/.*\//,"").replace(/\.fafm$/,"")),{profile:String(U.profile??"voice"),facts:Q.map(p6),retention:String(U.retention??"forever"),created:U.created??null,index:Array.isArray(U.index)?U.index.slice():[],sessions:Array.isArray(X.sessions)?structuredClone(X.sessions):[],preferences:X.preferences&&typeof X.preferences==="object"?structuredClone(X.preferences):{},custom:X.custom&&typeof X.custom==="object"?structuredClone(X.custom):{},extra:z,memoryExtra:J});return H.last_etched=String(U.last_etched??H.created),H}static fromFile($){return K0.load($)}toDoc(){let $={facts:this._facts.map(l6),sessions:structuredClone(this._sessions),preferences:structuredClone(this._preferences),custom:structuredClone(this._custom)};for(let[U,X]of Object.entries(this._memoryExtra))if(!t2.has(U))$[U]=structuredClone(X);let Z={version:"1.1",profile:this.profile,namepoint:this.namepoint,created:this.created,last_etched:this.last_etched,retention:this.retention,index:this._index.slice(),memory:$};for(let[U,X]of Object.entries(this._extra))if(!o2.has(U))Z[U]=structuredClone(X);return Z}toYaml(){return M$(this.toDoc(),{lineWidth:100})}rebuildIndex($=80){return this._index=this._facts.map((Z)=>`${Z.id??"?"} — ${Z.text.slice(0,$)}`),this._index}save($,Z={}){if(Z.reindex!==!1)this.rebuildIndex();return PH($,this.toYaml(),"utf-8"),$}toFile($,Z={}){return this.save($,Z)}add($){if(!u($.id)&&this._byId.has($.id)){let Z=this._byId.get($.id);if(Z!==void 0)this._facts[Z]=$}else if(this._facts.push($),!u($.id))this._byId.set($.id,this._facts.length-1);if($.timestamp&&$.timestamp>(this.last_etched||""))this.last_etched=$.timestamp;return $}etch($,Z={}){return this.add({text:$,id:Z.id??null,type:Z.type??null,priority:F1(Z.priority),tags:Z.tags?Z.tags.slice():[],links:Z.links?Z.links.slice():[],timestamp:m0(),source:Z.source??null,extra:{}})}recall($,Z={}){let U=B0[F1(Z.minPriority??"ephemeral")]??0,X=($??"").toLowerCase(),Q=new Set(Z.tags??[]),z=[];this._facts.forEach((H,q)=>{if(X&&!H.text.toLowerCase().includes(X))return;if(Q.size>0&&![...Q].some((Y)=>H.tags.includes(Y)))return;if(!u(Z.type)&&H.type!==Z.type)return;if((B0[H.priority]??1)<U)return;z.push([q,H])}),z.sort((H,q)=>{let Y=B0[H[1].priority]??1,G=B0[q[1].priority]??1;if(G!==Y)return G-Y;let _=H[1].timestamp??"",B=q[1].timestamp??"";if(B!==_)return B<_?-1:B>_?1:0;return q[0]-H[0]});let J=z.map(([,H])=>H);if(!u(Z.limit))return J.slice(0,Z.limit);return J}getFact($){let Z=this._byId.get($);return Z===void 0?null:this._facts[Z]}deleteFact($){let Z=this._byId.get($);if(Z===void 0)return!1;return this._facts.splice(Z,1),this._byId.clear(),this._facts.forEach((U,X)=>{if(!u(U.id))this._byId.set(U.id,X)}),!0}}import{readdirSync as NH,readFileSync as wH,statSync as d6,existsSync as CH}from"fs";import{join as bH,basename as c6,resolve as SH}from"path";var i6=new Set(["MEMORY.md","MEMORY-FULL.md","README.md"]),EH=/\[\[([^\]]+)\]\]/g;function jH($){let Z=d6($).mtimeMs;return new Date(Z).toISOString().replace(/\.\d{3}Z$/,"Z")}function gH($){if(!$.startsWith("---"))return{fm:null,body:$};let Z=$.split("---");if(Z.length<3)return{fm:null,body:$};try{let U=$0(Z[1]);if(!U||typeof U!=="object")return{fm:null,body:Z.slice(2).join("---").trim()};return{fm:U,body:Z.slice(2).join("---").trim()}}catch{return{fm:null,body:$}}}function xH($,Z,U){if(!U.name)return null;let X=U.metadata&&typeof U.metadata==="object"?U.metadata:{},Q=X.type;if(typeof Q!=="string"||!F$.has(Q))return null;let z=String(U.name).trim(),H=(U.description!==void 0&&U.description!==null&&String(U.description).trim()?String(U.description).trim():"")||z,q={};if(X.originSessionId)q.provenance=[`session:${X.originSessionId}`];let Y=[...new Set([...Z.matchAll(EH)].map((G)=>G[1]))].sort();return{text:H,id:z,type:Q,priority:"standard",tags:[],links:Y,timestamp:jH($),source:`claude-code memory: ${c6($)}`,extra:q}}function r6($,Z={}){let U=SH($);if(!CH(U))throw Error(`Claude memory directory not found: ${U}`);if(!d6(U).isDirectory())throw Error(`Claude memory path is not a directory: ${U}`);let X=Z.skip??i6,Q=Z.namepoint??`@claude-code:${c6(U)}`,z=[],J=NH(U).filter((_)=>_.endsWith(".md")).sort();for(let _ of J){if(X.has(_))continue;let B=bH(U,_),O;try{O=wH(B,"utf-8")}catch{continue}let{fm:D,body:V}=gH(O);if(!D)continue;let W=xH(B,V,D);if(W)z.push(W)}let H=z.map((_)=>_.timestamp).filter(Boolean),q=H.length?H.reduce((_,B)=>_<B?_:B):m0(),Y=H.length?H.reduce((_,B)=>_>B?_:B):q,G=new K0(Q,{profile:"knowledge",facts:z,created:q});return G.last_etched=Y,G.rebuildIndex(),G}var t6="faf-interview/1",p0="(terse — 3-4 words)",$3=[{path:"project.name",question:"What is the name of this project?",header:"Name",type:"text",required:!0},{path:"project.goal",question:"What does this project do? (one sentence)",header:"Goal",type:"text",required:!0},{path:"human_context.who",question:`Who is this for? ${p0}`,header:"Who",type:"text",required:!0},{path:"human_context.what",question:`What are they building? ${p0}`,header:"What",type:"text",required:!0},{path:"human_context.why",question:`Why does it exist? ${p0}`,header:"Why",type:"text",required:!0},{path:"human_context.where",question:`Where does it run or ship? ${p0}`,header:"Where",type:"text",required:!0},{path:"human_context.when",question:`When — timeline or stage? ${p0}`,header:"When",type:"text",required:!0},{path:"human_context.how",question:`How is it built or used? ${p0}`,header:"How",type:"text",required:!0}],e6=[{path:"project.main_language",question:"What is the primary programming language?",header:"Language",type:"select",required:!0,options:[{label:"TypeScript",value:"TypeScript",description:"JavaScript with types"},{label:"JavaScript",value:"JavaScript",description:"Vanilla JS or Node.js"},{label:"Python",value:"Python",description:"Python 3.x"},{label:"Rust",value:"Rust",description:"Systems programming"},{label:"Go",value:"Go",description:"Golang"},{label:"Other",value:"Other",description:"Specify manually"}]},{path:"stack.frontend",question:"What frontend framework does it use?",header:"Frontend",type:"select",required:!1,options:[{label:"React",value:"React",description:"React.js"},{label:"Vue",value:"Vue",description:"Vue.js"},{label:"Svelte",value:"Svelte",description:"Svelte/SvelteKit"},{label:"Next.js",value:"Next.js",description:"React framework"},{label:"None",value:"None",description:"No frontend"},{label:"Other",value:"Other",description:"Specify manually"}]},{path:"stack.backend",question:"What backend framework does it use?",header:"Backend",type:"select",required:!1,options:[{label:"Express",value:"Express",description:"Node.js Express"},{label:"Fastify",value:"Fastify",description:"Node.js Fastify"},{label:"Django",value:"Django",description:"Python Django"},{label:"FastAPI",value:"FastAPI",description:"Python FastAPI"},{label:"None",value:"None",description:"No backend"},{label:"Other",value:"Other",description:"Specify manually"}]},{path:"stack.database",question:"What database does it use?",header:"Database",type:"select",required:!1,options:[{label:"PostgreSQL",value:"PostgreSQL",description:"Postgres"},{label:"MySQL",value:"MySQL",description:"MySQL/MariaDB"},{label:"SQLite",value:"SQLite",description:"Embedded SQL"},{label:"MongoDB",value:"MongoDB",description:"Document store"},{label:"None",value:"None",description:"No database"},{label:"Other",value:"Other",description:"Specify manually"}]},{path:"stack.runtime",question:"What runtime does it run on?",header:"Runtime",type:"text",required:!1},{path:"stack.hosting",question:"Where is it hosted or distributed?",header:"Hosting",type:"text",required:!1},{path:"stack.build",question:"What is the build tool?",header:"Build",type:"text",required:!1},{path:"stack.cicd",question:"What CI/CD does it use?",header:"CI/CD",type:"text",required:!1}],l0=[...$3,...e6],$9=new Map(l0.map(($)=>[$.path,$])),hH=Object.fromEntries(l0.map(($)=>[$.path,$]));function Z3($){let Z=$9.get($);if(Z)return Z.question;let U=s0.get($)??y.find((X)=>X.canonical===$);return U?`${U.description}?`.replace(/\?\?$/,"?"):`${$}?`}function yH($,Z){return l0.filter((U)=>{let X=U.path.split("."),Q=$;for(let z of X)if(Q&&typeof Q==="object"&&z in Q)Q=Q[z];else{Q=void 0;break}if(Q==="slotignored")return!1;return Z(Q)})}var fH=new Set(["developers","development teams","development team","teams","development","cloud platform","web platform","platform","best practices","improve development efficiency","development efficiency","modern development practices","modern development","test-driven development","production/stable","production","stable","app","project","tool"]),uH=[["npm",/\bnpm\b/i],["PyPI",/\bpypi\b/i],["crates.io",/\bcrates\.io\b/i],["Homebrew",/\bhomebrew\b/i],["Docker",/\bdocker\b/i],["Cloudflare",/\bcloudflare\b/i],["Vercel",/\bvercel\b/i],["Netlify",/\bnetlify\b/i],["AWS",/\baws\b/i],["Cloud Run",/\bcloud run\b/i],["edge",/\bedge\b/i],["browser",/\bbrowser\b/i],["WASM",/\bwasm\b/i],["GitHub",/\bgithub\b/i],["MCP Registry",/\bmcp registry\b/i],["Chrome Web Store",/\bchrome web store\b/i],["Smithery",/\bsmithery\b/i]],s6=($)=>fH.has($.toLowerCase().trim()),kH=/^(?:with|and|or|using|for|to|that|who|whom|whose|the|a|an|in|on|of|via|by|&)$/i;function a6($,Z=5){let U=$.trim().split(/\s+/).filter(Boolean).slice(0,Z);while(U.length&&kH.test(U[U.length-1].replace(/[.,;:]+$/,"")))U.pop();return U.join(" ")}function Z9($){let Z={};if(!$||typeof $!=="string")return Z;let U=$.trim(),X=U.replace(/^[^A-Za-z0-9]+/,"").split(/\s+(?:for|that|which|to)\s+|\s+[—–]\s+|\s-\s|:\s|\.\s|,\s/)[0].trim(),Q=a6(X);if(Q.split(/\s+/).filter(Boolean).length>=2&&!s6(Q))Z.what=Q;let z=uH.filter(([,q])=>q.test(U)).map(([q])=>q);if(z.length)Z.where=z.slice(0,4).join(", ");let J=U.match(/\bfor ((?:[A-Za-z][\w./+-]* )?(?:any |all )?(?:developers?|teams?|engineers?|builders?|users?|integrators?)\b[^.,;:—]*)/i),H=a6((J?.[1]||"").trim().replace(/\s+/g," "));if(H&&!s6(H))Z.who=H;return Z}function n6($,Z){let U=$;for(let X of Z.split("."))if(U&&typeof U==="object"&&X in U)U=U[X];else return;return U}function o6($){if(typeof $!=="string")return!1;let Z=$.trim();if(!Z||Z==="slotignored")return!1;return!V0(Z)}function vH($,Z={}){let U=$&&typeof $==="object"?$:{},X=n6(U,"project.goal"),Q=(o6(X)?String(X).trim():"")||(Z.goal??"").trim(),z=Z9(Q),J=Z.detailed??{},H={"project.goal":Q||void 0,"human_context.what":z.what,"human_context.where":z.where,"human_context.who":z.who},q=(O)=>{let D=H[O];if(D)return{value:D,source:"project goal",confidence:0.9};let V=O.startsWith("human_context.")?O.slice(14):"",W=V?J[V]:void 0;return W?{value:W.value,source:W.source,confidence:W.confidence}:void 0},Y=$3.map((O,D)=>{let V={n:D+1,path:O.path,header:O.header,question:O.question},W=n6(U,O.path);if(o6(W))return{...V,value:String(W).trim(),status:"filled",seeded:!1};let I=q(O.path);if(I)return{...V,value:I.value,status:"seeded",seeded:!0,source:I.source,confidence:I.confidence};return{...V,value:"",status:"empty",seeded:!1}}),G=Y.filter((O)=>O.status==="filled").length,_=Y.filter((O)=>O.status==="seeded").length,B=Y.filter((O)=>O.status==="empty").length;return{version:t6,rows:Y,filledCount:G,seededCount:_,emptyCount:B,complete:B===0}}function P$($){if($===null||$===void 0)return!0;if(typeof $==="string"){let Z=$.trim();return Z===""||V0(Z)}return!1}function mH($,Z){let U=$;for(let X of Z.split("."))if(U&&typeof U==="object"&&X in U)U=U[X];else return;return U}function U9($){if($==="project.goal")return!0;return s0.get($)?.category==="human"}function X9($,Z=P$){let U=[],X=[];for(let Q of l0){let z=mH($,Q.path);if(z==="slotignored")continue;if(!Z(z))continue;(U9(Q.path)?U:X).push(Q.path)}return{human:U,sourceable:X}}function Q9($,Z,U=P$){let X=X9(Z,U),Q;if($>=100||X.human.length===0&&X.sourceable.length===0)Q="done";else if(X.sourceable.length>0)Q="can-source";else Q="needs-human";let z=Q==="needs-human"?U3(X):[];return{status:Q,score:$,gaps:X,ask:z}}function U3($){return $.human.map((Z)=>({path:Z,question:Z3(Z)}))}function pH($,Z={}){let U=Math.max(1,Z.maxRounds??5),X=Z.isEmpty??P$,Q=[],z=0;for(let H=0;H<=U;H++){let q=$.read();if(!q)return{status:"no-faf",score:0,rounds:z,history:Q,ask:[]};let Y=$.score(q.yaml);Q.push(Y);let G=Q9(Y,q.data,X);if(G.status==="done")return{status:"done",score:Y,rounds:z,history:Q,ask:[]};if(G.status==="needs-human")return{status:"needs-human",score:Y,rounds:z,history:Q,ask:G.ask};if(Q.length>=2&&Y<=Q[Q.length-2])return G.gaps.human.length?{status:"needs-human",score:Y,rounds:z,history:Q,ask:U3(G.gaps)}:{status:"stuck",score:Y,rounds:z,history:Q,ask:[]};if(z>=U)return{status:"capped",score:Y,rounds:z,history:Q,ask:U3(G.gaps)};$.runAuto(),z++}return{status:"capped",score:Q[Q.length-1]??0,rounds:z,history:Q,ask:[]}}import{createHash as J9}from"crypto";var X3="faf-bench/1",lH={"project.name":"What is the project's name?","project.goal":"What is the project's goal — what is it for?","project.main_language":"What is the primary programming language?","human_context.who":"Who is this project for?","human_context.what":"What are they building?","human_context.why":"Why does this project exist?","human_context.where":"Where does it run or get distributed?","human_context.when":"When — what is the project's timeline or stage?","human_context.how":"How is it built or used?"};function dH($,Z){return lH[$]??`What is the project's ${Z.replace(/\s*\(.*\)$/,"").toLowerCase()}?`}var H9=[["typescript","ts"],["javascript","js"],["python","py","python3"],["node","nodejs","node js","node.js"],["github actions","gh actions","actions"],["postgresql","postgres","pg"],["kubernetes","k8s"],["npm","npm registry"],["cloudflare workers","cf workers","workers"],["google cloud run","cloud run","gcp cloud run"]],P1=new Map;H9.forEach(($,Z)=>$.forEach((U)=>P1.set(U,Z)));var cH=new Set(["a","an","the","and","or","of","for","to","in","on","with","is","it","its","their","your","via","by","using","use","used"]);function A$($){return $.toLowerCase().replace(/[^a-z0-9\s.+#-]/g," ").replace(/\.(?=\s|$)/g," ").replace(/\s+/g," ").trim()}function z9($){return A$($).split(" ").filter((Z)=>Z&&!cH.has(Z))}function q9($,Z){let U=A$($),X=A$(Z);if(!U||!X)return!1;if(U===X)return!0;let Q=P1.get(U);if(Q!==void 0&&P1.get(X)===Q)return!0;let z=z9($);if(z.length===0)return!1;let J=new Set(z9(Z));return z.every((H)=>{if(J.has(H))return!0;let q=P1.get(H);return q!==void 0&&[...J].some((Y)=>P1.get(Y)===q)})}function iH($){let Z=f$($),U=$0($),X=[],Q={},z=0;for(let q of y){if(Z.slots[q.path]!=="populated")continue;let Y=L3(U,q);if(typeof Y!=="string")continue;let G=Y.trim();if(!G||S1.has(G.toLowerCase()))continue;z+=1,X.push({n:z,path:q.path,question:dH(q.path,q.description)}),Q[z]=G}let J=JSON.stringify({v:X3,q:X.map((q)=>[q.path,q.question])}),H=J9("sha256").update(J).digest("hex").slice(0,12);return{version:X3,qsetHash:H,questions:X,answers:Q}}function rH($){return{version:$.version,qsetHash:$.qsetHash,questions:$.questions}}function sH($,Z){let U=$.questions.map((Q)=>{let z=Z[String(Q.n)]??Z[Q.path]??"";return{n:Q.n,path:Q.path,ok:typeof z==="string"&&z.trim()!==""&&q9($.answers[Q.n],z)}}),X=$.questions.filter((Q)=>!U[Q.n-1].ok);return{correct:U.filter((Q)=>Q.ok).length,total:$.questions.length,misses:X,perQuestion:U}}function aH($,Z){let U=JSON.stringify({v:$.version,repo:Z??null,qset:$.qsetHash,protocol:$.protocol,cold:$.cold??null,faf:$.faf??null});return{projection:U,hash:J9("sha256").update(U).digest("hex")}}import{existsSync as tq,readdirSync as M9,readFileSync as eq}from"fs";import{join as Y3,dirname as $Y,extname as ZY,resolve as UY}from"path";var Q3={"package.json":{frameworks:["Node.js","JavaScript","TypeScript"],slots:{packageManager:"npm/yarn/pnpm",mainLanguage:"JavaScript/TypeScript"},priority:35,intelligence:"ultra-high"},"README.md":{frameworks:[],slots:{targetUser:"developers",coreProblem:"understanding project",missionPurpose:"project documentation"},priority:25,intelligence:"high"},"requirements.txt":{frameworks:["Python"],slots:{packageManager:"pip",mainLanguage:"Python"},priority:35,intelligence:"ultra-high"},Pipfile:{frameworks:["Python"],slots:{packageManager:"pipenv",mainLanguage:"Python"},priority:35,intelligence:"ultra-high"},"pyproject.toml":{frameworks:["Python"],slots:{mainLanguage:"Python",runtime:"Python",backend:"Python"},priority:36,intelligence:"ultra-high"},Gemfile:{frameworks:["Ruby","Rails"],slots:{packageManager:"bundler",mainLanguage:"Ruby"},priority:35,intelligence:"ultra-high"},"composer.json":{frameworks:["PHP","Laravel","Symfony"],slots:{packageManager:"composer",mainLanguage:"PHP"},priority:35,intelligence:"ultra-high"},"Cargo.toml":{frameworks:["Rust"],slots:{packageManager:"cargo",mainLanguage:"Rust",buildTool:"cargo"},priority:36,intelligence:"ultra-high"},"go.mod":{frameworks:["Go"],slots:{packageManager:"go modules",mainLanguage:"Go",buildTool:"go build"},priority:36,intelligence:"ultra-high"},"*.csproj":{frameworks:["C#",".NET"],slots:{packageManager:"NuGet",mainLanguage:"C#",buildTool:"dotnet"},priority:36,intelligence:"ultra-high"},"pubspec.yaml":{frameworks:["Dart"],slots:{packageManager:"pub",mainLanguage:"Dart"},priority:35,intelligence:"ultra-high"},"pom.xml":{frameworks:["Java"],slots:{packageManager:"maven",mainLanguage:"Java",buildTool:"maven"},priority:35,intelligence:"ultra-high"},"build.gradle":{frameworks:["Java","Gradle"],slots:{packageManager:"gradle",mainLanguage:"Java",buildTool:"gradle"},priority:35,intelligence:"ultra-high"},"settings.gradle":{frameworks:["Java","Gradle"],slots:{packageManager:"gradle",mainLanguage:"Java",buildTool:"gradle"},priority:34,intelligence:"high"},"settings.gradle.kts":{frameworks:["Kotlin","Gradle"],slots:{packageManager:"gradle",mainLanguage:"Kotlin",buildTool:"gradle"},priority:34,intelligence:"high"},"next.config.js":{frameworks:["Next.js"],slots:{framework:"Next.js",runtime:"Node.js",buildTool:"Next.js",mainLanguage:"JavaScript",server:"Node.js"},priority:30,intelligence:"high"},"next.config.mjs":{frameworks:["Next.js"],slots:{framework:"Next.js",runtime:"Node.js",buildTool:"Next.js",mainLanguage:"JavaScript",server:"Node.js"},priority:30,intelligence:"high"},"next.config.ts":{frameworks:["Next.js 13+"],slots:{framework:"Next.js 13+",runtime:"Node.js",buildTool:"Next.js",mainLanguage:"TypeScript",server:"Node.js"},priority:30,intelligence:"high"},"nuxt.config.js":{frameworks:["Nuxt 2"],slots:{framework:"Nuxt 2",runtime:"Node.js",buildTool:"Nuxt",mainLanguage:"JavaScript",server:"Node.js"},priority:30,intelligence:"high"},"nuxt.config.ts":{frameworks:["Nuxt 3"],slots:{framework:"Nuxt 3",runtime:"Node.js",buildTool:"Nuxt",mainLanguage:"TypeScript",server:"Node.js"},priority:30,intelligence:"high"},"svelte.config.js":{frameworks:["SvelteKit"],slots:{framework:"SvelteKit",buildTool:"Vite",mainLanguage:"JavaScript",server:"Node.js"},priority:30,intelligence:"high"},"angular.json":{frameworks:["Angular"],slots:{framework:"Angular",buildTool:"Angular CLI",mainLanguage:"TypeScript",server:"Node.js"},priority:30,intelligence:"high"},"manifest.json":{frameworks:["Chrome Extension","Browser Extension"],slots:{framework:"Chrome Extension",runtime:"Chrome/Browser",mainLanguage:"JavaScript",hosting:"Chrome Web Store",apiType:"Chrome APIs"},priority:35,intelligence:"ultra-high",confirmWith:["popup.html","background.js","content.js"]},"vue.config.js":{frameworks:["Vue"],slots:{framework:"Vue",buildTool:"Vue CLI",mainLanguage:"JavaScript"},priority:30,intelligence:"high"},"remix.config.js":{frameworks:["Remix"],slots:{framework:"Remix",runtime:"Node.js",mainLanguage:"JavaScript",server:"Node.js"},priority:30,intelligence:"high"},"gatsby-config.js":{frameworks:["Gatsby"],slots:{framework:"Gatsby",buildTool:"Gatsby",mainLanguage:"JavaScript",server:"Node.js"},priority:30,intelligence:"high"},"gatsby-config.ts":{frameworks:["Gatsby"],slots:{framework:"Gatsby",buildTool:"Gatsby",mainLanguage:"TypeScript",server:"Node.js"},priority:30,intelligence:"high"},"astro.config.mjs":{frameworks:["Astro"],slots:{framework:"Astro",buildTool:"Vite",mainLanguage:"JavaScript",server:"Node.js"},priority:30,intelligence:"high"},"redwood.toml":{frameworks:["RedwoodJS"],slots:{framework:"RedwoodJS",buildTool:"Webpack",mainLanguage:"JavaScript/TypeScript",server:"Node.js",database:"Prisma"},priority:30,intelligence:"high"},"blitz.config.ts":{frameworks:["Blitz.js"],slots:{framework:"Blitz.js",buildTool:"Next.js",mainLanguage:"TypeScript",server:"Node.js",database:"Prisma"},priority:30,intelligence:"high"},"qwik.config.ts":{frameworks:["Qwik"],slots:{framework:"Qwik",buildTool:"Vite",mainLanguage:"TypeScript",server:"Node.js"},priority:30,intelligence:"high"},"manage.py":{frameworks:["Django"],slots:{framework:"Django",backend:"Django",mainLanguage:"Python",server:"Django",apiType:"Django Views"},priority:30,intelligence:"high"},artisan:{frameworks:["Laravel"],slots:{framework:"Laravel",backend:"Laravel",mainLanguage:"PHP",server:"PHP",apiType:"Laravel Routes"},priority:30,intelligence:"high"},"mix.exs":{frameworks:["Phoenix","Elixir"],slots:{framework:"Phoenix",backend:"Phoenix",mainLanguage:"Elixir",server:"BEAM"},priority:30,intelligence:"high"},"nest-cli.json":{frameworks:["NestJS"],slots:{framework:"NestJS",backend:"NestJS",mainLanguage:"TypeScript",server:"Node.js",apiType:"REST API"},priority:30,intelligence:"high"},"strapi.config.js":{frameworks:["Strapi"],slots:{backend:"Strapi",apiType:"REST API",database:"Required",server:"Node.js"},priority:30,intelligence:"high"},Dockerfile:{frameworks:["Docker"],slots:{hosting:"Docker",connection:"Containerized"},priority:30,intelligence:"high"},"docker-compose.yml":{frameworks:["Docker Compose"],slots:{hosting:"Docker",connection:"Multi-container"},priority:30,intelligence:"high"},"docker-compose.yaml":{frameworks:["Docker Compose"],slots:{hosting:"Docker",connection:"Multi-container"},priority:30,intelligence:"high"},"kubernetes.yml":{frameworks:["Kubernetes"],slots:{hosting:"Kubernetes",connection:"Orchestrated"},priority:30,intelligence:"high"},"k8s.yaml":{frameworks:["Kubernetes"],slots:{hosting:"Kubernetes",connection:"Orchestrated"},priority:30,intelligence:"high"},"vercel.json":{frameworks:["Vercel"],slots:{hosting:"Vercel",cicd:"Vercel"},priority:30,intelligence:"high"},"netlify.toml":{frameworks:["Netlify"],slots:{hosting:"Netlify",cicd:"Netlify"},priority:30,intelligence:"high"},"render.yaml":{frameworks:["Render"],slots:{hosting:"Render",cicd:"Render"},priority:30,intelligence:"high"},"fly.toml":{frameworks:["Fly.io"],slots:{hosting:"Fly.io",cicd:"Fly.io"},priority:30,intelligence:"high"},"railway.json":{frameworks:["Railway"],slots:{hosting:"Railway",cicd:"Railway"},priority:30,intelligence:"high"},"railway.toml":{frameworks:["Railway"],slots:{hosting:"Railway",cicd:"Railway"},priority:30,intelligence:"high"},"app.yaml":{frameworks:["Google App Engine"],slots:{hosting:"Google Cloud",cicd:"Google Cloud"},priority:30,intelligence:"high"},Procfile:{frameworks:["Heroku"],slots:{hosting:"Heroku",cicd:"Heroku"},priority:30,intelligence:"high"},"vite.config.js":{frameworks:["Vite"],slots:{buildTool:"Vite"},priority:25,intelligence:"medium"},"vite.config.ts":{frameworks:["Vite"],slots:{buildTool:"Vite",mainLanguage:"TypeScript"},priority:25,intelligence:"medium"},"webpack.config.js":{frameworks:["Webpack"],slots:{buildTool:"Webpack"},priority:25,intelligence:"medium"},"rollup.config.js":{frameworks:["Rollup"],slots:{buildTool:"Rollup"},priority:25,intelligence:"medium"},"esbuild.config.js":{frameworks:["esbuild"],slots:{buildTool:"esbuild"},priority:25,intelligence:"medium"},"parcel.config.js":{frameworks:["Parcel"],slots:{buildTool:"Parcel"},priority:25,intelligence:"medium"},"snowpack.config.js":{frameworks:["Snowpack"],slots:{buildTool:"Snowpack"},priority:25,intelligence:"medium"},"tsconfig.json":{frameworks:["TypeScript"],slots:{mainLanguage:"TypeScript"},priority:25,intelligence:"medium"},"jsconfig.json":{frameworks:["JavaScript"],slots:{mainLanguage:"JavaScript"},priority:20,intelligence:"medium"},"babel.config.js":{frameworks:["Babel"],slots:{buildTool:"Babel"},priority:20,intelligence:"medium"},".babelrc":{frameworks:["Babel"],slots:{buildTool:"Babel"},priority:20,intelligence:"medium"},"jest.config.js":{frameworks:["Jest"],slots:{cicd:"Jest"},priority:25,intelligence:"medium"},"jest.config.ts":{frameworks:["Jest"],slots:{cicd:"Jest",mainLanguage:"TypeScript"},priority:25,intelligence:"medium"},"vitest.config.ts":{frameworks:["Vitest"],slots:{cicd:"Vitest",mainLanguage:"TypeScript"},priority:25,intelligence:"medium"},"cypress.config.js":{frameworks:["Cypress"],slots:{cicd:"Cypress"},priority:25,intelligence:"medium"},"playwright.config.ts":{frameworks:["Playwright"],slots:{cicd:"Playwright",mainLanguage:"TypeScript"},priority:25,intelligence:"medium"},"karma.conf.js":{frameworks:["Karma"],slots:{cicd:"Karma"},priority:20,intelligence:"medium"},"mocha.opts":{frameworks:["Mocha"],slots:{cicd:"Mocha"},priority:20,intelligence:"medium"},".rspec":{frameworks:["RSpec"],slots:{cicd:"RSpec",mainLanguage:"Ruby"},priority:25,intelligence:"medium"},"pytest.ini":{frameworks:["Pytest"],slots:{cicd:"Pytest",mainLanguage:"Python"},priority:25,intelligence:"medium"},"phpunit.xml":{frameworks:["PHPUnit"],slots:{cicd:"PHPUnit",mainLanguage:"PHP"},priority:25,intelligence:"medium"},"schema.prisma":{frameworks:["Prisma"],slots:{database:"Prisma ORM",connection:"Prisma"},priority:25,intelligence:"medium"},"drizzle.config.ts":{frameworks:["Drizzle"],slots:{database:"Drizzle ORM",connection:"Drizzle",mainLanguage:"TypeScript"},priority:25,intelligence:"medium"},"ormconfig.js":{frameworks:["TypeORM"],slots:{database:"TypeORM",connection:"TypeORM"},priority:25,intelligence:"medium"},"knexfile.js":{frameworks:["Knex.js"],slots:{database:"Knex.js",connection:"Knex.js"},priority:25,intelligence:"medium"},"sequelize.config.js":{frameworks:["Sequelize"],slots:{database:"Sequelize",connection:"Sequelize"},priority:25,intelligence:"medium"},"alembic.ini":{frameworks:["Alembic"],slots:{database:"Alembic",mainLanguage:"Python"},priority:25,intelligence:"medium"},".github/workflows":{frameworks:["GitHub Actions"],slots:{cicd:"GitHub Actions"},priority:25,intelligence:"medium"},".gitlab-ci.yml":{frameworks:["GitLab CI"],slots:{cicd:"GitLab CI"},priority:25,intelligence:"medium"},Jenkinsfile:{frameworks:["Jenkins"],slots:{cicd:"Jenkins"},priority:25,intelligence:"medium"},".circleci/config.yml":{frameworks:["CircleCI"],slots:{cicd:"CircleCI"},priority:25,intelligence:"medium"},".travis.yml":{frameworks:["Travis CI"],slots:{cicd:"Travis CI"},priority:25,intelligence:"medium"},"azure-pipelines.yml":{frameworks:["Azure DevOps"],slots:{cicd:"Azure DevOps"},priority:25,intelligence:"medium"},"bitbucket-pipelines.yml":{frameworks:["Bitbucket Pipelines"],slots:{cicd:"Bitbucket Pipelines"},priority:25,intelligence:"medium"},"tailwind.config.js":{frameworks:["Tailwind CSS"],slots:{cssFramework:"Tailwind CSS"},priority:20,intelligence:"medium"},"tailwind.config.ts":{frameworks:["Tailwind CSS"],slots:{cssFramework:"Tailwind CSS",mainLanguage:"TypeScript"},priority:20,intelligence:"medium"},"postcss.config.js":{frameworks:["PostCSS"],slots:{cssFramework:"PostCSS"},priority:20,intelligence:"medium"},"uno.config.ts":{frameworks:["UnoCSS"],slots:{cssFramework:"UnoCSS",mainLanguage:"TypeScript"},priority:20,intelligence:"medium"},"styled-components.config.js":{frameworks:["styled-components"],slots:{cssFramework:"styled-components",uiLibrary:"styled-components"},priority:20,intelligence:"medium"},"emotion.config.js":{frameworks:["Emotion"],slots:{cssFramework:"Emotion",uiLibrary:"Emotion"},priority:20,intelligence:"medium"},"metro.config.js":{frameworks:["React Native"],slots:{framework:"React Native",mainLanguage:"JavaScript"},priority:25,intelligence:"medium"},"expo.config.js":{frameworks:["Expo"],slots:{framework:"React Native",buildTool:"Expo"},priority:25,intelligence:"medium"},"app.json":{frameworks:["React Native","Expo"],slots:{framework:"React Native"},priority:20,intelligence:"medium",confirmWith:["expo"]},"capacitor.config.ts":{frameworks:["Capacitor"],slots:{framework:"Capacitor",mainLanguage:"TypeScript"},priority:25,intelligence:"medium"},"ionic.config.json":{frameworks:["Ionic"],slots:{framework:"Ionic",uiLibrary:"Ionic"},priority:25,intelligence:"medium"},"nx.json":{frameworks:["Nx"],slots:{buildTool:"Nx"},priority:25,intelligence:"medium"},"turbo.json":{frameworks:["Turborepo"],slots:{buildTool:"Turborepo"},priority:25,intelligence:"medium"},"lerna.json":{frameworks:["Lerna"],slots:{buildTool:"Lerna"},priority:25,intelligence:"medium"},"rush.json":{frameworks:["Rush"],slots:{buildTool:"Rush"},priority:25,intelligence:"medium"},"pnpm-workspace.yaml":{frameworks:["pnpm workspaces"],slots:{packageManager:"pnpm",buildTool:"pnpm workspaces"},priority:25,intelligence:"medium"},"*.svelte":{frameworks:["Svelte","SvelteKit"],slots:{framework:"Svelte"},priority:15,intelligence:"low"},"*.vue":{frameworks:["Vue"],slots:{framework:"Vue"},priority:15,intelligence:"low"},"*.jsx":{frameworks:["React"],slots:{framework:"React",mainLanguage:"JavaScript"},priority:15,intelligence:"low"},"*.ts":{frameworks:["TypeScript"],slots:{mainLanguage:"TypeScript"},priority:15,intelligence:"low"},"*.tsx":{frameworks:["React","TypeScript"],slots:{framework:"React",mainLanguage:"TypeScript"},priority:15,intelligence:"low"},"*.py":{frameworks:["Python"],slots:{mainLanguage:"Python"},priority:15,intelligence:"low"},"*.rb":{frameworks:["Ruby"],slots:{mainLanguage:"Ruby"},priority:15,intelligence:"low"},"*.php":{frameworks:["PHP"],slots:{mainLanguage:"PHP"},priority:15,intelligence:"low"},"*.java":{frameworks:["Java"],slots:{mainLanguage:"Java"},priority:15,intelligence:"low"},"*.kt":{frameworks:["Kotlin"],slots:{mainLanguage:"Kotlin"},priority:15,intelligence:"low"},"*.swift":{frameworks:["Swift"],slots:{mainLanguage:"Swift"},priority:15,intelligence:"low"},"*.go":{frameworks:["Go"],slots:{mainLanguage:"Go"},priority:15,intelligence:"low"},"*.rs":{frameworks:["Rust"],slots:{mainLanguage:"Rust"},priority:15,intelligence:"low"},"*.dart":{frameworks:["Flutter","Dart"],slots:{mainLanguage:"Dart"},priority:15,intelligence:"low"},"*.ex":{frameworks:["Elixir"],slots:{mainLanguage:"Elixir"},priority:15,intelligence:"low"},"*.exs":{frameworks:["Elixir"],slots:{mainLanguage:"Elixir"},priority:15,intelligence:"low"},"*.scala":{frameworks:["Scala"],slots:{mainLanguage:"Scala"},priority:15,intelligence:"low"},"*.clj":{frameworks:["Clojure"],slots:{mainLanguage:"Clojure"},priority:15,intelligence:"low"},"*.lua":{frameworks:["Lua"],slots:{mainLanguage:"Lua"},priority:15,intelligence:"low"},"*.r":{frameworks:["R"],slots:{mainLanguage:"R"},priority:15,intelligence:"low"},"*.R":{frameworks:["R"],slots:{mainLanguage:"R"},priority:15,intelligence:"low"},"*.jl":{frameworks:["Julia"],slots:{mainLanguage:"Julia"},priority:15,intelligence:"low"},"*.nim":{frameworks:["Nim"],slots:{mainLanguage:"Nim"},priority:15,intelligence:"low"},"*.zig":{frameworks:["Zig"],slots:{mainLanguage:"Zig"},priority:15,intelligence:"low"},"build.zig":{frameworks:["Zig"],slots:{packageManager:"Zig Package Manager",mainLanguage:"Zig",buildTool:"zig build",framework:"Zig",build:"zig build"},priority:35,intelligence:"ultra-high"},"openapi.json":{frameworks:["OpenAPI"],slots:{apiType:"REST API",backend:"API Server"},priority:30,intelligence:"high"},"openapi.yaml":{frameworks:["OpenAPI"],slots:{apiType:"REST API",backend:"API Server"},priority:30,intelligence:"high"},"swagger.json":{frameworks:["Swagger"],slots:{apiType:"REST API",backend:"API Server"},priority:30,intelligence:"high"},"graphql.schema":{frameworks:["GraphQL"],slots:{apiType:"GraphQL",backend:"GraphQL Server"},priority:30,intelligence:"high"},"schema.graphql":{frameworks:["GraphQL"],slots:{apiType:"GraphQL",backend:"GraphQL Server"},priority:30,intelligence:"high"},".graphqlconfig":{frameworks:["GraphQL"],slots:{apiType:"GraphQL"},priority:25,intelligence:"medium"},"redux.config.js":{frameworks:["Redux"],slots:{stateManagement:"Redux"},priority:20,intelligence:"medium"},"mobx.config.js":{frameworks:["MobX"],slots:{stateManagement:"MobX"},priority:20,intelligence:"medium"},"vuex.config.js":{frameworks:["Vuex"],slots:{stateManagement:"Vuex",framework:"Vue"},priority:20,intelligence:"medium"},"pinia.config.js":{frameworks:["Pinia"],slots:{stateManagement:"Pinia",framework:"Vue"},priority:20,intelligence:"medium"},"zustand.config.js":{frameworks:["Zustand"],slots:{stateManagement:"Zustand"},priority:20,intelligence:"medium"},".eslintrc.js":{frameworks:["ESLint"],slots:{},priority:15,intelligence:"low"},".eslintrc.json":{frameworks:["ESLint"],slots:{},priority:15,intelligence:"low"},".prettierrc":{frameworks:["Prettier"],slots:{},priority:15,intelligence:"low"},".prettierrc.json":{frameworks:["Prettier"],slots:{},priority:15,intelligence:"low"},"biome.json":{frameworks:["Biome"],slots:{},priority:15,intelligence:"low"},".editorconfig":{frameworks:["EditorConfig"],slots:{},priority:10,intelligence:"low"},"serverless.yml":{frameworks:["Serverless Framework"],slots:{hosting:"AWS Lambda/Azure/GCP",backend:"Serverless",apiType:"API Gateway"},priority:30,intelligence:"high"},"serverless.yaml":{frameworks:["Serverless Framework"],slots:{hosting:"AWS Lambda/Azure/GCP",backend:"Serverless",apiType:"API Gateway"},priority:30,intelligence:"high"},"sam.yaml":{frameworks:["AWS SAM"],slots:{hosting:"AWS Lambda",backend:"AWS SAM",cicd:"AWS SAM CLI"},priority:30,intelligence:"high"},"template.yaml":{frameworks:["AWS SAM","CloudFormation"],slots:{hosting:"AWS",backend:"AWS SAM/CloudFormation",cicd:"AWS"},priority:25,intelligence:"medium",confirmWith:["samconfig.toml"]},"amplify.yml":{frameworks:["AWS Amplify"],slots:{hosting:"AWS Amplify",backend:"AWS Amplify",cicd:"AWS Amplify"},priority:30,intelligence:"high"},Podfile:{frameworks:["CocoaPods","iOS"],slots:{packageManager:"CocoaPods",mainLanguage:"Swift/Objective-C",framework:"iOS Native"},priority:30,intelligence:"high"},"build.gradle.kts":{frameworks:["Kotlin","Gradle"],slots:{packageManager:"gradle",mainLanguage:"Kotlin",buildTool:"gradle"},priority:35,intelligence:"ultra-high"},"*.ipynb":{frameworks:["Jupyter","Python"],slots:{mainLanguage:"Python",framework:"Jupyter Notebook"},priority:30,intelligence:"high"},MLproject:{frameworks:["MLflow"],slots:{mainLanguage:"Python",framework:"MLflow",backend:"MLflow",cicd:"MLflow"},priority:30,intelligence:"high"},"dvc.yaml":{frameworks:["DVC","Data Version Control"],slots:{mainLanguage:"Python",framework:"DVC",cicd:"DVC Pipelines"},priority:30,intelligence:"high"},"dvc.lock":{frameworks:["DVC"],slots:{framework:"DVC"},priority:20,intelligence:"medium"},"wrangler.toml":{frameworks:["Cloudflare Workers","Cloudflare"],slots:{hosting:"Cloudflare Workers",backend:"Cloudflare Workers",runtime:"V8 Isolates"},priority:30,intelligence:"high"},"deno.json":{frameworks:["Deno"],slots:{runtime:"Deno",mainLanguage:"TypeScript",packageManager:"Deno"},priority:30,intelligence:"high"},"bun.lockb":{frameworks:["Bun"],slots:{runtime:"Bun",packageManager:"Bun",mainLanguage:"TypeScript/JavaScript"},priority:30,intelligence:"high"},"codecov.yml":{frameworks:["Codecov"],slots:{cicd:"Codecov"},priority:25,intelligence:"high"},"dependabot.yml":{frameworks:["Dependabot","GitHub"],slots:{cicd:"Dependabot"},priority:25,intelligence:"high"},"renovate.json":{frameworks:["Renovate"],slots:{cicd:"Renovate"},priority:25,intelligence:"high"},Makefile:{frameworks:["Make","GNU Make"],slots:{buildTool:"Make"},priority:30,intelligence:"high"},"CMakeLists.txt":{frameworks:["CMake","C","C++"],slots:{buildTool:"CMake",mainLanguage:"C/C++"},priority:30,intelligence:"high"},"meson.build":{frameworks:["Meson","C","C++"],slots:{buildTool:"Meson",mainLanguage:"C/C++"},priority:30,intelligence:"high"},"*.c":{frameworks:["C"],slots:{mainLanguage:"C"},priority:30,intelligence:"high"},"*.cpp":{frameworks:["C++"],slots:{mainLanguage:"C++"},priority:30,intelligence:"high"},"*.cc":{frameworks:["C++"],slots:{mainLanguage:"C++"},priority:30,intelligence:"high"},"*.cxx":{frameworks:["C++"],slots:{mainLanguage:"C++"},priority:25,intelligence:"high"},"*.h":{frameworks:["C","C++"],slots:{mainLanguage:"C/C++"},priority:25,intelligence:"high"},"*.hpp":{frameworks:["C++"],slots:{mainLanguage:"C++"},priority:25,intelligence:"high"},"*.hxx":{frameworks:["C++"],slots:{mainLanguage:"C++"},priority:20,intelligence:"medium"},".env":{frameworks:[],slots:{},priority:20,intelligence:"medium"},".env.example":{frameworks:[],slots:{},priority:25,intelligence:"high"},".env.local":{frameworks:[],slots:{},priority:20,intelligence:"medium"},".env.development":{frameworks:[],slots:{},priority:20,intelligence:"medium"},".env.production":{frameworks:[],slots:{},priority:20,intelligence:"medium"},"skaffold.yaml":{frameworks:["Skaffold","Kubernetes"],slots:{hosting:"Kubernetes",cicd:"Skaffold"},priority:30,intelligence:"high"},"Chart.yaml":{frameworks:["Helm","Kubernetes"],slots:{hosting:"Kubernetes",backend:"Helm"},priority:30,intelligence:"high"},"values.yaml":{frameworks:["Helm","Kubernetes"],slots:{hosting:"Kubernetes"},priority:25,intelligence:"high",confirmWith:["Chart.yaml"]},"pulumi.yaml":{frameworks:["Pulumi"],slots:{hosting:"Cloud",cicd:"Pulumi"},priority:30,intelligence:"high"},"Pulumi.yaml":{frameworks:["Pulumi"],slots:{hosting:"Cloud",cicd:"Pulumi"},priority:30,intelligence:"high"},"terragrunt.hcl":{frameworks:["Terragrunt","Terraform"],slots:{hosting:"Cloud",cicd:"Terragrunt"},priority:30,intelligence:"high"},"ansible.yml":{frameworks:["Ansible"],slots:{cicd:"Ansible"},priority:30,intelligence:"high"},"playbook.yml":{frameworks:["Ansible"],slots:{cicd:"Ansible"},priority:25,intelligence:"high"},"*.cs":{frameworks:["C#",".NET","Unity"],slots:{mainLanguage:"C#"},priority:30,intelligence:"high"},"*.m":{frameworks:["Objective-C","iOS"],slots:{mainLanguage:"Objective-C"},priority:25,intelligence:"high"},".nvmrc":{frameworks:["Node.js","nvm"],slots:{runtime:"Node.js"},priority:25,intelligence:"high"},".tool-versions":{frameworks:["asdf"],slots:{},priority:25,intelligence:"high"},".ruby-version":{frameworks:["Ruby","rbenv"],slots:{mainLanguage:"Ruby",runtime:"Ruby"},priority:25,intelligence:"high"},".python-version":{frameworks:["Python","pyenv"],slots:{mainLanguage:"Python",runtime:"Python"},priority:25,intelligence:"high"},".dockerignore":{frameworks:["Docker"],slots:{},priority:20,intelligence:"medium"},".gitattributes":{frameworks:["Git"],slots:{},priority:15,intelligence:"low"},".npmrc":{frameworks:["npm","Node.js"],slots:{packageManager:"npm"},priority:20,intelligence:"medium"},"sonar-project.properties":{frameworks:["SonarQube","SonarCloud"],slots:{cicd:"SonarQube"},priority:25,intelligence:"high"},"*.fs":{frameworks:["F#",".NET"],slots:{mainLanguage:"F#"},priority:25,intelligence:"high"},"*.mm":{frameworks:["Objective-C++","iOS","macOS"],slots:{mainLanguage:"Objective-C++"},priority:25,intelligence:"high"},"build.zig.zon":{frameworks:["Zig"],slots:{mainLanguage:"Zig",packageManager:"Zig Package Manager",buildTool:"zig build"},priority:35,intelligence:"ultra-high"},"gleam.toml":{frameworks:["Gleam","BEAM","Erlang"],slots:{mainLanguage:"Gleam",runtime:"BEAM",packageManager:"Gleam"},priority:30,intelligence:"high"},"bunfig.toml":{frameworks:["Bun"],slots:{runtime:"Bun",packageManager:"Bun",buildTool:"Bun"},priority:30,intelligence:"high"},"mise.toml":{frameworks:["mise"],slots:{},priority:25,intelligence:"high"},".mise.toml":{frameworks:["mise"],slots:{},priority:25,intelligence:"high"},"manifest.toml":{frameworks:["Flox","Nix"],slots:{},priority:25,intelligence:"high",confirmWith:[".flox"]},justfile:{frameworks:["Just"],slots:{buildTool:"Just"},priority:25,intelligence:"high"},".pre-commit-config.yaml":{frameworks:["pre-commit"],slots:{cicd:"pre-commit"},priority:25,intelligence:"high"},"CLAUDE.md":{frameworks:["Claude Code"],slots:{},priority:30,intelligence:"high",confirmWith:[".claude"]}};import{existsSync as Y9,readFileSync as oH,readdirSync as tH}from"fs";import{join as z3}from"path";var d0={version:2,_doc:"SINGLE SOURCE of Dart/Flutter detection KNOWLEDGE (A+B hybrid, the Truth-is-faf-cli spec). faf-cli imports this directly; faf-python-sdk vendors a synced copy (phase 2); MCPs compose it. Bolster Dart/Flutter by editing THIS file. Logic stays in dart.ts. Refreshed 2026-08-01 (knowledge v2) — community receipt on top of 6.13.0 Dart Edition.",flutterDeps:["flutter"],mcpDeps:["dart_mcp","mcp_server","mcp_dart","dart_mcp_server","mcp","dart_mcpserver"],serverFrameworks:[["serverpod","Serverpod"],["dart_frog","Dart Frog"],["conduit","Conduit"],["angel3_framework","Angel3"],["alfred","Alfred"],["shelf","Shelf"],["jaspr","Jaspr"],["relic","Relic"]],stateManagement:[["flutter_riverpod","Riverpod"],["hooks_riverpod","Riverpod"],["riverpod_annotation","Riverpod"],["riverpod","Riverpod"],["flutter_bloc","Bloc"],["bloc","Bloc"],["provider","Provider"],["get","GetX"],["flutter_mobx","MobX"],["mobx","MobX"],["signals","Signals"],["flutter_hooks","Hooks"]],routing:[["go_router","go_router"],["auto_route","auto_route"],["beamer","Beamer"],["routemaster","Routemaster"]]};var eH=d0.flutterDeps,$q=d0.mcpDeps,Zq=d0.serverFrameworks,Uq=d0.stateManagement,Xq=d0.routing;function Qq($){let Z=new Set,U=!1;for(let X of $.split(`
|
|
215
|
+
`)){if(/^(dependencies|dev_dependencies|dependency_overrides):\s*$/.test(X)){U=!0;continue}if(/^\S/.test(X))U=!1;if(U){let Q=X.match(/^\s{2}([a-zA-Z0-9_]+):/);if(Q)Z.add(Q[1].toLowerCase())}}return Z}function T$($){let Z=z3($,"pubspec.yaml");if(!Y9(Z))return null;let U;try{U=oH(Z,"utf-8")}catch{return null}let X=Qq(U),Q=(F)=>X.has(F.toLowerCase()),z=eH.some(Q)||/^flutter:\s*$/m.test(U)||/\bsdk:\s*flutter\b/.test(U),J=$q.find(Q),H=Zq.find(([F])=>Q(F)),q=Uq.find(([F])=>Q(F)),Y=q?q[1]:"",G=Xq.find(([F])=>Q(F)),_=G?G[1]:"",B=Q("flutter_test")?"flutter_test":Q("test")?"test":"",O=/^executables:\s*$/m.test(U),D=!1;try{D=tH(z3($,"bin")).some((F)=>F.endsWith(".dart"))}catch{}let V=O||D,W,I="",L;if(z)if(I="Flutter",Y9(z3($,"lib","main.dart"))||/^publish_to:\s*['"]?none\b/m.test(U))W="mobile",L="pubspec.yaml (Flutter app)";else W="library",L="pubspec.yaml (Flutter package)";else if(J)W="mcp",L=`pubspec.yaml + ${J} (Dart MCP server)`;else if(H)W="backend",I=H[1],L=`pubspec.yaml + ${H[0]} (Dart backend)`;else if(V)W="cli",L=O?"pubspec.yaml executables: (Dart CLI)":"pubspec.yaml + bin/*.dart (Dart CLI)";else W="library",L="pubspec.yaml (Dart package)";return{appType:W,isFlutter:z,framework:I,stateManagement:Y,routing:_,testing:B,found:L}}import{existsSync as J3,readFileSync as B9,readdirSync as G9,statSync as Jq}from"fs";import{join as w$}from"path";var N$={version:1,_doc:"SINGLE SOURCE of Go detection KNOWLEDGE (A+B hybrid, Truth-is-faf-cli). faf-cli imports this directly; SDKs/MCPs compose it. Bolster Go by editing THIS file. Logic stays in go.ts. Content-aware: go.mod ≠ one bucket — backend · CLI · MCP · library. 2026-08-01 initial (Dart composition pattern).",mcpModules:["github.com/mark3labs/mcp-go","github.com/modelcontextprotocol/go-sdk","github.com/metoro-io/mcp-golang","github.com/ThinkInAIXYZ/go-mcp"],serverFrameworks:[["github.com/gin-gonic/gin","Gin"],["github.com/labstack/echo","Echo"],["github.com/labstack/echo/v4","Echo"],["github.com/gofiber/fiber","Fiber"],["github.com/gofiber/fiber/v2","Fiber"],["github.com/go-chi/chi","Chi"],["github.com/go-chi/chi/v5","Chi"],["github.com/gorilla/mux","Gorilla Mux"],["github.com/gofiber/fiber/v3","Fiber"],["google.golang.org/grpc","gRPC"],["connectrpc.com/connect","Connect"],["github.com/go-kratos/kratos","Kratos"],["github.com/go-kratos/kratos/v2","Kratos"],["github.com/zeromicro/go-zero","go-zero"],["github.com/cloudwego/hertz","Hertz"]],cliFrameworks:[["github.com/spf13/cobra","Cobra"],["github.com/urfave/cli","urfave/cli"],["github.com/urfave/cli/v2","urfave/cli"],["github.com/alecthomas/kingpin","Kingpin"],["github.com/alecthomas/kong","Kong"]]};var Hq=N$.mcpModules,qq=N$.serverFrameworks,Yq=N$.cliFrameworks;function Gq($){let Z=new Set,U=!1;for(let X of $.split(`
|
|
216
|
+
`)){let Q=X.replace(/\/\/.*$/,"").trim();if(!Q)continue;if(/^require\s*\(\s*$/.test(Q)){U=!0;continue}if(U){if(Q===")"){U=!1;continue}let J=Q.match(/^(\S+)/);if(J)Z.add(J[1].toLowerCase());continue}let z=Q.match(/^require\s+(\S+)/);if(z&&z[1]!=="(")Z.add(z[1].toLowerCase())}return Z}function V9($,Z){let U=Z.toLowerCase();for(let X of $)if(X===U||X.startsWith(`${U}/`))return!0;return!1}function _9($,Z){let U;for(let X of Z){if(!V9($,X[0]))continue;if(!U||X[0].length>U[0].length)U=X}return U}function _q($,Z){let U;for(let X of Z){if(!V9($,X))continue;if(!U||X.length>U.length)U=X}return U}function Bq($){let Z=$.match(/^module\s+(\S+)/m);return Z?Z[1]:""}function Vq($){let Z=w$($,"cmd");if(!J3(Z))return!1;try{for(let U of G9(Z)){let X=w$(Z,U);try{if(Jq(X).isDirectory()){if(G9(X).some((z)=>z.endsWith(".go")))return!0}else if(U.endsWith(".go"))return!0}catch{}}}catch{}return!1}function Oq($){let Z=w$($,"main.go");if(!J3(Z))return!1;try{let U=B9(Z,"utf-8");return/^package\s+main\b/m.test(U)}catch{return!1}}function C$($){let Z=w$($,"go.mod");if(!J3(Z))return null;let U;try{U=B9(Z,"utf-8")}catch{return null}let X=Bq(U),Q=Gq(U),z=_q(Q,Hq),J=_9(Q,qq),H=_9(Q,Yq),q=Vq($),Y=Oq($),G,_="",B;if(z)G="mcp",B=`go.mod + ${z} (Go MCP server)`;else if(J)G="backend",_=J[1],B=`go.mod + ${J[0]} (Go backend)`;else if(H)G="cli",_=H[1],B=`go.mod + ${H[0]} (Go CLI)`;else if(q)G="cli",B="go.mod + cmd/ (Go CLI layout)";else if(Y&&!J)G="cli",B="go.mod + main.go package main (Go CLI)";else G="library",B="go.mod (Go module)";return{appType:G,modulePath:X,framework:_,found:B}}import{existsSync as Dq,readFileSync as Iq,readdirSync as Lq}from"fs";import{join as Rq}from"path";var F0={version:1,_doc:"SINGLE SOURCE of C# /.NET detection KNOWLEDGE (Truth-is-faf-cli). faf-cli imports this; SDKs/MCPs compose it. Bolster C# by editing THIS file. Logic stays in csharp.ts. Content-aware: .csproj alone ≠ type — Sdk first, then props/packages. Kill line: .csproj alone ≠ type. 2026-08-01 initial.",mcpPackages:["ModelContextProtocol","ModelContextProtocol.AspNetCore","ModelContextProtocol.Core","ModelContextProtocol.Extensions.Tasks","ModelContextProtocol.Extensions.Apps"],cliPackages:[["System.CommandLine","System.CommandLine"],["Spectre.Console.Cli","Spectre.Console"],["Spectre.Console","Spectre.Console"],["McMaster.Extensions.CommandLineUtils","McMaster"]],testPackages:[["Microsoft.NET.Test.Sdk","VSTest"],["xunit.v3","xUnit"],["xunit","xUnit"],["NUnit","NUnit"],["MSTest.TestFramework","MSTest"],["MSTest","MSTest"]],grpcServerPackages:["Grpc.AspNetCore"],specializedSdks:[["Microsoft.NET.Sdk.Web","web","ASP.NET Core"],["Microsoft.NET.Sdk.Worker","worker","Worker"],["Microsoft.NET.Sdk.BlazorWebAssembly","blazor-wasm","Blazor WebAssembly"],["Microsoft.NET.Sdk.Razor","razor-lib","Razor Class Library"],["MSTest.Sdk","test","MSTest"],["Aspire.AppHost.Sdk","aspire","Aspire AppHost"]],baseSdk:"Microsoft.NET.Sdk"};var Mq=F0.mcpPackages.map(($)=>$.toLowerCase()),Kq=F0.cliPackages.map(([$,Z])=>[$.toLowerCase(),Z]),Fq=F0.testPackages.map(([$,Z])=>[$.toLowerCase(),Z]),Pq=F0.grpcServerPackages.map(($)=>$.toLowerCase()),Aq=F0.specializedSdks,O9=F0.baseSdk.toLowerCase();function Tq($){let Z=$.match(/<Project\b[^>]*\bSdk\s*=\s*"([^"/]+)(?:\/[^"]*)?"/i),U=$.match(/<Sdk\b[^>]*\bName\s*=\s*"([^"]+)"/i),X=(Z?.[1]||U?.[1]||"").trim(),Q=($.match(/<OutputType>\s*([^<]+?)\s*<\/OutputType>/i)?.[1]||"").trim(),z=$.match(/<TargetFramework>\s*([^<]+?)\s*<\/TargetFramework>/i)?.[1],H=($.match(/<TargetFrameworks>\s*([^<]+?)\s*<\/TargetFrameworks>/i)?.[1]||z||"").trim(),q=/<IsTestProject>\s*true\s*<\/IsTestProject>/i.test($),Y=/<UseMaui>\s*true\s*<\/UseMaui>/i.test($),G=/<UseWPF>\s*true\s*<\/UseWPF>/i.test($),_=/<UseWindowsForms>\s*true\s*<\/UseWindowsForms>/i.test($),B=new Set;for(let D of $.matchAll(/<PackageReference\b[^>]*\bInclude\s*=\s*"([^"]+)"/gi))B.add(D[1].toLowerCase());for(let D of $.matchAll(/<PackageReference\s+Include\s*=\s*"([^"]+)"/gi))B.add(D[1].toLowerCase());let O=new Set;for(let D of $.matchAll(/<FrameworkReference\b[^>]*\bInclude\s*=\s*"([^"]+)"/gi))O.add(D[1].toLowerCase());return{sdk:X,outputType:Q,targetFramework:H,isTestProject:q,useMaui:Y,useWpf:G,useWindowsForms:_,packages:B,frameworkRefs:O}}function H3($,Z){let U=Z.toLowerCase();if($.has(U))return!0;for(let X of $)if(X===U||X.startsWith(`${U}.`))return!0;return!1}function W9($,Z){let U;for(let[X,Q]of Z){if(!H3($,X))continue;if(!U||X.length>U[0].length)U=[X,Q]}return U}function Nq($){let Z;for(let U of Mq){if(!H3($,U))continue;if(!Z||U.length>Z.length)Z=U}for(let U of $)if(U==="modelcontextprotocol"||U.startsWith("modelcontextprotocol.")){if(!Z||U.length>Z.length)Z=U}return Z}function wq($){let Z=$.toLowerCase();if(!Z)return;let U;for(let X of Aq){let Q=X[0].toLowerCase();if(Z===Q||Z.startsWith(`${Q}/`)){if(!U||Q.length>U[0].length)U=X}}return U}function b$($){let Z=$.toLowerCase();return Z==="exe"||Z==="winexe"}function Cq($,Z){if($==="mcp")return 0;if($==="mobile")return 1;if($==="backend")return 2;if($==="cli")return 3;if(Z&&Z!=="")return 4;return 5}function bq($,Z){let U=Z.replace(/\.csproj$/i,""),{sdk:X,packages:Q,frameworkRefs:z,outputType:J}=$,H,q="",Y,G=Nq(Q),_=wq(X),B=W9(Q,Fq),O=W9(Q,Kq),D=Pq.some((W)=>H3(Q,W)),V=z.has("microsoft.aspnetcore.app");if(G)H="mcp",q="MCP",Y=`${Z} + ${G} (C# MCP server)`;else if($.isTestProject||_?.[1]==="test"||B)H="library",q=B?.[1]||(_?.[1]==="test"?_[2]:"Test"),Y=`${Z} + test (${q})`;else if($.useMaui)H="mobile",q="MAUI",Y=`${Z} + UseMaui (MAUI)`;else if($.useWpf||$.useWindowsForms)H="backend",q=$.useWpf&&$.useWindowsForms?"WPF+WinForms":$.useWpf?"WPF":"Windows Forms",Y=`${Z} + ${q}`;else if(_?.[1]==="web")H="backend",q=D?"gRPC":_[2],Y=`${Z} + Sdk=${_[0]}${D?" + Grpc.AspNetCore":""} (ASP.NET Core)`;else if(_?.[1]==="worker")H="backend",q=_[2],Y=`${Z} + Sdk=${_[0]} (Worker)`;else if(_?.[1]==="blazor-wasm")H="backend",q=_[2],Y=`${Z} + Sdk=${_[0]} (Blazor WASM)`;else if(_?.[1]==="aspire")H="backend",q=_[2],Y=`${Z} + Sdk=${_[0]} (Aspire)`;else if(_?.[1]==="razor-lib")H="library",q=_[2],Y=`${Z} + Sdk=${_[0]} (Razor class library)`;else if(V&&b$(J))H="backend",q="ASP.NET Core",Y=`${Z} + FrameworkReference Microsoft.AspNetCore.App (host)`;else if(V&&!b$(J))H="library",q="ASP.NET Core",Y=`${Z} + FrameworkReference Microsoft.AspNetCore.App (web library)`;else if(O&&(b$(J)||!J))H="cli",q=O[1],Y=`${Z} + ${O[0]} (C# CLI)`;else if(b$(J))H="cli",Y=`${Z} + OutputType=Exe (C# console)`;else{H="library";let W=X?` Sdk=${X}`:"";if(Y=`${Z}${W} (C# class library)`.replace(" Sdk=Microsoft.NET.Sdk",""),!X||X.toLowerCase()===O9||X.toLowerCase().startsWith(`${O9}/`))Y=`${Z} (C# class library)`}return{appType:H,projectName:U,targetFramework:$.targetFramework,sdk:X||"Microsoft.NET.Sdk",framework:q,found:Y}}function A1($){if(!Dq($))return[];try{return Lq($).filter((Z)=>Z.toLowerCase().endsWith(".csproj")).sort()}catch{return[]}}function S$($){let Z=A1($);if(Z.length===0)return null;let U=null,X=999;for(let Q of Z){let z=Rq($,Q),J;try{J=Iq(z,"utf-8")}catch{continue}let H=Tq(J),q=bq(H,Q),Y=Cq(q.appType,q.framework);if(!U||Y<X)U=q,X=Y}return U}import{existsSync as P0,readFileSync as Eq,readdirSync as jq,statSync as gq}from"fs";import{join as l}from"path";var i={version:1,_doc:"SINGLE SOURCE of JVM (Java/Kotlin) detection KNOWLEDGE (Truth-is-faf-cli). faf-cli imports this; SDKs/MCPs compose it. Bolster JVM by editing THIS file. Logic stays in jvm.ts. Kill line: pom / gradle alone ≠ type. Content-aware: plugins · parents · packaging · deps · version catalogs. One brand JVM — Android/KMP are facets, not a second Kotlin Edition. 2026-08-03 initial (post-intel).",mcpArtifacts:["io.modelcontextprotocol.sdk:mcp","io.modelcontextprotocol.sdk:mcp-core","io.modelcontextprotocol.sdk:mcp-spring-webflux","io.modelcontextprotocol.sdk:mcp-spring-webmvc","org.springframework.ai:spring-ai-starter-mcp-server","org.springframework.ai:spring-ai-starter-mcp-server-webmvc","org.springframework.ai:spring-ai-starter-mcp-server-webflux","org.springframework.ai:spring-ai-starter-mcp-client","org.springframework.ai:spring-ai-mcp-server-spring-boot-starter","org.springframework.ai:spring-ai-mcp-client-spring-boot-starter","io.modelcontextprotocol:kotlin-sdk","io.modelcontextprotocol.kotlin:mcp"],webPlugins:[["org.springframework.boot","Spring Boot"],["io.quarkus","Quarkus"],["io.quarkus.gradle.plugin","Quarkus"],["io.micronaut.application","Micronaut"],["io.micronaut.library","Micronaut"]],webParents:[["org.springframework.boot:spring-boot-starter-parent","Spring Boot"],["io.quarkus.platform:quarkus-bom","Quarkus"],["io.micronaut.platform:micronaut-parent","Micronaut"]],webArtifacts:[["org.springframework.boot:spring-boot-starter-web","Spring Boot"],["org.springframework.boot:spring-boot-starter-webflux","Spring Boot"],["org.springframework.boot:spring-boot-starter","Spring Boot"],["io.quarkus:quarkus-core","Quarkus"],["io.micronaut:micronaut-http-server-netty","Micronaut"],["io.ktor:ktor-server-core","Ktor"],["io.ktor:ktor-server-netty","Ktor"],["io.ktor:ktor-server-cio","Ktor"]],androidPlugins:["com.android.application","com.android.library","com.android.kotlin.multiplatform.library"],kmpPlugins:["org.jetbrains.kotlin.multiplatform","kotlin-multiplatform"],jvmKotlinPlugins:["org.jetbrains.kotlin.jvm","kotlin-jvm","org.jetbrains.kotlin.android","kotlin-android"],cliPlugins:[["org.gradle.application","application"],["application","application"]],cliArtifacts:[["info.picocli:picocli","Picocli"],["com.github.ajalt.clikt:clikt","Clikt"],["com.github.ajalt.clikt:clikt-jvm","Clikt"]],libraryPlugins:["java-library","org.gradle.java-library"]};var xq=i.mcpArtifacts.map(($)=>$.toLowerCase()),hq=i.webPlugins.map(([$,Z])=>[$.toLowerCase(),Z]),yq=i.webParents.map(([$,Z])=>[$.toLowerCase(),Z]),fq=i.webArtifacts.map(([$,Z])=>[$.toLowerCase(),Z]),yB=i.androidPlugins.map(($)=>$.toLowerCase()),uq=i.kmpPlugins.map(($)=>$.toLowerCase()),kq=i.jvmKotlinPlugins.map(($)=>$.toLowerCase()),vq=i.cliPlugins.map(([$,Z])=>[$.toLowerCase(),Z]),mq=i.cliArtifacts.map(([$,Z])=>[$.toLowerCase(),Z]),pq=i.libraryPlugins.map(($)=>$.toLowerCase()),lq=["pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts"];function q3($){return lq.some((Z)=>P0(l($,Z)))}function N1($){try{return Eq($,"utf-8")}catch{return null}}function dq($){let Z=new Map,U=new Map,X="";for(let Q of $.split(`
|
|
217
|
+
`)){let z=Q.replace(/#.*$/,"").trim();if(!z)continue;let J=z.match(/^\[([^\]]+)\]$/);if(J){X=J[1].trim().toLowerCase();continue}let H=z.match(/^([A-Za-z0-9_.-]+)\s*=\s*\{[^}]*\bid\s*=\s*"([^"]+)"/);if(H&&(X==="plugins"||X.endsWith(".plugins"))){Z.set(H[1].replace(/-/g,".").toLowerCase(),H[2].toLowerCase()),Z.set(H[1].toLowerCase(),H[2].toLowerCase());continue}let q=z.match(/^([A-Za-z0-9_.-]+)\s*=\s*\{[^}]*\bmodule\s*=\s*"([^"]+)"/);if(q&&(X==="libraries"||X.endsWith(".libraries"))){let _=q[1].toLowerCase();U.set(_,q[2].toLowerCase()),U.set(_.replace(/-/g,"."),q[2].toLowerCase());continue}let Y=z.match(/^([A-Za-z0-9_.-]+)\s*=\s*\{[^}]*\bgroup\s*=\s*"([^"]+)"[^}]*\bname\s*=\s*"([^"]+)"/);if(Y&&(X==="libraries"||X.endsWith(".libraries"))){let _=`${Y[2]}:${Y[3]}`.toLowerCase(),B=Y[1].toLowerCase();U.set(B,_),U.set(B.replace(/-/g,"."),_);continue}let G=z.match(/^([A-Za-z0-9_.-]+)\s*=\s*"([^"]+)"/);if(G){let _=G[1].toLowerCase(),B=G[2];if(X==="plugins"||X.endsWith(".plugins")){let O=B.split(":")[0].toLowerCase();Z.set(_,O),Z.set(_.replace(/-/g,"."),O)}else if(X==="libraries"||X.endsWith(".libraries")){let O=B.split(":");if(O.length>=2){let D=`${O[0]}:${O[1]}`.toLowerCase();U.set(_,D),U.set(_.replace(/-/g,"."),D)}}}}return{plugins:Z,libraries:U}}function cq($){let Z=l($,"gradle","libs.versions.toml");if(!P0(Z))return{plugins:new Map,libraries:new Map};let U=N1(Z);if(!U)return{plugins:new Map,libraries:new Map};return dq(U)}function iq($){let Z=[];for(let U of $.matchAll(/include\s*\(\s*([^)]+)\)/g))for(let X of U[1].split(",")){let Q=X.replace(/['":\s]/g,"").replace(/^:/,"");if(Q)Z.push(Q.replace(/:/g,"/"))}for(let U of $.matchAll(/include\s+((?:['"][^'"]+['"]\s*,?\s*)+)/g))for(let X of U[1].split(",")){let Q=X.replace(/['":\s]/g,"").replace(/^:/,"");if(Q)Z.push(Q.replace(/:/g,"/"))}for(let U of $.matchAll(/project\s*\(\s*["']:([^"']+)["']\s*\)\s*\.projectDir\s*=\s*file\s*\(\s*["']([^"']+)["']\s*\)/g))Z.push(U[2].replace(/^\.\//,""));return[...new Set(Z)]}function rq($,Z){let U=new Set;for(let X of $.matchAll(/\bid\s*\(\s*["']([^"']+)["']\s*\)/g))U.add(X[1].toLowerCase());for(let X of $.matchAll(/\bid\s+['"]([^'"]+)['"]/g))U.add(X[1].toLowerCase());for(let X of $.matchAll(/plugins\s*\{([\s\S]*?)\}/g))for(let Q of X[1].split(/[\n;]/)){let z=Q.replace(/\/\/.*$/,"").trim();if(!z||z.startsWith("id")||z.startsWith("kotlin")||z.startsWith("alias"))continue;let J=z.match(/^`([a-zA-Z0-9.-]+)`$/)||z.match(/^([a-zA-Z][a-zA-Z0-9.-]*)$/);if(J)U.add(J[1].toLowerCase())}for(let X of $.matchAll(/\bkotlin\s*\(\s*["']([^"']+)["']\s*\)/g)){let Q=X[1].toLowerCase();if(Q==="jvm")U.add("org.jetbrains.kotlin.jvm");else if(Q==="multiplatform")U.add("org.jetbrains.kotlin.multiplatform");else if(Q==="android")U.add("org.jetbrains.kotlin.android");else U.add(`org.jetbrains.kotlin.${Q}`)}for(let X of $.matchAll(/libs\.plugins\.([A-Za-z0-9_.]+)/g)){let Q=X[1].toLowerCase(),z=Z.plugins.get(Q)||Z.plugins.get(Q.replace(/\./g,"-"))||Z.plugins.get(Q.replace(/-/g,"."));if(z)U.add(z);else if(Q.includes("spring")&&Q.includes("boot"))U.add("org.springframework.boot")}for(let X of $.matchAll(/apply\s+plugin\s*:\s*['"]([^'"]+)['"]/g))U.add(X[1].toLowerCase());return U}function sq($,Z){let U=new Set;for(let X of $.matchAll(/["']([A-Za-z0-9_.-]+:[A-Za-z0-9_.-]+)(?::[^"']+)?["']/g))U.add(X[1].toLowerCase());for(let X of $.matchAll(/libs\.([A-Za-z0-9_.]+)/g)){let Q=X[1].toLowerCase();if(Q.startsWith("plugins."))continue;let z=[Q,Q.replace(/\./g,"-"),Q.replace(/-/g,".")];for(let J of z){let H=Z.libraries.get(J);if(H){U.add(H.includes(":")?H.split(":").slice(0,2).join(":"):H);break}}}return U}function L9($){let Z=($.match(/<packaging>\s*([^<]+?)\s*<\/packaging>/i)?.[1]||"jar").trim().toLowerCase(),U=new Set,X=$.match(/<parent>([\s\S]*?)<\/parent>/i);if(X){let J=X[1].match(/<groupId>\s*([^<]+?)\s*<\/groupId>/i)?.[1]?.trim(),H=X[1].match(/<artifactId>\s*([^<]+?)\s*<\/artifactId>/i)?.[1]?.trim();if(J&&H)U.add(`${J}:${H}`.toLowerCase())}let Q=new Set;for(let J of $.matchAll(/<dependency>([\s\S]*?)<\/dependency>/gi)){let H=J[1].match(/<groupId>\s*([^<]+?)\s*<\/groupId>/i)?.[1]?.trim(),q=J[1].match(/<artifactId>\s*([^<]+?)\s*<\/artifactId>/i)?.[1]?.trim();if(H&&q)Q.add(`${H}:${q}`.toLowerCase())}let z=[];for(let J of $.matchAll(/<module>\s*([^<]+?)\s*<\/module>/gi))z.push(J[1].trim());return{packaging:Z,parents:U,artifacts:Q,modules:z}}function Z0($,Z){let U=Z.toLowerCase();if($.has(U))return!0;for(let X of $)if(X===U||X.endsWith(`.${U}`)||X===U.replace(/^org\.gradle\./,""))return!0;return!1}function T1($,Z,U){let X;for(let[Q,z]of Z){let J=!1;if(U==="plugin")J=Z0($,Q);else if(J=$.has(Q)||[...$].some((H)=>H===Q||H.startsWith(`${Q}:`)||H.startsWith(`${Q}.`)),!J&&U==="artifact")J=[...$].some((H)=>H===Q||H.startsWith(`${Q}`));if(!J)continue;if(!X||Q.length>X[0].length)X=[Q,z]}return X}function aq($){let Z;for(let U of xq)for(let X of $){if(X===U||X.startsWith(`${U}:`)||X.startsWith(U.replace(/:mcp$/,":"))){if(!Z||U.length>Z.length)Z=U}if(X.startsWith("io.modelcontextprotocol")||X.includes("spring-ai-starter-mcp")||X.includes("spring-ai-mcp")){if(!Z||X.length>Z.length)Z=X}}return Z}function R9($){let Z=new Set,U=!1,X=!1,Q=[l($,"src"),l($,"src","main")],z=(J,H)=>{if(H>4||!P0(J))return;let q;try{q=jq(J)}catch{return}for(let Y of q){if(Y==="androidMain"||Y==="commonMain"||Y==="jvmMain"||Y==="iosMain")Z.add(Y);let G=l(J,Y);try{if(gq(G).isDirectory())z(G,H+1);else if(Y.endsWith(".kt")||Y.endsWith(".kts"))U=!0;else if(Y.endsWith(".java"))X=!0}catch{}}};for(let J of Q)z(J,0);return{kotlin:U,java:X,hints:Z}}function nq($){let Z=[],U=$.plugins,X=$.artifacts,Q=uq.some((A)=>Z0(U,A))||$.sourceHints.has("commonMain"),z=Z0(U,"com.android.application"),J=Z0(U,"com.android.library")||Z0(U,"com.android.kotlin.multiplatform.library");if(z||J)Z.push("android");if(Q)Z.push("multiplatform");let H=aq(X),q=T1(U,hq,"plugin"),Y=T1($.parents,yq,"parent"),G=T1(X,fq,"artifact"),_=T1(U,vq,"plugin"),B=T1(X,mq,"artifact"),O=pq.some((A)=>Z0(U,A)),D=$.packaging==="pom",V,W="",I;if(z)V="mobile",W=Q?"Android+KMP":"Android",I=`${$.path||"root"} + com.android.application (${W})`;else if(H)V="mcp",W="MCP",Z.push("mcp"),I=`${$.path||"root"} + ${H} (JVM MCP server)`;else if(q||Y||G){V="backend",W=q?.[1]||Y?.[1]||G?.[1]||"JVM";let A=q?.[0]||Y?.[0]||G?.[0]||"web";I=`${$.path||"root"} + ${A} (JVM backend)`}else if(Q&&!J)V="library",W="Kotlin Multiplatform",I=`${$.path||"root"} + kotlin multiplatform (KMP library)`;else if(J)V="library",W=Q?"Android+KMP":"Android",I=`${$.path||"root"} + android library (${W})`;else if(B||$.hasApplicationPlugin&&($.hasMainClass||_)||_&&$.hasMainClass)V="cli",W=B?.[1]||"application",I=B?`${$.path||"root"} + ${B[0]} (JVM CLI)`:`${$.path||"root"} + application plugin (JVM CLI)`;else if($.hasApplicationPlugin&&!O)V="cli",W="application",I=`${$.path||"root"} + application plugin (JVM CLI)`;else if(D)V="library",I=`${$.path||"root"} + packaging=pom (Maven aggregator/BOM)`;else{V="library";let A=$.kotlinSources&&!$.javaSources?"Kotlin":"JVM";if(I=`${$.path||"root"} (${A} library)`,O)I=`${$.path||"root"} + java-library (JVM library)`}let L="Java";if($.kotlinSources&&$.javaSources)L="Java/Kotlin";else if($.kotlinSources||kq.some((A)=>Z0(U,A))||Q)L="Kotlin";let F=[...new Set(Z)];return{appType:V,framework:W,facets:F,found:I,buildTool:$.buildTool,mainLanguage:L}}function oq($,Z){if($==="mcp")return 0;if($==="mobile")return 1;if(Z.includes("multiplatform")&&$==="backend")return 2;if($==="backend")return 3;if($==="cli")return 4;if(Z.includes("multiplatform"))return 5;if(Z.includes("android"))return 6;return 7}function D9($,Z,U){let X=Z?l($,Z):$,Q=l(X,"build.gradle.kts"),z=l(X,"build.gradle"),J=P0(Q)?Q:P0(z)?z:null;if(!J)return null;let H=N1(J);if(!H)return null;let q=rq(H,U),Y=sq(H,U),G=R9(X),_=/mainClass\s*[.=]/.test(H)||/mainClassName\s*=/.test(H)||/Main-Class/.test(H),B=Z0(q,"application")||Z0(q,"org.gradle.application");return{path:Z||"build.gradle",plugins:q,artifacts:Y,packaging:"jar",parents:new Set,hasMainClass:_,hasApplicationPlugin:B,sourceHints:G.hints,kotlinSources:G.kotlin||J.endsWith(".kts"),javaSources:G.java,buildTool:"gradle"}}function I9($,Z){let U=Z?l($,Z):$,X=l(U,"pom.xml");if(!P0(X))return null;let Q=N1(X);if(!Q)return null;let{packaging:z,parents:J,artifacts:H}=L9(Q),q=R9(U);return{path:Z?`${Z}/pom.xml`:"pom.xml",plugins:new Set,artifacts:H,packaging:z,parents:J,hasMainClass:/<mainClass>/.test(Q),hasApplicationPlugin:!1,sourceHints:q.hints,kotlinSources:q.kotlin,javaSources:q.java,buildTool:"maven"}}function w1($){if(!q3($))return null;let Z=cq($),U=[],X=null;for(let Y of["settings.gradle.kts","settings.gradle"]){let G=l($,Y);if(P0(G)){X=N1(G);break}}let Q=X?iq(X):[],z=D9($,"",Z);if(z)U.push(z);for(let Y of Q){let G=D9($,Y,Z);if(G)U.push(G)}let J=I9($,"");if(J){U.push(J);let Y=N1(l($,"pom.xml"));if(Y){let{modules:G}=L9(Y);for(let _ of G){let B=I9($,_);if(B)U.push(B)}}}if(U.length===0&&X)return{appType:"library",framework:"",buildTool:"gradle",mainLanguage:"Java/Kotlin",facets:[],found:"settings.gradle (Gradle multi-project root)"};if(U.length===0)return null;let H=null,q=999;for(let Y of U){let G=nq(Y),_=oq(G.appType,G.facets);if(!H||_<q)H={appType:G.appType,framework:G.framework,buildTool:G.buildTool,mainLanguage:G.mainLanguage,facets:G.facets,found:G.found},q=_}if(H&&Q.length>0&&!H.found.includes("multi-project"));return H}var XY=new Set(["node_modules",".git","dist","build","venv",".venv","__pycache__","target","coverage",".next",".svelte-kit","vendor"]),QY=new Set([".py",".ts",".tsx",".js",".jsx",".svelte",".vue",".rb",".go",".rs",".php",".java",".kt",".swift"]),zY={mainLanguage:["project","main_language"],main_language:["project","main_language"],framework:["stack","frontend"],cssFramework:["stack","css_framework"],css:["stack","css_framework"],uiLibrary:["stack","ui_library"],ui_library:["stack","ui_library"],stateManagement:["stack","state_management"],state:["stack","state_management"],backend:["stack","backend"],apiType:["stack","api_type"],api:["stack","api_type"],runtime:["stack","runtime"],database:["stack","database"],db:["stack","database"],connection:["stack","connection"],hosting:["stack","hosting"],buildTool:["stack","build"],build_tool:["stack","build"],build:["stack","build"],packageManager:["stack","package_manager"],pkg_manager:["stack","package_manager"],cicd:["stack","cicd"]},JY=[["packageManager","package-manager"],["pkg_manager","package-manager"],["mainLanguage","language"],["main_language","language"],["framework","framework"],["backend","backend"],["database","database"],["db","database"],["cicd","ci-cd"],["hosting","hosting"],["buildTool","build"],["build_tool","build"],["build","build"],["runtime","runtime"],["cssFramework","css"],["css","css"],["uiLibrary","ui-library"],["stateManagement","state-management"],["apiType","api"],["api","api"]];function HY($,Z){for(let[U,X]of JY)if(U in $)return X;return Z.length>0?"framework":"config"}function qY($){try{let Z=JSON.parse(eq($,"utf-8")),U=["background","content_scripts","action","browser_action","permissions"].some((X)=>(X in Z));if(typeof Z.manifest_version==="number"&&U)return"chrome";return"other"}catch{return"other"}}function YY($){let Z=[],U=UY($),X=tq(Y3($,".git")),Q=new Set;for(let z=0;z<10;z++){let J;try{J=M9(U)}catch{break}for(let q of J){if(q.toLowerCase().endsWith(".csproj")){let G=S$(U);if(G){let _={mainLanguage:"C#",packageManager:"NuGet",buildTool:"dotnet"};if(G.appType==="backend"&&G.framework)_.backend=G.framework;else if(G.appType==="cli"&&G.framework)_.framework=G.framework;else if(G.appType==="mcp")_.apiType="MCP";else if(G.appType==="mobile"&&G.framework)_.framework=G.framework;if(G.targetFramework)_.runtime=G.targetFramework;let B=G.framework?[G.framework,"C#",".NET"]:["C#",".NET"];Z.push({slots:_,priority:36,frameworks:B,fileName:q})}continue}let Y=Q3[q];if(!Y)continue;if(q==="manifest.json"&&qY(Y3(U,q))!=="chrome")continue;if(q==="pubspec.yaml"){let G=T$(U);if(G){let _={mainLanguage:"Dart",packageManager:"pub"};if(G.isFlutter){if(_.framework="Flutter",G.stateManagement)_.stateManagement=G.stateManagement}else if(G.appType==="backend"&&G.framework)_.backend=G.framework;else if(G.appType==="mcp")_.apiType="MCP";Z.push({slots:_,priority:Y.priority,frameworks:G.isFlutter?["Flutter","Dart"]:["Dart"],fileName:q});continue}}if(q==="go.mod"){let G=C$(U);if(G){let _={mainLanguage:"Go",packageManager:"go modules",buildTool:"go build"};if(G.appType==="backend"&&G.framework)_.backend=G.framework;else if(G.appType==="cli"&&G.framework)_.framework=G.framework;else if(G.appType==="mcp")_.apiType="MCP";let B=G.framework?[G.framework,"Go"]:["Go"];Z.push({slots:_,priority:Y.priority,frameworks:B,fileName:q});continue}}if(q==="pom.xml"||q==="build.gradle"||q==="build.gradle.kts"||q==="settings.gradle"||q==="settings.gradle.kts"){if(Q.has(U))continue;Q.add(U);let G=w1(U);if(G){let _={mainLanguage:G.mainLanguage==="Java/Kotlin"?"Kotlin":G.mainLanguage,packageManager:G.buildTool==="maven"?"maven":"gradle",buildTool:G.buildTool};if(G.appType==="backend"&&G.framework)_.backend=G.framework;else if(G.appType==="cli"&&G.framework)_.framework=G.framework;else if(G.appType==="mcp")_.apiType="MCP";else if(G.appType==="mobile")_.framework=G.framework||"Android";if(G.facets.includes("multiplatform"))_.framework=G.framework||"Kotlin Multiplatform";let B=G.framework?[G.framework,"JVM",G.mainLanguage==="Kotlin"?"Kotlin":"Java"]:["JVM",G.mainLanguage==="Kotlin"?"Kotlin":"Java"];Z.push({slots:_,priority:Y.priority??35,frameworks:B,fileName:q});continue}}Z.push({slots:Y.slots||{},priority:Y.priority,frameworks:Y.frameworks,fileName:q})}if(X&&z===0)break;let H=$Y(U);if(H===U)break;U=H}return Z}function GY($){let Z=[];for(let U of F9($,2,{count:0})){let X=Q3[`*${U}`],Q=X?.slots?.mainLanguage;if(Q)Z.push({slots:{mainLanguage:Q},priority:X.priority,frameworks:X.frameworks})}return Z}function K9($){let Z=[...YY($),...GY($)],U={},X={},Q=new Set;for(let Y of Z){Y.frameworks.forEach((G)=>Q.add(G));for(let[G,_]of Object.entries(Y.slots))if(_&&!_.includes("/")&&(!(G in U)||Y.priority>X[G]))U[G]=_,X[G]=Y.priority}let z=new Map;for(let Y of Z){if(!Y.fileName)continue;if(!z.has(Y.fileName))z.set(Y.fileName,{fileName:Y.fileName,category:HY(Y.slots,Y.frameworks),priority:Y.priority})}let J=[...z.values()].sort((Y,G)=>G.priority-Y.priority||Y.fileName.localeCompare(G.fileName)),H=[];if(U.mainLanguage)H.push(U.mainLanguage.toLowerCase());if(U.framework)H.push(U.framework.toLowerCase());let q=H.length>0?H.join("-"):"unknown-stack";return{slotFills:U,frameworks:[...Q],confirmedCount:Z.length,discoveredFormats:J,stackSignature:q}}function G3($){let{slotFills:Z}=K9($),U={};for(let[X,Q]of Object.entries(Z)){let z=zY[X];if(!z||!Q)continue;let[J,H]=z;if(J==="project")(U.project??={})[H]=Q;else(U.stack??={})[H]=Q}return U}function F9($,Z,U){let X=new Set;if(Z<0||U.count>400)return X;let Q;try{Q=M9($,{withFileTypes:!0})}catch{return X}for(let z of Q){if(U.count++>400)break;if(!z.isDirectory()){let J=ZY(z.name);if(QY.has(J))X.add(J);continue}if(XY.has(z.name)||z.name.startsWith("."))continue;for(let J of F9(Y3($,z.name),Z-1,U))X.add(J)}return X}import{existsSync as P9,readFileSync as A9}from"fs";import{join as T9}from"path";var f=($,Z,U)=>({value:$,source:Z,confidence:U});function N9($){let Z=_Y($),U=BY($),X={},Q=(z,J)=>{if(J)X[z]=J};return Q("what",VY(Z,U)),Q("who",OY(U)),Q("why",WY(U)),Q("where",DY(Z,U)),Q("when",IY(U)),Q("how",LY(Z,U)),X}function _3($){let Z=N9($),U={};return Object.keys(Z).forEach((X)=>{let Q=Z[X];if(Q)U[X]=Q.value}),U}function _Y($){let Z=T9($,"package.json");if(!P9(Z))return null;try{return JSON.parse(A9(Z,"utf-8"))}catch{return null}}function BY($){let Z=T9($,"README.md");if(!P9(Z))return"";let U;try{U=A9(Z,"utf-8")}catch{return""}return U.split(`
|
|
218
218
|
`).filter((X)=>!/^\s*\[!\[/.test(X)&&!/^\s*!\[/.test(X)).join(`
|
|
219
|
-
`).replace(/<[^>]+>/g,"").replace(/!\[[^\]]*\]\([^)]*\)/g,"").trim()}function A0($){return $.replace(/\s+/g," ").replace(/[#*`>]/g,"").trim().slice(0,280)}function c0($,Z){let U=new RegExp(`##?\\s+(${Z})\\s*\\n+([\\s\\S]+?)(?:\\n\\n|\\n##?|$)`,"i"),X=$.match(U);return X&&X[2]&&X[2].trim().length>20?{body:A0(X[2]),heading:X[1].trim()}:null}function C1($,Z,U=30){for(let X of Z){let Q=$.match(X);if(Q&&Q[1]&&Q[1].trim().length>=U)return A0(Q[1])}return null}function BY($,Z){if($?.description&&$.description.length>20)return f(A0($.description),"package.json:description",0.95);let U=c0(Z,"Purpose|What|About|Overview|Description");if(U)return f(U.body,`README:## ${U.heading}`,0.8);let X=Z.split(/\n\s*\n/).map((z)=>z.trim()).find((z)=>z.length>30&&!z.startsWith("#"));if(X)return f(A0(X),"README:first-paragraph",0.5);let Q=C1(Z,[/(?:core|main|primary)\s+(?:problem|challenge)(?:\s+is)?\s*:?\s*([^.\n]{30,})/i,/solves?\s+(?:the\s+)?(?:problem\s+of\s+)?([^.\n]{30,})/i]);return Q?f(Q,"README:problem-heuristic",0.6):null}function VY($){let Z=c0($,"Audience|Who|Who is this for|Who it.s for");if(Z)return f(Z.body,`README:## ${Z.heading}`,0.8);let U=C1($,[/\b(?:designed|built|made)\s+for\s+((?:[a-z][a-z-]*\s+)?(?:developers?|teams?|engineers?|builders?|founders?)[^.\n]{0,80})/i,/\bfor\s+((?:[a-z][a-z-]*\s+)?(?:developers?|teams?|engineers?|builders?|founders?)[^.\n]{0,80})/i],8);return U?f(U,"README:audience-heuristic",0.6):null}function OY($){let Z=c0($,"Why|Mission|Motivation|Rationale|Vision");if(Z)return f(Z.body,`README:## ${Z.heading}`,0.8);let U=C1($,[/(?:our\s+|the\s+)?(?:mission|purpose|goal)\s+is\s+([^.\n]{30,})/i,/\b(?:mission|purpose|goal)\s*:\s*([^.\n]{30,})/i,/(?:built|created|designed)\s+(?:because|to)\s+([^.\n]{30,})/i]);return U?f(U,"README:mission-heuristic",0.6):null}function WY($,Z){let U=typeof $?.repository==="string"?$.repository:$?.repository?.url;if(U)return f(A0(U.replace(/^git\+/,"").replace(/\.git$/,"")),"package.json:repository",0.95);if($?.homepage)return f(A0($.homepage),"package.json:homepage",0.9);let X=C1(Z,[/\b(?:deployed|hosted|available|published)\s+(?:on|at|via)\s+([^.\n]{3,80})/i],3);return X?f(X,"README:deploy-heuristic",0.6):null}function DY($){let Z=c0($,"Timeline|Status|Release|Roadmap");if(Z)return f(Z.body,`README:## ${Z.heading}`,0.8);let U=C1($,[/\b(production\s+since\s+[^.\n]{4,60})/i,/\b((?:in\s+)?(?:production|beta|alpha|development)\s+since\s+[^.\n]{4,60})/i,/\bsince\s+((?:[A-Z][a-z]+\s+)?\d{4}[^.\n]{0,40})/],4);return U?f(U,"README:since-heuristic",0.6):null}function IY($,Z){let U=$?.scripts?Object.keys($.scripts):[],X=["start","dev","build"].filter((J)=>U.includes(J));if(X.length)return f(A0(X.map((J)=>`npm run ${J}`).join(", ")),"package.json:scripts",0.9);let Q=c0(Z,"Usage|Getting Started|Install|Installation|Quick Start");if(Q)return f(Q.body,`README:## ${Q.heading}`,0.8);let z=c0(Z,"Architecture|Approach|How it works|Methodology|How");return z?f(z.body,`README:## ${z.heading}`,0.7):null}var w9="3.0";import{existsSync as K,readFileSync as Z0,readdirSync as b9}from"fs";import{join as M}from"path";var C9=[{name:"Next.js",slug:"nextjs",category:"frontend",signals:[{type:"dependency",key:"next"},{type:"file",pattern:"next.config.*"}]},{name:"React",slug:"react",category:"frontend",signals:[{type:"dependency",key:"react"}]},{name:"SvelteKit",slug:"sveltekit",category:"frontend",signals:[{type:"dependency",key:"@sveltejs/kit"},{type:"file",pattern:"svelte.config.*"}]},{name:"Svelte",slug:"svelte",category:"frontend",signals:[{type:"dependency",key:"svelte"},{type:"devDependency",key:"svelte"}]},{name:"Vue.js",slug:"vue",category:"frontend",signals:[{type:"dependency",key:"vue"}]},{name:"Nuxt",slug:"nuxt",category:"frontend",signals:[{type:"dependency",key:"nuxt"},{type:"file",pattern:"nuxt.config.*"}]},{name:"Angular",slug:"angular",category:"frontend",signals:[{type:"dependency",key:"@angular/core"},{type:"file",pattern:"angular.json"}]},{name:"Astro",slug:"astro",category:"frontend",signals:[{type:"dependency",key:"astro"},{type:"file",pattern:"astro.config.*"}]},{name:"Solid",slug:"solid",category:"frontend",signals:[{type:"dependency",key:"solid-js"}]},{name:"Remix",slug:"remix",category:"frontend",signals:[{type:"dependency",key:"@remix-run/react"}]},{name:"Gatsby",slug:"gatsby",category:"frontend",signals:[{type:"dependency",key:"gatsby"},{type:"file",pattern:"gatsby-config.*"}]},{name:"Qwik",slug:"qwik",category:"frontend",signals:[{type:"dependency",key:"@builder.io/qwik"}]},{name:"Vercel (SvelteKit)",slug:"adapter-vercel",category:"hosting",signals:[{type:"dependency",key:"@sveltejs/adapter-vercel"},{type:"devDependency",key:"@sveltejs/adapter-vercel"}]},{name:"Node (SvelteKit)",slug:"adapter-node",category:"hosting",signals:[{type:"dependency",key:"@sveltejs/adapter-node"},{type:"devDependency",key:"@sveltejs/adapter-node"}]},{name:"Static (SvelteKit)",slug:"adapter-static",category:"hosting",signals:[{type:"dependency",key:"@sveltejs/adapter-static"},{type:"devDependency",key:"@sveltejs/adapter-static"}]},{name:"Cloudflare (SvelteKit)",slug:"adapter-cloudflare",category:"hosting",signals:[{type:"dependency",key:"@sveltejs/adapter-cloudflare"},{type:"devDependency",key:"@sveltejs/adapter-cloudflare"}]},{name:"Netlify (SvelteKit)",slug:"adapter-netlify",category:"hosting",signals:[{type:"dependency",key:"@sveltejs/adapter-netlify"},{type:"devDependency",key:"@sveltejs/adapter-netlify"}]},{name:"Tailwind CSS",slug:"tailwind",category:"css",signals:[{type:"dependency",key:"tailwindcss"},{type:"devDependency",key:"tailwindcss"},{type:"file",pattern:"tailwind.config.*"}]},{name:"Bootstrap",slug:"bootstrap",category:"css",signals:[{type:"dependency",key:"bootstrap"}]},{name:"Styled Components",slug:"styled-components",category:"css",signals:[{type:"dependency",key:"styled-components"}]},{name:"shadcn/ui",slug:"shadcn",category:"ui",signals:[{type:"file",pattern:"components.json"},{type:"dependency",key:"@radix-ui/react-dialog"}]},{name:"Material UI",slug:"mui",category:"ui",signals:[{type:"dependency",key:"@mui/material"}]},{name:"Chakra UI",slug:"chakra",category:"ui",signals:[{type:"dependency",key:"@chakra-ui/react"}]},{name:"Ant Design",slug:"antd",category:"ui",signals:[{type:"dependency",key:"antd"}]},{name:"Redux",slug:"redux",category:"state",signals:[{type:"dependency",key:"@reduxjs/toolkit"}]},{name:"Zustand",slug:"zustand",category:"state",signals:[{type:"dependency",key:"zustand"}]},{name:"Jotai",slug:"jotai",category:"state",signals:[{type:"dependency",key:"jotai"}]},{name:"Pinia",slug:"pinia",category:"state",signals:[{type:"dependency",key:"pinia"}]},{name:"Express",slug:"express",category:"backend",signals:[{type:"dependency",key:"express"}]},{name:"Fastify",slug:"fastify",category:"backend",signals:[{type:"dependency",key:"fastify"}]},{name:"Hono",slug:"hono",category:"backend",signals:[{type:"dependency",key:"hono"}]},{name:"Elysia",slug:"elysia",category:"backend",signals:[{type:"dependency",key:"elysia"}]},{name:"NestJS",slug:"nestjs",category:"backend",signals:[{type:"dependency",key:"@nestjs/core"}]},{name:"Koa",slug:"koa",category:"backend",signals:[{type:"dependency",key:"koa"}]},{name:"Django",slug:"django",category:"backend",signals:[{type:"file",pattern:"manage.py"},{type:"file",pattern:"settings.py"}]},{name:"Flask",slug:"flask",category:"backend",signals:[{type:"file",pattern:"app.py"}]},{name:"FastAPI",slug:"fastapi",category:"backend",signals:[{type:"file",pattern:"main.py"}]},{name:"Rails",slug:"rails",category:"backend",signals:[{type:"file",pattern:"Gemfile"},{type:"file",pattern:"config/routes.rb"}]},{name:"Spring Boot",slug:"spring",category:"backend",signals:[{type:"file",pattern:"pom.xml"},{type:"file",pattern:"build.gradle"}]},{name:"Prisma",slug:"prisma",category:"database",signals:[{type:"dependency",key:"prisma"},{type:"devDependency",key:"prisma"},{type:"file",pattern:"prisma/schema.prisma"}]},{name:"Drizzle",slug:"drizzle",category:"database",signals:[{type:"dependency",key:"drizzle-orm"},{type:"file",pattern:"drizzle.config.*"}]},{name:"TypeORM",slug:"typeorm",category:"database",signals:[{type:"dependency",key:"typeorm"}]},{name:"Mongoose",slug:"mongoose",category:"database",signals:[{type:"dependency",key:"mongoose"}]},{name:"Vite",slug:"vite",category:"build",signals:[{type:"dependency",key:"vite"},{type:"devDependency",key:"vite"},{type:"file",pattern:"vite.config.*"}]},{name:"webpack",slug:"webpack",category:"build",signals:[{type:"dependency",key:"webpack"},{type:"devDependency",key:"webpack"},{type:"file",pattern:"webpack.config.*"}]},{name:"esbuild",slug:"esbuild",category:"build",signals:[{type:"dependency",key:"esbuild"},{type:"devDependency",key:"esbuild"}]},{name:"Turbopack",slug:"turbopack",category:"build",signals:[{type:"file",pattern:"turbo.json"}]},{name:"Jest",slug:"jest",category:"testing",signals:[{type:"devDependency",key:"jest"},{type:"file",pattern:"jest.config.*"}]},{name:"Vitest",slug:"vitest",category:"testing",signals:[{type:"devDependency",key:"vitest"}]},{name:"Playwright",slug:"playwright",category:"testing",signals:[{type:"devDependency",key:"@playwright/test"},{type:"file",pattern:"playwright.config.*"}]},{name:"Cypress",slug:"cypress",category:"testing",signals:[{type:"devDependency",key:"cypress"},{type:"file",pattern:"cypress.config.*"}]},{name:"Turborepo",slug:"turborepo",category:"monorepo",signals:[{type:"devDependency",key:"turbo"},{type:"file",pattern:"turbo.json"}]},{name:"Nx",slug:"nx",category:"monorepo",signals:[{type:"devDependency",key:"nx"},{type:"file",pattern:"nx.json"}]},{name:"Lerna",slug:"lerna",category:"monorepo",signals:[{type:"devDependency",key:"lerna"},{type:"file",pattern:"lerna.json"}]},{name:"MCP SDK",slug:"mcp",category:"ai",signals:[{type:"dependency",key:"@modelcontextprotocol/sdk"}]},{name:"Anthropic SDK",slug:"anthropic",category:"ai",signals:[{type:"dependency",key:"@anthropic-ai/sdk"}]},{name:"OpenAI SDK",slug:"openai",category:"ai",signals:[{type:"dependency",key:"openai"}]},{name:"LangChain",slug:"langchain",category:"ai",signals:[{type:"dependency",key:"langchain"}]},{name:"Vercel",slug:"vercel",category:"hosting",signals:[{type:"file",pattern:"vercel.json"}]},{name:"Netlify",slug:"netlify",category:"hosting",signals:[{type:"file",pattern:"netlify.toml"}]},{name:"Docker",slug:"docker",category:"hosting",signals:[{type:"file",pattern:"Dockerfile"},{type:"file",pattern:"docker-compose.yml"}]},{name:"Cloudflare Workers",slug:"cloudflare",category:"hosting",signals:[{type:"file",pattern:"wrangler.toml"},{type:"dependency",key:"wrangler"}]},{name:"GitHub Actions",slug:"github-actions",category:"cicd",signals:[{type:"file",pattern:".github/workflows/*.yml"}]},{name:"Commander.js",slug:"commander",category:"cli",signals:[{type:"dependency",key:"commander"}]}];function LY($){let Z=M($,"Cargo.toml");if(!K(Z))return null;try{let X=Z0(Z,"utf-8").match(/^\s*\[package\][\s\S]*?^\s*name\s*=\s*"([^"]+)"/m);return X?X[1]:null}catch{return null}}function RY($){let Z=M($,"Cargo.toml");if(!K(Z))return!1;try{let U=Z0(Z,"utf-8");return/^\s*\[\[bin\]\]/m.test(U)}catch{return!1}}function MY($,Z){if(Z?.keywords?.some((X)=>/^sdk(?:\s|-|$)|-sdk$/i.test(X)))return'package.json keywords contains "sdk"';if(Z?.name&&/(?:^|[-_/])sdk(?:[-_/]|$)/i.test(Z.name))return`package.json name "${Z.name}" → sdk`;let U=LY($);if(U&&/(?:^|[-_])sdk(?:[-_]|$)/i.test(U))return`Cargo.toml name "${U}" → sdk`;return null}function KY($){let Z=["manifest.json","public/manifest.json","src/manifest.json","app/manifest.json","extension/manifest.json","dist/manifest.json"];for(let U of Z){let X=M($,U);if(!K(X))continue;try{let Q=JSON.parse(Z0(X,"utf-8"));if(typeof Q.manifest_version==="number")return`${U} manifest_version ${Q.manifest_version} (browser extension)`}catch{}}return null}function FY($){let Z=/(numpy|pandas|jupyter|scikit-learn|sklearn|pytorch|tensorflow|matplotlib|scipy)/i,U=M($,"pyproject.toml");if(K(U))try{let z=Z0(U,"utf-8").match(Z);if(z)return`pyproject.toml depends on ${z[1]}`}catch{}let X=M($,"requirements.txt");if(K(X))try{let z=Z0(X,"utf-8").match(Z);if(z)return`requirements.txt contains ${z[1]}`}catch{}return null}function PY($,Z){let U=["react-native","expo","@capacitor/core","@ionic/core"];if(Z){for(let X of U)if(Z.dependencies?.[X]||Z.devDependencies?.[X])return`${X} dependency`}if(K(M($,"ios"))&&K(M($,"android")))return"ios/ + android/ dirs";return null}function AY($,Z){let U=M($,"Cargo.toml");if(K(U))try{let Q=Z0(U,"utf-8");if(/crate-type\s*=\s*\[[^\]]*"cdylib"/.test(Q))return'Cargo.toml crate-type = ["cdylib"]';if(/wasm-bindgen|wasm-pack/i.test(Q))return"Cargo.toml wasm-bindgen/wasm-pack"}catch{}let X=M($,"build.zig");if(K(X))try{let Q=Z0(X,"utf-8");if(/\.wasm\b|wasm32|setOutputFormat\(\.wasm/i.test(Q))return"build.zig wasm target"}catch{}if(Z?.keywords?.some((Q)=>/^wasm(?:-|$)|webassembly/i.test(Q)))return'package.json keywords contains "wasm"';return null}function TY($,Z){if(!K(M($,"index.html")))return null;if(Z?.dependencies||Z?.devDependencies){let U={...Z.dependencies??{},...Z.devDependencies??{}};if(["react","vue","svelte","@sveltejs/kit","next","nuxt","astro","gatsby","solid-js","qwik"].some((Q)=>U[Q]))return null}return"index.html (vanilla, no frontend framework)"}function NY($,Z){if(Z?.name&&/specification|^@.*\/spec/i.test(Z.name))return`package name "${Z.name}" → documentation`;if(Z?.keywords?.some((U)=>/^(specification|format-spec|standard)$/i.test(U)))return'package keywords contains "specification"';if(Z?.bin)return null;if(Z?.files&&Z.files.length>0){let U=/^(dist|src|lib|build|bin)(\/|$)|\/(dist|src|lib|build|bin)(\/|$)|(\.|\/)(js|ts|tsx|jsx|mjs|cjs|py|rs|go)$/,X=Z.files.some((z)=>U.test(z)),Q=Z.files.some((z)=>/\.(md|MD)$|examples?\//.test(z)||z==="README.md"||z==="docs"||z==="docs/");if(!X&&Q)return"package.json files = docs/examples only (no source)"}return null}function wY($,Z,U){let X=U.find((Q)=>Q.slug==="astro"||Q.slug==="gatsby");if(X)return`${X.name} (static-site framework)`;if(Z?.keywords?.some((Q)=>/^(website|marketing|landing|brochure|portfolio)$/i.test(Q)))return'package keywords contains "website"/"marketing"/"landing"';return null}function CY($,Z){if(!Z)return null;let U={...Z.dependencies??{},...Z.devDependencies??{}},X=["@clerk/nextjs","@clerk/clerk-react","next-auth","@auth/core","auth0","@auth0/nextjs-auth0"],Q=["stripe","@stripe/stripe-js","lemonsqueezy"],z=X.some((H)=>U[H]),J=Q.some((H)=>U[H]);if(z&&J)return"auth + payment dependencies";return null}function bY($,Z,U){if(Z?.keywords?.some((z)=>/mcpaas/i.test(z)))return'package keywords contains "mcpaas"';if(Z?.name&&/mcpaas/i.test(Z.name))return`package name "${Z.name}" → mcpaas`;let X=U.some((z)=>z.slug==="mcp"),Q=U.some((z)=>z.category==="database");if(X&&Q&&Z?.dependencies&&Object.keys(Z.dependencies).length>10)return"MCP + database + complex deps (platform shape)";return null}function SY($,Z){if(!Z?.private)return null;if(!(!!Z.workspaces||K(M($,"pnpm-workspace.yaml"))))return null;return"private workspace + multi-package"}function T0($){let Z=M($,"package.json");if(!K(Z))return null;try{return JSON.parse(Z0(Z,"utf-8"))}catch{return null}}function EY($,Z){if(!Z.includes("*"))return K(M($,Z));let U=Z.split("/");if(U.length===1){let H=Z.split("*")[0];try{return b9($).some((q)=>q.startsWith(H))}catch{return!1}}let X=M($,...U.slice(0,-1)),Q=U[U.length-1],z=Q.split("*")[0],J=Q.split("*")[1]||"";try{return b9(X).some((H)=>H.startsWith(z)&&H.endsWith(J))}catch{return!1}}function jY($,Z,U){switch($.type){case"dependency":return!!Z?.dependencies?.[$.key];case"devDependency":return!!Z?.devDependencies?.[$.key];case"file":return EY(U,$.pattern);default:return!1}}function B3($){let Z=T0($);return C9.map((U)=>{let Q=U.signals.filter((z)=>jY(z,Z,$)).length/U.signals.length;return{name:U.name,slug:U.slug,category:U.category,confidence:Q}}).filter((U)=>U.confidence>0).sort((U,X)=>X.confidence-U.confidence)}function S9($){let Z=T0($);if(Z?.devDependencies?.typescript||Z?.dependencies?.typescript)return"TypeScript";if(K(M($,"tsconfig.json")))return"TypeScript";if(K(M($,"Cargo.toml")))return"Rust";if(K(M($,"go.mod")))return"Go";if(A1($).length>0)return"C#";if(K(M($,"pyproject.toml"))||K(M($,"setup.py")))return"Python";if(K(M($,"Gemfile")))return"Ruby";if(q3($)){let U=w1($);if(U)return U.mainLanguage==="Java/Kotlin"?"Kotlin":U.mainLanguage;return"Java"}if(K(M($,"Package.swift")))return"Swift";if(K(M($,"build.zig")))return"Zig";if(K(M($,"pubspec.yaml")))return"Dart";if(Z)return"JavaScript";return"Unknown"}function E9($){let Z=T0($),U=B3($),X=[],Q=NY($,Z);if(Q)return X.push(Q),{type:"documentation",found:X};let z=MY($,Z);if(z)return X.push(z),{type:"sdk",found:X};let J=KY($);if(J)return X.push(J),{type:"extension",found:X};let H=bY($,Z,U);if(H)return X.push(H),{type:"mcpaas",found:X};let q=CY($,Z);if(q)return X.push(q),{type:"saas",found:X};let Y=AY($,Z);if(Y)return X.push(Y),{type:"wasm",found:X};let G=T$($);if(G)return X.push(G.found),{type:G.appType,found:X};let _=C$($);if(_)return X.push(_.found),{type:_.appType,found:X};let B=S$($);if(B)return X.push(B.found),{type:B.appType,found:X};let O=w1($);if(O)return X.push(O.found),{type:O.appType,found:X};let D=PY($,Z);if(D)return X.push(D),{type:"mobile",found:X};if(U.some((S)=>S.slug==="mcp"))return X.push("MCP SDK signal"),{type:"mcp",found:X};if(Z?.bin)return X.push("package.json bin"),{type:"cli",found:X};if(RY($))return X.push("Cargo.toml [[bin]]"),{type:"cli",found:X};if(K(M($,"build.zig"))){if(X.push("build.zig"),K(M($,"src/main.zig")))return X.push("src/main.zig"),{type:"cli",found:X};if(K(M($,"src/root.zig")))return X.push("src/root.zig"),{type:"library",found:X}}let W=U.some((S)=>S.slug==="svelte"||S.slug==="sveltekit");if(Z?.private===!0&&(K(M($,"pnpm-workspace.yaml"))||Z?.workspaces!==void 0)&&W)return X.push("private workspace","Svelte"),{type:"framework",found:X};if(W)return X.push("Svelte/SvelteKit"),{type:"svelte",found:X};let L=U.some((S)=>S.category==="frontend"),F=U.some((S)=>S.category==="backend");if(Z?.private&&(Z.workspaces||K(M($,"pnpm-workspace.yaml")))&&L&&F)return X.push("private workspace + frontend + backend frameworks"),{type:"enterprise",found:X};let A=SY($,Z);if(A)return X.push(A),{type:"monorepo-root",found:X};let T=wY($,Z,U);if(T)return X.push(T),{type:"website",found:X};if(U.some((S)=>S.slug==="nextjs"||S.slug==="nuxt"))return X.push(U.find((S)=>S.slug==="nextjs")?"Next.js":"Nuxt"),{type:"fullstack",found:X};let b=U.some((S)=>S.category==="frontend"),P=U.some((S)=>S.category==="backend");if(b&&P)return X.push("frontend framework","backend framework"),{type:"fullstack",found:X};if(b)return X.push("frontend framework"),{type:"frontend",found:X};if(P)return X.push("backend framework"),{type:"backend",found:X};let w=FY($);if(w)return X.push(w),{type:"data-science",found:X};let v=TY($,Z);if(v)return X.push(v),{type:"html",found:X};if(Z?.main&&!Z?.bin)return X.push("package.json main (no bin)"),{type:"library",found:X};return X.push("no classifying signals — fallback"),{type:"library",found:X}}function j9($){if(K(M($,"bunfig.toml")))return"Bun";if(K(M($,"deno.json"))||K(M($,"deno.jsonc")))return"Deno";if(T0($))return"Node.js";if(K(M($,"Cargo.toml")))return"Rust";if(K(M($,"go.mod")))return"Go";if(A1($).length>0)return".NET";if(K(M($,"pubspec.yaml")))return"Dart";return"Unknown"}function g9($){if(K(M($,"pubspec.yaml")))return"pub";if(K(M($,"go.mod")))return"go modules";if(A1($).length>0)return"NuGet";if(K(M($,"pom.xml")))return"maven";if(K(M($,"build.gradle"))||K(M($,"build.gradle.kts"))||K(M($,"settings.gradle"))||K(M($,"settings.gradle.kts")))return"gradle";if(K(M($,"bun.lockb"))||K(M($,"bun.lock")))return"bun";if(K(M($,"pnpm-lock.yaml")))return"pnpm";if(K(M($,"yarn.lock")))return"yarn";if(K(M($,"package-lock.json")))return"npm";return"npm"}function x9($){if(K(M($,".github/workflows")))return"GitHub Actions";if(K(M($,".gitlab-ci.yml")))return"GitLab CI";if(K(M($,".circleci")))return"CircleCI";if(K(M($,"Jenkinsfile")))return"Jenkins";return null}function h9($){if(K(M($,"vercel.json")))return"Vercel";if(K(M($,"netlify.toml")))return"Netlify";if(K(M($,"wrangler.toml")))return"Cloudflare";if(K(M($,"Dockerfile")))return"Docker";if(K(M($,"fly.toml")))return"Fly.io";if(K(M($,"render.yaml")))return"Render";return null}function y9($){let Z=M($,"svelte.config.js");if(!K(Z))return null;try{let X=Z0(Z,"utf-8").match(/@sveltejs\/adapter-(\w+)/);if(X){let Q=X[1];switch(Q){case"vercel":return"Vercel";case"node":return"Node";case"static":return"Static";case"cloudflare":return"Cloudflare";case"netlify":return"Netlify";case"auto":return"Auto";default:return Q}}return null}catch{return null}}function f9($){let Z=T0($);if(Z?.devDependencies?.vite||Z?.dependencies?.vite)return"Vite";if(Z?.devDependencies?.webpack||Z?.dependencies?.webpack)return"webpack";if(Z?.devDependencies?.esbuild||Z?.dependencies?.esbuild)return"esbuild";if(K(M($,"tsconfig.json"))&&Z?.devDependencies?.typescript)return"TypeScript (tsc)";return null}function u9($){return["package.json","Cargo.toml","pyproject.toml","go.mod","build.zig","build.zig.zon","src/index.ts","src/index.js","src/main.ts","src/cli.ts","src/main.rs","src/lib.rs","src/main.zig","src/root.zig","src/__init__.py","main.py","__main__.py","main.go","cmd/main.go","README.md","SPECIFICATION.md","BINARY-FORMAT.md","tsconfig.json","wrangler.toml","vercel.json"].filter((U)=>K(M($,U)))}function k9($,Z){let U={};if(Z?.scripts){for(let X of["build","test","lint","dev","start"])if(Z.scripts[X]){let Q=K(M($,"bun.lock"))||K(M($,"bun.lockb"))?"bun run":"npm run";U[X]=`${Q} ${X}`}}if(K(M($,"Cargo.toml"))){if(!U.build)U.build="cargo build --release";if(!U.test)U.test="cargo test";if(!U.lint)U.lint="cargo clippy"}if(K(M($,"build.zig"))){if(!U.build)U.build="zig build";if(!U.test)U.test="zig build test"}if(K(M($,"go.mod"))){if(!U.build)U.build="go build ./...";if(!U.test)U.test="go test ./..."}if(K(M($,"pyproject.toml"))||K(M($,"pytest.ini"))){if(!U.test)U.test="pytest"}return U}function v9($,Z,U,X){let Q=[];if(X&&X!=="Unknown")Q.push(X);let z=new Set(["frontend","backend","database","build","css","state","monorepo"]);for(let J of U)if(z.has(J.category))Q.push(J.name);if(K(M($,"bunfig.toml")))Q.push("Bun");else if(K(M($,"deno.json"))||K(M($,"deno.jsonc")))Q.push("Deno");if(Q.length<3&&Z?.dependencies){let J=Object.keys(Z.dependencies).slice(0,5);for(let H of J)if(!Q.some((q)=>q.toLowerCase().includes(H.toLowerCase())))Q.push(H)}return Q}function m9($){let Z=T0($),U=B3($),X=S9($),Q=E9($),z=Q.type,J=j9($),H=g9($),q=x9($),Y=h9($),G=f9($),_=U.find((E)=>E.category==="frontend"),B=U.find((E)=>E.category==="css"),O=U.find((E)=>E.category==="ui"),D=U.find((E)=>E.category==="state"),V=U.find((E)=>E.category==="backend"),W=U.find((E)=>E.category==="database"),I=w0[z]||w0.library,L=z==="framework",F=U.some((E)=>E.slug==="svelte"||E.slug==="sveltekit"),A=L&&F?"svelte":L?null:null,T=z==="svelte"||A==="svelte",N=T?y9($):null,b=T&&U.some((E)=>E.slug==="sveltekit"),P=new Set(["css_framework","ui_library","database","connection","hosting"]),w={},v=y.filter((E)=>E.path.startsWith("stack."));for(let E of v){let j=E.path.replace("stack.","");if(!I.includes(E.category)){w[j]="slotignored";continue}if(L&&P.has(j)){w[j]="slotignored";continue}switch(j){case"frontend":w[j]=_?.name??(z==="cli"?"CLI":"");break;case"css_framework":w[j]=B?.name??"";break;case"ui_library":w[j]=O?.name??"";break;case"state_management":w[j]=T?D?.name??"Runes":D?.name??"";break;case"backend":w[j]=T?b?"SvelteKit":V?.name??"":V?.name??"";break;case"api_type":w[j]=b?"Server Routes":"";break;case"runtime":w[j]=J!=="Unknown"?J:"";break;case"database":w[j]=W?.name??"";break;case"connection":w[j]=W?.name??"";break;case"hosting":if(T&&N)w[j]=N;else w[j]=Y??"";break;case"build":w[j]=T?"Vite":G??"";break;case"cicd":w[j]=q??"";break;case"package_manager":w[j]=H;break;default:w[j]="";break}}let S={},g=y.filter((E)=>E.path.startsWith("monorepo."));for(let E of g){let j=E.path.replace("monorepo.","");if(!I.includes(E.category))S[j]="slotignored";else S[j]=""}let i0={name:Z?.name??$.split("/").pop()??"project",goal:Z?.description??"",main_language:X,type:z};if(L&&A)i0.framework=A;let W3=v9($,Z,U,X),D3=u9($),I3=k9($,Z),b1={faf_version:w9,project:i0,stack:w,human_context:{who:"",what:Z?.description??"",why:"",where:"",when:"",how:""},monorepo:S,_meta:{found:Q.found}};if(W3.length>0)b1.tech_stack=W3;if(D3.length>0)b1.key_files=D3;if(Object.keys(I3).length>0)b1.commands=I3;return b1}import{existsSync as xY,readFileSync as hY}from"fs";import{join as yY}from"path";var p9={MIN_LENGTH:8,MAX_LENGTH:280},gY=[/^(see|see\s+the?)\s+readme/i,/^(tbd|todo|fixme|coming\s+soon)\b/i,/^(software|application|app|project|tool|library|framework)\.?$/i,/^(for\s+users|for\s+developers)\.?$/i,/^(description|goal|name|title)\.?$/i,/^lorem\s+ipsum/i,/^example(\s+\w+)?\.?$/i];function r($){let Z=$.trim();if(Z.length<p9.MIN_LENGTH)return!1;if(Z.length>p9.MAX_LENGTH)return!1;if(gY.some((U)=>U.test(Z)))return!1;if(/^[\s|\-*+]/.test(Z))return!1;if(Z.split(`
|
|
219
|
+
`).replace(/<[^>]+>/g,"").replace(/!\[[^\]]*\]\([^)]*\)/g,"").trim()}function A0($){return $.replace(/\s+/g," ").replace(/[#*`>]/g,"").trim().slice(0,280)}function c0($,Z){let U=new RegExp(`##?\\s+(${Z})\\s*\\n+([\\s\\S]+?)(?:\\n\\n|\\n##?|$)`,"i"),X=$.match(U);return X&&X[2]&&X[2].trim().length>20?{body:A0(X[2]),heading:X[1].trim()}:null}function C1($,Z,U=30){for(let X of Z){let Q=$.match(X);if(Q&&Q[1]&&Q[1].trim().length>=U)return A0(Q[1])}return null}function VY($,Z){if($?.description&&$.description.length>20)return f(A0($.description),"package.json:description",0.95);let U=c0(Z,"Purpose|What|About|Overview|Description");if(U)return f(U.body,`README:## ${U.heading}`,0.8);let X=Z.split(/\n\s*\n/).map((z)=>z.trim()).find((z)=>z.length>30&&!z.startsWith("#"));if(X)return f(A0(X),"README:first-paragraph",0.5);let Q=C1(Z,[/(?:core|main|primary)\s+(?:problem|challenge)(?:\s+is)?\s*:?\s*([^.\n]{30,})/i,/solves?\s+(?:the\s+)?(?:problem\s+of\s+)?([^.\n]{30,})/i]);return Q?f(Q,"README:problem-heuristic",0.6):null}function OY($){let Z=c0($,"Audience|Who|Who is this for|Who it.s for");if(Z)return f(Z.body,`README:## ${Z.heading}`,0.8);let U=C1($,[/\b(?:designed|built|made)\s+for\s+((?:[a-z][a-z-]*\s+)?(?:developers?|teams?|engineers?|builders?|founders?)[^.\n]{0,80})/i,/\bfor\s+((?:[a-z][a-z-]*\s+)?(?:developers?|teams?|engineers?|builders?|founders?)[^.\n]{0,80})/i],8);return U?f(U,"README:audience-heuristic",0.6):null}function WY($){let Z=c0($,"Why|Mission|Motivation|Rationale|Vision");if(Z)return f(Z.body,`README:## ${Z.heading}`,0.8);let U=C1($,[/(?:our\s+|the\s+)?(?:mission|purpose|goal)\s+is\s+([^.\n]{30,})/i,/\b(?:mission|purpose|goal)\s*:\s*([^.\n]{30,})/i,/(?:built|created|designed)\s+(?:because|to)\s+([^.\n]{30,})/i]);return U?f(U,"README:mission-heuristic",0.6):null}function DY($,Z){let U=typeof $?.repository==="string"?$.repository:$?.repository?.url;if(U)return f(A0(U.replace(/^git\+/,"").replace(/\.git$/,"")),"package.json:repository",0.95);if($?.homepage)return f(A0($.homepage),"package.json:homepage",0.9);let X=C1(Z,[/\b(?:deployed|hosted|available|published)\s+(?:on|at|via)\s+([^.\n]{3,80})/i],3);return X?f(X,"README:deploy-heuristic",0.6):null}function IY($){let Z=c0($,"Timeline|Status|Release|Roadmap");if(Z)return f(Z.body,`README:## ${Z.heading}`,0.8);let U=C1($,[/\b(production\s+since\s+[^.\n]{4,60})/i,/\b((?:in\s+)?(?:production|beta|alpha|development)\s+since\s+[^.\n]{4,60})/i,/\bsince\s+((?:[A-Z][a-z]+\s+)?\d{4}[^.\n]{0,40})/],4);return U?f(U,"README:since-heuristic",0.6):null}function LY($,Z){let U=$?.scripts?Object.keys($.scripts):[],X=["start","dev","build"].filter((J)=>U.includes(J));if(X.length)return f(A0(X.map((J)=>`npm run ${J}`).join(", ")),"package.json:scripts",0.9);let Q=c0(Z,"Usage|Getting Started|Install|Installation|Quick Start");if(Q)return f(Q.body,`README:## ${Q.heading}`,0.8);let z=c0(Z,"Architecture|Approach|How it works|Methodology|How");return z?f(z.body,`README:## ${z.heading}`,0.7):null}var w9="3.0";import{existsSync as K,readFileSync as n,readdirSync as b9}from"fs";import{join as M}from"path";var C9=[{name:"Next.js",slug:"nextjs",category:"frontend",signals:[{type:"dependency",key:"next"},{type:"file",pattern:"next.config.*"}]},{name:"React",slug:"react",category:"frontend",signals:[{type:"dependency",key:"react"}]},{name:"SvelteKit",slug:"sveltekit",category:"frontend",signals:[{type:"dependency",key:"@sveltejs/kit"},{type:"file",pattern:"svelte.config.*"}]},{name:"Svelte",slug:"svelte",category:"frontend",signals:[{type:"dependency",key:"svelte"},{type:"devDependency",key:"svelte"}]},{name:"Vue.js",slug:"vue",category:"frontend",signals:[{type:"dependency",key:"vue"}]},{name:"Nuxt",slug:"nuxt",category:"frontend",signals:[{type:"dependency",key:"nuxt"},{type:"file",pattern:"nuxt.config.*"}]},{name:"Angular",slug:"angular",category:"frontend",signals:[{type:"dependency",key:"@angular/core"},{type:"file",pattern:"angular.json"}]},{name:"Astro",slug:"astro",category:"frontend",signals:[{type:"dependency",key:"astro"},{type:"file",pattern:"astro.config.*"}]},{name:"Solid",slug:"solid",category:"frontend",signals:[{type:"dependency",key:"solid-js"}]},{name:"Remix",slug:"remix",category:"frontend",signals:[{type:"dependency",key:"@remix-run/react"}]},{name:"Gatsby",slug:"gatsby",category:"frontend",signals:[{type:"dependency",key:"gatsby"},{type:"file",pattern:"gatsby-config.*"}]},{name:"Qwik",slug:"qwik",category:"frontend",signals:[{type:"dependency",key:"@builder.io/qwik"}]},{name:"Vercel (SvelteKit)",slug:"adapter-vercel",category:"hosting",signals:[{type:"dependency",key:"@sveltejs/adapter-vercel"},{type:"devDependency",key:"@sveltejs/adapter-vercel"}]},{name:"Node (SvelteKit)",slug:"adapter-node",category:"hosting",signals:[{type:"dependency",key:"@sveltejs/adapter-node"},{type:"devDependency",key:"@sveltejs/adapter-node"}]},{name:"Static (SvelteKit)",slug:"adapter-static",category:"hosting",signals:[{type:"dependency",key:"@sveltejs/adapter-static"},{type:"devDependency",key:"@sveltejs/adapter-static"}]},{name:"Cloudflare (SvelteKit)",slug:"adapter-cloudflare",category:"hosting",signals:[{type:"dependency",key:"@sveltejs/adapter-cloudflare"},{type:"devDependency",key:"@sveltejs/adapter-cloudflare"}]},{name:"Netlify (SvelteKit)",slug:"adapter-netlify",category:"hosting",signals:[{type:"dependency",key:"@sveltejs/adapter-netlify"},{type:"devDependency",key:"@sveltejs/adapter-netlify"}]},{name:"Tailwind CSS",slug:"tailwind",category:"css",signals:[{type:"dependency",key:"tailwindcss"},{type:"devDependency",key:"tailwindcss"},{type:"file",pattern:"tailwind.config.*"}]},{name:"Bootstrap",slug:"bootstrap",category:"css",signals:[{type:"dependency",key:"bootstrap"}]},{name:"Styled Components",slug:"styled-components",category:"css",signals:[{type:"dependency",key:"styled-components"}]},{name:"shadcn/ui",slug:"shadcn",category:"ui",signals:[{type:"file",pattern:"components.json"},{type:"dependency",key:"@radix-ui/react-dialog"}]},{name:"Material UI",slug:"mui",category:"ui",signals:[{type:"dependency",key:"@mui/material"}]},{name:"Chakra UI",slug:"chakra",category:"ui",signals:[{type:"dependency",key:"@chakra-ui/react"}]},{name:"Ant Design",slug:"antd",category:"ui",signals:[{type:"dependency",key:"antd"}]},{name:"Redux",slug:"redux",category:"state",signals:[{type:"dependency",key:"@reduxjs/toolkit"}]},{name:"Zustand",slug:"zustand",category:"state",signals:[{type:"dependency",key:"zustand"}]},{name:"Jotai",slug:"jotai",category:"state",signals:[{type:"dependency",key:"jotai"}]},{name:"Pinia",slug:"pinia",category:"state",signals:[{type:"dependency",key:"pinia"}]},{name:"Express",slug:"express",category:"backend",signals:[{type:"dependency",key:"express"}]},{name:"Fastify",slug:"fastify",category:"backend",signals:[{type:"dependency",key:"fastify"}]},{name:"Hono",slug:"hono",category:"backend",signals:[{type:"dependency",key:"hono"}]},{name:"Elysia",slug:"elysia",category:"backend",signals:[{type:"dependency",key:"elysia"}]},{name:"NestJS",slug:"nestjs",category:"backend",signals:[{type:"dependency",key:"@nestjs/core"}]},{name:"Koa",slug:"koa",category:"backend",signals:[{type:"dependency",key:"koa"}]},{name:"Django",slug:"django",category:"backend",signals:[{type:"file",pattern:"manage.py"},{type:"file",pattern:"settings.py"}]},{name:"Flask",slug:"flask",category:"backend",signals:[{type:"file",pattern:"app.py"}]},{name:"FastAPI",slug:"fastapi",category:"backend",signals:[{type:"file",pattern:"main.py"}]},{name:"Rails",slug:"rails",category:"backend",signals:[{type:"file",pattern:"Gemfile"},{type:"file",pattern:"config/routes.rb"}]},{name:"Spring Boot",slug:"spring",category:"backend",signals:[{type:"content",pattern:"pom.xml",key:"spring-boot"},{type:"content",pattern:"build.gradle",key:"springframework.boot"},{type:"content",pattern:"build.gradle.kts",key:"springframework.boot"},{type:"content",pattern:"gradle/libs.versions.toml",key:"springframework.boot"}]},{name:"Prisma",slug:"prisma",category:"database",signals:[{type:"dependency",key:"prisma"},{type:"devDependency",key:"prisma"},{type:"file",pattern:"prisma/schema.prisma"}]},{name:"Drizzle",slug:"drizzle",category:"database",signals:[{type:"dependency",key:"drizzle-orm"},{type:"file",pattern:"drizzle.config.*"}]},{name:"TypeORM",slug:"typeorm",category:"database",signals:[{type:"dependency",key:"typeorm"}]},{name:"Mongoose",slug:"mongoose",category:"database",signals:[{type:"dependency",key:"mongoose"}]},{name:"Vite",slug:"vite",category:"build",signals:[{type:"dependency",key:"vite"},{type:"devDependency",key:"vite"},{type:"file",pattern:"vite.config.*"}]},{name:"webpack",slug:"webpack",category:"build",signals:[{type:"dependency",key:"webpack"},{type:"devDependency",key:"webpack"},{type:"file",pattern:"webpack.config.*"}]},{name:"esbuild",slug:"esbuild",category:"build",signals:[{type:"dependency",key:"esbuild"},{type:"devDependency",key:"esbuild"}]},{name:"Turbopack",slug:"turbopack",category:"build",signals:[{type:"file",pattern:"turbo.json"}]},{name:"Jest",slug:"jest",category:"testing",signals:[{type:"devDependency",key:"jest"},{type:"file",pattern:"jest.config.*"}]},{name:"Vitest",slug:"vitest",category:"testing",signals:[{type:"devDependency",key:"vitest"}]},{name:"Playwright",slug:"playwright",category:"testing",signals:[{type:"devDependency",key:"@playwright/test"},{type:"file",pattern:"playwright.config.*"}]},{name:"Cypress",slug:"cypress",category:"testing",signals:[{type:"devDependency",key:"cypress"},{type:"file",pattern:"cypress.config.*"}]},{name:"Turborepo",slug:"turborepo",category:"monorepo",signals:[{type:"devDependency",key:"turbo"},{type:"file",pattern:"turbo.json"}]},{name:"Nx",slug:"nx",category:"monorepo",signals:[{type:"devDependency",key:"nx"},{type:"file",pattern:"nx.json"}]},{name:"Lerna",slug:"lerna",category:"monorepo",signals:[{type:"devDependency",key:"lerna"},{type:"file",pattern:"lerna.json"}]},{name:"MCP SDK",slug:"mcp",category:"ai",signals:[{type:"dependency",key:"@modelcontextprotocol/sdk"}]},{name:"Anthropic SDK",slug:"anthropic",category:"ai",signals:[{type:"dependency",key:"@anthropic-ai/sdk"}]},{name:"OpenAI SDK",slug:"openai",category:"ai",signals:[{type:"dependency",key:"openai"}]},{name:"LangChain",slug:"langchain",category:"ai",signals:[{type:"dependency",key:"langchain"}]},{name:"Vercel",slug:"vercel",category:"hosting",signals:[{type:"file",pattern:"vercel.json"}]},{name:"Netlify",slug:"netlify",category:"hosting",signals:[{type:"file",pattern:"netlify.toml"}]},{name:"Docker",slug:"docker",category:"hosting",signals:[{type:"file",pattern:"Dockerfile"},{type:"file",pattern:"docker-compose.yml"}]},{name:"Cloudflare Workers",slug:"cloudflare",category:"hosting",signals:[{type:"file",pattern:"wrangler.toml"},{type:"dependency",key:"wrangler"}]},{name:"GitHub Actions",slug:"github-actions",category:"cicd",signals:[{type:"file",pattern:".github/workflows/*.yml"}]},{name:"Commander.js",slug:"commander",category:"cli",signals:[{type:"dependency",key:"commander"}]}];function RY($){let Z=M($,"Cargo.toml");if(!K(Z))return null;try{let X=n(Z,"utf-8").match(/^\s*\[package\][\s\S]*?^\s*name\s*=\s*"([^"]+)"/m);return X?X[1]:null}catch{return null}}function MY($){let Z=M($,"Cargo.toml");if(!K(Z))return!1;try{let U=n(Z,"utf-8");return/^\s*\[\[bin\]\]/m.test(U)}catch{return!1}}function KY($,Z){if(Z?.keywords?.some((X)=>/^sdk(?:\s|-|$)|-sdk$/i.test(X)))return'package.json keywords contains "sdk"';if(Z?.name&&/(?:^|[-_/])sdk(?:[-_/]|$)/i.test(Z.name))return`package.json name "${Z.name}" → sdk`;let U=RY($);if(U&&/(?:^|[-_])sdk(?:[-_]|$)/i.test(U))return`Cargo.toml name "${U}" → sdk`;return null}function FY($){let Z=["manifest.json","public/manifest.json","src/manifest.json","app/manifest.json","extension/manifest.json","dist/manifest.json"];for(let U of Z){let X=M($,U);if(!K(X))continue;try{let Q=JSON.parse(n(X,"utf-8"));if(typeof Q.manifest_version==="number")return`${U} manifest_version ${Q.manifest_version} (browser extension)`}catch{}}return null}function PY($){let Z=/(numpy|pandas|jupyter|scikit-learn|sklearn|pytorch|tensorflow|matplotlib|scipy)/i,U=M($,"pyproject.toml");if(K(U))try{let z=n(U,"utf-8").match(Z);if(z)return`pyproject.toml depends on ${z[1]}`}catch{}let X=M($,"requirements.txt");if(K(X))try{let z=n(X,"utf-8").match(Z);if(z)return`requirements.txt contains ${z[1]}`}catch{}return null}function AY($,Z){let U=["react-native","expo","@capacitor/core","@ionic/core"];if(Z){for(let X of U)if(Z.dependencies?.[X]||Z.devDependencies?.[X])return`${X} dependency`}if(K(M($,"ios"))&&K(M($,"android")))return"ios/ + android/ dirs";return null}function TY($,Z){let U=M($,"Cargo.toml");if(K(U))try{let Q=n(U,"utf-8");if(/crate-type\s*=\s*\[[^\]]*"cdylib"/.test(Q))return'Cargo.toml crate-type = ["cdylib"]';if(/wasm-bindgen|wasm-pack/i.test(Q))return"Cargo.toml wasm-bindgen/wasm-pack"}catch{}let X=M($,"build.zig");if(K(X))try{let Q=n(X,"utf-8");if(/\.wasm\b|wasm32|setOutputFormat\(\.wasm/i.test(Q))return"build.zig wasm target"}catch{}if(Z?.keywords?.some((Q)=>/^wasm(?:-|$)|webassembly/i.test(Q)))return'package.json keywords contains "wasm"';return null}function NY($,Z){if(!K(M($,"index.html")))return null;if(Z?.dependencies||Z?.devDependencies){let U={...Z.dependencies??{},...Z.devDependencies??{}};if(["react","vue","svelte","@sveltejs/kit","next","nuxt","astro","gatsby","solid-js","qwik"].some((Q)=>U[Q]))return null}return"index.html (vanilla, no frontend framework)"}function wY($,Z){if(Z?.name&&/specification|^@.*\/spec/i.test(Z.name))return`package name "${Z.name}" → documentation`;if(Z?.keywords?.some((U)=>/^(specification|format-spec|standard)$/i.test(U)))return'package keywords contains "specification"';if(Z?.bin)return null;if(Z?.files&&Z.files.length>0){let U=/^(dist|src|lib|build|bin)(\/|$)|\/(dist|src|lib|build|bin)(\/|$)|(\.|\/)(js|ts|tsx|jsx|mjs|cjs|py|rs|go)$/,X=Z.files.some((z)=>U.test(z)),Q=Z.files.some((z)=>/\.(md|MD)$|examples?\//.test(z)||z==="README.md"||z==="docs"||z==="docs/");if(!X&&Q)return"package.json files = docs/examples only (no source)"}return null}function CY($,Z,U){let X=U.find((Q)=>Q.slug==="astro"||Q.slug==="gatsby");if(X)return`${X.name} (static-site framework)`;if(Z?.keywords?.some((Q)=>/^(website|marketing|landing|brochure|portfolio)$/i.test(Q)))return'package keywords contains "website"/"marketing"/"landing"';return null}function bY($,Z){if(!Z)return null;let U={...Z.dependencies??{},...Z.devDependencies??{}},X=["@clerk/nextjs","@clerk/clerk-react","next-auth","@auth/core","auth0","@auth0/nextjs-auth0"],Q=["stripe","@stripe/stripe-js","lemonsqueezy"],z=X.some((H)=>U[H]),J=Q.some((H)=>U[H]);if(z&&J)return"auth + payment dependencies";return null}function SY($,Z,U){if(Z?.keywords?.some((z)=>/mcpaas/i.test(z)))return'package keywords contains "mcpaas"';if(Z?.name&&/mcpaas/i.test(Z.name))return`package name "${Z.name}" → mcpaas`;let X=U.some((z)=>z.slug==="mcp"),Q=U.some((z)=>z.category==="database");if(X&&Q&&Z?.dependencies&&Object.keys(Z.dependencies).length>10)return"MCP + database + complex deps (platform shape)";return null}function EY($,Z){if(!Z?.private)return null;if(!(!!Z.workspaces||K(M($,"pnpm-workspace.yaml"))))return null;return"private workspace + multi-package"}function T0($){let Z=M($,"package.json");if(!K(Z))return null;try{return JSON.parse(n(Z,"utf-8"))}catch{return null}}function S9($,Z){if(!Z.includes("*"))return K(M($,Z));let U=Z.split("/");if(U.length===1){let H=Z.split("*")[0];try{return b9($).some((q)=>q.startsWith(H))}catch{return!1}}let X=M($,...U.slice(0,-1)),Q=U[U.length-1],z=Q.split("*")[0],J=Q.split("*")[1]||"";try{return b9(X).some((H)=>H.startsWith(z)&&H.endsWith(J))}catch{return!1}}function jY($,Z,U){switch($.type){case"dependency":return!!Z?.dependencies?.[$.key];case"devDependency":return!!Z?.devDependencies?.[$.key];case"file":return S9(U,$.pattern);case"content":{if(!$.pattern||!$.key)return!1;if(!S9(U,$.pattern))return!1;try{let X=M(U,$.pattern);if(!K(X))return!1;return n(X,"utf-8").toLowerCase().includes($.key.toLowerCase())}catch{return!1}}default:return!1}}function B3($){let Z=T0($);return C9.map((U)=>{let Q=U.signals.filter((z)=>jY(z,Z,$)).length/U.signals.length;return{name:U.name,slug:U.slug,category:U.category,confidence:Q}}).filter((U)=>U.confidence>0).sort((U,X)=>X.confidence-U.confidence)}function E9($){let Z=T0($);if(Z?.devDependencies?.typescript||Z?.dependencies?.typescript)return"TypeScript";if(K(M($,"tsconfig.json")))return"TypeScript";if(K(M($,"Cargo.toml")))return"Rust";if(K(M($,"go.mod")))return"Go";if(A1($).length>0)return"C#";if(K(M($,"pyproject.toml"))||K(M($,"setup.py")))return"Python";if(K(M($,"Gemfile")))return"Ruby";if(q3($)){let U=w1($);if(U)return U.mainLanguage==="Java/Kotlin"?"Kotlin":U.mainLanguage;return"Java"}if(K(M($,"Package.swift")))return"Swift";if(K(M($,"build.zig")))return"Zig";if(K(M($,"pubspec.yaml")))return"Dart";if(Z)return"JavaScript";return"Unknown"}function j9($){let Z=T0($),U=B3($),X=[],Q=wY($,Z);if(Q)return X.push(Q),{type:"documentation",found:X};let z=KY($,Z);if(z)return X.push(z),{type:"sdk",found:X};let J=FY($);if(J)return X.push(J),{type:"extension",found:X};let H=SY($,Z,U);if(H)return X.push(H),{type:"mcpaas",found:X};let q=bY($,Z);if(q)return X.push(q),{type:"saas",found:X};let Y=TY($,Z);if(Y)return X.push(Y),{type:"wasm",found:X};let G=T$($);if(G)return X.push(G.found),{type:G.appType,found:X};let _=C$($);if(_)return X.push(_.found),{type:_.appType,found:X};let B=S$($);if(B)return X.push(B.found),{type:B.appType,found:X};let O=w1($);if(O)return X.push(O.found),{type:O.appType,found:X};let D=AY($,Z);if(D)return X.push(D),{type:"mobile",found:X};if(U.some((S)=>S.slug==="mcp"))return X.push("MCP SDK signal"),{type:"mcp",found:X};if(Z?.bin)return X.push("package.json bin"),{type:"cli",found:X};if(MY($))return X.push("Cargo.toml [[bin]]"),{type:"cli",found:X};if(K(M($,"build.zig"))){if(X.push("build.zig"),K(M($,"src/main.zig")))return X.push("src/main.zig"),{type:"cli",found:X};if(K(M($,"src/root.zig")))return X.push("src/root.zig"),{type:"library",found:X}}let W=U.some((S)=>S.slug==="svelte"||S.slug==="sveltekit");if(Z?.private===!0&&(K(M($,"pnpm-workspace.yaml"))||Z?.workspaces!==void 0)&&W)return X.push("private workspace","Svelte"),{type:"framework",found:X};if(W)return X.push("Svelte/SvelteKit"),{type:"svelte",found:X};let L=U.some((S)=>S.category==="frontend"),F=U.some((S)=>S.category==="backend");if(Z?.private&&(Z.workspaces||K(M($,"pnpm-workspace.yaml")))&&L&&F)return X.push("private workspace + frontend + backend frameworks"),{type:"enterprise",found:X};let A=EY($,Z);if(A)return X.push(A),{type:"monorepo-root",found:X};let T=CY($,Z,U);if(T)return X.push(T),{type:"website",found:X};if(U.some((S)=>S.slug==="nextjs"||S.slug==="nuxt"))return X.push(U.find((S)=>S.slug==="nextjs")?"Next.js":"Nuxt"),{type:"fullstack",found:X};let b=U.some((S)=>S.category==="frontend"),P=U.some((S)=>S.category==="backend");if(b&&P)return X.push("frontend framework","backend framework"),{type:"fullstack",found:X};if(b)return X.push("frontend framework"),{type:"frontend",found:X};if(P)return X.push("backend framework"),{type:"backend",found:X};let w=PY($);if(w)return X.push(w),{type:"data-science",found:X};let v=NY($,Z);if(v)return X.push(v),{type:"html",found:X};if(Z?.main&&!Z?.bin)return X.push("package.json main (no bin)"),{type:"library",found:X};return X.push("no classifying signals — fallback"),{type:"library",found:X}}function g9($){if(K(M($,"bunfig.toml")))return"Bun";if(K(M($,"deno.json"))||K(M($,"deno.jsonc")))return"Deno";if(T0($))return"Node.js";if(K(M($,"Cargo.toml")))return"Rust";if(K(M($,"go.mod")))return"Go";if(A1($).length>0)return".NET";if(K(M($,"pubspec.yaml")))return"Dart";return"Unknown"}function x9($){if(K(M($,"pubspec.yaml")))return"pub";if(K(M($,"go.mod")))return"go modules";if(A1($).length>0)return"NuGet";if(K(M($,"pom.xml")))return"maven";if(K(M($,"build.gradle"))||K(M($,"build.gradle.kts"))||K(M($,"settings.gradle"))||K(M($,"settings.gradle.kts")))return"gradle";if(K(M($,"bun.lockb"))||K(M($,"bun.lock")))return"bun";if(K(M($,"pnpm-lock.yaml")))return"pnpm";if(K(M($,"yarn.lock")))return"yarn";if(K(M($,"package-lock.json")))return"npm";return"npm"}function h9($){if(K(M($,".github/workflows")))return"GitHub Actions";if(K(M($,".gitlab-ci.yml")))return"GitLab CI";if(K(M($,".circleci")))return"CircleCI";if(K(M($,"Jenkinsfile")))return"Jenkins";return null}function y9($){if(K(M($,"vercel.json")))return"Vercel";if(K(M($,"netlify.toml")))return"Netlify";if(K(M($,"wrangler.toml")))return"Cloudflare";if(K(M($,"Dockerfile")))return"Docker";if(K(M($,"fly.toml")))return"Fly.io";if(K(M($,"render.yaml")))return"Render";return null}function f9($){let Z=M($,"svelte.config.js");if(!K(Z))return null;try{let X=n(Z,"utf-8").match(/@sveltejs\/adapter-(\w+)/);if(X){let Q=X[1];switch(Q){case"vercel":return"Vercel";case"node":return"Node";case"static":return"Static";case"cloudflare":return"Cloudflare";case"netlify":return"Netlify";case"auto":return"Auto";default:return Q}}return null}catch{return null}}function u9($){let Z=T0($);if(Z?.devDependencies?.vite||Z?.dependencies?.vite)return"Vite";if(Z?.devDependencies?.webpack||Z?.dependencies?.webpack)return"webpack";if(Z?.devDependencies?.esbuild||Z?.dependencies?.esbuild)return"esbuild";if(K(M($,"tsconfig.json"))&&Z?.devDependencies?.typescript)return"TypeScript (tsc)";return null}function k9($){return["package.json","Cargo.toml","pyproject.toml","go.mod","build.zig","build.zig.zon","src/index.ts","src/index.js","src/main.ts","src/cli.ts","src/main.rs","src/lib.rs","src/main.zig","src/root.zig","src/__init__.py","main.py","__main__.py","main.go","cmd/main.go","README.md","SPECIFICATION.md","BINARY-FORMAT.md","tsconfig.json","wrangler.toml","vercel.json"].filter((U)=>K(M($,U)))}function v9($,Z){let U={};if(Z?.scripts){for(let X of["build","test","lint","dev","start"])if(Z.scripts[X]){let Q=K(M($,"bun.lock"))||K(M($,"bun.lockb"))?"bun run":"npm run";U[X]=`${Q} ${X}`}}if(K(M($,"Cargo.toml"))){if(!U.build)U.build="cargo build --release";if(!U.test)U.test="cargo test";if(!U.lint)U.lint="cargo clippy"}if(K(M($,"build.zig"))){if(!U.build)U.build="zig build";if(!U.test)U.test="zig build test"}if(K(M($,"go.mod"))){if(!U.build)U.build="go build ./...";if(!U.test)U.test="go test ./..."}if(K(M($,"pyproject.toml"))||K(M($,"pytest.ini"))){if(!U.test)U.test="pytest"}return U}function m9($,Z,U,X){let Q=[];if(X&&X!=="Unknown")Q.push(X);let z=new Set(["frontend","backend","database","build","css","state","monorepo"]);for(let J of U)if(z.has(J.category))Q.push(J.name);if(K(M($,"bunfig.toml")))Q.push("Bun");else if(K(M($,"deno.json"))||K(M($,"deno.jsonc")))Q.push("Deno");if(Q.length<3&&Z?.dependencies){let J=Object.keys(Z.dependencies).slice(0,5);for(let H of J)if(!Q.some((q)=>q.toLowerCase().includes(H.toLowerCase())))Q.push(H)}return Q}function p9($){let Z=T0($),U=B3($),X=E9($),Q=j9($),z=Q.type,J=g9($),H=x9($),q=h9($),Y=y9($),G=u9($),_=U.find((E)=>E.category==="frontend"),B=U.find((E)=>E.category==="css"),O=U.find((E)=>E.category==="ui"),D=U.find((E)=>E.category==="state"),V=U.find((E)=>E.category==="backend"),W=U.find((E)=>E.category==="database"),I=w0[z]||w0.library,L=z==="framework",F=U.some((E)=>E.slug==="svelte"||E.slug==="sveltekit"),A=L&&F?"svelte":L?null:null,T=z==="svelte"||A==="svelte",N=T?f9($):null,b=T&&U.some((E)=>E.slug==="sveltekit"),P=new Set(["css_framework","ui_library","database","connection","hosting"]),w={},v=y.filter((E)=>E.path.startsWith("stack."));for(let E of v){let j=E.path.replace("stack.","");if(!I.includes(E.category)){w[j]="slotignored";continue}if(L&&P.has(j)){w[j]="slotignored";continue}switch(j){case"frontend":w[j]=_?.name??(z==="cli"?"CLI":"");break;case"css_framework":w[j]=B?.name??"";break;case"ui_library":w[j]=O?.name??"";break;case"state_management":w[j]=T?D?.name??"Runes":D?.name??"";break;case"backend":w[j]=T?b?"SvelteKit":V?.name??"":V?.name??"";break;case"api_type":w[j]=b?"Server Routes":"";break;case"runtime":w[j]=J!=="Unknown"?J:"";break;case"database":w[j]=W?.name??"";break;case"connection":w[j]=W?.name??"";break;case"hosting":if(T&&N)w[j]=N;else w[j]=Y??"";break;case"build":w[j]=T?"Vite":G??"";break;case"cicd":w[j]=q??"";break;case"package_manager":w[j]=H;break;default:w[j]="";break}}let S={},g=y.filter((E)=>E.path.startsWith("monorepo."));for(let E of g){let j=E.path.replace("monorepo.","");if(!I.includes(E.category))S[j]="slotignored";else S[j]=""}let i0={name:Z?.name??$.split("/").pop()??"project",goal:Z?.description??"",main_language:X,type:z};if(L&&A)i0.framework=A;let W3=m9($,Z,U,X),D3=k9($),I3=v9($,Z),b1={faf_version:w9,project:i0,stack:w,human_context:{who:"",what:Z?.description??"",why:"",where:"",when:"",how:""},monorepo:S,_meta:{found:Q.found}};if(W3.length>0)b1.tech_stack=W3;if(D3.length>0)b1.key_files=D3;if(Object.keys(I3).length>0)b1.commands=I3;return b1}import{existsSync as xY,readFileSync as hY}from"fs";import{join as yY}from"path";var l9={MIN_LENGTH:8,MAX_LENGTH:280},gY=[/^(see|see\s+the?)\s+readme/i,/^(tbd|todo|fixme|coming\s+soon)\b/i,/^(software|application|app|project|tool|library|framework)\.?$/i,/^(for\s+users|for\s+developers)\.?$/i,/^(description|goal|name|title)\.?$/i,/^lorem\s+ipsum/i,/^example(\s+\w+)?\.?$/i];function r($){let Z=$.trim();if(Z.length<l9.MIN_LENGTH)return!1;if(Z.length>l9.MAX_LENGTH)return!1;if(gY.some((U)=>U.test(Z)))return!1;if(/^[\s|\-*+]/.test(Z))return!1;if(Z.split(`
|
|
220
220
|
`).length>4)return!1;return!0}function fY($){let Z=$.split(`
|
|
221
221
|
`),U=0;while(U<Z.length&&/^(#\s|$)/.test(Z[U].trim()))U++;while(U<Z.length){let X=Z[U].trim();if(/^\[!\[/.test(X)){U++;continue}if(/^!\[/.test(X)){U++;continue}if(/^<img\s/i.test(X)){U++;continue}if(X===""){U++;continue}break}return Z.slice(U).join(`
|
|
222
222
|
`)}function uY($){let U=fY($).split(`
|
|
223
223
|
`),X=[];for(let Q of U){let z=Q.trim();if(z===""){if(X.length>0)break;continue}if(/^(#|>|```|---|\||\s*[-*+]\s|\d+\.\s)/.test(z))break;if(/^\*\*[^*]+\*\*\s*$/.test(z)&&X.length===0)continue;X.push(z)}if(X.length===0)return null;return X.join(" ").trim()}function N0($,Z){let U=$.split(`
|
|
224
224
|
`),X=0;while(X<U.length){let z=U[X].trim().match(/^(#{1,6})\s+(.+)$/);if(z&&Z.test(z[2])){let J=z[1].length,H=[];X++;while(X<U.length){let q=U[X].trim(),Y=q.match(/^(#{1,6})\s+/);if(Y&&Y[1].length<=J)break;if(q===""){if(H.length>0)break;X++;continue}if(/^(>|```|---|\||\s*[-*+]\s|\d+\.\s)/.test(q))break;H.push(q),X++}if(H.length===0)return null;return H.join(" ").trim()}X++}return null}function kY($){let Z=N0($,/^(use\s+cases?|goal)\b/i);if(Z&&r(Z))return Z;let U=uY($);if(U&&r(U))return U;return}function vY($){let Z=N0($,/^(about|description|overview|what(\s+is\s+this)?)\b/i);if(Z&&r(Z))return Z;return}function mY($){let Z=N0($,/^(audience|users?|for\s+whom|who(\s+is\s+this\s+for)?)\b/i);if(Z&&r(Z))return Z;return}function pY($){let Z=N0($,/^(why|motivation|problem|rationale)\b/i);if(Z&&r(Z))return Z;return}function lY($){let Z=N0($,/^(deployment|where(\s+it\s+runs)?|hosting)\b/i);if(Z&&r(Z))return Z;return}function dY($){let Z=N0($,/^(status|history|timeline|since|launched)\b/i);if(Z&&r(Z))return Z;return}function cY($){let Z=N0($,/^(architecture|how(\s+it\s+works)?|approach|design)\b/i);if(Z&&r(Z))return Z;return}function V3($){let Z=["README.md","README.MD","Readme.md","readme.md"],U=null;for(let O of Z){let D=yY($,O);if(xY(D)){U=D;break}}if(!U)return{};let X;try{X=hY(U,"utf-8")}catch{return{}}let Q={},z=kY(X);if(z)Q.project={goal:z};let J={},H=vY(X);if(H)J.what=H;let q=mY(X);if(q)J.who=q;let Y=pY(X);if(Y)J.why=Y;let G=lY(X);if(G)J.where=G;let _=dY(X);if(_)J.when=_;let B=cY(X);if(B)J.how=B;if(Object.keys(J).length>0)Q.human_context=J;return Q}import{existsSync as iY,readFileSync as rY}from"fs";import{join as sY}from"path";function aY($,Z){let U=$.split(`
|
|
225
|
-
`),X=!1;for(let Q of U){let z=Q.trim();if(/^\[/.test(z)){X=z==="[package]";continue}if(!X)continue;let J=z.match(new RegExp(`^${Z}\\s*=\\s*(.+)$`));if(J){let H=J[1].trim();H=H.replace(/\s*#.*$/,"").trim();let q=H.match(/^"((?:[^"\\]|\\.)*)"$/)||H.match(/^'((?:[^'\\]|\\.)*)'$/);if(q)return q[1];return H}}return null}function O3($){let Z=sY($,"Cargo.toml");if(!iY(Z))return{};let U;try{U=rY(Z,"utf-8")}catch{return{}}let X=aY(U,"description");if(X&&r(X))return{project:{goal:X}};return{}}function nY($,Z){let U={project:{...Z.project??{},...$.project??{}},human_context:{...Z.human_context??{},...$.human_context??{}}};if(U.project&&Object.keys(U.project).length===0)delete U.project;if(U.human_context&&Object.keys(U.human_context).length===0)delete U.human_context;return U}function
|
|
225
|
+
`),X=!1;for(let Q of U){let z=Q.trim();if(/^\[/.test(z)){X=z==="[package]";continue}if(!X)continue;let J=z.match(new RegExp(`^${Z}\\s*=\\s*(.+)$`));if(J){let H=J[1].trim();H=H.replace(/\s*#.*$/,"").trim();let q=H.match(/^"((?:[^"\\]|\\.)*)"$/)||H.match(/^'((?:[^'\\]|\\.)*)'$/);if(q)return q[1];return H}}return null}function O3($){let Z=sY($,"Cargo.toml");if(!iY(Z))return{};let U;try{U=rY(Z,"utf-8")}catch{return{}}let X=aY(U,"description");if(X&&r(X))return{project:{goal:X}};return{}}function nY($,Z){let U={project:{...Z.project??{},...$.project??{}},human_context:{...Z.human_context??{},...$.human_context??{}}};if(U.project&&Object.keys(U.project).length===0)delete U.project;if(U.human_context&&Object.keys(U.human_context).length===0)delete U.human_context;return U}function d9($){return nY(V3($),O3($))}function oY($){let Z=p9($),U=d9($),X=E$(Z,U);tY(X);let Q=E$(X,G3($));return E$(Q,{human_context:_3($)})}function tY($){let Z=$.project?.type??"library",U=w0[Z]||w0.library;for(let X of y){if(U.includes(X.category))continue;let[Q,z]=X.path.split(".");if(Q==="stack"&&$.stack)$.stack[z]="slotignored";if(Q==="monorepo"&&$.monorepo)$.monorepo[z]="slotignored"}}function E$($,Z){let U={...$};for(let[X,Q]of Object.entries(Z)){let z=U[X];if(V0(z))U[X]=Q;else if(typeof Q==="object"&&Q!==null&&!Array.isArray(Q)&&typeof z==="object"&&z!==null&&!Array.isArray(z))U[X]=E$(z,Q)}return U}export{KH as writeServerCard,BH as writeProjectHtml,HZ as validateFaf,m0 as utcNow,G3 as turboCatSlots,K9 as turboCatScan,n9 as slotsByCategory,Z9 as seedSixWsFromGoal,f$ as scoreFafYaml,pH as runLoop,N9 as relentlessContextDetailed,_3 as relentlessContext,RH as registryName,LH as registryMeta,E6 as readFafRaw,XH as readFaf,Z3 as questionForSlot,rH as publicQuestions,A$ as normalizeAnswer,Q9 as loopVerdict,y$ as kernel,V0 as isPlaceholder,U9 as isHumanSlot,P$ as isEmptyValue,yH as interviewForMissing,sH as gradeAnswers,o0 as getTier,e9 as getNextTier,v6 as generateServerCard,y6 as generateProjectHtml,r6 as fromClaudeDir,j6 as findFafFile,a2 as fafContextBlock,R3 as enrichScore,iH as deriveQuestionSet,X9 as classifyGaps,F1 as canonicalPriority,vH as buildTableOf8,aH as buildReceipt,oY as assembleFreshFaf,q9 as answersMatch,o as TIERS,e6 as STACK_INTERVIEW,s0 as SLOT_BY_PATH,y as SLOTS,$3 as SIX_WS_INTERVIEW,m6 as REGISTRY_PUBLISHER_KEY,B0 as PRIORITY_RANK,n2 as PRIORITY_ORDER,S1 as PLACEHOLDERS,F$ as KNOWLEDGE_TYPES,t6 as INTERVIEW_VERSION,hH as INTERVIEW_PATHS,$9 as INTERVIEW_BY_PATH,l0 as INTERVIEW,K0 as FafmSoul,n0 as FAF_HEX,t9 as ENTERPRISE_SLOTS,X3 as BENCH_VERSION,o9 as BASE_SLOTS,H9 as ALIAS_GROUPS};
|
|
226
226
|
|
|
227
|
-
//# debugId=
|
|
227
|
+
//# debugId=9DFFE6C0E81FF14464756E2164756E21
|
|
228
228
|
//# sourceMappingURL=index.js.map
|