faf-mcp 2.3.1 → 3.0.1

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 (196) hide show
  1. package/CHANGELOG.md +49 -4
  2. package/CLAUDE.md +10 -6
  3. package/README.md +95 -86
  4. package/dist/src/faf-core/commands/agents.d.ts +2 -2
  5. package/dist/src/faf-core/commands/agents.js +2 -2
  6. package/dist/src/faf-core/commands/claude.d.ts +31 -0
  7. package/dist/src/faf-core/commands/{bi-sync.js → claude.js} +39 -77
  8. package/dist/src/faf-core/commands/claude.js.map +1 -0
  9. package/dist/src/faf-core/commands/conductor.d.ts +1 -1
  10. package/dist/src/faf-core/commands/conductor.js +1 -1
  11. package/dist/src/faf-core/commands/cursor.d.ts +2 -2
  12. package/dist/src/faf-core/commands/cursor.js +2 -2
  13. package/dist/src/faf-core/commands/gemini.d.ts +2 -2
  14. package/dist/src/faf-core/commands/gemini.js +2 -2
  15. package/dist/src/faf-core/commands/git-context.d.ts +1 -1
  16. package/dist/src/faf-core/commands/git-context.js +2 -2
  17. package/dist/src/faf-core/commands/git-context.js.map +1 -1
  18. package/dist/src/faf-core/commands/sync.js.map +1 -1
  19. package/dist/src/faf-core/engines/dependency-tsa.js.map +1 -1
  20. package/dist/src/faf-core/fix-once/colors.js +1 -1
  21. package/dist/src/faf-core/fix-once/colors.js.map +1 -1
  22. package/dist/src/faf-core/parsers/agents-parser.d.ts +17 -1
  23. package/dist/src/faf-core/parsers/agents-parser.js +31 -124
  24. package/dist/src/faf-core/parsers/agents-parser.js.map +1 -1
  25. package/dist/src/faf-core/parsers/conductor-parser.d.ts +1 -1
  26. package/dist/src/faf-core/parsers/conductor-parser.js +2 -2
  27. package/dist/src/faf-core/parsers/conductor-parser.js.map +1 -1
  28. package/dist/src/faf-core/parsers/cursorrules-parser.d.ts +17 -1
  29. package/dist/src/faf-core/parsers/cursorrules-parser.js +56 -112
  30. package/dist/src/faf-core/parsers/cursorrules-parser.js.map +1 -1
  31. package/dist/src/faf-core/parsers/faf-git-generator.d.ts +1 -1
  32. package/dist/src/faf-core/parsers/faf-git-generator.js +6 -6
  33. package/dist/src/faf-core/parsers/faf-git-generator.js.map +1 -1
  34. package/dist/src/faf-core/parsers/gemini-parser.d.ts +12 -1
  35. package/dist/src/faf-core/parsers/gemini-parser.js +21 -78
  36. package/dist/src/faf-core/parsers/gemini-parser.js.map +1 -1
  37. package/dist/src/faf-core/parsers/github-extractor.d.ts +1 -1
  38. package/dist/src/faf-core/parsers/github-extractor.js +1 -1
  39. package/dist/src/faf-core/parsers/slot-counter.d.ts +1 -1
  40. package/dist/src/faf-core/parsers/slot-counter.js +1 -1
  41. package/dist/src/handlers/engine-adapter.d.ts +13 -12
  42. package/dist/src/handlers/engine-adapter.js +105 -683
  43. package/dist/src/handlers/engine-adapter.js.map +1 -1
  44. package/dist/src/handlers/resources.d.ts +19 -1
  45. package/dist/src/handlers/resources.js +108 -23
  46. package/dist/src/handlers/resources.js.map +1 -1
  47. package/dist/src/handlers/skills.d.ts +70 -0
  48. package/dist/src/handlers/skills.js +174 -0
  49. package/dist/src/handlers/skills.js.map +1 -0
  50. package/dist/src/handlers/tools.d.ts +43 -7
  51. package/dist/src/handlers/tools.js +300 -375
  52. package/dist/src/handlers/tools.js.map +1 -1
  53. package/dist/src/server.d.ts +4 -0
  54. package/dist/src/server.js +51 -6
  55. package/dist/src/server.js.map +1 -1
  56. package/dist/src/utils/faf-cli-bridge.d.ts +14 -8
  57. package/dist/src/utils/faf-cli-bridge.js +28 -8
  58. package/dist/src/utils/faf-cli-bridge.js.map +1 -1
  59. package/package.json +18 -15
  60. package/project.faf +14 -9
  61. package/scripts/check-engines.mjs +53 -0
  62. package/scripts/sync-version.js +33 -19
  63. package/skills/faf-ide/SKILL.md +40 -0
  64. package/dist/src/config/visibility.d.ts +0 -41
  65. package/dist/src/config/visibility.js +0 -158
  66. package/dist/src/config/visibility.js.map +0 -1
  67. package/dist/src/faf-core/commands/audit.d.ts +0 -21
  68. package/dist/src/faf-core/commands/audit.js +0 -83
  69. package/dist/src/faf-core/commands/audit.js.map +0 -1
  70. package/dist/src/faf-core/commands/auto.d.ts +0 -25
  71. package/dist/src/faf-core/commands/auto.js +0 -74
  72. package/dist/src/faf-core/commands/auto.js.map +0 -1
  73. package/dist/src/faf-core/commands/bi-sync.d.ts +0 -31
  74. package/dist/src/faf-core/commands/bi-sync.js.map +0 -1
  75. package/dist/src/faf-core/commands/doctor.d.ts +0 -17
  76. package/dist/src/faf-core/commands/doctor.js +0 -198
  77. package/dist/src/faf-core/commands/doctor.js.map +0 -1
  78. package/dist/src/faf-core/commands/enhance.d.ts +0 -46
  79. package/dist/src/faf-core/commands/enhance.js +0 -360
  80. package/dist/src/faf-core/commands/enhance.js.map +0 -1
  81. package/dist/src/faf-core/commands/formats.d.ts +0 -22
  82. package/dist/src/faf-core/commands/formats.js +0 -117
  83. package/dist/src/faf-core/commands/formats.js.map +0 -1
  84. package/dist/src/faf-core/commands/human.d.ts +0 -27
  85. package/dist/src/faf-core/commands/human.js +0 -183
  86. package/dist/src/faf-core/commands/human.js.map +0 -1
  87. package/dist/src/faf-core/commands/init.d.ts +0 -26
  88. package/dist/src/faf-core/commands/init.js +0 -114
  89. package/dist/src/faf-core/commands/init.js.map +0 -1
  90. package/dist/src/faf-core/commands/innit.d.ts +0 -7
  91. package/dist/src/faf-core/commands/innit.js +0 -13
  92. package/dist/src/faf-core/commands/innit.js.map +0 -1
  93. package/dist/src/faf-core/commands/migrate.d.ts +0 -15
  94. package/dist/src/faf-core/commands/migrate.js +0 -86
  95. package/dist/src/faf-core/commands/migrate.js.map +0 -1
  96. package/dist/src/faf-core/commands/quick.d.ts +0 -16
  97. package/dist/src/faf-core/commands/quick.js +0 -184
  98. package/dist/src/faf-core/commands/quick.js.map +0 -1
  99. package/dist/src/faf-core/commands/readme.d.ts +0 -47
  100. package/dist/src/faf-core/commands/readme.js +0 -361
  101. package/dist/src/faf-core/commands/readme.js.map +0 -1
  102. package/dist/src/faf-core/commands/score.d.ts +0 -47
  103. package/dist/src/faf-core/commands/score.js +0 -49
  104. package/dist/src/faf-core/commands/score.js.map +0 -1
  105. package/dist/src/faf-core/commands/update.d.ts +0 -12
  106. package/dist/src/faf-core/commands/update.js +0 -46
  107. package/dist/src/faf-core/commands/update.js.map +0 -1
  108. package/dist/src/faf-core/commands/validate.d.ts +0 -21
  109. package/dist/src/faf-core/commands/validate.js +0 -81
  110. package/dist/src/faf-core/commands/validate.js.map +0 -1
  111. package/dist/src/faf-core/compiler/faf-compiler.d.ts +0 -138
  112. package/dist/src/faf-core/compiler/faf-compiler.js +0 -1362
  113. package/dist/src/faf-core/compiler/faf-compiler.js.map +0 -1
  114. package/dist/src/faf-core/engines/fab-formats-processor.d.ts +0 -166
  115. package/dist/src/faf-core/engines/fab-formats-processor.js +0 -1274
  116. package/dist/src/faf-core/engines/fab-formats-processor.js.map +0 -1
  117. package/dist/src/faf-core/engines/faf-dna.d.ts +0 -159
  118. package/dist/src/faf-core/engines/faf-dna.js +0 -555
  119. package/dist/src/faf-core/engines/faf-dna.js.map +0 -1
  120. package/dist/src/faf-core/engines/relentless-context-extractor.d.ts +0 -100
  121. package/dist/src/faf-core/engines/relentless-context-extractor.js +0 -625
  122. package/dist/src/faf-core/engines/relentless-context-extractor.js.map +0 -1
  123. package/dist/src/faf-core/fix-once/types.d.ts +0 -257
  124. package/dist/src/faf-core/fix-once/types.js +0 -26
  125. package/dist/src/faf-core/fix-once/types.js.map +0 -1
  126. package/dist/src/faf-core/generators/faf-generator-championship.d.ts +0 -16
  127. package/dist/src/faf-core/generators/faf-generator-championship.js +0 -463
  128. package/dist/src/faf-core/generators/faf-generator-championship.js.map +0 -1
  129. package/dist/src/faf-core/inject.d.ts +0 -19
  130. package/dist/src/faf-core/inject.js +0 -57
  131. package/dist/src/faf-core/inject.js.map +0 -1
  132. package/dist/src/faf-core/parsers/index.d.ts +0 -12
  133. package/dist/src/faf-core/parsers/index.js +0 -29
  134. package/dist/src/faf-core/parsers/index.js.map +0 -1
  135. package/dist/src/faf-core/utils/balance-visualizer.d.ts +0 -37
  136. package/dist/src/faf-core/utils/balance-visualizer.js +0 -197
  137. package/dist/src/faf-core/utils/balance-visualizer.js.map +0 -1
  138. package/dist/src/faf-core/utils/championship-style.d.ts +0 -109
  139. package/dist/src/faf-core/utils/championship-style.js +0 -219
  140. package/dist/src/faf-core/utils/championship-style.js.map +0 -1
  141. package/dist/src/faf-core/utils/chrome-extension-detector.d.ts +0 -73
  142. package/dist/src/faf-core/utils/chrome-extension-detector.js +0 -268
  143. package/dist/src/faf-core/utils/chrome-extension-detector.js.map +0 -1
  144. package/dist/src/faf-core/utils/platform-detector.d.ts +0 -30
  145. package/dist/src/faf-core/utils/platform-detector.js +0 -218
  146. package/dist/src/faf-core/utils/platform-detector.js.map +0 -1
  147. package/dist/src/faf-core/utils/technical-credit.d.ts +0 -35
  148. package/dist/src/faf-core/utils/technical-credit.js +0 -286
  149. package/dist/src/faf-core/utils/technical-credit.js.map +0 -1
  150. package/dist/src/faf-core/utils/yaml-generator.d.ts +0 -41
  151. package/dist/src/faf-core/utils/yaml-generator.js +0 -360
  152. package/dist/src/faf-core/utils/yaml-generator.js.map +0 -1
  153. package/dist/src/handlers/behavioral-instruction.d.ts +0 -16
  154. package/dist/src/handlers/behavioral-instruction.js +0 -43
  155. package/dist/src/handlers/behavioral-instruction.js.map +0 -1
  156. package/dist/src/handlers/championship-tools.d.ts +0 -116
  157. package/dist/src/handlers/championship-tools.js +0 -2320
  158. package/dist/src/handlers/championship-tools.js.map +0 -1
  159. package/dist/src/handlers/cloud-handler.d.ts +0 -59
  160. package/dist/src/handlers/cloud-handler.js +0 -348
  161. package/dist/src/handlers/cloud-handler.js.map +0 -1
  162. package/dist/src/handlers/tool-registry.d.ts +0 -23
  163. package/dist/src/handlers/tool-registry.js +0 -68
  164. package/dist/src/handlers/tool-registry.js.map +0 -1
  165. package/dist/src/handlers/tool-types.d.ts +0 -167
  166. package/dist/src/handlers/tool-types.js +0 -7
  167. package/dist/src/handlers/tool-types.js.map +0 -1
  168. package/dist/src/test-all-functions.d.ts +0 -15
  169. package/dist/src/test-all-functions.js +0 -163
  170. package/dist/src/test-all-functions.js.map +0 -1
  171. package/dist/src/types/mcp-tools.d.ts +0 -53
  172. package/dist/src/types/mcp-tools.js +0 -77
  173. package/dist/src/types/mcp-tools.js.map +0 -1
  174. package/dist/src/types/tool-visibility.d.ts +0 -36
  175. package/dist/src/types/tool-visibility.js +0 -551
  176. package/dist/src/types/tool-visibility.js.map +0 -1
  177. package/dist/src/utils/auto-path-detection.d.ts +0 -26
  178. package/dist/src/utils/auto-path-detection.js +0 -198
  179. package/dist/src/utils/auto-path-detection.js.map +0 -1
  180. package/dist/src/utils/championship-format.d.ts +0 -30
  181. package/dist/src/utils/championship-format.js +0 -81
  182. package/dist/src/utils/championship-format.js.map +0 -1
  183. package/dist/src/utils/cli-detector.d.ts +0 -17
  184. package/dist/src/utils/cli-detector.js +0 -247
  185. package/dist/src/utils/cli-detector.js.map +0 -1
  186. package/dist/src/utils/display-protocol.d.ts +0 -57
  187. package/dist/src/utils/display-protocol.js +0 -131
  188. package/dist/src/utils/display-protocol.js.map +0 -1
  189. package/dist/src/utils/username-detector.d.ts +0 -27
  190. package/dist/src/utils/username-detector.js +0 -90
  191. package/dist/src/utils/username-detector.js.map +0 -1
  192. package/dist/src/utils/visual-style.d.ts +0 -62
  193. package/dist/src/utils/visual-style.js +0 -166
  194. package/dist/src/utils/visual-style.js.map +0 -1
  195. package/scripts/postinstall.js +0 -50
  196. package/skill/SKILL.md +0 -385
