faf-cli 3.0.5 → 3.0.6

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 (67) hide show
  1. package/README.md +41 -9
  2. package/dist/big-orange/bigo-push.d.ts +18 -0
  3. package/dist/big-orange/bigo-push.d.ts.map +1 -0
  4. package/dist/big-orange/bigo-push.js +88 -0
  5. package/dist/big-orange/bigo-push.js.map +1 -0
  6. package/dist/big-orange/compare.d.ts +11 -0
  7. package/dist/big-orange/compare.d.ts.map +1 -0
  8. package/dist/big-orange/compare.js +174 -0
  9. package/dist/big-orange/compare.js.map +1 -0
  10. package/dist/big-orange/faf-generator.d.ts +22 -0
  11. package/dist/big-orange/faf-generator.d.ts.map +1 -0
  12. package/dist/big-orange/faf-generator.js +215 -0
  13. package/dist/big-orange/faf-generator.js.map +1 -0
  14. package/dist/big-orange/index.d.ts +7 -0
  15. package/dist/big-orange/index.d.ts.map +1 -0
  16. package/dist/big-orange/index.js +96 -0
  17. package/dist/big-orange/index.js.map +1 -0
  18. package/dist/big-orange/types.d.ts +62 -0
  19. package/dist/big-orange/types.d.ts.map +1 -0
  20. package/dist/big-orange/types.js +7 -0
  21. package/dist/big-orange/types.js.map +1 -0
  22. package/dist/cli.js +0 -0
  23. package/package.json +4 -1
  24. package/dist/commands/create.d.ts +0 -13
  25. package/dist/commands/create.d.ts.map +0 -1
  26. package/dist/commands/create.js +0 -78
  27. package/dist/commands/create.js.map +0 -1
  28. package/dist/core/platform-adapters.d.ts +0 -76
  29. package/dist/core/platform-adapters.d.ts.map +0 -1
  30. package/dist/core/platform-adapters.js +0 -407
  31. package/dist/core/platform-adapters.js.map +0 -1
  32. package/dist/core/universal-intelligence-generator.d.ts +0 -156
  33. package/dist/core/universal-intelligence-generator.d.ts.map +0 -1
  34. package/dist/core/universal-intelligence-generator.js +0 -352
  35. package/dist/core/universal-intelligence-generator.js.map +0 -1
  36. package/dist/enrichment/auto-corrector.d.ts +0 -28
  37. package/dist/enrichment/auto-corrector.d.ts.map +0 -1
  38. package/dist/enrichment/auto-corrector.js +0 -106
  39. package/dist/enrichment/auto-corrector.js.map +0 -1
  40. package/dist/enrichment/n8n-analyzer.d.ts +0 -259
  41. package/dist/enrichment/n8n-analyzer.d.ts.map +0 -1
  42. package/dist/enrichment/n8n-analyzer.js +0 -346
  43. package/dist/enrichment/n8n-analyzer.js.map +0 -1
  44. package/dist/enrichment/n8n-faf-generator.d.ts +0 -68
  45. package/dist/enrichment/n8n-faf-generator.d.ts.map +0 -1
  46. package/dist/enrichment/n8n-faf-generator.js +0 -354
  47. package/dist/enrichment/n8n-faf-generator.js.map +0 -1
  48. package/dist/enrichment/question-asker.d.ts +0 -22
  49. package/dist/enrichment/question-asker.d.ts.map +0 -1
  50. package/dist/enrichment/question-asker.js +0 -113
  51. package/dist/enrichment/question-asker.js.map +0 -1
  52. package/dist/enrichment/slot-filler.d.ts +0 -73
  53. package/dist/enrichment/slot-filler.d.ts.map +0 -1
  54. package/dist/enrichment/slot-filler.js +0 -253
  55. package/dist/enrichment/slot-filler.js.map +0 -1
  56. package/dist/scoring/championship-scorer.d.ts +0 -114
  57. package/dist/scoring/championship-scorer.d.ts.map +0 -1
  58. package/dist/scoring/championship-scorer.js +0 -380
  59. package/dist/scoring/championship-scorer.js.map +0 -1
  60. package/dist/scoring/score-calculator.d.ts +0 -29
  61. package/dist/scoring/score-calculator.d.ts.map +0 -1
  62. package/dist/scoring/score-calculator.js +0 -520
  63. package/dist/scoring/score-calculator.js.map +0 -1
  64. package/dist/tests/manual-validation.d.ts +0 -8
  65. package/dist/tests/manual-validation.d.ts.map +0 -1
  66. package/dist/tests/manual-validation.js +0 -114
  67. package/dist/tests/manual-validation.js.map +0 -1
