faf-mcp 2.3.1 โ†’ 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 (177) hide show
  1. package/CHANGELOG.md +26 -3
  2. package/CLAUDE.md +6 -6
  3. package/README.md +71 -72
  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 +103 -682
  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 +16 -13
  43. package/project.faf +11 -6
  44. package/scripts/check-engines.mjs +53 -0
  45. package/scripts/sync-version.js +33 -19
  46. package/skills/faf-ide/SKILL.md +40 -0
  47. package/dist/src/config/visibility.d.ts +0 -41
  48. package/dist/src/config/visibility.js +0 -158
  49. package/dist/src/config/visibility.js.map +0 -1
  50. package/dist/src/faf-core/commands/audit.d.ts +0 -21
  51. package/dist/src/faf-core/commands/audit.js +0 -83
  52. package/dist/src/faf-core/commands/audit.js.map +0 -1
  53. package/dist/src/faf-core/commands/auto.d.ts +0 -25
  54. package/dist/src/faf-core/commands/auto.js +0 -74
  55. package/dist/src/faf-core/commands/auto.js.map +0 -1
  56. package/dist/src/faf-core/commands/doctor.d.ts +0 -17
  57. package/dist/src/faf-core/commands/doctor.js +0 -198
  58. package/dist/src/faf-core/commands/doctor.js.map +0 -1
  59. package/dist/src/faf-core/commands/enhance.d.ts +0 -46
  60. package/dist/src/faf-core/commands/enhance.js +0 -360
  61. package/dist/src/faf-core/commands/enhance.js.map +0 -1
  62. package/dist/src/faf-core/commands/formats.d.ts +0 -22
  63. package/dist/src/faf-core/commands/formats.js +0 -117
  64. package/dist/src/faf-core/commands/formats.js.map +0 -1
  65. package/dist/src/faf-core/commands/human.d.ts +0 -27
  66. package/dist/src/faf-core/commands/human.js +0 -183
  67. package/dist/src/faf-core/commands/human.js.map +0 -1
  68. package/dist/src/faf-core/commands/init.d.ts +0 -26
  69. package/dist/src/faf-core/commands/init.js +0 -114
  70. package/dist/src/faf-core/commands/init.js.map +0 -1
  71. package/dist/src/faf-core/commands/innit.d.ts +0 -7
  72. package/dist/src/faf-core/commands/innit.js +0 -13
  73. package/dist/src/faf-core/commands/innit.js.map +0 -1
  74. package/dist/src/faf-core/commands/migrate.d.ts +0 -15
  75. package/dist/src/faf-core/commands/migrate.js +0 -86
  76. package/dist/src/faf-core/commands/migrate.js.map +0 -1
  77. package/dist/src/faf-core/commands/quick.d.ts +0 -16
  78. package/dist/src/faf-core/commands/quick.js +0 -184
  79. package/dist/src/faf-core/commands/quick.js.map +0 -1
  80. package/dist/src/faf-core/commands/readme.d.ts +0 -47
  81. package/dist/src/faf-core/commands/readme.js +0 -361
  82. package/dist/src/faf-core/commands/readme.js.map +0 -1
  83. package/dist/src/faf-core/commands/score.d.ts +0 -47
  84. package/dist/src/faf-core/commands/score.js +0 -49
  85. package/dist/src/faf-core/commands/score.js.map +0 -1
  86. package/dist/src/faf-core/commands/update.d.ts +0 -12
  87. package/dist/src/faf-core/commands/update.js +0 -46
  88. package/dist/src/faf-core/commands/update.js.map +0 -1
  89. package/dist/src/faf-core/commands/validate.d.ts +0 -21
  90. package/dist/src/faf-core/commands/validate.js +0 -81
  91. package/dist/src/faf-core/commands/validate.js.map +0 -1
  92. package/dist/src/faf-core/compiler/faf-compiler.d.ts +0 -138
  93. package/dist/src/faf-core/compiler/faf-compiler.js +0 -1362
  94. package/dist/src/faf-core/compiler/faf-compiler.js.map +0 -1
  95. package/dist/src/faf-core/engines/fab-formats-processor.d.ts +0 -166
  96. package/dist/src/faf-core/engines/fab-formats-processor.js +0 -1274
  97. package/dist/src/faf-core/engines/fab-formats-processor.js.map +0 -1
  98. package/dist/src/faf-core/engines/faf-dna.d.ts +0 -159
  99. package/dist/src/faf-core/engines/faf-dna.js +0 -555
  100. package/dist/src/faf-core/engines/faf-dna.js.map +0 -1
  101. package/dist/src/faf-core/engines/relentless-context-extractor.d.ts +0 -100
  102. package/dist/src/faf-core/engines/relentless-context-extractor.js +0 -625
  103. package/dist/src/faf-core/engines/relentless-context-extractor.js.map +0 -1
  104. package/dist/src/faf-core/fix-once/types.d.ts +0 -257
  105. package/dist/src/faf-core/fix-once/types.js +0 -26
  106. package/dist/src/faf-core/fix-once/types.js.map +0 -1
  107. package/dist/src/faf-core/generators/faf-generator-championship.d.ts +0 -16
  108. package/dist/src/faf-core/generators/faf-generator-championship.js +0 -463
  109. package/dist/src/faf-core/generators/faf-generator-championship.js.map +0 -1
  110. package/dist/src/faf-core/inject.d.ts +0 -19
  111. package/dist/src/faf-core/inject.js +0 -57
  112. package/dist/src/faf-core/inject.js.map +0 -1
  113. package/dist/src/faf-core/parsers/index.d.ts +0 -12
  114. package/dist/src/faf-core/parsers/index.js +0 -29
  115. package/dist/src/faf-core/parsers/index.js.map +0 -1
  116. package/dist/src/faf-core/utils/balance-visualizer.d.ts +0 -37
  117. package/dist/src/faf-core/utils/balance-visualizer.js +0 -197
  118. package/dist/src/faf-core/utils/balance-visualizer.js.map +0 -1
  119. package/dist/src/faf-core/utils/championship-style.d.ts +0 -109
  120. package/dist/src/faf-core/utils/championship-style.js +0 -219
  121. package/dist/src/faf-core/utils/championship-style.js.map +0 -1
  122. package/dist/src/faf-core/utils/chrome-extension-detector.d.ts +0 -73
  123. package/dist/src/faf-core/utils/chrome-extension-detector.js +0 -268
  124. package/dist/src/faf-core/utils/chrome-extension-detector.js.map +0 -1
  125. package/dist/src/faf-core/utils/platform-detector.d.ts +0 -30
  126. package/dist/src/faf-core/utils/platform-detector.js +0 -218
  127. package/dist/src/faf-core/utils/platform-detector.js.map +0 -1
  128. package/dist/src/faf-core/utils/technical-credit.d.ts +0 -35
  129. package/dist/src/faf-core/utils/technical-credit.js +0 -286
  130. package/dist/src/faf-core/utils/technical-credit.js.map +0 -1
  131. package/dist/src/faf-core/utils/yaml-generator.d.ts +0 -41
  132. package/dist/src/faf-core/utils/yaml-generator.js +0 -360
  133. package/dist/src/faf-core/utils/yaml-generator.js.map +0 -1
  134. package/dist/src/handlers/behavioral-instruction.d.ts +0 -16
  135. package/dist/src/handlers/behavioral-instruction.js +0 -43
  136. package/dist/src/handlers/behavioral-instruction.js.map +0 -1
  137. package/dist/src/handlers/championship-tools.d.ts +0 -116
  138. package/dist/src/handlers/championship-tools.js +0 -2320
  139. package/dist/src/handlers/championship-tools.js.map +0 -1
  140. package/dist/src/handlers/cloud-handler.d.ts +0 -59
  141. package/dist/src/handlers/cloud-handler.js +0 -348
  142. package/dist/src/handlers/cloud-handler.js.map +0 -1
  143. package/dist/src/handlers/tool-registry.d.ts +0 -23
  144. package/dist/src/handlers/tool-registry.js +0 -68
  145. package/dist/src/handlers/tool-registry.js.map +0 -1
  146. package/dist/src/handlers/tool-types.d.ts +0 -167
  147. package/dist/src/handlers/tool-types.js +0 -7
  148. package/dist/src/handlers/tool-types.js.map +0 -1
  149. package/dist/src/test-all-functions.d.ts +0 -15
  150. package/dist/src/test-all-functions.js +0 -163
  151. package/dist/src/test-all-functions.js.map +0 -1
  152. package/dist/src/types/mcp-tools.d.ts +0 -53
  153. package/dist/src/types/mcp-tools.js +0 -77
  154. package/dist/src/types/mcp-tools.js.map +0 -1
  155. package/dist/src/types/tool-visibility.d.ts +0 -36
  156. package/dist/src/types/tool-visibility.js +0 -551
  157. package/dist/src/types/tool-visibility.js.map +0 -1
  158. package/dist/src/utils/auto-path-detection.d.ts +0 -26
  159. package/dist/src/utils/auto-path-detection.js +0 -198
  160. package/dist/src/utils/auto-path-detection.js.map +0 -1
  161. package/dist/src/utils/championship-format.d.ts +0 -30
  162. package/dist/src/utils/championship-format.js +0 -81
  163. package/dist/src/utils/championship-format.js.map +0 -1
  164. package/dist/src/utils/cli-detector.d.ts +0 -17
  165. package/dist/src/utils/cli-detector.js +0 -247
  166. package/dist/src/utils/cli-detector.js.map +0 -1
  167. package/dist/src/utils/display-protocol.d.ts +0 -57
  168. package/dist/src/utils/display-protocol.js +0 -131
  169. package/dist/src/utils/display-protocol.js.map +0 -1
  170. package/dist/src/utils/username-detector.d.ts +0 -27
  171. package/dist/src/utils/username-detector.js +0 -90
  172. package/dist/src/utils/username-detector.js.map +0 -1
  173. package/dist/src/utils/visual-style.d.ts +0 -62
  174. package/dist/src/utils/visual-style.js +0 -166
  175. package/dist/src/utils/visual-style.js.map +0 -1
  176. package/scripts/postinstall.js +0 -50
  177. 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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"}
@@ -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();