@@ -1,198 +0,0 @@
1
- "use strict";
2
- /**
3
- * 🎯 Auto-Path Detection from Dropped Files
4
- * Solves the "drop and done" workflow problem
5
- *
6
- * When files land in /mnt/user-data/uploads/, extract identifiers
7
- * and perform case-insensitive filesystem search to find real project path.
8
- */
9
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- var desc = Object.getOwnPropertyDescriptor(m, k);
12
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
- desc = { enumerable: true, get: function() { return m[k]; } };
14
- }
15
- Object.defineProperty(o, k2, desc);
16
- }) : (function(o, m, k, k2) {
17
- if (k2 === undefined) k2 = k;
18
- o[k2] = m[k];
19
- }));
20
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
- Object.defineProperty(o, "default", { enumerable: true, value: v });
22
- }) : function(o, v) {
23
- o["default"] = v;
24
- });
25
- var __importStar = (this && this.__importStar) || (function () {
26
- var ownKeys = function(o) {
27
- ownKeys = Object.getOwnPropertyNames || function (o) {
28
- var ar = [];
29
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
- return ar;
31
- };
32
- return ownKeys(o);
33
- };
34
- return function (mod) {
35
- if (mod && mod.__esModule) return mod;
36
- var result = {};
37
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
- __setModuleDefault(result, mod);
39
- return result;
40
- };
41
- })();
42
- Object.defineProperty(exports, "__esModule", { value: true });
43
- exports.extractIdentifier = extractIdentifier;
44
- exports.findProjectPath = findProjectPath;
45
- exports.autoDetectPath = autoDetectPath;
46
- const fs = __importStar(require("fs"));
47
- const os = __importStar(require("os"));
48
- const path = __importStar(require("path"));
49
- const child_process_1 = require("child_process");
50
- /**
51
- * Extract project identifier from dropped file
52
- */
53
- function extractIdentifier(filePath) {
54
- try {
55
- const content = fs.readFileSync(filePath, 'utf8');
56
- const basename = path.basename(filePath);
57
- // package.json - use package name
58
- if (basename === 'package.json') {
59
- try {
60
- const pkg = JSON.parse(content);
61
- if (pkg.name) {
62
- return pkg.name; // "@blackhole/universe" or "hextra-api"
63
- }
64
- }
65
- catch {
66
- // Invalid JSON, continue to next strategy
67
- }
68
- }
69
- // README.md - extract from first heading
70
- if (basename === 'README.md') {
71
- const match = content.match(/^#\s+(.+)$/m);
72
- if (match) {
73
- // "💫 Black Hole Universe" → "black-hole-universe"
74
- return match[1]
75
- .replace(/[^\w\s-]/g, '') // Remove emojis/special chars
76
- .trim()
77
- .toLowerCase()
78
- .replace(/\s+/g, '-');
79
- }
80
- }
81
- // project.faf or .faf - extract name field
82
- if (basename === 'project.faf' || basename === '.faf') {
83
- const match = content.match(/^\s*name:\s*"?([^"\n]+)"?/m);
84
- if (match) {
85
- return match[1].trim();
86
- }
87
- }
88
- return null;
89
- }
90
- catch (error) {
91
- return null;
92
- }
93
- }
94
- /**
95
- * Find project path on user's filesystem (case-insensitive)
96
- */
97
- function findProjectPath(identifier) {
98
- try {
99
- const username = os.userInfo().username;
100
- // Search roots in order of preference
101
- const searchRoots = [
102
- `/Users/${username}`, // macOS
103
- `/home/${username}`, // Linux
104
- `C:\\Users\\${username}` // Windows
105
- ].filter(p => fs.existsSync(p));
106
- if (searchRoots.length === 0) {
107
- return null;
108
- }
109
- // Normalize identifier for search
110
- // Remove scope: @blackhole/universe → universe
111
- let searchTerm = identifier.replace(/^@[\w-]+\//, '').toLowerCase();
112
- // Try exact match first, then partial match
113
- for (const exact of [true, false]) {
114
- for (const root of searchRoots) {
115
- const pattern = exact ? searchTerm : `*${searchTerm}*`;
116
- // Case-insensitive find with exclusions
117
- const cmd = process.platform === 'win32'
118
- ? `dir /s /b /a:d "${root}\\${pattern}" 2>nul`
119
- : `find "${root}" -maxdepth 5 -type d -iname "${pattern}" \
120
- ! -path "*/node_modules/*" \
121
- ! -path "*/.git/*" \
122
- ! -path "*/dist/*" \
123
- ! -path "*/build/*" \
124
- ! -path "*/.next/*" \
125
- ! -path "*/coverage/*" \
126
- ! -path "*/.cache/*" \
127
- ! -path "*/venv/*" \
128
- ! -path "*/.venv/*" \
129
- 2>/dev/null`;
130
- try {
131
- const result = (0, child_process_1.execSync)(cmd, {
132
- encoding: 'utf8',
133
- timeout: 10000,
134
- maxBuffer: 1024 * 1024 // 1MB buffer
135
- });
136
- const matches = result.split('\n').filter(Boolean);
137
- if (matches.length > 0) {
138
- // Rank matches: exact basename > partial, shorter > longer
139
- const ranked = matches.sort((a, b) => {
140
- const aBase = path.basename(a).toLowerCase();
141
- const bBase = path.basename(b).toLowerCase();
142
- const aExact = aBase === searchTerm;
143
- const bExact = bBase === searchTerm;
144
- if (aExact && !bExact)
145
- return -1;
146
- if (!aExact && bExact)
147
- return 1;
148
- return a.length - b.length; // Prefer shorter paths
149
- });
150
- return ranked[0];
151
- }
152
- }
153
- catch (error) {
154
- // Timeout or command failed, try next root
155
- continue;
156
- }
157
- }
158
- }
159
- return null;
160
- }
161
- catch (error) {
162
- return null;
163
- }
164
- }
165
- /**
166
- * Auto-detect real project path from container upload path
167
- * Main entry point for all FAF commands
168
- */
169
- function autoDetectPath(inputPath) {
170
- // Check if this is a container upload path
171
- if (!inputPath.startsWith('/mnt/user-data/uploads/')) {
172
- return { found: false, path: inputPath };
173
- }
174
- // Extract identifier from dropped file
175
- const identifier = extractIdentifier(inputPath);
176
- if (!identifier) {
177
- return {
178
- found: false,
179
- error: 'Could not extract project identifier from dropped file. Please provide full path manually.'
180
- };
181
- }
182
- // Search filesystem for matching project
183
- const realPath = findProjectPath(identifier);
184
- if (!realPath) {
185
- return {
186
- found: false,
187
- identifier,
188
- error: `Project "${identifier}" not found on filesystem. Please provide full path manually.`
189
- };
190
- }
191
- // Success!
192
- return {
193
- found: true,
194
- path: realPath,
195
- identifier
196
- };
197
- }
198
- //# sourceMappingURL=auto-path-detection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auto-path-detection.js","sourceRoot":"","sources":["../../../src/utils/auto-path-detection.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- /**
2
- * FAF Championship Output Formatter
3
- * The RAILS for proper FAF output! 🏎️⚡
4
- */
5
- export interface AchievementStatus {
6
- speed: number;
7
- score: number;
8
- files: number;
9
- isDotFaffed: boolean;
10
- }
11
- export declare class ChampionshipFormatter {
12
- /**
13
- * Format FAF output with Championship wrapper
14
- * SHOW FIRST - ENHANCE AFTER!
15
- */
16
- static formatOutput(rawOutput: string, status?: AchievementStatus): string;
17
- /**
18
- * Check if user is DOT FAFFED
19
- */
20
- static isDotFaffed(score: number): boolean;
21
- /**
22
- * Get achievement level based on score
23
- */
24
- static getAchievementLevel(score: number): string;
25
- /**
26
- * Get speed achievement
27
- */
28
- static getSpeedAchievement(ms: number): string;
29
- }
30
- export default ChampionshipFormatter;
@@ -1,81 +0,0 @@
1
- "use strict";
2
- /**
3
- * FAF Championship Output Formatter
4
- * The RAILS for proper FAF output! 🏎️⚡
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ChampionshipFormatter = void 0;
8
- class ChampionshipFormatter {
9
- /**
10
- * Format FAF output with Championship wrapper
11
- * SHOW FIRST - ENHANCE AFTER!
12
- */
13
- static formatOutput(rawOutput, status) {
14
- let formatted = '';
15
- // ALWAYS RAW FIRST - This is SACRED!
16
- formatted += '=== FAF CHAMPIONSHIP OUTPUT ===\n';
17
- formatted += rawOutput;
18
- formatted += '\n=== END CHAMPIONSHIP OUTPUT ===\n';
19
- // Achievement Status (OPTIONAL enhancement)
20
- if (status) {
21
- formatted += '\n=== YOUR ACHIEVEMENT STATUS ===\n';
22
- // Speed Achievement
23
- const speedBadge = status.speed < 10 ? '⚡🏆' : status.speed < 50 ? '⚡' : '🏎️';
24
- formatted += `🏎️ Speed: ${status.speed}ms ${speedBadge}\n`;
25
- // Score Achievement
26
- const scoreBadge = status.score >= 99 ? '🍊' : status.score >= 90 ? '🏆' : status.score >= 70 ? '⭐' : '📊';
27
- formatted += `🏆 Score: ${status.score}/100 ${scoreBadge}\n`;
28
- // Files Ready
29
- formatted += `📊 Files: ${status.files} ready\n`;
30
- // DOT FAFFED Status
31
- const dotFaffedStatus = status.isDotFaffed
32
- ? '🏆 DOT FAFFED ACHIEVED! 🏆'
33
- : `⚡ Working toward DOT FAFFED (${status.score}/70 needed)`;
34
- formatted += `⚡ Status: ${dotFaffedStatus}\n`;
35
- formatted += '=== END STATUS ===\n';
36
- }
37
- return formatted;
38
- }
39
- /**
40
- * Check if user is DOT FAFFED
41
- */
42
- static isDotFaffed(score) {
43
- return score >= 70;
44
- }
45
- /**
46
- * Get achievement level based on score
47
- */
48
- static getAchievementLevel(score) {
49
- if (score >= 100)
50
- return '🏆 TROPHY - CHAMPIONSHIP COMPLETE!';
51
- if (score >= 99)
52
- return '🥇 GOLD - CHAMPIONSHIP MODE!';
53
- if (score >= 95)
54
- return '🥈 SILVER - PODIUM FINISH!';
55
- if (score >= 85)
56
- return '🥉 BRONZE - PRODUCTION READY!';
57
- if (score >= 70)
58
- return '🟢 GREEN - SOLID FOUNDATION!';
59
- if (score >= 55)
60
- return '🟡 YELLOW - NEEDS IMPROVEMENT!';
61
- return '🔴 RED - MAJOR WORK NEEDED!';
62
- }
63
- /**
64
- * Get speed achievement
65
- */
66
- static getSpeedAchievement(ms) {
67
- if (ms < 1)
68
- return '⚡🏆 INSTANT! WORLD RECORD!';
69
- if (ms < 10)
70
- return '⚡ SUB-10ms CHAMPIONSHIP!';
71
- if (ms < 50)
72
- return '🏎️ FAST TRACK!';
73
- if (ms < 100)
74
- return '✅ GOOD PACE!';
75
- return '📊 MEASURING...';
76
- }
77
- }
78
- exports.ChampionshipFormatter = ChampionshipFormatter;
79
- // Export the RAILS!
80
- exports.default = ChampionshipFormatter;
81
- //# sourceMappingURL=championship-format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"championship-format.js","sourceRoot":"","sources":["../../../src/utils/championship-format.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AASH,MAAa,qBAAqB;IAChC;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,SAAiB,EAAE,MAA0B;QAC/D,IAAI,SAAS,GAAG,EAAE,CAAC;QAEnB,qCAAqC;QACrC,SAAS,IAAI,mCAAmC,CAAC;QACjD,SAAS,IAAI,SAAS,CAAC;QACvB,SAAS,IAAI,qCAAqC,CAAC;QAEnD,4CAA4C;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,SAAS,IAAI,qCAAqC,CAAC;YAEnD,oBAAoB;YACpB,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAC/E,SAAS,IAAI,cAAc,MAAM,CAAC,KAAK,MAAM,UAAU,IAAI,CAAC;YAE5D,oBAAoB;YACpB,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3G,SAAS,IAAI,aAAa,MAAM,CAAC,KAAK,QAAQ,UAAU,IAAI,CAAC;YAE7D,cAAc;YACd,SAAS,IAAI,aAAa,MAAM,CAAC,KAAK,UAAU,CAAC;YAEjD,oBAAoB;YACpB,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW;gBACxC,CAAC,CAAC,4BAA4B;gBAC9B,CAAC,CAAC,gCAAgC,MAAM,CAAC,KAAK,aAAa,CAAC;YAC9D,SAAS,IAAI,aAAa,eAAe,IAAI,CAAC;YAE9C,SAAS,IAAI,sBAAsB,CAAC;QACtC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAa;QAC9B,OAAO,KAAK,IAAI,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAa;QACtC,IAAI,KAAK,IAAI,GAAG;YAAE,OAAO,oCAAoC,CAAC;QAC9D,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,8BAA8B,CAAC;QACvD,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,4BAA4B,CAAC;QACrD,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,+BAA+B,CAAC;QACxD,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,8BAA8B,CAAC;QACvD,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,gCAAgC,CAAC;QACzD,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,EAAU;QACnC,IAAI,EAAE,GAAG,CAAC;YAAE,OAAO,4BAA4B,CAAC;QAChD,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,0BAA0B,CAAC;QAC/C,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,iBAAiB,CAAC;QACtC,IAAI,EAAE,GAAG,GAAG;YAAE,OAAO,cAAc,CAAC;QACpC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF;AAtED,sDAsEC;AAED,oBAAoB;AACpB,kBAAe,qBAAqB,CAAC"}
@@ -1,17 +0,0 @@
1
- /**
2
- * CLI Path Detection for your MCP host Sandbox
3
- *
4
- * your MCP host MCP runs in a sandboxed environment with limited PATH.
5
- * This utility detects the faf CLI using absolute paths.
6
- */
7
- export interface CliDetectionResult {
8
- found: boolean;
9
- path?: string;
10
- version?: string;
11
- method?: string;
12
- }
13
- export declare function detectFafCli(forceRefresh?: boolean): CliDetectionResult;
14
- /**
15
- * Validate CLI meets minimum version requirement
16
- */
17
- export declare function validateCliVersion(version: string, minVersion?: string): boolean;
@@ -1,247 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.detectFafCli = detectFafCli;
37
- exports.validateCliVersion = validateCliVersion;
38
- const child_process_1 = require("child_process");
39
- const fs = __importStar(require("fs"));
40
- const path = __importStar(require("path"));
41
- const os = __importStar(require("os"));
42
- /**
43
- * Get common CLI installation paths based on platform and package manager
44
- */
45
- function getCommonCliPaths() {
46
- const homeDir = os.homedir();
47
- const platform = os.platform();
48
- const paths = [];
49
- // Homebrew paths (macOS/Linux)
50
- if (platform === 'darwin') {
51
- paths.push('/opt/homebrew/bin/faf'); // Apple Silicon
52
- paths.push('/usr/local/bin/faf'); // Intel
53
- paths.push('/usr/local/Cellar/node@20/20.19.4/bin/faf'); // Node 20
54
- paths.push('/usr/local/Cellar/node/*/bin/faf'); // Any Node version
55
- }
56
- else {
57
- paths.push('/usr/local/bin/faf');
58
- }
59
- // npm global paths
60
- paths.push(path.join(homeDir, '.npm-global/bin/faf'));
61
- paths.push(path.join(homeDir, '.nvm/versions/node/*/bin/faf'));
62
- // Standard Unix paths
63
- paths.push('/usr/bin/faf');
64
- // Windows paths
65
- if (platform === 'win32') {
66
- const appData = process.env.APPDATA || path.join(homeDir, 'AppData', 'Roaming');
67
- paths.push(path.join(appData, 'npm/faf.cmd'));
68
- paths.push(path.join(appData, 'npm/faf'));
69
- paths.push('C:\\Program Files\\nodejs\\faf.cmd');
70
- }
71
- return paths;
72
- }
73
- /**
74
- * Expand glob patterns in paths
75
- * Example: /usr/local/Cellar/node/wildcard/bin/faf
76
- */
77
- function expandGlobPath(globPath) {
78
- if (!globPath.includes('*')) {
79
- return globPath;
80
- }
81
- try {
82
- const parts = globPath.split('/');
83
- const globIndex = parts.findIndex(p => p.includes('*'));
84
- if (globIndex === -1)
85
- return globPath;
86
- const basePath = parts.slice(0, globIndex).join('/');
87
- const pattern = parts[globIndex];
88
- const restPath = parts.slice(globIndex + 1).join('/');
89
- if (!fs.existsSync(basePath))
90
- return null;
91
- const entries = fs.readdirSync(basePath);
92
- const regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$');
93
- const matches = entries.filter(e => regex.test(e));
94
- if (matches.length === 0)
95
- return null;
96
- // Return first match
97
- const expanded = path.join(basePath, matches[0], restPath);
98
- return fs.existsSync(expanded) ? expanded : null;
99
- }
100
- catch {
101
- return null;
102
- }
103
- }
104
- /**
105
- * Try to detect CLI using 'which' command (works if PATH is set)
106
- */
107
- function detectViaWhich() {
108
- try {
109
- const result = (0, child_process_1.execSync)('which faf', { encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore'] });
110
- const cliPath = result.trim();
111
- if (cliPath && fs.existsSync(cliPath)) {
112
- return cliPath;
113
- }
114
- }
115
- catch {
116
- // which failed, PATH not set or faf not in PATH
117
- }
118
- return null;
119
- }
120
- /**
121
- * Try to detect CLI using 'command -v' (POSIX alternative to which)
122
- */
123
- function detectViaCommand() {
124
- try {
125
- const result = (0, child_process_1.execSync)('command -v faf', {
126
- encoding: 'utf8',
127
- stdio: ['pipe', 'pipe', 'ignore'],
128
- shell: '/bin/sh'
129
- });
130
- const cliPath = result.trim();
131
- if (cliPath && fs.existsSync(cliPath)) {
132
- return cliPath;
133
- }
134
- }
135
- catch {
136
- // command -v failed
137
- }
138
- return null;
139
- }
140
- /**
141
- * Get CLI version from path
142
- */
143
- function getCliVersion(cliPath) {
144
- try {
145
- const result = (0, child_process_1.execSync)(`"${cliPath}" --version`, {
146
- encoding: 'utf8',
147
- stdio: ['pipe', 'pipe', 'ignore']
148
- });
149
- return result.trim();
150
- }
151
- catch {
152
- return undefined;
153
- }
154
- }
155
- /**
156
- * Detect faf CLI location with multiple fallback strategies.
157
- *
158
- * Memoized: detection is deterministic per process (the CLI path/version
159
- * don't change mid-run), so the underlying execSync probes run ONCE and
160
- * the result is reused. This eliminates redundant child-process spawns
161
- * across many FafEngineAdapter instantiations — and the intermittent
162
- * Windows "worker failed to exit gracefully" Jest teardown leak that
163
- * the per-instance re-probing caused.
164
- *
165
- * @param forceRefresh re-probe and refresh the cache (used by tests).
166
- */
167
- let _detectionCache = null;
168
- function detectFafCli(forceRefresh = false) {
169
- if (_detectionCache && !forceRefresh) {
170
- return _detectionCache;
171
- }
172
- _detectionCache = detectFafCliInternal();
173
- return _detectionCache;
174
- }
175
- function detectFafCliInternal() {
176
- // 1. Check environment variable override
177
- if (process.env.FAF_CLI_PATH) {
178
- const envPath = process.env.FAF_CLI_PATH;
179
- if (fs.existsSync(envPath)) {
180
- return {
181
- found: true,
182
- path: envPath,
183
- version: getCliVersion(envPath),
184
- method: 'env:FAF_CLI_PATH'
185
- };
186
- }
187
- }
188
- // 2. Try 'which' command (works if PATH is set)
189
- const whichPath = detectViaWhich();
190
- if (whichPath) {
191
- return {
192
- found: true,
193
- path: whichPath,
194
- version: getCliVersion(whichPath),
195
- method: 'which'
196
- };
197
- }
198
- // 3. Try 'command -v' (POSIX)
199
- const commandPath = detectViaCommand();
200
- if (commandPath) {
201
- return {
202
- found: true,
203
- path: commandPath,
204
- version: getCliVersion(commandPath),
205
- method: 'command'
206
- };
207
- }
208
- // 4. Check common installation paths
209
- const commonPaths = getCommonCliPaths();
210
- for (const cliPath of commonPaths) {
211
- const expanded = expandGlobPath(cliPath);
212
- if (expanded && fs.existsSync(expanded)) {
213
- return {
214
- found: true,
215
- path: expanded,
216
- version: getCliVersion(expanded),
217
- method: 'common-path'
218
- };
219
- }
220
- }
221
- // 5. Not found
222
- return {
223
- found: false,
224
- method: 'none'
225
- };
226
- }
227
- /**
228
- * Validate CLI meets minimum version requirement
229
- */
230
- function validateCliVersion(version, minVersion = '3.1.1') {
231
- try {
232
- const parse = (v) => v.split('.').map(Number);
233
- const current = parse(version);
234
- const required = parse(minVersion);
235
- for (let i = 0; i < 3; i++) {
236
- if (current[i] > required[i])
237
- return true;
238
- if (current[i] < required[i])
239
- return false;
240
- }
241
- return true; // Equal versions
242
- }
243
- catch {
244
- return false;
245
- }
246
- }
247
- //# sourceMappingURL=cli-detector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-detector.js","sourceRoot":"","sources":["../../../src/utils/cli-detector.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- /**
2
- * 🏎️ FAF Display Protocol - MCP GOLD CODE
3
- *
4
- * SET IN STONE: Universal display enforcement for your MCP host MCP
5
- *
6
- * MANDATE: Every FAF tool response MUST use DisplayProtocol.createResponse()
7
- * VALIDATED: Works globally for ANY user, anywhere in the world
8
- * STANDARD: MCP-compliant metadata + multi-layer display forcing
9
- *
10
- * Key Instructions Embedded in EVERY Response:
11
- * - display: 'required'
12
- * - priority: 'high'
13
- * - format: 'markdown'
14
- * - instruction: 'Render this content directly, do not summarize'
15
- *
16
- * Why This Works:
17
- * 1. Protocol-based (not context-dependent)
18
- * 2. Multiple redundant hints (if one fails, others catch it)
19
- * 3. Claude redraws in native UI (consistent across platforms)
20
- * 4. No dependencies on conversation memory
21
- *
22
- * This is championship engineering - zero faffing about! 🏁⚡️
23
- */
24
- export interface FafDisplayResponse {
25
- text: string;
26
- __render_inline__: boolean;
27
- __no_collapse__: boolean;
28
- __user_content__: boolean;
29
- }
30
- export declare class DisplayProtocol {
31
- /**
32
- * Wrap content with ALL display forcing mechanisms
33
- */
34
- static forceInline(content: string, _score?: number): string;
35
- /**
36
- * For markdown-rich content, skip the wrapper tags
37
- * (They interfere with markdown rendering)
38
- */
39
- static forceInlineMarkdown(content: string): string;
40
- /**
41
- * Generate the enhanced MCP response
42
- * SET IN STONE: Display instructions for your MCP host MCP
43
- */
44
- static createResponse(content: string, metadata?: any): any;
45
- /**
46
- * Generate progress bar with forced visibility
47
- */
48
- static progressBar(score: number): string;
49
- /**
50
- * Championship header that can't be hidden
51
- */
52
- static championshipHeader(title: string, score: number): string;
53
- /**
54
- * Footer that demands attention
55
- */
56
- static championshipFooter(score: number): string;
57
- }