faf-cli 3.0.6 → 3.1.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 (106) hide show
  1. package/README.md +200 -18
  2. package/assets/screenshots/package-json+project-faf.png +0 -0
  3. package/dist/big-orange/compare.d.ts.map +1 -1
  4. package/dist/big-orange/compare.js +14 -16
  5. package/dist/big-orange/compare.js.map +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +137 -1
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands/auto.d.ts.map +1 -1
  10. package/dist/commands/auto.js +69 -12
  11. package/dist/commands/auto.js.map +1 -1
  12. package/dist/commands/bi-sync.d.ts.map +1 -1
  13. package/dist/commands/bi-sync.js +10 -3
  14. package/dist/commands/bi-sync.js.map +1 -1
  15. package/dist/commands/drift.d.ts +16 -0
  16. package/dist/commands/drift.d.ts.map +1 -0
  17. package/dist/commands/drift.js +517 -0
  18. package/dist/commands/drift.js.map +1 -0
  19. package/dist/commands/git.d.ts +25 -0
  20. package/dist/commands/git.d.ts.map +1 -0
  21. package/dist/commands/git.js +355 -0
  22. package/dist/commands/git.js.map +1 -0
  23. package/dist/commands/init.d.ts.map +1 -1
  24. package/dist/commands/init.js +5 -4
  25. package/dist/commands/init.js.map +1 -1
  26. package/dist/commands/migrate.d.ts +11 -0
  27. package/dist/commands/migrate.d.ts.map +1 -0
  28. package/dist/commands/migrate.js +85 -0
  29. package/dist/commands/migrate.js.map +1 -0
  30. package/dist/commands/rename.d.ts +18 -0
  31. package/dist/commands/rename.d.ts.map +1 -0
  32. package/dist/commands/rename.js +211 -0
  33. package/dist/commands/rename.js.map +1 -0
  34. package/dist/commands/taf-init.d.ts +14 -0
  35. package/dist/commands/taf-init.d.ts.map +1 -0
  36. package/dist/commands/taf-init.js +138 -0
  37. package/dist/commands/taf-init.js.map +1 -0
  38. package/dist/commands/taf-log.d.ts +27 -0
  39. package/dist/commands/taf-log.d.ts.map +1 -0
  40. package/dist/commands/taf-log.js +241 -0
  41. package/dist/commands/taf-log.js.map +1 -0
  42. package/dist/commands/taf-stats.d.ts +8 -0
  43. package/dist/commands/taf-stats.d.ts.map +1 -0
  44. package/dist/commands/taf-stats.js +133 -0
  45. package/dist/commands/taf-stats.js.map +1 -0
  46. package/dist/commands/taf-validate.d.ts +8 -0
  47. package/dist/commands/taf-validate.d.ts.map +1 -0
  48. package/dist/commands/taf-validate.js +108 -0
  49. package/dist/commands/taf-validate.js.map +1 -0
  50. package/dist/commands/taf.d.ts +13 -0
  51. package/dist/commands/taf.d.ts.map +1 -0
  52. package/dist/commands/taf.js +85 -0
  53. package/dist/commands/taf.js.map +1 -0
  54. package/dist/compiler/faf-compiler.d.ts.map +1 -1
  55. package/dist/compiler/faf-compiler.js +18 -0
  56. package/dist/compiler/faf-compiler.js.map +1 -1
  57. package/dist/generators/faf-generator-championship.d.ts.map +1 -1
  58. package/dist/generators/faf-generator-championship.js +1 -0
  59. package/dist/generators/faf-generator-championship.js.map +1 -1
  60. package/dist/github/github-extractor.d.ts +56 -0
  61. package/dist/github/github-extractor.d.ts.map +1 -0
  62. package/dist/github/github-extractor.js +328 -0
  63. package/dist/github/github-extractor.js.map +1 -0
  64. package/dist/github/popular-repos.d.ts +43 -0
  65. package/dist/github/popular-repos.d.ts.map +1 -0
  66. package/dist/github/popular-repos.js +205 -0
  67. package/dist/github/popular-repos.js.map +1 -0
  68. package/dist/github/repo-selector.d.ts +48 -0
  69. package/dist/github/repo-selector.d.ts.map +1 -0
  70. package/dist/github/repo-selector.js +277 -0
  71. package/dist/github/repo-selector.js.map +1 -0
  72. package/dist/taf/index.d.ts +17 -0
  73. package/dist/taf/index.d.ts.map +1 -0
  74. package/dist/taf/index.js +57 -0
  75. package/dist/taf/index.js.map +1 -0
  76. package/dist/taf/logger.d.ts +86 -0
  77. package/dist/taf/logger.d.ts.map +1 -0
  78. package/dist/taf/logger.js +135 -0
  79. package/dist/taf/logger.js.map +1 -0
  80. package/dist/taf/parser.d.ts +32 -0
  81. package/dist/taf/parser.d.ts.map +1 -0
  82. package/dist/taf/parser.js +161 -0
  83. package/dist/taf/parser.js.map +1 -0
  84. package/dist/taf/stats.d.ts +31 -0
  85. package/dist/taf/stats.d.ts.map +1 -0
  86. package/dist/taf/stats.js +182 -0
  87. package/dist/taf/stats.js.map +1 -0
  88. package/dist/taf/types.d.ts +66 -0
  89. package/dist/taf/types.d.ts.map +1 -0
  90. package/dist/taf/types.js +9 -0
  91. package/dist/taf/types.js.map +1 -0
  92. package/dist/taf/validator.d.ts +18 -0
  93. package/dist/taf/validator.d.ts.map +1 -0
  94. package/dist/taf/validator.js +148 -0
  95. package/dist/taf/validator.js.map +1 -0
  96. package/dist/utils/file-utils.d.ts +10 -0
  97. package/dist/utils/file-utils.d.ts.map +1 -1
  98. package/dist/utils/file-utils.js +196 -33
  99. package/dist/utils/file-utils.js.map +1 -1
  100. package/dist/utils/native-file-finder.js +1 -1
  101. package/dist/utils/native-file-finder.js.map +1 -1
  102. package/dist/utils/yaml-generator.d.ts +1 -0
  103. package/dist/utils/yaml-generator.d.ts.map +1 -1
  104. package/dist/utils/yaml-generator.js +1 -0
  105. package/dist/utils/yaml-generator.js.map +1 -1
  106. package/package.json +9 -4
