faf-cli 2.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 (283) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +227 -0
  3. package/dist/cli.d.ts +8 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +1249 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/ai-analyze.d.ts +18 -0
  8. package/dist/commands/ai-analyze.d.ts.map +1 -0
  9. package/dist/commands/ai-analyze.js +226 -0
  10. package/dist/commands/ai-analyze.js.map +1 -0
  11. package/dist/commands/ai-enhance.d.ts +17 -0
  12. package/dist/commands/ai-enhance.d.ts.map +1 -0
  13. package/dist/commands/ai-enhance.js +278 -0
  14. package/dist/commands/ai-enhance.js.map +1 -0
  15. package/dist/commands/audit.d.ts +11 -0
  16. package/dist/commands/audit.d.ts.map +1 -0
  17. package/dist/commands/audit.js +180 -0
  18. package/dist/commands/audit.js.map +1 -0
  19. package/dist/commands/auto.d.ts +27 -0
  20. package/dist/commands/auto.d.ts.map +1 -0
  21. package/dist/commands/auto.js +106 -0
  22. package/dist/commands/auto.js.map +1 -0
  23. package/dist/commands/bi-sync.d.ts +43 -0
  24. package/dist/commands/bi-sync.d.ts.map +1 -0
  25. package/dist/commands/bi-sync.js +224 -0
  26. package/dist/commands/bi-sync.js.map +1 -0
  27. package/dist/commands/chat.d.ts +6 -0
  28. package/dist/commands/chat.d.ts.map +1 -0
  29. package/dist/commands/chat.js +227 -0
  30. package/dist/commands/chat.js.map +1 -0
  31. package/dist/commands/check.d.ts +15 -0
  32. package/dist/commands/check.d.ts.map +1 -0
  33. package/dist/commands/check.js +58 -0
  34. package/dist/commands/check.js.map +1 -0
  35. package/dist/commands/clear.d.ts +15 -0
  36. package/dist/commands/clear.d.ts.map +1 -0
  37. package/dist/commands/clear.js +167 -0
  38. package/dist/commands/clear.js.map +1 -0
  39. package/dist/commands/commit.d.ts +8 -0
  40. package/dist/commands/commit.d.ts.map +1 -0
  41. package/dist/commands/commit.js +164 -0
  42. package/dist/commands/commit.js.map +1 -0
  43. package/dist/commands/convert.d.ts +19 -0
  44. package/dist/commands/convert.d.ts.map +1 -0
  45. package/dist/commands/convert.js +102 -0
  46. package/dist/commands/convert.js.map +1 -0
  47. package/dist/commands/credit.d.ts +13 -0
  48. package/dist/commands/credit.d.ts.map +1 -0
  49. package/dist/commands/credit.js +149 -0
  50. package/dist/commands/credit.js.map +1 -0
  51. package/dist/commands/edit-helper.d.ts +6 -0
  52. package/dist/commands/edit-helper.d.ts.map +1 -0
  53. package/dist/commands/edit-helper.js +55 -0
  54. package/dist/commands/edit-helper.js.map +1 -0
  55. package/dist/commands/edit.d.ts +14 -0
  56. package/dist/commands/edit.d.ts.map +1 -0
  57. package/dist/commands/edit.js +196 -0
  58. package/dist/commands/edit.js.map +1 -0
  59. package/dist/commands/faf-auth.d.ts +10 -0
  60. package/dist/commands/faf-auth.d.ts.map +1 -0
  61. package/dist/commands/faf-auth.js +162 -0
  62. package/dist/commands/faf-auth.js.map +1 -0
  63. package/dist/commands/faf-dna.d.ts +9 -0
  64. package/dist/commands/faf-dna.d.ts.map +1 -0
  65. package/dist/commands/faf-dna.js +141 -0
  66. package/dist/commands/faf-dna.js.map +1 -0
  67. package/dist/commands/faf-log.d.ts +9 -0
  68. package/dist/commands/faf-log.d.ts.map +1 -0
  69. package/dist/commands/faf-log.js +135 -0
  70. package/dist/commands/faf-log.js.map +1 -0
  71. package/dist/commands/faf-recover.d.ts +3 -0
  72. package/dist/commands/faf-recover.d.ts.map +1 -0
  73. package/dist/commands/faf-recover.js +299 -0
  74. package/dist/commands/faf-recover.js.map +1 -0
  75. package/dist/commands/faf-update.d.ts +9 -0
  76. package/dist/commands/faf-update.d.ts.map +1 -0
  77. package/dist/commands/faf-update.js +68 -0
  78. package/dist/commands/faf-update.js.map +1 -0
  79. package/dist/commands/faq.d.ts +12 -0
  80. package/dist/commands/faq.d.ts.map +1 -0
  81. package/dist/commands/faq.js +84 -0
  82. package/dist/commands/faq.js.map +1 -0
  83. package/dist/commands/flow.d.ts +11 -0
  84. package/dist/commands/flow.d.ts.map +1 -0
  85. package/dist/commands/flow.js +117 -0
  86. package/dist/commands/flow.js.map +1 -0
  87. package/dist/commands/formats.d.ts +12 -0
  88. package/dist/commands/formats.d.ts.map +1 -0
  89. package/dist/commands/formats.js +109 -0
  90. package/dist/commands/formats.js.map +1 -0
  91. package/dist/commands/index.d.ts +14 -0
  92. package/dist/commands/index.d.ts.map +1 -0
  93. package/dist/commands/index.js +443 -0
  94. package/dist/commands/index.js.map +1 -0
  95. package/dist/commands/init.d.ts +14 -0
  96. package/dist/commands/init.d.ts.map +1 -0
  97. package/dist/commands/init.js +202 -0
  98. package/dist/commands/init.js.map +1 -0
  99. package/dist/commands/lint.d.ts +11 -0
  100. package/dist/commands/lint.d.ts.map +1 -0
  101. package/dist/commands/lint.js +269 -0
  102. package/dist/commands/lint.js.map +1 -0
  103. package/dist/commands/mirror.d.ts +7 -0
  104. package/dist/commands/mirror.d.ts.map +1 -0
  105. package/dist/commands/mirror.js +130 -0
  106. package/dist/commands/mirror.js.map +1 -0
  107. package/dist/commands/score.d.ts +11 -0
  108. package/dist/commands/score.d.ts.map +1 -0
  109. package/dist/commands/score.js +192 -0
  110. package/dist/commands/score.js.map +1 -0
  111. package/dist/commands/search.d.ts +16 -0
  112. package/dist/commands/search.d.ts.map +1 -0
  113. package/dist/commands/search.js +174 -0
  114. package/dist/commands/search.js.map +1 -0
  115. package/dist/commands/share.d.ts +17 -0
  116. package/dist/commands/share.d.ts.map +1 -0
  117. package/dist/commands/share.js +260 -0
  118. package/dist/commands/share.js.map +1 -0
  119. package/dist/commands/show.d.ts +10 -0
  120. package/dist/commands/show.d.ts.map +1 -0
  121. package/dist/commands/show.js +167 -0
  122. package/dist/commands/show.js.map +1 -0
  123. package/dist/commands/stacks.d.ts +51 -0
  124. package/dist/commands/stacks.d.ts.map +1 -0
  125. package/dist/commands/stacks.js +180 -0
  126. package/dist/commands/stacks.js.map +1 -0
  127. package/dist/commands/status.d.ts +13 -0
  128. package/dist/commands/status.d.ts.map +1 -0
  129. package/dist/commands/status.js +158 -0
  130. package/dist/commands/status.js.map +1 -0
  131. package/dist/commands/sync.d.ts +11 -0
  132. package/dist/commands/sync.d.ts.map +1 -0
  133. package/dist/commands/sync.js +300 -0
  134. package/dist/commands/sync.js.map +1 -0
  135. package/dist/commands/todo.d.ts +14 -0
  136. package/dist/commands/todo.d.ts.map +1 -0
  137. package/dist/commands/todo.js +279 -0
  138. package/dist/commands/todo.js.map +1 -0
  139. package/dist/commands/trust.d.ts +33 -0
  140. package/dist/commands/trust.d.ts.map +1 -0
  141. package/dist/commands/trust.js +316 -0
  142. package/dist/commands/trust.js.map +1 -0
  143. package/dist/commands/validate.d.ts +11 -0
  144. package/dist/commands/validate.d.ts.map +1 -0
  145. package/dist/commands/validate.js +100 -0
  146. package/dist/commands/validate.js.map +1 -0
  147. package/dist/commands/verify.d.ts +36 -0
  148. package/dist/commands/verify.d.ts.map +1 -0
  149. package/dist/commands/verify.js +194 -0
  150. package/dist/commands/verify.js.map +1 -0
  151. package/dist/commands/version.d.ts +5 -0
  152. package/dist/commands/version.d.ts.map +1 -0
  153. package/dist/commands/version.js +33 -0
  154. package/dist/commands/version.js.map +1 -0
  155. package/dist/commands/vibe.d.ts +7 -0
  156. package/dist/commands/vibe.d.ts.map +1 -0
  157. package/dist/commands/vibe.js +78 -0
  158. package/dist/commands/vibe.js.map +1 -0
  159. package/dist/converters/faf-converters.d.ts +43 -0
  160. package/dist/converters/faf-converters.d.ts.map +1 -0
  161. package/dist/converters/faf-converters.js +186 -0
  162. package/dist/converters/faf-converters.js.map +1 -0
  163. package/dist/engine-bridge.d.ts +35 -0
  164. package/dist/engine-bridge.d.ts.map +1 -0
  165. package/dist/engine-bridge.js +76 -0
  166. package/dist/engine-bridge.js.map +1 -0
  167. package/dist/engines/claude-todo-engine.d.ts +115 -0
  168. package/dist/engines/claude-todo-engine.d.ts.map +1 -0
  169. package/dist/engines/claude-todo-engine.js +346 -0
  170. package/dist/engines/claude-todo-engine.js.map +1 -0
  171. package/dist/engines/drop-coach.d.ts +64 -0
  172. package/dist/engines/drop-coach.d.ts.map +1 -0
  173. package/dist/engines/drop-coach.js +222 -0
  174. package/dist/engines/drop-coach.js.map +1 -0
  175. package/dist/engines/fab-formats-processor.d.ts +167 -0
  176. package/dist/engines/fab-formats-processor.d.ts.map +1 -0
  177. package/dist/engines/fab-formats-processor.js +1274 -0
  178. package/dist/engines/fab-formats-processor.js.map +1 -0
  179. package/dist/engines/faf-dna.d.ts +160 -0
  180. package/dist/engines/faf-dna.d.ts.map +1 -0
  181. package/dist/engines/faf-dna.js +522 -0
  182. package/dist/engines/faf-dna.js.map +1 -0
  183. package/dist/engines/relentless-context-extractor.d.ts +101 -0
  184. package/dist/engines/relentless-context-extractor.d.ts.map +1 -0
  185. package/dist/engines/relentless-context-extractor.js +625 -0
  186. package/dist/engines/relentless-context-extractor.js.map +1 -0
  187. package/dist/fix-once/colors.d.ts +83 -0
  188. package/dist/fix-once/colors.d.ts.map +1 -0
  189. package/dist/fix-once/colors.js +145 -0
  190. package/dist/fix-once/colors.js.map +1 -0
  191. package/dist/fix-once/types.d.ts +258 -0
  192. package/dist/fix-once/types.d.ts.map +1 -0
  193. package/dist/fix-once/types.js +26 -0
  194. package/dist/fix-once/types.js.map +1 -0
  195. package/dist/framework-detector.d.ts +286 -0
  196. package/dist/framework-detector.d.ts.map +1 -0
  197. package/dist/framework-detector.js +782 -0
  198. package/dist/framework-detector.js.map +1 -0
  199. package/dist/generators/faf-generator-championship.d.ts +11 -0
  200. package/dist/generators/faf-generator-championship.d.ts.map +1 -0
  201. package/dist/generators/faf-generator-championship.js +371 -0
  202. package/dist/generators/faf-generator-championship.js.map +1 -0
  203. package/dist/index.d.ts +18 -0
  204. package/dist/index.d.ts.map +1 -0
  205. package/dist/index.js +34 -0
  206. package/dist/index.js.map +1 -0
  207. package/dist/output/experience-manager.d.ts +58 -0
  208. package/dist/output/experience-manager.d.ts.map +1 -0
  209. package/dist/output/experience-manager.js +212 -0
  210. package/dist/output/experience-manager.js.map +1 -0
  211. package/dist/schema/faf-schema.d.ts +92 -0
  212. package/dist/schema/faf-schema.d.ts.map +1 -0
  213. package/dist/schema/faf-schema.js +173 -0
  214. package/dist/schema/faf-schema.js.map +1 -0
  215. package/dist/scoring/championship-scorer.d.ts +114 -0
  216. package/dist/scoring/championship-scorer.d.ts.map +1 -0
  217. package/dist/scoring/championship-scorer.js +380 -0
  218. package/dist/scoring/championship-scorer.js.map +1 -0
  219. package/dist/scoring/score-calculator.d.ts +29 -0
  220. package/dist/scoring/score-calculator.d.ts.map +1 -0
  221. package/dist/scoring/score-calculator.js +520 -0
  222. package/dist/scoring/score-calculator.js.map +1 -0
  223. package/dist/telemetry/analytics.d.ts +74 -0
  224. package/dist/telemetry/analytics.d.ts.map +1 -0
  225. package/dist/telemetry/analytics.js +370 -0
  226. package/dist/telemetry/analytics.js.map +1 -0
  227. package/dist/utils/balance-visualizer.d.ts +38 -0
  228. package/dist/utils/balance-visualizer.d.ts.map +1 -0
  229. package/dist/utils/balance-visualizer.js +196 -0
  230. package/dist/utils/balance-visualizer.js.map +1 -0
  231. package/dist/utils/championship-style.d.ts +110 -0
  232. package/dist/utils/championship-style.d.ts.map +1 -0
  233. package/dist/utils/championship-style.js +213 -0
  234. package/dist/utils/championship-style.js.map +1 -0
  235. package/dist/utils/color-utils.d.ts +17 -0
  236. package/dist/utils/color-utils.d.ts.map +1 -0
  237. package/dist/utils/color-utils.js +96 -0
  238. package/dist/utils/color-utils.js.map +1 -0
  239. package/dist/utils/fab-formats-engine.d.ts +76 -0
  240. package/dist/utils/fab-formats-engine.d.ts.map +1 -0
  241. package/dist/utils/fab-formats-engine.js +424 -0
  242. package/dist/utils/fab-formats-engine.js.map +1 -0
  243. package/dist/utils/fafignore-parser.d.ts +21 -0
  244. package/dist/utils/fafignore-parser.d.ts.map +1 -0
  245. package/dist/utils/fafignore-parser.js +178 -0
  246. package/dist/utils/fafignore-parser.js.map +1 -0
  247. package/dist/utils/file-utils.d.ts +65 -0
  248. package/dist/utils/file-utils.d.ts.map +1 -0
  249. package/dist/utils/file-utils.js +598 -0
  250. package/dist/utils/file-utils.js.map +1 -0
  251. package/dist/utils/platform-detector.d.ts +31 -0
  252. package/dist/utils/platform-detector.d.ts.map +1 -0
  253. package/dist/utils/platform-detector.js +218 -0
  254. package/dist/utils/platform-detector.js.map +1 -0
  255. package/dist/utils/technical-credit.d.ts +36 -0
  256. package/dist/utils/technical-credit.d.ts.map +1 -0
  257. package/dist/utils/technical-credit.js +286 -0
  258. package/dist/utils/technical-credit.js.map +1 -0
  259. package/dist/utils/trust-cache.d.ts +29 -0
  260. package/dist/utils/trust-cache.d.ts.map +1 -0
  261. package/dist/utils/trust-cache.js +123 -0
  262. package/dist/utils/trust-cache.js.map +1 -0
  263. package/dist/utils/turbo-cat-knowledge.d.ts +82 -0
  264. package/dist/utils/turbo-cat-knowledge.d.ts.map +1 -0
  265. package/dist/utils/turbo-cat-knowledge.js +1346 -0
  266. package/dist/utils/turbo-cat-knowledge.js.map +1 -0
  267. package/dist/utils/turbo-cat-pyramid.d.ts +38 -0
  268. package/dist/utils/turbo-cat-pyramid.d.ts.map +1 -0
  269. package/dist/utils/turbo-cat-pyramid.js +287 -0
  270. package/dist/utils/turbo-cat-pyramid.js.map +1 -0
  271. package/dist/utils/turbo-cat.d.ts +92 -0
  272. package/dist/utils/turbo-cat.d.ts.map +1 -0
  273. package/dist/utils/turbo-cat.js +412 -0
  274. package/dist/utils/turbo-cat.js.map +1 -0
  275. package/dist/utils/vibe-sync.d.ts +25 -0
  276. package/dist/utils/vibe-sync.d.ts.map +1 -0
  277. package/dist/utils/vibe-sync.js +169 -0
  278. package/dist/utils/vibe-sync.js.map +1 -0
  279. package/dist/utils/yaml-generator.d.ts +39 -0
  280. package/dist/utils/yaml-generator.d.ts.map +1 -0
  281. package/dist/utils/yaml-generator.js +345 -0
  282. package/dist/utils/yaml-generator.js.map +1 -0
  283. package/package.json +96 -0
