faf-mcp 1.1.4 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,42 @@ All notable changes to faf-mcp will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.2.1] - 2025-12-22
9
+
10
+ ### Added
11
+ - **TYPE_DEFINITIONS Scoring Parity** - Ported from claude-faf-mcp v3.3.7
12
+ - 94 project types + 38 aliases for accurate slot-based scoring
13
+ - Single source of truth for project type detection
14
+ - Ensures faf-mcp scoring matches faf-cli scoring exactly
15
+
16
+ ### Changed
17
+ - Scoring engine now uses TYPE_DEFINITIONS for slot applicability
18
+
19
+ ## [1.2.0] - 2025-12-18
20
+
21
+ ### Trophy Achievement
22
+
23
+ **faf-mcp v1.2.0 achieves 100% FAF Score** - Trophy Championship rating with complete human context.
24
+
25
+ ### Changed
26
+
27
+ - **Human Context** - Complete rewrite of human_context section
28
+ - who: Developers using Claude, Cursor, Windsurf, VS Code, Cline, and any MCP-compatible IDE
29
+ - what: Universal MCP server providing .faf context tools - 17 native tools + 40+ CLI fallback commands
30
+ - why: Eliminate the 20-minute AI context tax - give AI instant project understanding in 30 seconds
31
+ - where: npm registry, MCP ecosystem, Claude Desktop, Cursor IDE, Windsurf Editor
32
+ - when: Production/Stable - v1.2.0 WJTTC certified
33
+ - how: npx faf-mcp or npm install -g faf-mcp, then add to your MCP config
34
+ - additional_context: IANA-registered format (application/vnd.faf+yaml), 15k+ downloads, official Anthropic MCP steward
35
+
36
+ - **faf-cli Dependency** - Updated to 3.2.6
37
+
38
+ ### Score
39
+
40
+ - FAF Score: 100/100 Trophy Championship
41
+ - Context Quality: 21/21 slots filled (100%)
42
+ - AI Confidence: HIGH
43
+
8
44
  ## [1.1.4] - 2025-12-17
9
45
 
10
46
  ### WJTTC MCP Certification Achievement
package/CLAUDE.md CHANGED
@@ -1,6 +1,6 @@
1
- # 🏎️ CLAUDE.md - faf-mcp Persistent Context
1
+ # 🏎️ CLAUDE.md - faf-mcp Persistent Context & Intelligence
2
2
 
3
- ## PROJECT STATE: ACTIVE 🚀
3
+ ## PROJECT STATE: GOOD 🚀
4
4
  **Current Position:** Universal MCP server for all platforms
5
5
  **Tyre Compound:** ULTRASOFT C5 (Maximum Performance)
6
6
 
@@ -9,107 +9,22 @@
9
9
  ## 🎨 CORE CONTEXT
10
10
 
11
11
  ### Project Identity
12
- - **Name:** faf-mcp (package within faf-mcp monorepo)
12
+ - **Name:** faf-mcp
13
13
  - **Stack:** Node.js/TypeScript
14
14
  - **Quality:** F1-INSPIRED (Championship Performance)
15
- - **Monorepo Context:** See `/Users/wolfejam/FAF/faf-mcp/CLAUDE.md` for repository-level context
16
-
17
- ## 💡 Quick Start for AI
18
-
19
- **Q: How do I get started?**
20
-
21
- **A: Just USE FAF**
22
-
23
- ```
24
- Use FAF to initialize your project
25
- Use FAF to sync my project.faf to all platforms
26
- Use FAF to score my AI-readiness
27
- ```
28
-
29
- That's it! Start every prompt with "**Use FAF**" and the MCP tools will handle the rest.
30
-
31
- ### Our Mission - Universal MCP Integration
32
-
33
- **v1.0.0 Launch: PLATFORM-AGNOSTIC**
34
-
35
- ```
36
- faf-mcp: UNIVERSAL MCP SERVER
37
- ├── Claude Desktop support
38
- ├── Cursor IDE support
39
- ├── Windsurf Editor support
40
- ├── VS Code support
41
- └── Any MCP-compatible platform
42
- ```
43
-
44
- **CRITICAL: faf-mcp IS THE UNIVERSAL PACKAGE**
45
- - ✅ Works with ALL MCP platforms
46
- - ✅ 100% standalone (bundled FAF engine)
47
- - ✅ Based on proven claude-faf-mcp codebase
48
- - ✅ Championship-grade performance
49
- - ✅ Orange smiley icon everywhere
50
-
51
- **The .faf Position in MCP:**
52
-
53
- ```
54
- Platform Context Protocol
55
- ──────── ─────── ────────
56
- Claude → .faf → MCP
57
- Cursor → .faf → MCP
58
- Windsurf → .faf → MCP
59
- Any IDE → IANA Format → Open Protocol
60
- ```
61
-
62
- .FAF provides the standardized Context that makes the Model Context Protocol work for everyone.
63
15
 
64
16
  ### Technical Architecture
65
17
  - **What Building:** Universal FAF MCP Server - AI Context Intelligence for All Platforms
66
18
  - **Main Language:** TypeScript
67
19
 
68
20
  ### 📊 Context Quality Status
69
- - **Overall Assessment:** New (forked from claude-faf-mcp v3.3.0)
70
- - **Last Updated:** 2025-11-12
21
+ - **Overall Assessment:** Good
22
+ - **Last Updated:** 2025-12-18
71
23
 
72
24
  ---
73
25
 
