faf-mcp 2.3.0 → 3.0.0

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 (178) hide show
  1. package/CHANGELOG.md +42 -3
  2. package/CLAUDE.md +7 -7
  3. package/README.md +73 -74
  4. package/dist/src/faf-core/commands/bi-sync.d.ts +1 -3
  5. package/dist/src/faf-core/commands/bi-sync.js +21 -64
  6. package/dist/src/faf-core/commands/bi-sync.js.map +1 -1
  7. package/dist/src/faf-core/commands/sync.js.map +1 -1
  8. package/dist/src/faf-core/engines/dependency-tsa.js.map +1 -1
  9. package/dist/src/faf-core/fix-once/colors.js +1 -1
  10. package/dist/src/faf-core/fix-once/colors.js.map +1 -1
  11. package/dist/src/faf-core/parsers/agents-parser.d.ts +15 -0
  12. package/dist/src/faf-core/parsers/agents-parser.js +29 -123
  13. package/dist/src/faf-core/parsers/agents-parser.js.map +1 -1
  14. package/dist/src/faf-core/parsers/conductor-parser.js +1 -1
  15. package/dist/src/faf-core/parsers/conductor-parser.js.map +1 -1
  16. package/dist/src/faf-core/parsers/cursorrules-parser.d.ts +15 -0
  17. package/dist/src/faf-core/parsers/cursorrules-parser.js +54 -111
  18. package/dist/src/faf-core/parsers/cursorrules-parser.js.map +1 -1
  19. package/dist/src/faf-core/parsers/faf-git-generator.js +0 -1
  20. package/dist/src/faf-core/parsers/faf-git-generator.js.map +1 -1
  21. package/dist/src/faf-core/parsers/gemini-parser.d.ts +10 -0
  22. package/dist/src/faf-core/parsers/gemini-parser.js +19 -77
  23. package/dist/src/faf-core/parsers/gemini-parser.js.map +1 -1
  24. package/dist/src/handlers/engine-adapter.d.ts +13 -12
  25. package/dist/src/handlers/engine-adapter.js +124 -688
  26. package/dist/src/handlers/engine-adapter.js.map +1 -1
  27. package/dist/src/handlers/resources.d.ts +19 -1
  28. package/dist/src/handlers/resources.js +108 -23
  29. package/dist/src/handlers/resources.js.map +1 -1
  30. package/dist/src/handlers/skills.d.ts +70 -0
  31. package/dist/src/handlers/skills.js +174 -0
  32. package/dist/src/handlers/skills.js.map +1 -0
  33. package/dist/src/handlers/tools.d.ts +41 -5
  34. package/dist/src/handlers/tools.js +213 -258
  35. package/dist/src/handlers/tools.js.map +1 -1
  36. package/dist/src/server.d.ts +4 -0
  37. package/dist/src/server.js +51 -6
  38. package/dist/src/server.js.map +1 -1
  39. package/dist/src/utils/faf-cli-bridge.d.ts +2 -0
  40. package/dist/src/utils/faf-cli-bridge.js +16 -0
  41. package/dist/src/utils/faf-cli-bridge.js.map +1 -1
  42. package/package.json +17 -14
  43. package/project.faf +23 -5
  44. package/scripts/check-engines.mjs +53 -0
  45. package/scripts/run-tests.sh +54 -0
  46. package/scripts/sync-version.js +33 -19
  47. package/skills/faf-ide/SKILL.md +40 -0
  48. package/dist/src/config/visibility.d.ts +0 -41
  49. package/dist/src/config/visibility.js +0 -158
  50. package/dist/src/config/visibility.js.map +0 -1
  51. package/dist/src/faf-core/commands/audit.d.ts +0 -21
  52. package/dist/src/faf-core/commands/audit.js +0 -83
  53. package/dist/src/faf-core/commands/audit.js.map +0 -1
  54. package/dist/src/faf-core/commands/auto.d.ts +0 -25
  55. package/dist/src/faf-core/commands/auto.js +0 -74
  56. package/dist/src/faf-core/commands/auto.js.map +0 -1
  57. package/dist/src/faf-core/commands/doctor.d.ts +0 -17
  58. package/dist/src/faf-core/commands/doctor.js +0 -198
  59. package/dist/src/faf-core/commands/doctor.js.map +0 -1
  60. package/dist/src/faf-core/commands/enhance.d.ts +0 -46
  61. package/dist/src/faf-core/commands/enhance.js +0 -360
  62. package/dist/src/faf-core/commands/enhance.js.map +0 -1
  63. package/dist/src/faf-core/commands/formats.d.ts +0 -22
  64. package/dist/src/faf-core/commands/formats.js +0 -117
  65. package/dist/src/faf-core/commands/formats.js.map +0 -1
  66. package/dist/src/faf-core/commands/human.d.ts +0 -27
  67. package/dist/src/faf-core/commands/human.js +0 -183
  68. package/dist/src/faf-core/commands/human.js.map +0 -1
  69. package/dist/src/faf-core/commands/init.d.ts +0 -26
  70. package/dist/src/faf-core/commands/init.js +0 -114
  71. package/dist/src/faf-core/commands/init.js.map +0 -1
  72. package/dist/src/faf-core/commands/innit.d.ts +0 -7
  73. package/dist/src/faf-core/commands/innit.js +0 -13
  74. package/dist/src/faf-core/commands/innit.js.map +0 -1
  75. package/dist/src/faf-core/commands/migrate.d.ts +0 -15
  76. package/dist/src/faf-core/commands/migrate.js +0 -86
  77. package/dist/src/faf-core/commands/migrate.js.map +0 -1
  78. package/dist/src/faf-core/commands/quick.d.ts +0 -16
  79. package/dist/src/faf-core/commands/quick.js +0 -184
  80. package/dist/src/faf-core/commands/quick.js.map +0 -1
  81. package/dist/src/faf-core/commands/readme.d.ts +0 -47
  82. package/dist/src/faf-core/commands/readme.js +0 -361
  83. package/dist/src/faf-core/commands/readme.js.map +0 -1
  84. package/dist/src/faf-core/commands/score.d.ts +0 -47
  85. package/dist/src/faf-core/commands/score.js +0 -49
  86. package/dist/src/faf-core/commands/score.js.map +0 -1
  87. package/dist/src/faf-core/commands/update.d.ts +0 -12
  88. package/dist/src/faf-core/commands/update.js +0 -46
  89. package/dist/src/faf-core/commands/update.js.map +0 -1
  90. package/dist/src/faf-core/commands/validate.d.ts +0 -21
  91. package/dist/src/faf-core/commands/validate.js +0 -81
  92. package/dist/src/faf-core/commands/validate.js.map +0 -1
  93. package/dist/src/faf-core/compiler/faf-compiler.d.ts +0 -138
  94. package/dist/src/faf-core/compiler/faf-compiler.js +0 -1362
  95. package/dist/src/faf-core/compiler/faf-compiler.js.map +0 -1
  96. package/dist/src/faf-core/engines/fab-formats-processor.d.ts +0 -166
  97. package/dist/src/faf-core/engines/fab-formats-processor.js +0 -1274
  98. package/dist/src/faf-core/engines/fab-formats-processor.js.map +0 -1
  99. package/dist/src/faf-core/engines/faf-dna.d.ts +0 -159
  100. package/dist/src/faf-core/engines/faf-dna.js +0 -555
  101. package/dist/src/faf-core/engines/faf-dna.js.map +0 -1
  102. package/dist/src/faf-core/engines/relentless-context-extractor.d.ts +0 -100
  103. package/dist/src/faf-core/engines/relentless-context-extractor.js +0 -625
  104. package/dist/src/faf-core/engines/relentless-context-extractor.js.map +0 -1
  105. package/dist/src/faf-core/fix-once/types.d.ts +0 -257
  106. package/dist/src/faf-core/fix-once/types.js +0 -26
  107. package/dist/src/faf-core/fix-once/types.js.map +0 -1
  108. package/dist/src/faf-core/generators/faf-generator-championship.d.ts +0 -16
  109. package/dist/src/faf-core/generators/faf-generator-championship.js +0 -463
  110. package/dist/src/faf-core/generators/faf-generator-championship.js.map +0 -1
  111. package/dist/src/faf-core/inject.d.ts +0 -19
  112. package/dist/src/faf-core/inject.js +0 -57
  113. package/dist/src/faf-core/inject.js.map +0 -1
  114. package/dist/src/faf-core/parsers/index.d.ts +0 -12
  115. package/dist/src/faf-core/parsers/index.js +0 -29
  116. package/dist/src/faf-core/parsers/index.js.map +0 -1
  117. package/dist/src/faf-core/utils/balance-visualizer.d.ts +0 -37
  118. package/dist/src/faf-core/utils/balance-visualizer.js +0 -197
  119. package/dist/src/faf-core/utils/balance-visualizer.js.map +0 -1
  120. package/dist/src/faf-core/utils/championship-style.d.ts +0 -109
  121. package/dist/src/faf-core/utils/championship-style.js +0 -219
  122. package/dist/src/faf-core/utils/championship-style.js.map +0 -1
  123. package/dist/src/faf-core/utils/chrome-extension-detector.d.ts +0 -73
  124. package/dist/src/faf-core/utils/chrome-extension-detector.js +0 -268
  125. package/dist/src/faf-core/utils/chrome-extension-detector.js.map +0 -1
  126. package/dist/src/faf-core/utils/platform-detector.d.ts +0 -30
  127. package/dist/src/faf-core/utils/platform-detector.js +0 -218
  128. package/dist/src/faf-core/utils/platform-detector.js.map +0 -1
  129. package/dist/src/faf-core/utils/technical-credit.d.ts +0 -35
  130. package/dist/src/faf-core/utils/technical-credit.js +0 -286
  131. package/dist/src/faf-core/utils/technical-credit.js.map +0 -1
  132. package/dist/src/faf-core/utils/yaml-generator.d.ts +0 -41
  133. package/dist/src/faf-core/utils/yaml-generator.js +0 -360
  134. package/dist/src/faf-core/utils/yaml-generator.js.map +0 -1
  135. package/dist/src/handlers/behavioral-instruction.d.ts +0 -16
  136. package/dist/src/handlers/behavioral-instruction.js +0 -43
  137. package/dist/src/handlers/behavioral-instruction.js.map +0 -1
  138. package/dist/src/handlers/championship-tools.d.ts +0 -116
  139. package/dist/src/handlers/championship-tools.js +0 -2320
  140. package/dist/src/handlers/championship-tools.js.map +0 -1
  141. package/dist/src/handlers/cloud-handler.d.ts +0 -59
  142. package/dist/src/handlers/cloud-handler.js +0 -348
  143. package/dist/src/handlers/cloud-handler.js.map +0 -1
  144. package/dist/src/handlers/tool-registry.d.ts +0 -23
  145. package/dist/src/handlers/tool-registry.js +0 -68
  146. package/dist/src/handlers/tool-registry.js.map +0 -1
  147. package/dist/src/handlers/tool-types.d.ts +0 -167
  148. package/dist/src/handlers/tool-types.js +0 -7
  149. package/dist/src/handlers/tool-types.js.map +0 -1
  150. package/dist/src/test-all-functions.d.ts +0 -15
  151. package/dist/src/test-all-functions.js +0 -163
  152. package/dist/src/test-all-functions.js.map +0 -1
  153. package/dist/src/types/mcp-tools.d.ts +0 -53
  154. package/dist/src/types/mcp-tools.js +0 -77
  155. package/dist/src/types/mcp-tools.js.map +0 -1
  156. package/dist/src/types/tool-visibility.d.ts +0 -36
  157. package/dist/src/types/tool-visibility.js +0 -551
  158. package/dist/src/types/tool-visibility.js.map +0 -1
  159. package/dist/src/utils/auto-path-detection.d.ts +0 -26
  160. package/dist/src/utils/auto-path-detection.js +0 -198
  161. package/dist/src/utils/auto-path-detection.js.map +0 -1
  162. package/dist/src/utils/championship-format.d.ts +0 -30
  163. package/dist/src/utils/championship-format.js +0 -81
  164. package/dist/src/utils/championship-format.js.map +0 -1
  165. package/dist/src/utils/cli-detector.d.ts +0 -17
  166. package/dist/src/utils/cli-detector.js +0 -247
  167. package/dist/src/utils/cli-detector.js.map +0 -1
  168. package/dist/src/utils/display-protocol.d.ts +0 -57
  169. package/dist/src/utils/display-protocol.js +0 -131
  170. package/dist/src/utils/display-protocol.js.map +0 -1
  171. package/dist/src/utils/username-detector.d.ts +0 -27
  172. package/dist/src/utils/username-detector.js +0 -90
  173. package/dist/src/utils/username-detector.js.map +0 -1
  174. package/dist/src/utils/visual-style.d.ts +0 -62
  175. package/dist/src/utils/visual-style.js +0 -166
  176. package/dist/src/utils/visual-style.js.map +0 -1
  177. package/scripts/postinstall.js +0 -50
  178. package/skill/SKILL.md +0 -385
