faf-cli 3.0.1 → 3.0.2

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/README.md CHANGED
@@ -1,11 +1,11 @@
1
- # faf-cli v3.0.1 - Championship Edition 🏆
1
+ # faf-cli v3.0.2 - Championship Edition 🏆
2
2
  with Turbo Cat 😽
3
3
 
4
4
  <div align="center">
5
5
 
6
6
  <img src="https://cdn.jsdelivr.net/npm/faf-cli@latest/assets/icons/orange-smiley.svg" alt="FAF Logo" width="64" />
7
7
 
8
- ## **FREE FOREVER** 🆓 • **10,000 Downloads** 🎉 • **TURBO-CAT Powered** 😽
8
+ ## **FREE FOR ALL DEVS** 🆓 • **Growing Fast** 📈 • **TURBO-CAT Powered** 😽
9
9
 
10
10
  **Project DNA ✨ for ANY AI** • **Instant Context** • **Zero Faff™**
11
11
 
@@ -24,7 +24,7 @@ with Turbo Cat 😽
24
24
 
25
25
  ### The Championship Release
26
26
 
27
- **Celebrating 10,000 downloads** with the biggest release yet:
27
+ **The biggest release yet:**
28
28
 
29
29
  - 🆓 **FREE FOREVER .faf Core-Engine** - 41 championship commands, always free, open source, MIT License
30
30
  - 💨 **TURBO Model Introduced** - Like VS Code + Copilot, Spotify Free + Premium, Zoom Basic + Pro
@@ -123,6 +123,83 @@ faf formats
123
123
 
124
124
  ---
125
125
 
126
+ ## 💨 FAF TURBO - World-Class Automation Intelligence
127
+
128
+ ### Like **VS Code + Copilot** • Same model that works!
129
+
130
+ <div align="center">
131
+
132
+ <table>
133
+ <tr>
134
+ <td width="50%" valign="top">
135
+
136
+ ### **FAF v3.0.2 (FREE FOR ALL DEVS)** 🆓
137
+
138
+ ✅ **41 Championship Commands**
139
+ - Project initialization & auto-detection
140
+ - TURBO-CAT format discovery (153 formats)
141
+ - Birth DNA lifecycle tracking
142
+ - AI readiness scoring (0-100%)
143
+ - Context-mirroring (bi-sync)
144
+ - Health checks & diagnostics
145
+
146
+ ✅ **Performance**
147
+ - <50ms command execution
148
+ - 8ms bi-sync (championship speed)
149
+ - F1-inspired engineering
150
+ - 0ms operations achieved
151
+
152
+ ✅ **Universal Compatibility**
153
+ - Works with Claude, Codex CLI, Gemini CLI, Cursor
154
+ - Mac, Linux, Windows support
155
+ - Open source, MIT licensed
156
+ - Growing developer community
157
+
158
+ ```bash
159
+ npm install -g faf-cli
160
+ ```
161
+
162
+ </td>
163
+ <td width="50%" valign="top">
164
+
165
+ ### **FAF v3.0.2 TURBO** 💨
166
+
167
+ ✅ **Everything in FREE, Plus:**
168
+
169
+ 🧬 **Deep Format Intelligence**
170
+ - Pyramid-level insights (17 levels deep)
171
+ - Cross-format relationship analysis
172
+ - Stack health diagnostics
173
+ - Migration path recommendations
174
+
175
+ 🤖 **Universal Automation Intelligence**
176
+ - **n8n workflow parsing** - RAG, ETL, Multi-Agent patterns
177
+ - **OpenAI Assistants** - GPT Actions & function schemas
178
+ - **Google Opal** - Visual mini-app workflows
179
+ - **Make.com scenarios** - Module & integration analysis
180
+ - **FOUNDATIONAL FIRST** - ONE pattern for ALL platforms
181
+
182
+ 🏆 **Premium Features**
183
+ - Priority support & service plans
184
+ - Advanced TURBO-CAT capabilities
185
+ - Enterprise integrations
186
+ - Early access to new features
187
+
188
+ ```bash
189
+ Learn more: faf.one/turbo
190
+ ```
191
+
192
+ </td>
193
+ </tr>
194
+ </table>
195
+
196
+ </div>
197
+
198
+ **TURBO**: Where automation platforms (n8n, Make, Opal) get championship AI context.
199
+ **Foundational first, universal by default.**
200
+
201
+ ---
202
+
126
203
  ## 🚀 Quick Start
