@opensumi/ide-ai-native 3.8.1-next-1741080291.0 → 3.8.1-next-1741091353.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 (192) hide show
  1. package/lib/browser/ai-core.contribution.d.ts +0 -3
  2. package/lib/browser/ai-core.contribution.d.ts.map +1 -1
  3. package/lib/browser/ai-core.contribution.js +1 -45
  4. package/lib/browser/ai-core.contribution.js.map +1 -1
  5. package/lib/browser/chat/chat-agent.service.d.ts +8 -0
  6. package/lib/browser/chat/chat-agent.service.d.ts.map +1 -1
  7. package/lib/browser/chat/chat-agent.service.js +32 -5
  8. package/lib/browser/chat/chat-agent.service.js.map +1 -1
  9. package/lib/browser/chat/chat-manager.service.d.ts.map +1 -1
  10. package/lib/browser/chat/chat-manager.service.js +4 -0
  11. package/lib/browser/chat/chat-manager.service.js.map +1 -1
  12. package/lib/browser/chat/chat-model.d.ts.map +1 -1
  13. package/lib/browser/chat/chat-model.js +3 -2
  14. package/lib/browser/chat/chat-model.js.map +1 -1
  15. package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
  16. package/lib/browser/chat/chat-proxy.service.js +5 -9
  17. package/lib/browser/chat/chat-proxy.service.js.map +1 -1
  18. package/lib/browser/chat/chat.module.less +1 -2
  19. package/lib/browser/chat/chat.view.d.ts.map +1 -1
  20. package/lib/browser/chat/chat.view.js +13 -39
  21. package/lib/browser/chat/chat.view.js.map +1 -1
  22. package/lib/browser/components/ChatContext/index.js +2 -2
  23. package/lib/browser/components/ChatContext/index.js.map +1 -1
  24. package/lib/browser/components/ChatInput.d.ts.map +1 -1
  25. package/lib/browser/components/ChatInput.js +25 -1
  26. package/lib/browser/components/ChatInput.js.map +1 -1
  27. package/lib/browser/components/ChatToolRender.d.ts.map +1 -1
  28. package/lib/browser/components/ChatToolRender.js +2 -3
  29. package/lib/browser/components/ChatToolRender.js.map +1 -1
  30. package/lib/browser/components/chat-history.module.less +2 -1
  31. package/lib/browser/components/components.module.less +20 -0
  32. package/lib/browser/context/llm-context.service.d.ts +18 -5
  33. package/lib/browser/context/llm-context.service.d.ts.map +1 -1
  34. package/lib/browser/context/llm-context.service.js +80 -47
  35. package/lib/browser/context/llm-context.service.js.map +1 -1
  36. package/lib/browser/layout/layout.module.less +4 -4
  37. package/lib/browser/mcp/base-apply.service.d.ts +18 -7
  38. package/lib/browser/mcp/base-apply.service.d.ts.map +1 -1
  39. package/lib/browser/mcp/base-apply.service.js +185 -65
  40. package/lib/browser/mcp/base-apply.service.js.map +1 -1
  41. package/lib/browser/mcp/tools/components/EditFile.d.ts.map +1 -1
  42. package/lib/browser/mcp/tools/components/EditFile.js +15 -9
  43. package/lib/browser/mcp/tools/components/EditFile.js.map +1 -1
  44. package/lib/browser/mcp/tools/components/ExpandableFileList.d.ts +13 -0
  45. package/lib/browser/mcp/tools/components/ExpandableFileList.d.ts.map +1 -0
  46. package/lib/browser/mcp/tools/components/{SearchResult.js → ExpandableFileList.js} +29 -19
  47. package/lib/browser/mcp/tools/components/ExpandableFileList.js.map +1 -0
  48. package/lib/browser/mcp/tools/components/index.module.less +4 -0
  49. package/lib/browser/mcp/tools/createNewFileWithText.d.ts +1 -0
  50. package/lib/browser/mcp/tools/createNewFileWithText.d.ts.map +1 -1
  51. package/lib/browser/mcp/tools/createNewFileWithText.js +19 -11
  52. package/lib/browser/mcp/tools/createNewFileWithText.js.map +1 -1
  53. package/lib/browser/mcp/tools/fileSearch.d.ts +1 -0
  54. package/lib/browser/mcp/tools/fileSearch.d.ts.map +1 -1
  55. package/lib/browser/mcp/tools/fileSearch.js +14 -5
  56. package/lib/browser/mcp/tools/fileSearch.js.map +1 -1
  57. package/lib/browser/mcp/tools/getDiagnosticsByPath.d.ts.map +1 -1
  58. package/lib/browser/mcp/tools/getDiagnosticsByPath.js +1 -0
  59. package/lib/browser/mcp/tools/getDiagnosticsByPath.js.map +1 -1
  60. package/lib/browser/mcp/tools/grepSearch.d.ts.map +1 -1
  61. package/lib/browser/mcp/tools/grepSearch.js +6 -3
  62. package/lib/browser/mcp/tools/grepSearch.js.map +1 -1
  63. package/lib/browser/mcp/tools/handlers/EditFile.js +1 -1
  64. package/lib/browser/mcp/tools/handlers/EditFile.js.map +1 -1
  65. package/lib/browser/mcp/tools/handlers/ListDir.d.ts +1 -0
  66. package/lib/browser/mcp/tools/handlers/ListDir.d.ts.map +1 -1
  67. package/lib/browser/mcp/tools/handlers/ListDir.js +3 -0
  68. package/lib/browser/mcp/tools/handlers/ListDir.js.map +1 -1
  69. package/lib/browser/mcp/tools/handlers/RunCommand.d.ts.map +1 -1
  70. package/lib/browser/mcp/tools/handlers/RunCommand.js +2 -0
  71. package/lib/browser/mcp/tools/handlers/RunCommand.js.map +1 -1
  72. package/lib/browser/mcp/tools/listDir.d.ts +1 -0
  73. package/lib/browser/mcp/tools/listDir.d.ts.map +1 -1
  74. package/lib/browser/mcp/tools/listDir.js +35 -4
  75. package/lib/browser/mcp/tools/listDir.js.map +1 -1
  76. package/lib/browser/mcp/tools/runTerminalCmd.d.ts.map +1 -1
  77. package/lib/browser/mcp/tools/runTerminalCmd.js +1 -0
  78. package/lib/browser/mcp/tools/runTerminalCmd.js.map +1 -1
  79. package/lib/browser/model/msg-history-manager.d.ts +1 -0
  80. package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
  81. package/lib/browser/model/msg-history-manager.js +3 -0
  82. package/lib/browser/model/msg-history-manager.js.map +1 -1
  83. package/lib/browser/preferences/schema.d.ts.map +1 -1
  84. package/lib/browser/preferences/schema.js +1 -7
  85. package/lib/browser/preferences/schema.js.map +1 -1
  86. package/lib/browser/widget/inline-diff/inline-diff-manager.d.ts.map +1 -1
  87. package/lib/browser/widget/inline-diff/inline-diff-manager.js +68 -8
  88. package/lib/browser/widget/inline-diff/inline-diff-manager.js.map +1 -1
  89. package/lib/browser/widget/inline-diff/inline-diff-previewer.d.ts +10 -4
  90. package/lib/browser/widget/inline-diff/inline-diff-previewer.d.ts.map +1 -1
  91. package/lib/browser/widget/inline-diff/inline-diff-previewer.js +14 -3
  92. package/lib/browser/widget/inline-diff/inline-diff-previewer.js.map +1 -1
  93. package/lib/browser/widget/inline-diff/inline-diff-widget.module.less +25 -4
  94. package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts +3 -3
  95. package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts.map +1 -1
  96. package/lib/browser/widget/inline-diff/inline-diff.controller.js +10 -5
  97. package/lib/browser/widget/inline-diff/inline-diff.controller.js.map +1 -1
  98. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts +46 -17
  99. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts.map +1 -1
  100. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js +110 -53
  101. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js.map +1 -1
  102. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.d.ts +4 -0
  103. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.d.ts.map +1 -1
  104. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js +26 -1
  105. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js.map +1 -1
  106. package/lib/common/index.d.ts +0 -1
  107. package/lib/common/index.d.ts.map +1 -1
  108. package/lib/common/index.js +0 -2
  109. package/lib/common/index.js.map +1 -1
  110. package/lib/common/llm-context.d.ts +13 -9
  111. package/lib/common/llm-context.d.ts.map +1 -1
  112. package/lib/common/llm-context.js.map +1 -1
  113. package/lib/common/prompts/context-prompt-provider.d.ts +4 -3
  114. package/lib/common/prompts/context-prompt-provider.d.ts.map +1 -1
  115. package/lib/common/prompts/context-prompt-provider.js +33 -22
  116. package/lib/common/prompts/context-prompt-provider.js.map +1 -1
  117. package/lib/common/types.d.ts +1 -0
  118. package/lib/common/types.d.ts.map +1 -1
  119. package/lib/node/anthropic/anthropic-language-model.d.ts +1 -3
  120. package/lib/node/anthropic/anthropic-language-model.d.ts.map +1 -1
  121. package/lib/node/anthropic/anthropic-language-model.js +2 -6
  122. package/lib/node/anthropic/anthropic-language-model.js.map +1 -1
  123. package/lib/node/base-language-model.d.ts +1 -4
  124. package/lib/node/base-language-model.d.ts.map +1 -1
  125. package/lib/node/base-language-model.js +6 -7
  126. package/lib/node/base-language-model.js.map +1 -1
  127. package/lib/node/deepseek/deepseek-language-model.d.ts +1 -3
  128. package/lib/node/deepseek/deepseek-language-model.d.ts.map +1 -1
  129. package/lib/node/deepseek/deepseek-language-model.js +2 -6
  130. package/lib/node/deepseek/deepseek-language-model.js.map +1 -1
  131. package/lib/node/openai/openai-language-model.d.ts +4 -5
  132. package/lib/node/openai/openai-language-model.d.ts.map +1 -1
  133. package/lib/node/openai/openai-language-model.js +7 -8
  134. package/lib/node/openai/openai-language-model.js.map +1 -1
  135. package/package.json +23 -24
  136. package/src/browser/ai-core.contribution.ts +1 -56
  137. package/src/browser/chat/chat-agent.service.ts +38 -7
  138. package/src/browser/chat/chat-manager.service.ts +6 -0
  139. package/src/browser/chat/chat-model.ts +11 -6
  140. package/src/browser/chat/chat-proxy.service.ts +6 -9
  141. package/src/browser/chat/chat.module.less +1 -2
  142. package/src/browser/chat/chat.view.tsx +14 -72
  143. package/src/browser/components/ChatContext/index.tsx +2 -2
  144. package/src/browser/components/ChatInput.tsx +67 -3
  145. package/src/browser/components/ChatToolRender.tsx +1 -2
  146. package/src/browser/components/chat-history.module.less +2 -1
  147. package/src/browser/components/components.module.less +20 -0
  148. package/src/browser/context/llm-context.service.ts +93 -54
  149. package/src/browser/layout/layout.module.less +4 -4
  150. package/src/browser/mcp/base-apply.service.ts +222 -67
  151. package/src/browser/mcp/tools/components/EditFile.tsx +16 -9
  152. package/src/browser/mcp/tools/components/ExpandableFileList.tsx +133 -0
  153. package/src/browser/mcp/tools/components/index.module.less +4 -0
  154. package/src/browser/mcp/tools/createNewFileWithText.ts +21 -12
  155. package/src/browser/mcp/tools/fileSearch.ts +14 -4
  156. package/src/browser/mcp/tools/getDiagnosticsByPath.ts +1 -0
  157. package/src/browser/mcp/tools/grepSearch.ts +6 -3
  158. package/src/browser/mcp/tools/handlers/EditFile.ts +1 -1
  159. package/src/browser/mcp/tools/handlers/ListDir.ts +4 -0
  160. package/src/browser/mcp/tools/handlers/RunCommand.ts +2 -0
  161. package/src/browser/mcp/tools/listDir.ts +36 -5
  162. package/src/browser/mcp/tools/runTerminalCmd.ts +1 -0
  163. package/src/browser/model/msg-history-manager.ts +4 -0
  164. package/src/browser/preferences/schema.ts +1 -7
  165. package/src/browser/widget/inline-diff/inline-diff-manager.tsx +143 -21
  166. package/src/browser/widget/inline-diff/inline-diff-previewer.ts +25 -7
  167. package/src/browser/widget/inline-diff/inline-diff-widget.module.less +25 -4
  168. package/src/browser/widget/inline-diff/inline-diff.controller.ts +16 -8
  169. package/src/browser/widget/inline-stream-diff/inline-stream-diff.handler.tsx +139 -68
  170. package/src/browser/widget/inline-stream-diff/live-preview.decoration.tsx +30 -1
  171. package/src/common/index.ts +0 -2
  172. package/src/common/llm-context.ts +10 -4
  173. package/src/common/prompts/context-prompt-provider.ts +38 -29
  174. package/src/common/types.ts +1 -0
  175. package/src/node/anthropic/anthropic-language-model.ts +2 -7
  176. package/src/node/base-language-model.ts +12 -10
  177. package/src/node/deepseek/deepseek-language-model.ts +2 -7
  178. package/src/node/openai/openai-language-model.ts +9 -10
  179. package/lib/browser/mcp/tools/components/SearchResult.d.ts +0 -11
  180. package/lib/browser/mcp/tools/components/SearchResult.d.ts.map +0 -1
  181. package/lib/browser/mcp/tools/components/SearchResult.js.map +0 -1
  182. package/lib/common/model.d.ts +0 -12
  183. package/lib/common/model.d.ts.map +0 -1
  184. package/lib/common/model.js +0 -83
  185. package/lib/common/model.js.map +0 -1
  186. package/lib/node/openai-compatible/openai-compatible-language-model.d.ts +0 -10
  187. package/lib/node/openai-compatible/openai-compatible-language-model.d.ts.map +0 -1
  188. package/lib/node/openai-compatible/openai-compatible-language-model.js +0 -32
  189. package/lib/node/openai-compatible/openai-compatible-language-model.js.map +0 -1
  190. package/src/browser/mcp/tools/components/SearchResult.tsx +0 -92
  191. package/src/common/model.ts +0 -90
  192. package/src/node/openai-compatible/openai-compatible-language-model.ts +0 -30