@@ -1 +0,0 @@
1
- {"version":3,"file":"quick.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/quick.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- /**
2
- * README Context Extraction - MCP Bundled Version
3
- * Non-interactive extraction of 6 Ws from README files
4
- */
5
- export interface ExtractedContext {
6
- who?: string;
7
- what?: string;
8
- where?: string;
9
- why?: string;
10
- when?: string;
11
- how?: string;
12
- confidence: {
13
- who: number;
14
- what: number;
15
- where: number;
16
- why: number;
17
- when: number;
18
- how: number;
19
- overall: number;
20
- };
21
- }
22
- export interface ReadmeExtractResult {
23
- success: boolean;
24
- message: string;
25
- extracted?: ExtractedContext;
26
- readmePath?: string;
27
- error?: string;
28
- }
29
- /**
30
- * Extract 6 Ws from README content
31
- * Ported from faf-cli v4.3.0
32
- */
33
- export declare function extractSixWs(content: string): ExtractedContext;
34
- /**
35
- * Extract context from README file
36
- * Non-interactive MCP version
37
- */
38
- export declare function readmeExtractCommand(projectPath: string): Promise<ReadmeExtractResult>;
39
- /**
40
- * Extract and merge README context into project.faf
41
- * Combines extraction + merging in one step
42
- */
43
- export declare function readmeMergeCommand(projectPath: string, options?: {
44
- overwrite?: boolean;
45
- }): Promise<ReadmeExtractResult & {
46
- fieldsUpdated?: string[];
47
- }>;
@@ -1,361 +0,0 @@
1
- "use strict";
2
- /**
3
- * README Context Extraction - MCP Bundled Version
4
- * Non-interactive extraction of 6 Ws from README files
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.extractSixWs = extractSixWs;
41
- exports.readmeExtractCommand = readmeExtractCommand;
42
- exports.readmeMergeCommand = readmeMergeCommand;
43
- const fs_1 = require("fs");
44
- const yaml_1 = require("yaml");
45
- const path = __importStar(require("path"));
46
- /**
47
- * Find README file in project directory
48
- */
49
- async function findReadmeFile(projectPath) {
50
- const possibleNames = [
51
- 'README.md',
52
- 'readme.md',
53
- 'Readme.md',
54
- 'README.markdown',
55
- 'README',
56
- ];
57
- for (const name of possibleNames) {
58
- const readmePath = path.join(projectPath, name);
59
- try {
60
- await fs_1.promises.access(readmePath);
61
- return readmePath;
62
- }
63
- catch {
64
- // File doesn't exist, continue
65
- }
66
- }
67
- return null;
68
- }
69
- /**
70
- * Extract 6 Ws from README content
71
- * Ported from faf-cli v4.3.0
72
- */
73
- function extractSixWs(content) {
74
- const context = {
75
- confidence: {
76
- who: 0,
77
- what: 0,
78
- where: 0,
79
- why: 0,
80
- when: 0,
81
- how: 0,
82
- overall: 0,
83
- },
84
- };
85
- // WHAT extraction
86
- const whatPatterns = [
87
- // Bold subtitle pattern
88
- /^[#\s]*(.+?)\n\*\*(.+?)\*\*/m,
89
- // Blockquote tagline
90
- /^>\s*\*\*(.+?)\*\*/m,
91
- // First paragraph after title
92
- /^#\s+.+\n\n(.+?)(?:\n\n|\n#)/s,
93
- // TL;DR
94
- /\*\*TL;DR:?\*\*\s*(.+?)(?:\n\n|\n#)/is,
95
- // Description section
96
- /##\s+(?:Description|About)\n+(.+?)(?:\n\n|\n#)/is,
97
- ];
98
- for (const pattern of whatPatterns) {
99
- const match = content.match(pattern);
100
- if (match) {
101
- const captured = match[2] || match[1];
102
- if (captured && captured.length > 10 && captured.length < 200) {
103
- context.what = captured.trim();
104
- context.confidence.what = 0.8;
105
- break;
106
- }
107
- }
108
- }
109
- // WHY extraction
110
- const whyPatterns = [
111
- // Explicit Why section
112
- /##\s+Why\s*\n+(.+?)(?:\n\n|\n#)/is,
113
- // Problem/Solution pattern
114
- /##\s+(?:The )?Problem\s*\n+(.+?)(?:\n\n|\n#)/is,
115
- // Motivation section
116
- /##\s+Motivation\s*\n+(.+?)(?:\n\n|\n#)/is,
117
- // Benefits/Features with "saves" or "reduces"
118
- /(?:saves?|reduces?|eliminates?)\s+(.+?)(?:\n|\.)/i,
119
- ];
120
- for (const pattern of whyPatterns) {
121
- const match = content.match(pattern);
122
- if (match && match[1]) {
123
- const captured = match[1].trim();
124
- if (captured.length > 10 && captured.length < 300) {
125
- context.why = captured;
126
- context.confidence.why = 0.7;
127
- break;
128
- }
129
- }
130
- }
131
- // WHO extraction
132
- const whoPatterns = [
133
- // "for developers/teams/etc"
134
- /\bfor\s+((?:(?:web|mobile|backend|frontend|full-?stack|data|ML|AI|DevOps)\s+)?(?:developers?|engineers?|teams?|designers?|architects?|programmers?))/i,
135
- // "built for X"
136
- /\bbuilt\s+for\s+(.+?)(?:\.|,|\n)/i,
137
- // "designed for X"
138
- /\bdesigned\s+for\s+(.+?)(?:\.|,|\n)/i,
139
- ];
140
- for (const pattern of whoPatterns) {
141
- const match = content.match(pattern);
142
- if (match && match[1]) {
143
- const captured = match[1].trim();
144
- if (captured.length > 3 && captured.length < 100) {
145
- context.who = captured;
146
- context.confidence.who = 0.6;
147
- break;
148
- }
149
- }
150
- }
151
- // WHERE extraction (platform/environment)
152
- const platformIndicators = {
153
- 'Terminal/CLI': /\b(?:npm|pip|cargo|brew|cli|command[\s-]?line)\b/i,
154
- 'Browser': /\b(?:browser|chrome|firefox|safari|web|frontend|client-side)\b/i,
155
- 'Node.js': /\b(?:node\.?js|npm|express|fastify)\b/i,
156
- 'Cloud': /\b(?:AWS|Azure|GCP|cloud|serverless|lambda|vercel|netlify)\b/i,
157
- 'Docker': /\b(?:docker|container|kubernetes|k8s)\b/i,
158
- 'Desktop': /\b(?:electron|tauri|desktop|native)\b/i,
159
- };
160
- const whereMatches = [];
161
- for (const [platform, pattern] of Object.entries(platformIndicators)) {
162
- if (pattern.test(content)) {
163
- whereMatches.push(platform);
164
- }
165
- }
166
- if (whereMatches.length > 0) {
167
- context.where = whereMatches.join(', ');
168
- context.confidence.where = Math.min(0.7, whereMatches.length * 0.2);
169
- }
170
- // WHEN extraction (status, timeline)
171
- const whenPatterns = [
172
- // Status badges
173
- /!\[.*?\]\(https:\/\/(?:github\.com|shields\.io|badge\.fury\.io|circleci\.com|travis-ci\.org|github\.com\/.*?\/workflows|img\.shields\.io).*?\)/,
174
- // Version indicators
175
- /\bv?\d+\.\d+\.\d+\b/,
176
- // Test status
177
- /\b\d+\/\d+\s+tests?\s+passing\b/i,
178
- // Production ready indicators
179
- /\b(?:production[\s-]?ready|stable|beta|alpha|experimental)\b/i,
180
- ];
181
- const whenIndicators = [];
182
- for (const pattern of whenPatterns) {
183
- const matches = content.match(new RegExp(pattern, 'g'));
184
- if (matches) {
185
- whenIndicators.push(...matches);
186
- }
187
- }
188
- if (whenIndicators.length > 0) {
189
- // Extract status
190
- const statusMatch = content.match(/\b(production[\s-]?ready|stable|beta|alpha|experimental)\b/i);
191
- const testsMatch = content.match(/\b(\d+\/\d+)\s+tests?\s+passing\b/i);
192
- const versionMatch = content.match(/\bv?(\d+\.\d+\.\d+)\b/);
193
- const whenParts = [];
194
- if (statusMatch)
195
- whenParts.push(statusMatch[1]);
196
- if (testsMatch)
197
- whenParts.push(`${testsMatch[1]} tests passing`);
198
- if (versionMatch && !whenParts.length)
199
- whenParts.push(`v${versionMatch[1]}`);
200
- context.when = whenParts.join(', ') || 'Active development';
201
- context.confidence.when = 0.5;
202
- }
203
- // HOW extraction (getting started)
204
- const howPatterns = [
205
- // Quick Start section
206
- /##\s+(?:Quick\s+Start|Getting\s+Started|Installation)\s*\n+```(?:bash|sh|shell)?\s*\n(.+?)\n```/is,
207
- // npm install
208
- /```(?:bash|sh|shell)?\s*\n(npm\s+install.+?)\n```/is,
209
- // pip install
210
- /```(?:bash|sh|shell)?\s*\n(pip\s+install.+?)\n```/is,
211
- // cargo install
212
- /```(?:bash|sh|shell)?\s*\n(cargo\s+install.+?)\n```/is,
213
- // brew install
214
- /```(?:bash|sh|shell)?\s*\n(brew\s+install.+?)\n```/is,
215
- ];
216
- for (const pattern of howPatterns) {
217
- const match = content.match(pattern);
218
- if (match && match[1]) {
219
- const captured = match[1].trim();
220
- if (captured.length > 5 && captured.length < 200) {
221
- context.how = captured;
222
- context.confidence.how = 0.8;
223
- break;
224
- }
225
- }
226
- }
227
- // Calculate overall confidence
228
- const confidenceValues = Object.values(context.confidence).filter((v) => typeof v === 'number' && v > 0);
229
- context.confidence.overall =
230
- confidenceValues.length > 0
231
- ? confidenceValues.reduce((a, b) => a + b, 0) / 6 // Average across all 6 Ws
232
- : 0;
233
- return context;
234
- }
235
- /**
236
- * Extract context from README file
237
- * Non-interactive MCP version
238
- */
239
- async function readmeExtractCommand(projectPath) {
240
- try {
241
- // Find README file
242
- const readmePath = await findReadmeFile(projectPath);
243
- if (!readmePath) {
244
- return {
245
- success: false,
246
- message: 'No README file found',
247
- error: 'Create a README.md to enable context extraction',
248
- };
249
- }
250
- // Read README content
251
- const content = await fs_1.promises.readFile(readmePath, 'utf-8');
252
- // Extract 6 Ws
253
- const extracted = extractSixWs(content);
254
- // Check if we got anything useful
255
- const fieldsExtracted = [
256
- extracted.who,
257
- extracted.what,
258
- extracted.where,
259
- extracted.why,
260
- extracted.when,
261
- extracted.how,
262
- ].filter((f) => f !== undefined).length;
263
- if (fieldsExtracted === 0) {
264
- return {
265
- success: false,
266
- message: 'Could not extract context from README',
267
- error: 'README may not contain recognizable patterns for WHO/WHAT/WHY/WHERE/WHEN/HOW',
268
- readmePath,
269
- };
270
- }
271
- return {
272
- success: true,
273
- message: `Extracted ${fieldsExtracted}/6 fields from README (${Math.round(extracted.confidence.overall * 100)}% confidence)`,
274
- extracted,
275
- readmePath,
276
- };
277
- }
278
- catch (error) {
279
- return {
280
- success: false,
281
- message: 'Failed to extract context from README',
282
- error: error instanceof Error ? error.message : String(error),
283
- };
284
- }
285
- }
286
- /**
287
- * Extract and merge README context into project.faf
288
- * Combines extraction + merging in one step
289
- */
290
- async function readmeMergeCommand(projectPath, options = {}) {
291
- try {
292
- // First extract
293
- const extractResult = await readmeExtractCommand(projectPath);
294
- if (!extractResult.success || !extractResult.extracted) {
295
- return extractResult;
296
- }
297
- // Find or create .faf file
298
- const possiblePaths = [
299
- path.join(projectPath, 'project.faf'),
300
- path.join(projectPath, '.faf'),
301
- ];
302
- let fafPath = null;
303
- for (const p of possiblePaths) {
304
- try {
305
- await fs_1.promises.access(p);
306
- fafPath = p;
307
- break;
308
- }
309
- catch {
310
- // Continue
311
- }
312
- }
313
- if (!fafPath) {
314
- fafPath = path.join(projectPath, 'project.faf');
315
- }
316
- // Read or create .faf data
317
- let fafData = {};
318
- try {
319
- const fafContent = await fs_1.promises.readFile(fafPath, 'utf-8');
320
- fafData = (0, yaml_1.parse)(fafContent) || {};
321
- }
322
- catch {
323
- // New file
324
- }
325
- if (!fafData.human_context) {
326
- fafData.human_context = {};
327
- }
328
- // Merge extracted context
329
- const fieldsUpdated = [];
330
- const extracted = extractResult.extracted;
331
- for (const field of ['who', 'what', 'where', 'why', 'when', 'how']) {
332
- const value = extracted[field];
333
- if (value) {
334
- // Only update if overwrite is true OR field is empty
335
- if (options.overwrite || !fafData.human_context[field]) {
336
- fafData.human_context[field] = value;
337
- fieldsUpdated.push(field);
338
- }
339
- }
340
- }
341
- // Save updated .faf
342
- if (fieldsUpdated.length > 0) {
343
- await fs_1.promises.writeFile(fafPath, (0, yaml_1.stringify)(fafData), 'utf-8');
344
- }
345
- return {
346
- ...extractResult,
347
- fieldsUpdated,
348
- message: fieldsUpdated.length > 0
349
- ? `Extracted and merged ${fieldsUpdated.length} field(s) into ${path.basename(fafPath)}`
350
- : 'No new fields to merge (use overwrite option to replace existing)',
351
- };
352
- }
353
- catch (error) {
354
- return {
355
- success: false,
356
- message: 'Failed to merge README context',
357
- error: error instanceof Error ? error.message : String(error),
358
- };
359
- }
360
- }
361
- //# sourceMappingURL=readme.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"readme.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/readme.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- /**
2
- * faf score - Programmatic API (MCP-ready)
3
- * No console output, returns structured data
4
- */
5
- import { type CompilationResult } from '../compiler/faf-compiler.js';
6
- export interface ScoreOptions {
7
- json?: boolean;
8
- trace?: boolean;
9
- verify?: boolean;
10
- breakdown?: boolean;
11
- checksum?: string;
12
- }
13
- export interface ScoreResult {
14
- score: number;
15
- filled: number;
16
- total: number;
17
- breakdown: {
18
- project: {
19
- filled: number;
20
- total: number;
21
- percentage: number;
22
- };
23
- stack: {
24
- filled: number;
25
- total: number;
26
- percentage: number;
27
- };
28
- human: {
29
- filled: number;
30
- total: number;
31
- percentage: number;
32
- };
33
- discovery: {
34
- filled: number;
35
- total: number;
36
- percentage: number;
37
- };
38
- };
39
- trace?: CompilationResult['trace'];
40
- diagnostics?: CompilationResult['diagnostics'];
41
- checksum?: string;
42
- }
43
- /**
44
- * Score a .faf file - programmatic API
45
- * Returns structured data, no console output
46
- */
47
- export declare function scoreFafFile(file?: string, options?: ScoreOptions): Promise<ScoreResult>;
@@ -1,49 +0,0 @@
1
- "use strict";
2
- /**
3
- * faf score - Programmatic API (MCP-ready)
4
- * No console output, returns structured data
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.scoreFafFile = scoreFafFile;
8
- const faf_compiler_js_1 = require("../compiler/faf-compiler.js");
9
- const file_utils_js_1 = require("../utils/file-utils.js");
10
- /**
11
- * Score a .faf file - programmatic API
12
- * Returns structured data, no console output
13
- */
14
- async function scoreFafFile(file, options = {}) {
15
- // Find .faf file
16
- const fafPath = file || await (0, file_utils_js_1.findFafFile)(process.cwd());
17
- if (!fafPath) {
18
- throw new Error('No .faf file found');
19
- }
20
- // Create compiler
21
- const compiler = new faf_compiler_js_1.FafCompiler();
22
- // Compile with or without trace
23
- const result = options.trace
24
- ? await compiler.compileWithTrace(fafPath)
25
- : await compiler.compile(fafPath);
26
- // Verify checksum if provided
27
- if (options.checksum && result.checksum !== options.checksum) {
28
- throw new Error(`Checksum mismatch: expected ${options.checksum}, got ${result.checksum}`);
29
- }
30
- // Return structured data
31
- const scoreResult = {
32
- score: result.score,
33
- filled: result.filled,
34
- total: result.total,
35
- breakdown: result.breakdown,
36
- };
37
- // Add optional fields
38
- if (options.trace) {
39
- scoreResult.trace = result.trace;
40
- }
41
- if (options.breakdown && result.diagnostics.length > 0) {
42
- scoreResult.diagnostics = result.diagnostics;
43
- }
44
- if (options.checksum || options.verify) {
45
- scoreResult.checksum = result.checksum;
46
- }
47
- return scoreResult;
48
- }
49
- //# sourceMappingURL=score.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"score.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/score.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAgDH,oCA2CC;AAzFD,iEAAkF;AAClF,0DAAqD;AAyCrD;;;GAGG;AACI,KAAK,UAAU,YAAY,CAAC,IAAa,EAAE,UAAwB,EAAE;IAC1E,iBAAiB;IACjB,MAAM,OAAO,GAAG,IAAI,IAAI,MAAM,IAAA,2BAAW,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,kBAAkB;IAClB,MAAM,QAAQ,GAAG,IAAI,6BAAW,EAAE,CAAC;IAEnC,gCAAgC;IAChC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK;QAC1B,CAAC,CAAC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAC1C,CAAC,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpC,8BAA8B;IAC9B,IAAI,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,CAAC,QAAQ,SAAS,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,yBAAyB;IACzB,MAAM,WAAW,GAAgB;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC;IAEF,sBAAsB;IACtB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACnC,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAC/C,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACvC,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACzC,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * 📦 faf update - Update project.faf metadata (Mk3 Bundled)
3
- */
4
- export interface UpdateOptions {
5
- json?: boolean;
6
- }
7
- export interface UpdateResult {
8
- success: boolean;
9
- updated: boolean;
10
- message: string;
11
- }
12
- export declare function updateFafFile(projectPath?: string, options?: UpdateOptions): Promise<UpdateResult>;
@@ -1,46 +0,0 @@
1
- "use strict";
2
- /**
3
- * 📦 faf update - Update project.faf metadata (Mk3 Bundled)
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.updateFafFile = updateFafFile;
7
- const fs_1 = require("fs");
8
- const yaml_1 = require("../fix-once/yaml");
9
- const file_utils_1 = require("../utils/file-utils");
10
- async function updateFafFile(projectPath, options = {}) {
11
- try {
12
- const fafPath = projectPath ? `${projectPath}/project.faf` : await (0, file_utils_1.findFafFile)();
13
- if (!fafPath || !await (0, file_utils_1.fileExists)(fafPath)) {
14
- return {
15
- success: false,
16
- updated: false,
17
- message: 'No project.faf file found'
18
- };
19
- }
20
- // Read current file
21
- const content = await fs_1.promises.readFile(fafPath, 'utf-8');
22
- const fafData = (0, yaml_1.parse)(content);
23
- // Update metadata
24
- if (!fafData.meta) {
25
- fafData.meta = {};
26
- }
27
- fafData.meta.last_updated = new Date().toISOString();
28
- fafData.meta.updated_by = 'faf-update-command';
29
- // Write updated file
30
- const updatedContent = (0, yaml_1.stringify)(fafData);
31
- await fs_1.promises.writeFile(fafPath, updatedContent, 'utf-8');
32
- return {
33
- success: true,
34
- updated: true,
35
- message: 'project.faf metadata updated successfully'
36
- };
37
- }
38
- catch (error) {
39
- return {
40
- success: false,
41
- updated: false,
42
- message: error instanceof Error ? error.message : 'Update failed'
43
- };
44
- }
45
- }
46
- //# sourceMappingURL=update.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/faf-core/commands/update.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAgBH,sCAyCC;AAvDD,2BAAoC;AACpC,2CAAkF;AAClF,oDAA8D;AAYvD,KAAK,UAAU,aAAa,CAAC,WAAoB,EAAE,UAAyB,EAAE;IACnF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,cAAc,CAAC,CAAC,CAAC,MAAM,IAAA,wBAAW,GAAE,CAAC;QAEjF,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAA,uBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,2BAA2B;aACrC,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,MAAM,OAAO,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAA,YAAS,EAAC,OAAO,CAAC,CAAC;QAEnC,kBAAkB;QAClB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC;QAE/C,qBAAqB;QACrB,MAAM,cAAc,GAAG,IAAA,gBAAa,EAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,aAAE,CAAC,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAErD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,2CAA2C;SACrD,CAAC;IAEJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAClE,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,21 +0,0 @@
1
- /**
2
- * 🔍 faf validate - Validation Command (Mk3 Bundled)
3
- * Validates project.faf files with detailed feedback
4
- */
5
- export interface ValidateOptions {
6
- verbose?: boolean;
7
- json?: boolean;
8
- }
9
- export interface ValidationError {
10
- message: string;
11
- path?: string;
12
- severity: 'error' | 'warning';
13
- }
14
- export interface ValidateResult {
15
- success: boolean;
16
- valid: boolean;
17
- errors: ValidationError[];
18
- warnings: ValidationError[];
19
- message: string;
20
- }
21
- export declare function validateFafFile(projectPath?: string, options?: ValidateOptions): Promise<ValidateResult>;