@opensumi/ide-ai-native 3.9.1-next-1748593694.0 → 3.9.1-next-1748943529.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 (118) hide show
  1. package/lib/browser/chat/chat-model.d.ts.map +1 -1
  2. package/lib/browser/chat/chat-model.js +3 -1
  3. package/lib/browser/chat/chat-model.js.map +1 -1
  4. package/lib/browser/chat/chat-proxy.service.d.ts +0 -2
  5. package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
  6. package/lib/browser/chat/chat-proxy.service.js +50 -57
  7. package/lib/browser/chat/chat-proxy.service.js.map +1 -1
  8. package/lib/browser/chat/chat.view.d.ts.map +1 -1
  9. package/lib/browser/chat/chat.view.js +11 -7
  10. package/lib/browser/chat/chat.view.js.map +1 -1
  11. package/lib/browser/components/ChatMentionInput.d.ts.map +1 -1
  12. package/lib/browser/components/ChatMentionInput.js +123 -27
  13. package/lib/browser/components/ChatMentionInput.js.map +1 -1
  14. package/lib/browser/components/ChatToolRender.module.less +1 -0
  15. package/lib/browser/components/components.module.less +7 -0
  16. package/lib/browser/components/mention-input/mention-input.d.ts.map +1 -1
  17. package/lib/browser/components/mention-input/mention-input.js +155 -13
  18. package/lib/browser/components/mention-input/mention-input.js.map +1 -1
  19. package/lib/browser/components/mention-input/mention-input.module.less +165 -0
  20. package/lib/browser/components/mention-input/types.d.ts +15 -1
  21. package/lib/browser/components/mention-input/types.d.ts.map +1 -1
  22. package/lib/browser/components/mention-input/types.js +1 -0
  23. package/lib/browser/components/mention-input/types.js.map +1 -1
  24. package/lib/browser/context/llm-context.service.d.ts +21 -2
  25. package/lib/browser/context/llm-context.service.d.ts.map +1 -1
  26. package/lib/browser/context/llm-context.service.js +162 -20
  27. package/lib/browser/context/llm-context.service.js.map +1 -1
  28. package/lib/browser/contrib/intelligent-completions/decoration/additions-deletions.decoration.d.ts.map +1 -1
  29. package/lib/browser/contrib/intelligent-completions/decoration/additions-deletions.decoration.js.map +1 -1
  30. package/lib/browser/contrib/intelligent-completions/diff-computer.js +1 -1
  31. package/lib/browser/contrib/intelligent-completions/diff-computer.js.map +1 -1
  32. package/lib/browser/contrib/terminal/terminal.feature.registry.js.map +1 -1
  33. package/lib/browser/index.d.ts.map +1 -1
  34. package/lib/browser/index.js +7 -0
  35. package/lib/browser/index.js.map +1 -1
  36. package/lib/browser/mcp/base-apply.service.d.ts +2 -2
  37. package/lib/browser/mcp/base-apply.service.d.ts.map +1 -1
  38. package/lib/browser/mcp/base-apply.service.js.map +1 -1
  39. package/lib/browser/mcp/tools/getDiagnosticsByPath.js.map +1 -1
  40. package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.js.map +1 -1
  41. package/lib/browser/mcp/tools/handlers/ListDir.js.map +1 -1
  42. package/lib/browser/mcp/tools/runTerminalCmd.js.map +1 -1
  43. package/lib/browser/preferences/schema.d.ts.map +1 -1
  44. package/lib/browser/preferences/schema.js +5 -0
  45. package/lib/browser/preferences/schema.js.map +1 -1
  46. package/lib/browser/rules/rules.contribution.d.ts +29 -0
  47. package/lib/browser/rules/rules.contribution.d.ts.map +1 -0
  48. package/lib/browser/rules/rules.contribution.js +94 -0
  49. package/lib/browser/rules/rules.contribution.js.map +1 -0
  50. package/lib/browser/rules/rules.module.less +174 -0
  51. package/lib/browser/rules/rules.service.d.ts +25 -0
  52. package/lib/browser/rules/rules.service.d.ts.map +1 -0
  53. package/lib/browser/rules/rules.service.js +180 -0
  54. package/lib/browser/rules/rules.service.js.map +1 -0
  55. package/lib/browser/rules/rules.view.d.ts +3 -0
  56. package/lib/browser/rules/rules.view.d.ts.map +1 -0
  57. package/lib/browser/rules/rules.view.js +76 -0
  58. package/lib/browser/rules/rules.view.js.map +1 -0
  59. package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts.map +1 -1
  60. package/lib/browser/widget/inline-stream-diff/live-preview.component.js.map +1 -1
  61. package/lib/common/MDC_PARSER_README.md +171 -0
  62. package/lib/common/index.d.ts +2 -0
  63. package/lib/common/index.d.ts.map +1 -1
  64. package/lib/common/index.js +2 -0
  65. package/lib/common/index.js.map +1 -1
  66. package/lib/common/llm-context.d.ts +19 -0
  67. package/lib/common/llm-context.d.ts.map +1 -1
  68. package/lib/common/llm-context.js.map +1 -1
  69. package/lib/common/mdc-parser.d.ts +60 -0
  70. package/lib/common/mdc-parser.d.ts.map +1 -0
  71. package/lib/common/mdc-parser.js +246 -0
  72. package/lib/common/mdc-parser.js.map +1 -0
  73. package/lib/common/prompts/context-prompt-provider.d.ts +0 -2
  74. package/lib/common/prompts/context-prompt-provider.d.ts.map +1 -1
  75. package/lib/common/prompts/context-prompt-provider.js +35 -29
  76. package/lib/common/prompts/context-prompt-provider.js.map +1 -1
  77. package/lib/common/prompts/system-prompt.d.ts +2 -0
  78. package/lib/common/prompts/system-prompt.d.ts.map +1 -0
  79. package/lib/common/prompts/system-prompt.js +5 -0
  80. package/lib/common/prompts/system-prompt.js.map +1 -0
  81. package/lib/common/types.d.ts +7 -0
  82. package/lib/common/types.d.ts.map +1 -1
  83. package/lib/node/base-language-model.d.ts.map +1 -1
  84. package/lib/node/base-language-model.js.map +1 -1
  85. package/package.json +25 -24
  86. package/src/browser/chat/chat-model.ts +3 -1
  87. package/src/browser/chat/chat-proxy.service.ts +68 -81
  88. package/src/browser/chat/chat.view.tsx +19 -7
  89. package/src/browser/components/ChatMentionInput.tsx +143 -31
  90. package/src/browser/components/ChatToolRender.module.less +1 -0
  91. package/src/browser/components/components.module.less +7 -0
  92. package/src/browser/components/mention-input/mention-input.module.less +165 -0
  93. package/src/browser/components/mention-input/mention-input.tsx +244 -29
  94. package/src/browser/components/mention-input/types.ts +15 -0
  95. package/src/browser/context/llm-context.service.ts +182 -21
  96. package/src/browser/contrib/intelligent-completions/decoration/additions-deletions.decoration.ts +1 -1
  97. package/src/browser/contrib/intelligent-completions/diff-computer.ts +1 -1
  98. package/src/browser/contrib/terminal/terminal.feature.registry.ts +1 -1
  99. package/src/browser/index.ts +8 -0
  100. package/src/browser/mcp/base-apply.service.ts +0 -1
  101. package/src/browser/mcp/tools/getDiagnosticsByPath.ts +1 -1
  102. package/src/browser/mcp/tools/getOpenEditorFileDiagnostics.ts +1 -1
  103. package/src/browser/mcp/tools/handlers/ListDir.ts +1 -1
  104. package/src/browser/mcp/tools/runTerminalCmd.ts +1 -1
  105. package/src/browser/preferences/schema.ts +5 -0
  106. package/src/browser/rules/rules.contribution.ts +105 -0
  107. package/src/browser/rules/rules.module.less +174 -0
  108. package/src/browser/rules/rules.service.ts +189 -0
  109. package/src/browser/rules/rules.view.tsx +127 -0
  110. package/src/browser/widget/inline-stream-diff/live-preview.component.tsx +0 -1
  111. package/src/common/MDC_PARSER_README.md +171 -0
  112. package/src/common/index.ts +3 -0
  113. package/src/common/llm-context.ts +23 -0
  114. package/src/common/mdc-parser.ts +295 -0
  115. package/src/common/prompts/context-prompt-provider.ts +55 -40
  116. package/src/common/prompts/system-prompt.ts +2 -0
  117. package/src/common/types.ts +8 -0
  118. package/src/node/base-language-model.ts +0 -1
