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.
Files changed (51) hide show
  1. package/README.md +57 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +92 -14
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/check.d.ts +19 -3
  6. package/dist/commands/check.d.ts.map +1 -1
  7. package/dist/commands/check.js +280 -37
  8. package/dist/commands/check.js.map +1 -1
  9. package/dist/commands/git.d.ts.map +1 -1
  10. package/dist/commands/git.js +7 -4
  11. package/dist/commands/git.js.map +1 -1
  12. package/dist/commands/human.d.ts +19 -0
  13. package/dist/commands/human.d.ts.map +1 -0
  14. package/dist/commands/human.js +205 -0
  15. package/dist/commands/human.js.map +1 -0
  16. package/dist/commands/readme.d.ts +16 -0
  17. package/dist/commands/readme.d.ts.map +1 -0
  18. package/dist/commands/readme.js +453 -0
  19. package/dist/commands/readme.js.map +1 -0
  20. package/dist/commands/version.d.ts +1 -1
  21. package/dist/commands/version.js +2 -2
  22. package/dist/compiler/faf-compiler.d.ts.map +1 -1
  23. package/dist/compiler/faf-compiler.js +43 -0
  24. package/dist/compiler/faf-compiler.js.map +1 -1
  25. package/dist/engines/fab-formats-processor.d.ts +8 -0
  26. package/dist/engines/fab-formats-processor.d.ts.map +1 -1
  27. package/dist/engines/fab-formats-processor.js +78 -1
  28. package/dist/engines/fab-formats-processor.js.map +1 -1
  29. package/dist/framework-detector.d.ts.map +1 -1
  30. package/dist/framework-detector.js +7 -0
  31. package/dist/framework-detector.js.map +1 -1
  32. package/dist/github/github-extractor.d.ts +12 -6
  33. package/dist/github/github-extractor.d.ts.map +1 -1
  34. package/dist/github/github-extractor.js +339 -84
  35. package/dist/github/github-extractor.js.map +1 -1
  36. package/dist/utils/fab-formats-engine.d.ts +7 -0
  37. package/dist/utils/fab-formats-engine.d.ts.map +1 -1
  38. package/dist/utils/fab-formats-engine.js +23 -1
  39. package/dist/utils/fab-formats-engine.js.map +1 -1
  40. package/dist/utils/file-utils.d.ts.map +1 -1
  41. package/dist/utils/file-utils.js +20 -1
  42. package/dist/utils/file-utils.js.map +1 -1
  43. package/dist/utils/turbo-cat-knowledge.d.ts +2 -0
  44. package/dist/utils/turbo-cat-knowledge.d.ts.map +1 -1
  45. package/dist/utils/turbo-cat-knowledge.js +15 -0
  46. package/dist/utils/turbo-cat-knowledge.js.map +1 -1
  47. package/dist/utils/turbo-cat.d.ts +7 -0
  48. package/dist/utils/turbo-cat.d.ts.map +1 -1
  49. package/dist/utils/turbo-cat.js +30 -2
  50. package/dist/utils/turbo-cat.js.map +1 -1
  51. 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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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * 🏆 faf version - Show version with MK2 Engine status
2
+ * 🏆 faf version - Show version with MK3 Engine status
3
3
  */
4
4
  export declare function versionCommand(): Promise<void>;
5
5
  //# sourceMappingURL=version.d.ts.map
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * 🏆 faf version - Show version with MK2 Engine status
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: MK2 ⚡️`));
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":"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"}
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)