package/README.md CHANGED
@@ -25,15 +25,29 @@ faf score # Check AI-readiness (0-100%)
25
25
  ```
26
26
 
27
27
  **CLI vs MCP clarity**
28
- - **faf-cli** (this): Command-line tool that creates .faf files from your codebase attach to any AI
29
- - **claude-faf-mcp** ([npm](https://www.npmjs.com/package/claude-faf-mcp)): MCP server for Claude Desktop lets Claude read .faf files natively
28
+ - **faf-cli** (this): Runs on your machine locally in a terminal
29
+ - **claude-faf-mcp** ([npm](https://www.npmjs.com/package/claude-faf-mcp)): Runs through Claude Desktop as a tool
30
30
 
31
- Most users want both: faf-cli creates .faf files, claude-faf-mcp lets Claude read them automatically.
31
+ Same .faf, different way to use. Same Project DNA and scoring. Same capabilities (create, score, improve). Different execution layer.
32
+
33
+ Use CLI for raw speed and local development; use MCP for AI-integrated workflows. No feature gaps between them - pick based on your flow.
32
34
 
33
35
  [Website](https://faf.one) | [GitHub](https://github.com/Wolfe-Jam/faf-cli) | [Discussions](https://github.com/Wolfe-Jam/faf-cli/discussions)
34
36
 
35
37
  ---
36
38
 
39
+ ### 📸 See It In Action
40
+
41
+ <div align="center">
42
+ <img src="./assets/screenshots/package-json+project-faf.png" alt="project.faf sits between package.json and README.md" width="500" />
43
+
44
+ **`project.faf` sits right between `package.json` and `README.md`** - exactly where it belongs.
45
+
46
+ Visible. Discoverable. Universal.
47
+ </div>
48
+
49
+ ---
50
+
37
51
  ## 📚 Complete Documentation
38
52
 
39
53
  **For developers who want the full story**, here's everything about FAF's architecture, testing, and championship engineering standards.
@@ -68,13 +82,181 @@ npm install -g faf-cli
68
82
  brew install faf-cli
69
83
  ```
70
84
 