@@ -17,6 +17,7 @@ const ide_overlay_1 = require("@opensumi/ide-overlay");
17
17
  const ide_workspace_1 = require("@opensumi/ide-workspace");
18
18
  const common_1 = require("../../common");
19
19
  const mcp_config_commands_1 = require("../mcp/config/mcp-config.commands");
20
+ const rules_contribution_1 = require("../rules/rules.contribution");
20
21
  const components_module_less_1 = tslib_1.__importDefault(require("./components.module.less"));
21
22
  const mention_input_1 = require("./mention-input/mention-input");
22
23
  const types_1 = require("./mention-input/types");
@@ -36,9 +37,13 @@ const ChatMentionInput = (props) => {
36
37
  const outlineTreeService = (0, ide_core_browser_1.useInjectable)(outline_tree_service_1.OutlineTreeService);
37
38
  const prevOutlineItems = (0, react_1.useRef)([]);
38
39
  const preferenceService = (0, ide_core_browser_1.useInjectable)(ide_core_browser_1.PreferenceService);
40
+ const rulesService = (0, ide_core_browser_1.useInjectable)(ide_core_common_1.RulesServiceToken);
39
41
  const handleShowMCPConfig = react_1.default.useCallback(() => {
40
42
  commandService.executeCommand(mcp_config_commands_1.MCPConfigCommands.OPEN_MCP_CONFIG.id);
41
43
  }, [commandService]);
44
+ const handleShowRules = react_1.default.useCallback(() => {
45
+ commandService.executeCommand(rules_contribution_1.RulesCommands.OPEN_RULES_FILE.id);
46
+ }, [commandService]);
42
47
  (0, react_1.useEffect)(() => {
43
48
  if (props.value !== value) {
44
49
  setValue(props.value || '');
@@ -57,6 +62,48 @@ const ChatMentionInput = (props) => {
57
62
  }
58
63
  return symbols;
59
64
  }, [outlineTreeService]);
65
+ // 拆分目录路径为多个层级的辅助函数
66
+ const expandFolderPaths = async (folderPaths, workspaceRootPath) => {
67
+ const expandedPaths = new Set();
68
+ const workspaceUri = new ide_core_common_1.URI(workspaceRootPath);
69
+ // 将所有路径展开为多层级
70
+ for (const folderPath of folderPaths) {
71
+ const uri = new ide_core_common_1.URI(folderPath);
72
+ const relativePath = await workspaceService.asRelativePath(uri);
73
+ if (relativePath === null || relativePath === void 0 ? void 0 : relativePath.path) {
74
+ const pathSegments = relativePath.path.split('/').filter(Boolean);
75
+ // 为每个层级创建路径
76
+ for (let i = 0; i < pathSegments.length; i++) {
77
+ const segmentPath = pathSegments.slice(0, i + 1).join('/');
78
+ const fullPath = workspaceUri.resolve(segmentPath).codeUri.fsPath;
79
+ // 避免添加工作区本身或其上级目录
80
+ if (fullPath !== workspaceRootPath && !workspaceRootPath.startsWith(fullPath)) {
81
+ expandedPaths.add(fullPath);
82
+ }
83
+ }
84
+ }
85
+ else {
86
+ // 如果无法获取相对路径,直接添加(但仍要过滤工作区路径)
87
+ if (folderPath !== workspaceRootPath && !workspaceRootPath.startsWith(folderPath)) {
88
+ expandedPaths.add(folderPath);
89
+ }
90
+ }
91
+ }
92
+ // 转换为 MentionItem 格式
93
+ return Promise.all(Array.from(expandedPaths).map(async (folderPath) => {
94
+ const uri = new ide_core_common_1.URI(folderPath);
95
+ const relativePath = await workspaceService.asRelativePath(uri);
96
+ return {
97
+ id: uri.codeUri.fsPath,
98
+ type: types_1.MentionType.FOLDER,
99
+ text: uri.displayName,
100
+ value: uri.codeUri.fsPath,
101
+ description: (relativePath === null || relativePath === void 0 ? void 0 : relativePath.root) ? relativePath.path : '',
102
+ contextId: uri.codeUri.fsPath,
103
+ icon: (0, components_1.getIcon)('folder'),
104
+ };
105
+ }));
106
+ };
60
107
  // 默认菜单项
61
108
  const defaultMenuItems = [
62
109
  {
@@ -154,25 +201,14 @@ const ChatMentionInput = (props) => {
154
201
  ];
155
202
  },
156
203
  getItems: async (searchText) => {
204
+ var _a, _b;
157
205
  let folders = [];
158
206
  if (!searchText) {
159
207
  const recentFile = await recentFilesManager.getMostRecentlyOpenedFiles();
160
208
  const recentFolder = Array.from(new Set(recentFile
161
209
  .map((file) => new ide_core_common_1.URI(file).parent.codeUri.fsPath)
162
210
  .filter((folder) => { var _a; return folder !== ((_a = workspaceService.workspace) === null || _a === void 0 ? void 0 : _a.uri.toString()) && folder !== '/'; })));
163
- folders = await Promise.all(recentFolder.map(async (folder) => {
164
- const uri = new ide_core_common_1.URI(folder);
165
- const relativePath = await workspaceService.asRelativePath(uri);
166
- return {
167
- id: uri.codeUri.fsPath,
168
- type: types_1.MentionType.FOLDER,
169
- text: uri.displayName,
170
- value: uri.codeUri.fsPath,
171
- description: (relativePath === null || relativePath === void 0 ? void 0 : relativePath.root) ? relativePath.path : '',
172
- contextId: uri.codeUri.fsPath,
173
- icon: (0, components_1.getIcon)('folder'),
174
- };
175
- }));
211
+ folders = await expandFolderPaths(recentFolder, ((_a = workspaceService.workspace) === null || _a === void 0 ? void 0 : _a.uri.toString()) || '');
176
212
  }
177
213
  else {
178
214
  const rootUris = (await workspaceService.roots).map((root) => new ide_core_common_1.URI(root.uri).codeUri.fsPath.toString());
@@ -187,21 +223,11 @@ const ChatMentionInput = (props) => {
187
223
  const folders = Array.from(new Set(files
188
224
  .map((file) => new ide_core_common_1.URI(file).parent.toString())
189
225
  .filter((folder) => { var _a; return folder !== ((_a = workspaceService.workspace) === null || _a === void 0 ? void 0 : _a.uri.toString()); })));
190
- return Promise.all(folders.map(async (folder) => {
191
- var _a;
192
- const uri = new ide_core_common_1.URI(folder);
193
- return {
194
- id: uri.codeUri.fsPath,
195
- type: types_1.MentionType.FOLDER,
196
- text: uri.displayName,
197
- value: uri.codeUri.fsPath,
198
- description: ((_a = (await workspaceService.asRelativePath(uri.parent))) === null || _a === void 0 ? void 0 : _a.path) || '',
199
- contextId: uri.codeUri.fsPath,
200
- icon: (0, components_1.getIcon)('folder'),
201
- };
202
- }));
226
+ return await expandFolderPaths(folders, ((_b = workspaceService.workspace) === null || _b === void 0 ? void 0 : _b.uri.toString()) || '');
203
227
  }
204
- return folders.filter((folder) => { var _a; return folder.id !== new ide_core_common_1.URI((_a = workspaceService.workspace) === null || _a === void 0 ? void 0 : _a.uri).codeUri.fsPath; });
228
+ return folders
229
+ .filter(Boolean)
230
+ .filter((folder) => { var _a; return folder.id !== new ide_core_common_1.URI((_a = workspaceService.workspace) === null || _a === void 0 ? void 0 : _a.uri).codeUri.fsPath; });
205
231
  },
206
232
  },
207
233
  {
@@ -251,6 +277,69 @@ const ChatMentionInput = (props) => {
251
277
  }
252
278
  },
253
279
  },
280
+ {
281
+ id: types_1.MentionType.RULE,
282
+ type: types_1.MentionType.RULE,
283
+ text: 'Rule',
284
+ icon: (0, components_1.getIcon)('rules'),
285
+ getHighestLevelItems: () => [],
286
+ getItems: async (searchText) => {
287
+ const rules = await rulesService.projectRules;
288
+ const mappedRules = rules.map((rule) => {
289
+ const uri = new ide_core_common_1.URI(rule.path);
290
+ return {
291
+ id: uri.codeUri.fsPath,
292
+ type: types_1.MentionType.RULE,
293
+ text: uri.displayName,
294
+ value: uri.codeUri.fsPath,
295
+ contextId: uri.codeUri.fsPath,
296
+ description: rule.description,
297
+ icon: (0, components_1.getIcon)('rules'),
298
+ };
299
+ });
300
+ if (!searchText) {
301
+ return mappedRules.slice(0, 10);
302
+ }
303
+ const lowerSearchText = searchText.toLocaleLowerCase();
304
+ return mappedRules
305
+ .filter((rule) => rule.text.toLocaleLowerCase().includes(lowerSearchText))
306
+ .sort((a, b) => {
307
+ var _a, _b;
308
+ const aTextLower = a.text.toLocaleLowerCase();
309
+ const bTextLower = b.text.toLocaleLowerCase();
310
+ const aDescLower = ((_a = a.description) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase()) || '';
311
+ const bDescLower = ((_b = b.description) === null || _b === void 0 ? void 0 : _b.toLocaleLowerCase()) || '';
312
+ // 优先级:文件名包含搜索文本 > 描述包含搜索文本
313
+ const aTextMatch = aTextLower.includes(lowerSearchText);
314
+ const bTextMatch = bTextLower.includes(lowerSearchText);
315
+ const aDescMatch = aDescLower.includes(lowerSearchText);
316
+ const bDescMatch = bDescLower.includes(lowerSearchText);
317
+ if (aTextMatch && bTextMatch) {
318
+ // 如果都匹配文件名,按文件名字母序排序
319
+ return aTextLower.localeCompare(bTextLower);
320
+ }
321
+ if (aTextMatch && !bTextMatch) {
322
+ return -1;
323
+ }
324
+ if (!aTextMatch && bTextMatch) {
325
+ return 1;
326
+ }
327
+ // 如果文件名都不匹配,比较描述
328
+ if (aDescMatch && bDescMatch) {
329
+ return aTextLower.localeCompare(bTextLower);
330
+ }
331
+ if (aDescMatch && !bDescMatch) {
332
+ return -1;
333
+ }
334
+ if (!aDescMatch && bDescMatch) {
335
+ return 1;
336
+ }
337
+ // 如果都不匹配,按文件名字母序排序
338
+ return aTextLower.localeCompare(bTextLower);
339
+ })
340
+ .slice(0, 10);
341
+ },
342
+ },
254
343
  ];
255
344
  const defaultMentionInputFooterOptions = (0, react_1.useMemo)(() => ({
256
345
  modelOptions: [
@@ -266,6 +355,13 @@ const ChatMentionInput = (props) => {
266
355
  onClick: handleShowMCPConfig,
267
356
  position: types_1.FooterButtonPosition.LEFT,
268
357
  },
358
+ {
359
+ id: 'rules',
360
+ icon: 'rules',
361
+ title: 'Rules',
362
+ onClick: handleShowRules,
363
+ position: types_1.FooterButtonPosition.LEFT,
364
+ },
269
365
  {
270
366
  id: 'upload-image',
271
367
  icon: 'image',
@@ -1 +1 @@
1
- {"version":3,"file":"ChatMentionInput.js","sourceRoot":"","sources":["../../../src/browser/components/ChatMentionInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatMentionInput.js","sourceRoot":"","sources":["../../../src/browser/components/ChatMentionInput.tsx"],"names":[],"mappings":"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"}
@@ -52,6 +52,7 @@
52
52
  flex: 1;
53
53
  text-overflow: ellipsis;
54
54
  direction: rtl;
55
+ unicode-bidi: plaintext;
55
56
  overflow: hidden;
56
57
  white-space: nowrap;
57
58
  display: inline-block;
@@ -620,6 +620,13 @@
620
620
  vertical-align: middle;
621
621
  font-size: 12px;
622
622
  word-break: break-all;
623
+ max-width: 100px;
624
+ text-overflow: ellipsis;
625
+ direction: rtl;
626
+ unicode-bidi: plaintext;
627
+ overflow: hidden;
628
+ white-space: nowrap;
629
+ display: inline-block;
623
630
  }
624
631
 
625
632
  .thumbnail_container {
@@ -1 +1 @@
1
- {"version":3,"file":"mention-input.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/mention-input/mention-input.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,EAGL,iBAAiB,EAIlB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,gBAAgB,WAAW,CAAC;AAEzC,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAulCpD,CAAC"}
1
+ {"version":3,"file":"mention-input.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/mention-input/mention-input.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,EAGL,iBAAiB,EAIlB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,gBAAgB,WAAW,CAAC;AAEzC,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA6yCpD,CAAC"}
@@ -42,7 +42,10 @@ const MentionInput = ({ mentionItems = [], onSend, onStop, loading = false, ment
42
42
  const [attachedFiles, setAttachedFiles] = React.useState({
43
43
  files: [],
44
44
  folders: [],
45
+ rules: [],
45
46
  });
47
+ // 添加用于跟踪 mention_tag 的状态
48
+ const prevMentionTagsRef = React.useRef([]);
46
49
  const getCurrentItems = () => {
47
50
  if (mentionState.level === 0) {
48
51
  return mentionItems;
@@ -134,13 +137,13 @@ const MentionInput = ({ mentionItems = [], onSend, onStop, loading = false, ment
134
137
  }
135
138
  }, [debouncedSecondLevelFilter, mentionState.level, mentionState.parentType]);
136
139
  React.useEffect(() => {
137
- const disposable = contextService === null || contextService === void 0 ? void 0 : contextService.onDidContextFilesChangeEvent(({ attached, attachedFolders }) => {
138
- setAttachedFiles({ files: attached, folders: attachedFolders });
140
+ const disposable = contextService === null || contextService === void 0 ? void 0 : contextService.onDidContextFilesChangeEvent(({ attached, attachedFolders, attachedRules }) => {
141
+ setAttachedFiles({ files: attached, folders: attachedFolders, rules: attachedRules });
139
142
  });
140
143
  return () => {
141
144
  disposable === null || disposable === void 0 ? void 0 : disposable.dispose();
142
145
  };
143
- }, [contextService]);
146
+ }, []);
144
147
  // 获取光标位置
145
148
  const getCursorPosition = (element) => {
146
149
  const selection = window.getSelection();
@@ -159,6 +162,35 @@ const MentionInput = ({ mentionItems = [], onSend, onStop, loading = false, ment
159
162
  setIsNavigatingHistory(false);
160
163
  setHistoryIndex(-1);
161
164
  }
165
+ // 检测 mention_tag 的删除
166
+ if (editorRef.current) {
167
+ const currentMentionTags = Array.from(editorRef.current.querySelectorAll(`.${mention_input_module_less_1.default.mention_tag}`)).map((tag) => ({
168
+ id: tag.getAttribute('data-id') || '',
169
+ type: tag.getAttribute('data-type') || '',
170
+ contextId: tag.getAttribute('data-context-id') || '',
171
+ }));
172
+ // 找出被删除的 mention_tag
173
+ const deletedTags = prevMentionTagsRef.current.filter((prevTag) => !currentMentionTags.some((currentTag) => currentTag.id === prevTag.id &&
174
+ currentTag.type === prevTag.type &&
175
+ currentTag.contextId === prevTag.contextId));
176
+ // 清理被删除的 mention_tag 对应的 context
177
+ deletedTags.forEach((deletedTag) => {
178
+ if (deletedTag.contextId) {
179
+ const uri = new ide_utils_1.URI(deletedTag.contextId);
180
+ if (deletedTag.type === types_1.MentionType.FILE) {
181
+ removeContext(types_1.MentionType.FILE, uri);
182
+ }
183
+ else if (deletedTag.type === types_1.MentionType.FOLDER) {
184
+ removeContext(types_1.MentionType.FOLDER, uri);
185
+ }
186
+ else if (deletedTag.type === types_1.MentionType.RULE) {
187
+ removeContext(types_1.MentionType.RULE, uri);
188
+ }
189
+ }
190
+ });
191
+ // 更新 mention_tag 状态
192
+ prevMentionTagsRef.current = currentMentionTags;
193
+ }
162
194
  const selection = window.getSelection();
163
195
  if (!selection || !selection.rangeCount || !editorRef.current) {
164
196
  return;
@@ -417,7 +449,7 @@ const MentionInput = ({ mentionItems = [], onSend, onStop, loading = false, ment
417
449
  const imageFiles = [];
418
450
  // eslint-disable-next-line @typescript-eslint/prefer-for-of
419
451
  for (let i = 0; i < items.length; i++) {
420
- if (items[i].kind === 'file' && items[i].type.startsWith('image/')) {
452
+ if (items[i].kind === types_1.MentionType.FILE && items[i].type.startsWith('image/')) {
421
453
  const file = items[i].getAsFile();
422
454
  if (file) {
423
455
  imageFiles.push(file);
@@ -484,6 +516,13 @@ const MentionInput = ({ mentionItems = [], onSend, onStop, loading = false, ment
484
516
  if (placeholder && !editorRef.current.textContent) {
485
517
  editorRef.current.setAttribute('data-placeholder', placeholder);
486
518
  }
519
+ // 初始化 mention_tag 状态
520
+ const initialMentionTags = Array.from(editorRef.current.querySelectorAll(`.${mention_input_module_less_1.default.mention_tag}`)).map((tag) => ({
521
+ id: tag.getAttribute('data-id') || '',
522
+ type: tag.getAttribute('data-type') || '',
523
+ contextId: tag.getAttribute('data-context-id') || '',
524
+ }));
525
+ prevMentionTagsRef.current = initialMentionTags;
487
526
  }
488
527
  }, [placeholder]);
489
528
  // 处理点击事件
@@ -614,6 +653,12 @@ const MentionInput = ({ mentionItems = [], onSend, onStop, loading = false, ment
614
653
  contextService === null || contextService === void 0 ? void 0 : contextService.addFileToContext(new ide_utils_1.URI(item.contextId), [item.symbol.range.startLineNumber, item.symbol.range.endLineNumber], true);
615
654
  }
616
655
  }
656
+ else if (item.type === types_1.MentionType.RULE) {
657
+ const iconSpan = document.createElement('span');
658
+ iconSpan.className = (0, classnames_1.default)(mention_input_module_less_1.default.mention_icon, (0, components_1.getIcon)('rules'));
659
+ mentionTag.appendChild(iconSpan);
660
+ contextService === null || contextService === void 0 ? void 0 : contextService.addRuleToContext(new ide_utils_1.URI(item.contextId), true);
661
+ }
617
662
  const workspace = workspaceService === null || workspaceService === void 0 ? void 0 : workspaceService.workspace;
618
663
  let relativePath = item.text;
619
664
  if (workspace && item.contextId) {
@@ -700,10 +745,10 @@ const MentionInput = ({ mentionItems = [], onSend, onStop, loading = false, ment
700
745
  mentionTag.dataset.contextId = item.contextId || '';
701
746
  mentionTag.contentEditable = 'false';
702
747
  // 为 file 和 folder 类型添加图标
703
- if (item.type === 'file' || item.type === 'folder') {
748
+ if (item.type === types_1.MentionType.FILE || item.type === 'folder') {
704
749
  // 创建图标容器
705
750
  const iconSpan = document.createElement('span');
706
- iconSpan.className = (0, classnames_1.default)(mention_input_module_less_1.default.mention_icon, item.type === 'file' ? labelService === null || labelService === void 0 ? void 0 : labelService.getIcon(new ide_utils_1.URI(item.text)) : (0, components_1.getIcon)('folder'));
751
+ iconSpan.className = (0, classnames_1.default)(mention_input_module_less_1.default.mention_icon, item.type === types_1.MentionType.FILE ? labelService === null || labelService === void 0 ? void 0 : labelService.getIcon(new ide_utils_1.URI(item.text)) : (0, components_1.getIcon)('folder'));
707
752
  mentionTag.appendChild(iconSpan);
708
753
  }
709
754
  const workspace = workspaceService === null || workspaceService === void 0 ? void 0 : workspaceService.workspace;
@@ -835,6 +880,56 @@ const MentionInput = ({ mentionItems = [], onSend, onStop, loading = false, ment
835
880
  const handleClearContext = React.useCallback(() => {
836
881
  contextService === null || contextService === void 0 ? void 0 : contextService.cleanFileContext();
837
882
  }, [contextService]);
883
+ const handleTitleClick = React.useCallback(() => {
884
+ if (!editorRef.current) {
885
+ return;
886
+ }
887
+ // 聚焦输入框
888
+ editorRef.current.focus();
889
+ // 获取当前光标位置
890
+ const selection = window.getSelection();
891
+ if (!selection) {
892
+ return;
893
+ }
894
+ // 在当前位置插入 @ 符号
895
+ const range = document.createRange();
896
+ // 如果编辑器为空,直接插入
897
+ if (!editorRef.current.textContent || editorRef.current.textContent.trim() === '') {
898
+ editorRef.current.innerHTML = '@';
899
+ range.setStart(editorRef.current.firstChild || editorRef.current, 1);
900
+ range.setEnd(editorRef.current.firstChild || editorRef.current, 1);
901
+ }
902
+ else {
903
+ // 当输入框有内容时,总是在末尾插入 @ 符号
904
+ const textNode = document.createTextNode(' @');
905
+ // 移动到编辑器末尾
906
+ range.selectNodeContents(editorRef.current);
907
+ range.collapse(false); // 移动到末尾
908
+ // 在末尾插入空格和 @ 符号
909
+ range.insertNode(textNode);
910
+ range.setStartAfter(textNode);
911
+ range.setEndAfter(textNode);
912
+ }
913
+ // 设置新的光标位置
914
+ selection.removeAllRanges();
915
+ selection.addRange(range);
916
+ // 获取插入后的光标位置
917
+ const newCursorPos = getCursorPosition(editorRef.current);
918
+ // 激活菜单状态
919
+ setMentionState({
920
+ active: true,
921
+ startPos: newCursorPos,
922
+ filter: '@',
923
+ position: { top: 0, left: 0 },
924
+ activeIndex: 0,
925
+ level: 0,
926
+ parentType: null,
927
+ secondLevelFilter: '',
928
+ inlineSearchActive: false,
929
+ inlineSearchStartPos: null,
930
+ loading: false,
931
+ });
932
+ }, []);
838
933
  const handleStop = React.useCallback(() => {
839
934
  if (onStop) {
840
935
  onStop();
@@ -845,14 +940,67 @@ const MentionInput = ({ mentionItems = [], onSend, onStop, loading = false, ment
845
940
  .filter((button) => button.position === position)
846
941
  .map((button) => (React.createElement(components_1.Popover, { key: button.id, overlayClassName: mention_input_module_less_1.default.popover_icon, id: `ai-chat-${button.id}`, position: components_1.PopoverPosition.top, title: button.title },
847
942
  React.createElement(ai_native_1.EnhanceIcon, { className: (0, classnames_1.default)(button.icon ? (0, components_1.getIcon)(button.icon) : button.iconClass, mention_input_module_less_1.default[`${button.id}_logo`]), tabIndex: 0, role: 'button', ariaLabel: button.title, onClick: button.onClick })))), [footerConfig.buttons]);
848
- const hasContext = React.useMemo(() => attachedFiles.files.length > 0 || attachedFiles.folders.length > 0, [attachedFiles]);
943
+ const hasContext = React.useMemo(() => attachedFiles.files.length > 0 || attachedFiles.folders.length > 0 || attachedFiles.rules.length > 0, [attachedFiles]);
849
944
  const renderModelSelectorTip = React.useCallback((children) => {
850
945
  if (footerConfig.disableModelSelector) {
851
946
  return (React.createElement(components_1.Popover, { id: 'ai-chat-model-selector', title: (0, ide_core_browser_1.localize)('aiNative.chat.modelSelector.disableTip'), position: components_1.PopoverPosition.top }, children));
852
947
  }
853
948
  return children;
854
949
  }, [footerConfig.disableModelSelector]);
950
+ const removeContext = React.useCallback((type, uri) => {
951
+ if (type === types_1.MentionType.FILE) {
952
+ contextService === null || contextService === void 0 ? void 0 : contextService.removeFileFromContext(uri, true);
953
+ }
954
+ else if (type === types_1.MentionType.FOLDER) {
955
+ contextService === null || contextService === void 0 ? void 0 : contextService.removeFolderFromContext(uri);
956
+ }
957
+ else if (type === types_1.MentionType.RULE) {
958
+ contextService === null || contextService === void 0 ? void 0 : contextService.removeRuleFromContext(uri);
959
+ }
960
+ }, [contextService]);
961
+ const renderContextPreview = React.useCallback(() => (React.createElement("div", { className: mention_input_module_less_1.default.context_preview_container },
962
+ React.createElement("span", { className: (0, classnames_1.default)(mention_input_module_less_1.default.context_preview_title, hasContext && mention_input_module_less_1.default.has_context), onClick: handleTitleClick }, !hasContext ? (0, ide_core_browser_1.localize)('aiNative.chat.context.title') : ''),
963
+ attachedFiles.files.map((file, index) => (React.createElement("div", { key: `file-${index}`, className: mention_input_module_less_1.default.context_preview_item, "data-type": types_1.MentionType.FILE, onClick: () => contextService === null || contextService === void 0 ? void 0 : contextService.removeFileFromContext(file.uri, true) },
964
+ React.createElement(components_1.Icon, { iconClass: (0, classnames_1.default)((labelService === null || labelService === void 0 ? void 0 : labelService.getIcon(file.uri)) || types_1.MentionType.FILE, mention_input_module_less_1.default.context_preview_item_icon, mention_input_module_less_1.default.icon) }),
965
+ React.createElement(components_1.Icon, { iconClass: (0, classnames_1.default)(mention_input_module_less_1.default.close_icon, (0, components_1.getIcon)('close')), onClick: () => removeContext(types_1.MentionType.FILE, file.uri) }),
966
+ React.createElement("span", { className: mention_input_module_less_1.default.context_preview_item_text }, (workspaceService === null || workspaceService === void 0 ? void 0 : workspaceService.workspace)
967
+ ? file.uri.toString().replace(workspaceService.workspace.uri.toString(), '').slice(1)
968
+ : file.uri.toString())))),
969
+ attachedFiles.folders.map((folder, index) => (React.createElement("div", { key: `folder-${index}`, className: mention_input_module_less_1.default.context_preview_item, "data-type": 'folder', onClick: () => contextService === null || contextService === void 0 ? void 0 : contextService.removeFileFromContext(folder.uri, true) },
970
+ React.createElement(components_1.Icon, { iconClass: (0, classnames_1.default)((0, components_1.getIcon)('folder'), mention_input_module_less_1.default.context_preview_item_icon, mention_input_module_less_1.default.icon) }),
971
+ React.createElement(components_1.Icon, { iconClass: (0, classnames_1.default)(mention_input_module_less_1.default.close_icon, (0, components_1.getIcon)('close')), onClick: () => removeContext(types_1.MentionType.FOLDER, folder.uri) }),
972
+ React.createElement("span", { className: mention_input_module_less_1.default.context_preview_item_text }, (workspaceService === null || workspaceService === void 0 ? void 0 : workspaceService.workspace)
973
+ ? folder.uri.toString().replace(workspaceService.workspace.uri.toString(), '').slice(1)
974
+ : folder.uri.toString())))),
975
+ attachedFiles.rules.map((rule, index) => {
976
+ var _a;
977
+ return (React.createElement("div", { key: `rule-${index}`, className: mention_input_module_less_1.default.context_preview_item, "data-type": 'rule', onClick: () => {
978
+ // 由于没有专门的删除规则方法,我们重新构建规则列表
979
+ contextService === null || contextService === void 0 ? void 0 : contextService.cleanFileContext();
980
+ // 重新添加除了当前要删除的规则之外的所有上下文
981
+ attachedFiles.files.forEach((file) => contextService === null || contextService === void 0 ? void 0 : contextService.addFileToContext(file.uri, file.selection, true));
982
+ attachedFiles.folders.forEach((folder) => contextService === null || contextService === void 0 ? void 0 : contextService.addFolderToContext(folder.uri, true));
983
+ attachedFiles.rules.forEach((r, i) => {
984
+ if (i !== index) {
985
+ contextService === null || contextService === void 0 ? void 0 : contextService.addRuleToContext(new ide_utils_1.URI(r.path), true);
986
+ }
987
+ });
988
+ } },
989
+ React.createElement(components_1.Icon, { iconClass: (0, classnames_1.default)((0, components_1.getIcon)('rules'), mention_input_module_less_1.default.context_preview_item_icon, mention_input_module_less_1.default.icon) }),
990
+ React.createElement(components_1.Icon, { iconClass: (0, classnames_1.default)(mention_input_module_less_1.default.close_icon, (0, components_1.getIcon)('close')), onClick: () => removeContext(types_1.MentionType.RULE, new ide_utils_1.URI(rule.path)) }),
991
+ React.createElement("span", { className: mention_input_module_less_1.default.context_preview_item_text }, ((_a = rule.path.split('/').pop()) === null || _a === void 0 ? void 0 : _a.replace('.mdc', '')) || 'Unknown Rule')));
992
+ }))), [
993
+ handleClearContext,
994
+ hasContext,
995
+ attachedFiles,
996
+ workspaceService,
997
+ labelService,
998
+ contextService,
999
+ handleTitleClick,
1000
+ removeContext,
1001
+ ]);
855
1002
  return (React.createElement("div", { className: mention_input_module_less_1.default.input_container },
1003
+ renderContextPreview(),
856
1004
  mentionState.active && (React.createElement("div", { className: mention_input_module_less_1.default.mention_panel_container },
857
1005
  React.createElement(mention_panel_1.MentionPanel, { items: getCurrentItems(), activeIndex: mentionState.activeIndex, onSelectItem: (item) => handleSelectItem(item, true), position: { top: 0, left: 0 }, filter: mentionState.level === 0 ? mentionState.filter : mentionState.secondLevelFilter, visible: true, level: mentionState.level, loading: mentionState.loading }))),
858
1006
  React.createElement("div", { className: mention_input_module_less_1.default.editor_area },
@@ -864,12 +1012,6 @@ const MentionInput = ({ mentionItems = [], onSend, onStop, loading = false, ment
864
1012
  renderButtons(types_1.FooterButtonPosition.LEFT)),
865
1013
  React.createElement("div", { className: mention_input_module_less_1.default.right_control },
866
1014
  renderButtons(types_1.FooterButtonPosition.RIGHT),
867
- hasContext && (React.createElement(components_1.Popover, { overlayClassName: mention_input_module_less_1.default.popover_icon, id: 'ai-chat-clear-context', position: components_1.PopoverPosition.top, content: (0, ide_core_browser_1.localize)('aiNative.chat.context.clear') },
868
- React.createElement("div", { className: mention_input_module_less_1.default.context_container, onClick: handleClearContext },
869
- React.createElement("div", { className: mention_input_module_less_1.default.context_icon },
870
- React.createElement(components_1.Icon, { icon: 'out-link' }),
871
- React.createElement(components_1.Icon, { icon: 'close' })),
872
- React.createElement("div", { className: mention_input_module_less_1.default.context_description }, (0, ide_core_browser_1.formatLocalize)('aiNative.chat.context.description', attachedFiles.files.length + attachedFiles.folders.length))))),
873
1015
  React.createElement(components_1.Popover, { overlayClassName: mention_input_module_less_1.default.popover_icon, id: 'ai-chat-send', position: components_1.PopoverPosition.top, content: !loading ? 'Send' : 'Stop' }, !loading ? (React.createElement(ai_native_1.EnhanceIcon, { wrapperClassName: mention_input_module_less_1.default.send_logo, className: (0, classnames_1.default)((0, components_1.getIcon)('send-outlined'), mention_input_module_less_1.default.send_logo_icon), tabIndex: 0, role: 'button', onClick: handleSend, ariaLabel: 'Send' })) : (React.createElement(ai_native_1.EnhanceIcon, { wrapperClassName: mention_input_module_less_1.default.stop_logo, className: (0, classnames_1.default)((0, components_1.getIcon)('stop'), mention_input_module_less_1.default.stop_logo_icon), tabIndex: 0, role: 'button', ariaLabel: 'Stop', onClick: handleStop })))))));
874
1016
  };
875
1017
  exports.MentionInput = MentionInput;