@tostudy-ai/mcp-setup 1.0.2 → 1.1.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 (47) hide show
  1. package/README.md +1 -1
  2. package/dist/__tests__/e2e-wizard-flow.test.d.ts.map +1 -1
  3. package/dist/__tests__/e2e-wizard-flow.test.js +128 -117
  4. package/dist/__tests__/e2e-wizard-flow.test.js.map +1 -1
  5. package/dist/__tests__/ide-handlers.test.js +15 -11
  6. package/dist/__tests__/ide-handlers.test.js.map +1 -1
  7. package/dist/__tests__/install-command.test.js +106 -95
  8. package/dist/__tests__/install-command.test.js.map +1 -1
  9. package/dist/config.d.ts +15 -4
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +79 -29
  12. package/dist/config.js.map +1 -1
  13. package/dist/diagnose.d.ts +1 -1
  14. package/dist/diagnose.d.ts.map +1 -1
  15. package/dist/diagnose.js +154 -164
  16. package/dist/diagnose.js.map +1 -1
  17. package/dist/ide-handlers/antigravity.js +1 -1
  18. package/dist/ide-handlers/antigravity.js.map +1 -1
  19. package/dist/ide-handlers/base.d.ts +8 -8
  20. package/dist/ide-handlers/base.d.ts.map +1 -1
  21. package/dist/ide-handlers/base.js +29 -4
  22. package/dist/ide-handlers/base.js.map +1 -1
  23. package/dist/ide-handlers/claude-code.js +1 -1
  24. package/dist/ide-handlers/claude-code.js.map +1 -1
  25. package/dist/ide-handlers/codex.js +1 -1
  26. package/dist/ide-handlers/codex.js.map +1 -1
  27. package/dist/ide-handlers/cursor.js +1 -1
  28. package/dist/ide-handlers/cursor.js.map +1 -1
  29. package/dist/ide-handlers/desktop.d.ts +3 -3
  30. package/dist/ide-handlers/desktop.d.ts.map +1 -1
  31. package/dist/ide-handlers/desktop.js +32 -8
  32. package/dist/ide-handlers/desktop.js.map +1 -1
  33. package/dist/ide-handlers/manual.js +1 -1
  34. package/dist/ide-handlers/manual.js.map +1 -1
  35. package/dist/ide-handlers/opencode.js +1 -1
  36. package/dist/ide-handlers/opencode.js.map +1 -1
  37. package/dist/ide-handlers/vscode.js +1 -1
  38. package/dist/ide-handlers/vscode.js.map +1 -1
  39. package/dist/ide-handlers/windsurf.js +1 -1
  40. package/dist/ide-handlers/windsurf.js.map +1 -1
  41. package/dist/index.js +198 -156
  42. package/dist/index.js.map +1 -1
  43. package/dist/repair.d.ts +1 -1
  44. package/dist/repair.d.ts.map +1 -1
  45. package/dist/repair.js +213 -168
  46. package/dist/repair.js.map +1 -1
  47. package/package.json +5 -5
package/dist/diagnose.js CHANGED
@@ -5,13 +5,13 @@
5
5
  * Performs diagnostic checks for common MCP configuration issues.
6
6
  * Detects port conflicts, missing config, auth errors, and connectivity problems.
7
7
  */
8
- import { existsSync, readFileSync, statSync } from 'node:fs';
9
- import { createServer } from 'node:net';
10
- import chalk from 'chalk';
11
- import { getClaudeConfigPath, isClaudeInstalled, isTostudyMcpConfigured, getTostudyMcpConfig, readClaudeConfig, } from './config.js';
12
- import { getInstalledIDEs } from './detect.js';
8
+ import { existsSync, readFileSync, statSync } from "node:fs";
9
+ import { createServer } from "node:net";
10
+ import chalk from "chalk";
11
+ import { getClaudeConfigPath, isClaudeInstalled, isTostudyMcpConfigured, getTostudyMcpConfig, readClaudeConfig, extractApiKey, extractMcpUrl, } from "./config.js";
12
+ import { getInstalledIDEs } from "./detect.js";
13
13
  const DEFAULT_MCP_PORT = 3701;
