faf-cli 5.2.0 → 6.0.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 (731) hide show
  1. package/README.md +80 -52
  2. package/dist/cli.js +313 -1884
  3. package/dist/index.js +4 -46
  4. package/package.json +27 -103
  5. package/project.faf +33 -141
  6. package/assets/project-faf-screenshot.png +0 -0
  7. package/dist/big-orange/bigo-push.d.ts +0 -18
  8. package/dist/big-orange/bigo-push.d.ts.map +0 -1
  9. package/dist/big-orange/bigo-push.js +0 -88
  10. package/dist/big-orange/bigo-push.js.map +0 -1
  11. package/dist/big-orange/compare.d.ts +0 -11
  12. package/dist/big-orange/compare.d.ts.map +0 -1
  13. package/dist/big-orange/compare.js +0 -179
  14. package/dist/big-orange/compare.js.map +0 -1
  15. package/dist/big-orange/faf-generator.d.ts +0 -22
  16. package/dist/big-orange/faf-generator.d.ts.map +0 -1
  17. package/dist/big-orange/faf-generator.js +0 -215
  18. package/dist/big-orange/faf-generator.js.map +0 -1
  19. package/dist/big-orange/index.d.ts +0 -7
  20. package/dist/big-orange/index.d.ts.map +0 -1
  21. package/dist/big-orange/index.js +0 -96
  22. package/dist/big-orange/index.js.map +0 -1
  23. package/dist/big-orange/types.d.ts +0 -62
  24. package/dist/big-orange/types.d.ts.map +0 -1
  25. package/dist/big-orange/types.js +0 -7
  26. package/dist/big-orange/types.js.map +0 -1
  27. package/dist/cli.d.ts +0 -8
  28. package/dist/cli.d.ts.map +0 -1
  29. package/dist/cli.js.map +0 -1
  30. package/dist/commands/agents.d.ts +0 -14
  31. package/dist/commands/agents.d.ts.map +0 -1
  32. package/dist/commands/agents.js +0 -353
  33. package/dist/commands/agents.js.map +0 -1
  34. package/dist/commands/ai-analyze.d.ts +0 -18
  35. package/dist/commands/ai-analyze.d.ts.map +0 -1
  36. package/dist/commands/ai-analyze.js +0 -190
  37. package/dist/commands/ai-analyze.js.map +0 -1
  38. package/dist/commands/ai-enhance.d.ts +0 -17
  39. package/dist/commands/ai-enhance.d.ts.map +0 -1
  40. package/dist/commands/ai-enhance.js +0 -275
  41. package/dist/commands/ai-enhance.js.map +0 -1
  42. package/dist/commands/antigravity.d.ts +0 -16
  43. package/dist/commands/antigravity.d.ts.map +0 -1
  44. package/dist/commands/antigravity.js +0 -398
  45. package/dist/commands/antigravity.js.map +0 -1
  46. package/dist/commands/audit.d.ts +0 -11
  47. package/dist/commands/audit.d.ts.map +0 -1
  48. package/dist/commands/audit.js +0 -148
  49. package/dist/commands/audit.js.map +0 -1
  50. package/dist/commands/auto.d.ts +0 -27
  51. package/dist/commands/auto.d.ts.map +0 -1
  52. package/dist/commands/auto.js +0 -498
  53. package/dist/commands/auto.js.map +0 -1
  54. package/dist/commands/bi-sync.d.ts +0 -50
  55. package/dist/commands/bi-sync.d.ts.map +0 -1
  56. package/dist/commands/bi-sync.js +0 -307
  57. package/dist/commands/bi-sync.js.map +0 -1
  58. package/dist/commands/chat.d.ts +0 -7
  59. package/dist/commands/chat.d.ts.map +0 -1
  60. package/dist/commands/chat.js +0 -415
  61. package/dist/commands/chat.js.map +0 -1
  62. package/dist/commands/check.d.ts +0 -31
  63. package/dist/commands/check.d.ts.map +0 -1
  64. package/dist/commands/check.js +0 -301
  65. package/dist/commands/check.js.map +0 -1
  66. package/dist/commands/clear.d.ts +0 -15
  67. package/dist/commands/clear.d.ts.map +0 -1
  68. package/dist/commands/clear.js +0 -167
  69. package/dist/commands/clear.js.map +0 -1
  70. package/dist/commands/compile.d.ts +0 -12
  71. package/dist/commands/compile.d.ts.map +0 -1
  72. package/dist/commands/compile.js +0 -51
  73. package/dist/commands/compile.js.map +0 -1
  74. package/dist/commands/conductor.d.ts +0 -15
  75. package/dist/commands/conductor.d.ts.map +0 -1
  76. package/dist/commands/conductor.js +0 -339
  77. package/dist/commands/conductor.js.map +0 -1
  78. package/dist/commands/convert.d.ts +0 -19
  79. package/dist/commands/convert.d.ts.map +0 -1
  80. package/dist/commands/convert.js +0 -99
  81. package/dist/commands/convert.js.map +0 -1
  82. package/dist/commands/credit.d.ts +0 -13
  83. package/dist/commands/credit.d.ts.map +0 -1
  84. package/dist/commands/credit.js +0 -149
  85. package/dist/commands/credit.js.map +0 -1
  86. package/dist/commands/cursor.d.ts +0 -13
  87. package/dist/commands/cursor.d.ts.map +0 -1
  88. package/dist/commands/cursor.js +0 -310
  89. package/dist/commands/cursor.js.map +0 -1
  90. package/dist/commands/decompile.d.ts +0 -9
  91. package/dist/commands/decompile.d.ts.map +0 -1
  92. package/dist/commands/decompile.js +0 -21
  93. package/dist/commands/decompile.js.map +0 -1
  94. package/dist/commands/demo.d.ts +0 -20
  95. package/dist/commands/demo.d.ts.map +0 -1
  96. package/dist/commands/demo.js +0 -205
  97. package/dist/commands/demo.js.map +0 -1
  98. package/dist/commands/doctor.d.ts +0 -6
  99. package/dist/commands/doctor.d.ts.map +0 -1
  100. package/dist/commands/doctor.js +0 -230
  101. package/dist/commands/doctor.js.map +0 -1
  102. package/dist/commands/drift.d.ts +0 -16
  103. package/dist/commands/drift.d.ts.map +0 -1
  104. package/dist/commands/drift.js +0 -524
  105. package/dist/commands/drift.js.map +0 -1
  106. package/dist/commands/edit-helper.d.ts +0 -6
  107. package/dist/commands/edit-helper.d.ts.map +0 -1
  108. package/dist/commands/edit-helper.js +0 -52
  109. package/dist/commands/edit-helper.js.map +0 -1
  110. package/dist/commands/edit.d.ts +0 -14
  111. package/dist/commands/edit.d.ts.map +0 -1
  112. package/dist/commands/edit.js +0 -196
  113. package/dist/commands/edit.js.map +0 -1
  114. package/dist/commands/enhance-real.d.ts +0 -18
  115. package/dist/commands/enhance-real.d.ts.map +0 -1
  116. package/dist/commands/enhance-real.js +0 -1164
  117. package/dist/commands/enhance-real.js.map +0 -1
  118. package/dist/commands/faf-auth.d.ts +0 -10
  119. package/dist/commands/faf-auth.d.ts.map +0 -1
  120. package/dist/commands/faf-auth.js +0 -162
  121. package/dist/commands/faf-auth.js.map +0 -1
  122. package/dist/commands/faf-dna.d.ts +0 -9
  123. package/dist/commands/faf-dna.d.ts.map +0 -1
  124. package/dist/commands/faf-dna.js +0 -141
  125. package/dist/commands/faf-dna.js.map +0 -1
  126. package/dist/commands/faf-log.d.ts +0 -9
  127. package/dist/commands/faf-log.d.ts.map +0 -1
  128. package/dist/commands/faf-log.js +0 -135
  129. package/dist/commands/faf-log.js.map +0 -1
  130. package/dist/commands/faf-recover.d.ts +0 -3
  131. package/dist/commands/faf-recover.d.ts.map +0 -1
  132. package/dist/commands/faf-recover.js +0 -296
  133. package/dist/commands/faf-recover.js.map +0 -1
  134. package/dist/commands/faf-update.d.ts +0 -9
  135. package/dist/commands/faf-update.d.ts.map +0 -1
  136. package/dist/commands/faf-update.js +0 -68
  137. package/dist/commands/faf-update.js.map +0 -1
  138. package/dist/commands/fam.d.ts +0 -15
  139. package/dist/commands/fam.d.ts.map +0 -1
  140. package/dist/commands/fam.js +0 -339
  141. package/dist/commands/fam.js.map +0 -1
  142. package/dist/commands/faq.d.ts +0 -12
  143. package/dist/commands/faq.d.ts.map +0 -1
  144. package/dist/commands/faq.js +0 -84
  145. package/dist/commands/faq.js.map +0 -1
  146. package/dist/commands/formats.d.ts +0 -12
  147. package/dist/commands/formats.d.ts.map +0 -1
  148. package/dist/commands/formats.js +0 -107
  149. package/dist/commands/formats.js.map +0 -1
  150. package/dist/commands/gemini.d.ts +0 -15
  151. package/dist/commands/gemini.d.ts.map +0 -1
  152. package/dist/commands/gemini.js +0 -357
  153. package/dist/commands/gemini.js.map +0 -1
  154. package/dist/commands/git.d.ts +0 -25
  155. package/dist/commands/git.d.ts.map +0 -1
  156. package/dist/commands/git.js +0 -365
  157. package/dist/commands/git.js.map +0 -1
  158. package/dist/commands/go.d.ts +0 -23
  159. package/dist/commands/go.d.ts.map +0 -1
  160. package/dist/commands/go.js +0 -283
  161. package/dist/commands/go.js.map +0 -1
  162. package/dist/commands/human.d.ts +0 -19
  163. package/dist/commands/human.d.ts.map +0 -1
  164. package/dist/commands/human.js +0 -204
  165. package/dist/commands/human.js.map +0 -1
  166. package/dist/commands/index.d.ts +0 -26
  167. package/dist/commands/index.d.ts.map +0 -1
  168. package/dist/commands/index.js +0 -438
  169. package/dist/commands/index.js.map +0 -1
  170. package/dist/commands/init.d.ts +0 -19
  171. package/dist/commands/init.d.ts.map +0 -1
  172. package/dist/commands/init.js +0 -409
  173. package/dist/commands/init.js.map +0 -1
  174. package/dist/commands/lint.d.ts +0 -11
  175. package/dist/commands/lint.d.ts.map +0 -1
  176. package/dist/commands/lint.js +0 -233
  177. package/dist/commands/lint.js.map +0 -1
  178. package/dist/commands/memory.d.ts +0 -14
  179. package/dist/commands/memory.d.ts.map +0 -1
  180. package/dist/commands/memory.js +0 -293
  181. package/dist/commands/memory.js.map +0 -1
  182. package/dist/commands/migrate.d.ts +0 -11
  183. package/dist/commands/migrate.d.ts.map +0 -1
  184. package/dist/commands/migrate.js +0 -85
  185. package/dist/commands/migrate.js.map +0 -1
  186. package/dist/commands/notifications.d.ts +0 -12
  187. package/dist/commands/notifications.d.ts.map +0 -1
  188. package/dist/commands/notifications.js +0 -35
  189. package/dist/commands/notifications.js.map +0 -1
  190. package/dist/commands/plugin-install.d.ts +0 -20
  191. package/dist/commands/plugin-install.d.ts.map +0 -1
  192. package/dist/commands/plugin-install.js +0 -183
  193. package/dist/commands/plugin-install.js.map +0 -1
  194. package/dist/commands/pro.d.ts +0 -10
  195. package/dist/commands/pro.d.ts.map +0 -1
  196. package/dist/commands/pro.js +0 -113
  197. package/dist/commands/pro.js.map +0 -1
  198. package/dist/commands/quick.d.ts +0 -10
  199. package/dist/commands/quick.d.ts.map +0 -1
  200. package/dist/commands/quick.js +0 -207
  201. package/dist/commands/quick.js.map +0 -1
  202. package/dist/commands/ram.d.ts +0 -17
  203. package/dist/commands/ram.d.ts.map +0 -1
  204. package/dist/commands/ram.js +0 -322
  205. package/dist/commands/ram.js.map +0 -1
  206. package/dist/commands/readme.d.ts +0 -21
  207. package/dist/commands/readme.d.ts.map +0 -1
  208. package/dist/commands/readme.js +0 -519
  209. package/dist/commands/readme.js.map +0 -1
  210. package/dist/commands/rename.d.ts +0 -18
  211. package/dist/commands/rename.d.ts.map +0 -1
  212. package/dist/commands/rename.js +0 -212
  213. package/dist/commands/rename.js.map +0 -1
  214. package/dist/commands/score-v3.d.ts +0 -15
  215. package/dist/commands/score-v3.d.ts.map +0 -1
  216. package/dist/commands/score-v3.js +0 -224
  217. package/dist/commands/score-v3.js.map +0 -1
  218. package/dist/commands/score.d.ts +0 -16
  219. package/dist/commands/score.d.ts.map +0 -1
  220. package/dist/commands/score.js +0 -19
  221. package/dist/commands/score.js.map +0 -1
  222. package/dist/commands/search.d.ts +0 -16
  223. package/dist/commands/search.d.ts.map +0 -1
  224. package/dist/commands/search.js +0 -174
  225. package/dist/commands/search.js.map +0 -1
  226. package/dist/commands/share.d.ts +0 -17
  227. package/dist/commands/share.d.ts.map +0 -1
  228. package/dist/commands/share.js +0 -261
  229. package/dist/commands/share.js.map +0 -1
  230. package/dist/commands/show.d.ts +0 -10
  231. package/dist/commands/show.d.ts.map +0 -1
  232. package/dist/commands/show.js +0 -142
  233. package/dist/commands/show.js.map +0 -1
  234. package/dist/commands/sixws.d.ts +0 -6
  235. package/dist/commands/sixws.d.ts.map +0 -1
  236. package/dist/commands/sixws.js +0 -154
  237. package/dist/commands/sixws.js.map +0 -1
  238. package/dist/commands/skills.d.ts +0 -8
  239. package/dist/commands/skills.d.ts.map +0 -1
  240. package/dist/commands/skills.js +0 -43
  241. package/dist/commands/skills.js.map +0 -1
  242. package/dist/commands/stacks.d.ts +0 -51
  243. package/dist/commands/stacks.d.ts.map +0 -1
  244. package/dist/commands/stacks.js +0 -180
  245. package/dist/commands/stacks.js.map +0 -1
  246. package/dist/commands/status.d.ts +0 -14
  247. package/dist/commands/status.d.ts.map +0 -1
  248. package/dist/commands/status.js +0 -210
  249. package/dist/commands/status.js.map +0 -1
  250. package/dist/commands/sync.d.ts +0 -11
  251. package/dist/commands/sync.d.ts.map +0 -1
  252. package/dist/commands/sync.js +0 -543
  253. package/dist/commands/sync.js.map +0 -1
  254. package/dist/commands/taf-init.d.ts +0 -14
  255. package/dist/commands/taf-init.d.ts.map +0 -1
  256. package/dist/commands/taf-init.js +0 -138
  257. package/dist/commands/taf-init.js.map +0 -1
  258. package/dist/commands/taf-log.d.ts +0 -31
  259. package/dist/commands/taf-log.d.ts.map +0 -1
  260. package/dist/commands/taf-log.js +0 -351
  261. package/dist/commands/taf-log.js.map +0 -1
  262. package/dist/commands/taf-stars.d.ts +0 -8
  263. package/dist/commands/taf-stars.d.ts.map +0 -1
  264. package/dist/commands/taf-stars.js +0 -105
  265. package/dist/commands/taf-stars.js.map +0 -1
  266. package/dist/commands/taf-stats.d.ts +0 -8
  267. package/dist/commands/taf-stats.d.ts.map +0 -1
  268. package/dist/commands/taf-stats.js +0 -133
  269. package/dist/commands/taf-stats.js.map +0 -1
  270. package/dist/commands/taf-validate.d.ts +0 -8
  271. package/dist/commands/taf-validate.d.ts.map +0 -1
  272. package/dist/commands/taf-validate.js +0 -108
  273. package/dist/commands/taf-validate.js.map +0 -1
  274. package/dist/commands/taf.d.ts +0 -14
  275. package/dist/commands/taf.d.ts.map +0 -1
  276. package/dist/commands/taf.js +0 -106
  277. package/dist/commands/taf.js.map +0 -1
  278. package/dist/commands/todo.d.ts +0 -14
  279. package/dist/commands/todo.d.ts.map +0 -1
  280. package/dist/commands/todo.js +0 -282
  281. package/dist/commands/todo.js.map +0 -1
  282. package/dist/commands/trust.d.ts +0 -33
  283. package/dist/commands/trust.d.ts.map +0 -1
  284. package/dist/commands/trust.js +0 -308
  285. package/dist/commands/trust.js.map +0 -1
  286. package/dist/commands/tsa.d.ts +0 -9
  287. package/dist/commands/tsa.d.ts.map +0 -1
  288. package/dist/commands/tsa.js +0 -60
  289. package/dist/commands/tsa.js.map +0 -1
  290. package/dist/commands/validate.d.ts +0 -11
  291. package/dist/commands/validate.d.ts.map +0 -1
  292. package/dist/commands/validate.js +0 -64
  293. package/dist/commands/validate.js.map +0 -1
  294. package/dist/commands/verify.d.ts +0 -36
  295. package/dist/commands/verify.d.ts.map +0 -1
  296. package/dist/commands/verify.js +0 -194
  297. package/dist/commands/verify.js.map +0 -1
  298. package/dist/commands/version.d.ts +0 -5
  299. package/dist/commands/version.d.ts.map +0 -1
  300. package/dist/commands/version.js +0 -29
  301. package/dist/commands/version.js.map +0 -1
  302. package/dist/commands/vibe.d.ts +0 -7
  303. package/dist/commands/vibe.d.ts.map +0 -1
  304. package/dist/commands/vibe.js +0 -73
  305. package/dist/commands/vibe.js.map +0 -1
  306. package/dist/commands/welcome.d.ts +0 -10
  307. package/dist/commands/welcome.d.ts.map +0 -1
  308. package/dist/commands/welcome.js +0 -117
  309. package/dist/commands/welcome.js.map +0 -1
  310. package/dist/commands/yolo.d.ts +0 -12
  311. package/dist/commands/yolo.d.ts.map +0 -1
  312. package/dist/commands/yolo.js +0 -212
  313. package/dist/commands/yolo.js.map +0 -1
  314. package/dist/compiler/faf-compiler.d.ts +0 -176
  315. package/dist/compiler/faf-compiler.d.ts.map +0 -1
  316. package/dist/compiler/faf-compiler.js +0 -1587
  317. package/dist/compiler/faf-compiler.js.map +0 -1
  318. package/dist/converters/faf-converters.d.ts +0 -43
  319. package/dist/converters/faf-converters.d.ts.map +0 -1
  320. package/dist/converters/faf-converters.js +0 -197
  321. package/dist/converters/faf-converters.js.map +0 -1
  322. package/dist/core-extraction-fixes.d.ts +0 -92
  323. package/dist/core-extraction-fixes.d.ts.map +0 -1
  324. package/dist/core-extraction-fixes.js +0 -265
  325. package/dist/core-extraction-fixes.js.map +0 -1
  326. package/dist/engines/art-ansi-renderer.d.ts +0 -335
  327. package/dist/engines/art-ansi-renderer.d.ts.map +0 -1
  328. package/dist/engines/art-ansi-renderer.js +0 -290
  329. package/dist/engines/art-ansi-renderer.js.map +0 -1
  330. package/dist/engines/c-mirror/broadcast/terminal-display.d.ts +0 -23
  331. package/dist/engines/c-mirror/broadcast/terminal-display.d.ts.map +0 -1
  332. package/dist/engines/c-mirror/broadcast/terminal-display.js +0 -194
  333. package/dist/engines/c-mirror/broadcast/terminal-display.js.map +0 -1
  334. package/dist/engines/c-mirror/core/claude-to-faf.d.ts +0 -28
  335. package/dist/engines/c-mirror/core/claude-to-faf.d.ts.map +0 -1
  336. package/dist/engines/c-mirror/core/claude-to-faf.js +0 -195
  337. package/dist/engines/c-mirror/core/claude-to-faf.js.map +0 -1
  338. package/dist/engines/c-mirror/core/events/event-emitter.d.ts +0 -36
  339. package/dist/engines/c-mirror/core/events/event-emitter.d.ts.map +0 -1
  340. package/dist/engines/c-mirror/core/events/event-emitter.js +0 -77
  341. package/dist/engines/c-mirror/core/events/event-emitter.js.map +0 -1
  342. package/dist/engines/c-mirror/core/events/mirror-events.d.ts +0 -103
  343. package/dist/engines/c-mirror/core/events/mirror-events.d.ts.map +0 -1
  344. package/dist/engines/c-mirror/core/events/mirror-events.js +0 -65
  345. package/dist/engines/c-mirror/core/events/mirror-events.js.map +0 -1
  346. package/dist/engines/c-mirror/core/faf-to-claude.d.ts +0 -18
  347. package/dist/engines/c-mirror/core/faf-to-claude.d.ts.map +0 -1
  348. package/dist/engines/c-mirror/core/faf-to-claude.js +0 -162
  349. package/dist/engines/c-mirror/core/faf-to-claude.js.map +0 -1
  350. package/dist/engines/c-mirror/core/interfaces.d.ts +0 -153
  351. package/dist/engines/c-mirror/core/interfaces.d.ts.map +0 -1
  352. package/dist/engines/c-mirror/core/interfaces.js +0 -8
  353. package/dist/engines/c-mirror/core/interfaces.js.map +0 -1
  354. package/dist/engines/c-mirror/core/mirror-engine.d.ts +0 -49
  355. package/dist/engines/c-mirror/core/mirror-engine.d.ts.map +0 -1
  356. package/dist/engines/c-mirror/core/mirror-engine.js +0 -315
  357. package/dist/engines/c-mirror/core/mirror-engine.js.map +0 -1
  358. package/dist/engines/c-mirror/faf-extensions/faf-mirror.d.ts +0 -33
  359. package/dist/engines/c-mirror/faf-extensions/faf-mirror.d.ts.map +0 -1
  360. package/dist/engines/c-mirror/faf-extensions/faf-mirror.js +0 -115
  361. package/dist/engines/c-mirror/faf-extensions/faf-mirror.js.map +0 -1
  362. package/dist/engines/c-mirror/strategies/atomic-write.d.ts +0 -34
  363. package/dist/engines/c-mirror/strategies/atomic-write.d.ts.map +0 -1
  364. package/dist/engines/c-mirror/strategies/atomic-write.js +0 -132
  365. package/dist/engines/c-mirror/strategies/atomic-write.js.map +0 -1
  366. package/dist/engines/claude-todo-engine.d.ts +0 -115
  367. package/dist/engines/claude-todo-engine.d.ts.map +0 -1
  368. package/dist/engines/claude-todo-engine.js +0 -346
  369. package/dist/engines/claude-todo-engine.js.map +0 -1
  370. package/dist/engines/dependency-tsa.d.ts +0 -89
  371. package/dist/engines/dependency-tsa.d.ts.map +0 -1
  372. package/dist/engines/dependency-tsa.js +0 -365
  373. package/dist/engines/dependency-tsa.js.map +0 -1
  374. package/dist/engines/drop-coach.d.ts +0 -64
  375. package/dist/engines/drop-coach.d.ts.map +0 -1
  376. package/dist/engines/drop-coach.js +0 -222
  377. package/dist/engines/drop-coach.js.map +0 -1
  378. package/dist/engines/execution-context.d.ts +0 -75
  379. package/dist/engines/execution-context.d.ts.map +0 -1
  380. package/dist/engines/execution-context.js +0 -308
  381. package/dist/engines/execution-context.js.map +0 -1
  382. package/dist/engines/fab-formats-processor.d.ts +0 -179
  383. package/dist/engines/fab-formats-processor.d.ts.map +0 -1
  384. package/dist/engines/fab-formats-processor.js +0 -1524
  385. package/dist/engines/fab-formats-processor.js.map +0 -1
  386. package/dist/engines/faf-dna.d.ts +0 -160
  387. package/dist/engines/faf-dna.d.ts.map +0 -1
  388. package/dist/engines/faf-dna.js +0 -547
  389. package/dist/engines/faf-dna.js.map +0 -1
  390. package/dist/engines/relentless-context-extractor.d.ts +0 -105
  391. package/dist/engines/relentless-context-extractor.d.ts.map +0 -1
  392. package/dist/engines/relentless-context-extractor.js +0 -698
  393. package/dist/engines/relentless-context-extractor.js.map +0 -1
  394. package/dist/engines/v252-hybrid-engine.d.ts +0 -60
  395. package/dist/engines/v252-hybrid-engine.d.ts.map +0 -1
  396. package/dist/engines/v252-hybrid-engine.js +0 -290
  397. package/dist/engines/v252-hybrid-engine.js.map +0 -1
  398. package/dist/family/detectors/n8n.d.ts +0 -10
  399. package/dist/family/detectors/n8n.d.ts.map +0 -1
  400. package/dist/family/detectors/n8n.js +0 -102
  401. package/dist/family/detectors/n8n.js.map +0 -1
  402. package/dist/family/detectors/next.d.ts +0 -8
  403. package/dist/family/detectors/next.d.ts.map +0 -1
  404. package/dist/family/detectors/next.js +0 -106
  405. package/dist/family/detectors/next.js.map +0 -1
  406. package/dist/family/detectors/react.d.ts +0 -8
  407. package/dist/family/detectors/react.d.ts.map +0 -1
  408. package/dist/family/detectors/react.js +0 -85
  409. package/dist/family/detectors/react.js.map +0 -1
  410. package/dist/family/detectors/svelte.d.ts +0 -8
  411. package/dist/family/detectors/svelte.d.ts.map +0 -1
  412. package/dist/family/detectors/svelte.js +0 -102
  413. package/dist/family/detectors/svelte.js.map +0 -1
  414. package/dist/family/detectors/typescript.d.ts +0 -8
  415. package/dist/family/detectors/typescript.d.ts.map +0 -1
  416. package/dist/family/detectors/typescript.js +0 -112
  417. package/dist/family/detectors/typescript.js.map +0 -1
  418. package/dist/family/detectors/vite.d.ts +0 -8
  419. package/dist/family/detectors/vite.d.ts.map +0 -1
  420. package/dist/family/detectors/vite.js +0 -97
  421. package/dist/family/detectors/vite.js.map +0 -1
  422. package/dist/family/index.d.ts +0 -21
  423. package/dist/family/index.d.ts.map +0 -1
  424. package/dist/family/index.js +0 -73
  425. package/dist/family/index.js.map +0 -1
  426. package/dist/family/registry.d.ts +0 -57
  427. package/dist/family/registry.d.ts.map +0 -1
  428. package/dist/family/registry.js +0 -156
  429. package/dist/family/registry.js.map +0 -1
  430. package/dist/family/types.d.ts +0 -102
  431. package/dist/family/types.d.ts.map +0 -1
  432. package/dist/family/types.js +0 -8
  433. package/dist/family/types.js.map +0 -1
  434. package/dist/fix-once/colors.d.ts +0 -105
  435. package/dist/fix-once/colors.d.ts.map +0 -1
  436. package/dist/fix-once/colors.js +0 -248
  437. package/dist/fix-once/colors.js.map +0 -1
  438. package/dist/fix-once/commander.d.ts +0 -18
  439. package/dist/fix-once/commander.d.ts.map +0 -1
  440. package/dist/fix-once/commander.js +0 -25
  441. package/dist/fix-once/commander.js.map +0 -1
  442. package/dist/fix-once/types.d.ts +0 -258
  443. package/dist/fix-once/types.d.ts.map +0 -1
  444. package/dist/fix-once/types.js +0 -26
  445. package/dist/fix-once/types.js.map +0 -1
  446. package/dist/fix-once/yaml.d.ts +0 -58
  447. package/dist/fix-once/yaml.d.ts.map +0 -1
  448. package/dist/fix-once/yaml.js +0 -172
  449. package/dist/fix-once/yaml.js.map +0 -1
  450. package/dist/framework-detector.d.ts +0 -307
  451. package/dist/framework-detector.d.ts.map +0 -1
  452. package/dist/framework-detector.js +0 -951
  453. package/dist/framework-detector.js.map +0 -1
  454. package/dist/generators/faf-generator-championship.d.ts +0 -17
  455. package/dist/generators/faf-generator-championship.d.ts.map +0 -1
  456. package/dist/generators/faf-generator-championship.js +0 -612
  457. package/dist/generators/faf-generator-championship.js.map +0 -1
  458. package/dist/github/current-score-calculator.d.ts +0 -15
  459. package/dist/github/current-score-calculator.d.ts.map +0 -1
  460. package/dist/github/current-score-calculator.js +0 -125
  461. package/dist/github/current-score-calculator.js.map +0 -1
  462. package/dist/github/faf-git-generator.d.ts +0 -52
  463. package/dist/github/faf-git-generator.d.ts.map +0 -1
  464. package/dist/github/faf-git-generator.js +0 -527
  465. package/dist/github/faf-git-generator.js.map +0 -1
  466. package/dist/github/github-extractor.d.ts +0 -60
  467. package/dist/github/github-extractor.d.ts.map +0 -1
  468. package/dist/github/github-extractor.js +0 -381
  469. package/dist/github/github-extractor.js.map +0 -1
  470. package/dist/github/popular-repos.d.ts +0 -43
  471. package/dist/github/popular-repos.d.ts.map +0 -1
  472. package/dist/github/popular-repos.js +0 -205
  473. package/dist/github/popular-repos.js.map +0 -1
  474. package/dist/github/repo-selector.d.ts +0 -48
  475. package/dist/github/repo-selector.d.ts.map +0 -1
  476. package/dist/github/repo-selector.js +0 -297
  477. package/dist/github/repo-selector.js.map +0 -1
  478. package/dist/index.d.ts +0 -20
  479. package/dist/index.d.ts.map +0 -1
  480. package/dist/index.js.map +0 -1
  481. package/dist/licensing/license-messages.d.ts +0 -20
  482. package/dist/licensing/license-messages.d.ts.map +0 -1
  483. package/dist/licensing/license-messages.js +0 -77
  484. package/dist/licensing/license-messages.js.map +0 -1
  485. package/dist/licensing/pro-gate.d.ts +0 -54
  486. package/dist/licensing/pro-gate.d.ts.map +0 -1
  487. package/dist/licensing/pro-gate.js +0 -243
  488. package/dist/licensing/pro-gate.js.map +0 -1
  489. package/dist/output/experience-manager.d.ts +0 -58
  490. package/dist/output/experience-manager.d.ts.map +0 -1
  491. package/dist/output/experience-manager.js +0 -215
  492. package/dist/output/experience-manager.js.map +0 -1
  493. package/dist/schema/faf-schema.d.ts +0 -97
  494. package/dist/schema/faf-schema.d.ts.map +0 -1
  495. package/dist/schema/faf-schema.js +0 -173
  496. package/dist/schema/faf-schema.js.map +0 -1
  497. package/dist/smart-faf.d.ts +0 -68
  498. package/dist/smart-faf.d.ts.map +0 -1
  499. package/dist/smart-faf.js +0 -400
  500. package/dist/smart-faf.js.map +0 -1
  501. package/dist/systems/question-system.d.ts +0 -122
  502. package/dist/systems/question-system.d.ts.map +0 -1
  503. package/dist/systems/question-system.js +0 -413
  504. package/dist/systems/question-system.js.map +0 -1
  505. package/dist/taf/index.d.ts +0 -21
  506. package/dist/taf/index.d.ts.map +0 -1
  507. package/dist/taf/index.js +0 -72
  508. package/dist/taf/index.js.map +0 -1
  509. package/dist/taf/logger.d.ts +0 -88
  510. package/dist/taf/logger.d.ts.map +0 -1
  511. package/dist/taf/logger.js +0 -137
  512. package/dist/taf/logger.js.map +0 -1
  513. package/dist/taf/parser.d.ts +0 -32
  514. package/dist/taf/parser.d.ts.map +0 -1
  515. package/dist/taf/parser.js +0 -161
  516. package/dist/taf/parser.js.map +0 -1
  517. package/dist/taf/star-badge.d.ts +0 -32
  518. package/dist/taf/star-badge.d.ts.map +0 -1
  519. package/dist/taf/star-badge.js +0 -158
  520. package/dist/taf/star-badge.js.map +0 -1
  521. package/dist/taf/star-rating.d.ts +0 -30
  522. package/dist/taf/star-rating.d.ts.map +0 -1
  523. package/dist/taf/star-rating.js +0 -79
  524. package/dist/taf/star-rating.js.map +0 -1
  525. package/dist/taf/stats.d.ts +0 -31
  526. package/dist/taf/stats.d.ts.map +0 -1
  527. package/dist/taf/stats.js +0 -190
  528. package/dist/taf/stats.js.map +0 -1
  529. package/dist/taf/test-output-parser.d.ts +0 -42
  530. package/dist/taf/test-output-parser.d.ts.map +0 -1
  531. package/dist/taf/test-output-parser.js +0 -127
  532. package/dist/taf/test-output-parser.js.map +0 -1
  533. package/dist/taf/types.d.ts +0 -77
  534. package/dist/taf/types.d.ts.map +0 -1
  535. package/dist/taf/types.js +0 -9
  536. package/dist/taf/types.js.map +0 -1
  537. package/dist/taf/validator.d.ts +0 -18
  538. package/dist/taf/validator.d.ts.map +0 -1
  539. package/dist/taf/validator.js +0 -148
  540. package/dist/taf/validator.js.map +0 -1
  541. package/dist/telemetry/analytics.d.ts +0 -74
  542. package/dist/telemetry/analytics.d.ts.map +0 -1
  543. package/dist/telemetry/analytics.js +0 -370
  544. package/dist/telemetry/analytics.js.map +0 -1
  545. package/dist/tests/test-chrome-fuzzy.d.ts +0 -5
  546. package/dist/tests/test-chrome-fuzzy.d.ts.map +0 -1
  547. package/dist/tests/test-chrome-fuzzy.js +0 -68
  548. package/dist/tests/test-chrome-fuzzy.js.map +0 -1
  549. package/dist/types/faf-types.d.ts +0 -144
  550. package/dist/types/faf-types.d.ts.map +0 -1
  551. package/dist/types/faf-types.js +0 -21
  552. package/dist/types/faf-types.js.map +0 -1
  553. package/dist/types/index.d.ts +0 -36
  554. package/dist/types/index.d.ts.map +0 -1
  555. package/dist/types/index.js +0 -7
  556. package/dist/types/index.js.map +0 -1
  557. package/dist/utils/agents-parser.d.ts +0 -60
  558. package/dist/utils/agents-parser.d.ts.map +0 -1
  559. package/dist/utils/agents-parser.js +0 -339
  560. package/dist/utils/agents-parser.js.map +0 -1
  561. package/dist/utils/announcements.d.ts +0 -16
  562. package/dist/utils/announcements.d.ts.map +0 -1
  563. package/dist/utils/announcements.js +0 -131
  564. package/dist/utils/announcements.js.map +0 -1
  565. package/dist/utils/balance-visualizer.d.ts +0 -38
  566. package/dist/utils/balance-visualizer.d.ts.map +0 -1
  567. package/dist/utils/balance-visualizer.js +0 -190
  568. package/dist/utils/balance-visualizer.js.map +0 -1
  569. package/dist/utils/championship-core.d.ts +0 -127
  570. package/dist/utils/championship-core.d.ts.map +0 -1
  571. package/dist/utils/championship-core.js +0 -212
  572. package/dist/utils/championship-core.js.map +0 -1
  573. package/dist/utils/championship-style.d.ts +0 -110
  574. package/dist/utils/championship-style.d.ts.map +0 -1
  575. package/dist/utils/championship-style.js +0 -219
  576. package/dist/utils/championship-style.js.map +0 -1
  577. package/dist/utils/chrome-extension-confirmer.d.ts +0 -41
  578. package/dist/utils/chrome-extension-confirmer.d.ts.map +0 -1
  579. package/dist/utils/chrome-extension-confirmer.js +0 -203
  580. package/dist/utils/chrome-extension-confirmer.js.map +0 -1
  581. package/dist/utils/chrome-extension-detector.d.ts +0 -74
  582. package/dist/utils/chrome-extension-detector.d.ts.map +0 -1
  583. package/dist/utils/chrome-extension-detector.js +0 -268
  584. package/dist/utils/chrome-extension-detector.js.map +0 -1
  585. package/dist/utils/color-utils.d.ts +0 -17
  586. package/dist/utils/color-utils.d.ts.map +0 -1
  587. package/dist/utils/color-utils.js +0 -112
  588. package/dist/utils/color-utils.js.map +0 -1
  589. package/dist/utils/conductor-parser.d.ts +0 -86
  590. package/dist/utils/conductor-parser.d.ts.map +0 -1
  591. package/dist/utils/conductor-parser.js +0 -293
  592. package/dist/utils/conductor-parser.js.map +0 -1
  593. package/dist/utils/cursorrules-parser.d.ts +0 -56
  594. package/dist/utils/cursorrules-parser.d.ts.map +0 -1
  595. package/dist/utils/cursorrules-parser.js +0 -327
  596. package/dist/utils/cursorrules-parser.js.map +0 -1
  597. package/dist/utils/email-opt-in.d.ts +0 -31
  598. package/dist/utils/email-opt-in.d.ts.map +0 -1
  599. package/dist/utils/email-opt-in.js +0 -199
  600. package/dist/utils/email-opt-in.js.map +0 -1
  601. package/dist/utils/fab-formats-engine.d.ts +0 -83
  602. package/dist/utils/fab-formats-engine.d.ts.map +0 -1
  603. package/dist/utils/fab-formats-engine.js +0 -502
  604. package/dist/utils/fab-formats-engine.js.map +0 -1
  605. package/dist/utils/fafb-compiler.d.ts +0 -62
  606. package/dist/utils/fafb-compiler.d.ts.map +0 -1
  607. package/dist/utils/fafb-compiler.js +0 -225
  608. package/dist/utils/fafb-compiler.js.map +0 -1
  609. package/dist/utils/fafb-detector.d.ts +0 -26
  610. package/dist/utils/fafb-detector.d.ts.map +0 -1
  611. package/dist/utils/fafb-detector.js +0 -180
  612. package/dist/utils/fafb-detector.js.map +0 -1
  613. package/dist/utils/fafignore-parser.d.ts +0 -21
  614. package/dist/utils/fafignore-parser.d.ts.map +0 -1
  615. package/dist/utils/fafignore-parser.js +0 -178
  616. package/dist/utils/fafignore-parser.js.map +0 -1
  617. package/dist/utils/feedback-messages.d.ts +0 -13
  618. package/dist/utils/feedback-messages.d.ts.map +0 -1
  619. package/dist/utils/feedback-messages.js +0 -118
  620. package/dist/utils/feedback-messages.js.map +0 -1
  621. package/dist/utils/file-utils.d.ts +0 -113
  622. package/dist/utils/file-utils.d.ts.map +0 -1
  623. package/dist/utils/file-utils.js +0 -949
  624. package/dist/utils/file-utils.js.map +0 -1
  625. package/dist/utils/gemini-parser.d.ts +0 -58
  626. package/dist/utils/gemini-parser.d.ts.map +0 -1
  627. package/dist/utils/gemini-parser.js +0 -263
  628. package/dist/utils/gemini-parser.js.map +0 -1
  629. package/dist/utils/markdown-to-context.d.ts +0 -28
  630. package/dist/utils/markdown-to-context.d.ts.map +0 -1
  631. package/dist/utils/markdown-to-context.js +0 -206
  632. package/dist/utils/markdown-to-context.js.map +0 -1
  633. package/dist/utils/memory-parser.d.ts +0 -95
  634. package/dist/utils/memory-parser.d.ts.map +0 -1
  635. package/dist/utils/memory-parser.js +0 -408
  636. package/dist/utils/memory-parser.js.map +0 -1
  637. package/dist/utils/memory-topic-writer.d.ts +0 -52
  638. package/dist/utils/memory-topic-writer.d.ts.map +0 -1
  639. package/dist/utils/memory-topic-writer.js +0 -415
  640. package/dist/utils/memory-topic-writer.js.map +0 -1
  641. package/dist/utils/native-cli-parser.d.ts +0 -152
  642. package/dist/utils/native-cli-parser.d.ts.map +0 -1
  643. package/dist/utils/native-cli-parser.js +0 -466
  644. package/dist/utils/native-cli-parser.js.map +0 -1
  645. package/dist/utils/native-file-finder.d.ts +0 -116
  646. package/dist/utils/native-file-finder.d.ts.map +0 -1
  647. package/dist/utils/native-file-finder.js +0 -211
  648. package/dist/utils/native-file-finder.js.map +0 -1
  649. package/dist/utils/platform-detector.d.ts +0 -31
  650. package/dist/utils/platform-detector.d.ts.map +0 -1
  651. package/dist/utils/platform-detector.js +0 -220
  652. package/dist/utils/platform-detector.js.map +0 -1
  653. package/dist/utils/score-header.d.ts +0 -22
  654. package/dist/utils/score-header.d.ts.map +0 -1
  655. package/dist/utils/score-header.js +0 -88
  656. package/dist/utils/score-header.js.map +0 -1
  657. package/dist/utils/slot-counter.d.ts +0 -56
  658. package/dist/utils/slot-counter.d.ts.map +0 -1
  659. package/dist/utils/slot-counter.js +0 -100
  660. package/dist/utils/slot-counter.js.map +0 -1
  661. package/dist/utils/technical-credit.d.ts +0 -36
  662. package/dist/utils/technical-credit.d.ts.map +0 -1
  663. package/dist/utils/technical-credit.js +0 -286
  664. package/dist/utils/technical-credit.js.map +0 -1
  665. package/dist/utils/trust-cache.d.ts +0 -29
  666. package/dist/utils/trust-cache.d.ts.map +0 -1
  667. package/dist/utils/trust-cache.js +0 -122
  668. package/dist/utils/trust-cache.js.map +0 -1
  669. package/dist/utils/turbo-cat-knowledge.d.ts +0 -105
  670. package/dist/utils/turbo-cat-knowledge.d.ts.map +0 -1
  671. package/dist/utils/turbo-cat-knowledge.js +0 -1941
  672. package/dist/utils/turbo-cat-knowledge.js.map +0 -1
  673. package/dist/utils/turbo-cat-pyramid.d.ts +0 -48
  674. package/dist/utils/turbo-cat-pyramid.d.ts.map +0 -1
  675. package/dist/utils/turbo-cat-pyramid.js +0 -380
  676. package/dist/utils/turbo-cat-pyramid.js.map +0 -1
  677. package/dist/utils/turbo-cat.d.ts +0 -99
  678. package/dist/utils/turbo-cat.d.ts.map +0 -1
  679. package/dist/utils/turbo-cat.js +0 -456
  680. package/dist/utils/turbo-cat.js.map +0 -1
  681. package/dist/utils/universal-fuzzy-detector.d.ts +0 -64
  682. package/dist/utils/universal-fuzzy-detector.d.ts.map +0 -1
  683. package/dist/utils/universal-fuzzy-detector.js +0 -386
  684. package/dist/utils/universal-fuzzy-detector.js.map +0 -1
  685. package/dist/utils/update-checker.d.ts +0 -15
  686. package/dist/utils/update-checker.d.ts.map +0 -1
  687. package/dist/utils/update-checker.js +0 -200
  688. package/dist/utils/update-checker.js.map +0 -1
  689. package/dist/utils/vibe-sync.d.ts +0 -25
  690. package/dist/utils/vibe-sync.d.ts.map +0 -1
  691. package/dist/utils/vibe-sync.js +0 -175
  692. package/dist/utils/vibe-sync.js.map +0 -1
  693. package/dist/utils/yaml-generator.d.ts +0 -52
  694. package/dist/utils/yaml-generator.d.ts.map +0 -1
  695. package/dist/utils/yaml-generator.js +0 -432
  696. package/dist/utils/yaml-generator.js.map +0 -1
  697. package/faf-banner.png +0 -0
  698. package/scripts/ANTHROPIC-DEMO.sh +0 -203
  699. package/scripts/boris-ready.sh +0 -169
  700. package/scripts/bundle-yaml.js +0 -87
  701. package/scripts/check-version.js +0 -88
  702. package/scripts/clean-build.js +0 -34
  703. package/scripts/cleanup-unused.sh +0 -54
  704. package/scripts/debug-django.txt +0 -9
  705. package/scripts/debug-mongo.txt +0 -9
  706. package/scripts/debug-react.txt +0 -9
  707. package/scripts/debug-rust.txt +0 -9
  708. package/scripts/debug-whisper.cpp.txt +0 -9
  709. package/scripts/evaluate-family-member.ts +0 -300
  710. package/scripts/generate-docs.ts +0 -358
  711. package/scripts/generate-drift-reports.sh +0 -111
  712. package/scripts/industry-showcase.json +0 -122
  713. package/scripts/mcp-ecosystem-research.sh +0 -58
  714. package/scripts/migrate-yaml-imports.sh +0 -55
  715. package/scripts/migrate-yaml.ts +0 -132
  716. package/scripts/performance-validation.ts +0 -460
  717. package/scripts/postinstall.js +0 -30
  718. package/scripts/prepare-release.ts +0 -421
  719. package/scripts/run-industry-showcase.ts +0 -237
  720. package/scripts/run-test-showcase.ts +0 -244
  721. package/scripts/setup-github-watch.sh +0 -43
  722. package/scripts/sync-version.js +0 -35
  723. package/scripts/test-integration-detection.ts +0 -93
  724. package/scripts/test-integration-simple.js +0 -93
  725. package/scripts/test-medal-progression.sh +0 -143
  726. package/scripts/test-showcase-results.json +0 -109
  727. package/scripts/test-showcase.json +0 -32
  728. package/scripts/update-version.js +0 -148
  729. package/scripts/verify-build.js +0 -343
  730. package/scripts/version-check.js +0 -78
  731. package/scripts/watch-discussions.sh +0 -86
