faf-cli 7.0.2 → 7.1.2
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 +64 -23
- package/dist/cli.js +248 -248
- package/dist/cli.js.map +14 -12
- package/dist/index.js +2 -2
- package/dist/index.js.map +2 -2
- package/package.json +6 -2
package/dist/index.js
CHANGED
|
@@ -146,7 +146,7 @@ ${Z.comment}`:Z.comment}this.doc.range[2]=Z.offset;break}default:this.errors.pus
|
|
|
146
146
|
<meta charset="UTF-8">
|
|
147
147
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
148
148
|
<title>${X} — project.faf</title>
|
|
149
|
-
<meta name="description" content="Visual render of project.faf.
|
|
149
|
+
<meta name="description" content="Visual render of project.faf. Authored by faf — humans like visuals, we gave them one.">
|
|
150
150
|
<meta name="robots" content="index,follow">
|
|
151
151
|
<style>
|
|
152
152
|
*{margin:0;padding:0;box-sizing:border-box}
|
|
@@ -222,5 +222,5 @@ Rendered on-demand from your current <strong>${S0(U)}</strong><br>
|
|
|
222
222
|
`),X=0;while(X<U.length){let Q=U[X].trim().match(/^(#{1,6})\s+(.+)$/);if(Q&&Z.test(Q[2])){let J=Q[1].length,q=[];X++;while(X<U.length){let H=U[X].trim(),G=H.match(/^(#{1,6})\s+/);if(G&&G[1].length<=J)break;if(H===""){if(q.length>0)break;X++;continue}if(/^(>|```|---|\||\s*[-*+]\s|\d+\.\s)/.test(H))break;q.push(H),X++}if(q.length===0)return null;return q.join(" ").trim()}X++}return null}function lq($){let Z=D0($,/^(use\s+cases?|goal)\b/i);if(Z&&p(Z))return Z;let U=pq($);if(U&&p(U))return U;return}function dq($){let Z=D0($,/^(about|description|overview|what(\s+is\s+this)?)\b/i);if(Z&&p(Z))return Z;return}function cq($){let Z=D0($,/^(audience|users?|for\s+whom|who(\s+is\s+this\s+for)?)\b/i);if(Z&&p(Z))return Z;return}function aq($){let Z=D0($,/^(why|motivation|problem|rationale)\b/i);if(Z&&p(Z))return Z;return}function iq($){let Z=D0($,/^(deployment|where(\s+it\s+runs)?|hosting)\b/i);if(Z&&p(Z))return Z;return}function sq($){let Z=D0($,/^(status|history|timeline|since|launched)\b/i);if(Z&&p(Z))return Z;return}function rq($){let Z=D0($,/^(architecture|how(\s+it\s+works)?|approach|design)\b/i);if(Z&&p(Z))return Z;return}function k2($){let Z=["README.md","README.MD","Readme.md","readme.md"],U=null;for(let O of Z){let _=vq($,O);if(uq(_)){U=_;break}}if(!U)return{};let X;try{X=kq(U,"utf-8")}catch{return{}}let z={},Q=lq(X);if(Q)z.project={goal:Q};let J={},q=dq(X);if(q)J.what=q;let H=cq(X);if(H)J.who=H;let G=aq(X);if(G)J.why=G;let W=iq(X);if(W)J.where=W;let Y=sq(X);if(Y)J.when=Y;let V=rq(X);if(V)J.how=V;if(Object.keys(J).length>0)z.human_context=J;return z}import{existsSync as nq,readFileSync as oq}from"fs";import{join as tq}from"path";function eq($,Z){let U=$.split(`
|
|
223
223
|
`),X=!1;for(let z of U){let Q=z.trim();if(/^\[/.test(Q)){X=Q==="[package]";continue}if(!X)continue;let J=Q.match(new RegExp(`^${Z}\\s*=\\s*(.+)$`));if(J){let q=J[1].trim();q=q.replace(/\s*#.*$/,"").trim();let H=q.match(/^"((?:[^"\\]|\\.)*)"$/)||q.match(/^'((?:[^'\\]|\\.)*)'$/);if(H)return H[1];return q}}return null}function v2($){let Z=tq($,"Cargo.toml");if(!nq(Z))return{};let U;try{U=oq(Z,"utf-8")}catch{return{}}let X=eq(U,"description");if(X&&p(X))return{project:{goal:X}};return{}}function $H($,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 e4($){return $H(k2($),v2($))}function ZH($){let Z=o4($),U=e4($),X=Y9(Z,U);UH(X);let z=Y9(X,x2($));return Y9(z,{human_context:h2($)})}function UH($){let Z=$.project?.type??"library",U=I0[Z]||I0.library;for(let X of y){if(U.includes(X.category))continue;let[z,Q]=X.path.split(".");if(z==="stack"&&$.stack)$.stack[Q]="slotignored";if(z==="monorepo"&&$.monorepo)$.monorepo[Q]="slotignored"}}function Y9($,Z){let U={...$};for(let[X,z]of Object.entries(Z)){let Q=U[X];if(q0(Q))U[X]=z;else if(typeof z==="object"&&z!==null&&!Array.isArray(z)&&typeof Q==="object"&&Q!==null&&!Array.isArray(Q))U[X]=Y9(Q,z)}return U}export{jJ as writeServerCard,PJ as writeProjectHtml,_6 as validateFaf,x2 as turboCatSlots,E4 as turboCatScan,Q6 as slotsByCategory,F4 as seedSixWsFromGoal,_9 as scoreFafYaml,uJ as runLoop,h4 as relentlessContextDetailed,h2 as relentlessContext,bJ as registryName,wJ as registryMeta,z4 as readFafRaw,VJ as readFaf,j2 as questionForSlot,lJ as publicQuestions,H9 as normalizeAnswer,A4 as loopVerdict,L9 as kernel,q0 as isPlaceholder,K4 as isHumanSlot,q9 as isEmptyValue,EJ as interviewForMissing,dJ as gradeAnswers,m0 as getTier,H6 as getNextTier,W4 as generateServerCard,G4 as generateProjectHtml,Q4 as findFafFile,b2 as fafContextBlock,c2 as enrichScore,pJ as deriveQuestionSet,T4 as classifyGaps,xJ as buildTableOf8,cJ as buildReceipt,ZH as assembleFreshFaf,C4 as answersMatch,i as TIERS,M4 as STACK_INTERVIEW,u0 as SLOT_BY_PATH,y as SLOTS,C2 as SIX_WS_INTERVIEW,O4 as REGISTRY_PUBLISHER_KEY,_$ as PLACEHOLDERS,R4 as INTERVIEW_VERSION,SJ as INTERVIEW_PATHS,P4 as INTERVIEW_BY_PATH,g0 as INTERVIEW,v0 as FAF_HEX,q6 as ENTERPRISE_SLOTS,E2 as BENCH_VERSION,J6 as BASE_SLOTS,b4 as ALIAS_GROUPS};
|
|
224
224
|
|
|
225
|
-
//# debugId=
|
|
225
|
+
//# debugId=FC4CF824C7150B9364756E2164756E21
|
|
226
226
|
//# sourceMappingURL=index.js.map
|