centaurus-cli 2.7.2 → 2.7.3

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 (69) hide show
  1. package/dist/cli-adapter.d.ts +6 -0
  2. package/dist/cli-adapter.d.ts.map +1 -1
  3. package/dist/cli-adapter.js +58 -33
  4. package/dist/cli-adapter.js.map +1 -1
  5. package/dist/config/mcp-config-manager.d.ts +53 -0
  6. package/dist/config/mcp-config-manager.d.ts.map +1 -0
  7. package/dist/config/mcp-config-manager.js +210 -0
  8. package/dist/config/mcp-config-manager.js.map +1 -0
  9. package/dist/config/slash-commands.d.ts +14 -0
  10. package/dist/config/slash-commands.d.ts.map +1 -0
  11. package/dist/config/slash-commands.js +65 -0
  12. package/dist/config/slash-commands.js.map +1 -0
  13. package/dist/index.js +17 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/mcp/mcp-command-handler.d.ts +16 -0
  16. package/dist/mcp/mcp-command-handler.d.ts.map +1 -0
  17. package/dist/mcp/mcp-command-handler.js +196 -0
  18. package/dist/mcp/mcp-command-handler.js.map +1 -0
  19. package/dist/mcp/mcp-server-manager.d.ts +30 -0
  20. package/dist/mcp/mcp-server-manager.d.ts.map +1 -0
  21. package/dist/mcp/mcp-server-manager.js +165 -0
  22. package/dist/mcp/mcp-server-manager.js.map +1 -0
  23. package/dist/mcp/mcp-tool-wrapper.d.ts +12 -0
  24. package/dist/mcp/mcp-tool-wrapper.d.ts.map +1 -0
  25. package/dist/mcp/mcp-tool-wrapper.js +57 -0
  26. package/dist/mcp/mcp-tool-wrapper.js.map +1 -0
  27. package/dist/services/ai-service-client.d.ts.map +1 -1
  28. package/dist/services/ai-service-client.js +0 -2
  29. package/dist/services/ai-service-client.js.map +1 -1
  30. package/dist/tools/command.js.map +1 -1
  31. package/dist/tools/file-ops.d.ts.map +1 -1
  32. package/dist/tools/file-ops.js +5 -7
  33. package/dist/tools/file-ops.js.map +1 -1
  34. package/dist/ui/components/App.d.ts +3 -0
  35. package/dist/ui/components/App.d.ts.map +1 -1
  36. package/dist/ui/components/App.js +164 -66
  37. package/dist/ui/components/App.js.map +1 -1
  38. package/dist/ui/components/FileCreationPreview.d.ts +8 -0
  39. package/dist/ui/components/FileCreationPreview.d.ts.map +1 -0
  40. package/dist/ui/components/FileCreationPreview.js +63 -0
  41. package/dist/ui/components/FileCreationPreview.js.map +1 -0
  42. package/dist/ui/components/InputBox.d.ts.map +1 -1
  43. package/dist/ui/components/InputBox.js +132 -4
  44. package/dist/ui/components/InputBox.js.map +1 -1
  45. package/dist/ui/components/InteractiveShell.d.ts +1 -0
  46. package/dist/ui/components/InteractiveShell.d.ts.map +1 -1
  47. package/dist/ui/components/InteractiveShell.js +30 -8
  48. package/dist/ui/components/InteractiveShell.js.map +1 -1
  49. package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -1
  50. package/dist/ui/components/MarkdownRenderer.js +8 -30
  51. package/dist/ui/components/MarkdownRenderer.js.map +1 -1
  52. package/dist/ui/components/SlashCommandAutocomplete.d.ts +11 -0
  53. package/dist/ui/components/SlashCommandAutocomplete.d.ts.map +1 -0
  54. package/dist/ui/components/SlashCommandAutocomplete.js +15 -0
  55. package/dist/ui/components/SlashCommandAutocomplete.js.map +1 -0
  56. package/dist/ui/components/ToolExecutionMessage.d.ts.map +1 -1
  57. package/dist/ui/components/ToolExecutionMessage.js +96 -32
  58. package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
  59. package/dist/ui/components/ToolExecutionStatus.d.ts.map +1 -1
  60. package/dist/ui/components/ToolExecutionStatus.js +28 -1
  61. package/dist/ui/components/ToolExecutionStatus.js.map +1 -1
  62. package/dist/utils/input-classifier.d.ts.map +1 -1
  63. package/dist/utils/input-classifier.js +2 -1
  64. package/dist/utils/input-classifier.js.map +1 -1
  65. package/dist/utils/shell.d.ts +2 -0
  66. package/dist/utils/shell.d.ts.map +1 -1
  67. package/dist/utils/shell.js +71 -0
  68. package/dist/utils/shell.js.map +1 -1
  69. package/package.json +2 -1
