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,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ✏️ Edit Command - Interactive .faf editor
|
|
4
|
+
* Claude Code consistency: Similar to /edit command
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.editCommand = editCommand;
|
|
41
|
+
const championship_style_1 = require("../utils/championship-style");
|
|
42
|
+
const file_utils_1 = require("../utils/file-utils");
|
|
43
|
+
const faf_schema_1 = require("../schema/faf-schema");
|
|
44
|
+
const fs = __importStar(require("fs/promises"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const os = __importStar(require("os"));
|
|
47
|
+
const child_process_1 = require("child_process");
|
|
48
|
+
const YAML = __importStar(require("yaml"));
|
|
49
|
+
/**
|
|
50
|
+
* Interactive .faf file editor with validation
|
|
51
|
+
*/
|
|
52
|
+
async function editCommand(options = {}) {
|
|
53
|
+
try {
|
|
54
|
+
const startTime = Date.now();
|
|
55
|
+
console.log(championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.pencil} Interactive .faf Editor`));
|
|
56
|
+
console.log(`${championship_style_1.FAF_COLORS.fafCyan('├─ ')}${championship_style_1.BRAND_MESSAGES.optimization}`);
|
|
57
|
+
const fafPath = await (0, file_utils_1.findFafFile)();
|
|
58
|
+
if (!fafPath) {
|
|
59
|
+
console.log(`${championship_style_1.FAF_COLORS.fafOrange('└─ ')}No .faf file found. Run ${championship_style_1.FAF_COLORS.fafCyan('faf init')} first.`);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
console.log(`${championship_style_1.FAF_COLORS.fafCyan('├─ ')}Found: ${path.relative(process.cwd(), fafPath)}`);
|
|
63
|
+
// Create backup before editing
|
|
64
|
+
const backupPath = `${fafPath}.edit-backup`;
|
|
65
|
+
const originalContent = await fs.readFile(fafPath, 'utf-8');
|
|
66
|
+
await fs.writeFile(backupPath, originalContent);
|
|
67
|
+
console.log(`${championship_style_1.FAF_COLORS.fafCyan('├─ ')}Backup created: ${path.basename(backupPath)}`);
|
|
68
|
+
if (options.section) {
|
|
69
|
+
await editSection(fafPath, options.section);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
await openInEditor(fafPath, options.editor);
|
|
73
|
+
}
|
|
74
|
+
// Validate after editing (unless explicitly disabled)
|
|
75
|
+
if (options.validate !== false) {
|
|
76
|
+
console.log(`${championship_style_1.FAF_COLORS.fafCyan('├─ ')}Validating changes...`);
|
|
77
|
+
const newContent = await fs.readFile(fafPath, 'utf-8');
|
|
78
|
+
const hasChanges = newContent !== originalContent;
|
|
79
|
+
if (hasChanges) {
|
|
80
|
+
try {
|
|
81
|
+
const fafData = YAML.parse(newContent);
|
|
82
|
+
const validation = (0, faf_schema_1.validateSchema)(fafData);
|
|
83
|
+
if (validation.valid) {
|
|
84
|
+
console.log(`${championship_style_1.FAF_COLORS.fafGreen('├─ ')}☑️ Validation passed!`);
|
|
85
|
+
// Clean up backup on successful edit
|
|
86
|
+
await fs.unlink(backupPath);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
console.log(`${championship_style_1.FAF_COLORS.fafOrange('├─ ')}⚠️ Validation warnings found`);
|
|
90
|
+
validation.errors.forEach(error => {
|
|
91
|
+
console.log(`${championship_style_1.FAF_COLORS.fafCyan('│ ')}• ${error.message}`);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
console.log(`${championship_style_1.FAF_COLORS.fafOrange('├─ ')}❌ YAML parse error - restoring backup`);
|
|
97
|
+
await fs.writeFile(fafPath, originalContent);
|
|
98
|
+
await fs.unlink(backupPath);
|
|
99
|
+
console.log(`${championship_style_1.FAF_COLORS.fafCyan('└─ ')}Original content restored`);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
console.log(`${championship_style_1.FAF_COLORS.fafCyan('├─ ')}No changes made`);
|
|
105
|
+
await fs.unlink(backupPath);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const duration = Date.now() - startTime;
|
|
109
|
+
console.log();
|
|
110
|
+
console.log(championship_style_1.FAF_COLORS.fafGreen(`${championship_style_1.FAF_ICONS.trophy} Edit session complete in ${duration}ms!`));
|
|
111
|
+
console.log(`${championship_style_1.FAF_COLORS.fafCyan(`${championship_style_1.FAF_ICONS.magic_wand} Try: `)}faf score${championship_style_1.FAF_COLORS.fafCyan(' - Check your updated score')}`);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
console.error(championship_style_1.FAF_COLORS.fafOrange(`${championship_style_1.FAF_ICONS.shield} Edit failed: ${error instanceof Error ? error.message : String(error)}`));
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Open .faf file in user's preferred editor
|
|
120
|
+
*/
|
|
121
|
+
async function openInEditor(fafPath, editorPreference) {
|
|
122
|
+
const editor = editorPreference || getPreferredEditor();
|
|
123
|
+
console.log(`${championship_style_1.FAF_COLORS.fafCyan('├─ ')}Opening in ${editor}...`);
|
|
124
|
+
return new Promise((resolve, reject) => {
|
|
125
|
+
const editorProcess = (0, child_process_1.spawn)(editor, [fafPath], {
|
|
126
|
+
stdio: 'inherit'
|
|
127
|
+
});
|
|
128
|
+
editorProcess.on('close', (code) => {
|
|
129
|
+
if (code === 0) {
|
|
130
|
+
resolve();
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
reject(new Error(`Editor exited with code ${code}`));
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
editorProcess.on('error', (error) => {
|
|
137
|
+
reject(new Error(`Failed to open editor: ${error.message}`));
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Edit a specific section interactively
|
|
143
|
+
*/
|
|
144
|
+
async function editSection(fafPath, sectionName) {
|
|
145
|
+
console.log(`${championship_style_1.FAF_COLORS.fafCyan('├─ ')}Editing section: ${sectionName}`);
|
|
146
|
+
const content = await fs.readFile(fafPath, 'utf-8');
|
|
147
|
+
const fafData = YAML.parse(content) || {};
|
|
148
|
+
const availableSections = ['project', 'stack', 'scores', 'ai_instructions', 'preferences', 'state', 'human_context'];
|
|
149
|
+
if (!availableSections.includes(sectionName)) {
|
|
150
|
+
console.log(`${championship_style_1.FAF_COLORS.fafOrange('├─ ')}Unknown section: ${sectionName}`);
|
|
151
|
+
console.log(`${championship_style_1.FAF_COLORS.fafCyan('└─ ')}Available: ${availableSections.join(', ')}`);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
// Create temporary file with just the section
|
|
155
|
+
const tempDir = os.tmpdir();
|
|
156
|
+
const tempFile = path.join(tempDir, `faf-section-${sectionName}-${Date.now()}.yaml`);
|
|
157
|
+
const sectionData = fafData[sectionName] || {};
|
|
158
|
+
const sectionYaml = YAML.stringify({ [sectionName]: sectionData }, { indent: 2 });
|
|
159
|
+
await fs.writeFile(tempFile, sectionYaml);
|
|
160
|
+
try {
|
|
161
|
+
// Open section in editor
|
|
162
|
+
await openInEditor(tempFile);
|
|
163
|
+
// Read back the edited section
|
|
164
|
+
const editedContent = await fs.readFile(tempFile, 'utf-8');
|
|
165
|
+
const editedData = YAML.parse(editedContent);
|
|
166
|
+
// Merge back into main .faf
|
|
167
|
+
fafData[sectionName] = editedData[sectionName];
|
|
168
|
+
const newFafContent = YAML.stringify(fafData, { indent: 2 });
|
|
169
|
+
await fs.writeFile(fafPath, newFafContent);
|
|
170
|
+
console.log(`${championship_style_1.FAF_COLORS.fafGreen('├─ ')}Section ${sectionName} updated successfully`);
|
|
171
|
+
}
|
|
172
|
+
finally {
|
|
173
|
+
// Clean up temp file
|
|
174
|
+
try {
|
|
175
|
+
await fs.unlink(tempFile);
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
// Ignore cleanup errors
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Detect user's preferred editor
|
|
184
|
+
*/
|
|
185
|
+
function getPreferredEditor() {
|
|
186
|
+
// Check environment variables in order of preference
|
|
187
|
+
const editorEnv = process.env.VISUAL || process.env.EDITOR;
|
|
188
|
+
if (editorEnv) {
|
|
189
|
+
return editorEnv;
|
|
190
|
+
}
|
|
191
|
+
// For now, return VS Code as default (most common for .faf files)
|
|
192
|
+
// In a full implementation, we'd check which editors are available
|
|
193
|
+
// Common editors would be: ['code', 'subl', 'atom', 'vim', 'nano', 'emacs']
|
|
194
|
+
return 'code';
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* FAF AUTH - Birth Certificate Authentication
|
|
4
|
+
*
|
|
5
|
+
* Creates immutable record of project origin
|
|
6
|
+
* Every authenticated .faf can be verified
|
|
7
|
+
* Like a blockchain of context evolution
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=faf-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faf-auth.d.ts","sourceRoot":"","sources":["../../src/commands/faf-auth.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* FAF AUTH - Birth Certificate Authentication
|
|
5
|
+
*
|
|
6
|
+
* Creates immutable record of project origin
|
|
7
|
+
* Every authenticated .faf can be verified
|
|
8
|
+
* Like a blockchain of context evolution
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
const commander_1 = require("commander");
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const faf_dna_1 = require("../engines/faf-dna");
|
|
47
|
+
const colors_1 = require("../fix-once/colors");
|
|
48
|
+
const program = new commander_1.Command();
|
|
49
|
+
program
|
|
50
|
+
.name('faf auth')
|
|
51
|
+
.description('Authenticate your FAF project with a birth certificate')
|
|
52
|
+
.option('--verify <certificate>', 'Verify an existing certificate')
|
|
53
|
+
.option('--show', 'Show current authentication status')
|
|
54
|
+
.action(async (options) => {
|
|
55
|
+
try {
|
|
56
|
+
const projectPath = process.cwd();
|
|
57
|
+
const dnaManager = new faf_dna_1.FafDNAManager(projectPath);
|
|
58
|
+
// Load existing DNA or error
|
|
59
|
+
const dna = await dnaManager.load();
|
|
60
|
+
if (options.verify) {
|
|
61
|
+
// Verify mode
|
|
62
|
+
if (!dna) {
|
|
63
|
+
console.log(colors_1.colors.error('❌ No FAF DNA found to verify'));
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
const isValid = dna.birthCertificate.certificate === options.verify;
|
|
67
|
+
if (isValid) {
|
|
68
|
+
console.log(colors_1.colors.success('✅ Certificate VALID'));
|
|
69
|
+
console.log(colors_1.colors.info(`Project: ${path.basename(projectPath)}`));
|
|
70
|
+
console.log(colors_1.colors.info(`Born: ${dna.birthCertificate.born.toISOString().split('T')[0]}`));
|
|
71
|
+
console.log(colors_1.colors.info(`Birth Weight: ${dna.birthCertificate.birthWeight}%`));
|
|
72
|
+
console.log(colors_1.colors.info(`Authenticated: ${dna.birthCertificate.authenticated ? 'Yes' : 'No'}`));
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
console.log(colors_1.colors.error('❌ Certificate INVALID'));
|
|
76
|
+
}
|
|
77
|
+
process.exit(isValid ? 0 : 1);
|
|
78
|
+
}
|
|
79
|
+
if (options.show) {
|
|
80
|
+
// Show status mode
|
|
81
|
+
if (!dna) {
|
|
82
|
+
console.log(colors_1.colors.warning('🔓 No authentication found'));
|
|
83
|
+
console.log(colors_1.colors.secondary('Run "faf init" first, then "faf auth" to authenticate'));
|
|
84
|
+
process.exit(0);
|
|
85
|
+
}
|
|
86
|
+
console.log();
|
|
87
|
+
console.log(colors_1.colors.primary('🎫 FAF BIRTH CERTIFICATE'));
|
|
88
|
+
console.log(colors_1.colors.secondary('═'.repeat(40)));
|
|
89
|
+
console.log();
|
|
90
|
+
console.log(colors_1.colors.info(`Certificate: ${dna.birthCertificate.certificate}`));
|
|
91
|
+
console.log(colors_1.colors.info(`Born: ${dna.birthCertificate.born.toISOString()}`));
|
|
92
|
+
console.log(colors_1.colors.info(`Birth Weight: ${dna.birthCertificate.birthWeight}%`));
|
|
93
|
+
console.log(colors_1.colors.info(`Source: ${dna.birthCertificate.birthWeightSource}`));
|
|
94
|
+
console.log();
|
|
95
|
+
if (dna.birthCertificate.authenticated) {
|
|
96
|
+
console.log(colors_1.colors.success(`✅ AUTHENTICATED`));
|
|
97
|
+
if (dna.birthCertificate.authDate) {
|
|
98
|
+
console.log(colors_1.colors.secondary(` Auth Date: ${dna.birthCertificate.authDate.toISOString()}`));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
console.log(colors_1.colors.warning(`⚠️ NOT AUTHENTICATED`));
|
|
103
|
+
console.log(colors_1.colors.secondary(` Run "faf auth" to authenticate`));
|
|
104
|
+
}
|
|
105
|
+
console.log();
|
|
106
|
+
console.log(colors_1.colors.secondary('═'.repeat(40)));
|
|
107
|
+
console.log();
|
|
108
|
+
// Show journey
|
|
109
|
+
const journey = dnaManager.getJourney('compact');
|
|
110
|
+
if (journey) {
|
|
111
|
+
console.log(colors_1.colors.info(`Journey: ${journey}`));
|
|
112
|
+
}
|
|
113
|
+
process.exit(0);
|
|
114
|
+
}
|
|
115
|
+
// Authenticate mode
|
|
116
|
+
if (!dna) {
|
|
117
|
+
console.log(colors_1.colors.error('❌ No FAF DNA found to authenticate'));
|
|
118
|
+
console.log(colors_1.colors.secondary('Run "faf init" first to create your project DNA'));
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
if (dna.birthCertificate.authenticated) {
|
|
122
|
+
console.log(colors_1.colors.warning('⚠️ Already authenticated'));
|
|
123
|
+
console.log(colors_1.colors.info(`Certificate: ${dna.birthCertificate.certificate}`));
|
|
124
|
+
console.log(colors_1.colors.secondary(`Auth Date: ${dna.birthCertificate.authDate?.toISOString()}`));
|
|
125
|
+
process.exit(0);
|
|
126
|
+
}
|
|
127
|
+
// Perform authentication
|
|
128
|
+
console.log();
|
|
129
|
+
console.log(colors_1.colors.primary('🔏 Authenticating FAF DNA...'));
|
|
130
|
+
console.log();
|
|
131
|
+
const certificate = await dnaManager.authenticate();
|
|
132
|
+
// Display authentication success
|
|
133
|
+
console.log(colors_1.colors.success('✅ AUTHENTICATION COMPLETE'));
|
|
134
|
+
console.log();
|
|
135
|
+
console.log(colors_1.colors.primary('🎫 BIRTH CERTIFICATE ISSUED'));
|
|
136
|
+
console.log(colors_1.colors.secondary('═'.repeat(50)));
|
|
137
|
+
console.log();
|
|
138
|
+
console.log(colors_1.colors.highlight(`Certificate: ${certificate}`));
|
|
139
|
+
console.log();
|
|
140
|
+
console.log(colors_1.colors.info('Project DNA:'));
|
|
141
|
+
console.log(colors_1.colors.secondary(` Born: ${dna.birthCertificate.born.toISOString()}`));
|
|
142
|
+
console.log(colors_1.colors.secondary(` Birth Weight: ${dna.birthCertificate.birthWeight}%`));
|
|
143
|
+
console.log(colors_1.colors.secondary(` Project Hash: ${dna.birthCertificate.projectDNA}`));
|
|
144
|
+
console.log();
|
|
145
|
+
console.log(colors_1.colors.secondary('═'.repeat(50)));
|
|
146
|
+
console.log();
|
|
147
|
+
console.log(colors_1.colors.success('🔒 Your FAF context is now authenticated'));
|
|
148
|
+
console.log(colors_1.colors.secondary('This certificate proves the origin and evolution of your AI context'));
|
|
149
|
+
console.log();
|
|
150
|
+
console.log(colors_1.colors.info('Next steps:'));
|
|
151
|
+
console.log(colors_1.colors.secondary(' • faf auto - Grow your context'));
|
|
152
|
+
console.log(colors_1.colors.secondary(' • faf approve - Mark a version as approved'));
|
|
153
|
+
console.log(colors_1.colors.secondary(' • faf log - View your context evolution'));
|
|
154
|
+
console.log();
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
console.error(colors_1.colors.error(`❌ Error: ${error.message}`));
|
|
158
|
+
process.exit(1);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
program.parse(process.argv);
|
|
162
|
+
//# sourceMappingURL=faf-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faf-auth.js","sourceRoot":"","sources":["../../src/commands/faf-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faf-dna.d.ts","sourceRoot":"","sources":["../../src/commands/faf-dna.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* FAF DNA - Quick Journey Display
|
|
5
|
+
*
|
|
6
|
+
* Shows: "22% → 85% → 99% ← 92%"
|
|
7
|
+
* The complete story in one line
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
const commander_1 = require("commander");
|
|
11
|
+
const faf_dna_1 = require("../engines/faf-dna");
|
|
12
|
+
const colors_1 = require("../fix-once/colors");
|
|
13
|
+
const program = new commander_1.Command();
|
|
14
|
+
program
|
|
15
|
+
.name('faf dna')
|
|
16
|
+
.description('🧬 Show your FAF DNA journey at a glance')
|
|
17
|
+
.action(async () => {
|
|
18
|
+
try {
|
|
19
|
+
const projectPath = process.cwd();
|
|
20
|
+
const dnaManager = new faf_dna_1.FafDNAManager(projectPath);
|
|
21
|
+
// Load DNA
|
|
22
|
+
const dna = await dnaManager.load();
|
|
23
|
+
if (!dna) {
|
|
24
|
+
console.log(colors_1.colors.error('❌ No FAF DNA found'));
|
|
25
|
+
console.log(colors_1.colors.secondary('Run "faf init" to start your journey'));
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
// Get the journey
|
|
29
|
+
const journey = dnaManager.getJourney('compact');
|
|
30
|
+
console.log();
|
|
31
|
+
// BIG DISPLAY - This is the hero moment
|
|
32
|
+
console.log(colors_1.colors.highlight('🧬 YOUR FAF DNA'));
|
|
33
|
+
console.log();
|
|
34
|
+
console.log(colors_1.colors.championship(` ${journey}`));
|
|
35
|
+
console.log();
|
|
36
|
+
// Quick summary
|
|
37
|
+
const birthWeight = dna.birthCertificate.birthWeight;
|
|
38
|
+
const current = dna.current.score;
|
|
39
|
+
const growth = current - birthWeight;
|
|
40
|
+
const daysActive = Math.floor((Date.now() - dna.birthCertificate.born.getTime()) / (1000 * 60 * 60 * 24));
|
|
41
|
+
console.log(colors_1.colors.secondary('═'.repeat(50)));
|
|
42
|
+
console.log();
|
|
43
|
+
// Stats
|
|
44
|
+
console.log(colors_1.colors.info('📊 QUICK STATS'));
|
|
45
|
+
console.log(colors_1.colors.secondary(` Born: ${dna.birthCertificate.born.toISOString().split('T')[0]}`));
|
|
46
|
+
console.log(colors_1.colors.secondary(` Days Active: ${daysActive}`));
|
|
47
|
+
console.log(colors_1.colors.secondary(` Total Growth: +${growth}%`));
|
|
48
|
+
// Authentication status
|
|
49
|
+
if (dna.birthCertificate.authenticated) {
|
|
50
|
+
console.log(colors_1.colors.success(` ✅ Authenticated: ${dna.birthCertificate.certificate}`));
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
console.log(colors_1.colors.warning(` ⚠️ Not authenticated (run 'faf auth')`));
|
|
54
|
+
}
|
|
55
|
+
console.log();
|
|
56
|
+
// Milestones with ☑️ and ░░ visual journey
|
|
57
|
+
console.log(colors_1.colors.info('🧬 YOUR JOURNEY'));
|
|
58
|
+
console.log();
|
|
59
|
+
const milestones = dna.growth.milestones;
|
|
60
|
+
const allPossibleMilestones = [
|
|
61
|
+
{ type: 'birth', label: 'Born', threshold: 0 },
|
|
62
|
+
{ type: 'first_save', label: 'First Save', threshold: 0 },
|
|
63
|
+
{ type: 'doubled', label: 'Doubled', threshold: birthWeight * 2 },
|
|
64
|
+
{ type: 'championship', label: 'Championship', threshold: 70 },
|
|
65
|
+
{ type: 'elite', label: 'Elite', threshold: 85 },
|
|
66
|
+
{ type: 'peak', label: 'Peak', threshold: 95 },
|
|
67
|
+
{ type: 'perfect', label: 'Perfect', threshold: 100 }
|
|
68
|
+
];
|
|
69
|
+
let achievedCount = 0;
|
|
70
|
+
allPossibleMilestones.forEach(possible => {
|
|
71
|
+
const achieved = milestones.find(m => m.type === possible.type);
|
|
72
|
+
if (achieved) {
|
|
73
|
+
const isCurrent = achieved.type === 'current' ||
|
|
74
|
+
(achieved.type === 'elite' && current >= 85 && current < 95) ||
|
|
75
|
+
(achieved.type === 'peak' && current >= 95 && current < 100);
|
|
76
|
+
if (isCurrent) {
|
|
77
|
+
console.log(colors_1.colors.success(` ⭐ ${possible.label} (${achieved.score}%) ← You are here!`));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
console.log(colors_1.colors.secondary(` ☑️ ${possible.label} (${achieved.score}%)`));
|
|
81
|
+
}
|
|
82
|
+
achievedCount++;
|
|
83
|
+
}
|
|
84
|
+
else if (possible.threshold > 0 && current < possible.threshold) {
|
|
85
|
+
// Show as available future milestone
|
|
86
|
+
console.log(colors_1.colors.dim(` ░░ ${possible.label} (${possible.threshold}%) - Available!`));
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
console.log();
|
|
90
|
+
console.log(colors_1.colors.info(` You've unlocked ${achievedCount} of ${allPossibleMilestones.length} milestones!`));
|
|
91
|
+
console.log();
|
|
92
|
+
// Peak vs Current
|
|
93
|
+
const peak = milestones.find(m => m.type === 'peak');
|
|
94
|
+
if (peak && peak.score > current) {
|
|
95
|
+
console.log(colors_1.colors.warning(` ⚠️ ${peak.score - current}% below your peak`));
|
|
96
|
+
console.log(colors_1.colors.secondary(` (Peak: ${peak.score}% on ${peak.date.toISOString().split('T')[0]})`));
|
|
97
|
+
console.log();
|
|
98
|
+
}
|
|
99
|
+
else if (current === 100) {
|
|
100
|
+
console.log(colors_1.colors.success(` 💎 PERFECT SCORE ACHIEVED!`));
|
|
101
|
+
console.log();
|
|
102
|
+
}
|
|
103
|
+
else if (current >= 85) {
|
|
104
|
+
console.log(colors_1.colors.success(` ⭐ Elite performance level`));
|
|
105
|
+
console.log();
|
|
106
|
+
}
|
|
107
|
+
console.log(colors_1.colors.secondary('═'.repeat(50)));
|
|
108
|
+
console.log();
|
|
109
|
+
// Links to more info
|
|
110
|
+
console.log(colors_1.colors.info('📚 LEARN MORE'));
|
|
111
|
+
console.log(colors_1.colors.secondary(' • faf log - Complete history'));
|
|
112
|
+
console.log(colors_1.colors.secondary(' • faf log --milestones - Key moments'));
|
|
113
|
+
console.log(colors_1.colors.secondary(' • faf log --analytics - Growth metrics'));
|
|
114
|
+
console.log(colors_1.colors.secondary(' • faf score - Current details'));
|
|
115
|
+
console.log(colors_1.colors.secondary(' • faf auth - Authenticate DNA'));
|
|
116
|
+
console.log();
|
|
117
|
+
// Motivational message based on journey
|
|
118
|
+
if (growth > 70) {
|
|
119
|
+
console.log(colors_1.colors.success('🚀 Incredible journey! You\'ve transformed your AI context!'));
|
|
120
|
+
}
|
|
121
|
+
else if (growth > 50) {
|
|
122
|
+
console.log(colors_1.colors.success('📈 Great progress! Your context is evolving beautifully.'));
|
|
123
|
+
}
|
|
124
|
+
else if (growth > 30) {
|
|
125
|
+
console.log(colors_1.colors.info('🌱 Good growth! Keep improving with "faf auto".'));
|
|
126
|
+
}
|
|
127
|
+
else if (growth > 0) {
|
|
128
|
+
console.log(colors_1.colors.info('🌱 Your journey has begun. Every step counts!'));
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
console.log(colors_1.colors.info('🐣 Just born! Your growth story starts now.'));
|
|
132
|
+
}
|
|
133
|
+
console.log();
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
console.error(colors_1.colors.error(`❌ Error: ${error.message}`));
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
program.parse(process.argv);
|
|
141
|
+
//# sourceMappingURL=faf-dna.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faf-dna.js","sourceRoot":"","sources":["../../src/commands/faf-dna.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faf-log.d.ts","sourceRoot":"","sources":["../../src/commands/faf-log.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}
|