@@ -1,5 +1,5 @@
1
- import { Injectable } from '@opensumi/di';
2
- import { MaybePromise } from '@opensumi/ide-core-common/lib/utils';
1
+ import { Autowired, Injectable } from '@opensumi/di';
2
+ import { WorkbenchEditorService } from '@opensumi/ide-editor/lib/common/editor';
3
3
 
4
4
  import { SerializedContext } from '../llm-context';
5
5
 
@@ -10,37 +10,46 @@ export interface ChatAgentPromptProvider {
10
10
  * 提供上下文提示
11
11
  * @param context 上下文
12
12
  */
13
- provideContextPrompt(context: SerializedContext, userMessage: string): MaybePromise<string>;
13
+ provideContextPrompt(context: SerializedContext, userMessage: string): string;
14
14
  }
15
15
 
16
16
  @Injectable()
17
17
  export class DefaultChatAgentPromptProvider implements ChatAgentPromptProvider {
18
- provideContextPrompt(context: SerializedContext, userMessage: string): MaybePromise<string> {
18
+ @Autowired(WorkbenchEditorService)
19
+ protected readonly workbenchEditorService: WorkbenchEditorService;
20
+
21
+ provideContextPrompt(context: SerializedContext, userMessage: string): string {
22
+ const editor = this.workbenchEditorService.currentEditor;
23
+ const currentModel = editor?.currentDocumentModel;
19
24
  return `
20
- <additional_data>
21
- Below are some potentially helpful/relevant pieces of information for figuring out to respond
22
- <recently_viewed_files>
23
- ${context.recentlyViewFiles.map((file, idx) => `${idx + 1} : ${file}`)}
24
- </recently_viewed_files>
25
- <attached_files>
26
- ${context.attachedFiles.map(
27
- (file) =>
28
- `
29
- <file_contents>
30
- \`\`\`${file.language} ${file.path}
31
- ${file.content}
32
- \`\`\`
33
- </file_contents>
34
- <linter_errors>
35
- ${file.lineErrors.join('\n')}
36
- </linter_errors>
37
- `,
38
- )}
39
-
40
- </attached_files>
41
- </additional_data>
42
- <user_query>
43
- ${userMessage}
44
- </user_query>`;
25
+ <additional_data>
26
+ Below are some potentially helpful/relevant pieces of information for figuring out to respond
27
+ <recently_viewed_files>
28
+ ${context.recentlyViewFiles.map((file, idx) => ` ${idx + 1}: ${file}`).join('\n')}
29
+ </recently_viewed_files>
30
+ <attached_files>
31
+ ${context.attachedFiles.map(
32
+ (file) =>
33
+ `
34
+ <file_contents>
35
+ \`\`\`${file.path}
36
+ ${file.content}
37
+ \`\`\`
38
+ </file_contents>
39
+ <linter_errors>
40
+ ${file.lineErrors.join('\n')}
41
+ </linter_errors>
42
+ `,
43
+ )}
44
+ </attached_files>
45
+ ${currentModel ? `<current_opened_file>
46
+ \`\`\`${currentModel.languageId} ${currentModel.uri.toString()}
47
+ ${currentModel.getText()}
48
+ \`\`\`
49
+ </current_opened_file>` : ''}
50
+ </additional_data>
51
+ <user_query>
52
+ ${userMessage}
53
+ </user_query>`;
45
54
  }
46
55
  }
@@ -52,6 +52,7 @@ export interface MCPTool {
52
52
  export interface CodeBlockData {
53
53
  toolCallId: string;
54
54
  codeEdit: string;
55
+ originalCode: string;
55
56
  updatedCode?: string;
56
57
  relativePath: string;
57
58
  status: CodeBlockStatus;
@@ -4,7 +4,6 @@ import { Injectable } from '@opensumi/di';
4
4
  import { IAIBackServiceOption } from '@opensumi/ide-core-common';
5
5
  import { AINativeSettingSectionsId } from '@opensumi/ide-core-common/lib/settings/ai-native';
6
6
 
7
- import { ModelInfo, anthropicModels } from '../../common/model';
8
7
  import { BaseLanguageModel } from '../base-language-model';
9
8
 
10
9
  export const AnthropicModelIdentifier = Symbol('AnthropicModelIdentifier');
@@ -20,11 +19,7 @@ export class AnthropicModel extends BaseLanguageModel {
20
19
  return createAnthropic({ apiKey });
21
20
  }
22
21
 
23
- protected getModelIdentifier(provider: AnthropicProvider, modelId = 'claude-3-5-sonnet-20241022') {
24
- return provider(modelId);
25
- }
26
-
27
- protected getModelInfo(modelId: string): ModelInfo | undefined {
28
- return anthropicModels[modelId];
22
+ protected getModelIdentifier(provider: AnthropicProvider) {
23
+ return provider('claude-3-5-sonnet-20241022');
29
24
  }
30
25
  }
@@ -5,7 +5,6 @@ import { ChatMessageRole, IAIBackServiceOption, IChatMessage } from '@opensumi/i
5
5
  import { ChatReadableStream } from '@opensumi/ide-core-node';
6
6
  import { CancellationToken } from '@opensumi/ide-utils';
7
7
 
8
- import { ModelInfo } from '../common';
9
8
  import {
10
9
  IToolInvocationRegistryManager,
11
10
  ToolInvocationRegistryManager,
@@ -14,8 +13,6 @@ import {
14
13
 
15
14
  @Injectable()
16
15
  export abstract class BaseLanguageModel {
17
- static ModelOptions: Record<string, ModelInfo>;
18
-
19
16
  @Autowired(ToolInvocationRegistryManager)
20
17
  protected readonly toolInvocationRegistryManager: IToolInvocationRegistryManager;
21
18
 
@@ -59,8 +56,12 @@ export abstract class BaseLanguageModel {
59
56
  chatReadableStream,
60
57
  options.history || [],
61
58
  options.modelId,
59
+ options.temperature,
60
+ options.topP,
61
+ options.topK,
62
62
  options.providerOptions,
63
63
  options.trimTexts,
64
+ options.system,
64
65
  cancellationToken,
65
66
  );
66
67
  }
@@ -77,8 +78,6 @@ export abstract class BaseLanguageModel {
77
78
 
78
79
  protected abstract getModelIdentifier(provider: any, modelId?: string): any;
79
80
 
80
- protected abstract getModelInfo(modelId: string): ModelInfo | undefined;
81
-
82
81
  protected async handleStreamingRequest(
83
82
  provider: any,
84
83
  request: string,
@@ -86,8 +85,12 @@ export abstract class BaseLanguageModel {
86
85
  chatReadableStream: ChatReadableStream,
87
86
  history: IChatMessage[] = [],
88
87
  modelId?: string,
88
+ temperature?: number,
89
+ topP?: number,
90
+ topK?: number,
89
91
  providerOptions?: Record<string, any>,
90
92
  trimTexts?: [string, string],
93
+ systemPrompt?: string,
91
94
  cancellationToken?: CancellationToken,
92
95
  ): Promise<any> {
93
96
  try {
@@ -107,18 +110,17 @@ export abstract class BaseLanguageModel {
107
110
  })),
108
111
  { role: 'user', content: request },
109
112
  ];
110
- const modelInfo = modelId ? this.getModelInfo(modelId) : undefined;
111
113
  const stream = streamText({
112
114
  model: this.getModelIdentifier(provider, modelId),
113
- maxTokens: 4096,
114
115
  tools: aiTools,
115
116
  messages,
116
117
  abortSignal: abortController.signal,
117
118
  experimental_toolCallStreaming: true,
118
119
  maxSteps: 12,
119
- temperature: modelInfo?.temperature || 0,
120
- topP: modelInfo?.topP || 0.8,
121
- topK: modelInfo?.topK || 1,
120
+ temperature,
121
+ topP: topP || 0.8,
122
+ topK: topK || 1,
123
+ system: systemPrompt,
122
124
  providerOptions,
123
125
  });
124
126
 
@@ -4,7 +4,6 @@ import { Injectable } from '@opensumi/di';
4
4
  import { IAIBackServiceOption } from '@opensumi/ide-core-common';
5
5
  import { AINativeSettingSectionsId } from '@opensumi/ide-core-common/lib/settings/ai-native';
6
6
 
7
- import { ModelInfo, deepSeekModels } from '../../common';
8
7
  import { BaseLanguageModel } from '../base-language-model';
9
8
 
10
9
  export const DeepSeekModelIdentifier = Symbol('DeepSeekModelIdentifier');
@@ -20,11 +19,7 @@ export class DeepSeekModel extends BaseLanguageModel {
20
19
  return createDeepSeek({ apiKey });
21
20
  }
22
21
 
23
- protected getModelIdentifier(provider: DeepSeekProvider, modelId = 'deepseek-chat') {
24
- return provider(modelId);
25
- }
26
-
27
- protected getModelInfo(modelId: string): ModelInfo | undefined {
28
- return deepSeekModels[modelId];
22
+ protected getModelIdentifier(provider: DeepSeekProvider) {
23
+ return provider('deepseek-chat');
29
24
  }
30
25
  }
@@ -1,29 +1,28 @@
1
- import { OpenAIProvider, createOpenAI } from '@ai-sdk/openai';
1
+ import { OpenAICompatibleProvider, createOpenAICompatible } from '@ai-sdk/openai-compatible';
2
2
  import { LanguageModelV1 } from 'ai';
3
3
 
4
4
  import { Injectable } from '@opensumi/di';
5
5
  import { AINativeSettingSectionsId, IAIBackServiceOption } from '@opensumi/ide-core-common';
6
6
 
7
- import { ModelInfo, openAiNativeModels } from '../../common/model';
8
7
  import { BaseLanguageModel } from '../base-language-model';
9
8
 
9
+ export const DeepSeekModelIdentifier = Symbol('DeepSeekModelIdentifier');
10
+
10
11
  @Injectable()
11
12
  export class OpenAIModel extends BaseLanguageModel {
12
- protected initializeProvider(options: IAIBackServiceOption): OpenAIProvider {
13
+ protected initializeProvider(options: IAIBackServiceOption): OpenAICompatibleProvider {
13
14
  const apiKey = options.apiKey;
14
15
  if (!apiKey) {
15
16
  throw new Error(`Please provide OpenAI API Key in preferences (${AINativeSettingSectionsId.OpenaiApiKey})`);
16
17
  }
17
- return createOpenAI({
18
+ return createOpenAICompatible({
18
19
  apiKey,
20
+ baseURL: options.baseURL || 'https://dashscope.aliyuncs.com/compatible-mode/v1',
21
+ name: 'openai',
19
22
  });
20
23
  }
21
24
 
22
- protected getModelIdentifier(provider: OpenAIProvider, modelId: string) {
23
- return provider(modelId) as LanguageModelV1;
24
- }
25
-
26
- protected getModelInfo(modelId: string): ModelInfo | undefined {
27
- return openAiNativeModels[modelId];
25
+ protected getModelIdentifier(provider: OpenAICompatibleProvider, modelId?: string): LanguageModelV1 {
26
+ return provider(modelId || 'qwen-max');
28
27
  }
29
28
  }
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
- interface SearchResultProps {
3
- args: any;
4
- toolCallId: string;
5
- messageId: string;
6
- toolName: string;
7
- }
8
- export declare const FileSearchToolComponent: React.FC<SearchResultProps>;
9
- export declare const GrepSearchToolComponent: React.FC<SearchResultProps>;
10
- export {};
11
- //# sourceMappingURL=SearchResult.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchResult.d.ts","sourceRoot":"","sources":["../../../../../src/browser/mcp/tools/components/SearchResult.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAW5D,UAAU,iBAAiB;IACzB,IAAI,EAAE,GAAG,CAAC;IACV,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAE/D,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAE/D,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SearchResult.js","sourceRoot":"","sources":["../../../../../src/browser/mcp/tools/components/SearchResult.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- export interface ModelInfo {
2
- maxTokens?: number;
3
- contextWindow?: number;
4
- supportsImages?: boolean;
5
- temperature?: number;
6
- topP?: number;
7
- topK?: number;
8
- }
9
- export declare const deepSeekModels: Record<string, ModelInfo>;
10
- export declare const anthropicModels: Record<string, ModelInfo>;
11
- export declare const openAiNativeModels: Record<string, ModelInfo>;
12
- //# sourceMappingURL=model.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/common/model.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,cAAc,EAatB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE/B,eAAO,MAAM,eAAe,EA0BvB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE/B,eAAO,MAAM,kBAAkB,EAqC1B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC"}
@@ -1,83 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.openAiNativeModels = exports.anthropicModels = exports.deepSeekModels = void 0;
4
- exports.deepSeekModels = {
5
- 'deepseek-chat': {
6
- maxTokens: 8000,
7
- contextWindow: 64000,
8
- supportsImages: false,
9
- },
10
- 'deepseek-reasoner': {
11
- maxTokens: 8000,
12
- contextWindow: 64000,
13
- supportsImages: false,
14
- temperature: 0.7,
15
- topP: 0.95,
16
- },
17
- };
18
- exports.anthropicModels = {
19
- 'claude-3-7-sonnet-20250219': {
20
- maxTokens: 8192,
21
- contextWindow: 200000,
22
- supportsImages: true,
23
- },
24
- 'claude-3-5-sonnet-20241022': {
25
- maxTokens: 8192,
26
- contextWindow: 200000,
27
- supportsImages: true,
28
- },
29
- 'claude-3-5-haiku-20241022': {
30
- maxTokens: 8192,
31
- contextWindow: 200000,
32
- supportsImages: false,
33
- },
34
- 'claude-3-opus-20240229': {
35
- maxTokens: 4096,
36
- contextWindow: 200000,
37
- supportsImages: true,
38
- },
39
- 'claude-3-haiku-20240307': {
40
- maxTokens: 4096,
41
- contextWindow: 200000,
42
- supportsImages: true,
43
- },
44
- }; // as const assertion makes the object deeply readonly
45
- exports.openAiNativeModels = {
46
- 'o3-mini': {
47
- maxTokens: 100000,
48
- contextWindow: 200000,
49
- supportsImages: false,
50
- },
51
- // don't support tool use yet
52
- o1: {
53
- maxTokens: 100000,
54
- contextWindow: 200000,
55
- supportsImages: true,
56
- },
57
- 'o1-preview': {
58
- maxTokens: 32768,
59
- contextWindow: 128000,
60
- supportsImages: true,
61
- },
62
- 'o1-mini': {
63
- maxTokens: 65536,
64
- contextWindow: 128000,
65
- supportsImages: true,
66
- },
67
- 'gpt-4o': {
68
- maxTokens: 4096,
69
- contextWindow: 128000,
70
- supportsImages: true,
71
- },
72
- 'gpt-4o-mini': {
73
- maxTokens: 16384,
74
- contextWindow: 128000,
75
- supportsImages: true,
76
- },
77
- 'gpt-4.5-preview': {
78
- maxTokens: 16384,
79
- contextWindow: 128000,
80
- supportsImages: true,
81
- },
82
- };
83
- //# sourceMappingURL=model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/common/model.ts"],"names":[],"mappings":";;;AASa,QAAA,cAAc,GAAG;IAC5B,eAAe,EAAE;QACf,SAAS,EAAE,IAAK;QAChB,aAAa,EAAE,KAAM;QACrB,cAAc,EAAE,KAAK;KACtB;IACD,mBAAmB,EAAE;QACnB,SAAS,EAAE,IAAK;QAChB,aAAa,EAAE,KAAM;QACrB,cAAc,EAAE,KAAK;QACrB,WAAW,EAAE,GAAG;QAChB,IAAI,EAAE,IAAI;KACX;CAC2B,CAAC;AAElB,QAAA,eAAe,GAAG;IAC7B,4BAA4B,EAAE;QAC5B,SAAS,EAAE,IAAI;QACf,aAAa,EAAE,MAAO;QACtB,cAAc,EAAE,IAAI;KACrB;IACD,4BAA4B,EAAE;QAC5B,SAAS,EAAE,IAAI;QACf,aAAa,EAAE,MAAO;QACtB,cAAc,EAAE,IAAI;KACrB;IACD,2BAA2B,EAAE;QAC3B,SAAS,EAAE,IAAI;QACf,aAAa,EAAE,MAAO;QACtB,cAAc,EAAE,KAAK;KACtB;IACD,wBAAwB,EAAE;QACxB,SAAS,EAAE,IAAI;QACf,aAAa,EAAE,MAAO;QACtB,cAAc,EAAE,IAAI;KACrB;IACD,yBAAyB,EAAE;QACzB,SAAS,EAAE,IAAI;QACf,aAAa,EAAE,MAAO;QACtB,cAAc,EAAE,IAAI;KACrB;CAC2B,CAAC,CAAC,sDAAsD;AAEzE,QAAA,kBAAkB,GAAG;IAChC,SAAS,EAAE;QACT,SAAS,EAAE,MAAO;QAClB,aAAa,EAAE,MAAO;QACtB,cAAc,EAAE,KAAK;KACtB;IACD,6BAA6B;IAC7B,EAAE,EAAE;QACF,SAAS,EAAE,MAAO;QAClB,aAAa,EAAE,MAAO;QACtB,cAAc,EAAE,IAAI;KACrB;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,KAAM;QACjB,aAAa,EAAE,MAAO;QACtB,cAAc,EAAE,IAAI;KACrB;IACD,SAAS,EAAE;QACT,SAAS,EAAE,KAAM;QACjB,aAAa,EAAE,MAAO;QACtB,cAAc,EAAE,IAAI;KACrB;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,IAAK;QAChB,aAAa,EAAE,MAAO;QACtB,cAAc,EAAE,IAAI;KACrB;IACD,aAAa,EAAE;QACb,SAAS,EAAE,KAAM;QACjB,aAAa,EAAE,MAAO;QACtB,cAAc,EAAE,IAAI;KACrB;IACD,iBAAiB,EAAE;QACjB,SAAS,EAAE,KAAM;QACjB,aAAa,EAAE,MAAO;QACtB,cAAc,EAAE,IAAI;KACrB;CAC2B,CAAC"}
@@ -1,10 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,32 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,92 +0,0 @@
1
- import React, { useEffect, useMemo, useState } from 'react';
2
-
3
- import { LabelService, URI, path, useInjectable } from '@opensumi/ide-core-browser';
4
- import { WorkbenchEditorService } from '@opensumi/ide-editor';
5
- import { IWorkspaceService } from '@opensumi/ide-workspace';
6
-
7
- import { IChatInternalService } from '../../../../common';
8
- import { ChatInternalService } from '../../../chat/chat.internal.service';
9
-
10
- import styles from './index.module.less';
11
-
12
- interface SearchResultProps {
13
- args: any;
14
- toolCallId: string;
15
- messageId: string;
16
- toolName: string;
17
- }
18
-
19
- export const FileSearchToolComponent: React.FC<SearchResultProps> = ({ args, toolCallId, messageId }) => (
20
- <SearchResult args={args} toolCallId={toolCallId} messageId={messageId} toolName='fileSearch' />
21
- );
22
-
23
- export const GrepSearchToolComponent: React.FC<SearchResultProps> = ({ args, toolCallId, messageId }) => (
24
- <SearchResult args={args} toolCallId={toolCallId} messageId={messageId} toolName='grepSearch' />
25
- );
26
-
27
- const SearchResult: React.FC<SearchResultProps> = ({ args, toolCallId, toolName, messageId }) => {
28
- const [isExpanded, setIsExpanded] = useState(false);
29
- const labelService = useInjectable<LabelService>(LabelService);
30
- const editorService = useInjectable<WorkbenchEditorService>(WorkbenchEditorService);
31
- const workspaceService = useInjectable<IWorkspaceService>(IWorkspaceService);
32
- const workspaceRoot = useMemo(() => URI.parse(workspaceService.tryGetRoots()?.[0]?.uri), []);
33
-
34
- const chatService = useInjectable<ChatInternalService>(IChatInternalService);
35
- const [files, setFiles] = useState<string[]>(
36
- chatService.sessionModel.history.getMessageAdditional(messageId)?.[toolCallId]?.files || [],
37
- );
38
- useEffect(() => {
39
- const toDispose = chatService.sessionModel.history.onMessageAdditionalChange((additional) => {
40
- setFiles(additional[toolCallId]?.files || []);
41
- });
42
- return () => {
43
- toDispose.dispose();
44
- };
45
- }, []);
46
-
47
- const handleFileClick = (uri: URI) => {
48
- // 处理文件点击跳转
49
- editorService.open(uri);
50
- };
51
-
52
- const parsedFiles = useMemo(
53
- () =>
54
- files.map((file) => {
55
- const uri = URI.parse(file);
56
- const iconClass = labelService.getIcon(uri);
57
- return {
58
- iconClass,
59
- name: uri.path.base,
60
- path: path.relative(workspaceRoot.codeUri.fsPath, uri.path.dir.toString()),
61
- };
62
- }),
63
- [files],
64
- );
65
-
66
- return (
67
- <div className={styles.container}>
68
- <div className={styles.header} onClick={() => setIsExpanded(!isExpanded)}>
69
- <span style={{ transform: `rotate(${isExpanded ? '90deg' : '0deg'})` }}>▶</span>
70
- <span>
71
- {toolName === 'fileSearch' ? `Searched files "${args.query}"` : `Grepped codebase "${args.query}"`} ·{' '}
72
- {files.length} files
73
- </span>
74
- </div>
75
- {isExpanded && (
76
- <ul className={styles.fileList}>
77
- {parsedFiles.map((file, index) => (
78
- <li
79
- key={index}
80
- className={styles.fileItem}
81
- onClick={() => handleFileClick(URI.file(path.join(workspaceRoot.codeUri.fsPath, file.path, file.name)))}
82
- >
83
- <span className={file.iconClass}></span>
84
- <span style={{ flex: 1 }}>{file.name}</span>
85
- <span className={styles.filePath}>{file.path}</span>
86
- </li>
87
- ))}
88
- </ul>
89
- )}
90
- </div>
91
- );
92
- };
@@ -1,90 +0,0 @@
1
- export interface ModelInfo {
2
- maxTokens?: number;
3
- contextWindow?: number;
4
- supportsImages?: boolean;
5
- temperature?: number;
6
- topP?: number;
7
- topK?: number;
8
- }
9
-
10
- export const deepSeekModels = {
11
- 'deepseek-chat': {
12
- maxTokens: 8_000,
13
- contextWindow: 64_000,
14
- supportsImages: false,
15
- },
16
- 'deepseek-reasoner': {
17
- maxTokens: 8_000,
18
- contextWindow: 64_000,
19
- supportsImages: false,
20
- temperature: 0.7,
21
- topP: 0.95,
22
- },
23
- } as Record<string, ModelInfo>;
24
-
25
- export const anthropicModels = {
26
- 'claude-3-7-sonnet-20250219': {
27
- maxTokens: 8192,
28
- contextWindow: 200_000,
29
- supportsImages: true,
30
- },
31
- 'claude-3-5-sonnet-20241022': {
32
- maxTokens: 8192,
33
- contextWindow: 200_000,
34
- supportsImages: true,
35
- },
36
- 'claude-3-5-haiku-20241022': {
37
- maxTokens: 8192,
38
- contextWindow: 200_000,
39
- supportsImages: false,
40
- },
41
- 'claude-3-opus-20240229': {
42
- maxTokens: 4096,
43
- contextWindow: 200_000,
44
- supportsImages: true,
45
- },
46
- 'claude-3-haiku-20240307': {
47
- maxTokens: 4096,
48
- contextWindow: 200_000,
49
- supportsImages: true,
50
- },
51
- } as Record<string, ModelInfo>; // as const assertion makes the object deeply readonly
52
-
53
- export const openAiNativeModels = {
54
- 'o3-mini': {
55
- maxTokens: 100_000,
56
- contextWindow: 200_000,
57
- supportsImages: false,
58
- },
59
- // don't support tool use yet
60
- o1: {
61
- maxTokens: 100_000,
62
- contextWindow: 200_000,
63
- supportsImages: true,
64
- },
65
- 'o1-preview': {
66
- maxTokens: 32_768,
67
- contextWindow: 128_000,
68
- supportsImages: true,
69
- },
70
- 'o1-mini': {
71
- maxTokens: 65_536,
72
- contextWindow: 128_000,
73
- supportsImages: true,
74
- },
75
- 'gpt-4o': {
76
- maxTokens: 4_096,
77
- contextWindow: 128_000,
78
- supportsImages: true,
79
- },
80
- 'gpt-4o-mini': {
81
- maxTokens: 16_384,
82
- contextWindow: 128_000,
83
- supportsImages: true,
84
- },
85
- 'gpt-4.5-preview': {
86
- maxTokens: 16_384,
87
- contextWindow: 128_000,
88
- supportsImages: true,
89
- },
90
- } as Record<string, ModelInfo>;
@@ -1,30 +0,0 @@
1
- import { OpenAICompatibleProvider, createOpenAICompatible } from '@ai-sdk/openai-compatible';
2
- import { LanguageModelV1 } from 'ai';
3
-
4
- import { Injectable } from '@opensumi/di';
5
- import { AINativeSettingSectionsId, IAIBackServiceOption } from '@opensumi/ide-core-common';
6
-
7
- import { BaseLanguageModel } from '../base-language-model';
8
-
9
- @Injectable()
10
- export class OpenAICompatibleModel extends BaseLanguageModel {
11
- protected initializeProvider(options: IAIBackServiceOption): OpenAICompatibleProvider {
12
- const apiKey = options.apiKey;
13
- if (!apiKey) {
14
- throw new Error(`Please provide OpenAI API Key in preferences (${AINativeSettingSectionsId.OpenaiApiKey})`);
15
- }
16
- return createOpenAICompatible({
17
- apiKey,
18
- baseURL: options.baseURL || 'https://dashscope.aliyuncs.com/compatible-mode/v1',
19
- name: 'openai',
20
- });
21
- }
22
-
23
- protected getModelIdentifier(provider: OpenAICompatibleProvider, modelId = 'qwen-max'): LanguageModelV1 {
24
- return provider(modelId);
25
- }
26
-
27
- protected getModelInfo() {
28
- return undefined;
29
- }
30
- }