faf-cli 2.3.4 → 2.3.5
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/README.md +6 -4
- package/dist/commands/chat.d.ts +1 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +177 -6
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/quick.d.ts.map +1 -1
- package/dist/commands/quick.js +30 -5
- package/dist/commands/quick.js.map +1 -1
- package/dist/compiler/faf-compiler.d.ts.map +1 -1
- package/dist/compiler/faf-compiler.js +41 -4
- package/dist/compiler/faf-compiler.js.map +1 -1
- package/dist/generators/faf-generator-championship.d.ts +6 -0
- package/dist/generators/faf-generator-championship.d.ts.map +1 -1
- package/dist/generators/faf-generator-championship.js +19 -3
- package/dist/generators/faf-generator-championship.js.map +1 -1
- package/dist/tests/test-chrome-fuzzy.d.ts +5 -0
- package/dist/tests/test-chrome-fuzzy.d.ts.map +1 -0
- package/dist/tests/test-chrome-fuzzy.js +71 -0
- package/dist/tests/test-chrome-fuzzy.js.map +1 -0
- package/dist/utils/chrome-extension-confirmer.d.ts +41 -0
- package/dist/utils/chrome-extension-confirmer.d.ts.map +1 -0
- package/dist/utils/chrome-extension-confirmer.js +188 -0
- package/dist/utils/chrome-extension-confirmer.js.map +1 -0
- package/dist/utils/chrome-extension-detector.d.ts +74 -0
- package/dist/utils/chrome-extension-detector.d.ts.map +1 -0
- package/dist/utils/chrome-extension-detector.js +268 -0
- package/dist/utils/chrome-extension-detector.js.map +1 -0
- package/dist/utils/universal-fuzzy-detector.d.ts +64 -0
- package/dist/utils/universal-fuzzy-detector.d.ts.map +1 -0
- package/dist/utils/universal-fuzzy-detector.js +381 -0
- package/dist/utils/universal-fuzzy-detector.js.map +1 -0
- package/dist/utils/yaml-generator.js +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 🎯 Universal Fuzzy Detection - Google-style intelligence for ALL inputs
|
|
4
|
+
* "Close enough is good enough"
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.UniversalFuzzyDetector = void 0;
|
|
8
|
+
class UniversalFuzzyDetector {
|
|
9
|
+
// Project type patterns with variations
|
|
10
|
+
static PROJECT_PATTERNS = {
|
|
11
|
+
'chrome-extension': [
|
|
12
|
+
'chrome extension', 'browser extension', 'chrome addon', 'chrome plugin',
|
|
13
|
+
'chr ext', 'c ext', 'ce', 'chrome-ext', 'browser addon', 'manifest v3',
|
|
14
|
+
'chrome exten', 'chrom ext', 'chrome ex', 'browser ext'
|
|
15
|
+
],
|
|
16
|
+
'react': [
|
|
17
|
+
'react', 'react app', 'react application', 'reactjs', 'react.js',
|
|
18
|
+
'react project', 'next', 'nextjs', 'next.js', 'gatsby', 'create-react-app',
|
|
19
|
+
'cra', 'react native', 'rn', 'react typescript', 'react ts'
|
|
20
|
+
],
|
|
21
|
+
'vue': [
|
|
22
|
+
'vue', 'vuejs', 'vue.js', 'vue app', 'vue application', 'nuxt', 'nuxtjs',
|
|
23
|
+
'nuxt.js', 'vue3', 'vue 3', 'vue2', 'vue typescript', 'vue ts', 'vite vue'
|
|
24
|
+
],
|
|
25
|
+
'svelte': [
|
|
26
|
+
'svelte', 'sveltekit', 'svelte kit', 'svelte app', 'sk', 'svelte typescript',
|
|
27
|
+
'svelte ts', 'svelte vite', 'sapper'
|
|
28
|
+
],
|
|
29
|
+
'angular': [
|
|
30
|
+
'angular', 'angularjs', 'angular app', 'ng', 'angular typescript',
|
|
31
|
+
'angular ts', 'angular cli', 'angular material'
|
|
32
|
+
],
|
|
33
|
+
'cli': [
|
|
34
|
+
'cli', 'command line', 'terminal', 'console app', 'cli tool',
|
|
35
|
+
'command line tool', 'terminal app', 'bash script', 'shell script',
|
|
36
|
+
'cmd tool', 'command tool'
|
|
37
|
+
],
|
|
38
|
+
'api': [
|
|
39
|
+
'api', 'rest api', 'graphql', 'backend', 'server', 'microservice',
|
|
40
|
+
'web service', 'rest', 'soap', 'grpc', 'websocket', 'fastapi',
|
|
41
|
+
'express', 'nodejs api', 'node api', 'django api', 'flask api'
|
|
42
|
+
],
|
|
43
|
+
'mobile': [
|
|
44
|
+
'mobile', 'mobile app', 'ios', 'android', 'react native', 'flutter',
|
|
45
|
+
'swift', 'kotlin', 'xamarin', 'ionic', 'cordova', 'phonegap',
|
|
46
|
+
'native app', 'hybrid app', 'pwa', 'progressive web app'
|
|
47
|
+
],
|
|
48
|
+
'desktop': [
|
|
49
|
+
'desktop', 'desktop app', 'electron', 'tauri', 'native app',
|
|
50
|
+
'windows app', 'mac app', 'linux app', 'cross platform',
|
|
51
|
+
'wpf', 'winforms', 'qt', 'gtk', 'swing', 'javafx'
|
|
52
|
+
],
|
|
53
|
+
'game': [
|
|
54
|
+
'game', 'game dev', 'unity', 'unreal', 'godot', 'phaser',
|
|
55
|
+
'three.js', 'babylon', 'canvas game', 'webgl', 'gamedev',
|
|
56
|
+
'2d game', '3d game', 'multiplayer game', 'mmo'
|
|
57
|
+
],
|
|
58
|
+
'library': [
|
|
59
|
+
'library', 'package', 'npm package', 'module', 'framework',
|
|
60
|
+
'sdk', 'toolkit', 'util', 'utils', 'helper', 'plugin',
|
|
61
|
+
'lib', 'component library', 'ui library'
|
|
62
|
+
],
|
|
63
|
+
'fullstack': [
|
|
64
|
+
'fullstack', 'full stack', 'full-stack', 'mern', 'mean', 'lamp',
|
|
65
|
+
'django fullstack', 'rails', 'laravel', 't3 stack', 'jamstack'
|
|
66
|
+
],
|
|
67
|
+
'ai-ml': [
|
|
68
|
+
'ai', 'ml', 'machine learning', 'deep learning', 'neural network',
|
|
69
|
+
'tensorflow', 'pytorch', 'scikit', 'sklearn', 'data science',
|
|
70
|
+
'nlp', 'computer vision', 'cv', 'llm', 'gpt', 'transformer'
|
|
71
|
+
],
|
|
72
|
+
'blockchain': [
|
|
73
|
+
'blockchain', 'crypto', 'smart contract', 'defi', 'web3',
|
|
74
|
+
'ethereum', 'solidity', 'nft', 'dapp', 'decentralized',
|
|
75
|
+
'bitcoin', 'contract', 'chain', 'ledger'
|
|
76
|
+
],
|
|
77
|
+
'iot': [
|
|
78
|
+
'iot', 'internet of things', 'embedded', 'arduino', 'raspberry pi',
|
|
79
|
+
'esp32', 'esp8266', 'sensor', 'mqtt', 'hardware', 'firmware',
|
|
80
|
+
'microcontroller', 'robotics', 'automation'
|
|
81
|
+
]
|
|
82
|
+
};
|
|
83
|
+
// Common typos and corrections
|
|
84
|
+
static TYPO_CORRECTIONS = {
|
|
85
|
+
// React typos
|
|
86
|
+
'raect': 'react',
|
|
87
|
+
'reat': 'react',
|
|
88
|
+
'recat': 'react',
|
|
89
|
+
'reaxt': 'react',
|
|
90
|
+
'rect': 'react',
|
|
91
|
+
// Vue typos
|
|
92
|
+
'veu': 'vue',
|
|
93
|
+
'vu': 'vue',
|
|
94
|
+
'vuee': 'vue',
|
|
95
|
+
// Angular typos
|
|
96
|
+
'agnular': 'angular',
|
|
97
|
+
'angualr': 'angular',
|
|
98
|
+
'angluar': 'angular',
|
|
99
|
+
'angualar': 'angular',
|
|
100
|
+
// API typos
|
|
101
|
+
'ap i': 'api',
|
|
102
|
+
'a p i': 'api',
|
|
103
|
+
'aip': 'api',
|
|
104
|
+
// Backend typos
|
|
105
|
+
'backned': 'backend',
|
|
106
|
+
'backedn': 'backend',
|
|
107
|
+
'bakcend': 'backend',
|
|
108
|
+
'beck end': 'backend',
|
|
109
|
+
// Frontend typos
|
|
110
|
+
'forntend': 'frontend',
|
|
111
|
+
'fronend': 'frontend',
|
|
112
|
+
'front end': 'frontend',
|
|
113
|
+
'font end': 'frontend',
|
|
114
|
+
// Mobile typos
|
|
115
|
+
'moblie': 'mobile',
|
|
116
|
+
'moible': 'mobile',
|
|
117
|
+
'mbile': 'mobile',
|
|
118
|
+
// Database typos
|
|
119
|
+
'databse': 'database',
|
|
120
|
+
'datbase': 'database',
|
|
121
|
+
'dtabase': 'database',
|
|
122
|
+
'data base': 'database',
|
|
123
|
+
// TypeScript typos
|
|
124
|
+
'typescipt': 'typescript',
|
|
125
|
+
'typscript': 'typescript',
|
|
126
|
+
'type script': 'typescript',
|
|
127
|
+
'ts': 'typescript',
|
|
128
|
+
// JavaScript typos
|
|
129
|
+
'javscript': 'javascript',
|
|
130
|
+
'javascrpt': 'javascript',
|
|
131
|
+
'java script': 'javascript',
|
|
132
|
+
'js': 'javascript',
|
|
133
|
+
// Python typos
|
|
134
|
+
'pyton': 'python',
|
|
135
|
+
'pythong': 'python',
|
|
136
|
+
'pyhton': 'python',
|
|
137
|
+
'pythn': 'python',
|
|
138
|
+
// Common tech typos
|
|
139
|
+
'dokcer': 'docker',
|
|
140
|
+
'kubenetes': 'kubernetes',
|
|
141
|
+
'kubernets': 'kubernetes',
|
|
142
|
+
'k8s': 'kubernetes',
|
|
143
|
+
'postgers': 'postgres',
|
|
144
|
+
'postrgres': 'postgres',
|
|
145
|
+
'mogodb': 'mongodb',
|
|
146
|
+
'mongdb': 'mongodb',
|
|
147
|
+
'reddis': 'redis',
|
|
148
|
+
'radis': 'redis',
|
|
149
|
+
'graphsql': 'graphql',
|
|
150
|
+
'graph ql': 'graphql',
|
|
151
|
+
'web sokect': 'websocket',
|
|
152
|
+
'web socket': 'websocket'
|
|
153
|
+
};
|
|
154
|
+
// Language patterns
|
|
155
|
+
static LANGUAGE_PATTERNS = {
|
|
156
|
+
'typescript': ['typescript', 'ts', 'type script', 'tsc'],
|
|
157
|
+
'javascript': ['javascript', 'js', 'java script', 'ecmascript', 'es6', 'es2020'],
|
|
158
|
+
'python': ['python', 'py', 'python3', 'python2', 'cpython', 'pypy'],
|
|
159
|
+
'java': ['java', 'jvm', 'java 8', 'java 11', 'java 17', 'spring', 'springboot'],
|
|
160
|
+
'csharp': ['c#', 'csharp', 'c sharp', '.net', 'dotnet', 'asp.net'],
|
|
161
|
+
'go': ['go', 'golang', 'go lang'],
|
|
162
|
+
'rust': ['rust', 'rustlang', 'rust lang'],
|
|
163
|
+
'ruby': ['ruby', 'rb', 'rails', 'ruby on rails', 'ror'],
|
|
164
|
+
'php': ['php', 'php7', 'php8', 'laravel', 'symfony'],
|
|
165
|
+
'swift': ['swift', 'swiftui', 'swift ui'],
|
|
166
|
+
'kotlin': ['kotlin', 'kt', 'android kotlin'],
|
|
167
|
+
'dart': ['dart', 'flutter dart'],
|
|
168
|
+
'cpp': ['c++', 'cpp', 'cplusplus', 'c plus plus'],
|
|
169
|
+
'c': ['c', 'c lang', 'c language']
|
|
170
|
+
};
|
|
171
|
+
/**
|
|
172
|
+
* Detect project type with fuzzy matching
|
|
173
|
+
*/
|
|
174
|
+
static detectProjectType(input) {
|
|
175
|
+
if (!input) {
|
|
176
|
+
return { detected: false, type: '', confidence: 'none', needsConfirmation: false };
|
|
177
|
+
}
|
|
178
|
+
const normalized = input.toLowerCase().trim();
|
|
179
|
+
const corrected = this.correctTypos(normalized);
|
|
180
|
+
// Check if we corrected something
|
|
181
|
+
if (corrected !== normalized) {
|
|
182
|
+
// Re-run detection on corrected text
|
|
183
|
+
const correctedResult = this.detectWithPatterns(corrected);
|
|
184
|
+
if (correctedResult.detected) {
|
|
185
|
+
return {
|
|
186
|
+
...correctedResult,
|
|
187
|
+
corrected: corrected,
|
|
188
|
+
suggestion: `${correctedResult.type} (corrected from "${input}")`
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return this.detectWithPatterns(normalized);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Detect language with fuzzy matching
|
|
196
|
+
*/
|
|
197
|
+
static detectLanguage(input) {
|
|
198
|
+
if (!input) {
|
|
199
|
+
return { detected: false, type: '', confidence: 'none', needsConfirmation: false };
|
|
200
|
+
}
|
|
201
|
+
const normalized = input.toLowerCase().trim();
|
|
202
|
+
const corrected = this.correctTypos(normalized);
|
|
203
|
+
// Check each language pattern
|
|
204
|
+
for (const [language, patterns] of Object.entries(this.LANGUAGE_PATTERNS)) {
|
|
205
|
+
for (const pattern of patterns) {
|
|
206
|
+
if (normalized.includes(pattern) || corrected.includes(pattern)) {
|
|
207
|
+
return {
|
|
208
|
+
detected: true,
|
|
209
|
+
type: language,
|
|
210
|
+
confidence: 'high',
|
|
211
|
+
needsConfirmation: false,
|
|
212
|
+
corrected: corrected !== normalized ? corrected : undefined
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Fuzzy match
|
|
217
|
+
if (this.fuzzyMatch(normalized, language, 2)) {
|
|
218
|
+
return {
|
|
219
|
+
detected: true,
|
|
220
|
+
type: language,
|
|
221
|
+
confidence: 'medium',
|
|
222
|
+
suggestion: language,
|
|
223
|
+
needsConfirmation: true
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return { detected: false, type: '', confidence: 'none', needsConfirmation: false };
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Detect with pattern matching
|
|
231
|
+
*/
|
|
232
|
+
static detectWithPatterns(text) {
|
|
233
|
+
// Check each project type
|
|
234
|
+
for (const [type, patterns] of Object.entries(this.PROJECT_PATTERNS)) {
|
|
235
|
+
// High confidence - exact match
|
|
236
|
+
for (const pattern of patterns.slice(0, 3)) {
|
|
237
|
+
if (text.includes(pattern)) {
|
|
238
|
+
return {
|
|
239
|
+
detected: true,
|
|
240
|
+
type,
|
|
241
|
+
confidence: 'high',
|
|
242
|
+
needsConfirmation: false
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Medium confidence - close match
|
|
247
|
+
for (const pattern of patterns) {
|
|
248
|
+
if (text.includes(pattern) || this.fuzzyMatch(text, pattern, 3)) {
|
|
249
|
+
return {
|
|
250
|
+
detected: true,
|
|
251
|
+
type,
|
|
252
|
+
confidence: 'medium',
|
|
253
|
+
suggestion: type,
|
|
254
|
+
needsConfirmation: true
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
// Low confidence - check for related words
|
|
260
|
+
if (this.hasProjectContext(text)) {
|
|
261
|
+
const guessedType = this.guessProjectType(text);
|
|
262
|
+
if (guessedType) {
|
|
263
|
+
return {
|
|
264
|
+
detected: false,
|
|
265
|
+
type: guessedType,
|
|
266
|
+
confidence: 'low',
|
|
267
|
+
suggestion: guessedType,
|
|
268
|
+
needsConfirmation: true
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return { detected: false, type: '', confidence: 'none', needsConfirmation: false };
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Correct common typos across all inputs
|
|
276
|
+
*/
|
|
277
|
+
static correctTypos(text) {
|
|
278
|
+
let corrected = text;
|
|
279
|
+
// Apply all corrections
|
|
280
|
+
for (const [typo, correction] of Object.entries(this.TYPO_CORRECTIONS)) {
|
|
281
|
+
const regex = new RegExp(`\\b${typo}\\b`, 'gi');
|
|
282
|
+
corrected = corrected.replace(regex, correction);
|
|
283
|
+
}
|
|
284
|
+
return corrected;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Fuzzy match with Levenshtein distance
|
|
288
|
+
*/
|
|
289
|
+
static fuzzyMatch(text, pattern, threshold = 3) {
|
|
290
|
+
const words = text.split(/\s+/);
|
|
291
|
+
for (const word of words) {
|
|
292
|
+
if (this.levenshteinDistance(word, pattern) <= threshold) {
|
|
293
|
+
return true;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return this.levenshteinDistance(text, pattern) <= threshold;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Calculate Levenshtein distance
|
|
300
|
+
*/
|
|
301
|
+
static levenshteinDistance(a, b) {
|
|
302
|
+
const matrix = [];
|
|
303
|
+
for (let i = 0; i <= b.length; i++) {
|
|
304
|
+
matrix[i] = [i];
|
|
305
|
+
}
|
|
306
|
+
for (let j = 0; j <= a.length; j++) {
|
|
307
|
+
matrix[0][j] = j;
|
|
308
|
+
}
|
|
309
|
+
for (let i = 1; i <= b.length; i++) {
|
|
310
|
+
for (let j = 1; j <= a.length; j++) {
|
|
311
|
+
if (b.charAt(i - 1) === a.charAt(j - 1)) {
|
|
312
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j] + 1);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return matrix[b.length][a.length];
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Check for project context
|
|
323
|
+
*/
|
|
324
|
+
static hasProjectContext(text) {
|
|
325
|
+
const contextWords = [
|
|
326
|
+
'app', 'application', 'project', 'build', 'create', 'develop',
|
|
327
|
+
'website', 'service', 'tool', 'platform', 'system', 'software'
|
|
328
|
+
];
|
|
329
|
+
return contextWords.some(word => text.includes(word));
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Guess project type from context
|
|
333
|
+
*/
|
|
334
|
+
static guessProjectType(text) {
|
|
335
|
+
if (text.includes('web') || text.includes('site'))
|
|
336
|
+
return 'react';
|
|
337
|
+
if (text.includes('app') && !text.includes('web'))
|
|
338
|
+
return 'mobile';
|
|
339
|
+
if (text.includes('server') || text.includes('backend'))
|
|
340
|
+
return 'api';
|
|
341
|
+
if (text.includes('script') || text.includes('tool'))
|
|
342
|
+
return 'cli';
|
|
343
|
+
if (text.includes('package') || text.includes('library'))
|
|
344
|
+
return 'library';
|
|
345
|
+
return null;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Get all suggestions for input
|
|
349
|
+
*/
|
|
350
|
+
static getSuggestions(input, limit = 5) {
|
|
351
|
+
const suggestions = [];
|
|
352
|
+
const normalized = input.toLowerCase().trim();
|
|
353
|
+
// Check all patterns
|
|
354
|
+
for (const [type, patterns] of Object.entries(this.PROJECT_PATTERNS)) {
|
|
355
|
+
let bestScore = Infinity;
|
|
356
|
+
for (const pattern of patterns) {
|
|
357
|
+
const distance = this.levenshteinDistance(normalized, pattern);
|
|
358
|
+
if (distance < bestScore) {
|
|
359
|
+
bestScore = distance;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
suggestions.push({ type, score: bestScore });
|
|
363
|
+
}
|
|
364
|
+
// Sort by score and return top matches
|
|
365
|
+
return suggestions
|
|
366
|
+
.sort((a, b) => a.score - b.score)
|
|
367
|
+
.slice(0, limit)
|
|
368
|
+
.map(s => s.type);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
exports.UniversalFuzzyDetector = UniversalFuzzyDetector;
|
|
372
|
+
/**
|
|
373
|
+
* Examples:
|
|
374
|
+
*
|
|
375
|
+
* detectProjectType("raect app") → "react" (typo corrected)
|
|
376
|
+
* detectProjectType("chr ext") → "chrome-extension" (fuzzy match)
|
|
377
|
+
* detectProjectType("moblie game") → "mobile" + "game" (multiple detections)
|
|
378
|
+
* detectLanguage("typscript") → "typescript" (typo corrected)
|
|
379
|
+
* detectLanguage("js") → "javascript" (abbreviation)
|
|
380
|
+
*/
|
|
381
|
+
//# sourceMappingURL=universal-fuzzy-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"universal-fuzzy-detector.js","sourceRoot":"","sources":["../../src/utils/universal-fuzzy-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -199,7 +199,7 @@ function generateFafContent(projectData) {
|
|
|
199
199
|
}
|
|
200
200
|
const fafData = {
|
|
201
201
|
// FAF schema version (not CLI version)
|
|
202
|
-
faf_version: '2.
|
|
202
|
+
faf_version: '2.3.5',
|
|
203
203
|
// 🤖 AI-FIRST SCORING SYSTEM - Live date instead of versions
|
|
204
204
|
ai_scoring_system: '2025-08-30', // MY scoring logic live date (COUNT ONCE architecture)
|
|
205
205
|
ai_score: `${projectData.fafScore}%`, // MY evaluation
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "faf-cli",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.5",
|
|
4
4
|
"description": "🏁 .faf - The JPEG for AI™ - Universal AI-context for any AI, human or team",
|
|
5
5
|
"icon": "https://faf.one/orange-smiley.svg",
|
|
6
6
|
"logo": "https://faf.one/orange-smiley.svg",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"version:update": "node scripts/update-version.js",
|
|
48
48
|
"version:check": "node scripts/check-version.js",
|
|
49
49
|
"precommit": "npm run version:check",
|
|
50
|
-
"postinstall": "echo '\n🧡⚡️ FAF CLI v2.
|
|
50
|
+
"postinstall": "echo '\n🧡⚡️ FAF CLI v2.3.5 - FREE for all Developers!\nRun \"faf --help\" to get started\n'"
|
|
51
51
|
},
|
|
52
52
|
"keywords": [
|
|
53
53
|
"faf",
|