faf-cli 2.3.5 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +13 -2
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +128 -5
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/about.d.ts +10 -0
  6. package/dist/commands/about.d.ts.map +1 -0
  7. package/dist/commands/about.js +249 -0
  8. package/dist/commands/about.js.map +1 -0
  9. package/dist/commands/art.d.ts +10 -0
  10. package/dist/commands/art.d.ts.map +1 -0
  11. package/dist/commands/art.js +129 -0
  12. package/dist/commands/art.js.map +1 -0
  13. package/dist/commands/license-config.d.ts +10 -0
  14. package/dist/commands/license-config.d.ts.map +1 -0
  15. package/dist/commands/license-config.js +140 -0
  16. package/dist/commands/license-config.js.map +1 -0
  17. package/dist/commands/license.d.ts +7 -0
  18. package/dist/commands/license.d.ts.map +1 -0
  19. package/dist/commands/license.js +60 -0
  20. package/dist/commands/license.js.map +1 -0
  21. package/dist/commands/score-v3.d.ts.map +1 -1
  22. package/dist/commands/score-v3.js +14 -7
  23. package/dist/commands/score-v3.js.map +1 -1
  24. package/dist/commands/score.d.ts.map +1 -1
  25. package/dist/commands/score.js +30 -10
  26. package/dist/commands/score.js.map +1 -1
  27. package/dist/commands/submit-art.d.ts +25 -0
  28. package/dist/commands/submit-art.d.ts.map +1 -0
  29. package/dist/commands/submit-art.js +348 -0
  30. package/dist/commands/submit-art.js.map +1 -0
  31. package/dist/engine/engine-loader.d.ts +24 -0
  32. package/dist/engine/engine-loader.d.ts.map +1 -0
  33. package/dist/engine/engine-loader.js +156 -0
  34. package/dist/engine/engine-loader.js.map +1 -0
  35. package/dist/engine-bridge.d.ts +5 -5
  36. package/dist/engine-bridge.d.ts.map +1 -1
  37. package/dist/engine-bridge.js +20 -7
  38. package/dist/engine-bridge.js.map +1 -1
  39. package/dist/engine-mk2/mk2-core.d.ts +38 -0
  40. package/dist/engine-mk2/mk2-core.d.ts.map +1 -0
  41. package/dist/engine-mk2/mk2-core.js +217 -0
  42. package/dist/engine-mk2/mk2-core.js.map +1 -0
  43. package/dist/license/license-config.d.ts +59 -0
  44. package/dist/license/license-config.d.ts.map +1 -0
  45. package/dist/license/license-config.js +263 -0
  46. package/dist/license/license-config.js.map +1 -0
  47. package/dist/license/license-controller.d.ts +41 -0
  48. package/dist/license/license-controller.d.ts.map +1 -0
  49. package/dist/license/license-controller.js +243 -0
  50. package/dist/license/license-controller.js.map +1 -0
  51. package/dist/utils/art-gallery.d.ts +58 -0
  52. package/dist/utils/art-gallery.d.ts.map +1 -0
  53. package/dist/utils/art-gallery.js +275 -0
  54. package/dist/utils/art-gallery.js.map +1 -0
  55. package/dist/utils/championship-style.d.ts +1 -1
  56. package/dist/utils/championship-style.d.ts.map +1 -1
  57. package/dist/utils/championship-style.js +17 -13
  58. package/dist/utils/championship-style.js.map +1 -1
  59. package/dist/utils/score-header.d.ts +22 -0
  60. package/dist/utils/score-header.d.ts.map +1 -0
  61. package/dist/utils/score-header.js +85 -0
  62. package/dist/utils/score-header.js.map +1 -0
  63. package/dist/utils/score-indicators.d.ts +47 -0
  64. package/dist/utils/score-indicators.d.ts.map +1 -0
  65. package/dist/utils/score-indicators.js +197 -0
  66. package/dist/utils/score-indicators.js.map +1 -0
  67. package/package.json +8 -3
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ /**
3
+ * License Controller for FAF Engine
4
+ * Controls which engine (MK-1/MK-2) and features are available
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.licenseController = exports.LicenseController = void 0;
41
+ const crypto = __importStar(require("crypto"));
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const os = __importStar(require("os"));
45
+ class LicenseController {
46
+ static instance;
47
+ currentLicense;
48
+ licensePath;
49
+ constructor() {
50
+ // Check for license file in order of precedence
51
+ this.licensePath = this.findLicenseFile();
52
+ this.currentLicense = this.loadLicense();
53
+ }
54
+ static getInstance() {
55
+ if (!this.instance) {
56
+ this.instance = new LicenseController();
57
+ }
58
+ return this.instance;
59
+ }
60
+ findLicenseFile() {
61
+ // Check locations in order
62
+ const locations = [
63
+ process.env.FAF_LICENSE_FILE, // Environment variable
64
+ path.join(process.cwd(), '.faf-license'), // Project directory
65
+ path.join(os.homedir(), '.faf', 'license'), // User home
66
+ '/etc/faf/license' // System-wide
67
+ ].filter(Boolean);
68
+ for (const location of locations) {
69
+ if (location && fs.existsSync(location)) {
70
+ return location;
71
+ }
72
+ }
73
+ return path.join(os.homedir(), '.faf', 'license');
74
+ }
75
+ loadLicense() {
76
+ // Check environment variable first
77
+ if (process.env.FAF_LICENSE_KEY) {
78
+ return this.validateKey(process.env.FAF_LICENSE_KEY);
79
+ }
80
+ // Try to load from file
81
+ try {
82
+ if (fs.existsSync(this.licensePath)) {
83
+ const content = fs.readFileSync(this.licensePath, 'utf-8');
84
+ return this.validateKey(content.trim());
85
+ }
86
+ }
87
+ catch {
88
+ // Fall through to free tier
89
+ }
90
+ // Default to free tier
91
+ return this.getFreeTier();
92
+ }
93
+ validateKey(key) {
94
+ // Special keys for testing
95
+ if (key === 'FREE')
96
+ return this.getFreeTier();
97
+ if (key === 'CHAMPIONSHIP-TEST')
98
+ return this.getChampionshipTier();
99
+ // Decode license key (format: TYPE-ENGINE-EXPIRY-SIGNATURE)
100
+ try {
101
+ const parts = key.split('-');
102
+ if (parts.length < 3)
103
+ return this.getFreeTier();
104
+ const [type, engine, expiry, ...signature] = parts;
105
+ // Verify signature
106
+ if (!this.verifySignature(key)) {
107
+ return this.getFreeTier();
108
+ }
109
+ // Check expiry
110
+ if (expiry !== 'NEVER') {
111
+ const expiryDate = new Date(parseInt(expiry));
112
+ if (expiryDate < new Date()) {
113
+ return this.getFreeTier();
114
+ }
115
+ }
116
+ // Return appropriate license
117
+ return this.buildLicense(type, engine);
118
+ }
119
+ catch {
120
+ return this.getFreeTier();
121
+ }
122
+ }
123
+ verifySignature(key) {
124
+ // In production, verify against your signing key
125
+ // For now, simple validation
126
+ return key.includes('-') && key.length > 10;
127
+ }
128
+ buildLicense(type, engine) {
129
+ const licenses = {
130
+ free: this.getFreeTier(),
131
+ developer: {
132
+ type: 'developer',
133
+ engine: 'MK-1',
134
+ scoreLimit: 85,
135
+ features: ['basic', 'cache', 'chrome-extension']
136
+ },
137
+ professional: {
138
+ type: 'professional',
139
+ engine: 'MK-2',
140
+ scoreLimit: 95,
141
+ features: ['basic', 'cache', 'chrome-extension', 'advanced-scoring', 'compiler']
142
+ },
143
+ enterprise: {
144
+ type: 'enterprise',
145
+ engine: 'MK-2',
146
+ scoreLimit: 100,
147
+ features: ['all']
148
+ },
149
+ championship: this.getChampionshipTier()
150
+ };
151
+ const license = licenses[type];
152
+ if (engine) {
153
+ license.engine = engine;
154
+ }
155
+ return license;
156
+ }
157
+ getFreeTier() {
158
+ return {
159
+ type: 'free',
160
+ engine: 'MK-1',
161
+ scoreLimit: 70,
162
+ features: ['basic']
163
+ };
164
+ }
165
+ getChampionshipTier() {
166
+ return {
167
+ type: 'championship',
168
+ engine: 'MK-2',
169
+ scoreLimit: 100,
170
+ features: ['all', 'priority-support', 'custom-features']
171
+ };
172
+ }
173
+ // Public API
174
+ getLicense() {
175
+ return this.currentLicense;
176
+ }
177
+ getEngine() {
178
+ return this.currentLicense.engine;
179
+ }
180
+ getScoreLimit() {
181
+ return this.currentLicense.scoreLimit;
182
+ }
183
+ hasFeature(feature) {
184
+ return this.currentLicense.features.includes('all') ||
185
+ this.currentLicense.features.includes(feature);
186
+ }
187
+ canUseEngine(engine) {
188
+ if (engine === 'MK-1')
189
+ return true; // Everyone can use MK-1
190
+ if (engine === 'MK-2') {
191
+ return this.currentLicense.engine === 'MK-2';
192
+ }
193
+ return false;
194
+ }
195
+ setLicense(key) {
196
+ const newLicense = this.validateKey(key);
197
+ if (newLicense.type !== 'free') {
198
+ this.currentLicense = newLicense;
199
+ // Save to file
200
+ try {
201
+ const dir = path.dirname(this.licensePath);
202
+ if (!fs.existsSync(dir)) {
203
+ fs.mkdirSync(dir, { recursive: true });
204
+ }
205
+ fs.writeFileSync(this.licensePath, key, 'utf-8');
206
+ return true;
207
+ }
208
+ catch {
209
+ // Still use the license in memory
210
+ return true;
211
+ }
212
+ }
213
+ return false;
214
+ }
215
+ generateTrialKey(email, days = 14) {
216
+ const expiry = Date.now() + (days * 24 * 60 * 60 * 1000);
217
+ const key = `TRIAL-MK2-${expiry}-${this.hash(email)}`;
218
+ return key;
219
+ }
220
+ hash(input) {
221
+ return crypto.createHash('sha256').update(input).digest('hex').substring(0, 8);
222
+ }
223
+ getInfo() {
224
+ const license = this.currentLicense;
225
+ const lines = [
226
+ `License Type: ${license.type.toUpperCase()}`,
227
+ `Engine: ${license.engine}`,
228
+ `Score Limit: ${license.scoreLimit}%`,
229
+ `Features: ${license.features.join(', ')}`,
230
+ ];
231
+ if (license.expiresAt) {
232
+ lines.push(`Expires: ${license.expiresAt.toLocaleDateString()}`);
233
+ }
234
+ if (license.issuedTo) {
235
+ lines.push(`Issued To: ${license.issuedTo}`);
236
+ }
237
+ return lines.join('\n');
238
+ }
239
+ }
240
+ exports.LicenseController = LicenseController;
241
+ // Export singleton instance
242
+ exports.licenseController = LicenseController.getInstance();
243
+ //# sourceMappingURL=license-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-controller.js","sourceRoot":"","sources":["../../src/license/license-controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * 🎨 FAF Art Gallery - Multiple banner styles for fun!
3
+ * Because who doesn't want options?
4
+ */
5
+ export type ArtStyle = 'classic' | 'v1' | 'v2' | 'retro' | 'minimal' | 'big' | 'racing' | 'neon' | 'ascii' | 'random';
6
+ /**
7
+ * Classic 3D FAF (the current one)
8
+ */
9
+ export declare function artClassic(version: string): string;
10
+ /**
11
+ * Original v1 style (simpler box chars)
12
+ */
13
+ export declare function artV1(version: string): string;
14
+ /**
15
+ * V2 style (horizontal gradient)
16
+ */
17
+ export declare function artV2(version: string): string;
18
+ /**
19
+ * Retro terminal style (old school)
20
+ */
21
+ export declare function artRetro(version: string): string;
22
+ /**
23
+ * Minimal style (clean and simple)
24
+ */
25
+ export declare function artMinimal(version: string): string;
26
+ /**
27
+ * BIG ORANGE style (when you hit 99%+)
28
+ */
29
+ export declare function artBig(version: string): string;
30
+ /**
31
+ * Racing style (F1 inspired)
32
+ */
33
+ export declare function artRacing(version: string): string;
34
+ /**
35
+ * Neon style (cyberpunk vibes)
36
+ */
37
+ export declare function artNeon(version: string): string;
38
+ /**
39
+ * Pure ASCII art (no unicode)
40
+ */
41
+ export declare function artAscii(version: string): string;
42
+ /**
43
+ * Get a random art style
44
+ */
45
+ export declare function artRandom(version: string): string;
46
+ /**
47
+ * Get art by style name (including user submissions)
48
+ */
49
+ export declare function getArtByStyle(style: ArtStyle | string, version: string): Promise<string>;
50
+ /**
51
+ * Get style based on score (for fun!)
52
+ */
53
+ export declare function getArtByScore(score: number, version: string): string;
54
+ /**
55
+ * List all available styles
56
+ */
57
+ export declare function listArtStyles(): string[];
58
+ //# sourceMappingURL=art-gallery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"art-gallery.d.ts","sourceRoot":"","sources":["../../src/utils/art-gallery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtH;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgBlD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAU7C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAW7C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYhD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAY9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAcjD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAW/C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAUhD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAcjD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6B9F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQpE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAaxC"}
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+ /**
3
+ * 🎨 FAF Art Gallery - Multiple banner styles for fun!
4
+ * Because who doesn't want options?
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.artClassic = artClassic;
41
+ exports.artV1 = artV1;
42
+ exports.artV2 = artV2;
43
+ exports.artRetro = artRetro;
44
+ exports.artMinimal = artMinimal;
45
+ exports.artBig = artBig;
46
+ exports.artRacing = artRacing;
47
+ exports.artNeon = artNeon;
48
+ exports.artAscii = artAscii;
49
+ exports.artRandom = artRandom;
50
+ exports.getArtByStyle = getArtByStyle;
51
+ exports.getArtByScore = getArtByScore;
52
+ exports.listArtStyles = listArtStyles;
53
+ const championship_style_1 = require("./championship-style");
54
+ /**
55
+ * Classic 3D FAF (the current one)
56
+ */
57
+ function artClassic(version) {
58
+ return `╔══════════════════════════════════════════════════════════════╗
59
+ ║ ║
60
+ ║ ${championship_style_1.FAF_COLORS.fafCyan('███████╗')} ${championship_style_1.FAF_COLORS.fafCyan('███████╗')} ${championship_style_1.FAF_COLORS.fafCyan('███████╗')} 🏎️ 🏁 v${version}
61
+ ║ ${championship_style_1.FAF_COLORS.fafCyan('██╔════╝')} ${championship_style_1.FAF_COLORS.fafCyan('██╔══██╗')} ${championship_style_1.FAF_COLORS.fafCyan('██╔════╝')}
62
+ ║ ${championship_style_1.FAF_COLORS.fafCyan('█████╗ ')} ${championship_style_1.FAF_COLORS.fafCyan('███████║')} ${championship_style_1.FAF_COLORS.fafCyan('█████╗ ')}
63
+ ║ ${championship_style_1.FAF_COLORS.fafWhite('██╔══╝ ')} ${championship_style_1.FAF_COLORS.fafWhite('██╔══██║')} ${championship_style_1.FAF_COLORS.fafWhite('██╔══╝ ')}
64
+ ║ ${championship_style_1.FAF_COLORS.fafWhite('██║ ')} ${championship_style_1.FAF_COLORS.fafWhite('██║ ██║')} ${championship_style_1.FAF_COLORS.fafWhite('██║ ')}
65
+ ║ ${championship_style_1.FAF_COLORS.fafOrange('██║ ')} ${championship_style_1.FAF_COLORS.fafOrange('██║ ██║')} ${championship_style_1.FAF_COLORS.fafOrange('██║ ')}
66
+ ║ ${championship_style_1.FAF_COLORS.fafOrange('╚═╝ ')} ${championship_style_1.FAF_COLORS.fafOrange('╚═╝ ╚═╝')} ${championship_style_1.FAF_COLORS.fafOrange('╚═╝ ')}
67
+ ║ ║
68
+ ║ 🤖 Make Your AI Happy! 🧡 Trust Driven ║
69
+ ║ ───────────────────────────────────────────────── ║
70
+ ║ 🌐 Universal, AI-Context ⚡ FAST AF 💙 ║
71
+ ║ ║
72
+ ╚══════════════════════════════════════════════════════════════╝`;
73
+ }
74
+ /**
75
+ * Original v1 style (simpler box chars)
76
+ */
77
+ function artV1(version) {
78
+ return `┌─────────────────────────────────────────────────────────────┐
79
+ │ ███████ ███████ ███████ 🏎️ FAST ⚡ v${version} │
80
+ │ ██ ██ ██ ██ │
81
+ │ █████ ███████ █████ AI Context Format │
82
+ │ ██ ██ ██ ██ │
83
+ │ ██ ██ ██ ██ .faf = THE JPEG for AI │
84
+ │ │
85
+ │ 🧡 Make Your AI Happy! · Trust Driven · FAST AF 🏁 │
86
+ └─────────────────────────────────────────────────────────────┘`;
87
+ }
88
+ /**
89
+ * V2 style (horizontal gradient)
90
+ */
91
+ function artV2(version) {
92
+ return `╔═══════════════════════════════════════════════════════════════════╗
93
+ ║ ║
94
+ ║ ${championship_style_1.FAF_COLORS.fafCyan('███')}${championship_style_1.FAF_COLORS.fafWhite('███')}${championship_style_1.FAF_COLORS.fafOrange('█')} ${championship_style_1.FAF_COLORS.fafCyan('███')}${championship_style_1.FAF_COLORS.fafWhite('███')}${championship_style_1.FAF_COLORS.fafOrange('█')} ${championship_style_1.FAF_COLORS.fafCyan('███')}${championship_style_1.FAF_COLORS.fafWhite('███')}${championship_style_1.FAF_COLORS.fafOrange('█')} v${version}
95
+ ║ ${championship_style_1.FAF_COLORS.fafCyan('██')}${championship_style_1.FAF_COLORS.fafWhite('═══')}${championship_style_1.FAF_COLORS.fafOrange('═╝')} ${championship_style_1.FAF_COLORS.fafCyan('██')}${championship_style_1.FAF_COLORS.fafWhite('═══')}${championship_style_1.FAF_COLORS.fafOrange('██')} ${championship_style_1.FAF_COLORS.fafCyan('██')}${championship_style_1.FAF_COLORS.fafWhite('═══')}${championship_style_1.FAF_COLORS.fafOrange('═╝')}
96
+ ║ ${championship_style_1.FAF_COLORS.fafCyan('█████')}${championship_style_1.FAF_COLORS.fafOrange('╗')} ${championship_style_1.FAF_COLORS.fafCyan('███████')} ${championship_style_1.FAF_COLORS.fafCyan('█████')}${championship_style_1.FAF_COLORS.fafOrange('╗')} 🏎️ Championship Edition
97
+ ║ ${championship_style_1.FAF_COLORS.fafWhite('██')}${championship_style_1.FAF_COLORS.fafOrange('═══╝')} ${championship_style_1.FAF_COLORS.fafWhite('██')}${championship_style_1.FAF_COLORS.fafOrange('═══██')} ${championship_style_1.FAF_COLORS.fafWhite('██')}${championship_style_1.FAF_COLORS.fafOrange('═══╝')}
98
+ ║ ${championship_style_1.FAF_COLORS.fafWhite('██')} ${championship_style_1.FAF_COLORS.fafWhite('██ ██')} ${championship_style_1.FAF_COLORS.fafWhite('██')}
99
+ ║ ${championship_style_1.FAF_COLORS.fafOrange('╚═')} ${championship_style_1.FAF_COLORS.fafOrange('╚═ ╚═')} ${championship_style_1.FAF_COLORS.fafOrange('╚═')} Trust 🧡 Speed ⚡
100
+ ║ ║
101
+ ╚═══════════════════════════════════════════════════════════════════╝`;
102
+ }
103
+ /**
104
+ * Retro terminal style (old school)
105
+ */
106
+ function artRetro(version) {
107
+ return `+------------------------------------------------------------------+
108
+ | |
109
+ | FFFFF AAAAA FFFFF .FAF v${version.padEnd(6)} |
110
+ | F A A F Foundational AI-context Format |
111
+ | FFF AAAAA FFF ================================ |
112
+ | F A A F > LOADING AI CONTEXT... |
113
+ | F A A F > TRUST PROTOCOL ACTIVE |
114
+ | > READY FOR LAUNCH |
115
+ | |
116
+ | [OK] System Status: OPTIMAL CPU: <50ms RAM: 2.3MB |
117
+ +------------------------------------------------------------------+`;
118
+ }
119
+ /**
120
+ * Minimal style (clean and simple)
121
+ */
122
+ function artMinimal(version) {
123
+ return `
124
+ ${championship_style_1.FAF_COLORS.fafCyan('FAF')} · ${championship_style_1.FAF_COLORS.fafWhite('AI Context')} · ${championship_style_1.FAF_COLORS.fafOrange('v' + version)}
125
+ ─────────────────────────────
126
+ Make Your AI Happy 🧡
127
+ `;
128
+ }
129
+ /**
130
+ * BIG ORANGE style (when you hit 99%+)
131
+ */
132
+ function artBig(version) {
133
+ return `${championship_style_1.FAF_COLORS.fafOrange('╔════════════════════════════════════════════════════════════════════╗')}
134
+ ${championship_style_1.FAF_COLORS.fafOrange('║')} ${championship_style_1.FAF_COLORS.fafOrange('║')}
135
+ ${championship_style_1.FAF_COLORS.fafOrange('║')} ${championship_style_1.FAF_COLORS.fafOrange('███████╗ ███████╗ ███████╗')} 🍊 BIG ORANGE 🍊 v${version}
136
+ ${championship_style_1.FAF_COLORS.fafOrange('║')} ${championship_style_1.FAF_COLORS.fafOrange('██╔════╝ ██╔══██╗ ██╔════╝')}
137
+ ${championship_style_1.FAF_COLORS.fafOrange('║')} ${championship_style_1.FAF_COLORS.fafOrange('█████╗ ███████║ █████╗ ')} 105% ACHIEVED!
138
+ ${championship_style_1.FAF_COLORS.fafOrange('║')} ${championship_style_1.FAF_COLORS.fafOrange('██╔══╝ ██╔══██║ ██╔══╝ ')}
139
+ ${championship_style_1.FAF_COLORS.fafOrange('║')} ${championship_style_1.FAF_COLORS.fafOrange('██║ ██║ ██║ ██║ ')} CHAMPIONSHIP PERFORMANCE
140
+ ${championship_style_1.FAF_COLORS.fafOrange('║')} ${championship_style_1.FAF_COLORS.fafOrange('╚═╝ ╚═╝ ╚═╝ ╚═╝ ')}
141
+ ${championship_style_1.FAF_COLORS.fafOrange('║')} ${championship_style_1.FAF_COLORS.fafOrange('║')}
142
+ ${championship_style_1.FAF_COLORS.fafOrange('║')} 🏆 YOU ARE THE CHAMPION! 🏆 ${championship_style_1.FAF_COLORS.fafOrange('║')}
143
+ ${championship_style_1.FAF_COLORS.fafOrange('╚════════════════════════════════════════════════════════════════════╝')}`;
144
+ }
145
+ /**
146
+ * Racing style (F1 inspired)
147
+ */
148
+ function artRacing(version) {
149
+ return `
150
+ 🏁━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━🏁
151
+ 🏎️ FAF RACING TEAM 🏎️
152
+ 🏁━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━🏁
153
+ ███████╗ ███████╗ ███████╗
154
+ ██╔════╝ ██╔══██╗ ██╔════╝ POLE POSITION
155
+ █████╗ ███████║ █████╗ LAP TIME: <50ms
156
+ ██╔══╝ ██╔══██║ ██╔══╝ SECTOR 1: ✅
157
+ ██║ ██║ ██║ ██║ SECTOR 2: ✅
158
+ ╚═╝ ╚═╝ ╚═╝ ╚═╝ SECTOR 3: ✅
159
+
160
+ ⚡ TURBO: ENGAGED | 🏆 POINTS: 99 | 📊 TELEMETRY: LIVE
161
+ 🏁━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━🏁`;
162
+ }
163
+ /**
164
+ * Neon style (cyberpunk vibes)
165
+ */
166
+ function artNeon(version) {
167
+ return `${championship_style_1.FAF_COLORS.fafCyan('╔═[SYSTEM:FAF]═══════════════════════════════════[v' + version + ']═╗')}
168
+ ${championship_style_1.FAF_COLORS.fafCyan('║')} ${championship_style_1.FAF_COLORS.gradient('░▒▓█ FAF █▓▒░')} ${championship_style_1.FAF_COLORS.fafCyan('[NEURAL LINK: ESTABLISHED]')} ${championship_style_1.FAF_COLORS.fafCyan('║')}
169
+ ${championship_style_1.FAF_COLORS.fafCyan('║')} ${championship_style_1.FAF_COLORS.fafOrange('▀▀█▀▀ █▀█ █▀▀')} ${championship_style_1.FAF_COLORS.fafWhite('[AI CONTEXT: LOADED]')} ${championship_style_1.FAF_COLORS.fafCyan('║')}
170
+ ${championship_style_1.FAF_COLORS.fafCyan('║')} ${championship_style_1.FAF_COLORS.fafOrange(' █ █▀█ █▀ ')} ${championship_style_1.FAF_COLORS.fafGreen('[TRUST LEVEL: ████████░░] 85%')} ${championship_style_1.FAF_COLORS.fafCyan('║')}
171
+ ${championship_style_1.FAF_COLORS.fafCyan('║')} ${championship_style_1.FAF_COLORS.fafOrange(' ▀ ▀ ▀ ▀ ')} ${championship_style_1.FAF_COLORS.gradient('[QUANTUM STATE: COHERENT]')} ${championship_style_1.FAF_COLORS.fafCyan('║')}
172
+ ${championship_style_1.FAF_COLORS.fafCyan('║')} ${championship_style_1.FAF_COLORS.fafCyan('║')}
173
+ ${championship_style_1.FAF_COLORS.fafCyan('║')} > INITIALIZE /usr/ai/context ${championship_style_1.FAF_COLORS.fafCyan('║')}
174
+ ${championship_style_1.FAF_COLORS.fafCyan('║')} > LOADING... ████████████████████████ 100% ${championship_style_1.FAF_COLORS.fafCyan('║')}
175
+ ${championship_style_1.FAF_COLORS.fafCyan('║')} > STATUS: ${championship_style_1.FAF_COLORS.fafGreen('●')} ONLINE | LATENCY: ${championship_style_1.FAF_COLORS.fafGreen('<50ms')} | MODE: ${championship_style_1.FAF_COLORS.fafOrange('TURBO')} ${championship_style_1.FAF_COLORS.fafCyan('║')}
176
+ ${championship_style_1.FAF_COLORS.fafCyan('╚══════════════════════════════════════════════════════════╝')}`;
177
+ }
178
+ /**
179
+ * Pure ASCII art (no unicode)
180
+ */
181
+ function artAscii(version) {
182
+ return `
183
+ _/_/_/_/ _/_/ _/_/_/_/
184
+ _/ _/ _/ _/
185
+ _/_/_/ _/_/_/_/ _/_/_/
186
+ _/ _/ _/ _/
187
+ _/ _/ _/ _/
188
+
189
+ .faf - THE JPEG for AI - v${version}
190
+ Make Your AI Happy!`;
191
+ }
192
+ /**
193
+ * Get a random art style
194
+ */
195
+ function artRandom(version) {
196
+ const styles = [
197
+ artClassic,
198
+ artV1,
199
+ artV2,
200
+ artRetro,
201
+ artMinimal,
202
+ artRacing,
203
+ artNeon,
204
+ artAscii
205
+ ];
206
+ const randomIndex = Math.floor(Math.random() * styles.length);
207
+ return styles[randomIndex](version);
208
+ }
209
+ /**
210
+ * Get art by style name (including user submissions)
211
+ */
212
+ async function getArtByStyle(style, version) {
213
+ // Check for user art (format: user:artname)
214
+ if (typeof style === 'string' && style.startsWith('user:')) {
215
+ const userArtName = style.substring(5);
216
+ const { getUserArt } = await Promise.resolve().then(() => __importStar(require('../commands/submit-art')));
217
+ const userArt = await getUserArt(userArtName);
218
+ if (userArt) {
219
+ return userArt;
220
+ }
221
+ else {
222
+ return `User art "${userArtName}" not found. Using classic instead.\n\n` + artClassic(version);
223
+ }
224
+ }
225
+ const styleMap = {
226
+ 'classic': artClassic,
227
+ 'v1': artV1,
228
+ 'v2': artV2,
229
+ 'retro': artRetro,
230
+ 'minimal': artMinimal,
231
+ 'big': artBig,
232
+ 'racing': artRacing,
233
+ 'neon': artNeon,
234
+ 'ascii': artAscii,
235
+ 'random': artRandom
236
+ };
237
+ const artFunction = styleMap[style] || artClassic;
238
+ return artFunction(version);
239
+ }
240
+ /**
241
+ * Get style based on score (for fun!)
242
+ */
243
+ function getArtByScore(score, version) {
244
+ if (score >= 99)
245
+ return artBig(version); // BIG ORANGE!
246
+ if (score >= 90)
247
+ return artRacing(version); // Racing mode
248
+ if (score >= 80)
249
+ return artNeon(version); // Neon vibes
250
+ if (score >= 70)
251
+ return artClassic(version); // Classic
252
+ if (score >= 60)
253
+ return artV2(version); // V2
254
+ if (score >= 50)
255
+ return artV1(version); // V1
256
+ return artMinimal(version); // Minimal for low scores
257
+ }
258
+ /**
259
+ * List all available styles
260
+ */
261
+ function listArtStyles() {
262
+ return [
263
+ 'classic - The classic 3D FAF design',
264
+ 'v1 - Original simple box style',
265
+ 'v2 - Horizontal gradient style',
266
+ 'retro - Old school terminal style',
267
+ 'minimal - Clean and simple',
268
+ 'big - BIG ORANGE celebration (99%+)',
269
+ 'racing - F1 inspired with telemetry',
270
+ 'neon - Cyberpunk vibes',
271
+ 'ascii - Pure ASCII, no unicode',
272
+ 'random - Surprise me!'
273
+ ];
274
+ }
275
+ //# sourceMappingURL=art-gallery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"art-gallery.js","sourceRoot":"","sources":["../../src/utils/art-gallery.ts"],"names":[],"mappings":"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"}
@@ -99,7 +99,7 @@ export declare const BRAND_MESSAGES: {
99
99
  */
100
100
  export declare function generateHelpHeader(): string;
101
101
  /**
102
- * Generate static championship header (no contextual subtitles)
102
+ * Generate static championship header (classic 3D design)
103
103
  */
104
104
  export declare function generateFAFHeader(): string;
105
105
  export declare const FAF_HEADER: string;
@@ -1 +1 @@
1
- {"version":3,"file":"championship-style.d.ts","sourceRoot":"","sources":["../../src/utils/championship-style.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,eAAO,MAAM,UAAU;;;;;;;;qBAaJ,MAAM;CACxB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CrB,CAAC;AAGF,eAAO,MAAM,aAAa;;;;;;;;;;;CAgBzB,CAAC;AAGF,eAAO,MAAM,qBAAqB;;;;;;;;CAWjC,CAAC;AAGF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAqB1B,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAU3C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAc1C;AAGD,eAAO,MAAM,UAAU,QAAsB,CAAC;AAG9C,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAU3D;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQxD;AAGD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQvD;AAGD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ5D"}
1
+ {"version":3,"file":"championship-style.d.ts","sourceRoot":"","sources":["../../src/utils/championship-style.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,eAAO,MAAM,UAAU;;;;;;;;qBAaJ,MAAM;CACxB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CrB,CAAC;AAGF,eAAO,MAAM,aAAa;;;;;;;;;;;CAgBzB,CAAC;AAGF,eAAO,MAAM,qBAAqB;;;;;;;;CAWjC,CAAC;AAGF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAqB1B,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAU3C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAmB1C;AAGD,eAAO,MAAM,UAAU,QAAsB,CAAC;AAG9C,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAU3D;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQxD;AAGD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQvD;AAGD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ5D"}