faf-mcp 2.3.0 → 3.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.
- package/CHANGELOG.md +42 -3
- package/CLAUDE.md +7 -7
- package/README.md +73 -74
- package/dist/src/faf-core/commands/bi-sync.d.ts +1 -3
- package/dist/src/faf-core/commands/bi-sync.js +21 -64
- package/dist/src/faf-core/commands/bi-sync.js.map +1 -1
- package/dist/src/faf-core/commands/sync.js.map +1 -1
- package/dist/src/faf-core/engines/dependency-tsa.js.map +1 -1
- package/dist/src/faf-core/fix-once/colors.js +1 -1
- package/dist/src/faf-core/fix-once/colors.js.map +1 -1
- package/dist/src/faf-core/parsers/agents-parser.d.ts +15 -0
- package/dist/src/faf-core/parsers/agents-parser.js +29 -123
- package/dist/src/faf-core/parsers/agents-parser.js.map +1 -1
- package/dist/src/faf-core/parsers/conductor-parser.js +1 -1
- package/dist/src/faf-core/parsers/conductor-parser.js.map +1 -1
- package/dist/src/faf-core/parsers/cursorrules-parser.d.ts +15 -0
- package/dist/src/faf-core/parsers/cursorrules-parser.js +54 -111
- package/dist/src/faf-core/parsers/cursorrules-parser.js.map +1 -1
- package/dist/src/faf-core/parsers/faf-git-generator.js +0 -1
- package/dist/src/faf-core/parsers/faf-git-generator.js.map +1 -1
- package/dist/src/faf-core/parsers/gemini-parser.d.ts +10 -0
- package/dist/src/faf-core/parsers/gemini-parser.js +19 -77
- package/dist/src/faf-core/parsers/gemini-parser.js.map +1 -1
- package/dist/src/handlers/engine-adapter.d.ts +13 -12
- package/dist/src/handlers/engine-adapter.js +124 -688
- package/dist/src/handlers/engine-adapter.js.map +1 -1
- package/dist/src/handlers/resources.d.ts +19 -1
- package/dist/src/handlers/resources.js +108 -23
- package/dist/src/handlers/resources.js.map +1 -1
- package/dist/src/handlers/skills.d.ts +70 -0
- package/dist/src/handlers/skills.js +174 -0
- package/dist/src/handlers/skills.js.map +1 -0
- package/dist/src/handlers/tools.d.ts +41 -5
- package/dist/src/handlers/tools.js +213 -258
- package/dist/src/handlers/tools.js.map +1 -1
- package/dist/src/server.d.ts +4 -0
- package/dist/src/server.js +51 -6
- package/dist/src/server.js.map +1 -1
- package/dist/src/utils/faf-cli-bridge.d.ts +2 -0
- package/dist/src/utils/faf-cli-bridge.js +16 -0
- package/dist/src/utils/faf-cli-bridge.js.map +1 -1
- package/package.json +17 -14
- package/project.faf +23 -5
- package/scripts/check-engines.mjs +53 -0
- package/scripts/run-tests.sh +54 -0
- package/scripts/sync-version.js +33 -19
- package/skills/faf-ide/SKILL.md +40 -0
- package/dist/src/config/visibility.d.ts +0 -41
- package/dist/src/config/visibility.js +0 -158
- package/dist/src/config/visibility.js.map +0 -1
- package/dist/src/faf-core/commands/audit.d.ts +0 -21
- package/dist/src/faf-core/commands/audit.js +0 -83
- package/dist/src/faf-core/commands/audit.js.map +0 -1
- package/dist/src/faf-core/commands/auto.d.ts +0 -25
- package/dist/src/faf-core/commands/auto.js +0 -74
- package/dist/src/faf-core/commands/auto.js.map +0 -1
- package/dist/src/faf-core/commands/doctor.d.ts +0 -17
- package/dist/src/faf-core/commands/doctor.js +0 -198
- package/dist/src/faf-core/commands/doctor.js.map +0 -1
- package/dist/src/faf-core/commands/enhance.d.ts +0 -46
- package/dist/src/faf-core/commands/enhance.js +0 -360
- package/dist/src/faf-core/commands/enhance.js.map +0 -1
- package/dist/src/faf-core/commands/formats.d.ts +0 -22
- package/dist/src/faf-core/commands/formats.js +0 -117
- package/dist/src/faf-core/commands/formats.js.map +0 -1
- package/dist/src/faf-core/commands/human.d.ts +0 -27
- package/dist/src/faf-core/commands/human.js +0 -183
- package/dist/src/faf-core/commands/human.js.map +0 -1
- package/dist/src/faf-core/commands/init.d.ts +0 -26
- package/dist/src/faf-core/commands/init.js +0 -114
- package/dist/src/faf-core/commands/init.js.map +0 -1
- package/dist/src/faf-core/commands/innit.d.ts +0 -7
- package/dist/src/faf-core/commands/innit.js +0 -13
- package/dist/src/faf-core/commands/innit.js.map +0 -1
- package/dist/src/faf-core/commands/migrate.d.ts +0 -15
- package/dist/src/faf-core/commands/migrate.js +0 -86
- package/dist/src/faf-core/commands/migrate.js.map +0 -1
- package/dist/src/faf-core/commands/quick.d.ts +0 -16
- package/dist/src/faf-core/commands/quick.js +0 -184
- package/dist/src/faf-core/commands/quick.js.map +0 -1
- package/dist/src/faf-core/commands/readme.d.ts +0 -47
- package/dist/src/faf-core/commands/readme.js +0 -361
- package/dist/src/faf-core/commands/readme.js.map +0 -1
- package/dist/src/faf-core/commands/score.d.ts +0 -47
- package/dist/src/faf-core/commands/score.js +0 -49
- package/dist/src/faf-core/commands/score.js.map +0 -1
- package/dist/src/faf-core/commands/update.d.ts +0 -12
- package/dist/src/faf-core/commands/update.js +0 -46
- package/dist/src/faf-core/commands/update.js.map +0 -1
- package/dist/src/faf-core/commands/validate.d.ts +0 -21
- package/dist/src/faf-core/commands/validate.js +0 -81
- package/dist/src/faf-core/commands/validate.js.map +0 -1
- package/dist/src/faf-core/compiler/faf-compiler.d.ts +0 -138
- package/dist/src/faf-core/compiler/faf-compiler.js +0 -1362
- package/dist/src/faf-core/compiler/faf-compiler.js.map +0 -1
- package/dist/src/faf-core/engines/fab-formats-processor.d.ts +0 -166
- package/dist/src/faf-core/engines/fab-formats-processor.js +0 -1274
- package/dist/src/faf-core/engines/fab-formats-processor.js.map +0 -1
- package/dist/src/faf-core/engines/faf-dna.d.ts +0 -159
- package/dist/src/faf-core/engines/faf-dna.js +0 -555
- package/dist/src/faf-core/engines/faf-dna.js.map +0 -1
- package/dist/src/faf-core/engines/relentless-context-extractor.d.ts +0 -100
- package/dist/src/faf-core/engines/relentless-context-extractor.js +0 -625
- package/dist/src/faf-core/engines/relentless-context-extractor.js.map +0 -1
- package/dist/src/faf-core/fix-once/types.d.ts +0 -257
- package/dist/src/faf-core/fix-once/types.js +0 -26
- package/dist/src/faf-core/fix-once/types.js.map +0 -1
- package/dist/src/faf-core/generators/faf-generator-championship.d.ts +0 -16
- package/dist/src/faf-core/generators/faf-generator-championship.js +0 -463
- package/dist/src/faf-core/generators/faf-generator-championship.js.map +0 -1
- package/dist/src/faf-core/inject.d.ts +0 -19
- package/dist/src/faf-core/inject.js +0 -57
- package/dist/src/faf-core/inject.js.map +0 -1
- package/dist/src/faf-core/parsers/index.d.ts +0 -12
- package/dist/src/faf-core/parsers/index.js +0 -29
- package/dist/src/faf-core/parsers/index.js.map +0 -1
- package/dist/src/faf-core/utils/balance-visualizer.d.ts +0 -37
- package/dist/src/faf-core/utils/balance-visualizer.js +0 -197
- package/dist/src/faf-core/utils/balance-visualizer.js.map +0 -1
- package/dist/src/faf-core/utils/championship-style.d.ts +0 -109
- package/dist/src/faf-core/utils/championship-style.js +0 -219
- package/dist/src/faf-core/utils/championship-style.js.map +0 -1
- package/dist/src/faf-core/utils/chrome-extension-detector.d.ts +0 -73
- package/dist/src/faf-core/utils/chrome-extension-detector.js +0 -268
- package/dist/src/faf-core/utils/chrome-extension-detector.js.map +0 -1
- package/dist/src/faf-core/utils/platform-detector.d.ts +0 -30
- package/dist/src/faf-core/utils/platform-detector.js +0 -218
- package/dist/src/faf-core/utils/platform-detector.js.map +0 -1
- package/dist/src/faf-core/utils/technical-credit.d.ts +0 -35
- package/dist/src/faf-core/utils/technical-credit.js +0 -286
- package/dist/src/faf-core/utils/technical-credit.js.map +0 -1
- package/dist/src/faf-core/utils/yaml-generator.d.ts +0 -41
- package/dist/src/faf-core/utils/yaml-generator.js +0 -360
- package/dist/src/faf-core/utils/yaml-generator.js.map +0 -1
- package/dist/src/handlers/behavioral-instruction.d.ts +0 -16
- package/dist/src/handlers/behavioral-instruction.js +0 -43
- package/dist/src/handlers/behavioral-instruction.js.map +0 -1
- package/dist/src/handlers/championship-tools.d.ts +0 -116
- package/dist/src/handlers/championship-tools.js +0 -2320
- package/dist/src/handlers/championship-tools.js.map +0 -1
- package/dist/src/handlers/cloud-handler.d.ts +0 -59
- package/dist/src/handlers/cloud-handler.js +0 -348
- package/dist/src/handlers/cloud-handler.js.map +0 -1
- package/dist/src/handlers/tool-registry.d.ts +0 -23
- package/dist/src/handlers/tool-registry.js +0 -68
- package/dist/src/handlers/tool-registry.js.map +0 -1
- package/dist/src/handlers/tool-types.d.ts +0 -167
- package/dist/src/handlers/tool-types.js +0 -7
- package/dist/src/handlers/tool-types.js.map +0 -1
- package/dist/src/test-all-functions.d.ts +0 -15
- package/dist/src/test-all-functions.js +0 -163
- package/dist/src/test-all-functions.js.map +0 -1
- package/dist/src/types/mcp-tools.d.ts +0 -53
- package/dist/src/types/mcp-tools.js +0 -77
- package/dist/src/types/mcp-tools.js.map +0 -1
- package/dist/src/types/tool-visibility.d.ts +0 -36
- package/dist/src/types/tool-visibility.js +0 -551
- package/dist/src/types/tool-visibility.js.map +0 -1
- package/dist/src/utils/auto-path-detection.d.ts +0 -26
- package/dist/src/utils/auto-path-detection.js +0 -198
- package/dist/src/utils/auto-path-detection.js.map +0 -1
- package/dist/src/utils/championship-format.d.ts +0 -30
- package/dist/src/utils/championship-format.js +0 -81
- package/dist/src/utils/championship-format.js.map +0 -1
- package/dist/src/utils/cli-detector.d.ts +0 -17
- package/dist/src/utils/cli-detector.js +0 -247
- package/dist/src/utils/cli-detector.js.map +0 -1
- package/dist/src/utils/display-protocol.d.ts +0 -57
- package/dist/src/utils/display-protocol.js +0 -131
- package/dist/src/utils/display-protocol.js.map +0 -1
- package/dist/src/utils/username-detector.d.ts +0 -27
- package/dist/src/utils/username-detector.js +0 -90
- package/dist/src/utils/username-detector.js.map +0 -1
- package/dist/src/utils/visual-style.d.ts +0 -62
- package/dist/src/utils/visual-style.js +0 -166
- package/dist/src/utils/visual-style.js.map +0 -1
- package/scripts/postinstall.js +0 -50
- package/skill/SKILL.md +0 -385
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* 🎯 Chrome Extension Fuzzy Detection - Google-style intelligence
|
|
4
|
-
* "Did you mean Chrome Extension?"
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.ChromeExtensionDetector = void 0;
|
|
8
|
-
/**
|
|
9
|
-
* Google-style fuzzy matching for Chrome Extension detection
|
|
10
|
-
* Handles typos, abbreviations, and variations
|
|
11
|
-
*/
|
|
12
|
-
class ChromeExtensionDetector {
|
|
13
|
-
// High confidence patterns (exact matches)
|
|
14
|
-
static HIGH_CONFIDENCE = [
|
|
15
|
-
'chrome extension',
|
|
16
|
-
'browser extension',
|
|
17
|
-
'chrome addon',
|
|
18
|
-
'chrome plugin',
|
|
19
|
-
'web extension',
|
|
20
|
-
'manifest v3',
|
|
21
|
-
'manifest v2'
|
|
22
|
-
];
|
|
23
|
-
// Medium confidence patterns (close matches, abbreviations)
|
|
24
|
-
static MEDIUM_CONFIDENCE = [
|
|
25
|
-
'chrome ext',
|
|
26
|
-
'chr ext',
|
|
27
|
-
'chrome-ext',
|
|
28
|
-
'chr extension',
|
|
29
|
-
'extension for chrome',
|
|
30
|
-
'chrome browser extension',
|
|
31
|
-
'google chrome extension',
|
|
32
|
-
'chromium extension',
|
|
33
|
-
'edge extension', // Edge uses same APIs
|
|
34
|
-
'browser addon',
|
|
35
|
-
'browser plug-in'
|
|
36
|
-
];
|
|
37
|
-
// Low confidence patterns (needs confirmation)
|
|
38
|
-
static LOW_CONFIDENCE = [
|
|
39
|
-
'extension',
|
|
40
|
-
'ext',
|
|
41
|
-
'addon',
|
|
42
|
-
'plugin',
|
|
43
|
-
'chrome',
|
|
44
|
-
'browser',
|
|
45
|
-
'popup',
|
|
46
|
-
'content script',
|
|
47
|
-
'background script',
|
|
48
|
-
'browser action',
|
|
49
|
-
'page action'
|
|
50
|
-
];
|
|
51
|
-
// Common typos and their corrections
|
|
52
|
-
static TYPO_CORRECTIONS = {
|
|
53
|
-
'chrom extension': 'chrome extension',
|
|
54
|
-
'chrome extention': 'chrome extension',
|
|
55
|
-
'chrome exension': 'chrome extension',
|
|
56
|
-
'chrome extenstion': 'chrome extension',
|
|
57
|
-
'crome extension': 'chrome extension',
|
|
58
|
-
'chrome extnsion': 'chrome extension',
|
|
59
|
-
'chorme extension': 'chrome extension',
|
|
60
|
-
'chrome etension': 'chrome extension',
|
|
61
|
-
'chormeextension': 'chrome extension',
|
|
62
|
-
'chromeext': 'chrome extension',
|
|
63
|
-
'c-ext': 'chrome extension',
|
|
64
|
-
'c.ext': 'chrome extension',
|
|
65
|
-
'ch ext': 'chrome extension',
|
|
66
|
-
'chr-ext': 'chrome extension',
|
|
67
|
-
'chrome-extension': 'chrome extension',
|
|
68
|
-
'chrome_extension': 'chrome extension'
|
|
69
|
-
};
|
|
70
|
-
/**
|
|
71
|
-
* Detect if text refers to a Chrome Extension with Google-style intelligence
|
|
72
|
-
*/
|
|
73
|
-
static detect(text) {
|
|
74
|
-
if (!text) {
|
|
75
|
-
return { detected: false, confidence: 'none', needsConfirmation: false };
|
|
76
|
-
}
|
|
77
|
-
const normalized = text.toLowerCase().trim();
|
|
78
|
-
// Step 1: Check for typos and auto-correct
|
|
79
|
-
const corrected = this.correctTypos(normalized);
|
|
80
|
-
if (corrected !== normalized) {
|
|
81
|
-
// We auto-corrected a typo
|
|
82
|
-
return {
|
|
83
|
-
detected: true,
|
|
84
|
-
confidence: 'medium',
|
|
85
|
-
suggestion: `Chrome Extension (auto-corrected from "${text}")`,
|
|
86
|
-
needsConfirmation: false
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
// Step 2: Check high confidence patterns
|
|
90
|
-
for (const pattern of this.HIGH_CONFIDENCE) {
|
|
91
|
-
if (normalized.includes(pattern)) {
|
|
92
|
-
return {
|
|
93
|
-
detected: true,
|
|
94
|
-
confidence: 'high',
|
|
95
|
-
needsConfirmation: false
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
// Step 3: Check medium confidence patterns
|
|
100
|
-
for (const pattern of this.MEDIUM_CONFIDENCE) {
|
|
101
|
-
if (normalized.includes(pattern) ||
|
|
102
|
-
this.fuzzyMatch(normalized, pattern)) {
|
|
103
|
-
return {
|
|
104
|
-
detected: true,
|
|
105
|
-
confidence: 'medium',
|
|
106
|
-
suggestion: 'Chrome Extension',
|
|
107
|
-
needsConfirmation: true // "Did you mean Chrome Extension?"
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// Step 4: Check low confidence patterns
|
|
112
|
-
for (const pattern of this.LOW_CONFIDENCE) {
|
|
113
|
-
if (normalized.includes(pattern)) {
|
|
114
|
-
// Only suggest if there's additional context
|
|
115
|
-
if (this.hasExtensionContext(normalized)) {
|
|
116
|
-
return {
|
|
117
|
-
detected: false,
|
|
118
|
-
confidence: 'low',
|
|
119
|
-
suggestion: 'Chrome Extension',
|
|
120
|
-
needsConfirmation: true
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
// Step 5: Check for split/spaced variations
|
|
126
|
-
if (this.hasSpacedPattern(normalized)) {
|
|
127
|
-
return {
|
|
128
|
-
detected: true,
|
|
129
|
-
confidence: 'medium',
|
|
130
|
-
suggestion: 'Chrome Extension',
|
|
131
|
-
needsConfirmation: true
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
return { detected: false, confidence: 'none', needsConfirmation: false };
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Correct common typos
|
|
138
|
-
*/
|
|
139
|
-
static correctTypos(text) {
|
|
140
|
-
// Direct typo lookup
|
|
141
|
-
if (this.TYPO_CORRECTIONS[text]) {
|
|
142
|
-
return this.TYPO_CORRECTIONS[text];
|
|
143
|
-
}
|
|
144
|
-
// Check if any typo pattern is in the text
|
|
145
|
-
for (const [typo, correction] of Object.entries(this.TYPO_CORRECTIONS)) {
|
|
146
|
-
if (text.includes(typo)) {
|
|
147
|
-
return text.replace(typo, correction);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return text;
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Fuzzy match with Levenshtein distance
|
|
154
|
-
*/
|
|
155
|
-
static fuzzyMatch(text, pattern, threshold = 3) {
|
|
156
|
-
// Check if text contains something close to pattern
|
|
157
|
-
const words = text.split(/\s+/);
|
|
158
|
-
for (const word of words) {
|
|
159
|
-
if (this.levenshteinDistance(word, pattern) <= threshold) {
|
|
160
|
-
return true;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
// Check the whole phrase
|
|
164
|
-
return this.levenshteinDistance(text, pattern) <= threshold;
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Calculate Levenshtein distance between two strings
|
|
168
|
-
*/
|
|
169
|
-
static levenshteinDistance(a, b) {
|
|
170
|
-
const matrix = [];
|
|
171
|
-
for (let i = 0; i <= b.length; i++) {
|
|
172
|
-
matrix[i] = [i];
|
|
173
|
-
}
|
|
174
|
-
for (let j = 0; j <= a.length; j++) {
|
|
175
|
-
matrix[0][j] = j;
|
|
176
|
-
}
|
|
177
|
-
for (let i = 1; i <= b.length; i++) {
|
|
178
|
-
for (let j = 1; j <= a.length; j++) {
|
|
179
|
-
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
180
|
-
matrix[i][j] = matrix[i - 1][j - 1];
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
|
|
184
|
-
matrix[i][j - 1] + 1, // insertion
|
|
185
|
-
matrix[i - 1][j] + 1 // deletion
|
|
186
|
-
);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
return matrix[b.length][a.length];
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Check for extension-related context
|
|
194
|
-
*/
|
|
195
|
-
static hasExtensionContext(text) {
|
|
196
|
-
const contextWords = [
|
|
197
|
-
'tab', 'popup', 'browser', 'chrome', 'manifest',
|
|
198
|
-
'content', 'background', 'inject', 'page', 'action',
|
|
199
|
-
'storage', 'permissions', 'google', 'store'
|
|
200
|
-
];
|
|
201
|
-
return contextWords.some(word => text.includes(word));
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Check for spaced patterns like "c e" or "ch ext"
|
|
205
|
-
*/
|
|
206
|
-
static hasSpacedPattern(text) {
|
|
207
|
-
const spacedPatterns = [
|
|
208
|
-
/c\s+e\s+x?\s*t/, // c e, c e x t
|
|
209
|
-
/ch\s+ext/, // ch ext
|
|
210
|
-
/chr\s+ext/, // chr ext
|
|
211
|
-
/ext\s+for\s+chr/, // ext for chr
|
|
212
|
-
/chrome\s+ex\b/ // chrome ex
|
|
213
|
-
];
|
|
214
|
-
return spacedPatterns.some(pattern => pattern.test(text));
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Get user-friendly confirmation message
|
|
218
|
-
*/
|
|
219
|
-
static getConfirmationMessage(result) {
|
|
220
|
-
if (!result.needsConfirmation) {
|
|
221
|
-
return null;
|
|
222
|
-
}
|
|
223
|
-
if (result.confidence === 'medium') {
|
|
224
|
-
return `Did you mean: Chrome Extension? (detected "${result.suggestion}")`;
|
|
225
|
-
}
|
|
226
|
-
if (result.confidence === 'low') {
|
|
227
|
-
return `Possible Chrome Extension detected. Did you mean to create a Chrome Extension?`;
|
|
228
|
-
}
|
|
229
|
-
return null;
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Check if project has Chrome Extension files (for validation)
|
|
233
|
-
*/
|
|
234
|
-
static hasExtensionFiles(files) {
|
|
235
|
-
const extensionFiles = [
|
|
236
|
-
'manifest.json',
|
|
237
|
-
'popup.html',
|
|
238
|
-
'popup.js',
|
|
239
|
-
'background.js',
|
|
240
|
-
'content.js',
|
|
241
|
-
'options.html',
|
|
242
|
-
'service-worker.js'
|
|
243
|
-
];
|
|
244
|
-
return files.some(file => extensionFiles.some(extFile => file.endsWith(extFile)));
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
exports.ChromeExtensionDetector = ChromeExtensionDetector;
|
|
248
|
-
/**
|
|
249
|
-
* Examples of detection:
|
|
250
|
-
*
|
|
251
|
-
* HIGH confidence (auto-accept):
|
|
252
|
-
* - "chrome extension" → ✅
|
|
253
|
-
* - "browser extension" → ✅
|
|
254
|
-
*
|
|
255
|
-
* MEDIUM confidence (needs confirmation):
|
|
256
|
-
* - "chr ext" → "Did you mean Chrome Extension?"
|
|
257
|
-
* - "c ext" → "Did you mean Chrome Extension?"
|
|
258
|
-
* - "CE" → "Did you mean Chrome Extension?"
|
|
259
|
-
*
|
|
260
|
-
* TYPO correction (auto-fix):
|
|
261
|
-
* - "chrom extention" → ✅ (corrected)
|
|
262
|
-
* - "chrome extnsion" → ✅ (corrected)
|
|
263
|
-
*
|
|
264
|
-
* LOW confidence (suggest if context):
|
|
265
|
-
* - "extension for managing tabs" → "Possible Chrome Extension?"
|
|
266
|
-
* - "popup manager" → "Possible Chrome Extension?"
|
|
267
|
-
*/
|
|
268
|
-
//# sourceMappingURL=chrome-extension-detector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chrome-extension-detector.js","sourceRoot":"","sources":["../../../../src/faf-core/utils/chrome-extension-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* FAF VIBE Platform Detector ⚡️😽
|
|
3
|
-
* Detects no-code/low-code platforms for simplified $9 tier
|
|
4
|
-
*/
|
|
5
|
-
export interface PlatformInfo {
|
|
6
|
-
platform: string;
|
|
7
|
-
tier: 'vibe' | 'pro';
|
|
8
|
-
detected: boolean;
|
|
9
|
-
confidence: number;
|
|
10
|
-
indicators: string[];
|
|
11
|
-
}
|
|
12
|
-
export declare class PlatformDetector {
|
|
13
|
-
private readonly VIBE_PLATFORMS;
|
|
14
|
-
/**
|
|
15
|
-
* Detect if running on a FAF VIBE eligible platform
|
|
16
|
-
*/
|
|
17
|
-
detectPlatform(projectPath?: string): Promise<PlatformInfo>;
|
|
18
|
-
/**
|
|
19
|
-
* Get pricing tier based on platform
|
|
20
|
-
*/
|
|
21
|
-
getPricingTier(platform: PlatformInfo): {
|
|
22
|
-
price: number;
|
|
23
|
-
name: string;
|
|
24
|
-
emoji: string;
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Get platform-specific messaging
|
|
28
|
-
*/
|
|
29
|
-
getPlatformMessage(platform: PlatformInfo): string;
|
|
30
|
-
}
|
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* FAF VIBE Platform Detector ⚡️😽
|
|
4
|
-
* Detects no-code/low-code platforms for simplified $9 tier
|
|
5
|
-
*/
|
|
6
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
-
if (k2 === undefined) k2 = k;
|
|
8
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
-
}
|
|
12
|
-
Object.defineProperty(o, k2, desc);
|
|
13
|
-
}) : (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
o[k2] = m[k];
|
|
16
|
-
}));
|
|
17
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
-
}) : function(o, v) {
|
|
20
|
-
o["default"] = v;
|
|
21
|
-
});
|
|
22
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
-
var ownKeys = function(o) {
|
|
24
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
-
var ar = [];
|
|
26
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
-
return ar;
|
|
28
|
-
};
|
|
29
|
-
return ownKeys(o);
|
|
30
|
-
};
|
|
31
|
-
return function (mod) {
|
|
32
|
-
if (mod && mod.__esModule) return mod;
|
|
33
|
-
var result = {};
|
|
34
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
-
__setModuleDefault(result, mod);
|
|
36
|
-
return result;
|
|
37
|
-
};
|
|
38
|
-
})();
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.PlatformDetector = void 0;
|
|
41
|
-
const fs = __importStar(require("fs"));
|
|
42
|
-
const path = __importStar(require("path"));
|
|
43
|
-
class PlatformDetector {
|
|
44
|
-
VIBE_PLATFORMS = [
|
|
45
|
-
{
|
|
46
|
-
name: 'Replit',
|
|
47
|
-
indicators: [
|
|
48
|
-
'.replit',
|
|
49
|
-
'replit.nix',
|
|
50
|
-
process.env.REPL_ID,
|
|
51
|
-
process.env.REPL_OWNER,
|
|
52
|
-
process.env.REPLIT_DB_URL
|
|
53
|
-
]
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
name: 'Lovable',
|
|
57
|
-
indicators: [
|
|
58
|
-
'.lovable',
|
|
59
|
-
'lovable.json',
|
|
60
|
-
process.env.LOVABLE_PROJECT_ID
|
|
61
|
-
]
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
name: 'Wix',
|
|
65
|
-
indicators: [
|
|
66
|
-
'wix.config.json',
|
|
67
|
-
'.wix',
|
|
68
|
-
process.env.WIX_INSTANCE_ID
|
|
69
|
-
]
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
name: 'Base44',
|
|
73
|
-
indicators: [
|
|
74
|
-
'base44.json',
|
|
75
|
-
'.base44'
|
|
76
|
-
]
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
name: 'Glitch',
|
|
80
|
-
indicators: [
|
|
81
|
-
'.glitch-assets',
|
|
82
|
-
'watch.json',
|
|
83
|
-
process.env.PROJECT_DOMAIN,
|
|
84
|
-
process.env.PROJECT_ID
|
|
85
|
-
]
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
name: 'CodeSandbox',
|
|
89
|
-
indicators: [
|
|
90
|
-
'sandbox.config.json',
|
|
91
|
-
'.codesandbox',
|
|
92
|
-
process.env.CODESANDBOX_ENV
|
|
93
|
-
]
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
name: 'Stackblitz',
|
|
97
|
-
indicators: [
|
|
98
|
-
'.stackblitzrc',
|
|
99
|
-
process.env.STACKBLITZ_ENV
|
|
100
|
-
]
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
name: 'Warp',
|
|
104
|
-
indicators: [
|
|
105
|
-
process.env.WARP_USE_SSH_AGENT,
|
|
106
|
-
process.env.WARP_DEV
|
|
107
|
-
]
|
|
108
|
-
}
|
|
109
|
-
];
|
|
110
|
-
/**
|
|
111
|
-
* Detect if running on a FAF VIBE eligible platform
|
|
112
|
-
*/
|
|
113
|
-
async detectPlatform(projectPath) {
|
|
114
|
-
const basePath = projectPath || process.cwd();
|
|
115
|
-
// Check each VIBE platform
|
|
116
|
-
for (const platform of this.VIBE_PLATFORMS) {
|
|
117
|
-
const foundIndicators = [];
|
|
118
|
-
for (const indicator of platform.indicators) {
|
|
119
|
-
if (typeof indicator === 'string') {
|
|
120
|
-
// Check for files
|
|
121
|
-
if (!indicator.startsWith('process.env')) {
|
|
122
|
-
const filePath = path.join(basePath, indicator);
|
|
123
|
-
try {
|
|
124
|
-
if (fs.existsSync(filePath)) {
|
|
125
|
-
foundIndicators.push(indicator);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
catch { }
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
// Check environment variables
|
|
132
|
-
const envVar = indicator.replace('process.env.', '');
|
|
133
|
-
if (process.env[envVar]) {
|
|
134
|
-
foundIndicators.push(envVar);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
// If we found any indicators, it's a VIBE platform
|
|
140
|
-
if (foundIndicators.length > 0) {
|
|
141
|
-
const confidence = Math.min(100, foundIndicators.length * 33);
|
|
142
|
-
return {
|
|
143
|
-
platform: platform.name,
|
|
144
|
-
tier: 'vibe',
|
|
145
|
-
detected: true,
|
|
146
|
-
confidence,
|
|
147
|
-
indicators: foundIndicators
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
// Check for traditional dev environments (Pro tier)
|
|
152
|
-
const proIndicators = [];
|
|
153
|
-
// VS Code
|
|
154
|
-
if (process.env.VSCODE_CLI || process.env.TERM_PROGRAM === 'vscode') {
|
|
155
|
-
proIndicators.push('VS Code');
|
|
156
|
-
}
|
|
157
|
-
// Cursor
|
|
158
|
-
if (process.env.CURSOR_EDITOR) {
|
|
159
|
-
proIndicators.push('Cursor');
|
|
160
|
-
}
|
|
161
|
-
// Git repository
|
|
162
|
-
if (fs.existsSync(path.join(basePath, '.git'))) {
|
|
163
|
-
proIndicators.push('Git');
|
|
164
|
-
}
|
|
165
|
-
// Local development
|
|
166
|
-
if (!process.env.CI && !process.env.CONTAINER_ID) {
|
|
167
|
-
proIndicators.push('Local Development');
|
|
168
|
-
}
|
|
169
|
-
if (proIndicators.length > 0) {
|
|
170
|
-
return {
|
|
171
|
-
platform: 'Professional Development Environment',
|
|
172
|
-
tier: 'pro',
|
|
173
|
-
detected: true,
|
|
174
|
-
confidence: 95,
|
|
175
|
-
indicators: proIndicators
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
// No platform detected
|
|
179
|
-
return {
|
|
180
|
-
platform: 'Unknown',
|
|
181
|
-
tier: 'pro', // Default to pro
|
|
182
|
-
detected: false,
|
|
183
|
-
confidence: 0,
|
|
184
|
-
indicators: []
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Get pricing tier based on platform
|
|
189
|
-
*/
|
|
190
|
-
getPricingTier(platform) {
|
|
191
|
-
if (platform.tier === 'vibe') {
|
|
192
|
-
return {
|
|
193
|
-
price: 9,
|
|
194
|
-
name: 'FAF VIBE',
|
|
195
|
-
emoji: '⚡️'
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
return {
|
|
199
|
-
price: 100,
|
|
200
|
-
name: 'FAF Professional',
|
|
201
|
-
emoji: '🏎️'
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Get platform-specific messaging
|
|
206
|
-
*/
|
|
207
|
-
getPlatformMessage(platform) {
|
|
208
|
-
if (!platform.detected) {
|
|
209
|
-
return '🏎️ FAF Professional - Championship Context for Serious Developers';
|
|
210
|
-
}
|
|
211
|
-
if (platform.tier === 'vibe') {
|
|
212
|
-
return `⚡️ FAF VIBE on ${platform.platform}! No-code builder special: $9/month FOREVER! 😽`;
|
|
213
|
-
}
|
|
214
|
-
return '🏎️ FAF Professional - F1-Inspired Software Engineering';
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
exports.PlatformDetector = PlatformDetector;
|
|
218
|
-
//# sourceMappingURL=platform-detector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platform-detector.js","sourceRoot":"","sources":["../../../../src/faf-core/utils/platform-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 💎 Technical Credit System - Revolutionary credit generation instead of debt
|
|
3
|
-
* Transform developer psychology from anxiety to confidence
|
|
4
|
-
*/
|
|
5
|
-
export interface TechnicalCredit {
|
|
6
|
-
current: number;
|
|
7
|
-
earned: CreditSource[];
|
|
8
|
-
impact: string[];
|
|
9
|
-
trending: 'up' | 'down' | 'stable';
|
|
10
|
-
lastUpdated: Date;
|
|
11
|
-
}
|
|
12
|
-
export interface CreditSource {
|
|
13
|
-
action: string;
|
|
14
|
-
points: number;
|
|
15
|
-
timestamp: Date;
|
|
16
|
-
impact: string;
|
|
17
|
-
category: CreditCategory;
|
|
18
|
-
}
|
|
19
|
-
export type CreditCategory = 'context_improvement' | 'ai_compatibility' | 'performance' | 'completeness' | 'sync_harmony' | 'stack_discovery' | 'trust_building';
|
|
20
|
-
/**
|
|
21
|
-
* Load current technical credit status
|
|
22
|
-
*/
|
|
23
|
-
export declare function loadTechnicalCredit(fafPath?: string): Promise<TechnicalCredit>;
|
|
24
|
-
/**
|
|
25
|
-
* Award technical credit for specific actions
|
|
26
|
-
*/
|
|
27
|
-
export declare function awardCredit(action: string, category: CreditCategory, impact: string, fafPath?: string): Promise<number>;
|
|
28
|
-
/**
|
|
29
|
-
* Display technical credit dashboard
|
|
30
|
-
*/
|
|
31
|
-
export declare function displayCreditDashboard(fafPath?: string): Promise<void>;
|
|
32
|
-
/**
|
|
33
|
-
* Auto-award credit for common actions
|
|
34
|
-
*/
|
|
35
|
-
export declare function autoAwardCredit(trigger: 'init_success' | 'score_improved' | 'sync_success' | 'validation_passed' | 'ai_happy', fafPath?: string): Promise<void>;
|