@opensumi/ide-ai-native 3.8.1-next-1741262660.0 → 3.8.1-next-1741317422.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 (55) hide show
  1. package/lib/browser/components/ChatInput.js +1 -1
  2. package/lib/browser/components/ChatInput.js.map +1 -1
  3. package/lib/browser/mcp/config/components/mcp-config.module.less +13 -0
  4. package/lib/browser/mcp/config/components/mcp-config.view.d.ts.map +1 -1
  5. package/lib/browser/mcp/config/components/mcp-config.view.js +28 -7
  6. package/lib/browser/mcp/config/components/mcp-config.view.js.map +1 -1
  7. package/lib/browser/mcp/config/components/mcp-server-form.d.ts +5 -2
  8. package/lib/browser/mcp/config/components/mcp-server-form.d.ts.map +1 -1
  9. package/lib/browser/mcp/config/components/mcp-server-form.js +79 -33
  10. package/lib/browser/mcp/config/components/mcp-server-form.js.map +1 -1
  11. package/lib/browser/mcp/config/components/mcp-server-form.module.less +24 -1
  12. package/lib/browser/mcp/mcp-server-proxy.service.d.ts +1 -1
  13. package/lib/browser/mcp/mcp-server-proxy.service.d.ts.map +1 -1
  14. package/lib/browser/mcp/mcp-server-proxy.service.js +1 -1
  15. package/lib/browser/mcp/mcp-server-proxy.service.js.map +1 -1
  16. package/lib/browser/types.d.ts.map +1 -1
  17. package/lib/browser/types.js.map +1 -1
  18. package/lib/common/mcp-server-manager.d.ts +21 -3
  19. package/lib/common/mcp-server-manager.d.ts.map +1 -1
  20. package/lib/common/mcp-server-manager.js.map +1 -1
  21. package/lib/common/types.d.ts +6 -1
  22. package/lib/common/types.d.ts.map +1 -1
  23. package/lib/common/types.js +7 -1
  24. package/lib/common/types.js.map +1 -1
  25. package/lib/node/mcp/sumi-mcp-server.d.ts +12 -3
  26. package/lib/node/mcp/sumi-mcp-server.d.ts.map +1 -1
  27. package/lib/node/mcp/sumi-mcp-server.js +24 -12
  28. package/lib/node/mcp/sumi-mcp-server.js.map +1 -1
  29. package/lib/node/mcp-server-manager-impl.d.ts.map +1 -1
  30. package/lib/node/mcp-server-manager-impl.js +22 -8
  31. package/lib/node/mcp-server-manager-impl.js.map +1 -1
  32. package/lib/node/mcp-server.sse.d.ts +192 -0
  33. package/lib/node/mcp-server.sse.d.ts.map +1 -0
  34. package/lib/node/mcp-server.sse.js +93 -0
  35. package/lib/node/mcp-server.sse.js.map +1 -0
  36. package/lib/node/{mcp-server.d.ts → mcp-server.stdio.d.ts} +2 -2
  37. package/lib/node/mcp-server.stdio.d.ts.map +1 -0
  38. package/lib/node/{mcp-server.js → mcp-server.stdio.js} +8 -6
  39. package/lib/node/mcp-server.stdio.js.map +1 -0
  40. package/package.json +24 -23
  41. package/src/browser/components/ChatInput.tsx +1 -1
  42. package/src/browser/mcp/config/components/mcp-config.module.less +13 -0
  43. package/src/browser/mcp/config/components/mcp-config.view.tsx +39 -9
  44. package/src/browser/mcp/config/components/mcp-server-form.module.less +24 -1
  45. package/src/browser/mcp/config/components/mcp-server-form.tsx +149 -63
  46. package/src/browser/mcp/mcp-server-proxy.service.ts +1 -1
  47. package/src/browser/types.ts +0 -1
  48. package/src/common/mcp-server-manager.ts +22 -3
  49. package/src/common/types.ts +7 -1
  50. package/src/node/mcp/sumi-mcp-server.ts +23 -14
  51. package/src/node/mcp-server-manager-impl.ts +20 -9
  52. package/src/node/mcp-server.sse.ts +103 -0
  53. package/src/node/{mcp-server.ts → mcp-server.stdio.ts} +4 -3
  54. package/lib/node/mcp-server.d.ts.map +0 -1
  55. package/lib/node/mcp-server.js.map +0 -1
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SSEMCPServer = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // have to import with extension since the exports map is ./* -> ./dist/cjs/*
6
+ const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
7
+ const sse_js_1 = require("@modelcontextprotocol/sdk/client/sse.js");
8
+ const eventsource_1 = require("eventsource");
9
+ const package_json_1 = tslib_1.__importDefault(require("../../package.json"));
10
+ global.EventSource = eventsource_1.EventSource;
11
+ class SSEMCPServer {
12
+ constructor(name, serverHost, logger) {
13
+ this.logger = logger;
14
+ this.started = false;
15
+ this.name = name;
16
+ this.serverHost = serverHost;
17
+ }
18
+ isStarted() {
19
+ return this.started;
20
+ }
21
+ getServerName() {
22
+ return this.name;
23
+ }
24
+ async start() {
25
+ var _a;
26
+ if (this.started) {
27
+ return;
28
+ }
29
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.log(`Starting server "${this.name}" with serverHost: ${this.serverHost}`);
30
+ const transport = new sse_js_1.SSEClientTransport(new URL(this.serverHost), {
31
+ eventSourceInit: {},
32
+ });
33
+ transport.onerror = (error) => {
34
+ var _a;
35
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error('Transport Error:', error);
36
+ };
37
+ this.client = new index_js_1.Client({
38
+ name: 'sumi-ide-sse-mcp-client',
39
+ version: package_json_1.default.version,
40
+ }, {
41
+ capabilities: {},
42
+ });
43
+ this.client.onerror = (error) => {
44
+ var _a;
45
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error('Error in MCP client:', error);
46
+ };
47
+ await this.client.connect(transport);
48
+ this.started = true;
49
+ }
50
+ async callTool(toolName, toolCallId, arg_string) {
51
+ var _a;
52
+ let args;
53
+ try {
54
+ args = JSON.parse(arg_string);
55
+ }
56
+ catch (error) {
57
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error(`Failed to parse arguments for calling tool "${toolName}" in MCP server "${this.name}" with serverHost "${this.serverHost}".
58
+ Invalid JSON: ${arg_string}`, error);
59
+ }
60
+ const params = {
61
+ name: toolName,
62
+ arguments: args,
63
+ toolCallId,
64
+ };
65
+ return this.client.callTool(params);
66
+ }
67
+ async getTools() {
68
+ var _a;
69
+ const tools = await this.client.listTools();
70
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.log(`Got tools from MCP server "${this.name}" with serverHost "${this.serverHost}":`, tools);
71
+ return tools;
72
+ }
73
+ update(serverHost) {
74
+ this.serverHost = serverHost;
75
+ }
76
+ async stop() {
77
+ var _a, _b, _c;
78
+ if (!this.started || !this.client) {
79
+ return;
80
+ }
81
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.log(`Stopping MCP server "${this.name}"`);
82
+ try {
83
+ await this.client.close();
84
+ }
85
+ catch (error) {
86
+ (_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(`Failed to stop MCP server "${this.name}":`, error);
87
+ }
88
+ (_c = this.logger) === null || _c === void 0 ? void 0 : _c.log(`MCP server "${this.name}" stopped`);
89
+ this.started = false;
90
+ }
91
+ }
92
+ exports.SSEMCPServer = SSEMCPServer;
93
+ //# sourceMappingURL=mcp-server.sse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.sse.js","sourceRoot":"","sources":["../../src/node/mcp-server.sse.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ILogger } from '@opensumi/ide-core-common';
2
2
  import { IMCPServer } from '../common/mcp-server-manager';
3
- export declare class StdioMCPServerImpl implements IMCPServer {
3
+ export declare class StdioMCPServer implements IMCPServer {
4
4
  private readonly logger?;
5
5
  private name;
6
6
  command: string;
@@ -193,4 +193,4 @@ export declare class StdioMCPServerImpl implements IMCPServer {
193
193
  }): void;
194
194
  stop(): Promise<void>;
195
195
  }
196
- //# sourceMappingURL=mcp-server.d.ts.map
196
+ //# sourceMappingURL=mcp-server.stdio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.stdio.d.ts","sourceRoot":"","sources":["../../src/node/mcp-server.stdio.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StdioMCPServerImpl = void 0;
3
+ exports.StdioMCPServer = void 0;
4
+ const tslib_1 = require("tslib");
4
5
  // have to import with extension since the exports map is ./* -> ./dist/cjs/*
5
6
  const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
6
7
  const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
7
- class StdioMCPServerImpl {
8
+ const package_json_1 = tslib_1.__importDefault(require("../../package.json"));
9
+ class StdioMCPServer {
8
10
  constructor(name, command, args, env, logger) {
9
11
  this.logger = logger;
10
12
  this.started = false;
@@ -41,8 +43,8 @@ class StdioMCPServerImpl {
41
43
  (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error('Transport Error:', error);
42
44
  };
43
45
  this.client = new index_js_1.Client({
44
- name: 'opensumi-mcp-client',
45
- version: '1.0.0',
46
+ name: 'sumi-ide-stdio-mcp-client',
47
+ version: package_json_1.default.version,
46
48
  }, {
47
49
  capabilities: {},
48
50
  });
@@ -94,5 +96,5 @@ class StdioMCPServerImpl {
94
96
  this.started = false;
95
97
  }
96
98
  }
97
- exports.StdioMCPServerImpl = StdioMCPServerImpl;
98
- //# sourceMappingURL=mcp-server.js.map
99
+ exports.StdioMCPServer = StdioMCPServer;
100
+ //# sourceMappingURL=mcp-server.stdio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.stdio.js","sourceRoot":"","sources":["../../src/node/mcp-server.stdio.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensumi/ide-ai-native",
3
- "version": "3.8.1-next-1741262660.0",
3
+ "version": "3.8.1-next-1741317422.0",
4
4
  "files": [
5
5
  "lib",
6
6
  "src"
@@ -24,31 +24,32 @@
24
24
  "@ai-sdk/openai": "^1.1.9",
25
25
  "@ai-sdk/openai-compatible": "^0.1.11",
26
26
  "@modelcontextprotocol/sdk": "^1.3.1",
27
- "@opensumi/ide-addons": "3.8.1-next-1741262660.0",
28
- "@opensumi/ide-components": "3.8.1-next-1741262660.0",
29
- "@opensumi/ide-connection": "3.8.1-next-1741262660.0",
30
- "@opensumi/ide-core-common": "3.8.1-next-1741262660.0",
31
- "@opensumi/ide-core-node": "3.8.1-next-1741262660.0",
32
- "@opensumi/ide-debug": "3.8.1-next-1741262660.0",
33
- "@opensumi/ide-design": "3.8.1-next-1741262660.0",
34
- "@opensumi/ide-editor": "3.8.1-next-1741262660.0",
35
- "@opensumi/ide-file-search": "3.8.1-next-1741262660.0",
36
- "@opensumi/ide-file-service": "3.8.1-next-1741262660.0",
37
- "@opensumi/ide-main-layout": "3.8.1-next-1741262660.0",
38
- "@opensumi/ide-markers": "3.8.1-next-1741262660.0",
39
- "@opensumi/ide-monaco": "3.8.1-next-1741262660.0",
40
- "@opensumi/ide-overlay": "3.8.1-next-1741262660.0",
41
- "@opensumi/ide-preferences": "3.8.1-next-1741262660.0",
42
- "@opensumi/ide-search": "3.8.1-next-1741262660.0",
43
- "@opensumi/ide-terminal-next": "3.8.1-next-1741262660.0",
44
- "@opensumi/ide-theme": "3.8.1-next-1741262660.0",
45
- "@opensumi/ide-utils": "3.8.1-next-1741262660.0",
46
- "@opensumi/ide-workspace": "3.8.1-next-1741262660.0",
27
+ "@opensumi/ide-addons": "3.8.1-next-1741317422.0",
28
+ "@opensumi/ide-components": "3.8.1-next-1741317422.0",
29
+ "@opensumi/ide-connection": "3.8.1-next-1741317422.0",
30
+ "@opensumi/ide-core-common": "3.8.1-next-1741317422.0",
31
+ "@opensumi/ide-core-node": "3.8.1-next-1741317422.0",
32
+ "@opensumi/ide-debug": "3.8.1-next-1741317422.0",
33
+ "@opensumi/ide-design": "3.8.1-next-1741317422.0",
34
+ "@opensumi/ide-editor": "3.8.1-next-1741317422.0",
35
+ "@opensumi/ide-file-search": "3.8.1-next-1741317422.0",
36
+ "@opensumi/ide-file-service": "3.8.1-next-1741317422.0",
37
+ "@opensumi/ide-main-layout": "3.8.1-next-1741317422.0",
38
+ "@opensumi/ide-markers": "3.8.1-next-1741317422.0",
39
+ "@opensumi/ide-monaco": "3.8.1-next-1741317422.0",
40
+ "@opensumi/ide-overlay": "3.8.1-next-1741317422.0",
41
+ "@opensumi/ide-preferences": "3.8.1-next-1741317422.0",
42
+ "@opensumi/ide-search": "3.8.1-next-1741317422.0",
43
+ "@opensumi/ide-terminal-next": "3.8.1-next-1741317422.0",
44
+ "@opensumi/ide-theme": "3.8.1-next-1741317422.0",
45
+ "@opensumi/ide-utils": "3.8.1-next-1741317422.0",
46
+ "@opensumi/ide-workspace": "3.8.1-next-1741317422.0",
47
47
  "@xterm/xterm": "5.5.0",
48
48
  "ai": "^4.1.45",
49
49
  "ansi-regex": "^2.0.0",
50
50
  "diff": "^7.0.0",
51
51
  "dom-align": "^1.7.0",
52
+ "eventsource": "^3.0.5",
52
53
  "rc-collapse": "^4.0.0",
53
54
  "react-chat-elements": "^12.0.10",
54
55
  "react-highlight": "^0.15.0",
@@ -58,7 +59,7 @@
58
59
  "zod-to-json-schema": "^3.24.1"
59
60
  },
60
61
  "devDependencies": {
61
- "@opensumi/ide-core-browser": "3.8.1-next-1741262660.0"
62
+ "@opensumi/ide-core-browser": "3.8.1-next-1741317422.0"
62
63
  },
63
- "gitHead": "fb1b7474d3ab54dea0bc42ab84f4571437b76441"
64
+ "gitHead": "6b81368c51efd20b392153bf969a79c6d6fba33f"
64
65
  }
@@ -512,7 +512,7 @@ export const ChatInput = React.forwardRef((props: IChatInputProps, ref) => {
512
512
  >
513
513
  <EnhanceIcon
514
514
  wrapperClassName={styles.action_btn}
515
- className={'codicon codicon-server'}
515
+ className={'codicon codicon-radio-tower'}
516
516
  onClick={handleShowMCPConfig}
517
517
  tabIndex={0}
518
518
  role='button'
@@ -85,6 +85,10 @@
85
85
  align-items: center;
86
86
  }
87
87
 
88
+ .typeTag {
89
+ margin-left: 7px;
90
+ }
91
+
88
92
  .serverType {
89
93
  background-color: var(--editor-background);
90
94
  color: var(--descriptionForeground);
@@ -162,6 +166,15 @@
162
166
  align-items: center;
163
167
  gap: 8px;
164
168
  flex-wrap: wrap;
169
+ &.link {
170
+ cursor: pointer;
171
+ opacity: 0.6;
172
+ transition: all 0.2s ease;
173
+ &:hover {
174
+ opacity: 1;
175
+ text-decoration: underline;
176
+ }
177
+ }
165
178
  }
166
179
 
167
180
  .toolTag {
@@ -1,10 +1,14 @@
1
- import React from 'react';
1
+ import cls from 'classnames';
2
+ import React, { useCallback } from 'react';
2
3
 
4
+ import { Badge } from '@opensumi/ide-components';
3
5
  import { AINativeSettingSectionsId, ILogger, useInjectable } from '@opensumi/ide-core-browser';
4
6
  import { PreferenceService } from '@opensumi/ide-core-browser/lib/preferences';
7
+ import { localize } from '@opensumi/ide-core-common';
5
8
 
6
9
  import { BUILTIN_MCP_SERVER_NAME } from '../../../../common';
7
10
  import { MCPServerDescription } from '../../../../common/mcp-server-manager';
11
+ import { MCP_SERVER_TYPE } from '../../../../common/types';
8
12
  import { MCPServerProxyService } from '../../mcp-server-proxy.service';
9
13
 
10
14
  import styles from './mcp-config.module.less';
@@ -16,6 +20,7 @@ interface MCPServer {
16
20
  tools?: string[];
17
21
  command?: string;
18
22
  type?: string;
23
+ serverHost?: string;
19
24
  }
20
25
 
21
26
  export const MCPConfigView: React.FC = () => {
@@ -53,7 +58,6 @@ export const MCPConfigView: React.FC = () => {
53
58
  // Update enabled state in preferences
54
59
  const servers = preferenceService.get<MCPServerDescription[]>(AINativeSettingSectionsId.MCPServers, []);
55
60
  let updatedServers = servers;
56
-
57
61
  // 处理内置服务器的特殊情况
58
62
  if (serverName === BUILTIN_MCP_SERVER_NAME) {
59
63
  const builtinServerExists = servers.some((server) => server.name === BUILTIN_MCP_SERVER_NAME);
@@ -66,6 +70,7 @@ export const MCPConfigView: React.FC = () => {
66
70
  name: BUILTIN_MCP_SERVER_NAME,
67
71
  enabled: false,
68
72
  command: '', // 内置服务器的 command 为空字符串
73
+ type: MCP_SERVER_TYPE.STDIO,
69
74
  },
70
75
  ];
71
76
  } else {
@@ -131,6 +136,19 @@ export const MCPConfigView: React.FC = () => {
131
136
  await loadServers();
132
137
  };
133
138
 
139
+ const getReadableServerType = useCallback((type: string) => {
140
+ switch (type) {
141
+ case MCP_SERVER_TYPE.STDIO:
142
+ return localize('ai.native.mcp.type.stdio');
143
+ case MCP_SERVER_TYPE.SSE:
144
+ return localize('ai.native.mcp.type.sse');
145
+ case MCP_SERVER_TYPE.BUILTIN:
146
+ return localize('ai.native.mcp.type.builtin');
147
+ default:
148
+ return type;
149
+ }
150
+ }, []);
151
+
134
152
  return (
135
153
  <div className={styles.container}>
136
154
  <div className={styles.header}>
@@ -150,9 +168,11 @@ export const MCPConfigView: React.FC = () => {
150
168
  <h3 className={styles.serverName}>{server.name}</h3>
151
169
  </div>
152
170
  <div className={styles.serverActions}>
153
- <button className={styles.iconButton} title='Edit' onClick={() => handleEditServer(server)}>
154
- <i className='codicon codicon-edit' />
155
- </button>
171
+ {server.name !== BUILTIN_MCP_SERVER_NAME && (
172
+ <button className={styles.iconButton} title='Edit' onClick={() => handleEditServer(server)}>
173
+ <i className='codicon codicon-edit' />
174
+ </button>
175
+ )}
156
176
  <button
157
177
  className={styles.iconButton}
158
178
  title={server.isStarted ? 'Stop' : 'Start'}
@@ -160,9 +180,11 @@ export const MCPConfigView: React.FC = () => {
160
180
  >
161
181
  <i className={`codicon ${server.isStarted ? 'codicon-debug-stop' : 'codicon-debug-start'}`} />
162
182
  </button>
163
- <button className={styles.iconButton} title='Delete' onClick={() => handleDeleteServer(server.name)}>
164
- <i className='codicon codicon-trash' />
165
- </button>
183
+ {server.name !== BUILTIN_MCP_SERVER_NAME && (
184
+ <button className={styles.iconButton} title='Delete' onClick={() => handleDeleteServer(server.name)}>
185
+ <i className='codicon codicon-trash' />
186
+ </button>
187
+ )}
166
188
  </div>
167
189
  </div>
168
190
  <div className={styles.serverDetail}>
@@ -175,7 +197,7 @@ export const MCPConfigView: React.FC = () => {
175
197
  {server.type && (
176
198
  <div className={styles.detailRow}>
177
199
  <span className={styles.detailLabel}>Type:</span>
178
- <span className={styles.serverType}>{server.type}</span>
200
+ <Badge className={cls(styles.serverType, styles.typeTag)}>{getReadableServerType(server.type)}</Badge>
179
201
  </div>
180
202
  )}
181
203
  </div>
@@ -201,6 +223,14 @@ export const MCPConfigView: React.FC = () => {
201
223
  </div>
202
224
  </div>
203
225
  )}
226
+ {server.serverHost && (
227
+ <div className={styles.serverDetail}>
228
+ <div className={styles.detailRow}>
229
+ <span className={styles.detailLabel}>Server Link:</span>
230
+ <span className={cls(styles.detailContent, styles.link)}>{server.serverHost}</span>
231
+ </div>
232
+ </div>
233
+ )}
204
234
  </div>
205
235
  ))}
206
236
  </div>
@@ -44,11 +44,34 @@
44
44
  display: flex;
45
45
  justify-content: flex-end;
46
46
  gap: 8px;
47
- margin-top: 24px;
48
47
  padding-top: 16px;
49
48
  border-top: 1px solid var(--border-color);
50
49
  }
51
50
 
51
+ .formRow {
52
+ display: flex;
53
+ gap: 16px;
54
+ flex-direction: row;
55
+ align-items: center;
56
+ justify-content: flex-start;
57
+ }
58
+
59
+ .formItemName {
60
+ flex: 1;
61
+ }
62
+
63
+ .formItemType {
64
+ flex-grow: 0;
65
+ min-width: 120px;
66
+ }
67
+
68
+ .formItemSelect {
69
+ height: 37.5px;
70
+ :global(.kt-select-value-large) {
71
+ height: 100% !important;
72
+ }
73
+ }
74
+
52
75
  .cancelButton {
53
76
  padding: 6px 12px;
54
77
  border: 1px solid var(--button-border);