71
- **One line. Zero config. Championship context.** 🏁
85
+ **One line. Zero config. Podium context.** 🏁
86
+
87
+ ---
88
+
89
+ ## 🎉 What's New in v3.1.0
90
+
91
+ ### 🔥 THE VISIBILITY REVOLUTION 🔥
92
+
93
+ **AI context just became UNIVERSAL. project.faf is here.**
94
+
95
+ For too long, `.faf` lived in the shadows - hidden, invisible, forgotten. **NOT ANYMORE.**
96
+
97
+ ### 📂 Introducing: `project.faf`
98
+
99
+ ## **`package.json` for AI**
100
+
101
+ **Just like `package.json` tells npm what your project needs...**
102
+ **`project.faf` tells AI what your project IS.**
103
+
104
+ | File | Purpose | Who Reads It |
105
+ |------|---------|--------------|
106
+ | `package.json` | Dependencies, scripts, metadata | npm, Node.js, developers |
107
+ | `project.faf` | **Context, architecture, purpose** | **AI, Claude, Cursor, any AI tool** |
108
+
109
+ **Same pattern. Same universality. Same necessity.**
110
+
111
+ **VISIBLE. DISCOVERABLE. UNIVERSAL.**
112
+
113
+ ```bash
114
+ # The old way (hidden like .env)
115
+ ls -la
116
+ .env # 🔒 Hidden (secrets - SHOULD be hidden)
117
+ .faf # 👻 Hidden (AI context - SHOULD be visible!)
118
+
119
+ # The NEW WAY (visible like package.json)
120
+ ls
121
+ package.json # ✅ Visible (dependencies - everyone needs to see)
122
+ project.faf # ✅ Visible (AI context - AI needs to find this!)
123
+ .env # 🔒 Still hidden (secrets stay secret)
124
+ ```
125
+
126
+ **`.env` hides secrets. `project.faf` shares context.**
127
+
128
+ **`.faf` was hiding in the wrong category. `project.faf` fixes that.**
129
+
130
+ ### 🚀 Why This Changes Everything
131
+
132
+ **Before:**
133
+ - Hidden `.faf` files easily forgotten
134
+ - Hard to discover in new projects
135
+ - "Wait, does this project have AI context?"
136
+ - Invisible to Git UIs, IDEs, file managers
137
+
138
+ **After:**
139
+ - `project.faf` sits next to `package.json`
140
+ - **IMPOSSIBLE TO MISS**
141
+ - Universal pattern developers already know
142
+ - Every project SHOWS its AI-readiness
143
+
144
+ ### 🔺 The Golden Triangle
145
+
146
+ **Three sides. Closed loop. Complete accountability.**
147
+
148
+ ```
149
+ project.faf
150
+ (WHAT IT IS)
151
+ / \
152
+ / \
153
+ / \
154
+ repo ←→ .taf
155
+ (CODE) (PROOF IT WORKS)
156
+ ```
157
+
158
+ Every project needs three things:
159
+ - **Code that works** (repo)
160
+ - **Context for AI** (project.faf)
161
+ - **Proof it works** (.taf - git-tracked testing timeline)
162
+
163
+ **TAF** (Testing Audit File) format tracks every test run in git. On-the-fly CI/CD updates. Permanent audit trail. Unheard of in CI/CD.
164
+
165
+ **Traditional CI/CD:** Tests run → Results disappear → No permanent record
166
+ **TAF:** Tests run → .taf updates → Git commits → Permanent timeline
167
+
168
+ Format defined in **faf-taf-git** (GitHub Actions native support).
169
+
170
+ ### ✨ The Essential Trio
171
+
172
+ ```bash
173
+ your-project/
174
+ ├── package.json # What your project NEEDS (dependencies)
175
+ ├── project.faf # What your project IS (context for AI)
176
+ └── tsconfig.json # How your project BUILDS (TypeScript config)
177
+ ```
178
+
179
+ **`package.json`** → Tells npm: "Install these dependencies"
180
+ **`project.faf`** → Tells AI: "This is what I am, this is my purpose"
181
+ **`tsconfig.json`** → Tells TypeScript: "Compile with these settings"
182
+
183
+ **All visible. All universal. All essential.**
184
+
185
+ **You wouldn't skip `package.json`. Don't skip `project.faf`.**
186
+
187
+ ### 🔥 New Commands
188
+
189
+ **1. `faf migrate` - Instant Upgrade**
190
+ ```bash
191
+ faf migrate
192
+ # .faf → project.faf (27ms)
193
+ ```
194
+
195
+ **2. `faf rename` - Bulk Power**
196
+ ```bash
197
+ faf rename
198
+ # Recursively migrates ENTIRE monorepo tree
199
+ # Found 147 .faf files? ✅ Migrated in 420ms
200
+ ```
201
+
202
+ **3. Auto-Magic for New Projects**
203
+ ```bash
204
+ faf init # Creates project.faf (not .faf)
205
+ faf auto # Creates project.faf
206
+ ```
207
+
208
+ ### 🎯 Championship Detection Upgrade
209
+
210
+ **TSA Engine Integration** - "We're INSPECTORS, not trash collectors"
211
+
212
+ **Before (naive):**
213
+ ```
214
+ Has 'commander' in package.json? → Maybe CLI
215
+ ```
216
+
217
+ **After (championship):**
218
+ ```
219
+ 'commander' imported 10+ times? → DEFINITELY CLI
220
+ Analyzes CORE dependencies (actual usage)
221
+ 95% accuracy vs 70% accuracy
222
+ ```
223
+
224
+ ### ⚡ Performance
225
+
226
+ - **migrate:** 27ms (54% faster than 50ms target)
227
+ - **rename:** 27ms for 3 files (73% faster than target)
228
+ - **championship grade** across all operations
229
+
230
+ ### 🏆 WJTTC GOLD Certification
231
+
232
+ **97/100 Championship Score**
233
+ - Project Understanding: 20/20
234
+ - TURBO-CAT Knowledge: 20/20
235
+ - Architecture Understanding: 20/20
236
+
237
+ Full report: 194KB comprehensive test suite
238
+
239
+ ### 🔙 100% Backward Compatible
240
+
241
+ **Still works with `.faf` files** - graceful transition, no breaking changes.
242
+
243
+ Your old `.faf` files keep working. Migrate when ready.
244
+
245
+ ### 🌍 The Vision
246
+
247
+ **Every project with a `package.json` should have a `project.faf`**
248
+
249
+ Just like every TypeScript project has `tsconfig.json`, every Rust project has `Cargo.toml`, every Python project has `requirements.txt`...
250
+
251
+ **Every AI-augmented project has `project.faf`**
252
+
253
+ **This is the new universal standard for AI context.**
72
254
 
