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,39 @@
1
+ /**
2
+ * AI-Optimized YAML Generator v2.5.0
3
+ * Generates .faf files with instant AI onboarding structure
4
+ */
5
+ export declare function generateFafContent(projectData: {
6
+ projectName: string;
7
+ projectGoal?: string | undefined;
8
+ mainLanguage: string;
9
+ framework: string;
10
+ cssFramework?: string;
11
+ uiLibrary?: string;
12
+ stateManagement?: string;
13
+ backend: string;
14
+ apiType: string;
15
+ server: string;
16
+ database: string;
17
+ connection: string;
18
+ hosting: string;
19
+ buildTool: string;
20
+ packageManager?: string;
21
+ cicd: string;
22
+ fafScore: number;
23
+ slotBasedPercentage: number;
24
+ targetUser?: string;
25
+ coreProblem?: string;
26
+ missionPurpose?: string;
27
+ deploymentMarket?: string;
28
+ timeline?: string;
29
+ approach?: string;
30
+ additionalWho?: string[];
31
+ additionalWhat?: string[];
32
+ additionalWhy?: string[];
33
+ additionalWhere?: string[];
34
+ additionalWhen?: string[];
35
+ additionalHow?: string[];
36
+ projectDetailsScore?: number;
37
+ projectSuccessRate?: number;
38
+ }): string;
39
+ //# sourceMappingURL=yaml-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-generator.d.ts","sourceRoot":"","sources":["../../src/utils/yaml-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwJH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAE5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,MAAM,CA2KT"}
@@ -0,0 +1,345 @@
1
+ "use strict";
2
+ /**
3
+ * AI-Optimized YAML Generator v2.5.0
4
+ * Generates .faf files with instant AI onboarding structure
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.generateFafContent = generateFafContent;
8
+ // Helper function to generate stack string
9
+ function generateStackString(data) {
10
+ const parts = [];
11
+ if (data.framework && data.framework !== 'None') {
12
+ parts.push(data.framework);
13
+ }
14
+ if (data.mainLanguage && data.mainLanguage !== 'Unknown') {
15
+ parts.push(data.mainLanguage);
16
+ }
17
+ if (data.buildTool && data.buildTool !== 'None') {
18
+ parts.push(data.buildTool);
19
+ }
20
+ if (data.hosting && data.hosting !== 'None') {
21
+ parts.push(data.hosting);
22
+ }
23
+ if (data.backend && data.backend !== 'None') {
24
+ parts.push(data.backend);
25
+ }
26
+ return parts.join('/') || 'Not specified';
27
+ }
28
+ // Helper function to determine confidence level
29
+ function getConfidenceLevel(percentage) {
30
+ if (percentage >= 90) {
31
+ return 'VERY_HIGH';
32
+ }
33
+ if (percentage >= 80) {
34
+ return 'HIGH';
35
+ }
36
+ if (percentage >= 70) {
37
+ return 'GOOD';
38
+ }
39
+ if (percentage >= 60) {
40
+ return 'MODERATE';
41
+ }
42
+ return 'LOW';
43
+ }
44
+ // Helper function to safely escape YAML values
45
+ function escapeForYaml(value) {
46
+ if (!value) {
47
+ return 'Not specified';
48
+ }
49
+ // Clean up markdown-style lists and formatting
50
+ const cleaned = value
51
+ .replace(/^[\s]*[-*]\s*/gm, '') // Remove list markers
52
+ .replace(/\*\*(.+?)\*\*/g, '$1') // Remove bold
53
+ .replace(/\*(.+?)\*/g, '$1') // Remove italic
54
+ .replace(/\n+/g, ' ') // Replace newlines with spaces
55
+ .trim();
56
+ // If it contains special characters or starts with special chars, quote it
57
+ if (cleaned.includes(':') || cleaned.includes('-') || cleaned.includes('[') ||
58
+ cleaned.includes('#') || cleaned.includes('|') || cleaned.includes('>') ||
59
+ cleaned.match(/^[\d\-[\]{}]/)) {
60
+ return `"${cleaned.replace(/"/g, '\\"')}"`;
61
+ }
62
+ return cleaned;
63
+ }
64
+ // Helper function to detect key files
65
+ function detectKeyFiles(data) {
66
+ const files = [];
67
+ // Based on framework
68
+ if (data.framework?.toLowerCase().includes('svelte')) {
69
+ files.push('+page.svelte', '+layout.svelte', 'app.html');
70
+ }
71
+ else if (data.framework?.toLowerCase().includes('react')) {
72
+ files.push('App.tsx', 'index.tsx');
73
+ }
74
+ else if (data.framework?.toLowerCase().includes('vue')) {
75
+ files.push('App.vue', 'main.ts');
76
+ }
77
+ else if (data.mainLanguage?.toLowerCase().includes('python')) {
78
+ files.push('main.py', 'requirements.txt');
79
+ }
80
+ // 🐍 PYTHON CONTEXT-ON-DEMAND: Add appropriate config files
81
+ if (!data.mainLanguage?.toLowerCase().includes('python')) {
82
+ // Only add JS/TS files for non-Python projects
83
+ files.push('package.json', 'tsconfig.json');
84
+ }
85
+ return files.slice(0, 5); // Max 5 files
86
+ }
87
+ // Generate project tags
88
+ function generateProjectTags(projectData) {
89
+ const autoTags = new Set();
90
+ // From project name
91
+ if (projectData.projectName) {
92
+ const cleanName = projectData.projectName.toLowerCase()
93
+ .replace(/[^a-z0-9\s-]/g, '')
94
+ .replace(/\s+/g, '-')
95
+ .substring(0, 30);
96
+ if (cleanName) {
97
+ autoTags.add(cleanName);
98
+ }
99
+ }
100
+ // From tech stack
101
+ if (projectData.framework) {
102
+ autoTags.add(projectData.framework.toLowerCase().replace(/\s+/g, '-'));
103
+ }
104
+ if (projectData.mainLanguage) {
105
+ autoTags.add(projectData.mainLanguage.toLowerCase().replace(/\s+/g, '-'));
106
+ }
107
+ if (projectData.buildTool) {
108
+ autoTags.add(projectData.buildTool.toLowerCase().replace(/\s+/g, '-'));
109
+ }
110
+ if (projectData.hosting) {
111
+ autoTags.add(projectData.hosting.toLowerCase().replace(/\s+/g, '-'));
112
+ }
113
+ if (projectData.backend) {
114
+ autoTags.add(projectData.backend.toLowerCase().replace(/\s+/g, '-'));
115
+ }
116
+ // Remove empty tags
117
+ autoTags.delete('');
118
+ autoTags.delete('-');
119
+ const year = new Date().getFullYear().toString();
120
+ const smartTags = [
121
+ '.faf', // ALWAYS - Ecosystem builder!
122
+ 'ai-ready', // ALWAYS - We're AI-optimized
123
+ year, // Current year for freshness
124
+ ];
125
+ // Smart category detection
126
+ if (projectData.projectGoal?.toLowerCase().includes('api') || projectData.framework?.toLowerCase().includes('express')) {
127
+ smartTags.push('backend-api');
128
+ }
129
+ else if (projectData.framework?.toLowerCase().match(/react|vue|svelte|angular/)) {
130
+ smartTags.push('web-app');
131
+ }
132
+ else if (projectData.projectGoal?.toLowerCase().includes('library')) {
133
+ smartTags.push('dev-tools');
134
+ }
135
+ else {
136
+ smartTags.push('software');
137
+ }
138
+ // License/sharing detection (simplified for now)
139
+ smartTags.push('open-source'); // Default to open-source for community
140
+ return {
141
+ auto_generated: Array.from(autoTags).slice(0, 21),
142
+ smart_defaults: smartTags,
143
+ user_defined: []
144
+ };
145
+ }
146
+ /**
147
+ * Convert JavaScript object to YAML format
148
+ */
149
+ function objectToYaml(obj, indent = 0) {
150
+ let yaml = '';
151
+ const spacing = ' '.repeat(indent);
152
+ for (const [key, value] of Object.entries(obj)) {
153
+ if (value === null || value === undefined) {
154
+ continue;
155
+ }
156
+ if (typeof value === 'object' && !Array.isArray(value)) {
157
+ yaml += `${spacing}${key}:\n`;
158
+ yaml += objectToYaml(value, indent + 1);
159
+ }
160
+ else if (Array.isArray(value)) {
161
+ yaml += `${spacing}${key}:\n`;
162
+ for (const item of value) {
163
+ yaml += `${spacing} - ${item}\n`;
164
+ }
165
+ }
166
+ else {
167
+ // Escape YAML special characters and long strings
168
+ let escapedValue = value;
169
+ if (typeof value === 'string') {
170
+ // Quote strings that start with @, contain :, or are very long
171
+ if (value.startsWith('@') || value.includes(': ') || value.length > 80) {
172
+ escapedValue = `"${value.replace(/"/g, '\\"')}"`;
173
+ }
174
+ }
175
+ yaml += `${spacing}${key}: ${escapedValue}\n`;
176
+ }
177
+ }
178
+ return yaml;
179
+ }
180
+ function generateFafContent(projectData) {
181
+ // Calculate filled vs total slots for missing context
182
+ const totalSlotsCount = 21; // Base slots
183
+ const filledSlotsCount = Math.round((projectData.slotBasedPercentage / 100) * totalSlotsCount);
184
+ const missingSlots = [];
185
+ if (!projectData.targetUser) {
186
+ missingSlots.push('Target users');
187
+ }
188
+ if (!projectData.coreProblem) {
189
+ missingSlots.push('Core problem');
190
+ }
191
+ if (!projectData.timeline) {
192
+ missingSlots.push('Timeline');
193
+ }
194
+ if (!projectData.cicd || projectData.cicd === 'None') {
195
+ missingSlots.push('CI/CD pipeline');
196
+ }
197
+ if (!projectData.database || projectData.database === 'None') {
198
+ missingSlots.push('Database');
199
+ }
200
+ const fafData = {
201
+ // 🧡⚡️ .faf Format v2.0 - The JPEG for AI™
202
+ version: '2.0',
203
+ tagline: 'The JPEG for AI',
204
+ generated: new Date().toISOString(),
205
+ // 🤖 AI-FIRST SCORING SYSTEM - The Secret Sauce
206
+ ai_scoring_system: new Date().toISOString().split('T')[0],
207
+ ai_score: `${projectData.fafScore}%`, // Current readiness
208
+ ai_confidence: getConfidenceLevel(projectData.fafScore), // Trust level
209
+ ai_value: '30_seconds_replaces_20_minutes_of_questions',
210
+ // 🧠 AI READ THIS FIRST - 5-LINE TL;DR
211
+ ai_tldr: {
212
+ project: `${projectData.projectName} - ${escapeForYaml(projectData.projectGoal) || 'Universal AI-context Infrastructure - Make Your AI Happy! 🤖'}`,
213
+ stack: generateStackString(projectData),
214
+ quality_bar: 'ZERO_ERRORS_F1_STANDARDS',
215
+ current_focus: 'Production deployment preparation',
216
+ your_role: 'Build features with perfect context'
217
+ },
218
+ // ⚡ INSTANT CONTEXT - Everything critical in one place
219
+ instant_context: {
220
+ what_building: projectData.projectGoal ? escapeForYaml(projectData.projectGoal) : '🚀 Universal AI-context CLI - Trust-Driven Infrastructure that eliminates developer anxiety',
221
+ tech_stack: generateStackString(projectData),
222
+ main_language: projectData.mainLanguage || 'TypeScript',
223
+ deployment: projectData.hosting || 'Cloud platform',
224
+ key_files: detectKeyFiles(projectData)
225
+ },
226
+ // 📊 CONTEXT QUALITY METRICS
227
+ context_quality: {
228
+ slots_filled: `${filledSlotsCount}/${totalSlotsCount} (${projectData.slotBasedPercentage}%)`,
229
+ ai_confidence: getConfidenceLevel(projectData.slotBasedPercentage),
230
+ handoff_ready: projectData.slotBasedPercentage > 70,
231
+ missing_context: missingSlots.length > 0 ? missingSlots : ['None - fully specified!']
232
+ },
233
+ // 📄 Project Details (Progressive Disclosure)
234
+ project: {
235
+ name: projectData.projectName || 'Untitled Project',
236
+ goal: projectData.projectGoal ? escapeForYaml(projectData.projectGoal) : '⚡️ Transform developer psychology from hope-driven to trust-driven AI development - 30 seconds replaces 20 minutes of questions',
237
+ main_language: projectData.mainLanguage || 'Unknown',
238
+ generated: new Date().toISOString(),
239
+ mission: '🚀 Make Your AI Happy! 🧡 Trust-Driven 🤖',
240
+ revolution: '30 seconds replaces 20 minutes of questions',
241
+ brand: 'F1-Inspired Software Engineering - Championship AI Context'
242
+ },
243
+ // 🧠 AI OPERATING INSTRUCTIONS
244
+ ai_instructions: {
245
+ priority_order: [
246
+ '1. Read THIS .faf file first',
247
+ '2. Check CLAUDE.md for session context',
248
+ projectData.mainLanguage?.toLowerCase().includes('python')
249
+ ? '3. Review requirements.txt and main.py for dependencies'
250
+ : '3. Review package.json for dependencies'
251
+ ],
252
+ working_style: {
253
+ code_first: true,
254
+ explanations: 'minimal',
255
+ quality_bar: 'zero_errors',
256
+ testing: 'required'
257
+ },
258
+ warnings: [
259
+ 'Never modify dial components without approval',
260
+ 'All TypeScript must pass strict mode',
261
+ 'Test coverage required for new features'
262
+ ]
263
+ },
264
+ // 🏗️ Technical Stack (Full Details)
265
+ stack: {
266
+ frontend: projectData.framework || 'None',
267
+ css_framework: projectData.cssFramework || 'None',
268
+ ui_library: projectData.uiLibrary || 'None',
269
+ state_management: projectData.stateManagement || 'None',
270
+ backend: projectData.backend || 'None',
271
+ runtime: projectData.server || 'None',
272
+ database: projectData.database || 'None',
273
+ build: projectData.buildTool || 'None',
274
+ package_manager: projectData.packageManager || 'npm',
275
+ api_type: projectData.apiType || 'REST API',
276
+ hosting: projectData.hosting || 'None',
277
+ cicd: projectData.cicd || 'None'
278
+ },
279
+ // ⚙️ Development Preferences
280
+ preferences: {
281
+ quality_bar: 'zero_errors',
282
+ commit_style: 'conventional_emoji',
283
+ response_style: 'concise_code_first',
284
+ explanation_level: 'minimal',
285
+ communication: 'direct',
286
+ testing: 'required',
287
+ documentation: 'as_needed'
288
+ },
289
+ // 🚀 Project State
290
+ state: {
291
+ phase: 'development',
292
+ version: '1.0.0',
293
+ focus: 'production_deployment',
294
+ status: 'green_flag',
295
+ next_milestone: 'npm_publication',
296
+ blockers: []
297
+ },
298
+ // 🏷️ Search & Discovery Tags
299
+ tags: generateProjectTags(projectData),
300
+ // 👥 Human Context (The 6 W's)
301
+ human_context: projectData.targetUser || projectData.coreProblem ? {
302
+ who: projectData.targetUser || 'Not specified',
303
+ what: projectData.coreProblem || 'Not specified',
304
+ why: projectData.missionPurpose || 'Not specified',
305
+ where: projectData.deploymentMarket || 'Not specified',
306
+ when: projectData.timeline || 'Not specified',
307
+ how: projectData.approach || 'Not specified',
308
+ additional_context: {
309
+ who: projectData.additionalWho && projectData.additionalWho.length > 0 ? projectData.additionalWho : undefined,
310
+ what: projectData.additionalWhat && projectData.additionalWhat.length > 0 ? projectData.additionalWhat : undefined,
311
+ why: projectData.additionalWhy && projectData.additionalWhy.length > 0 ? projectData.additionalWhy : undefined,
312
+ where: projectData.additionalWhere && projectData.additionalWhere.length > 0 ? projectData.additionalWhere : undefined,
313
+ when: projectData.additionalWhen && projectData.additionalWhen.length > 0 ? projectData.additionalWhen : undefined,
314
+ how: projectData.additionalHow && projectData.additionalHow.length > 0 ? projectData.additionalHow : undefined
315
+ },
316
+ context_score: projectData.projectDetailsScore || 0,
317
+ total_prd_score: (projectData.projectDetailsScore || 0) + (projectData.fafScore || 0),
318
+ success_rate: `${projectData.projectSuccessRate || 50}%`
319
+ } : undefined,
320
+ // 📊 AI Scoring Details (For Transparency)
321
+ ai_scoring_details: {
322
+ system_date: '2025-08-30', // When MY scoring logic went live
323
+ slot_based_percentage: projectData.slotBasedPercentage,
324
+ ai_score: projectData.fafScore,
325
+ total_slots: 21,
326
+ filled_slots: filledSlotsCount,
327
+ scoring_method: 'Honest percentage - no fake minimums',
328
+ trust_embedded: 'COUNT ONCE architecture - trust MY embedded scores'
329
+ }
330
+ };
331
+ // Use native YAML library and fix any !CI placeholder issues
332
+ const yamlContent = objectToYaml(fafData);
333
+ // Championship fix: Replace !CI placeholders with revolutionary content
334
+ const cleanedContent = yamlContent
335
+ .replace(/what_building: !CI/g, 'what_building: "🚀 Universal AI-context CLI - Trust-Driven Infrastructure that eliminates developer anxiety"')
336
+ .replace(/goal: !CI/g, 'goal: "⚡️ Transform developer psychology from hope-driven to trust-driven AI development - 30 seconds replaces 20 minutes of questions"');
337
+ // Add header comment to identify this as a .faf file
338
+ const header = `# 🧡⚡️ .faf - The JPEG for AI™
339
+ # Generated by faf-cli v2.1.0
340
+ # ${new Date().toISOString()}
341
+
342
+ `;
343
+ return header + cleanedContent;
344
+ }
345
+ //# sourceMappingURL=yaml-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-generator.js","sourceRoot":"","sources":["../../src/utils/yaml-generator.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,96 @@
1
+ {
2
+ "name": "faf-cli",
3
+ "version": "2.1.0",
4
+ "description": "🧡⚡️ .faf - The JPEG for AI™ | Get .faffed → Mirror → Commit | 99% AI-Readiness in 3 steps",
5
+ "icon": "https://faf.one/orange-smiley.svg",
6
+ "logo": "https://faf.one/orange-smiley.svg",
7
+ "main": "dist/index.js",
8
+ "bin": {
9
+ "faf": "dist/cli.js"
10
+ },
11
+ "files": [
12
+ "dist/**/*",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "scripts": {
17
+ "clean": "find src tests -name '*.js' -o -name '*.js.map' -o -name '*.d.ts' -o -name '*.d.ts.map' | xargs rm -f",
18
+ "clean:cache": "rm -rf node_modules/.cache && jest --clearCache",
19
+ "build": "npm run clean && tsc",
20
+ "dev": "ts-node src/cli.ts",
21
+ "pretest": "npm run clean",
22
+ "test": "jest",
23
+ "test:clean": "npm run clean && npm run clean:cache && npm test",
24
+ "test:watch": "jest --watch",
25
+ "test:coverage": "jest --coverage",
26
+ "test:audit": "jest src/tests/faf-edge-case-audit.test.ts --verbose",
27
+ "test:audit-watch": "jest src/tests/faf-edge-case-audit.test.ts --watch --verbose",
28
+ "lint": "eslint src/**/*.ts",
29
+ "format": "prettier --write src/**/*.ts",
30
+ "emoji:check": "bash .githooks/pre-commit-emoji-check.sh",
31
+ "emoji:audit": "(grep -r '🎯\\|✅' src/ | grep -v 'FORBIDDEN' || echo '☑️ No forbidden emojis found!')",
32
+ "prepare": "npm run build && npm run test:audit",
33
+ "docs:generate": "ts-node scripts/generate-docs.ts",
34
+ "docs:build": "cd docs-site && npm run build",
35
+ "docs:dev": "cd docs-site && npm run dev",
36
+ "docs:deploy": "cd docs-site && vercel --prod",
37
+ "docs:preview": "cd docs-site && vercel",
38
+ "release": "ts-node scripts/prepare-release.ts",
39
+ "release:patch": "npm run release -- --type patch",
40
+ "release:minor": "npm run release -- --type minor",
41
+ "release:major": "npm run release -- --type major",
42
+ "release:beta": "npm run release -- --type prerelease --preid beta",
43
+ "release:dry": "npm run release -- --dry-run",
44
+ "performance": "ts-node scripts/performance-validation.ts",
45
+ "performance:ci": "npm run performance -- --tests status,help,index",
46
+ "performance:full": "npm run performance -- --verbose",
47
+ "version:update": "node scripts/update-version.js",
48
+ "version:check": "node scripts/check-version.js",
49
+ "precommit": "npm run version:check"
50
+ },
51
+ "keywords": [
52
+ "faf",
53
+ "anti-faff",
54
+ "ai-context",
55
+ "cli",
56
+ "dna-lifecycle",
57
+ "disaster-recovery",
58
+ "championship",
59
+ "fast-af",
60
+ "validation",
61
+ "project-context",
62
+ "stop-faffing",
63
+ "developer-productivity",
64
+ "claude",
65
+ "chatgpt",
66
+ "gemini"
67
+ ],
68
+ "author": "🏎️⚡️_wolfejam.dev",
69
+ "license": "MIT",
70
+ "dependencies": {
71
+ "chalk": "^4.1.2",
72
+ "yaml": "^2.4.1"
73
+ },
74
+ "devDependencies": {
75
+ "@types/glob": "^8.1.0",
76
+ "@types/inquirer": "^9.0.9",
77
+ "@types/jest": "^29.5.14",
78
+ "@types/node": "^20.11.17",
79
+ "@typescript-eslint/eslint-plugin": "^8.41.0",
80
+ "@typescript-eslint/parser": "^8.41.0",
81
+ "eslint": "^8.56.0",
82
+ "glob": "^8.1.0",
83
+ "inquirer": "^12.9.4",
84
+ "jest": "^29.7.0",
85
+ "prettier": "^3.2.5",
86
+ "ts-jest": "^29.4.1",
87
+ "ts-node": "^10.9.2",
88
+ "typescript": "^5.3.3"
89
+ },
90
+ "engines": {
91
+ "node": ">=14.0.0"
92
+ },
93
+ "publishConfig": {
94
+ "access": "public"
95
+ }
96
+ }