127
204
 
128
205
  ```bash
@@ -191,21 +268,41 @@ We created this tool together across thousands of conversations. Yet without pro
191
268
 
192
269
  Universal, shareable AI context that works with **Claude Code, OpenAI Codex CLI, Gemini CLI, Cursor** - regardless of your stack, size, or setup.
193
270
 
194
- ### The Problem
271
+ ### Why Context Quality Matters
272
+
273
+ **At 99% context quality**, AI knows exactly what you're building and helps at optimal levels—trusted decisions, accurate suggestions, championship performance.
274
+
275
+ **At 55% context quality**, you're flipping a coin on every decision. It's like handing a builder only half a blueprint and discussing it in a totally foreign language.
276
+
277
+ FAF's **Professional 0→99% Podium Scoring System** makes context collection measurable, fun, and championship-grade. Track your project's evolution from 🤍 Heart (0%) to 🏆 Trophy (100%).
278
+
279
+ ### The REAL Problem: Project Health
280
+
281
+ **This isn't about saving 20 minutes at setup.**
195
282
 
196
- - 20+ minutes explaining projects to AI
197
- - ❌ AI gives wrong answers without context
198
- - ❌ Manual copy/paste every session
199
- - ❌ Context lost between conversations
200
- - ❌ "Can you remind me what this project does?"
283
+ Running projects on LOW AI context leads to:
284
+ - ❌ **Project death** (worst case)
285
+ - ❌ **Delays, costs, stress, heartache, disappointment**
286
+ - ❌ **Wasted time, resources, and money**
287
+ - ❌ **Poor outcomes for stakeholders and users**
288
+ - ❌ **Burnout from constant re-explaining**
201
289
 
202
- ### The Solution
290
+ **It's not a one-time config. It's a relationship.**
203
291
 
204
- - **30 seconds** from zero to complete AI understanding
205
- - ✅ **One command** creates perfect context
292
+ A healthy Human + AI collaboration requires **high-quality, persistent context**. Without it, every interaction is a gamble. Every decision is questionable. Every suggestion needs verification.
293
+
294
+ **Ignoring poor context on your project is like not brushing your child's teeth.**
295
+
296
+ You're gonna end up with a **CAVITY**.
297
+
298
+ ### The Solution: Project DNA
299
+
300
+ - ✅ **Championship context** (85-99% quality scores)
301
+ - ✅ **Persistent intelligence** - AI remembers your project perfectly
302
+ - ✅ **Seamless collaboration** - Human + AI working together optimally
303
+ - ✅ **Project health monitoring** - Track context quality over time
206
304
  - ✅ **Works with every AI** - Claude Code, OpenAI Codex CLI, Gemini CLI, Cursor, all of them
207
- - ✅ **Share with your team** - Instant project onboarding
208
- - ✅ **Persistent memory** - Never explain your project again
305
+ - ✅ **Team alignment** - Everyone (human AND AI) on the same page
209
306
 
210
307
  ---
211
308
 
@@ -298,7 +395,7 @@ faf lint # Fix formatting issues
298
395
 
299
396
  ## 🤖 Works with AI Assistants
300
397
 
301
- FAF v3.0.1 fully supports **Claude Code, Warp, Cursor, Copilot, Windsurf, OpenAI Codex CLI, Gemini CLI** and ALL AI coding assistants.
398
+ FAF v3.0.2 fully supports **Claude Code, Warp, Cursor, Copilot, Windsurf, OpenAI Codex CLI, Gemini CLI** and ALL AI coding assistants.
302
399
 
303
400
  **PLUS AI-Automation platforms:** n8n, OpenAI Builder, Google Opal, Make.com
304
401
 
@@ -423,7 +520,7 @@ faf auto -q
423
520
  ## 📊 Technical Specs
424
521
 
425
522
  ```yaml
426
- Version: 3.0.1 - Championship Edition
523
+ Version: 3.0.2 - Championship Edition
427
524
  Performance: <50ms all commands, 18ms avg, 8ms bi-sync, 0ms operations achieved