@@ -0,0 +1,210 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import * as os from 'os';
4
+ export class MCPConfigManager {
5
+ configPath;
6
+ config;
7
+ constructor(configDir) {
8
+ const baseDir = configDir || path.join(os.homedir(), '.centaurus');
9
+ this.configPath = path.join(baseDir, 'mcp-config.json');
10
+ this.config = this.load();
11
+ }
12
+ getConfigPath() {
13
+ return this.configPath;
14
+ }
15
+ load() {
16
+ try {
17
+ if (fs.existsSync(this.configPath)) {
18
+ const content = fs.readFileSync(this.configPath, 'utf-8');
19
+ // Handle empty file
20
+ if (!content.trim()) {
21
+ console.warn('[MCP Config] Config file is empty');
22
+ return this.getDefaultConfig();
23
+ }
24
+ let rawConfig;
25
+ try {
26
+ rawConfig = JSON.parse(content);
27
+ }
28
+ catch (parseError) {
29
+ console.error('[MCP Config] Invalid JSON:', parseError.message);
30
+ return this.getDefaultConfig();
31
+ }
32
+ // Normalize the config to standard format
33
+ const normalizedConfig = this.normalizeConfig(rawConfig);
34
+ if (normalizedConfig.servers.length === 0) {
35
+ console.warn('[MCP Config] No servers found in config file');
36
+ }
37
+ return normalizedConfig;
38
+ }
39
+ else {
40
+ // Config file doesn't exist - create directory and return default
41
+ const configDir = path.dirname(this.configPath);
42
+ if (!fs.existsSync(configDir)) {
43
+ fs.mkdirSync(configDir, { recursive: true });
44
+ }
45
+ }
46
+ }
47
+ catch (error) {
48
+ console.error('[MCP Config] Failed to load config:', error.message);
49
+ }
50
+ return this.getDefaultConfig();
51
+ }
52
+ /**
53
+ * Normalize config from different formats to standard format
54
+ * Supports:
55
+ * 1. mcp_servers format (preferred): { "mcp_servers": { "serverName": { "command": "...", ... } } }
56
+ * 2. Array format: { "servers": [{ "name": "x", "command": "y", ... }] }
57
+ * 3. Object format: { "serverName": { "command": "y", ... } } - keys become server names
58
+ * 4. mcpServers format (VSCode/Claude style): { "mcpServers": { ... } }
59
+ */
60
+ normalizeConfig(rawConfig) {
61
+ // If it's null or not an object, return default
62
+ if (!rawConfig || typeof rawConfig !== 'object') {
63
+ return this.getDefaultConfig();
64
+ }
65
+ // Format 1 (PREFERRED): Check for "mcp_servers" key (snake_case) - object format
66
+ if (rawConfig.mcp_servers && typeof rawConfig.mcp_servers === 'object' && !Array.isArray(rawConfig.mcp_servers)) {
67
+ return this.convertObjectToArrayFormat(rawConfig.mcp_servers);
68
+ }
69
+ // Format 2: Standard array format with "servers" key
70
+ if (Array.isArray(rawConfig.servers)) {
71
+ const validServers = rawConfig.servers
72
+ .filter((s) => this.validateServerConfig(s))
73
+ .map((s) => this.sanitizeServerConfig(s));
74
+ return { servers: validServers };
75
+ }
76
+ // Format 3: Check for "mcpServers" key (VSCode/Claude Desktop style - camelCase)
77
+ if (rawConfig.mcpServers && typeof rawConfig.mcpServers === 'object') {
78
+ return this.convertObjectToArrayFormat(rawConfig.mcpServers);
79
+ }
80
+ // Format 4: Object format where keys are server names (legacy)
81
+ // Check if any top-level key looks like a server config (has 'command' property)
82
+ const potentialServers = Object.entries(rawConfig).filter(([key, value]) => key !== 'servers' &&
83
+ key !== 'mcpServers' &&
84
+ key !== 'mcp_servers' &&
85
+ value &&
86
+ typeof value === 'object' &&
87
+ 'command' in value);
88
+ if (potentialServers.length > 0) {
89
+ return this.convertObjectToArrayFormat(rawConfig);
90
+ }
91
+ // If we have a 'servers' key but it's not an array, try to handle it
92
+ if (rawConfig.servers && typeof rawConfig.servers === 'object' && !Array.isArray(rawConfig.servers)) {
93
+ return this.convertObjectToArrayFormat(rawConfig.servers);
94
+ }
95
+ console.warn('[MCP Config] Unrecognized config format');
96
+ return this.getDefaultConfig();
97
+ }
98
+ /**
99
+ * Convert object-based format to array format
100
+ * { "serverName": { "command": "x", ... } } => { "servers": [{ "name": "serverName", "command": "x", ... }] }
101
+ */
102
+ convertObjectToArrayFormat(configObject) {
103
+ const servers = [];
104
+ for (const [name, serverConfig] of Object.entries(configObject)) {
105
+ if (!serverConfig || typeof serverConfig !== 'object') {
106
+ console.warn(`[MCP Config] Skipping invalid server entry: ${name}`);
107
+ continue;
108
+ }
109
+ // Build server config with name from key
110
+ const server = {
111
+ name,
112
+ command: serverConfig.command,
113
+ args: serverConfig.args,
114
+ env: serverConfig.env,
115
+ enabled: serverConfig.enabled,
116
+ auth: serverConfig.auth
117
+ };
118
+ if (this.validateServerConfig(server)) {
119
+ servers.push(this.sanitizeServerConfig(server));
120
+ }
121
+ }
122
+ return { servers };
123
+ }
124
+ /**
125
+ * Validate a server config has required fields
126
+ */
127
+ validateServerConfig(config) {
128
+ if (!config || typeof config !== 'object') {
129
+ return false;
130
+ }
131
+ if (!config.name || typeof config.name !== 'string') {
132
+ console.warn('[MCP Config] Server missing required "name" field');
133
+ return false;
134
+ }
135
+ if (!config.command || typeof config.command !== 'string') {
136
+ console.warn(`[MCP Config] Server "${config.name}" missing required "command" field`);
137
+ return false;
138
+ }
139
+ return true;
140
+ }
141
+ /**
142
+ * Sanitize and set defaults for server config
143
+ */
144
+ sanitizeServerConfig(config) {
145
+ return {
146
+ name: config.name,
147
+ command: config.command,
148
+ args: Array.isArray(config.args) ? config.args : undefined,
149
+ env: config.env && typeof config.env === 'object' ? config.env : undefined,
150
+ enabled: config.enabled !== false, // Default to enabled
151
+ auth: config.auth
152
+ };
153
+ }
154
+ save(config) {
155
+ try {
156
+ const configDir = path.dirname(this.configPath);
157
+ // Ensure config directory exists
158
+ if (!fs.existsSync(configDir)) {
159
+ fs.mkdirSync(configDir, { recursive: true });
160
+ }
161
+ fs.writeFileSync(this.configPath, JSON.stringify(config, null, 2), 'utf-8');
162
+ this.config = config;
163
+ }
164
+ catch (error) {
165
+ throw new Error(`Failed to save MCP config: ${error}`);
166
+ }
167
+ }
168
+ getServers() {
169
+ return this.config.servers.filter(s => s.enabled !== false);
170
+ }
171
+ getAllServers() {
172
+ return this.config.servers;
173
+ }
174
+ addServer(server) {
175
+ this.config.servers.push(server);
176
+ this.save(this.config);
177
+ }
178
+ removeServer(name) {
179
+ this.config.servers = this.config.servers.filter(s => s.name !== name);
180
+ this.save(this.config);
181
+ }
182
+ updateServer(name, updates) {
183
+ const index = this.config.servers.findIndex(s => s.name === name);
184
+ if (index !== -1) {
185
+ this.config.servers[index] = { ...this.config.servers[index], ...updates };
186
+ this.save(this.config);
187
+ }
188
+ }
189
+ getDefaultConfig() {
190
+ return {
191
+ servers: []
192
+ };
193
+ }
194
+ createExampleConfig() {
195
+ const exampleConfig = {
196
+ servers: [
197
+ {
198
+ name: 'example-filesystem',
199
+ command: 'npx',
200
+ args: ['-y', '@modelcontextprotocol/server-filesystem', os.homedir()],
201
+ enabled: false
202
+ }
203
+ ]
204
+ };
205
+ if (!fs.existsSync(this.configPath)) {
206
+ this.save(exampleConfig);
207
+ }
208
+ }
209
+ }
210
+ //# sourceMappingURL=mcp-config-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-config-manager.js","sourceRoot":"","sources":["../../src/config/mcp-config-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface SlashCommand {
2
+ name: string;
3
+ description: string;
4
+ aliases?: string[];
5
+ }
6
+ export declare const SLASH_COMMANDS: SlashCommand[];
7
+ export declare const MCP_SUBCOMMANDS: SlashCommand[];
8
+ /**
9
+ * Filter commands based on query string
10
+ * @param query The search query (without the leading /)
11
+ * @returns Filtered and sorted commands
12
+ */
13
+ export declare function filterCommands(query: string): SlashCommand[];
14
+ //# sourceMappingURL=slash-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slash-commands.d.ts","sourceRoot":"","sources":["../../src/config/slash-commands.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,EAAE,YAAY,EAWxC,CAAC;AAGF,eAAO,MAAM,eAAe,EAAE,YAAY,EAOzC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,CA8C5D"}
@@ -0,0 +1,65 @@
1
+ export const SLASH_COMMANDS = [
2
+ { name: 'help', description: 'Show this help message' },
3
+ { name: 'init', description: 'Analyze project and create/load centaurus.md context file' },
4
+ { name: 'clear', description: 'Clear conversation history' },
5
+ { name: 'config', description: 'View current configuration' },
6
+ { name: 'model', description: 'Select from available Google models' },
7
+ { name: 'plan', description: 'Toggle plan mode for complex implementations' },
8
+ { name: 'mcp', description: 'Manage configured MCP servers and tools' },
9
+ { name: 'sign-in', description: 'Sign in with Google (if not already signed in)' },
10
+ { name: 'logout', description: 'Sign out, clear session, and exit CLI' },
11
+ { name: 'exit', description: 'Exit the application' },
12
+ ];
13
+ // MCP subcommands
14
+ export const MCP_SUBCOMMANDS = [
15
+ { name: 'list', description: 'List configured MCP servers and tools' },
16
+ { name: 'desc', description: 'List servers and tools with descriptions' },
17
+ { name: 'schema', description: 'List servers, tools with full schemas' },
18
+ { name: 'status', description: 'Show connection status of all servers' },
19
+ { name: 'refresh', description: 'Restart MCP servers' },
20
+ { name: 'config', description: 'Show MCP configuration file location' },
21
+ ];
22
+ /**
23
+ * Filter commands based on query string
24
+ * @param query The search query (without the leading /)
25
+ * @returns Filtered and sorted commands
26
+ */
27
+ export function filterCommands(query) {
28
+ if (!query) {
29
+ // No query - return all commands
30
+ return SLASH_COMMANDS;
31
+ }
32
+ const normalized = query.toLowerCase();
33
+ // Check if this is an MCP subcommand query (e.g., "mcp list")
34
+ if (normalized.startsWith('mcp ')) {
35
+ const subQuery = normalized.slice(4); // Remove "mcp "
36
+ return MCP_SUBCOMMANDS.filter(cmd => cmd.name.toLowerCase().startsWith(subQuery) ||
37
+ cmd.description.toLowerCase().includes(subQuery));
38
+ }
39
+ // Filter commands that match
40
+ const matches = SLASH_COMMANDS.filter(cmd => {
41
+ // Match if command name starts with query
42
+ if (cmd.name.toLowerCase().startsWith(normalized)) {
43
+ return true;
44
+ }
45
+ // Or if description contains query
46
+ if (cmd.description.toLowerCase().includes(normalized)) {
47
+ return true;
48
+ }
49
+ return false;
50
+ });
51
+ // Sort by relevance: exact prefix matches first
52
+ matches.sort((a, b) => {
53
+ const aStarts = a.name.toLowerCase().startsWith(normalized);
54
+ const bStarts = b.name.toLowerCase().startsWith(normalized);
55
+ if (aStarts && !bStarts)
56
+ return -1;
57
+ if (!aStarts && bStarts)
58
+ return 1;
59
+ // Both start or both don't start - sort alphabetically
60
+ return a.name.localeCompare(b.name);
61
+ });
62
+ // Limit to 10 results
63
+ return matches.slice(0, 10);
64
+ }
65
+ //# sourceMappingURL=slash-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slash-commands.js","sourceRoot":"","sources":["../../src/config/slash-commands.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC1C,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,wBAAwB,EAAE;IACvD,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,2DAA2D,EAAE;IAC1F,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC5D,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC7D,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,qCAAqC,EAAE;IACrE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,8CAA8C,EAAE;IAC7E,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,yCAAyC,EAAE;IACvE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gDAAgD,EAAE;IAClF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;IACxE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,sBAAsB,EAAE;CACxD,CAAC;AAEF,kBAAkB;AAClB,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC3C,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,uCAAuC,EAAE;IACtE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,0CAA0C,EAAE;IACzE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;IACxE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;IACxE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE;IACvD,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;CAC1E,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,iCAAiC;QACjC,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAEvC,8DAA8D;IAC9D,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;QACtD,OAAO,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAChC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC3C,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACnD,CAAC;IACN,CAAC;IAED,6BAA6B;IAC7B,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QACxC,0CAA0C;QAC1C,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,mCAAmC;QACnC,IAAI,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,gDAAgD;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAClB,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAE5D,IAAI,OAAO,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,IAAI,OAAO;YAAE,OAAO,CAAC,CAAC;QAElC,uDAAuD;QACvD,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,sBAAsB;IACtB,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC"}
package/dist/index.js CHANGED
@@ -110,6 +110,9 @@ async function main() {
110
110
  onResponseReceived: (callback) => {
111
111
  cli.setOnResponseCallback(callback);
112
112
  },
113
+ onDirectMessage: (callback) => {
114
+ cli.setOnDirectMessageCallback(callback);
115
+ },
113
116
  onResponseStream: (callback) => {
114
117
  cli.setOnResponseStreamCallback(callback);
115
118
  },
@@ -160,6 +163,20 @@ async function main() {
160
163
  },
161
164
  onShellInput: (input) => {
162
165
  cli.writeToShellStdin(input);
166
+ },
167
+ onShellSignal: (signal) => {
168
+ try {
169
+ require('fs').appendFileSync('shell_ui_debug.log', `[index.ts] onShellSignal called with ${signal}\n`);
170
+ }
171
+ catch (e) { }
172
+ cli.sendSignalToShell(signal);
173
+ },
174
+ onKillProcess: () => {
175
+ try {
176
+ require('fs').appendFileSync('shell_ui_debug.log', `[index.ts] onKillProcess called\n`);
177
+ }
178
+ catch (e) { }
179
+ cli.killCurrentProcess();
163
180
  }
164
181
  })), {
165
182
  patchConsole: false,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,4CAA4C;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,4DAA4D;AAC5D,uDAAuD;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;AAC/C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,KAAK,UAAU,oBAAoB;IACjC,6DAA6D;IAC7D,IAAI,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,gEAAgE;YAChE,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,CAAC,mBAAmB;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iEAAiE;YACjE,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;QAC9B,gBAAgB,GAAG,IAAI,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0EAA0E;QAC1E,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACxE,CAAC;IAED,iDAAiD;IACjD,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;QACtC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,MAAM,CACrC,KAAK,CAAC,aAAa,CAAC,iBAAiB,EAAE;YACrC,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACnB,KAAK,EAAE,CAAC;gBAER,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;gBAE/C,qCAAqC;gBACrC,+DAA+D;gBAC/D,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAC;gBAE9C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;oBAC9C,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,KAAK,IAAI,eAAe,IAAI,CAAC,CAAC;oBAC/E,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;oBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YACD,MAAM,EAAE,GAAG,EAAE;gBACX,KAAK,EAAE,CAAC;gBACR,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;SACF,CAAC,EACF;YACE,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,IAAI;SAClB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,wBAAwB;IACxB,MAAM,oBAAoB,EAAE,CAAC;IAE7B,MAAM,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;IAE/B,+CAA+C;IAC/C,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;IAEvB,6DAA6D;IAC7D,MAAM,gBAAgB,GAAG,GAAG,CAAC,mBAAmB,EAAE,CAAC;IACnD,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAE9B,+BAA+B;QAC/B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBAC9B,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,4CAA4C;IAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAE7C,qCAAqC;IACrC,iFAAiF;IACjF,yDAAyD;IACzD,4DAA4D;IAC5D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAC9B,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,EACrC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;QACvB,SAAS,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC;QAClD,eAAe,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,oBAAoB,EAAE;QACjD,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE;QAC5B,eAAe,EAAE,GAAG,CAAC,WAAW,EAAE;QAClC,kBAAkB,EAAE,CAAC,QAAmC,EAAE,EAAE;YAC1D,GAAG,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;QACD,gBAAgB,EAAE,CAAC,QAAiC,EAAE,EAAE;YACtD,GAAG,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QACD,eAAe,EAAE,CAAC,QAAmC,EAAE,EAAE;YACvD,GAAG,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QACD,iBAAiB,EAAE,CAAC,QAA2C,EAAE,EAAE;YACjE,GAAG,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;QACD,aAAa,EAAE,CAAC,QAAiH,EAAE,EAAE;YACnI,GAAG,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,iBAAiB,EAAE,CAAC,SAAiB,EAAE,IAAa,EAAE,EAAE;YACtD,OAAO,GAAG,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;QACD,qBAAqB,EAAE,CAAC,QAA+J,EAAE,EAAE;YACzL,GAAG,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,qBAAqB,EAAE,CAAC,QAA6P,EAAE,EAAE;YACvR,GAAG,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,qBAAqB,EAAE,CAAC,QAA0F,EAAE,EAAE;YACpH,GAAG,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,gBAAgB,EAAE,CAAC,QAAqC,EAAE,EAAE;YAC1D,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QACD,qBAAqB,EAAE,CAAC,QAA2E,EAAE,EAAE;YACrG,GAAG,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,mBAAmB,EAAE,CAAC,QAAwC,EAAE,EAAE;YAChE,GAAG,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QACD,mBAAmB,EAAE,GAAG,EAAE;YACxB,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC1B,CAAC;QACD,WAAW,EAAE,CAAC,QAA+B,EAAE,EAAE;YAC/C,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QACD,aAAa,EAAE,CAAC,QAAqC,EAAE,EAAE;YACvD,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QACD,uBAAuB,EAAE,CAAC,QAAgC,EAAE,EAAE;YAC5D,GAAG,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QACD,iBAAiB,EAAE,CAAC,QAA8C,EAAE,EAAE;YACpE,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QACD,YAAY,EAAE,CAAC,KAAa,EAAE,EAAE;YAC9B,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;KACF,CAAC,CACH,EACD;QACE,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,KAAK;KACb,CACF,CAAC;IAEF,wBAAwB;IACxB,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { MCPConfigManager } from '../config/mcp-config-manager.js';
2
+ import { MCPServerManager } from './mcp-server-manager.js';
3
+ import { ToolRegistry } from '../tools/registry.js';
4
+ export declare class MCPCommandHandler {
5
+ private mcpConfigManager;
6
+ private mcpServerManager;
7
+ private toolRegistry;
8
+ constructor(mcpConfigManager: MCPConfigManager, mcpServerManager: MCPServerManager, toolRegistry: ToolRegistry);
9
+ initializeMCP(): Promise<void>;
10
+ handleCommand(args: string[]): Promise<string>;
11
+ private handleList;
12
+ private handleStatus;
13
+ private handleRefresh;
14
+ private handleConfig;
15
+ }
16
+ //# sourceMappingURL=mcp-command-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-command-handler.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-command-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,qBAAa,iBAAiB;IAEtB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,YAAY;gBAFZ,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY;IAGhC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB9B,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAiCpD,OAAO,CAAC,UAAU;IA8ClB,OAAO,CAAC,YAAY;YAkCN,aAAa;IA0C3B,OAAO,CAAC,YAAY;CAiCvB"}
@@ -0,0 +1,196 @@
1
+ import { createMCPToolWrappers } from './mcp-tool-wrapper.js';
2
+ export class MCPCommandHandler {
3
+ mcpConfigManager;
4
+ mcpServerManager;
5
+ toolRegistry;
6
+ constructor(mcpConfigManager, mcpServerManager, toolRegistry) {
7
+ this.mcpConfigManager = mcpConfigManager;
8
+ this.mcpServerManager = mcpServerManager;
9
+ this.toolRegistry = toolRegistry;
10
+ }
11
+ async initializeMCP() {
12
+ try {
13
+ // Auto-connect to configured servers
14
+ const servers = this.mcpConfigManager.getServers();
15
+ for (const serverConfig of servers) {
16
+ try {
17
+ await this.mcpServerManager.connect(serverConfig);
18
+ // Register MCP tools to tool registry
19
+ const tools = await this.mcpServerManager.listTools(serverConfig.name);
20
+ const wrappedTools = createMCPToolWrappers(serverConfig.name, tools, this.mcpServerManager);
21
+ for (const tool of wrappedTools) {
22
+ this.toolRegistry.register(tool);
23
+ }
24
+ }
25
+ catch (error) {
26
+ // Silent fail - user can check status with /mcp status
27
+ }
28
+ }
29
+ }
30
+ catch (error) {
31
+ console.error('Failed to initialize MCP:', error);
32
+ }
33
+ }
34
+ async handleCommand(args) {
35
+ const subcommand = args[0]?.toLowerCase();
36
+ if (!subcommand) {
37
+ return '## MCP (Model Context Protocol) Server Management\n\n' +
38
+ 'Available subcommands:\n\n' +
39
+ '/mcp list - List configured MCP servers and tools\n' +
40
+ '/mcp desc - List servers and tools with descriptions\n' +
41
+ '/mcp schema - List servers, tools with full schemas\n' +
42
+ '/mcp status - Show connection status of all servers\n' +
43
+ '/mcp refresh - Restart all MCP servers\n' +
44
+ '/mcp config - Show MCP configuration file location\n\n' +
45
+ 'Type any subcommand for more details.';
46
+ }
47
+ switch (subcommand) {
48
+ case 'list':
49
+ return this.handleList(false, false);
50
+ case 'desc':
51
+ return this.handleList(true, false);
52
+ case 'schema':
53
+ return this.handleList(true, true);
54
+ case 'status':
55
+ return this.handleStatus();
56
+ case 'refresh':
57
+ return await this.handleRefresh();
58
+ case 'config':
59
+ return this.handleConfig();
60
+ default:
61
+ return `❌ Unknown MCP subcommand: ${subcommand}\nType /mcp for help.`;
62
+ }
63
+ }
64
+ handleList(showDesc, showSchema) {
65
+ const servers = this.mcpConfigManager.getAllServers();
66
+ if (servers.length === 0) {
67
+ return '## No MCP Servers Configured\n\n' +
68
+ `Configuration file: \`${this.mcpConfigManager.getConfigPath()}\`\n\n` +
69
+ 'Add MCP servers to the config file and run `/mcp refresh` to load them.\n\n' +
70
+ 'Use `/mcp config` for an example configuration.';
71
+ }
72
+ let output = '## MCP Servers and Tools\n\n';
73
+ for (const serverConfig of servers) {
74
+ const statuses = this.mcpServerManager.getStatus(serverConfig.name);
75
+ const status = statuses[0];
76
+ const tools = status?.tools || [];
77
+ const statusIcon = status?.status === 'connected' ? '✅' :
78
+ status?.status === 'error' ? '❌' : '⚠️';
79
+ output += `### ${statusIcon} ${serverConfig.name}\n\n`;
80
+ output += `- **Command**: \`${serverConfig.command}\`\n`;
81
+ output += `- **Status**: ${status?.status || 'unknown'}\n`;
82
+ output += `- **Tools**: ${tools.length}\n\n`;
83
+ if (tools.length > 0) {
84
+ for (const tool of tools) {
85
+ output += ` - **${tool.name}**`;
86
+ if (showDesc && tool.description) {
87
+ output += `: ${tool.description}`;
88
+ }
89
+ output += '\n';
90
+ if (showSchema && tool.inputSchema) {
91
+ output += ' ```json\n';
92
+ output += ` ${JSON.stringify(tool.inputSchema, null, 2).replace(/\n/g, '\n ')}\n`;
93
+ output += ' ```\n';
94
+ }
95
+ }
96
+ output += '\n';
97
+ }
98
+ }
99
+ return output;
100
+ }
101
+ handleStatus() {
102
+ const statuses = this.mcpServerManager.getStatus();
103
+ if (statuses.length === 0) {
104
+ return '## No MCP Servers Configured\n\n' +
105
+ 'Add servers to your MCP configuration and run `/mcp refresh`.\n\n' +
106
+ 'Use `/mcp config` for more information.';
107
+ }
108
+ let output = '## MCP Server Status\n\n';
109
+ for (const status of statuses) {
110
+ const icon = status.status === 'connected' ? '✅' :
111
+ status.status === 'error' ? '❌' :
112
+ status.status === 'connecting' ? '⏳' : '⚠️';
113
+ output += `${icon} **${status.name}**: ${status.status}\n`;
114
+ if (status.error) {
115
+ output += ` Error: ${status.error}\n`;
116
+ }
117
+ if (status.uptime && status.status === 'connected') {
118
+ const minutes = Math.floor(status.uptime / 60);
119
+ const seconds = status.uptime % 60;
120
+ output += ` Uptime: ${minutes}m ${seconds}s\n`;
121
+ }
122
+ output += ` Tools: ${status.tools.length}\n\n`;
123
+ }
124
+ return output;
125
+ }
126
+ async handleRefresh() {
127
+ try {
128
+ // Get fresh config
129
+ const config = this.mcpConfigManager.load();
130
+ const servers = config.servers.filter(s => s.enabled !== false);
131
+ if (servers.length === 0) {
132
+ return '⚠️ No enabled MCP servers in configuration.';
133
+ }
134
+ // Refresh servers
135
+ await this.mcpServerManager.refresh(servers);
136
+ // Re-register tools
137
+ for (const serverConfig of servers) {
138
+ try {
139
+ if (this.mcpServerManager.isConnected(serverConfig.name)) {
140
+ const tools = await this.mcpServerManager.listTools(serverConfig.name);
141
+ const wrappedTools = createMCPToolWrappers(serverConfig.name, tools, this.mcpServerManager);
142
+ for (const tool of wrappedTools) {
143
+ this.toolRegistry.register(tool);
144
+ }
145
+ }
146
+ }
147
+ catch (error) {
148
+ // Continue with other servers
149
+ }
150
+ }
151
+ const statuses = this.mcpServerManager.getStatus();
152
+ const connectedCount = statuses.filter(s => s.status === 'connected').length;
153
+ const errorCount = statuses.filter(s => s.status === 'error').length;
154
+ return `✅ MCP servers refreshed!\n\n` +
155
+ `Connected: ${connectedCount}\n` +
156
+ `Errors: ${errorCount}\n\n` +
157
+ `Use \`/mcp status\` for details.`;
158
+ }
159
+ catch (error) {
160
+ return `❌ Failed to refresh MCP servers: ${error.message}`;
161
+ }
162
+ }
163
+ handleConfig() {
164
+ const configPath = this.mcpConfigManager.getConfigPath();
165
+ return `## MCP Configuration\n\n` +
166
+ `📄 **Configuration file**: \`${configPath}\`\n\n` +
167
+ `### Example Configuration\n\n` +
168
+ '```json\n' +
169
+ JSON.stringify({
170
+ mcp_servers: {
171
+ 'shadcn': {
172
+ command: 'npx',
173
+ args: ['shadcn@latest', 'mcp']
174
+ },
175
+ 'filesystem': {
176
+ command: 'npx',
177
+ args: ['-y', '@modelcontextprotocol/server-filesystem', '/path/to/directory']
178
+ }
179
+ }
180
+ }, null, 2) + '\n' +
181
+ '```\n\n' +
182
+ '### Configuration Fields\n\n' +
183
+ '- Server key (e.g., `shadcn`, `filesystem`): Unique server identifier\n' +
184
+ '- `command`: Command to start the server (required)\n' +
185
+ '- `args`: Command arguments (optional)\n' +
186
+ '- `env`: Environment variables (optional)\n' +
187
+ '- `enabled`: Enable/disable server (default: true)\n\n' +
188
+ '### Next Steps\n\n' +
189
+ '1. Edit the configuration file\n' +
190
+ '2. Add your MCP servers to `mcp_servers`\n' +
191
+ '3. Run `/mcp refresh` to load them\n' +
192
+ '4. Use `/mcp status` to verify connections\n' +
193
+ '5. Use `/mcp list` to see available tools';
194
+ }
195
+ }
196
+ //# sourceMappingURL=mcp-command-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-command-handler.js","sourceRoot":"","sources":["../../src/mcp/mcp-command-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ import { MCPServerConfig } from '../config/mcp-config-manager.js';
3
+ export interface MCPTool {
4
+ name: string;
5
+ description?: string;
6
+ inputSchema?: any;
7
+ }
8
+ export interface MCPServerStatus {
9
+ name: string;
10
+ status: 'connected' | 'disconnected' | 'error' | 'connecting';
11
+ tools: MCPTool[];
12
+ error?: string;
13
+ uptime?: number;
14
+ }
15
+ export declare class MCPServerManager {
16
+ private servers;
17
+ private statuses;
18
+ private startTimes;
19
+ connect(config: MCPServerConfig): Promise<void>;
20
+ disconnect(name: string): Promise<void>;
21
+ disconnectAll(): Promise<void>;
22
+ getClient(name: string): Client | undefined;
23
+ getStatus(serverName?: string): MCPServerStatus[];
24
+ private enrichStatus;
25
+ listTools(serverName?: string): Promise<MCPTool[]>;
26
+ callTool(serverName: string, toolName: string, args: any): Promise<any>;
27
+ refresh(configs: MCPServerConfig[]): Promise<void>;
28
+ isConnected(serverName: string): boolean;
29
+ }
30
+ //# sourceMappingURL=mcp-server-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-manager.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-server-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGnE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,GAAG,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,OAAO,GAAG,YAAY,CAAC;IAC9D,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,gBAAgB;IACzB,OAAO,CAAC,OAAO,CAA8F;IAC7G,OAAO,CAAC,QAAQ,CAA2C;IAC3D,OAAO,CAAC,UAAU,CAAkC;IAE9C,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA6E/C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BvC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3C,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE;IASjD,OAAO,CAAC,YAAY;IAWd,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAgBlD,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAcvE,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;CAI3C"}