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.
- package/README.md +200 -18
- package/assets/screenshots/package-json+project-faf.png +0 -0
- package/dist/big-orange/compare.d.ts.map +1 -1
- package/dist/big-orange/compare.js +14 -16
- package/dist/big-orange/compare.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +137 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/auto.d.ts.map +1 -1
- package/dist/commands/auto.js +69 -12
- package/dist/commands/auto.js.map +1 -1
- package/dist/commands/bi-sync.d.ts.map +1 -1
- package/dist/commands/bi-sync.js +10 -3
- package/dist/commands/bi-sync.js.map +1 -1
- package/dist/commands/drift.d.ts +16 -0
- package/dist/commands/drift.d.ts.map +1 -0
- package/dist/commands/drift.js +517 -0
- package/dist/commands/drift.js.map +1 -0
- package/dist/commands/git.d.ts +25 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +355 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +5 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +11 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +85 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/rename.d.ts +18 -0
- package/dist/commands/rename.d.ts.map +1 -0
- package/dist/commands/rename.js +211 -0
- package/dist/commands/rename.js.map +1 -0
- package/dist/commands/taf-init.d.ts +14 -0
- package/dist/commands/taf-init.d.ts.map +1 -0
- package/dist/commands/taf-init.js +138 -0
- package/dist/commands/taf-init.js.map +1 -0
- package/dist/commands/taf-log.d.ts +27 -0
- package/dist/commands/taf-log.d.ts.map +1 -0
- package/dist/commands/taf-log.js +241 -0
- package/dist/commands/taf-log.js.map +1 -0
- package/dist/commands/taf-stats.d.ts +8 -0
- package/dist/commands/taf-stats.d.ts.map +1 -0
- package/dist/commands/taf-stats.js +133 -0
- package/dist/commands/taf-stats.js.map +1 -0
- package/dist/commands/taf-validate.d.ts +8 -0
- package/dist/commands/taf-validate.d.ts.map +1 -0
- package/dist/commands/taf-validate.js +108 -0
- package/dist/commands/taf-validate.js.map +1 -0
- package/dist/commands/taf.d.ts +13 -0
- package/dist/commands/taf.d.ts.map +1 -0
- package/dist/commands/taf.js +85 -0
- package/dist/commands/taf.js.map +1 -0
- package/dist/compiler/faf-compiler.d.ts.map +1 -1
- package/dist/compiler/faf-compiler.js +18 -0
- package/dist/compiler/faf-compiler.js.map +1 -1
- package/dist/generators/faf-generator-championship.d.ts.map +1 -1
- package/dist/generators/faf-generator-championship.js +1 -0
- package/dist/generators/faf-generator-championship.js.map +1 -1
- package/dist/github/github-extractor.d.ts +56 -0
- package/dist/github/github-extractor.d.ts.map +1 -0
- package/dist/github/github-extractor.js +328 -0
- package/dist/github/github-extractor.js.map +1 -0
- package/dist/github/popular-repos.d.ts +43 -0
- package/dist/github/popular-repos.d.ts.map +1 -0
- package/dist/github/popular-repos.js +205 -0
- package/dist/github/popular-repos.js.map +1 -0
- package/dist/github/repo-selector.d.ts +48 -0
- package/dist/github/repo-selector.d.ts.map +1 -0
- package/dist/github/repo-selector.js +277 -0
- package/dist/github/repo-selector.js.map +1 -0
- package/dist/taf/index.d.ts +17 -0
- package/dist/taf/index.d.ts.map +1 -0
- package/dist/taf/index.js +57 -0
- package/dist/taf/index.js.map +1 -0
- package/dist/taf/logger.d.ts +86 -0
- package/dist/taf/logger.d.ts.map +1 -0
- package/dist/taf/logger.js +135 -0
- package/dist/taf/logger.js.map +1 -0
- package/dist/taf/parser.d.ts +32 -0
- package/dist/taf/parser.d.ts.map +1 -0
- package/dist/taf/parser.js +161 -0
- package/dist/taf/parser.js.map +1 -0
- package/dist/taf/stats.d.ts +31 -0
- package/dist/taf/stats.d.ts.map +1 -0
- package/dist/taf/stats.js +182 -0
- package/dist/taf/stats.js.map +1 -0
- package/dist/taf/types.d.ts +66 -0
- package/dist/taf/types.d.ts.map +1 -0
- package/dist/taf/types.js +9 -0
- package/dist/taf/types.js.map +1 -0
- package/dist/taf/validator.d.ts +18 -0
- package/dist/taf/validator.d.ts.map +1 -0
- package/dist/taf/validator.js +148 -0
- package/dist/taf/validator.js.map +1 -0
- package/dist/utils/file-utils.d.ts +10 -0
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js +196 -33
- package/dist/utils/file-utils.js.map +1 -1
- package/dist/utils/native-file-finder.js +1 -1
- package/dist/utils/native-file-finder.js.map +1 -1
- package/dist/utils/yaml-generator.d.ts +1 -0
- package/dist/utils/yaml-generator.d.ts.map +1 -1
- package/dist/utils/yaml-generator.js +1 -0
- package/dist/utils/yaml-generator.js.map +1 -1
- 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):
|
|
29
|
-
- **claude-faf-mcp** ([npm](https://www.npmjs.com/package/claude-faf-mcp)):
|
|
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
|
-
|
|
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.
|
|
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
|
|
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
|
|
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
|
-
- ⚡ **
|
|
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
|
|
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
|
-
- ✅ **
|
|
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
|
|
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
|
-
## 🏆
|
|
670
|
+
## 🏆 Podium Scoring
|
|
489
671
|
|
|
490
672
|
Track your project's AI-readiness with F1-inspired tiers:
|
|
491
673
|
|
|
492
674
|
```
|
|
493
|
-
🏆 Trophy (100%) -
|
|
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
|
|
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
|
|
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.**
|
|
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
|
|
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
|
|
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 -
|
|
995
|
+
## 🏁 v3.0.3 - Podium Edition
|
|
814
996
|
|
|
815
997
|
**FREE FOR ALL DEVS** 🆓 • **Growing Fast** 📈 • **AI-Context, On-Demand.**
|
|
816
998
|
|
|
Binary file
|
|
@@ -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,
|
|
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
|
|
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(
|
|
40
|
-
callClaudeWithContext(
|
|
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 >=
|
|
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 '
|
|
139
|
+
return '🟢'; // Green (GO!)
|
|
136
140
|
if (score >= 55)
|
|
137
|
-
return '
|
|
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 (
|
|
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":";AAAA;;;GAGG;;;;;AAeH,
|
|
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;
|
|
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
|
-
//
|
|
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')
|