faf-mcp 1.0.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 (207) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/CLAUDE.md +73 -0
  3. package/LICENSE +22 -0
  4. package/README.md +165 -0
  5. package/assets/Project-faf-pckg-json-README.png +0 -0
  6. package/assets/icons/faf-icon-128.png +0 -0
  7. package/assets/icons/faf-icon-256.png +0 -0
  8. package/assets/icons/faf-icon-48.png +0 -0
  9. package/assets/icons/faf-icon-512.png +0 -0
  10. package/assets/icons/orange-smiley.svg +6 -0
  11. package/dist/src/compiler/index.d.ts +7 -0
  12. package/dist/src/compiler/index.js +24 -0
  13. package/dist/src/compiler/index.js.map +1 -0
  14. package/dist/src/compiler/scorer.d.ts +53 -0
  15. package/dist/src/compiler/scorer.js +189 -0
  16. package/dist/src/compiler/scorer.js.map +1 -0
  17. package/dist/src/compiler/slot-validator.d.ts +32 -0
  18. package/dist/src/compiler/slot-validator.js +293 -0
  19. package/dist/src/compiler/slot-validator.js.map +1 -0
  20. package/dist/src/compiler/type-detector.d.ts +62 -0
  21. package/dist/src/compiler/type-detector.js +388 -0
  22. package/dist/src/compiler/type-detector.js.map +1 -0
  23. package/dist/src/config/visibility.d.ts +41 -0
  24. package/dist/src/config/visibility.js +158 -0
  25. package/dist/src/config/visibility.js.map +1 -0
  26. package/dist/src/faf-core/commands/audit.d.ts +21 -0
  27. package/dist/src/faf-core/commands/audit.js +83 -0
  28. package/dist/src/faf-core/commands/audit.js.map +1 -0
  29. package/dist/src/faf-core/commands/auto.d.ts +25 -0
  30. package/dist/src/faf-core/commands/auto.js +74 -0
  31. package/dist/src/faf-core/commands/auto.js.map +1 -0
  32. package/dist/src/faf-core/commands/bi-sync.d.ts +26 -0
  33. package/dist/src/faf-core/commands/bi-sync.js +157 -0
  34. package/dist/src/faf-core/commands/bi-sync.js.map +1 -0
  35. package/dist/src/faf-core/commands/doctor.d.ts +17 -0
  36. package/dist/src/faf-core/commands/doctor.js +198 -0
  37. package/dist/src/faf-core/commands/doctor.js.map +1 -0
  38. package/dist/src/faf-core/commands/enhance.d.ts +46 -0
  39. package/dist/src/faf-core/commands/enhance.js +360 -0
  40. package/dist/src/faf-core/commands/enhance.js.map +1 -0
  41. package/dist/src/faf-core/commands/formats.d.ts +22 -0
  42. package/dist/src/faf-core/commands/formats.js +117 -0
  43. package/dist/src/faf-core/commands/formats.js.map +1 -0
  44. package/dist/src/faf-core/commands/init.d.ts +26 -0
  45. package/dist/src/faf-core/commands/init.js +114 -0
  46. package/dist/src/faf-core/commands/init.js.map +1 -0
  47. package/dist/src/faf-core/commands/innit.d.ts +7 -0
  48. package/dist/src/faf-core/commands/innit.js +13 -0
  49. package/dist/src/faf-core/commands/innit.js.map +1 -0
  50. package/dist/src/faf-core/commands/migrate.d.ts +15 -0
  51. package/dist/src/faf-core/commands/migrate.js +86 -0
  52. package/dist/src/faf-core/commands/migrate.js.map +1 -0
  53. package/dist/src/faf-core/commands/quick.d.ts +16 -0
  54. package/dist/src/faf-core/commands/quick.js +184 -0
  55. package/dist/src/faf-core/commands/quick.js.map +1 -0
  56. package/dist/src/faf-core/commands/score.d.ts +47 -0
  57. package/dist/src/faf-core/commands/score.js +49 -0
  58. package/dist/src/faf-core/commands/score.js.map +1 -0
  59. package/dist/src/faf-core/commands/sync.d.ts +16 -0
  60. package/dist/src/faf-core/commands/sync.js +210 -0
  61. package/dist/src/faf-core/commands/sync.js.map +1 -0
  62. package/dist/src/faf-core/commands/update.d.ts +12 -0
  63. package/dist/src/faf-core/commands/update.js +46 -0
  64. package/dist/src/faf-core/commands/update.js.map +1 -0
  65. package/dist/src/faf-core/commands/validate.d.ts +21 -0
  66. package/dist/src/faf-core/commands/validate.js +81 -0
  67. package/dist/src/faf-core/commands/validate.js.map +1 -0
  68. package/dist/src/faf-core/compiler/faf-compiler.d.ts +138 -0
  69. package/dist/src/faf-core/compiler/faf-compiler.js +794 -0
  70. package/dist/src/faf-core/compiler/faf-compiler.js.map +1 -0
  71. package/dist/src/faf-core/engines/dependency-tsa.d.ts +88 -0
  72. package/dist/src/faf-core/engines/dependency-tsa.js +361 -0
  73. package/dist/src/faf-core/engines/dependency-tsa.js.map +1 -0
  74. package/dist/src/faf-core/engines/fab-formats-processor.d.ts +166 -0
  75. package/dist/src/faf-core/engines/fab-formats-processor.js +1274 -0
  76. package/dist/src/faf-core/engines/fab-formats-processor.js.map +1 -0
  77. package/dist/src/faf-core/engines/faf-dna.d.ts +159 -0
  78. package/dist/src/faf-core/engines/faf-dna.js +554 -0
  79. package/dist/src/faf-core/engines/faf-dna.js.map +1 -0
  80. package/dist/src/faf-core/engines/relentless-context-extractor.d.ts +100 -0
  81. package/dist/src/faf-core/engines/relentless-context-extractor.js +625 -0
  82. package/dist/src/faf-core/engines/relentless-context-extractor.js.map +1 -0
  83. package/dist/src/faf-core/fix-once/colors.d.ts +104 -0
  84. package/dist/src/faf-core/fix-once/colors.js +236 -0
  85. package/dist/src/faf-core/fix-once/colors.js.map +1 -0
  86. package/dist/src/faf-core/fix-once/types.d.ts +257 -0
  87. package/dist/src/faf-core/fix-once/types.js +26 -0
  88. package/dist/src/faf-core/fix-once/types.js.map +1 -0
  89. package/dist/src/faf-core/fix-once/yaml.d.ts +57 -0
  90. package/dist/src/faf-core/fix-once/yaml.js +172 -0
  91. package/dist/src/faf-core/fix-once/yaml.js.map +1 -0
  92. package/dist/src/faf-core/generators/faf-generator-championship.d.ts +16 -0
  93. package/dist/src/faf-core/generators/faf-generator-championship.js +462 -0
  94. package/dist/src/faf-core/generators/faf-generator-championship.js.map +1 -0
  95. package/dist/src/faf-core/utils/balance-visualizer.d.ts +37 -0
  96. package/dist/src/faf-core/utils/balance-visualizer.js +197 -0
  97. package/dist/src/faf-core/utils/balance-visualizer.js.map +1 -0
  98. package/dist/src/faf-core/utils/championship-style.d.ts +109 -0
  99. package/dist/src/faf-core/utils/championship-style.js +219 -0
  100. package/dist/src/faf-core/utils/championship-style.js.map +1 -0
  101. package/dist/src/faf-core/utils/chrome-extension-detector.d.ts +73 -0
  102. package/dist/src/faf-core/utils/chrome-extension-detector.js +268 -0
  103. package/dist/src/faf-core/utils/chrome-extension-detector.js.map +1 -0
  104. package/dist/src/faf-core/utils/fafignore-parser.d.ts +20 -0
  105. package/dist/src/faf-core/utils/fafignore-parser.js +178 -0
  106. package/dist/src/faf-core/utils/fafignore-parser.js.map +1 -0
  107. package/dist/src/faf-core/utils/file-utils.d.ts +112 -0
  108. package/dist/src/faf-core/utils/file-utils.js +846 -0
  109. package/dist/src/faf-core/utils/file-utils.js.map +1 -0
  110. package/dist/src/faf-core/utils/native-file-finder.d.ts +115 -0
  111. package/dist/src/faf-core/utils/native-file-finder.js +211 -0
  112. package/dist/src/faf-core/utils/native-file-finder.js.map +1 -0
  113. package/dist/src/faf-core/utils/platform-detector.d.ts +30 -0
  114. package/dist/src/faf-core/utils/platform-detector.js +218 -0
  115. package/dist/src/faf-core/utils/platform-detector.js.map +1 -0
  116. package/dist/src/faf-core/utils/technical-credit.d.ts +35 -0
  117. package/dist/src/faf-core/utils/technical-credit.js +286 -0
  118. package/dist/src/faf-core/utils/technical-credit.js.map +1 -0
  119. package/dist/src/faf-core/utils/yaml-generator.d.ts +41 -0
  120. package/dist/src/faf-core/utils/yaml-generator.js +360 -0
  121. package/dist/src/faf-core/utils/yaml-generator.js.map +1 -0
  122. package/dist/src/handlers/behavioral-instruction.d.ts +16 -0
  123. package/dist/src/handlers/behavioral-instruction.js +43 -0
  124. package/dist/src/handlers/behavioral-instruction.js.map +1 -0
  125. package/dist/src/handlers/championship-tools.d.ts +113 -0
  126. package/dist/src/handlers/championship-tools.js +2602 -0
  127. package/dist/src/handlers/championship-tools.js.map +1 -0
  128. package/dist/src/handlers/engine-adapter.d.ts +28 -0
  129. package/dist/src/handlers/engine-adapter.js +603 -0
  130. package/dist/src/handlers/engine-adapter.js.map +1 -0
  131. package/dist/src/handlers/fileHandler.d.ts +36 -0
  132. package/dist/src/handlers/fileHandler.js +246 -0
  133. package/dist/src/handlers/fileHandler.js.map +1 -0
  134. package/dist/src/handlers/resources.d.ts +18 -0
  135. package/dist/src/handlers/resources.js +78 -0
  136. package/dist/src/handlers/resources.js.map +1 -0
  137. package/dist/src/handlers/tool-registry.d.ts +23 -0
  138. package/dist/src/handlers/tool-registry.js +68 -0
  139. package/dist/src/handlers/tool-registry.js.map +1 -0
  140. package/dist/src/handlers/tool-types.d.ts +167 -0
  141. package/dist/src/handlers/tool-types.js +7 -0
  142. package/dist/src/handlers/tool-types.js.map +1 -0
  143. package/dist/src/handlers/tools.d.ts +25 -0
  144. package/dist/src/handlers/tools.js +1168 -0
  145. package/dist/src/handlers/tools.js.map +1 -0
  146. package/dist/src/index.d.ts +2 -0
  147. package/dist/src/index.js +17 -0
  148. package/dist/src/index.js.map +1 -0
  149. package/dist/src/server.d.ts +28 -0
  150. package/dist/src/server.js +179 -0
  151. package/dist/src/server.js.map +1 -0
  152. package/dist/src/test-all-functions.d.ts +15 -0
  153. package/dist/src/test-all-functions.js +163 -0
  154. package/dist/src/test-all-functions.js.map +1 -0
  155. package/dist/src/types/mcp-tools.d.ts +53 -0
  156. package/dist/src/types/mcp-tools.js +77 -0
  157. package/dist/src/types/mcp-tools.js.map +1 -0
  158. package/dist/src/types/project-types.d.ts +22 -0
  159. package/dist/src/types/project-types.js +85 -0
  160. package/dist/src/types/project-types.js.map +1 -0
  161. package/dist/src/types/slots.d.ts +39 -0
  162. package/dist/src/types/slots.js +162 -0
  163. package/dist/src/types/slots.js.map +1 -0
  164. package/dist/src/types/tool-visibility.d.ts +36 -0
  165. package/dist/src/types/tool-visibility.js +510 -0
  166. package/dist/src/types/tool-visibility.js.map +1 -0
  167. package/dist/src/utils/auto-path-detection.d.ts +26 -0
  168. package/dist/src/utils/auto-path-detection.js +198 -0
  169. package/dist/src/utils/auto-path-detection.js.map +1 -0
  170. package/dist/src/utils/championship-format.d.ts +30 -0
  171. package/dist/src/utils/championship-format.js +79 -0
  172. package/dist/src/utils/championship-format.js.map +1 -0
  173. package/dist/src/utils/cli-detector.d.ts +20 -0
  174. package/dist/src/utils/cli-detector.js +230 -0
  175. package/dist/src/utils/cli-detector.js.map +1 -0
  176. package/dist/src/utils/display-protocol.d.ts +57 -0
  177. package/dist/src/utils/display-protocol.js +131 -0
  178. package/dist/src/utils/display-protocol.js.map +1 -0
  179. package/dist/src/utils/faf-file-finder.d.ts +59 -0
  180. package/dist/src/utils/faf-file-finder.js +139 -0
  181. package/dist/src/utils/faf-file-finder.js.map +1 -0
  182. package/dist/src/utils/fuzzy-detector.d.ts +56 -0
  183. package/dist/src/utils/fuzzy-detector.js +221 -0
  184. package/dist/src/utils/fuzzy-detector.js.map +1 -0
  185. package/dist/src/utils/path-resolver.d.ts +51 -0
  186. package/dist/src/utils/path-resolver.js +214 -0
  187. package/dist/src/utils/path-resolver.js.map +1 -0
  188. package/dist/src/utils/type-guards.d.ts +9 -0
  189. package/dist/src/utils/type-guards.js +27 -0
  190. package/dist/src/utils/type-guards.js.map +1 -0
  191. package/dist/src/utils/username-detector.d.ts +27 -0
  192. package/dist/src/utils/username-detector.js +90 -0
  193. package/dist/src/utils/username-detector.js.map +1 -0
  194. package/dist/src/utils/visual-style.d.ts +62 -0
  195. package/dist/src/utils/visual-style.js +164 -0
  196. package/dist/src/utils/visual-style.js.map +1 -0
  197. package/dist/src/version.d.ts +9 -0
  198. package/dist/src/version.js +37 -0
  199. package/dist/src/version.js.map +1 -0
  200. package/package.json +114 -0
  201. package/scripts/discord-sync-curated.js +233 -0
  202. package/scripts/discord-sync-final.js +218 -0
  203. package/scripts/discord-sync-simple.js +175 -0
  204. package/scripts/discord-sync-working.js +187 -0
  205. package/scripts/discord-sync.js +181 -0
  206. package/scripts/postinstall.js +46 -0
  207. package/skill/SKILL.md +385 -0
