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,554 @@
1
+ "use strict";
2
+ /**
3
+ * FAF DNA - The Lifecycle of AI Context
4
+ *
5
+ * Revolutionary Context Authentication & Versioning System
6
+ * Every .faf has:
7
+ * - Birth Certificate (Authentication)
8
+ * - Birth DNA (Initial score from CLAUDE.md)
9
+ * - Growth Record (Version history)
10
+ * - Life Events (Log of all changes)
11
+ * - Immortality (Disaster recovery through bi-sync)
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.FafDNAManager = void 0;
48
+ exports.displayScoreWithBirthDNA = displayScoreWithBirthDNA;
49
+ const fs_1 = require("fs");
50
+ const path = __importStar(require("path"));
51
+ const crypto = __importStar(require("crypto"));
52
+ const colors_1 = require("../fix-once/colors");
53
+ // ==================== DNA MANAGER ====================
54
+ class FafDNAManager {
55
+ dnaPath;
56
+ projectPath;
57
+ dna = null;
58
+ constructor(projectPath) {
59
+ this.projectPath = projectPath;
60
+ this.dnaPath = path.join(projectPath, '.faf-dna');
61
+ }
62
+ /**
63
+ * Initialize DNA (Birth)
64
+ */
65
+ async birth(birthDNA, fromClaudeMD = true) {
66
+ // Generate birth certificate
67
+ const birthCertificate = {
68
+ born: new Date(),
69
+ birthDNA,
70
+ birthDNASource: fromClaudeMD ? 'CLAUDE.md' : 'legacy',
71
+ projectDNA: await this.generateProjectDNA(),
72
+ authenticated: false,
73
+ certificate: this.generateCertificate()
74
+ };
75
+ // Create initial version
76
+ const initialVersion = {
77
+ version: 'v1.0.0',
78
+ timestamp: new Date(),
79
+ score: birthDNA,
80
+ changes: ['Initial context from CLAUDE.md'],
81
+ approved: false,
82
+ growth: 0,
83
+ growthRate: 0
84
+ };
85
+ // Initialize DNA structure
86
+ this.dna = {
87
+ birthCertificate,
88
+ versions: [initialVersion],
89
+ current: {
90
+ version: 'v1.0.0',
91
+ score: birthDNA,
92
+ approved: false,
93
+ lastSync: new Date()
94
+ },
95
+ recovery: {
96
+ claudeMD: path.join(this.projectPath, 'CLAUDE.md'),
97
+ lastBackup: new Date(),
98
+ syncStatus: 'active',
99
+ autoRecover: true
100
+ },
101
+ growth: {
102
+ totalGrowth: 0,
103
+ daysActive: 0,
104
+ averageDailyGrowth: 0,
105
+ bestDay: { date: new Date(), growth: 0 },
106
+ bestWeek: { start: new Date(), growth: 0 },
107
+ milestones: [
108
+ {
109
+ type: 'birth',
110
+ score: birthDNA,
111
+ date: new Date(),
112
+ version: 'v1.0.0',
113
+ label: 'Birth',
114
+ emoji: '🐣'
115
+ }
116
+ ]
117
+ },
118
+ lastModified: new Date(),
119
+ format: 'faf-dna-v1'
120
+ };
121
+ await this.save();
122
+ return this.dna;
123
+ }
124
+ /**
125
+ * Authenticate the DNA (Birth Certificate)
126
+ */
127
+ async authenticate() {
128
+ if (!this.dna)
129
+ throw new Error('DNA not initialized');
130
+ this.dna.birthCertificate.authenticated = true;
131
+ this.dna.birthCertificate.authDate = new Date();
132
+ await this.save();
133
+ return this.dna.birthCertificate.certificate;
134
+ }
135
+ /**
136
+ * Record growth (Auto Evolution)
137
+ */
138
+ async recordGrowth(newScore, changes) {
139
+ if (!this.dna)
140
+ throw new Error('DNA not initialized');
141
+ // Calculate growth metrics
142
+ const growth = newScore - this.dna.birthCertificate.birthDNA;
143
+ const daysSinceBirth = this.getDaysSince(this.dna.birthCertificate.born);
144
+ const growthRate = daysSinceBirth > 0 ? growth / daysSinceBirth : growth;
145
+ // Generate new version number
146
+ const lastVersion = this.dna.versions[this.dna.versions.length - 1];
147
+ const newVersion = this.incrementVersion(lastVersion.version, 'patch');
148
+ // Create version entry
149
+ const versionEntry = {
150
+ version: newVersion,
151
+ timestamp: new Date(),
152
+ score: newScore,
153
+ changes,
154
+ approved: false,
155
+ growth,
156
+ growthRate
157
+ };
158
+ // Add to versions
159
+ this.dna.versions.push(versionEntry);
160
+ // Update current state
161
+ this.dna.current = {
162
+ version: newVersion,
163
+ score: newScore,
164
+ approved: false,
165
+ lastApproved: this.dna.current.lastApproved,
166
+ lastSync: new Date()
167
+ };
168
+ // Update milestones
169
+ this.updateMilestones(newScore, newVersion);
170
+ // Update analytics
171
+ this.updateAnalytics(newScore);
172
+ await this.save();
173
+ return versionEntry;
174
+ }
175
+ /**
176
+ * Approve current version (User satisfaction)
177
+ */
178
+ async approve() {
179
+ if (!this.dna)
180
+ throw new Error('DNA not initialized');
181
+ const currentVersion = this.dna.versions.find(v => v.version === this.dna.current.version);
182
+ if (currentVersion) {
183
+ currentVersion.approved = true;
184
+ // Increment minor version for approval
185
+ const newVersion = this.incrementVersion(this.dna.current.version, 'minor');
186
+ // Create approval version
187
+ const approvalEntry = {
188
+ version: newVersion,
189
+ timestamp: new Date(),
190
+ score: this.dna.current.score,
191
+ changes: ['User approved'],
192
+ approved: true,
193
+ growth: this.dna.current.score - this.dna.birthCertificate.birthDNA,
194
+ growthRate: this.calculateGrowthRate()
195
+ };
196
+ this.dna.versions.push(approvalEntry);
197
+ this.dna.current.version = newVersion;
198
+ this.dna.current.approved = true;
199
+ this.dna.current.lastApproved = newVersion;
200
+ // Mark as first save if it's the first approval
201
+ if (!this.dna.growth.milestones.find(m => m.type === 'first_save')) {
202
+ this.dna.growth.milestones.push({
203
+ type: 'first_save',
204
+ score: this.dna.current.score,
205
+ date: new Date(),
206
+ version: newVersion,
207
+ label: 'First Save',
208
+ emoji: '💾'
209
+ });
210
+ }
211
+ }
212
+ await this.save();
213
+ }
214
+ /**
215
+ * Get journey display (for UI)
216
+ */
217
+ getJourney(format = 'compact') {
218
+ if (!this.dna)
219
+ return format === 'compact' ? '' : [];
220
+ const milestones = this.dna.growth.milestones;
221
+ if (format === 'compact') {
222
+ // Build compact journey: 22% → 85% → 99% ← 92%
223
+ const birth = milestones.find(m => m.type === 'birth');
224
+ const firstSave = milestones.find(m => m.type === 'first_save');
225
+ const peak = milestones.find(m => m.type === 'peak');
226
+ const current = this.dna.current.score;
227
+ let journey = `${birth?.score || 0}%`;
228
+ if (firstSave && firstSave.score !== birth?.score) {
229
+ journey += ` → ${firstSave.score}%`;
230
+ }
231
+ if (peak) {
232
+ journey += ` → ${peak.score}%`;
233
+ // Add back arrow if current is less than peak
234
+ if (current < peak.score) {
235
+ journey += ` ← ${current}%`;
236
+ }
237
+ }
238
+ else if (current !== (firstSave?.score || birth?.score)) {
239
+ journey += ` → ${current}%`;
240
+ }
241
+ return journey;
242
+ }
243
+ return milestones;
244
+ }
245
+ /**
246
+ * Get Birth DNA display (always show origin)
247
+ */
248
+ getBirthDNADisplay() {
249
+ if (!this.dna) {
250
+ return { current: 0, birthDNA: 0, growth: 0, birthDate: new Date() };
251
+ }
252
+ return {
253
+ current: this.dna.current.score,
254
+ birthDNA: this.dna.birthCertificate.birthDNA,
255
+ growth: this.dna.current.score - this.dna.birthCertificate.birthDNA,
256
+ birthDate: this.dna.birthCertificate.born
257
+ };
258
+ }
259
+ /**
260
+ * Get version log (Complete history)
261
+ */
262
+ getLog() {
263
+ if (!this.dna)
264
+ return [];
265
+ return this.dna.versions.map(v => {
266
+ const growth = v.growth || 0;
267
+ const emoji = v.approved ? '✅' : growth > 50 ? '🚀' : growth > 20 ? '📈' : '📊';
268
+ return `${v.version} - ${v.score}% ${emoji} (${this.formatDate(v.timestamp)}) ${v.changes.join(', ')}`;
269
+ });
270
+ }
271
+ /**
272
+ * Load existing DNA
273
+ */
274
+ async load() {
275
+ try {
276
+ const content = await fs_1.promises.readFile(this.dnaPath, 'utf-8');
277
+ this.dna = JSON.parse(content);
278
+ // Convert date strings back to Date objects
279
+ if (this.dna) {
280
+ this.dna.birthCertificate.born = new Date(this.dna.birthCertificate.born);
281
+ if (this.dna.birthCertificate.authDate) {
282
+ this.dna.birthCertificate.authDate = new Date(this.dna.birthCertificate.authDate);
283
+ }
284
+ this.dna.versions = this.dna.versions.map(v => ({
285
+ ...v,
286
+ timestamp: new Date(v.timestamp)
287
+ }));
288
+ this.dna.current.lastSync = new Date(this.dna.current.lastSync);
289
+ this.dna.recovery.lastBackup = new Date(this.dna.recovery.lastBackup);
290
+ this.dna.growth.bestDay.date = new Date(this.dna.growth.bestDay.date);
291
+ this.dna.growth.bestWeek.start = new Date(this.dna.growth.bestWeek.start);
292
+ this.dna.growth.milestones = this.dna.growth.milestones.map(m => ({
293
+ ...m,
294
+ date: new Date(m.date)
295
+ }));
296
+ this.dna.lastModified = new Date(this.dna.lastModified);
297
+ }
298
+ return this.dna;
299
+ }
300
+ catch (err) {
301
+ return null;
302
+ }
303
+ }
304
+ /**
305
+ * Save DNA to disk
306
+ */
307
+ async save() {
308
+ if (!this.dna)
309
+ return;
310
+ this.dna.lastModified = new Date();
311
+ await fs_1.promises.writeFile(this.dnaPath, JSON.stringify(this.dna, null, 2), 'utf-8');
312
+ }
313
+ /**
314
+ * Generate unique project DNA hash
315
+ */
316
+ async generateProjectDNA() {
317
+ const projectInfo = [
318
+ this.projectPath,
319
+ Date.now().toString(),
320
+ Math.random().toString(36)
321
+ ].join(':');
322
+ return crypto
323
+ .createHash('sha256')
324
+ .update(projectInfo)
325
+ .digest('hex')
326
+ .substring(0, 16);
327
+ }
328
+ /**
329
+ * Generate certificate number
330
+ */
331
+ generateCertificate() {
332
+ const year = new Date().getFullYear();
333
+ const random = Math.random().toString(36).substring(2, 6).toUpperCase();
334
+ const projectName = path.basename(this.projectPath)
335
+ .replace(/[^A-Z0-9]/gi, '') // Remove special characters
336
+ .toUpperCase()
337
+ .substring(0, 8)
338
+ .padEnd(4, 'X'); // Ensure minimum length
339
+ return `FAF-${year}-${projectName}-${random}`;
340
+ }
341
+ /**
342
+ * Increment version number
343
+ */
344
+ incrementVersion(version, type) {
345
+ const parts = version.replace('v', '').split('.').map(Number);
346
+ switch (type) {
347
+ case 'major':
348
+ return `v${parts[0] + 1}.0.0`;
349
+ case 'minor':
350
+ return `v${parts[0]}.${parts[1] + 1}.0`;
351
+ case 'patch':
352
+ return `v${parts[0]}.${parts[1]}.${parts[2] + 1}`;
353
+ }
354
+ }
355
+ /**
356
+ * Update milestones based on score
357
+ */
358
+ updateMilestones(score, version) {
359
+ if (!this.dna)
360
+ return;
361
+ const milestones = this.dna.growth.milestones;
362
+ const birthDNA = this.dna.birthCertificate.birthDNA;
363
+ // Check for doubled score
364
+ if (score >= birthDNA * 2 && !milestones.find(m => m.type === 'doubled')) {
365
+ milestones.push({
366
+ type: 'doubled',
367
+ score,
368
+ date: new Date(),
369
+ version,
370
+ label: 'Doubled',
371
+ emoji: '2️⃣'
372
+ });
373
+ }
374
+ // Check for championship (70%)
375
+ if (score >= 70 && !milestones.find(m => m.type === 'championship')) {
376
+ milestones.push({
377
+ type: 'championship',
378
+ score,
379
+ date: new Date(),
380
+ version,
381
+ label: 'Championship',
382
+ emoji: '🏆'
383
+ });
384
+ }
385
+ // Check for elite (85%)
386
+ if (score >= 85 && !milestones.find(m => m.type === 'elite')) {
387
+ milestones.push({
388
+ type: 'elite',
389
+ score,
390
+ date: new Date(),
391
+ version,
392
+ label: 'Elite',
393
+ emoji: '⭐'
394
+ });
395
+ }
396
+ // Check for perfect (100%)
397
+ if (score >= 100 && !milestones.find(m => m.type === 'perfect')) {
398
+ milestones.push({
399
+ type: 'perfect',
400
+ score,
401
+ date: new Date(),
402
+ version,
403
+ label: 'Perfect',
404
+ emoji: '💎'
405
+ });
406
+ }
407
+ // Update peak if necessary
408
+ const peakMilestone = milestones.find(m => m.type === 'peak');
409
+ if (!peakMilestone || score > peakMilestone.score) {
410
+ // Remove old peak
411
+ if (peakMilestone) {
412
+ const index = milestones.indexOf(peakMilestone);
413
+ milestones.splice(index, 1);
414
+ }
415
+ // Add new peak
416
+ milestones.push({
417
+ type: 'peak',
418
+ score,
419
+ date: new Date(),
420
+ version,
421
+ label: 'Peak',
422
+ emoji: '🏔️'
423
+ });
424
+ }
425
+ // Always update current
426
+ const currentIndex = milestones.findIndex(m => m.type === 'current');
427
+ if (currentIndex >= 0) {
428
+ milestones.splice(currentIndex, 1);
429
+ }
430
+ milestones.push({
431
+ type: 'current',
432
+ score,
433
+ date: new Date(),
434
+ version,
435
+ label: 'Current',
436
+ emoji: '📍'
437
+ });
438
+ }
439
+ /**
440
+ * Update growth analytics
441
+ */
442
+ updateAnalytics(score) {
443
+ if (!this.dna)
444
+ return;
445
+ const growth = score - this.dna.birthCertificate.birthDNA;
446
+ const daysSinceBirth = this.getDaysSince(this.dna.birthCertificate.born);
447
+ this.dna.growth.totalGrowth = growth;
448
+ this.dna.growth.daysActive = daysSinceBirth;
449
+ this.dna.growth.averageDailyGrowth = daysSinceBirth > 0 ? growth / daysSinceBirth : growth;
450
+ // Check for best day
451
+ const todayGrowth = score - (this.dna.versions[this.dna.versions.length - 2]?.score || this.dna.birthCertificate.birthDNA);
452
+ if (todayGrowth > this.dna.growth.bestDay.growth) {
453
+ this.dna.growth.bestDay = {
454
+ date: new Date(),
455
+ growth: todayGrowth
456
+ };
457
+ }
458
+ // TODO: Calculate best week
459
+ }
460
+ /**
461
+ * Calculate days since date
462
+ */
463
+ getDaysSince(date) {
464
+ const diff = Date.now() - date.getTime();
465
+ return Math.floor(diff / (1000 * 60 * 60 * 24));
466
+ }
467
+ /**
468
+ * Calculate growth rate
469
+ */
470
+ calculateGrowthRate() {
471
+ if (!this.dna)
472
+ return 0;
473
+ const growth = this.dna.current.score - this.dna.birthCertificate.birthDNA;
474
+ const days = this.getDaysSince(this.dna.birthCertificate.born);
475
+ return days > 0 ? growth / days : growth;
476
+ }
477
+ /**
478
+ * Format date for display
479
+ */
480
+ formatDate(date) {
481
+ return date.toISOString().split('T')[0];
482
+ }
483
+ }
484
+ exports.FafDNAManager = FafDNAManager;
485
+ /**
486
+ * Display helper for Birth DNA in all score outputs
487
+ */
488
+ function displayScoreWithBirthDNA(current, birthDNA, birthDate, options = {}) {
489
+ // Import championship medal system
490
+ const { getScoreMedal, getTierInfo } = require('../utils/championship-core');
491
+ // Get medal for current score
492
+ const { medal, status } = getScoreMedal(current);
493
+ const tierInfo = getTierInfo(current);
494
+ const growth = current - birthDNA;
495
+ // OPTIMIZED FIRST TWO LINES - Match MCP's championship scorecard format
496
+ // Line 1: Score with medal (STRONG WHITE BOLD - default)
497
+ console.log(colors_1.colors.bold(`${medal} Score: ${current}/100`));
498
+ // Line 2: Progress bar (STRONG WHITE - default)
499
+ const barWidth = 24;
500
+ const filled = Math.floor((current / 100) * barWidth);
501
+ const empty = barWidth - filled;
502
+ const progressBar = '█'.repeat(filled) + '░'.repeat(empty);
503
+ console.log(colors_1.colors.bold(`${progressBar} ${current}%`));
504
+ // Line 3: Status (STRONG WHITE - default)
505
+ console.log(colors_1.colors.bold(`Status: ${status}`));
506
+ // Line 4: Next milestone (STRONG WHITE - default)
507
+ if (tierInfo.next && tierInfo.nextTarget && tierInfo.nextMedal) {
508
+ const pointsToGo = tierInfo.nextTarget - current;
509
+ console.log('');
510
+ console.log(colors_1.colors.bold(`Next milestone: ${tierInfo.nextTarget}% ${tierInfo.nextMedal} ${tierInfo.next} (${pointsToGo} points to go!)`));
511
+ }
512
+ // Detailed breakdown (collapsed in Claude Code, visible in terminal)
513
+ console.log('');
514
+ console.log(colors_1.colors.bold('🏎️ FAF Championship Status'));
515
+ console.log('━'.repeat(40));
516
+ console.log(`Birth DNA: ${birthDNA}% (born ${birthDate.toISOString().split('T')[0]})`);
517
+ const timeMs = Date.now() - new Date(birthDate).getTime();
518
+ const daysOld = Math.floor(timeMs / (1000 * 60 * 60 * 24));
519
+ const hoursOld = Math.floor(timeMs / (1000 * 60 * 60));
520
+ let timeDisplay = '';
521
+ if (daysOld > 0) {
522
+ timeDisplay = `${daysOld} day${daysOld === 1 ? '' : 's'}`;
523
+ }
524
+ else if (hoursOld > 0) {
525
+ timeDisplay = `${hoursOld} hour${hoursOld === 1 ? '' : 's'}`;
526
+ }
527
+ else {
528
+ const minutesOld = Math.floor(timeMs / (1000 * 60));
529
+ timeDisplay = `${minutesOld} minute${minutesOld === 1 ? '' : 's'}`;
530
+ }
531
+ console.log(`Growth: +${growth}% over ${timeDisplay}`);
532
+ if (tierInfo.next && tierInfo.nextTarget && tierInfo.nextMedal) {
533
+ const pointsToGo = tierInfo.nextTarget - current;
534
+ console.log(colors_1.colors.bold(`Next Milestone: ${tierInfo.nextTarget}% ${tierInfo.nextMedal} ${tierInfo.next} (${pointsToGo}% to go!)`));
535
+ }
536
+ console.log('');
537
+ }
538
+ /**
539
+ * Get emoji for score
540
+ */
541
+ function getScoreEmoji(score) {
542
+ if (score >= 100)
543
+ return '💎';
544
+ if (score >= 90)
545
+ return '🏆';
546
+ if (score >= 85)
547
+ return '⭐';
548
+ if (score >= 70)
549
+ return '🎯';
550
+ if (score >= 50)
551
+ return '📈';
552
+ return '🌱';
553
+ }
554
+ //# sourceMappingURL=faf-dna.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"faf-dna.js","sourceRoot":"","sources":["../../../../src/faf-core/engines/faf-dna.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * 🏎️ RelentlessContextExtractor - F1-Inspired Context Hunting System
3
+ * NEVER gives up on finding context. Fights for every bit of information.
4
+ * Three-tier confidence system: CERTAIN | PROBABLE | INFERRED
5
+ *
6
+ * This is the AERO PACKAGE - Makes the Power Unit sing!
7
+ */
8
+ export type ConfidenceLevel = 'CERTAIN' | 'PROBABLE' | 'INFERRED' | 'DEFAULT' | 'MISSING';
9
+ export type Priority = 'CRITICAL' | 'IMPORTANT' | 'Key' | 'Important' | 'CRUCIAL';
10
+ export interface ExtractedContext {
11
+ value: string;
12
+ confidence: ConfidenceLevel;
13
+ source?: string;
14
+ needsUserInput: boolean;
15
+ }
16
+ export interface ContextTodo {
17
+ field: string;
18
+ priority: Priority;
19
+ currentValue: string;
20
+ confidence: ConfidenceLevel;
21
+ prompt: string;
22
+ examples: string[];
23
+ scoreboost: number;
24
+ }
25
+ export interface HumanContext {
26
+ who: ExtractedContext;
27
+ what: ExtractedContext;
28
+ why: ExtractedContext;
29
+ where: ExtractedContext;
30
+ when: ExtractedContext;
31
+ how: ExtractedContext;
32
+ todos: ContextTodo[];
33
+ }
34
+ export declare class RelentlessContextExtractor {
35
+ private techStack;
36
+ private fileContent;
37
+ private packageJson;
38
+ private readmeContent;
39
+ private projectPath;
40
+ /**
41
+ * 🏁 Main extraction entry point - RELENTLESS pursuit of context!
42
+ */
43
+ extractFromProject(projectPath: string): Promise<HumanContext>;
44
+ /**
45
+ * Load all project files for context extraction
46
+ */
47
+ private loadProjectFiles;
48
+ /**
49
+ * 🎯 RELENTLESS WHO EXTRACTION - Fight for user context!
50
+ */
51
+ private extractWHO;
52
+ /**
53
+ * 🎯 RELENTLESS WHAT EXTRACTION - Core problem/purpose
54
+ */
55
+ private extractWHAT;
56
+ /**
57
+ * 🎯 RELENTLESS WHY EXTRACTION - Mission/purpose
58
+ */
59
+ private extractWHY;
60
+ /**
61
+ * 🎯 RELENTLESS WHERE EXTRACTION - Deployment/market
62
+ */
63
+ private extractWHERE;
64
+ /**
65
+ * 🎯 RELENTLESS WHEN EXTRACTION - Timeline/schedule
66
+ */
67
+ private extractWHEN;
68
+ /**
69
+ * 🎯 RELENTLESS HOW EXTRACTION - Approach/methodology
70
+ */
71
+ private extractHOW;
72
+ /**
73
+ * Generate TODOs for missing or low-confidence context
74
+ */
75
+ private generateContextTodos;
76
+ /**
77
+ * Helper: Infer audience from tech stack
78
+ */
79
+ private inferAudienceFromTech;
80
+ /**
81
+ * Helper: Infer purpose from project name
82
+ */
83
+ private inferPurposeFromName;
84
+ /**
85
+ * Helper: Infer approach from tech stack
86
+ */
87
+ private inferApproachFromTech;
88
+ /**
89
+ * Helper: Clean extracted text
90
+ */
91
+ private cleanExtractedText;
92
+ /**
93
+ * Helper: Create context object
94
+ */
95
+ private createContext;
96
+ }
97
+ /**
98
+ * Export singleton instance
99
+ */
100
+ export declare const relentlessExtractor: RelentlessContextExtractor;