@tostudy-ai/mcp-setup 1.3.0 → 1.4.1

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 (94) hide show
  1. package/README.md +26 -25
  2. package/dist/index.d.ts +2 -14
  3. package/dist/index.js +2999 -613
  4. package/dist/index.js.map +1 -1
  5. package/package.json +7 -3
  6. package/dist/__tests__/e2e-diagnostic-repair-flow.test.d.ts +0 -52
  7. package/dist/__tests__/e2e-diagnostic-repair-flow.test.d.ts.map +0 -1
  8. package/dist/__tests__/e2e-diagnostic-repair-flow.test.js +0 -720
  9. package/dist/__tests__/e2e-diagnostic-repair-flow.test.js.map +0 -1
  10. package/dist/__tests__/e2e-wizard-flow.test.d.ts +0 -43
  11. package/dist/__tests__/e2e-wizard-flow.test.d.ts.map +0 -1
  12. package/dist/__tests__/e2e-wizard-flow.test.js +0 -418
  13. package/dist/__tests__/e2e-wizard-flow.test.js.map +0 -1
  14. package/dist/__tests__/ide-handlers.test.d.ts +0 -10
  15. package/dist/__tests__/ide-handlers.test.d.ts.map +0 -1
  16. package/dist/__tests__/ide-handlers.test.js +0 -358
  17. package/dist/__tests__/ide-handlers.test.js.map +0 -1
  18. package/dist/__tests__/install-command.test.d.ts +0 -10
  19. package/dist/__tests__/install-command.test.d.ts.map +0 -1
  20. package/dist/__tests__/install-command.test.js +0 -248
  21. package/dist/__tests__/install-command.test.js.map +0 -1
  22. package/dist/callback-page.d.ts +0 -6
  23. package/dist/callback-page.d.ts.map +0 -1
  24. package/dist/callback-page.js +0 -96
  25. package/dist/callback-page.js.map +0 -1
  26. package/dist/config.d.ts +0 -62
  27. package/dist/config.d.ts.map +0 -1
  28. package/dist/config.js +0 -167
  29. package/dist/config.js.map +0 -1
  30. package/dist/detect.d.ts +0 -42
  31. package/dist/detect.d.ts.map +0 -1
  32. package/dist/detect.js +0 -277
  33. package/dist/detect.js.map +0 -1
  34. package/dist/diagnose.d.ts +0 -36
  35. package/dist/diagnose.d.ts.map +0 -1
  36. package/dist/diagnose.js +0 -502
  37. package/dist/diagnose.js.map +0 -1
  38. package/dist/ide-handlers/antigravity.d.ts +0 -16
  39. package/dist/ide-handlers/antigravity.d.ts.map +0 -1
  40. package/dist/ide-handlers/antigravity.js +0 -46
  41. package/dist/ide-handlers/antigravity.js.map +0 -1
  42. package/dist/ide-handlers/base.d.ts +0 -36
  43. package/dist/ide-handlers/base.d.ts.map +0 -1
  44. package/dist/ide-handlers/base.js +0 -66
  45. package/dist/ide-handlers/base.js.map +0 -1
  46. package/dist/ide-handlers/claude-code.d.ts +0 -15
  47. package/dist/ide-handlers/claude-code.d.ts.map +0 -1
  48. package/dist/ide-handlers/claude-code.js +0 -50
  49. package/dist/ide-handlers/claude-code.js.map +0 -1
  50. package/dist/ide-handlers/codex.d.ts +0 -15
  51. package/dist/ide-handlers/codex.d.ts.map +0 -1
  52. package/dist/ide-handlers/codex.js +0 -53
  53. package/dist/ide-handlers/codex.js.map +0 -1
  54. package/dist/ide-handlers/cursor.d.ts +0 -15
  55. package/dist/ide-handlers/cursor.d.ts.map +0 -1
  56. package/dist/ide-handlers/cursor.js +0 -61
  57. package/dist/ide-handlers/cursor.js.map +0 -1
  58. package/dist/ide-handlers/desktop.d.ts +0 -16
  59. package/dist/ide-handlers/desktop.d.ts.map +0 -1
  60. package/dist/ide-handlers/desktop.js +0 -50
  61. package/dist/ide-handlers/desktop.js.map +0 -1
  62. package/dist/ide-handlers/index.d.ts +0 -21
  63. package/dist/ide-handlers/index.d.ts.map +0 -1
  64. package/dist/ide-handlers/index.js +0 -55
  65. package/dist/ide-handlers/index.js.map +0 -1
  66. package/dist/ide-handlers/manual.d.ts +0 -16
  67. package/dist/ide-handlers/manual.d.ts.map +0 -1
  68. package/dist/ide-handlers/manual.js +0 -34
  69. package/dist/ide-handlers/manual.js.map +0 -1
  70. package/dist/ide-handlers/opencode.d.ts +0 -15
  71. package/dist/ide-handlers/opencode.d.ts.map +0 -1
  72. package/dist/ide-handlers/opencode.js +0 -57
  73. package/dist/ide-handlers/opencode.js.map +0 -1
  74. package/dist/ide-handlers/vscode.d.ts +0 -16
  75. package/dist/ide-handlers/vscode.d.ts.map +0 -1
  76. package/dist/ide-handlers/vscode.js +0 -62
  77. package/dist/ide-handlers/vscode.js.map +0 -1
  78. package/dist/ide-handlers/windsurf.d.ts +0 -16
  79. package/dist/ide-handlers/windsurf.d.ts.map +0 -1
  80. package/dist/ide-handlers/windsurf.js +0 -46
  81. package/dist/ide-handlers/windsurf.js.map +0 -1
  82. package/dist/index.d.ts.map +0 -1
  83. package/dist/oauth-server.d.ts +0 -4
  84. package/dist/oauth-server.d.ts.map +0 -1
  85. package/dist/oauth-server.js +0 -49
  86. package/dist/oauth-server.js.map +0 -1
  87. package/dist/prompts.d.ts +0 -23
  88. package/dist/prompts.d.ts.map +0 -1
  89. package/dist/prompts.js +0 -68
  90. package/dist/prompts.js.map +0 -1
  91. package/dist/repair.d.ts +0 -50
  92. package/dist/repair.d.ts.map +0 -1
  93. package/dist/repair.js +0 -633
  94. package/dist/repair.js.map +0 -1