74
- ## 🚨 NPM PUBLISH PROTOCOL - MANDATORY 🚨
75
-
76
- **CRITICAL RULE: `npm publish` IS FORBIDDEN WITHOUT APPROVAL**
77
-
78
- Before ANY npm publish of faf-mcp (or any FAF package):
79
-
80
- 1. **Follow the MCP Publish Checklist** at `/Users/wolfejam/FAF-GOLD/PLANET-FAF/PUBLISH-PROTOCOL.md`
81
- 2. **Run ALL checklist items** (build, tests, version, README, CHANGELOG, SKILL.md, etc.)
82
- 3. **Request approval** with checklist results in the format specified
83
- 4. **Wait for OFFICIAL GO!** from wolfejam
84
-
85
- **Required approval signals:**
86
- - ✅ **"GO!"** - Approved to publish
87
- - ✅ **"GREEN LIGHT"** - Approved to publish
88
- - ❌ Anything else - DO NOT PUBLISH
89
-
90
- **Why this matters:**
91
- - Trust is everything
92
- - Universal package for ALL MCP platforms (Claude, Cursor, Windsurf, VS Code)
93
- - Production infrastructure for 13k+ developers
94
- - Official Anthropic MCP steward responsibility
95
- - One bad publish can damage reputation permanently
96
-
97
- **No exceptions. No shortcuts. Professional. Boring. Trusted.**
98
-
99
- ---
100
-
101
- ## 🎯 Strategic Position
102
-
103
- **Ecosystem Strategy:**
104
- - `faf-mcp` - Universal package (primary)
105
- - `claude-faf-mcp` - Maintained (established metrics)
106
- - Future: Platform-specific versions based on demand (cursor-faf-mcp, windsurf-faf-mcp, etc.)
107
-
108
- **Traffic Strategy:**
109
- - Capture searches across ALL MCP platforms
110
- - Keywords: mcp, cursor, windsurf, claude, gemini, vscode
111
- - Aggregate download metrics from universal package
112
-
113
- ---
26
+ **STATUS: BI-SYNC ACTIVE 🔗 - Synchronized with .faf context!**
114
27
 