428
525
  Engine: FAF-Engine-Mk3
429
526
  TURBO-CAT: v3.0.0 - Full Power (Introduced v2.0.0, 153 validated formats)
@@ -438,9 +535,42 @@ Automation: n8n workflows, OpenAI Builder, Google Opal, Make.com - AI-Automat
438
535
 
439
536
  ---
440
537
 
538
+ ## 🏎️ The .faf Pattern
539
+
540
+ ### Why .faf vs RAG?
541
+
542
+ **.faf is pre-indexed intelligence.** Do the work once, use it forever.
543
+
544
+ | Aspect | RAG Approach | .faf Approach |
545
+ |--------|-------------|---------------|
546
+ | **Indexing** | Runtime embedding (slow, $$) | One-time at creation (fast, free) |
547
+ | **Retrieval** | Vector search per query ($$) | Instant file read (free) |
548
+ | **Quality** | Probabilistic, incomplete | Structured, validated, scored |
549
+ | **Latency** | Seconds (embedding + search) | Milliseconds (<50ms) |
550
+ | **Cost** | Per-query fees | Zero runtime cost |
551
+ | **Versioning** | Difficult | Git-friendly YAML |
552
+
553
+ **.faf is RAG's output—captured once, reused infinitely.** Championship efficiency.
554
+
555
+ ### Universal Pattern
556
+
557
+ Every source follows the same pattern:
558
+
559
+ ```
560
+ interrogation → extraction → filtering → generation → .faf
561
+ ```
562
+
563
+ **In FREE CLI:** Code projects → .faf (all languages, frameworks, stacks)
564
+
565
+ **In TURBO:** Automation platforms → .faf (n8n, OpenAI Assistants, Opal, Make.com)
566
+
567
+ Same pattern. Same output. Universal by design.
568
+
569
+ ---
570
+
441
571
  ## 🏆 WJTTC Championship Testing
442
572
 
443
- **FAF CLI v3.0.1 is WJTTC GOLD Certified** - tested to F1-grade standards.
573
+ **FAF CLI v3.0.2 is WJTTC GOLD Certified** - tested to F1-grade standards.
444
574
 
445
575
  ### What is WJTTC?
446
576
  **WolfeJam Technical & Testing Center** - F1-inspired testing methodology ensuring championship-grade reliability.
@@ -541,7 +671,7 @@ npm link
541
671
 