package/dist/repair.js DELETED
@@ -1,633 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * MCP Auto-Repair Module
4
- *
5
- * Provides automatic repair functions for common MCP configuration issues.
6
- * Works in conjunction with diagnose.ts to fix detected problems.
7
- */
8
- import { existsSync, mkdirSync, writeFileSync, copyFileSync } from "node:fs";
9
- import { dirname } from "node:path";
10
- import chalk from "chalk";
11
- import { getClaudeConfigPath, readClaudeConfig, writeClaudeConfig, addTostudyMcpServer, extractApiKey, extractMcpUrl, } from "./config.js";
12
- import { runDiagnostics } from "./diagnose.js";
13
- const DEFAULT_PLATFORM_URL = "https://tostudy.ai";
14
- function println(message = "") {
15
- process.stdout.write(`${message}\n`);
16
- }
17
- /**
18
- * Create missing config directory and empty config file
19
- */
20
- function repairMissingConfig() {
21
- const configPath = getClaudeConfigPath();
22
- const configDir = dirname(configPath);
23
- try {
24
- // Ensure directory exists
25
- if (!existsSync(configDir)) {
26
- mkdirSync(configDir, { recursive: true });
27
- }
28
- // Create empty config with mcpServers
29
- const initialConfig = {
30
- mcpServers: {},
31
- };
32
- writeFileSync(configPath, JSON.stringify(initialConfig, null, 2), "utf-8");
33
- return {
34
- issueId: "config-missing",
35
- success: true,
36
- message: "Arquivo de configuracao criado com sucesso.",
37
- action: `Criado: ${configPath}`,
38
- };
39
- }
40
- catch (error) {
41
- return {
42
- issueId: "config-missing",
43
- success: false,
44
- message: `Falha ao criar arquivo de configuracao: ${error instanceof Error ? error.message : String(error)}`,
45
- };
46
- }
47
- }
48
- /**
49
- * Fix invalid JSON by backing up and recreating config
50
- */
51
- function repairInvalidJson() {
52
- const configPath = getClaudeConfigPath();
53
- try {
54
- // Backup the corrupted file
55
- if (existsSync(configPath)) {
56
- const backupPath = `${configPath}.corrupted.${Date.now()}`;
57
- copyFileSync(configPath, backupPath);
58
- // Create fresh config
59
- const freshConfig = {
60
- mcpServers: {},
61
- };
62
- writeFileSync(configPath, JSON.stringify(freshConfig, null, 2), "utf-8");
63
- return {
64
- issueId: "config-invalid-json",
65
- success: true,
66
- message: "Arquivo de configuracao recriado. Backup salvo.",
67
- action: `Backup: ${backupPath}`,
68
- };
69
- }
70
- return {
71
- issueId: "config-invalid-json",
72
- success: false,
73
- message: "Arquivo de configuracao nao existe.",
74
- };
75
- }
76
- catch (error) {
77
- return {
78
- issueId: "config-invalid-json",
79
- success: false,
80
- message: `Falha ao reparar JSON: ${error instanceof Error ? error.message : String(error)}`,
81
- };
82
- }
83
- }
84
- /**
85
- * Configure MCP server with provided API key
86
- */
87
- function repairMcpNotConfigured(apiKey, platformUrl = DEFAULT_PLATFORM_URL) {
88
- try {
89
- addTostudyMcpServer(apiKey, platformUrl);
90
- return {
91
- issueId: "mcp-not-configured",
92
- success: true,
93
- message: "Servidor MCP da ToStudy configurado com sucesso.",
94
- action: "Servidor tostudy adicionado",
95
- };
96
- }
97
- catch (error) {
98
- return {
99
- issueId: "mcp-not-configured",
100
- success: false,
101
- message: `Falha ao configurar MCP: ${error instanceof Error ? error.message : String(error)}`,
102
- };
103
- }
104
- }
105
- /**
106
- * Fix missing API key header
107
- */
108
- function repairApiKeyMissing(apiKey, platformUrl = DEFAULT_PLATFORM_URL) {
109
- try {
110
- // Re-add the server with the correct API key
111
- addTostudyMcpServer(apiKey, platformUrl);
112
- return {
113
- issueId: "api-key-missing",
114
- success: true,
115
- message: "API key configurada com sucesso.",
116
- action: "Header Authorization adicionado",
117
- };
118
- }
119
- catch (error) {
120
- return {
121
- issueId: "api-key-missing",
122
- success: false,
123
- message: `Falha ao configurar API key: ${error instanceof Error ? error.message : String(error)}`,
124
- };
125
- }
126
- }
127
- /**
128
- * Fix invalid API key format (supports both SSE and stdio formats)
129
- */
130
- function repairApiKeyFormat() {
131
- const config = readClaudeConfig();
132
- const mcpConfig = config.mcpServers?.["tostudy"];
133
- if (!mcpConfig) {
134
- return {
135
- issueId: "api-key-invalid-format",
136
- success: false,
137
- message: "Servidor MCP nao esta configurado.",
138
- };
139
- }
140
- try {
141
- // SSE format: fix headers
142
- if (mcpConfig.headers) {
143
- const authHeader = mcpConfig.headers["Authorization"] || "";
144
- if (authHeader && !authHeader.startsWith("Bearer ")) {
145
- mcpConfig.headers["Authorization"] = `Bearer ${authHeader}`;
146
- writeClaudeConfig(config);
147
- return {
148
- issueId: "api-key-invalid-format",
149
- success: true,
150
- message: "Formato de API key corrigido.",
151
- action: 'Prefixo "Bearer " adicionado',
152
- };
153
- }
154
- }
155
- // Stdio format: fix args
156
- if (mcpConfig.args) {
157
- for (let i = 0; i < mcpConfig.args.length; i++) {
158
- if (mcpConfig.args[i] === "--header" &&
159
- mcpConfig.args[i + 1]?.startsWith("Authorization:")) {
160
- const value = mcpConfig.args[i + 1].replace("Authorization:", "");
161
- if (value && !value.startsWith("Bearer ")) {
162
- mcpConfig.args[i + 1] = `Authorization:Bearer ${value}`;
163
- writeClaudeConfig(config);
164
- return {
165
- issueId: "api-key-invalid-format",
166
- success: true,
167
- message: "Formato de API key corrigido.",
168
- action: 'Prefixo "Bearer " adicionado',
169
- };
170
- }
171
- }
172
- }
173
- }
174
- return {
175
- issueId: "api-key-invalid-format",
176
- success: false,
177
- message: "API key nao encontrada para corrigir.",
178
- };
179
- }
180
- catch (error) {
181
- return {
182
- issueId: "api-key-invalid-format",
183
- success: false,
184
- message: `Falha ao corrigir formato: ${error instanceof Error ? error.message : String(error)}`,
185
- };
186
- }
187
- }
188
- /**
189
- * Fix missing or invalid server URL by re-adding with correct config
190
- */
191
- function repairServerUrl(platformUrl = DEFAULT_PLATFORM_URL) {
192
- const config = readClaudeConfig();
193
- const mcpConfig = config.mcpServers?.["tostudy"];
194
- if (!mcpConfig) {
195
- return {
196
- issueId: "server-url-missing",
197
- success: false,
198
- message: "Servidor MCP nao esta configurado.",
199
- };
200
- }
201
- try {
202
- // Extract existing API key to preserve it
203
- const apiKey = extractApiKey(mcpConfig);
204
- if (!apiKey) {
205
- return {
206
- issueId: "server-url-missing",
207
- success: false,
208
- message: "API key nao encontrada para reconstruir configuracao.",
209
- };
210
- }
211
- // Re-add with correct URL using stdio format
212
- addTostudyMcpServer(apiKey, platformUrl);
213
- return {
214
- issueId: "server-url-missing",
215
- success: true,
216
- message: "URL do servidor configurada.",
217
- action: `URL: ${platformUrl}/mcp`,
218
- };
219
- }
220
- catch (error) {
221
- return {
222
- issueId: "server-url-missing",
223
- success: false,
224
- message: `Falha ao configurar URL: ${error instanceof Error ? error.message : String(error)}`,
225
- };
226
- }
227
- }
228
- /**
229
- * Fix URL with wrong protocol
230
- */
231
- function repairServerUrlProtocol(platformUrl = DEFAULT_PLATFORM_URL) {
232
- const config = readClaudeConfig();
233
- const mcpConfig = config.mcpServers?.["tostudy"];
234
- if (!mcpConfig) {
235
- return {
236
- issueId: "server-url-invalid-protocol",
237
- success: false,
238
- message: "Servidor MCP nao esta configurado.",
239
- };
240
- }
241
- const url = extractMcpUrl(mcpConfig);
242
- if (!url) {
243
- return {
244
- issueId: "server-url-invalid-protocol",
245
- success: false,
246
- message: "URL do servidor nao configurada.",
247
- };
248
- }
249
- try {
250
- // Fix the protocol to https and re-add
251
- const fixedUrl = url.replace(/^[a-z]+:/, "https:");
252
- // Extract base platform URL from the fixed URL
253
- const basePlatformUrl = fixedUrl.replace(/\/mcp(\/sse)?$/, "");
254
- const apiKey = extractApiKey(mcpConfig);
255
- if (!apiKey) {
256
- return {
257
- issueId: "server-url-invalid-protocol",
258
- success: false,
259
- message: "API key nao encontrada para reconstruir configuracao.",
260
- };
261
- }
262
- addTostudyMcpServer(apiKey, basePlatformUrl);
263
- return {
264
- issueId: "server-url-invalid-protocol",
265
- success: true,
266
- message: "Protocolo da URL corrigido para HTTPS.",
267
- action: `URL: ${basePlatformUrl}/mcp`,
268
- };
269
- }
270
- catch (error) {
271
- return {
272
- issueId: "server-url-invalid-protocol",
273
- success: false,
274
- message: `Falha ao corrigir protocolo: ${error instanceof Error ? error.message : String(error)}`,
275
- };
276
- }
277
- }
278
- /**
279
- * Fix URL missing /mcp path
280
- */
281
- function repairServerUrlPath() {
282
- const config = readClaudeConfig();
283
- const mcpConfig = config.mcpServers?.["tostudy"];
284
- if (!mcpConfig) {
285
- return {
286
- issueId: "server-url-missing-sse-path",
287
- success: false,
288
- message: "Servidor MCP nao esta configurado.",
289
- };
290
- }
291
- const url = extractMcpUrl(mcpConfig);
292
- if (!url) {
293
- return {
294
- issueId: "server-url-missing-sse-path",
295
- success: false,
296
- message: "URL do servidor nao configurada.",
297
- };
298
- }
299
- try {
300
- const parsedUrl = new URL(url);
301
- // Extract base URL (strip /mcp or /mcp/sse if present, then re-add /mcp)
302
- parsedUrl.pathname = parsedUrl.pathname.replace(/\/(mcp(\/sse)?)?$/, "");
303
- const basePlatformUrl = parsedUrl.toString().replace(/\/$/, "");
304
- const apiKey = extractApiKey(mcpConfig);
305
- if (!apiKey) {
306
- return {
307
- issueId: "server-url-missing-sse-path",
308
- success: false,
309
- message: "API key nao encontrada para reconstruir configuracao.",
310
- };
311
- }
312
- addTostudyMcpServer(apiKey, basePlatformUrl);
313
- return {
314
- issueId: "server-url-missing-sse-path",
315
- success: true,
316
- message: "Path /mcp corrigido na URL.",
317
- action: `URL: ${basePlatformUrl}/mcp`,
318
- };
319
- }
320
- catch (error) {
321
- return {
322
- issueId: "server-url-missing-sse-path",
323
- success: false,
324
- message: `Falha ao corrigir path: ${error instanceof Error ? error.message : String(error)}`,
325
- };
326
- }
327
- }
328
- /**
329
- * Remove duplicate ToStudy/Ana servers, keeping only tostudy
330
- */
331
- function repairDuplicateServers() {
332
- const config = readClaudeConfig();
333
- if (!config.mcpServers) {
334
- return {
335
- issueId: "duplicate-servers",
336
- success: false,
337
- message: "Nenhum servidor MCP configurado.",
338
- };
339
- }
340
- try {
341
- const servers = Object.entries(config.mcpServers);
342
- const anaServers = servers.filter(([key, server]) => key.toLowerCase().includes("ana") ||
343
- key.toLowerCase().includes("catalyst") ||
344
- (server.url && server.url.includes("tostudy.com")));
345
- if (anaServers.length <= 1) {
346
- return {
347
- issueId: "duplicate-servers",
348
- success: true,
349
- message: "Nenhuma duplicata encontrada.",
350
- };
351
- }
352
- // Keep the tostudy entry if it exists, otherwise keep the first one
353
- const primaryKey = anaServers.find(([key]) => key === "tostudy")?.[0] || anaServers[0][0];
354
- const removedKeys = [];
355
- for (const [key] of anaServers) {
356
- if (key !== primaryKey) {
357
- delete config.mcpServers[key];
358
- removedKeys.push(key);
359
- }
360
- }
361
- writeClaudeConfig(config);
362
- return {
363
- issueId: "duplicate-servers",
364
- success: true,
365
- message: `${removedKeys.length} servidor(es) duplicado(s) removido(s).`,
366
- action: `Removidos: ${removedKeys.join(", ")}`,
367
- };
368
- }
369
- catch (error) {
370
- return {
371
- issueId: "duplicate-servers",
372
- success: false,
373
- message: `Falha ao remover duplicatas: ${error instanceof Error ? error.message : String(error)}`,
374
- };
375
- }
376
- }
377
- const REPAIR_FUNCTIONS = {
378
- "config-missing": () => repairMissingConfig(),
379
- "config-invalid-json": () => repairInvalidJson(),
380
- "mcp-not-configured": (apiKey, platformUrl) => {
381
- if (!apiKey) {
382
- return {
383
- issueId: "mcp-not-configured",
384
- success: false,
385
- message: "API key necessaria para configurar o MCP.",
386
- };
387
- }
388
- return repairMcpNotConfigured(apiKey, platformUrl);
389
- },
390
- "api-key-missing": (apiKey, platformUrl) => {
391
- if (!apiKey) {
392
- return {
393
- issueId: "api-key-missing",
394
- success: false,
395
- message: "Nova API key necessaria.",
396
- };
397
- }
398
- return repairApiKeyMissing(apiKey, platformUrl);
399
- },
400
- "api-key-invalid-format": () => repairApiKeyFormat(),
401
- "api-key-too-short": (apiKey, platformUrl) => {
402
- if (!apiKey) {
403
- return {
404
- issueId: "api-key-too-short",
405
- success: false,
406
- message: "Nova API key necessaria.",
407
- };
408
- }
409
- return repairApiKeyMissing(apiKey, platformUrl);
410
- },
411
- "server-url-missing": (_, platformUrl) => repairServerUrl(platformUrl),
412
- "server-url-invalid": (_, platformUrl) => repairServerUrl(platformUrl),
413
- "server-url-invalid-protocol": () => repairServerUrlProtocol(),
414
- "server-url-missing-sse-path": () => repairServerUrlPath(),
415
- "auth-failed": (apiKey, platformUrl) => {
416
- if (!apiKey) {
417
- return {
418
- issueId: "auth-failed",
419
- success: false,
420
- message: "Nova API key necessaria. Gere em /student/settings/mcp.",
421
- };
422
- }
423
- return repairMcpNotConfigured(apiKey, platformUrl);
424
- },
425
- "duplicate-servers": () => repairDuplicateServers(),
426
- };
427
- /**
428
- * Issues that require user input (API key)
429
- */
430
- const ISSUES_REQUIRING_API_KEY = [
431
- "mcp-not-configured",
432
- "api-key-missing",
433
- "api-key-too-short",
434
- "auth-failed",
435
- ];
436
- /**
437
- * Check if an issue requires user input to repair
438
- */
439
- export function issueRequiresUserInput(issueId) {
440
- return ISSUES_REQUIRING_API_KEY.includes(issueId);
441
- }
442
- /**
443
- * Repair a single issue
444
- */
445
- export function repairIssue(issue, apiKey, platformUrl) {
446
- const repairFn = REPAIR_FUNCTIONS[issue.id];
447
- if (!repairFn) {
448
- return {
449
- issueId: issue.id,
450
- success: false,
451
- message: `Sem funcao de reparo disponivel para: ${issue.id}`,
452
- };
453
- }
454
- return repairFn(apiKey, platformUrl);
455
- }
456
- /**
457
- * Repair all auto-fixable issues from a diagnostic report
458
- */
459
- export function repairAllIssues(report, apiKey, platformUrl = DEFAULT_PLATFORM_URL) {
460
- const results = [];
461
- const requiresUserInput = [];
462
- let succeeded = 0;
463
- let failed = 0;
464
- // Filter to auto-fixable issues only
465
- const fixableIssues = report.issues.filter((issue) => issue.autoFixable);
466
- for (const issue of fixableIssues) {
467
- // Check if this issue needs user input
468
- if (issueRequiresUserInput(issue.id) && !apiKey) {
469
- requiresUserInput.push(issue.id);
470
- results.push({
471
- issueId: issue.id,
472
- success: false,
473
- message: "Requer API key para reparar.",
474
- });
475
- failed++;
476
- continue;
477
- }
478
- const result = repairIssue(issue, apiKey, platformUrl);
479
- results.push(result);
480
- if (result.success) {
481
- succeeded++;
482
- }
483
- else {
484
- failed++;
485
- }
486
- }
487
- return {
488
- timestamp: new Date().toISOString(),
489
- repairsAttempted: fixableIssues.length,
490
- repairsSucceeded: succeeded,
491
- repairsFailed: failed,
492
- results,
493
- requiresUserInput,
494
- };
495
- }
496
- /**
497
- * Run diagnostics and repair all issues automatically
498
- */
499
- export async function diagnoseAndRepair(apiKey, platformUrl = DEFAULT_PLATFORM_URL) {
500
- const diagnostic = await runDiagnostics();
501
- const repair = repairAllIssues(diagnostic, apiKey, platformUrl);
502
- return { diagnostic, repair };
503
- }
504
- /**
505
- * Print repair report to console
506
- */
507
- export function printRepairReport(report) {
508
- println();
509
- println(chalk.cyan(" ╔═══════════════════════════════════════╗"));
510
- println(chalk.cyan(" ║") + chalk.white.bold(" ToStudy MCP Auto-Repair ") + chalk.cyan("║"));
511
- println(chalk.cyan(" ╚═══════════════════════════════════════╝"));
512
- println();
513
- if (report.repairsAttempted === 0) {
514
- println(chalk.green.bold("✓ Nenhum reparo necessario!"));
515
- println();
516
- println(chalk.gray("Nenhum problema corrigivel automaticamente foi encontrado."));
517
- println();
518
- return;
519
- }
520
- // Summary
521
- println(chalk.white.bold("Resumo:"));
522
- println(` Reparos tentados: ${report.repairsAttempted}`);
523
- println(` ${chalk.green("✓ Sucesso:")} ${report.repairsSucceeded}`);
524
- if (report.repairsFailed > 0) {
525
- println(` ${chalk.red("✗ Falha:")} ${report.repairsFailed}`);
526
- }
527
- println();
528
- // Results
529
- println(chalk.white.bold("Detalhes:"));
530
- println();
531
- for (const result of report.results) {
532
- if (result.success) {
533
- println(` ${chalk.green("✓")} ${result.message}`);
534
- if (result.action) {
535
- println(chalk.gray(` ${result.action}`));
536
- }
537
- }
538
- else {
539
- println(` ${chalk.red("✗")} ${result.message}`);
540
- }
541
- }
542
- println();
543
- // User input required
544
- if (report.requiresUserInput.length > 0) {
545
- println(chalk.yellow("⚠ Alguns reparos requerem interacao:"));
546
- println();
547
- println(" Para reparar problemas de API key, execute:");
548
- println(chalk.cyan(" npx @tostudy-ai/mcp-setup repair --api-key <sua-api-key>"));
549
- println();
550
- println(" Para gerar uma nova API key:");
551
- println(chalk.cyan(" https://tostudy.ai/student/settings/mcp"));
552
- println();
553
- }
554
- // Final status
555
- if (report.repairsFailed === 0 && report.requiresUserInput.length === 0) {
556
- println(chalk.green.bold("✓ Todos os reparos concluidos com sucesso!"));
557
- println(chalk.gray(" Reinicie o Claude Code para aplicar as mudancas."));
558
- }
559
- else if (report.repairsSucceeded > 0) {
560
- println(chalk.yellow("⚠ Alguns reparos foram concluidos, mas outros falharam."));
561
- println(chalk.gray(" Execute o diagnostico novamente para verificar o status."));
562
- }
563
- else {
564
- println(chalk.red("✗ Nenhum reparo foi concluido com sucesso."));
565
- println(chalk.gray(" Verifique os erros acima e tente novamente."));
566
- }
567
- println();
568
- }
569
- /**
570
- * Export repair report as JSON
571
- */
572
- export function exportRepairReportJson(report) {
573
- return JSON.stringify(report, null, 2);
574
- }
575
- // CLI entry point
576
- if (process.argv[1]?.endsWith("repair.js")) {
577
- (async () => {
578
- try {
579
- // Parse command line arguments
580
- let apiKey;
581
- let platformUrl = DEFAULT_PLATFORM_URL;
582
- let jsonOutput = false;
583
- for (let i = 2; i < process.argv.length; i++) {
584
- const arg = process.argv[i];
585
- if (arg === "--api-key" && process.argv[i + 1]) {
586
- apiKey = process.argv[++i];
587
- }
588
- else if (arg === "--url" && process.argv[i + 1]) {
589
- platformUrl = process.argv[++i];
590
- }
591
- else if (arg === "--json") {
592
- jsonOutput = true;
593
- }
594
- else if (arg === "--help" || arg === "-h") {
595
- println("ToStudy MCP Auto-Repair");
596
- println();
597
- println("Usage: node repair.js [options]");
598
- println();
599
- println("Options:");
600
- println(" --api-key <key> API key para reparos que necessitam autenticacao");
601
- println(" --url <url> URL da plataforma (default: https://tostudy.ai)");
602
- println(" --json Saida em formato JSON");
603
- println(" --help, -h Mostra esta ajuda");
604
- println();
605
- process.exit(0);
606
- }
607
- }
608
- // Check for API key in environment
609
- if (!apiKey) {
610
- apiKey = process.env.TOSTUDY_API_KEY;
611
- }
612
- // Run diagnostics and repair
613
- const { diagnostic, repair } = await diagnoseAndRepair(apiKey, platformUrl);
614
- // Output results
615
- if (jsonOutput) {
616
- println(JSON.stringify({ diagnostic, repair }, null, 2));
617
- }
618
- else {
619
- printRepairReport(repair);
620
- }
621
- // Exit code based on repair results
622
- const hasUnfixedCritical = diagnostic.issues.some((issue) => issue.severity === "critical" &&
623
- !repair.results.find((r) => r.issueId === issue.id && r.success));
624
- process.exit(hasUnfixedCritical ? 1 : 0);
625
- }
626
- catch (error) {
627
- process.stderr.write(chalk.red("Erro ao executar reparo:\n"));
628
- process.stderr.write((error instanceof Error ? error.message : String(error)) + "\n");
629
- process.exit(1);
630
- }
631
- })();
632
- }
633
- //# sourceMappingURL=repair.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"repair.js","sourceRoot":"","sources":["../src/repair.ts"],"names":[],"mappings":"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"}