@opensumi/ide-ai-native 3.9.1-next-1749538805.0 → 3.9.1-next-1749540423.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 (253) hide show
  1. package/lib/browser/ai-core.contribution.d.ts.map +1 -1
  2. package/lib/browser/ai-core.contribution.js +4 -9
  3. package/lib/browser/ai-core.contribution.js.map +1 -1
  4. package/lib/browser/chat/apply.service.d.ts +0 -3
  5. package/lib/browser/chat/apply.service.d.ts.map +1 -1
  6. package/lib/browser/chat/apply.service.js +0 -47
  7. package/lib/browser/chat/apply.service.js.map +1 -1
  8. package/lib/browser/chat/chat-manager.service.d.ts +0 -1
  9. package/lib/browser/chat/chat-manager.service.d.ts.map +1 -1
  10. package/lib/browser/chat/chat-manager.service.js +3 -9
  11. package/lib/browser/chat/chat-manager.service.js.map +1 -1
  12. package/lib/browser/chat/chat-model.d.ts +1 -8
  13. package/lib/browser/chat/chat-model.d.ts.map +1 -1
  14. package/lib/browser/chat/chat-model.js +76 -113
  15. package/lib/browser/chat/chat-model.js.map +1 -1
  16. package/lib/browser/chat/chat-proxy.service.d.ts +2 -0
  17. package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
  18. package/lib/browser/chat/chat-proxy.service.js +57 -50
  19. package/lib/browser/chat/chat-proxy.service.js.map +1 -1
  20. package/lib/browser/chat/chat.feature.registry.d.ts +1 -4
  21. package/lib/browser/chat/chat.feature.registry.d.ts.map +1 -1
  22. package/lib/browser/chat/chat.feature.registry.js +0 -6
  23. package/lib/browser/chat/chat.feature.registry.js.map +1 -1
  24. package/lib/browser/chat/chat.view.d.ts.map +1 -1
  25. package/lib/browser/chat/chat.view.js +10 -50
  26. package/lib/browser/chat/chat.view.js.map +1 -1
  27. package/lib/browser/components/ChatEditor.js +2 -2
  28. package/lib/browser/components/ChatEditor.js.map +1 -1
  29. package/lib/browser/components/ChatHistory.d.ts.map +1 -1
  30. package/lib/browser/components/ChatHistory.js +1 -2
  31. package/lib/browser/components/ChatHistory.js.map +1 -1
  32. package/lib/browser/components/ChatMentionInput.d.ts.map +1 -1
  33. package/lib/browser/components/ChatMentionInput.js +30 -148
  34. package/lib/browser/components/ChatMentionInput.js.map +1 -1
  35. package/lib/browser/components/ChatReply.js +2 -2
  36. package/lib/browser/components/ChatReply.js.map +1 -1
  37. package/lib/browser/components/ChatToolRender.d.ts.map +1 -1
  38. package/lib/browser/components/ChatToolRender.js +2 -7
  39. package/lib/browser/components/ChatToolRender.js.map +1 -1
  40. package/lib/browser/components/ChatToolRender.module.less +0 -25
  41. package/lib/browser/components/components.module.less +8 -37
  42. package/lib/browser/components/mention-input/mention-input.d.ts.map +1 -1
  43. package/lib/browser/components/mention-input/mention-input.js +14 -150
  44. package/lib/browser/components/mention-input/mention-input.js.map +1 -1
  45. package/lib/browser/components/mention-input/mention-input.module.less +1 -165
  46. package/lib/browser/components/mention-input/types.d.ts +1 -28
  47. package/lib/browser/components/mention-input/types.d.ts.map +1 -1
  48. package/lib/browser/components/mention-input/types.js +0 -1
  49. package/lib/browser/components/mention-input/types.js.map +1 -1
  50. package/lib/browser/components/utils.d.ts +2 -2
  51. package/lib/browser/context/llm-context.service.d.ts +2 -21
  52. package/lib/browser/context/llm-context.service.d.ts.map +1 -1
  53. package/lib/browser/context/llm-context.service.js +20 -162
  54. package/lib/browser/context/llm-context.service.js.map +1 -1
  55. package/lib/browser/contrib/intelligent-completions/decoration/additions-deletions.decoration.d.ts.map +1 -1
  56. package/lib/browser/contrib/intelligent-completions/decoration/additions-deletions.decoration.js.map +1 -1
  57. package/lib/browser/contrib/intelligent-completions/diff-computer.js +1 -1
  58. package/lib/browser/contrib/intelligent-completions/diff-computer.js.map +1 -1
  59. package/lib/browser/contrib/terminal/terminal.feature.registry.js.map +1 -1
  60. package/lib/browser/index.d.ts.map +1 -1
  61. package/lib/browser/index.js +0 -7
  62. package/lib/browser/index.js.map +1 -1
  63. package/lib/browser/layout/ai-layout.d.ts.map +1 -1
  64. package/lib/browser/layout/ai-layout.js +4 -6
  65. package/lib/browser/layout/ai-layout.js.map +1 -1
  66. package/lib/browser/layout/tabbar.view.d.ts +1 -1
  67. package/lib/browser/layout/tabbar.view.d.ts.map +1 -1
  68. package/lib/browser/layout/tabbar.view.js +12 -5
  69. package/lib/browser/layout/tabbar.view.js.map +1 -1
  70. package/lib/browser/mcp/base-apply.service.d.ts +4 -5
  71. package/lib/browser/mcp/base-apply.service.d.ts.map +1 -1
  72. package/lib/browser/mcp/base-apply.service.js +5 -23
  73. package/lib/browser/mcp/base-apply.service.js.map +1 -1
  74. package/lib/browser/mcp/mcp-server-proxy.service.d.ts +1 -3
  75. package/lib/browser/mcp/mcp-server-proxy.service.d.ts.map +1 -1
  76. package/lib/browser/mcp/mcp-server-proxy.service.js +0 -4
  77. package/lib/browser/mcp/mcp-server-proxy.service.js.map +1 -1
  78. package/lib/browser/mcp/mcp-server.feature.registry.d.ts.map +1 -1
  79. package/lib/browser/mcp/mcp-server.feature.registry.js +1 -7
  80. package/lib/browser/mcp/mcp-server.feature.registry.js.map +1 -1
  81. package/lib/browser/mcp/tools/createNewFileWithText.d.ts +3 -1
  82. package/lib/browser/mcp/tools/createNewFileWithText.d.ts.map +1 -1
  83. package/lib/browser/mcp/tools/createNewFileWithText.js +40 -14
  84. package/lib/browser/mcp/tools/createNewFileWithText.js.map +1 -1
  85. package/lib/browser/mcp/tools/fileSearch.d.ts.map +1 -1
  86. package/lib/browser/mcp/tools/fileSearch.js +5 -9
  87. package/lib/browser/mcp/tools/fileSearch.js.map +1 -1
  88. package/lib/browser/mcp/tools/getDiagnosticsByPath.js.map +1 -1
  89. package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.js.map +1 -1
  90. package/lib/browser/mcp/tools/grepSearch.d.ts.map +1 -1
  91. package/lib/browser/mcp/tools/grepSearch.js +10 -22
  92. package/lib/browser/mcp/tools/grepSearch.js.map +1 -1
  93. package/lib/browser/mcp/tools/handlers/ListDir.js +1 -1
  94. package/lib/browser/mcp/tools/handlers/ListDir.js.map +1 -1
  95. package/lib/browser/mcp/tools/handlers/ReadFile.js +1 -1
  96. package/lib/browser/mcp/tools/handlers/ReadFile.js.map +1 -1
  97. package/lib/browser/mcp/tools/handlers/RunCommand.d.ts +1 -11
  98. package/lib/browser/mcp/tools/handlers/RunCommand.d.ts.map +1 -1
  99. package/lib/browser/mcp/tools/handlers/RunCommand.js +4 -11
  100. package/lib/browser/mcp/tools/handlers/RunCommand.js.map +1 -1
  101. package/lib/browser/mcp/tools/listDir.d.ts.map +1 -1
  102. package/lib/browser/mcp/tools/listDir.js +15 -19
  103. package/lib/browser/mcp/tools/listDir.js.map +1 -1
  104. package/lib/browser/mcp/tools/runTerminalCmd.js.map +1 -1
  105. package/lib/browser/model/msg-history-manager.d.ts +1 -47
  106. package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
  107. package/lib/browser/model/msg-history-manager.js +2 -127
  108. package/lib/browser/model/msg-history-manager.js.map +1 -1
  109. package/lib/browser/preferences/schema.d.ts.map +1 -1
  110. package/lib/browser/preferences/schema.js +0 -5
  111. package/lib/browser/preferences/schema.js.map +1 -1
  112. package/lib/browser/types.d.ts +1 -12
  113. package/lib/browser/types.d.ts.map +1 -1
  114. package/lib/browser/types.js.map +1 -1
  115. package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts.map +1 -1
  116. package/lib/browser/widget/inline-stream-diff/live-preview.component.js.map +1 -1
  117. package/lib/common/index.d.ts +1 -5
  118. package/lib/common/index.d.ts.map +1 -1
  119. package/lib/common/index.js +0 -2
  120. package/lib/common/index.js.map +1 -1
  121. package/lib/common/llm-context.d.ts +0 -19
  122. package/lib/common/llm-context.d.ts.map +1 -1
  123. package/lib/common/llm-context.js.map +1 -1
  124. package/lib/common/model.d.ts +0 -1
  125. package/lib/common/model.d.ts.map +1 -1
  126. package/lib/common/model.js.map +1 -1
  127. package/lib/common/prompts/context-prompt-provider.d.ts +2 -0
  128. package/lib/common/prompts/context-prompt-provider.d.ts.map +1 -1
  129. package/lib/common/prompts/context-prompt-provider.js +29 -35
  130. package/lib/common/prompts/context-prompt-provider.js.map +1 -1
  131. package/lib/common/types.d.ts +0 -21
  132. package/lib/common/types.d.ts.map +1 -1
  133. package/lib/common/types.js.map +1 -1
  134. package/lib/common/utils.d.ts +0 -1
  135. package/lib/common/utils.d.ts.map +1 -1
  136. package/lib/common/utils.js +2 -5
  137. package/lib/common/utils.js.map +1 -1
  138. package/lib/node/anthropic/anthropic-language-model.d.ts +1 -1
  139. package/lib/node/base-language-model.d.ts +1 -2
  140. package/lib/node/base-language-model.d.ts.map +1 -1
  141. package/lib/node/base-language-model.js +2 -12
  142. package/lib/node/base-language-model.js.map +1 -1
  143. package/lib/node/deepseek/deepseek-language-model.d.ts +1 -1
  144. package/lib/node/mcp/sumi-mcp-server.d.ts +1 -3
  145. package/lib/node/mcp/sumi-mcp-server.d.ts.map +1 -1
  146. package/lib/node/mcp/sumi-mcp-server.js +1 -7
  147. package/lib/node/mcp/sumi-mcp-server.js.map +1 -1
  148. package/lib/node/mcp-server-manager-impl.d.ts +1 -3
  149. package/lib/node/mcp-server-manager-impl.d.ts.map +1 -1
  150. package/lib/node/mcp-server-manager-impl.js +2 -14
  151. package/lib/node/mcp-server-manager-impl.js.map +1 -1
  152. package/lib/node/mcp-server.sse.d.ts +1 -187
  153. package/lib/node/mcp-server.sse.d.ts.map +1 -1
  154. package/lib/node/mcp-server.sse.js +2 -2
  155. package/lib/node/mcp-server.sse.js.map +1 -1
  156. package/lib/node/mcp-server.stdio.d.ts +1 -187
  157. package/lib/node/mcp-server.stdio.d.ts.map +1 -1
  158. package/package.json +26 -27
  159. package/src/browser/ai-core.contribution.ts +4 -14
  160. package/src/browser/chat/apply.service.ts +1 -62
  161. package/src/browser/chat/chat-manager.service.ts +7 -16
  162. package/src/browser/chat/chat-model.ts +73 -130
  163. package/src/browser/chat/chat-proxy.service.ts +81 -68
  164. package/src/browser/chat/chat.feature.registry.ts +1 -17
  165. package/src/browser/chat/chat.view.tsx +12 -73
  166. package/src/browser/components/ChatEditor.tsx +1 -1
  167. package/src/browser/components/ChatHistory.tsx +1 -2
  168. package/src/browser/components/ChatMentionInput.tsx +35 -180
  169. package/src/browser/components/ChatReply.tsx +4 -4
  170. package/src/browser/components/ChatToolRender.module.less +0 -25
  171. package/src/browser/components/ChatToolRender.tsx +2 -10
  172. package/src/browser/components/components.module.less +8 -37
  173. package/src/browser/components/mention-input/mention-input.module.less +1 -165
  174. package/src/browser/components/mention-input/mention-input.tsx +31 -232
  175. package/src/browser/components/mention-input/types.ts +0 -29
  176. package/src/browser/context/llm-context.service.ts +21 -182
  177. package/src/browser/contrib/intelligent-completions/decoration/additions-deletions.decoration.ts +1 -1
  178. package/src/browser/contrib/intelligent-completions/diff-computer.ts +1 -1
  179. package/src/browser/contrib/terminal/terminal.feature.registry.ts +1 -1
  180. package/src/browser/index.ts +0 -8
  181. package/src/browser/layout/ai-layout.tsx +8 -12
  182. package/src/browser/layout/tabbar.view.tsx +23 -10
  183. package/src/browser/mcp/base-apply.service.ts +10 -30
  184. package/src/browser/mcp/mcp-server-proxy.service.ts +1 -6
  185. package/src/browser/mcp/mcp-server.feature.registry.ts +1 -6
  186. package/src/browser/mcp/tools/createNewFileWithText.ts +46 -17
  187. package/src/browser/mcp/tools/fileSearch.ts +5 -8
  188. package/src/browser/mcp/tools/getDiagnosticsByPath.ts +1 -1
  189. package/src/browser/mcp/tools/getOpenEditorFileDiagnostics.ts +1 -1
  190. package/src/browser/mcp/tools/grepSearch.ts +21 -32
  191. package/src/browser/mcp/tools/handlers/ListDir.ts +2 -2
  192. package/src/browser/mcp/tools/handlers/ReadFile.ts +2 -2
  193. package/src/browser/mcp/tools/handlers/RunCommand.ts +14 -21
  194. package/src/browser/mcp/tools/listDir.ts +12 -15
  195. package/src/browser/mcp/tools/runTerminalCmd.ts +1 -1
  196. package/src/browser/model/msg-history-manager.ts +2 -181
  197. package/src/browser/preferences/schema.ts +0 -5
  198. package/src/browser/types.ts +0 -18
  199. package/src/browser/widget/inline-stream-diff/live-preview.component.tsx +1 -0
  200. package/src/common/index.ts +1 -6
  201. package/src/common/llm-context.ts +0 -23
  202. package/src/common/model.ts +0 -1
  203. package/src/common/prompts/context-prompt-provider.ts +40 -55
  204. package/src/common/types.ts +0 -18
  205. package/src/common/utils.ts +1 -4
  206. package/src/node/base-language-model.ts +14 -11
  207. package/src/node/mcp/sumi-mcp-server.ts +2 -10
  208. package/src/node/mcp-server-manager-impl.ts +2 -17
  209. package/src/node/mcp-server.sse.ts +2 -1
  210. package/lib/browser/components/mention-input/mention-select.d.ts +0 -28
  211. package/lib/browser/components/mention-input/mention-select.d.ts.map +0 -1
  212. package/lib/browser/components/mention-input/mention-select.js +0 -136
  213. package/lib/browser/components/mention-input/mention-select.js.map +0 -1
  214. package/lib/browser/components/mention-input/mention-select.module.less +0 -297
  215. package/lib/browser/mcp/tools/handlers/CreateNewFileWithText.d.ts +0 -15
  216. package/lib/browser/mcp/tools/handlers/CreateNewFileWithText.d.ts.map +0 -1
  217. package/lib/browser/mcp/tools/handlers/CreateNewFileWithText.js +0 -53
  218. package/lib/browser/mcp/tools/handlers/CreateNewFileWithText.js.map +0 -1
  219. package/lib/browser/rules/rules.contribution.d.ts +0 -29
  220. package/lib/browser/rules/rules.contribution.d.ts.map +0 -1
  221. package/lib/browser/rules/rules.contribution.js +0 -94
  222. package/lib/browser/rules/rules.contribution.js.map +0 -1
  223. package/lib/browser/rules/rules.module.less +0 -175
  224. package/lib/browser/rules/rules.service.d.ts +0 -25
  225. package/lib/browser/rules/rules.service.d.ts.map +0 -1
  226. package/lib/browser/rules/rules.service.js +0 -180
  227. package/lib/browser/rules/rules.service.js.map +0 -1
  228. package/lib/browser/rules/rules.view.d.ts +0 -3
  229. package/lib/browser/rules/rules.view.d.ts.map +0 -1
  230. package/lib/browser/rules/rules.view.js +0 -76
  231. package/lib/browser/rules/rules.view.js.map +0 -1
  232. package/lib/common/image-compression.d.ts +0 -25
  233. package/lib/common/image-compression.d.ts.map +0 -1
  234. package/lib/common/image-compression.js +0 -153
  235. package/lib/common/image-compression.js.map +0 -1
  236. package/lib/common/mdc-parser.d.ts +0 -60
  237. package/lib/common/mdc-parser.d.ts.map +0 -1
  238. package/lib/common/mdc-parser.js +0 -246
  239. package/lib/common/mdc-parser.js.map +0 -1
  240. package/lib/common/prompts/system-prompt.d.ts +0 -2
  241. package/lib/common/prompts/system-prompt.d.ts.map +0 -1
  242. package/lib/common/prompts/system-prompt.js +0 -5
  243. package/lib/common/prompts/system-prompt.js.map +0 -1
  244. package/src/browser/components/mention-input/mention-select.module.less +0 -297
  245. package/src/browser/components/mention-input/mention-select.tsx +0 -256
  246. package/src/browser/mcp/tools/handlers/CreateNewFileWithText.ts +0 -49
  247. package/src/browser/rules/rules.contribution.ts +0 -105
  248. package/src/browser/rules/rules.module.less +0 -175
  249. package/src/browser/rules/rules.service.ts +0 -189
  250. package/src/browser/rules/rules.view.tsx +0 -127
  251. package/src/common/image-compression.ts +0 -174
  252. package/src/common/mdc-parser.ts +0 -295
  253. package/src/common/prompts/system-prompt.ts +0 -2
