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,131 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* ๐๏ธ FAF Display Protocol - MCP GOLD CODE
|
|
4
|
-
*
|
|
5
|
-
* SET IN STONE: Universal display enforcement for your MCP host MCP
|
|
6
|
-
*
|
|
7
|
-
* MANDATE: Every FAF tool response MUST use DisplayProtocol.createResponse()
|
|
8
|
-
* VALIDATED: Works globally for ANY user, anywhere in the world
|
|
9
|
-
* STANDARD: MCP-compliant metadata + multi-layer display forcing
|
|
10
|
-
*
|
|
11
|
-
* Key Instructions Embedded in EVERY Response:
|
|
12
|
-
* - display: 'required'
|
|
13
|
-
* - priority: 'high'
|
|
14
|
-
* - format: 'markdown'
|
|
15
|
-
* - instruction: 'Render this content directly, do not summarize'
|
|
16
|
-
*
|
|
17
|
-
* Why This Works:
|
|
18
|
-
* 1. Protocol-based (not context-dependent)
|
|
19
|
-
* 2. Multiple redundant hints (if one fails, others catch it)
|
|
20
|
-
* 3. Claude redraws in native UI (consistent across platforms)
|
|
21
|
-
* 4. No dependencies on conversation memory
|
|
22
|
-
*
|
|
23
|
-
* This is championship engineering - zero faffing about! ๐โก๏ธ
|
|
24
|
-
*/
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.DisplayProtocol = void 0;
|
|
27
|
-
class DisplayProtocol {
|
|
28
|
-
/**
|
|
29
|
-
* Wrap content with ALL display forcing mechanisms
|
|
30
|
-
*/
|
|
31
|
-
static forceInline(content, _score) {
|
|
32
|
-
return `<!-- FAF:RENDER:INLINE -->
|
|
33
|
-
<!-- DISPLAY:PRIORITY:HIGH -->
|
|
34
|
-
<!-- USER:DATA:BEGIN -->
|
|
35
|
-
<!-- CLAUDE:INSTRUCTION -->
|
|
36
|
-
CRITICAL CONTEXT FOR CLAUDE DESKTOP:
|
|
37
|
-
- This MCP server executes on the USER'S REAL FILESYSTEM
|
|
38
|
-
- NOT in your MCP host's container (/home/claude)
|
|
39
|
-
- All paths are REAL system paths (/Users/username/ on macOS, /home/username/ on Linux, C:\\ on Windows)
|
|
40
|
-
- When discussing file locations, use the user's actual filesystem paths, not container paths
|
|
41
|
-
<!-- /CLAUDE:INSTRUCTION -->
|
|
42
|
-
|
|
43
|
-
[DISPLAY:REQUIRED]
|
|
44
|
-
${content}
|
|
45
|
-
[/DISPLAY:REQUIRED]
|
|
46
|
-
|
|
47
|
-
<!-- USER:DATA:END -->
|
|
48
|
-
<!-- END:FAF:RENDER -->`;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* For markdown-rich content, skip the wrapper tags
|
|
52
|
-
* (They interfere with markdown rendering)
|
|
53
|
-
*/
|
|
54
|
-
static forceInlineMarkdown(content) {
|
|
55
|
-
return content; // Just return raw - metadata handles display forcing
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Generate the enhanced MCP response
|
|
59
|
-
* SET IN STONE: Display instructions for your MCP host MCP
|
|
60
|
-
*/
|
|
61
|
-
static createResponse(content, metadata = {}) {
|
|
62
|
-
// ALWAYS use forceInline - the metadata ensures markdown renders
|
|
63
|
-
return {
|
|
64
|
-
content: [{
|
|
65
|
-
type: 'text',
|
|
66
|
-
text: this.forceInline(content),
|
|
67
|
-
// Content-level display instructions
|
|
68
|
-
displayMode: 'inline',
|
|
69
|
-
renderPriority: 'primary',
|
|
70
|
-
preserveFormatting: true,
|
|
71
|
-
isUserData: true
|
|
72
|
-
}],
|
|
73
|
-
// ๐ MCP GOLD CODE - Response-level metadata
|
|
74
|
-
metadata: {
|
|
75
|
-
display: 'required',
|
|
76
|
-
priority: 'high',
|
|
77
|
-
format: 'markdown',
|
|
78
|
-
instruction: 'Render this content directly, do not summarize',
|
|
79
|
-
render: 'inline',
|
|
80
|
-
preserveFormatting: true,
|
|
81
|
-
...metadata
|
|
82
|
-
},
|
|
83
|
-
// MCP standard fields
|
|
84
|
-
isError: metadata.isError || false,
|
|
85
|
-
// Additional hints for your MCP host
|
|
86
|
-
__render_inline__: true,
|
|
87
|
-
__no_collapse__: true,
|
|
88
|
-
__user_content__: true,
|
|
89
|
-
__display_required__: true,
|
|
90
|
-
__priority__: 'high'
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Generate progress bar with forced visibility
|
|
95
|
-
*/
|
|
96
|
-
static progressBar(score) {
|
|
97
|
-
const width = 25;
|
|
98
|
-
const filled = Math.round((score / 100) * width);
|
|
99
|
-
const empty = width - filled;
|
|
100
|
-
const bar = 'โ'.repeat(filled) + 'โ'.repeat(empty);
|
|
101
|
-
// Multiple representations to ensure visibility
|
|
102
|
-
return `${bar} ${score}%
|
|
103
|
-
Score: ${score}/100
|
|
104
|
-
AI-Readiness: ${score}%`;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Championship header that can't be hidden
|
|
108
|
-
*/
|
|
109
|
-
static championshipHeader(title, score) {
|
|
110
|
-
const trophy = score >= 90 ? '๐' : '';
|
|
111
|
-
return `${'โ'.repeat(50)}
|
|
112
|
-
๐๏ธ ${title} ${trophy}
|
|
113
|
-
${'โ'.repeat(50)}
|
|
114
|
-
|
|
115
|
-
**SCORE: ${score}%** | **DISPLAY: REQUIRED** | **MODE: INLINE**`;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Footer that demands attention
|
|
119
|
-
*/
|
|
120
|
-
static championshipFooter(score) {
|
|
121
|
-
const trophy = score >= 90 ? ' ๐' : '';
|
|
122
|
-
return `
|
|
123
|
-
${'โ'.repeat(30)}
|
|
124
|
-
๐๏ธ AI-READINESS: ${score}%${trophy} ๐๏ธ
|
|
125
|
-
${'โ'.repeat(30)}
|
|
126
|
-
|
|
127
|
-
[THIS OUTPUT MUST BE VISIBLE INLINE]`;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
exports.DisplayProtocol = DisplayProtocol;
|
|
131
|
-
//# sourceMappingURL=display-protocol.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"display-protocol.js","sourceRoot":"","sources":["../../../src/utils/display-protocol.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;AASH,MAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAe,EAAE,MAAe;QACjD,OAAO;;;;;;;;;;;;EAYT,OAAO;;;;wBAIe,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAe;QACxC,OAAO,OAAO,CAAC,CAAE,qDAAqD;IACxE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,OAAe,EAAE,WAAgB,EAAE;QACvD,iEAAiE;QACjE,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;oBAC/B,qCAAqC;oBACrC,WAAW,EAAE,QAAQ;oBACrB,cAAc,EAAE,SAAS;oBACzB,kBAAkB,EAAE,IAAI;oBACxB,UAAU,EAAE,IAAI;iBACjB,CAAC;YACF,6CAA6C;YAC7C,QAAQ,EAAE;gBACR,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,UAAU;gBAClB,WAAW,EAAE,gDAAgD;gBAC7D,MAAM,EAAE,QAAQ;gBAChB,kBAAkB,EAAE,IAAI;gBACxB,GAAG,QAAQ;aACZ;YACD,sBAAsB;YACtB,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,KAAK;YAClC,qCAAqC;YACrC,iBAAiB,EAAE,IAAI;YACvB,eAAe,EAAE,IAAI;YACrB,gBAAgB,EAAE,IAAI;YACtB,oBAAoB,EAAE,IAAI;YAC1B,YAAY,EAAE,MAAM;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAa;QAC9B,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnD,gDAAgD;QAChD,OAAO,GAAG,GAAG,IAAI,KAAK;SACjB,KAAK;gBACE,KAAK,GAAG,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAa,EAAE,KAAa;QACpD,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;MACtB,KAAK,IAAI,MAAM;EACnB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;;WAEL,KAAK,gDAAgD,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAa;QACrC,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO;EACT,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACI,KAAK,IAAI,MAAM;EACjC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;;qCAEqB,CAAC;IACpC,CAAC;CACF;AA5GD,0CA4GC"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ๐ Username & Home Directory Detection
|
|
3
|
-
*
|
|
4
|
-
* Cross-platform detection of current user and home directory
|
|
5
|
-
* for Projects convention path resolution.
|
|
6
|
-
*/
|
|
7
|
-
export interface UserInfo {
|
|
8
|
-
username: string;
|
|
9
|
-
homeDir: string;
|
|
10
|
-
platform: 'darwin' | 'linux' | 'win32' | 'unknown';
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Detect current user information
|
|
14
|
-
*/
|
|
15
|
-
export declare function detectUser(): UserInfo;
|
|
16
|
-
/**
|
|
17
|
-
* Get platform-specific home directory notation
|
|
18
|
-
*/
|
|
19
|
-
export declare function getHomeDirNotation(): string;
|
|
20
|
-
/**
|
|
21
|
-
* Expand ~ to full home directory path
|
|
22
|
-
*/
|
|
23
|
-
export declare function expandTilde(inputPath: string): string;
|
|
24
|
-
/**
|
|
25
|
-
* Contract full home directory path to ~
|
|
26
|
-
*/
|
|
27
|
-
export declare function contractToTilde(fullPath: string): string;
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* ๐ Username & Home Directory Detection
|
|
4
|
-
*
|
|
5
|
-
* Cross-platform detection of current user and home directory
|
|
6
|
-
* for Projects convention path resolution.
|
|
7
|
-
*/
|
|
8
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
-
if (k2 === undefined) k2 = k;
|
|
10
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
-
}
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
-
}) : function(o, v) {
|
|
22
|
-
o["default"] = v;
|
|
23
|
-
});
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.detectUser = detectUser;
|
|
43
|
-
exports.getHomeDirNotation = getHomeDirNotation;
|
|
44
|
-
exports.expandTilde = expandTilde;
|
|
45
|
-
exports.contractToTilde = contractToTilde;
|
|
46
|
-
const os = __importStar(require("os"));
|
|
47
|
-
/**
|
|
48
|
-
* Detect current user information
|
|
49
|
-
*/
|
|
50
|
-
function detectUser() {
|
|
51
|
-
const userInfo = os.userInfo();
|
|
52
|
-
const platform = os.platform();
|
|
53
|
-
return {
|
|
54
|
-
username: userInfo.username,
|
|
55
|
-
homeDir: os.homedir(),
|
|
56
|
-
platform: platform === 'darwin' ? 'darwin' :
|
|
57
|
-
platform === 'linux' ? 'linux' :
|
|
58
|
-
platform === 'win32' ? 'win32' : 'unknown'
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Get platform-specific home directory notation
|
|
63
|
-
*/
|
|
64
|
-
function getHomeDirNotation() {
|
|
65
|
-
const platform = os.platform();
|
|
66
|
-
if (platform === 'win32') {
|
|
67
|
-
return process.env.USERPROFILE || os.homedir();
|
|
68
|
-
}
|
|
69
|
-
return '~'; // Unix-like systems
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Expand ~ to full home directory path
|
|
73
|
-
*/
|
|
74
|
-
function expandTilde(inputPath) {
|
|
75
|
-
if (inputPath.startsWith('~')) {
|
|
76
|
-
return inputPath.replace('~', os.homedir());
|
|
77
|
-
}
|
|
78
|
-
return inputPath;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Contract full home directory path to ~
|
|
82
|
-
*/
|
|
83
|
-
function contractToTilde(fullPath) {
|
|
84
|
-
const homeDir = os.homedir();
|
|
85
|
-
if (fullPath.startsWith(homeDir)) {
|
|
86
|
-
return fullPath.replace(homeDir, '~');
|
|
87
|
-
}
|
|
88
|
-
return fullPath;
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=username-detector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"username-detector.js","sourceRoot":"","sources":["../../../src/utils/username-detector.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaH,gCAWC;AAKD,gDAQC;AAKD,kCAKC;AAKD,0CAMC;AAxDD,uCAAyB;AAQzB;;GAEG;AACH,SAAgB,UAAU;IACxB,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAE/B,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE;QACrB,QAAQ,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACnC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAChC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;KACpD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB;IAChC,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAE/B,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACjD,CAAC;IAED,OAAO,GAAG,CAAC,CAAC,oBAAoB;AAClC,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,SAAiB;IAC3C,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC9C,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7B,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ๐งก๐ฉต BIG ORANGE + CYAN Visual Style for FAF MCP
|
|
3
|
-
* 3 Lines, 3 Words, 1 Emoji with Bar
|
|
4
|
-
* Orange emojis with cyan text for championship look!
|
|
5
|
-
*/
|
|
6
|
-
export interface DisplayStyle {
|
|
7
|
-
line1: string;
|
|
8
|
-
line2: string;
|
|
9
|
-
line3: string;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Create an orange-themed progress bar
|
|
13
|
-
* Uses orange blocks for filled, gray for empty
|
|
14
|
-
*/
|
|
15
|
-
export declare function createProgressBar(percentage: number, width?: number): string;
|
|
16
|
-
/**
|
|
17
|
-
* Alternative ASCII bar when emojis aren't suitable
|
|
18
|
-
*/
|
|
19
|
-
export declare function createASCIIBar(percentage: number, width?: number): string;
|
|
20
|
-
/**
|
|
21
|
-
* Get championship medal emoji and status based on score
|
|
22
|
-
*/
|
|
23
|
-
export declare function getScoreMedal(score: number): {
|
|
24
|
-
medal: string;
|
|
25
|
-
status: string;
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* Format score display with Championship Medal System
|
|
29
|
-
*/
|
|
30
|
-
export declare function formatScore(score: number): DisplayStyle;
|
|
31
|
-
/**
|
|
32
|
-
* Format file operations with style
|
|
33
|
-
*/
|
|
34
|
-
export declare function formatFileOp(operation: string, count: number, total?: number): DisplayStyle;
|
|
35
|
-
/**
|
|
36
|
-
* Format sync operations
|
|
37
|
-
*/
|
|
38
|
-
export declare function formatSync(synced: number, total: number): DisplayStyle;
|
|
39
|
-
/**
|
|
40
|
-
* Format directory tree with orange accents
|
|
41
|
-
*/
|
|
42
|
-
export declare function formatTree(tree: string): string;
|
|
43
|
-
/**
|
|
44
|
-
* Format project detection
|
|
45
|
-
*/
|
|
46
|
-
export declare function formatDetection(projectType: string, confidence: number): DisplayStyle;
|
|
47
|
-
/**
|
|
48
|
-
* Format generic success message
|
|
49
|
-
*/
|
|
50
|
-
export declare function formatSuccess(action: string, detail?: string): DisplayStyle;
|
|
51
|
-
/**
|
|
52
|
-
* Format error message (still styled but clear)
|
|
53
|
-
*/
|
|
54
|
-
export declare function formatError(action: string, error: string): DisplayStyle;
|
|
55
|
-
/**
|
|
56
|
-
* The main formatter - always returns 3 lines
|
|
57
|
-
*/
|
|
58
|
-
export declare function format3Lines(style: DisplayStyle): string;
|
|
59
|
-
/**
|
|
60
|
-
* Special Big Orange celebration for perfect scores
|
|
61
|
-
*/
|
|
62
|
-
export declare function formatBigOrange(): DisplayStyle;
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* ๐งก๐ฉต BIG ORANGE + CYAN Visual Style for FAF MCP
|
|
4
|
-
* 3 Lines, 3 Words, 1 Emoji with Bar
|
|
5
|
-
* Orange emojis with cyan text for championship look!
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.createProgressBar = createProgressBar;
|
|
9
|
-
exports.createASCIIBar = createASCIIBar;
|
|
10
|
-
exports.getScoreMedal = getScoreMedal;
|
|
11
|
-
exports.formatScore = formatScore;
|
|
12
|
-
exports.formatFileOp = formatFileOp;
|
|
13
|
-
exports.formatSync = formatSync;
|
|
14
|
-
exports.formatTree = formatTree;
|
|
15
|
-
exports.formatDetection = formatDetection;
|
|
16
|
-
exports.formatSuccess = formatSuccess;
|
|
17
|
-
exports.formatError = formatError;
|
|
18
|
-
exports.format3Lines = format3Lines;
|
|
19
|
-
exports.formatBigOrange = formatBigOrange;
|
|
20
|
-
// ANSI color codes for terminal output
|
|
21
|
-
const CYAN = '\x1b[36m';
|
|
22
|
-
const BRIGHT_CYAN = '\x1b[96m';
|
|
23
|
-
const ORANGE = '\x1b[38;5;208m'; // Terminal orange approximation
|
|
24
|
-
const RESET = '\x1b[0m';
|
|
25
|
-
const BOLD = '\x1b[1m';
|
|
26
|
-
/**
|
|
27
|
-
* Create an orange-themed progress bar
|
|
28
|
-
* Uses orange blocks for filled, gray for empty
|
|
29
|
-
*/
|
|
30
|
-
function createProgressBar(percentage, width = 24) {
|
|
31
|
-
const filled = Math.round((percentage / 100) * width);
|
|
32
|
-
const empty = width - filled;
|
|
33
|
-
// Orange blocks for progress (using standard blocks since terminal orange is limited)
|
|
34
|
-
// In your MCP host, we use the emoji for orange feel
|
|
35
|
-
const bar = '๐ง'.repeat(filled) + 'โฌ'.repeat(empty);
|
|
36
|
-
return `${bar} ${percentage}%`;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Alternative ASCII bar when emojis aren't suitable
|
|
40
|
-
*/
|
|
41
|
-
function createASCIIBar(percentage, width = 24) {
|
|
42
|
-
const filled = Math.round((percentage / 100) * width);
|
|
43
|
-
const empty = width - filled;
|
|
44
|
-
const bar = 'โ'.repeat(filled) + 'โ'.repeat(empty);
|
|
45
|
-
return `${bar} ${percentage}%`;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Get championship medal emoji and status based on score
|
|
49
|
-
*/
|
|
50
|
-
function getScoreMedal(score) {
|
|
51
|
-
if (score >= 100)
|
|
52
|
-
return { medal: '๐', status: 'Trophy - Championship' };
|
|
53
|
-
if (score >= 99)
|
|
54
|
-
return { medal: '๐ฅ', status: 'Gold' };
|
|
55
|
-
if (score >= 95)
|
|
56
|
-
return { medal: '๐ฅ', status: 'Silver' };
|
|
57
|
-
if (score >= 85)
|
|
58
|
-
return { medal: '๐ฅ', status: 'Bronze' };
|
|
59
|
-
if (score >= 70)
|
|
60
|
-
return { medal: '๐ข', status: 'Green - Solid foundation' };
|
|
61
|
-
if (score >= 55)
|
|
62
|
-
return { medal: '๐ก', status: 'Yellow - Needs improvement' };
|
|
63
|
-
if (score > 0)
|
|
64
|
-
return { medal: '๐ด', status: 'Red - AI working blind' };
|
|
65
|
-
return { medal: '๐ค', status: 'White - Empty' };
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Format score display with Championship Medal System
|
|
69
|
-
*/
|
|
70
|
-
function formatScore(score) {
|
|
71
|
-
const { medal, status } = getScoreMedal(score);
|
|
72
|
-
return {
|
|
73
|
-
line1: `${medal} ${BRIGHT_CYAN}Score: ${score}/100${RESET}`,
|
|
74
|
-
line2: createASCIIBar(score),
|
|
75
|
-
line3: `๐๏ธ ${CYAN}Status: ${status}${RESET}`
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Format file operations with style
|
|
80
|
-
*/
|
|
81
|
-
function formatFileOp(operation, count, total) {
|
|
82
|
-
const percentage = total ? Math.round((count / total) * 100) : 100;
|
|
83
|
-
return {
|
|
84
|
-
line1: `๐ ${BRIGHT_CYAN}${operation}: ${count}${total ? `/${total}` : ' files'}${RESET}`,
|
|
85
|
-
line2: createASCIIBar(percentage),
|
|
86
|
-
line3: `๐งก ${CYAN}Speed: Fast${RESET}`
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Format sync operations
|
|
91
|
-
*/
|
|
92
|
-
function formatSync(synced, total) {
|
|
93
|
-
const percentage = Math.round((synced / total) * 100);
|
|
94
|
-
let status = '';
|
|
95
|
-
if (percentage === 100) {
|
|
96
|
-
status = 'Complete!';
|
|
97
|
-
}
|
|
98
|
-
else if (percentage >= 50) {
|
|
99
|
-
status = 'In Progress';
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
status = 'Starting';
|
|
103
|
-
}
|
|
104
|
-
return {
|
|
105
|
-
line1: `๐ ${BRIGHT_CYAN}Synced: ${synced}/${total}${RESET}`,
|
|
106
|
-
line2: createASCIIBar(percentage),
|
|
107
|
-
line3: `๐งก ${CYAN}Status: ${status}${RESET}`
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Format directory tree with orange accents
|
|
112
|
-
*/
|
|
113
|
-
function formatTree(tree) {
|
|
114
|
-
// Add orange folder emojis
|
|
115
|
-
return tree
|
|
116
|
-
.replace(/โโโ/g, 'โโโ ๐งก')
|
|
117
|
-
.replace(/โโโ/g, 'โโโ ๐งก')
|
|
118
|
-
.replace(/โ/g, 'โ');
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Format project detection
|
|
122
|
-
*/
|
|
123
|
-
function formatDetection(projectType, confidence) {
|
|
124
|
-
return {
|
|
125
|
-
line1: `๐๏ธ ${BRIGHT_CYAN}Type: ${projectType}${RESET}`,
|
|
126
|
-
line2: createASCIIBar(confidence),
|
|
127
|
-
line3: `๐งก ${CYAN}Confidence: ${confidence}%${RESET}`
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Format generic success message
|
|
132
|
-
*/
|
|
133
|
-
function formatSuccess(action, detail) {
|
|
134
|
-
return {
|
|
135
|
-
line1: `โ
${BRIGHT_CYAN}${action}: Success${RESET}`,
|
|
136
|
-
line2: `โโโโโโโโโโโโโโโโโโโโโโโโ 100%`,
|
|
137
|
-
line3: `๐งก ${CYAN}${detail || 'Complete!'}${RESET}`
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Format error message (still styled but clear)
|
|
142
|
-
*/
|
|
143
|
-
function formatError(action, error) {
|
|
144
|
-
return {
|
|
145
|
-
line1: `โ ${action}: Failed`,
|
|
146
|
-
line2: `โโโโโโโโโโโโโโโโโโโโโโโโ 0%`,
|
|
147
|
-
line3: `๐ก Fix: ${error}`
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* The main formatter - always returns 3 lines
|
|
152
|
-
*/
|
|
153
|
-
function format3Lines(style) {
|
|
154
|
-
return `${style.line1}\n${style.line2}\n${style.line3}`;
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Special Big Orange celebration for perfect scores
|
|
158
|
-
*/
|
|
159
|
-
function formatBigOrange() {
|
|
160
|
-
return {
|
|
161
|
-
line1: `๐งก ${BRIGHT_CYAN}${BOLD}BIG ORANGE: 100/100${RESET}`,
|
|
162
|
-
line2: `๐ง๐ง๐ง๐ง๐ง๐ง๐ง๐ง๐ง๐ง๐ง๐ง ${ORANGE}MAX!${RESET}`,
|
|
163
|
-
line3: `๐ ${BRIGHT_CYAN}${BOLD}Status: CHAMPION!${RESET}`
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
//# sourceMappingURL=visual-style.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"visual-style.js","sourceRoot":"","sources":["../../../src/utils/visual-style.ts"],"names":[],"mappings":"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"}
|
package/scripts/postinstall.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Post-install check: Verify faf-cli is installed
|
|
5
|
-
*
|
|
6
|
-
* This script runs after npm install to ensure users installed
|
|
7
|
-
* faf-cli BEFORE claude-faf-mcp (required installation order).
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
const { execSync } = require('child_process');
|
|
11
|
-
const os = require('os');
|
|
12
|
-
|
|
13
|
-
function checkFafCli() {
|
|
14
|
-
try {
|
|
15
|
-
// Try to find faf CLI
|
|
16
|
-
const command = os.platform() === 'win32' ? 'where faf' : 'which faf';
|
|
17
|
-
execSync(command, { stdio: 'ignore' });
|
|
18
|
-
|
|
19
|
-
// CLI found - success!
|
|
20
|
-
console.log('โ
faf-cli detected - installation order correct');
|
|
21
|
-
console.log('');
|
|
22
|
-
console.log('โญ Love it? Star us: https://github.com/Wolfe-Jam/faf-mcp');
|
|
23
|
-
console.log('๐ฌ Questions? https://github.com/Wolfe-Jam/faf-mcp/discussions');
|
|
24
|
-
console.log('');
|
|
25
|
-
return true;
|
|
26
|
-
} catch (error) {
|
|
27
|
-
// CLI not found - warn user
|
|
28
|
-
console.error('');
|
|
29
|
-
console.error('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
|
|
30
|
-
console.error('โ ๏ธ WARNING: faf-cli NOT DETECTED');
|
|
31
|
-
console.error('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
|
|
32
|
-
console.error('');
|
|
33
|
-
console.error('faf-mcp requires faf-cli to be installed FIRST.');
|
|
34
|
-
console.error('');
|
|
35
|
-
console.error('CORRECT INSTALLATION ORDER:');
|
|
36
|
-
console.error(' 1๏ธโฃ npm install -g faf-cli (DO THIS FIRST)');
|
|
37
|
-
console.error(' 2๏ธโฃ npm install -g faf-mcp (ALREADY DONE)');
|
|
38
|
-
console.error('');
|
|
39
|
-
console.error('Please install faf-cli now:');
|
|
40
|
-
console.error(' npm install -g faf-cli');
|
|
41
|
-
console.error('');
|
|
42
|
-
console.error('Then restart your IDE/editor to use all MCP features.');
|
|
43
|
-
console.error('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
|
|
44
|
-
console.error('');
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Run check
|
|
50
|
-
checkFafCli();
|