@opensumi/ide-ai-native 3.8.3-next-1745805174.0 → 3.8.3-next-1745835516.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/lib/browser/ai-core.contribution.d.ts +2 -0
- package/lib/browser/ai-core.contribution.d.ts.map +1 -1
- package/lib/browser/ai-core.contribution.js +58 -12
- package/lib/browser/ai-core.contribution.js.map +1 -1
- package/lib/browser/components/ChatInput.js +1 -1
- package/lib/browser/components/ChatInput.js.map +1 -1
- package/lib/browser/components/ChatMentionInput.js +1 -1
- package/lib/browser/components/ChatMentionInput.js.map +1 -1
- package/lib/browser/components/ChatToolResult.module.less +0 -2
- package/lib/browser/components/mention-input/mention-input.d.ts.map +1 -1
- package/lib/browser/components/mention-input/mention-input.js +9 -7
- package/lib/browser/components/mention-input/mention-input.js.map +1 -1
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +15 -0
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/mcp/config/components/mcp-config.module.less +4 -1
- package/lib/browser/mcp/config/components/mcp-config.view.d.ts.map +1 -1
- package/lib/browser/mcp/config/components/mcp-config.view.js +27 -119
- package/lib/browser/mcp/config/components/mcp-config.view.js.map +1 -1
- package/lib/browser/mcp/config/components/mcp-server-form.d.ts +1 -1
- package/lib/browser/mcp/config/components/mcp-server-form.d.ts.map +1 -1
- package/lib/browser/mcp/config/components/mcp-server-form.js +8 -8
- package/lib/browser/mcp/config/components/mcp-server-form.js.map +1 -1
- package/lib/browser/mcp/config/mcp-config.commands.d.ts +11 -4
- package/lib/browser/mcp/config/mcp-config.commands.d.ts.map +1 -1
- package/lib/browser/mcp/config/mcp-config.commands.js +23 -6
- package/lib/browser/mcp/config/mcp-config.commands.js.map +1 -1
- package/lib/browser/mcp/config/mcp-config.contribution.d.ts +4 -1
- package/lib/browser/mcp/config/mcp-config.contribution.d.ts.map +1 -1
- package/lib/browser/mcp/config/mcp-config.contribution.js +20 -1
- package/lib/browser/mcp/config/mcp-config.contribution.js.map +1 -1
- package/lib/browser/mcp/config/mcp-config.service.d.ts +30 -0
- package/lib/browser/mcp/config/mcp-config.service.d.ts.map +1 -0
- package/lib/browser/mcp/config/mcp-config.service.js +236 -0
- package/lib/browser/mcp/config/mcp-config.service.js.map +1 -0
- package/lib/browser/mcp/mcp-folder-preference-provider.d.ts +6 -0
- package/lib/browser/mcp/mcp-folder-preference-provider.d.ts.map +1 -0
- package/lib/browser/mcp/mcp-folder-preference-provider.js +29 -0
- package/lib/browser/mcp/mcp-folder-preference-provider.js.map +1 -0
- package/lib/browser/mcp/mcp-preferences-contribution.d.ts +15 -0
- package/lib/browser/mcp/mcp-preferences-contribution.d.ts.map +1 -0
- package/lib/browser/mcp/mcp-preferences-contribution.js +49 -0
- package/lib/browser/mcp/mcp-preferences-contribution.js.map +1 -0
- package/lib/browser/mcp/mcp-preferences.d.ts +6 -0
- package/lib/browser/mcp/mcp-preferences.d.ts.map +1 -0
- package/lib/browser/mcp/mcp-preferences.js +47 -0
- package/lib/browser/mcp/mcp-preferences.js.map +1 -0
- package/lib/browser/preferences/schema.d.ts.map +1 -1
- package/lib/browser/preferences/schema.js +3 -0
- package/lib/browser/preferences/schema.js.map +1 -1
- package/lib/common/mcp-server-manager.d.ts +2 -1
- package/lib/common/mcp-server-manager.d.ts.map +1 -1
- package/lib/common/mcp-server-manager.js +2 -1
- package/lib/common/mcp-server-manager.js.map +1 -1
- package/lib/common/types.d.ts +1 -1
- package/lib/common/types.d.ts.map +1 -1
- package/lib/node/mcp/sumi-mcp-server.d.ts +3 -3
- package/lib/node/mcp/sumi-mcp-server.js +1 -1
- package/lib/node/mcp/sumi-mcp-server.js.map +1 -1
- package/lib/node/mcp-server-manager-impl.d.ts.map +1 -1
- package/lib/node/mcp-server-manager-impl.js +9 -4
- package/lib/node/mcp-server-manager-impl.js.map +1 -1
- package/lib/node/mcp-server.sse.d.ts +10 -37
- package/lib/node/mcp-server.sse.d.ts.map +1 -1
- package/lib/node/mcp-server.sse.js +43 -15
- package/lib/node/mcp-server.sse.js.map +1 -1
- package/lib/node/mcp-server.stdio.d.ts +7 -34
- package/lib/node/mcp-server.stdio.d.ts.map +1 -1
- package/lib/node/mcp-server.stdio.js +27 -2
- package/lib/node/mcp-server.stdio.js.map +1 -1
- package/package.json +24 -24
- package/src/browser/ai-core.contribution.ts +71 -16
- package/src/browser/components/ChatInput.tsx +2 -2
- package/src/browser/components/ChatMentionInput.tsx +2 -2
- package/src/browser/components/ChatToolResult.module.less +0 -2
- package/src/browser/components/mention-input/mention-input.tsx +27 -23
- package/src/browser/index.ts +16 -0
- package/src/browser/mcp/config/components/mcp-config.module.less +4 -1
- package/src/browser/mcp/config/components/mcp-config.view.tsx +37 -125
- package/src/browser/mcp/config/components/mcp-server-form.tsx +10 -10
- package/src/browser/mcp/config/mcp-config.commands.ts +22 -6
- package/src/browser/mcp/config/mcp-config.contribution.ts +24 -2
- package/src/browser/mcp/config/mcp-config.service.ts +285 -0
- package/src/browser/mcp/mcp-folder-preference-provider.ts +23 -0
- package/src/browser/mcp/mcp-preferences-contribution.ts +62 -0
- package/src/browser/mcp/mcp-preferences.ts +48 -0
- package/src/browser/preferences/schema.ts +3 -0
- package/src/common/mcp-server-manager.ts +3 -1
- package/src/common/types.ts +1 -1
- package/src/node/mcp/sumi-mcp-server.ts +1 -1
- package/src/node/mcp-server-manager-impl.ts +8 -4
- package/src/node/mcp-server.sse.ts +41 -14
- package/src/node/mcp-server.stdio.ts +26 -2
|
@@ -11,19 +11,20 @@ import { SSEClientTransportOptions } from '../common/types';
|
|
|
11
11
|
global.EventSource = EventSource as any;
|
|
12
12
|
export class SSEMCPServer implements IMCPServer {
|
|
13
13
|
private name: string;
|
|
14
|
-
public
|
|
14
|
+
public url: string;
|
|
15
15
|
private transportOptions?: SSEClientTransportOptions;
|
|
16
16
|
private client: Client;
|
|
17
17
|
private started: boolean = false;
|
|
18
|
+
private toolNameMap: Map<string, string> = new Map(); // Map sanitized tool names to original names
|
|
18
19
|
|
|
19
20
|
constructor(
|
|
20
21
|
name: string,
|
|
21
|
-
|
|
22
|
+
url: string,
|
|
22
23
|
private readonly logger?: ILogger,
|
|
23
24
|
private readonly options?: SSEClientTransportOptions,
|
|
24
25
|
) {
|
|
25
26
|
this.name = name;
|
|
26
|
-
this.
|
|
27
|
+
this.url = url;
|
|
27
28
|
this.transportOptions = options;
|
|
28
29
|
}
|
|
29
30
|
|
|
@@ -43,11 +44,11 @@ export class SSEMCPServer implements IMCPServer {
|
|
|
43
44
|
if (this.started) {
|
|
44
45
|
return;
|
|
45
46
|
}
|
|
46
|
-
this.logger?.log(`Starting server "${this.name}" with
|
|
47
|
+
this.logger?.log(`Starting server "${this.name}" with url: ${this.url}`);
|
|
47
48
|
|
|
48
49
|
const SSEClientTransport = (await import('@modelcontextprotocol/sdk/client/sse.js')).SSEClientTransport;
|
|
49
50
|
|
|
50
|
-
const transport = new SSEClientTransport(new URL(this.
|
|
51
|
+
const transport = new SSEClientTransport(new URL(this.url), this.transportOptions);
|
|
51
52
|
|
|
52
53
|
transport.onerror = (error) => {
|
|
53
54
|
this.logger?.error('Transport Error:', error);
|
|
@@ -66,8 +67,13 @@ export class SSEMCPServer implements IMCPServer {
|
|
|
66
67
|
this.logger?.error('Error in MCP client:', error);
|
|
67
68
|
};
|
|
68
69
|
|
|
69
|
-
|
|
70
|
-
|
|
70
|
+
try {
|
|
71
|
+
await this.client.connect(transport);
|
|
72
|
+
this.started = true;
|
|
73
|
+
} catch (error) {
|
|
74
|
+
this.logger?.error(`Error in startServer for ${this.name}:`, error);
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
71
77
|
}
|
|
72
78
|
|
|
73
79
|
async callTool(toolName: string, toolCallId: string, arg_string: string) {
|
|
@@ -76,13 +82,15 @@ export class SSEMCPServer implements IMCPServer {
|
|
|
76
82
|
args = JSON.parse(arg_string);
|
|
77
83
|
} catch (error) {
|
|
78
84
|
this.logger?.error(
|
|
79
|
-
`Failed to parse arguments for calling tool "${toolName}" in MCP server "${this.name}" with
|
|
85
|
+
`Failed to parse arguments for calling tool "${toolName}" in MCP server "${this.name}" with url "${this.url}".
|
|
80
86
|
Invalid JSON: ${arg_string}`,
|
|
81
87
|
error,
|
|
82
88
|
);
|
|
83
89
|
}
|
|
90
|
+
// Convert sanitized tool name back to original name if it exists in the map
|
|
91
|
+
const originalToolName = this.toolNameMap.get(toolName) || toolName;
|
|
84
92
|
const params = {
|
|
85
|
-
name:
|
|
93
|
+
name: originalToolName,
|
|
86
94
|
arguments: args,
|
|
87
95
|
toolCallId,
|
|
88
96
|
};
|
|
@@ -90,13 +98,32 @@ export class SSEMCPServer implements IMCPServer {
|
|
|
90
98
|
}
|
|
91
99
|
|
|
92
100
|
async getTools() {
|
|
93
|
-
const
|
|
94
|
-
this.
|
|
95
|
-
|
|
101
|
+
const originalTools = await this.client.listTools();
|
|
102
|
+
this.toolNameMap.clear();
|
|
103
|
+
const toolsArray = originalTools.tools || [];
|
|
104
|
+
const sanitizedToolsArray = toolsArray.map((tool) => {
|
|
105
|
+
const originalName = tool.name;
|
|
106
|
+
// Remove Chinese characters from the tool name
|
|
107
|
+
// Claude 3.5+ Sonnet 不支持中文 Tool Name
|
|
108
|
+
const sanitizedName = originalName.replace(/[\u4e00-\u9fa5]/g, '');
|
|
109
|
+
// If the name changed, store the mapping
|
|
110
|
+
if (sanitizedName !== originalName) {
|
|
111
|
+
this.toolNameMap.set(sanitizedName, originalName);
|
|
112
|
+
return { ...tool, name: sanitizedName };
|
|
113
|
+
}
|
|
114
|
+
return tool;
|
|
115
|
+
});
|
|
116
|
+
const sanitizedTools = {
|
|
117
|
+
...originalTools,
|
|
118
|
+
tools: sanitizedToolsArray,
|
|
119
|
+
};
|
|
120
|
+
this.logger?.log(`Got tools from MCP server "${this.name}" with url "${this.url}":`, sanitizedTools);
|
|
121
|
+
this.logger?.log('Tool name mapping: ', Object.fromEntries(this.toolNameMap));
|
|
122
|
+
return sanitizedTools;
|
|
96
123
|
}
|
|
97
124
|
|
|
98
|
-
update(
|
|
99
|
-
this.
|
|
125
|
+
update(url: string): void {
|
|
126
|
+
this.url = url;
|
|
100
127
|
}
|
|
101
128
|
|
|
102
129
|
async stop(): Promise<void> {
|
|
@@ -14,6 +14,7 @@ export class StdioMCPServer implements IMCPServer {
|
|
|
14
14
|
private client: Client;
|
|
15
15
|
private env?: { [key: string]: string };
|
|
16
16
|
private started: boolean = false;
|
|
17
|
+
private toolNameMap: Map<string, string> = new Map(); // Map sanitized tool names to original names
|
|
17
18
|
|
|
18
19
|
constructor(
|
|
19
20
|
name: string,
|
|
@@ -95,8 +96,10 @@ export class StdioMCPServer implements IMCPServer {
|
|
|
95
96
|
error,
|
|
96
97
|
);
|
|
97
98
|
}
|
|
99
|
+
// Convert sanitized tool name back to original name if it exists in the map
|
|
100
|
+
const originalToolName = this.toolNameMap.get(toolName) || toolName;
|
|
98
101
|
const params = {
|
|
99
|
-
name:
|
|
102
|
+
name: originalToolName,
|
|
100
103
|
arguments: args,
|
|
101
104
|
toolCallId,
|
|
102
105
|
};
|
|
@@ -104,7 +107,28 @@ export class StdioMCPServer implements IMCPServer {
|
|
|
104
107
|
}
|
|
105
108
|
|
|
106
109
|
async getTools() {
|
|
107
|
-
|
|
110
|
+
const originalTools = await this.client.listTools();
|
|
111
|
+
this.toolNameMap.clear();
|
|
112
|
+
// Process tool names to remove Chinese characters and create mapping
|
|
113
|
+
const toolsArray = originalTools.tools || [];
|
|
114
|
+
const sanitizedToolsArray = toolsArray.map((tool) => {
|
|
115
|
+
const originalName = tool.name;
|
|
116
|
+
// Remove Chinese characters from the tool name
|
|
117
|
+
// Claude 3.5+ Sonnet 不支持中文 Tool Name
|
|
118
|
+
const sanitizedName = originalName.replace(/[\u4e00-\u9fa5]/g, '');
|
|
119
|
+
if (sanitizedName !== originalName) {
|
|
120
|
+
this.toolNameMap.set(sanitizedName, originalName);
|
|
121
|
+
return { ...tool, name: sanitizedName };
|
|
122
|
+
}
|
|
123
|
+
return tool;
|
|
124
|
+
});
|
|
125
|
+
const sanitizedTools = {
|
|
126
|
+
...originalTools,
|
|
127
|
+
tools: sanitizedToolsArray,
|
|
128
|
+
};
|
|
129
|
+
this.logger?.log(`Got tools from MCP server "${this.name}":`, sanitizedTools);
|
|
130
|
+
this.logger?.log('Tool name mapping: ', Object.fromEntries(this.toolNameMap));
|
|
131
|
+
return sanitizedTools;
|
|
108
132
|
}
|
|
109
133
|
|
|
110
134
|
update(command: string, args?: string[], env?: { [key: string]: string }): void {
|