faf-cli 3.1.6 → 3.2.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 +57 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +92 -14
- package/dist/cli.js.map +1 -1
- package/dist/commands/check.d.ts +19 -3
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +280 -37
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/git.d.ts.map +1 -1
- package/dist/commands/git.js +7 -4
- package/dist/commands/git.js.map +1 -1
- package/dist/commands/human.d.ts +19 -0
- package/dist/commands/human.d.ts.map +1 -0
- package/dist/commands/human.js +205 -0
- package/dist/commands/human.js.map +1 -0
- package/dist/commands/readme.d.ts +16 -0
- package/dist/commands/readme.d.ts.map +1 -0
- package/dist/commands/readme.js +453 -0
- package/dist/commands/readme.js.map +1 -0
- package/dist/commands/version.d.ts +1 -1
- package/dist/commands/version.js +2 -2
- package/dist/compiler/faf-compiler.d.ts.map +1 -1
- package/dist/compiler/faf-compiler.js +43 -0
- package/dist/compiler/faf-compiler.js.map +1 -1
- package/dist/engines/fab-formats-processor.d.ts +8 -0
- package/dist/engines/fab-formats-processor.d.ts.map +1 -1
- package/dist/engines/fab-formats-processor.js +78 -1
- package/dist/engines/fab-formats-processor.js.map +1 -1
- package/dist/framework-detector.d.ts.map +1 -1
- package/dist/framework-detector.js +7 -0
- package/dist/framework-detector.js.map +1 -1
- package/dist/github/github-extractor.d.ts +12 -6
- package/dist/github/github-extractor.d.ts.map +1 -1
- package/dist/github/github-extractor.js +339 -84
- package/dist/github/github-extractor.js.map +1 -1
- package/dist/utils/fab-formats-engine.d.ts +7 -0
- package/dist/utils/fab-formats-engine.d.ts.map +1 -1
- package/dist/utils/fab-formats-engine.js +23 -1
- package/dist/utils/fab-formats-engine.js.map +1 -1
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js +20 -1
- package/dist/utils/file-utils.js.map +1 -1
- package/dist/utils/turbo-cat-knowledge.d.ts +2 -0
- package/dist/utils/turbo-cat-knowledge.d.ts.map +1 -1
- package/dist/utils/turbo-cat-knowledge.js +15 -0
- package/dist/utils/turbo-cat-knowledge.js.map +1 -1
- package/dist/utils/turbo-cat.d.ts +7 -0
- package/dist/utils/turbo-cat.d.ts.map +1 -1
- package/dist/utils/turbo-cat.js +30 -2
- package/dist/utils/turbo-cat.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 📖 faf readme - Extract 6 Ws from README intelligently
|
|
4
|
+
* Reads README.md and fills human_context slots smartly
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.readmeCommand = readmeCommand;
|
|
11
|
+
const colors_1 = require("../fix-once/colors");
|
|
12
|
+
const fs_1 = require("fs");
|
|
13
|
+
const path_1 = __importDefault(require("path"));
|
|
14
|
+
const yaml_1 = require("../fix-once/yaml");
|
|
15
|
+
const championship_style_1 = require("../utils/championship-style");
|
|
16
|
+
const file_utils_1 = require("../utils/file-utils");
|
|
17
|
+
const check_1 = require("./check");
|
|
18
|
+
/**
|
|
19
|
+
* Extract the 6 Ws from README content using intelligent pattern matching
|
|
20
|
+
*/
|
|
21
|
+
function extractSixWs(content, projectName) {
|
|
22
|
+
const result = {
|
|
23
|
+
who: null,
|
|
24
|
+
what: null,
|
|
25
|
+
why: null,
|
|
26
|
+
where: null,
|
|
27
|
+
when: null,
|
|
28
|
+
how: null,
|
|
29
|
+
confidence: 0,
|
|
30
|
+
sources: {}
|
|
31
|
+
};
|
|
32
|
+
let confidencePoints = 0;
|
|
33
|
+
// === WHAT: Project description, purpose (most important - do first) ===
|
|
34
|
+
// Pattern 1: Bold subtitle after H1 (common: **The Crown: Description**)
|
|
35
|
+
const boldSubtitleMatch = content.match(/^#\s+[^\n]+\n+\*\*([^*]+)\*\*/m);
|
|
36
|
+
if (boldSubtitleMatch && boldSubtitleMatch[1]) {
|
|
37
|
+
const extracted = cleanExtract(boldSubtitleMatch[1]);
|
|
38
|
+
if (extracted.length > 10 && extracted.length < 150) {
|
|
39
|
+
result.what = extracted;
|
|
40
|
+
result.sources.what = 'README subtitle';
|
|
41
|
+
confidencePoints += 25;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Pattern 2: Blockquote tagline
|
|
45
|
+
if (!result.what) {
|
|
46
|
+
const blockquoteMatch = content.match(/(?:^|\n)>\s*([^\n]{30,})/m);
|
|
47
|
+
if (blockquoteMatch && blockquoteMatch[1]) {
|
|
48
|
+
const extracted = cleanExtract(blockquoteMatch[1]);
|
|
49
|
+
if (extracted.length > 20 && !extracted.startsWith('[') && !extracted.startsWith('!')) {
|
|
50
|
+
result.what = extracted;
|
|
51
|
+
result.sources.what = 'README tagline';
|
|
52
|
+
confidencePoints += 25;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Pattern 3: First descriptive paragraph after title (skip code blocks, lists)
|
|
57
|
+
if (!result.what) {
|
|
58
|
+
const firstParaMatch = content.match(/^#\s+[^\n]+\n+(?:\*\*[^*]+\*\*\n+)?(?:\*[^\n]+\*\n+)?([A-Z][^#\n`*|]{30,})/m);
|
|
59
|
+
if (firstParaMatch && firstParaMatch[1]) {
|
|
60
|
+
const extracted = cleanExtract(firstParaMatch[1]);
|
|
61
|
+
if (extracted.length > 30 && extracted.length < 250) {
|
|
62
|
+
result.what = extracted;
|
|
63
|
+
result.sources.what = 'README first paragraph';
|
|
64
|
+
confidencePoints += 20;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Pattern 4: TL;DR Solution
|
|
69
|
+
if (!result.what) {
|
|
70
|
+
const tldrMatch = content.match(/##\s*TL;?DR\s*\n+([\s\S]*?)(?=\n##|\n---|\*\*Install|$)/i);
|
|
71
|
+
if (tldrMatch && tldrMatch[1]) {
|
|
72
|
+
const solutionMatch = tldrMatch[1].match(/\*\*Solution:\*\*\s*([^\n]+)/i);
|
|
73
|
+
if (solutionMatch) {
|
|
74
|
+
result.what = cleanExtract(solutionMatch[1]);
|
|
75
|
+
result.sources.what = 'TL;DR Solution';
|
|
76
|
+
confidencePoints += 25;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Pattern 5: "This is..." statement
|
|
81
|
+
if (!result.what) {
|
|
82
|
+
const thisIsMatch = content.match(/This\s+is\s+(?:the\s+)?(?:a\s+)?([^.\n]{20,100})/i);
|
|
83
|
+
if (thisIsMatch && thisIsMatch[1]) {
|
|
84
|
+
result.what = cleanExtract(thisIsMatch[1]);
|
|
85
|
+
result.sources.what = 'README "This is" statement';
|
|
86
|
+
confidencePoints += 18;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Pattern 6: "A single X that..." description
|
|
90
|
+
if (!result.what) {
|
|
91
|
+
const singleThatMatch = content.match(/A\s+single\s+([^.]+that[^.]+)/i);
|
|
92
|
+
if (singleThatMatch && singleThatMatch[1]) {
|
|
93
|
+
result.what = cleanExtract(singleThatMatch[1]);
|
|
94
|
+
result.sources.what = 'README functional description';
|
|
95
|
+
confidencePoints += 18;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// === WHY: Problem/motivation ===
|
|
99
|
+
// Pattern 1: **Problem:** statement
|
|
100
|
+
const problemMatch = content.match(/\*\*Problem:\*\*\s*([^\n]+)/i);
|
|
101
|
+
if (problemMatch && problemMatch[1]) {
|
|
102
|
+
result.why = cleanExtract(problemMatch[1]);
|
|
103
|
+
result.sources.why = 'README problem statement';
|
|
104
|
+
confidencePoints += 20;
|
|
105
|
+
}
|
|
106
|
+
// Pattern 2: ## Why section
|
|
107
|
+
if (!result.why) {
|
|
108
|
+
const whySectionMatch = content.match(/##\s*Why[^#\n]*\n+([\s\S]*?)(?=\n##|$)/i);
|
|
109
|
+
if (whySectionMatch && whySectionMatch[1]) {
|
|
110
|
+
// Get first meaningful line
|
|
111
|
+
const firstLine = whySectionMatch[1].split('\n').find(l => l.trim() && !l.startsWith('|') && !l.startsWith('-'));
|
|
112
|
+
if (firstLine) {
|
|
113
|
+
result.why = cleanExtract(firstLine);
|
|
114
|
+
result.sources.why = 'README Why section';
|
|
115
|
+
confidencePoints += 18;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Pattern 3: Tagline with time savings ("30 seconds replaces 20 minutes")
|
|
120
|
+
if (!result.why) {
|
|
121
|
+
const timeSavingsMatch = content.match(/(\d+\s*(?:seconds?|minutes?|hours?)\s+(?:replaces?|vs|instead of)[^.\n]+)/i);
|
|
122
|
+
if (timeSavingsMatch) {
|
|
123
|
+
result.why = cleanExtract(timeSavingsMatch[1]);
|
|
124
|
+
result.sources.why = 'README value proposition';
|
|
125
|
+
confidencePoints += 15;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Pattern 4: Performance metrics as why (common in tech READMEs)
|
|
129
|
+
if (!result.why) {
|
|
130
|
+
// Look for "Xx smaller/faster" pattern with clean extraction
|
|
131
|
+
const perfMatch = content.match(/(\d+x\s+(?:smaller|faster|more|better))/i);
|
|
132
|
+
if (perfMatch) {
|
|
133
|
+
result.why = perfMatch[1];
|
|
134
|
+
result.sources.why = 'README performance benefit';
|
|
135
|
+
confidencePoints += 12;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// === WHO: Target audience ===
|
|
139
|
+
// Pattern 1: "for X" in description
|
|
140
|
+
const forMatch = content.match(/(?:for|optimized for|designed for)\s+([^.\n]+(?:Grok|xAI|AI|developers?|teams?|users?)[^.\n]*)/i);
|
|
141
|
+
if (forMatch && forMatch[1]) {
|
|
142
|
+
const extracted = cleanExtract(forMatch[1]);
|
|
143
|
+
if (extracted.length >= 5 && extracted.length <= 100) {
|
|
144
|
+
result.who = extracted;
|
|
145
|
+
result.sources.who = 'README target';
|
|
146
|
+
confidencePoints += 15;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Pattern 2: Infer from technology mentions
|
|
150
|
+
if (!result.who) {
|
|
151
|
+
const techTargets = [];
|
|
152
|
+
if (content.includes('Grok') || content.includes('xAI'))
|
|
153
|
+
techTargets.push('xAI/Grok users');
|
|
154
|
+
if (content.includes('Claude'))
|
|
155
|
+
techTargets.push('Claude users');
|
|
156
|
+
if (content.includes('MCP') || content.includes('Model Context Protocol'))
|
|
157
|
+
techTargets.push('MCP developers');
|
|
158
|
+
if (content.includes('WASM') || content.includes('WebAssembly'))
|
|
159
|
+
techTargets.push('WASM/Edge developers');
|
|
160
|
+
if (content.includes('browser') || content.includes('Browser'))
|
|
161
|
+
techTargets.push('browser apps');
|
|
162
|
+
if (techTargets.length > 0) {
|
|
163
|
+
result.who = techTargets.slice(0, 3).join(', ');
|
|
164
|
+
result.sources.who = 'Inferred from technology mentions';
|
|
165
|
+
confidencePoints += 10;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// === WHERE: Platform, environment ===
|
|
169
|
+
const platforms = [];
|
|
170
|
+
// Explicit platform patterns
|
|
171
|
+
if (content.includes('Rust') || content.includes('cargo'))
|
|
172
|
+
platforms.push('Rust/Cargo');
|
|
173
|
+
if (content.includes('WASM') || content.includes('WebAssembly') || content.match(/\.wasm/))
|
|
174
|
+
platforms.push('WASM');
|
|
175
|
+
if (content.includes('browser') || content.includes('Browser'))
|
|
176
|
+
platforms.push('Browser');
|
|
177
|
+
if (content.includes('npm install') || content.includes('package.json'))
|
|
178
|
+
platforms.push('npm');
|
|
179
|
+
if (content.includes('Homebrew') || content.includes('brew install'))
|
|
180
|
+
platforms.push('Homebrew');
|
|
181
|
+
if (content.includes('Zig'))
|
|
182
|
+
platforms.push('Zig');
|
|
183
|
+
if (content.includes('edge function') || content.includes('Edge'))
|
|
184
|
+
platforms.push('Edge');
|
|
185
|
+
if (content.includes('MCP'))
|
|
186
|
+
platforms.push('MCP');
|
|
187
|
+
if (platforms.length > 0) {
|
|
188
|
+
result.where = platforms.slice(0, 4).join(', ');
|
|
189
|
+
result.sources.where = 'README platform mentions';
|
|
190
|
+
confidencePoints += 10;
|
|
191
|
+
}
|
|
192
|
+
// === WHEN: Version, date, or status ===
|
|
193
|
+
// Pattern 1: Explicit date in header
|
|
194
|
+
const dateMatch = content.match(/\*([A-Z][a-z]+\s+(?:Day,?\s+)?[A-Z][a-z]+\s+\d{1,2},?\s+\d{4})\*/);
|
|
195
|
+
if (dateMatch) {
|
|
196
|
+
result.when = dateMatch[1];
|
|
197
|
+
result.sources.when = 'README date';
|
|
198
|
+
confidencePoints += 15;
|
|
199
|
+
}
|
|
200
|
+
// Pattern 2: Status badges/mentions
|
|
201
|
+
if (!result.when) {
|
|
202
|
+
if (content.includes('xAI Exclusive') || content.includes('xAI-exclusive')) {
|
|
203
|
+
result.when = 'xAI Exclusive release';
|
|
204
|
+
result.sources.when = 'README exclusivity';
|
|
205
|
+
confidencePoints += 12;
|
|
206
|
+
}
|
|
207
|
+
else if (content.includes('IANA') || content.includes('registered')) {
|
|
208
|
+
result.when = 'IANA-registered standard';
|
|
209
|
+
result.sources.when = 'README official status';
|
|
210
|
+
confidencePoints += 15;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Pattern 3: Test suite status
|
|
214
|
+
if (!result.when) {
|
|
215
|
+
const testMatch = content.match(/(\d+)\/\1\s*(?:tests?|passing)/i);
|
|
216
|
+
if (testMatch) {
|
|
217
|
+
result.when = `${testMatch[1]} tests passing (production ready)`;
|
|
218
|
+
result.sources.when = 'README test status';
|
|
219
|
+
confidencePoints += 10;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// === HOW: Installation/getting started ===
|
|
223
|
+
// Pattern 1: Quick Start section code block - skip comments, get actual command
|
|
224
|
+
const quickStartSection = content.match(/##\s*Quick\s*Start\s*\n+([\s\S]*?)(?=\n##|$)/i);
|
|
225
|
+
if (quickStartSection) {
|
|
226
|
+
const codeBlock = quickStartSection[1].match(/```(?:bash|sh)?\n([\s\S]*?)```/);
|
|
227
|
+
if (codeBlock) {
|
|
228
|
+
// Find first non-comment line
|
|
229
|
+
const lines = codeBlock[1].split('\n').filter(l => l.trim() && !l.trim().startsWith('#'));
|
|
230
|
+
if (lines.length > 0) {
|
|
231
|
+
result.how = cleanExtract(lines[0]);
|
|
232
|
+
result.sources.how = 'README Quick Start';
|
|
233
|
+
confidencePoints += 15;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// Pattern 2: One-click or simple commands
|
|
238
|
+
if (!result.how) {
|
|
239
|
+
const oneClickMatch = content.match(/(?:one-click|one click)[^\n]*\n+```[^\n]*\n([^\n]+)/i);
|
|
240
|
+
if (oneClickMatch) {
|
|
241
|
+
result.how = cleanExtract(oneClickMatch[1]);
|
|
242
|
+
result.sources.how = 'README one-click demo';
|
|
243
|
+
confidencePoints += 15;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Pattern 3: Build command
|
|
247
|
+
if (!result.how) {
|
|
248
|
+
const buildMatch = content.match(/```(?:bash|sh)?\n((?:zig|cargo|npm|yarn)\s+(?:build|install)[^\n]*)/);
|
|
249
|
+
if (buildMatch) {
|
|
250
|
+
result.how = cleanExtract(buildMatch[1]);
|
|
251
|
+
result.sources.how = 'README build command';
|
|
252
|
+
confidencePoints += 12;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// Pattern 4: npm/brew install
|
|
256
|
+
if (!result.how) {
|
|
257
|
+
const npmMatch = content.match(/npm\s+install\s+(?:-g\s+)?([^\s\n`]+)/);
|
|
258
|
+
if (npmMatch) {
|
|
259
|
+
result.how = `npm install -g ${npmMatch[1]}`;
|
|
260
|
+
result.sources.how = 'README npm install';
|
|
261
|
+
confidencePoints += 15;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// Calculate overall confidence
|
|
265
|
+
const filledCount = [result.who, result.what, result.why, result.where, result.when, result.how]
|
|
266
|
+
.filter(v => v !== null).length;
|
|
267
|
+
// Scale based on filled slots
|
|
268
|
+
result.confidence = Math.min(100, Math.round((confidencePoints / 100) * 100 * (filledCount / 6) * 1.2));
|
|
269
|
+
return result;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Clean extracted text
|
|
273
|
+
*/
|
|
274
|
+
function cleanExtract(text) {
|
|
275
|
+
return text
|
|
276
|
+
.replace(/^\s*[-*•]\s*/, '') // Remove list markers
|
|
277
|
+
.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') // Convert links to text
|
|
278
|
+
.replace(/`([^`]+)`/g, '$1') // Remove code backticks
|
|
279
|
+
.replace(/\*\*([^*]+)\*\*/g, '$1') // Remove bold markers
|
|
280
|
+
.replace(/\*\*$/g, '') // Remove trailing **
|
|
281
|
+
.replace(/^\*\*/g, '') // Remove leading **
|
|
282
|
+
.replace(/\*([^*]+)\*/g, '$1') // Remove italic markers
|
|
283
|
+
.replace(/\*$/g, '') // Remove trailing *
|
|
284
|
+
.replace(/^\*/g, '') // Remove leading *
|
|
285
|
+
.replace(/\s+/g, ' ') // Normalize whitespace
|
|
286
|
+
.trim()
|
|
287
|
+
.slice(0, 200); // Limit length
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Find README file in project
|
|
291
|
+
*/
|
|
292
|
+
async function findReadme(projectRoot) {
|
|
293
|
+
const readmeNames = [
|
|
294
|
+
'README.md',
|
|
295
|
+
'readme.md',
|
|
296
|
+
'Readme.md',
|
|
297
|
+
'README.MD',
|
|
298
|
+
'README',
|
|
299
|
+
'readme',
|
|
300
|
+
'README.txt',
|
|
301
|
+
'readme.txt'
|
|
302
|
+
];
|
|
303
|
+
for (const name of readmeNames) {
|
|
304
|
+
const readmePath = path_1.default.join(projectRoot, name);
|
|
305
|
+
if (await (0, file_utils_1.fileExists)(readmePath)) {
|
|
306
|
+
return readmePath;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
return null;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Main readme command
|
|
313
|
+
*/
|
|
314
|
+
async function readmeCommand(projectPath, options = {}) {
|
|
315
|
+
const startTime = Date.now();
|
|
316
|
+
const projectRoot = projectPath || process.cwd();
|
|
317
|
+
try {
|
|
318
|
+
console.log();
|
|
319
|
+
console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.turbo_cat} faf readme - Smart 6 Ws Extraction`));
|
|
320
|
+
console.log(colors_1.chalk.gray('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
321
|
+
// Find README
|
|
322
|
+
const readmePath = options.file
|
|
323
|
+
? path_1.default.resolve(projectRoot, options.file)
|
|
324
|
+
: await findReadme(projectRoot);
|
|
325
|
+
if (!readmePath || !(await (0, file_utils_1.fileExists)(readmePath))) {
|
|
326
|
+
console.log(colors_1.chalk.red(`\n❌ No README found in ${projectRoot}`));
|
|
327
|
+
console.log(colors_1.chalk.yellow(' Create a README.md first, or specify with --file'));
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
console.log(colors_1.chalk.gray(`\n Reading: ${path_1.default.basename(readmePath)}`));
|
|
331
|
+
// Read README content
|
|
332
|
+
const readmeContent = await fs_1.promises.readFile(readmePath, 'utf-8');
|
|
333
|
+
// Get project name from package.json if available
|
|
334
|
+
let projectName;
|
|
335
|
+
const packageJsonPath = path_1.default.join(projectRoot, 'package.json');
|
|
336
|
+
if (await (0, file_utils_1.fileExists)(packageJsonPath)) {
|
|
337
|
+
try {
|
|
338
|
+
const pkg = JSON.parse(await fs_1.promises.readFile(packageJsonPath, 'utf-8'));
|
|
339
|
+
projectName = pkg.name;
|
|
340
|
+
}
|
|
341
|
+
catch { /* ignore */ }
|
|
342
|
+
}
|
|
343
|
+
// Extract 6 Ws
|
|
344
|
+
const extracted = extractSixWs(readmeContent, projectName);
|
|
345
|
+
const elapsedTime = Date.now() - startTime;
|
|
346
|
+
// Display results
|
|
347
|
+
console.log();
|
|
348
|
+
console.log(championship_style_1.FAF_COLORS.fafOrange(`${championship_style_1.FAF_ICONS.precision} Extracted Human Context (6 Ws):`));
|
|
349
|
+
console.log(colors_1.chalk.gray('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
350
|
+
const displayField = (name, value, source) => {
|
|
351
|
+
const label = colors_1.chalk.cyan(` ${name.padEnd(6)}:`);
|
|
352
|
+
if (value) {
|
|
353
|
+
console.log(`${label} ${colors_1.chalk.white(value)}`);
|
|
354
|
+
if (source && !options.quiet) {
|
|
355
|
+
console.log(colors_1.chalk.gray(` └─ ${source}`));
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
console.log(`${label} ${colors_1.chalk.gray('(not found)')}`);
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
displayField('WHO', extracted.who, extracted.sources.who);
|
|
363
|
+
displayField('WHAT', extracted.what, extracted.sources.what);
|
|
364
|
+
displayField('WHY', extracted.why, extracted.sources.why);
|
|
365
|
+
displayField('WHERE', extracted.where, extracted.sources.where);
|
|
366
|
+
displayField('WHEN', extracted.when, extracted.sources.when);
|
|
367
|
+
displayField('HOW', extracted.how, extracted.sources.how);
|
|
368
|
+
// Show confidence
|
|
369
|
+
const filledCount = [extracted.who, extracted.what, extracted.why, extracted.where, extracted.when, extracted.how]
|
|
370
|
+
.filter(v => v !== null).length;
|
|
371
|
+
console.log();
|
|
372
|
+
console.log(colors_1.chalk.gray('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
373
|
+
console.log(championship_style_1.FAF_COLORS.fafCyan(` Filled: ${filledCount}/6 slots`));
|
|
374
|
+
console.log(championship_style_1.FAF_COLORS.fafCyan(` Confidence: ${extracted.confidence}%`));
|
|
375
|
+
console.log(colors_1.chalk.gray(` Time: ${elapsedTime}ms`));
|
|
376
|
+
// Apply to .faf if requested
|
|
377
|
+
if (options.apply) {
|
|
378
|
+
const fafPath = await (0, file_utils_1.findFafFile)(projectRoot);
|
|
379
|
+
if (!fafPath) {
|
|
380
|
+
console.log();
|
|
381
|
+
console.log(colors_1.chalk.yellow(`⚠️ No .faf file found. Run 'faf init' first.`));
|
|
382
|
+
console.log(colors_1.chalk.gray(' Then run: faf readme --apply'));
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
console.log();
|
|
386
|
+
console.log(championship_style_1.FAF_COLORS.fafOrange(`${championship_style_1.FAF_ICONS.rocket} Applying to ${path_1.default.basename(fafPath)}...`));
|
|
387
|
+
// Read existing .faf
|
|
388
|
+
const fafContent = await fs_1.promises.readFile(fafPath, 'utf-8');
|
|
389
|
+
const fafData = (0, yaml_1.parse)(fafContent) || {};
|
|
390
|
+
// Merge human_context (only fill empty slots)
|
|
391
|
+
if (!fafData.human_context) {
|
|
392
|
+
fafData.human_context = {};
|
|
393
|
+
}
|
|
394
|
+
let appliedCount = 0;
|
|
395
|
+
let skippedProtected = 0;
|
|
396
|
+
const fields = ['who', 'what', 'why', 'where', 'when', 'how'];
|
|
397
|
+
for (const field of fields) {
|
|
398
|
+
const value = extracted[field];
|
|
399
|
+
const existingValue = fafData.human_context[field];
|
|
400
|
+
const isEmpty = !existingValue || existingValue === null || existingValue === '';
|
|
401
|
+
// Check if field is protected
|
|
402
|
+
if ((0, check_1.isFieldProtected)(fafData, field)) {
|
|
403
|
+
skippedProtected++;
|
|
404
|
+
console.log(colors_1.chalk.gray(` 🔒 Skipped ${field} (protected)`));
|
|
405
|
+
continue;
|
|
406
|
+
}
|
|
407
|
+
if (value && (isEmpty || options.force)) {
|
|
408
|
+
fafData.human_context[field] = value;
|
|
409
|
+
appliedCount++;
|
|
410
|
+
if (options.force && !isEmpty) {
|
|
411
|
+
console.log(colors_1.chalk.yellow(` ↻ Replaced ${field}`));
|
|
412
|
+
}
|
|
413
|
+
else {
|
|
414
|
+
console.log(colors_1.chalk.green(` ☑️ Filled ${field}`));
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
if (appliedCount > 0) {
|
|
419
|
+
// Write updated .faf
|
|
420
|
+
await fs_1.promises.writeFile(fafPath, (0, yaml_1.stringify)(fafData), 'utf-8');
|
|
421
|
+
console.log();
|
|
422
|
+
console.log(championship_style_1.FAF_COLORS.fafGreen(`☑️ Applied ${appliedCount} fields to ${path_1.default.basename(fafPath)}`));
|
|
423
|
+
if (skippedProtected > 0) {
|
|
424
|
+
console.log(colors_1.chalk.gray(` (${skippedProtected} protected fields unchanged)`));
|
|
425
|
+
}
|
|
426
|
+
console.log(colors_1.chalk.gray(' Run: faf score --details to see your new score'));
|
|
427
|
+
}
|
|
428
|
+
else {
|
|
429
|
+
console.log();
|
|
430
|
+
if (skippedProtected > 0) {
|
|
431
|
+
console.log(colors_1.chalk.gray(` ${skippedProtected} protected fields unchanged`));
|
|
432
|
+
console.log(colors_1.chalk.gray(' Use: faf check --unlock to remove protection'));
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
console.log(colors_1.chalk.gray(' All slots already filled or no new data extracted'));
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
else if (filledCount > 0) {
|
|
440
|
+
// Show hint to apply
|
|
441
|
+
console.log();
|
|
442
|
+
console.log(championship_style_1.FAF_COLORS.fafOrange(`${championship_style_1.FAF_ICONS.magic_wand} To apply these to your .faf:`));
|
|
443
|
+
console.log(colors_1.chalk.white(' faf readme --apply'));
|
|
444
|
+
}
|
|
445
|
+
console.log();
|
|
446
|
+
}
|
|
447
|
+
catch (error) {
|
|
448
|
+
console.log(colors_1.chalk.red(`\n❌ README extraction failed:`));
|
|
449
|
+
console.log(colors_1.chalk.red(error instanceof Error ? error.message : String(error)));
|
|
450
|
+
process.exit(1);
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
//# sourceMappingURL=readme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readme.js","sourceRoot":"","sources":["../../src/commands/readme.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/version.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* 🏆 faf version - Show version with
|
|
3
|
+
* 🏆 faf version - Show version with MK3 Engine status
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.versionCommand = versionCommand;
|
|
@@ -14,7 +14,7 @@ async function versionCommand() {
|
|
|
14
14
|
console.log(championship_style_1.FAF_COLORS.fafCyan(`══════════════════════════`));
|
|
15
15
|
console.log();
|
|
16
16
|
console.log(championship_style_1.FAF_COLORS.fafOrange(` Version: ${version}`));
|
|
17
|
-
console.log(championship_style_1.FAF_COLORS.fafGreen(` Engine:
|
|
17
|
+
console.log(championship_style_1.FAF_COLORS.fafGreen(` Engine: MK3 ⚡️`));
|
|
18
18
|
console.log(championship_style_1.FAF_COLORS.fafCyan(` TURBO-CAT: ACTIVE 😽`));
|
|
19
19
|
console.log();
|
|
20
20
|
console.log(colors_1.chalk.gray(` 154 Validated Formats`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faf-compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/faf-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,gBAAgB,CAAC;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,EAAE,EAAE,0BAA0B,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,WAAW,CAAC;CACxB;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,UAAU,UAAU;IAClB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,0BAA0B;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,UAAU,MAAM;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAoB;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAExD,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,EAAE,CAA6B;;IAgBvC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAyC5C,UAAU;IAoBxB,OAAO,CAAC,KAAK;IA2Bb,OAAO,CAAC,OAAO;IAiCf,OAAO,CAAC,aAAa;YAgCP,QAAQ;YA2BR,QAAQ;
|
|
1
|
+
{"version":3,"file":"faf-compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/faf-compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -248,6 +248,16 @@ class FafCompiler {
|
|
|
248
248
|
if (ctx.buildTool)
|
|
249
249
|
discovered.buildTool = ctx.buildTool;
|
|
250
250
|
}
|
|
251
|
+
// Subsite detection: no package.json + has index.html = static subsite
|
|
252
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
|
|
253
|
+
const hasPackageJson = await fs.access(path.join(projectDir, 'package.json')).then(() => true).catch(() => false);
|
|
254
|
+
const hasIndexHtml = await fs.access(path.join(projectDir, 'index.html')).then(() => true).catch(() => false);
|
|
255
|
+
if (!hasPackageJson && hasIndexHtml) {
|
|
256
|
+
discovered.isSubsite = true;
|
|
257
|
+
if (process.env.FAF_DEBUG) {
|
|
258
|
+
console.log('[DEBUG] Subsite detected: no package.json + has index.html');
|
|
259
|
+
}
|
|
260
|
+
}
|
|
251
261
|
return discovered;
|
|
252
262
|
}
|
|
253
263
|
removeDefaults(data, changes) {
|
|
@@ -364,6 +374,39 @@ class FafCompiler {
|
|
|
364
374
|
this.addSlot(slots, 'stack.build', ast.stack.build, 'string', 'discovered', 1);
|
|
365
375
|
// Leave backend, database, cicd as "None" - legitimate for static sites
|
|
366
376
|
}
|
|
377
|
+
// Subsite auto-fill: Static HTML without package.json (auto-detected via _discovered.isSubsite)
|
|
378
|
+
// These are minimal pages like landing pages, demos, documentation subsites
|
|
379
|
+
// Only score: project (3) + universal stack (3) + human (6) = 12 slots max
|
|
380
|
+
if (projectType === 'subsite' || ast._discovered?.isSubsite) {
|
|
381
|
+
if (process.env.FAF_DEBUG) {
|
|
382
|
+
console.log('[DEBUG] Subsite mode: auto-ignoring package.json-derived stack slots');
|
|
383
|
+
}
|
|
384
|
+
if (!ast.stack)
|
|
385
|
+
ast.stack = {};
|
|
386
|
+
// Auto-fill subsite context
|
|
387
|
+
if (!ast.stack.frontend)
|
|
388
|
+
ast.stack.frontend = 'HTML/CSS/JavaScript';
|
|
389
|
+
if (!ast.stack.hosting)
|
|
390
|
+
ast.stack.hosting = 'Static Hosting';
|
|
391
|
+
if (!ast.stack.build)
|
|
392
|
+
ast.stack.build = 'None (static files)';
|
|
393
|
+
if (!ast.stack.cicd)
|
|
394
|
+
ast.stack.cicd = 'None (static subsite)';
|
|
395
|
+
// Only add universal stack slots for subsites (skip frontend/backend specific slots)
|
|
396
|
+
this.addSlot(slots, 'stack.frontend', ast.stack.frontend, 'string', 'discovered', 1);
|
|
397
|
+
this.addSlot(slots, 'stack.hosting', ast.stack.hosting, 'string', 'discovered', 1);
|
|
398
|
+
this.addSlot(slots, 'stack.build', ast.stack.build, 'string', 'discovered', 1);
|
|
399
|
+
this.addSlot(slots, 'stack.cicd', ast.stack?.cicd, 'string', 'original', 1);
|
|
400
|
+
// Human context slots (6) - always applicable
|
|
401
|
+
this.addSlot(slots, 'human.who', ast.human_context?.who, 'string', 'original', 1);
|
|
402
|
+
this.addSlot(slots, 'human.what', ast.human_context?.what, 'string', 'original', 1);
|
|
403
|
+
this.addSlot(slots, 'human.why', ast.human_context?.why, 'string', 'original', 1);
|
|
404
|
+
this.addSlot(slots, 'human.where', ast.human_context?.where, 'string', 'original', 1);
|
|
405
|
+
this.addSlot(slots, 'human.when', ast.human_context?.when, 'string', 'original', 1);
|
|
406
|
+
this.addSlot(slots, 'human.how', ast.human_context?.how, 'string', 'original', 1);
|
|
407
|
+
// Return early - subsites don't need other stack slots
|
|
408
|
+
return slots;
|
|
409
|
+
}
|
|
367
410
|
// n8n Workflow auto-fill: Map n8n-specific fields to standard 21-slot system
|
|
368
411
|
if (projectType === 'n8n-workflow') {
|
|
369
412
|
// Map n8n context to existing stack slots (efficient, no slot inflation)
|