faf-mcp 1.3.1 → 2.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 (100) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/CLAUDE.md +5 -5
  3. package/README.md +70 -14
  4. package/assets/thumbnail.png +0 -0
  5. package/dist/src/faf-core/commands/agents.d.ts +29 -0
  6. package/dist/src/faf-core/commands/agents.js +140 -0
  7. package/dist/src/faf-core/commands/agents.js.map +1 -0
  8. package/dist/src/faf-core/commands/bi-sync.d.ts +9 -5
  9. package/dist/src/faf-core/commands/bi-sync.js +89 -85
  10. package/dist/src/faf-core/commands/bi-sync.js.map +1 -1
  11. package/dist/src/faf-core/commands/conductor.d.ts +25 -0
  12. package/dist/src/faf-core/commands/conductor.js +157 -0
  13. package/dist/src/faf-core/commands/conductor.js.map +1 -0
  14. package/dist/src/faf-core/commands/cursor.d.ts +29 -0
  15. package/dist/src/faf-core/commands/cursor.js +134 -0
  16. package/dist/src/faf-core/commands/cursor.js.map +1 -0
  17. package/dist/src/faf-core/commands/gemini.d.ts +29 -0
  18. package/dist/src/faf-core/commands/gemini.js +133 -0
  19. package/dist/src/faf-core/commands/gemini.js.map +1 -0
  20. package/dist/src/faf-core/commands/git-context.d.ts +23 -0
  21. package/dist/src/faf-core/commands/git-context.js +66 -0
  22. package/dist/src/faf-core/commands/git-context.js.map +1 -0
  23. package/dist/src/faf-core/commands/human.d.ts +27 -0
  24. package/dist/src/faf-core/commands/human.js +183 -0
  25. package/dist/src/faf-core/commands/human.js.map +1 -0
  26. package/dist/src/faf-core/commands/readme.d.ts +47 -0
  27. package/dist/src/faf-core/commands/readme.js +361 -0
  28. package/dist/src/faf-core/commands/readme.js.map +1 -0
  29. package/dist/src/faf-core/engines/fab-formats-processor.js +3 -3
  30. package/dist/src/faf-core/engines/fab-formats-processor.js.map +1 -1
  31. package/dist/src/faf-core/engines/faf-dna.d.ts +1 -1
  32. package/dist/src/faf-core/engines/faf-dna.js +4 -3
  33. package/dist/src/faf-core/engines/faf-dna.js.map +1 -1
  34. package/dist/src/faf-core/generators/faf-generator-championship.js +9 -8
  35. package/dist/src/faf-core/generators/faf-generator-championship.js.map +1 -1
  36. package/dist/src/faf-core/parsers/agents-parser.d.ts +59 -0
  37. package/dist/src/faf-core/parsers/agents-parser.js +324 -0
  38. package/dist/src/faf-core/parsers/agents-parser.js.map +1 -0
  39. package/dist/src/faf-core/parsers/conductor-parser.d.ts +85 -0
  40. package/dist/src/faf-core/parsers/conductor-parser.js +293 -0
  41. package/dist/src/faf-core/parsers/conductor-parser.js.map +1 -0
  42. package/dist/src/faf-core/parsers/cursorrules-parser.d.ts +57 -0
  43. package/dist/src/faf-core/parsers/cursorrules-parser.js +317 -0
  44. package/dist/src/faf-core/parsers/cursorrules-parser.js.map +1 -0
  45. package/dist/src/faf-core/parsers/faf-git-generator.d.ts +53 -0
  46. package/dist/src/faf-core/parsers/faf-git-generator.js +512 -0
  47. package/dist/src/faf-core/parsers/faf-git-generator.js.map +1 -0
  48. package/dist/src/faf-core/parsers/gemini-parser.d.ts +57 -0
  49. package/dist/src/faf-core/parsers/gemini-parser.js +263 -0
  50. package/dist/src/faf-core/parsers/gemini-parser.js.map +1 -0
  51. package/dist/src/faf-core/parsers/github-extractor.d.ts +61 -0
  52. package/dist/src/faf-core/parsers/github-extractor.js +374 -0
  53. package/dist/src/faf-core/parsers/github-extractor.js.map +1 -0
  54. package/dist/src/faf-core/parsers/index.d.ts +12 -0
  55. package/dist/src/{compiler → faf-core/parsers}/index.js +10 -5
  56. package/dist/src/faf-core/parsers/index.js.map +1 -0
  57. package/dist/src/faf-core/parsers/slot-counter.d.ts +55 -0
  58. package/dist/src/faf-core/parsers/slot-counter.js +100 -0
  59. package/dist/src/faf-core/parsers/slot-counter.js.map +1 -0
  60. package/dist/src/faf-core/utils/balance-visualizer.js +3 -3
  61. package/dist/src/faf-core/utils/balance-visualizer.js.map +1 -1
  62. package/dist/src/handlers/championship-tools.d.ts +10 -5
  63. package/dist/src/handlers/championship-tools.js +259 -232
  64. package/dist/src/handlers/championship-tools.js.map +1 -1
  65. package/dist/src/handlers/engine-adapter.js +238 -5
  66. package/dist/src/handlers/engine-adapter.js.map +1 -1
  67. package/dist/src/handlers/tools.d.ts +61 -0
  68. package/dist/src/handlers/tools.js +2103 -102
  69. package/dist/src/handlers/tools.js.map +1 -1
  70. package/dist/src/index.js +0 -0
  71. package/dist/src/types/tool-visibility.js +51 -10
  72. package/dist/src/types/tool-visibility.js.map +1 -1
  73. package/dist/src/utils/championship-format.js +11 -9
  74. package/dist/src/utils/championship-format.js.map +1 -1
  75. package/dist/src/utils/path-resolver.js +56 -2
  76. package/dist/src/utils/path-resolver.js.map +1 -1
  77. package/dist/src/utils/visual-style.js +7 -5
  78. package/dist/src/utils/visual-style.js.map +1 -1
  79. package/dist/src/version.js +24 -11
  80. package/dist/src/version.js.map +1 -1
  81. package/package.json +5 -3
  82. package/project.faf +14 -18
  83. package/dist/index.json +0 -1
  84. package/dist/src/compiler/index.d.ts +0 -7
  85. package/dist/src/compiler/index.js.map +0 -1
  86. package/dist/src/compiler/scorer.d.ts +0 -53
  87. package/dist/src/compiler/scorer.js +0 -189
  88. package/dist/src/compiler/scorer.js.map +0 -1
  89. package/dist/src/compiler/slot-validator.d.ts +0 -32
  90. package/dist/src/compiler/slot-validator.js +0 -293
  91. package/dist/src/compiler/slot-validator.js.map +0 -1
  92. package/dist/src/compiler/type-detector.d.ts +0 -62
  93. package/dist/src/compiler/type-detector.js +0 -388
  94. package/dist/src/compiler/type-detector.js.map +0 -1
  95. package/dist/src/types/project-types.d.ts +0 -22
  96. package/dist/src/types/project-types.js +0 -85
  97. package/dist/src/types/project-types.js.map +0 -1
  98. package/dist/src/types/slots.d.ts +0 -39
  99. package/dist/src/types/slots.js +0 -162
  100. package/dist/src/types/slots.js.map +0 -1
