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.
Files changed (178) hide show
  1. package/CHANGELOG.md +42 -3
  2. package/CLAUDE.md +7 -7
  3. package/README.md +73 -74
  4. package/dist/src/faf-core/commands/bi-sync.d.ts +1 -3
  5. package/dist/src/faf-core/commands/bi-sync.js +21 -64
  6. package/dist/src/faf-core/commands/bi-sync.js.map +1 -1
  7. package/dist/src/faf-core/commands/sync.js.map +1 -1
  8. package/dist/src/faf-core/engines/dependency-tsa.js.map +1 -1
  9. package/dist/src/faf-core/fix-once/colors.js +1 -1
  10. package/dist/src/faf-core/fix-once/colors.js.map +1 -1
  11. package/dist/src/faf-core/parsers/agents-parser.d.ts +15 -0
  12. package/dist/src/faf-core/parsers/agents-parser.js +29 -123
  13. package/dist/src/faf-core/parsers/agents-parser.js.map +1 -1
  14. package/dist/src/faf-core/parsers/conductor-parser.js +1 -1
  15. package/dist/src/faf-core/parsers/conductor-parser.js.map +1 -1
  16. package/dist/src/faf-core/parsers/cursorrules-parser.d.ts +15 -0
  17. package/dist/src/faf-core/parsers/cursorrules-parser.js +54 -111
  18. package/dist/src/faf-core/parsers/cursorrules-parser.js.map +1 -1
  19. package/dist/src/faf-core/parsers/faf-git-generator.js +0 -1
  20. package/dist/src/faf-core/parsers/faf-git-generator.js.map +1 -1
  21. package/dist/src/faf-core/parsers/gemini-parser.d.ts +10 -0
  22. package/dist/src/faf-core/parsers/gemini-parser.js +19 -77
  23. package/dist/src/faf-core/parsers/gemini-parser.js.map +1 -1
  24. package/dist/src/handlers/engine-adapter.d.ts +13 -12
  25. package/dist/src/handlers/engine-adapter.js +124 -688
  26. package/dist/src/handlers/engine-adapter.js.map +1 -1
  27. package/dist/src/handlers/resources.d.ts +19 -1
  28. package/dist/src/handlers/resources.js +108 -23
  29. package/dist/src/handlers/resources.js.map +1 -1
  30. package/dist/src/handlers/skills.d.ts +70 -0
  31. package/dist/src/handlers/skills.js +174 -0
  32. package/dist/src/handlers/skills.js.map +1 -0
  33. package/dist/src/handlers/tools.d.ts +41 -5
  34. package/dist/src/handlers/tools.js +213 -258
  35. package/dist/src/handlers/tools.js.map +1 -1
  36. package/dist/src/server.d.ts +4 -0
  37. package/dist/src/server.js +51 -6
  38. package/dist/src/server.js.map +1 -1
  39. package/dist/src/utils/faf-cli-bridge.d.ts +2 -0
  40. package/dist/src/utils/faf-cli-bridge.js +16 -0
  41. package/dist/src/utils/faf-cli-bridge.js.map +1 -1
  42. package/package.json +17 -14
  43. package/project.faf +23 -5
  44. package/scripts/check-engines.mjs +53 -0
  45. package/scripts/run-tests.sh +54 -0
  46. package/scripts/sync-version.js +33 -19
  47. package/skills/faf-ide/SKILL.md +40 -0
  48. package/dist/src/config/visibility.d.ts +0 -41
  49. package/dist/src/config/visibility.js +0 -158
  50. package/dist/src/config/visibility.js.map +0 -1
  51. package/dist/src/faf-core/commands/audit.d.ts +0 -21
  52. package/dist/src/faf-core/commands/audit.js +0 -83
  53. package/dist/src/faf-core/commands/audit.js.map +0 -1
  54. package/dist/src/faf-core/commands/auto.d.ts +0 -25
  55. package/dist/src/faf-core/commands/auto.js +0 -74
  56. package/dist/src/faf-core/commands/auto.js.map +0 -1
  57. package/dist/src/faf-core/commands/doctor.d.ts +0 -17
  58. package/dist/src/faf-core/commands/doctor.js +0 -198
  59. package/dist/src/faf-core/commands/doctor.js.map +0 -1
  60. package/dist/src/faf-core/commands/enhance.d.ts +0 -46
  61. package/dist/src/faf-core/commands/enhance.js +0 -360
  62. package/dist/src/faf-core/commands/enhance.js.map +0 -1
  63. package/dist/src/faf-core/commands/formats.d.ts +0 -22
  64. package/dist/src/faf-core/commands/formats.js +0 -117
  65. package/dist/src/faf-core/commands/formats.js.map +0 -1
  66. package/dist/src/faf-core/commands/human.d.ts +0 -27
  67. package/dist/src/faf-core/commands/human.js +0 -183
  68. package/dist/src/faf-core/commands/human.js.map +0 -1
  69. package/dist/src/faf-core/commands/init.d.ts +0 -26
  70. package/dist/src/faf-core/commands/init.js +0 -114
  71. package/dist/src/faf-core/commands/init.js.map +0 -1
  72. package/dist/src/faf-core/commands/innit.d.ts +0 -7
  73. package/dist/src/faf-core/commands/innit.js +0 -13
  74. package/dist/src/faf-core/commands/innit.js.map +0 -1
  75. package/dist/src/faf-core/commands/migrate.d.ts +0 -15
  76. package/dist/src/faf-core/commands/migrate.js +0 -86
  77. package/dist/src/faf-core/commands/migrate.js.map +0 -1
  78. package/dist/src/faf-core/commands/quick.d.ts +0 -16
  79. package/dist/src/faf-core/commands/quick.js +0 -184
  80. package/dist/src/faf-core/commands/quick.js.map +0 -1
  81. package/dist/src/faf-core/commands/readme.d.ts +0 -47
  82. package/dist/src/faf-core/commands/readme.js +0 -361
  83. package/dist/src/faf-core/commands/readme.js.map +0 -1
  84. package/dist/src/faf-core/commands/score.d.ts +0 -47
  85. package/dist/src/faf-core/commands/score.js +0 -49
  86. package/dist/src/faf-core/commands/score.js.map +0 -1
  87. package/dist/src/faf-core/commands/update.d.ts +0 -12
  88. package/dist/src/faf-core/commands/update.js +0 -46
  89. package/dist/src/faf-core/commands/update.js.map +0 -1
  90. package/dist/src/faf-core/commands/validate.d.ts +0 -21
  91. package/dist/src/faf-core/commands/validate.js +0 -81
  92. package/dist/src/faf-core/commands/validate.js.map +0 -1
  93. package/dist/src/faf-core/compiler/faf-compiler.d.ts +0 -138
  94. package/dist/src/faf-core/compiler/faf-compiler.js +0 -1362
  95. package/dist/src/faf-core/compiler/faf-compiler.js.map +0 -1
  96. package/dist/src/faf-core/engines/fab-formats-processor.d.ts +0 -166
  97. package/dist/src/faf-core/engines/fab-formats-processor.js +0 -1274
  98. package/dist/src/faf-core/engines/fab-formats-processor.js.map +0 -1
  99. package/dist/src/faf-core/engines/faf-dna.d.ts +0 -159
  100. package/dist/src/faf-core/engines/faf-dna.js +0 -555
  101. package/dist/src/faf-core/engines/faf-dna.js.map +0 -1
  102. package/dist/src/faf-core/engines/relentless-context-extractor.d.ts +0 -100
  103. package/dist/src/faf-core/engines/relentless-context-extractor.js +0 -625
  104. package/dist/src/faf-core/engines/relentless-context-extractor.js.map +0 -1
  105. package/dist/src/faf-core/fix-once/types.d.ts +0 -257
  106. package/dist/src/faf-core/fix-once/types.js +0 -26
  107. package/dist/src/faf-core/fix-once/types.js.map +0 -1
  108. package/dist/src/faf-core/generators/faf-generator-championship.d.ts +0 -16
  109. package/dist/src/faf-core/generators/faf-generator-championship.js +0 -463
  110. package/dist/src/faf-core/generators/faf-generator-championship.js.map +0 -1
  111. package/dist/src/faf-core/inject.d.ts +0 -19
  112. package/dist/src/faf-core/inject.js +0 -57
  113. package/dist/src/faf-core/inject.js.map +0 -1
  114. package/dist/src/faf-core/parsers/index.d.ts +0 -12
  115. package/dist/src/faf-core/parsers/index.js +0 -29
  116. package/dist/src/faf-core/parsers/index.js.map +0 -1
  117. package/dist/src/faf-core/utils/balance-visualizer.d.ts +0 -37
  118. package/dist/src/faf-core/utils/balance-visualizer.js +0 -197
  119. package/dist/src/faf-core/utils/balance-visualizer.js.map +0 -1
  120. package/dist/src/faf-core/utils/championship-style.d.ts +0 -109
  121. package/dist/src/faf-core/utils/championship-style.js +0 -219
  122. package/dist/src/faf-core/utils/championship-style.js.map +0 -1
  123. package/dist/src/faf-core/utils/chrome-extension-detector.d.ts +0 -73
  124. package/dist/src/faf-core/utils/chrome-extension-detector.js +0 -268
  125. package/dist/src/faf-core/utils/chrome-extension-detector.js.map +0 -1
  126. package/dist/src/faf-core/utils/platform-detector.d.ts +0 -30
  127. package/dist/src/faf-core/utils/platform-detector.js +0 -218
  128. package/dist/src/faf-core/utils/platform-detector.js.map +0 -1
  129. package/dist/src/faf-core/utils/technical-credit.d.ts +0 -35
  130. package/dist/src/faf-core/utils/technical-credit.js +0 -286
  131. package/dist/src/faf-core/utils/technical-credit.js.map +0 -1
  132. package/dist/src/faf-core/utils/yaml-generator.d.ts +0 -41
  133. package/dist/src/faf-core/utils/yaml-generator.js +0 -360
  134. package/dist/src/faf-core/utils/yaml-generator.js.map +0 -1
  135. package/dist/src/handlers/behavioral-instruction.d.ts +0 -16
  136. package/dist/src/handlers/behavioral-instruction.js +0 -43
  137. package/dist/src/handlers/behavioral-instruction.js.map +0 -1
  138. package/dist/src/handlers/championship-tools.d.ts +0 -116
  139. package/dist/src/handlers/championship-tools.js +0 -2320
  140. package/dist/src/handlers/championship-tools.js.map +0 -1
  141. package/dist/src/handlers/cloud-handler.d.ts +0 -59
  142. package/dist/src/handlers/cloud-handler.js +0 -348
  143. package/dist/src/handlers/cloud-handler.js.map +0 -1
  144. package/dist/src/handlers/tool-registry.d.ts +0 -23
  145. package/dist/src/handlers/tool-registry.js +0 -68
  146. package/dist/src/handlers/tool-registry.js.map +0 -1
  147. package/dist/src/handlers/tool-types.d.ts +0 -167
  148. package/dist/src/handlers/tool-types.js +0 -7
  149. package/dist/src/handlers/tool-types.js.map +0 -1
  150. package/dist/src/test-all-functions.d.ts +0 -15
  151. package/dist/src/test-all-functions.js +0 -163
  152. package/dist/src/test-all-functions.js.map +0 -1
  153. package/dist/src/types/mcp-tools.d.ts +0 -53
  154. package/dist/src/types/mcp-tools.js +0 -77
  155. package/dist/src/types/mcp-tools.js.map +0 -1
  156. package/dist/src/types/tool-visibility.d.ts +0 -36
  157. package/dist/src/types/tool-visibility.js +0 -551
  158. package/dist/src/types/tool-visibility.js.map +0 -1
  159. package/dist/src/utils/auto-path-detection.d.ts +0 -26
  160. package/dist/src/utils/auto-path-detection.js +0 -198
  161. package/dist/src/utils/auto-path-detection.js.map +0 -1
  162. package/dist/src/utils/championship-format.d.ts +0 -30
  163. package/dist/src/utils/championship-format.js +0 -81
  164. package/dist/src/utils/championship-format.js.map +0 -1
  165. package/dist/src/utils/cli-detector.d.ts +0 -17
  166. package/dist/src/utils/cli-detector.js +0 -247
  167. package/dist/src/utils/cli-detector.js.map +0 -1
  168. package/dist/src/utils/display-protocol.d.ts +0 -57
  169. package/dist/src/utils/display-protocol.js +0 -131
  170. package/dist/src/utils/display-protocol.js.map +0 -1
  171. package/dist/src/utils/username-detector.d.ts +0 -27
  172. package/dist/src/utils/username-detector.js +0 -90
  173. package/dist/src/utils/username-detector.js.map +0 -1
  174. package/dist/src/utils/visual-style.d.ts +0 -62
  175. package/dist/src/utils/visual-style.js +0 -166
  176. package/dist/src/utils/visual-style.js.map +0 -1
  177. package/scripts/postinstall.js +0 -50
  178. 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":";AAAA;;;;GAIG;;AAmBH,8CASC;AAKD,wCAOC;AAKD,sCASC;AAKD,kCAQC;AAKD,oCAQC;AAKD,gCAiBC;AAKD,gCAMC;AAKD,0CAMC;AAKD,sCAMC;AAKD,kCAMC;AAKD,oCAEC;AAKD,0CAMC;AAlKD,uCAAuC;AACvC,MAAM,IAAI,GAAG,UAAU,CAAC;AACxB,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAE,gCAAgC;AAClE,MAAM,KAAK,GAAG,SAAS,CAAC;AACxB,MAAM,IAAI,GAAG,SAAS,CAAC;AAQvB;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,UAAkB,EAAE,QAAgB,EAAE;IACtE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAE7B,sFAAsF;IACtF,qDAAqD;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpD,OAAO,GAAG,GAAG,IAAI,UAAU,GAAG,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,UAAkB,EAAE,QAAgB,EAAE;IACnE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAE7B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEnD,OAAO,GAAG,GAAG,IAAI,UAAU,GAAG,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,KAAa;IACzC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAC1E,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACxD,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC1D,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC1D,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;IAC5E,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;IAC9E,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACxE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,KAAa;IACvC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAE/C,OAAO;QACL,KAAK,EAAE,GAAG,KAAK,IAAI,WAAW,UAAU,KAAK,OAAO,KAAK,EAAE;QAC3D,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;QAC5B,KAAK,EAAE,OAAO,IAAI,WAAW,MAAM,GAAG,KAAK,EAAE;KAC9C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,SAAiB,EAAE,KAAa,EAAE,KAAc;IAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAEnE,OAAO;QACL,KAAK,EAAE,MAAM,WAAW,GAAG,SAAS,KAAK,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,EAAE;QACzF,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC;QACjC,KAAK,EAAE,MAAM,IAAI,cAAc,KAAK,EAAE;KACvC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,MAAc,EAAE,KAAa;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAEtD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,WAAW,CAAC;IACvB,CAAC;SAAM,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,GAAG,aAAa,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,UAAU,CAAC;IACtB,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,WAAW,WAAW,MAAM,IAAI,KAAK,GAAG,KAAK,EAAE;QAC5D,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC;QACjC,KAAK,EAAE,MAAM,IAAI,WAAW,MAAM,GAAG,KAAK,EAAE;KAC7C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,IAAY;IACrC,2BAA2B;IAC3B,OAAO,IAAI;SACR,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;SACzB,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;SACzB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,WAAmB,EAAE,UAAkB;IACrE,OAAO;QACL,KAAK,EAAE,OAAO,WAAW,SAAS,WAAW,GAAG,KAAK,EAAE;QACvD,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC;QACjC,KAAK,EAAE,MAAM,IAAI,eAAe,UAAU,IAAI,KAAK,EAAE;KACtD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,MAAc,EAAE,MAAe;IAC3D,OAAO;QACL,KAAK,EAAE,KAAK,WAAW,GAAG,MAAM,YAAY,KAAK,EAAE;QACnD,KAAK,EAAE,+BAA+B;QACtC,KAAK,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,WAAW,GAAG,KAAK,EAAE;KACpD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,MAAc,EAAE,KAAa;IACvD,OAAO;QACL,KAAK,EAAE,KAAK,MAAM,UAAU;QAC5B,KAAK,EAAE,6BAA6B;QACpC,KAAK,EAAE,WAAW,KAAK,EAAE;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,KAAmB;IAC9C,OAAO,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe;IAC7B,OAAO;QACL,KAAK,EAAE,MAAM,WAAW,GAAG,IAAI,sBAAsB,KAAK,EAAE;QAC5D,KAAK,EAAE,4BAA4B,MAAM,OAAO,KAAK,EAAE;QACvD,KAAK,EAAE,MAAM,WAAW,GAAG,IAAI,oBAAoB,KAAK,EAAE;KAC3D,CAAC;AACJ,CAAC"}
@@ -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();