faf-cli 2.4.1 → 2.4.3
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/README.md +133 -213
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +61 -149
- package/dist/cli.js.map +1 -1
- package/dist/commands/enhance-real.d.ts +18 -0
- package/dist/commands/enhance-real.d.ts.map +1 -0
- package/dist/commands/enhance-real.js +1027 -0
- package/dist/commands/enhance-real.js.map +1 -0
- package/dist/commands/index.js +5 -5
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/notifications.d.ts +12 -0
- package/dist/commands/notifications.d.ts.map +1 -0
- package/dist/commands/notifications.js +38 -0
- package/dist/commands/notifications.js.map +1 -0
- package/dist/commands/score-v3.d.ts.map +1 -1
- package/dist/commands/score-v3.js +7 -14
- package/dist/commands/score-v3.js.map +1 -1
- package/dist/commands/score.d.ts.map +1 -1
- package/dist/commands/score.js +10 -30
- package/dist/commands/score.js.map +1 -1
- package/dist/commands/subscribe.d.ts +12 -0
- package/dist/commands/subscribe.d.ts.map +1 -0
- package/dist/commands/subscribe.js +38 -0
- package/dist/commands/subscribe.js.map +1 -0
- package/dist/commands/trust.d.ts +1 -1
- package/dist/commands/trust.d.ts.map +1 -1
- package/dist/commands/trust.js +6 -12
- package/dist/commands/trust.js.map +1 -1
- package/dist/engine-bridge.d.ts +5 -5
- package/dist/engine-bridge.d.ts.map +1 -1
- package/dist/engine-bridge.js +7 -20
- package/dist/engine-bridge.js.map +1 -1
- package/dist/fix-once/types.d.ts +1 -1
- package/dist/fix-once/types.d.ts.map +1 -1
- package/dist/framework-detector.d.ts +1 -1
- package/dist/framework-detector.js +1 -1
- package/dist/types/faf-types.d.ts +144 -0
- package/dist/types/faf-types.d.ts.map +1 -0
- package/dist/types/faf-types.js +21 -0
- package/dist/types/faf-types.js.map +1 -0
- package/dist/utils/announcements.d.ts +16 -0
- package/dist/utils/announcements.d.ts.map +1 -0
- package/dist/utils/announcements.js +136 -0
- package/dist/utils/announcements.js.map +1 -0
- package/dist/utils/championship-style.d.ts +1 -1
- package/dist/utils/championship-style.d.ts.map +1 -1
- package/dist/utils/championship-style.js +13 -17
- package/dist/utils/championship-style.js.map +1 -1
- package/dist/utils/email-opt-in.d.ts +31 -0
- package/dist/utils/email-opt-in.d.ts.map +1 -0
- package/dist/utils/email-opt-in.js +195 -0
- package/dist/utils/email-opt-in.js.map +1 -0
- package/dist/utils/feedback-messages.d.ts +13 -0
- package/dist/utils/feedback-messages.d.ts.map +1 -0
- package/dist/utils/feedback-messages.js +121 -0
- package/dist/utils/feedback-messages.js.map +1 -0
- package/dist/utils/score-header.js +16 -10
- package/dist/utils/score-header.js.map +1 -1
- package/dist/utils/update-checker.d.ts.map +1 -1
- package/dist/utils/update-checker.js +3 -12
- package/dist/utils/update-checker.js.map +1 -1
- package/dist/utils/yaml-generator.js +1 -1
- package/package.json +2 -2
|
@@ -141,26 +141,22 @@ ${exports.FAF_COLORS.fafCyan('│')} ${e
|
|
|
141
141
|
${exports.FAF_COLORS.fafCyan('└─────────────────────────────────────────┘')}`;
|
|
142
142
|
}
|
|
143
143
|
/**
|
|
144
|
-
* Generate static championship header (
|
|
144
|
+
* Generate static championship header (no contextual subtitles)
|
|
145
145
|
*/
|
|
146
146
|
function generateFAFHeader() {
|
|
147
147
|
const version = require('../../package.json').version;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
║ ───────────────────────────────────────────────── ║
|
|
161
|
-
║ 🌐 Universal, AI-Context ⚡ FAST AF 💙 ║
|
|
162
|
-
║ ║
|
|
163
|
-
╚══════════════════════════════════════════════════════════════╝`;
|
|
148
|
+
return `${exports.FAF_COLORS.fafCyan('┌─────────────────────────────────────────┐')}
|
|
149
|
+
${exports.FAF_COLORS.fafCyan('│')} ${exports.FAF_COLORS.fafWhite('███████')}${exports.FAF_COLORS.fafWhite('╗')} ${exports.FAF_COLORS.fafWhite('█████')}${exports.FAF_COLORS.fafWhite('╗')} ${exports.FAF_COLORS.fafWhite('███████')}${exports.FAF_COLORS.fafWhite('╗')} 🏎️⚡️🏁 v${version} ${exports.FAF_COLORS.fafCyan('│')}
|
|
150
|
+
${exports.FAF_COLORS.fafCyan('│')} ${exports.FAF_COLORS.fafCyan('██')}${exports.FAF_COLORS.fafWhite('╔════╝')}${exports.FAF_COLORS.fafCyan('██')}${exports.FAF_COLORS.fafWhite('╔══')}${exports.FAF_COLORS.fafCyan('██')}${exports.FAF_COLORS.fafWhite('╗')}${exports.FAF_COLORS.fafCyan('██')}${exports.FAF_COLORS.fafWhite('╔════╝')} ${exports.FAF_COLORS.fafCyan('│')}
|
|
151
|
+
${exports.FAF_COLORS.fafCyan('│')} ${exports.FAF_COLORS.fafCyan('█████')}${exports.FAF_COLORS.fafWhite('╗ ')}${exports.FAF_COLORS.fafCyan('███████')}${exports.FAF_COLORS.fafWhite('║')}${exports.FAF_COLORS.fafCyan('█████')}${exports.FAF_COLORS.fafWhite('╗')} ${exports.FAF_COLORS.fafCyan('│')}
|
|
152
|
+
${exports.FAF_COLORS.fafCyan('│')} ${exports.FAF_COLORS.fafOrange('██')}${exports.FAF_COLORS.fafWhite('╔══╝ ')}${exports.FAF_COLORS.fafOrange('██')}${exports.FAF_COLORS.fafWhite('╔══')}${exports.FAF_COLORS.fafOrange('██')}${exports.FAF_COLORS.fafWhite('║')}${exports.FAF_COLORS.fafOrange('██')}${exports.FAF_COLORS.fafWhite('╔══╝')} ${exports.FAF_COLORS.fafCyan('│')}
|
|
153
|
+
${exports.FAF_COLORS.fafCyan('│')} ${exports.FAF_COLORS.fafOrange('██')}${exports.FAF_COLORS.fafWhite('║ ')}${exports.FAF_COLORS.fafOrange('██')}${exports.FAF_COLORS.fafWhite('║ ')}${exports.FAF_COLORS.fafOrange('██')}${exports.FAF_COLORS.fafWhite('║')}${exports.FAF_COLORS.fafOrange('██')}${exports.FAF_COLORS.fafWhite('║')} ${exports.FAF_COLORS.fafCyan('│')}
|
|
154
|
+
${exports.FAF_COLORS.fafCyan('│')} ${exports.FAF_COLORS.fafWhite('╚═╝ ╚═╝ ╚═╝╚═╝')} ${exports.FAF_COLORS.fafCyan('│')}
|
|
155
|
+
${exports.FAF_COLORS.fafCyan('│')} ${exports.FAF_COLORS.fafCyan('│')}
|
|
156
|
+
${exports.FAF_COLORS.fafCyan('│')} AI needed a format, it got one— .faf ${exports.FAF_COLORS.fafCyan('│')}
|
|
157
|
+
${exports.FAF_COLORS.fafCyan('│')} ───────────────────────────────────── ${exports.FAF_COLORS.fafCyan('│')}
|
|
158
|
+
${exports.FAF_COLORS.fafCyan('│')} 🌐 Foundational AI-context Format ${exports.FAF_COLORS.fafCyan('│')}
|
|
159
|
+
${exports.FAF_COLORS.fafCyan('└─────────────────────────────────────────┘')}`;
|
|
164
160
|
}
|
|
165
161
|
// 🏁 Default ASCII Art Header (for backwards compatibility)
|
|
166
162
|
exports.FAF_HEADER = generateFAFHeader();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"championship-style.js","sourceRoot":"","sources":["../../src/utils/championship-style.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAyIH,gDAUC;AAKD,
|
|
1
|
+
{"version":3,"file":"championship-style.js","sourceRoot":"","sources":["../../src/utils/championship-style.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Email opt-in system for FAF CLI
|
|
3
|
+
* Respectful, one-time only, completely optional
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Check if we've already asked for email
|
|
7
|
+
*/
|
|
8
|
+
export declare function hasAskedForEmail(): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Check if user is subscribed
|
|
11
|
+
*/
|
|
12
|
+
export declare function isSubscribed(): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Prompt for email opt-in (one time only)
|
|
15
|
+
*/
|
|
16
|
+
export declare function promptEmailOptIn(options?: {
|
|
17
|
+
quiet?: boolean;
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Allow manual subscription via flag
|
|
21
|
+
*/
|
|
22
|
+
export declare function subscribeViaFlag(email: string): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Show notification status
|
|
25
|
+
*/
|
|
26
|
+
export declare function showSubscriptionStatus(): void;
|
|
27
|
+
/**
|
|
28
|
+
* Remove email from notifications
|
|
29
|
+
*/
|
|
30
|
+
export declare function unsubscribe(): void;
|
|
31
|
+
//# sourceMappingURL=email-opt-in.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-opt-in.d.ts","sourceRoot":"","sources":["../../src/utils/email-opt-in.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAUD;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAmCD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEvF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAanE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAc7C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAOlC"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Email opt-in system for FAF CLI
|
|
4
|
+
* Respectful, one-time only, completely optional
|
|
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.hasAskedForEmail = hasAskedForEmail;
|
|
11
|
+
exports.isSubscribed = isSubscribed;
|
|
12
|
+
exports.promptEmailOptIn = promptEmailOptIn;
|
|
13
|
+
exports.subscribeViaFlag = subscribeViaFlag;
|
|
14
|
+
exports.showSubscriptionStatus = showSubscriptionStatus;
|
|
15
|
+
exports.unsubscribe = unsubscribe;
|
|
16
|
+
const fs_1 = __importDefault(require("fs"));
|
|
17
|
+
const path_1 = __importDefault(require("path"));
|
|
18
|
+
const os_1 = __importDefault(require("os"));
|
|
19
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
20
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
21
|
+
const FAF_DIR = path_1.default.join(os_1.default.homedir(), '.faf');
|
|
22
|
+
const EMAIL_FLAG_FILE = path_1.default.join(FAF_DIR, '.email-asked');
|
|
23
|
+
const EMAIL_STORE_FILE = path_1.default.join(FAF_DIR, '.email-subscribed');
|
|
24
|
+
/**
|
|
25
|
+
* Ensure .faf directory exists
|
|
26
|
+
*/
|
|
27
|
+
function ensureFafDir() {
|
|
28
|
+
if (!fs_1.default.existsSync(FAF_DIR)) {
|
|
29
|
+
fs_1.default.mkdirSync(FAF_DIR, { recursive: true });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check if we've already asked for email
|
|
34
|
+
*/
|
|
35
|
+
function hasAskedForEmail() {
|
|
36
|
+
return fs_1.default.existsSync(EMAIL_FLAG_FILE);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Mark that we've asked for email (never ask again)
|
|
40
|
+
*/
|
|
41
|
+
function markEmailAsked() {
|
|
42
|
+
ensureFafDir();
|
|
43
|
+
fs_1.default.writeFileSync(EMAIL_FLAG_FILE, new Date().toISOString());
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Check if user is subscribed
|
|
47
|
+
*/
|
|
48
|
+
function isSubscribed() {
|
|
49
|
+
return fs_1.default.existsSync(EMAIL_STORE_FILE);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Subscribe to updates
|
|
53
|
+
*/
|
|
54
|
+
async function subscribeEmail(email) {
|
|
55
|
+
try {
|
|
56
|
+
// Store locally first
|
|
57
|
+
ensureFafDir();
|
|
58
|
+
fs_1.default.writeFileSync(EMAIL_STORE_FILE, JSON.stringify({
|
|
59
|
+
email,
|
|
60
|
+
subscribedAt: new Date().toISOString(),
|
|
61
|
+
source: 'cli',
|
|
62
|
+
version: process.env.npm_package_version || 'unknown'
|
|
63
|
+
}));
|
|
64
|
+
// Try to send to server (don't block if it fails)
|
|
65
|
+
fetch('https://faf.one/api/subscribe', {
|
|
66
|
+
method: 'POST',
|
|
67
|
+
headers: { 'Content-Type': 'application/json' },
|
|
68
|
+
body: JSON.stringify({
|
|
69
|
+
email,
|
|
70
|
+
source: 'cli',
|
|
71
|
+
version: process.env.npm_package_version
|
|
72
|
+
})
|
|
73
|
+
}).catch(() => {
|
|
74
|
+
// Silently fail - we have it stored locally
|
|
75
|
+
});
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Prompt for email opt-in (one time only)
|
|
84
|
+
*/
|
|
85
|
+
async function promptEmailOptIn(options = {}) {
|
|
86
|
+
// Skip if:
|
|
87
|
+
// - Already asked
|
|
88
|
+
// - In CI environment
|
|
89
|
+
// - Quiet mode
|
|
90
|
+
// - Non-interactive terminal
|
|
91
|
+
if (hasAskedForEmail() ||
|
|
92
|
+
process.env.CI ||
|
|
93
|
+
options.quiet ||
|
|
94
|
+
!process.stdin.isTTY) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
// Mark as asked immediately (even if they skip)
|
|
98
|
+
markEmailAsked();
|
|
99
|
+
console.log();
|
|
100
|
+
console.log(chalk_1.default.cyan('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
101
|
+
console.log(chalk_1.default.cyan.bold(' 📧 New Version Notifications'));
|
|
102
|
+
console.log(chalk_1.default.cyan('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
|
|
103
|
+
console.log();
|
|
104
|
+
console.log(' Get notified when we release:');
|
|
105
|
+
console.log(chalk_1.default.gray(' • New versions with features'));
|
|
106
|
+
console.log(chalk_1.default.gray(' • Breaking changes that affect you'));
|
|
107
|
+
console.log(chalk_1.default.gray(' • Critical security updates'));
|
|
108
|
+
console.log();
|
|
109
|
+
console.log(chalk_1.default.gray(' (Only major releases, remove anytime)'));
|
|
110
|
+
console.log();
|
|
111
|
+
const { wantsUpdates } = await inquirer_1.default.prompt([
|
|
112
|
+
{
|
|
113
|
+
type: 'confirm',
|
|
114
|
+
name: 'wantsUpdates',
|
|
115
|
+
message: 'Add your email for version notifications?',
|
|
116
|
+
default: false
|
|
117
|
+
}
|
|
118
|
+
]);
|
|
119
|
+
if (wantsUpdates) {
|
|
120
|
+
const { email } = await inquirer_1.default.prompt([
|
|
121
|
+
{
|
|
122
|
+
type: 'input',
|
|
123
|
+
name: 'email',
|
|
124
|
+
message: 'Your email:',
|
|
125
|
+
validate: (input) => {
|
|
126
|
+
if (!input)
|
|
127
|
+
return 'Email is required';
|
|
128
|
+
if (!input.includes('@'))
|
|
129
|
+
return 'Please enter a valid email';
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
]);
|
|
134
|
+
const success = await subscribeEmail(email);
|
|
135
|
+
if (success) {
|
|
136
|
+
console.log();
|
|
137
|
+
console.log(chalk_1.default.green(' ✅ Added! You\'ll get notified of new versions.'));
|
|
138
|
+
console.log(chalk_1.default.gray(' (Remove anytime with: faf notifications --remove)'));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
console.log();
|
|
143
|
+
console.log(chalk_1.default.gray(' No problem! You can add your email later with: faf notifications'));
|
|
144
|
+
}
|
|
145
|
+
console.log();
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Allow manual subscription via flag
|
|
149
|
+
*/
|
|
150
|
+
async function subscribeViaFlag(email) {
|
|
151
|
+
if (!email || !email.includes('@')) {
|
|
152
|
+
console.log(chalk_1.default.red('Invalid email address'));
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const success = await subscribeEmail(email);
|
|
156
|
+
if (success) {
|
|
157
|
+
console.log(chalk_1.default.green(`✅ Added ${email} for version notifications`));
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
console.log(chalk_1.default.red('Failed to add email. Please try again later.'));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Show notification status
|
|
165
|
+
*/
|
|
166
|
+
function showSubscriptionStatus() {
|
|
167
|
+
if (isSubscribed()) {
|
|
168
|
+
try {
|
|
169
|
+
const data = JSON.parse(fs_1.default.readFileSync(EMAIL_STORE_FILE, 'utf-8'));
|
|
170
|
+
console.log(chalk_1.default.green(`📧 Email added: ${data.email}`));
|
|
171
|
+
console.log(chalk_1.default.gray(` Added on: ${new Date(data.subscribedAt).toLocaleDateString()}`));
|
|
172
|
+
console.log(chalk_1.default.gray(' Remove with: faf notifications --remove'));
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
console.log(chalk_1.default.green('📧 Your email is added for notifications'));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
console.log(chalk_1.default.gray('📧 No email added for notifications'));
|
|
180
|
+
console.log(chalk_1.default.gray(' Add with: faf notifications'));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Remove email from notifications
|
|
185
|
+
*/
|
|
186
|
+
function unsubscribe() {
|
|
187
|
+
if (fs_1.default.existsSync(EMAIL_STORE_FILE)) {
|
|
188
|
+
fs_1.default.unlinkSync(EMAIL_STORE_FILE);
|
|
189
|
+
console.log(chalk_1.default.green('✅ Email removed from notifications'));
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
console.log(chalk_1.default.gray('No email was added'));
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=email-opt-in.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-opt-in.js","sourceRoot":"","sources":["../../src/utils/email-opt-in.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🩵 FAF Feedback Messages - Humble & Grateful
|
|
3
|
+
* We only collect stars we deserve
|
|
4
|
+
*/
|
|
5
|
+
export declare function getThankYouMessage(score?: number): string;
|
|
6
|
+
export declare function getFeedbackPrompt(): string;
|
|
7
|
+
export declare function getSuccessMessage(command: string): string;
|
|
8
|
+
export declare function getHighScoreMessage(score: number): string;
|
|
9
|
+
export declare function getWelcomeMessage(): string;
|
|
10
|
+
export declare function getErrorHelpMessage(): string;
|
|
11
|
+
export declare function getMilestoneMessage(commandCount: number): string;
|
|
12
|
+
export declare const FOOTER_SIGNATURE: string;
|
|
13
|
+
//# sourceMappingURL=feedback-messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-messages.d.ts","sourceRoot":"","sources":["../../src/utils/feedback-messages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAiBzD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBzD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAazD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAU1C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAY5C;AAGD,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAiBhE;AAED,eAAO,MAAM,gBAAgB,QAG3B,CAAC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 🩵 FAF Feedback Messages - Humble & Grateful
|
|
4
|
+
* We only collect stars we deserve
|
|
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.FOOTER_SIGNATURE = void 0;
|
|
11
|
+
exports.getThankYouMessage = getThankYouMessage;
|
|
12
|
+
exports.getFeedbackPrompt = getFeedbackPrompt;
|
|
13
|
+
exports.getSuccessMessage = getSuccessMessage;
|
|
14
|
+
exports.getHighScoreMessage = getHighScoreMessage;
|
|
15
|
+
exports.getWelcomeMessage = getWelcomeMessage;
|
|
16
|
+
exports.getErrorHelpMessage = getErrorHelpMessage;
|
|
17
|
+
exports.getMilestoneMessage = getMilestoneMessage;
|
|
18
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
19
|
+
// FAF Cyan color
|
|
20
|
+
const fafCyan = chalk_1.default.hex('#0CC0DF');
|
|
21
|
+
function getThankYouMessage(score) {
|
|
22
|
+
if (score && score >= 85) {
|
|
23
|
+
return `
|
|
24
|
+
${fafCyan('─'.repeat(60))}
|
|
25
|
+
Thanks for using FAF! 🩵⚡
|
|
26
|
+
|
|
27
|
+
${chalk_1.default.dim('🩵 If you feel FAF deserves a star, it really helps:')}
|
|
28
|
+
${chalk_1.default.dim(' https://github.com/Wolfe-Jam/faf ⭐')}
|
|
29
|
+
|
|
30
|
+
${chalk_1.default.dim('We only collect stars we deserve.')}
|
|
31
|
+
${fafCyan('─'.repeat(60))}`;
|
|
32
|
+
}
|
|
33
|
+
return `
|
|
34
|
+
${chalk_1.default.dim('─'.repeat(40))}
|
|
35
|
+
${chalk_1.default.dim('Thanks for using FAF 🩵')}
|
|
36
|
+
${chalk_1.default.dim('─'.repeat(40))}`;
|
|
37
|
+
}
|
|
38
|
+
function getFeedbackPrompt() {
|
|
39
|
+
return `
|
|
40
|
+
🩵 Tell us how to improve FAF:
|
|
41
|
+
${fafCyan('https://github.com/Wolfe-Jam/faf/discussions')}
|
|
42
|
+
${chalk_1.default.dim('All feedback is read, considered & replied to.')}
|
|
43
|
+
`;
|
|
44
|
+
}
|
|
45
|
+
function getSuccessMessage(command) {
|
|
46
|
+
return `
|
|
47
|
+
✅ ${command} successful!
|
|
48
|
+
|
|
49
|
+
${chalk_1.default.dim('─'.repeat(50))}
|
|
50
|
+
${chalk_1.default.dim('Thank you for using FAF! 🩵📺')}
|
|
51
|
+
|
|
52
|
+
${chalk_1.default.dim('💬 Tell us how to improve:')}
|
|
53
|
+
${chalk_1.default.dim(' https://github.com/Wolfe-Jam/faf/discussions')}
|
|
54
|
+
${chalk_1.default.dim(' All feedback is read, considered & replied to.')}
|
|
55
|
+
|
|
56
|
+
${chalk_1.default.dim('⭐ If you feel we deserve it:')}
|
|
57
|
+
${chalk_1.default.dim(' https://github.com/Wolfe-Jam/faf')}
|
|
58
|
+
${chalk_1.default.dim(' Stars really help us continue. 🩵')}
|
|
59
|
+
${chalk_1.default.dim('─'.repeat(50))}
|
|
60
|
+
`;
|
|
61
|
+
}
|
|
62
|
+
function getHighScoreMessage(score) {
|
|
63
|
+
const emojis = score >= 99 ? '🏁⚡' : score >= 90 ? '🏎️⚡' : '✨⚡';
|
|
64
|
+
return `
|
|
65
|
+
${fafCyan('═'.repeat(60))}
|
|
66
|
+
${fafCyan(`Amazing! You reached ${score}% ${emojis}`)}
|
|
67
|
+
|
|
68
|
+
🩵 Your success makes FAF better for everyone!
|
|
69
|
+
|
|
70
|
+
${chalk_1.default.dim('If you feel we\'ve earned it: https://github.com/Wolfe-Jam/faf ⭐')}
|
|
71
|
+
${chalk_1.default.dim('We only collect stars we deserve.')}
|
|
72
|
+
${fafCyan('═'.repeat(60))}
|
|
73
|
+
`;
|
|
74
|
+
}
|
|
75
|
+
function getWelcomeMessage() {
|
|
76
|
+
return `
|
|
77
|
+
${fafCyan('Welcome to FAF! 🩵⚡📺')}
|
|
78
|
+
|
|
79
|
+
${chalk_1.default.dim('FAF = Fast AI Format')}
|
|
80
|
+
${chalk_1.default.dim('Making AI context simple, fast & trustworthy')}
|
|
81
|
+
|
|
82
|
+
${chalk_1.default.dim('All feedback welcome: https://github.com/Wolfe-Jam/faf/discussions')}
|
|
83
|
+
${chalk_1.default.dim('Thank you for trying FAF!')}
|
|
84
|
+
`;
|
|
85
|
+
}
|
|
86
|
+
function getErrorHelpMessage() {
|
|
87
|
+
return `
|
|
88
|
+
${chalk_1.default.dim('─'.repeat(50))}
|
|
89
|
+
${chalk_1.default.yellow('Need help with this error?')}
|
|
90
|
+
|
|
91
|
+
🩵 We respond to all discussions within 24 hours:
|
|
92
|
+
${fafCyan('https://github.com/Wolfe-Jam/faf/discussions')}
|
|
93
|
+
|
|
94
|
+
${chalk_1.default.dim('Your feedback helps us improve FAF for everyone.')}
|
|
95
|
+
${chalk_1.default.dim('Thank you for your patience! 📺')}
|
|
96
|
+
${chalk_1.default.dim('─'.repeat(50))}
|
|
97
|
+
`;
|
|
98
|
+
}
|
|
99
|
+
// Show gratitude after N successful commands
|
|
100
|
+
function getMilestoneMessage(commandCount) {
|
|
101
|
+
if (commandCount === 10) {
|
|
102
|
+
return `
|
|
103
|
+
${fafCyan('─'.repeat(60))}
|
|
104
|
+
🩵 You've run FAF ${commandCount} times! Thank you for being a regular user!
|
|
105
|
+
|
|
106
|
+
Your experience matters to us.
|
|
107
|
+
How can we make FAF better for you?
|
|
108
|
+
${fafCyan('https://github.com/Wolfe-Jam/faf/discussions')}
|
|
109
|
+
|
|
110
|
+
${chalk_1.default.dim('We only collect stars we deserve.')}
|
|
111
|
+
${chalk_1.default.dim('If you feel we\'ve earned one: https://github.com/Wolfe-Jam/faf ⭐')}
|
|
112
|
+
${fafCyan('─'.repeat(60))}
|
|
113
|
+
`;
|
|
114
|
+
}
|
|
115
|
+
return '';
|
|
116
|
+
}
|
|
117
|
+
exports.FOOTER_SIGNATURE = chalk_1.default.dim(`
|
|
118
|
+
Thanks for using FAF 🩵⚡
|
|
119
|
+
Feedback always welcome 📺
|
|
120
|
+
`);
|
|
121
|
+
//# sourceMappingURL=feedback-messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-messages.js","sourceRoot":"","sources":["../../src/utils/feedback-messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,17 +18,20 @@ function generateScoreHeader(data) {
|
|
|
18
18
|
const { currentScore, birthScore, aiPredictive, dna } = data;
|
|
19
19
|
// Determine score color based on percentage
|
|
20
20
|
const getScoreColor = (score) => {
|
|
21
|
-
if (score >= 99)
|
|
22
|
-
return championship_style_1.FAF_COLORS.fafOrange;
|
|
23
|
-
|
|
21
|
+
if (score >= 99) {
|
|
22
|
+
return championship_style_1.FAF_COLORS.fafOrange;
|
|
23
|
+
} // Big Orange territory!
|
|
24
|
+
if (score >= 85) {
|
|
24
25
|
return championship_style_1.FAF_COLORS.fafGreen;
|
|
25
|
-
|
|
26
|
+
}
|
|
27
|
+
if (score >= 70) {
|
|
26
28
|
return championship_style_1.FAF_COLORS.fafCyan;
|
|
29
|
+
}
|
|
27
30
|
return championship_style_1.FAF_COLORS.fafWhite;
|
|
28
31
|
};
|
|
29
32
|
const scoreColor = getScoreColor(currentScore);
|
|
30
33
|
// Build the score display
|
|
31
|
-
let scoreDisplay = `${scoreColor(currentScore
|
|
34
|
+
let scoreDisplay = `${scoreColor(`${currentScore}%`)}`;
|
|
32
35
|
// Add birth score if available
|
|
33
36
|
if (birthScore !== undefined && birthScore !== currentScore) {
|
|
34
37
|
const improvement = currentScore - birthScore;
|
|
@@ -51,7 +54,7 @@ function generateScoreHeader(data) {
|
|
|
51
54
|
// AI Predictive (only show if higher than current)
|
|
52
55
|
let aiDisplay = '';
|
|
53
56
|
if (aiPredictive && aiPredictive > currentScore) {
|
|
54
|
-
aiDisplay = chalk_1.default.gray(` > AI-Predictive: ${championship_style_1.FAF_COLORS.fafCyan(aiPredictive
|
|
57
|
+
aiDisplay = chalk_1.default.gray(` > AI-Predictive: ${championship_style_1.FAF_COLORS.fafCyan(`${aiPredictive}%`)}`);
|
|
55
58
|
}
|
|
56
59
|
// Create the box
|
|
57
60
|
return `╔════════════════════════════════════════════════════════════╗
|
|
@@ -64,16 +67,19 @@ ${aiDisplay ? `║ ${aiDisplay}\n` : ''}╚════════════
|
|
|
64
67
|
function generateScoreLine(data) {
|
|
65
68
|
const { currentScore, birthScore } = data;
|
|
66
69
|
const getScoreColor = (score) => {
|
|
67
|
-
if (score >= 99)
|
|
70
|
+
if (score >= 99) {
|
|
68
71
|
return championship_style_1.FAF_COLORS.fafOrange;
|
|
69
|
-
|
|
72
|
+
}
|
|
73
|
+
if (score >= 85) {
|
|
70
74
|
return championship_style_1.FAF_COLORS.fafGreen;
|
|
71
|
-
|
|
75
|
+
}
|
|
76
|
+
if (score >= 70) {
|
|
72
77
|
return championship_style_1.FAF_COLORS.fafCyan;
|
|
78
|
+
}
|
|
73
79
|
return championship_style_1.FAF_COLORS.fafWhite;
|
|
74
80
|
};
|
|
75
81
|
const scoreColor = getScoreColor(currentScore);
|
|
76
|
-
let line = `🏆 Score: ${scoreColor(currentScore
|
|
82
|
+
let line = `🏆 Score: ${scoreColor(`${currentScore}%`)}`;
|
|
77
83
|
if (birthScore !== undefined && birthScore !== currentScore) {
|
|
78
84
|
const improvement = currentScore - birthScore;
|
|
79
85
|
if (improvement > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"score-header.js","sourceRoot":"","sources":["../../src/utils/score-header.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAkBH,kDA8CC;AAKD,8CAsBC;AAzFD,kDAA0B;AAC1B,6DAAkD;AAYlD;;GAEG;AACH,SAAgB,mBAAmB,CAAC,IAAe;IACjD,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAE7D,4CAA4C;IAC5C,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE;QACtC,IAAI,KAAK,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"score-header.js","sourceRoot":"","sources":["../../src/utils/score-header.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/utils/update-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../src/utils/update-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0FH;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4ClF;AAUD;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAetD"}
|
|
@@ -48,6 +48,7 @@ const path = __importStar(require("path"));
|
|
|
48
48
|
const os = __importStar(require("os"));
|
|
49
49
|
const https_1 = __importDefault(require("https"));
|
|
50
50
|
const championship_style_1 = require("./championship-style");
|
|
51
|
+
const announcements_1 = require("./announcements");
|
|
51
52
|
const CACHE_FILE = path.join(os.homedir(), '.faf-cli-cache', 'update-check.json');
|
|
52
53
|
const CHECK_INTERVAL = 24 * 60 * 60 * 1000; // 24 hours
|
|
53
54
|
const REGISTRY_URL = 'https://registry.npmjs.org/faf-cli/latest';
|
|
@@ -169,18 +170,8 @@ async function checkForUpdates(options) {
|
|
|
169
170
|
* Show update message
|
|
170
171
|
*/
|
|
171
172
|
function showUpdateMessage(latest, current) {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
console.log(championship_style_1.FAF_COLORS.fafCyan(` 🆕 FAF Update Available!`));
|
|
175
|
-
console.log(chalk_1.default.gray(` Current: v${current}`));
|
|
176
|
-
console.log(championship_style_1.FAF_COLORS.fafGreen(` Latest: v${latest}`));
|
|
177
|
-
console.log();
|
|
178
|
-
console.log(chalk_1.default.white(` Update with:`));
|
|
179
|
-
console.log(championship_style_1.FAF_COLORS.fafCyan(` npm update -g faf-cli`));
|
|
180
|
-
console.log();
|
|
181
|
-
console.log(chalk_1.default.gray(` What's new: https://github.com/faf-cli/releases`));
|
|
182
|
-
console.log(championship_style_1.FAF_COLORS.fafOrange('━'.repeat(50)));
|
|
183
|
-
console.log();
|
|
173
|
+
// Use the new announcement system for cleaner display
|
|
174
|
+
(0, announcements_1.showUpdateAvailable)(current, latest);
|
|
184
175
|
}
|
|
185
176
|
/**
|
|
186
177
|
* Force check (for testing or manual trigger)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/utils/update-checker.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../src/utils/update-checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -199,7 +199,7 @@ function generateFafContent(projectData) {
|
|
|
199
199
|
}
|
|
200
200
|
const fafData = {
|
|
201
201
|
// FAF schema version (not CLI version)
|
|
202
|
-
faf_version: '2.
|
|
202
|
+
faf_version: '2.4.0',
|
|
203
203
|
// 🤖 AI-FIRST SCORING SYSTEM - Live date instead of versions
|
|
204
204
|
ai_scoring_system: '2025-08-30', // MY scoring logic live date (COUNT ONCE architecture)
|
|
205
205
|
ai_score: `${projectData.fafScore}%`, // MY evaluation
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "faf-cli",
|
|
3
|
-
"version": "2.4.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.4.3",
|
|
4
|
+
"description": "🩵 Cyan CLI - Transform any project into perfect AI context in 30 seconds. Works with Claude, ChatGPT, Gemini & all AI tools. Join 2000+ developers using .faf files. 100% FREE • Open Source • If helpful, a ⭐ is appreciated!",
|
|
5
5
|
"icon": "https://faf.one/orange-smiley.svg",
|
|
6
6
|
"logo": "https://faf.one/orange-smiley.svg",
|
|
7
7
|
"main": "dist/index.js",
|