@@ -1,293 +0,0 @@
1
- "use strict";
2
- /**
3
- * Slot Validator - FAF Compiler Engine MK3
4
- * Championship-grade slot validation with .faf content analysis
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.SlotValidator = void 0;
41
- const fs = __importStar(require("fs"));
42
- const path = __importStar(require("path"));
43
- const yaml = __importStar(require("js-yaml"));
44
- const slots_1 = require("../types/slots");
45
- const project_types_1 = require("../types/project-types");
46
- class SlotValidator {
47
- /**
48
- * Validate all slots against project type
49
- */
50
- validate(fafContent, projectType) {
51
- const allSlots = slots_1.UNIVERSAL_SLOTS;
52
- const ignoredSlots = project_types_1.SLOT_IGNORE_BY_TYPE[projectType];
53
- const relevantSlots = 21 - ignoredSlots.length;
54
- // Check each slot
55
- const slots = allSlots.map(slot => {
56
- const slotName = slot.name;
57
- const isIgnored = ignoredSlots.includes(slotName);
58
- const isRequired = !isIgnored;
59
- const isFilled = this.isSlotFilled(slotName, fafContent);
60
- return {
61
- slotNumber: slot.number,
62
- slotName: slotName,
63
- required: isRequired,
64
- filled: isFilled,
65
- value: this.getSlotValue(slotName, fafContent),
66
- points: isFilled && isRequired ? 1 : 0,
67
- };
68
- });
69
- // Count filled slots (only count required slots)
70
- const filledSlots = slots.filter(s => s.required && s.filled).length;
71
- // Calculate score
72
- const score = Math.round((filledSlots / relevantSlots) * 100);
73
- // Determine medal
74
- const medal = this.getMedal(score);
75
- return {
76
- totalSlots: 21,
77
- relevantSlots,
78
- filledSlots,
79
- slots,
80
- score,
81
- medal,
82
- };
83
- }
84
- /**
85
- * Check if a specific slot is filled in .faf content
86
- */
87
- isSlotFilled(slotName, fafContent) {
88
- if (!fafContent)
89
- return false;
90
- // Map slot names to .faf structure
91
- switch (slotName) {
92
- // Core Project (Slots 1-4)
93
- case 'project_identity':
94
- return !!(fafContent.project?.name &&
95
- fafContent.project?.version);
96
- case 'language':
97
- return !!(fafContent.tech?.language ||
98
- fafContent.project?.primary_language);
99
- case 'human_context':
100
- return !!(fafContent.human_context?.what ||
101
- fafContent.human_context?.why ||
102
- fafContent.project?.goal);
103
- case 'documentation':
104
- return !!(fafContent.files?.readme ||
105
- fafContent.files?.claude_md ||
106
- fafContent.documentation);
107
- // Stack (Slots 5-14)
108
- case 'frontend':
109
- return !!(fafContent.tech?.frontend ||
110
- fafContent.stack?.frontend ||
111
- this.hasFramework(fafContent, ['react', 'vue', 'svelte', 'angular']));
112
- case 'backend':
113
- return !!(fafContent.tech?.backend ||
114
- fafContent.stack?.backend ||
115
- this.hasFramework(fafContent, ['express', 'fastapi', 'nestjs', 'rails']));
116
- case 'database':
117
- return !!(fafContent.tech?.database ||
118
- fafContent.stack?.database ||
119
- this.hasFramework(fafContent, ['postgresql', 'mongodb', 'mysql', 'supabase']));
120
- case 'build_tool':
121
- return !!(fafContent.tech?.build ||
122
- fafContent.stack?.build_tool ||
123
- this.hasFramework(fafContent, ['vite', 'webpack', 'esbuild', 'rollup']));
124
- case 'package_manager':
125
- return !!(fafContent.tech?.package_manager ||
126
- fafContent.stack?.package_manager ||
127
- this.hasFramework(fafContent, ['npm', 'pnpm', 'yarn', 'bun']));
128
- case 'api':
129
- return !!(fafContent.tech?.api ||
130
- fafContent.stack?.api ||
131
- fafContent.api_type);
132
- case 'hosting':
133
- return !!(fafContent.tech?.hosting ||
134
- fafContent.stack?.hosting ||
135
- fafContent.deployment?.platform);
136
- case 'cicd':
137
- return !!(fafContent.tech?.cicd ||
138
- fafContent.stack?.cicd ||
139
- fafContent.ci_cd);
140
- case 'testing':
141
- return !!(fafContent.tech?.testing ||
142
- fafContent.stack?.testing ||
143
- this.hasFramework(fafContent, ['vitest', 'jest', 'pytest', 'mocha']));
144
- case 'css':
145
- return !!(fafContent.tech?.css ||
146
- fafContent.stack?.styling ||
147
- this.hasFramework(fafContent, ['tailwind', 'css-modules', 'styled-components']));
148
- // Architecture (Slots 15-21)
149
- case 'ui_library':
150
- return !!(fafContent.tech?.ui_library ||
151
- fafContent.stack?.ui_components ||
152
- this.hasFramework(fafContent, ['shadcn', 'mui', 'chakra']));
153
- case 'state':
154
- return !!(fafContent.tech?.state ||
155
- fafContent.stack?.state_management ||
156
- this.hasFramework(fafContent, ['zustand', 'redux', 'mobx']));
157
- case 'runtime':
158
- return !!(fafContent.tech?.runtime ||
159
- fafContent.stack?.runtime ||
160
- this.hasFramework(fafContent, ['node', 'deno', 'bun', 'browser']));
161
- case 'auth':
162
- return !!(fafContent.tech?.auth ||
163
- fafContent.stack?.authentication ||
164
- fafContent.authentication);
165
- case 'storage':
166
- return !!(fafContent.tech?.storage ||
167
- fafContent.stack?.file_storage ||
168
- fafContent.storage);
169
- case 'caching':
170
- return !!(fafContent.tech?.caching ||
171
- fafContent.stack?.caching ||
172
- this.hasFramework(fafContent, ['redis', 'memcached']));
173
- case 'team':
174
- return !!(fafContent.team ||
175
- fafContent.workflow ||
176
- fafContent.contributors);
177
- default:
178
- return false;
179
- }
180
- }
181
- /**
182
- * Get the value of a slot from .faf content
183
- */
184
- getSlotValue(slotName, fafContent) {
185
- if (!fafContent)
186
- return null;
187
- switch (slotName) {
188
- case 'project_identity':
189
- return {
190
- name: fafContent.project?.name,
191
- version: fafContent.project?.version,
192
- type: fafContent.project?.type,
193
- };
194
- case 'language':
195
- return fafContent.tech?.language || fafContent.project?.primary_language;
196
- case 'human_context':
197
- return fafContent.human_context;
198
- case 'frontend':
199
- return fafContent.tech?.frontend || fafContent.stack?.frontend;
200
- case 'backend':
201
- return fafContent.tech?.backend || fafContent.stack?.backend;
202
- case 'database':
203
- return fafContent.tech?.database || fafContent.stack?.database;
204
- case 'build_tool':
205
- return fafContent.tech?.build || fafContent.stack?.build_tool;
206
- case 'package_manager':
207
- return fafContent.tech?.package_manager || fafContent.stack?.package_manager;
208
- case 'api':
209
- return fafContent.tech?.api || fafContent.api_type;
210
- case 'hosting':
211
- return fafContent.tech?.hosting || fafContent.deployment?.platform;
212
- case 'cicd':
213
- return fafContent.tech?.cicd || fafContent.ci_cd;
214
- case 'testing':
215
- return fafContent.tech?.testing || fafContent.stack?.testing;
216
- case 'css':
217
- return fafContent.tech?.css || fafContent.stack?.styling;
218
- case 'ui_library':
219
- return fafContent.tech?.ui_library || fafContent.stack?.ui_components;
220
- case 'state':
221
- return fafContent.tech?.state || fafContent.stack?.state_management;
222
- case 'runtime':
223
- return fafContent.tech?.runtime || fafContent.stack?.runtime;
224
- case 'auth':
225
- return fafContent.tech?.auth || fafContent.authentication;
226
- case 'storage':
227
- return fafContent.tech?.storage || fafContent.storage;
228
- case 'caching':
229
- return fafContent.tech?.caching || fafContent.stack?.caching;
230
- case 'team':
231
- return fafContent.team || fafContent.workflow;
232
- default:
233
- return null;
234
- }
235
- }
236
- /**
237
- * Helper: Check if fafContent has a specific framework
238
- */
239
- hasFramework(fafContent, frameworks) {
240
- if (!fafContent)
241
- return false;
242
- // Check in various locations
243
- const techString = JSON.stringify(fafContent.tech || {}).toLowerCase();
244
- const stackString = JSON.stringify(fafContent.stack || {}).toLowerCase();
245
- const allString = JSON.stringify(fafContent).toLowerCase();
246
- return frameworks.some(fw => {
247
- const lowerFw = fw.toLowerCase();
248
- return techString.includes(lowerFw) ||
249
- stackString.includes(lowerFw) ||
250
- allString.includes(lowerFw);
251
- });
252
- }
253
- /**
254
- * Determine medal from score
255
- */
256
- getMedal(score) {
257
- if (score >= 85)
258
- return 'trophy'; // 🏆
259
- if (score >= 70)
260
- return 'gold'; // 🥇
261
- if (score >= 55)
262
- return 'silver'; // 🥈
263
- if (score >= 40)
264
- return 'bronze'; // 🥉
265
- if (score >= 20)
266
- return 'red'; // 🔴
267
- return 'white'; // 🤍
268
- }
269
- /**
270
- * Load and parse .faf file from directory
271
- */
272
- static async loadFafFile(projectPath) {
273
- try {
274
- // Try .faf first
275
- let fafPath = path.join(projectPath, '.faf');
276
- if (!fs.existsSync(fafPath)) {
277
- // Try project.faf (v1.2.0 standard)
278
- fafPath = path.join(projectPath, 'project.faf');
279
- }
280
- if (!fs.existsSync(fafPath)) {
281
- return null;
282
- }
283
- const content = fs.readFileSync(fafPath, 'utf-8');
284
- return yaml.load(content);
285
- }
286
- catch (error) {
287
- console.error('Error loading .faf file:', error);
288
- return null;
289
- }
290
- }
291
- }
292
- exports.SlotValidator = SlotValidator;
293
- //# sourceMappingURL=slot-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slot-validator.js","sourceRoot":"","sources":["../../../src/compiler/slot-validator.ts"],"names":[],"mappings":"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"}
@@ -1,62 +0,0 @@
1
- /**
2
- * Project Type Detector - FAF Compiler Engine MK3
3
- * Championship-grade type detection with intelligent confidence scoring
4
- */
5
- import { TypeDetectionResult } from '../types/project-types';
6
- export declare class ProjectTypeDetector {
7
- private projectPath;
8
- private packageJson;
9
- constructor(projectPath: string);
10
- /**
11
- * Detect project type from file system analysis
12
- */
13
- detect(): Promise<TypeDetectionResult>;
14
- /**
15
- * Check for explicit file markers
16
- */
17
- private detectExplicitMarkers;
18
- /**
19
- * Detect framework signatures from dependencies
20
- */
21
- private detectFrameworkSignatures;
22
- /**
23
- * Analyze project structure
24
- */
25
- private analyzeStructure;
26
- /**
27
- * Analyze package.json for library/CLI patterns
28
- */
29
- private analyzePackageJson;
30
- /**
31
- * Create TypeDetectionResult from detected type
32
- */
33
- private createResult;
34
- /**
35
- * Helper: Check if file exists
36
- */
37
- private hasFile;
38
- /**
39
- * Helper: Check if directory exists
40
- */
41
- private hasDirectory;
42
- /**
43
- * Helper: Load package.json
44
- */
45
- private loadPackageJson;
46
- /**
47
- * Helper: Check if has frontend framework
48
- */
49
- private hasFrontendFramework;
50
- /**
51
- * Helper: Check if has backend framework
52
- */
53
- private hasBackendFramework;
54
- /**
55
- * Helper: Check if has database dependency
56
- */
57
- private hasDatabaseDependency;
58
- /**
59
- * Helper: Check if static-only site
60
- */
61
- private isStaticOnly;
62
- }