542
672
  We welcome contributions! Join our [community discussions](https://github.com/Wolfe-Jam/faf-cli/discussions) or submit issues/PRs.
543
673
 
544
- **Join 10,000+ developers** using `.faf` to accelerate their AI workflows:
674
+ **Join our growing community** using `.faf` to accelerate their AI workflows:
545
675
  - Share your projects
546
676
  - Get help from the community
547
677
  - Request features
@@ -553,12 +683,11 @@ We welcome contributions! Join our [community discussions](https://github.com/Wo
553
683
 
554
684
  **Position your brand alongside the universal AI context standard.**
555
685
 
556
- FAF CLI is defining a new category: **Universal AI Context Infrastructure**. With 10,000+ downloads, BIG-3 AI validation (Google, Anthropic, OpenAI), and adoption by leading AI development tools, FAF is becoming foundational infrastructure for the AI development ecosystem.
686
+ FAF CLI is defining a new category: **Universal AI Context Infrastructure**. With BIG-3 AI validation (Google, Anthropic, OpenAI) and adoption by leading AI development tools, FAF is becoming foundational infrastructure for the AI development ecosystem.
557
687
 
558
688
  ### 📈 Growth Momentum
559
689
 
560
- - **10,000+ total downloads** - Milestone reached (MCP + CLI combined)
561
- - **4,600 CLI downloads** - Rapid CLI adoption
690
+ - **Rapid adoption** - See live stats on npm
562
691
  - **Category leader** - First universal AI context standard
563
692
  - **Enterprise traction** - Infrastructure-level adoption
564
693
  - **BIG-3 validated** - Tested and endorsed by Google Gemini, Anthropic Claude, OpenAI Codex
@@ -609,9 +738,9 @@ Copy cats? Why bother.
609
738
 
610
739
  <div align="center">
611
740
 
612
- ## 🏁 v3.0.1 - Championship Edition
741
+ ## 🏁 v3.0.2 - Championship Edition
613
742
 
614
- **FREE FOREVER** 🆓 • **TURBO-CAT Powered** 😽 • **10,000 Downloads** 🎉
743
+ **FREE FOR ALL DEVS** 🆓 • **TURBO-CAT Powered** 😽 • **Growing Fast** 📈
615
744
 
616
745
  Made with 🧡 by **[wolfejam](https://github.com/Wolfe-Jam)**
617
746
 
@@ -621,8 +750,8 @@ Made with 🧡 by **[wolfejam](https://github.com/Wolfe-Jam)**
621
750
 
622
751
  ---
623
752
 
624
- The CLI is **FREE FOREVER**.
753
+ The CLI is **FREE FOR ALL DEVS**.
625
754
 
626
- Love it? **TURBO** for advanced features coming real soon once you've kicked the tires! 😽💨
755
+ Love it? **TURBO** for advanced features, ready for once you've kicked the tires! 😽💨
627
756
 
628
757
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../src/commands/auto.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,iBAkH9E;;AAED;;;;;;;;;;;;;;GAcG"}
1
+ {"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../src/commands/auto.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,iBA6O9E;;AAED;;;;;;;;;;;;;;GAcG"}
@@ -61,6 +61,108 @@ async function autoCommand(directory, options = {}) {
61
61
  return;
62
62
  }
63
63
  try {
64
+ // Step 0: Check for platform workflows (funnel to TURBO)
65
+ const { findN8nWorkflows, findMakeScenarios, findOpalMiniApps, findOpenAIAssistants } = await Promise.resolve().then(() => __importStar(require('../utils/file-utils')));
66
+ // Check n8n workflows
67
+ const n8nWorkflows = await findN8nWorkflows(targetDir);
68
+ if (n8nWorkflows.length > 0) {
69
+ console.log(colors_1.chalk.yellow(`\n⚠️ n8n workflow detected: ${colors_1.chalk.white(n8nWorkflows[0])}`));
70
+ console.log(colors_1.chalk.cyan(`\n💡 Fancy an 85% or even a 99%? 🏎️💨`));
71
+ console.log(colors_1.chalk.white(` faf turbo analyze "${n8nWorkflows[0]}"`));
72
+ console.log(colors_1.chalk.gray(`\n🏆 TURBO: 48% → 85%+ (with bi-sync) <3 seconds!`));
73
+ console.log(colors_1.chalk.gray(` vs. standard auto: 25% (generic detection)\n`));
74
+ const readline = await Promise.resolve().then(() => __importStar(require('readline')));
75
+ const rl = readline.createInterface({
76
+ input: process.stdin,
77
+ output: process.stdout
78
+ });
79
+ const answer = await new Promise((resolve) => {
80
+ rl.question(colors_1.chalk.cyan('Continue with standard auto (not recommended)? [y/N]: '), resolve);
81
+ });
82
+ rl.close();
83
+ if (answer.toLowerCase() !== 'y') {
84
+ console.log(colors_1.chalk.green(`\n✨ Run this instead:`));
85
+ console.log(colors_1.chalk.white(` faf turbo analyze "${n8nWorkflows[0]}"`));
86
+ console.log();
87
+ process.exit(0);
88
+ }
89
+ console.log(colors_1.chalk.gray('\n⚠️ Proceeding with standard auto (n8n intelligence will be missed)...\n'));
90
+ }
91
+ // Check Make.com scenarios
92
+ const makeScenarios = await findMakeScenarios(targetDir);
93
+ if (makeScenarios.length > 0) {
94
+ console.log(colors_1.chalk.yellow(`\n⚠️ Make.com scenario detected: ${colors_1.chalk.white(makeScenarios[0])}`));
95
+ console.log(colors_1.chalk.cyan(`\n💡 Fancy an 85% or even a 99%? 🏎️💨`));
96
+ console.log(colors_1.chalk.white(` faf turbo analyze "${makeScenarios[0]}"`));
97
+ console.log(colors_1.chalk.gray(`\n🏆 TURBO: 50% → 85%+ (with bi-sync) <3 seconds!`));
98
+ console.log(colors_1.chalk.gray(` vs. standard auto: 25% (generic detection)\n`));
99
+ const readline = await Promise.resolve().then(() => __importStar(require('readline')));
100
+ const rl = readline.createInterface({
101
+ input: process.stdin,
102
+ output: process.stdout
103
+ });
104
+ const answer = await new Promise((resolve) => {
105
+ rl.question(colors_1.chalk.cyan('Continue with standard auto (not recommended)? [y/N]: '), resolve);
106
+ });
107
+ rl.close();
108
+ if (answer.toLowerCase() !== 'y') {
109
+ console.log(colors_1.chalk.green(`\n✨ Run this instead:`));
110
+ console.log(colors_1.chalk.white(` faf turbo analyze "${makeScenarios[0]}"`));
111
+ console.log();
112
+ process.exit(0);
113
+ }
114
+ console.log(colors_1.chalk.gray('\n⚠️ Proceeding with standard auto (Make.com intelligence will be missed)...\n'));
115
+ }
116
+ // Check Google Opal mini-apps
117
+ const opalMiniApps = await findOpalMiniApps(targetDir);
118
+ if (opalMiniApps.length > 0) {
119
+ console.log(colors_1.chalk.yellow(`\n⚠️ Google Opal mini-app detected: ${colors_1.chalk.white(opalMiniApps[0])}`));
120
+ console.log(colors_1.chalk.cyan(`\n💡 Fancy an 85% or even a 99%? 🏎️💨`));
121
+ console.log(colors_1.chalk.white(` faf turbo analyze "${opalMiniApps[0]}"`));
122
+ console.log(colors_1.chalk.gray(`\n🏆 TURBO: 45% → 85%+ (with bi-sync) <3 seconds!`));
123
+ console.log(colors_1.chalk.gray(` vs. standard auto: 25% (generic detection)\n`));
124
+ const readline = await Promise.resolve().then(() => __importStar(require('readline')));
125
+ const rl = readline.createInterface({
126
+ input: process.stdin,
127
+ output: process.stdout
128
+ });
129
+ const answer = await new Promise((resolve) => {
130
+ rl.question(colors_1.chalk.cyan('Continue with standard auto (not recommended)? [y/N]: '), resolve);
131
+ });
132
+ rl.close();
133
+ if (answer.toLowerCase() !== 'y') {
134
+ console.log(colors_1.chalk.green(`\n✨ Run this instead:`));
135
+ console.log(colors_1.chalk.white(` faf turbo analyze "${opalMiniApps[0]}"`));
136
+ console.log();
137
+ process.exit(0);
138
+ }
139
+ console.log(colors_1.chalk.gray('\n⚠️ Proceeding with standard auto (Google Opal intelligence will be missed)...\n'));
140
+ }
141
+ // Check OpenAI Assistants
142
+ const openaiAssistants = await findOpenAIAssistants(targetDir);
143
+ if (openaiAssistants.length > 0) {
144
+ console.log(colors_1.chalk.yellow(`\n⚠️ OpenAI Assistant detected: ${colors_1.chalk.white(openaiAssistants[0])}`));
145
+ console.log(colors_1.chalk.cyan(`\n💡 Fancy an 85% or even a 99%? 🏎️💨`));
146
+ console.log(colors_1.chalk.white(` faf turbo analyze "${openaiAssistants[0]}"`));
147
+ console.log(colors_1.chalk.gray(`\n🏆 TURBO: 55% → 85%+ (with bi-sync) <3 seconds!`));
148
+ console.log(colors_1.chalk.gray(` vs. standard auto: 25% (generic detection)\n`));
149
+ const readline = await Promise.resolve().then(() => __importStar(require('readline')));
150
+ const rl = readline.createInterface({
151
+ input: process.stdin,
152
+ output: process.stdout
153
+ });
154
+ const answer = await new Promise((resolve) => {
155
+ rl.question(colors_1.chalk.cyan('Continue with standard auto (not recommended)? [y/N]: '), resolve);
156
+ });
157
+ rl.close();
158
+ if (answer.toLowerCase() !== 'y') {
159
+ console.log(colors_1.chalk.green(`\n✨ Run this instead:`));
160
+ console.log(colors_1.chalk.white(` faf turbo analyze "${openaiAssistants[0]}"`));
161
+ console.log();
162
+ process.exit(0);
163
+ }
164
+ console.log(colors_1.chalk.gray('\n⚠️ Proceeding with standard auto (OpenAI intelligence will be missed)...\n'));
165
+ }
64
166
  // Step 1: Check if .faf exists
65
167
  let fafPath = await (0, file_utils_1.findFafFile)(targetDir);
66
168
  // Get scores for header display
@@ -1 +1 @@
1
- {"version":3,"file":"auto.js","sourceRoot":"","sources":["../../src/commands/auto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto.js","sourceRoot":"","sources":["../../src/commands/auto.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"faf-compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/faf-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,gBAAgB,CAAC;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,EAAE,EAAE,0BAA0B,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,WAAW,CAAC;CACxB;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,UAAU,UAAU;IAClB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,0BAA0B;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,UAAU,MAAM;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAoB;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAExD,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,EAAE,CAA6B;;IAgBvC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAyC5C,UAAU;IAoBxB,OAAO,CAAC,KAAK;IA2Bb,OAAO,CAAC,OAAO;IAiCf,OAAO,CAAC,aAAa;YAgCP,QAAQ;YA2BR,QAAQ;IAsBtB,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,QAAQ;IA6BhB,OAAO,CAAC,OAAO;IA6Ff,OAAO,CAAC,OAAO;IAoBf,OAAO,CAAC,YAAY;IAoCpB,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,4BAA4B;IAmDpC,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,cAAc;IAiEtB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,aAAa;IAarB;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAMnE;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKjE;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAKjE;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAoCxB;;OAEG;IACH,OAAO,CAAC,UAAU;CAqCnB;AAMD;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAGzE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAGlF;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGhF"}
1
+ {"version":3,"file":"faf-compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/faf-compiler.ts"],"names":[],"mappings":"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"}
@@ -295,14 +295,25 @@ class FafCompiler {
295
295
  }
296
296
  buildIR(ast) {
297
297
  const slots = [];
298
- // Project slots (3)
299
- this.addSlot(slots, 'project.name', ast.project?.name, 'string', 'original', 1);
300
- this.addSlot(slots, 'project.goal', ast.project?.goal, 'string', 'original', 1);
301
- this.addSlot(slots, 'project.main_language', ast.project?.main_language, 'string', 'original', 1);
302
298
  // Detect project type to determine applicable stack slots
303
299
  const projectType = this.detectProjectTypeFromContext(ast);
300
+ if (process.env.FAF_DEBUG) {
301
+ console.log(`\n[DEBUG] Project type detected: ${projectType}`);
302
+ }
304
303
  const isFrontendProject = this.requiresFrontendStack(projectType);
305
304
  const isBackendProject = this.requiresBackendStack(projectType);
305
+ // Auto-fill project.main_language for n8n workflows BEFORE reading slots
306
+ if (projectType === 'n8n-workflow') {
307
+ if (!ast.project)
308
+ ast.project = {};
309
+ if (!ast.project.main_language) {
310
+ ast.project.main_language = ast.tech_stack?.primary_language || 'JSON (workflow definition)';
311
+ }
312
+ }
313
+ // Project slots (3)
314
+ this.addSlot(slots, 'project.name', ast.project?.name, 'string', 'original', 1);
315
+ this.addSlot(slots, 'project.goal', ast.project?.goal, 'string', 'original', 1);
316
+ this.addSlot(slots, 'project.main_language', ast.project?.main_language, 'string', 'original', 1);
306
317
  // Chrome Extension auto-fill: If it's a Chrome Extension, intelligently fill slots
307
318
  if (projectType === 'chrome-extension') {
308
319
  // Auto-fill Chrome Extension technical context
@@ -335,6 +346,55 @@ class FafCompiler {
335
346
  this.addSlot(slots, 'stack.build', ast.stack.build, 'string', 'original', 1);
336
347
  }
337
348
  }
349
+ // n8n Workflow auto-fill: Map n8n-specific fields to standard 21-slot system
350
+ if (projectType === 'n8n-workflow') {
351
+ // Map n8n context to existing stack slots (efficient, no slot inflation)
352
+ if (!ast.stack)
353
+ ast.stack = {};
354
+ // Runtime = workflow engine
355
+ if (!ast.stack.runtime) {
356
+ ast.stack.runtime = ast.tech_stack?.workflow_engine || 'n8n';
357
+ }
358
+ // Backend = n8n server runtime
359
+ if (!ast.stack.backend) {
360
+ ast.stack.backend = 'Node.js (n8n server)';
361
+ }
362
+ // API type = n8n trigger types
363
+ if (!ast.stack.api_type) {
364
+ ast.stack.api_type = 'Webhooks + HTTP';
365
+ }
366
+ // Database = vector DB or workflow state
367
+ if (!ast.stack.database) {
368
+ ast.stack.database = ast.tech_stack?.infrastructure?.vector_db || 'Workflow State';
369
+ }
370
+ // Hosting = deployment location
371
+ if (!ast.stack.hosting) {
372
+ ast.stack.hosting = 'n8n Cloud';
373
+ }
374
+ // Build tool = how workflows are created
375
+ if (!ast.stack.build) {
376
+ ast.stack.build = 'n8n Visual Editor';
377
+ }
378
+ // Connection = integrations (maps to stack.connection slot)
379
+ if (!ast.stack.connection && ast.tech_stack?.integrations) {
380
+ ast.stack.connection = Array.isArray(ast.tech_stack.integrations)
381
+ ? ast.tech_stack.integrations.join(', ')
382
+ : String(ast.tech_stack.integrations);
383
+ }
384
+ // Add n8n-specific slots (maps to standard 21-slot system)
385
+ // Backend slots (5)
386
+ this.addSlot(slots, 'stack.runtime', ast.stack.runtime, 'string', 'discovered', 1);
387
+ this.addSlot(slots, 'stack.backend', ast.stack.backend, 'string', 'discovered', 1);
388
+ this.addSlot(slots, 'stack.api_type', ast.stack.api_type, 'string', 'discovered', 1);
389
+ this.addSlot(slots, 'stack.database', ast.stack.database, 'string', 'discovered', 1);
390
+ this.addSlot(slots, 'stack.connection', ast.stack.connection, 'string', 'original', 1);
391
+ // Frontend slots (4) - n8n workflows don't have frontend, but we still count them
392
+ this.addSlot(slots, 'stack.frontend', ast.stack?.frontend, 'string', 'original', 1);
393
+ this.addSlot(slots, 'stack.css_framework', ast.stack?.css_framework, 'string', 'original', 1);
394
+ this.addSlot(slots, 'stack.ui_library', ast.stack?.ui_library, 'string', 'original', 1);
395
+ this.addSlot(slots, 'stack.state_management', ast.stack?.state_management, 'string', 'original', 1);
396
+ // Universal slots (3) will be added below (hosting, build, cicd)
397
+ }
338
398
  // Stack slots - only add relevant ones based on project type
339
399
  if (isFrontendProject) {
340
400
  this.addSlot(slots, 'stack.frontend', ast.stack?.frontend, 'string', 'original', 1);
@@ -381,7 +441,19 @@ class FafCompiler {
381
441
  return slots;
382
442
  }
383
443
  addSlot(slots, path, value, type, source, weight) {
444
+ // Deduplication: Check if slot path already exists
445
+ const exists = slots.some(slot => slot.path === path);
446
+ if (exists) {
447
+ if (process.env.FAF_DEBUG) {
448
+ console.log(`[DEBUG] Skipped duplicate slot: ${path}`);
449
+ }
450
+ return; // Skip duplicate slot
451
+ }
384
452
  const filled = this.isSlotFilled(value);
453
+ if (process.env.FAF_DEBUG) {
454
+ const valueStr = JSON.stringify(value) || '';
455
+ console.log(`[DEBUG] Added slot: ${path} | filled: ${filled} | value: ${valueStr.substring(0, 50)}`);
456
+ }
385
457
  slots.push({
386
458
  id: `slot_${slots.length + 1}`,
387
459
  path,