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,625 @@
1
+ "use strict";
2
+ /**
3
+ * 🏎️ RelentlessContextExtractor - F1-Inspired Context Hunting System
4
+ * NEVER gives up on finding context. Fights for every bit of information.
5
+ * Three-tier confidence system: CERTAIN | PROBABLE | INFERRED
6
+ *
7
+ * This is the AERO PACKAGE - Makes the Power Unit sing!
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.relentlessExtractor = exports.RelentlessContextExtractor = void 0;
44
+ const fs_1 = require("fs");
45
+ const path = __importStar(require("path"));
46
+ class RelentlessContextExtractor {
47
+ techStack = new Set();
48
+ fileContent = '';
49
+ packageJson = null;
50
+ readmeContent = '';
51
+ projectPath = '';
52
+ /**
53
+ * 🏁 Main extraction entry point - RELENTLESS pursuit of context!
54
+ */
55
+ async extractFromProject(projectPath) {
56
+ this.projectPath = projectPath;
57
+ // Load all available sources
58
+ await this.loadProjectFiles(projectPath);
59
+ // Extract with RELENTLESS determination
60
+ const who = this.extractWHO();
61
+ const what = this.extractWHAT();
62
+ const why = this.extractWHY();
63
+ const where = this.extractWHERE();
64
+ const when = this.extractWHEN();
65
+ const how = this.extractHOW();
66
+ // Generate TODOs for missing context
67
+ const todos = this.generateContextTodos({
68
+ who, what, why, where, when, how
69
+ });
70
+ return {
71
+ who, what, why, where, when, how, todos
72
+ };
73
+ }
74
+ /**
75
+ * Load all project files for context extraction
76
+ */
77
+ async loadProjectFiles(projectPath) {
78
+ // Load README if exists
79
+ const readmePath = path.join(projectPath, 'README.md');
80
+ try {
81
+ this.readmeContent = await fs_1.promises.readFile(readmePath, 'utf-8');
82
+ this.fileContent += this.readmeContent + '\n';
83
+ }
84
+ catch {
85
+ // No README
86
+ }
87
+ // Load package.json if exists
88
+ const packagePath = path.join(projectPath, 'package.json');
89
+ try {
90
+ const pkgContent = await fs_1.promises.readFile(packagePath, 'utf-8');
91
+ this.packageJson = JSON.parse(pkgContent);
92
+ this.fileContent += pkgContent + '\n';
93
+ // Extract tech stack from dependencies
94
+ if (this.packageJson.dependencies) {
95
+ Object.keys(this.packageJson.dependencies).forEach(dep => {
96
+ this.techStack.add(dep);
97
+ });
98
+ }
99
+ if (this.packageJson.devDependencies) {
100
+ Object.keys(this.packageJson.devDependencies).forEach(dep => {
101
+ this.techStack.add(dep);
102
+ });
103
+ }
104
+ }
105
+ catch {
106
+ // No package.json
107
+ }
108
+ // Load requirements.txt for Python projects
109
+ const requirementsPath = path.join(projectPath, 'requirements.txt');
110
+ try {
111
+ const reqContent = await fs_1.promises.readFile(requirementsPath, 'utf-8');
112
+ this.fileContent += reqContent + '\n';
113
+ // Extract Python packages
114
+ reqContent.split('\n').forEach(line => {
115
+ const pkg = line.split('==')[0].split('>=')[0].split('~=')[0].trim();
116
+ if (pkg && !pkg.startsWith('#')) {
117
+ this.techStack.add(pkg);
118
+ }
119
+ });
120
+ }
121
+ catch {
122
+ // No requirements.txt
123
+ }
124
+ }
125
+ /**
126
+ * 🎯 RELENTLESS WHO EXTRACTION - Fight for user context!
127
+ */
128
+ extractWHO() {
129
+ // TIER 1: CERTAIN - High confidence patterns
130
+ const certainPatterns = [
131
+ /for\s+([\w\s]+(?:developers?|engineers?|teams?|companies?|organizations?))/gi,
132
+ /built\s+(?:specifically\s+)?for\s+([^.,\n]+)/gi,
133
+ /designed\s+for\s+([^.,\n]+)/gi,
134
+ /perfect\s+for\s+([^.,\n]+)/gi,
135
+ /target(?:ing|ed|s)?\s+(?:at|to|for)?\s*([^.,\n]+)/gi,
136
+ /helps?\s+([^.,\n]+(?:developers?|engineers?|teams?))/gi,
137
+ /enables?\s+([^.,\n]+)\s+to/gi,
138
+ /empowers?\s+([^.,\n]+)/gi
139
+ ];
140
+ for (const pattern of certainPatterns) {
141
+ const matches = this.fileContent.matchAll(pattern);
142
+ for (const match of matches) {
143
+ if (match[1] && match[1].length > 5) {
144
+ return {
145
+ value: this.cleanExtractedText(match[1]),
146
+ confidence: 'CERTAIN',
147
+ source: 'Direct statement',
148
+ needsUserInput: false
149
+ };
150
+ }
151
+ }
152
+ }
153
+ // TIER 2: PROBABLE - Medium confidence
154
+ const probablePatterns = [
155
+ /\b(beginners?|professionals?|students?|enterprises?|startups?|agencies?)\b/gi,
156
+ /\b(frontend|backend|fullstack|full-stack|mobile|web|desktop)\s+developers?\b/gi,
157
+ /\b(data\s+scientists?|designers?|marketers?|managers?|devops|analysts?)\b/gi,
158
+ /"As\s+an?\s+([^"]+)"/gi,
159
+ /users?\s+can\s+([^.,]+)/gi,
160
+ /ideal\s+for\s+([^.,\n]+)/gi
161
+ ];
162
+ for (const pattern of probablePatterns) {
163
+ const matches = this.fileContent.matchAll(pattern);
164
+ for (const match of matches) {
165
+ if (match[1] || match[0]) {
166
+ const extracted = match[1] || match[0];
167
+ return {
168
+ value: this.cleanExtractedText(extracted),
169
+ confidence: 'PROBABLE',
170
+ source: 'Context clues',
171
+ needsUserInput: true
172
+ };
173
+ }
174
+ }
175
+ }
176
+ // TIER 3: INFERRED - From tech stack
177
+ const inference = this.inferAudienceFromTech();
178
+ if (inference) {
179
+ return {
180
+ value: inference,
181
+ confidence: 'INFERRED',
182
+ source: 'Tech stack analysis',
183
+ needsUserInput: true
184
+ };
185
+ }
186
+ // DEFAULT - We NEVER give up!
187
+ return {
188
+ value: 'Development teams',
189
+ confidence: 'DEFAULT',
190
+ source: 'Standard assumption',
191
+ needsUserInput: true
192
+ };
193
+ }
194
+ /**
195
+ * 🎯 RELENTLESS WHAT EXTRACTION - Core problem/purpose
196
+ */
197
+ extractWHAT() {
198
+ // TIER 1: CERTAIN - Direct problem statements
199
+ const certainPatterns = [
200
+ /solves?\s+(?:the\s+)?(?:problem\s+of\s+)?([^.,\n]+)/gi,
201
+ /addresses?\s+(?:the\s+)?(?:issue\s+of\s+)?([^.,\n]+)/gi,
202
+ /fixes?\s+([^.,\n]+)/gi,
203
+ /eliminates?\s+([^.,\n]+)/gi,
204
+ /prevents?\s+([^.,\n]+)/gi,
205
+ /(?:core|main|primary)\s+(?:problem|issue|challenge)(?:\s+is)?\s*:?\s*([^.,\n]+)/gi,
206
+ /pain\s+points?\s*:?\s*([^.,\n]+)/gi
207
+ ];
208
+ for (const pattern of certainPatterns) {
209
+ const matches = this.fileContent.matchAll(pattern);
210
+ for (const match of matches) {
211
+ if (match[1] && match[1].length > 10) {
212
+ return {
213
+ value: this.cleanExtractedText(match[1]),
214
+ confidence: 'CERTAIN',
215
+ source: 'Problem statement',
216
+ needsUserInput: false
217
+ };
218
+ }
219
+ }
220
+ }
221
+ // TIER 2: PROBABLE - Feature descriptions
222
+ const description = this.packageJson?.description || '';
223
+ if (description.length > 20) {
224
+ return {
225
+ value: description,
226
+ confidence: 'PROBABLE',
227
+ source: 'Package description',
228
+ needsUserInput: true
229
+ };
230
+ }
231
+ // Extract from README first paragraph
232
+ const firstPara = this.readmeContent.match(/^#\s+.+\n+(.+?)(?:\n\n|\n#|$)/ms);
233
+ if (firstPara && firstPara[1]) {
234
+ return {
235
+ value: this.cleanExtractedText(firstPara[1]),
236
+ confidence: 'PROBABLE',
237
+ source: 'README introduction',
238
+ needsUserInput: true
239
+ };
240
+ }
241
+ // TIER 3: INFERRED - From project name
242
+ if (this.packageJson?.name) {
243
+ const inferredPurpose = this.inferPurposeFromName(this.packageJson.name);
244
+ return {
245
+ value: inferredPurpose,
246
+ confidence: 'INFERRED',
247
+ source: 'Project name',
248
+ needsUserInput: true
249
+ };
250
+ }
251
+ return {
252
+ value: 'Software development solution',
253
+ confidence: 'DEFAULT',
254
+ source: 'Standard assumption',
255
+ needsUserInput: true
256
+ };
257
+ }
258
+ /**
259
+ * 🎯 RELENTLESS WHY EXTRACTION - Mission/purpose
260
+ */
261
+ extractWHY() {
262
+ // TIER 1: CERTAIN - Mission statements
263
+ const certainPatterns = [
264
+ /(?:our\s+)?mission(?:\s+is)?\s*:?\s*([^.,\n]+)/gi,
265
+ /(?:our\s+)?purpose(?:\s+is)?\s*:?\s*([^.,\n]+)/gi,
266
+ /(?:our\s+)?goal(?:\s+is)?\s*:?\s*([^.,\n]+)/gi,
267
+ /(?:we\s+)?aim(?:\s+to)?\s+([^.,\n]+)/gi,
268
+ /(?:we\s+)?strive(?:\s+to)?\s+([^.,\n]+)/gi,
269
+ /because\s+([^.,\n]+)/gi,
270
+ /so\s+that\s+([^.,\n]+)/gi
271
+ ];
272
+ for (const pattern of certainPatterns) {
273
+ const matches = this.fileContent.matchAll(pattern);
274
+ for (const match of matches) {
275
+ if (match[1] && match[1].length > 15) {
276
+ return {
277
+ value: this.cleanExtractedText(match[1]),
278
+ confidence: 'CERTAIN',
279
+ source: 'Mission statement',
280
+ needsUserInput: false
281
+ };
282
+ }
283
+ }
284
+ }
285
+ // TIER 2: PROBABLE - Benefits/outcomes
286
+ const benefitPatterns = [
287
+ /enables?\s+(?:you\s+to\s+)?([^.,\n]+)/gi,
288
+ /allows?\s+(?:you\s+to\s+)?([^.,\n]+)/gi,
289
+ /helps?\s+(?:you\s+)?([^.,\n]+)/gi,
290
+ /makes?\s+(?:it\s+)?([^.,\n]+)/gi
291
+ ];
292
+ for (const pattern of benefitPatterns) {
293
+ const matches = this.fileContent.matchAll(pattern);
294
+ for (const match of matches) {
295
+ if (match[1] && match[1].length > 15) {
296
+ return {
297
+ value: 'To ' + this.cleanExtractedText(match[1]),
298
+ confidence: 'PROBABLE',
299
+ source: 'Benefit statement',
300
+ needsUserInput: true
301
+ };
302
+ }
303
+ }
304
+ }
305
+ // TIER 3: INFERRED - From what
306
+ return {
307
+ value: 'Improve development efficiency',
308
+ confidence: 'INFERRED',
309
+ source: 'Standard goal',
310
+ needsUserInput: true
311
+ };
312
+ }
313
+ /**
314
+ * 🎯 RELENTLESS WHERE EXTRACTION - Deployment/market
315
+ */
316
+ extractWHERE() {
317
+ // Check package.json homepage
318
+ if (this.packageJson?.homepage) {
319
+ const url = this.packageJson.homepage;
320
+ if (url.includes('vercel'))
321
+ return this.createContext('Vercel platform', 'CERTAIN');
322
+ if (url.includes('netlify'))
323
+ return this.createContext('Netlify platform', 'CERTAIN');
324
+ if (url.includes('github.io'))
325
+ return this.createContext('GitHub Pages', 'CERTAIN');
326
+ if (url.includes('heroku'))
327
+ return this.createContext('Heroku platform', 'CERTAIN');
328
+ return {
329
+ value: 'Web platform',
330
+ confidence: 'PROBABLE',
331
+ source: 'Homepage URL',
332
+ needsUserInput: true
333
+ };
334
+ }
335
+ // Check for cloud indicators
336
+ if (this.techStack.has('aws-sdk'))
337
+ return this.createContext('AWS Cloud', 'CERTAIN');
338
+ if (this.techStack.has('@google-cloud/storage'))
339
+ return this.createContext('Google Cloud', 'CERTAIN');
340
+ if (this.techStack.has('@azure/storage-blob'))
341
+ return this.createContext('Azure Cloud', 'CERTAIN');
342
+ // Check for deployment configs
343
+ const deploymentPatterns = [
344
+ /deploy(?:ed|ing|ment)?\s+(?:to|on|at)\s+([^.,\n]+)/gi,
345
+ /hosted?\s+(?:on|at)\s+([^.,\n]+)/gi,
346
+ /runs?\s+(?:on|in)\s+([^.,\n]+)/gi
347
+ ];
348
+ for (const pattern of deploymentPatterns) {
349
+ const match = this.fileContent.match(pattern);
350
+ if (match && match[1]) {
351
+ return {
352
+ value: this.cleanExtractedText(match[1]),
353
+ confidence: 'PROBABLE',
354
+ source: 'Deployment mention',
355
+ needsUserInput: true
356
+ };
357
+ }
358
+ }
359
+ return {
360
+ value: 'Cloud platform',
361
+ confidence: 'DEFAULT',
362
+ source: 'Standard deployment',
363
+ needsUserInput: true
364
+ };
365
+ }
366
+ /**
367
+ * 🎯 RELENTLESS WHEN EXTRACTION - Timeline/schedule
368
+ */
369
+ extractWHEN() {
370
+ // Look for timeline indicators
371
+ const timelinePatterns = [
372
+ /(?:timeline|schedule|deadline|launch|release)(?:\s+is)?\s*:?\s*([^.,\n]+)/gi,
373
+ /(?:launching|releasing|deploying|shipping)\s+(?:in|on|by)\s+([^.,\n]+)/gi,
374
+ /(?:expected|planned|scheduled)\s+(?:for|by|on)\s+([^.,\n]+)/gi,
375
+ /(?:MVP|beta|alpha|v1)\s+(?:by|in|on)\s+([^.,\n]+)/gi
376
+ ];
377
+ for (const pattern of timelinePatterns) {
378
+ const match = this.fileContent.match(pattern);
379
+ if (match && match[1]) {
380
+ return {
381
+ value: this.cleanExtractedText(match[1]),
382
+ confidence: 'PROBABLE',
383
+ source: 'Timeline mention',
384
+ needsUserInput: true
385
+ };
386
+ }
387
+ }
388
+ // Check version for stage inference
389
+ const version = this.packageJson?.version;
390
+ if (version) {
391
+ if (version.startsWith('0.')) {
392
+ return this.createContext('Pre-release/Beta phase', 'INFERRED', true);
393
+ }
394
+ else if (version.startsWith('1.')) {
395
+ return this.createContext('Production/Stable', 'INFERRED', true);
396
+ }
397
+ }
398
+ return {
399
+ value: 'Ongoing development',
400
+ confidence: 'DEFAULT',
401
+ source: 'Standard timeline',
402
+ needsUserInput: true
403
+ };
404
+ }
405
+ /**
406
+ * 🎯 RELENTLESS HOW EXTRACTION - Approach/methodology
407
+ */
408
+ extractHOW() {
409
+ // Look for methodology patterns
410
+ const methodPatterns = [
411
+ /(?:built|created|developed)\s+(?:using|with)\s+([^.,\n]+)/gi,
412
+ /(?:powered|driven)\s+by\s+([^.,\n]+)/gi,
413
+ /(?:based|built)\s+on\s+([^.,\n]+)/gi,
414
+ /(?:uses?|utilizes?|leverages?)\s+([^.,\n]+)/gi,
415
+ /approach(?:\s+is)?\s*:?\s*([^.,\n]+)/gi,
416
+ /methodology(?:\s+is)?\s*:?\s*([^.,\n]+)/gi
417
+ ];
418
+ for (const pattern of methodPatterns) {
419
+ const match = this.fileContent.match(pattern);
420
+ if (match && match[1]) {
421
+ return {
422
+ value: this.cleanExtractedText(match[1]),
423
+ confidence: 'PROBABLE',
424
+ source: 'Approach description',
425
+ needsUserInput: true
426
+ };
427
+ }
428
+ }
429
+ // Infer from tech stack
430
+ const approach = this.inferApproachFromTech();
431
+ if (approach) {
432
+ return {
433
+ value: approach,
434
+ confidence: 'INFERRED',
435
+ source: 'Tech stack analysis',
436
+ needsUserInput: true
437
+ };
438
+ }
439
+ return {
440
+ value: 'Modern development practices',
441
+ confidence: 'DEFAULT',
442
+ source: 'Standard approach',
443
+ needsUserInput: true
444
+ };
445
+ }
446
+ /**
447
+ * Generate TODOs for missing or low-confidence context
448
+ */
449
+ generateContextTodos(context) {
450
+ const todos = [];
451
+ // WHO TODO
452
+ if (context.who.confidence !== 'CERTAIN') {
453
+ todos.push({
454
+ field: 'WHO',
455
+ priority: 'CRITICAL',
456
+ currentValue: context.who.value,
457
+ confidence: context.who.confidence,
458
+ prompt: 'Who is your target user or audience?',
459
+ examples: [
460
+ 'Full-stack developers',
461
+ 'Enterprise development teams',
462
+ 'Open source contributors',
463
+ 'Data scientists and analysts'
464
+ ],
465
+ scoreboost: 5
466
+ });
467
+ }
468
+ // WHAT TODO
469
+ if (context.what.confidence !== 'CERTAIN') {
470
+ todos.push({
471
+ field: 'WHAT',
472
+ priority: 'CRITICAL',
473
+ currentValue: context.what.value,
474
+ confidence: context.what.confidence,
475
+ prompt: 'What problem does this solve?',
476
+ examples: [
477
+ 'Eliminates context loss in AI conversations',
478
+ 'Automates deployment workflows',
479
+ 'Simplifies state management',
480
+ 'Reduces development friction'
481
+ ],
482
+ scoreboost: 5
483
+ });
484
+ }
485
+ // WHY TODO
486
+ if (context.why.confidence !== 'CERTAIN') {
487
+ todos.push({
488
+ field: 'WHY',
489
+ priority: 'IMPORTANT',
490
+ currentValue: context.why.value,
491
+ confidence: context.why.confidence,
492
+ prompt: 'Why does this project exist?',
493
+ examples: [
494
+ 'To make AI development trust-driven',
495
+ 'To accelerate time to market',
496
+ 'To reduce cognitive load',
497
+ 'To enable better collaboration'
498
+ ],
499
+ scoreboost: 5
500
+ });
501
+ }
502
+ // WHERE TODO
503
+ if (context.where.confidence !== 'CERTAIN') {
504
+ todos.push({
505
+ field: 'WHERE',
506
+ priority: 'Important',
507
+ currentValue: context.where.value,
508
+ confidence: context.where.confidence,
509
+ prompt: 'Where will this be deployed?',
510
+ examples: [
511
+ 'AWS Cloud infrastructure',
512
+ 'Vercel Edge Network',
513
+ 'On-premise servers',
514
+ 'Kubernetes clusters'
515
+ ],
516
+ scoreboost: 3
517
+ });
518
+ }
519
+ // WHEN TODO
520
+ if (context.when.confidence !== 'CERTAIN') {
521
+ todos.push({
522
+ field: 'WHEN',
523
+ priority: 'Key',
524
+ currentValue: context.when.value,
525
+ confidence: context.when.confidence,
526
+ prompt: 'What is your timeline?',
527
+ examples: [
528
+ 'Q1 2025 launch',
529
+ 'MVP by end of month',
530
+ 'Continuous deployment',
531
+ 'Beta testing phase'
532
+ ],
533
+ scoreboost: 3
534
+ });
535
+ }
536
+ // HOW TODO
537
+ if (context.how.confidence !== 'CERTAIN') {
538
+ todos.push({
539
+ field: 'HOW',
540
+ priority: 'Important',
541
+ currentValue: context.how.value,
542
+ confidence: context.how.confidence,
543
+ prompt: 'What is your development approach?',
544
+ examples: [
545
+ 'Test-driven development',
546
+ 'Agile sprints',
547
+ 'F1-inspired engineering',
548
+ 'Open source collaboration'
549
+ ],
550
+ scoreboost: 3
551
+ });
552
+ }
553
+ return todos;
554
+ }
555
+ /**
556
+ * Helper: Infer audience from tech stack
557
+ */
558
+ inferAudienceFromTech() {
559
+ if (this.techStack.has('react') || this.techStack.has('vue') || this.techStack.has('svelte')) {
560
+ return 'Frontend developers';
561
+ }
562
+ if (this.techStack.has('express') || this.techStack.has('fastify') || this.techStack.has('nestjs')) {
563
+ return 'Backend developers';
564
+ }
565
+ if (this.techStack.has('tensorflow') || this.techStack.has('pytorch') || this.techStack.has('scikit-learn')) {
566
+ return 'Data scientists and ML engineers';
567
+ }
568
+ if (this.techStack.has('react-native') || this.techStack.has('expo')) {
569
+ return 'Mobile developers';
570
+ }
571
+ return null;
572
+ }
573
+ /**
574
+ * Helper: Infer purpose from project name
575
+ */
576
+ inferPurposeFromName(name) {
577
+ const cleaned = name.replace(/[-_]/g, ' ');
578
+ return `${cleaned} - software solution`;
579
+ }
580
+ /**
581
+ * Helper: Infer approach from tech stack
582
+ */
583
+ inferApproachFromTech() {
584
+ if (this.techStack.has('jest') || this.techStack.has('vitest') || this.techStack.has('mocha')) {
585
+ return 'Test-driven development';
586
+ }
587
+ if (this.techStack.has('typescript')) {
588
+ return 'Type-safe development';
589
+ }
590
+ if (this.techStack.has('docker') || this.techStack.has('kubernetes')) {
591
+ return 'Containerized deployment';
592
+ }
593
+ if (this.techStack.has('graphql')) {
594
+ return 'GraphQL API architecture';
595
+ }
596
+ return null;
597
+ }
598
+ /**
599
+ * Helper: Clean extracted text
600
+ */
601
+ cleanExtractedText(text) {
602
+ return text
603
+ .trim()
604
+ .replace(/\s+/g, ' ')
605
+ .replace(/^[,.\s]+|[,.\s]+$/g, '')
606
+ .substring(0, 200);
607
+ }
608
+ /**
609
+ * Helper: Create context object
610
+ */
611
+ createContext(value, confidence, needsInput = false) {
612
+ return {
613
+ value,
614
+ confidence,
615
+ source: 'Analysis',
616
+ needsUserInput: needsInput
617
+ };
618
+ }
619
+ }
620
+ exports.RelentlessContextExtractor = RelentlessContextExtractor;
621
+ /**
622
+ * Export singleton instance
623
+ */
624
+ exports.relentlessExtractor = new RelentlessContextExtractor();
625
+ //# sourceMappingURL=relentless-context-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relentless-context-extractor.js","sourceRoot":"","sources":["../../../../src/faf-core/engines/relentless-context-extractor.ts"],"names":[],"mappings":"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"}