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,424 @@
1
+ "use strict";
2
+ /**
3
+ * 😽 TURBO-CAT™ v2.0.0 - POWERED BY FAB-FORMATS ENGINE!
4
+ *
5
+ * The KILLER FEATURE from fafdev.tools - now in CLI!
6
+ * Two-stage blitz pattern for massive codebases
7
+ * 86% scores from just 2 files!
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.FabFormatsEngine = void 0;
44
+ const fs_1 = require("fs");
45
+ const path = __importStar(require("path"));
46
+ const turbo_cat_knowledge_1 = require("./turbo-cat-knowledge");
47
+ class FabFormatsEngine {
48
+ processedCategories = new Map();
49
+ /**
50
+ * STAGE 1: DISCOVER - Find all formats in directory (FAST)
51
+ */
52
+ async discoverFormats(projectDir) {
53
+ const startTime = Date.now();
54
+ // Reset for new scan
55
+ this.processedCategories.clear();
56
+ // Stage 1: Find ALL format files first
57
+ const allFiles = await this.findAllFormats(projectDir);
58
+ // Stage 2: Process by category (deduplication)
59
+ const categorizedFiles = this.categorizeAndDeduplicate(allFiles);
60
+ // Stage 3: Extract intelligence from best files
61
+ const results = await this.extractIntelligence(categorizedFiles);
62
+ // Stage 4: Analyze and generate recommendations
63
+ const analysis = this.analyzeResults(results);
64
+ // Silent operation - let the command handle output
65
+ return analysis;
66
+ }
67
+ /**
68
+ * Find all format files (no content reading yet!)
69
+ */
70
+ async findAllFormats(projectDir) {
71
+ const formats = [];
72
+ // Upward traversal for root configs
73
+ let currentDir = projectDir;
74
+ for (let i = 0; i < 10; i++) {
75
+ try {
76
+ const files = await fs_1.promises.readdir(currentDir);
77
+ for (const file of files) {
78
+ // Check against known formats
79
+ if (turbo_cat_knowledge_1.KNOWLEDGE_BASE[file] || this.isKnownExtension(file)) {
80
+ formats.push(path.join(currentDir, file));
81
+ }
82
+ }
83
+ const parentDir = path.dirname(currentDir);
84
+ if (parentDir === currentDir)
85
+ break;
86
+ currentDir = parentDir;
87
+ }
88
+ catch {
89
+ break;
90
+ }
91
+ }
92
+ return formats;
93
+ }
94
+ isKnownExtension(fileName) {
95
+ const knownExtensions = ['.md', '.json', '.yaml', '.yml', '.toml', '.xml'];
96
+ return knownExtensions.some(ext => fileName.endsWith(ext));
97
+ }
98
+ /**
99
+ * STAGE 2: CATEGORIZE - Smart deduplication
100
+ */
101
+ categorizeAndDeduplicate(files) {
102
+ const categorized = new Map();
103
+ for (const filePath of files) {
104
+ const fileName = path.basename(filePath);
105
+ const category = this.categorizeFile(fileName);
106
+ // Only keep first file per category (closest to project root)
107
+ if (!categorized.has(category)) {
108
+ categorized.set(category, filePath);
109
+ }
110
+ }
111
+ return categorized;
112
+ }
113
+ /**
114
+ * Categorize files - STRAIGHT FROM FAB-FORMATS!
115
+ */
116
+ categorizeFile(fileName) {
117
+ // Package Management Files (only one per project)
118
+ if (fileName === 'package.json')
119
+ return 'package-manager';
120
+ if (fileName === 'Cargo.toml')
121
+ return 'package-manager';
122
+ if (fileName === 'requirements.txt' || fileName === 'requirements.in')
123
+ return 'package-manager';
124
+ if (fileName === 'pyproject.toml')
125
+ return 'package-manager';
126
+ if (fileName === 'pom.xml')
127
+ return 'package-manager';
128
+ if (fileName === 'build.gradle' || fileName === 'build.gradle.kts')
129
+ return 'package-manager';
130
+ if (fileName === 'Pipfile')
131
+ return 'package-manager';
132
+ if (fileName === 'composer.json')
133
+ return 'package-manager';
134
+ // Documentation Files (one main README/REQUIREMENTS)
135
+ if (fileName === 'README.md' || fileName === 'README.rst' || fileName === 'README.txt')
136
+ return 'documentation';
137
+ if (fileName === 'REQUIREMENTS.md' || fileName === 'REQUIREMENTS.rst' || fileName === 'REQUIREMENTS.txt')
138
+ return 'requirements';
139
+ // Configuration Files (one per type)
140
+ if (fileName === 'tsconfig.json')
141
+ return 'typescript-config';
142
+ if (fileName === 'svelte.config.js' || fileName === 'svelte.config.ts')
143
+ return 'svelte-config';
144
+ if (fileName === 'vite.config.js' || fileName === 'vite.config.ts')
145
+ return 'vite-config';
146
+ if (fileName === 'next.config.js' || fileName === 'next.config.mjs')
147
+ return 'next-config';
148
+ if (fileName === 'nuxt.config.js' || fileName === 'nuxt.config.ts')
149
+ return 'nuxt-config';
150
+ if (fileName === 'astro.config.mjs' || fileName === 'astro.config.js')
151
+ return 'astro-config';
152
+ // Testing Configuration
153
+ if (fileName === 'vitest.config.ts' || fileName === 'vitest.config.js')
154
+ return 'test-config';
155
+ if (fileName === 'jest.config.js' || fileName === 'jest.config.ts')
156
+ return 'test-config';
157
+ if (fileName === 'playwright.config.js' || fileName === 'playwright.config.ts')
158
+ return 'test-config';
159
+ // Linting Configuration
160
+ if (fileName.startsWith('.eslintrc') || fileName === 'eslint.config.js')
161
+ return 'lint-config';
162
+ if (fileName === '.prettierrc' || fileName === 'prettier.config.js')
163
+ return 'lint-config';
164
+ // Deployment Configuration
165
+ if (fileName === 'Dockerfile' || fileName.startsWith('Dockerfile.'))
166
+ return 'docker-config';
167
+ if (fileName === 'docker-compose.yml' || fileName === 'docker-compose.yaml')
168
+ return 'docker-compose-config';
169
+ if (fileName === 'vercel.json')
170
+ return 'vercel-config';
171
+ if (fileName === 'netlify.toml')
172
+ return 'netlify-config';
173
+ // FAF Files - HIGHEST PRIORITY!
174
+ if (fileName === '.faf')
175
+ return 'faf-context';
176
+ if (fileName === 'CLAUDE.md')
177
+ return 'claude-context';
178
+ // Default: use file extension as category
179
+ const ext = fileName.substring(fileName.lastIndexOf('.'));
180
+ return `file-type-${ext}`;
181
+ }
182
+ /**
183
+ * STAGE 3: EXTRACT - Deep intelligence extraction
184
+ */
185
+ async extractIntelligence(categorizedFiles) {
186
+ const results = [];
187
+ // Process in priority order
188
+ const priorityOrder = [
189
+ 'faf-context',
190
+ 'package-manager',
191
+ 'documentation',
192
+ 'typescript-config',
193
+ 'svelte-config',
194
+ 'vite-config'
195
+ ];
196
+ // Process high-priority first
197
+ for (const category of priorityOrder) {
198
+ if (categorizedFiles.has(category)) {
199
+ const filePath = categorizedFiles.get(category);
200
+ const result = await this.processFile(filePath, category);
201
+ if (result) {
202
+ results.push(result);
203
+ categorizedFiles.delete(category);
204
+ }
205
+ }
206
+ }
207
+ // Process remaining files
208
+ for (const [category, filePath] of categorizedFiles) {
209
+ const result = await this.processFile(filePath, category);
210
+ if (result)
211
+ results.push(result);
212
+ }
213
+ return results;
214
+ }
215
+ /**
216
+ * Process individual file with intelligence extraction
217
+ */
218
+ async processFile(filePath, category) {
219
+ const fileName = path.basename(filePath);
220
+ try {
221
+ const content = await fs_1.promises.readFile(filePath, 'utf-8');
222
+ // Special handling for package.json
223
+ if (fileName === 'package.json') {
224
+ return this.processPackageJson(filePath, content);
225
+ }
226
+ // Basic processing for other files
227
+ return {
228
+ fileName,
229
+ formatType: fileName,
230
+ category,
231
+ intelligence: { exists: true, size: content.length },
232
+ priority: this.getPriority(fileName),
233
+ frameworks: this.detectFrameworks(fileName, content)
234
+ };
235
+ }
236
+ catch {
237
+ return null;
238
+ }
239
+ }
240
+ /**
241
+ * Process package.json with FAB-FORMATS quality grading
242
+ */
243
+ async processPackageJson(filePath, content) {
244
+ const packageData = JSON.parse(content);
245
+ const allDeps = { ...packageData.dependencies, ...packageData.devDependencies, ...packageData.peerDependencies };
246
+ // Grade the quality
247
+ const qualityGrade = this.gradePackageJsonQuality(packageData);
248
+ // Detect frameworks
249
+ const frameworks = [];
250
+ if (allDeps['svelte'] || allDeps['@sveltejs/kit'])
251
+ frameworks.push('Svelte');
252
+ if (allDeps['react'] || allDeps['next'])
253
+ frameworks.push('React');
254
+ if (allDeps['vue'] || allDeps['nuxt'])
255
+ frameworks.push('Vue');
256
+ if (allDeps['@angular/core'])
257
+ frameworks.push('Angular');
258
+ if (allDeps['astro'])
259
+ frameworks.push('Astro');
260
+ return {
261
+ fileName: 'package.json',
262
+ formatType: 'package.json',
263
+ category: 'package-manager',
264
+ intelligence: {
265
+ name: packageData.name,
266
+ description: packageData.description,
267
+ version: packageData.version,
268
+ scripts: packageData.scripts,
269
+ dependencies: allDeps,
270
+ author: packageData.author,
271
+ license: packageData.license,
272
+ repository: packageData.repository,
273
+ frameworks,
274
+ depCount: Object.keys(allDeps).length,
275
+ hasTests: !!(packageData.scripts?.test || packageData.scripts?.check),
276
+ hasBuild: !!packageData.scripts?.build,
277
+ hasTypeScript: !!(allDeps['typescript'] || allDeps['@types/node']),
278
+ hasLinting: !!(allDeps['eslint'] || allDeps['prettier'])
279
+ },
280
+ priority: 35,
281
+ grade: qualityGrade.grade,
282
+ score: qualityGrade.baseScore,
283
+ frameworks
284
+ };
285
+ }
286
+ /**
287
+ * Grade package.json quality - THE SECRET SAUCE!
288
+ */
289
+ gradePackageJsonQuality(packageData) {
290
+ const criteria = [];
291
+ // TIER 1: EXCEPTIONAL (90%+ Claude Recommended)
292
+ let exceptionalCount = 0;
293
+ if (packageData.name && packageData.description && packageData.version) {
294
+ exceptionalCount++;
295
+ criteria.push('Complete project metadata');
296
+ }
297
+ const scripts = packageData.scripts || {};
298
+ const scriptKeys = Object.keys(scripts);
299
+ if (scriptKeys.includes('dev') && scriptKeys.includes('build') &&
300
+ (scriptKeys.includes('test') || scriptKeys.includes('check'))) {
301
+ exceptionalCount++;
302
+ criteria.push('Complete dev lifecycle scripts');
303
+ }
304
+ const totalDeps = Object.keys(packageData.dependencies || {}).length +
305
+ Object.keys(packageData.devDependencies || {}).length;
306
+ if (totalDeps >= 15 && packageData.devDependencies) {
307
+ exceptionalCount++;
308
+ criteria.push('Professional dependency structure');
309
+ }
310
+ const allDeps = { ...packageData.dependencies, ...packageData.devDependencies };
311
+ let modernTools = 0;
312
+ if (allDeps['typescript'] || allDeps['@types/node'])
313
+ modernTools++;
314
+ if (allDeps['vite'] || allDeps['webpack'] || allDeps['rollup'])
315
+ modernTools++;
316
+ if (allDeps['jest'] || allDeps['vitest'] || allDeps['playwright'])
317
+ modernTools++;
318
+ if (allDeps['eslint'] || allDeps['prettier'])
319
+ modernTools++;
320
+ if (modernTools >= 3) {
321
+ exceptionalCount++;
322
+ criteria.push('Modern development toolchain');
323
+ }
324
+ // Framework sophistication
325
+ let frameworkSophistication = 0;
326
+ if (allDeps['svelte'] || allDeps['react'] || allDeps['vue'] || allDeps['next'] || allDeps['nuxt'])
327
+ frameworkSophistication++;
328
+ if (allDeps['@sveltejs/kit'] || allDeps['next'] || allDeps['nuxt'])
329
+ frameworkSophistication++;
330
+ if (allDeps['tailwindcss'] || allDeps['styled-components'])
331
+ frameworkSophistication++;
332
+ if (frameworkSophistication >= 2) {
333
+ exceptionalCount++;
334
+ criteria.push('Sophisticated framework stack');
335
+ }
336
+ if (packageData.repository && packageData.author && packageData.license) {
337
+ exceptionalCount++;
338
+ criteria.push('Professional project setup');
339
+ }
340
+ // TIER GRADING
341
+ if (exceptionalCount >= 5) {
342
+ return { grade: 'EXCEPTIONAL', baseScore: 120, criteria };
343
+ }
344
+ let professionalCount = 0;
345
+ if (packageData.name && packageData.description)
346
+ professionalCount++;
347
+ if (totalDeps >= 8)
348
+ professionalCount++;
349
+ if (modernTools >= 2)
350
+ professionalCount++;
351
+ if (scriptKeys.length >= 3)
352
+ professionalCount++;
353
+ if (professionalCount >= 3 || exceptionalCount >= 3) {
354
+ return { grade: 'PROFESSIONAL', baseScore: 85, criteria };
355
+ }
356
+ if (packageData.name && totalDeps >= 5 && scriptKeys.length >= 2) {
357
+ return { grade: 'GOOD', baseScore: 65, criteria };
358
+ }
359
+ if (packageData.name && totalDeps >= 1) {
360
+ return { grade: 'BASIC', baseScore: 45, criteria };
361
+ }
362
+ return { grade: 'MINIMAL', baseScore: 25, criteria };
363
+ }
364
+ getPriority(fileName) {
365
+ const knowledge = turbo_cat_knowledge_1.KNOWLEDGE_BASE[fileName];
366
+ return knowledge?.priority || 10;
367
+ }
368
+ detectFrameworks(fileName, content) {
369
+ const frameworks = [];
370
+ if (content.includes('svelte') || content.includes('@sveltejs'))
371
+ frameworks.push('Svelte');
372
+ if (content.includes('react') || content.includes('React'))
373
+ frameworks.push('React');
374
+ if (content.includes('vue') || content.includes('Vue'))
375
+ frameworks.push('Vue');
376
+ return frameworks;
377
+ }
378
+ /**
379
+ * STAGE 4: ANALYZE - Generate final intelligence report
380
+ */
381
+ analyzeResults(results) {
382
+ const totalIntelligenceScore = results.reduce((sum, r) => sum + (r.score || r.priority || 0), 0);
383
+ // Extract context from results
384
+ const extractedContext = {};
385
+ const slotFillRecommendations = {};
386
+ // Process package.json intelligence
387
+ const packageJson = results.find(r => r.formatType === 'package.json');
388
+ if (packageJson?.intelligence) {
389
+ extractedContext.projectName = packageJson.intelligence.name;
390
+ extractedContext.projectGoal = packageJson.intelligence.description;
391
+ extractedContext.dependencies = packageJson.intelligence.dependencies;
392
+ extractedContext.frameworks = packageJson.intelligence.frameworks;
393
+ extractedContext.hasTests = packageJson.intelligence.hasTests;
394
+ extractedContext.hasBuild = packageJson.intelligence.hasBuild;
395
+ extractedContext.hasTypeScript = packageJson.intelligence.hasTypeScript;
396
+ // Generate slot recommendations
397
+ if (packageJson.intelligence.hasTypeScript) {
398
+ slotFillRecommendations.mainLanguage = 'TypeScript';
399
+ }
400
+ if (packageJson.intelligence.frameworks?.length > 0) {
401
+ slotFillRecommendations.framework = packageJson.intelligence.frameworks[0];
402
+ }
403
+ }
404
+ // Generate stack signature
405
+ const stackParts = [];
406
+ if (extractedContext.hasTypeScript)
407
+ stackParts.push('typescript');
408
+ else if (packageJson)
409
+ stackParts.push('javascript');
410
+ if (extractedContext.frameworks?.length > 0) {
411
+ stackParts.push(extractedContext.frameworks[0].toLowerCase());
412
+ }
413
+ const stackSignature = stackParts.join('-') || 'unknown-stack';
414
+ return {
415
+ discoveredFormats: results,
416
+ totalIntelligenceScore,
417
+ stackSignature,
418
+ slotFillRecommendations,
419
+ extractedContext
420
+ };
421
+ }
422
+ }
423
+ exports.FabFormatsEngine = FabFormatsEngine;
424
+ //# sourceMappingURL=fab-formats-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fab-formats-engine.js","sourceRoot":"","sources":["../../src/utils/fab-formats-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 🚫 .fafignore Parser
3
+ * Handles exclusion patterns for .faf file generation
4
+ */
5
+ /**
6
+ * Parse .fafignore file and return patterns
7
+ */
8
+ export declare function parseFafIgnore(projectRoot: string): Promise<string[]>;
9
+ /**
10
+ * Check if a file path should be ignored
11
+ */
12
+ export declare function shouldIgnore(filePath: string, patterns: string[]): boolean;
13
+ /**
14
+ * Create a default .fafignore file with helpful comments
15
+ */
16
+ export declare function createDefaultFafIgnore(projectRoot: string): Promise<void>;
17
+ /**
18
+ * Get file size limit for inclusion (default 1MB)
19
+ */
20
+ export declare function getFileSizeLimit(): number;
21
+ //# sourceMappingURL=fafignore-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fafignore-parser.d.ts","sourceRoot":"","sources":["../../src/utils/fafignore-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmEH;;GAEG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAwB3E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CA8B1E;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ /**
3
+ * 🚫 .fafignore Parser
4
+ * Handles exclusion patterns for .faf file generation
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.parseFafIgnore = parseFafIgnore;
11
+ exports.shouldIgnore = shouldIgnore;
12
+ exports.createDefaultFafIgnore = createDefaultFafIgnore;
13
+ exports.getFileSizeLimit = getFileSizeLimit;
14
+ const fs_1 = require("fs");
15
+ const path_1 = __importDefault(require("path"));
16
+ const file_utils_1 = require("./file-utils");
17
+ /**
18
+ * Default patterns to always exclude
19
+ * These are common directories/files that shouldn't be in AI context
20
+ */
21
+ const DEFAULT_IGNORE_PATTERNS = [
22
+ // JavaScript/Node
23
+ "node_modules/",
24
+ "dist/",
25
+ "build/",
26
+ "coverage/",
27
+ ".next/",
28
+ ".nuxt/",
29
+ "out/",
30
+ // Python
31
+ "__pycache__/",
32
+ "*.pyc",
33
+ ".venv/",
34
+ "venv/",
35
+ ".pytest_cache/",
36
+ ".mypy_cache/",
37
+ // Version Control
38
+ ".git/",
39
+ ".svn/",
40
+ ".hg/",
41
+ // IDE/Editor
42
+ ".vscode/",
43
+ ".idea/",
44
+ "*.swp",
45
+ ".DS_Store",
46
+ // Sensitive files
47
+ ".env",
48
+ ".env.*",
49
+ "*.key",
50
+ "*.pem",
51
+ "*.cert",
52
+ // Logs and temp
53
+ "*.log",
54
+ "logs/",
55
+ "tmp/",
56
+ "temp/",
57
+ // Package files
58
+ "*.tgz",
59
+ "*.tar.gz",
60
+ "*.zip",
61
+ // Media files (usually not needed for code context)
62
+ "*.jpg",
63
+ "*.jpeg",
64
+ "*.png",
65
+ "*.gif",
66
+ "*.mp4",
67
+ "*.mov",
68
+ "*.avi",
69
+ ];
70
+ /**
71
+ * Parse .fafignore file and return patterns
72
+ */
73
+ async function parseFafIgnore(projectRoot) {
74
+ const fafIgnorePath = path_1.default.join(projectRoot, ".fafignore");
75
+ // Start with default patterns
76
+ let patterns = [...DEFAULT_IGNORE_PATTERNS];
77
+ // Check if .fafignore exists
78
+ if (await (0, file_utils_1.fileExists)(fafIgnorePath)) {
79
+ try {
80
+ const content = await fs_1.promises.readFile(fafIgnorePath, "utf-8");
81
+ const userPatterns = content
82
+ .split("\n")
83
+ .map((line) => line.trim())
84
+ .filter((line) => line && !line.startsWith("#")); // Remove empty lines and comments
85
+ // Add user patterns
86
+ patterns = [...patterns, ...userPatterns];
87
+ }
88
+ catch {
89
+ console.warn("Warning: Could not read .fafignore file");
90
+ }
91
+ }
92
+ // Remove duplicates
93
+ return [...new Set(patterns)];
94
+ }
95
+ /**
96
+ * Check if a file path should be ignored
97
+ */
98
+ function shouldIgnore(filePath, patterns) {
99
+ const normalizedPath = filePath.replace(/\\/g, "/");
100
+ for (const pattern of patterns) {
101
+ // Handle directory patterns (ending with /)
102
+ if (pattern.endsWith("/")) {
103
+ const dir = pattern.slice(0, -1);
104
+ if (normalizedPath.includes(`/${dir}/`) ||
105
+ normalizedPath.startsWith(`${dir}/`)) {
106
+ return true;
107
+ }
108
+ }
109
+ // Handle file extension patterns (*.ext)
110
+ if (pattern.startsWith("*.")) {
111
+ const ext = pattern.slice(1);
112
+ if (normalizedPath.endsWith(ext)) {
113
+ return true;
114
+ }
115
+ }
116
+ // Handle exact matches
117
+ if (normalizedPath.includes(pattern) || normalizedPath.endsWith(pattern)) {
118
+ return true;
119
+ }
120
+ }
121
+ return false;
122
+ }
123
+ /**
124
+ * Create a default .fafignore file with helpful comments
125
+ */
126
+ async function createDefaultFafIgnore(projectRoot) {
127
+ const fafIgnorePath = path_1.default.join(projectRoot, ".fafignore");
128
+ const content = `# .fafignore - Exclude files/directories from .faf context
129
+ # Similar to .gitignore syntax
130
+ # Lines starting with # are comments
131
+
132
+ # Dependencies and build outputs
133
+ node_modules/
134
+ dist/
135
+ build/
136
+ coverage/
137
+
138
+ # Python environments
139
+ __pycache__/
140
+ venv/
141
+ .venv/
142
+
143
+ # IDE and system files
144
+ .vscode/
145
+ .idea/
146
+ .DS_Store
147
+
148
+ # Sensitive files
149
+ .env
150
+ .env.*
151
+ *.key
152
+ *.pem
153
+
154
+ # Logs and temporary files
155
+ *.log
156
+ logs/
157
+ tmp/
158
+ temp/
159
+
160
+ # Large media files
161
+ *.jpg
162
+ *.png
163
+ *.mp4
164
+ *.pdf
165
+
166
+ # Custom exclusions (add your own below)
167
+ # example: my-large-data-folder/
168
+ # example: *.generated.ts
169
+ `;
170
+ await fs_1.promises.writeFile(fafIgnorePath, content, "utf-8");
171
+ }
172
+ /**
173
+ * Get file size limit for inclusion (default 1MB)
174
+ */
175
+ function getFileSizeLimit() {
176
+ return 1024 * 1024; // 1MB
177
+ }
178
+ //# sourceMappingURL=fafignore-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fafignore-parser.js","sourceRoot":"","sources":["../../src/utils/fafignore-parser.ts"],"names":[],"mappings":"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"}