@opensumi/ide-ai-native 3.8.1-next-1740475512.0 → 3.8.1-next-1740556231.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 +4 -1
- package/lib/browser/ai-core.contribution.d.ts.map +1 -1
- package/lib/browser/ai-core.contribution.js +23 -11
- package/lib/browser/ai-core.contribution.js.map +1 -1
- package/lib/browser/chat/chat-manager.service.d.ts +1 -5
- package/lib/browser/chat/chat-manager.service.d.ts.map +1 -1
- package/lib/browser/chat/chat-manager.service.js +13 -17
- package/lib/browser/chat/chat-manager.service.js.map +1 -1
- package/lib/browser/chat/chat-model.d.ts +0 -2
- package/lib/browser/chat/chat-model.d.ts.map +1 -1
- package/lib/browser/chat/chat-model.js +2 -8
- package/lib/browser/chat/chat-model.js.map +1 -1
- package/lib/browser/chat/chat.internal.service.d.ts +1 -0
- package/lib/browser/chat/chat.internal.service.d.ts.map +1 -1
- package/lib/browser/chat/chat.internal.service.js +3 -0
- package/lib/browser/chat/chat.internal.service.js.map +1 -1
- package/lib/browser/chat/chat.module.less +2 -1
- package/lib/browser/chat/chat.view.d.ts.map +1 -1
- package/lib/browser/chat/chat.view.js +9 -6
- package/lib/browser/chat/chat.view.js.map +1 -1
- package/lib/browser/components/ChatContext/index.js +2 -2
- package/lib/browser/components/ChatContext/index.js.map +1 -1
- package/lib/browser/components/ChatHistory.d.ts +0 -1
- package/lib/browser/components/ChatHistory.d.ts.map +1 -1
- package/lib/browser/components/ChatHistory.js +14 -14
- package/lib/browser/components/ChatHistory.js.map +1 -1
- package/lib/browser/components/ChatInput.d.ts.map +1 -1
- package/lib/browser/components/ChatInput.js +1 -25
- package/lib/browser/components/ChatInput.js.map +1 -1
- package/lib/browser/components/ChatToolRender.d.ts.map +1 -1
- package/lib/browser/components/ChatToolRender.js +3 -2
- package/lib/browser/components/ChatToolRender.js.map +1 -1
- package/lib/browser/components/{chat-history.css → chat-history.module.less} +1 -1
- package/lib/browser/components/components.module.less +0 -20
- package/lib/browser/context/llm-context.service.d.ts +5 -16
- package/lib/browser/context/llm-context.service.d.ts.map +1 -1
- package/lib/browser/context/llm-context.service.js +47 -78
- package/lib/browser/context/llm-context.service.js.map +1 -1
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +0 -4
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/layout/layout.module.less +4 -4
- package/lib/browser/mcp/base-apply.service.d.ts +31 -40
- package/lib/browser/mcp/base-apply.service.d.ts.map +1 -1
- package/lib/browser/mcp/base-apply.service.js +233 -167
- package/lib/browser/mcp/base-apply.service.js.map +1 -1
- package/lib/browser/mcp/mcp-server-proxy.service.d.ts +0 -6
- package/lib/browser/mcp/mcp-server-proxy.service.d.ts.map +1 -1
- package/lib/browser/mcp/mcp-server-proxy.service.js +1 -10
- package/lib/browser/mcp/mcp-server-proxy.service.js.map +1 -1
- package/lib/browser/mcp/mcp-server.feature.registry.d.ts.map +1 -1
- package/lib/browser/mcp/mcp-server.feature.registry.js +2 -3
- package/lib/browser/mcp/mcp-server.feature.registry.js.map +1 -1
- package/lib/browser/mcp/tools/components/EditFile.d.ts.map +1 -1
- package/lib/browser/mcp/tools/components/EditFile.js +55 -41
- package/lib/browser/mcp/tools/components/EditFile.js.map +1 -1
- package/lib/browser/mcp/tools/components/index.module.less +22 -4
- package/lib/browser/mcp/tools/createNewFileWithText.d.ts.map +1 -1
- package/lib/browser/mcp/tools/createNewFileWithText.js +0 -1
- package/lib/browser/mcp/tools/createNewFileWithText.js.map +1 -1
- package/lib/browser/mcp/tools/editFile.js +1 -1
- package/lib/browser/mcp/tools/editFile.js.map +1 -1
- package/lib/browser/mcp/tools/getDiagnosticsByPath.d.ts.map +1 -1
- package/lib/browser/mcp/tools/getDiagnosticsByPath.js +0 -1
- package/lib/browser/mcp/tools/getDiagnosticsByPath.js.map +1 -1
- package/lib/browser/mcp/tools/handlers/EditFile.d.ts +5 -1
- package/lib/browser/mcp/tools/handlers/EditFile.d.ts.map +1 -1
- package/lib/browser/mcp/tools/handlers/EditFile.js +4 -4
- package/lib/browser/mcp/tools/handlers/EditFile.js.map +1 -1
- package/lib/browser/mcp/tools/handlers/RunCommand.d.ts.map +1 -1
- package/lib/browser/mcp/tools/handlers/RunCommand.js +0 -2
- package/lib/browser/mcp/tools/handlers/RunCommand.js.map +1 -1
- package/lib/browser/mcp/tools/runTerminalCmd.d.ts.map +1 -1
- package/lib/browser/mcp/tools/runTerminalCmd.js +0 -1
- package/lib/browser/mcp/tools/runTerminalCmd.js.map +1 -1
- package/lib/browser/model/msg-history-manager.d.ts +1 -0
- package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
- package/lib/browser/model/msg-history-manager.js +12 -2
- package/lib/browser/model/msg-history-manager.js.map +1 -1
- package/lib/browser/preferences/schema.d.ts.map +1 -1
- package/lib/browser/preferences/schema.js +0 -16
- package/lib/browser/preferences/schema.js.map +1 -1
- package/lib/browser/types.d.ts +1 -1
- package/lib/browser/types.d.ts.map +1 -1
- package/lib/browser/widget/inline-diff/inline-diff-manager.d.ts +6 -0
- package/lib/browser/widget/inline-diff/inline-diff-manager.d.ts.map +1 -0
- package/lib/browser/widget/inline-diff/inline-diff-manager.js +27 -0
- package/lib/browser/widget/inline-diff/inline-diff-manager.js.map +1 -0
- package/lib/browser/widget/inline-diff/inline-diff-widget.module.less +12 -0
- package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts +2 -0
- package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts.map +1 -1
- package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js +11 -4
- package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js.map +1 -1
- package/lib/common/index.d.ts +1 -8
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +1 -3
- package/lib/common/index.js.map +1 -1
- package/lib/common/llm-context.d.ts +9 -12
- package/lib/common/llm-context.d.ts.map +1 -1
- package/lib/common/llm-context.js.map +1 -1
- package/lib/common/mcp-server-manager.d.ts +1 -17
- package/lib/common/mcp-server-manager.d.ts.map +1 -1
- package/lib/common/mcp-server-manager.js.map +1 -1
- package/lib/common/prompts/context-prompt-provider.d.ts +3 -2
- package/lib/common/prompts/context-prompt-provider.d.ts.map +1 -1
- package/lib/common/prompts/context-prompt-provider.js +22 -21
- package/lib/common/prompts/context-prompt-provider.js.map +1 -1
- package/lib/common/tool-invocation-registry.d.ts +2 -2
- package/lib/common/tool-invocation-registry.d.ts.map +1 -1
- package/lib/common/tool-invocation-registry.js +1 -1
- package/lib/common/tool-invocation-registry.js.map +1 -1
- package/lib/common/types.d.ts +17 -6
- package/lib/common/types.d.ts.map +1 -1
- package/lib/common/types.js.map +1 -1
- package/lib/common/utils.d.ts.map +1 -1
- package/lib/common/utils.js +1 -2
- package/lib/common/utils.js.map +1 -1
- package/lib/node/base-language-model.d.ts +1 -1
- package/lib/node/base-language-model.d.ts.map +1 -1
- package/lib/node/base-language-model.js +54 -3
- package/lib/node/base-language-model.js.map +1 -1
- package/lib/node/mcp/sumi-mcp-server.d.ts +3 -17
- package/lib/node/mcp/sumi-mcp-server.d.ts.map +1 -1
- package/lib/node/mcp/sumi-mcp-server.js +6 -59
- package/lib/node/mcp/sumi-mcp-server.js.map +1 -1
- package/lib/node/mcp-server-manager-impl.d.ts +3 -4
- package/lib/node/mcp-server-manager-impl.d.ts.map +1 -1
- package/lib/node/mcp-server-manager-impl.js +6 -26
- package/lib/node/mcp-server-manager-impl.js.map +1 -1
- package/lib/node/mcp-server.d.ts +16 -5
- package/lib/node/mcp-server.d.ts.map +1 -1
- package/lib/node/mcp-server.js +6 -12
- package/lib/node/mcp-server.js.map +1 -1
- package/lib/node/openai/openai-language-model.d.ts +3 -4
- package/lib/node/openai/openai-language-model.d.ts.map +1 -1
- package/lib/node/openai/openai-language-model.js +2 -3
- package/lib/node/openai/openai-language-model.js.map +1 -1
- package/package.json +27 -27
- package/src/browser/ai-core.contribution.ts +29 -14
- package/src/browser/chat/chat-manager.service.ts +13 -17
- package/src/browser/chat/chat-model.ts +3 -18
- package/src/browser/chat/chat.internal.service.ts +4 -0
- package/src/browser/chat/chat.module.less +2 -1
- package/src/browser/chat/chat.view.tsx +26 -10
- package/src/browser/components/ChatContext/index.tsx +2 -2
- package/src/browser/components/ChatHistory.tsx +21 -15
- package/src/browser/components/ChatInput.tsx +4 -67
- package/src/browser/components/ChatToolRender.tsx +2 -1
- package/src/browser/components/{chat-history.css → chat-history.module.less} +1 -1
- package/src/browser/components/components.module.less +0 -20
- package/src/browser/context/llm-context.service.ts +54 -90
- package/src/browser/index.ts +0 -4
- package/src/browser/layout/layout.module.less +4 -4
- package/src/browser/mcp/base-apply.service.ts +266 -213
- package/src/browser/mcp/mcp-server-proxy.service.ts +2 -14
- package/src/browser/mcp/mcp-server.feature.registry.ts +2 -3
- package/src/browser/mcp/tools/components/EditFile.tsx +82 -60
- package/src/browser/mcp/tools/components/index.module.less +22 -4
- package/src/browser/mcp/tools/createNewFileWithText.ts +0 -1
- package/src/browser/mcp/tools/editFile.ts +2 -2
- package/src/browser/mcp/tools/getDiagnosticsByPath.ts +0 -1
- package/src/browser/mcp/tools/handlers/EditFile.ts +4 -4
- package/src/browser/mcp/tools/handlers/RunCommand.ts +0 -2
- package/src/browser/mcp/tools/runTerminalCmd.ts +0 -1
- package/src/browser/model/msg-history-manager.ts +12 -2
- package/src/browser/preferences/schema.ts +0 -16
- package/src/browser/types.ts +1 -1
- package/src/browser/widget/inline-diff/inline-diff-manager.tsx +38 -0
- package/src/browser/widget/inline-diff/inline-diff-widget.module.less +12 -0
- package/src/browser/widget/inline-stream-diff/inline-stream-diff.handler.tsx +13 -4
- package/src/common/index.ts +1 -7
- package/src/common/llm-context.ts +4 -10
- package/src/common/mcp-server-manager.ts +1 -17
- package/src/common/prompts/context-prompt-provider.ts +28 -26
- package/src/common/tool-invocation-registry.ts +2 -2
- package/src/common/types.ts +20 -6
- package/src/common/utils.ts +1 -3
- package/src/node/base-language-model.ts +63 -1
- package/src/node/mcp/sumi-mcp-server.ts +9 -67
- package/src/node/mcp-server-manager-impl.ts +9 -30
- package/src/node/mcp-server.ts +14 -11
- package/src/node/openai/openai-language-model.ts +4 -7
- package/lib/browser/mcp/config/components/mcp-config.module.less +0 -178
- package/lib/browser/mcp/config/components/mcp-config.view.d.ts +0 -3
- package/lib/browser/mcp/config/components/mcp-config.view.d.ts.map +0 -1
- package/lib/browser/mcp/config/components/mcp-config.view.js +0 -150
- package/lib/browser/mcp/config/components/mcp-config.view.js.map +0 -1
- package/lib/browser/mcp/config/components/mcp-server-form.d.ts +0 -16
- package/lib/browser/mcp/config/components/mcp-server-form.d.ts.map +0 -1
- package/lib/browser/mcp/config/components/mcp-server-form.js +0 -84
- package/lib/browser/mcp/config/components/mcp-server-form.js.map +0 -1
- package/lib/browser/mcp/config/components/mcp-server-form.module.less +0 -78
- package/lib/browser/mcp/config/mcp-config.commands.d.ts +0 -10
- package/lib/browser/mcp/config/mcp-config.commands.d.ts.map +0 -1
- package/lib/browser/mcp/config/mcp-config.commands.js +0 -35
- package/lib/browser/mcp/config/mcp-config.commands.js.map +0 -1
- package/lib/browser/mcp/config/mcp-config.contribution.d.ts +0 -16
- package/lib/browser/mcp/config/mcp-config.contribution.d.ts.map +0 -1
- package/lib/browser/mcp/config/mcp-config.contribution.js +0 -62
- package/lib/browser/mcp/config/mcp-config.contribution.js.map +0 -1
- package/src/browser/mcp/config/components/mcp-config.module.less +0 -178
- package/src/browser/mcp/config/components/mcp-config.view.tsx +0 -215
- package/src/browser/mcp/config/components/mcp-server-form.module.less +0 -78
- package/src/browser/mcp/config/components/mcp-server-form.tsx +0 -144
- package/src/browser/mcp/config/mcp-config.commands.ts +0 -29
- package/src/browser/mcp/config/mcp-config.contribution.ts +0 -65
package/lib/node/mcp-server.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.MCPServerImpl = void 0;
|
|
4
4
|
// have to import with extension since the exports map is ./* -> ./dist/cjs/*
|
|
5
5
|
const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
|
|
6
6
|
const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
|
|
7
|
-
class
|
|
7
|
+
class MCPServerImpl {
|
|
8
8
|
constructor(name, command, args, env, logger) {
|
|
9
9
|
this.logger = logger;
|
|
10
10
|
this.started = false;
|
|
@@ -78,21 +78,15 @@ class StdioMCPServerImpl {
|
|
|
78
78
|
this.args = args;
|
|
79
79
|
this.env = env;
|
|
80
80
|
}
|
|
81
|
-
|
|
82
|
-
var _a
|
|
81
|
+
stop() {
|
|
82
|
+
var _a;
|
|
83
83
|
if (!this.started || !this.client) {
|
|
84
84
|
return;
|
|
85
85
|
}
|
|
86
86
|
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.log(`Stopping MCP server "${this.name}"`);
|
|
87
|
-
|
|
88
|
-
await this.client.close();
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
(_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(`Failed to stop MCP server "${this.name}":`, error);
|
|
92
|
-
}
|
|
93
|
-
(_c = this.logger) === null || _c === void 0 ? void 0 : _c.log(`MCP server "${this.name}" stopped`);
|
|
87
|
+
this.client.close();
|
|
94
88
|
this.started = false;
|
|
95
89
|
}
|
|
96
90
|
}
|
|
97
|
-
exports.
|
|
91
|
+
exports.MCPServerImpl = MCPServerImpl;
|
|
98
92
|
//# sourceMappingURL=mcp-server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/node/mcp-server.ts"],"names":[],"mappings":";;;AAAA,6EAA6E;AAC7E,wEAAmE;AACnE,wEAAiF;
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/node/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { LanguageModelV1 } from 'ai';
|
|
1
|
+
import { OpenAIProvider } from '@ai-sdk/openai';
|
|
3
2
|
import { IAIBackServiceOption } from '@opensumi/ide-core-common';
|
|
4
3
|
import { BaseLanguageModel } from '../base-language-model';
|
|
5
4
|
export declare const DeepSeekModelIdentifier: unique symbol;
|
|
6
5
|
export declare class OpenAIModel extends BaseLanguageModel {
|
|
7
|
-
protected initializeProvider(options: IAIBackServiceOption):
|
|
8
|
-
protected getModelIdentifier(provider:
|
|
6
|
+
protected initializeProvider(options: IAIBackServiceOption): OpenAIProvider;
|
|
7
|
+
protected getModelIdentifier(provider: OpenAIProvider, modelId?: string): import("ai").LanguageModelV1;
|
|
9
8
|
}
|
|
10
9
|
//# sourceMappingURL=openai-language-model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-language-model.d.ts","sourceRoot":"","sources":["../../../src/node/openai/openai-language-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"openai-language-model.d.ts","sourceRoot":"","sources":["../../../src/node/openai/openai-language-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgB,MAAM,gBAAgB,CAAC;AAG9D,OAAO,EAA6B,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAE5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,eAAO,MAAM,uBAAuB,eAAoC,CAAC;AAEzE,qBACa,WAAY,SAAQ,iBAAiB;IAChD,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,cAAc;IAW3E,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM;CAGxE"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OpenAIModel = exports.DeepSeekModelIdentifier = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const
|
|
5
|
+
const openai_1 = require("@ai-sdk/openai");
|
|
6
6
|
const di_1 = require("@opensumi/di");
|
|
7
7
|
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
8
8
|
const base_language_model_1 = require("../base-language-model");
|
|
@@ -13,10 +13,9 @@ let OpenAIModel = class OpenAIModel extends base_language_model_1.BaseLanguageMo
|
|
|
13
13
|
if (!apiKey) {
|
|
14
14
|
throw new Error(`Please provide OpenAI API Key in preferences (${ide_core_common_1.AINativeSettingSectionsId.OpenaiApiKey})`);
|
|
15
15
|
}
|
|
16
|
-
return (0,
|
|
16
|
+
return (0, openai_1.createOpenAI)({
|
|
17
17
|
apiKey,
|
|
18
18
|
baseURL: options.baseURL || 'https://dashscope.aliyuncs.com/compatible-mode/v1',
|
|
19
|
-
name: 'openai',
|
|
20
19
|
});
|
|
21
20
|
}
|
|
22
21
|
getModelIdentifier(provider, modelId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-language-model.js","sourceRoot":"","sources":["../../../src/node/openai/openai-language-model.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"openai-language-model.js","sourceRoot":"","sources":["../../../src/node/openai/openai-language-model.ts"],"names":[],"mappings":";;;;AAAA,2CAA8D;AAE9D,qCAA0C;AAC1C,+DAA4F;AAE5F,gEAA2D;AAC9C,QAAA,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAGlE,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,uCAAiB;IACtC,kBAAkB,CAAC,OAA6B;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,2CAAyB,CAAC,YAAY,GAAG,CAAC,CAAC;QAC9G,CAAC;QACD,OAAO,IAAA,qBAAY,EAAC;YAClB,MAAM;YACN,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,mDAAmD;SAChF,CAAC,CAAC;IACL,CAAC;IAES,kBAAkB,CAAC,QAAwB,EAAE,OAAgB;QACrE,OAAO,QAAQ,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC;IACzC,CAAC;CACF,CAAA;AAfY,kCAAW;sBAAX,WAAW;IADvB,IAAA,eAAU,GAAE;GACA,WAAW,CAevB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensumi/ide-ai-native",
|
|
3
|
-
"version": "3.8.1-next-
|
|
3
|
+
"version": "3.8.1-next-1740556231.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"lib",
|
|
6
6
|
"src"
|
|
@@ -19,32 +19,32 @@
|
|
|
19
19
|
"url": "git@github.com:opensumi/core.git"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@ai-sdk/anthropic": "^1.1.
|
|
23
|
-
"@ai-sdk/deepseek": "^0.1.
|
|
24
|
-
"@ai-sdk/openai
|
|
22
|
+
"@ai-sdk/anthropic": "^1.1.6",
|
|
23
|
+
"@ai-sdk/deepseek": "^0.1.8",
|
|
24
|
+
"@ai-sdk/openai": "^1.1.9",
|
|
25
25
|
"@modelcontextprotocol/sdk": "^1.3.1",
|
|
26
|
-
"@opensumi/ide-addons": "3.8.1-next-
|
|
27
|
-
"@opensumi/ide-components": "3.8.1-next-
|
|
28
|
-
"@opensumi/ide-connection": "3.8.1-next-
|
|
29
|
-
"@opensumi/ide-core-common": "3.8.1-next-
|
|
30
|
-
"@opensumi/ide-core-node": "3.8.1-next-
|
|
31
|
-
"@opensumi/ide-debug": "3.8.1-next-
|
|
32
|
-
"@opensumi/ide-design": "3.8.1-next-
|
|
33
|
-
"@opensumi/ide-editor": "3.8.1-next-
|
|
34
|
-
"@opensumi/ide-file-search": "3.8.1-next-
|
|
35
|
-
"@opensumi/ide-file-service": "3.8.1-next-
|
|
36
|
-
"@opensumi/ide-main-layout": "3.8.1-next-
|
|
37
|
-
"@opensumi/ide-markers": "3.8.1-next-
|
|
38
|
-
"@opensumi/ide-monaco": "3.8.1-next-
|
|
39
|
-
"@opensumi/ide-overlay": "3.8.1-next-
|
|
40
|
-
"@opensumi/ide-preferences": "3.8.1-next-
|
|
41
|
-
"@opensumi/ide-search": "3.8.1-next-
|
|
42
|
-
"@opensumi/ide-terminal-next": "3.8.1-next-
|
|
43
|
-
"@opensumi/ide-theme": "3.8.1-next-
|
|
44
|
-
"@opensumi/ide-utils": "3.8.1-next-
|
|
45
|
-
"@opensumi/ide-workspace": "3.8.1-next-
|
|
26
|
+
"@opensumi/ide-addons": "3.8.1-next-1740556231.0",
|
|
27
|
+
"@opensumi/ide-components": "3.8.1-next-1740556231.0",
|
|
28
|
+
"@opensumi/ide-connection": "3.8.1-next-1740556231.0",
|
|
29
|
+
"@opensumi/ide-core-common": "3.8.1-next-1740556231.0",
|
|
30
|
+
"@opensumi/ide-core-node": "3.8.1-next-1740556231.0",
|
|
31
|
+
"@opensumi/ide-debug": "3.8.1-next-1740556231.0",
|
|
32
|
+
"@opensumi/ide-design": "3.8.1-next-1740556231.0",
|
|
33
|
+
"@opensumi/ide-editor": "3.8.1-next-1740556231.0",
|
|
34
|
+
"@opensumi/ide-file-search": "3.8.1-next-1740556231.0",
|
|
35
|
+
"@opensumi/ide-file-service": "3.8.1-next-1740556231.0",
|
|
36
|
+
"@opensumi/ide-main-layout": "3.8.1-next-1740556231.0",
|
|
37
|
+
"@opensumi/ide-markers": "3.8.1-next-1740556231.0",
|
|
38
|
+
"@opensumi/ide-monaco": "3.8.1-next-1740556231.0",
|
|
39
|
+
"@opensumi/ide-overlay": "3.8.1-next-1740556231.0",
|
|
40
|
+
"@opensumi/ide-preferences": "3.8.1-next-1740556231.0",
|
|
41
|
+
"@opensumi/ide-search": "3.8.1-next-1740556231.0",
|
|
42
|
+
"@opensumi/ide-terminal-next": "3.8.1-next-1740556231.0",
|
|
43
|
+
"@opensumi/ide-theme": "3.8.1-next-1740556231.0",
|
|
44
|
+
"@opensumi/ide-utils": "3.8.1-next-1740556231.0",
|
|
45
|
+
"@opensumi/ide-workspace": "3.8.1-next-1740556231.0",
|
|
46
46
|
"@xterm/xterm": "5.5.0",
|
|
47
|
-
"ai": "^4.1.
|
|
47
|
+
"ai": "^4.1.21",
|
|
48
48
|
"ansi-regex": "^2.0.0",
|
|
49
49
|
"diff": "^7.0.0",
|
|
50
50
|
"dom-align": "^1.7.0",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"zod-to-json-schema": "^3.24.1"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
|
-
"@opensumi/ide-core-browser": "3.8.1-next-
|
|
60
|
+
"@opensumi/ide-core-browser": "3.8.1-next-1740556231.0"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "d7a58257c41fb36ec7fd284c7ded010bf2e588b7"
|
|
63
63
|
}
|
|
@@ -59,7 +59,11 @@ import {
|
|
|
59
59
|
} from '@opensumi/ide-core-common';
|
|
60
60
|
import { DESIGN_MENU_BAR_RIGHT } from '@opensumi/ide-design';
|
|
61
61
|
import { IEditor, WorkbenchEditorService } from '@opensumi/ide-editor';
|
|
62
|
-
import {
|
|
62
|
+
import {
|
|
63
|
+
BrowserEditorContribution,
|
|
64
|
+
EditorComponentRegistry,
|
|
65
|
+
IEditorFeatureRegistry,
|
|
66
|
+
} from '@opensumi/ide-editor/lib/browser';
|
|
63
67
|
import { WorkbenchEditorServiceImpl } from '@opensumi/ide-editor/lib/browser/workbench-editor.service';
|
|
64
68
|
import { IMainLayoutService } from '@opensumi/ide-main-layout';
|
|
65
69
|
import { ISettingRegistry, SettingContribution } from '@opensumi/ide-preferences';
|
|
@@ -72,7 +76,6 @@ import {
|
|
|
72
76
|
AI_CHAT_LOGO_AVATAR_ID,
|
|
73
77
|
AI_CHAT_VIEW_ID,
|
|
74
78
|
AI_MENU_BAR_DEBUG_TOOLBAR,
|
|
75
|
-
BUILTIN_MCP_SERVER_NAME,
|
|
76
79
|
ChatProxyServiceToken,
|
|
77
80
|
IChatInternalService,
|
|
78
81
|
IChatManagerService,
|
|
@@ -100,6 +103,7 @@ import {
|
|
|
100
103
|
AIRightTabRenderer,
|
|
101
104
|
} from './layout/tabbar.view';
|
|
102
105
|
import { AIChatLogoAvatar } from './layout/view/avatar/avatar.view';
|
|
106
|
+
import { BaseApplyService } from './mcp/base-apply.service';
|
|
103
107
|
import {
|
|
104
108
|
AINativeCoreContribution,
|
|
105
109
|
IChatFeatureRegistry,
|
|
@@ -116,6 +120,7 @@ import {
|
|
|
116
120
|
import { InlineChatEditorController } from './widget/inline-chat/inline-chat-editor.controller';
|
|
117
121
|
import { InlineChatFeatureRegistry } from './widget/inline-chat/inline-chat.feature.registry';
|
|
118
122
|
import { InlineChatService } from './widget/inline-chat/inline-chat.service';
|
|
123
|
+
import { InlineDiffManager } from './widget/inline-diff/inline-diff-manager';
|
|
119
124
|
import { InlineDiffController } from './widget/inline-diff/inline-diff.controller';
|
|
120
125
|
import { InlineHintController } from './widget/inline-hint/inline-hint.controller';
|
|
121
126
|
import { InlineInputController } from './widget/inline-input/inline-input.controller';
|
|
@@ -123,6 +128,8 @@ import { InlineInputService } from './widget/inline-input/inline-input.service';
|
|
|
123
128
|
import { InlineStreamDiffService } from './widget/inline-stream-diff/inline-stream-diff.service';
|
|
124
129
|
import { SumiLightBulbWidget } from './widget/light-bulb';
|
|
125
130
|
|
|
131
|
+
export const INLINE_DIFF_MANAGER_WIDGET_ID = 'inline-diff-manager-widget';
|
|
132
|
+
|
|
126
133
|
@Domain(
|
|
127
134
|
ClientAppContribution,
|
|
128
135
|
BrowserEditorContribution,
|
|
@@ -237,6 +244,9 @@ export class AINativeBrowserContribution
|
|
|
237
244
|
@Autowired(IChatInternalService)
|
|
238
245
|
private readonly chatInternalService: ChatInternalService;
|
|
239
246
|
|
|
247
|
+
@Autowired(BaseApplyService)
|
|
248
|
+
private readonly applyService: BaseApplyService;
|
|
249
|
+
|
|
240
250
|
constructor() {
|
|
241
251
|
this.registerFeature();
|
|
242
252
|
}
|
|
@@ -328,23 +338,15 @@ export class AINativeBrowserContribution
|
|
|
328
338
|
}
|
|
329
339
|
|
|
330
340
|
if (supportsMCP) {
|
|
341
|
+
// 初始化内置 MCP Server
|
|
342
|
+
this.sumiMCPServerBackendProxy.initBuiltinMCPServer();
|
|
343
|
+
|
|
331
344
|
// 从 preferences 获取并初始化外部 MCP Servers
|
|
332
345
|
const mcpServers = this.preferenceService.getValid<MCPServerDescription[]>(
|
|
333
346
|
AINativeSettingSectionsId.MCPServers,
|
|
334
347
|
);
|
|
335
|
-
|
|
336
|
-
// 查找内置 MCP Server 的配置
|
|
337
|
-
const builtinServer = mcpServers?.find((server) => server.name === BUILTIN_MCP_SERVER_NAME);
|
|
338
|
-
|
|
339
|
-
// 总是初始化内置服务器,根据配置决定是否启用
|
|
340
|
-
this.sumiMCPServerBackendProxy.initBuiltinMCPServer(builtinServer?.enabled ?? true);
|
|
341
|
-
|
|
342
|
-
// 初始化其他外部 MCP Servers
|
|
343
348
|
if (mcpServers && mcpServers.length > 0) {
|
|
344
|
-
|
|
345
|
-
if (externalServers.length > 0) {
|
|
346
|
-
this.sumiMCPServerBackendProxy.initExternalMCPServers(externalServers);
|
|
347
|
-
}
|
|
349
|
+
this.sumiMCPServerBackendProxy.initExternalMCPServers(mcpServers);
|
|
348
350
|
}
|
|
349
351
|
}
|
|
350
352
|
});
|
|
@@ -524,6 +526,19 @@ export class AINativeBrowserContribution
|
|
|
524
526
|
});
|
|
525
527
|
}
|
|
526
528
|
|
|
529
|
+
registerEditorComponent(registry: EditorComponentRegistry): void {
|
|
530
|
+
registry.registerEditorSideWidget({
|
|
531
|
+
id: INLINE_DIFF_MANAGER_WIDGET_ID,
|
|
532
|
+
component: InlineDiffManager,
|
|
533
|
+
displaysOnResource: (resource) => {
|
|
534
|
+
if (this.applyService.getUriPendingCodeBlock(resource.uri)) {
|
|
535
|
+
return true;
|
|
536
|
+
}
|
|
537
|
+
return false;
|
|
538
|
+
},
|
|
539
|
+
});
|
|
540
|
+
}
|
|
541
|
+
|
|
527
542
|
registerCommands(commands: CommandRegistry): void {
|
|
528
543
|
commands.registerCommand(AI_INLINE_CHAT_VISIBLE, {
|
|
529
544
|
execute: (value: boolean) => {
|
|
@@ -9,12 +9,11 @@ import {
|
|
|
9
9
|
IStorage,
|
|
10
10
|
STORAGE_NAMESPACE,
|
|
11
11
|
StorageProvider,
|
|
12
|
+
debounce,
|
|
12
13
|
} from '@opensumi/ide-core-common';
|
|
13
14
|
import { ChatMessageRole, IChatMessage, IHistoryChatMessage } from '@opensumi/ide-core-common/lib/types/ai-native';
|
|
14
15
|
|
|
15
16
|
import { IChatAgentService, IChatFollowup, IChatRequestMessage, IChatResponseErrorDetails } from '../../common';
|
|
16
|
-
import { LLMContextService, LLMContextServiceToken } from '../../common/llm-context';
|
|
17
|
-
import { ChatAgentPromptProvider } from '../../common/prompts/context-prompt-provider';
|
|
18
17
|
import { MsgHistoryManager } from '../model/msg-history-manager';
|
|
19
18
|
|
|
20
19
|
import { ChatModel, ChatRequestModel, ChatResponseModel, IChatProgressResponseContent } from './chat-model';
|
|
@@ -51,12 +50,6 @@ export class ChatManagerService extends Disposable {
|
|
|
51
50
|
@Autowired(StorageProvider)
|
|
52
51
|
private storageProvider: StorageProvider;
|
|
53
52
|
|
|
54
|
-
@Autowired(ChatAgentPromptProvider)
|
|
55
|
-
protected readonly promptProvider: ChatAgentPromptProvider;
|
|
56
|
-
|
|
57
|
-
@Autowired(LLMContextServiceToken)
|
|
58
|
-
protected readonly contextService: LLMContextService;
|
|
59
|
-
|
|
60
53
|
private _chatStorage: IStorage;
|
|
61
54
|
|
|
62
55
|
protected fromJSON(data: ISessionModel[]) {
|
|
@@ -97,6 +90,7 @@ export class ChatManagerService extends Disposable {
|
|
|
97
90
|
const savedSessions = this.fromJSON(sessionsModelData);
|
|
98
91
|
savedSessions.forEach((session) => {
|
|
99
92
|
this.#sessionModels.set(session.sessionId, session);
|
|
93
|
+
this.listenSession(session);
|
|
100
94
|
});
|
|
101
95
|
await this.storageInitEmitter.fireAndAwait();
|
|
102
96
|
}
|
|
@@ -106,19 +100,12 @@ export class ChatManagerService extends Disposable {
|
|
|
106
100
|
}
|
|
107
101
|
|
|
108
102
|
startSession() {
|
|
109
|
-
const model = new ChatModel(
|
|
110
|
-
provideContext: this.provideContextPrompt.bind(this),
|
|
111
|
-
});
|
|
103
|
+
const model = new ChatModel();
|
|
112
104
|
this.#sessionModels.set(model.sessionId, model);
|
|
105
|
+
this.listenSession(model);
|
|
113
106
|
return model;
|
|
114
107
|
}
|
|
115
108
|
|
|
116
|
-
private provideContextPrompt(message: string) {
|
|
117
|
-
const context = this.contextService.serialize();
|
|
118
|
-
const fullMessage = this.promptProvider.provideContextPrompt(context, message);
|
|
119
|
-
return fullMessage;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
109
|
getSession(sessionId: string): ChatModel | undefined {
|
|
123
110
|
return this.#sessionModels.get(sessionId);
|
|
124
111
|
}
|
|
@@ -212,6 +199,15 @@ export class ChatManagerService extends Disposable {
|
|
|
212
199
|
}
|
|
213
200
|
}
|
|
214
201
|
|
|
202
|
+
protected listenSession(session: ChatModel) {
|
|
203
|
+
this.addDispose(
|
|
204
|
+
session.history.onMessageAdditionalChange(() => {
|
|
205
|
+
this.saveSessions();
|
|
206
|
+
}),
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
@debounce(1000)
|
|
215
211
|
protected saveSessions() {
|
|
216
212
|
this._chatStorage.set('sessionModels', this.getSessions());
|
|
217
213
|
}
|
|
@@ -274,22 +274,13 @@ export class ChatRequestModel implements IChatRequestModel {
|
|
|
274
274
|
export class ChatModel extends Disposable implements IChatModel {
|
|
275
275
|
private static requestIdPool = 0;
|
|
276
276
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
constructor(initParams?: {
|
|
280
|
-
sessionId?: string;
|
|
281
|
-
history?: MsgHistoryManager;
|
|
282
|
-
requests?: ChatRequestModel[];
|
|
283
|
-
provideContext?: (msg: string) => string;
|
|
284
|
-
}) {
|
|
277
|
+
constructor(initParams?: { sessionId?: string; history?: MsgHistoryManager; requests?: ChatRequestModel[] }) {
|
|
285
278
|
super();
|
|
286
279
|
this.#sessionId = initParams?.sessionId ?? uuid();
|
|
287
280
|
this.history = initParams?.history ?? new MsgHistoryManager();
|
|
288
281
|
if (initParams?.requests) {
|
|
289
282
|
this.#requests = new Map(initParams.requests.map((r) => [r.requestId, r]));
|
|
290
283
|
}
|
|
291
|
-
|
|
292
|
-
this.provideContextPrompt = initParams?.provideContext;
|
|
293
284
|
}
|
|
294
285
|
|
|
295
286
|
#sessionId: string;
|
|
@@ -309,15 +300,9 @@ export class ChatModel extends Disposable implements IChatModel {
|
|
|
309
300
|
readonly history: MsgHistoryManager;
|
|
310
301
|
|
|
311
302
|
addRequest(message: IChatRequestMessage): ChatRequestModel {
|
|
312
|
-
const msg = message;
|
|
313
|
-
// first msg
|
|
314
|
-
if (ChatModel.requestIdPool === 0 && this.provideContextPrompt) {
|
|
315
|
-
msg.prompt = this.provideContextPrompt(msg.prompt);
|
|
316
|
-
}
|
|
317
|
-
|
|
318
303
|
const requestId = `${this.sessionId}_request_${ChatModel.requestIdPool++}`;
|
|
319
|
-
const response = new ChatResponseModel(requestId, this,
|
|
320
|
-
const request = new ChatRequestModel(requestId, this,
|
|
304
|
+
const response = new ChatResponseModel(requestId, this, message.agentId);
|
|
305
|
+
const request = new ChatRequestModel(requestId, this, message, response);
|
|
321
306
|
|
|
322
307
|
this.#requests.set(requestId, request);
|
|
323
308
|
return request;
|
|
@@ -94,6 +94,10 @@ export class ChatInternalService extends Disposable {
|
|
|
94
94
|
return this.chatManagerService.getSessions();
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
+
getSession(sessionId: string) {
|
|
98
|
+
return this.chatManagerService.getSession(sessionId);
|
|
99
|
+
}
|
|
100
|
+
|
|
97
101
|
activateSession(sessionId: string) {
|
|
98
102
|
const targetSession = this.chatManagerService.getSession(sessionId);
|
|
99
103
|
if (!targetSession) {
|
|
@@ -279,6 +279,7 @@
|
|
|
279
279
|
}
|
|
280
280
|
}
|
|
281
281
|
|
|
282
|
+
|
|
282
283
|
.chat_tips_container {
|
|
283
284
|
display: flex;
|
|
284
285
|
align-items: center;
|
|
@@ -289,6 +290,6 @@
|
|
|
289
290
|
}
|
|
290
291
|
|
|
291
292
|
.chat_history {
|
|
292
|
-
width: calc(100% -
|
|
293
|
+
width: calc(100% - 60px);
|
|
293
294
|
color: var(--design-text-foreground);
|
|
294
295
|
}
|
|
@@ -3,8 +3,8 @@ import { MessageList } from 'react-chat-elements';
|
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
AINativeConfigService,
|
|
6
|
-
CommandService,
|
|
7
6
|
getIcon,
|
|
7
|
+
useEventEffect,
|
|
8
8
|
useInjectable,
|
|
9
9
|
useUpdateOnEvent,
|
|
10
10
|
} from '@opensumi/ide-core-browser';
|
|
@@ -41,6 +41,8 @@ import {
|
|
|
41
41
|
IChatMessageStructure,
|
|
42
42
|
TokenMCPServerProxyService,
|
|
43
43
|
} from '../../common';
|
|
44
|
+
import { LLMContextService, LLMContextServiceToken } from '../../common/llm-context';
|
|
45
|
+
import { ChatAgentPromptProvider } from '../../common/prompts/context-prompt-provider';
|
|
44
46
|
import { ChatContext } from '../components/ChatContext';
|
|
45
47
|
import { CodeBlockWrapperInput } from '../components/ChatEditor';
|
|
46
48
|
import ChatHistory, { IChatHistoryItem } from '../components/ChatHistory';
|
|
@@ -50,7 +52,6 @@ import { ChatNotify, ChatReply } from '../components/ChatReply';
|
|
|
50
52
|
import { SlashCustomRender } from '../components/SlashCustomRender';
|
|
51
53
|
import { MessageData, createMessageByAI, createMessageByUser } from '../components/utils';
|
|
52
54
|
import { WelcomeMessage } from '../components/WelcomeMsg';
|
|
53
|
-
import { OPEN_MCP_CONFIG_COMMAND } from '../mcp/config/mcp-config.commands';
|
|
54
55
|
import { MCPServerProxyService } from '../mcp/mcp-server-proxy.service';
|
|
55
56
|
import { MCPToolsDialog } from '../mcp/mcp-tools-dialog.view';
|
|
56
57
|
import { ChatViewHeaderRender, TSlashCommandCustomRender } from '../types';
|
|
@@ -62,7 +63,6 @@ import { ChatFeatureRegistry } from './chat.feature.registry';
|
|
|
62
63
|
import { ChatInternalService } from './chat.internal.service';
|
|
63
64
|
import styles from './chat.module.less';
|
|
64
65
|
import { ChatRenderRegistry } from './chat.render.registry';
|
|
65
|
-
|
|
66
66
|
const SCROLL_CLASSNAME = 'chat_scroll';
|
|
67
67
|
|
|
68
68
|
interface TDispatchAction {
|
|
@@ -79,6 +79,8 @@ export const AIChatView = () => {
|
|
|
79
79
|
const chatAgentService = useInjectable<IChatAgentService>(IChatAgentService);
|
|
80
80
|
const chatFeatureRegistry = useInjectable<ChatFeatureRegistry>(ChatFeatureRegistryToken);
|
|
81
81
|
const chatRenderRegistry = useInjectable<ChatRenderRegistry>(ChatRenderRegistryToken);
|
|
82
|
+
const contextService = useInjectable<LLMContextService>(LLMContextServiceToken);
|
|
83
|
+
const promptProvider = useInjectable<ChatAgentPromptProvider>(ChatAgentPromptProvider);
|
|
82
84
|
|
|
83
85
|
const layoutService = useInjectable<IMainLayoutService>(IMainLayoutService);
|
|
84
86
|
const msgHistoryManager = aiChatService.sessionModel.history;
|
|
@@ -504,7 +506,10 @@ export const AIChatView = () => {
|
|
|
504
506
|
const { message, agentId, command, reportExtra } = value;
|
|
505
507
|
const { actionType, actionSource } = reportExtra || {};
|
|
506
508
|
|
|
507
|
-
const
|
|
509
|
+
const context = contextService.serialize();
|
|
510
|
+
const fullMessage = await promptProvider.provideContextPrompt(context, message);
|
|
511
|
+
|
|
512
|
+
const request = aiChatService.createRequest(fullMessage, agentId!, command);
|
|
508
513
|
if (!request) {
|
|
509
514
|
return;
|
|
510
515
|
}
|
|
@@ -734,8 +739,6 @@ export function DefaultChatViewHeader({
|
|
|
734
739
|
const aiNativeConfigService = useInjectable<AINativeConfigService>(AINativeConfigService);
|
|
735
740
|
const mcpServerProxyService = useInjectable<MCPServerProxyService>(TokenMCPServerProxyService);
|
|
736
741
|
const aiChatService = useInjectable<ChatInternalService>(IChatInternalService);
|
|
737
|
-
const commandService = useInjectable<CommandService>(CommandService);
|
|
738
|
-
|
|
739
742
|
const [historyList, setHistoryList] = React.useState<IChatHistoryItem[]>([]);
|
|
740
743
|
const [currentTitle, setCurrentTitle] = React.useState<string>('');
|
|
741
744
|
const handleNewChat = React.useCallback(() => {
|
|
@@ -756,10 +759,6 @@ export function DefaultChatViewHeader({
|
|
|
756
759
|
[aiChatService],
|
|
757
760
|
);
|
|
758
761
|
|
|
759
|
-
const handleShowMCPConfig = React.useCallback(() => {
|
|
760
|
-
commandService.executeCommand(OPEN_MCP_CONFIG_COMMAND.id);
|
|
761
|
-
}, [commandService]);
|
|
762
|
-
|
|
763
762
|
const handleShowMCPTools = React.useCallback(async () => {
|
|
764
763
|
const tools = await mcpServerProxyService.getAllMCPTools();
|
|
765
764
|
dialogService.open({
|
|
@@ -848,6 +847,23 @@ export function DefaultChatViewHeader({
|
|
|
848
847
|
ariaLabel={localize('aiNative.operate.clear.title')}
|
|
849
848
|
/>
|
|
850
849
|
</Popover>
|
|
850
|
+
{aiNativeConfigService.capabilities.supportsMCP && (
|
|
851
|
+
<Popover
|
|
852
|
+
overlayClassName={styles.popover_icon}
|
|
853
|
+
id={'ai-chat-header-tools'}
|
|
854
|
+
position={PopoverPosition.left}
|
|
855
|
+
title={localize('aiNative.operate.tools.title')}
|
|
856
|
+
>
|
|
857
|
+
<EnhanceIcon
|
|
858
|
+
wrapperClassName={styles.action_btn}
|
|
859
|
+
className={getIcon('menubar-tool')}
|
|
860
|
+
onClick={handleShowMCPTools}
|
|
861
|
+
tabIndex={0}
|
|
862
|
+
role='button'
|
|
863
|
+
ariaLabel={localize('aiNative.operate.tools.title')}
|
|
864
|
+
/>
|
|
865
|
+
</Popover>
|
|
866
|
+
)}
|
|
851
867
|
<Popover
|
|
852
868
|
overlayClassName={styles.popover_icon}
|
|
853
869
|
id={'ai-chat-header-close'}
|
|
@@ -39,7 +39,7 @@ export const ChatContext = memo(() => {
|
|
|
39
39
|
50,
|
|
40
40
|
)((files) => {
|
|
41
41
|
if (files) {
|
|
42
|
-
updateAddedFiles(
|
|
42
|
+
updateAddedFiles(files);
|
|
43
43
|
}
|
|
44
44
|
}, contextService);
|
|
45
45
|
|
|
@@ -57,7 +57,7 @@ export const ChatContext = memo(() => {
|
|
|
57
57
|
}, []);
|
|
58
58
|
|
|
59
59
|
const onDidDeselect = useCallback((uri: URI) => {
|
|
60
|
-
contextService.removeFileFromContext(uri
|
|
60
|
+
contextService.removeFileFromContext(uri);
|
|
61
61
|
}, []);
|
|
62
62
|
|
|
63
63
|
const onDidClickFile = useCallback((uri: URI) => {
|
|
@@ -2,10 +2,11 @@ import cls from 'classnames';
|
|
|
2
2
|
import React, { FC, memo, useCallback, useEffect, useRef, useState } from 'react';
|
|
3
3
|
|
|
4
4
|
import { Icon, Input, Loading, Popover, PopoverPosition, PopoverTriggerType, getIcon } from '@opensumi/ide-components';
|
|
5
|
-
import './chat-history.css';
|
|
6
5
|
import { localize } from '@opensumi/ide-core-browser';
|
|
7
6
|
import { EnhanceIcon } from '@opensumi/ide-core-browser/lib/components/ai-native';
|
|
8
7
|
|
|
8
|
+
import styles from './chat-history.module.less';
|
|
9
|
+
|
|
9
10
|
export interface IChatHistoryItem {
|
|
10
11
|
id: string;
|
|
11
12
|
title: string;
|
|
@@ -162,22 +163,25 @@ const ChatHistory: FC<IChatHistoryProps> = memo(
|
|
|
162
163
|
(item: IChatHistoryItem) => (
|
|
163
164
|
<div
|
|
164
165
|
key={item.id}
|
|
165
|
-
className={cls(
|
|
166
|
+
className={cls(
|
|
167
|
+
styles['dm-chat-history-item'],
|
|
168
|
+
item.id === currentId ? styles['dm-chat-history-item-selected'] : '',
|
|
169
|
+
)}
|
|
166
170
|
onClick={() => handleHistoryItemSelect(item)}
|
|
167
171
|
>
|
|
168
|
-
<div className='dm-chat-history-item-content'>
|
|
172
|
+
<div className={styles['dm-chat-history-item-content']}>
|
|
169
173
|
{item.loading ? (
|
|
170
174
|
<Loading />
|
|
171
175
|
) : (
|
|
172
176
|
<Icon icon='message' style={{ width: '16px', height: '16px', marginRight: 4 }} />
|
|
173
177
|
)}
|
|
174
178
|
{!historyTitleEditable?.[item.id] ? (
|
|
175
|
-
<span id={`dm-chat-history-item-title-${item.id}`} className='dm-chat-history-item-title'>
|
|
179
|
+
<span id={`dm-chat-history-item-title-${item.id}`} className={styles['dm-chat-history-item-title']}>
|
|
176
180
|
{item.title}
|
|
177
181
|
</span>
|
|
178
182
|
) : (
|
|
179
183
|
<Input
|
|
180
|
-
className='dm-chat-history-item-title'
|
|
184
|
+
className={styles['dm-chat-history-item-title']}
|
|
181
185
|
defaultValue={item.title}
|
|
182
186
|
ref={inputRef}
|
|
183
187
|
onPressEnter={(e: any) => {
|
|
@@ -187,7 +191,7 @@ const ChatHistory: FC<IChatHistoryProps> = memo(
|
|
|
187
191
|
/>
|
|
188
192
|
)}
|
|
189
193
|
</div>
|
|
190
|
-
<div className='dm-chat-history-item-actions'>
|
|
194
|
+
<div className={styles['dm-chat-history-item-actions']}>
|
|
191
195
|
{/* <EditOutlined
|
|
192
196
|
title={localize('aiNative.operate.chatHistory.edit')}
|
|
193
197
|
style={{ marginRight: 8 }}
|
|
@@ -198,7 +202,7 @@ const ChatHistory: FC<IChatHistoryProps> = memo(
|
|
|
198
202
|
}}
|
|
199
203
|
/> */}
|
|
200
204
|
<EnhanceIcon
|
|
201
|
-
className={cls('dm-chat-history-item-actions-delete', getIcon('delete'))}
|
|
205
|
+
className={cls(styles['dm-chat-history-item-actions-delete'], getIcon('delete'))}
|
|
202
206
|
onClick={(e) => {
|
|
203
207
|
e.preventDefault();
|
|
204
208
|
e.stopPropagation();
|
|
@@ -237,10 +241,10 @@ const ChatHistory: FC<IChatHistoryProps> = memo(
|
|
|
237
241
|
value={searchValue}
|
|
238
242
|
onChange={handleSearchChange}
|
|
239
243
|
/>
|
|
240
|
-
<div className='dm-chat-history-list'>
|
|
244
|
+
<div className={styles['dm-chat-history-list']}>
|
|
241
245
|
{groupedHistoryList.map((group) => (
|
|
242
246
|
<div key={group.key} style={{ padding: '4px' }}>
|
|
243
|
-
<div className='dm-chat-history-time'>{group.key}</div>
|
|
247
|
+
<div className={styles['dm-chat-history-time']}>{group.key}</div>
|
|
244
248
|
{group.items.map(renderHistoryItem)}
|
|
245
249
|
</div>
|
|
246
250
|
))}
|
|
@@ -253,11 +257,11 @@ const ChatHistory: FC<IChatHistoryProps> = memo(
|
|
|
253
257
|
const getPopupContainer = useCallback((triggerNode: HTMLElement) => triggerNode.parentElement!, []);
|
|
254
258
|
|
|
255
259
|
return (
|
|
256
|
-
<div className={cls('dm-chat-history-header', className)}>
|
|
257
|
-
<div className='dm-chat-history-header-title'>
|
|
260
|
+
<div className={cls(styles['dm-chat-history-header'], className)}>
|
|
261
|
+
<div className={styles['dm-chat-history-header-title']}>
|
|
258
262
|
<span>{title}</span>
|
|
259
263
|
</div>
|
|
260
|
-
<div className='dm-chat-history-header-actions'>
|
|
264
|
+
<div className={styles['dm-chat-history-header-actions']}>
|
|
261
265
|
<Popover
|
|
262
266
|
id='dm-chat-history-header-actions-history'
|
|
263
267
|
content={renderHistory()}
|
|
@@ -267,10 +271,12 @@ const ChatHistory: FC<IChatHistoryProps> = memo(
|
|
|
267
271
|
getPopupContainer={getPopupContainer}
|
|
268
272
|
>
|
|
269
273
|
<div
|
|
270
|
-
className='dm-chat-history-header-actions-history'
|
|
274
|
+
className={styles['dm-chat-history-header-actions-history']}
|
|
271
275
|
title={localize('aiNative.operate.chatHistory.title')}
|
|
272
276
|
>
|
|
273
|
-
<EnhanceIcon
|
|
277
|
+
<EnhanceIcon
|
|
278
|
+
className={cls(styles['dm-chat-history-header-actions-history'], 'codicon codicon-history')}
|
|
279
|
+
/>
|
|
274
280
|
</div>
|
|
275
281
|
</Popover>
|
|
276
282
|
<Popover
|
|
@@ -279,7 +285,7 @@ const ChatHistory: FC<IChatHistoryProps> = memo(
|
|
|
279
285
|
title={localize('aiNative.operate.newChat.title')}
|
|
280
286
|
>
|
|
281
287
|
<EnhanceIcon
|
|
282
|
-
className={cls('dm-chat-history-header-actions-new', getIcon('plus'))}
|
|
288
|
+
className={cls(styles['dm-chat-history-header-actions-new'], getIcon('plus'))}
|
|
283
289
|
onClick={handleNewChat}
|
|
284
290
|
/>
|
|
285
291
|
</Popover>
|