@defai.digital/ax-cli 3.2.0 → 3.4.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 (239) hide show
  1. package/.ax-cli/memory.json +8 -1
  2. package/README.md +118 -2
  3. package/config/models.yaml +13 -0
  4. package/config/settings.yaml +6 -0
  5. package/dist/agent/context-manager.d.ts +5 -5
  6. package/dist/agent/context-manager.js +19 -9
  7. package/dist/agent/context-manager.js.map +1 -1
  8. package/dist/agent/dependency-resolver.js +2 -1
  9. package/dist/agent/dependency-resolver.js.map +1 -1
  10. package/dist/agent/llm-agent.d.ts +3 -2
  11. package/dist/agent/llm-agent.js +64 -58
  12. package/dist/agent/llm-agent.js.map +1 -1
  13. package/dist/agent/subagent.js +2 -1
  14. package/dist/agent/subagent.js.map +1 -1
  15. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.d.ts +29 -0
  16. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.js +103 -0
  17. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.js.map +1 -0
  18. package/dist/analyzers/architecture/architecture-analyzer.d.ts +58 -0
  19. package/dist/analyzers/architecture/architecture-analyzer.js +276 -0
  20. package/dist/analyzers/architecture/architecture-analyzer.js.map +1 -0
  21. package/dist/analyzers/architecture/index.d.ts +12 -0
  22. package/dist/analyzers/architecture/index.js +14 -0
  23. package/dist/analyzers/architecture/index.js.map +1 -0
  24. package/dist/analyzers/architecture/pattern-detectors/base-detector.d.ts +27 -0
  25. package/dist/analyzers/architecture/pattern-detectors/base-detector.js +31 -0
  26. package/dist/analyzers/architecture/pattern-detectors/base-detector.js.map +1 -0
  27. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.d.ts +11 -0
  28. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.js +57 -0
  29. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.js.map +1 -0
  30. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.d.ts +11 -0
  31. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.js +43 -0
  32. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.js.map +1 -0
  33. package/dist/analyzers/architecture/pattern-detectors/repository-detector.d.ts +11 -0
  34. package/dist/analyzers/architecture/pattern-detectors/repository-detector.js +49 -0
  35. package/dist/analyzers/architecture/pattern-detectors/repository-detector.js.map +1 -0
  36. package/dist/analyzers/architecture/project-structure-scanner.d.ts +54 -0
  37. package/dist/analyzers/architecture/project-structure-scanner.js +200 -0
  38. package/dist/analyzers/architecture/project-structure-scanner.js.map +1 -0
  39. package/dist/analyzers/best-practices/base-rule.d.ts +45 -0
  40. package/dist/analyzers/best-practices/base-rule.js +45 -0
  41. package/dist/analyzers/best-practices/base-rule.js.map +1 -0
  42. package/dist/analyzers/best-practices/best-practice-validator.d.ts +35 -0
  43. package/dist/analyzers/best-practices/best-practice-validator.js +181 -0
  44. package/dist/analyzers/best-practices/best-practice-validator.js.map +1 -0
  45. package/dist/analyzers/best-practices/rules/index.d.ts +7 -0
  46. package/dist/analyzers/best-practices/rules/index.js +56 -0
  47. package/dist/analyzers/best-practices/rules/index.js.map +1 -0
  48. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.d.ts +17 -0
  49. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.js +41 -0
  50. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.js.map +1 -0
  51. package/dist/analyzers/best-practices/rules/typescript/function-complexity.d.ts +27 -0
  52. package/dist/analyzers/best-practices/rules/typescript/function-complexity.js +76 -0
  53. package/dist/analyzers/best-practices/rules/typescript/function-complexity.js.map +1 -0
  54. package/dist/analyzers/best-practices/rules/typescript/index.d.ts +15 -0
  55. package/dist/analyzers/best-practices/rules/typescript/index.js +16 -0
  56. package/dist/analyzers/best-practices/rules/typescript/index.js.map +1 -0
  57. package/dist/analyzers/best-practices/rules/typescript/max-file-length.d.ts +18 -0
  58. package/dist/analyzers/best-practices/rules/typescript/max-file-length.js +25 -0
  59. package/dist/analyzers/best-practices/rules/typescript/max-file-length.js.map +1 -0
  60. package/dist/analyzers/best-practices/rules/typescript/no-any-type.d.ts +17 -0
  61. package/dist/analyzers/best-practices/rules/typescript/no-any-type.js +27 -0
  62. package/dist/analyzers/best-practices/rules/typescript/no-any-type.js.map +1 -0
  63. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.d.ts +18 -0
  64. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.js +39 -0
  65. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.js.map +1 -0
  66. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.d.ts +17 -0
  67. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js +32 -0
  68. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js.map +1 -0
  69. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.d.ts +17 -0
  70. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js +36 -0
  71. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js.map +1 -0
  72. package/dist/analyzers/best-practices/rules/typescript/prefer-const.d.ts +17 -0
  73. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js +33 -0
  74. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js.map +1 -0
  75. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.d.ts +17 -0
  76. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js +34 -0
  77. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js.map +1 -0
  78. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.d.ts +17 -0
  79. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.js +27 -0
  80. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.js.map +1 -0
  81. package/dist/analyzers/best-practices/types.d.ts +86 -0
  82. package/dist/analyzers/best-practices/types.js +7 -0
  83. package/dist/analyzers/best-practices/types.js.map +1 -0
  84. package/dist/analyzers/cache/analysis-cache.d.ts +41 -0
  85. package/dist/analyzers/cache/analysis-cache.js +84 -0
  86. package/dist/analyzers/cache/analysis-cache.js.map +1 -0
  87. package/dist/analyzers/errors.d.ts +51 -0
  88. package/dist/analyzers/errors.js +79 -0
  89. package/dist/analyzers/errors.js.map +1 -0
  90. package/dist/commands/doctor.js +3 -2
  91. package/dist/commands/doctor.js.map +1 -1
  92. package/dist/commands/frontend.d.ts +9 -0
  93. package/dist/commands/frontend.js +645 -0
  94. package/dist/commands/frontend.js.map +1 -0
  95. package/dist/commands/mcp.js +652 -3
  96. package/dist/commands/mcp.js.map +1 -1
  97. package/dist/commands/models.js +2 -2
  98. package/dist/commands/models.js.map +1 -1
  99. package/dist/commands/setup.js +100 -41
  100. package/dist/commands/setup.js.map +1 -1
  101. package/dist/constants.d.ts +4 -0
  102. package/dist/constants.js +4 -0
  103. package/dist/constants.js.map +1 -1
  104. package/dist/hooks/use-enhanced-input.js +16 -3
  105. package/dist/hooks/use-enhanced-input.js.map +1 -1
  106. package/dist/hooks/use-input-handler.js +9 -4
  107. package/dist/hooks/use-input-handler.js.map +1 -1
  108. package/dist/index.js +5 -2
  109. package/dist/index.js.map +1 -1
  110. package/dist/llm/client.d.ts +1 -0
  111. package/dist/llm/tools.js +86 -0
  112. package/dist/llm/tools.js.map +1 -1
  113. package/dist/llm/types.d.ts +49 -22
  114. package/dist/llm/types.js +12 -8
  115. package/dist/llm/types.js.map +1 -1
  116. package/dist/mcp/client.d.ts +5 -0
  117. package/dist/mcp/client.js +55 -0
  118. package/dist/mcp/client.js.map +1 -1
  119. package/dist/mcp/config.d.ts +1 -1
  120. package/dist/mcp/config.js +2 -2
  121. package/dist/mcp/config.js.map +1 -1
  122. package/dist/mcp/health.d.ts +120 -0
  123. package/dist/mcp/health.js +267 -0
  124. package/dist/mcp/health.js.map +1 -0
  125. package/dist/mcp/reconnection.d.ts +93 -0
  126. package/dist/mcp/reconnection.js +216 -0
  127. package/dist/mcp/reconnection.js.map +1 -0
  128. package/dist/mcp/registry.d.ts +71 -0
  129. package/dist/mcp/registry.js +257 -0
  130. package/dist/mcp/registry.js.map +1 -0
  131. package/dist/mcp/resources.d.ts +53 -0
  132. package/dist/mcp/resources.js +135 -0
  133. package/dist/mcp/resources.js.map +1 -0
  134. package/dist/mcp/templates.d.ts +52 -0
  135. package/dist/mcp/templates.js +624 -0
  136. package/dist/mcp/templates.js.map +1 -0
  137. package/dist/mcp/validation.d.ts +25 -0
  138. package/dist/mcp/validation.js +209 -0
  139. package/dist/mcp/validation.js.map +1 -0
  140. package/dist/memory/context-generator.js +1 -2
  141. package/dist/memory/context-generator.js.map +1 -1
  142. package/dist/planner/types.d.ts +2 -2
  143. package/dist/schemas/api-schemas.d.ts +2 -1
  144. package/dist/schemas/api-schemas.js +6 -4
  145. package/dist/schemas/api-schemas.js.map +1 -1
  146. package/dist/schemas/index.d.ts +4 -4
  147. package/dist/schemas/tool-schemas.d.ts +2 -2
  148. package/dist/schemas/yaml-schemas.d.ts +15 -0
  149. package/dist/schemas/yaml-schemas.js +3 -0
  150. package/dist/schemas/yaml-schemas.js.map +1 -1
  151. package/dist/sdk/index.d.ts +138 -0
  152. package/dist/sdk/index.js +173 -0
  153. package/dist/sdk/index.js.map +1 -0
  154. package/dist/sdk/types.d.ts +53 -0
  155. package/dist/sdk/types.js +8 -0
  156. package/dist/sdk/types.js.map +1 -0
  157. package/dist/tools/analysis-tools/architecture-tool.d.ts +46 -0
  158. package/dist/tools/analysis-tools/architecture-tool.js +124 -0
  159. package/dist/tools/analysis-tools/architecture-tool.js.map +1 -0
  160. package/dist/tools/analysis-tools/validation-tool.d.ts +51 -0
  161. package/dist/tools/analysis-tools/validation-tool.js +121 -0
  162. package/dist/tools/analysis-tools/validation-tool.js.map +1 -0
  163. package/dist/tools/bash.js +25 -10
  164. package/dist/tools/bash.js.map +1 -1
  165. package/dist/tools/web-search/cache.d.ts +62 -0
  166. package/dist/tools/web-search/cache.js +105 -0
  167. package/dist/tools/web-search/cache.js.map +1 -0
  168. package/dist/tools/web-search/engines/brave.d.ts +16 -0
  169. package/dist/tools/web-search/engines/brave.js +99 -0
  170. package/dist/tools/web-search/engines/brave.js.map +1 -0
  171. package/dist/tools/web-search/engines/crates.d.ts +19 -0
  172. package/dist/tools/web-search/engines/crates.js +87 -0
  173. package/dist/tools/web-search/engines/crates.js.map +1 -0
  174. package/dist/tools/web-search/engines/npm.d.ts +18 -0
  175. package/dist/tools/web-search/engines/npm.js +86 -0
  176. package/dist/tools/web-search/engines/npm.js.map +1 -0
  177. package/dist/tools/web-search/engines/pypi.d.ts +18 -0
  178. package/dist/tools/web-search/engines/pypi.js +75 -0
  179. package/dist/tools/web-search/engines/pypi.js.map +1 -0
  180. package/dist/tools/web-search/engines/tavily.d.ts +17 -0
  181. package/dist/tools/web-search/engines/tavily.js +73 -0
  182. package/dist/tools/web-search/engines/tavily.js.map +1 -0
  183. package/dist/tools/web-search/index.d.ts +13 -0
  184. package/dist/tools/web-search/index.js +13 -0
  185. package/dist/tools/web-search/index.js.map +1 -0
  186. package/dist/tools/web-search/router.d.ts +36 -0
  187. package/dist/tools/web-search/router.js +280 -0
  188. package/dist/tools/web-search/router.js.map +1 -0
  189. package/dist/tools/web-search/types.d.ts +45 -0
  190. package/dist/tools/web-search/types.js +6 -0
  191. package/dist/tools/web-search/types.js.map +1 -0
  192. package/dist/tools/web-search/web-search-tool.d.ts +51 -0
  193. package/dist/tools/web-search/web-search-tool.js +256 -0
  194. package/dist/tools/web-search/web-search-tool.js.map +1 -0
  195. package/dist/types/analysis.d.ts +177 -0
  196. package/dist/types/analysis.js +8 -0
  197. package/dist/types/analysis.js.map +1 -0
  198. package/dist/ui/components/api-key-input.js +2 -2
  199. package/dist/ui/components/api-key-input.js.map +1 -1
  200. package/dist/ui/components/chat-history.js +14 -7
  201. package/dist/ui/components/chat-history.js.map +1 -1
  202. package/dist/ui/components/chat-input.js +12 -7
  203. package/dist/ui/components/chat-input.js.map +1 -1
  204. package/dist/ui/components/chat-interface.js +75 -54
  205. package/dist/ui/components/chat-interface.js.map +1 -1
  206. package/dist/ui/components/keyboard-hints.js +5 -4
  207. package/dist/ui/components/keyboard-hints.js.map +1 -1
  208. package/dist/ui/components/quick-actions.js +1 -0
  209. package/dist/ui/components/quick-actions.js.map +1 -1
  210. package/dist/ui/components/reasoning-display.js +14 -4
  211. package/dist/ui/components/reasoning-display.js.map +1 -1
  212. package/dist/ui/components/status-bar.d.ts +1 -0
  213. package/dist/ui/components/status-bar.js +37 -39
  214. package/dist/ui/components/status-bar.js.map +1 -1
  215. package/dist/ui/components/toast-notification.d.ts +29 -0
  216. package/dist/ui/components/toast-notification.js +17 -3
  217. package/dist/ui/components/toast-notification.js.map +1 -1
  218. package/dist/ui/components/welcome-panel.d.ts +1 -0
  219. package/dist/ui/components/welcome-panel.js +106 -4
  220. package/dist/ui/components/welcome-panel.js.map +1 -1
  221. package/dist/utils/analysis-logger.d.ts +47 -0
  222. package/dist/utils/analysis-logger.js +70 -0
  223. package/dist/utils/analysis-logger.js.map +1 -0
  224. package/dist/utils/automatosx-detector.d.ts +19 -0
  225. package/dist/utils/automatosx-detector.js +52 -0
  226. package/dist/utils/automatosx-detector.js.map +1 -0
  227. package/dist/utils/config-loader.d.ts +4 -0
  228. package/dist/utils/config-loader.js.map +1 -1
  229. package/dist/utils/confirmation-service.js +1 -1
  230. package/dist/utils/confirmation-service.js.map +1 -1
  231. package/dist/utils/init-previewer.js +26 -4
  232. package/dist/utils/init-previewer.js.map +1 -1
  233. package/dist/utils/setup-validator.js +1 -0
  234. package/dist/utils/setup-validator.js.map +1 -1
  235. package/dist/utils/text-utils.d.ts +1 -0
  236. package/dist/utils/text-utils.js +12 -0
  237. package/dist/utils/text-utils.js.map +1 -1
  238. package/package.json +19 -4
  239. package/vitest.config.ts +1 -0