115
- **Built with F1-inspired engineering principles** 🏎️⚡
28
+ *Last Sync: 2025-12-18T20:42:35.461Z*
29
+ *Sync Engine: F1-Inspired Software Engineering*
30
+ *🏎️⚡️_championship_sync*
@@ -50,6 +50,548 @@ const chrome_extension_detector_1 = require("../utils/chrome-extension-detector"
50
50
  const fab_formats_processor_1 = require("../engines/fab-formats-processor");
51
51
  const path = __importStar(require("path"));
52
52
  // ============================================================================
53
+ // TYPE_DEFINITIONS - Single Source of Truth for Project Types
54
+ // Ported from faf-cli v3.2.5 for scoring parity
55
+ // ============================================================================
56
+ // Design: 21 slots always exist. Types define which slots COUNT toward scoring.
57
+ // slot_ignore in .faf file overrides type defaults for edge cases.
58
+ /**
59
+ * All 21 slots in the FAF system
60
+ */
61
+ const ALL_SLOTS = {
62
+ // Project slots (3)
63
+ project: ['project.name', 'project.goal', 'project.main_language'],
64
+ // Frontend slots (4)
65
+ frontend: ['stack.frontend', 'stack.css_framework', 'stack.ui_library', 'stack.state_management'],
66
+ // Backend slots (5)
67
+ backend: ['stack.backend', 'stack.api_type', 'stack.runtime', 'stack.database', 'stack.connection'],
68
+ // Universal slots (3)
69
+ universal: ['stack.hosting', 'stack.build', 'stack.cicd'],
70
+ // Human context slots (6)
71
+ human: ['human.who', 'human.what', 'human.why', 'human.where', 'human.when', 'human.how']
72
+ };
73
+ /**
74
+ * TYPE_DEFINITIONS - Maps project types to their applicable slots
75
+ * 94 project types + 38 aliases from faf-cli v3.2.5
76
+ */
77
+ const TYPE_DEFINITIONS = {
78
+ // CLI/Tool Types (9 slots: project + human)
79
+ 'cli': {
80
+ description: 'Command-line interface tool',
81
+ categories: ['project', 'human'],
82
+ aliases: ['cli-tool', 'command-line']
83
+ },
84
+ 'cli-tool': {
85
+ description: 'Command-line interface tool',
86
+ categories: ['project', 'human']
87
+ },
88
+ // Library/Package Types (9 slots: project + human)
89
+ 'library': {
90
+ description: 'Reusable code library/package',
91
+ categories: ['project', 'human'],
92
+ aliases: ['lib', 'package']
93
+ },
94
+ 'npm-package': {
95
+ description: 'NPM package',
96
+ categories: ['project', 'human']
97
+ },
98
+ 'pip-package': {
99
+ description: 'Python pip package',
100
+ categories: ['project', 'human'],
101
+ aliases: ['pypi']
102
+ },
103
+ 'crate': {
104
+ description: 'Rust crate',
105
+ categories: ['project', 'human'],
106
+ aliases: ['rust-crate']
107
+ },
108
+ 'gem': {
109
+ description: 'Ruby gem',
110
+ categories: ['project', 'human'],
111
+ aliases: ['ruby-gem']
112
+ },
113
+ // AI/ML Types
114
+ 'mcp-server': {
115
+ description: 'Model Context Protocol server',
116
+ categories: ['project', 'backend', 'human']
117
+ },
118
+ 'data-science': {
119
+ description: 'Data science/analysis project',
120
+ categories: ['project', 'backend', 'human'],
121
+ aliases: ['data-analysis', 'analytics']
122
+ },
123
+ 'ml-model': {
124
+ description: 'Machine learning model',
125
+ categories: ['project', 'backend', 'human'],
126
+ aliases: ['ai-model', 'ml', 'machine-learning']
127
+ },
128
+ 'jupyter': {
129
+ description: 'Jupyter notebook project',
130
+ categories: ['project', 'human'],
131
+ aliases: ['notebook', 'ipynb']
132
+ },
133
+ 'data-pipeline': {
134
+ description: 'Data pipeline/ETL',
135
+ categories: ['project', 'backend', 'human'],
136
+ aliases: ['etl', 'pipeline']
137
+ },
138
+ // API/Backend Types
139
+ 'backend-api': {
140
+ description: 'Backend API service',
141
+ categories: ['project', 'backend', 'universal', 'human'],
142
+ aliases: ['api', 'backend', 'rest-api']
143
+ },
144
+ 'node-api': {
145
+ description: 'Node.js API service',
146
+ categories: ['project', 'backend', 'universal', 'human'],
147
+ aliases: ['express', 'fastify', 'nest']
148
+ },
149
+ 'python-api': {
150
+ description: 'Python API service',
151
+ categories: ['project', 'backend', 'universal', 'human'],
152
+ aliases: ['flask', 'fastapi', 'django-api']
153
+ },
154
+ 'python-app': {
155
+ description: 'Python application',
156
+ categories: ['project', 'backend', 'human']
157
+ },
158
+ 'go-api': {
159
+ description: 'Go API service',
160
+ categories: ['project', 'backend', 'universal', 'human'],
161
+ aliases: ['golang', 'gin', 'fiber']
162
+ },
163
+ 'rust-api': {
164
+ description: 'Rust API service',
165
+ categories: ['project', 'backend', 'universal', 'human'],
166
+ aliases: ['actix', 'axum', 'rocket']
167
+ },
168
+ 'graphql': {
169
+ description: 'GraphQL API service',
170
+ categories: ['project', 'backend', 'universal', 'human'],
171
+ aliases: ['graphql-api']
172
+ },
173
+ 'microservice': {
174
+ description: 'Microservice',
175
+ categories: ['project', 'backend', 'universal', 'human'],
176
+ aliases: ['service']
177
+ },
178
+ // Frontend Types
179
+ 'frontend': {
180
+ description: 'Frontend-only web application',
181
+ categories: ['project', 'frontend', 'universal', 'human']
182
+ },
183
+ 'svelte': {
184
+ description: 'Svelte web application',
185
+ categories: ['project', 'frontend', 'universal', 'human'],
186
+ aliases: ['sveltekit']
187
+ },
188
+ 'react': {
189
+ description: 'React web application',
190
+ categories: ['project', 'frontend', 'universal', 'human'],
191
+ aliases: ['reactjs']
192
+ },
193
+ 'vue': {
194
+ description: 'Vue.js web application',
195
+ categories: ['project', 'frontend', 'universal', 'human'],
196
+ aliases: ['vuejs', 'nuxt']
197
+ },
198
+ 'angular': {
199
+ description: 'Angular web application',
200
+ categories: ['project', 'frontend', 'universal', 'human']
201
+ },
202
+ 'nextjs': {
203
+ description: 'Next.js application',
204
+ categories: ['project', 'frontend', 'backend', 'universal', 'human'],
205
+ aliases: ['next']
206
+ },
207
+ 'remix': {
208
+ description: 'Remix application',
209
+ categories: ['project', 'frontend', 'backend', 'universal', 'human']
210
+ },
211
+ 'astro': {
212
+ description: 'Astro static site',
213
+ categories: ['project', 'frontend', 'universal', 'human']
214
+ },
215
+ 'solid': {
216
+ description: 'SolidJS application',
217
+ categories: ['project', 'frontend', 'universal', 'human'],
218
+ aliases: ['solidjs']
219
+ },
220
+ 'qwik': {
221
+ description: 'Qwik application',
222
+ categories: ['project', 'frontend', 'universal', 'human']
223
+ },
224
+ // Fullstack Types
225
+ 'fullstack': {
226
+ description: 'Full-stack web application',
227
+ categories: ['project', 'frontend', 'backend', 'universal', 'human']
228
+ },
229
+ 't3': {
230
+ description: 'T3 Stack (Next.js + tRPC + Prisma)',
231
+ categories: ['project', 'frontend', 'backend', 'universal', 'human'],
232
+ aliases: ['t3-stack', 'create-t3-app']
233
+ },
234
+ 'mern': {
235
+ description: 'MERN Stack (MongoDB + Express + React + Node)',
236
+ categories: ['project', 'frontend', 'backend', 'universal', 'human']
237
+ },
238
+ 'mean': {
239
+ description: 'MEAN Stack (MongoDB + Express + Angular + Node)',
240
+ categories: ['project', 'frontend', 'backend', 'universal', 'human']
241
+ },
242
+ 'lamp': {
243
+ description: 'LAMP Stack (Linux + Apache + MySQL + PHP)',
244
+ categories: ['project', 'frontend', 'backend', 'universal', 'human']
245
+ },
246
+ 'django': {
247
+ description: 'Django web application',
248
+ categories: ['project', 'frontend', 'backend', 'universal', 'human']
249
+ },
250
+ 'rails': {
251
+ description: 'Ruby on Rails application',
252
+ categories: ['project', 'frontend', 'backend', 'universal', 'human'],
253
+ aliases: ['ruby-on-rails', 'ror']
254
+ },
255
+ 'laravel': {
256
+ description: 'Laravel PHP application',
257
+ categories: ['project', 'frontend', 'backend', 'universal', 'human']
258
+ },
259
+ // Mobile Types
260
+ 'mobile': {
261
+ description: 'Mobile application',
262
+ categories: ['project', 'frontend', 'human'],
263
+ aliases: ['mobile-app']
264
+ },
265
+ 'react-native': {
266
+ description: 'React Native mobile app',
267
+ categories: ['project', 'frontend', 'human'],
268
+ aliases: ['rn', 'expo']
269
+ },
270
+ 'flutter': {
271
+ description: 'Flutter mobile app',
272
+ categories: ['project', 'frontend', 'human'],
273
+ aliases: ['dart']
274
+ },
275
+ 'ios': {
276
+ description: 'iOS native app',
277
+ categories: ['project', 'frontend', 'human'],
278
+ aliases: ['swift', 'swiftui']
279
+ },
280
+ 'android': {
281
+ description: 'Android native app',
282
+ categories: ['project', 'frontend', 'human'],
283
+ aliases: ['kotlin', 'kotlin-android']
284
+ },
285
+ 'ionic': {
286
+ description: 'Ionic mobile app',
287
+ categories: ['project', 'frontend', 'human'],
288
+ aliases: ['capacitor']
289
+ },
290
+ // Desktop Types
291
+ 'desktop': {
292
+ description: 'Desktop application',
293
+ categories: ['project', 'frontend', 'human'],
294
+ aliases: ['desktop-app']
295
+ },
296
+ 'electron': {
297
+ description: 'Electron desktop app',
298
+ categories: ['project', 'frontend', 'human']
299
+ },
300
+ 'tauri': {
301
+ description: 'Tauri desktop app',
302
+ categories: ['project', 'frontend', 'human']
303
+ },
304
+ 'qt': {
305
+ description: 'Qt desktop application',
306
+ categories: ['project', 'frontend', 'human'],
307
+ aliases: ['pyqt', 'pyside']
308
+ },
309
+ 'gtk': {
310
+ description: 'GTK desktop application',
311
+ categories: ['project', 'frontend', 'human']
312
+ },
313
+ // Browser Extensions
314
+ 'chrome-extension': {
315
+ description: 'Chrome browser extension',
316
+ categories: ['project', 'human'],
317
+ aliases: ['browser-extension', 'extension']
318
+ },
319
+ 'firefox-extension': {
320
+ description: 'Firefox browser extension',
321
+ categories: ['project', 'human'],
322
+ aliases: ['firefox-addon']
323
+ },
324
+ 'safari-extension': {
325
+ description: 'Safari browser extension',
326
+ categories: ['project', 'human']
327
+ },
328
+ // Automation/Workflow Types
329
+ 'n8n-workflow': {
330
+ description: 'n8n automation workflow',
331
+ categories: ['project', 'backend', 'human'],
332
+ aliases: ['n8n']
333
+ },
334
+ 'zapier': {
335
+ description: 'Zapier integration',
336
+ categories: ['project', 'human']
337
+ },
338
+ 'github-action': {
339
+ description: 'GitHub Action',
340
+ categories: ['project', 'human'],
341
+ aliases: ['gha', 'action']
342
+ },
343
+ // DevOps/Infrastructure Types
344
+ 'terraform': {
345
+ description: 'Terraform infrastructure',
346
+ categories: ['project', 'human'],
347
+ aliases: ['tf', 'iac']
348
+ },
349
+ 'kubernetes': {
350
+ description: 'Kubernetes configuration',
351
+ categories: ['project', 'human'],
352
+ aliases: ['k8s', 'helm']
353
+ },
354
+ 'docker': {
355
+ description: 'Docker/container configuration',
356
+ categories: ['project', 'human'],
357
+ aliases: ['dockerfile', 'container']
358
+ },
359
+ 'ansible': {
360
+ description: 'Ansible playbooks',
361
+ categories: ['project', 'human']
362
+ },
363
+ 'pulumi': {
364
+ description: 'Pulumi infrastructure',
365
+ categories: ['project', 'human']
366
+ },
367
+ 'infrastructure': {
368
+ description: 'Infrastructure as code',
369
+ categories: ['project', 'human'],
370
+ aliases: ['infra', 'devops']
371
+ },
372
+ // Static Sites / Documentation
373
+ 'static-html': {
374
+ description: 'Static HTML website',
375
+ categories: ['project', 'frontend', 'human'],
376
+ aliases: ['static-site', 'html']
377
+ },
378
+ 'landing-page': {
379
+ description: 'Landing page website',
380
+ categories: ['project', 'frontend', 'human'],
381
+ aliases: ['landing']
382
+ },
383
+ 'documentation': {
384
+ description: 'Documentation site',
385
+ categories: ['project', 'frontend', 'human'],
386
+ aliases: ['docs']
387
+ },
388
+ 'docusaurus': {
389
+ description: 'Docusaurus documentation site',
390
+ categories: ['project', 'frontend', 'human']
391
+ },
392
+ 'mkdocs': {
393
+ description: 'MkDocs documentation site',
394
+ categories: ['project', 'human']
395
+ },
396
+ 'vitepress': {
397
+ description: 'VitePress documentation site',
398
+ categories: ['project', 'frontend', 'human']
399
+ },
400
+ 'storybook': {
401
+ description: 'Storybook component library',
402
+ categories: ['project', 'frontend', 'human']
403
+ },
404
+ // CMS Types
405
+ 'wordpress': {
406
+ description: 'WordPress site/plugin/theme',
407
+ categories: ['project', 'frontend', 'backend', 'universal', 'human'],
408
+ aliases: ['wp']
409
+ },
410
+ 'cms': {
411
+ description: 'Content management system',
412
+ categories: ['project', 'frontend', 'backend', 'human']
413
+ },
414
+ 'strapi': {
415
+ description: 'Strapi headless CMS',
416
+ categories: ['project', 'backend', 'universal', 'human']
417
+ },
418
+ 'sanity': {
419
+ description: 'Sanity.io CMS',
420
+ categories: ['project', 'backend', 'human']
421
+ },
422
+ 'contentful': {
423
+ description: 'Contentful CMS integration',
424
+ categories: ['project', 'human']
425
+ },
426
+ // Game Development Types
427
+ 'game': {
428
+ description: 'Game project',
429
+ categories: ['project', 'frontend', 'human'],
430
+ aliases: ['gamedev']
431
+ },
432
+ 'unity': {
433
+ description: 'Unity game',
434
+ categories: ['project', 'frontend', 'human'],
435
+ aliases: ['unity3d']
436
+ },
437
+ 'godot': {
438
+ description: 'Godot game',
439
+ categories: ['project', 'frontend', 'human']
440
+ },
441
+ 'unreal': {
442
+ description: 'Unreal Engine game',
443
+ categories: ['project', 'frontend', 'human'],
444
+ aliases: ['ue4', 'ue5']
445
+ },
446
+ 'phaser': {
447
+ description: 'Phaser.js game',
448
+ categories: ['project', 'frontend', 'human']
449
+ },
450
+ 'threejs': {
451
+ description: 'Three.js 3D project',
452
+ categories: ['project', 'frontend', 'human'],
453
+ aliases: ['three', '3d', 'webgl']
454
+ },
455
+ // Blockchain/Web3 Types
456
+ 'smart-contract': {
457
+ description: 'Smart contract',
458
+ categories: ['project', 'human'],
459
+ aliases: ['solidity', 'contract']
460
+ },
461
+ 'dapp': {
462
+ description: 'Decentralized application',
463
+ categories: ['project', 'frontend', 'human'],
464
+ aliases: ['web3', 'blockchain']
465
+ },
466
+ 'hardhat': {
467
+ description: 'Hardhat Ethereum project',
468
+ categories: ['project', 'human']
469
+ },
470
+ 'foundry': {
471
+ description: 'Foundry Ethereum project',
472
+ categories: ['project', 'human'],
473
+ aliases: ['forge']
474
+ },
475
+ // Monorepo Types (CONTAINERS - need ALL slots)
476
+ 'monorepo': {
477
+ description: 'Monorepo - multi-package repository',
478
+ categories: ['project', 'frontend', 'backend', 'universal', 'human'],
479
+ aliases: ['mono', 'workspace']
480
+ },
481
+ 'turborepo': {
482
+ description: 'Turborepo monorepo',
483
+ categories: ['project', 'frontend', 'backend', 'universal', 'human'],
484
+ aliases: ['turbo']
485
+ },
486
+ 'nx': {
487
+ description: 'Nx monorepo',
488
+ categories: ['project', 'frontend', 'backend', 'universal', 'human']
489
+ },
490
+ 'lerna': {
491
+ description: 'Lerna monorepo',
492
+ categories: ['project', 'frontend', 'backend', 'universal', 'human']
493
+ },
494
+ 'pnpm-workspace': {
495
+ description: 'pnpm workspace monorepo',
496
+ categories: ['project', 'frontend', 'backend', 'universal', 'human'],
497
+ aliases: ['pnpm-mono']
498
+ },
499
+ 'yarn-workspace': {
500
+ description: 'Yarn workspace monorepo',
501
+ categories: ['project', 'frontend', 'backend', 'universal', 'human'],
502
+ aliases: ['yarn-mono']
503
+ },
504
+ // Embedded/Systems Types
505
+ 'embedded': {
506
+ description: 'Embedded systems',
507
+ categories: ['project', 'human'],
508
+ aliases: ['firmware', 'iot']
509
+ },
510
+ 'arduino': {
511
+ description: 'Arduino project',
512
+ categories: ['project', 'human']
513
+ },
514
+ 'raspberry-pi': {
515
+ description: 'Raspberry Pi project',
516
+ categories: ['project', 'human'],
517
+ aliases: ['rpi']
518
+ },
519
+ 'wasm': {
520
+ description: 'WebAssembly module',
521
+ categories: ['project', 'human'],
522
+ aliases: ['webassembly']
523
+ },
524
+ // Testing Types
525
+ 'test-suite': {
526
+ description: 'Test suite/framework',
527
+ categories: ['project', 'human'],
528
+ aliases: ['testing', 'tests']
529
+ },
530
+ 'e2e-tests': {
531
+ description: 'End-to-end test suite',
532
+ categories: ['project', 'human'],
533
+ aliases: ['e2e', 'playwright', 'cypress']
534
+ },
535
+ // Default
536
+ 'generic': {
537
+ description: 'Generic project (fallback)',
538
+ categories: ['project', 'universal', 'human']
539
+ }
540
+ };
541
+ /**
542
+ * Get applicable slots for a project type
543
+ */
544
+ function getSlotsForType(projectType) {
545
+ // Check for aliases first
546
+ for (const [type, def] of Object.entries(TYPE_DEFINITIONS)) {
547
+ if (def.aliases?.includes(projectType)) {
548
+ projectType = type;
549
+ break;
550
+ }
551
+ }
552
+ const typeDef = TYPE_DEFINITIONS[projectType] || TYPE_DEFINITIONS['generic'];
553
+ const slots = [];
554
+ for (const category of typeDef.categories) {
555
+ slots.push(...ALL_SLOTS[category]);
556
+ }
557
+ return slots;
558
+ }
559
+ /**
560
+ * Parse slot_ignore from .faf content
561
+ * Accepts: slot_ignore: [hosting, cicd] or slot_ignore: hosting, cicd
562
+ */
563
+ function parseSlotIgnore(ast) {
564
+ const slotIgnore = ast.slot_ignore || ast.slotIgnore || ast.ignore_slots;
565
+ if (!slotIgnore)
566
+ return [];
567
+ // Handle array format
568
+ if (Array.isArray(slotIgnore)) {
569
+ return slotIgnore.map((s) => normalizeSlotName(s));
570
+ }
571
+ // Handle string format (comma-separated)
572
+ if (typeof slotIgnore === 'string') {
573
+ return slotIgnore.split(',').map((s) => normalizeSlotName(s.trim()));
574
+ }
575
+ return [];
576
+ }
577
+ /**
578
+ * Normalize slot names to full path
579
+ * Examples: "hosting" -> "stack.hosting", "who" -> "human.who"
580
+ */
581
+ function normalizeSlotName(slot) {
582
+ // Already has prefix
583
+ if (slot.includes('.'))
584
+ return slot;
585
+ // Check each category for the slot
586
+ for (const [_category, slots] of Object.entries(ALL_SLOTS)) {
587
+ const fullSlot = slots.find(s => s.endsWith(`.${slot}`));
588
+ if (fullSlot)
589
+ return fullSlot;
590
+ }
591
+ // Return as-is if not found (will be ignored)
592
+ return slot;
593
+ }
594
+ // ============================================================================
53
595
  // Main Compiler Class
54
596
  // ============================================================================
55
597
  class FafCompiler {
@@ -247,6 +789,16 @@ class FafCompiler {
247
789
  if (ctx.buildTool)
248
790
  discovered.buildTool = ctx.buildTool;
249
791
  }
792
+ // Subsite detection: no package.json + has index.html = static subsite
793
+ const fs = await import('fs/promises');
794
+ const hasPackageJson = await fs.access(path.join(projectDir, 'package.json')).then(() => true).catch(() => false);
795
+ const hasIndexHtml = await fs.access(path.join(projectDir, 'index.html')).then(() => true).catch(() => false);
796
+ if (!hasPackageJson && hasIndexHtml) {
797
+ discovered.isSubsite = true;
798
+ if (process.env.FAF_DEBUG) {
799
+ console.log('[DEBUG] Subsite detected: no package.json + has index.html');
800
+ }
801
+ }
250
802
  return discovered;
251
803
  }
252
804
  removeDefaults(data, changes) {
@@ -294,28 +846,48 @@ class FafCompiler {
294
846
  }
295
847
  buildIR(ast) {
296
848
  const slots = [];
297
- // Detect project type to determine applicable stack slots
849
+ // Detect project type to determine applicable slots
298
850
  const projectType = this.detectProjectTypeFromContext(ast);
299
851
  if (process.env.FAF_DEBUG) {
300
852
  console.log(`\n[DEBUG] Project type detected: ${projectType}`);
301
853
  }
302
- const isFrontendProject = this.requiresFrontendStack(projectType);
303
- const isBackendProject = this.requiresBackendStack(projectType);
304
- // Auto-fill project.main_language for n8n workflows BEFORE reading slots
305
- if (projectType === 'n8n-workflow') {
306
- if (!ast.project)
307
- ast.project = {};
308
- if (!ast.project.main_language) {
309
- ast.project.main_language = ast.tech_stack?.primary_language || 'JSON (workflow definition)';
854
+ // Parse slot_ignore from the .faf file
855
+ const ignoredSlots = parseSlotIgnore(ast);
856
+ if (process.env.FAF_DEBUG && ignoredSlots.length > 0) {
857
+ console.log(`[DEBUG] slot_ignore: ${ignoredSlots.join(', ')}`);
858
+ }
859
+ // Get applicable slots for this project type (uses TYPE_DEFINITIONS)
860
+ const applicableSlots = getSlotsForType(projectType);
861
+ if (process.env.FAF_DEBUG) {
862
+ console.log(`[DEBUG] Applicable slots (${applicableSlots.length}): ${applicableSlots.join(', ')}`);
863
+ }
864
+ // Filter out ignored slots
865
+ const activeSlots = applicableSlots.filter(slot => !ignoredSlots.includes(slot));
866
+ if (process.env.FAF_DEBUG && ignoredSlots.length > 0) {
867
+ console.log(`[DEBUG] Active slots after ignore (${activeSlots.length}): ${activeSlots.join(', ')}`);
868
+ }
869
+ // Helper to get value from ast based on slot path
870
+ const getSlotValue = (slotPath) => {
871
+ const parts = slotPath.split('.');
872
+ if (parts[0] === 'project') {
873
+ return ast.project?.[parts[1]];
874
+ }
875
+ else if (parts[0] === 'stack') {
876
+ return ast.stack?.[parts[1]];
310
877
  }
878
+ else if (parts[0] === 'human') {
879
+ return ast.human_context?.[parts[1]];
880
+ }
881
+ return undefined;
882
+ };
883
+ // Add all active slots to the IR
884
+ for (const slotPath of activeSlots) {
885
+ const value = getSlotValue(slotPath);
886
+ this.addSlot(slots, slotPath, value, 'string', 'original', 1);
311
887
  }
312
- // Project slots (3)
313
- this.addSlot(slots, 'project.name', ast.project?.name, 'string', 'original', 1);
314
- this.addSlot(slots, 'project.goal', ast.project?.goal, 'string', 'original', 1);
315
- this.addSlot(slots, 'project.main_language', ast.project?.main_language, 'string', 'original', 1);
316
- // Chrome Extension auto-fill: If it's a Chrome Extension, intelligently fill slots
888
+ // Special handling for certain project types (auto-fill missing values)
889
+ // Chrome Extension: auto-fill technical context
317
890
  if (projectType === 'chrome-extension') {
318
- // Auto-fill Chrome Extension technical context
319
891
  if (!ast.stack)
320
892
  ast.stack = {};
321
893
  if (!ast.stack.runtime)
@@ -328,24 +900,15 @@ class FafCompiler {
328
900
  ast.stack.backend = 'Service Worker';
329
901
  if (!ast.stack.database)
330
902
  ast.stack.database = 'chrome.storage API';
331
- if (!ast.deployment)
332
- ast.deployment = 'Web Store Upload';
333
- // Add Chrome Extension specific slots
334
- this.addSlot(slots, 'stack.runtime', ast.stack.runtime, 'string', 'discovered', 1);
335
- this.addSlot(slots, 'stack.hosting', ast.stack.hosting, 'string', 'discovered', 1);
336
- this.addSlot(slots, 'stack.api_type', ast.stack.api_type, 'string', 'discovered', 1);
337
- this.addSlot(slots, 'stack.backend', ast.stack.backend, 'string', 'discovered', 1);
338
- this.addSlot(slots, 'stack.database', ast.stack.database, 'string', 'discovered', 1);
339
- this.addSlot(slots, 'stack.deployment', ast.deployment, 'string', 'discovered', 1);
340
- // Also include frontend framework if specified (e.g., Svelte Chrome Extension)
341
- if (ast.stack?.frontend) {
342
- this.addSlot(slots, 'stack.frontend', ast.stack.frontend, 'string', 'original', 1);
343
- }
344
- if (ast.stack?.build) {
345
- this.addSlot(slots, 'stack.build', ast.stack.build, 'string', 'original', 1);
903
+ // Add auto-filled slots (only if they're in the active slots list)
904
+ const chromeSlots = ['stack.runtime', 'stack.hosting', 'stack.api_type', 'stack.backend', 'stack.database'];
905
+ for (const slot of chromeSlots) {
906
+ if (activeSlots.includes(slot) && !slots.find(s => s.path === slot)) {
907
+ this.addSlot(slots, slot, getSlotValue(slot), 'string', 'discovered', 1);
908
+ }
346
909
  }
347
910
  }
348
- // Static HTML auto-fill: If it's a static HTML site, intelligently fill slots
911
+ // Static HTML: auto-fill technical context
349
912
  if (projectType === 'static-html' || projectType === 'landing-page') {
350
913
  if (!ast.stack)
351
914
  ast.stack = {};
@@ -356,88 +919,31 @@ class FafCompiler {
356
919
  if (!ast.stack.hosting)
357
920
  ast.stack.hosting = 'Static Hosting';
358
921
  if (!ast.stack.build)
359
- ast.stack.build = 'None';
360
- this.addSlot(slots, 'stack.frontend', ast.stack.frontend, 'string', 'discovered', 1);
361
- this.addSlot(slots, 'stack.runtime', ast.stack.runtime, 'string', 'discovered', 1);
362
- this.addSlot(slots, 'stack.hosting', ast.stack.hosting, 'string', 'discovered', 1);
363
- this.addSlot(slots, 'stack.build', ast.stack.build, 'string', 'discovered', 1);
364
- // Leave backend, database, cicd as "None" - legitimate for static sites
365
- }
366
- // n8n Workflow auto-fill: Map n8n-specific fields to standard 21-slot system
922
+ ast.stack.build = 'Direct HTML (no build step)';
923
+ }
924
+ // n8n Workflow: auto-fill technical context
367
925
  if (projectType === 'n8n-workflow') {
368
- // Map n8n context to existing stack slots (efficient, no slot inflation)
926
+ if (!ast.project)
927
+ ast.project = {};
928
+ if (!ast.project.main_language) {
929
+ ast.project.main_language = ast.tech_stack?.primary_language || 'JSON (workflow definition)';
930
+ }
369
931
  if (!ast.stack)
370
932
  ast.stack = {};
371
- // Runtime = workflow engine
372
- if (!ast.stack.runtime) {
933
+ if (!ast.stack.runtime)
373
934
  ast.stack.runtime = ast.tech_stack?.workflow_engine || 'n8n';
374
- }
375
- // Backend = n8n server runtime
376
- if (!ast.stack.backend) {
935
+ if (!ast.stack.backend)
377
936
  ast.stack.backend = 'Node.js (n8n server)';
378
- }
379
- // API type = n8n trigger types
380
- if (!ast.stack.api_type) {
937
+ if (!ast.stack.api_type)
381
938
  ast.stack.api_type = 'Webhooks + HTTP';
382
- }
383
- // Database = vector DB or workflow state
384
- if (!ast.stack.database) {
939
+ if (!ast.stack.database)
385
940
  ast.stack.database = ast.tech_stack?.infrastructure?.vector_db || 'Workflow State';
386
- }
387
- // Hosting = deployment location
388
- if (!ast.stack.hosting) {
941
+ if (!ast.stack.hosting)
389
942
  ast.stack.hosting = 'n8n Cloud';
390
- }
391
- // Build tool = how workflows are created
392
- if (!ast.stack.build) {
943
+ if (!ast.stack.build)
393
944
  ast.stack.build = 'n8n Visual Editor';
394
- }
395
- // Connection = integrations (maps to stack.connection slot)
396
- if (!ast.stack.connection && ast.tech_stack?.integrations) {
397
- ast.stack.connection = Array.isArray(ast.tech_stack.integrations)
398
- ? ast.tech_stack.integrations.join(', ')
399
- : String(ast.tech_stack.integrations);
400
- }
401
- // Add n8n-specific slots (maps to standard 21-slot system)
402
- // Backend slots (5)
403
- this.addSlot(slots, 'stack.runtime', ast.stack.runtime, 'string', 'discovered', 1);
404
- this.addSlot(slots, 'stack.backend', ast.stack.backend, 'string', 'discovered', 1);
405
- this.addSlot(slots, 'stack.api_type', ast.stack.api_type, 'string', 'discovered', 1);
406
- this.addSlot(slots, 'stack.database', ast.stack.database, 'string', 'discovered', 1);
407
- this.addSlot(slots, 'stack.connection', ast.stack.connection, 'string', 'original', 1);
408
- // Frontend slots (4) - n8n workflows don't have frontend, but we still count them
409
- this.addSlot(slots, 'stack.frontend', ast.stack?.frontend, 'string', 'original', 1);
410
- this.addSlot(slots, 'stack.css_framework', ast.stack?.css_framework, 'string', 'original', 1);
411
- this.addSlot(slots, 'stack.ui_library', ast.stack?.ui_library, 'string', 'original', 1);
412
- this.addSlot(slots, 'stack.state_management', ast.stack?.state_management, 'string', 'original', 1);
413
- // Universal slots (3) will be added below (hosting, build, cicd)
414
- }
415
- // Stack slots - only add relevant ones based on project type
416
- if (isFrontendProject) {
417
- this.addSlot(slots, 'stack.frontend', ast.stack?.frontend, 'string', 'original', 1);
418
- this.addSlot(slots, 'stack.css_framework', ast.stack?.css_framework, 'string', 'original', 1);
419
- this.addSlot(slots, 'stack.ui_library', ast.stack?.ui_library, 'string', 'original', 1);
420
- this.addSlot(slots, 'stack.state_management', ast.stack?.state_management, 'string', 'original', 1);
421
- }
422
- if (isBackendProject) {
423
- this.addSlot(slots, 'stack.backend', ast.stack?.backend, 'string', 'original', 1);
424
- this.addSlot(slots, 'stack.api_type', ast.stack?.api_type, 'string', 'original', 1);
425
- this.addSlot(slots, 'stack.runtime', ast.stack?.runtime, 'string', 'original', 1);
426
- this.addSlot(slots, 'stack.database', ast.stack?.database, 'string', 'original', 1);
427
- this.addSlot(slots, 'stack.connection', ast.stack?.connection, 'string', 'original', 1);
428
- }
429
- // Universal stack slots (apply to all project types)
430
- this.addSlot(slots, 'stack.hosting', ast.stack?.hosting, 'string', 'original', 1);
431
- this.addSlot(slots, 'stack.build', ast.stack?.build, 'string', 'original', 1);
432
- this.addSlot(slots, 'stack.cicd', ast.stack?.cicd, 'string', 'original', 1);
433
- // Human context slots (6) - always applicable
434
- this.addSlot(slots, 'human.who', ast.human_context?.who, 'string', 'original', 1);
435
- this.addSlot(slots, 'human.what', ast.human_context?.what, 'string', 'original', 1);
436
- this.addSlot(slots, 'human.why', ast.human_context?.why, 'string', 'original', 1);
437
- this.addSlot(slots, 'human.where', ast.human_context?.where, 'string', 'original', 1);
438
- this.addSlot(slots, 'human.when', ast.human_context?.when, 'string', 'original', 1);
439
- this.addSlot(slots, 'human.how', ast.human_context?.how, 'string', 'original', 1);
440
- // Discovered slots (if any)
945
+ }
946
+ // Discovered slots (if any) - only add if slot is active and not already filled
441
947
  if (ast._discovered) {
442
948
  const discovered = ast._discovered;
443
949
  const mapping = {
@@ -449,9 +955,12 @@ class FafCompiler {
449
955
  'hosting': 'stack.hosting',
450
956
  'buildTool': 'stack.build'
451
957
  };
452
- for (const [key, path] of Object.entries(mapping)) {
453
- if (discovered[key] && !this.hasValue(ast, path)) {
454
- this.addSlot(slots, `discovery.${path}`, discovered[key], 'string', 'discovered', 1);
958
+ for (const [key, slotPath] of Object.entries(mapping)) {
959
+ if (discovered[key] && activeSlots.includes(slotPath) && !this.hasValue(ast, slotPath)) {
960
+ // Only add to discovery if not already in slots
961
+ if (!slots.find(s => s.path === slotPath)) {
962
+ this.addSlot(slots, `discovery.${slotPath}`, discovered[key], 'string', 'discovered', 1);
963
+ }
455
964
  }
456
965
  }
457
966
  }
@@ -1 +1 @@
1
- {"version":3,"file":"faf-compiler.js","sourceRoot":"","sources":["../../../../src/faf-core/compiler/faf-compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"faf-compiler.js","sourceRoot":"","sources":["../../../../src/faf-core/compiler/faf-compiler.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "faf-mcp",
3
- "version": "1.1.4",
3
+ "version": "1.2.1",
4
4
  "mcpName": "io.github.Wolfe-Jam/faf-mcp",
5
5
  "description": "faf-mcp | use>faf • IANA-registered format (application/vnd.faf+yaml) • Universal MCP server for Cursor, Windsurf, Cline, VS Code, and all platforms",
6
6
  "icon": "./assets/icons/faf-icon-256.png",
@@ -23,6 +23,8 @@
23
23
  "type-check": "tsc --noEmit",
24
24
  "format:check": "prettier --check \"src/**/*.ts\"",
25
25
  "format": "prettier --write \"src/**/*.ts\"",
26
+ "sync-version": "node scripts/sync-version.js",
27
+ "version": "npm run sync-version && git add project.faf",
26
28
  "postinstall": "node scripts/postinstall.js",
27
29
  "debug": "node --inspect-brk=0.0.0.0:9229 -r ts-node/register src/cli.ts"
28
30
  },
package/project.faf CHANGED
@@ -21,12 +21,10 @@ instant_context:
21
21
  - package.json
22
22
  - tsconfig.json
23
23
  context_quality:
24
- slots_filled: 16/21 (76%)
25
- ai_confidence: GOOD
24
+ slots_filled: 21/21 (100%)
25
+ ai_confidence: HIGH
26
26
  handoff_ready: true
27
- missing_context:
28
- - CI/CD pipeline
29
- - Database
27
+ missing_context: []
30
28
  project:
31
29
  name: Faf Mcp
32
30
  goal: USE>FAF™ - IANA-registered format (application/vnd.faf+yaml) • Universal
@@ -38,15 +36,16 @@ project:
38
36
  revolution: 30 seconds replaces 20 minutes of questions
39
37
  brand: F1-Inspired Software Engineering - Championship AI Context
40
38
  ai_instructions:
41
- how_to_start: "Just USE FAF - Start every prompt with 'Use FAF to...' and MCP tools handle the rest"
39
+ how_to_start: Just USE FAF - Start every prompt with 'Use FAF to...' and MCP
40
+ tools handle the rest
42
41
  priority_order:
43
42
  - 1. Read THIS .faf file first
44
43
  - 2. Check CLAUDE.md for session context
45
44
  - 3. Review package.json for dependencies
46
45
  quick_commands:
47
- - "Use FAF to initialize your project"
48
- - "Use FAF to sync my project.faf to all platforms"
49
- - "Use FAF to score my AI-readiness"
46
+ - Use FAF to initialize your project
47
+ - Use FAF to sync my project.faf to all platforms
48
+ - Use FAF to score my AI-readiness
50
49
  working_style:
51
50
  code_first: true
52
51
  explanations: minimal
@@ -68,7 +67,12 @@ stack:
68
67
  package_manager: npm
69
68
  api_type: CLI
70
69
  hosting: npm registry
71
- cicd: None
70
+ cicd: Vercel
71
+ targetUser: developers
72
+ coreProblem: understanding project
73
+ missionPurpose: project documentation
74
+ packageManager: npm/yarn/pnpm
75
+ mainLanguage: JavaScript/TypeScript
72
76
  preferences:
73
77
  quality_bar: zero_errors
74
78
  commit_style: conventional_emoji
@@ -79,7 +83,7 @@ preferences:
79
83
  documentation: as_needed
80
84
  state:
81
85
  phase: development
82
- version: 1.0.0
86
+ version: 1.2.1
83
87
  focus: production_deployment
84
88
  status: green_flag
85
89
  next_milestone: npm_publication
@@ -100,16 +104,16 @@ tags:
100
104
  - open-source
101
105
  user_defined: null
102
106
  human_context:
103
- who: Development teams
104
- what: "everything:"
105
- why: To MCP work for everyone
106
- where: Web platform
107
- when: Production/Stable
108
- how: Use FAF to initialize your project
109
- additional_context: null
110
- context_score: 0
111
- total_prd_score: 85
112
- success_rate: 50%
107
+ who: Developers using Claude, Cursor, Windsurf, VS Code, Cline, and any MCP-compatible IDE
108
+ what: Universal MCP server providing .faf context tools - 17 native tools + 40+ CLI fallback commands
109
+ why: Eliminate the 20-minute AI context tax - give AI instant project understanding in 30 seconds
110
+ where: npm registry, MCP ecosystem, Claude Desktop, Cursor IDE, Windsurf Editor
111
+ when: Production/Stable - v1.1.4 WJTTC certified
112
+ how: npx faf-mcp or npm install -g faf-mcp, then add to your MCP config
113
+ additional_context: IANA-registered format (application/vnd.faf+yaml), 15k+ downloads, official Anthropic MCP steward
114
+ context_score: 100
115
+ total_prd_score: 100
116
+ success_rate: 100%
113
117
  ai_scoring_details:
114
118
  system_date: 2025-09-20
115
119
  slot_based_percentage: 76
@@ -123,3 +127,20 @@ faf_dna:
123
127
  birth_certificate: FAF-2025-FAFMCP-NR94
124
128
  birth_date: 2025-11-13T20:02:03.306Z
125
129
  current_score: 83
130
+ projectName: faf-mcp
131
+ projectGoal: faf-mcp | use>faf • IANA-registered format
132
+ (application/vnd.faf+yaml) • Universal MCP server for Cursor, Windsurf, Cline,
133
+ VS Code, and all platforms
134
+ generated: 2025-12-18T20:38:25.477Z
135
+ stack_signature: typescript-nodejs-javascript
136
+ detected_frameworks:
137
+ - Jest
138
+ - Node.js
139
+ - JavaScript
140
+ - TypeScript
141
+ - Vercel
142
+ - npm
143
+ turbo_cat_intelligence: 360
144
+ stats:
145
+ last_auto_time: 0.6
146
+ times_run: 1
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Sync version from package.json to project.faf
4
+ * Run: npm run sync-version
5
+ * Auto-runs on: npm version (via "version" lifecycle hook)
6
+ */
7
+
8
+ const fs = require('fs');
9
+ const path = require('path');
10
+
11
+ const packageJsonPath = path.join(__dirname, '..', 'package.json');
12
+ const projectFafPath = path.join(__dirname, '..', 'project.faf');
13
+
14
+ try {
15
+ // Read version from package.json
16
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
17
+ const version = packageJson.version;
18
+
19
+ // Read project.faf
20
+ let projectFaf = fs.readFileSync(projectFafPath, 'utf-8');
21
+
22
+ // Update version field in state section
23
+ projectFaf = projectFaf.replace(
24
+ /^(\s*version:\s*).+$/m,
25
+ `$1${version}`
26
+ );
27
+
28
+ // Write back
29
+ fs.writeFileSync(projectFafPath, projectFaf);
30
+
31
+ console.log(`Synced project.faf version to ${version}`);
32
+ } catch (error) {
33
+ console.error('Failed to sync version:', error.message);
34
+ process.exit(1);
35
+ }
package/.faf DELETED
@@ -1,10 +0,0 @@
1
- project:
2
- name: faf-mcp
3
- goal: Universal MCP server for all platforms
4
- instant_context:
5
- tech_stack: Node.js/TypeScript
6
- main_language: TypeScript
7
- what_building: Universal FAF MCP Server - AI Context Intelligence for All Platforms
8
- metadata:
9
- last_claude_sync: 2025-11-13T20:02:49.198Z
10
- bi_sync: active