73
255
  ---
74
256
 
75
257
  ## 🎉 What's New in v3.0.0
76
258
 
77
- ### The Championship Release
259
+ ### The Podium Release
78
260
 
79
261
  **The biggest release yet:**
80
262
 
@@ -82,10 +264,10 @@ brew install faf-cli
82
264
  - 💨 **TURBO Model Introduced** - Like VS Code + Copilot, Spotify Free + Premium, Zoom Basic + Pro
83
265
  - 😽 **TURBO-CAT™ Format Discovery** - Introduced in v2.0.0, now purring at full power in v3.0.0 - 153 validated formats organized in a perfect pyramid
84
266
  - 🧬 **Birth DNA Lifecycle** - Track your project's evolution from birth to championship
85
- - 🏆 **7-Tier Championship Scoring** - 🏆 🥇 🥈 🥉 🟢 🟡 🔴 🤍 - From Lonely Heart to Podium Champion
267
+ - 🏆 **7-Tier Podium Scoring** - 🏆 🥇 🥈 🥉 🟢 🟡 🔴 🤍 - From Lonely Heart to Podium Champion
86
268
  - ⚖️ **AI | HUMAN Balance** - 50|50 system = Optimal Context for championship performance
87
269
  - 🔗 **Context-Mirroring w/Bi-Sync** - Bidirectional .faf ↔ CLAUDE.md synchronization
88
- - ⚡ **Championship Speed** - 8ms bi-sync, <50ms all commands, 18ms avg, 0ms operations achieved
270
+ - ⚡ **Podium Speed** - 8ms bi-sync, <50ms all commands, 18ms avg, 0ms operations achieved
89
271
  - 🏁 **WJTTC GOLD Certified** - 1,000+ comprehensive tests, unique test suite
90
272
  - 🤖 **BIG-3 AI Validation** - Verified by Google Gemini, Anthropic Claude, OpenAI Codex
91
273
  - 🌐 **Universal AI Support** - Claude Code, OpenAI Codex CLI, Gemini CLI, Cursor, Warp, Copilot, Windsurf, ALL AI coding assistants
