@opensumi/ide-ai-native 3.8.1-next-1741071284.0 → 3.8.1-next-1741080291.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 +5 -0
- package/lib/browser/ai-core.contribution.d.ts.map +1 -1
- package/lib/browser/ai-core.contribution.js +68 -15
- package/lib/browser/ai-core.contribution.js.map +1 -1
- package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
- package/lib/browser/chat/chat-proxy.service.js +8 -2
- package/lib/browser/chat/chat-proxy.service.js.map +1 -1
- package/lib/browser/mcp/tools/components/Terminal.d.ts.map +1 -1
- package/lib/browser/mcp/tools/components/Terminal.js +10 -2
- package/lib/browser/mcp/tools/components/Terminal.js.map +1 -1
- package/lib/browser/preferences/schema.d.ts.map +1 -1
- package/lib/browser/preferences/schema.js +6 -1
- package/lib/browser/preferences/schema.js.map +1 -1
- package/lib/common/index.d.ts +1 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +2 -0
- package/lib/common/index.js.map +1 -1
- package/lib/common/model.d.ts +12 -0
- package/lib/common/model.d.ts.map +1 -0
- package/lib/common/model.js +83 -0
- package/lib/common/model.js.map +1 -0
- package/lib/node/anthropic/anthropic-language-model.d.ts +3 -1
- package/lib/node/anthropic/anthropic-language-model.d.ts.map +1 -1
- package/lib/node/anthropic/anthropic-language-model.js +6 -2
- package/lib/node/anthropic/anthropic-language-model.js.map +1 -1
- package/lib/node/base-language-model.d.ts +4 -1
- package/lib/node/base-language-model.d.ts.map +1 -1
- package/lib/node/base-language-model.js +6 -5
- package/lib/node/base-language-model.js.map +1 -1
- package/lib/node/deepseek/deepseek-language-model.d.ts +3 -1
- package/lib/node/deepseek/deepseek-language-model.d.ts.map +1 -1
- package/lib/node/deepseek/deepseek-language-model.js +6 -2
- package/lib/node/deepseek/deepseek-language-model.js.map +1 -1
- package/lib/node/openai/openai-language-model.d.ts +5 -4
- package/lib/node/openai/openai-language-model.d.ts.map +1 -1
- package/lib/node/openai/openai-language-model.js +8 -7
- package/lib/node/openai/openai-language-model.js.map +1 -1
- package/lib/node/openai-compatible/openai-compatible-language-model.d.ts +10 -0
- package/lib/node/openai-compatible/openai-compatible-language-model.d.ts.map +1 -0
- package/lib/node/openai-compatible/openai-compatible-language-model.js +32 -0
- package/lib/node/openai-compatible/openai-compatible-language-model.js.map +1 -0
- package/package.json +24 -23
- package/src/browser/ai-core.contribution.ts +81 -17
- package/src/browser/chat/chat-proxy.service.ts +7 -2
- package/src/browser/mcp/tools/components/Terminal.tsx +13 -2
- package/src/browser/preferences/schema.ts +6 -1
- package/src/common/index.ts +2 -0
- package/src/common/model.ts +90 -0
- package/src/node/anthropic/anthropic-language-model.ts +7 -2
- package/src/node/base-language-model.ts +9 -9
- package/src/node/deepseek/deepseek-language-model.ts +7 -2
- package/src/node/openai/openai-language-model.ts +10 -9
- package/src/node/openai-compatible/openai-compatible-language-model.ts +30 -0
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { IAIBackServiceOption, IChatMessage } from '@opensumi/ide-core-common';
|
|
2
2
|
import { ChatReadableStream } from '@opensumi/ide-core-node';
|
|
3
3
|
import { CancellationToken } from '@opensumi/ide-utils';
|
|
4
|
+
import { ModelInfo } from '../common';
|
|
4
5
|
import { IToolInvocationRegistryManager, ToolRequest } from '../common/tool-invocation-registry';
|
|
5
6
|
export declare abstract class BaseLanguageModel {
|
|
7
|
+
static ModelOptions: Record<string, ModelInfo>;
|
|
6
8
|
protected readonly toolInvocationRegistryManager: IToolInvocationRegistryManager;
|
|
7
9
|
protected abstract initializeProvider(options: IAIBackServiceOption): any;
|
|
8
10
|
private convertChatMessageRole;
|
|
9
11
|
request(request: string, chatReadableStream: ChatReadableStream, options: IAIBackServiceOption, cancellationToken?: CancellationToken): Promise<any>;
|
|
10
12
|
private convertToolRequestToAITool;
|
|
11
13
|
protected abstract getModelIdentifier(provider: any, modelId?: string): any;
|
|
12
|
-
protected
|
|
14
|
+
protected abstract getModelInfo(modelId: string): ModelInfo | undefined;
|
|
15
|
+
protected handleStreamingRequest(provider: any, request: string, tools: ToolRequest[], chatReadableStream: ChatReadableStream, history?: IChatMessage[], modelId?: string, providerOptions?: Record<string, any>, trimTexts?: [string, string], cancellationToken?: CancellationToken): Promise<any>;
|
|
13
16
|
}
|
|
14
17
|
//# sourceMappingURL=base-language-model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-language-model.d.ts","sourceRoot":"","sources":["../../src/node/base-language-model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,oBAAoB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EACL,8BAA8B,EAE9B,WAAW,EACZ,MAAM,oCAAoC,CAAC;AAE5C,8BACsB,iBAAiB;
|
|
1
|
+
{"version":3,"file":"base-language-model.d.ts","sourceRoot":"","sources":["../../src/node/base-language-model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,oBAAoB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,8BAA8B,EAE9B,WAAW,EACZ,MAAM,oCAAoC,CAAC;AAE5C,8BACsB,iBAAiB;IACrC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAG/C,SAAS,CAAC,QAAQ,CAAC,6BAA6B,EAAE,8BAA8B,CAAC;IAEjF,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,GAAG;IAEzE,OAAO,CAAC,sBAAsB;IAexB,OAAO,CACX,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,EAAE,oBAAoB,EAC7B,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,OAAO,CAAC,GAAG,CAAC;IAwBf,OAAO,CAAC,0BAA0B;IAUlC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG;IAE3E,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;cAEvD,sBAAsB,CACpC,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,WAAW,EAAE,EACpB,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,GAAE,YAAY,EAAO,EAC5B,OAAO,CAAC,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,OAAO,CAAC,GAAG,CAAC;CAsJhB"}
|
|
@@ -29,7 +29,7 @@ let BaseLanguageModel = class BaseLanguageModel {
|
|
|
29
29
|
const registry = this.toolInvocationRegistryManager.getRegistry(clientId);
|
|
30
30
|
allFunctions = options.noTool ? [] : registry.getAllFunctions();
|
|
31
31
|
}
|
|
32
|
-
return this.handleStreamingRequest(provider, request, allFunctions, chatReadableStream, options.history || [], options.modelId, options.
|
|
32
|
+
return this.handleStreamingRequest(provider, request, allFunctions, chatReadableStream, options.history || [], options.modelId, options.providerOptions, options.trimTexts, cancellationToken);
|
|
33
33
|
}
|
|
34
34
|
convertToolRequestToAITool(toolRequest) {
|
|
35
35
|
return (0, ai_1.tool)({
|
|
@@ -39,7 +39,7 @@ let BaseLanguageModel = class BaseLanguageModel {
|
|
|
39
39
|
execute: async (args, options) => await toolRequest.handler(JSON.stringify(args), options),
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
|
-
async handleStreamingRequest(provider, request, tools, chatReadableStream, history = [], modelId,
|
|
42
|
+
async handleStreamingRequest(provider, request, tools, chatReadableStream, history = [], modelId, providerOptions, trimTexts, cancellationToken) {
|
|
43
43
|
try {
|
|
44
44
|
const aiTools = Object.fromEntries(tools.map((tool) => [tool.name, this.convertToolRequestToAITool(tool)]));
|
|
45
45
|
const abortController = new AbortController();
|
|
@@ -55,6 +55,7 @@ let BaseLanguageModel = class BaseLanguageModel {
|
|
|
55
55
|
})),
|
|
56
56
|
{ role: 'user', content: request },
|
|
57
57
|
];
|
|
58
|
+
const modelInfo = modelId ? this.getModelInfo(modelId) : undefined;
|
|
58
59
|
const stream = (0, ai_1.streamText)({
|
|
59
60
|
model: this.getModelIdentifier(provider, modelId),
|
|
60
61
|
maxTokens: 4096,
|
|
@@ -63,9 +64,9 @@ let BaseLanguageModel = class BaseLanguageModel {
|
|
|
63
64
|
abortSignal: abortController.signal,
|
|
64
65
|
experimental_toolCallStreaming: true,
|
|
65
66
|
maxSteps: 12,
|
|
66
|
-
temperature,
|
|
67
|
-
topP: topP || 0.8,
|
|
68
|
-
topK: topK || 1,
|
|
67
|
+
temperature: (modelInfo === null || modelInfo === void 0 ? void 0 : modelInfo.temperature) || 0,
|
|
68
|
+
topP: (modelInfo === null || modelInfo === void 0 ? void 0 : modelInfo.topP) || 0.8,
|
|
69
|
+
topK: (modelInfo === null || modelInfo === void 0 ? void 0 : modelInfo.topK) || 1,
|
|
69
70
|
providerOptions,
|
|
70
71
|
});
|
|
71
72
|
// 状态跟踪变量
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-language-model.js","sourceRoot":"","sources":["../../src/node/base-language-model.ts"],"names":[],"mappings":";;;;AAAA,2BAAqF;AAErF,qCAAqD;
|
|
1
|
+
{"version":3,"file":"base-language-model.js","sourceRoot":"","sources":["../../src/node/base-language-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { DeepSeekProvider } from '@ai-sdk/deepseek';
|
|
2
2
|
import { IAIBackServiceOption } from '@opensumi/ide-core-common';
|
|
3
|
+
import { ModelInfo } from '../../common';
|
|
3
4
|
import { BaseLanguageModel } from '../base-language-model';
|
|
4
5
|
export declare const DeepSeekModelIdentifier: unique symbol;
|
|
5
6
|
export declare class DeepSeekModel extends BaseLanguageModel {
|
|
6
7
|
protected initializeProvider(options: IAIBackServiceOption): DeepSeekProvider;
|
|
7
|
-
protected getModelIdentifier(provider: DeepSeekProvider): import("ai").LanguageModelV1;
|
|
8
|
+
protected getModelIdentifier(provider: DeepSeekProvider, modelId?: string): import("ai").LanguageModelV1;
|
|
9
|
+
protected getModelInfo(modelId: string): ModelInfo | undefined;
|
|
8
10
|
}
|
|
9
11
|
//# sourceMappingURL=deepseek-language-model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepseek-language-model.d.ts","sourceRoot":"","sources":["../../../src/node/deepseek/deepseek-language-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,kBAAkB,CAAC;AAGpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,eAAO,MAAM,uBAAuB,eAAoC,CAAC;AAEzE,qBACa,aAAc,SAAQ,iBAAiB;IAClD,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,gBAAgB;IAS7E,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"deepseek-language-model.d.ts","sourceRoot":"","sources":["../../../src/node/deepseek/deepseek-language-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,kBAAkB,CAAC;AAGpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,OAAO,EAAE,SAAS,EAAkB,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,eAAO,MAAM,uBAAuB,eAAoC,CAAC;AAEzE,qBACa,aAAc,SAAQ,iBAAiB;IAClD,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,gBAAgB;IAS7E,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,SAAkB;IAIlF,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;CAG/D"}
|
|
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const deepseek_1 = require("@ai-sdk/deepseek");
|
|
6
6
|
const di_1 = require("@opensumi/di");
|
|
7
7
|
const ai_native_1 = require("@opensumi/ide-core-common/lib/settings/ai-native");
|
|
8
|
+
const common_1 = require("../../common");
|
|
8
9
|
const base_language_model_1 = require("../base-language-model");
|
|
9
10
|
exports.DeepSeekModelIdentifier = Symbol('DeepSeekModelIdentifier');
|
|
10
11
|
let DeepSeekModel = class DeepSeekModel extends base_language_model_1.BaseLanguageModel {
|
|
@@ -15,8 +16,11 @@ let DeepSeekModel = class DeepSeekModel extends base_language_model_1.BaseLangua
|
|
|
15
16
|
}
|
|
16
17
|
return (0, deepseek_1.createDeepSeek)({ apiKey });
|
|
17
18
|
}
|
|
18
|
-
getModelIdentifier(provider) {
|
|
19
|
-
return provider(
|
|
19
|
+
getModelIdentifier(provider, modelId = 'deepseek-chat') {
|
|
20
|
+
return provider(modelId);
|
|
21
|
+
}
|
|
22
|
+
getModelInfo(modelId) {
|
|
23
|
+
return common_1.deepSeekModels[modelId];
|
|
20
24
|
}
|
|
21
25
|
};
|
|
22
26
|
exports.DeepSeekModel = DeepSeekModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepseek-language-model.js","sourceRoot":"","sources":["../../../src/node/deepseek/deepseek-language-model.ts"],"names":[],"mappings":";;;;AAAA,+CAAoE;AAEpE,qCAA0C;AAE1C,gFAA6F;AAE7F,gEAA2D;AAE9C,QAAA,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAGlE,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,uCAAiB;IACxC,kBAAkB,CAAC,OAA6B;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,mDAAmD,qCAAyB,CAAC,cAAc,GAAG,CAAC,CAAC;QAClH,CAAC;QAED,OAAO,IAAA,yBAAc,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IAES,kBAAkB,CAAC,QAA0B;
|
|
1
|
+
{"version":3,"file":"deepseek-language-model.js","sourceRoot":"","sources":["../../../src/node/deepseek/deepseek-language-model.ts"],"names":[],"mappings":";;;;AAAA,+CAAoE;AAEpE,qCAA0C;AAE1C,gFAA6F;AAE7F,yCAAyD;AACzD,gEAA2D;AAE9C,QAAA,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAGlE,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,uCAAiB;IACxC,kBAAkB,CAAC,OAA6B;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,mDAAmD,qCAAyB,CAAC,cAAc,GAAG,CAAC,CAAC;QAClH,CAAC;QAED,OAAO,IAAA,yBAAc,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IAES,kBAAkB,CAAC,QAA0B,EAAE,OAAO,GAAG,eAAe;QAChF,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAES,YAAY,CAAC,OAAe;QACpC,OAAO,uBAAc,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;CACF,CAAA;AAjBY,sCAAa;wBAAb,aAAa;IADzB,IAAA,eAAU,GAAE;GACA,aAAa,CAiBzB"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { OpenAIProvider } from '@ai-sdk/openai';
|
|
2
2
|
import { LanguageModelV1 } from 'ai';
|
|
3
3
|
import { IAIBackServiceOption } from '@opensumi/ide-core-common';
|
|
4
|
+
import { ModelInfo } from '../../common/model';
|
|
4
5
|
import { BaseLanguageModel } from '../base-language-model';
|
|
5
|
-
export declare const DeepSeekModelIdentifier: unique symbol;
|
|
6
6
|
export declare class OpenAIModel extends BaseLanguageModel {
|
|
7
|
-
protected initializeProvider(options: IAIBackServiceOption):
|
|
8
|
-
protected getModelIdentifier(provider:
|
|
7
|
+
protected initializeProvider(options: IAIBackServiceOption): OpenAIProvider;
|
|
8
|
+
protected getModelIdentifier(provider: OpenAIProvider, modelId: string): LanguageModelV1;
|
|
9
|
+
protected getModelInfo(modelId: string): ModelInfo | undefined;
|
|
9
10
|
}
|
|
10
11
|
//# 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;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAGrC,OAAO,EAA6B,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAE5F,OAAO,EAAE,SAAS,EAAsB,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,qBACa,WAAY,SAAQ,iBAAiB;IAChD,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,cAAc;IAU3E,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GACxC,eAAe;IAG7C,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;CAG/D"}
|
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OpenAIModel =
|
|
3
|
+
exports.OpenAIModel = 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
|
+
const model_1 = require("../../common/model");
|
|
8
9
|
const base_language_model_1 = require("../base-language-model");
|
|
9
|
-
exports.DeepSeekModelIdentifier = Symbol('DeepSeekModelIdentifier');
|
|
10
10
|
let OpenAIModel = class OpenAIModel extends base_language_model_1.BaseLanguageModel {
|
|
11
11
|
initializeProvider(options) {
|
|
12
12
|
const apiKey = options.apiKey;
|
|
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
|
-
baseURL: options.baseURL || 'https://dashscope.aliyuncs.com/compatible-mode/v1',
|
|
19
|
-
name: 'openai',
|
|
20
18
|
});
|
|
21
19
|
}
|
|
22
20
|
getModelIdentifier(provider, modelId) {
|
|
23
|
-
return provider(modelId
|
|
21
|
+
return provider(modelId);
|
|
22
|
+
}
|
|
23
|
+
getModelInfo(modelId) {
|
|
24
|
+
return model_1.openAiNativeModels[modelId];
|
|
24
25
|
}
|
|
25
26
|
};
|
|
26
27
|
exports.OpenAIModel = OpenAIModel;
|
|
@@ -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;AAG9D,qCAA0C;AAC1C,+DAA4F;AAE5F,8CAAmE;AACnE,gEAA2D;AAGpD,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;SACP,CAAC,CAAC;IACL,CAAC;IAES,kBAAkB,CAAC,QAAwB,EAAE,OAAe;QACpE,OAAO,QAAQ,CAAC,OAAO,CAAoB,CAAC;IAC9C,CAAC;IAES,YAAY,CAAC,OAAe;QACpC,OAAO,0BAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;CACF,CAAA;AAlBY,kCAAW;sBAAX,WAAW;IADvB,IAAA,eAAU,GAAE;GACA,WAAW,CAkBvB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { OpenAICompatibleProvider } from '@ai-sdk/openai-compatible';
|
|
2
|
+
import { LanguageModelV1 } from 'ai';
|
|
3
|
+
import { IAIBackServiceOption } from '@opensumi/ide-core-common';
|
|
4
|
+
import { BaseLanguageModel } from '../base-language-model';
|
|
5
|
+
export declare class OpenAICompatibleModel extends BaseLanguageModel {
|
|
6
|
+
protected initializeProvider(options: IAIBackServiceOption): OpenAICompatibleProvider;
|
|
7
|
+
protected getModelIdentifier(provider: OpenAICompatibleProvider, modelId?: string): LanguageModelV1;
|
|
8
|
+
protected getModelInfo(): undefined;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=openai-compatible-language-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-compatible-language-model.d.ts","sourceRoot":"","sources":["../../../src/node/openai-compatible/openai-compatible-language-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAA0B,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAGrC,OAAO,EAA6B,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAE5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,qBACa,qBAAsB,SAAQ,iBAAiB;IAC1D,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,wBAAwB;IAYrF,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,OAAO,SAAa,GAAG,eAAe;IAIvG,SAAS,CAAC,YAAY;CAGvB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenAICompatibleModel = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const openai_compatible_1 = require("@ai-sdk/openai-compatible");
|
|
6
|
+
const di_1 = require("@opensumi/di");
|
|
7
|
+
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
8
|
+
const base_language_model_1 = require("../base-language-model");
|
|
9
|
+
let OpenAICompatibleModel = class OpenAICompatibleModel extends base_language_model_1.BaseLanguageModel {
|
|
10
|
+
initializeProvider(options) {
|
|
11
|
+
const apiKey = options.apiKey;
|
|
12
|
+
if (!apiKey) {
|
|
13
|
+
throw new Error(`Please provide OpenAI API Key in preferences (${ide_core_common_1.AINativeSettingSectionsId.OpenaiApiKey})`);
|
|
14
|
+
}
|
|
15
|
+
return (0, openai_compatible_1.createOpenAICompatible)({
|
|
16
|
+
apiKey,
|
|
17
|
+
baseURL: options.baseURL || 'https://dashscope.aliyuncs.com/compatible-mode/v1',
|
|
18
|
+
name: 'openai',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
getModelIdentifier(provider, modelId = 'qwen-max') {
|
|
22
|
+
return provider(modelId);
|
|
23
|
+
}
|
|
24
|
+
getModelInfo() {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.OpenAICompatibleModel = OpenAICompatibleModel;
|
|
29
|
+
exports.OpenAICompatibleModel = OpenAICompatibleModel = tslib_1.__decorate([
|
|
30
|
+
(0, di_1.Injectable)()
|
|
31
|
+
], OpenAICompatibleModel);
|
|
32
|
+
//# sourceMappingURL=openai-compatible-language-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-compatible-language-model.js","sourceRoot":"","sources":["../../../src/node/openai-compatible/openai-compatible-language-model.ts"],"names":[],"mappings":";;;;AAAA,iEAA6F;AAG7F,qCAA0C;AAC1C,+DAA4F;AAE5F,gEAA2D;AAGpD,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,uCAAiB;IAChD,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,0CAAsB,EAAC;YAC5B,MAAM;YACN,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,mDAAmD;YAC/E,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IAES,kBAAkB,CAAC,QAAkC,EAAE,OAAO,GAAG,UAAU;QACnF,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAES,YAAY;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAA;AApBY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,eAAU,GAAE;GACA,qBAAqB,CAoBjC"}
|
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-1741080291.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"lib",
|
|
6
6
|
"src"
|
|
@@ -21,28 +21,29 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@ai-sdk/anthropic": "^1.1.9",
|
|
23
23
|
"@ai-sdk/deepseek": "^0.1.11",
|
|
24
|
+
"@ai-sdk/openai": "^1.1.9",
|
|
24
25
|
"@ai-sdk/openai-compatible": "^0.1.11",
|
|
25
26
|
"@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-
|
|
27
|
+
"@opensumi/ide-addons": "3.8.1-next-1741080291.0",
|
|
28
|
+
"@opensumi/ide-components": "3.8.1-next-1741080291.0",
|
|
29
|
+
"@opensumi/ide-connection": "3.8.1-next-1741080291.0",
|
|
30
|
+
"@opensumi/ide-core-common": "3.8.1-next-1741080291.0",
|
|
31
|
+
"@opensumi/ide-core-node": "3.8.1-next-1741080291.0",
|
|
32
|
+
"@opensumi/ide-debug": "3.8.1-next-1741080291.0",
|
|
33
|
+
"@opensumi/ide-design": "3.8.1-next-1741080291.0",
|
|
34
|
+
"@opensumi/ide-editor": "3.8.1-next-1741080291.0",
|
|
35
|
+
"@opensumi/ide-file-search": "3.8.1-next-1741080291.0",
|
|
36
|
+
"@opensumi/ide-file-service": "3.8.1-next-1741080291.0",
|
|
37
|
+
"@opensumi/ide-main-layout": "3.8.1-next-1741080291.0",
|
|
38
|
+
"@opensumi/ide-markers": "3.8.1-next-1741080291.0",
|
|
39
|
+
"@opensumi/ide-monaco": "3.8.1-next-1741080291.0",
|
|
40
|
+
"@opensumi/ide-overlay": "3.8.1-next-1741080291.0",
|
|
41
|
+
"@opensumi/ide-preferences": "3.8.1-next-1741080291.0",
|
|
42
|
+
"@opensumi/ide-search": "3.8.1-next-1741080291.0",
|
|
43
|
+
"@opensumi/ide-terminal-next": "3.8.1-next-1741080291.0",
|
|
44
|
+
"@opensumi/ide-theme": "3.8.1-next-1741080291.0",
|
|
45
|
+
"@opensumi/ide-utils": "3.8.1-next-1741080291.0",
|
|
46
|
+
"@opensumi/ide-workspace": "3.8.1-next-1741080291.0",
|
|
46
47
|
"@xterm/xterm": "5.5.0",
|
|
47
48
|
"ai": "^4.1.45",
|
|
48
49
|
"ansi-regex": "^2.0.0",
|
|
@@ -57,7 +58,7 @@
|
|
|
57
58
|
"zod-to-json-schema": "^3.24.1"
|
|
58
59
|
},
|
|
59
60
|
"devDependencies": {
|
|
60
|
-
"@opensumi/ide-core-browser": "3.8.1-next-
|
|
61
|
+
"@opensumi/ide-core-browser": "3.8.1-next-1741080291.0"
|
|
61
62
|
},
|
|
62
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "55ec31e1951ff2b2b124f34d48aaa0b223ae457c"
|
|
63
64
|
}
|
|
@@ -14,10 +14,12 @@ import {
|
|
|
14
14
|
Domain,
|
|
15
15
|
IAIInlineChatService,
|
|
16
16
|
IEditorExtensionContribution,
|
|
17
|
+
IPreferenceSettingsService,
|
|
17
18
|
KeybindingContribution,
|
|
18
19
|
KeybindingRegistry,
|
|
19
20
|
KeybindingScope,
|
|
20
21
|
MonacoContribution,
|
|
22
|
+
PreferenceSchemaProvider,
|
|
21
23
|
PreferenceService,
|
|
22
24
|
SlotLocation,
|
|
23
25
|
SlotRendererContribution,
|
|
@@ -82,6 +84,9 @@ import {
|
|
|
82
84
|
IChatManagerService,
|
|
83
85
|
ISumiMCPServerBackend,
|
|
84
86
|
SumiMCPServerProxyServicePath,
|
|
87
|
+
anthropicModels,
|
|
88
|
+
deepSeekModels,
|
|
89
|
+
openAiNativeModels,
|
|
85
90
|
} from '../common';
|
|
86
91
|
import { MCPServerDescription } from '../common/mcp-server-manager';
|
|
87
92
|
|
|
@@ -209,6 +214,12 @@ export class AINativeBrowserContribution
|
|
|
209
214
|
@Autowired(CommandService)
|
|
210
215
|
private readonly commandService: CommandService;
|
|
211
216
|
|
|
217
|
+
@Autowired(PreferenceSchemaProvider)
|
|
218
|
+
private preferenceSchemaProvider: PreferenceSchemaProvider;
|
|
219
|
+
|
|
220
|
+
@Autowired(IPreferenceSettingsService)
|
|
221
|
+
private preferenceSettings: IPreferenceSettingsService;
|
|
222
|
+
|
|
212
223
|
@Autowired(PreferenceService)
|
|
213
224
|
private readonly preferenceService: PreferenceService;
|
|
214
225
|
|
|
@@ -319,6 +330,13 @@ export class AINativeBrowserContribution
|
|
|
319
330
|
}
|
|
320
331
|
}
|
|
321
332
|
|
|
333
|
+
onReconnect(): void {
|
|
334
|
+
const { supportsMCP } = this.aiNativeConfigService.capabilities;
|
|
335
|
+
if (supportsMCP) {
|
|
336
|
+
this.initMCPServers();
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
322
340
|
onDidStart() {
|
|
323
341
|
runWhenIdle(() => {
|
|
324
342
|
const { supportsRenameSuggestions, supportsInlineChat, supportsMCP } = this.aiNativeConfigService.capabilities;
|
|
@@ -339,26 +357,68 @@ export class AINativeBrowserContribution
|
|
|
339
357
|
}
|
|
340
358
|
|
|
341
359
|
if (supportsMCP) {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
360
|
+
this.initMCPServers();
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
}
|
|
346
364
|
|
|
347
|
-
|
|
348
|
-
|
|
365
|
+
private initMCPServers() {
|
|
366
|
+
// 从 preferences 获取并初始化外部 MCP Servers
|
|
367
|
+
const mcpServers = this.preferenceService.getValid<MCPServerDescription[]>(AINativeSettingSectionsId.MCPServers);
|
|
349
368
|
|
|
350
|
-
|
|
351
|
-
|
|
369
|
+
// 查找内置 MCP Server 的配置
|
|
370
|
+
const builtinServer = mcpServers?.find((server) => server.name === BUILTIN_MCP_SERVER_NAME);
|
|
352
371
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
372
|
+
// 总是初始化内置服务器,根据配置决定是否启用
|
|
373
|
+
this.sumiMCPServerBackendProxy.initBuiltinMCPServer(builtinServer?.enabled ?? true);
|
|
374
|
+
|
|
375
|
+
// 初始化其他外部 MCP Servers
|
|
376
|
+
if (mcpServers && mcpServers.length > 0) {
|
|
377
|
+
const externalServers = mcpServers.filter((server) => server.name !== BUILTIN_MCP_SERVER_NAME);
|
|
378
|
+
if (externalServers.length > 0) {
|
|
379
|
+
this.sumiMCPServerBackendProxy.initExternalMCPServers(externalServers);
|
|
360
380
|
}
|
|
361
|
-
|
|
381
|
+
|
|
382
|
+
if (this.aiNativeConfigService.capabilities.supportsCustomLLMSettings) {
|
|
383
|
+
this.preferenceService.onSpecificPreferenceChange(AINativeSettingSectionsId.LLMModelSelection, (change) => {
|
|
384
|
+
const model = this.getModelByName(change.newValue);
|
|
385
|
+
const modelIds = model ? Object.keys(model) : [];
|
|
386
|
+
const defaultModelId = modelIds.length ? modelIds[0] : '';
|
|
387
|
+
const currentSchemas = this.preferenceSchemaProvider.getPreferenceProperty(AINativeSettingSectionsId.ModelID);
|
|
388
|
+
this.preferenceSchemaProvider.setSchema(
|
|
389
|
+
{
|
|
390
|
+
properties: {
|
|
391
|
+
[AINativeSettingSectionsId.ModelID]: {
|
|
392
|
+
...currentSchemas,
|
|
393
|
+
default: defaultModelId,
|
|
394
|
+
defaultValue: defaultModelId,
|
|
395
|
+
enum: modelIds.length ? modelIds : undefined,
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
|
+
true,
|
|
400
|
+
);
|
|
401
|
+
this.preferenceService.set(AINativeSettingSectionsId.ModelID, defaultModelId, change.scope);
|
|
402
|
+
this.preferenceSettings.setEnumLabels(
|
|
403
|
+
AINativeSettingSectionsId.ModelID,
|
|
404
|
+
modelIds.reduce((obj, item) => ({ ...obj, [item]: item }), {}),
|
|
405
|
+
);
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
private getModelByName(modelName: string) {
|
|
412
|
+
switch (modelName) {
|
|
413
|
+
case 'deepseek':
|
|
414
|
+
return deepSeekModels;
|
|
415
|
+
case 'anthropic':
|
|
416
|
+
return anthropicModels;
|
|
417
|
+
case 'openai':
|
|
418
|
+
return openAiNativeModels;
|
|
419
|
+
default:
|
|
420
|
+
return undefined;
|
|
421
|
+
}
|
|
362
422
|
}
|
|
363
423
|
|
|
364
424
|
private registerFeature() {
|
|
@@ -465,6 +525,10 @@ export class AINativeBrowserContribution
|
|
|
465
525
|
id: AINativeSettingSectionsId.LLMModelSelection,
|
|
466
526
|
localized: 'preference.ai.native.llm.model.selection',
|
|
467
527
|
},
|
|
528
|
+
{
|
|
529
|
+
id: AINativeSettingSectionsId.ModelID,
|
|
530
|
+
localized: 'preference.ai.native.llm.model.id',
|
|
531
|
+
},
|
|
468
532
|
{
|
|
469
533
|
id: AINativeSettingSectionsId.DeepseekApiKey,
|
|
470
534
|
localized: 'preference.ai.native.deepseek.apiKey',
|
|
@@ -540,7 +604,7 @@ export class AINativeBrowserContribution
|
|
|
540
604
|
id: INLINE_DIFF_MANAGER_WIDGET_ID,
|
|
541
605
|
component: InlineDiffManager,
|
|
542
606
|
displaysOnResource: (resource) => {
|
|
543
|
-
if (this.
|
|
607
|
+
if (this.applyService.getUriPendingCodeBlock(resource.uri)) {
|
|
544
608
|
return true;
|
|
545
609
|
}
|
|
546
610
|
return false;
|
|
@@ -115,15 +115,19 @@ export class ChatProxyService extends Disposable {
|
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
const model = this.preferenceService.get<string>(AINativeSettingSectionsId.LLMModelSelection);
|
|
118
|
+
const modelId = this.preferenceService.get<string>(AINativeSettingSectionsId.ModelID);
|
|
118
119
|
let apiKey: string = '';
|
|
119
120
|
let baseURL: string = '';
|
|
120
121
|
if (model === 'deepseek') {
|
|
121
122
|
apiKey = this.preferenceService.get<string>(AINativeSettingSectionsId.DeepseekApiKey, '');
|
|
122
123
|
} else if (model === 'openai') {
|
|
123
124
|
apiKey = this.preferenceService.get<string>(AINativeSettingSectionsId.OpenaiApiKey, '');
|
|
124
|
-
|
|
125
|
-
} else {
|
|
125
|
+
} else if (model === 'anthropic') {
|
|
126
126
|
apiKey = this.preferenceService.get<string>(AINativeSettingSectionsId.AnthropicApiKey, '');
|
|
127
|
+
} else {
|
|
128
|
+
// openai-compatible 为兜底
|
|
129
|
+
apiKey = this.preferenceService.get<string>(AINativeSettingSectionsId.OpenaiApiKey, '');
|
|
130
|
+
baseURL = this.preferenceService.get<string>(AINativeSettingSectionsId.OpenaiBaseURL, '');
|
|
127
131
|
}
|
|
128
132
|
const MAX_INPUT_TOKENS = 30720;
|
|
129
133
|
const stream = await this.aiBackService.requestStream(
|
|
@@ -135,6 +139,7 @@ export class ChatProxyService extends Disposable {
|
|
|
135
139
|
clientId: this.applicationService.clientId,
|
|
136
140
|
apiKey,
|
|
137
141
|
model,
|
|
142
|
+
modelId,
|
|
138
143
|
baseURL,
|
|
139
144
|
},
|
|
140
145
|
token,
|
|
@@ -3,6 +3,7 @@ import React, { memo, useCallback, useMemo, useState } from 'react';
|
|
|
3
3
|
import { useInjectable } from '@opensumi/ide-core-browser';
|
|
4
4
|
import { Button, Icon } from '@opensumi/ide-core-browser/lib/components';
|
|
5
5
|
import { localize } from '@opensumi/ide-core-common';
|
|
6
|
+
import { stripAnsi } from '@opensumi/ide-utils/lib/ansi';
|
|
6
7
|
|
|
7
8
|
import { IMCPServerToolComponentProps } from '../../../types';
|
|
8
9
|
import { RunCommandHandler } from '../handlers/RunCommand';
|
|
@@ -58,13 +59,23 @@ export const TerminalToolComponent = memo((props: IMCPServerToolComponentProps)
|
|
|
58
59
|
<div className={styles.run_cmd_tool}>
|
|
59
60
|
{props.state === 'result' && (
|
|
60
61
|
<div>
|
|
62
|
+
{args && (
|
|
63
|
+
<>
|
|
64
|
+
<div className={styles.command_title}>
|
|
65
|
+
<Icon icon='terminal' />
|
|
66
|
+
<span>{localize('ai.native.mcp.terminal.command')}</span>
|
|
67
|
+
</div>
|
|
68
|
+
<p className={styles.command_content}>
|
|
69
|
+
<code>$ {args.command}</code>
|
|
70
|
+
</p>
|
|
71
|
+
</>
|
|
72
|
+
)}
|
|
61
73
|
<div className={styles.command_title}>
|
|
62
|
-
<Icon icon='terminal' />
|
|
63
74
|
<span>{localize('ai.native.mcp.terminal.output')}</span>
|
|
64
75
|
</div>
|
|
65
76
|
{output ? (
|
|
66
77
|
<div className={styles.command_content}>
|
|
67
|
-
<code>{output.text}</code>
|
|
78
|
+
<code>{stripAnsi(output.text)}</code>
|
|
68
79
|
</div>
|
|
69
80
|
) : (
|
|
70
81
|
''
|
|
@@ -69,9 +69,14 @@ export const aiNativePreferenceSchema: PreferenceSchema = {
|
|
|
69
69
|
[AINativeSettingSectionsId.LLMModelSelection]: {
|
|
70
70
|
type: 'string',
|
|
71
71
|
default: 'deepseek',
|
|
72
|
-
enum: ['deepseek', 'anthropic', 'openai'],
|
|
72
|
+
enum: ['deepseek', 'anthropic', 'openai', 'openai-compatible'],
|
|
73
73
|
description: localize('preference.ai.native.llm.model.selection.description'),
|
|
74
74
|
},
|
|
75
|
+
[AINativeSettingSectionsId.ModelID]: {
|
|
76
|
+
type: 'string',
|
|
77
|
+
default: 'deepseek-chat',
|
|
78
|
+
description: localize('preference.ai.native.llm.model.id'),
|
|
79
|
+
},
|
|
75
80
|
[AINativeSettingSectionsId.DeepseekApiKey]: {
|
|
76
81
|
type: 'string',
|
|
77
82
|
default: '',
|
package/src/common/index.ts
CHANGED
|
@@ -19,6 +19,8 @@ import { IPosition, ITextModel, InlineCompletionContext } from '@opensumi/ide-mo
|
|
|
19
19
|
import { MCPServerDescription } from './mcp-server-manager';
|
|
20
20
|
import { MCPTool } from './types';
|
|
21
21
|
|
|
22
|
+
export * from './model';
|
|
23
|
+
|
|
22
24
|
export const IAINativeService = Symbol('IAINativeService');
|
|
23
25
|
|
|
24
26
|
/**
|