@tostudy-ai/mcp-setup 1.2.2 → 1.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 (94) hide show
  1. package/README.md +26 -25
  2. package/dist/index.d.ts +2 -14
  3. package/dist/index.js +2989 -562
  4. package/dist/index.js.map +1 -1
  5. package/package.json +5 -2
  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/diagnose.js DELETED
@@ -1,502 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * MCP Diagnostic Module
4
- *
5
- * Performs diagnostic checks for common MCP configuration issues.
6
- * Detects port conflicts, missing config, auth errors, and connectivity problems.
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, extractApiKey, extractMcpUrl, } from "./config.js";
12
- import { getInstalledIDEs } from "./detect.js";
13
- const DEFAULT_MCP_PORT = 3701;
14
- function println(message = "") {
15
- process.stdout.write(`${message}\n`);
16
- }
17
- /**
18
- * Check if a port is available
19
- */
20
- async function isPortAvailable(port) {
21
- return new Promise((resolve) => {
22
- const server = createServer();
23
- server.once("error", () => {
24
- resolve(false);
25
- });
26
- server.once("listening", () => {
27
- server.close();
28
- resolve(true);
29
- });
30
- server.listen(port, "127.0.0.1");
31
- });
32
- }
33
- /**
34
- * Check if Claude Code is installed
35
- */
36
- function checkClaudeInstallation() {
37
- if (!isClaudeInstalled()) {
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",
44
- autoFixable: false,
45
- };
46
- }
47
- return null;
48
- }
49
- /**
50
- * Check if config file exists and is readable
51
- */
52
- function checkConfigFile() {
53
- const configPath = getClaudeConfigPath();
54
- if (!existsSync(configPath)) {
55
- return {
56
- id: "config-missing",
57
- severity: "warning",
58
- title: "Arquivo de configuracao nao existe",
59
- description: `O arquivo ${configPath} nao foi encontrado. Sera criado durante o setup.`,
60
- suggestion: "Execute o comando de setup para criar a configuracao.",
61
- autoFixable: true,
62
- };
63
- }
64
- // Check if file is readable
65
- try {
66
- const stats = statSync(configPath);
67
- if (!stats.isFile()) {
68
- return {
69
- id: "config-not-file",
70
- severity: "critical",
71
- title: "Configuracao nao e um arquivo",
72
- description: `${configPath} existe mas nao e um arquivo valido.`,
73
- suggestion: "Remova o item e execute o setup novamente.",
74
- autoFixable: false,
75
- };
76
- }
77
- }
78
- catch {
79
- return {
80
- id: "config-unreadable",
81
- severity: "critical",
82
- title: "Arquivo de configuracao inacessivel",
83
- description: `Nao foi possivel acessar ${configPath}. Verifique as permissoes.`,
84
- suggestion: "Verifique as permissoes do arquivo ou recrie-o.",
85
- autoFixable: false,
86
- };
87
- }
88
- return null;
89
- }
90
- /**
91
- * Check if config JSON is valid
92
- */
93
- function checkConfigJson() {
94
- const configPath = getClaudeConfigPath();
95
- if (!existsSync(configPath)) {
96
- return null; // Already handled by checkConfigFile
97
- }
98
- try {
99
- const content = readFileSync(configPath, "utf-8");
100
- JSON.parse(content);
101
- }
102
- catch {
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.",
108
- suggestion: 'Execute "mcp-setup repair" para corrigir ou remova o arquivo e execute o setup novamente.',
109
- autoFixable: true,
110
- };
111
- }
112
- return null;
113
- }
114
- /**
115
- * Check if ToStudy MCP is configured
116
- */
117
- function checkMcpConfiguration() {
118
- if (!isTostudyMcpConfigured()) {
119
- return {
120
- id: "mcp-not-configured",
121
- severity: "warning",
122
- title: "ToStudy MCP nao configurado",
123
- description: "O servidor MCP da ToStudy nao esta configurado no Claude Code.",
124
- suggestion: "Execute o comando de setup para configurar o MCP.",
125
- autoFixable: true,
126
- };
127
- }
128
- return null;
129
- }
130
- /**
131
- * Check API key format (supports both SSE headers and stdio args formats)
132
- */
133
- function checkApiKeyFormat() {
134
- const mcpConfig = getTostudyMcpConfig();
135
- if (!mcpConfig) {
136
- return null; // Already handled by checkMcpConfiguration
137
- }
138
- const apiKey = extractApiKey(mcpConfig);
139
- if (!apiKey) {
140
- return {
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.",
146
- autoFixable: true,
147
- };
148
- }
149
- // Check API key length
150
- if (apiKey.length < 32) {
151
- return {
152
- id: "api-key-too-short",
153
- severity: "warning",
154
- title: "API key parece ser muito curta",
155
- description: `A API key tem apenas ${apiKey.length} caracteres. API keys validas geralmente tem 32+ caracteres.`,
156
- suggestion: "Verifique se copiou a API key completa de /student/settings/mcp.",
157
- autoFixable: true,
158
- };
159
- }
160
- return null;
161
- }
162
- /**
163
- * Check MCP server URL format (supports both SSE url and stdio args formats)
164
- */
165
- function checkServerUrl() {
166
- const mcpConfig = getTostudyMcpConfig();
167
- if (!mcpConfig) {
168
- return null;
169
- }
170
- const url = extractMcpUrl(mcpConfig);
171
- if (!url) {
172
- return {
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.",
178
- autoFixable: true,
179
- };
180
- }
181
- // Check URL format
182
- try {
183
- const parsedUrl = new URL(url);
184
- if (!["http:", "https:"].includes(parsedUrl.protocol)) {
185
- return {
186
- id: "server-url-invalid-protocol",
187
- severity: "critical",
188
- title: "Protocolo de URL invalido",
189
- description: `O protocolo "${parsedUrl.protocol}" nao e suportado. Use http: ou https:.`,
190
- suggestion: "Execute o setup novamente com a URL correta.",
191
- autoFixable: true,
192
- };
193
- }
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))) {
197
- return {
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.",
203
- autoFixable: true,
204
- };
205
- }
206
- }
207
- catch {
208
- return {
209
- id: "server-url-invalid",
210
- severity: "critical",
211
- title: "URL do servidor invalida",
212
- description: `A URL "${url}" nao e uma URL valida.`,
213
- suggestion: "Execute o setup novamente com uma URL valida.",
214
- autoFixable: true,
215
- };
216
- }
217
- return null;
218
- }
219
- /**
220
- * Check for port conflicts
221
- */
222
- async function checkPortConflict() {
223
- const isAvailable = await isPortAvailable(DEFAULT_MCP_PORT);
224
- if (!isAvailable) {
225
- return {
226
- id: "port-conflict",
227
- severity: "warning",
228
- title: `Porta ${DEFAULT_MCP_PORT} em uso`,
229
- description: `A porta padrao do MCP server (${DEFAULT_MCP_PORT}) esta sendo usada por outro processo.`,
230
- suggestion: "Verifique qual processo esta usando a porta ou use uma porta alternativa.",
231
- autoFixable: false,
232
- };
233
- }
234
- return null;
235
- }
236
- /**
237
- * Check MCP server connectivity (supports both SSE and stdio formats)
238
- */
239
- async function checkServerConnectivity() {
240
- const mcpConfig = getTostudyMcpConfig();
241
- if (!mcpConfig) {
242
- return null;
243
- }
244
- const mcpUrl = extractMcpUrl(mcpConfig);
245
- const apiKey = extractApiKey(mcpConfig);
246
- if (!mcpUrl) {
247
- return null;
248
- }
249
- // Extract base URL (remove /mcp/sse or /mcp path)
250
- const baseUrl = mcpUrl.replace(/\/mcp(\/sse)?$/, "");
251
- try {
252
- const controller = new AbortController();
253
- const timeout = setTimeout(() => controller.abort(), 5000);
254
- const response = await fetch(`${baseUrl}/api/mcp/heartbeat`, {
255
- method: "POST",
256
- headers: {
257
- Authorization: apiKey ? `Bearer ${apiKey}` : "",
258
- "Content-Type": "application/json",
259
- },
260
- body: JSON.stringify({ timestamp: new Date().toISOString() }),
261
- signal: controller.signal,
262
- });
263
- clearTimeout(timeout);
264
- if (response.status === 401 || response.status === 403) {
265
- return {
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.",
271
- autoFixable: true,
272
- };
273
- }
274
- if (!response.ok && response.status !== 204) {
275
- return {
276
- id: "server-error",
277
- severity: "warning",
278
- title: `Servidor retornou erro ${response.status}`,
279
- description: `O servidor MCP retornou um status de erro: ${response.status}.`,
280
- suggestion: "O servidor pode estar temporariamente indisponivel. Tente novamente mais tarde.",
281
- autoFixable: false,
282
- };
283
- }
284
- }
285
- catch (error) {
286
- if (error instanceof Error && error.name === "AbortError") {
287
- return {
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.",
293
- autoFixable: false,
294
- };
295
- }
296
- return {
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.",
302
- autoFixable: false,
303
- };
304
- }
305
- return null;
306
- }
307
- /**
308
- * Check if any IDE is detected
309
- */
310
- function checkIDEInstallation() {
311
- const installedIDEs = getInstalledIDEs();
312
- if (installedIDEs.length === 0) {
313
- return {
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.",
319
- autoFixable: false,
320
- };
321
- }
322
- return null;
323
- }
324
- /**
325
- * Check for duplicate MCP server entries
326
- */
327
- function checkDuplicateServers() {
328
- const config = readClaudeConfig();
329
- if (!config.mcpServers) {
330
- return null;
331
- }
332
- // Check for servers with similar URLs
333
- const servers = Object.entries(config.mcpServers);
334
- const anaServers = servers.filter(([key, server]) => key.toLowerCase().includes("ana") ||
335
- key.toLowerCase().includes("catalyst") ||
336
- (server.url && server.url.includes("tostudy.com")));
337
- if (anaServers.length > 1) {
338
- return {
339
- id: "duplicate-servers",
340
- severity: "warning",
341
- title: "Multiplos servidores ToStudy configurados",
342
- description: `Foram encontrados ${anaServers.length} servidores relacionados a ToStudy: ${anaServers.map(([k]) => k).join(", ")}.`,
343
- suggestion: 'Execute "mcp-setup repair" para remover duplicatas ou limpe manualmente.',
344
- autoFixable: true,
345
- };
346
- }
347
- return null;
348
- }
349
- /**
350
- * Run all diagnostic checks
351
- */
352
- export async function runDiagnostics() {
353
- const issues = [];
354
- // Synchronous checks
355
- const syncChecks = [
356
- checkClaudeInstallation(),
357
- checkConfigFile(),
358
- checkConfigJson(),
359
- checkMcpConfiguration(),
360
- checkApiKeyFormat(),
361
- checkServerUrl(),
362
- checkIDEInstallation(),
363
- checkDuplicateServers(),
364
- ];
365
- for (const issue of syncChecks) {
366
- if (issue) {
367
- issues.push(issue);
368
- }
369
- }
370
- // Async checks - only run if basic config is valid
371
- const hasConfigIssues = issues.some((issue) => ["config-invalid-json", "claude-not-installed"].includes(issue.id));
372
- if (!hasConfigIssues) {
373
- const asyncChecks = await Promise.all([checkPortConflict(), checkServerConnectivity()]);
374
- for (const issue of asyncChecks) {
375
- if (issue) {
376
- issues.push(issue);
377
- }
378
- }
379
- }
380
- // Sort by severity (critical > warning > info)
381
- const severityOrder = {
382
- critical: 0,
383
- warning: 1,
384
- info: 2,
385
- };
386
- issues.sort((a, b) => severityOrder[a.severity] - severityOrder[b.severity]);
387
- const hasCritical = issues.some((issue) => issue.severity === "critical");
388
- return {
389
- timestamp: new Date().toISOString(),
390
- claudeInstalled: isClaudeInstalled(),
391
- mcpConfigured: isTostudyMcpConfigured(),
392
- issues,
393
- passed: !hasCritical,
394
- };
395
- }
396
- /**
397
- * Get severity icon
398
- */
399
- function getSeverityIcon(severity) {
400
- switch (severity) {
401
- case "critical":
402
- return chalk.red("●");
403
- case "warning":
404
- return chalk.yellow("●");
405
- case "info":
406
- return chalk.blue("●");
407
- }
408
- }
409
- /**
410
- * Get severity label
411
- */
412
- function getSeverityLabel(severity) {
413
- switch (severity) {
414
- case "critical":
415
- return chalk.red("CRITICO");
416
- case "warning":
417
- return chalk.yellow("AVISO");
418
- case "info":
419
- return chalk.blue("INFO");
420
- }
421
- }
422
- /**
423
- * Print diagnostic report to console
424
- */
425
- export function printDiagnosticReport(report) {
426
- println();
427
- println(chalk.cyan(" ╔═══════════════════════════════════════╗"));
428
- println(chalk.cyan(" ║") + chalk.white.bold(" ToStudy MCP Diagnostics ") + chalk.cyan("║"));
429
- println(chalk.cyan(" ╚═══════════════════════════════════════╝"));
430
- println();
431
- // Status summary
432
- println(chalk.gray("Status:"));
433
- println(` Claude Code: ${report.claudeInstalled ? chalk.green("✓ Instalado") : chalk.red("✗ Nao encontrado")}`);
434
- println(` MCP ToStudy: ${report.mcpConfigured ? chalk.green("✓ Configurado") : chalk.yellow("○ Nao configurado")}`);
435
- println();
436
- if (report.issues.length === 0) {
437
- println(chalk.green.bold("✓ Nenhum problema encontrado!"));
438
- println();
439
- println(chalk.gray("Tudo parece estar funcionando corretamente."));
440
- println();
441
- return;
442
- }
443
- // Issues
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:"));
448
- if (criticalCount > 0)
449
- println(` ${chalk.red("●")} ${criticalCount} critico(s)`);
450
- if (warningCount > 0)
451
- println(` ${chalk.yellow("●")} ${warningCount} aviso(s)`);
452
- if (infoCount > 0)
453
- println(` ${chalk.blue("●")} ${infoCount} informativo(s)`);
454
- println();
455
- for (const issue of report.issues) {
456
- println(`${getSeverityIcon(issue.severity)} ${getSeverityLabel(issue.severity)}: ${chalk.white(issue.title)}`);
457
- println(chalk.gray(` ${issue.description}`));
458
- println(chalk.cyan(` → ${issue.suggestion}`));
459
- if (issue.autoFixable) {
460
- println(chalk.green(` ✓ Corrigivel automaticamente`));
461
- }
462
- println();
463
- }
464
- // Summary
465
- if (report.passed) {
466
- println(chalk.yellow("⚠ Alguns avisos encontrados, mas o sistema deve funcionar."));
467
- }
468
- else {
469
- println(chalk.red("✗ Problemas criticos precisam ser resolvidos."));
470
- println(chalk.gray(' Execute "npx @tostudy-ai/mcp-setup" para corrigir a configuracao.'));
471
- }
472
- println();
473
- }
474
- /**
475
- * Export diagnostic report as JSON
476
- */
477
- export function exportDiagnosticReportJson(report) {
478
- return JSON.stringify(report, null, 2);
479
- }
480
- // CLI entry point
481
- if (process.argv[1]?.endsWith("diagnose.js")) {
482
- (async () => {
483
- try {
484
- const report = await runDiagnostics();
485
- // Check for --json flag
486
- if (process.argv.includes("--json")) {
487
- println(exportDiagnosticReportJson(report));
488
- }
489
- else {
490
- printDiagnosticReport(report);
491
- }
492
- // Exit with appropriate code
493
- process.exit(report.passed ? 0 : 1);
494
- }
495
- catch (error) {
496
- process.stderr.write(chalk.red("Erro ao executar diagnostico:\n"));
497
- process.stderr.write((error instanceof Error ? error.message : String(error)) + "\n");
498
- process.exit(1);
499
- }
500
- })();
501
- }
502
- //# sourceMappingURL=diagnose.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../src/diagnose.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Antigravity IDE Handler
3
- *
4
- * Writes to ~/.gemini/antigravity/mcp_config.json
5
- * with { mcpServers: { tostudy: ... } }.
6
- */
7
- import { type IDEHandler } from './base.js';
8
- export declare class AntigravityHandler implements IDEHandler {
9
- id: string;
10
- name: string;
11
- detect(): Promise<boolean>;
12
- getConfigPath(): string;
13
- writeConfig(apiKey: string, mcpUrl: string): Promise<void>;
14
- verify(apiKey: string, mcpUrl: string): Promise<boolean>;
15
- }
16
- //# sourceMappingURL=antigravity.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../src/ide-handlers/antigravity.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,KAAK,UAAU,EAA4C,MAAM,WAAW,CAAC;AAEtF,qBAAa,kBAAmB,YAAW,UAAU;IACnD,EAAE,SAAiB;IACnB,IAAI,SAAiB;IAEf,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAMhC,aAAa,IAAI,MAAM;IAIjB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB1D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAG/D"}
@@ -1,46 +0,0 @@
1
- /**
2
- * Antigravity IDE Handler
3
- *
4
- * Writes to ~/.gemini/antigravity/mcp_config.json
5
- * with { mcpServers: { tostudy: ... } }.
6
- */
7
- import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
8
- import { join, dirname } from 'node:path';
9
- import { homedir } from 'node:os';
10
- import { buildTostudyServerEntry, verifyHeartbeat } from './base.js';
11
- export class AntigravityHandler {
12
- id = 'antigravity';
13
- name = 'Antigravity';
14
- async detect() {
15
- const home = homedir();
16
- return existsSync(join(home, '.gemini', 'antigravity')) ||
17
- existsSync(join(home, '.gemini', 'antigravity', 'mcp_config.json'));
18
- }
19
- getConfigPath() {
20
- return join(homedir(), '.gemini', 'antigravity', 'mcp_config.json');
21
- }
22
- async writeConfig(apiKey, mcpUrl) {
23
- const configPath = this.getConfigPath();
24
- const configDir = dirname(configPath);
25
- if (!existsSync(configDir)) {
26
- mkdirSync(configDir, { recursive: true });
27
- }
28
- let config = {};
29
- if (existsSync(configPath)) {
30
- try {
31
- config = JSON.parse(readFileSync(configPath, 'utf-8'));
32
- }
33
- catch {
34
- // Start fresh if config is corrupted
35
- }
36
- }
37
- const mcpServers = config.mcpServers ?? {};
38
- mcpServers.tostudy = buildTostudyServerEntry(apiKey, mcpUrl, this.id);
39
- config.mcpServers = mcpServers;
40
- writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
41
- }
42
- async verify(apiKey, mcpUrl) {
43
- return verifyHeartbeat(apiKey, mcpUrl);
44
- }
45
- }
46
- //# sourceMappingURL=antigravity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../src/ide-handlers/antigravity.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAmB,uBAAuB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtF,MAAM,OAAO,kBAAkB;IAC7B,EAAE,GAAG,aAAa,CAAC;IACnB,IAAI,GAAG,aAAa,CAAC;IAErB,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YACrD,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAc;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAI,MAAM,CAAC,UAAsC,IAAI,EAAE,CAAC;QACxE,UAAU,CAAC,OAAO,GAAG,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAE/B,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -1,36 +0,0 @@
1
- type ClientOsHeader = 'macos' | 'windows' | 'linux';
2
- export interface IDEHandler {
3
- /** Handler identifier (matches IDEMethod type) */
4
- id: string;
5
- /** Human-readable name */
6
- name: string;
7
- /** Check if this IDE is likely installed */
8
- detect(): Promise<boolean>;
9
- /** Path where the config file lives */
10
- getConfigPath(): string;
11
- /** Write/merge MCP config for this IDE */
12
- writeConfig(apiKey: string, mcpUrl: string): Promise<void>;
13
- /** Verify connection via heartbeat */
14
- verify(apiKey: string, mcpUrl: string): Promise<boolean>;
15
- }
16
- /**
17
- * Build the mcp-remote args array used by most IDE handlers.
18
- */
19
- export declare function buildMcpRemoteArgs(apiKey: string, mcpUrl: string, ide: string): string[];
20
- /**
21
- * Build the tostudy MCP server entry for stdio-based configs.
22
- */
23
- export declare function buildTostudyServerEntry(apiKey: string, mcpUrl: string, ide: string): {
24
- command: string;
25
- args: string[];
26
- };
27
- /**
28
- * Normalize current OS to the MCP metadata header format.
29
- */
30
- export declare function getClientOsHeaderValue(): ClientOsHeader;
31
- /**
32
- * Verify connection by hitting the platform heartbeat endpoint.
33
- */
34
- export declare function verifyHeartbeat(apiKey: string, platformUrl: string): Promise<boolean>;
35
- export {};
36
- //# sourceMappingURL=base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/ide-handlers/base.ts"],"names":[],"mappings":"AAQA,KAAK,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,uCAAuC;IACvC,aAAa,IAAI,MAAM,CAAC;IACxB,0CAA0C;IAC1C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,sCAAsC;IACtC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAcxF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;;;EAKlF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,cAAc,CASvD;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAc3F"}