@@ -187,7 +369,7 @@ faf formats
187
369
 
188
370
  ### **FAF v3.0.3 (FREE FOR ALL DEVS)** 🆓
189
371
 
190
- ✅ **41 Championship Commands**
372
+ ✅ **41 Podium Commands**
191
373
  - Project initialization & auto-detection
192
374
  - TURBO-CAT format discovery (153 formats)
193
375
  - Birth DNA lifecycle tracking
@@ -356,7 +538,7 @@ You're gonna end up with a **CAVITY**.
356
538
 
357
539
  ### The Solution: Project DNA
358
540
 
359
- - ✅ **Championship context** (85-99% quality scores)
541
+ - ✅ **Podium context** (85-99% quality scores)
360
542
  - ✅ **Persistent intelligence** - AI remembers your project perfectly
361
543
  - ✅ **Seamless collaboration** - Human + AI working together optimally
362
544
  - ✅ **Project health monitoring** - Track context quality over time
@@ -369,7 +551,7 @@ You're gonna end up with a **CAVITY**.
369
551
 
370
552
  ### 🏎️ Power Commands
371
553
  ```bash
372
- faf auto # ONE COMMAND TO RULE THEM ALL - Zero to Championship
554
+ faf auto # ONE COMMAND TO RULE THEM ALL - Zero to Podium
373
555
  faf init # Create .faf from your project
374
556
  faf enhance # Real AI analysis & improvements
375
557
  faf analyze # Claude-first intelligence
@@ -485,12 +667,12 @@ faf # Interactive menu (use faf auto instead)
485
667
 
486
668
  ---
487
669
 
488
- ## 🏆 Championship Scoring
670
+ ## 🏆 Podium Scoring
489
671
 
490
672
  Track your project's AI-readiness with F1-inspired tiers:
491
673
 
492
674
  ```
493
- 🏆 Trophy (100%) - Championship - Perfect 50|50 AI|HUMAN balance
675
+ 🏆 Trophy (100%) - Podium - Perfect 50|50 AI|HUMAN balance
494
676
  🥇 Gold (99%) - Gold standard
495
677
  🥈 Silver (95-98%) - Excellence
496
678
  🥉 Bronze (85-94%) - Production ready
@@ -513,7 +695,7 @@ Status: Bronze - Production Ready
513
695
 
514
696
  Next milestone: 95% 🥈 Silver (6 points to go!)
515
697
 
516
- 🏎️ FAF Championship Status
698
+ 🏎️ FAF Podium Status
517
699
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
518
700
  Initial DNA: 12% (born 2025-10-03)
519
701
  Growth: +77% over 4 days
@@ -522,7 +704,7 @@ Next Milestone: 95% 🥈 Silver (6% to go!)
522
704
 
523
705
  ---
524
706
 
525
- ## ⚖️ AI | HUMAN Balance - The 50|50 Championship System
707
+ ## ⚖️ AI | HUMAN Balance - The 50|50 Podium System
526
708
 
527
709
  **NEW in v3.0.0:** Track the perfect balance between AI-readable and human-readable content.
528
710
 
@@ -613,7 +795,7 @@ Automation: n8n workflows, OpenAI Builder, Google Opal, Make.com - AI-Automat
613
795
  | **Cost** | Per-query fees | Zero runtime cost |
614
796
  | **Versioning** | Difficult | Git-friendly YAML |
615
797
 
616
- **.faf is RAG's output—captured once, reused infinitely.** Championship efficiency.
798
+ **.faf is RAG's output—captured once, reused infinitely.** Podium efficiency.
617
799
 
618
800
  ### Universal Pattern
619
801
 
@@ -631,7 +813,7 @@ Same pattern. Same output. Universal by design.
631
813
 
632
814
  ---
633
815
 
634
- ## 🏆 WJTTC Championship Testing
816
+ ## 🏆 WJTTC Podium Testing
635
817
 
636
818
  **FAF CLI v3.0.3 is WJTTC GOLD Certified** - tested to F1-grade standards.
637
819
 
@@ -642,7 +824,7 @@ Same pattern. Same output. Universal by design.
642
824
 
643
825
  **Battle-tested with 12,500+ test iterations across 5 testing tiers:**