@@ -0,0 +1,624 @@
1
+ /**
2
+ * Pre-configured MCP server templates for popular services
3
+ * Enables one-command setup: ax-cli mcp add <name> --template
4
+ */
5
+ /**
6
+ * Pre-configured templates for popular MCP servers
7
+ * Focus on front-end development tools
8
+ */
9
+ export const TEMPLATES = {
10
+ // ============================================
11
+ // DESIGN TOOLS
12
+ // ============================================
13
+ figma: {
14
+ name: 'figma',
15
+ description: 'Official Figma MCP server for design-to-code workflows',
16
+ category: 'design',
17
+ officialServer: true,
18
+ config: {
19
+ name: 'figma',
20
+ transport: {
21
+ type: 'stdio',
22
+ command: 'npx',
23
+ args: ['@figma/mcp-server'],
24
+ env: {}
25
+ }
26
+ },
27
+ requiredEnv: [
28
+ {
29
+ name: 'FIGMA_ACCESS_TOKEN',
30
+ description: 'Personal access token from Figma settings',
31
+ url: 'https://help.figma.com/hc/en-us/articles/8085703771159'
32
+ }
33
+ ],
34
+ setupInstructions: `
35
+ 1. Generate a personal access token at https://figma.com/settings
36
+ 2. Set environment variable: export FIGMA_ACCESS_TOKEN="your_token"
37
+ 3. Run: ax-cli mcp add figma --template
38
+ 4. Test: ax-cli mcp test figma
39
+ `.trim(),
40
+ usageExamples: [
41
+ 'Get design tokens from a Figma file',
42
+ 'Export components from Figma to React/Vue',
43
+ 'Generate design system tokens (colors, typography, spacing)',
44
+ 'Extract assets and images from Figma frames',
45
+ 'Sync design changes to code automatically'
46
+ ],
47
+ troubleshooting: [
48
+ {
49
+ issue: 'Authentication failed',
50
+ solution: 'Verify FIGMA_ACCESS_TOKEN is set and valid. Generate a new token at figma.com/settings with file read permissions.'
51
+ },
52
+ {
53
+ issue: 'File not found',
54
+ solution: 'Ensure you have access to the Figma file. Check the file URL is correct and you have at least view permissions.'
55
+ },
56
+ {
57
+ issue: 'npx command not found',
58
+ solution: 'Install Node.js 24+ and ensure npx is available in your PATH.'
59
+ }
60
+ ]
61
+ },
62
+ // ============================================
63
+ // VERSION CONTROL
64
+ // ============================================
65
+ github: {
66
+ name: 'github',
67
+ description: 'Official GitHub MCP server for repository management',
68
+ category: 'version-control',
69
+ officialServer: true,
70
+ config: {
71
+ name: 'github',
72
+ transport: {
73
+ type: 'stdio',
74
+ command: 'npx',
75
+ args: ['@modelcontextprotocol/server-github'],
76
+ env: {}
77
+ }
78
+ },
79
+ requiredEnv: [
80
+ {
81
+ name: 'GITHUB_TOKEN',
82
+ description: 'GitHub personal access token (classic or fine-grained)',
83
+ url: 'https://github.com/settings/tokens'
84
+ }
85
+ ],
86
+ setupInstructions: `
87
+ 1. Create a personal access token at https://github.com/settings/tokens
88
+ 2. Grant permissions: repo (all), workflow (if needed)
89
+ 3. Set environment variable: export GITHUB_TOKEN="ghp_your_token"
90
+ 4. Run: ax-cli mcp add github --template
91
+ 5. Test: ax-cli mcp test github
92
+ `.trim(),
93
+ usageExamples: [
94
+ 'Create and manage pull requests',
95
+ 'Search and manage issues',
96
+ 'Review code and comments',
97
+ 'Access repository information',
98
+ 'Manage GitHub workflows and actions'
99
+ ],
100
+ troubleshooting: [
101
+ {
102
+ issue: 'Authentication failed (401)',
103
+ solution: 'Verify GITHUB_TOKEN is valid and starts with "ghp_" (classic) or "github_pat_" (fine-grained). Regenerate if expired.'
104
+ },
105
+ {
106
+ issue: 'Permission denied',
107
+ solution: 'Check token has required scopes. For most operations, you need "repo" scope. For workflows, add "workflow" scope.'
108
+ }
109
+ ]
110
+ },
111
+ // ============================================
112
+ // DEPLOYMENT PLATFORMS
113
+ // ============================================
114
+ vercel: {
115
+ name: 'vercel',
116
+ description: 'Vercel MCP server for deployment automation',
117
+ category: 'deployment',
118
+ officialServer: false, // Community server
119
+ config: {
120
+ name: 'vercel',
121
+ transport: {
122
+ type: 'http',
123
+ url: 'https://api.vercel.com/mcp', // Hypothetical - check if official exists
124
+ headers: {}
125
+ }
126
+ },
127
+ requiredEnv: [
128
+ {
129
+ name: 'VERCEL_TOKEN',
130
+ description: 'Vercel API token from account settings',
131
+ url: 'https://vercel.com/account/tokens'
132
+ }
133
+ ],
134
+ setupInstructions: `
135
+ 1. Create an API token at https://vercel.com/account/tokens
136
+ 2. Set environment variable: export VERCEL_TOKEN="your_token"
137
+ 3. Run: ax-cli mcp add vercel --template
138
+ 4. Test: ax-cli mcp test vercel
139
+ `.trim(),
140
+ usageExamples: [
141
+ 'Deploy projects to Vercel',
142
+ 'Manage deployments and domains',
143
+ 'Configure environment variables',
144
+ 'Monitor deployment status',
145
+ 'Roll back deployments'
146
+ ],
147
+ troubleshooting: [
148
+ {
149
+ issue: 'Deployment failed',
150
+ solution: 'Check build logs in Vercel dashboard. Ensure all environment variables are configured correctly.'
151
+ },
152
+ {
153
+ issue: 'Domain configuration error',
154
+ solution: 'Verify DNS settings are correct. It may take up to 24 hours for DNS changes to propagate.'
155
+ }
156
+ ]
157
+ },
158
+ netlify: {
159
+ name: 'netlify',
160
+ description: 'Netlify MCP server for JAMstack deployments',
161
+ category: 'deployment',
162
+ officialServer: false,
163
+ config: {
164
+ name: 'netlify',
165
+ transport: {
166
+ type: 'http',
167
+ url: 'https://api.netlify.com/mcp',
168
+ headers: {}
169
+ }
170
+ },
171
+ requiredEnv: [
172
+ {
173
+ name: 'NETLIFY_TOKEN',
174
+ description: 'Netlify personal access token',
175
+ url: 'https://app.netlify.com/user/applications'
176
+ }
177
+ ],
178
+ setupInstructions: `
179
+ 1. Create a personal access token at https://app.netlify.com/user/applications
180
+ 2. Set environment variable: export NETLIFY_TOKEN="your_token"
181
+ 3. Run: ax-cli mcp add netlify --template
182
+ 4. Test: ax-cli mcp test netlify
183
+ `.trim(),
184
+ usageExamples: [
185
+ 'Deploy static sites to Netlify',
186
+ 'Manage forms and serverless functions',
187
+ 'Configure build settings',
188
+ 'Monitor site analytics',
189
+ 'Manage custom domains and SSL'
190
+ ],
191
+ troubleshooting: [
192
+ {
193
+ issue: 'Build timeout',
194
+ solution: 'Optimize build process or upgrade to a higher plan with longer build times.'
195
+ }
196
+ ]
197
+ },
198
+ // ============================================
199
+ // TESTING & QA
200
+ // ============================================
201
+ puppeteer: {
202
+ name: 'puppeteer',
203
+ description: 'Puppeteer MCP server for browser automation and testing',
204
+ category: 'testing',
205
+ officialServer: false,
206
+ config: {
207
+ name: 'puppeteer',
208
+ transport: {
209
+ type: 'stdio',
210
+ command: 'npx',
211
+ args: ['@modelcontextprotocol/server-puppeteer']
212
+ }
213
+ },
214
+ requiredEnv: [],
215
+ setupInstructions: `
216
+ 1. Ensure Node.js 24+ is installed
217
+ 2. Run: ax-cli mcp add puppeteer --template
218
+ 3. Test: ax-cli mcp test puppeteer
219
+
220
+ Note: First run may take longer as Chromium is downloaded.
221
+ `.trim(),
222
+ usageExamples: [
223
+ 'Automate browser interactions for testing',
224
+ 'Take screenshots of web pages',
225
+ 'Generate PDFs from web content',
226
+ 'Scrape dynamic web content',
227
+ 'Validate UI workflows and user journeys'
228
+ ],
229
+ troubleshooting: [
230
+ {
231
+ issue: 'Chromium download failed',
232
+ solution: 'Check internet connection. Try running "npx puppeteer browsers install chrome" manually.'
233
+ },
234
+ {
235
+ issue: 'Browser launch failed',
236
+ solution: 'Install required system dependencies. On Linux: apt-get install -y libx11-xcb1 libxcomposite1 libxcursor1'
237
+ }
238
+ ]
239
+ },
240
+ storybook: {
241
+ name: 'storybook',
242
+ description: 'Storybook MCP server for component development and testing',
243
+ category: 'testing',
244
+ officialServer: false,
245
+ config: {
246
+ name: 'storybook',
247
+ transport: {
248
+ type: 'http',
249
+ url: 'http://localhost:6006/mcp', // Local Storybook instance
250
+ headers: {}
251
+ }
252
+ },
253
+ requiredEnv: [],
254
+ setupInstructions: `
255
+ 1. Ensure Storybook is running: npm run storybook
256
+ 2. Run: ax-cli mcp add storybook --template
257
+ 3. Test: ax-cli mcp test storybook
258
+
259
+ Note: Storybook must be running on port 6006.
260
+ `.trim(),
261
+ usageExamples: [
262
+ 'Generate Storybook stories for components',
263
+ 'Test component variants and states',
264
+ 'Document component APIs',
265
+ 'Visual regression testing',
266
+ 'Accessibility testing with Storybook addons'
267
+ ],
268
+ troubleshooting: [
269
+ {
270
+ issue: 'Connection refused',
271
+ solution: 'Ensure Storybook is running. Start with "npm run storybook" or "yarn storybook".'
272
+ },
273
+ {
274
+ issue: 'Port conflict',
275
+ solution: 'Check if port 6006 is in use. Configure Storybook to use a different port if needed.'
276
+ }
277
+ ]
278
+ },
279
+ chromatic: {
280
+ name: 'chromatic',
281
+ description: 'Chromatic MCP server for visual testing',
282
+ category: 'testing',
283
+ officialServer: false,
284
+ config: {
285
+ name: 'chromatic',
286
+ transport: {
287
+ type: 'http',
288
+ url: 'https://api.chromatic.com/mcp',
289
+ headers: {}
290
+ }
291
+ },
292
+ requiredEnv: [
293
+ {
294
+ name: 'CHROMATIC_PROJECT_TOKEN',
295
+ description: 'Chromatic project token from project settings',
296
+ url: 'https://www.chromatic.com/docs/access-tokens'
297
+ }
298
+ ],
299
+ setupInstructions: `
300
+ 1. Get project token from Chromatic project settings
301
+ 2. Set environment variable: export CHROMATIC_PROJECT_TOKEN="your_token"
302
+ 3. Run: ax-cli mcp add chromatic --template
303
+ 4. Test: ax-cli mcp test chromatic
304
+ `.trim(),
305
+ usageExamples: [
306
+ 'Run visual regression tests',
307
+ 'Capture UI snapshots',
308
+ 'Review visual changes in PRs',
309
+ 'Detect unintended UI changes',
310
+ 'Integrate with CI/CD pipelines'
311
+ ],
312
+ troubleshooting: [
313
+ {
314
+ issue: 'Build failed',
315
+ solution: 'Check Storybook builds successfully. Ensure all stories are loading without errors.'
316
+ }
317
+ ]
318
+ },
319
+ // ============================================
320
+ // MONITORING & ERROR TRACKING
321
+ // ============================================
322
+ sentry: {
323
+ name: 'sentry',
324
+ description: 'Sentry MCP server for error tracking and monitoring',
325
+ category: 'monitoring',
326
+ officialServer: false,
327
+ config: {
328
+ name: 'sentry',
329
+ transport: {
330
+ type: 'http',
331
+ url: 'https://sentry.io/api/0/mcp',
332
+ headers: {}
333
+ }
334
+ },
335
+ requiredEnv: [
336
+ {
337
+ name: 'SENTRY_AUTH_TOKEN',
338
+ description: 'Sentry authentication token',
339
+ url: 'https://sentry.io/settings/account/api/auth-tokens/'
340
+ }
341
+ ],
342
+ setupInstructions: `
343
+ 1. Create an auth token at https://sentry.io/settings/account/api/auth-tokens/
344
+ 2. Grant permissions: project:read, project:write, org:read
345
+ 3. Set environment variable: export SENTRY_AUTH_TOKEN="your_token"
346
+ 4. Run: ax-cli mcp add sentry --template
347
+ 5. Test: ax-cli mcp test sentry
348
+ `.trim(),
349
+ usageExamples: [
350
+ 'Query error events and issues',
351
+ 'Analyze error trends and patterns',
352
+ 'Create and update issues',
353
+ 'Manage release tracking',
354
+ 'Monitor application health'
355
+ ],
356
+ troubleshooting: [
357
+ {
358
+ issue: 'Authentication failed',
359
+ solution: 'Verify SENTRY_AUTH_TOKEN is valid and has required scopes (project:read, project:write, org:read).'
360
+ },
361
+ {
362
+ issue: 'No data returned',
363
+ solution: 'Check that your Sentry project has received events. Ensure DSN is configured correctly in your app.'
364
+ }
365
+ ]
366
+ },
367
+ // ============================================
368
+ // BACKEND & DATABASE
369
+ // ============================================
370
+ supabase: {
371
+ name: 'supabase',
372
+ description: 'Supabase MCP server for backend and database operations',
373
+ category: 'backend',
374
+ officialServer: false,
375
+ config: {
376
+ name: 'supabase',
377
+ transport: {
378
+ type: 'http',
379
+ url: 'https://api.supabase.com/mcp',
380
+ headers: {}
381
+ }
382
+ },
383
+ requiredEnv: [
384
+ {
385
+ name: 'SUPABASE_URL',
386
+ description: 'Your Supabase project URL',
387
+ url: 'https://app.supabase.com'
388
+ },
389
+ {
390
+ name: 'SUPABASE_KEY',
391
+ description: 'Supabase service role key or anon key',
392
+ url: 'https://app.supabase.com'
393
+ }
394
+ ],
395
+ setupInstructions: `
396
+ 1. Get your project URL and API keys from https://app.supabase.com/project/_/settings/api
397
+ 2. Set environment variables:
398
+ export SUPABASE_URL="https://xxxxx.supabase.co"
399
+ export SUPABASE_KEY="your_service_role_key"
400
+ 3. Run: ax-cli mcp add supabase --template
401
+ 4. Test: ax-cli mcp test supabase
402
+ `.trim(),
403
+ usageExamples: [
404
+ 'Query and manage database tables',
405
+ 'Execute SQL queries',
406
+ 'Manage authentication and users',
407
+ 'Work with storage buckets',
408
+ 'Invoke Edge Functions'
409
+ ],
410
+ troubleshooting: [
411
+ {
412
+ issue: 'Connection failed',
413
+ solution: 'Verify SUPABASE_URL is correct and includes the https:// protocol. Check project is not paused.'
414
+ },
415
+ {
416
+ issue: 'Permission denied',
417
+ solution: 'Ensure you are using the service_role key for admin operations, not the anon key.'
418
+ }
419
+ ]
420
+ },
421
+ firebase: {
422
+ name: 'firebase',
423
+ description: 'Firebase MCP server for backend services',
424
+ category: 'backend',
425
+ officialServer: false,
426
+ config: {
427
+ name: 'firebase',
428
+ transport: {
429
+ type: 'http',
430
+ url: 'https://firebase.googleapis.com/mcp',
431
+ headers: {}
432
+ }
433
+ },
434
+ requiredEnv: [
435
+ {
436
+ name: 'FIREBASE_TOKEN',
437
+ description: 'Firebase service account token',
438
+ url: 'https://console.firebase.google.com'
439
+ }
440
+ ],
441
+ setupInstructions: `
442
+ 1. Create a service account at https://console.firebase.google.com/project/_/settings/serviceaccounts
443
+ 2. Download the service account JSON file
444
+ 3. Set environment variable: export FIREBASE_TOKEN="path/to/serviceAccountKey.json"
445
+ 4. Run: ax-cli mcp add firebase --template
446
+ 5. Test: ax-cli mcp test firebase
447
+ `.trim(),
448
+ usageExamples: [
449
+ 'Deploy Firebase Functions',
450
+ 'Manage Firestore database',
451
+ 'Configure Firebase Hosting',
452
+ 'Work with Firebase Authentication',
453
+ 'Monitor Firebase project'
454
+ ],
455
+ troubleshooting: [
456
+ {
457
+ issue: 'Service account error',
458
+ solution: 'Verify service account JSON is valid and has required permissions. Ensure file path is correct.'
459
+ }
460
+ ]
461
+ },
462
+ postgres: {
463
+ name: 'postgres',
464
+ description: 'PostgreSQL MCP server for database operations',
465
+ category: 'backend',
466
+ officialServer: true,
467
+ config: {
468
+ name: 'postgres',
469
+ transport: {
470
+ type: 'stdio',
471
+ command: 'npx',
472
+ args: ['@modelcontextprotocol/server-postgres'],
473
+ env: {}
474
+ }
475
+ },
476
+ requiredEnv: [
477
+ {
478
+ name: 'DATABASE_URL',
479
+ description: 'PostgreSQL connection string',
480
+ url: 'https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING'
481
+ }
482
+ ],
483
+ setupInstructions: `
484
+ 1. Get your PostgreSQL connection string (format: postgresql://user:password@host:port/database)
485
+ 2. Set environment variable: export DATABASE_URL="postgresql://..."
486
+ 3. Run: ax-cli mcp add postgres --template
487
+ 4. Test: ax-cli mcp test postgres
488
+ `.trim(),
489
+ usageExamples: [
490
+ 'Execute SQL queries',
491
+ 'Inspect database schema',
492
+ 'Manage tables and indexes',
493
+ 'Run migrations',
494
+ 'Analyze query performance'
495
+ ],
496
+ troubleshooting: [
497
+ {
498
+ issue: 'Connection failed',
499
+ solution: 'Verify DATABASE_URL is correct. Check PostgreSQL is running and accessible. Ensure firewall allows connection.'
500
+ },
501
+ {
502
+ issue: 'SSL required',
503
+ solution: 'Add "?sslmode=require" to connection string if database requires SSL.'
504
+ }
505
+ ]
506
+ },
507
+ sqlite: {
508
+ name: 'sqlite',
509
+ description: 'SQLite MCP server for file-based database',
510
+ category: 'backend',
511
+ officialServer: true,
512
+ config: {
513
+ name: 'sqlite',
514
+ transport: {
515
+ type: 'stdio',
516
+ command: 'npx',
517
+ args: ['@modelcontextprotocol/server-sqlite'],
518
+ env: {}
519
+ }
520
+ },
521
+ requiredEnv: [
522
+ {
523
+ name: 'DATABASE_PATH',
524
+ description: 'Path to SQLite database file',
525
+ url: 'https://www.sqlite.org/docs.html'
526
+ }
527
+ ],
528
+ setupInstructions: `
529
+ 1. Locate your SQLite database file or create a new one
530
+ 2. Set environment variable: export DATABASE_PATH="/path/to/database.db"
531
+ 3. Run: ax-cli mcp add sqlite --template
532
+ 4. Test: ax-cli mcp test sqlite
533
+ `.trim(),
534
+ usageExamples: [
535
+ 'Query local SQLite databases',
536
+ 'Inspect database schema',
537
+ 'Manage data in local development',
538
+ 'Lightweight data storage',
539
+ 'Testing and prototyping'
540
+ ],
541
+ troubleshooting: [
542
+ {
543
+ issue: 'File not found',
544
+ solution: 'Verify DATABASE_PATH points to existing file. SQLite will create the file if it does not exist.'
545
+ },
546
+ {
547
+ issue: 'Permission denied',
548
+ solution: 'Check file permissions. Ensure the process has read/write access to the database file.'
549
+ }
550
+ ]
551
+ }
552
+ };
553
+ /**
554
+ * Get all available template names
555
+ */
556
+ export function getTemplateNames() {
557
+ return Object.keys(TEMPLATES).sort();
558
+ }
559
+ /**
560
+ * Get template by name
561
+ */
562
+ export function getTemplate(name) {
563
+ return TEMPLATES[name.toLowerCase()];
564
+ }
565
+ /**
566
+ * Get templates by category
567
+ */
568
+ export function getTemplatesByCategory(category) {
569
+ return Object.values(TEMPLATES).filter(t => t.category === category);
570
+ }
571
+ /**
572
+ * Search templates by keyword
573
+ */
574
+ export function searchTemplates(query) {
575
+ const lowerQuery = query.toLowerCase();
576
+ return Object.values(TEMPLATES).filter(template => template.name.toLowerCase().includes(lowerQuery) ||
577
+ template.description.toLowerCase().includes(lowerQuery) ||
578
+ template.usageExamples.some(ex => ex.toLowerCase().includes(lowerQuery)));
579
+ }
580
+ /**
581
+ * Check if a template exists
582
+ */
583
+ export function hasTemplate(name) {
584
+ return name.toLowerCase() in TEMPLATES;
585
+ }
586
+ /**
587
+ * Generate MCP config from template with environment variables
588
+ */
589
+ export function generateConfigFromTemplate(templateName, envVars) {
590
+ const template = getTemplate(templateName);
591
+ if (!template) {
592
+ throw new Error(`Template "${templateName}" not found`);
593
+ }
594
+ // Clone the config to avoid mutating the template
595
+ const config = JSON.parse(JSON.stringify(template.config));
596
+ // Inject environment variables
597
+ if (config.transport.env) {
598
+ config.transport.env = { ...config.transport.env, ...envVars };
599
+ }
600
+ else {
601
+ config.transport.env = envVars;
602
+ }
603
+ // For HTTP/SSE transports, inject auth headers if needed
604
+ if ((config.transport.type === 'http' || config.transport.type === 'sse') && config.transport.headers) {
605
+ // Inject authorization tokens into headers if specified
606
+ const headers = { ...config.transport.headers };
607
+ // Common patterns
608
+ if (envVars.GITHUB_TOKEN) {
609
+ headers['Authorization'] = `Bearer ${envVars.GITHUB_TOKEN}`;
610
+ }
611
+ if (envVars.VERCEL_TOKEN) {
612
+ headers['Authorization'] = `Bearer ${envVars.VERCEL_TOKEN}`;
613
+ }
614
+ if (envVars.NETLIFY_TOKEN) {
615
+ headers['Authorization'] = `Bearer ${envVars.NETLIFY_TOKEN}`;
616
+ }
617
+ if (envVars.SENTRY_AUTH_TOKEN) {
618
+ headers['Authorization'] = `Bearer ${envVars.SENTRY_AUTH_TOKEN}`;
619
+ }
620
+ config.transport.headers = headers;
621
+ }
622
+ return config;
623
+ }
624
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/mcp/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * MCP Server Configuration Validation (Phase 4)
3
+ *
4
+ * Provides pre-flight checks to validate MCP server configurations
5
+ * before attempting connection, improving error messages and UX.
6
+ */
7
+ import type { MCPServerConfig } from '../schemas/settings-schemas.js';
8
+ export interface ValidationResult {
9
+ valid: boolean;
10
+ warnings: string[];
11
+ errors: string[];
12
+ }
13
+ export interface ValidationIssue {
14
+ type: 'error' | 'warning';
15
+ message: string;
16
+ field?: string;
17
+ }
18
+ /**
19
+ * Validate an MCP server configuration with pre-flight checks
20
+ */
21
+ export declare function validateServerConfig(config: MCPServerConfig): Promise<ValidationResult>;
22
+ /**
23
+ * Format validation result for display
24
+ */
25
+ export declare function formatValidationResult(result: ValidationResult): string;