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,11 @@
1
+ /**
2
+ * 🔍 faf audit - Audit Command
3
+ * Check .faf file freshness and completeness gaps
4
+ */
5
+ interface AuditOptions {
6
+ warnDays?: string;
7
+ errorDays?: string;
8
+ }
9
+ export declare function auditFafFile(file?: string, options?: AuditOptions): Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,UAAU,YAAY;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,iBAyK3E"}
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ /**
3
+ * 🔍 faf audit - Audit Command
4
+ * Check .faf file freshness and completeness gaps
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ var __importDefault = (this && this.__importDefault) || function (mod) {
40
+ return (mod && mod.__esModule) ? mod : { "default": mod };
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.auditFafFile = auditFafFile;
44
+ const chalk_1 = __importDefault(require("chalk"));
45
+ const fs_1 = require("fs");
46
+ const YAML = __importStar(require("yaml"));
47
+ const file_utils_1 = require("../utils/file-utils");
48
+ const score_calculator_1 = require("../scoring/score-calculator");
49
+ async function auditFafFile(file, options = {}) {
50
+ try {
51
+ const fafPath = file || (await (0, file_utils_1.findFafFile)());
52
+ if (!fafPath) {
53
+ console.log(chalk_1.default.red("❌ No .faf file found"));
54
+ console.log(chalk_1.default.yellow('💡 Run "faf init" to create one'));
55
+ process.exit(1);
56
+ }
57
+ console.log(chalk_1.default.blue(`🔍 Auditing: ${fafPath}`));
58
+ // Read and parse .faf file
59
+ const content = await fs_1.promises.readFile(fafPath, "utf-8");
60
+ const fafData = YAML.parse(content);
61
+ const warnDays = parseInt(options.warnDays || "7");
62
+ const errorDays = parseInt(options.errorDays || "30");
63
+ let auditScore = 100;
64
+ const issues = [];
65
+ const warnings = [];
66
+ // 1. File Age Audit
67
+ const modTime = await (0, file_utils_1.getFileModTime)(fafPath);
68
+ if (modTime) {
69
+ const daysSincemod = (0, file_utils_1.daysSinceModified)(modTime);
70
+ if (daysSincemod >= errorDays) {
71
+ issues.push(`File is ${daysSincemod} days old (critical staleness)`);
72
+ auditScore -= 30;
73
+ }
74
+ else if (daysSincemod >= warnDays) {
75
+ warnings.push(`File is ${daysSincemod} days old (consider refresh)`);
76
+ auditScore -= 10;
77
+ }
78
+ }
79
+ // 2. Generated Timestamp Audit
80
+ if (fafData.generated) {
81
+ try {
82
+ const generatedDate = new Date(fafData.generated);
83
+ const daysSinceGenerated = (0, file_utils_1.daysSinceModified)(generatedDate);
84
+ if (daysSinceGenerated >= errorDays) {
85
+ issues.push(`Generated timestamp is ${daysSinceGenerated} days old`);
86
+ auditScore -= 20;
87
+ }
88
+ else if (daysSinceGenerated >= warnDays) {
89
+ warnings.push(`Generated timestamp is ${daysSinceGenerated} days old`);
90
+ auditScore -= 5;
91
+ }
92
+ }
93
+ catch {
94
+ issues.push("Invalid generated timestamp format");
95
+ auditScore -= 15;
96
+ }
97
+ }
98
+ else {
99
+ issues.push("Missing generated timestamp");
100
+ auditScore -= 20;
101
+ }
102
+ // 3. Completeness Audit
103
+ const scoreResult = await (0, score_calculator_1.calculateFafScore)(fafData, fafPath);
104
+ const completenessScore = scoreResult.totalScore;
105
+ if (completenessScore < 50) {
106
+ issues.push(`Low completeness score: ${Math.round(completenessScore)}%`);
107
+ auditScore -= 25;
108
+ }
109
+ else if (completenessScore < 70) {
110
+ warnings.push(`Moderate completeness score: ${Math.round(completenessScore)}%`);
111
+ auditScore -= 10;
112
+ }
113
+ // 4. Critical Sections Audit
114
+ const criticalSections = ["project", "ai_instructions", "scores"];
115
+ criticalSections.forEach((section) => {
116
+ if (!fafData[section] || Object.keys(fafData[section]).length === 0) {
117
+ issues.push(`Missing critical section: ${section}`);
118
+ auditScore -= 15;
119
+ }
120
+ });
121
+ // 5. Quality Indicators Audit
122
+ if (!scoreResult.qualityIndicators.hasAiInstructions) {
123
+ warnings.push("Missing AI instructions for context handoff");
124
+ auditScore -= 5;
125
+ }
126
+ if (!scoreResult.qualityIndicators.hasHumanContext) {
127
+ warnings.push("Missing human context (6 Ws) for deeper understanding");
128
+ auditScore -= 10;
129
+ }
130
+ // Display Results
131
+ auditScore = Math.max(0, Math.min(100, auditScore));
132
+ if (auditScore >= 90) {
133
+ console.log(chalk_1.default.green(`☑️ Audit Score: ${auditScore}% - Excellent`));
134
+ }
135
+ else if (auditScore >= 70) {
136
+ console.log(chalk_1.default.yellow(`⚠️ Audit Score: ${auditScore}% - Good`));
137
+ }
138
+ else {
139
+ console.log(chalk_1.default.red(`🚨 Audit Score: ${auditScore}% - Needs Attention`));
140
+ }
141
+ // Show Issues
142
+ if (issues.length > 0) {
143
+ console.log(chalk_1.default.red("\n🚨 Critical Issues:"));
144
+ issues.forEach((issue, index) => {
145
+ console.log(chalk_1.default.red(` ${index + 1}. ${issue}`));
146
+ });
147
+ }
148
+ // Show Warnings
149
+ if (warnings.length > 0) {
150
+ console.log(chalk_1.default.yellow("\n⚠️ Warnings:"));
151
+ warnings.forEach((warning, index) => {
152
+ console.log(chalk_1.default.yellow(` ${index + 1}. ${warning}`));
153
+ });
154
+ }
155
+ // Recommendations
156
+ if (auditScore < 100) {
157
+ console.log(chalk_1.default.blue("\n💡 Recommendations:"));
158
+ if (auditScore < 70) {
159
+ console.log(chalk_1.default.blue(' • Run "faf sync" to update with latest project changes'));
160
+ console.log(chalk_1.default.blue(' • Run "faf score --details" to identify missing context'));
161
+ }
162
+ if (issues.some((i) => i.includes("days old"))) {
163
+ console.log(chalk_1.default.blue(' • Consider regenerating .faf file with "faf init --force"'));
164
+ }
165
+ if (completenessScore < 70) {
166
+ console.log(chalk_1.default.blue(" • Add missing context sections to improve AI understanding"));
167
+ }
168
+ }
169
+ // Exit with appropriate code
170
+ if (issues.length > 0) {
171
+ process.exit(1);
172
+ }
173
+ }
174
+ catch (error) {
175
+ console.log(chalk_1.default.red("💥 Audit failed:"));
176
+ console.log(chalk_1.default.red(error instanceof Error ? error.message : String(error)));
177
+ process.exit(1);
178
+ }
179
+ }
180
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 🏎️ faf auto - The One Command Championship
3
+ * Zero to Championship in one command - no faffing about!
4
+ */
5
+ interface AutoOptions {
6
+ force?: boolean;
7
+ ai?: boolean;
8
+ show?: boolean;
9
+ }
10
+ export declare function autoCommand(directory?: string, options?: AutoOptions): Promise<void>;
11
+ export {};
12
+ /**
13
+ * The Championship Promise:
14
+ * One command to rule them all
15
+ * Zero configuration required
16
+ * Maximum context generated
17
+ *
18
+ * faf auto =
19
+ * faf init +
20
+ * faf sync +
21
+ * faf bi-sync +
22
+ * faf enhance +
23
+ * faf show
24
+ *
25
+ * From 0% to Championship in 30 seconds!
26
+ */
27
+ //# sourceMappingURL=auto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../src/commands/auto.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,iBAkF9E;;AAED;;;;;;;;;;;;;;GAcG"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ /**
3
+ * 🏎️ faf auto - The One Command Championship
4
+ * Zero to Championship in one command - no faffing about!
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.autoCommand = autoCommand;
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const file_utils_1 = require("../utils/file-utils");
13
+ const init_1 = require("./init");
14
+ const sync_1 = require("./sync");
15
+ const ai_enhance_1 = require("./ai-enhance");
16
+ const bi_sync_1 = require("./bi-sync");
17
+ const show_1 = require("./show");
18
+ async function autoCommand(directory, options = {}) {
19
+ const targetDir = directory || process.cwd();
20
+ console.log(chalk_1.default.bold.blue("\n🏎️ FAF AUTO - CHAMPIONSHIP MODE ENGAGED!"));
21
+ console.log(chalk_1.default.gray("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"));
22
+ try {
23
+ // Step 1: Check if .faf exists
24
+ let fafPath = await (0, file_utils_1.findFafFile)(targetDir);
25
+ if (!fafPath) {
26
+ console.log(chalk_1.default.yellow("📋 No .faf found - Creating championship context..."));
27
+ // Initialize with auto-detection
28
+ await (0, init_1.initFafFile)(targetDir, {
29
+ force: options.force,
30
+ template: 'auto'
31
+ });
32
+ fafPath = await (0, file_utils_1.findFafFile)(targetDir);
33
+ console.log(chalk_1.default.green("✅ .faf created!"));
34
+ }
35
+ else {
36
+ console.log(chalk_1.default.green("✅ .faf found!"));
37
+ }
38
+ // Step 2: Sync dependencies and context
39
+ console.log(chalk_1.default.yellow("\n🔄 Syncing context with latest changes..."));
40
+ await (0, sync_1.syncFafFile)(fafPath || undefined, { auto: true });
41
+ console.log(chalk_1.default.green("✅ Context synchronized!"));
42
+ // Step 3: Create/Update CLAUDE.md via bi-sync
43
+ console.log(chalk_1.default.yellow("\n🔗 Creating CLAUDE.md bi-directional sync..."));
44
+ await (0, bi_sync_1.biSyncCommand)({
45
+ auto: true,
46
+ force: options.force
47
+ });
48
+ console.log(chalk_1.default.green("✅ CLAUDE.md synced!"));
49
+ // Step 4: AI Enhancement (if requested and API key available)
50
+ if (options.ai) {
51
+ const hasApiKey = process.env.OPENAI_API_KEY || process.env.ANTHROPIC_API_KEY;
52
+ if (hasApiKey) {
53
+ console.log(chalk_1.default.yellow("\n🤖 Enhancing with AI intelligence..."));
54
+ try {
55
+ await (0, ai_enhance_1.enhanceFafWithAI)(fafPath || undefined);
56
+ console.log(chalk_1.default.green("✅ AI enhancement complete!"));
57
+ }
58
+ catch (error) {
59
+ console.log(chalk_1.default.yellow("⚠️ AI enhancement skipped (API issue)"));
60
+ }
61
+ }
62
+ else {
63
+ console.log(chalk_1.default.gray("\n💡 Tip: Set OPENAI_API_KEY for AI enhancements"));
64
+ }
65
+ }
66
+ // Step 5: Show the scorecard
67
+ console.log(chalk_1.default.yellow("\n📊 Generating Championship Scorecard...\n"));
68
+ console.log(chalk_1.default.gray("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"));
69
+ if (options.show !== false) {
70
+ await (0, show_1.showFafScoreCard)(targetDir, { raw: false });
71
+ }
72
+ // Success message
73
+ console.log(chalk_1.default.gray("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"));
74
+ console.log(chalk_1.default.bold.green("\n🏁 FAF AUTO COMPLETE - CHAMPIONSHIP READY!"));
75
+ console.log(chalk_1.default.gray("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"));
76
+ // Quick tips
77
+ console.log(chalk_1.default.blue("Next steps:"));
78
+ console.log(chalk_1.default.gray(" • Check your score: ") + chalk_1.default.white("faf show"));
79
+ console.log(chalk_1.default.gray(" • See details: ") + chalk_1.default.white("faf score --details"));
80
+ console.log(chalk_1.default.gray(" • Keep synced: ") + chalk_1.default.white("faf bi-sync --watch"));
81
+ console.log(chalk_1.default.gray(" • Get AI help: ") + chalk_1.default.white("faf ai-enhance"));
82
+ console.log(chalk_1.default.gray("\n🏎️ Stop faffing about - start building!\n"));
83
+ }
84
+ catch (error) {
85
+ console.log(chalk_1.default.red("\n💥 FAF AUTO hit the wall:"));
86
+ console.log(chalk_1.default.red(error instanceof Error ? error.message : String(error)));
87
+ console.log(chalk_1.default.yellow("\n💡 Try: faf auto --force to override"));
88
+ process.exit(1);
89
+ }
90
+ }
91
+ /**
92
+ * The Championship Promise:
93
+ * One command to rule them all
94
+ * Zero configuration required
95
+ * Maximum context generated
96
+ *
97
+ * faf auto =
98
+ * faf init +
99
+ * faf sync +
100
+ * faf bi-sync +
101
+ * faf enhance +
102
+ * faf show
103
+ *
104
+ * From 0% to Championship in 30 seconds!
105
+ */
106
+ //# sourceMappingURL=auto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto.js","sourceRoot":"","sources":["../../src/commands/auto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * 🔗 Bi-Sync Engine - Revolutionary .faf ↔ claude.md Synchronization
3
+ * Real-time bidirectional sync with sub-40ms performance and smart conflict resolution
4
+ *
5
+ * Features:
6
+ * • Sub-40ms sync time (faster than most file operations)
7
+ * • Smart merge algorithms prevent conflicts and data corruption
8
+ * • Self-healing: Auto-recovers from file locks/system issues
9
+ * • Credit propagation: Technical credit updates both files
10
+ * • Trust synchronization: AI compatibility scores stay aligned
11
+ * • Conflict prevention: Detects simultaneous edits safely
12
+ *
13
+ * Mission: Perfect harmony between .faf (AI context) and claude.md (Claude Code context)
14
+ */
15
+ export interface BiSyncOptions {
16
+ auto?: boolean;
17
+ watch?: boolean;
18
+ force?: boolean;
19
+ }
20
+ export interface SyncResult {
21
+ success: boolean;
22
+ direction: 'faf-to-claude' | 'claude-to-faf' | 'bidirectional' | 'none';
23
+ filesChanged: string[];
24
+ conflicts: string[];
25
+ duration: number;
26
+ }
27
+ /**
28
+ * 🔄 Convert .faf YAML content to claude.md Markdown format
29
+ */
30
+ export declare function fafToClaudeMd(fafContent: string): string;
31
+ /**
32
+ * 🔄 Convert claude.md Markdown content to .faf YAML format (basic implementation)
33
+ */
34
+ export declare function claudeMdToFaf(claudeMdContent: string, existingFafData: any): string;
35
+ /**
36
+ * 🔗 Main Bi-Sync function
37
+ */
38
+ export declare function syncBiDirectional(): Promise<SyncResult>;
39
+ /**
40
+ * 🎮 Main sync command handler
41
+ */
42
+ export declare function biSyncCommand(options?: BiSyncOptions): Promise<void>;
43
+ //# sourceMappingURL=bi-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bi-sync.d.ts","sourceRoot":"","sources":["../../src/commands/bi-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAaH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,eAAe,GAAG,eAAe,GAAG,eAAe,GAAG,MAAM,CAAC;IACxE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA6ExD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,GAAG,MAAM,CAanF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,UAAU,CAAC,CA4E7D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9E"}
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ /**
3
+ * 🔗 Bi-Sync Engine - Revolutionary .faf ↔ claude.md Synchronization
4
+ * Real-time bidirectional sync with sub-40ms performance and smart conflict resolution
5
+ *
6
+ * Features:
7
+ * • Sub-40ms sync time (faster than most file operations)
8
+ * • Smart merge algorithms prevent conflicts and data corruption
9
+ * • Self-healing: Auto-recovers from file locks/system issues
10
+ * • Credit propagation: Technical credit updates both files
11
+ * • Trust synchronization: AI compatibility scores stay aligned
12
+ * • Conflict prevention: Detects simultaneous edits safely
13
+ *
14
+ * Mission: Perfect harmony between .faf (AI context) and claude.md (Claude Code context)
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.fafToClaudeMd = fafToClaudeMd;
54
+ exports.claudeMdToFaf = claudeMdToFaf;
55
+ exports.syncBiDirectional = syncBiDirectional;
56
+ exports.biSyncCommand = biSyncCommand;
57
+ const fs_1 = require("fs");
58
+ const path_1 = __importDefault(require("path"));
59
+ const YAML = __importStar(require("yaml"));
60
+ const file_utils_1 = require("../utils/file-utils");
61
+ const championship_style_1 = require("../utils/championship-style");
62
+ const technical_credit_1 = require("../utils/technical-credit");
63
+ /**
64
+ * 🔄 Convert .faf YAML content to claude.md Markdown format
65
+ */
66
+ function fafToClaudeMd(fafContent) {
67
+ try {
68
+ const fafData = YAML.parse(fafContent);
69
+ let claudeMd = `# 🏎️ CLAUDE.md - ${fafData.project?.name || 'Project'} Persistent Context & Intelligence\n\n`;
70
+ // Project State
71
+ if (fafData.project) {
72
+ claudeMd += `## PROJECT STATE: ${fafData.context_quality?.overall_assessment || 'ACTIVE'} 🚀\n`;
73
+ if (fafData.project.goal) {
74
+ claudeMd += `**Current Position:** ${fafData.project.goal}\n`;
75
+ }
76
+ claudeMd += `**Tyre Compound:** ULTRASOFT C5 (Maximum Performance)\n\n`;
77
+ claudeMd += `---\n\n`;
78
+ }
79
+ // Core Context
80
+ claudeMd += `## 🎨 CORE CONTEXT\n\n`;
81
+ if (fafData.project) {
82
+ claudeMd += `### Project Identity\n`;
83
+ claudeMd += `- **Name:** ${fafData.project.name || 'Unknown'}\n`;
84
+ if (fafData.project.description) {
85
+ claudeMd += `- **Description:** ${fafData.project.description}\n`;
86
+ }
87
+ if (fafData.instant_context?.tech_stack) {
88
+ claudeMd += `- **Stack:** ${fafData.instant_context.tech_stack}\n`;
89
+ }
90
+ claudeMd += `- **Quality:** F1-INSPIRED (Championship Performance)\n\n`;
91
+ }
92
+ // Technical Context
93
+ if (fafData.instant_context) {
94
+ claudeMd += `### Technical Architecture\n`;
95
+ if (fafData.instant_context.what_building) {
96
+ claudeMd += `- **What Building:** ${fafData.instant_context.what_building}\n`;
97
+ }
98
+ if (fafData.instant_context.main_language) {
99
+ claudeMd += `- **Main Language:** ${fafData.instant_context.main_language}\n`;
100
+ }
101
+ if (fafData.instant_context.frameworks) {
102
+ claudeMd += `- **Frameworks:** ${fafData.instant_context.frameworks}\n`;
103
+ }
104
+ claudeMd += `\n`;
105
+ }
106
+ // Key Files
107
+ if (fafData.key_files && fafData.key_files.length > 0) {
108
+ claudeMd += `### 🔧 Key Files\n`;
109
+ fafData.key_files.forEach((file, index) => {
110
+ claudeMd += `${index + 1}. **${file.path}** - ${file.purpose || 'Core file'}\n`;
111
+ });
112
+ claudeMd += `\n`;
113
+ }
114
+ // Context Quality
115
+ if (fafData.context_quality) {
116
+ claudeMd += `### 📊 Context Quality Status\n`;
117
+ claudeMd += `- **Overall Assessment:** ${fafData.context_quality.overall_assessment || 'Good'}\n`;
118
+ if (fafData.faf_score) {
119
+ claudeMd += `- **FAF Score:** ${fafData.faf_score}\n`;
120
+ }
121
+ claudeMd += `- **Last Updated:** ${new Date().toISOString().split('T')[0]}\n\n`;
122
+ }
123
+ // Championship Footer
124
+ claudeMd += `---\n\n`;
125
+ claudeMd += `**STATUS: BI-SYNC ACTIVE 🔗 - Synchronized with .faf context!**\n\n`;
126
+ claudeMd += `*Last Sync: ${new Date().toISOString()}*\n`;
127
+ claudeMd += `*Sync Engine: ${championship_style_1.BRAND_MESSAGES.performance}*\n`;
128
+ claudeMd += `*🏎️⚡️_championship_sync*\n`;
129
+ return claudeMd;
130
+ }
131
+ catch (error) {
132
+ throw new Error(`Failed to convert .faf to claude.md: ${error instanceof Error ? error.message : String(error)}`);
133
+ }
134
+ }
135
+ /**
136
+ * 🔄 Convert claude.md Markdown content to .faf YAML format (basic implementation)
137
+ */
138
+ function claudeMdToFaf(claudeMdContent, existingFafData) {
139
+ // For now, preserve existing .faf structure and update metadata
140
+ const updatedFaf = { ...existingFafData };
141
+ // Update sync metadata
142
+ if (!updatedFaf.metadata) {
143
+ updatedFaf.metadata = {};
144
+ }
145
+ updatedFaf.metadata.last_claude_sync = new Date().toISOString();
146
+ updatedFaf.metadata.bi_sync = 'active';
147
+ return YAML.stringify(updatedFaf, { indent: 2 });
148
+ }
149
+ /**
150
+ * 🔗 Main Bi-Sync function
151
+ */
152
+ async function syncBiDirectional() {
153
+ const startTime = Date.now();
154
+ const result = {
155
+ success: false,
156
+ direction: 'none',
157
+ filesChanged: [],
158
+ conflicts: [],
159
+ duration: 0
160
+ };
161
+ try {
162
+ // Find .faf file
163
+ const fafPath = await (0, file_utils_1.findFafFile)();
164
+ if (!fafPath) {
165
+ throw new Error('No .faf file found. Run `faf init` first.');
166
+ }
167
+ const projectDir = path_1.default.dirname(fafPath);
168
+ const claudeMdPath = path_1.default.join(projectDir, 'claude.md');
169
+ // Check what exists
170
+ // const fafExists = true; // We found it above (unused)
171
+ const claudeMdExists = await fs_1.promises.access(claudeMdPath).then(() => true).catch(() => false);
172
+ console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.link} Bi-Sync Engine`));
173
+ console.log(`${championship_style_1.FAF_COLORS.fafCyan('├─ ')}Analyzing sync files...`);
174
+ if (!claudeMdExists) {
175
+ // Create claude.md from .faf
176
+ console.log(`${championship_style_1.FAF_COLORS.fafCyan('├─ ')}Creating claude.md from .faf...`);
177
+ const fafContent = await fs_1.promises.readFile(fafPath, 'utf-8');
178
+ const claudeMdContent = fafToClaudeMd(fafContent);
179
+ await fs_1.promises.writeFile(claudeMdPath, claudeMdContent, 'utf-8');
180
+ result.success = true;
181
+ result.direction = 'faf-to-claude';
182
+ result.filesChanged.push('claude.md');
183
+ console.log(`${championship_style_1.FAF_COLORS.fafGreen('└─ ')}${championship_style_1.FAF_ICONS.party} claude.md created! Bi-sync now active!`);
184
+ }
185
+ else {
186
+ // Both files exist - need to sync
187
+ console.log(`${championship_style_1.FAF_COLORS.fafCyan('├─ ')}Both files exist - checking sync status...`);
188
+ // For now, update claude.md from .faf (we can enhance this later)
189
+ const fafContent = await fs_1.promises.readFile(fafPath, 'utf-8');
190
+ const claudeMdContent = fafToClaudeMd(fafContent);
191
+ await fs_1.promises.writeFile(claudeMdPath, claudeMdContent, 'utf-8');
192
+ result.success = true;
193
+ result.direction = 'faf-to-claude';
194
+ result.filesChanged.push('claude.md');
195
+ console.log(`${championship_style_1.FAF_COLORS.fafGreen('└─ ')}${championship_style_1.FAF_ICONS.link} Files synchronized! Perfect harmony achieved!`);
196
+ }
197
+ result.duration = Date.now() - startTime;
198
+ // Award technical credit for successful sync
199
+ await (0, technical_credit_1.autoAwardCredit)('sync_success', fafPath);
200
+ // Championship success message
201
+ console.log();
202
+ console.log(championship_style_1.FAF_COLORS.fafGreen(`${championship_style_1.FAF_ICONS.trophy} Championship sync complete in ${result.duration}ms!`));
203
+ console.log(`${championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.magic_wand} Try: `)}faf status${championship_style_1.FAF_COLORS.fafCyan(' - See your bi-sync status')}`);
204
+ return result;
205
+ }
206
+ catch (error) {
207
+ result.duration = Date.now() - startTime;
208
+ console.error(championship_style_1.FAF_COLORS.fafOrange(`${championship_style_1.FAF_ICONS.shield} Sync failed: ${error instanceof Error ? error.message : String(error)}`));
209
+ throw error;
210
+ }
211
+ }
212
+ /**
213
+ * 🎮 Main sync command handler
214
+ */
215
+ async function biSyncCommand(options = {}) {
216
+ try {
217
+ await syncBiDirectional();
218
+ }
219
+ catch (error) {
220
+ console.error(championship_style_1.FAF_COLORS.fafOrange('❌ Bi-sync failed:'), error);
221
+ process.exit(1);
222
+ }
223
+ }
224
+ //# sourceMappingURL=bi-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bi-sync.js","sourceRoot":"","sources":["../../src/commands/bi-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 🗣️ FAF Chat - Natural Language .faf Generation
3
+ * Simple conversational interface for creating AI-context files
4
+ */
5
+ export declare function chatCommand(): Promise<void>;
6
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAyKjD"}