@@ -0,0 +1,412 @@
1
+ "use strict";
2
+ /**
3
+ * 😽 TURBO-CAT™ (Turbo Catalytic Analysis Technology) v1.0.0
4
+ * 134-Format Intelligence Catalyst with F1-Inspired Performance
5
+ *
6
+ * Like a catalytic converter for code - transforms raw file discoveries into pure intelligence!
7
+ * "From dirty exhaust to clean boost" - 134 formats, 2-layer scan, <50ms delivery
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.TurboCat = void 0;
14
+ const fs_1 = require("fs");
15
+ const path_1 = __importDefault(require("path"));
16
+ const glob_1 = require("glob");
17
+ // 😽 Import TURBO-CAT Knowledge Chamber - 134 Format Catalyst
18
+ const turbo_cat_knowledge_1 = require("./turbo-cat-knowledge");
19
+ /**
20
+ * 🔍 TWO-LAYERED DISCOVERY ENGINE
21
+ * Layer 1: Direct format scanning
22
+ * Layer 2: Content confirmation & usage validation
23
+ */
24
+ class TurboCat {
25
+ knowledgeBase = turbo_cat_knowledge_1.KNOWLEDGE_BASE;
26
+ /**
27
+ * 😽 TURBO-CAT DUAL-STAGE CATALYST
28
+ * Stage 1: Raw format intake (like air intake)
29
+ * Stage 2: Catalytic conversion to intelligence (like exhaust treatment)
30
+ */
31
+ async discoverFormats(projectDir = process.cwd()) {
32
+ const discoveredFormats = [];
33
+ // LAYER 1: Format Discovery (based on proven two-layered file search)
34
+ const foundFormats = await this.layerOneFormatScan(projectDir);
35
+ // LAYER 2: F1-OPTIMIZED Content Confirmation (parallel validation)
36
+ const confirmationPromises = foundFormats.map(async (formatResult) => {
37
+ const confirmed = await this.layerTwoContentConfirmation(formatResult);
38
+ return {
39
+ ...formatResult,
40
+ confirmed
41
+ };
42
+ });
43
+ // 🏎️ F1-OPTIMIZATION: Parallel confirmation with timeout
44
+ const discoveredFormatsArray = await Promise.allSettled(confirmationPromises);
45
+ discoveredFormats.push(...discoveredFormatsArray
46
+ .filter(result => result.status === 'fulfilled')
47
+ .map(result => result.value));
48
+ // Analyze results
49
+ return this.analyzeFormats(discoveredFormats);
50
+ }
51
+ /**
52
+ * LAYER 1: Hybrid format scanning (fs.readdir + glob for optimal performance)
53
+ */
54
+ async layerOneFormatScan(projectDir) {
55
+ const results = [];
56
+ // PHASE 1A: fs.readdir for known config files (fast, precise)
57
+ await this.scanConfigFiles(projectDir, results);
58
+ // PHASE 1B: glob for pattern-based discovery (broader, efficient)
59
+ await this.scanPatternFiles(projectDir, results);
60
+ return results;
61
+ }
62
+ /**
63
+ * PHASE 1A: Use fs.readdir for known config files (optimal for specific files)
64
+ */
65
+ async scanConfigFiles(projectDir, results) {
66
+ let currentDir = path_1.default.resolve(projectDir);
67
+ // Check up to 10 parent directories (same as .faf search)
68
+ for (let i = 0; i < 10; i++) {
69
+ try {
70
+ // Fast directory scan using fs.readdir (optimal for specific files)
71
+ const files = await fs_1.promises.readdir(currentDir);
72
+ // Check each file against known config files
73
+ for (const file of files) {
74
+ const formatInfo = this.knowledgeBase[file];
75
+ if (formatInfo) {
76
+ const fullPath = path_1.default.join(currentDir, file);
77
+ let fileStats = {};
78
+ try {
79
+ const stats = await fs_1.promises.stat(fullPath);
80
+ fileStats = {
81
+ fileSize: stats.size,
82
+ lastModified: stats.mtime,
83
+ discovered: new Date()
84
+ };
85
+ }
86
+ catch {
87
+ // Continue without stats
88
+ }
89
+ results.push({
90
+ fileName: file,
91
+ formatType: file,
92
+ frameworks: formatInfo.frameworks,
93
+ slotMappings: formatInfo.slots || {},
94
+ priority: formatInfo.priority,
95
+ intelligence: formatInfo.intelligence,
96
+ confirmed: false, // Will be confirmed in Layer 2
97
+ filePath: fullPath,
98
+ ...fileStats
99
+ });
100
+ }
101
+ }
102
+ // Move to parent directory (proven .faf technique)
103
+ const parentDir = path_1.default.dirname(currentDir);
104
+ if (parentDir === currentDir) {
105
+ break; // Reached filesystem root
106
+ }
107
+ currentDir = parentDir;
108
+ }
109
+ catch {
110
+ // Skip this directory if we can't read it (robust error handling)
111
+ const parentDir = path_1.default.dirname(currentDir);
112
+ if (parentDir === currentDir) {
113
+ break;
114
+ }
115
+ currentDir = parentDir;
116
+ }
117
+ }
118
+ }
119
+ /**
120
+ * PHASE 1B: F1-OPTIMIZED pattern scanning (performance-first approach)
121
+ */
122
+ async scanPatternFiles(projectDir, results) {
123
+ try {
124
+ // 🏎️ F1-OPTIMIZATION: Single glob with multiple extensions (10x faster)
125
+ const files = await new Promise((resolve, reject) => {
126
+ (0, glob_1.glob)('**/*.{py,ts,tsx,js,jsx,svelte,vue}', {
127
+ cwd: projectDir,
128
+ ignore: ['node_modules/**', '.git/**', 'dist/**', 'build/**', 'venv/**', '__pycache__/**'],
129
+ absolute: true,
130
+ nodir: true // Only files, skip directories
131
+ }, (err, matches) => {
132
+ if (err) {
133
+ reject(err);
134
+ }
135
+ else {
136
+ resolve(matches.slice(0, 10)); // Limit total files for speed
137
+ }
138
+ });
139
+ });
140
+ // 🏎️ F1-OPTIMIZATION: Process files in parallel batches
141
+ const batchSize = 3;
142
+ for (let i = 0; i < files.length; i += batchSize) {
143
+ const batch = files.slice(i, i + batchSize);
144
+ // Process batch in parallel
145
+ await Promise.all(batch.map(async (filePath) => {
146
+ const ext = path_1.default.extname(filePath);
147
+ const formatInfo = this.knowledgeBase[`*${ext}`];
148
+ if (formatInfo && !results.some(r => r.filePath === filePath)) {
149
+ results.push({
150
+ fileName: path_1.default.basename(filePath),
151
+ formatType: ext,
152
+ frameworks: formatInfo.frameworks,
153
+ slotMappings: formatInfo.slots || {},
154
+ priority: formatInfo.priority,
155
+ intelligence: formatInfo.intelligence,
156
+ confirmed: false,
157
+ filePath
158
+ });
159
+ }
160
+ }));
161
+ }
162
+ }
163
+ catch {
164
+ // Graceful fallback if glob fails
165
+ }
166
+ }
167
+ /**
168
+ * Extract deep intelligence from package.json - THE KILLER FEATURE!
169
+ * This is what makes FAB-FORMATS so powerful!
170
+ */
171
+ async extractPackageJsonIntelligence(content) {
172
+ try {
173
+ const pkg = JSON.parse(content);
174
+ const allDeps = { ...pkg.dependencies, ...pkg.devDependencies, ...pkg.peerDependencies };
175
+ // Calculate quality score like FAB-FORMATS does!
176
+ let score = 0;
177
+ const detectedFrameworks = [];
178
+ // TIER 1: Essential metadata (30 points)
179
+ if (pkg.name)
180
+ score += 10;
181
+ if (pkg.description)
182
+ score += 10;
183
+ if (pkg.version)
184
+ score += 5;
185
+ if (pkg.author || pkg.license)
186
+ score += 5;
187
+ // TIER 2: Scripts showing development maturity (30 points)
188
+ const scripts = pkg.scripts || {};
189
+ if (scripts.dev || scripts.start)
190
+ score += 10;
191
+ if (scripts.build)
192
+ score += 10;
193
+ if (scripts.test || scripts.check)
194
+ score += 10;
195
+ // TIER 3: Dependencies showing tech stack (40 points)
196
+ const depCount = Object.keys(allDeps).length;
197
+ if (depCount >= 15)
198
+ score += 20;
199
+ else if (depCount >= 8)
200
+ score += 15;
201
+ else if (depCount >= 3)
202
+ score += 10;
203
+ else if (depCount >= 1)
204
+ score += 5;
205
+ // TIER 4: Modern toolchain detection (50 points)
206
+ if (allDeps['typescript'] || allDeps['@types/node'])
207
+ score += 10;
208
+ if (allDeps['vite'] || allDeps['webpack'] || allDeps['rollup'])
209
+ score += 10;
210
+ if (allDeps['vitest'] || allDeps['jest'] || allDeps['playwright'])
211
+ score += 10;
212
+ if (allDeps['eslint'] || allDeps['prettier'])
213
+ score += 10;
214
+ if (allDeps['tailwindcss'] || allDeps['@emotion/styled'])
215
+ score += 10;
216
+ // TIER 5: Framework detection (MASSIVE BONUS: 50 points)
217
+ if (allDeps['svelte'] || allDeps['@sveltejs/kit']) {
218
+ score += 25;
219
+ detectedFrameworks.push('Svelte');
220
+ }
221
+ if (allDeps['react'] || allDeps['next']) {
222
+ score += 20;
223
+ detectedFrameworks.push('React');
224
+ }
225
+ if (allDeps['vue'] || allDeps['nuxt']) {
226
+ score += 20;
227
+ detectedFrameworks.push('Vue');
228
+ }
229
+ if (allDeps['@angular/core']) {
230
+ score += 15;
231
+ detectedFrameworks.push('Angular');
232
+ }
233
+ if (allDeps['astro']) {
234
+ score += 20;
235
+ detectedFrameworks.push('Astro');
236
+ }
237
+ // Return the intelligence object that score-calculator expects!
238
+ return {
239
+ name: pkg.name,
240
+ description: pkg.description,
241
+ version: pkg.version,
242
+ scripts: pkg.scripts,
243
+ dependencies: allDeps,
244
+ author: pkg.author,
245
+ license: pkg.license,
246
+ repository: pkg.repository,
247
+ frameworks: detectedFrameworks,
248
+ score: Math.min(score, 150), // Cap at 150
249
+ depCount,
250
+ hasTests: !!(scripts.test || scripts.check),
251
+ hasBuild: !!scripts.build,
252
+ hasTypeScript: !!(allDeps['typescript'] || allDeps['@types/node']),
253
+ hasLinting: !!(allDeps['eslint'] || allDeps['prettier']),
254
+ hasStyling: !!(allDeps['tailwindcss'] || allDeps['@emotion/styled'] || allDeps['styled-components'])
255
+ };
256
+ }
257
+ catch {
258
+ return null;
259
+ }
260
+ }
261
+ /**
262
+ * LAYER 2: F1-OPTIMIZED Content confirmation WITH INTELLIGENCE EXTRACTION!
263
+ */
264
+ async layerTwoContentConfirmation(format) {
265
+ try {
266
+ // 🏎️ F1-OPTIMIZATION: Skip content reading for low-priority formats
267
+ if (format.priority < 15 && Math.random() > 0.5) {
268
+ return true; // Assume valid for speed on low-priority formats
269
+ }
270
+ // 🏎️ F1-OPTIMIZATION: Read only first 1KB for most files (10x faster)
271
+ const maxBytes = format.formatType.endsWith('.json') || format.formatType === 'Dockerfile' ? 2048 : 1024;
272
+ const buffer = Buffer.alloc(maxBytes);
273
+ const fd = await fs_1.promises.open(format.filePath, 'r');
274
+ const { bytesRead } = await fd.read(buffer, 0, maxBytes, 0);
275
+ await fd.close();
276
+ const content = buffer.slice(0, bytesRead).toString('utf-8');
277
+ // For package.json, we ALWAYS read and extract intelligence
278
+ if (format.formatType === 'package.json') {
279
+ const fullContent = await fs_1.promises.readFile(format.filePath, 'utf-8');
280
+ const intelligence = await this.extractPackageJsonIntelligence(fullContent);
281
+ if (intelligence) {
282
+ format.intelligence = intelligence; // Store extracted data
283
+ return true;
284
+ }
285
+ return false;
286
+ }
287
+ // 🏎️ F1-OPTIMIZATION: Fast validation with early exit
288
+ switch (format.formatType) {
289
+ case 'requirements.txt':
290
+ return content.split('\n').some(line => line.trim() && !line.startsWith('#'));
291
+ case 'svelte.config.js':
292
+ return content.includes('svelte') || content.includes('@sveltejs');
293
+ case 'tsconfig.json':
294
+ return content.includes('compilerOptions');
295
+ case 'Dockerfile':
296
+ return content.includes('FROM');
297
+ case '.py':
298
+ return content.length > 10; // Quick length check
299
+ case '.ts':
300
+ return content.includes('import') || content.includes('export') || content.includes('interface');
301
+ case '.svelte':
302
+ return content.includes('<script') || content.includes('<template');
303
+ case '.js':
304
+ return content.includes('function') || content.includes('const') || content.includes('import');
305
+ default:
306
+ return content.length > 0;
307
+ }
308
+ }
309
+ catch {
310
+ return false; // File issues = not confirmed
311
+ }
312
+ }
313
+ /**
314
+ * Confirm package.json contains actual dependencies
315
+ */
316
+ confirmPackageJsonUsage(content) {
317
+ try {
318
+ const pkg = JSON.parse(content);
319
+ return !!(pkg.dependencies || pkg.devDependencies || pkg.scripts);
320
+ }
321
+ catch {
322
+ return false;
323
+ }
324
+ }
325
+ /**
326
+ * Confirm requirements.txt has actual Python packages
327
+ */
328
+ confirmRequirementsUsage(content) {
329
+ const lines = content.split('\n').filter(line => line.trim() && !line.startsWith('#'));
330
+ return lines.length > 0;
331
+ }
332
+ /**
333
+ * Analyze discovered formats and generate intelligence
334
+ */
335
+ analyzeFormats(formats) {
336
+ const confirmedFormats = formats.filter(f => f.confirmed);
337
+ const totalIntelligenceScore = confirmedFormats.reduce((sum, f) => sum + f.priority, 0);
338
+ // Calculate framework confidence
339
+ const frameworkConfidence = {};
340
+ confirmedFormats.forEach(format => {
341
+ format.frameworks.forEach(framework => {
342
+ frameworkConfidence[framework] = (frameworkConfidence[framework] || 0) + format.priority;
343
+ });
344
+ });
345
+ // Generate slot fill recommendations
346
+ const slotFillRecommendations = {};
347
+ confirmedFormats.forEach(format => {
348
+ Object.entries(format.slotMappings).forEach(([slot, value]) => {
349
+ if (!slotFillRecommendations[slot] || format.priority > 20) {
350
+ slotFillRecommendations[slot] = value;
351
+ }
352
+ });
353
+ });
354
+ // 📊 STACKTISTICS: Generate stack signature from detected frameworks
355
+ const stackSignature = this.generateStackSignature(confirmedFormats, frameworkConfidence);
356
+ return {
357
+ discoveredFormats: formats,
358
+ totalIntelligenceScore,
359
+ confirmedFormats,
360
+ frameworkConfidence,
361
+ slotFillRecommendations,
362
+ stackSignature
363
+ };
364
+ }
365
+ /**
366
+ * 📊 STACKTISTICS: Generate stack signature from detected formats
367
+ * Simple, fast, and extends existing fab-formats intelligence
368
+ */
369
+ generateStackSignature(confirmedFormats, frameworkConfidence) {
370
+ // Get top 3 frameworks by confidence (simple approach)
371
+ const topFrameworks = Object.entries(frameworkConfidence)
372
+ .sort(([, a], [, b]) => b - a)
373
+ .slice(0, 3)
374
+ .map(([framework]) => framework.toLowerCase().replace(/[^a-z0-9]/g, ''));
375
+ // Special case mappings for common stacks
376
+ const signature = topFrameworks.join('-');
377
+ // Known stack patterns (simple lookup - no complexity added)
378
+ const knownStacks = {
379
+ 'nextjs-tailwind-vercel': 'next-tailwind-vercel',
380
+ 'nextjs-tailwindcss-vercel': 'next-tailwind-vercel',
381
+ 'svelte-sveltekit-tailwind': 'svelte5-tailwind',
382
+ 'react-nextjs-tailwind': 'next-tailwind',
383
+ 'python-fastapi-postgresql': 'fastapi-postgres',
384
+ 'python-fastapi-sqlite': 'fastapi-sqlite',
385
+ 'typescript-nodejs-express': 'node-express-ts'
386
+ };
387
+ return knownStacks[signature] || signature || 'unknown-stack';
388
+ }
389
+ /**
390
+ * Get top framework recommendation
391
+ */
392
+ getTopFramework(analysis) {
393
+ const frameworks = Object.entries(analysis.frameworkConfidence);
394
+ if (frameworks.length === 0) {
395
+ return null;
396
+ }
397
+ const [framework, confidence] = frameworks.reduce((max, current) => current[1] > max[1] ? current : max);
398
+ return { framework, confidence };
399
+ }
400
+ /**
401
+ * Generate human-readable summary
402
+ */
403
+ generateSummary(analysis) {
404
+ const topFramework = this.getTopFramework(analysis);
405
+ const confirmedCount = analysis.confirmedFormats.length;
406
+ const totalScore = analysis.totalIntelligenceScore;
407
+ return `😽 TURBO-CAT Analysis: ${confirmedCount} confirmed formats, ${totalScore} intelligence boost. ` +
408
+ `Top framework: ${topFramework?.framework || 'Unknown'} (${topFramework?.confidence || 0}% confidence)`;
409
+ }
410
+ }
411
+ exports.TurboCat = TurboCat;
412
+ //# sourceMappingURL=turbo-cat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turbo-cat.js","sourceRoot":"","sources":["../../src/utils/turbo-cat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * FAF VIBE Sync - Alternative sync targets for no-file-system platforms
3
+ * When there's no CLAUDE.md, we sync to platform-native locations
4
+ */
5
+ export interface VibeSyncTarget {
6
+ platform: string;
7
+ target: string;
8
+ method: 'file' | 'env' | 'api' | 'clipboard';
9
+ instructions: string;
10
+ }
11
+ export declare class VibeSync {
12
+ /**
13
+ * Get sync target based on platform
14
+ */
15
+ static getSyncTarget(platform: string): VibeSyncTarget;
16
+ /**
17
+ * Perform platform-specific sync
18
+ */
19
+ static syncContext(content: string, platform: string, projectPath: string): Promise<boolean>;
20
+ /**
21
+ * Generate VIBE progression message
22
+ */
23
+ static getProgressionMessage(currentScore: number): string;
24
+ }
25
+ //# sourceMappingURL=vibe-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vibe-sync.d.ts","sourceRoot":"","sources":["../../src/utils/vibe-sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,WAAW,CAAC;IAC7C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,QAAQ;IACnB;;OAEG;WACW,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAqD7D;;OAEG;WACiB,WAAW,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC;IAuCnB;;OAEG;WACW,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;CA+BlE"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ /**
3
+ * FAF VIBE Sync - Alternative sync targets for no-file-system platforms
4
+ * When there's no CLAUDE.md, we sync to platform-native locations
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.VibeSync = void 0;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ class VibeSync {
44
+ /**
45
+ * Get sync target based on platform
46
+ */
47
+ static getSyncTarget(platform) {
48
+ switch (platform.toLowerCase()) {
49
+ case 'replit':
50
+ return {
51
+ platform: 'Replit',
52
+ target: '.faf-context.md', // Visible in file tree
53
+ method: 'file',
54
+ instructions: 'FAF syncs to .faf-context.md - Share this with any AI!'
55
+ };
56
+ case 'lovable':
57
+ return {
58
+ platform: 'Lovable',
59
+ target: 'README.faf.md', // Shows in their UI
60
+ method: 'file',
61
+ instructions: 'Copy README.faf.md content to Claude/ChatGPT for instant context'
62
+ };
63
+ case 'wix':
64
+ case 'base44':
65
+ return {
66
+ platform: 'Wix/Base44',
67
+ target: 'Clipboard',
68
+ method: 'clipboard',
69
+ instructions: 'FAF copied context to clipboard - Paste in any AI!'
70
+ };
71
+ case 'glitch':
72
+ return {
73
+ platform: 'Glitch',
74
+ target: '.env',
75
+ method: 'env',
76
+ instructions: 'FAF context in .env as FAF_CONTEXT (copy to AI)'
77
+ };
78
+ case 'codesandbox':
79
+ return {
80
+ platform: 'CodeSandbox',
81
+ target: 'faf-context.json',
82
+ method: 'file',
83
+ instructions: 'Context saved to faf-context.json for AI sharing'
84
+ };
85
+ default:
86
+ return {
87
+ platform: 'Professional',
88
+ target: 'CLAUDE.md',
89
+ method: 'file',
90
+ instructions: 'Synced to CLAUDE.md for Claude Desktop and other AI tools'
91
+ };
92
+ }
93
+ }
94
+ /**
95
+ * Perform platform-specific sync
96
+ */
97
+ static async syncContext(content, platform, projectPath) {
98
+ const target = this.getSyncTarget(platform);
99
+ try {
100
+ switch (target.method) {
101
+ case 'file':
102
+ const filePath = path.join(projectPath, target.target);
103
+ await fs.promises.writeFile(filePath, content);
104
+ return true;
105
+ case 'env':
106
+ // For .env files, add as multiline string
107
+ const envPath = path.join(projectPath, '.env');
108
+ const envContent = `\n# FAF Context for AI\nFAF_CONTEXT="${content.replace(/"/g, '\\"')}"\n`;
109
+ await fs.promises.appendFile(envPath, envContent);
110
+ return true;
111
+ case 'clipboard':
112
+ // Use clipboardy or similar
113
+ console.log('📋 Context ready for clipboard (install clipboardy for auto-copy)');
114
+ console.log('\n--- COPY BELOW FOR AI ---\n');
115
+ console.log(content);
116
+ console.log('\n--- END CONTEXT ---\n');
117
+ return true;
118
+ case 'api':
119
+ // Future: POST to FAF cloud service
120
+ console.log('API sync coming soon!');
121
+ return false;
122
+ default:
123
+ return false;
124
+ }
125
+ }
126
+ catch (error) {
127
+ console.error('Sync failed:', error);
128
+ return false;
129
+ }
130
+ }
131
+ /**
132
+ * Generate VIBE progression message
133
+ */
134
+ static getProgressionMessage(currentScore) {
135
+ if (currentScore < 40) {
136
+ return `
137
+ 🎯 Your Prototype Score: ${currentScore}%
138
+ 📈 With FAF VIBE: Could reach 65%+
139
+ 🚀 With Claude Desktop: Could reach 85%+
140
+
141
+ You're building something cool! Let FAF help you level up:
142
+ 1. Run 'faf enhance' to boost your score
143
+ 2. Add more context about your decisions
144
+ 3. Consider Claude Desktop for bi-directional sync
145
+ `;
146
+ }
147
+ else if (currentScore < 70) {
148
+ return `
149
+ ✨ Your Score: ${currentScore}% - Getting Professional!
150
+ 📈 With Claude Desktop: Could reach 85%+
151
+
152
+ You're on the path to championship context:
153
+ 1. Add technical decisions to your .faf
154
+ 2. Document your architecture choices
155
+ 3. Get Claude Desktop for seamless AI workflow
156
+ `;
157
+ }
158
+ else {
159
+ return `
160
+ 🏆 Championship Score: ${currentScore}%!
161
+
162
+ You've graduated from prototype to professional!
163
+ Consider the $100 Pro plan for enterprise features.
164
+ `;
165
+ }
166
+ }
167
+ }
168
+ exports.VibeSync = VibeSync;
169
+ //# sourceMappingURL=vibe-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vibe-sync.js","sourceRoot":"","sources":["../../src/utils/vibe-sync.ts"],"names":[],"mappings":"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"}