@qodo/sdk 0.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.
- package/LICENSE +118 -0
- package/README.md +121 -0
- package/dist/api/agent.d.ts +69 -0
- package/dist/api/agent.d.ts.map +1 -0
- package/dist/api/agent.js +1034 -0
- package/dist/api/agent.js.map +1 -0
- package/dist/api/analytics.d.ts +43 -0
- package/dist/api/analytics.d.ts.map +1 -0
- package/dist/api/analytics.js +163 -0
- package/dist/api/analytics.js.map +1 -0
- package/dist/api/http.d.ts +5 -0
- package/dist/api/http.d.ts.map +1 -0
- package/dist/api/http.js +59 -0
- package/dist/api/http.js.map +1 -0
- package/dist/api/index.d.ts +12 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +17 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/taskTracking.d.ts +54 -0
- package/dist/api/taskTracking.d.ts.map +1 -0
- package/dist/api/taskTracking.js +208 -0
- package/dist/api/taskTracking.js.map +1 -0
- package/dist/api/types.d.ts +92 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +2 -0
- package/dist/api/types.js.map +1 -0
- package/dist/api/utils.d.ts +8 -0
- package/dist/api/utils.d.ts.map +1 -0
- package/dist/api/utils.js +54 -0
- package/dist/api/utils.js.map +1 -0
- package/dist/api/websocket.d.ts +74 -0
- package/dist/api/websocket.d.ts.map +1 -0
- package/dist/api/websocket.js +685 -0
- package/dist/api/websocket.js.map +1 -0
- package/dist/auth/index.d.ts +25 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +85 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/clients/index.d.ts +8 -0
- package/dist/clients/index.d.ts.map +1 -0
- package/dist/clients/index.js +7 -0
- package/dist/clients/index.js.map +1 -0
- package/dist/clients/info/InfoClient.d.ts +37 -0
- package/dist/clients/info/InfoClient.d.ts.map +1 -0
- package/dist/clients/info/InfoClient.js +69 -0
- package/dist/clients/info/InfoClient.js.map +1 -0
- package/dist/clients/info/index.d.ts +4 -0
- package/dist/clients/info/index.d.ts.map +1 -0
- package/dist/clients/info/index.js +2 -0
- package/dist/clients/info/index.js.map +1 -0
- package/dist/clients/info/types.d.ts +21 -0
- package/dist/clients/info/types.d.ts.map +1 -0
- package/dist/clients/info/types.js +2 -0
- package/dist/clients/info/types.js.map +1 -0
- package/dist/clients/sessions/SessionsClient.d.ts +34 -0
- package/dist/clients/sessions/SessionsClient.d.ts.map +1 -0
- package/dist/clients/sessions/SessionsClient.js +71 -0
- package/dist/clients/sessions/SessionsClient.js.map +1 -0
- package/dist/clients/sessions/index.d.ts +4 -0
- package/dist/clients/sessions/index.d.ts.map +1 -0
- package/dist/clients/sessions/index.js +2 -0
- package/dist/clients/sessions/index.js.map +1 -0
- package/dist/clients/sessions/types.d.ts +20 -0
- package/dist/clients/sessions/types.d.ts.map +1 -0
- package/dist/clients/sessions/types.js +2 -0
- package/dist/clients/sessions/types.js.map +1 -0
- package/dist/config/ConfigManager.d.ts +43 -0
- package/dist/config/ConfigManager.d.ts.map +1 -0
- package/dist/config/ConfigManager.js +472 -0
- package/dist/config/ConfigManager.js.map +1 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/urlConfig.d.ts +15 -0
- package/dist/config/urlConfig.d.ts.map +1 -0
- package/dist/config/urlConfig.js +75 -0
- package/dist/config/urlConfig.js.map +1 -0
- package/dist/constants/errors.d.ts +2 -0
- package/dist/constants/errors.d.ts.map +1 -0
- package/dist/constants/errors.js +2 -0
- package/dist/constants/errors.js.map +1 -0
- package/dist/constants/index.d.ts +7 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +11 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/tools.d.ts +4 -0
- package/dist/constants/tools.d.ts.map +1 -0
- package/dist/constants/tools.js +4 -0
- package/dist/constants/tools.js.map +1 -0
- package/dist/constants/versions.d.ts +2 -0
- package/dist/constants/versions.d.ts.map +1 -0
- package/dist/constants/versions.js +2 -0
- package/dist/constants/versions.js.map +1 -0
- package/dist/context/buildUserContext.d.ts +18 -0
- package/dist/context/buildUserContext.d.ts.map +1 -0
- package/dist/context/buildUserContext.js +34 -0
- package/dist/context/buildUserContext.js.map +1 -0
- package/dist/context/index.d.ts +9 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +9 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/messageManager.d.ts +42 -0
- package/dist/context/messageManager.d.ts.map +1 -0
- package/dist/context/messageManager.js +322 -0
- package/dist/context/messageManager.js.map +1 -0
- package/dist/context/taskFocus.d.ts +2 -0
- package/dist/context/taskFocus.d.ts.map +1 -0
- package/dist/context/taskFocus.js +26 -0
- package/dist/context/taskFocus.js.map +1 -0
- package/dist/context/userInput.d.ts +3 -0
- package/dist/context/userInput.d.ts.map +1 -0
- package/dist/context/userInput.js +20 -0
- package/dist/context/userInput.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/MCPManager.d.ts +125 -0
- package/dist/mcp/MCPManager.d.ts.map +1 -0
- package/dist/mcp/MCPManager.js +616 -0
- package/dist/mcp/MCPManager.js.map +1 -0
- package/dist/mcp/approvedTools.d.ts +4 -0
- package/dist/mcp/approvedTools.d.ts.map +1 -0
- package/dist/mcp/approvedTools.js +19 -0
- package/dist/mcp/approvedTools.js.map +1 -0
- package/dist/mcp/baseServer.d.ts +75 -0
- package/dist/mcp/baseServer.d.ts.map +1 -0
- package/dist/mcp/baseServer.js +107 -0
- package/dist/mcp/baseServer.js.map +1 -0
- package/dist/mcp/builtinServers.d.ts +15 -0
- package/dist/mcp/builtinServers.d.ts.map +1 -0
- package/dist/mcp/builtinServers.js +155 -0
- package/dist/mcp/builtinServers.js.map +1 -0
- package/dist/mcp/dynamicBEServer.d.ts +20 -0
- package/dist/mcp/dynamicBEServer.d.ts.map +1 -0
- package/dist/mcp/dynamicBEServer.js +52 -0
- package/dist/mcp/dynamicBEServer.js.map +1 -0
- package/dist/mcp/index.d.ts +19 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +24 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mcpInitialization.d.ts +2 -0
- package/dist/mcp/mcpInitialization.d.ts.map +1 -0
- package/dist/mcp/mcpInitialization.js +56 -0
- package/dist/mcp/mcpInitialization.js.map +1 -0
- package/dist/mcp/servers/filesystem.d.ts +75 -0
- package/dist/mcp/servers/filesystem.d.ts.map +1 -0
- package/dist/mcp/servers/filesystem.js +992 -0
- package/dist/mcp/servers/filesystem.js.map +1 -0
- package/dist/mcp/servers/gerrit.d.ts +19 -0
- package/dist/mcp/servers/gerrit.d.ts.map +1 -0
- package/dist/mcp/servers/gerrit.js +515 -0
- package/dist/mcp/servers/gerrit.js.map +1 -0
- package/dist/mcp/servers/git.d.ts +18 -0
- package/dist/mcp/servers/git.d.ts.map +1 -0
- package/dist/mcp/servers/git.js +441 -0
- package/dist/mcp/servers/git.js.map +1 -0
- package/dist/mcp/servers/ripgrep.d.ts +34 -0
- package/dist/mcp/servers/ripgrep.d.ts.map +1 -0
- package/dist/mcp/servers/ripgrep.js +517 -0
- package/dist/mcp/servers/ripgrep.js.map +1 -0
- package/dist/mcp/servers/shell.d.ts +20 -0
- package/dist/mcp/servers/shell.d.ts.map +1 -0
- package/dist/mcp/servers/shell.js +603 -0
- package/dist/mcp/servers/shell.js.map +1 -0
- package/dist/mcp/serversRegistry.d.ts +55 -0
- package/dist/mcp/serversRegistry.d.ts.map +1 -0
- package/dist/mcp/serversRegistry.js +410 -0
- package/dist/mcp/serversRegistry.js.map +1 -0
- package/dist/mcp/toolProcessor.d.ts +42 -0
- package/dist/mcp/toolProcessor.d.ts.map +1 -0
- package/dist/mcp/toolProcessor.js +200 -0
- package/dist/mcp/toolProcessor.js.map +1 -0
- package/dist/mcp/types.d.ts +29 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +2 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/parser/index.d.ts +72 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +967 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/types.d.ts +153 -0
- package/dist/parser/types.d.ts.map +1 -0
- package/dist/parser/types.js +6 -0
- package/dist/parser/types.js.map +1 -0
- package/dist/parser/utils.d.ts +18 -0
- package/dist/parser/utils.d.ts.map +1 -0
- package/dist/parser/utils.js +64 -0
- package/dist/parser/utils.js.map +1 -0
- package/dist/sdk/QodoSDK.d.ts +152 -0
- package/dist/sdk/QodoSDK.d.ts.map +1 -0
- package/dist/sdk/QodoSDK.js +786 -0
- package/dist/sdk/QodoSDK.js.map +1 -0
- package/dist/sdk/bootstrap.d.ts +16 -0
- package/dist/sdk/bootstrap.d.ts.map +1 -0
- package/dist/sdk/bootstrap.js +21 -0
- package/dist/sdk/bootstrap.js.map +1 -0
- package/dist/sdk/builders.d.ts +54 -0
- package/dist/sdk/builders.d.ts.map +1 -0
- package/dist/sdk/builders.js +117 -0
- package/dist/sdk/builders.js.map +1 -0
- package/dist/sdk/defaults.d.ts +11 -0
- package/dist/sdk/defaults.d.ts.map +1 -0
- package/dist/sdk/defaults.js +39 -0
- package/dist/sdk/defaults.js.map +1 -0
- package/dist/sdk/discovery.d.ts +2 -0
- package/dist/sdk/discovery.d.ts.map +1 -0
- package/dist/sdk/discovery.js +25 -0
- package/dist/sdk/discovery.js.map +1 -0
- package/dist/sdk/events.d.ts +168 -0
- package/dist/sdk/events.d.ts.map +1 -0
- package/dist/sdk/events.js +52 -0
- package/dist/sdk/events.js.map +1 -0
- package/dist/sdk/index.d.ts +17 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +17 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/runner/AgentRunner.d.ts +22 -0
- package/dist/sdk/runner/AgentRunner.d.ts.map +1 -0
- package/dist/sdk/runner/AgentRunner.js +222 -0
- package/dist/sdk/runner/AgentRunner.js.map +1 -0
- package/dist/sdk/runner/finalize.d.ts +9 -0
- package/dist/sdk/runner/finalize.d.ts.map +1 -0
- package/dist/sdk/runner/finalize.js +115 -0
- package/dist/sdk/runner/finalize.js.map +1 -0
- package/dist/sdk/runner/formats.d.ts +7 -0
- package/dist/sdk/runner/formats.d.ts.map +1 -0
- package/dist/sdk/runner/formats.js +91 -0
- package/dist/sdk/runner/formats.js.map +1 -0
- package/dist/sdk/runner/index.d.ts +9 -0
- package/dist/sdk/runner/index.d.ts.map +1 -0
- package/dist/sdk/runner/index.js +9 -0
- package/dist/sdk/runner/index.js.map +1 -0
- package/dist/sdk/runner/progress.d.ts +3 -0
- package/dist/sdk/runner/progress.d.ts.map +1 -0
- package/dist/sdk/runner/progress.js +16 -0
- package/dist/sdk/runner/progress.js.map +1 -0
- package/dist/sdk/schemas.d.ts +50 -0
- package/dist/sdk/schemas.d.ts.map +1 -0
- package/dist/sdk/schemas.js +145 -0
- package/dist/sdk/schemas.js.map +1 -0
- package/dist/session/SessionContext.d.ts +86 -0
- package/dist/session/SessionContext.d.ts.map +1 -0
- package/dist/session/SessionContext.js +395 -0
- package/dist/session/SessionContext.js.map +1 -0
- package/dist/session/environment.d.ts +42 -0
- package/dist/session/environment.d.ts.map +1 -0
- package/dist/session/environment.js +27 -0
- package/dist/session/environment.js.map +1 -0
- package/dist/session/history.d.ts +3 -0
- package/dist/session/history.d.ts.map +1 -0
- package/dist/session/history.js +67 -0
- package/dist/session/history.js.map +1 -0
- package/dist/session/index.d.ts +10 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +9 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/serverData.d.ts +38 -0
- package/dist/session/serverData.d.ts.map +1 -0
- package/dist/session/serverData.js +241 -0
- package/dist/session/serverData.js.map +1 -0
- package/dist/tracking/Tracker.d.ts +55 -0
- package/dist/tracking/Tracker.d.ts.map +1 -0
- package/dist/tracking/Tracker.js +217 -0
- package/dist/tracking/Tracker.js.map +1 -0
- package/dist/tracking/index.d.ts +8 -0
- package/dist/tracking/index.d.ts.map +1 -0
- package/dist/tracking/index.js +8 -0
- package/dist/tracking/index.js.map +1 -0
- package/dist/tracking/schemas.d.ts +292 -0
- package/dist/tracking/schemas.d.ts.map +1 -0
- package/dist/tracking/schemas.js +91 -0
- package/dist/tracking/schemas.js.map +1 -0
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/extractSetFlags.d.ts +6 -0
- package/dist/utils/extractSetFlags.d.ts.map +1 -0
- package/dist/utils/extractSetFlags.js +16 -0
- package/dist/utils/extractSetFlags.js.map +1 -0
- package/dist/utils/formatTimeAgo.d.ts +2 -0
- package/dist/utils/formatTimeAgo.d.ts.map +1 -0
- package/dist/utils/formatTimeAgo.js +20 -0
- package/dist/utils/formatTimeAgo.js.map +1 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/machineId.d.ts +14 -0
- package/dist/utils/machineId.d.ts.map +1 -0
- package/dist/utils/machineId.js +66 -0
- package/dist/utils/machineId.js.map +1 -0
- package/dist/utils/pathUtils.d.ts +22 -0
- package/dist/utils/pathUtils.d.ts.map +1 -0
- package/dist/utils/pathUtils.js +54 -0
- package/dist/utils/pathUtils.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +23 -0
- package/dist/version.js.map +1 -0
- package/package.json +93 -0
|
@@ -0,0 +1,616 @@
|
|
|
1
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
2
|
+
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
3
|
+
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
4
|
+
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
|
|
5
|
+
import { CallToolResultSchema, ListToolsResultSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { ServerRegistry, serverTypes } from "./serversRegistry.js";
|
|
8
|
+
import { InternalTransport } from "./baseServer.js";
|
|
9
|
+
import { getToolGroup, isUniqueServer, READ_ONLY_TOOLS } from "./approvedTools.js";
|
|
10
|
+
import { getCurrentEnvironment, getGlobalEnvironment } from "../session/index.js";
|
|
11
|
+
const MAX_RETRY_ATTEMPTS = 1;
|
|
12
|
+
const RETRY_DELAY_MS = 1000;
|
|
13
|
+
export class ClientInitializationError extends Error {
|
|
14
|
+
cause;
|
|
15
|
+
constructor(message, cause) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.cause = cause;
|
|
18
|
+
this.name = "ClientInitializationError";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const qodoTools = ["qodo_structured_read_files"];
|
|
22
|
+
export class MCPManager {
|
|
23
|
+
// NOTE: The static instance is kept for backward compatibility, but
|
|
24
|
+
// environment-scoped instances are preferred for in-process SDK usage
|
|
25
|
+
// where multiple logical clients may coexist.
|
|
26
|
+
static instance;
|
|
27
|
+
clients = new Map();
|
|
28
|
+
tools = new Map();
|
|
29
|
+
connectionStates = new Map();
|
|
30
|
+
autoApprovedTools = new Map();
|
|
31
|
+
autoApprovedToolGroups;
|
|
32
|
+
autoApproveAllTools = false;
|
|
33
|
+
retryTimeouts = new Map();
|
|
34
|
+
serverRegistry;
|
|
35
|
+
progressToken = 0;
|
|
36
|
+
// Store command-specific approvals for shell tool: Map<command, approved>
|
|
37
|
+
autoApprovedShellCommands = new Map();
|
|
38
|
+
// Return current auto-approval snapshot (for IPC inheritance into sub-agents)
|
|
39
|
+
getAutoApprovedSnapshot() {
|
|
40
|
+
const tools = [];
|
|
41
|
+
for (const [clientId, toolMap] of this.autoApprovedTools.entries()) {
|
|
42
|
+
for (const [toolName, approved] of toolMap.entries()) {
|
|
43
|
+
if (approved)
|
|
44
|
+
tools.push({ clientId, toolName });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const shellCommands = Array.from(this.autoApprovedShellCommands.keys());
|
|
48
|
+
return { all: this.autoApproveAllTools === true, tools, shellCommands };
|
|
49
|
+
}
|
|
50
|
+
constructor(serverRegistry) {
|
|
51
|
+
this.serverRegistry = serverRegistry ?? ServerRegistry.getInstance();
|
|
52
|
+
this.autoApprovedToolGroups = [READ_ONLY_TOOLS];
|
|
53
|
+
}
|
|
54
|
+
static async init(force) {
|
|
55
|
+
const env = getCurrentEnvironment();
|
|
56
|
+
const globalEnv = getGlobalEnvironment();
|
|
57
|
+
// For non-global environments (e.g. in-process SDK clients), maintain an
|
|
58
|
+
// independent MCPManager instance per environment so that each QodoClient
|
|
59
|
+
// can have its own MCP connections and tool inventory.
|
|
60
|
+
if (env !== globalEnv) {
|
|
61
|
+
let instance = env.mcpManager;
|
|
62
|
+
if (!instance || force) {
|
|
63
|
+
const registry = ServerRegistry.getInstance();
|
|
64
|
+
instance = new MCPManager(registry);
|
|
65
|
+
env.mcpManager = instance;
|
|
66
|
+
}
|
|
67
|
+
await instance.initializeServers();
|
|
68
|
+
return instance;
|
|
69
|
+
}
|
|
70
|
+
// Global (CLI/webapp) path: preserve legacy singleton behavior
|
|
71
|
+
if (!MCPManager.instance || force) {
|
|
72
|
+
const registry = ServerRegistry.getInstance();
|
|
73
|
+
MCPManager.instance = new MCPManager(registry);
|
|
74
|
+
if (!globalEnv.mcpManager) {
|
|
75
|
+
globalEnv.mcpManager = MCPManager.instance;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
await MCPManager.instance.initializeServers();
|
|
79
|
+
return MCPManager.instance;
|
|
80
|
+
}
|
|
81
|
+
static getInstance() {
|
|
82
|
+
const env = getCurrentEnvironment();
|
|
83
|
+
const globalEnv = getGlobalEnvironment();
|
|
84
|
+
if (env !== globalEnv) {
|
|
85
|
+
const instance = env.mcpManager;
|
|
86
|
+
if (!instance) {
|
|
87
|
+
throw new Error("MCPManager not initialized for this environment. Call MCPManager.init() first");
|
|
88
|
+
}
|
|
89
|
+
return instance;
|
|
90
|
+
}
|
|
91
|
+
if (!MCPManager.instance) {
|
|
92
|
+
throw new Error("MCPManager not initialized. Call MCPManager.init() first");
|
|
93
|
+
}
|
|
94
|
+
return MCPManager.instance;
|
|
95
|
+
}
|
|
96
|
+
getValidatedDirectories() {
|
|
97
|
+
return this.serverRegistry.getValidatedDirectories();
|
|
98
|
+
}
|
|
99
|
+
async initializeServers() {
|
|
100
|
+
await this.serverRegistry.loadAllServers();
|
|
101
|
+
let servers = this.serverRegistry.getAllServers();
|
|
102
|
+
const promises = servers.map((server) => this.initializeServerWithRetry(server));
|
|
103
|
+
await Promise.allSettled(promises);
|
|
104
|
+
}
|
|
105
|
+
async initializeServerWithRetry(config, attempt = 1) {
|
|
106
|
+
this.clearRetryTimeout(config.id);
|
|
107
|
+
this.connectionStates.set(config.id, { status: "connecting" });
|
|
108
|
+
try {
|
|
109
|
+
const client = await this.initializeServer(config);
|
|
110
|
+
this.connectionStates.set(config.id, { status: "connected" });
|
|
111
|
+
return client;
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
const errorMessage = this.formatErrorMessage(error);
|
|
115
|
+
if (attempt < MAX_RETRY_ATTEMPTS) {
|
|
116
|
+
this.connectionStates.set(config.id, {
|
|
117
|
+
status: "failed",
|
|
118
|
+
errorMessage: `Retry ${attempt}/${MAX_RETRY_ATTEMPTS}: ${errorMessage}`,
|
|
119
|
+
});
|
|
120
|
+
return new Promise((resolve, reject) => {
|
|
121
|
+
const timeout = setTimeout(() => {
|
|
122
|
+
this.initializeServerWithRetry(config, attempt + 1)
|
|
123
|
+
.then(resolve)
|
|
124
|
+
.catch(reject);
|
|
125
|
+
}, RETRY_DELAY_MS * attempt);
|
|
126
|
+
this.retryTimeouts.set(config.id, timeout);
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
this.connectionStates.set(config.id, {
|
|
130
|
+
status: "failed",
|
|
131
|
+
errorMessage: errorMessage,
|
|
132
|
+
});
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
async checkRemoteConnectionSupportsNewTransport(serverId, transporter) {
|
|
137
|
+
const client = new Client({
|
|
138
|
+
name: `mcp-${serverId}`,
|
|
139
|
+
version: "1.0.0",
|
|
140
|
+
}, {
|
|
141
|
+
capabilities: {},
|
|
142
|
+
});
|
|
143
|
+
try {
|
|
144
|
+
await client.connect(transporter);
|
|
145
|
+
await client.close();
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Process headers and replace environment variable placeholders with actual values.
|
|
154
|
+
* Supports patterns like ${ENV_VAR_NAME} or $ENV_VAR_NAME in header values.
|
|
155
|
+
* @param headers - The headers object to process
|
|
156
|
+
* @returns Processed headers with environment variables substituted
|
|
157
|
+
*/
|
|
158
|
+
processHeadersWithEnvVars(headers) {
|
|
159
|
+
if (!headers) {
|
|
160
|
+
return headers;
|
|
161
|
+
}
|
|
162
|
+
const processedHeaders = {};
|
|
163
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
164
|
+
// Replace ${ENV_VAR} and $ENV_VAR patterns with environment variable values
|
|
165
|
+
let processedValue = value;
|
|
166
|
+
// Handle ${ENV_VAR} pattern
|
|
167
|
+
processedValue = processedValue.replace(/\$\{([^}]+)\}/g, (match, envVarName) => {
|
|
168
|
+
const envValue = process.env[envVarName];
|
|
169
|
+
if (envValue === undefined) {
|
|
170
|
+
console.warn(`Environment variable '${envVarName}' not found, keeping original value: ${match}`);
|
|
171
|
+
return match;
|
|
172
|
+
}
|
|
173
|
+
return envValue;
|
|
174
|
+
});
|
|
175
|
+
// Handle $ENV_VAR pattern (word boundary to avoid partial matches)
|
|
176
|
+
processedValue = processedValue.replace(/\$([A-Za-z_][A-Za-z0-9_]*)\b/g, (match, envVarName) => {
|
|
177
|
+
const envValue = process.env[envVarName];
|
|
178
|
+
if (envValue === undefined) {
|
|
179
|
+
console.warn(`Environment variable '${envVarName}' not found, keeping original value: ${match}`);
|
|
180
|
+
return match;
|
|
181
|
+
}
|
|
182
|
+
return envValue;
|
|
183
|
+
});
|
|
184
|
+
processedHeaders[key] = processedValue;
|
|
185
|
+
}
|
|
186
|
+
return processedHeaders;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Process args array and replace environment variable placeholders with actual values.
|
|
190
|
+
* Supports patterns like ${ENV_VAR_NAME} or $ENV_VAR_NAME in argument values.
|
|
191
|
+
* @param args - The args array to process
|
|
192
|
+
* @returns Processed args with environment variables substituted
|
|
193
|
+
*/
|
|
194
|
+
processArgsWithEnvVars(args) {
|
|
195
|
+
if (!args) {
|
|
196
|
+
return [];
|
|
197
|
+
}
|
|
198
|
+
return args.map(arg => {
|
|
199
|
+
// Replace ${ENV_VAR} and $ENV_VAR patterns with environment variable values
|
|
200
|
+
let processedArg = arg;
|
|
201
|
+
// Handle ${ENV_VAR} pattern
|
|
202
|
+
processedArg = processedArg.replace(/\$\{([^}]+)\}/g, (match, envVarName) => {
|
|
203
|
+
const envValue = process.env[envVarName];
|
|
204
|
+
if (envValue === undefined) {
|
|
205
|
+
console.warn(`Environment variable '${envVarName}' not found, keeping original value: ${match}`);
|
|
206
|
+
return match;
|
|
207
|
+
}
|
|
208
|
+
return envValue;
|
|
209
|
+
});
|
|
210
|
+
// Handle $ENV_VAR pattern (word boundary to avoid partial matches)
|
|
211
|
+
processedArg = processedArg.replace(/\$([A-Za-z_][A-Za-z0-9_]*)\b/g, (match, envVarName) => {
|
|
212
|
+
const envValue = process.env[envVarName];
|
|
213
|
+
if (envValue === undefined) {
|
|
214
|
+
console.warn(`Environment variable '${envVarName}' not found, keeping original value: ${match}`);
|
|
215
|
+
return match;
|
|
216
|
+
}
|
|
217
|
+
return envValue;
|
|
218
|
+
});
|
|
219
|
+
return processedArg;
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
async initializeTransport(config) {
|
|
223
|
+
const args = config.getArgs ? await config.getArgs() : [];
|
|
224
|
+
const processedArgs = this.processArgsWithEnvVars(args);
|
|
225
|
+
const env = config.getEnv ? await config.getEnv() : {};
|
|
226
|
+
if (config.type !== serverTypes.CUSTOM) {
|
|
227
|
+
if (!config.serverClass) {
|
|
228
|
+
throw new Error("Server class not provided");
|
|
229
|
+
}
|
|
230
|
+
return new InternalTransport(config.serverClass);
|
|
231
|
+
}
|
|
232
|
+
if (config.command) {
|
|
233
|
+
return new StdioClientTransport({
|
|
234
|
+
command: config.command,
|
|
235
|
+
args: processedArgs,
|
|
236
|
+
// @ts-ignore
|
|
237
|
+
env: {
|
|
238
|
+
...process.env, // Include current environment
|
|
239
|
+
...env, // Override with configured environment variables
|
|
240
|
+
},
|
|
241
|
+
stderr: "ignore"
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
if (config.url) {
|
|
245
|
+
const headers = this.processHeadersWithEnvVars(config.headers);
|
|
246
|
+
const eventSourceInit = headers ? {
|
|
247
|
+
fetch: async (url, init) => {
|
|
248
|
+
return fetch(url, {
|
|
249
|
+
...init,
|
|
250
|
+
headers: {
|
|
251
|
+
...init?.headers,
|
|
252
|
+
...headers,
|
|
253
|
+
},
|
|
254
|
+
});
|
|
255
|
+
},
|
|
256
|
+
} : undefined;
|
|
257
|
+
const requestInit = headers ? { headers } : undefined;
|
|
258
|
+
const isSupportsNewTransport = await this.checkRemoteConnectionSupportsNewTransport(config.id, new StreamableHTTPClientTransport(new URL(config.url), { requestInit }));
|
|
259
|
+
return isSupportsNewTransport
|
|
260
|
+
? new StreamableHTTPClientTransport(new URL(config.url), { requestInit })
|
|
261
|
+
: new SSEClientTransport(new URL(config.url), { requestInit, eventSourceInit });
|
|
262
|
+
}
|
|
263
|
+
throw new Error(`Invalid server configuration for ${config.id}`);
|
|
264
|
+
}
|
|
265
|
+
async initializeServer(config) {
|
|
266
|
+
if (this.clients.has(config.id)) {
|
|
267
|
+
await this.stopServer(config.id);
|
|
268
|
+
}
|
|
269
|
+
try {
|
|
270
|
+
if (config.type !== serverTypes.CUSTOM) {
|
|
271
|
+
if (!config.serverClass) {
|
|
272
|
+
throw new Error("Server class not provided");
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
const transport = await this.initializeTransport(config);
|
|
276
|
+
const client = new Client({
|
|
277
|
+
name: `mcp-${config.id}`,
|
|
278
|
+
version: "1.0.0",
|
|
279
|
+
}, {
|
|
280
|
+
capabilities: {},
|
|
281
|
+
});
|
|
282
|
+
try {
|
|
283
|
+
await client.connect(transport);
|
|
284
|
+
}
|
|
285
|
+
catch (e) {
|
|
286
|
+
// @ts-ignore
|
|
287
|
+
console.error(`Failed to connect to server ${config.id}:`, e.toString());
|
|
288
|
+
}
|
|
289
|
+
this.clients.set(config.id, client);
|
|
290
|
+
try {
|
|
291
|
+
const toolsResult = await this.listTools(config.id);
|
|
292
|
+
if (toolsResult?.tools.length === 0) {
|
|
293
|
+
throw new Error(`No tools found for server ${config.id}`);
|
|
294
|
+
}
|
|
295
|
+
// @ts-ignore
|
|
296
|
+
this.tools.set(config.id, toolsResult.tools);
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
this.clients.delete(config.id);
|
|
300
|
+
throw error;
|
|
301
|
+
}
|
|
302
|
+
return client;
|
|
303
|
+
}
|
|
304
|
+
catch (error) {
|
|
305
|
+
throw new ClientInitializationError(`Failed to initialize client ${config.id}`, error instanceof Error ? error : undefined);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
clearRetryTimeout(serverId) {
|
|
309
|
+
const timeout = this.retryTimeouts.get(serverId);
|
|
310
|
+
if (timeout) {
|
|
311
|
+
clearTimeout(timeout);
|
|
312
|
+
this.retryTimeouts.delete(serverId);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
async dispose() {
|
|
316
|
+
// Close all clients and clear state
|
|
317
|
+
try {
|
|
318
|
+
for (const [id, client] of Array.from(this.clients.entries())) {
|
|
319
|
+
try {
|
|
320
|
+
await client.close();
|
|
321
|
+
}
|
|
322
|
+
catch { }
|
|
323
|
+
this.clients.delete(id);
|
|
324
|
+
this.tools.delete(id);
|
|
325
|
+
this.connectionStates.delete(id);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
catch { }
|
|
329
|
+
// Clear any retry timers
|
|
330
|
+
for (const [id] of Array.from(this.retryTimeouts.entries())) {
|
|
331
|
+
this.clearRetryTimeout(id);
|
|
332
|
+
}
|
|
333
|
+
this.autoApprovedTools.clear();
|
|
334
|
+
this.autoApprovedShellCommands.clear();
|
|
335
|
+
}
|
|
336
|
+
async stopServer(serverId) {
|
|
337
|
+
this.clearRetryTimeout(serverId);
|
|
338
|
+
await this.disposeClient(serverId);
|
|
339
|
+
this.connectionStates.delete(serverId);
|
|
340
|
+
}
|
|
341
|
+
// Existing public methods with enhanced error handling
|
|
342
|
+
getAllTools() {
|
|
343
|
+
return this.tools;
|
|
344
|
+
}
|
|
345
|
+
getEnabledTools(availableTools, ignoreTools) {
|
|
346
|
+
const allTools = this.getAllTools();
|
|
347
|
+
const selections = new Map();
|
|
348
|
+
// Build selection map from availableTools (server or server.tool)
|
|
349
|
+
if (Array.isArray(availableTools) && availableTools.length > 0) {
|
|
350
|
+
for (const entry of availableTools) {
|
|
351
|
+
if (!entry || typeof entry !== 'string')
|
|
352
|
+
continue;
|
|
353
|
+
const [serverNameRaw, toolNameRaw] = entry.split('.');
|
|
354
|
+
const serverName = (serverNameRaw || '').trim();
|
|
355
|
+
const toolName = (toolNameRaw || '').trim();
|
|
356
|
+
if (!serverName)
|
|
357
|
+
continue;
|
|
358
|
+
if (!selections.has(serverName)) {
|
|
359
|
+
selections.set(serverName, { all: false, toolNames: new Set() });
|
|
360
|
+
}
|
|
361
|
+
const sel = selections.get(serverName);
|
|
362
|
+
// If specific tool provided, add it; otherwise mark server as "all tools"
|
|
363
|
+
if (toolName) {
|
|
364
|
+
sel.toolNames.add(toolName);
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
sel.all = true;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
const enabledTools = new Map();
|
|
372
|
+
// If no selections provided, enable all tools for all servers
|
|
373
|
+
if (selections.size === 0) {
|
|
374
|
+
for (const [serverName, tools] of allTools.entries()) {
|
|
375
|
+
enabledTools.set(serverName, tools);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
// Otherwise, filter per server according to selections
|
|
380
|
+
for (const [serverName, tools] of allTools.entries()) {
|
|
381
|
+
const sel = selections.get(serverName);
|
|
382
|
+
if (!sel) {
|
|
383
|
+
// Server not explicitly selected — skip it
|
|
384
|
+
continue;
|
|
385
|
+
}
|
|
386
|
+
if (sel.all || sel.toolNames.size === 0) {
|
|
387
|
+
// Server selected without specific tools means all tools from this server
|
|
388
|
+
enabledTools.set(serverName, tools);
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
// Filter tools to the specified set
|
|
392
|
+
const filtered = tools.filter((t) => sel.toolNames.has(t.name));
|
|
393
|
+
enabledTools.set(serverName, filtered);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
// Apply ignore filters if provided
|
|
398
|
+
if (Array.isArray(ignoreTools) && ignoreTools.length > 0) {
|
|
399
|
+
const ignoreMap = new Map();
|
|
400
|
+
for (const entry of ignoreTools) {
|
|
401
|
+
if (!entry || typeof entry !== 'string')
|
|
402
|
+
continue;
|
|
403
|
+
const [srvRaw, toolRaw] = entry.split('.');
|
|
404
|
+
const serverName = (srvRaw || '').trim();
|
|
405
|
+
const toolName = (toolRaw || '').trim();
|
|
406
|
+
if (!serverName)
|
|
407
|
+
continue;
|
|
408
|
+
if (!ignoreMap.has(serverName)) {
|
|
409
|
+
ignoreMap.set(serverName, { all: false, toolNames: new Set() });
|
|
410
|
+
}
|
|
411
|
+
const ig = ignoreMap.get(serverName);
|
|
412
|
+
if (toolName)
|
|
413
|
+
ig.toolNames.add(toolName);
|
|
414
|
+
else
|
|
415
|
+
ig.all = true;
|
|
416
|
+
}
|
|
417
|
+
for (const [serverName, tools] of Array.from(enabledTools.entries())) {
|
|
418
|
+
const ig = ignoreMap.get(serverName);
|
|
419
|
+
if (!ig)
|
|
420
|
+
continue;
|
|
421
|
+
if (ig.all) {
|
|
422
|
+
enabledTools.delete(serverName);
|
|
423
|
+
}
|
|
424
|
+
else if (ig.toolNames.size > 0) {
|
|
425
|
+
const filtered = tools.filter(t => !ig.toolNames.has(t.name));
|
|
426
|
+
if (filtered.length > 0) {
|
|
427
|
+
enabledTools.set(serverName, filtered);
|
|
428
|
+
}
|
|
429
|
+
else {
|
|
430
|
+
enabledTools.delete(serverName);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
return enabledTools;
|
|
436
|
+
}
|
|
437
|
+
getTools(clientId) {
|
|
438
|
+
return [...(this.getAllTools().get(clientId) || [])];
|
|
439
|
+
}
|
|
440
|
+
getTool(clientId, toolName) {
|
|
441
|
+
return this.getAllTools()
|
|
442
|
+
.get(clientId)
|
|
443
|
+
?.find((tool) => tool.name === toolName);
|
|
444
|
+
}
|
|
445
|
+
getConnectionStates() {
|
|
446
|
+
return new Map(this.connectionStates);
|
|
447
|
+
}
|
|
448
|
+
setAutoApprovedAllTools() {
|
|
449
|
+
this.autoApproveAllTools = true;
|
|
450
|
+
}
|
|
451
|
+
setAutoApprovedTool(clientId, toolName) {
|
|
452
|
+
if (!this.autoApprovedTools.has(clientId)) {
|
|
453
|
+
this.autoApprovedTools.set(clientId, new Map());
|
|
454
|
+
}
|
|
455
|
+
const autoApproved = this.autoApprovedTools.get(clientId);
|
|
456
|
+
if (autoApproved) {
|
|
457
|
+
autoApproved.set(toolName, true);
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
throw new Error(`Client ${clientId} not found`);
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
setAutoApprovedShellCommand(command) {
|
|
464
|
+
this.autoApprovedShellCommands.set(command, true);
|
|
465
|
+
}
|
|
466
|
+
// Apply auto-approval snapshot (used by sub-agent subprocesses via IPC)
|
|
467
|
+
applyApprovalSnapshot(snapshot) {
|
|
468
|
+
try {
|
|
469
|
+
if (snapshot.all) {
|
|
470
|
+
this.setAutoApprovedAllTools();
|
|
471
|
+
}
|
|
472
|
+
if (Array.isArray(snapshot.tools)) {
|
|
473
|
+
for (const entry of snapshot.tools) {
|
|
474
|
+
if (entry?.clientId && entry?.toolName) {
|
|
475
|
+
this.setAutoApprovedTool(entry.clientId, entry.toolName);
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
if (Array.isArray(snapshot.shellCommands)) {
|
|
480
|
+
for (const cmd of snapshot.shellCommands) {
|
|
481
|
+
if (typeof cmd === 'string' && cmd.length > 0)
|
|
482
|
+
this.setAutoApprovedShellCommand(cmd);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
catch (e) {
|
|
487
|
+
// Best-effort: do not throw from snapshot application
|
|
488
|
+
console.debug('[MCPManager] Failed to apply approval snapshot:', e instanceof Error ? e.message : String(e));
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
isAutoApprovedTool(clientId, toolName, args) {
|
|
492
|
+
if (this.autoApproveAllTools) {
|
|
493
|
+
return true;
|
|
494
|
+
}
|
|
495
|
+
if (this.serverRegistry.getServer(clientId)?.type === serverTypes.BACKEND || clientId === "sequential_thinking" || clientId === "reviewer_notes") {
|
|
496
|
+
return true;
|
|
497
|
+
}
|
|
498
|
+
// Auto-approve Gerrit tools to prevent hanging in webhook context
|
|
499
|
+
if (clientId === 'gerrit' && (toolName === 'gerrit_diff_files' || toolName === 'gerrit_comment')) {
|
|
500
|
+
return true;
|
|
501
|
+
}
|
|
502
|
+
// Check shell command-specific approval
|
|
503
|
+
if (clientId === 'shell' && toolName === 'shell_execute' && args?.command) {
|
|
504
|
+
const command = args.command;
|
|
505
|
+
if (this.autoApprovedShellCommands.has(command)) {
|
|
506
|
+
return true;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
// Check individual tool approval first
|
|
510
|
+
const autoApproved = this.autoApprovedTools.get(clientId);
|
|
511
|
+
if (autoApproved && autoApproved.has(toolName)) {
|
|
512
|
+
return true;
|
|
513
|
+
}
|
|
514
|
+
// For Unique servers, check group approval
|
|
515
|
+
if (isUniqueServer(clientId)) {
|
|
516
|
+
const toolGroup = getToolGroup(toolName);
|
|
517
|
+
if (toolGroup && this.autoApprovedToolGroups.includes(toolGroup)) {
|
|
518
|
+
return true;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
// Check argument-based approval for built-in servers
|
|
522
|
+
if (args && this.serverRegistry.getServer(clientId)?.type === serverTypes.BUILTIN) {
|
|
523
|
+
const builtInServer = this.serverRegistry.getBuiltInServer(clientId);
|
|
524
|
+
if (builtInServer && builtInServer.isToolAutoApprovedForArgs) {
|
|
525
|
+
return builtInServer.isToolAutoApprovedForArgs(toolName, args);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
return false;
|
|
529
|
+
}
|
|
530
|
+
async listTools(clientId) {
|
|
531
|
+
const client = this.clients.get(clientId);
|
|
532
|
+
if (!client) {
|
|
533
|
+
throw new Error(`Client ${clientId} not found`);
|
|
534
|
+
}
|
|
535
|
+
return await client.request({ method: "tools/list" }, ListToolsResultSchema);
|
|
536
|
+
}
|
|
537
|
+
async callTool(clientId, name, args) {
|
|
538
|
+
const server = this.serverRegistry.getServer(clientId);
|
|
539
|
+
if (server?.type === serverTypes.BACKEND || clientId === "sequential_thinking" || clientId == "reviewer_notes") {
|
|
540
|
+
return undefined;
|
|
541
|
+
}
|
|
542
|
+
const client = this.clients.get(clientId);
|
|
543
|
+
if (!client) {
|
|
544
|
+
console.debug(`[MCPManager] Error: Client ${clientId} not found`);
|
|
545
|
+
throw new Error(`Client ${clientId} not found`);
|
|
546
|
+
}
|
|
547
|
+
if (!qodoTools.includes(name)) {
|
|
548
|
+
const tool = this.getTool(clientId, name);
|
|
549
|
+
if (!tool) {
|
|
550
|
+
throw new Error(`Tool ${name} not found for client ${clientId}`);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
try {
|
|
554
|
+
this.progressToken += 1;
|
|
555
|
+
return await client.request({
|
|
556
|
+
method: "tools/call",
|
|
557
|
+
params: {
|
|
558
|
+
name,
|
|
559
|
+
arguments: args,
|
|
560
|
+
_meta: {
|
|
561
|
+
progressToken: `qodo-mcp-progress-token-${this.progressToken}`,
|
|
562
|
+
},
|
|
563
|
+
},
|
|
564
|
+
}, name.startsWith("qodo") ? z.any() : CallToolResultSchema, {
|
|
565
|
+
onprogress: (progress) => {
|
|
566
|
+
console.debug(`[MCPManager] ${clientId} progress: ${JSON.stringify(progress)}`);
|
|
567
|
+
},
|
|
568
|
+
timeout: 200000,
|
|
569
|
+
resetTimeoutOnProgress: true,
|
|
570
|
+
});
|
|
571
|
+
}
|
|
572
|
+
catch (error) {
|
|
573
|
+
console.debug(`[MCPManager] Tool call error for ${clientId}.${name}: ${error}`);
|
|
574
|
+
return {
|
|
575
|
+
content: [{ type: "text", text: error instanceof Error ? error.message : String(error) }],
|
|
576
|
+
isError: true,
|
|
577
|
+
};
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
async disposeClient(clientId) {
|
|
581
|
+
const client = this.clients.get(clientId);
|
|
582
|
+
if (client) {
|
|
583
|
+
try {
|
|
584
|
+
await client.close();
|
|
585
|
+
}
|
|
586
|
+
finally {
|
|
587
|
+
this.clients.delete(clientId);
|
|
588
|
+
this.tools.delete(clientId);
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
formatErrorMessage(error) {
|
|
593
|
+
if (error instanceof Error) {
|
|
594
|
+
// Common error patterns and their user-friendly messages
|
|
595
|
+
if (error.message.includes('ENOENT')) {
|
|
596
|
+
return 'Server executable not found. Please check the server path in your configuration.';
|
|
597
|
+
}
|
|
598
|
+
if (error.message.includes('ECONNREFUSED')) {
|
|
599
|
+
return 'Connection refused. The server may not be running or accessible.';
|
|
600
|
+
}
|
|
601
|
+
if (error.message.includes('ETIMEDOUT')) {
|
|
602
|
+
return 'Connection timed out. The server took too long to respond.';
|
|
603
|
+
}
|
|
604
|
+
if (error.message.includes('spawn')) {
|
|
605
|
+
return 'Failed to start the server process. Check if the command is valid.';
|
|
606
|
+
}
|
|
607
|
+
if (error.message.includes('permission denied') || error.message.includes('EACCES')) {
|
|
608
|
+
return 'Permission denied. Check file permissions for the server executable.';
|
|
609
|
+
}
|
|
610
|
+
// Return the first line of the error message for other cases
|
|
611
|
+
return error.message.split('\n')[0];
|
|
612
|
+
}
|
|
613
|
+
return String(error);
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
//# sourceMappingURL=MCPManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MCPManager.js","sourceRoot":"","sources":["../../src/mcp/MCPManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvedTools.d.ts","sourceRoot":"","sources":["../../src/mcp/approvedTools.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe,oBAAoB,CAAA;AAEhD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI5D;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKxD"}
|