14
- function println(message = '') {
14
+ function println(message = "") {
15
15
  process.stdout.write(`${message}\n`);
16
16
  }
17
17
  /**
@@ -20,14 +20,14 @@ function println(message = '') {
20
20
  async function isPortAvailable(port) {
21
21
  return new Promise((resolve) => {
22
22
  const server = createServer();
23
- server.once('error', () => {
23
+ server.once("error", () => {
24
24
  resolve(false);
25
25
  });
26
- server.once('listening', () => {
26
+ server.once("listening", () => {
27
27
  server.close();
28
28
  resolve(true);
29
29
  });
30
- server.listen(port, '127.0.0.1');
30
+ server.listen(port, "127.0.0.1");
31
31
  });
32
32
  }
33
33
  /**
@@ -36,11 +36,11 @@ async function isPortAvailable(port) {
36
36
  function checkClaudeInstallation() {
37
37
  if (!isClaudeInstalled()) {
38
38
  return {
39
- id: 'claude-not-installed',
40
- severity: 'critical',
41
- title: 'Claude Code nao encontrado',
42
- description: 'O diretorio de configuracao do Claude Code nao foi encontrado no sistema.',
43
- suggestion: 'Instale o Claude Code em https://claude.ai/download',
39
+ id: "claude-not-installed",
40
+ severity: "critical",
41
+ title: "Claude Code nao encontrado",
42
+ description: "O diretorio de configuracao do Claude Code nao foi encontrado no sistema.",
43
+ suggestion: "Instale o Claude Code em https://claude.ai/download",
44
44
  autoFixable: false,
45
45
  };
46
46
  }
@@ -53,11 +53,11 @@ function checkConfigFile() {
53
53
  const configPath = getClaudeConfigPath();
54
54
  if (!existsSync(configPath)) {
55
55
  return {
56
- id: 'config-missing',
57
- severity: 'warning',
58
- title: 'Arquivo de configuracao nao existe',
56
+ id: "config-missing",
57
+ severity: "warning",
58
+ title: "Arquivo de configuracao nao existe",
59
59
  description: `O arquivo ${configPath} nao foi encontrado. Sera criado durante o setup.`,
60
- suggestion: 'Execute o comando de setup para criar a configuracao.',
60
+ suggestion: "Execute o comando de setup para criar a configuracao.",
61
61
  autoFixable: true,
62
62
  };
63
63
  }
@@ -66,22 +66,22 @@ function checkConfigFile() {
66
66
  const stats = statSync(configPath);
67
67
  if (!stats.isFile()) {
68
68
  return {
69
- id: 'config-not-file',
70
- severity: 'critical',
71
- title: 'Configuracao nao e um arquivo',
69
+ id: "config-not-file",
70
+ severity: "critical",
71
+ title: "Configuracao nao e um arquivo",
72
72
  description: `${configPath} existe mas nao e um arquivo valido.`,
73
- suggestion: 'Remova o item e execute o setup novamente.',
73
+ suggestion: "Remova o item e execute o setup novamente.",
74
74
  autoFixable: false,
75
75
  };
76
76
  }
77
77
  }
78
78
  catch {
79
79
  return {
80
- id: 'config-unreadable',
81
- severity: 'critical',
82
- title: 'Arquivo de configuracao inacessivel',
80
+ id: "config-unreadable",
81
+ severity: "critical",
82
+ title: "Arquivo de configuracao inacessivel",
83
83
  description: `Nao foi possivel acessar ${configPath}. Verifique as permissoes.`,
84
- suggestion: 'Verifique as permissoes do arquivo ou recrie-o.',
84
+ suggestion: "Verifique as permissoes do arquivo ou recrie-o.",
85
85
  autoFixable: false,
86
86
  };
87
87
  }
@@ -96,15 +96,15 @@ function checkConfigJson() {
96
96
  return null; // Already handled by checkConfigFile
97
97
  }
98
98
  try {
99
- const content = readFileSync(configPath, 'utf-8');
99
+ const content = readFileSync(configPath, "utf-8");
100
100
  JSON.parse(content);
101
101
  }
102
102
  catch {
103
103
  return {
104
- id: 'config-invalid-json',
105
- severity: 'critical',
106
- title: 'JSON de configuracao invalido',
107
- description: 'O arquivo de configuracao contem JSON invalido.',
104
+ id: "config-invalid-json",
105
+ severity: "critical",
106
+ title: "JSON de configuracao invalido",
107
+ description: "O arquivo de configuracao contem JSON invalido.",
108
108
  suggestion: 'Execute "mcp-setup repair" para corrigir ou remova o arquivo e execute o setup novamente.',
109
109
  autoFixable: true,
110
110
  };
@@ -117,112 +117,100 @@ function checkConfigJson() {
117
117
  function checkMcpConfiguration() {
118
118
  if (!isTostudyMcpConfigured()) {
119
119
  return {
120
- id: 'mcp-not-configured',
121
- severity: 'warning',
122
- title: 'Catalyst MCP nao configurado',
123
- description: 'O servidor MCP da Catalyst nao esta configurado no Claude Code.',
124
- suggestion: 'Execute o comando de setup para configurar o MCP.',
120
+ id: "mcp-not-configured",
121
+ severity: "warning",
122
+ title: "Catalyst MCP nao configurado",
123
+ description: "O servidor MCP da Catalyst nao esta configurado no Claude Code.",
124
+ suggestion: "Execute o comando de setup para configurar o MCP.",
125
125
  autoFixable: true,
126
126
  };
127
127
  }
128
128
  return null;
129
129
  }
130
130
  /**
131
- * Check API key format
131
+ * Check API key format (supports both SSE headers and stdio args formats)
132
132
  */
133
133
  function checkApiKeyFormat() {
134
134
  const mcpConfig = getTostudyMcpConfig();
135
135
  if (!mcpConfig) {
136
136
  return null; // Already handled by checkMcpConfiguration
137
137
  }
138
- // Check for Authorization header
139
- const authHeader = mcpConfig.headers?.['Authorization'];
140
- if (!authHeader) {
138
+ const apiKey = extractApiKey(mcpConfig);
139
+ if (!apiKey) {
141
140
  return {
142
- id: 'api-key-missing',
143
- severity: 'critical',
144
- title: 'API key nao configurada',
145
- description: 'A configuracao do MCP nao possui um header de Authorization.',
146
- suggestion: 'Execute o setup novamente com uma API key valida.',
147
- autoFixable: true,
148
- };
149
- }
150
- // Check Bearer token format
151
- if (!authHeader.startsWith('Bearer ')) {
152
- return {
153
- id: 'api-key-invalid-format',
154
- severity: 'critical',
155
- title: 'Formato de API key invalido',
156
- description: 'O header de Authorization deve iniciar com "Bearer ".',
157
- suggestion: 'Execute o setup novamente com uma API key valida.',
141
+ id: "api-key-missing",
142
+ severity: "critical",
143
+ title: "API key nao configurada",
144
+ description: "A configuracao do MCP nao possui uma API key.",
145
+ suggestion: "Execute o setup novamente com uma API key valida.",
158
146
  autoFixable: true,
159
147
  };
160
148
  }
161
149
  // Check API key length
162
- const apiKey = authHeader.replace('Bearer ', '');
163
150
  if (apiKey.length < 32) {
164
151
  return {
165
- id: 'api-key-too-short',
166
- severity: 'warning',
167
- title: 'API key parece ser muito curta',
152
+ id: "api-key-too-short",
153
+ severity: "warning",
154
+ title: "API key parece ser muito curta",
168
155
  description: `A API key tem apenas ${apiKey.length} caracteres. API keys validas geralmente tem 32+ caracteres.`,
169
- suggestion: 'Verifique se copiou a API key completa de /student/settings/mcp.',
156
+ suggestion: "Verifique se copiou a API key completa de /student/settings/mcp.",
170
157
  autoFixable: true,
171
158
  };
172
159
  }
173
160
  return null;
174
161
  }
175
162
  /**
176
- * Check MCP server URL format
163
+ * Check MCP server URL format (supports both SSE url and stdio args formats)
177
164
  */
178
165
  function checkServerUrl() {
179
166
  const mcpConfig = getTostudyMcpConfig();
180
167
  if (!mcpConfig) {
181
168
  return null;
182
169
  }
183
- const url = mcpConfig.url;
170
+ const url = extractMcpUrl(mcpConfig);
184
171
  if (!url) {
185
172
  return {
186
- id: 'server-url-missing',
187
- severity: 'critical',
188
- title: 'URL do servidor MCP nao configurada',
189
- description: 'A configuracao do MCP nao possui uma URL de servidor.',
190
- suggestion: 'Execute o setup novamente para configurar a URL correta.',
173
+ id: "server-url-missing",
174
+ severity: "critical",
175
+ title: "URL do servidor MCP nao configurada",
176
+ description: "A configuracao do MCP nao possui uma URL de servidor.",
177
+ suggestion: "Execute o setup novamente para configurar a URL correta.",
191
178
  autoFixable: true,
192
179
  };
193
180
  }
194
181
  // Check URL format
195
182
  try {
196
183
  const parsedUrl = new URL(url);
197
- if (!['http:', 'https:'].includes(parsedUrl.protocol)) {
184
+ if (!["http:", "https:"].includes(parsedUrl.protocol)) {
198
185
  return {
199
- id: 'server-url-invalid-protocol',
200
- severity: 'critical',
201
- title: 'Protocolo de URL invalido',
186
+ id: "server-url-invalid-protocol",
187
+ severity: "critical",
188
+ title: "Protocolo de URL invalido",
202
189
  description: `O protocolo "${parsedUrl.protocol}" nao e suportado. Use http: ou https:.`,
203
- suggestion: 'Execute o setup novamente com a URL correta.',
190
+ suggestion: "Execute o setup novamente com a URL correta.",
204
191
  autoFixable: true,
205
192
  };
206
193
  }
207
- // Check if URL ends with /mcp/sse
208
- if (!parsedUrl.pathname.endsWith('/mcp/sse')) {
194
+ // For SSE format: check /mcp/sse suffix; for stdio: check /mcp suffix
195
+ const validPaths = ["/mcp/sse", "/mcp"];
196
+ if (!validPaths.some((p) => parsedUrl.pathname.endsWith(p))) {
209
197
  return {
210
- id: 'server-url-missing-sse-path',
211
- severity: 'warning',
212
- title: 'URL do servidor pode estar incorreta',
213
- description: `A URL ${url} nao termina com /mcp/sse como esperado.`,
214
- suggestion: 'Verifique se a URL esta correta ou execute o setup novamente.',
198
+ id: "server-url-missing-sse-path",
199
+ severity: "warning",
200
+ title: "URL do servidor pode estar incorreta",
201
+ description: `A URL ${url} nao termina com /mcp como esperado.`,
202
+ suggestion: "Verifique se a URL esta correta ou execute o setup novamente.",
215
203
  autoFixable: true,
216
204
  };
217
205
  }
218
206
  }
219
207
  catch {
220
208
  return {
221
- id: 'server-url-invalid',
222
- severity: 'critical',
223
- title: 'URL do servidor invalida',
209
+ id: "server-url-invalid",
210
+ severity: "critical",
211
+ title: "URL do servidor invalida",
224
212
  description: `A URL "${url}" nao e uma URL valida.`,
225
- suggestion: 'Execute o setup novamente com uma URL valida.',
213
+ suggestion: "Execute o setup novamente com uma URL valida.",
226
214
  autoFixable: true,
227
215
  };
228
216
  }
@@ -235,34 +223,39 @@ async function checkPortConflict() {
235
223
  const isAvailable = await isPortAvailable(DEFAULT_MCP_PORT);
236
224
  if (!isAvailable) {
237
225
  return {
238
- id: 'port-conflict',
239
- severity: 'warning',
226
+ id: "port-conflict",
227
+ severity: "warning",
240
228
  title: `Porta ${DEFAULT_MCP_PORT} em uso`,
241
229
  description: `A porta padrao do MCP server (${DEFAULT_MCP_PORT}) esta sendo usada por outro processo.`,
242
- suggestion: 'Verifique qual processo esta usando a porta ou use uma porta alternativa.',
230
+ suggestion: "Verifique qual processo esta usando a porta ou use uma porta alternativa.",
243
231
  autoFixable: false,
244
232
  };
245
233
  }
246
234
  return null;
247
235
  }
248
236
  /**
249
- * Check MCP server connectivity
237
+ * Check MCP server connectivity (supports both SSE and stdio formats)
250
238
  */
251
239
  async function checkServerConnectivity() {
252
240
  const mcpConfig = getTostudyMcpConfig();
253
- if (!mcpConfig?.url) {
241
+ if (!mcpConfig) {
242
+ return null;
243
+ }
244
+ const mcpUrl = extractMcpUrl(mcpConfig);
245
+ const apiKey = extractApiKey(mcpConfig);
246
+ if (!mcpUrl) {
254
247
  return null;
255
248
  }
256
- // Extract base URL (remove /sse path)
257
- const baseUrl = mcpConfig.url.replace('/mcp/sse', '');
249
+ // Extract base URL (remove /mcp/sse or /mcp path)
250
+ const baseUrl = mcpUrl.replace(/\/mcp(\/sse)?$/, "");
258
251
  try {
259
252
  const controller = new AbortController();
260
253
  const timeout = setTimeout(() => controller.abort(), 5000);
261
254
  const response = await fetch(`${baseUrl}/api/mcp/heartbeat`, {
262
- method: 'POST',
255
+ method: "POST",
263
256
  headers: {
264
- 'Authorization': mcpConfig.headers?.['Authorization'] || '',
265
- 'Content-Type': 'application/json',
257
+ Authorization: apiKey ? `Bearer ${apiKey}` : "",
258
+ "Content-Type": "application/json",
266
259
  },
267
260
  body: JSON.stringify({ timestamp: new Date().toISOString() }),
268
261
  signal: controller.signal,
@@ -270,42 +263,42 @@ async function checkServerConnectivity() {
270
263
  clearTimeout(timeout);
271
264
  if (response.status === 401 || response.status === 403) {
272
265
  return {
273
- id: 'auth-failed',
274
- severity: 'critical',
275
- title: 'Falha de autenticacao',
276
- description: 'O servidor MCP rejeitou a API key. Ela pode estar expirada ou invalida.',
277
- suggestion: 'Gere uma nova API key em /student/settings/mcp e execute o setup novamente.',
266
+ id: "auth-failed",
267
+ severity: "critical",
268
+ title: "Falha de autenticacao",
269
+ description: "O servidor MCP rejeitou a API key. Ela pode estar expirada ou invalida.",
270
+ suggestion: "Gere uma nova API key em /student/settings/mcp e execute o setup novamente.",
278
271
  autoFixable: true,
279
272
  };
280
273
  }
281
274
  if (!response.ok && response.status !== 204) {
282
275
  return {
283
- id: 'server-error',
284
- severity: 'warning',
276
+ id: "server-error",
277
+ severity: "warning",
285
278
  title: `Servidor retornou erro ${response.status}`,
286
279
  description: `O servidor MCP retornou um status de erro: ${response.status}.`,
287
- suggestion: 'O servidor pode estar temporariamente indisponivel. Tente novamente mais tarde.',
280
+ suggestion: "O servidor pode estar temporariamente indisponivel. Tente novamente mais tarde.",
288
281
  autoFixable: false,
289
282
  };
290
283
  }
291
284
  }
292
285
  catch (error) {
293
- if (error instanceof Error && error.name === 'AbortError') {
286
+ if (error instanceof Error && error.name === "AbortError") {
294
287
  return {
295
- id: 'server-timeout',
296
- severity: 'warning',
297
- title: 'Timeout de conexao',
298
- description: 'O servidor MCP nao respondeu em 5 segundos.',
299
- suggestion: 'Verifique sua conexao de internet ou se o servidor esta online.',
288
+ id: "server-timeout",
289
+ severity: "warning",
290
+ title: "Timeout de conexao",
291
+ description: "O servidor MCP nao respondeu em 5 segundos.",
292
+ suggestion: "Verifique sua conexao de internet ou se o servidor esta online.",
300
293
  autoFixable: false,
301
294
  };
302
295
  }
303
296
  return {
304
- id: 'server-unreachable',
305
- severity: 'warning',
306
- title: 'Servidor MCP inacessivel',
307
- description: 'Nao foi possivel conectar ao servidor MCP.',
308
- suggestion: 'Verifique sua conexao de internet ou se a URL do servidor esta correta.',
297
+ id: "server-unreachable",
298
+ severity: "warning",
299
+ title: "Servidor MCP inacessivel",
300
+ description: "Nao foi possivel conectar ao servidor MCP.",
301
+ suggestion: "Verifique sua conexao de internet ou se a URL do servidor esta correta.",
309
302
  autoFixable: false,
310
303
  };
311
304
  }
@@ -318,11 +311,11 @@ function checkIDEInstallation() {
318
311
  const installedIDEs = getInstalledIDEs();
319
312
  if (installedIDEs.length === 0) {
320
313
  return {
321
- id: 'no-ide-detected',
322
- severity: 'info',
323
- title: 'Nenhuma IDE suportada detectada',
324
- description: 'Nao foi encontrada nenhuma IDE compativel (VS Code, Cursor, JetBrains).',
325
- suggestion: 'Instale uma IDE suportada para usar a integracao completa.',
314
+ id: "no-ide-detected",
315
+ severity: "info",
316
+ title: "Nenhuma IDE suportada detectada",
317
+ description: "Nao foi encontrada nenhuma IDE compativel (VS Code, Cursor, JetBrains).",
318
+ suggestion: "Instale uma IDE suportada para usar a integracao completa.",
326
319
  autoFixable: false,
327
320
  };
328
321
  }
@@ -338,15 +331,15 @@ function checkDuplicateServers() {
338
331
  }
339
332
  // Check for servers with similar URLs
340
333
  const servers = Object.entries(config.mcpServers);
341
- const anaServers = servers.filter(([key, server]) => key.toLowerCase().includes('ana') ||
342
- key.toLowerCase().includes('catalyst') ||
343
- (server.url && server.url.includes('tostudy.com')));
334
+ const anaServers = servers.filter(([key, server]) => key.toLowerCase().includes("ana") ||
335
+ key.toLowerCase().includes("catalyst") ||
336
+ (server.url && server.url.includes("tostudy.com")));
344
337
  if (anaServers.length > 1) {
345
338
  return {
346
- id: 'duplicate-servers',
347
- severity: 'warning',
348
- title: 'Multiplos servidores Catalyst configurados',
349
- description: `Foram encontrados ${anaServers.length} servidores relacionados a Catalyst: ${anaServers.map(([k]) => k).join(', ')}.`,
339
+ id: "duplicate-servers",
340
+ severity: "warning",
341
+ title: "Multiplos servidores Catalyst configurados",
342
+ description: `Foram encontrados ${anaServers.length} servidores relacionados a Catalyst: ${anaServers.map(([k]) => k).join(", ")}.`,
350
343
  suggestion: 'Execute "mcp-setup repair" para remover duplicatas ou limpe manualmente.',
351
344
  autoFixable: true,
352
345
  };
@@ -375,12 +368,9 @@ export async function runDiagnostics() {
375
368
  }
376
369
  }
377
370
  // Async checks - only run if basic config is valid
378
- const hasConfigIssues = issues.some((issue) => ['config-invalid-json', 'claude-not-installed'].includes(issue.id));
371
+ const hasConfigIssues = issues.some((issue) => ["config-invalid-json", "claude-not-installed"].includes(issue.id));
379
372
  if (!hasConfigIssues) {
380
- const asyncChecks = await Promise.all([
381
- checkPortConflict(),
382
- checkServerConnectivity(),
383
- ]);
373
+ const asyncChecks = await Promise.all([checkPortConflict(), checkServerConnectivity()]);
384
374
  for (const issue of asyncChecks) {
385
375
  if (issue) {
386
376
  issues.push(issue);
@@ -394,7 +384,7 @@ export async function runDiagnostics() {
394
384
  info: 2,
395
385
  };
396
386
  issues.sort((a, b) => severityOrder[a.severity] - severityOrder[b.severity]);
397
- const hasCritical = issues.some((issue) => issue.severity === 'critical');
387
+ const hasCritical = issues.some((issue) => issue.severity === "critical");
398
388
  return {
399
389
  timestamp: new Date().toISOString(),
400
390
  claudeInstalled: isClaudeInstalled(),
@@ -408,12 +398,12 @@ export async function runDiagnostics() {
408
398
  */
409
399
  function getSeverityIcon(severity) {
410
400
  switch (severity) {
411
- case 'critical':
412
- return chalk.red('');
413
- case 'warning':
414
- return chalk.yellow('');
415
- case 'info':
416
- return chalk.blue('');
401
+ case "critical":
402
+ return chalk.red("");
403
+ case "warning":
404
+ return chalk.yellow("");
405
+ case "info":
406
+ return chalk.blue("");
417
407
  }
418
408
  }
419
409
  /**
@@ -421,12 +411,12 @@ function getSeverityIcon(severity) {
421
411
  */
422
412
  function getSeverityLabel(severity) {
423
413
  switch (severity) {
424
- case 'critical':
425
- return chalk.red('CRITICO');
426
- case 'warning':
427
- return chalk.yellow('AVISO');
428
- case 'info':
429
- return chalk.blue('INFO');
414
+ case "critical":
415
+ return chalk.red("CRITICO");
416
+ case "warning":
417
+ return chalk.yellow("AVISO");
418
+ case "info":
419
+ return chalk.blue("INFO");
430
420
  }
431
421
  }
432
422
  /**
@@ -434,33 +424,33 @@ function getSeverityLabel(severity) {
434
424
  */
435
425
  export function printDiagnosticReport(report) {
436
426
  println();
437
- println(chalk.cyan(' ╔═══════════════════════════════════════╗'));
438
- println(chalk.cyan('') + chalk.white.bold(' Catalyst MCP Diagnostics ') + chalk.cyan(''));
439
- println(chalk.cyan(' ╚═══════════════════════════════════════╝'));
427
+ println(chalk.cyan(" ╔═══════════════════════════════════════╗"));
428
+ println(chalk.cyan("") + chalk.white.bold(" Catalyst MCP Diagnostics ") + chalk.cyan(""));
429
+ println(chalk.cyan(" ╚═══════════════════════════════════════╝"));
440
430
  println();
441
431
  // Status summary
442
- println(chalk.gray('Status:'));
443
- println(` Claude Code: ${report.claudeInstalled ? chalk.green('✓ Instalado') : chalk.red('✗ Nao encontrado')}`);
444
- println(` MCP Catalyst: ${report.mcpConfigured ? chalk.green('✓ Configurado') : chalk.yellow('○ Nao configurado')}`);
432
+ println(chalk.gray("Status:"));
433
+ println(` Claude Code: ${report.claudeInstalled ? chalk.green("✓ Instalado") : chalk.red("✗ Nao encontrado")}`);
434
+ println(` MCP Catalyst: ${report.mcpConfigured ? chalk.green("✓ Configurado") : chalk.yellow("○ Nao configurado")}`);
445
435
  println();
446
436
  if (report.issues.length === 0) {
447
- println(chalk.green.bold('✓ Nenhum problema encontrado!'));
437
+ println(chalk.green.bold("✓ Nenhum problema encontrado!"));
448
438
  println();
449
- println(chalk.gray('Tudo parece estar funcionando corretamente.'));
439
+ println(chalk.gray("Tudo parece estar funcionando corretamente."));
450
440
  println();
451
441
  return;
452
442
  }
453
443
  // Issues
454
- const criticalCount = report.issues.filter((i) => i.severity === 'critical').length;
455
- const warningCount = report.issues.filter((i) => i.severity === 'warning').length;
456
- const infoCount = report.issues.filter((i) => i.severity === 'info').length;
457
- println(chalk.white.bold('Problemas encontrados:'));
444
+ const criticalCount = report.issues.filter((i) => i.severity === "critical").length;
445
+ const warningCount = report.issues.filter((i) => i.severity === "warning").length;
446
+ const infoCount = report.issues.filter((i) => i.severity === "info").length;
447
+ println(chalk.white.bold("Problemas encontrados:"));
458
448
  if (criticalCount > 0)
459
- println(` ${chalk.red('')} ${criticalCount} critico(s)`);
449
+ println(` ${chalk.red("")} ${criticalCount} critico(s)`);
460
450
  if (warningCount > 0)
461
- println(` ${chalk.yellow('')} ${warningCount} aviso(s)`);
451
+ println(` ${chalk.yellow("")} ${warningCount} aviso(s)`);
462
452
  if (infoCount > 0)
463
- println(` ${chalk.blue('')} ${infoCount} informativo(s)`);
453
+ println(` ${chalk.blue("")} ${infoCount} informativo(s)`);
464
454
  println();
465
455
  for (const issue of report.issues) {
466
456
  println(`${getSeverityIcon(issue.severity)} ${getSeverityLabel(issue.severity)}: ${chalk.white(issue.title)}`);
@@ -473,10 +463,10 @@ export function printDiagnosticReport(report) {
473
463
  }
474
464
  // Summary
475
465
  if (report.passed) {
476
- println(chalk.yellow('⚠ Alguns avisos encontrados, mas o sistema deve funcionar.'));
466
+ println(chalk.yellow("⚠ Alguns avisos encontrados, mas o sistema deve funcionar."));
477
467
  }
478
468
  else {
479
- println(chalk.red('✗ Problemas criticos precisam ser resolvidos.'));
469
+ println(chalk.red("✗ Problemas criticos precisam ser resolvidos."));
480
470
  println(chalk.gray(' Execute "npx @tostudy-ai/mcp-setup" para corrigir a configuracao.'));
481
471
  }
482
472
  println();
@@ -488,12 +478,12 @@ export function exportDiagnosticReportJson(report) {
488
478
  return JSON.stringify(report, null, 2);
489
479
  }
490
480
  // CLI entry point
491
- if (process.argv[1]?.endsWith('diagnose.js')) {
481
+ if (process.argv[1]?.endsWith("diagnose.js")) {
492
482
  (async () => {
493
483
  try {
494
484
  const report = await runDiagnostics();
495
485
  // Check for --json flag
496
- if (process.argv.includes('--json')) {
486
+ if (process.argv.includes("--json")) {
497
487
  println(exportDiagnosticReportJson(report));
498
488
  }
499
489
  else {
@@ -503,8 +493,8 @@ if (process.argv[1]?.endsWith('diagnose.js')) {
503
493
  process.exit(report.passed ? 0 : 1);
504
494
  }
505
495
  catch (error) {
506
- process.stderr.write(chalk.red('Erro ao executar diagnostico:\n'));
507
- process.stderr.write((error instanceof Error ? error.message : String(error)) + '\n');
496
+ process.stderr.write(chalk.red("Erro ao executar diagnostico:\n"));
497
+ process.stderr.write((error instanceof Error ? error.message : String(error)) + "\n");
508
498
  process.exit(1);
509
499
  }
510
500
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}