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.
- package/LICENSE +21 -0
- package/README.md +227 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1249 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/ai-analyze.d.ts +18 -0
- package/dist/commands/ai-analyze.d.ts.map +1 -0
- package/dist/commands/ai-analyze.js +226 -0
- package/dist/commands/ai-analyze.js.map +1 -0
- package/dist/commands/ai-enhance.d.ts +17 -0
- package/dist/commands/ai-enhance.d.ts.map +1 -0
- package/dist/commands/ai-enhance.js +278 -0
- package/dist/commands/ai-enhance.js.map +1 -0
- package/dist/commands/audit.d.ts +11 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +180 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/auto.d.ts +27 -0
- package/dist/commands/auto.d.ts.map +1 -0
- package/dist/commands/auto.js +106 -0
- package/dist/commands/auto.js.map +1 -0
- package/dist/commands/bi-sync.d.ts +43 -0
- package/dist/commands/bi-sync.d.ts.map +1 -0
- package/dist/commands/bi-sync.js +224 -0
- package/dist/commands/bi-sync.js.map +1 -0
- package/dist/commands/chat.d.ts +6 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +227 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/check.d.ts +15 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +58 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/clear.d.ts +15 -0
- package/dist/commands/clear.d.ts.map +1 -0
- package/dist/commands/clear.js +167 -0
- package/dist/commands/clear.js.map +1 -0
- package/dist/commands/commit.d.ts +8 -0
- package/dist/commands/commit.d.ts.map +1 -0
- package/dist/commands/commit.js +164 -0
- package/dist/commands/commit.js.map +1 -0
- package/dist/commands/convert.d.ts +19 -0
- package/dist/commands/convert.d.ts.map +1 -0
- package/dist/commands/convert.js +102 -0
- package/dist/commands/convert.js.map +1 -0
- package/dist/commands/credit.d.ts +13 -0
- package/dist/commands/credit.d.ts.map +1 -0
- package/dist/commands/credit.js +149 -0
- package/dist/commands/credit.js.map +1 -0
- package/dist/commands/edit-helper.d.ts +6 -0
- package/dist/commands/edit-helper.d.ts.map +1 -0
- package/dist/commands/edit-helper.js +55 -0
- package/dist/commands/edit-helper.js.map +1 -0
- package/dist/commands/edit.d.ts +14 -0
- package/dist/commands/edit.d.ts.map +1 -0
- package/dist/commands/edit.js +196 -0
- package/dist/commands/edit.js.map +1 -0
- package/dist/commands/faf-auth.d.ts +10 -0
- package/dist/commands/faf-auth.d.ts.map +1 -0
- package/dist/commands/faf-auth.js +162 -0
- package/dist/commands/faf-auth.js.map +1 -0
- package/dist/commands/faf-dna.d.ts +9 -0
- package/dist/commands/faf-dna.d.ts.map +1 -0
- package/dist/commands/faf-dna.js +141 -0
- package/dist/commands/faf-dna.js.map +1 -0
- package/dist/commands/faf-log.d.ts +9 -0
- package/dist/commands/faf-log.d.ts.map +1 -0
- package/dist/commands/faf-log.js +135 -0
- package/dist/commands/faf-log.js.map +1 -0
- package/dist/commands/faf-recover.d.ts +3 -0
- package/dist/commands/faf-recover.d.ts.map +1 -0
- package/dist/commands/faf-recover.js +299 -0
- package/dist/commands/faf-recover.js.map +1 -0
- package/dist/commands/faf-update.d.ts +9 -0
- package/dist/commands/faf-update.d.ts.map +1 -0
- package/dist/commands/faf-update.js +68 -0
- package/dist/commands/faf-update.js.map +1 -0
- package/dist/commands/faq.d.ts +12 -0
- package/dist/commands/faq.d.ts.map +1 -0
- package/dist/commands/faq.js +84 -0
- package/dist/commands/faq.js.map +1 -0
- package/dist/commands/flow.d.ts +11 -0
- package/dist/commands/flow.d.ts.map +1 -0
- package/dist/commands/flow.js +117 -0
- package/dist/commands/flow.js.map +1 -0
- package/dist/commands/formats.d.ts +12 -0
- package/dist/commands/formats.d.ts.map +1 -0
- package/dist/commands/formats.js +109 -0
- package/dist/commands/formats.js.map +1 -0
- package/dist/commands/index.d.ts +14 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +443 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +14 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +202 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/lint.d.ts +11 -0
- package/dist/commands/lint.d.ts.map +1 -0
- package/dist/commands/lint.js +269 -0
- package/dist/commands/lint.js.map +1 -0
- package/dist/commands/mirror.d.ts +7 -0
- package/dist/commands/mirror.d.ts.map +1 -0
- package/dist/commands/mirror.js +130 -0
- package/dist/commands/mirror.js.map +1 -0
- package/dist/commands/score.d.ts +11 -0
- package/dist/commands/score.d.ts.map +1 -0
- package/dist/commands/score.js +192 -0
- package/dist/commands/score.js.map +1 -0
- package/dist/commands/search.d.ts +16 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +174 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/share.d.ts +17 -0
- package/dist/commands/share.d.ts.map +1 -0
- package/dist/commands/share.js +260 -0
- package/dist/commands/share.js.map +1 -0
- package/dist/commands/show.d.ts +10 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +167 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/stacks.d.ts +51 -0
- package/dist/commands/stacks.d.ts.map +1 -0
- package/dist/commands/stacks.js +180 -0
- package/dist/commands/stacks.js.map +1 -0
- package/dist/commands/status.d.ts +13 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +158 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sync.d.ts +11 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +300 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/todo.d.ts +14 -0
- package/dist/commands/todo.d.ts.map +1 -0
- package/dist/commands/todo.js +279 -0
- package/dist/commands/todo.js.map +1 -0
- package/dist/commands/trust.d.ts +33 -0
- package/dist/commands/trust.d.ts.map +1 -0
- package/dist/commands/trust.js +316 -0
- package/dist/commands/trust.js.map +1 -0
- package/dist/commands/validate.d.ts +11 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +100 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/commands/verify.d.ts +36 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +194 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/commands/version.d.ts +5 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +33 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/commands/vibe.d.ts +7 -0
- package/dist/commands/vibe.d.ts.map +1 -0
- package/dist/commands/vibe.js +78 -0
- package/dist/commands/vibe.js.map +1 -0
- package/dist/converters/faf-converters.d.ts +43 -0
- package/dist/converters/faf-converters.d.ts.map +1 -0
- package/dist/converters/faf-converters.js +186 -0
- package/dist/converters/faf-converters.js.map +1 -0
- package/dist/engine-bridge.d.ts +35 -0
- package/dist/engine-bridge.d.ts.map +1 -0
- package/dist/engine-bridge.js +76 -0
- package/dist/engine-bridge.js.map +1 -0
- package/dist/engines/claude-todo-engine.d.ts +115 -0
- package/dist/engines/claude-todo-engine.d.ts.map +1 -0
- package/dist/engines/claude-todo-engine.js +346 -0
- package/dist/engines/claude-todo-engine.js.map +1 -0
- package/dist/engines/drop-coach.d.ts +64 -0
- package/dist/engines/drop-coach.d.ts.map +1 -0
- package/dist/engines/drop-coach.js +222 -0
- package/dist/engines/drop-coach.js.map +1 -0
- package/dist/engines/fab-formats-processor.d.ts +167 -0
- package/dist/engines/fab-formats-processor.d.ts.map +1 -0
- package/dist/engines/fab-formats-processor.js +1274 -0
- package/dist/engines/fab-formats-processor.js.map +1 -0
- package/dist/engines/faf-dna.d.ts +160 -0
- package/dist/engines/faf-dna.d.ts.map +1 -0
- package/dist/engines/faf-dna.js +522 -0
- package/dist/engines/faf-dna.js.map +1 -0
- package/dist/engines/relentless-context-extractor.d.ts +101 -0
- package/dist/engines/relentless-context-extractor.d.ts.map +1 -0
- package/dist/engines/relentless-context-extractor.js +625 -0
- package/dist/engines/relentless-context-extractor.js.map +1 -0
- package/dist/fix-once/colors.d.ts +83 -0
- package/dist/fix-once/colors.d.ts.map +1 -0
- package/dist/fix-once/colors.js +145 -0
- package/dist/fix-once/colors.js.map +1 -0
- package/dist/fix-once/types.d.ts +258 -0
- package/dist/fix-once/types.d.ts.map +1 -0
- package/dist/fix-once/types.js +26 -0
- package/dist/fix-once/types.js.map +1 -0
- package/dist/framework-detector.d.ts +286 -0
- package/dist/framework-detector.d.ts.map +1 -0
- package/dist/framework-detector.js +782 -0
- package/dist/framework-detector.js.map +1 -0
- package/dist/generators/faf-generator-championship.d.ts +11 -0
- package/dist/generators/faf-generator-championship.d.ts.map +1 -0
- package/dist/generators/faf-generator-championship.js +371 -0
- package/dist/generators/faf-generator-championship.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/output/experience-manager.d.ts +58 -0
- package/dist/output/experience-manager.d.ts.map +1 -0
- package/dist/output/experience-manager.js +212 -0
- package/dist/output/experience-manager.js.map +1 -0
- package/dist/schema/faf-schema.d.ts +92 -0
- package/dist/schema/faf-schema.d.ts.map +1 -0
- package/dist/schema/faf-schema.js +173 -0
- package/dist/schema/faf-schema.js.map +1 -0
- package/dist/scoring/championship-scorer.d.ts +114 -0
- package/dist/scoring/championship-scorer.d.ts.map +1 -0
- package/dist/scoring/championship-scorer.js +380 -0
- package/dist/scoring/championship-scorer.js.map +1 -0
- package/dist/scoring/score-calculator.d.ts +29 -0
- package/dist/scoring/score-calculator.d.ts.map +1 -0
- package/dist/scoring/score-calculator.js +520 -0
- package/dist/scoring/score-calculator.js.map +1 -0
- package/dist/telemetry/analytics.d.ts +74 -0
- package/dist/telemetry/analytics.d.ts.map +1 -0
- package/dist/telemetry/analytics.js +370 -0
- package/dist/telemetry/analytics.js.map +1 -0
- package/dist/utils/balance-visualizer.d.ts +38 -0
- package/dist/utils/balance-visualizer.d.ts.map +1 -0
- package/dist/utils/balance-visualizer.js +196 -0
- package/dist/utils/balance-visualizer.js.map +1 -0
- package/dist/utils/championship-style.d.ts +110 -0
- package/dist/utils/championship-style.d.ts.map +1 -0
- package/dist/utils/championship-style.js +213 -0
- package/dist/utils/championship-style.js.map +1 -0
- package/dist/utils/color-utils.d.ts +17 -0
- package/dist/utils/color-utils.d.ts.map +1 -0
- package/dist/utils/color-utils.js +96 -0
- package/dist/utils/color-utils.js.map +1 -0
- package/dist/utils/fab-formats-engine.d.ts +76 -0
- package/dist/utils/fab-formats-engine.d.ts.map +1 -0
- package/dist/utils/fab-formats-engine.js +424 -0
- package/dist/utils/fab-formats-engine.js.map +1 -0
- package/dist/utils/fafignore-parser.d.ts +21 -0
- package/dist/utils/fafignore-parser.d.ts.map +1 -0
- package/dist/utils/fafignore-parser.js +178 -0
- package/dist/utils/fafignore-parser.js.map +1 -0
- package/dist/utils/file-utils.d.ts +65 -0
- package/dist/utils/file-utils.d.ts.map +1 -0
- package/dist/utils/file-utils.js +598 -0
- package/dist/utils/file-utils.js.map +1 -0
- package/dist/utils/platform-detector.d.ts +31 -0
- package/dist/utils/platform-detector.d.ts.map +1 -0
- package/dist/utils/platform-detector.js +218 -0
- package/dist/utils/platform-detector.js.map +1 -0
- package/dist/utils/technical-credit.d.ts +36 -0
- package/dist/utils/technical-credit.d.ts.map +1 -0
- package/dist/utils/technical-credit.js +286 -0
- package/dist/utils/technical-credit.js.map +1 -0
- package/dist/utils/trust-cache.d.ts +29 -0
- package/dist/utils/trust-cache.d.ts.map +1 -0
- package/dist/utils/trust-cache.js +123 -0
- package/dist/utils/trust-cache.js.map +1 -0
- package/dist/utils/turbo-cat-knowledge.d.ts +82 -0
- package/dist/utils/turbo-cat-knowledge.d.ts.map +1 -0
- package/dist/utils/turbo-cat-knowledge.js +1346 -0
- package/dist/utils/turbo-cat-knowledge.js.map +1 -0
- package/dist/utils/turbo-cat-pyramid.d.ts +38 -0
- package/dist/utils/turbo-cat-pyramid.d.ts.map +1 -0
- package/dist/utils/turbo-cat-pyramid.js +287 -0
- package/dist/utils/turbo-cat-pyramid.js.map +1 -0
- package/dist/utils/turbo-cat.d.ts +92 -0
- package/dist/utils/turbo-cat.d.ts.map +1 -0
- package/dist/utils/turbo-cat.js +412 -0
- package/dist/utils/turbo-cat.js.map +1 -0
- package/dist/utils/vibe-sync.d.ts +25 -0
- package/dist/utils/vibe-sync.d.ts.map +1 -0
- package/dist/utils/vibe-sync.js +169 -0
- package/dist/utils/vibe-sync.js.map +1 -0
- package/dist/utils/yaml-generator.d.ts +39 -0
- package/dist/utils/yaml-generator.d.ts.map +1 -0
- package/dist/utils/yaml-generator.js +345 -0
- package/dist/utils/yaml-generator.js.map +1 -0
- 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 @@
|
|
|
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"}
|