644
826
  - ✅ **BIG-3 AI Validation** (11,200 iterations - Claude, ChatGPT/Codex, Gemini)
645
- - ✅ **287 Automated Tests** (191 Jest unit + 66 Championship Safety + 30 YOLO torture)
827
+ - ✅ **287 Automated Tests** (191 Jest unit + 66 Podium Safety + 30 YOLO torture)
646
828
  - ✅ **730 Empirical C.O.R.E Tests** (100% MCP protocol compliance)
647
829
  - ✅ **301 Context-On-Demand Tests** (Torture testing, edge cases, stress scenarios)
648
830
  - ✅ **35+ Test Documents** (Comprehensive validation reports)
@@ -810,7 +992,7 @@ Copy cats? Why bother.
810
992
 
811
993
  <div align="center">
812
994
 
813
- ## 🏁 v3.0.3 - Championship Edition
995
+ ## 🏁 v3.0.3 - Podium Edition
814
996
 
815
997
  **FREE FOR ALL DEVS** 🆓 • **Growing Fast** 📈 • **AI-Context, On-Demand.**
816
998
 
@@ -1 +1 @@
1
- {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/big-orange/compare.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAiB,MAAM,SAAS,CAAC;AAOnF;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAmD5B"}
1
+ {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../src/big-orange/compare.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAiB,MAAM,SAAS,CAAC;AAOnF;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAuC5B"}
@@ -30,14 +30,12 @@ async function compareContexts(request) {
30
30
  console.log(`Generated .faf instances:`);
31
31
  console.log(` Left: ${request.leftScore}% (${leftFaf.content.length} chars)`);
32
32
  console.log(` Right: ${request.rightScore}% (${rightFaf.content.length} chars)\n`);
33
- // 2. Call Claude API twice (parallel for speed)
34
- const anthropic = new sdk_1.default({
35
- apiKey: process.env.ANTHROPIC_API_KEY
36
- });
33
+ // 2. Call Claude API with both contexts
37
34
  console.log('Calling Claude API...');
35
+ const client = new sdk_1.default({ apiKey: process.env.ANTHROPIC_API_KEY });
38
36
  const [leftResponse, rightResponse] = await Promise.all([
39
- callClaudeWithContext(anthropic, request.prompt, leftFaf.content, request.leftScore),
40
- callClaudeWithContext(anthropic, request.prompt, rightFaf.content, request.rightScore)
37
+ callClaudeWithContext(client, request.prompt, leftFaf.content, request.leftScore),
38
+ callClaudeWithContext(client, request.prompt, rightFaf.content, request.rightScore)
41
39
  ]);
42
40
  console.log('✓ Both responses received\n');
43
41
  // 3. Calculate delta metrics
@@ -129,20 +127,20 @@ async function scoreFafContent(fafContent, expectedScore) {
129
127
  * Uses FAF CLI's standard scoring tiers
130
128
  */
131
129
  function getChampionshipEmoji(score) {
132
- if (score >= 85)
130
+ if (score >= 100)
133
131
  return '🏆'; // Trophy (championship)
132
+ if (score >= 99)
133
+ return '🥇'; // Gold
134
+ if (score >= 95)
135
+ return '🥈'; // Silver (Target 2)
136
+ if (score >= 85)
137
+ return '🥉'; // Bronze (Target 1)
134
138
  if (score >= 70)
135
- return '🥇'; // Gold medal
139
+ return '🟢'; // Green (GO!)
136
140
  if (score >= 55)
137
- return '🥈'; // Silver medal
138
- if (score >= 40)
139
- return '🥉'; // Bronze medal
140
- if (score >= 35)
141
- return '🟢'; // Green (good)
142
- if (score >= 20)
143
- return '🟡'; // Yellow (warning)
141
+ return '🟡'; // Yellow (Caution)
144
142
  if (score >= 10)
145
- return '🔴'; // Red (poor)
143
+ return '🔴'; // Red (Pit Stop)
146
144
  return '🤍'; // White (empty)
147
145
  }
148
146
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/big-orange/compare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../src/big-orange/compare.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAi1C/C,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AA89C/C,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/cli.js CHANGED
@@ -77,6 +77,11 @@ const chat_1 = require("./commands/chat");
77
77
  const convert_1 = require("./commands/convert");
78
78
  const notifications_1 = require("./commands/notifications");
79
79
  const skills_1 = require("./commands/skills");
80
+ const drift_1 = require("./commands/drift");
81
+ const git_1 = require("./commands/git");
82
+ const taf_1 = require("./commands/taf");
83
+ const migrate_1 = require("./commands/migrate");
84
+ const rename_1 = require("./commands/rename");
80
85
  const color_utils_1 = require("./utils/color-utils");
81
86
  const championship_style_1 = require("./utils/championship-style");
82
87
  const analytics_1 = require("./telemetry/analytics");
@@ -207,6 +212,38 @@ Examples:
207
212
  console.log('');
208
213
  return (0, init_1.initFafFile)(directory, options);
209
214
  }));
215
+ // 🔄 faf migrate - Migrate .faf to project.faf (v1.2.0)
216
+ commander_1.program
217
+ .command('migrate [directory]')
218
+ .description('Migrate .faf (legacy) to project.faf (v1.2.0 standard)')
219
+ .option('-f, --force', 'Overwrite existing project.faf file')
220
+ .option('--dry-run', 'Preview migration without making changes')
221
+ .addHelpText('after', `
222
+ Examples:
223
+ $ faf migrate # Migrate .faf to project.faf
224
+ $ faf migrate --dry-run # Preview migration
225
+ $ faf migrate --force # Overwrite existing project.faf
226
+
227
+ v1.2.0: project.faf is the new standard (visible, like package.json)`)
228
+ .action(withAnalyticsTracking('migrate', (directory, options) => (0, migrate_1.migrateCommand)(directory, options)));
229
+ // 🔄 faf rename - Bulk migration across multiple projects
230
+ commander_1.program
231
+ .command('rename [path]')
232
+ .description('Bulk migrate all .faf files to project.faf recursively')
233
+ .option('-f, --force', 'Overwrite existing project.faf files')
234
+ .option('--dry-run', 'Preview migration without making changes')
235
+ .option('--no-confirm', 'Skip confirmation for large migrations')
236
+ .option('--max-depth <number>', 'Maximum directory depth to search', '10')
237
+ .addHelpText('after', `
238
+ Examples:
239
+ $ faf rename ~/Projects # Migrate all repos in ~/Projects
240
+ $ faf rename . --dry-run # Preview what would be migrated
241
+ $ faf rename ~/code --force # Overwrite existing project.faf files
242
+ $ faf rename --no-confirm # Skip confirmation prompt
243
+
244
+ Power user tool: Migrate your entire system in one command!
245
+ Searches recursively and renames all .faf → project.faf`)
246
+ .action(withAnalyticsTracking('rename', (searchPath, options) => (0, rename_1.renameCommand)(searchPath, options)));
210
247
  // 🧬 faf dna - Show your journey at a glance
211
248
  commander_1.program
212
249
  .command('dna')
@@ -465,6 +502,69 @@ Integrations:
465
502
  • MCP server recommendations per stack
466
503
  • Quality-gated: 85% minimum (Bronze tier)`)
467
504
  .action(withAnalyticsTracking('fam', (subcommand, arg, options) => (0, fam_1.famCommand)(subcommand, arg, options)));
505
+ // 🚀 faf git - GitHub Repository Context Extractor
506
+ commander_1.program
507
+ .command('git [query]')
508
+ .description('🚀 Generate AI context for ANY GitHub repo without cloning')
509
+ .option('-o, --output <path>', 'Output path for .faf file')
510
+ .option('--list', 'Show popular repositories')
511
+ .option('--category <category>', 'Filter popular repos by category')
512
+ .option('--scan', 'Metadata only (skip file tree)')
513
+ .option('--clone', 'Clone repo after generating .faf')
514
+ .addHelpText('after', `
515
+ Examples:
516
+ $ faf git react # Shorthand: facebook/react
517
+ $ faf git svelte # Auto-resolve: sveltejs/svelte
518
+ $ faf git facebook/react # owner/repo format
519
+ $ faf git https://github.com/... # Full URL
520
+ $ faf git --list # Show popular repos
521
+ $ faf git --list --category auth # Show auth libraries
522
+
523
+ # Batch processing (comparison mode)
524
+ $ faf git react vue svelte # Compare multiple repos
525
+
526
+ 🚀 Use Cases:
527
+ • Get AI context for libraries you DON'T own
528
+ • Compare repos before choosing one
529
+ • Understand architecture before cloning
530
+ • Ask AI about ANY repo instantly
531
+
532
+ Features:
533
+ • ⚡ <200ms extraction (no clone needed)
534
+ • 🔍 Fuzzy matching for typos (svelt → svelte)
535
+ • 📊 Rich metadata (stars, topics, languages)
536
+ • 🏆 Quality scoring (0-100%)
537
+ • 🎯 Smart shorthand (react → facebook/react)`)
538
+ .action(withAnalyticsTracking('git', (query, options) => (0, git_1.gitCommand)(query, options)));
539
+ // 📊 faf taf - Testing Activity Feed
540
+ commander_1.program
541
+ .command('taf')
542
+ .description('📊 Testing Activity Feed - Git-friendly testing timeline')
543
+ .addHelpText('after', `
544
+ Subcommands:
545
+ init Initialize .taf file
546
+ log Log a test run
547
+ validate Validate .taf format
548
+ stats Show test statistics
549
+
550
+ Examples:
551
+ $ faf taf init # Create .taf file
552
+ $ faf taf log --total 173 --passed 173 --failed 0
553
+ $ faf taf validate # Check format
554
+ $ faf taf stats # View statistics
555
+
556
+ Features:
557
+ • 📝 Git-friendly YAML format (append-only)
558
+ • 🔗 Native Reference with .faf
559
+ • 🏆 Podium scoring (🏆 🥇 🥈 🥉)
560
+ • 📊 Pass rate tracking and trends
561
+ • ⚡ Lightweight (5-60 lines per run)`)
562
+ .action(withAnalyticsTracking('taf', () => {
563
+ // Get raw arguments after 'taf' command
564
+ const tafIndex = process.argv.indexOf('taf');
565
+ const args = tafIndex >= 0 ? process.argv.slice(tafIndex + 1) : [];
566
+ return (0, taf_1.tafCommand)(args);
567
+ }));
468
568
  // 📚 faf index - Universal A-Z Reference (The Everything Catalog)
469
569
  commander_1.program
470
570
  .command('index [term]')
@@ -879,7 +979,43 @@ Claude Code Consistency:
879
979
  • Fresh start for .faf system
880
980
  • Removes temporary files and cached data`)
