faf-mcp 2.3.1 → 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 (177) hide show
  1. package/CHANGELOG.md +26 -3
  2. package/CLAUDE.md +6 -6
  3. package/README.md +71 -72
  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 +103 -682
  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 +16 -13
  43. package/project.faf +11 -6
  44. package/scripts/check-engines.mjs +53 -0
  45. package/scripts/sync-version.js +33 -19
  46. package/skills/faf-ide/SKILL.md +40 -0
  47. package/dist/src/config/visibility.d.ts +0 -41
  48. package/dist/src/config/visibility.js +0 -158
  49. package/dist/src/config/visibility.js.map +0 -1
  50. package/dist/src/faf-core/commands/audit.d.ts +0 -21
  51. package/dist/src/faf-core/commands/audit.js +0 -83
  52. package/dist/src/faf-core/commands/audit.js.map +0 -1
  53. package/dist/src/faf-core/commands/auto.d.ts +0 -25
  54. package/dist/src/faf-core/commands/auto.js +0 -74
  55. package/dist/src/faf-core/commands/auto.js.map +0 -1
  56. package/dist/src/faf-core/commands/doctor.d.ts +0 -17
  57. package/dist/src/faf-core/commands/doctor.js +0 -198
  58. package/dist/src/faf-core/commands/doctor.js.map +0 -1
  59. package/dist/src/faf-core/commands/enhance.d.ts +0 -46
  60. package/dist/src/faf-core/commands/enhance.js +0 -360
  61. package/dist/src/faf-core/commands/enhance.js.map +0 -1
  62. package/dist/src/faf-core/commands/formats.d.ts +0 -22
  63. package/dist/src/faf-core/commands/formats.js +0 -117
  64. package/dist/src/faf-core/commands/formats.js.map +0 -1
  65. package/dist/src/faf-core/commands/human.d.ts +0 -27
  66. package/dist/src/faf-core/commands/human.js +0 -183
  67. package/dist/src/faf-core/commands/human.js.map +0 -1
  68. package/dist/src/faf-core/commands/init.d.ts +0 -26
  69. package/dist/src/faf-core/commands/init.js +0 -114
  70. package/dist/src/faf-core/commands/init.js.map +0 -1
  71. package/dist/src/faf-core/commands/innit.d.ts +0 -7
  72. package/dist/src/faf-core/commands/innit.js +0 -13
  73. package/dist/src/faf-core/commands/innit.js.map +0 -1
  74. package/dist/src/faf-core/commands/migrate.d.ts +0 -15
  75. package/dist/src/faf-core/commands/migrate.js +0 -86
  76. package/dist/src/faf-core/commands/migrate.js.map +0 -1
  77. package/dist/src/faf-core/commands/quick.d.ts +0 -16
  78. package/dist/src/faf-core/commands/quick.js +0 -184
  79. package/dist/src/faf-core/commands/quick.js.map +0 -1
  80. package/dist/src/faf-core/commands/readme.d.ts +0 -47
  81. package/dist/src/faf-core/commands/readme.js +0 -361
  82. package/dist/src/faf-core/commands/readme.js.map +0 -1
  83. package/dist/src/faf-core/commands/score.d.ts +0 -47
  84. package/dist/src/faf-core/commands/score.js +0 -49
  85. package/dist/src/faf-core/commands/score.js.map +0 -1
  86. package/dist/src/faf-core/commands/update.d.ts +0 -12
  87. package/dist/src/faf-core/commands/update.js +0 -46
  88. package/dist/src/faf-core/commands/update.js.map +0 -1
  89. package/dist/src/faf-core/commands/validate.d.ts +0 -21
  90. package/dist/src/faf-core/commands/validate.js +0 -81
  91. package/dist/src/faf-core/commands/validate.js.map +0 -1
  92. package/dist/src/faf-core/compiler/faf-compiler.d.ts +0 -138
  93. package/dist/src/faf-core/compiler/faf-compiler.js +0 -1362
  94. package/dist/src/faf-core/compiler/faf-compiler.js.map +0 -1
  95. package/dist/src/faf-core/engines/fab-formats-processor.d.ts +0 -166
  96. package/dist/src/faf-core/engines/fab-formats-processor.js +0 -1274
  97. package/dist/src/faf-core/engines/fab-formats-processor.js.map +0 -1
  98. package/dist/src/faf-core/engines/faf-dna.d.ts +0 -159
  99. package/dist/src/faf-core/engines/faf-dna.js +0 -555
  100. package/dist/src/faf-core/engines/faf-dna.js.map +0 -1
  101. package/dist/src/faf-core/engines/relentless-context-extractor.d.ts +0 -100
  102. package/dist/src/faf-core/engines/relentless-context-extractor.js +0 -625
  103. package/dist/src/faf-core/engines/relentless-context-extractor.js.map +0 -1
  104. package/dist/src/faf-core/fix-once/types.d.ts +0 -257
  105. package/dist/src/faf-core/fix-once/types.js +0 -26
  106. package/dist/src/faf-core/fix-once/types.js.map +0 -1
  107. package/dist/src/faf-core/generators/faf-generator-championship.d.ts +0 -16
  108. package/dist/src/faf-core/generators/faf-generator-championship.js +0 -463
  109. package/dist/src/faf-core/generators/faf-generator-championship.js.map +0 -1
  110. package/dist/src/faf-core/inject.d.ts +0 -19
  111. package/dist/src/faf-core/inject.js +0 -57
  112. package/dist/src/faf-core/inject.js.map +0 -1
  113. package/dist/src/faf-core/parsers/index.d.ts +0 -12
  114. package/dist/src/faf-core/parsers/index.js +0 -29
  115. package/dist/src/faf-core/parsers/index.js.map +0 -1
  116. package/dist/src/faf-core/utils/balance-visualizer.d.ts +0 -37
  117. package/dist/src/faf-core/utils/balance-visualizer.js +0 -197
  118. package/dist/src/faf-core/utils/balance-visualizer.js.map +0 -1
  119. package/dist/src/faf-core/utils/championship-style.d.ts +0 -109
  120. package/dist/src/faf-core/utils/championship-style.js +0 -219
  121. package/dist/src/faf-core/utils/championship-style.js.map +0 -1
  122. package/dist/src/faf-core/utils/chrome-extension-detector.d.ts +0 -73
  123. package/dist/src/faf-core/utils/chrome-extension-detector.js +0 -268
  124. package/dist/src/faf-core/utils/chrome-extension-detector.js.map +0 -1
  125. package/dist/src/faf-core/utils/platform-detector.d.ts +0 -30
  126. package/dist/src/faf-core/utils/platform-detector.js +0 -218
  127. package/dist/src/faf-core/utils/platform-detector.js.map +0 -1
  128. package/dist/src/faf-core/utils/technical-credit.d.ts +0 -35
  129. package/dist/src/faf-core/utils/technical-credit.js +0 -286
  130. package/dist/src/faf-core/utils/technical-credit.js.map +0 -1
  131. package/dist/src/faf-core/utils/yaml-generator.d.ts +0 -41
  132. package/dist/src/faf-core/utils/yaml-generator.js +0 -360
  133. package/dist/src/faf-core/utils/yaml-generator.js.map +0 -1
  134. package/dist/src/handlers/behavioral-instruction.d.ts +0 -16
  135. package/dist/src/handlers/behavioral-instruction.js +0 -43
  136. package/dist/src/handlers/behavioral-instruction.js.map +0 -1
  137. package/dist/src/handlers/championship-tools.d.ts +0 -116
  138. package/dist/src/handlers/championship-tools.js +0 -2320
  139. package/dist/src/handlers/championship-tools.js.map +0 -1
  140. package/dist/src/handlers/cloud-handler.d.ts +0 -59
  141. package/dist/src/handlers/cloud-handler.js +0 -348
  142. package/dist/src/handlers/cloud-handler.js.map +0 -1
  143. package/dist/src/handlers/tool-registry.d.ts +0 -23
  144. package/dist/src/handlers/tool-registry.js +0 -68
  145. package/dist/src/handlers/tool-registry.js.map +0 -1
  146. package/dist/src/handlers/tool-types.d.ts +0 -167
  147. package/dist/src/handlers/tool-types.js +0 -7
  148. package/dist/src/handlers/tool-types.js.map +0 -1
  149. package/dist/src/test-all-functions.d.ts +0 -15
  150. package/dist/src/test-all-functions.js +0 -163
  151. package/dist/src/test-all-functions.js.map +0 -1
  152. package/dist/src/types/mcp-tools.d.ts +0 -53
  153. package/dist/src/types/mcp-tools.js +0 -77
  154. package/dist/src/types/mcp-tools.js.map +0 -1
  155. package/dist/src/types/tool-visibility.d.ts +0 -36
  156. package/dist/src/types/tool-visibility.js +0 -551
  157. package/dist/src/types/tool-visibility.js.map +0 -1
  158. package/dist/src/utils/auto-path-detection.d.ts +0 -26
  159. package/dist/src/utils/auto-path-detection.js +0 -198
  160. package/dist/src/utils/auto-path-detection.js.map +0 -1
  161. package/dist/src/utils/championship-format.d.ts +0 -30
  162. package/dist/src/utils/championship-format.js +0 -81
  163. package/dist/src/utils/championship-format.js.map +0 -1
  164. package/dist/src/utils/cli-detector.d.ts +0 -17
  165. package/dist/src/utils/cli-detector.js +0 -247
  166. package/dist/src/utils/cli-detector.js.map +0 -1
  167. package/dist/src/utils/display-protocol.d.ts +0 -57
  168. package/dist/src/utils/display-protocol.js +0 -131
  169. package/dist/src/utils/display-protocol.js.map +0 -1
  170. package/dist/src/utils/username-detector.d.ts +0 -27
  171. package/dist/src/utils/username-detector.js +0 -90
  172. package/dist/src/utils/username-detector.js.map +0 -1
  173. package/dist/src/utils/visual-style.d.ts +0 -62
  174. package/dist/src/utils/visual-style.js +0 -166
  175. package/dist/src/utils/visual-style.js.map +0 -1
  176. package/scripts/postinstall.js +0 -50
  177. 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":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DH,oCAkLC;AAMD,oDAqDC;AAMD,gDAiFC;AA/XD,2BAAoC;AACpC,+BAAsE;AACtE,2CAA6B;AA4B7B;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,WAAmB;IAC/C,MAAM,aAAa,GAAG;QACpB,WAAW;QACX,WAAW;QACX,WAAW;QACX,iBAAiB;QACjB,QAAQ;KACT,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,aAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5B,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAAC,OAAe;IAC1C,MAAM,OAAO,GAAqB;QAChC,UAAU,EAAE;YACV,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,CAAC;SACX;KACF,CAAC;IAEF,kBAAkB;IAClB,MAAM,YAAY,GAAG;QACnB,wBAAwB;QACxB,8BAA8B;QAC9B,qBAAqB;QACrB,qBAAqB;QACrB,8BAA8B;QAC9B,+BAA+B;QAC/B,QAAQ;QACR,uCAAuC;QACvC,sBAAsB;QACtB,kDAAkD;KACnD,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC9D,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC/B,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;gBAC9B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,MAAM,WAAW,GAAG;QAClB,uBAAuB;QACvB,mCAAmC;QACnC,2BAA2B;QAC3B,gDAAgD;QAChD,qBAAqB;QACrB,0CAA0C;QAC1C,8CAA8C;QAC9C,mDAAmD;KACpD,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAClD,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC;gBACvB,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC;gBAC7B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,MAAM,WAAW,GAAG;QAClB,6BAA6B;QAC7B,uJAAuJ;QACvJ,gBAAgB;QAChB,mCAAmC;QACnC,mBAAmB;QACnB,sCAAsC;KACvC,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACjD,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC;gBACvB,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC;gBAC7B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,MAAM,kBAAkB,GAAG;QACzB,cAAc,EAAE,mDAAmD;QACnE,SAAS,EAAE,iEAAiE;QAC5E,SAAS,EAAE,wCAAwC;QACnD,OAAO,EAAE,+DAA+D;QACxE,QAAQ,EAAE,0CAA0C;QACpD,SAAS,EAAE,wCAAwC;KACpD,CAAC;IAEF,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACrE,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IACtE,CAAC;IAED,qCAAqC;IACrC,MAAM,YAAY,GAAG;QACnB,gBAAgB;QAChB,gJAAgJ;QAChJ,qBAAqB;QACrB,qBAAqB;QACrB,cAAc;QACd,kCAAkC;QAClC,8BAA8B;QAC9B,+DAA+D;KAChE,CAAC;IAEF,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,OAAO,EAAE,CAAC;YACZ,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,iBAAiB;QACjB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjG,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAE5D,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,WAAW;YAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,UAAU;YAAE,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACjE,IAAI,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAE7E,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC;QAC5D,OAAO,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;IAChC,CAAC;IAED,mCAAmC;IACnC,MAAM,WAAW,GAAG;QAClB,sBAAsB;QACtB,mGAAmG;QACnG,cAAc;QACd,qDAAqD;QACrD,cAAc;QACd,qDAAqD;QACrD,gBAAgB;QAChB,uDAAuD;QACvD,eAAe;QACf,sDAAsD;KACvD,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACjD,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC;gBACvB,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC;gBAC7B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAC/D,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,CACtC,CAAC;IACF,OAAO,CAAC,UAAU,CAAC,OAAO;QACxB,gBAAgB,CAAC,MAAM,GAAG,CAAC;YACzB,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,0BAA0B;YAC5E,CAAC,CAAC,CAAC,CAAC;IAER,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,oBAAoB,CACxC,WAAmB;IAEnB,IAAI,CAAC;QACH,mBAAmB;QACnB,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;QAErD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,sBAAsB;gBAC/B,KAAK,EAAE,iDAAiD;aACzD,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,MAAM,OAAO,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEvD,eAAe;QACf,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAExC,kCAAkC;QAClC,MAAM,eAAe,GAAG;YACtB,SAAS,CAAC,GAAG;YACb,SAAS,CAAC,IAAI;YACd,SAAS,CAAC,KAAK;YACf,SAAS,CAAC,GAAG;YACb,SAAS,CAAC,IAAI;YACd,SAAS,CAAC,GAAG;SACd,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QAExC,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,uCAAuC;gBAChD,KAAK,EAAE,8EAA8E;gBACrF,UAAU;aACX,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,aAAa,eAAe,0BAA0B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC,eAAe;YAC5H,SAAS;YACT,UAAU;SACX,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,uCAAuC;YAChD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,kBAAkB,CACtC,WAAmB,EACnB,UAAmC,EAAE;IAErC,IAAI,CAAC;QACH,gBAAgB;QAChB,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAE9D,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YACvD,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,2BAA2B;QAC3B,MAAM,aAAa,GAAG;YACpB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;SAC/B,CAAC;QAEF,IAAI,OAAO,GAAkB,IAAI,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,aAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACnB,OAAO,GAAG,CAAC,CAAC;gBACZ,MAAM;YACR,CAAC;YAAC,MAAM,CAAC;gBACP,WAAW;YACb,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAClD,CAAC;QAED,2BAA2B;QAC3B,IAAI,OAAO,GAAQ,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,GAAG,IAAA,YAAS,EAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,WAAW;QACb,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3B,OAAO,CAAC,aAAa,GAAG,EAAE,CAAC;QAC7B,CAAC;QAED,0BAA0B;QAC1B,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;QAE1C,KAAK,MAAM,KAAK,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAU,EAAE,CAAC;YAC5E,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,KAAK,EAAE,CAAC;gBACV,qDAAqD;gBACrD,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvD,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;oBACrC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,aAAE,CAAC,SAAS,CAAC,OAAO,EAAE,IAAA,gBAAa,EAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO;YACL,GAAG,aAAa;YAChB,aAAa;YACb,OAAO,EACL,aAAa,CAAC,MAAM,GAAG,CAAC;gBACtB,CAAC,CAAC,wBAAwB,aAAa,CAAC,MAAM,kBAAkB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBACxF,CAAC,CAAC,mEAAmE;SAC1E,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,gCAAgC;YACzC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -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>;