package/README.md CHANGED
@@ -1,22 +1,54 @@
1
- # 🩵⚡️faf-cli v3.0.5 - 🏆 1st Persistent Project AI Context CLI
2
- Powered by Anthropic-Approved code
3
- and featuring New Skills.md 🎸 integration
1
+ # faf-cli
2
+
3
+ ## TL;DR
4
+
5
+ **Problem:** AI needs persistent project context to work at its best.
6
+
7
+ **Solution:** The .faf format provides that context. This CLI creates, scores, and improves .faf files from your codebase.
8
+
9
+ **How it works:** Run `faf init` to create your .faf file. Get a score (0-100%) showing context quality. Higher scores = AI more in-tune with your project. Use `faf auto` and other commands to improve your score quickly. Align your .faf file with CLAUDE.md to maintain context persistently with bi-sync.
10
+
11
+ **Install:**
12
+ ```bash
13
+ # npm (works everywhere)
14
+ npm install -g faf-cli
15
+
16
+ # Homebrew (macOS/Linux)
17
+ brew install faf-cli
18
+ ```
19
+
20
+ **Quick start:**
21
+ ```bash
22
+ cd your-project
23
+ faf init # Creates .faf file
24
+ faf score # Check AI-readiness (0-100%)
25
+ ```
26
+
27
+ **CLI vs MCP clarity**
28
+ - **faf-cli** (this): Command-line tool that creates .faf files from your codebase → attach to any AI
29
+ - **claude-faf-mcp** ([npm](https://www.npmjs.com/package/claude-faf-mcp)): MCP server for Claude Desktop → lets Claude read .faf files natively
30
+
31
+ Most users want both: faf-cli creates .faf files, claude-faf-mcp lets Claude read them automatically.
32
+
33
+ [Website](https://faf.one) | [GitHub](https://github.com/Wolfe-Jam/faf-cli) | [Discussions](https://github.com/Wolfe-Jam/faf-cli/discussions)
34
+
35
+ ---
36
+
37
+ ## 📚 Complete Documentation
38
+
39
+ **For developers who want the full story**, here's everything about FAF's architecture, testing, and championship engineering standards.
4
40
 
5
41
  <div align="center">
6
42
 
7
43
  <img src="https://cdn.jsdelivr.net/npm/faf-cli@latest/assets/icons/orange-smiley.svg" alt="FAF Logo" width="64" />
8
44
 
9
- ## **FREE FOR ALL DEVS** 🆓 • **Growing Fast** 📈 • **AI-Context, On-Demand.**
10
-
11
- **Project DNA ✨ for Claude Code/ any AI CLI** •
12
- **Zero Faff Innit™🇬🇧**
45
+ **Free for all devs** 🆓 • **Project DNA ✨ for any AI** • **Zero Faff™🇬🇧**
13
46
 
14
47
  [![NPM Version](https://img.shields.io/npm/v/faf-cli?color=FF4500)](https://www.npmjs.com/package/faf-cli)
15
48
  [![Downloads](https://img.shields.io/npm/dt/faf-cli?color=00CCFF)](https://www.npmjs.com/package/faf-cli)
16
49
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
17
- [![TypeScript](https://img.shields.io/badge/TypeScript-100%25-3178C6?logo=typescript)](https://www.typescriptlang.org/)
18
50
 
19
- **[Website](https://faf.one)** • **[GitHub](https://github.com/Wolfe-Jam/faf-cli)** • **[Community](https://github.com/Wolfe-Jam/faf-cli/discussions)** • **[npm](https://www.npmjs.com/package/faf-cli)**
51
+ **[Website](https://faf.one)** • **[GitHub](https://github.com/Wolfe-Jam/faf-cli)** • **[Community](https://github.com/Wolfe-Jam/faf-cli/discussions)**
20
52
 
21
53
  </div>
22
54
 
@@ -0,0 +1,18 @@
1
+ /**
2
+ * BIG ORANGE 🍊 - Output Handler
3
+ * Pushes comparison results to Big🍊 web visualization
4
+ */
5
+ import type { ComparisonResults } from './types';
6
+ /**
7
+ * Push comparison results to Big🍊
8
+ * @param results - Comparison results to store
9
+ * @returns URL to view results
10
+ */
11
+ export declare function pushToBigO(results: ComparisonResults): Promise<string>;
12
+ /**
13
+ * Fetch session results (for Big🍊 web app)
14
+ * @param sessionId - Session ID to fetch
15
+ * @returns Comparison results
16
+ */
17
+ export declare function fetchSession(sessionId: string): Promise<ComparisonResults | null>;
18
+ //# sourceMappingURL=bigo-push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigo-push.d.ts","sourceRoot":"","sources":["../../src/big-orange/bigo-push.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B5E;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAYvF"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ /**
3
+ * BIG ORANGE 🍊 - Output Handler
4
+ * Pushes comparison results to Big🍊 web visualization
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.pushToBigO = pushToBigO;
41
+ exports.fetchSession = fetchSession;
42
+ const promises_1 = require("fs/promises");
43
+ const path_1 = require("path");
44
+ /**
45
+ * Push comparison results to Big🍊
46
+ * @param results - Comparison results to store
47
+ * @returns URL to view results
48
+ */
49
+ async function pushToBigO(results) {
50
+ const sessionId = results.sessionId;
51
+ // For now: Write to file system
52
+ // Later: POST to API endpoint
53
+ const dataDir = process.env.BIGO_DATA_DIR || '/tmp/big-orange-sessions';
54
+ const sessionFile = (0, path_1.join)(dataDir, `${sessionId}.json`);
55
+ try {
56
+ // Ensure directory exists
57
+ await (0, promises_1.mkdir)(dataDir, { recursive: true });
58
+ // Write session data
59
+ await (0, promises_1.writeFile)(sessionFile, JSON.stringify(results, null, 2), 'utf-8');
60
+ console.log(`✓ Session saved: ${sessionFile}`);
61
+ }
62
+ catch (error) {
63
+ console.error('Failed to save session:', error);
64
+ throw error;
65
+ }
66
+ // Return URL to Big🍊
67
+ const baseUrl = process.env.BIGO_URL || 'https://fafdev.tools';
68
+ return `${baseUrl}/BigO?session=${sessionId}`;
69
+ }
70
+ /**
71
+ * Fetch session results (for Big🍊 web app)
72
+ * @param sessionId - Session ID to fetch
73
+ * @returns Comparison results
74
+ */
75
+ async function fetchSession(sessionId) {
76
+ const dataDir = process.env.BIGO_DATA_DIR || '/tmp/big-orange-sessions';
77
+ const sessionFile = (0, path_1.join)(dataDir, `${sessionId}.json`);
78
+ try {
79
+ const { readFile } = await Promise.resolve().then(() => __importStar(require('fs/promises')));
80
+ const data = await readFile(sessionFile, 'utf-8');
81
+ return JSON.parse(data);
82
+ }
83
+ catch (error) {
84
+ console.error(`Session not found: ${sessionId}`);
85
+ return null;
86
+ }
87
+ }
88
+ //# sourceMappingURL=bigo-push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigo-push.js","sourceRoot":"","sources":["../../src/big-orange/bigo-push.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWH,gCA8BC;AAOD,oCAYC;AA1DD,0CAA+C;AAC/C,+BAA4B;AAG5B;;;;GAIG;AACI,KAAK,UAAU,UAAU,CAAC,OAA0B;IACzD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAEpC,gCAAgC;IAChC,8BAA8B;IAE9B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,0BAA0B,CAAC;IACxE,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,GAAG,SAAS,OAAO,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,0BAA0B;QAC1B,MAAM,IAAA,gBAAK,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1C,qBAAqB;QACrB,MAAM,IAAA,oBAAS,EACb,WAAW,EACX,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAChC,OAAO,CACR,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;IAEjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,sBAAsB;IACtB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,sBAAsB,CAAC;IAC/D,OAAO,GAAG,OAAO,iBAAiB,SAAS,EAAE,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,YAAY,CAAC,SAAiB;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,0BAA0B,CAAC;IACxE,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,OAAO,EAAE,GAAG,SAAS,OAAO,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,aAAa,GAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * BIG ORANGE 🍊 - Core Comparison Logic
3
+ * Compares AI responses with different .faf context levels
4
+ */
5
+ import type { ComparisonRequest, ComparisonResults } from './types';
6
+ /**
7
+ * Compare AI responses at two different .faf scores
8
+ * Calls Claude API twice in parallel with different context levels
9
+ */
10
+ export declare function compareContexts(request: ComparisonRequest): Promise<ComparisonResults>;
11
+ //# sourceMappingURL=compare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/big-orange/compare.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAiB,MAAM,SAAS,CAAC;AAOnF;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAmD5B"}
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ /**
3
+ * BIG ORANGE 🍊 - Core Comparison Logic
4
+ * Compares AI responses with different .faf context levels
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.compareContexts = compareContexts;
11
+ const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
12
+ const crypto_1 = require("crypto");
13
+ const faf_generator_1 = require("./faf-generator");
14
+ const faf_compiler_1 = require("../compiler/faf-compiler");
15
+ const fs_1 = require("fs");
16
+ const os_1 = require("os");
17
+ const path_1 = require("path");
18
+ /**
19
+ * Compare AI responses at two different .faf scores
20
+ * Calls Claude API twice in parallel with different context levels
21
+ */
22
+ async function compareContexts(request) {
23
+ console.log(`\n🍊 Comparing ${request.leftScore}% vs ${request.rightScore}%`);
24
+ console.log(`Prompt: "${request.prompt}"\n`);
25
+ // 1. Generate .faf instances at specified scores
26
+ const [leftFaf, rightFaf] = await Promise.all([
27
+ (0, faf_generator_1.generateFafInstance)(request.leftScore, request.projectPath),
28
+ (0, faf_generator_1.generateFafInstance)(request.rightScore, request.projectPath)
29
+ ]);
30
+ console.log(`Generated .faf instances:`);
31
+ console.log(` Left: ${request.leftScore}% (${leftFaf.content.length} chars)`);
32
+ console.log(` Right: ${request.rightScore}% (${rightFaf.content.length} chars)\n`);
33
+ // 2. Call Claude API twice (parallel for speed)
34
+ const anthropic = new sdk_1.default({
35
+ apiKey: process.env.ANTHROPIC_API_KEY
36
+ });
37
+ console.log('Calling Claude API...');
38
+ const [leftResponse, rightResponse] = await Promise.all([
39
+ callClaudeWithContext(anthropic, request.prompt, leftFaf.content, request.leftScore),
40
+ callClaudeWithContext(anthropic, request.prompt, rightFaf.content, request.rightScore)
41
+ ]);
42
+ console.log('✓ Both responses received\n');
43
+ // 3. Calculate delta metrics
44
+ const delta = calculateDelta(leftResponse, rightResponse);
45
+ const results = {
46
+ sessionId: (0, crypto_1.randomUUID)(),
47
+ timestamp: new Date(),
48
+ leftWindow: leftResponse,
49
+ rightWindow: rightResponse,
50
+ delta
51
+ };
52
+ return results;
53
+ }
54
+ /**
55
+ * Call Claude API with specific .faf context
56
+ * Uses FafCompiler for real scoring, no fake metrics
57
+ */
58
+ async function callClaudeWithContext(client, prompt, fafContent, score) {
59
+ const startTime = Date.now();
60
+ // Build system prompt based on .faf score
61
+ const systemPrompt = score > 0
62
+ ? `You are a developer with this project context:\n\n${fafContent}\n\nUse this context to inform your response.`
63
+ : 'You are a developer with no project context. Ask clarifying questions as needed.';
64
+ try {
65
+ // Call Claude API
66
+ const response = await client.messages.create({
67
+ model: 'claude-sonnet-4-20250514',
68
+ max_tokens: 4000,
69
+ system: systemPrompt,
70
+ messages: [{
71
+ role: 'user',
72
+ content: prompt
73
+ }]
74
+ });
75
+ const timeToComplete = (Date.now() - startTime) / 1000;
76
+ const aiResponse = response.content[0].type === 'text'
77
+ ? response.content[0].text
78
+ : '';
79
+ // Get real FAF score using FafCompiler
80
+ const { emoji, metadata } = await scoreFafContent(fafContent, score);
81
+ return {
82
+ fafScore: score,
83
+ aiResponse,
84
+ timeToComplete,
85
+ emoji,
86
+ fafMetadata: metadata
87
+ };
88
+ }
89
+ catch (error) {
90
+ console.error(`Error calling Claude (score ${score}%):`, error);
91
+ throw error;
92
+ }
93
+ }
94
+ /**
95
+ * Score .faf content using FafCompiler
96
+ * Returns championship emoji and metadata
97
+ */
98
+ async function scoreFafContent(fafContent, expectedScore) {
99
+ // Write .faf to temp file
100
+ const tempDir = (0, path_1.join)((0, os_1.tmpdir)(), 'big-orange-scoring');
101
+ (0, fs_1.mkdirSync)(tempDir, { recursive: true });
102
+ const tempFafPath = (0, path_1.join)(tempDir, `temp-${Date.now()}.faf`);
103
+ try {
104
+ (0, fs_1.writeFileSync)(tempFafPath, fafContent);
105
+ // Use FafCompiler to score
106
+ const compiler = new faf_compiler_1.FafCompiler();
107
+ const result = await compiler.compile(tempFafPath);
108
+ // Get championship emoji based on score
109
+ const emoji = getChampionshipEmoji(result.score);
110
+ return {
111
+ emoji,
112
+ metadata: {
113
+ filled: result.filled,
114
+ total: result.total,
115
+ checksum: result.checksum
116
+ }
117
+ };
118
+ }
119
+ catch (error) {
120
+ console.error('Error scoring .faf:', error);
121
+ // Fallback to expected score
122
+ return {
123
+ emoji: getChampionshipEmoji(expectedScore)
124
+ };
125
+ }
126
+ }
127
+ /**
128
+ * Get championship emoji based on score
129
+ * Uses FAF CLI's standard scoring tiers
130
+ */
131
+ function getChampionshipEmoji(score) {
132
+ if (score >= 85)
133
+ return '🏆'; // Trophy (championship)
134
+ if (score >= 70)
135
+ return '🥇'; // Gold medal
136
+ if (score >= 55)
137
+ return '🥈'; // Silver medal
138
+ if (score >= 40)
139
+ return '🥉'; // Bronze medal
140
+ if (score >= 35)
141
+ return '🟢'; // Green (good)
142
+ if (score >= 20)
143
+ return '🟡'; // Yellow (warning)
144
+ if (score >= 10)
145
+ return '🔴'; // Red (poor)
146
+ return '🤍'; // White (empty)
147
+ }
148
+ /**
149
+ * Calculate delta metrics between two responses
150
+ * Simple comparison: time saved and score improvement
151
+ */
152
+ function calculateDelta(left, right) {
153
+ const timeSaved = left.timeToComplete - right.timeToComplete;
154
+ const scoreImprovement = right.fafScore - left.fafScore;
155
+ // Generate verdict
156
+ let verdict = '';
157
+ if (scoreImprovement > 0) {
158
+ if (timeSaved > 0) {
159
+ verdict = `.faf-${right.fafScore}% completed ${timeSaved.toFixed(1)}s faster with ${scoreImprovement}% better context`;
160
+ }
161
+ else {
162
+ verdict = `.faf-${right.fafScore}% had ${scoreImprovement}% better context`;
163
+ }
164
+ }
165
+ else {
166
+ verdict = 'Context levels comparison complete';
167
+ }
168
+ return {
169
+ timeSaved,
170
+ scoreImprovement,
171
+ verdict
172
+ };
173
+ }
174
+ //# sourceMappingURL=compare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/big-orange/compare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * BIG ORANGE 🍊 - REAL .faf Instance Generator
3
+ * Generates .faf files at different completeness levels using ACTUAL .faf format
4
+ * Based on faf-cli.faf structure
5
+ */
6
+ import type { FafInstance } from './types';
7
+ /**
8
+ * Generate a .faf instance at a specific completeness score
9
+ * Uses real .faf YAML format with slot-based scoring
10
+ *
11
+ * @param score - Completeness level (0-100)
12
+ * @param projectPath - Optional project path for analysis
13
+ * @returns FafInstance with generated YAML content
14
+ */
15
+ export declare function generateFafInstance(score: number, projectPath?: string): Promise<FafInstance>;
16
+ /**
17
+ * Calculate a project's current .faf birth score
18
+ * @param projectPath - Path to project
19
+ * @returns Birth score (0-100)
20
+ */
21
+ export declare function calculateBirthScore(projectPath: string): Promise<number>;
22
+ //# sourceMappingURL=faf-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"faf-generator.d.ts","sourceRoot":"","sources":["../../src/big-orange/faf-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,WAAW,CAAC,CAuMtB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU9E"}
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ /**
3
+ * BIG ORANGE 🍊 - REAL .faf Instance Generator
4
+ * Generates .faf files at different completeness levels using ACTUAL .faf format
5
+ * Based on faf-cli.faf structure
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.generateFafInstance = generateFafInstance;
9
+ exports.calculateBirthScore = calculateBirthScore;
10
+ /**
11
+ * Generate a .faf instance at a specific completeness score
12
+ * Uses real .faf YAML format with slot-based scoring
13
+ *
14
+ * @param score - Completeness level (0-100)
15
+ * @param projectPath - Optional project path for analysis
16
+ * @returns FafInstance with generated YAML content
17
+ */
18
+ async function generateFafInstance(score, projectPath) {
19
+ if (score === 0) {
20
+ return {
21
+ score: 0,
22
+ content: '',
23
+ metadata: {}
24
+ };
25
+ }
26
+ // Calculate slots based on score
27
+ // Real .faf has 21 total slots
28
+ const totalSlots = 21;
29
+ const filledSlots = Math.round((score / 100) * totalSlots);
30
+ const slotPercentage = Math.round((filledSlots / totalSlots) * 100);
31
+ // Build .faf content as YAML
32
+ const sections = [];
33
+ // ALWAYS include (even at low scores)
34
+ sections.push(`faf_version: "2.5.0"`);
35
+ sections.push(`ai_scoring_system: "2025-09-20"`);
36
+ sections.push(`ai_score: "${score}%"`);
37
+ // Score 10%+: Add confidence and value
38
+ if (score >= 10) {
39
+ const confidence = score >= 70 ? 'HIGH' : score >= 40 ? 'MEDIUM' : 'LOW';
40
+ sections.push(`ai_confidence: ${confidence}`);
41
+ sections.push(`ai_value: "${score >= 80 ? '30_seconds_replaces_20_minutes' : 'reduced_questions'}"`);
42
+ }
43
+ // Score 20%+: Add ai_tldr
44
+ if (score >= 20) {
45
+ sections.push(`ai_tldr:`);
46
+ sections.push(` project: "Demo Project - Color Picker Component"`);
47
+ sections.push(` stack: ${score >= 50 ? 'React/TypeScript/Vite/Vercel' : 'React'}`);
48
+ sections.push(` quality_bar: ${score >= 80 ? 'ZERO_ERRORS_F1_STANDARDS' : 'STANDARD'}`);
49
+ sections.push(` current_focus: Component development`);
50
+ sections.push(` your_role: Build features with ${score >= 60 ? 'perfect' : 'available'} context`);
51
+ }
52
+ // Score 30%+: Add instant_context
53
+ if (score >= 30) {
54
+ sections.push(`instant_context:`);
55
+ sections.push(` what_building: "Color picker component"`);
56
+ sections.push(` tech_stack: React${score >= 50 ? '/TypeScript/Vite' : ''}`);
57
+ sections.push(` main_language: ${score >= 40 ? 'TypeScript' : 'JavaScript'}`);
58
+ if (score >= 50) {
59
+ sections.push(` deployment: Vercel`);
60
+ sections.push(` key_files:`);
61
+ sections.push(` - package.json`);
62
+ sections.push(` - tsconfig.json`);
63
+ }
64
+ }
65
+ // Score 40%+: Add context_quality
66
+ if (score >= 40) {
67
+ sections.push(`context_quality:`);
68
+ sections.push(` slots_filled: "${filledSlots}/${totalSlots} (${slotPercentage}%)"`);
69
+ sections.push(` ai_confidence: ${score >= 70 ? 'HIGH' : 'MEDIUM'}`);
70
+ sections.push(` handoff_ready: ${score >= 70 ? 'true' : 'false'}`);
71
+ if (score < 90) {
72
+ sections.push(` missing_context:`);
73
+ sections.push(` - ${score < 60 ? 'Project structure' : 'Performance metrics'}`);
74
+ }
75
+ }
76
+ // Score 50%+: Add project section
77
+ if (score >= 50) {
78
+ sections.push(`project:`);
79
+ sections.push(` name: Demo Color Picker`);
80
+ sections.push(` goal: "Build reusable color picker component"`);
81
+ sections.push(` main_language: TypeScript`);
82
+ sections.push(` generated: "${new Date().toISOString()}"`);
83
+ if (score >= 80) {
84
+ sections.push(` mission: "🚀 Make Your AI Happy! 🧡 Trust-Driven 🤖"`);
85
+ sections.push(` revolution: "30 seconds replaces 20 minutes of questions"`);
86
+ sections.push(` brand: "F1-Inspired Software Engineering - Championship AI Context"`);
87
+ }
88
+ }
89
+ // Score 60%+: Add ai_instructions
90
+ if (score >= 60) {
91
+ sections.push(`ai_instructions:`);
92
+ sections.push(` priority_order:`);
93
+ sections.push(` - "1. Read THIS .faf file first"`);
94
+ if (score >= 70) {
95
+ sections.push(` - "2. Check CLAUDE.md for session context"`);
96
+ sections.push(` - "3. Review package.json for dependencies"`);
97
+ }
98
+ sections.push(` working_style:`);
99
+ sections.push(` code_first: true`);
100
+ sections.push(` explanations: minimal`);
101
+ sections.push(` quality_bar: ${score >= 80 ? 'zero_errors' : 'standard'}`);
102
+ sections.push(` testing: ${score >= 70 ? 'required' : 'recommended'}`);
103
+ if (score >= 80) {
104
+ sections.push(` warnings:`);
105
+ sections.push(` - All TypeScript must pass strict mode`);
106
+ sections.push(` - Test coverage required for new features`);
107
+ }
108
+ }
109
+ // Score 70%+: Add stack
110
+ if (score >= 70) {
111
+ sections.push(`stack:`);
112
+ sections.push(` frontend: React`);
113
+ sections.push(` css_framework: Tailwind CSS`);
114
+ sections.push(` ui_library: Headless UI`);
115
+ sections.push(` state_management: React Hooks`);
116
+ sections.push(` backend: None`);
117
+ sections.push(` runtime: "Node.js >=18.0.0"`);
118
+ sections.push(` database: None`);
119
+ sections.push(` build: Vite`);
120
+ sections.push(` package_manager: npm`);
121
+ sections.push(` api_type: Component Library`);
122
+ sections.push(` hosting: Vercel`);
123
+ if (score >= 85) {
124
+ sections.push(` cicd: GitHub Actions`);
125
+ }
126
+ }
127
+ // Score 80%+: Add preferences
128
+ if (score >= 80) {
129
+ sections.push(`preferences:`);
130
+ sections.push(` quality_bar: zero_errors`);
131
+ sections.push(` commit_style: conventional_emoji`);
132
+ sections.push(` response_style: concise_code_first`);
133
+ sections.push(` explanation_level: minimal`);
134
+ sections.push(` communication: direct`);
135
+ sections.push(` testing: required`);
136
+ sections.push(` documentation: as_needed`);
137
+ }
138
+ // Score 85%+: Add state
139
+ if (score >= 85) {
140
+ sections.push(`state:`);
141
+ sections.push(` phase: development`);
142
+ sections.push(` version: "1.0.0"`);
143
+ sections.push(` focus: component_implementation`);
144
+ sections.push(` status: green_flag`);
145
+ sections.push(` next_milestone: production_ready`);
146
+ sections.push(` blockers:`);
147
+ }
148
+ // Score 90%+: Add tags
149
+ if (score >= 90) {
150
+ sections.push(`tags:`);
151
+ sections.push(` auto_generated:`);
152
+ sections.push(` - react`);
153
+ sections.push(` - typescript`);
154
+ sections.push(` - component`);
155
+ sections.push(` - color-picker`);
156
+ sections.push(` smart_defaults:`);
157
+ sections.push(` - .faf`);
158
+ sections.push(` - ai-ready`);
159
+ sections.push(` - "2025"`);
160
+ sections.push(` user_defined:`);
161
+ }
162
+ // Score 95%+: Add human_context
163
+ if (score >= 95) {
164
+ sections.push(`human_context:`);
165
+ sections.push(` who: Development team`);
166
+ sections.push(` what: "Reusable color picker component for design system"`);
167
+ sections.push(` why: Standardize color selection across applications`);
168
+ sections.push(` where: Component library`);
169
+ sections.push(` when: "Active development"`);
170
+ sections.push(` how: "TypeScript React component with accessibility"`);
171
+ sections.push(` context_score: ${slotPercentage}`);
172
+ sections.push(` total_prd_score: ${score}`);
173
+ sections.push(` success_rate: "95%"`);
174
+ }
175
+ // Score 99%+: Add ai_scoring_details (championship level)
176
+ if (score >= 99) {
177
+ sections.push(`ai_scoring_details:`);
178
+ sections.push(` system_date: "2025-09-20"`);
179
+ sections.push(` slot_based_percentage: ${slotPercentage}`);
180
+ sections.push(` ai_score: ${score}`);
181
+ sections.push(` total_slots: ${totalSlots}`);
182
+ sections.push(` filled_slots: ${filledSlots}`);
183
+ sections.push(` scoring_method: "Honest percentage - no fake minimums"`);
184
+ sections.push(` trust_embedded: "COUNT ONCE architecture - trust MY embedded scores"`);
185
+ }
186
+ const content = sections.join('\n');
187
+ return {
188
+ score,
189
+ content,
190
+ metadata: {
191
+ framework: 'React',
192
+ language: 'TypeScript',
193
+ styling: 'Tailwind CSS',
194
+ quality_bar: score >= 80 ? 'ZERO_ERRORS_F1_STANDARDS' : 'STANDARD',
195
+ slots_filled: filledSlots,
196
+ total_slots: totalSlots
197
+ }
198
+ };
199
+ }
200
+ /**
201
+ * Calculate a project's current .faf birth score
202
+ * @param projectPath - Path to project
203
+ * @returns Birth score (0-100)
204
+ */
205
+ async function calculateBirthScore(projectPath) {
206
+ // TODO: Implement actual .faf file analysis
207
+ // This would:
208
+ // 1. Check if .faf exists
209
+ // 2. Parse the YAML
210
+ // 3. Count filled slots
211
+ // 4. Calculate score based on slot completeness
212
+ // For now, return placeholder
213
+ return 42;
214
+ }
215
+ //# sourceMappingURL=faf-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"faf-generator.js","sourceRoot":"","sources":["../../src/big-orange/faf-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * BIG ORANGE 🍊 - CLI Command
4
+ * Compare AI responses at different .faf scores
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/big-orange/index.ts"],"names":[],"mappings":";AACA;;;GAGG"}