881
981
  .action((options) => (0, clear_1.clearCommand)(options));
882
- // ✏️ faf edit - Interactive .faf editor (Claude Code consistency)
982
+ // 🍊 faf drift - Context-Drift Analyzer
983
+ commander_1.program
984
+ .command('drift')
985
+ .description('🍊 Analyze git history for context-drift - Context-drift makes you pay')
986
+ .option('--since <period>', 'Analyze drift since period (e.g., "90d", "6m")')
987
+ .option('--detailed', 'Show detailed breakdown of drift events')
988
+ .option('--export <file>', 'Export analysis to JSON file')
989
+ .addHelpText('after', `
990
+ Examples:
991
+ $ faf drift # Analyze entire git history
992
+ $ faf drift --since 90d # Last 90 days only
993
+ $ faf drift --detailed # Full breakdown
994
+ $ faf drift --export drift.json # Save to file
995
+
996
+ What is Context-Drift?
997
+ • AI makes decisions without project context
998
+ • Each guess creates drift from your true architecture
999
+ • Drift compounds: auth → state → styling → framework
1000
+ • Eventually: rewrites, migrations, or project death
1001
+
1002
+ What faf drift detects:
1003
+ • Auth system changes (JWT → Firebase → Supabase)
1004
+ • State management swaps (Redux → Zustand)
1005
+ • Styling migrations (CSS → Tailwind)
1006
+ • Framework changes (React → Next.js)
1007
+ • Database migrations (MongoDB → Postgres)
1008
+
1009
+ Shows you:
1010
+ • Files rewritten due to drift
1011
+ • Weeks lost to cascade fixes
1012
+ • Future drift risk level
1013
+ • What .faf would have prevented
1014
+
1015
+ Context-drift makes you pay.
1016
+ .faf keeps you drift-free.`)
1017
+ .action(withAnalyticsTracking('drift', (options) => (0, drift_1.driftCommand)(options)));
1018
+ // ✏️ faf edit - Interactive .faf editor (Claude Code consistency)
883
1019
  commander_1.program
884
1020
  .command('edit')
885
1021
  .description('✏️ Interactive .faf editor with validation')