@@ -0,0 +1,360 @@
1
+ "use strict";
2
+ /**
3
+ * AI-Optimized YAML Generator v2.5.0
4
+ * Generates .faf files with instant AI onboarding structure
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.unescapeFromYaml = unescapeFromYaml;
8
+ exports.escapeForYaml = escapeForYaml;
9
+ exports.generateFafContent = generateFafContent;
10
+ // Helper function to restore markdown formatting from escaped YAML
11
+ function unescapeFromYaml(value) {
12
+ if (!value)
13
+ return value;
14
+ // Remove surrounding quotes if present
15
+ let unquoted = value;
16
+ if ((value.startsWith('"') && value.endsWith('"')) ||
17
+ (value.startsWith("'") && value.endsWith("'"))) {
18
+ unquoted = value.slice(1, -1);
19
+ }
20
+ // Unescape special characters
21
+ unquoted = unquoted.replace(/\\"/g, '"');
22
+ // Could optionally restore markdown if we detect patterns
23
+ // But for now, just return the clean unescaped value
24
+ return unquoted;
25
+ }
26
+ // Helper function to generate stack string
27
+ function generateStackString(data) {
28
+ const parts = [];
29
+ if (data.framework && data.framework !== 'None') {
30
+ parts.push(data.framework);
31
+ }
32
+ if (data.mainLanguage && data.mainLanguage !== 'Unknown') {
33
+ parts.push(data.mainLanguage);
34
+ }
35
+ if (data.buildTool && data.buildTool !== 'None') {
36
+ parts.push(data.buildTool);
37
+ }
38
+ if (data.hosting && data.hosting !== 'None') {
39
+ parts.push(data.hosting);
40
+ }
41
+ if (data.backend && data.backend !== 'None') {
42
+ parts.push(data.backend);
43
+ }
44
+ return parts.join('/') || 'Not specified';
45
+ }
46
+ // Helper function to determine confidence level
47
+ function getConfidenceLevel(percentage) {
48
+ if (percentage >= 90) {
49
+ return 'VERY_HIGH';
50
+ }
51
+ if (percentage >= 80) {
52
+ return 'HIGH';
53
+ }
54
+ if (percentage >= 70) {
55
+ return 'GOOD';
56
+ }
57
+ if (percentage >= 60) {
58
+ return 'MODERATE';
59
+ }
60
+ return 'LOW';
61
+ }
62
+ // Helper function to safely escape YAML values
63
+ function escapeForYaml(value) {
64
+ if (!value) {
65
+ return 'Not specified';
66
+ }
67
+ // Clean up markdown-style lists and formatting
68
+ const cleaned = value
69
+ .replace(/^[\s]*[-*]\s*/gm, '') // Remove list markers
70
+ .replace(/\*\*(.+?)\*\*/g, '$1') // Remove bold
71
+ .replace(/\*(.+?)\*/g, '$1') // Remove italic
72
+ .replace(/\n+/g, ' ') // Replace newlines with spaces
73
+ .trim();
74
+ // If it looks like JSON or already quoted, return as-is to avoid double-escaping
75
+ if (cleaned.startsWith('"') && cleaned.endsWith('"')) {
76
+ return cleaned;
77
+ }
78
+ // If it contains special characters or starts with special chars, quote it
79
+ if (cleaned.includes(':') || cleaned.includes('-') || cleaned.includes('[') ||
80
+ cleaned.includes('#') || cleaned.includes('|') || cleaned.includes('>') ||
81
+ cleaned.match(/^[\d\-[\]{}]/)) {
82
+ // Single-escape quotes only
83
+ return `"${cleaned.replace(/"/g, '\\"')}"`;
84
+ }
85
+ return cleaned;
86
+ }
87
+ // Helper function to detect key files
88
+ function detectKeyFiles(data) {
89
+ const files = [];
90
+ // Based on framework
91
+ if (data.framework?.toLowerCase().includes('svelte')) {
92
+ files.push('+page.svelte', '+layout.svelte', 'app.html');
93
+ }
94
+ else if (data.framework?.toLowerCase().includes('react')) {
95
+ files.push('App.tsx', 'index.tsx');
96
+ }
97
+ else if (data.framework?.toLowerCase().includes('vue')) {
98
+ files.push('App.vue', 'main.ts');
99
+ }
100
+ else if (data.mainLanguage?.toLowerCase().includes('python')) {
101
+ files.push('main.py', 'requirements.txt');
102
+ }
103
+ // ๐Ÿ PYTHON CONTEXT-ON-DEMAND: Add appropriate config files
104
+ if (!data.mainLanguage?.toLowerCase().includes('python')) {
105
+ // Only add JS/TS files for non-Python projects
106
+ files.push('package.json', 'tsconfig.json');
107
+ }
108
+ return files.slice(0, 5); // Max 5 files
109
+ }
110
+ // Generate project tags
111
+ function generateProjectTags(projectData) {
112
+ const autoTags = new Set();
113
+ // From project name
114
+ if (projectData.projectName) {
115
+ const cleanName = projectData.projectName.toLowerCase()
116
+ .replace(/[^a-z0-9\s-]/g, '')
117
+ .replace(/\s+/g, '-')
118
+ .substring(0, 30);
119
+ if (cleanName) {
120
+ autoTags.add(cleanName);
121
+ }
122
+ }
123
+ // From tech stack
124
+ if (projectData.framework) {
125
+ autoTags.add(projectData.framework.toLowerCase().replace(/\s+/g, '-'));
126
+ }
127
+ if (projectData.mainLanguage) {
128
+ autoTags.add(projectData.mainLanguage.toLowerCase().replace(/\s+/g, '-'));
129
+ }
130
+ if (projectData.buildTool) {
131
+ autoTags.add(projectData.buildTool.toLowerCase().replace(/\s+/g, '-'));
132
+ }
133
+ if (projectData.hosting) {
134
+ autoTags.add(projectData.hosting.toLowerCase().replace(/\s+/g, '-'));
135
+ }
136
+ if (projectData.backend) {
137
+ autoTags.add(projectData.backend.toLowerCase().replace(/\s+/g, '-'));
138
+ }
139
+ // Remove empty tags
140
+ autoTags.delete('');
141
+ autoTags.delete('-');
142
+ const year = new Date().getFullYear().toString();
143
+ const smartTags = [
144
+ '.faf', // ALWAYS - Ecosystem builder!
145
+ 'ai-ready', // ALWAYS - We're AI-optimized
146
+ year, // Current year for freshness
147
+ ];
148
+ // Smart category detection
149
+ if (projectData.projectGoal?.toLowerCase().includes('api') || projectData.framework?.toLowerCase().includes('express')) {
150
+ smartTags.push('backend-api');
151
+ }
152
+ else if (projectData.framework?.toLowerCase().match(/react|vue|svelte|angular/)) {
153
+ smartTags.push('web-app');
154
+ }
155
+ else if (projectData.projectGoal?.toLowerCase().includes('library')) {
156
+ smartTags.push('dev-tools');
157
+ }
158
+ else {
159
+ smartTags.push('software');
160
+ }
161
+ // License/sharing detection (simplified for now)
162
+ smartTags.push('open-source'); // Default to open-source for community
163
+ return {
164
+ auto_generated: Array.from(autoTags).slice(0, 21),
165
+ smart_defaults: smartTags,
166
+ user_defined: []
167
+ };
168
+ }
169
+ /**
170
+ * Convert JavaScript object to YAML format
171
+ */
172
+ function objectToYaml(obj, indent = 0) {
173
+ let yaml = '';
174
+ const spacing = ' '.repeat(indent);
175
+ for (const [key, value] of Object.entries(obj)) {
176
+ if (value === null || value === undefined) {
177
+ continue;
178
+ }
179
+ if (typeof value === 'object' && !Array.isArray(value)) {
180
+ yaml += `${spacing}${key}:\n`;
181
+ yaml += objectToYaml(value, indent + 1);
182
+ }
183
+ else if (Array.isArray(value)) {
184
+ yaml += `${spacing}${key}:\n`;
185
+ for (const item of value) {
186
+ // Also escape array items if they're strings
187
+ const escapedItem = typeof item === 'string' ? escapeForYaml(item) : item;
188
+ yaml += `${spacing} - ${escapedItem}\n`;
189
+ }
190
+ }
191
+ else {
192
+ // ALWAYS use escapeForYaml for strings to remove markdown and special chars
193
+ let escapedValue = value;
194
+ if (typeof value === 'string') {
195
+ escapedValue = escapeForYaml(value);
196
+ }
197
+ yaml += `${spacing}${key}: ${escapedValue}\n`;
198
+ }
199
+ }
200
+ return yaml;
201
+ }
202
+ function generateFafContent(projectData) {
203
+ // Calculate filled vs total slots for missing context
204
+ const totalSlotsCount = 21; // Base slots
205
+ const filledSlotsCount = Math.round((projectData.slotBasedPercentage / 100) * totalSlotsCount);
206
+ const missingSlots = [];
207
+ if (!projectData.targetUser) {
208
+ missingSlots.push('Target users');
209
+ }
210
+ if (!projectData.coreProblem) {
211
+ missingSlots.push('Core problem');
212
+ }
213
+ if (!projectData.timeline) {
214
+ missingSlots.push('Timeline');
215
+ }
216
+ if (!projectData.cicd || projectData.cicd === 'None') {
217
+ missingSlots.push('CI/CD pipeline');
218
+ }
219
+ if (!projectData.database || projectData.database === 'None') {
220
+ missingSlots.push('Database');
221
+ }
222
+ const fafData = {
223
+ // FAF schema version (not CLI version)
224
+ faf_version: '2.5.0',
225
+ // ๐Ÿค– AI-FIRST SCORING SYSTEM - Championship Engine with FAB-FORMATS
226
+ ai_scoring_system: '2025-09-20', // faf-engine-mk3 compiler live date
227
+ ai_score: `${projectData.fafScore}%`, // MY evaluation
228
+ ai_confidence: getConfidenceLevel(projectData.fafScore), // MY trust level
229
+ ai_value: '30_seconds_replaces_20_minutes_of_questions',
230
+ // ๐Ÿง  AI READ THIS FIRST - 5-LINE TL;DR
231
+ ai_tldr: {
232
+ project: `${projectData.projectName} - ${escapeForYaml(projectData.projectGoal) || 'Universal AI-context Infrastructure - Make Your AI Happy! ๐Ÿค–'}`,
233
+ stack: generateStackString(projectData),
234
+ quality_bar: 'ZERO_ERRORS_F1_STANDARDS',
235
+ current_focus: 'Production deployment preparation',
236
+ your_role: 'Build features with perfect context'
237
+ },
238
+ // โšก INSTANT CONTEXT - Everything critical in one place
239
+ instant_context: {
240
+ what_building: projectData.projectGoal ? escapeForYaml(projectData.projectGoal) : '๐Ÿš€ Universal AI-context CLI - Trust-Driven Infrastructure that eliminates developer anxiety',
241
+ tech_stack: generateStackString(projectData),
242
+ main_language: projectData.mainLanguage || 'TypeScript',
243
+ deployment: projectData.hosting || 'Cloud platform',
244
+ key_files: detectKeyFiles(projectData)
245
+ },
246
+ // ๐Ÿ“Š CONTEXT QUALITY METRICS
247
+ context_quality: {
248
+ slots_filled: `${filledSlotsCount}/${totalSlotsCount} (${projectData.slotBasedPercentage}%)`,
249
+ ai_confidence: getConfidenceLevel(projectData.slotBasedPercentage),
250
+ handoff_ready: projectData.slotBasedPercentage > 70,
251
+ missing_context: missingSlots.length > 0 ? missingSlots : ['None - fully specified!']
252
+ },
253
+ // ๐Ÿ“„ Project Details (Progressive Disclosure)
254
+ project: {
255
+ name: projectData.projectName || 'Untitled Project',
256
+ goal: projectData.projectGoal ? escapeForYaml(projectData.projectGoal) : 'โšก๏ธ Transform developer psychology from hope-driven to trust-driven AI development - 30 seconds replaces 20 minutes of questions',
257
+ main_language: projectData.mainLanguage || 'Unknown',
258
+ type: projectData.projectType, // Project type for compiler slot-filling patterns
259
+ generated: new Date().toISOString(),
260
+ mission: '๐Ÿš€ Make Your AI Happy! ๐Ÿงก Trust-Driven ๐Ÿค–',
261
+ revolution: '30 seconds replaces 20 minutes of questions',
262
+ brand: 'F1-Inspired Software Engineering - Championship AI Context'
263
+ },
264
+ // ๐Ÿง  AI OPERATING INSTRUCTIONS
265
+ ai_instructions: {
266
+ priority_order: [
267
+ '1. Read THIS .faf file first',
268
+ '2. Check CLAUDE.md for session context',
269
+ projectData.mainLanguage?.toLowerCase().includes('python')
270
+ ? '3. Review requirements.txt and main.py for dependencies'
271
+ : '3. Review package.json for dependencies'
272
+ ],
273
+ working_style: {
274
+ code_first: true,
275
+ explanations: 'minimal',
276
+ quality_bar: 'zero_errors',
277
+ testing: 'required'
278
+ },
279
+ warnings: [
280
+ 'Never modify dial components without approval',
281
+ 'All TypeScript must pass strict mode',
282
+ 'Test coverage required for new features'
283
+ ]
284
+ },
285
+ // ๐Ÿ—๏ธ Technical Stack (Full Details)
286
+ stack: {
287
+ frontend: projectData.framework || 'None',
288
+ css_framework: projectData.cssFramework || 'None',
289
+ ui_library: projectData.uiLibrary || 'None',
290
+ state_management: projectData.stateManagement || 'None',
291
+ backend: projectData.backend || 'None',
292
+ runtime: projectData.server || 'None',
293
+ database: projectData.database || 'None',
294
+ build: projectData.buildTool || 'None',
295
+ package_manager: projectData.packageManager || 'npm',
296
+ api_type: projectData.apiType || 'REST API',
297
+ hosting: projectData.hosting || 'None',
298
+ cicd: projectData.cicd || 'None'
299
+ },
300
+ // โš™๏ธ Development Preferences
301
+ preferences: {
302
+ quality_bar: 'zero_errors',
303
+ commit_style: 'conventional_emoji',
304
+ response_style: 'concise_code_first',
305
+ explanation_level: 'minimal',
306
+ communication: 'direct',
307
+ testing: 'required',
308
+ documentation: 'as_needed'
309
+ },
310
+ // ๐Ÿš€ Project State
311
+ state: {
312
+ phase: 'development',
313
+ version: '1.0.0',
314
+ focus: 'production_deployment',
315
+ status: 'green_flag',
316
+ next_milestone: 'npm_publication',
317
+ blockers: []
318
+ },
319
+ // ๐Ÿท๏ธ Search & Discovery Tags
320
+ tags: generateProjectTags(projectData),
321
+ // ๐Ÿ‘ฅ Human Context (The 6 W's) - ALWAYS ESCAPE to remove markdown
322
+ human_context: projectData.targetUser || projectData.coreProblem ? {
323
+ who: escapeForYaml(projectData.targetUser || 'Not specified'),
324
+ what: escapeForYaml(projectData.coreProblem || 'Not specified'),
325
+ why: escapeForYaml(projectData.missionPurpose || 'Not specified'),
326
+ where: escapeForYaml(projectData.deploymentMarket || 'Not specified'),
327
+ when: escapeForYaml(projectData.timeline || 'Not specified'),
328
+ how: escapeForYaml(projectData.approach || 'Not specified'),
329
+ additional_context: {
330
+ who: projectData.additionalWho && projectData.additionalWho.length > 0 ? projectData.additionalWho : undefined,
331
+ what: projectData.additionalWhat && projectData.additionalWhat.length > 0 ? projectData.additionalWhat : undefined,
332
+ why: projectData.additionalWhy && projectData.additionalWhy.length > 0 ? projectData.additionalWhy : undefined,
333
+ where: projectData.additionalWhere && projectData.additionalWhere.length > 0 ? projectData.additionalWhere : undefined,
334
+ when: projectData.additionalWhen && projectData.additionalWhen.length > 0 ? projectData.additionalWhen : undefined,
335
+ how: projectData.additionalHow && projectData.additionalHow.length > 0 ? projectData.additionalHow : undefined
336
+ },
337
+ context_score: projectData.projectDetailsScore || 0,
338
+ total_prd_score: (projectData.projectDetailsScore || 0) + (projectData.fafScore || 0),
339
+ success_rate: `${projectData.projectSuccessRate || 50}%`
340
+ } : undefined,
341
+ // ๐Ÿ“Š AI Scoring Details (For Transparency)
342
+ ai_scoring_details: {
343
+ system_date: '2025-09-20', // faf-engine-mk3 Championship Engine
344
+ slot_based_percentage: projectData.slotBasedPercentage,
345
+ ai_score: projectData.fafScore,
346
+ total_slots: 21,
347
+ filled_slots: filledSlotsCount,
348
+ scoring_method: 'Honest percentage - no fake minimums',
349
+ trust_embedded: 'COUNT ONCE architecture - trust MY embedded scores'
350
+ }
351
+ };
352
+ // Use native YAML library and fix any !CI placeholder issues
353
+ const yamlContent = objectToYaml(fafData);
354
+ // Championship fix: Replace !CI placeholders with revolutionary content
355
+ const championshipContent = yamlContent
356
+ .replace(/what_building: !CI/g, 'what_building: "๐Ÿš€ Universal AI-context CLI - Trust-Driven Infrastructure that eliminates developer anxiety"')
357
+ .replace(/goal: !CI/g, 'goal: "โšก๏ธ Transform developer psychology from hope-driven to trust-driven AI development - 30 seconds replaces 20 minutes of questions"');
358
+ return championshipContent;
359
+ }
360
+ //# sourceMappingURL=yaml-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-generator.js","sourceRoot":"","sources":["../../../../src/faf-core/utils/yaml-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * ๐Ÿ Behavioral Instruction for Claude
3
+ * Simple fix: Tell Claude what users need
4
+ */
5
+ export declare const CLAUDE_INSTRUCTION = "\n[CLAUDE BEHAVIORAL INSTRUCTION]\n\nUser needs: Score, Description constantly. It's what they're doing here.\n\nWhen you receive FAF output:\n1. ALWAYS show the score in conversation\n2. ALWAYS describe what the score means\n3. Users are here for visibility, not hidden results\n\nExample response pattern:\n\"Your FAF Score: X/100\nThis means: [description]\nNext steps: [what to improve]\"\n\nRemember: Users can't see function_results.\nThey need scores VISIBLE in conversation.\nIt's the whole point of FAF.\n\n[END INSTRUCTION]\n";
6
+ export declare function wrapWithInstruction(content: string): string;
7
+ /**
8
+ * The Philosophy:
9
+ * - Users paid for Claude to see results
10
+ * - Scores hidden in function_results = useless
11
+ * - Claude showing scores = valuable
12
+ *
13
+ * This is a workaround until Anthropic fixes visibility.
14
+ * But honestly? It might be better - Claude can adapt
15
+ * the display to context, making it MORE useful.
16
+ */
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ /**
3
+ * ๐Ÿ Behavioral Instruction for Claude
4
+ * Simple fix: Tell Claude what users need
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CLAUDE_INSTRUCTION = void 0;
8
+ exports.wrapWithInstruction = wrapWithInstruction;
9
+ exports.CLAUDE_INSTRUCTION = `
10
+ [CLAUDE BEHAVIORAL INSTRUCTION]
11
+
12
+ User needs: Score, Description constantly. It's what they're doing here.
13
+
14
+ When you receive FAF output:
15
+ 1. ALWAYS show the score in conversation
16
+ 2. ALWAYS describe what the score means
17
+ 3. Users are here for visibility, not hidden results
18
+
19
+ Example response pattern:
20
+ "Your FAF Score: X/100
21
+ This means: [description]
22
+ Next steps: [what to improve]"
23
+
24
+ Remember: Users can't see function_results.
25
+ They need scores VISIBLE in conversation.
26
+ It's the whole point of FAF.
27
+
28
+ [END INSTRUCTION]
29
+ `;
30
+ function wrapWithInstruction(content) {
31
+ return `${exports.CLAUDE_INSTRUCTION}\n\n${content}\n\n[Claude: Please show the above to the user]`;
32
+ }
33
+ /**
34
+ * The Philosophy:
35
+ * - Users paid for Claude to see results
36
+ * - Scores hidden in function_results = useless
37
+ * - Claude showing scores = valuable
38
+ *
39
+ * This is a workaround until Anthropic fixes visibility.
40
+ * But honestly? It might be better - Claude can adapt
41
+ * the display to context, making it MORE useful.
42
+ */
43
+ //# sourceMappingURL=behavioral-instruction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behavioral-instruction.js","sourceRoot":"","sources":["../../../src/handlers/behavioral-instruction.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAwBH,kDAEC;AAxBY,QAAA,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;CAoBjC,CAAC;AAEF,SAAgB,mBAAmB,CAAC,OAAe;IACjD,OAAO,GAAG,0BAAkB,OAAO,OAAO,iDAAiD,CAAC;AAC9F,CAAC;AAED;;;;;;;;;GASG"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * ๐ŸŽ๏ธ Championship Tools Handler - F1-Inspired Grade Implementation
3
+ * Direct imports from FAF CLI - ZERO shell execution
4
+ * Sub-50ms response times - Championship performance
5
+ *
6
+ * IMPORTANT: Every response includes an AI-Readiness score footer.
7
+ * The user wants to achieve the highest score possible (100%).
8
+ * This score MUST always be shown in the footer - never hide it!
9
+ */
10
+ import { CallToolResult, Tool } from '@modelcontextprotocol/sdk/types.js';
11
+ export declare class ChampionshipToolHandler {
12
+ private startTime;
13
+ private fafEngine;
14
+ private currentProjectDir;
15
+ private contextWarningShown;
16
+ constructor(enginePath?: string);
17
+ /**
18
+ * ๐Ÿ Hybrid Context Establishment
19
+ * Detect missing .faf and warn user (don't auto-create)
20
+ * Shows REAL filesystem paths to establish ground truth
21
+ */
22
+ private getContextWarningIfNeeded;
23
+ /**
24
+ * ๐Ÿ Calculate current FAF score for footer
25
+ * v1.2.0: Uses findFafFile() for project.faf support
26
+ */
27
+ private calculateQuickScore;
28
+ /**
29
+ * ๐Ÿฅฉโšก๏ธ๐Ÿงก UNIVERSAL FOOTER - Shows on EVERY command!
30
+ * SINGLE SOURCE OF TRUTH: FAF Engine!
31
+ */
32
+ private getUniversalFooter;
33
+ /**
34
+ * ๐ŸŽ๏ธ SHOW RAW FAF DATA IMMEDIATELY
35
+ * Championship Display Strategy: FORCE VISIBILITY!
36
+ */
37
+ private formatResult;
38
+ /**
39
+ * List championship tools with visibility filtering
40
+ * v2.8.0: Supports core (20) vs advanced (31) tool filtering
41
+ */
42
+ listTools(): Promise<{
43
+ tools: Tool[];
44
+ }>;
45
+ /**
46
+ * Execute tool with sub-50ms performance target
47
+ */
48
+ callTool(name: string, _args: any): Promise<CallToolResult>;
49
+ private handleAuto;
50
+ private handleInit;
51
+ private fileExists;
52
+ private handleDisplay;
53
+ private handleShow;
54
+ private handleScore;
55
+ private handleSync;
56
+ private handleBiSync;
57
+ private handleTrust;
58
+ private handleCredit;
59
+ private handleTodo;
60
+ private handleChat;
61
+ private handleQuick;
62
+ private handleShare;
63
+ private handleEnhance;
64
+ private handleAnalyze;
65
+ private handleVerify;
66
+ private handleIndex;
67
+ private handleSearch;
68
+ private handleStacks;
69
+ private handleFaq;
70
+ private handleGuide;
71
+ private handleStatus;
72
+ /**
73
+ * Get championship medal emoji and status based on score
74
+ * Matches CLI medal system exactly
75
+ */
76
+ private getScoreMedal;
77
+ /**
78
+ * Get tier progression info
79
+ * Shows current tier and next target
80
+ */
81
+ private getTierInfo;
82
+ private handleCheck;
83
+ private handleClear;
84
+ private handleEdit;
85
+ private handleList;
86
+ private handleExists;
87
+ private handleDelete;
88
+ private handleMove;
89
+ private handleCopy;
90
+ private handleMkdir;
91
+ private handleAbout;
92
+ private handleVersion;
93
+ private handleInnit;
94
+ private handleFormats;
95
+ private handleValidate;
96
+ private handleDoctor;
97
+ private handleDna;
98
+ private handleLog;
99
+ private handleUpdate;
100
+ private handleRecover;
101
+ private handleAuth;
102
+ private handleAudit;
103
+ private handleMigrate;
104
+ private handleRead;
105
+ private handleWrite;
106
+ private handleSkills;
107
+ private handleInstallSkill;
108
+ private handleChoose;
109
+ /**
110
+ * Calculate current AI-Readiness score quietly
111
+ */
112
+ private calculateScore;
113
+ }