@@ -1,7 +1,5 @@
1
1
  import { Event, URI } from '@opensumi/ide-core-common/lib/utils';
2
2
 
3
- import { ProjectRule } from './types';
4
-
5
3
  export interface LLMContextService {
6
4
  /**
7
5
  * 开始自动收集
@@ -23,11 +21,6 @@ export interface LLMContextService {
23
21
  */
24
22
  addFolderToContext(uri: URI, isManual?: boolean): void;
25
23
 
26
- /**
27
- * 添加规则到 context 中
28
- */
29
- addRuleToContext(uri: URI, isManual?: boolean): void;
30
-
31
24
  /**
32
25
  * 清除上下文
33
26
  */
@@ -40,7 +33,6 @@ export interface LLMContextService {
40
33
  viewed: FileContext[];
41
34
  attached: FileContext[];
42
35
  attachedFolders: FileContext[];
43
- attachedRules: ProjectRule[];
44
36
  version: number;
45
37
  }>;
46
38
 
@@ -50,18 +42,6 @@ export interface LLMContextService {
50
42
  */
51
43
  removeFileFromContext(uri: URI, isManual?: boolean): void;
52
44
 
53
- /**
54
- * 从 context 中移除文件夹
55
- * @param uri URI
56
- */
57
- removeFolderFromContext(uri: URI): void;
58
-
59
- /**
60
- * 从 context 中移除规则
61
- * @param uri URI
62
- */
63
- removeRuleFromContext(uri: URI): void;
64
-
65
45
  /** 导出为可序列化格式 */
66
46
  serialize(): Promise<SerializedContext>;
67
47
  }
@@ -78,15 +58,12 @@ export interface AttachFileContext {
78
58
  lineErrors: string[];
79
59
  path: string;
80
60
  language: string;
81
- selection?: [number, number];
82
61
  }
83
62
 
84
63
  export interface SerializedContext {
85
64
  recentlyViewFiles: string[];
86
65
  attachedFiles: Array<AttachFileContext>;
87
66
  attachedFolders: string[];
88
- attachedRules: string[];
89
- globalRules: string[];
90
67
  }
91
68
 
92
69
  export enum LLM_CONTEXT_KEY {
@@ -5,7 +5,6 @@ export interface ModelInfo {
5
5
  temperature?: number;
6
6
  topP?: number;
7
7
  topK?: number;
8
- maxSteps?: number;
9
8
  }
10
9
 
11
10
  export const deepSeekModels = {
@@ -2,7 +2,7 @@ import { Autowired, Injectable } from '@opensumi/di';
2
2
  import { WorkbenchEditorService } from '@opensumi/ide-editor/lib/common/editor';
3
3
  import { IWorkspaceService } from '@opensumi/ide-workspace';
4
4
 
5
- import { AttachFileContext, SerializedContext } from '../llm-context';
5
+ import { SerializedContext } from '../llm-context';
6
6
 
7
7
  export const ChatAgentPromptProvider = Symbol('ChatAgentPromptProvider');
8
8
 
@@ -23,17 +23,14 @@ export class DefaultChatAgentPromptProvider implements ChatAgentPromptProvider {
23
23
  protected readonly workspaceService: IWorkspaceService;
24
24
 
25
25
  async provideContextPrompt(context: SerializedContext, userMessage: string) {
26
- let currentFileInfo = await this.getCurrentFileInfo();
27
- if (context.attachedFiles.some((file) => file.path === currentFileInfo?.path)) {
28
- currentFileInfo = null;
29
- }
26
+ const currentFileInfo =
27
+ context.attachedFiles.length > 0 || context.attachedFolders.length > 0 ? null : await this.getCurrentFileInfo();
30
28
 
31
29
  return this.buildPromptTemplate({
32
- attachedFiles: context.attachedFiles,
33
- attachedFolders: context.attachedFolders,
30
+ recentFiles: this.buildRecentFilesSection(context.recentlyViewFiles),
31
+ attachedFiles: this.buildAttachedFilesSection(context.attachedFiles),
32
+ attachedFolders: this.buildAttachedFoldersSection(context.attachedFolders),
34
33
  currentFile: currentFileInfo,
35
- attachedRules: context.attachedRules,
36
- globalRules: context.globalRules,
37
34
  userMessage,
38
35
  });
39
36
  }
@@ -49,56 +46,33 @@ export class DefaultChatAgentPromptProvider implements ChatAgentPromptProvider {
49
46
  const currentPath =
50
47
  (await this.workspaceService.asRelativePath(currentModel.uri))?.path || currentModel.uri.codeUri.fsPath;
51
48
 
52
- // 获取当前选中行信息
53
- const selection = editor?.monacoEditor?.getSelection();
54
- const currentLine = selection ? selection.startLineNumber : undefined;
55
- let lineContent = '';
56
-
57
- if (currentLine && editor?.monacoEditor) {
58
- const model = editor.monacoEditor.getModel();
59
- if (model) {
60
- lineContent = model.getLineContent(currentLine)?.trim() || '';
61
- }
62
- }
63
-
64
49
  return {
65
50
  path: currentPath,
66
51
  languageId: currentModel.languageId,
67
52
  content: currentModel.getText(),
68
- currentLine,
69
- lineContent,
70
53
  };
71
54
  }
72
55
 
73
- private async buildPromptTemplate({
56
+ private buildPromptTemplate({
57
+ recentFiles,
74
58
  attachedFiles,
75
59
  attachedFolders,
76
60
  currentFile,
77
- attachedRules,
78
- globalRules,
79
61
  userMessage,
80
62
  }: {
81
- attachedFiles: AttachFileContext[];
82
- attachedFolders: string[];
83
- currentFile: {
84
- path: string;
85
- languageId: string;
86
- content: string;
87
- currentLine?: number;
88
- lineContent?: string;
89
- } | null;
90
- attachedRules: string[];
91
- globalRules: string[];
63
+ recentFiles: string;
64
+ attachedFiles: string;
65
+ attachedFolders: string;
66
+ currentFile: { path: string; languageId: string; content: string } | null;
92
67
  userMessage: string;
93
68
  }) {
94
69
  const sections = [
95
- ...globalRules,
96
- ...attachedFolders,
97
70
  '<additional_data>',
98
71
  'Below are some potentially helpful/relevant pieces of information for figuring out to respond',
72
+ recentFiles,
73
+ attachedFiles,
74
+ attachedFolders,
99
75
  this.buildCurrentFileSection(currentFile),
100
- this.buildAttachedFilesSection(attachedFiles),
101
- ...attachedRules,
102
76
  '</additional_data>',
103
77
  '<user_query>',
104
78
  userMessage,
@@ -108,7 +82,17 @@ export class DefaultChatAgentPromptProvider implements ChatAgentPromptProvider {
108
82
  return sections.join('\n');
109
83
  }
110
84
 
111
- private buildAttachedFilesSection(files: AttachFileContext[]): string {
85
+ private buildRecentFilesSection(files: string[]): string {
86
+ if (!files.length) {
87
+ return '';
88
+ }
89
+
90
+ return `<recently_viewed_files>
91
+ ${files.map((file, idx) => ` ${idx + 1}: ${file}`).join('\n')}
92
+ </recently_viewed_files>`;
93
+ }
94
+
95
+ private buildAttachedFilesSection(files: { path: string; content: string; lineErrors: string[] }[]): string {
112
96
  if (!files.length) {
113
97
  return '';
114
98
  }
@@ -128,9 +112,9 @@ export class DefaultChatAgentPromptProvider implements ChatAgentPromptProvider {
128
112
  return `<attached_files>\n${fileContents}\n</attached_files>`;
129
113
  }
130
114
 
131
- private buildFileContentSection(file: AttachFileContext): string {
115
+ private buildFileContentSection(file: { path: string; content: string }): string {
132
116
  return `<file_contents>
133
- \`\`\`${file.path}${file.selection ? `, lines: ${file.selection?.[0]}-${file.selection?.[1]}` : ''}
117
+ \`\`\`${file.path}
134
118
  ${file.content}
135
119
  \`\`\`
136
120
  </file_contents>`;
@@ -144,22 +128,23 @@ ${file.content}
144
128
  return `<linter_errors>\n${errors.join('\n')}\n</linter_errors>`;
145
129
  }
146
130
 
147
- private buildCurrentFileSection(
148
- fileInfo: { path: string; languageId: string; content: string; currentLine?: number; lineContent?: string } | null,
149
- ): string {
150
- if (!fileInfo) {
131
+ private buildAttachedFoldersSection(folders: string[]): string {
132
+ if (!folders.length) {
151
133
  return '';
152
134
  }
153
135
 
154
- let currentFileSection = `<current_file>\nPath: ${fileInfo.path}`;
136
+ return `<attached_folders>\n${folders.join('\n')}</attached_folders>`;
137
+ }
155
138
 
156
- if (fileInfo.currentLine && fileInfo.lineContent) {
157
- currentFileSection += `\nCurrently selected line: ${fileInfo.currentLine}`;
158
- currentFileSection += `\nLine ${fileInfo.currentLine} content: \`${fileInfo.lineContent}\``;
139
+ private buildCurrentFileSection(fileInfo: { path: string; languageId: string; content: string } | null): string {
140
+ if (!fileInfo) {
141
+ return '';
159
142
  }
160
143
 
161
- currentFileSection += '\n</current_file>';
162
-
163
- return currentFileSection;
144
+ return `<current_opened_file>
145
+ \`\`\`${fileInfo.languageId} ${fileInfo.path}
146
+ ${fileInfo.content}
147
+ \`\`\`
148
+ </current_opened_file>`;
164
149
  }
165
150
  }
@@ -1,8 +1,6 @@
1
1
  import { IMarker } from '@opensumi/ide-core-browser';
2
2
  import { Uri } from '@opensumi/monaco-editor-core';
3
3
 
4
- import { ImageCompressionOptions } from './image-compression';
5
-
6
4
  export enum NearestCodeBlockType {
7
5
  Block = 'block',
8
6
  Line = 'line',
@@ -24,12 +22,6 @@ export interface INearestCodeBlock {
24
22
  type?: NearestCodeBlockType;
25
23
  }
26
24
 
27
- export type IMCPToolResultContent = { type: 'text'; text: string } | { type: 'image'; data: string; mimeType?: string };
28
- export interface IMCPToolResult {
29
- content: IMCPToolResultContent[];
30
- isError?: boolean;
31
- }
32
-
33
25
  // SUMI MCP Server 网页部分暴露给 Node.js 部分的能力
34
26
  export interface IMCPServerProxyService {
35
27
  $callMCPTool(
@@ -49,8 +41,6 @@ export interface IMCPServerProxyService {
49
41
  $startServer(serverName: string): Promise<void>;
50
42
  // 停止指定的 MCP 服务器
51
43
  $stopServer(serverName: string): Promise<void>;
52
- // 压缩工具结果
53
- $compressToolResult(result: IMCPToolResult, options: ImageCompressionOptions): Promise<IMCPToolResult>;
54
44
  }
55
45
 
56
46
  export interface MCPServer {
@@ -135,11 +125,3 @@ export interface SSEClientTransportOptions {
135
125
  */
136
126
  requestInit?: RequestInit;
137
127
  }
138
-
139
- export interface ProjectRule {
140
- path: string;
141
- content: string;
142
- description?: string;
143
- globs?: string | string[];
144
- alwaysApply?: boolean;
145
- }
@@ -54,11 +54,8 @@ export const extractCodeBlocks = (content: string): string => {
54
54
  // 确保 Tool Name 符合 Claude 3.5+ Sonnet 要求的 ^[a-zA-Z0-9_-]{1,64}$ 正则
55
55
  export const toClaudeToolName = (name: string) => name.replace(/[^a-zA-Z0-9_-]/g, '').slice(0, 64);
56
56
 
57
- export const TOOL_NAME_SEPARATOR = '__';
58
57
  export const getToolName = (toolName: string, serverName: string) =>
59
- serverName === BUILTIN_MCP_SERVER_NAME
60
- ? toolName
61
- : toClaudeToolName(`mcp${TOOL_NAME_SEPARATOR}${serverName}${TOOL_NAME_SEPARATOR}${toolName}`);
58
+ serverName === BUILTIN_MCP_SERVER_NAME ? toolName : toClaudeToolName(`mcp_${serverName}_${toolName}`);
62
59
 
63
60
  export const cleanAttachedTextWrapper = (text: string) => {
64
61
  const rgAttachedFile = /`<attached_file>(.*)`/g;
@@ -1,8 +1,17 @@
1
- import { CoreMessage, ImagePart, TextPart, ToolExecutionOptions, jsonSchema, streamText, tool } from 'ai';
1
+ import {
2
+ CoreMessage,
3
+ CoreUserMessage,
4
+ ImagePart,
5
+ TextPart,
6
+ ToolExecutionOptions,
7
+ jsonSchema,
8
+ streamText,
9
+ tool,
10
+ } from 'ai';
2
11
 
3
12
  import { Autowired, Injectable } from '@opensumi/di';
4
13
  import { IAIBackServiceOption } from '@opensumi/ide-core-common';
5
- import { ChatReadableStream, INodeLogger } from '@opensumi/ide-core-node';
14
+ import { ChatReadableStream } from '@opensumi/ide-core-node';
6
15
  import { CancellationToken } from '@opensumi/ide-utils';
7
16
 
8
17
  import { ModelInfo } from '../common';
@@ -19,9 +28,6 @@ export abstract class BaseLanguageModel {
19
28
  @Autowired(ToolInvocationRegistryManager)
20
29
  protected readonly toolInvocationRegistryManager: IToolInvocationRegistryManager;
21
30
 
22
- @Autowired(INodeLogger)
23
- protected readonly logger: INodeLogger;
24
-
25
31
  protected abstract initializeProvider(options: IAIBackServiceOption): any;
26
32
 
27
33
  async request(
@@ -61,11 +67,8 @@ export abstract class BaseLanguageModel {
61
67
  description: toolRequest.description || '',
62
68
  // TODO 这里应该是 z.object 而不是 JSON Schema
63
69
  parameters: jsonSchema(toolRequest.parameters),
64
- execute: async (args: any, options: ToolExecutionOptions) => {
65
- // 执行原始工具
66
- const result = await toolRequest.handler(JSON.stringify(args), options);
67
- return result;
68
- },
70
+ execute: async (args: any, options: ToolExecutionOptions) =>
71
+ await toolRequest.handler(JSON.stringify(args), options),
69
72
  });
70
73
  }
71
74
 
@@ -116,7 +119,7 @@ export abstract class BaseLanguageModel {
116
119
  messages,
117
120
  abortSignal: abortController.signal,
118
121
  experimental_toolCallStreaming: true,
119
- maxSteps: modelInfo?.maxSteps ?? 25,
122
+ maxSteps: 12,
120
123
  maxTokens,
121
124
  system: systemPrompt,
122
125
  providerOptions,
@@ -12,10 +12,9 @@ import { INodeLogger } from '@opensumi/ide-core-node';
12
12
 
13
13
  import pkg from '../../../package.json';
14
14
  import { BUILTIN_MCP_SERVER_NAME, ISumiMCPServerBackend } from '../../common';
15
- import { ImageCompressionOptions } from '../../common/image-compression';
16
15
  import { IMCPServer, MCPServerDescription } from '../../common/mcp-server-manager';
17
16
  import { IToolInvocationRegistryManager, ToolInvocationRegistryManager } from '../../common/tool-invocation-registry';
18
- import { IMCPServerProxyService, IMCPToolResult, MCPTool, MCP_SERVER_TYPE } from '../../common/types';
17
+ import { IMCPServerProxyService, MCPTool, MCP_SERVER_TYPE } from '../../common/types';
19
18
  import { MCPServerManagerImpl } from '../mcp-server-manager-impl';
20
19
  import { SSEMCPServer } from '../mcp-server.sse';
21
20
  import { StdioMCPServer } from '../mcp-server.stdio';
@@ -44,7 +43,7 @@ export class SumiMCPServerBackend extends RPCService<IMCPServerProxyService> imp
44
43
 
45
44
  constructor() {
46
45
  super();
47
- this.mcpServerManager = new MCPServerManagerImpl(this.toolInvocationRegistryManager, this.logger, this);
46
+ this.mcpServerManager = new MCPServerManagerImpl(this.toolInvocationRegistryManager, this.logger);
48
47
  }
49
48
 
50
49
  public setConnectionClientId(clientId: string) {
@@ -52,13 +51,6 @@ export class SumiMCPServerBackend extends RPCService<IMCPServerProxyService> imp
52
51
  this.mcpServerManager.setClientId(clientId);
53
52
  }
54
53
 
55
- async $compressToolResult(result: IMCPToolResult, options: ImageCompressionOptions) {
56
- if (!this.client) {
57
- throw new Error('SUMI MCP RPC Client not initialized');
58
- }
59
- return this.client.$compressToolResult(result, options);
60
- }
61
-
62
54
  async $getMCPTools() {
63
55
  if (!this.client) {
64
56
  throw new Error('SUMI MCP RPC Client not initialized');
@@ -3,16 +3,14 @@ import { ToolExecutionOptions } from 'ai';
3
3
  import { ILogger } from '@opensumi/ide-core-common';
4
4
  import { getShellPath } from '@opensumi/ide-core-node';
5
5
 
6
- import { ISumiMCPServerBackend } from '../common';
7
6
  import { IMCPServer, MCPServerDescription, MCPServerManager, MCPTool } from '../common/mcp-server-manager';
8
7
  import { IToolInvocationRegistryManager, ToolRequest } from '../common/tool-invocation-registry';
9
- import { IMCPToolResult, MCP_SERVER_TYPE } from '../common/types';
8
+ import { MCP_SERVER_TYPE } from '../common/types';
10
9
  import { getToolName } from '../common/utils';
11
10
 
12
11
  import { BuiltinMCPServer } from './mcp/sumi-mcp-server';
13
12
  import { SSEMCPServer } from './mcp-server.sse';
14
13
  import { StdioMCPServer } from './mcp-server.stdio';
15
-
16
14
  // 这应该是 Browser Tab 维度的,每个 Tab 对应一个 MCPServerManagerImpl
17
15
  export class MCPServerManagerImpl implements MCPServerManager {
18
16
  protected servers: Map<string, IMCPServer> = new Map();
@@ -29,7 +27,6 @@ export class MCPServerManagerImpl implements MCPServerManager {
29
27
  constructor(
30
28
  private readonly toolInvocationRegistryManager: IToolInvocationRegistryManager,
31
29
  private readonly logger: ILogger,
32
- private readonly proxy: ISumiMCPServerBackend,
33
30
  ) {}
34
31
 
35
32
  async updateShellPath() {
@@ -113,19 +110,7 @@ export class MCPServerManagerImpl implements MCPServerManager {
113
110
  const res = await this.callTool(serverName, tool.name, options?.toolCallId || '', arg_string);
114
111
  this.logger.debug(`[MCP: ${serverName}] ${tool.name} called with ${arg_string}`);
115
112
  this.logger.debug('Tool execution result:', res);
116
- let compressedResult: IMCPToolResult = res as IMCPToolResult;
117
- if (
118
- this.proxy?.$compressToolResult &&
119
- (compressedResult.content || []).some((item) => item.type === 'image')
120
- ) {
121
- compressedResult = await this.proxy.$compressToolResult(res as IMCPToolResult, {
122
- maxSizeKB: 100,
123
- maxWidth: 600,
124
- quality: 0.6,
125
- });
126
- }
127
- this.logger.debug('Compressed tool execution result:', compressedResult);
128
- return JSON.stringify(compressedResult);
113
+ return JSON.stringify(res);
129
114
  } catch (error) {
130
115
  this.logger.error(`Error in tool handler for ${tool.name} on MCP server ${serverName}:`, error);
131
116
  throw error;
@@ -1,6 +1,5 @@
1
1
  // have to import with extension since the exports map is ./* -> ./dist/cjs/*
2
2
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
3
- import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
4
3
  import { EventSource } from 'eventsource';
5
4
 
6
5
  import { ILogger } from '@opensumi/ide-core-common';
@@ -48,6 +47,8 @@ export class SSEMCPServer implements IMCPServer {
48
47
  }
49
48
  this.logger?.log(`Starting server "${this.name}" with url: ${this.url}`);
50
49
 
50
+ const SSEClientTransport = (await import('@modelcontextprotocol/sdk/client/sse.js')).SSEClientTransport;
51
+
51
52
  const transport = new SSEClientTransport(new URL(this.url), this.transportOptions);
52
53
 
53
54
  transport.onerror = (error) => {
@@ -1,28 +0,0 @@
1
- import React from 'react';
2
- export interface ExtendedModelOption {
3
- label: string;
4
- value: string;
5
- icon?: string;
6
- iconClass?: string;
7
- tags?: string[];
8
- features?: string[];
9
- description?: string;
10
- disabled?: boolean;
11
- badge?: string;
12
- badgeColor?: string;
13
- selected?: boolean;
14
- }
15
- export interface MentionSelectProps {
16
- options: ExtendedModelOption[];
17
- value?: string;
18
- onChange?: (value: string) => void;
19
- placeholder?: string;
20
- disabled?: boolean;
21
- className?: string;
22
- size?: 'small' | 'medium' | 'large';
23
- showThinking?: boolean;
24
- thinkingEnabled?: boolean;
25
- onThinkingChange?: (enabled: boolean) => void;
26
- }
27
- export declare const MentionSelect: React.FC<MentionSelectProps>;
28
- //# sourceMappingURL=mention-select.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mention-select.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/mention-input/mention-select.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAO3D,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/C;AAiBD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA6MtD,CAAC"}
@@ -1,136 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MentionSelect = void 0;
4
- const tslib_1 = require("tslib");
5
- const classnames_1 = tslib_1.__importDefault(require("classnames"));
6
- const react_1 = tslib_1.__importStar(require("react"));
7
- const click_outside_1 = require("@opensumi/ide-components/lib/click-outside");
8
- const components_1 = require("@opensumi/ide-core-browser/lib/components");
9
- const mention_select_module_less_1 = tslib_1.__importDefault(require("./mention-select.module.less"));
10
- const ThinkingToggle = ({ enabled, onChange }) => (react_1.default.createElement("div", { className: mention_select_module_less_1.default.thinking_toggle, onClick: () => onChange(!enabled) },
11
- react_1.default.createElement(components_1.Icon, { iconClass: (0, components_1.getIcon)(enabled ? 'check' : 'circle-outline'), className: (0, classnames_1.default)(mention_select_module_less_1.default.thinking_icon, {
12
- [mention_select_module_less_1.default.enabled]: enabled,
13
- }) }),
14
- react_1.default.createElement("span", { className: mention_select_module_less_1.default.thinking_label }, "Thinking")));
15
- const MentionSelect = ({ options, value, onChange, placeholder, disabled = false, className, size = 'small', showThinking = false, thinkingEnabled = false, onThinkingChange, }) => {
16
- const [isOpen, setIsOpen] = (0, react_1.useState)(false);
17
- const [activeIndex, setActiveIndex] = (0, react_1.useState)(-1);
18
- const [dropdownDirection, setDropdownDirection] = (0, react_1.useState)('up');
19
- const selectRef = (0, react_1.useRef)(null);
20
- const dropdownRef = (0, react_1.useRef)(null);
21
- const selectedOption = options.find((option) => option.selected) || options.find((option) => option.value === value);
22
- const handleToggle = () => {
23
- if (!disabled) {
24
- setIsOpen(!isOpen);
25
- setActiveIndex(-1);
26
- }
27
- };
28
- const handleSelect = (option) => {
29
- if (!option.disabled) {
30
- onChange === null || onChange === void 0 ? void 0 : onChange(option.value);
31
- setIsOpen(false);
32
- setActiveIndex(-1);
33
- }
34
- };
35
- const handleKeyDown = (e) => {
36
- if (disabled) {
37
- return;
38
- }
39
- switch (e.key) {
40
- case 'Enter':
41
- case ' ':
42
- e.preventDefault();
43
- if (!isOpen) {
44
- setIsOpen(true);
45
- }
46
- else if (activeIndex >= 0) {
47
- handleSelect(options[activeIndex]);
48
- }
49
- break;
50
- case 'Escape':
51
- e.preventDefault();
52
- setIsOpen(false);
53
- setActiveIndex(-1);
54
- break;
55
- case 'ArrowDown':
56
- e.preventDefault();
57
- if (!isOpen) {
58
- setIsOpen(true);
59
- }
60
- else {
61
- setActiveIndex((prev) => (prev < options.length - 1 ? prev + 1 : 0));
62
- }
63
- break;
64
- case 'ArrowUp':
65
- e.preventDefault();
66
- if (isOpen) {
67
- setActiveIndex((prev) => (prev > 0 ? prev - 1 : options.length - 1));
68
- }
69
- break;
70
- }
71
- };
72
- const handleClickOutside = () => {
73
- setIsOpen(false);
74
- setActiveIndex(-1);
75
- };
76
- (0, react_1.useEffect)(() => {
77
- if (isOpen && selectRef.current) {
78
- const selectRect = selectRef.current.getBoundingClientRect();
79
- const viewportHeight = window.innerHeight;
80
- const dropdownHeight = Math.min(400, options.length * 60);
81
- const spaceAbove = selectRect.top;
82
- const spaceBelow = viewportHeight - selectRect.bottom;
83
- if (spaceAbove < dropdownHeight && spaceBelow > spaceAbove) {
84
- setDropdownDirection('down');
85
- }
86
- else {
87
- setDropdownDirection('up');
88
- }
89
- }
90
- }, [isOpen, options.length]);
91
- (0, react_1.useEffect)(() => {
92
- if (isOpen && activeIndex >= 0 && dropdownRef.current) {
93
- const activeElement = dropdownRef.current.children[activeIndex];
94
- if (activeElement) {
95
- activeElement.scrollIntoView({
96
- behavior: 'smooth',
97
- block: 'nearest',
98
- });
99
- }
100
- }
101
- }, [isOpen, activeIndex]);
102
- return (react_1.default.createElement(click_outside_1.ClickOutside, { onOutsideClick: handleClickOutside },
103
- react_1.default.createElement("div", { ref: selectRef, className: (0, classnames_1.default)(mention_select_module_less_1.default.mention_select, mention_select_module_less_1.default[`size_${size}`], {
104
- [mention_select_module_less_1.default.disabled]: disabled,
105
- [mention_select_module_less_1.default.open]: isOpen,
106
- [mention_select_module_less_1.default.dropdown_up]: dropdownDirection === 'up',
107
- [mention_select_module_less_1.default.dropdown_down]: dropdownDirection === 'down',
108
- }, className), onClick: handleToggle, onKeyDown: handleKeyDown, tabIndex: disabled ? -1 : 0, role: 'combobox', "aria-expanded": isOpen, "aria-haspopup": 'listbox' },
109
- react_1.default.createElement("div", { className: mention_select_module_less_1.default.select_trigger },
110
- react_1.default.createElement("div", { className: mention_select_module_less_1.default.select_content }, selectedOption ? (react_1.default.createElement("div", { className: mention_select_module_less_1.default.selected_option },
111
- react_1.default.createElement("span", { className: mention_select_module_less_1.default.option_label }, selectedOption.label),
112
- selectedOption.badge && (react_1.default.createElement("span", { className: mention_select_module_less_1.default.option_badge, style: { backgroundColor: selectedOption.badgeColor } }, selectedOption.badge)))) : (react_1.default.createElement("span", { className: mention_select_module_less_1.default.placeholder }, placeholder))),
113
- react_1.default.createElement(components_1.Icon, { iconClass: (0, components_1.getIcon)('down-arrow'), className: (0, classnames_1.default)(mention_select_module_less_1.default.dropdown_arrow, {
114
- [mention_select_module_less_1.default.open]: isOpen,
115
- }) })),
116
- isOpen && (react_1.default.createElement("div", { ref: dropdownRef, className: mention_select_module_less_1.default.dropdown, role: 'listbox' },
117
- showThinking && onThinkingChange && (react_1.default.createElement("div", { className: mention_select_module_less_1.default.thinking_section },
118
- react_1.default.createElement(ThinkingToggle, { enabled: thinkingEnabled, onChange: onThinkingChange }),
119
- react_1.default.createElement("div", { className: mention_select_module_less_1.default.divider }))),
120
- options.map((option, index) => (react_1.default.createElement("div", { key: option.value, className: (0, classnames_1.default)(mention_select_module_less_1.default.option, {
121
- [mention_select_module_less_1.default.active]: index === activeIndex,
122
- [mention_select_module_less_1.default.selected]: option.selected || option.value === value,
123
- [mention_select_module_less_1.default.disabled]: option.disabled,
124
- }), onClick: () => handleSelect(option), role: 'option', "aria-selected": option.selected || option.value === value },
125
- react_1.default.createElement("div", { className: mention_select_module_less_1.default.option_main },
126
- react_1.default.createElement("div", { className: mention_select_module_less_1.default.option_header },
127
- react_1.default.createElement("div", { className: mention_select_module_less_1.default.option_title },
128
- option.icon && react_1.default.createElement(components_1.Icon, { icon: option.icon, className: mention_select_module_less_1.default.option_icon }),
129
- option.iconClass && react_1.default.createElement(components_1.Icon, { iconClass: option.iconClass, className: mention_select_module_less_1.default.option_icon }),
130
- react_1.default.createElement("span", { className: mention_select_module_less_1.default.option_label }, option.label),
131
- option.badge && (react_1.default.createElement("span", { className: mention_select_module_less_1.default.option_badge, style: { backgroundColor: option.badgeColor } }, option.badge)))),
132
- option.description && react_1.default.createElement("div", { className: mention_select_module_less_1.default.option_description }, option.description),
133
- option.tags && option.tags.length > 0 && (react_1.default.createElement("div", { className: mention_select_module_less_1.default.option_tags }, option.tags.map((tag, idx) => (react_1.default.createElement("span", { key: idx, className: mention_select_module_less_1.default.tag }, tag))))))))))))));
134
- };
135
- exports.MentionSelect = MentionSelect;
136
- //# sourceMappingURL=mention-select.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mention-select.js","sourceRoot":"","sources":["../../../../src/browser/components/mention-input/mention-select.tsx"],"names":[],"mappings":"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"}