@@ -1,1164 +0,0 @@
1
- "use strict";
2
- /**
3
- * 🚀 REAL faf enhance - Actually improves scores with facts, not BS
4
- * No placeholders, no mocks - real improvements based on project analysis
5
- * RELENTLESS pursuit of highest score through real data or human input
6
- */
7
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
- if (k2 === undefined) k2 = k;
9
- var desc = Object.getOwnPropertyDescriptor(m, k);
10
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
- desc = { enumerable: true, get: function() { return m[k]; } };
12
- }
13
- Object.defineProperty(o, k2, desc);
14
- }) : (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- o[k2] = m[k];
17
- }));
18
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
- Object.defineProperty(o, "default", { enumerable: true, value: v });
20
- }) : function(o, v) {
21
- o["default"] = v;
22
- });
23
- var __importStar = (this && this.__importStar) || (function () {
24
- var ownKeys = function(o) {
25
- ownKeys = Object.getOwnPropertyNames || function (o) {
26
- var ar = [];
27
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
- return ar;
29
- };
30
- return ownKeys(o);
31
- };
32
- return function (mod) {
33
- if (mod && mod.__esModule) return mod;
34
- var result = {};
35
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
- __setModuleDefault(result, mod);
37
- return result;
38
- };
39
- })();
40
- var __importDefault = (this && this.__importDefault) || function (mod) {
41
- return (mod && mod.__esModule) ? mod : { "default": mod };
42
- };
43
- Object.defineProperty(exports, "__esModule", { value: true });
44
- exports.realEnhanceFaf = realEnhanceFaf;
45
- const colors_1 = require("../fix-once/colors");
46
- const fs_1 = require("fs");
47
- const path = __importStar(require("path"));
48
- const yaml_1 = require("../fix-once/yaml");
49
- const inquirer_1 = __importDefault(require("inquirer"));
50
- const file_utils_1 = require("../utils/file-utils");
51
- const faf_compiler_1 = require("../compiler/faf-compiler");
52
- const fab_formats_engine_1 = require("../utils/fab-formats-engine");
53
- const child_process_1 = require("child_process");
54
- /**
55
- * REAL Enhancement that RELENTLESSLY improves scores
56
- * Loops until target score achieved or no more improvements possible
57
- */
58
- async function realEnhanceFaf(file, options = {}) {
59
- try {
60
- // EARLY EXIT: Check for TTY before doing ANYTHING
61
- // This prevents file corruption in non-TTY environments (Claude Code, CI/CD)
62
- if (!process.stdin.isTTY && options.interactive !== false) {
63
- console.log(colors_1.chalk.yellow('\n⚠️ faf enhance requires a terminal (TTY)'));
64
- console.log(colors_1.chalk.gray(' This command needs interactive input to work properly.'));
65
- console.log(colors_1.chalk.cyan('\n💡 Alternatives:'));
66
- console.log(colors_1.chalk.gray(' faf auto - Works in any environment'));
67
- console.log(colors_1.chalk.gray(' faf enhance - Run in Terminal.app or iTerm2'));
68
- console.log(colors_1.chalk.yellow('\n Exiting without changes.\n'));
69
- return;
70
- }
71
- const fafPath = file || (await (0, file_utils_1.findFafFile)());
72
- if (!fafPath) {
73
- console.log(colors_1.chalk.red("❌ No .faf file found"));
74
- console.log(colors_1.chalk.yellow('💡 Run "faf init" to create one'));
75
- process.exit(1);
76
- }
77
- const projectPath = path.dirname(fafPath);
78
- console.log(colors_1.chalk.cyan("⚡ Real Enhancement Starting..."));
79
- console.log(colors_1.chalk.gray(" No BS, just facts from your project"));
80
- console.log(colors_1.chalk.gray(` Enhancing: ${fafPath}`));
81
- // Read current .faf file
82
- const content = await fs_1.promises.readFile(fafPath, "utf-8");
83
- let fafData = (0, yaml_1.parse)(content) || {};
84
- // Get REAL current score with detailed breakdown
85
- const compiler = new faf_compiler_1.FafCompiler();
86
- let currentScore = await compiler.compile(fafPath);
87
- const targetScore = options.targetScore || 100; // Changed from 80 to 100
88
- console.log(colors_1.chalk.yellow(`📊 Current Score: ${currentScore.score}%`));
89
- console.log(colors_1.chalk.gray(` Target Score: ${targetScore}%`));
90
- console.log(colors_1.chalk.gray(` Filled: ${currentScore.filled}/${currentScore.total} slots`));
91
- // Show what's missing
92
- if (options.verbose) {
93
- displayMissingSlots(currentScore);
94
- }
95
- // RELENTLESS enhancement loop
96
- let iteration = 0;
97
- const maxIterations = 10; // Safety limit
98
- while (currentScore.score < targetScore && iteration < maxIterations) {
99
- iteration++;
100
- console.log(colors_1.chalk.cyan(`\n🔄 Enhancement Round ${iteration}...`));
101
- // Analyze project for REAL improvements
102
- let improvements = {};
103
- try {
104
- improvements = await analyzeProjectForRealImprovements(projectPath, fafData, currentScore);
105
- }
106
- catch {
107
- console.log(colors_1.chalk.yellow(' Could not analyze project automatically'));
108
- }
109
- if (options.verbose) {
110
- console.log(colors_1.chalk.gray(`Found ${Object.keys(improvements).length} automatic improvements`));
111
- if (Object.keys(improvements).length > 0 && Object.keys(improvements).length <= 3) {
112
- console.log(colors_1.chalk.gray(` Improvements: ${Object.keys(improvements).join(', ')}`));
113
- }
114
- }
115
- // If no automatic improvements found and interactive mode, ask human
116
- if (Object.keys(improvements).length === 0 && options.interactive !== false) {
117
- // Check if we're missing critical human context
118
- const missingHuman = !fafData.human_context?.who || !fafData.human_context?.what ||
119
- !fafData.human_context?.why || !fafData.human_context?.where ||
120
- !fafData.human_context?.when || !fafData.human_context?.how;
121
- if (missingHuman) {
122
- console.log(colors_1.chalk.yellow('\n⚠️ Missing critical Human Context (the 6 W\'s)'));
123
- console.log(colors_1.chalk.gray(' This is the biggest opportunity to improve your score'));
124
- }
125
- const humanInput = await askHumanForMissingData(fafData, currentScore);
126
- Object.assign(improvements, humanInput);
127
- if (options.verbose && Object.keys(humanInput).length > 0) {
128
- console.log(colors_1.chalk.gray(`Added ${Object.keys(humanInput).length} improvements from human input`));
129
- }
130
- }
131
- // If still no improvements, we're done
132
- if (Object.keys(improvements).length === 0) {
133
- console.log(colors_1.chalk.yellow("\n⚠️ No more improvements possible with available data"));
134
- if (options.interactive === false) {
135
- console.log(colors_1.chalk.gray(" (Interactive mode disabled - try with -i true to provide missing data)"));
136
- }
137
- break;
138
- }
139
- if (options.dryRun) {
140
- console.log(colors_1.chalk.cyan("\n🔍 Improvements Found (Dry Run):"));
141
- displayImprovements(improvements);
142
- continue;
143
- }
144
- try {
145
- // Apply REAL improvements
146
- fafData = applyRealEnhancements(fafData, improvements);
147
- // CRITICAL: Preserve essential fields that should never be removed
148
- if (!fafData.project) {
149
- fafData.project = {};
150
- }
151
- if (!fafData.project.generated && fafData.generated) {
152
- fafData.project.generated = fafData.generated;
153
- }
154
- // Add meta tracking for enhancement
155
- fafData.meta = fafData.meta || {};
156
- fafData.meta.last_enhanced = new Date().toISOString();
157
- fafData.meta.enhanced_by = 'faf-real-enhance';
158
- // Save enhanced file
159
- const enhancedYaml = (0, yaml_1.stringify)(fafData);
160
- await fs_1.promises.writeFile(fafPath, enhancedYaml);
161
- // Calculate new score
162
- const newScore = await compiler.compile(fafPath);
163
- const improvement = newScore.score - currentScore.score;
164
- if (improvement > 0) {
165
- console.log(colors_1.chalk.green(`✅ Improvement: +${improvement}% (${currentScore.score}% → ${newScore.score}%)`));
166
- // Show what was actually added
167
- if (options.verbose) {
168
- console.log(colors_1.chalk.cyan("📝 Changes Made:"));
169
- displayImprovements(improvements);
170
- }
171
- }
172
- currentScore = newScore;
173
- }
174
- catch {
175
- console.log(colors_1.chalk.yellow("\n⚠️ Enhancement iteration failed, continuing..."));
176
- }
177
- }
178
- // Final results
179
- console.log(colors_1.chalk.cyan(`\n${"=".repeat(60)}`));
180
- if (currentScore.score >= targetScore) {
181
- console.log(colors_1.chalk.green(`🎯 TARGET ACHIEVED! Score: ${currentScore.score}%`));
182
- }
183
- else {
184
- console.log(colors_1.chalk.yellow(`📊 Final Score: ${currentScore.score}%`));
185
- console.log(colors_1.chalk.gray(` (Target was ${targetScore}%)`));
186
- }
187
- console.log(colors_1.chalk.cyan("=".repeat(60)));
188
- }
189
- catch (error) {
190
- console.log(colors_1.chalk.red("💥 Enhancement failed:"));
191
- console.log(colors_1.chalk.red(error instanceof Error ? error.message : String(error)));
192
- process.exit(1);
193
- }
194
- }
195
- /**
196
- * Display what slots are missing for transparency
197
- */
198
- function displayMissingSlots(score) {
199
- const missing = [];
200
- // Check project slots
201
- if (score.breakdown.project.filled < score.breakdown.project.total) {
202
- const projectSlots = score.breakdown.project.slots;
203
- projectSlots.forEach((slot) => {
204
- if (!slot.filled && slot.id.includes('project')) {
205
- const field = slot.id.replace('slot_', '').replace('project.', '');
206
- missing.push(`Project: ${field}`);
207
- }
208
- });
209
- }
210
- // Check stack slots
211
- if (score.breakdown.stack.filled < score.breakdown.stack.total) {
212
- const stackSlots = score.breakdown.stack.slots;
213
- stackSlots.forEach((slot) => {
214
- if (!slot.filled && slot.id.includes('stack')) {
215
- const field = slot.id.replace('slot_', '').replace('stack.', '');
216
- missing.push(`Stack: ${field}`);
217
- }
218
- });
219
- }
220
- // Check human context slots
221
- if (score.breakdown.human.filled < score.breakdown.human.total) {
222
- const humanSlots = score.breakdown.human.slots;
223
- humanSlots.forEach((slot) => {
224
- if (!slot.filled && slot.id.includes('human')) {
225
- const field = slot.id.replace('slot_', '').replace('human.', '');
226
- missing.push(`Human Context: ${field}`);
227
- }
228
- });
229
- }
230
- if (missing.length > 0) {
231
- console.log(colors_1.chalk.yellow('\n⚠️ Missing Context (affecting score):'));
232
- missing.forEach(m => console.log(colors_1.chalk.gray(` • ${m}`)));
233
- }
234
- }
235
- /**
236
- * Ask human for missing critical data via inquirer
237
- * RELENTLESS 1-6 questionnaire for the 6 W's of Human Context
238
- */
239
- async function askHumanForMissingData(currentFaf, _score) {
240
- // Check if we're in an interactive terminal
241
- if (!process.stdin.isTTY) {
242
- console.log(colors_1.chalk.yellow('\n⚠️ Interactive questions require a terminal (TTY)'));
243
- console.log(colors_1.chalk.gray(' Skipping interactive questionnaire...'));
244
- console.log(colors_1.chalk.cyan('\n💡 When using AI assistants or CI/CD:'));
245
- console.log(colors_1.chalk.gray(' faf auto - Automatically enhance context'));
246
- console.log(colors_1.chalk.gray(' faf chat - Interactive mode (terminal only)'));
247
- console.log(colors_1.chalk.gray(' Run in a real terminal for full interactive enhancement\n'));
248
- return {}; // Return empty improvements
249
- }
250
- const improvements = {};
251
- const questions = [];
252
- // Priority 1: Project data (most critical for AI)
253
- if (!currentFaf.project?.name) {
254
- questions.push({
255
- type: 'input',
256
- name: 'projectName',
257
- message: '🎯 What is your project name?',
258
- validate: (input) => input.trim().length > 0 || 'Project name is required for AI context'
259
- });
260
- }
261
- if (!currentFaf.project?.goal) {
262
- questions.push({
263
- type: 'input',
264
- name: 'projectGoal',
265
- message: '🎯 What does your project do? (one sentence)',
266
- validate: (input) => input.trim().length > 10 || 'Please provide a meaningful description'
267
- });
268
- }
269
- // Priority 2: The 6 W's - RELENTLESS Human Context Collection
270
- // These are CRITICAL for AI understanding and score improvement
271
- console.log(colors_1.chalk.cyan('\n🧠 Human Context - The 6 W\'s (Critical for AI Understanding)'));
272
- console.log(colors_1.chalk.gray(' These 6 questions dramatically improve AI\'s ability to help you'));
273
- // 1. WHO - Target audience/users
274
- if (!currentFaf.human_context?.who) {
275
- questions.push({
276
- type: 'input',
277
- name: 'who',
278
- message: colors_1.chalk.yellow('1/6 👤 WHO will use this? (developers, data scientists, designers, etc.)'),
279
- default: getSmartDefault('who', currentFaf),
280
- transformer: (input) => colors_1.chalk.green(input),
281
- validate: (input) => {
282
- if (input.trim().length < 3) {
283
- return 'Please specify your target users';
284
- }
285
- if (genericAnswers.who.includes(input.toLowerCase())) {
286
- return `Please be more specific than "${input}"`;
287
- }
288
- return true;
289
- }
290
- });
291
- }
292
- // 2. WHAT - Core problem being solved
293
- if (!currentFaf.human_context?.what) {
294
- questions.push({
295
- type: 'input',
296
- name: 'what',
297
- message: colors_1.chalk.yellow('2/6 📦 WHAT problem does it solve? (be specific)'),
298
- default: getSmartDefault('what', currentFaf),
299
- transformer: (input) => colors_1.chalk.green(input),
300
- validate: (input) => {
301
- if (input.trim().length < 10) {
302
- return 'Please describe the specific problem';
303
- }
304
- if (genericAnswers.what.includes(input.toLowerCase())) {
305
- return 'Please be more specific about the problem';
306
- }
307
- return true;
308
- }
309
- });
310
- }
311
- // 3. WHY - Importance and impact
312
- if (!currentFaf.human_context?.why) {
313
- questions.push({
314
- type: 'input',
315
- name: 'why',
316
- message: colors_1.chalk.yellow('3/6 💡 WHY is this important? (what impact/value does it create?)'),
317
- default: getSmartDefault('why', currentFaf),
318
- transformer: (input) => colors_1.chalk.green(input),
319
- validate: (input) => {
320
- if (input.trim().length < 10) {
321
- return 'Please explain why this matters';
322
- }
323
- if (genericAnswers.why.includes(input.toLowerCase())) {
324
- return 'Please be more specific about the value/impact';
325
- }
326
- return true;
327
- }
328
- });
329
- }
330
- // 4. WHERE - Deployment/usage context
331
- if (!currentFaf.human_context?.where) {
332
- questions.push({
333
- type: 'input',
334
- name: 'where',
335
- message: colors_1.chalk.yellow('4/6 🌍 WHERE will it be used? (cloud, on-premise, mobile, browser, etc.)'),
336
- default: getSmartDefault('where', currentFaf),
337
- transformer: (input) => colors_1.chalk.green(input),
338
- validate: (input) => {
339
- if (input.trim().length < 3) {
340
- return 'Please specify the deployment context';
341
- }
342
- return true;
343
- }
344
- });
345
- }
346
- // 5. WHEN - Timeline/urgency
347
- if (!currentFaf.human_context?.when) {
348
- questions.push({
349
- type: 'input',
350
- name: 'when',
351
- message: colors_1.chalk.yellow('5/6 ⏰ WHEN do you need this? (now, Q1 2025, ongoing, etc.)'),
352
- default: getSmartDefault('when', currentFaf),
353
- transformer: (input) => colors_1.chalk.green(input),
354
- validate: (input) => {
355
- if (input.trim().length < 3) {
356
- return 'Please specify the timeline';
357
- }
358
- return true;
359
- }
360
- });
361
- }
362
- // 6. HOW - Implementation approach
363
- if (!currentFaf.human_context?.how) {
364
- questions.push({
365
- type: 'input',
366
- name: 'how',
367
- message: colors_1.chalk.yellow('6/6 🔧 HOW will you build it? (agile, iterative, waterfall, etc.)'),
368
- default: getSmartDefault('how', currentFaf),
369
- transformer: (input) => colors_1.chalk.green(input),
370
- validate: (input) => {
371
- if (input.trim().length < 5) {
372
- return 'Please describe your approach';
373
- }
374
- if (genericAnswers.how.includes(input.toLowerCase())) {
375
- return 'Please be more specific about your methodology';
376
- }
377
- return true;
378
- }
379
- });
380
- }
381
- // Priority 3: Technical stack (only if really needed and missing)
382
- const needsFrontend = !(currentFaf.stack?.framework || currentFaf.stack?.frontend) &&
383
- (currentFaf.project?.type?.includes('frontend') || currentFaf.project?.type?.includes('fullstack'));
384
- const needsBackend = !currentFaf.stack?.backend &&
385
- (currentFaf.project?.type?.includes('backend') || currentFaf.project?.type?.includes('api'));
386
- const needsDatabase = !(currentFaf.stack?.db || currentFaf.stack?.database) && needsBackend;
387
- const needsHosting = !currentFaf.stack?.hosting;
388
- if (needsFrontend) {
389
- questions.push({
390
- type: 'list',
391
- name: 'framework',
392
- message: '🎨 Frontend framework?',
393
- choices: ['React', 'Vue', 'Angular', 'Svelte', 'Next.js', 'Remix', 'Astro', 'None', 'Skip']
394
- });
395
- }
396
- if (needsBackend) {
397
- questions.push({
398
- type: 'list',
399
- name: 'backend',
400
- message: '⚙️ Backend framework?',
401
- choices: ['Express', 'Fastify', 'NestJS', 'Hono', 'Django', 'FastAPI', 'Rails', 'None', 'Skip']
402
- });
403
- }
404
- if (needsDatabase) {
405
- questions.push({
406
- type: 'list',
407
- name: 'database',
408
- message: '💾 Database?',
409
- choices: ['PostgreSQL', 'MySQL', 'MongoDB', 'SQLite', 'Redis', 'Supabase', 'PlanetScale', 'None', 'Skip']
410
- });
411
- }
412
- if (needsHosting) {
413
- questions.push({
414
- type: 'list',
415
- name: 'hosting',
416
- message: '☁️ Hosting platform?',
417
- choices: ['Vercel', 'Netlify', 'AWS', 'Google Cloud', 'Azure', 'Heroku', 'Railway', 'Fly.io', 'None', 'Skip']
418
- });
419
- }
420
- // Only ask if we have questions
421
- if (questions.length === 0) {
422
- return improvements;
423
- }
424
- console.log(colors_1.chalk.cyan('\n🎯 Let\'s fill the critical gaps to reach your target score:'));
425
- const answers = await inquirer_1.default.prompt(questions);
426
- // Map answers to improvements
427
- Object.entries(answers).forEach(([key, value]) => {
428
- if (value && value !== 'Skip') {
429
- improvements[key] = value;
430
- }
431
- });
432
- // Show progress after human input
433
- const filledCount = Object.keys(improvements).length;
434
- if (filledCount > 0) {
435
- console.log(colors_1.chalk.green(`\n✅ Added ${filledCount} improvements from your input`));
436
- }
437
- return improvements;
438
- }
439
- // Generic answers to reject for better specificity
440
- const genericAnswers = {
441
- who: ['users', 'people', 'everyone', 'anybody', 'someone'],
442
- what: ['problems', 'issues', 'things', 'stuff', 'something'],
443
- why: ['because', 'important', 'needed', 'required', 'necessary'],
444
- how: ['normal', 'usual', 'standard', 'regular', 'typical']
445
- };
446
- // Smart defaults based on project type
447
- function getSmartDefault(field, currentFaf) {
448
- const projectType = currentFaf.project?.type || '';
449
- const _projectName = currentFaf.project?.name || '';
450
- const language = currentFaf.project?.main_language || '';
451
- const defaults = {
452
- who: {
453
- 'cli-tool': 'Developers and DevOps engineers',
454
- 'frontend': 'End users and web visitors',
455
- 'backend-api': 'Frontend applications and API consumers',
456
- 'fullstack': 'Business users and administrators',
457
- 'library': `Developers using ${language || 'this technology'}`,
458
- 'chrome-extension': 'Chrome browser users',
459
- 'default': 'Development teams'
460
- },
461
- what: {
462
- 'cli-tool': 'Automates repetitive command-line tasks',
463
- 'frontend': 'Provides user interface for data interaction',
464
- 'backend-api': 'Manages data and business logic',
465
- 'fullstack': 'Complete solution for business operations',
466
- 'library': `Simplifies ${language || 'development'} tasks`,
467
- 'chrome-extension': 'Enhances browser functionality',
468
- 'default': 'Solves specific technical challenges'
469
- },
470
- why: {
471
- 'cli-tool': 'Saves time and reduces errors in workflows',
472
- 'frontend': 'Improves user experience and engagement',
473
- 'backend-api': 'Centralizes data management and processing',
474
- 'fullstack': 'Streamlines business processes',
475
- 'library': 'Reduces code duplication and complexity',
476
- 'chrome-extension': 'Adds missing browser features',
477
- 'default': 'Increases productivity and quality'
478
- },
479
- where: {
480
- 'cli-tool': 'Local development machines and CI/CD pipelines',
481
- 'frontend': 'Web browsers and CDN',
482
- 'backend-api': 'Cloud servers or containers',
483
- 'fullstack': 'Cloud platform with global availability',
484
- 'library': 'NPM/PyPI package registry',
485
- 'chrome-extension': 'Chrome Web Store',
486
- 'default': 'Cloud infrastructure'
487
- },
488
- when: {
489
- 'default': 'Ongoing development and maintenance'
490
- },
491
- how: {
492
- 'default': 'Agile development with continuous deployment'
493
- }
494
- };
495
- const typeDefaults = defaults[field];
496
- if (!typeDefaults) {
497
- return '';
498
- }
499
- return typeDefaults[projectType] || typeDefaults['default'] || '';
500
- }
501
- /**
502
- * Analyze project for REAL improvements based on actual files
503
- */
504
- async function analyzeProjectForRealImprovements(projectPath, currentFaf, _currentScore) {
505
- const improvements = {};
506
- // Priority order: Fill critical slots first
507
- // 1. PROJECT SLOTS (name, goal, language) - Most critical for AI
508
- // 2. HUMAN CONTEXT (6 W's) - Critical for understanding
509
- // 3. STACK SLOTS - Technical details
510
- // 1. Scan for package.json to get REAL project info
511
- try {
512
- const pkgPath = path.join(projectPath, 'package.json');
513
- const pkgContent = await fs_1.promises.readFile(pkgPath, 'utf-8');
514
- const pkg = JSON.parse(pkgContent);
515
- // Extract REAL project data
516
- if (!currentFaf.project?.name && pkg.name) {
517
- improvements.projectName = pkg.name;
518
- }
519
- if (!currentFaf.project?.goal && pkg.description) {
520
- improvements.projectGoal = pkg.description;
521
- }
522
- if (!currentFaf.project?.version && pkg.version) {
523
- improvements.version = pkg.version;
524
- }
525
- if (!currentFaf.project?.author && pkg.author) {
526
- improvements.author = typeof pkg.author === 'string' ? pkg.author : pkg.author.name;
527
- }
528
- if (!currentFaf.project?.license && pkg.license) {
529
- improvements.license = pkg.license;
530
- }
531
- // Extract REAL dependencies for stack info
532
- const deps = { ...pkg.dependencies, ...pkg.devDependencies };
533
- const frameworks = detectFrameworks(deps);
534
- if (frameworks.length > 0 && !(currentFaf.stack?.framework || currentFaf.stack?.frontend)) {
535
- improvements.framework = frameworks[0];
536
- }
537
- // Detect testing framework
538
- const testFramework = detectTestingFramework(deps);
539
- if (testFramework && !currentFaf.stack?.testing) {
540
- improvements.testing = testFramework;
541
- }
542
- // Detect database
543
- const database = detectDatabase(deps);
544
- if (database && !(currentFaf.stack?.db || currentFaf.stack?.database)) {
545
- improvements.database = database;
546
- }
547
- // Detect CI/CD from scripts
548
- if (pkg.scripts?.deploy && !currentFaf.stack?.cicd) {
549
- improvements.cicd = 'npm deploy';
550
- }
551
- // Extract scripts for understanding project
552
- if (pkg.scripts) {
553
- const scripts = Object.keys(pkg.scripts);
554
- if (!currentFaf.stack?.testing && scripts.some(s => s.includes('test'))) {
555
- improvements.testing = 'jest'; // or detect from deps
556
- }
557
- if (!currentFaf.stack?.build && scripts.some(s => s.includes('build'))) {
558
- improvements.buildTool = detectBuildTool(deps);
559
- }
560
- }
561
- }
562
- catch {
563
- // No package.json, try other files
564
- }
565
- // 2. Use FAB-Formats to INTELLIGENTLY discover project structure
566
- const fabEngine = new fab_formats_engine_1.FabFormatsEngine();
567
- const fabAnalysis = await fabEngine.discoverFormats(projectPath);
568
- if (fabAnalysis.discoveredFormats && fabAnalysis.discoveredFormats.length > 0) {
569
- // Add discovered key files
570
- const keyFiles = fabAnalysis.discoveredFormats
571
- .map((f) => f.fileName)
572
- .filter((f) => isImportantFile(f))
573
- .slice(0, 5);
574
- if (keyFiles.length > 0 && !currentFaf.instant_context?.key_files) {
575
- improvements.keyFiles = keyFiles;
576
- }
577
- // Use ALL extracted context from FAB-Formats
578
- const ctx = fabAnalysis.extractedContext;
579
- // Project information
580
- if (ctx.projectName && !currentFaf.project?.name) {
581
- improvements.projectName = ctx.projectName;
582
- }
583
- if (ctx.projectDescription && !currentFaf.project?.goal) {
584
- improvements.projectGoal = ctx.projectDescription;
585
- }
586
- if (ctx.projectType && !currentFaf.project?.type) {
587
- improvements.projectType = ctx.projectType;
588
- }
589
- // Stack information from FAB-Formats
590
- if (ctx.mainLanguage && !currentFaf.project?.main_language) {
591
- improvements.mainLanguage = ctx.mainLanguage;
592
- }
593
- if (ctx.frameworks && ctx.frameworks.length > 0) {
594
- if (!(currentFaf.stack?.framework || currentFaf.stack?.frontend) && isFrontendFramework(ctx.frameworks[0])) {
595
- improvements.framework = ctx.frameworks[0];
596
- }
597
- if (!currentFaf.stack?.backend && isBackendFramework(ctx.frameworks[0])) {
598
- improvements.backend = ctx.frameworks[0];
599
- }
600
- }
601
- if (ctx.database && !(currentFaf.stack?.db || currentFaf.stack?.database)) {
602
- improvements.database = ctx.database;
603
- }
604
- if (ctx.backend && !currentFaf.stack?.backend) {
605
- improvements.backend = ctx.backend;
606
- }
607
- if (ctx.hosting && !currentFaf.stack?.hosting) {
608
- improvements.hosting = ctx.hosting;
609
- }
610
- // These might not exist in ctx, check if they do
611
- if (ctx.buildTool && !currentFaf.stack?.build) {
612
- improvements.buildTool = ctx.buildTool;
613
- }
614
- if (ctx.testing && !currentFaf.stack?.testing) {
615
- improvements.testing = ctx.testing;
616
- }
617
- if (ctx.cicd && !currentFaf.stack?.cicd) {
618
- improvements.cicd = ctx.cicd;
619
- }
620
- // Use FAB-Formats pattern analysis for better detection
621
- const patterns = fabAnalysis.discoveredFormats.map((f) => f.pattern);
622
- if (patterns.includes('dockerfile') && !currentFaf.stack?.hosting) {
623
- improvements.hosting = 'Docker';
624
- }
625
- if (patterns.includes('kubernetes') && !currentFaf.stack?.hosting) {
626
- improvements.hosting = 'Kubernetes';
627
- }
628
- if (patterns.includes('github-actions') && !currentFaf.stack?.cicd) {
629
- improvements.cicd = 'GitHub Actions';
630
- }
631
- if (patterns.includes('gitlab-ci') && !currentFaf.stack?.cicd) {
632
- improvements.cicd = 'GitLab CI';
633
- }
634
- }
635
- // 3. Detect project type from files
636
- const files = await fs_1.promises.readdir(projectPath);
637
- const projectType = detectProjectType(files);
638
- if (projectType && projectType !== 'unknown' && !currentFaf.project?.type) {
639
- improvements.projectType = projectType;
640
- }
641
- // 3.5 Try to get README for project goal and human context
642
- try {
643
- const readmePath = path.join(projectPath, 'README.md');
644
- const readmeContent = await fs_1.promises.readFile(readmePath, 'utf-8');
645
- const readmeInfo = extractFromReadme(readmeContent);
646
- if (readmeInfo.description && !currentFaf.project?.goal) {
647
- improvements.projectGoal = readmeInfo.description;
648
- }
649
- if (readmeInfo.who && !currentFaf.human_context?.who) {
650
- improvements.who = readmeInfo.who;
651
- }
652
- if (readmeInfo.what && !currentFaf.human_context?.what) {
653
- improvements.what = readmeInfo.what;
654
- }
655
- }
656
- catch {
657
- // No README or can't parse
658
- }
659
- // 4. Add REAL human context from git
660
- try {
661
- // Get git remote URL for WHERE context
662
- if (!currentFaf.human_context?.where) {
663
- const gitRemote = (0, child_process_1.execSync)('git config --get remote.origin.url', { cwd: projectPath })
664
- .toString().trim();
665
- if (gitRemote) {
666
- if (gitRemote.includes('github.com')) {
667
- improvements.where = 'GitHub';
668
- }
669
- else if (gitRemote.includes('gitlab')) {
670
- improvements.where = 'GitLab';
671
- }
672
- else if (gitRemote.includes('bitbucket')) {
673
- improvements.where = 'Bitbucket';
674
- }
675
- }
676
- }
677
- // Get last commit date for WHEN context
678
- if (!currentFaf.human_context?.when) {
679
- const lastCommit = (0, child_process_1.execSync)('git log -1 --format=%cd --date=short', { cwd: projectPath })
680
- .toString().trim();
681
- if (lastCommit) {
682
- improvements.when = `Active development since ${lastCommit}`;
683
- }
684
- }
685
- }
686
- catch {
687
- // No git or git commands failed
688
- }
689
- // 5. Add REAL technical details
690
- if (!currentFaf.stack?.language) {
691
- const language = detectLanguage(files);
692
- if (language) {
693
- improvements.mainLanguage = language;
694
- }
695
- }
696
- // 6. Analyze file patterns for more intelligent stack detection
697
- if (!currentFaf.stack?.hosting) {
698
- if (files.includes('vercel.json')) {
699
- improvements.hosting = 'Vercel';
700
- }
701
- else if (files.includes('netlify.toml')) {
702
- improvements.hosting = 'Netlify';
703
- }
704
- else if (files.includes('app.yaml')) {
705
- improvements.hosting = 'Google App Engine';
706
- }
707
- else if (files.includes('Procfile')) {
708
- improvements.hosting = 'Heroku';
709
- }
710
- else if (files.includes('.elasticbeanstalk')) {
711
- improvements.hosting = 'AWS Elastic Beanstalk';
712
- }
713
- }
714
- // 7. Intelligent project type detection from structure
715
- if (!currentFaf.project?.type) {
716
- const hasPublicDir = files.includes('public');
717
- const _hasSrcDir = files.includes('src');
718
- const hasApiDir = files.includes('api');
719
- const hasServerFile = files.some(f => f.includes('server'));
720
- const hasIndexHtml = files.includes('index.html');
721
- if (hasApiDir && hasPublicDir) {
722
- improvements.projectType = 'fullstack';
723
- }
724
- else if (hasServerFile && !hasIndexHtml) {
725
- improvements.projectType = 'backend-api';
726
- }
727
- else if (hasPublicDir && hasIndexHtml) {
728
- improvements.projectType = 'frontend';
729
- }
730
- else if (files.includes('cli.js') || files.includes('cli.ts')) {
731
- improvements.projectType = 'cli-tool';
732
- }
733
- }
734
- // 8. Extract runtime from files
735
- if (!currentFaf.stack?.runtime) {
736
- if (files.includes('package.json')) {
737
- improvements.runtime = 'Node.js';
738
- }
739
- else if (files.includes('requirements.txt')) {
740
- improvements.runtime = 'Python';
741
- }
742
- else if (files.includes('Gemfile')) {
743
- improvements.runtime = 'Ruby';
744
- }
745
- else if (files.includes('go.mod')) {
746
- improvements.runtime = 'Go';
747
- }
748
- else if (files.includes('Cargo.toml')) {
749
- improvements.runtime = 'Rust';
750
- }
751
- }
752
- // 9. Fill API type if we have a backend
753
- if (!(currentFaf.stack?.api || currentFaf.stack?.api_type) && (currentFaf.stack?.backend || improvements.backend)) {
754
- // Check package.json for API type hints
755
- try {
756
- const pkgPath = path.join(projectPath, 'package.json');
757
- const pkgContent = await fs_1.promises.readFile(pkgPath, 'utf-8');
758
- const pkg = JSON.parse(pkgContent);
759
- const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
760
- if (allDeps['graphql']) {
761
- improvements.api_type = 'GraphQL';
762
- }
763
- else if (allDeps['@trpc/server']) {
764
- improvements.api_type = 'tRPC';
765
- }
766
- else if (allDeps['socket.io']) {
767
- improvements.api_type = 'WebSocket';
768
- }
769
- else {
770
- improvements.api_type = 'REST';
771
- }
772
- }
773
- catch {
774
- improvements.api_type = 'REST'; // Default to REST if can't read package.json
775
- }
776
- }
777
- return improvements;
778
- }
779
- /**
780
- * Apply REAL enhancements to faf data
781
- */
782
- function applyRealEnhancements(fafData, improvements) {
783
- // Deep clone to preserve all nested fields
784
- const enhanced = JSON.parse(JSON.stringify(fafData));
785
- // Ensure structure exists
786
- enhanced.project = enhanced.project || {};
787
- enhanced.stack = enhanced.stack || {};
788
- enhanced.human_context = enhanced.human_context || {};
789
- enhanced.instant_context = enhanced.instant_context || {};
790
- // Apply project improvements (CRITICAL SLOTS)
791
- if (improvements.projectName) {
792
- enhanced.project.name = improvements.projectName;
793
- }
794
- if (improvements.projectGoal) {
795
- enhanced.project.goal = improvements.projectGoal;
796
- }
797
- if (improvements.mainLanguage) {
798
- enhanced.project.main_language = improvements.mainLanguage;
799
- }
800
- if (improvements.version) {
801
- enhanced.project.version = improvements.version;
802
- }
803
- if (improvements.author) {
804
- enhanced.project.author = improvements.author;
805
- }
806
- if (improvements.license) {
807
- enhanced.project.license = improvements.license;
808
- }
809
- if (improvements.projectType) {
810
- enhanced.project.type = improvements.projectType;
811
- }
812
- // Apply stack improvements (TECHNICAL SLOTS)
813
- if (improvements.framework) {
814
- enhanced.stack.framework = improvements.framework;
815
- }
816
- if (improvements.backend) {
817
- enhanced.stack.backend = improvements.backend;
818
- }
819
- if (improvements.database) {
820
- enhanced.stack.db = improvements.database;
821
- }
822
- if (improvements.buildTool) {
823
- enhanced.stack.build = improvements.buildTool;
824
- }
825
- if (improvements.testing) {
826
- enhanced.stack.testing = improvements.testing;
827
- }
828
- if (improvements.cicd) {
829
- enhanced.stack.cicd = improvements.cicd;
830
- }
831
- if (improvements.runtime) {
832
- enhanced.stack.runtime = improvements.runtime;
833
- }
834
- if (improvements.hosting) {
835
- enhanced.stack.hosting = improvements.hosting;
836
- }
837
- if (improvements.api_type) {
838
- enhanced.stack.api = improvements.api_type;
839
- }
840
- if (improvements.mainLanguage) {
841
- enhanced.stack.language = improvements.mainLanguage;
842
- }
843
- // Apply human context improvements (6 W's - CRITICAL FOR AI UNDERSTANDING)
844
- if (improvements.who) {
845
- enhanced.human_context.who = improvements.who;
846
- }
847
- if (improvements.what) {
848
- enhanced.human_context.what = improvements.what;
849
- }
850
- if (improvements.why) {
851
- enhanced.human_context.why = improvements.why;
852
- }
853
- if (improvements.where) {
854
- enhanced.human_context.where = improvements.where;
855
- }
856
- if (improvements.when) {
857
- enhanced.human_context.when = improvements.when;
858
- }
859
- if (improvements.how) {
860
- enhanced.human_context.how = improvements.how;
861
- }
862
- // Apply instant context improvements
863
- if (improvements.keyFiles) {
864
- enhanced.instant_context.key_files = improvements.keyFiles;
865
- }
866
- // Add metadata
867
- enhanced.meta = enhanced.meta || {};
868
- enhanced.meta.last_enhanced = new Date().toISOString();
869
- enhanced.meta.enhanced_by = 'faf-real-enhance';
870
- return enhanced;
871
- }
872
- /**
873
- * Helper functions for detection
874
- */
875
- function detectFrameworks(deps) {
876
- const frameworks = [];
877
- // Frontend frameworks
878
- if (deps['react']) {
879
- frameworks.push('React');
880
- }
881
- if (deps['vue']) {
882
- frameworks.push('Vue');
883
- }
884
- if (deps['@angular/core']) {
885
- frameworks.push('Angular');
886
- }
887
- if (deps['svelte']) {
888
- frameworks.push('Svelte');
889
- }
890
- if (deps['solid-js']) {
891
- frameworks.push('SolidJS');
892
- }
893
- if (deps['preact']) {
894
- frameworks.push('Preact');
895
- }
896
- if (deps['@ember/core']) {
897
- frameworks.push('Ember');
898
- }
899
- // Meta-frameworks
900
- if (deps['next']) {
901
- frameworks.push('Next.js');
902
- }
903
- if (deps['nuxt']) {
904
- frameworks.push('Nuxt');
905
- }
906
- if (deps['gatsby']) {
907
- frameworks.push('Gatsby');
908
- }
909
- if (deps['@remix-run/react']) {
910
- frameworks.push('Remix');
911
- }
912
- if (deps['astro']) {
913
- frameworks.push('Astro');
914
- }
915
- if (deps['@sveltekit/adapter-auto']) {
916
- frameworks.push('SvelteKit');
917
- }
918
- // Backend frameworks
919
- if (deps['express']) {
920
- frameworks.push('Express');
921
- }
922
- if (deps['fastify']) {
923
- frameworks.push('Fastify');
924
- }
925
- if (deps['@nestjs/core']) {
926
- frameworks.push('NestJS');
927
- }
928
- if (deps['koa']) {
929
- frameworks.push('Koa');
930
- }
931
- if (deps['@hapi/hapi']) {
932
- frameworks.push('Hapi');
933
- }
934
- if (deps['@feathersjs/feathers']) {
935
- frameworks.push('Feathers');
936
- }
937
- if (deps['@adonisjs/core']) {
938
- frameworks.push('AdonisJS');
939
- }
940
- return frameworks;
941
- }
942
- function isFrontendFramework(framework) {
943
- const frontend = ['React', 'Vue', 'Angular', 'Svelte', 'SolidJS', 'Preact', 'Ember',
944
- 'Next.js', 'Nuxt', 'Gatsby', 'Remix', 'Astro', 'SvelteKit'];
945
- return frontend.includes(framework);
946
- }
947
- function isBackendFramework(framework) {
948
- const backend = ['Express', 'Fastify', 'NestJS', 'Koa', 'Hapi', 'Feathers', 'AdonisJS'];
949
- return backend.includes(framework);
950
- }
951
- function detectBuildTool(deps) {
952
- if (deps['vite']) {
953
- return 'Vite';
954
- }
955
- if (deps['webpack']) {
956
- return 'Webpack';
957
- }
958
- if (deps['@parcel/core'] || deps['parcel']) {
959
- return 'Parcel';
960
- }
961
- if (deps['esbuild']) {
962
- return 'ESBuild';
963
- }
964
- if (deps['rollup']) {
965
- return 'Rollup';
966
- }
967
- if (deps['@swc/core']) {
968
- return 'SWC';
969
- }
970
- if (deps['turbopack']) {
971
- return 'Turbopack';
972
- }
973
- if (deps['snowpack']) {
974
- return 'Snowpack';
975
- }
976
- if (deps['@rspack/core']) {
977
- return 'Rspack';
978
- }
979
- return 'npm';
980
- }
981
- function detectProjectType(files) {
982
- if (files.includes('package.json')) {
983
- if (files.includes('tsconfig.json')) {
984
- return 'typescript-node';
985
- }
986
- return 'javascript-node';
987
- }
988
- if (files.includes('requirements.txt') || files.includes('setup.py')) {
989
- return 'python';
990
- }
991
- if (files.includes('Cargo.toml')) {
992
- return 'rust';
993
- }
994
- if (files.includes('go.mod')) {
995
- return 'go';
996
- }
997
- return 'unknown';
998
- }
999
- function detectLanguage(files) {
1000
- const extensions = files.map(f => path.extname(f));
1001
- if (extensions.includes('.ts') || extensions.includes('.tsx')) {
1002
- return 'TypeScript';
1003
- }
1004
- if (extensions.includes('.js') || extensions.includes('.jsx')) {
1005
- return 'JavaScript';
1006
- }
1007
- if (extensions.includes('.py')) {
1008
- return 'Python';
1009
- }
1010
- if (extensions.includes('.rs')) {
1011
- return 'Rust';
1012
- }
1013
- if (extensions.includes('.go')) {
1014
- return 'Go';
1015
- }
1016
- if (extensions.includes('.java')) {
1017
- return 'Java';
1018
- }
1019
- return 'Unknown';
1020
- }
1021
- function isImportantFile(filename) {
1022
- const important = [
1023
- 'index', 'main', 'app', 'server', 'cli',
1024
- 'config', 'package.json', 'tsconfig.json',
1025
- 'webpack.config', 'vite.config', 'README'
1026
- ];
1027
- return important.some(i => filename.toLowerCase().includes(i));
1028
- }
1029
- /**
1030
- * Extract info from README
1031
- */
1032
- function extractFromReadme(content) {
1033
- const info = {};
1034
- // Try to get first paragraph as description
1035
- const lines = content.split('\n').filter(l => l.trim());
1036
- const descLine = lines.find(l => !l.startsWith('#') && l.length > 20);
1037
- if (descLine) {
1038
- info.description = descLine.trim();
1039
- }
1040
- // Look for "For" or "Built for" patterns
1041
- const forMatch = content.match(/(?:built for|for|designed for|made for)\s+([^.\n]+)/i);
1042
- if (forMatch) {
1043
- info.who = forMatch[1].trim();
1044
- }
1045
- // Look for problem statements
1046
- const problemMatch = content.match(/(?:solves?|fixes?|addresses?|handles?)\s+([^.\n]+)/i);
1047
- if (problemMatch) {
1048
- info.what = problemMatch[1].trim();
1049
- }
1050
- return info;
1051
- }
1052
- /**
1053
- * Detect testing framework from dependencies
1054
- */
1055
- function detectTestingFramework(deps) {
1056
- // Unit testing
1057
- if (deps['vitest']) {
1058
- return 'Vitest';
1059
- }
1060
- if (deps['jest']) {
1061
- return 'Jest';
1062
- }
1063
- if (deps['mocha']) {
1064
- return 'Mocha';
1065
- }
1066
- if (deps['jasmine']) {
1067
- return 'Jasmine';
1068
- }
1069
- if (deps['ava']) {
1070
- return 'AVA';
1071
- }
1072
- if (deps['tape']) {
1073
- return 'Tape';
1074
- }
1075
- if (deps['uvu']) {
1076
- return 'uvu';
1077
- }
1078
- // E2E testing
1079
- if (deps['@playwright/test'] || deps['playwright']) {
1080
- return 'Playwright';
1081
- }
1082
- if (deps['cypress']) {
1083
- return 'Cypress';
1084
- }
1085
- if (deps['puppeteer']) {
1086
- return 'Puppeteer';
1087
- }
1088
- if (deps['webdriverio']) {
1089
- return 'WebdriverIO';
1090
- }
1091
- if (deps['nightwatch']) {
1092
- return 'Nightwatch';
1093
- }
1094
- // Testing utilities
1095
- if (deps['@testing-library/react']) {
1096
- return 'React Testing Library';
1097
- }
1098
- if (deps['@testing-library/vue']) {
1099
- return 'Vue Testing Library';
1100
- }
1101
- if (deps['enzyme']) {
1102
- return 'Enzyme';
1103
- }
1104
- return null;
1105
- }
1106
- /**
1107
- * Detect database from dependencies
1108
- */
1109
- function detectDatabase(deps) {
1110
- // ORMs that support multiple databases
1111
- if (deps['@prisma/client']) {
1112
- return 'Prisma';
1113
- }
1114
- if (deps['typeorm']) {
1115
- return 'TypeORM';
1116
- }
1117
- if (deps['sequelize']) {
1118
- return 'Sequelize';
1119
- }
1120
- if (deps['drizzle-orm']) {
1121
- return 'Drizzle';
1122
- }
1123
- if (deps['kysely']) {
1124
- return 'Kysely';
1125
- }
1126
- // Specific databases
1127
- if (deps['pg'] || deps['postgres']) {
1128
- return 'PostgreSQL';
1129
- }
1130
- if (deps['mysql'] || deps['mysql2']) {
1131
- return 'MySQL';
1132
- }
1133
- if (deps['mongodb'] || deps['mongoose']) {
1134
- return 'MongoDB';
1135
- }
1136
- if (deps['sqlite3'] || deps['better-sqlite3']) {
1137
- return 'SQLite';
1138
- }
1139
- if (deps['redis'] || deps['ioredis']) {
1140
- return 'Redis';
1141
- }
1142
- if (deps['@supabase/supabase-js']) {
1143
- return 'Supabase';
1144
- }
1145
- if (deps['firebase']) {
1146
- return 'Firebase';
1147
- }
1148
- if (deps['@planetscale/database']) {
1149
- return 'PlanetScale';
1150
- }
1151
- if (deps['@neondatabase/serverless']) {
1152
- return 'Neon';
1153
- }
1154
- if (deps['@vercel/postgres']) {
1155
- return 'Vercel Postgres';
1156
- }
1157
- return null;
1158
- }
1159
- function displayImprovements(improvements) {
1160
- Object.entries(improvements).forEach(([key, value]) => {
1161
- console.log(colors_1.chalk.gray(` • ${key}: ${value}`));
1162
- });
1163
- }
1164
- //# sourceMappingURL=enhance-real.js.map