@opensumi/ide-ai-native 3.7.2-next-1740066619.0 → 3.7.2-next-1740323956.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 (250) hide show
  1. package/lib/browser/ai-core.contribution.d.ts.map +1 -1
  2. package/lib/browser/ai-core.contribution.js +4 -0
  3. package/lib/browser/ai-core.contribution.js.map +1 -1
  4. package/lib/browser/chat/chat-agent.service.d.ts.map +1 -1
  5. package/lib/browser/chat/chat-agent.service.js +6 -0
  6. package/lib/browser/chat/chat-agent.service.js.map +1 -1
  7. package/lib/browser/chat/chat-model.d.ts.map +1 -1
  8. package/lib/browser/chat/chat-model.js +5 -23
  9. package/lib/browser/chat/chat-model.js.map +1 -1
  10. package/lib/browser/chat/chat-proxy.service.d.ts +1 -0
  11. package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
  12. package/lib/browser/chat/chat-proxy.service.js +8 -1
  13. package/lib/browser/chat/chat-proxy.service.js.map +1 -1
  14. package/lib/browser/chat/chat.internal.service.d.ts +4 -0
  15. package/lib/browser/chat/chat.internal.service.d.ts.map +1 -1
  16. package/lib/browser/chat/chat.internal.service.js +10 -1
  17. package/lib/browser/chat/chat.internal.service.js.map +1 -1
  18. package/lib/browser/chat/chat.view.d.ts.map +1 -1
  19. package/lib/browser/chat/chat.view.js +2 -2
  20. package/lib/browser/chat/chat.view.js.map +1 -1
  21. package/lib/browser/components/ChatContext/index.d.ts.map +1 -1
  22. package/lib/browser/components/ChatContext/index.js +18 -2
  23. package/lib/browser/components/ChatContext/index.js.map +1 -1
  24. package/lib/browser/components/ChatContext/style.module.less +12 -0
  25. package/lib/browser/components/ChatEditor.d.ts +1 -0
  26. package/lib/browser/components/ChatEditor.d.ts.map +1 -1
  27. package/lib/browser/components/ChatEditor.js +3 -3
  28. package/lib/browser/components/ChatEditor.js.map +1 -1
  29. package/lib/browser/components/ChatMarkdown.d.ts +1 -0
  30. package/lib/browser/components/ChatMarkdown.d.ts.map +1 -1
  31. package/lib/browser/components/ChatMarkdown.js +2 -2
  32. package/lib/browser/components/ChatMarkdown.js.map +1 -1
  33. package/lib/browser/components/ChatReply.d.ts.map +1 -1
  34. package/lib/browser/components/ChatReply.js +6 -8
  35. package/lib/browser/components/ChatReply.js.map +1 -1
  36. package/lib/browser/components/ChatToolRender.d.ts +1 -0
  37. package/lib/browser/components/ChatToolRender.d.ts.map +1 -1
  38. package/lib/browser/components/ChatToolRender.js +25 -7
  39. package/lib/browser/components/ChatToolRender.js.map +1 -1
  40. package/lib/browser/components/components.module.less +3 -2
  41. package/lib/browser/context/llm-context.service.d.ts +1 -0
  42. package/lib/browser/context/llm-context.service.d.ts.map +1 -1
  43. package/lib/browser/context/llm-context.service.js +24 -18
  44. package/lib/browser/context/llm-context.service.js.map +1 -1
  45. package/lib/browser/index.d.ts.map +1 -1
  46. package/lib/browser/index.js +11 -12
  47. package/lib/browser/index.js.map +1 -1
  48. package/lib/browser/mcp/base-apply.service.d.ts +67 -0
  49. package/lib/browser/mcp/base-apply.service.d.ts.map +1 -0
  50. package/lib/browser/mcp/base-apply.service.js +290 -0
  51. package/lib/browser/mcp/base-apply.service.js.map +1 -0
  52. package/lib/browser/mcp/mcp-server-proxy.service.d.ts +6 -1
  53. package/lib/browser/mcp/mcp-server-proxy.service.d.ts.map +1 -1
  54. package/lib/browser/mcp/mcp-server-proxy.service.js +2 -1
  55. package/lib/browser/mcp/mcp-server-proxy.service.js.map +1 -1
  56. package/lib/browser/mcp/mcp-server.feature.registry.d.ts +5 -1
  57. package/lib/browser/mcp/mcp-server.feature.registry.d.ts.map +1 -1
  58. package/lib/browser/mcp/mcp-server.feature.registry.js +17 -1
  59. package/lib/browser/mcp/mcp-server.feature.registry.js.map +1 -1
  60. package/lib/browser/mcp/tools/components/EditFile.d.ts +3 -0
  61. package/lib/browser/mcp/tools/components/EditFile.d.ts.map +1 -0
  62. package/lib/browser/mcp/tools/components/EditFile.js +101 -0
  63. package/lib/browser/mcp/tools/components/EditFile.js.map +1 -0
  64. package/lib/browser/mcp/tools/components/SearchResult.d.ts +11 -0
  65. package/lib/browser/mcp/tools/components/SearchResult.d.ts.map +1 -0
  66. package/lib/browser/mcp/tools/components/SearchResult.js +60 -0
  67. package/lib/browser/mcp/tools/components/SearchResult.js.map +1 -0
  68. package/lib/browser/mcp/tools/components/index.module.less +132 -0
  69. package/lib/browser/mcp/tools/createNewFileWithText.d.ts.map +1 -1
  70. package/lib/browser/mcp/tools/createNewFileWithText.js +1 -2
  71. package/lib/browser/mcp/tools/createNewFileWithText.js.map +1 -1
  72. package/lib/browser/mcp/tools/{getSelectedText.d.ts → editFile.d.ts} +3 -3
  73. package/lib/browser/mcp/tools/editFile.d.ts.map +1 -0
  74. package/lib/browser/mcp/tools/editFile.js +95 -0
  75. package/lib/browser/mcp/tools/editFile.js.map +1 -0
  76. package/lib/browser/mcp/tools/{findFilesByNameSubstring.d.ts → fileSearch.d.ts} +3 -2
  77. package/lib/browser/mcp/tools/fileSearch.d.ts.map +1 -0
  78. package/lib/browser/mcp/tools/fileSearch.js +94 -0
  79. package/lib/browser/mcp/tools/fileSearch.js.map +1 -0
  80. package/lib/browser/mcp/tools/getDiagnosticsByPath.d.ts.map +1 -1
  81. package/lib/browser/mcp/tools/getDiagnosticsByPath.js +1 -2
  82. package/lib/browser/mcp/tools/getDiagnosticsByPath.js.map +1 -1
  83. package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.d.ts.map +1 -1
  84. package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.js +1 -2
  85. package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.js.map +1 -1
  86. package/lib/browser/mcp/tools/{getFileTextByPath.d.ts → grepSearch.d.ts} +4 -3
  87. package/lib/browser/mcp/tools/grepSearch.d.ts.map +1 -0
  88. package/lib/browser/mcp/tools/grepSearch.js +118 -0
  89. package/lib/browser/mcp/tools/grepSearch.js.map +1 -0
  90. package/lib/browser/mcp/tools/handlers/EditFile.d.ts +10 -0
  91. package/lib/browser/mcp/tools/handlers/EditFile.d.ts.map +1 -0
  92. package/lib/browser/mcp/tools/handlers/EditFile.js +28 -0
  93. package/lib/browser/mcp/tools/handlers/EditFile.js.map +1 -0
  94. package/lib/browser/mcp/tools/handlers/ReadFile.d.ts +6 -0
  95. package/lib/browser/mcp/tools/handlers/ReadFile.d.ts.map +1 -1
  96. package/lib/browser/mcp/tools/handlers/ReadFile.js +14 -0
  97. package/lib/browser/mcp/tools/handlers/ReadFile.js.map +1 -1
  98. package/lib/browser/mcp/tools/handlers/utils.d.ts +2 -0
  99. package/lib/browser/mcp/tools/handlers/utils.d.ts.map +1 -0
  100. package/lib/browser/mcp/tools/handlers/utils.js +7 -0
  101. package/lib/browser/mcp/tools/handlers/utils.js.map +1 -0
  102. package/lib/browser/mcp/tools/listDir.d.ts.map +1 -1
  103. package/lib/browser/mcp/tools/listDir.js +3 -4
  104. package/lib/browser/mcp/tools/listDir.js.map +1 -1
  105. package/lib/browser/mcp/tools/readFile.d.ts.map +1 -1
  106. package/lib/browser/mcp/tools/readFile.js +3 -4
  107. package/lib/browser/mcp/tools/readFile.js.map +1 -1
  108. package/lib/browser/mcp/tools/runTerminalCmd.d.ts.map +1 -1
  109. package/lib/browser/mcp/tools/runTerminalCmd.js +1 -2
  110. package/lib/browser/mcp/tools/runTerminalCmd.js.map +1 -1
  111. package/lib/browser/model/msg-history-manager.d.ts +5 -0
  112. package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
  113. package/lib/browser/model/msg-history-manager.js +14 -0
  114. package/lib/browser/model/msg-history-manager.js.map +1 -1
  115. package/lib/browser/preferences/schema.d.ts.map +1 -1
  116. package/lib/browser/preferences/schema.js +5 -0
  117. package/lib/browser/preferences/schema.js.map +1 -1
  118. package/lib/browser/types.d.ts +14 -10
  119. package/lib/browser/types.d.ts.map +1 -1
  120. package/lib/browser/types.js +1 -2
  121. package/lib/browser/types.js.map +1 -1
  122. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts +1 -0
  123. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts.map +1 -1
  124. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js +3 -0
  125. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js.map +1 -1
  126. package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts +4 -0
  127. package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts.map +1 -1
  128. package/lib/browser/widget/inline-stream-diff/live-preview.component.js.map +1 -1
  129. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.d.ts.map +1 -1
  130. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js +1 -0
  131. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js.map +1 -1
  132. package/lib/common/index.d.ts +1 -0
  133. package/lib/common/index.d.ts.map +1 -1
  134. package/lib/common/index.js.map +1 -1
  135. package/lib/common/mcp-server-manager.d.ts +1 -1
  136. package/lib/common/mcp-server-manager.d.ts.map +1 -1
  137. package/lib/common/mcp-server-manager.js.map +1 -1
  138. package/lib/common/prompts/context-prompt-provider.d.ts +14 -0
  139. package/lib/common/prompts/context-prompt-provider.d.ts.map +1 -0
  140. package/lib/common/prompts/context-prompt-provider.js +38 -0
  141. package/lib/common/prompts/context-prompt-provider.js.map +1 -0
  142. package/lib/common/tool-invocation-registry.d.ts +2 -1
  143. package/lib/common/tool-invocation-registry.d.ts.map +1 -1
  144. package/lib/common/tool-invocation-registry.js.map +1 -1
  145. package/lib/common/utils.d.ts +1 -0
  146. package/lib/common/utils.d.ts.map +1 -1
  147. package/lib/common/utils.js +3 -1
  148. package/lib/common/utils.js.map +1 -1
  149. package/lib/node/base-language-model.d.ts +2 -2
  150. package/lib/node/base-language-model.d.ts.map +1 -1
  151. package/lib/node/base-language-model.js +9 -5
  152. package/lib/node/base-language-model.js.map +1 -1
  153. package/lib/node/mcp/sumi-mcp-server.d.ts +1 -1
  154. package/lib/node/mcp/sumi-mcp-server.d.ts.map +1 -1
  155. package/lib/node/mcp/sumi-mcp-server.js +5 -2
  156. package/lib/node/mcp/sumi-mcp-server.js.map +1 -1
  157. package/lib/node/mcp-server-manager-impl.d.ts +1 -1
  158. package/lib/node/mcp-server-manager-impl.d.ts.map +1 -1
  159. package/lib/node/mcp-server-manager-impl.js +6 -5
  160. package/lib/node/mcp-server-manager-impl.js.map +1 -1
  161. package/lib/node/mcp-server.d.ts +2 -2
  162. package/lib/node/mcp-server.d.ts.map +1 -1
  163. package/lib/node/mcp-server.js +2 -1
  164. package/lib/node/mcp-server.js.map +1 -1
  165. package/lib/node/openai/openai-language-model.d.ts +1 -1
  166. package/lib/node/openai/openai-language-model.d.ts.map +1 -1
  167. package/lib/node/openai/openai-language-model.js +2 -2
  168. package/lib/node/openai/openai-language-model.js.map +1 -1
  169. package/package.json +24 -25
  170. package/src/browser/ai-core.contribution.ts +4 -0
  171. package/src/browser/chat/chat-agent.service.ts +7 -0
  172. package/src/browser/chat/chat-model.ts +0 -2
  173. package/src/browser/chat/chat-proxy.service.ts +12 -2
  174. package/src/browser/chat/chat.internal.service.ts +12 -1
  175. package/src/browser/chat/chat.view.tsx +2 -1
  176. package/src/browser/components/ChatContext/index.tsx +19 -3
  177. package/src/browser/components/ChatContext/style.module.less +12 -0
  178. package/src/browser/components/ChatEditor.tsx +13 -10
  179. package/src/browser/components/ChatMarkdown.tsx +3 -1
  180. package/src/browser/components/ChatReply.tsx +8 -15
  181. package/src/browser/components/ChatToolRender.tsx +36 -17
  182. package/src/browser/components/components.module.less +3 -2
  183. package/src/browser/context/llm-context.service.ts +30 -18
  184. package/src/browser/index.ts +11 -12
  185. package/src/browser/mcp/base-apply.service.ts +349 -0
  186. package/src/browser/mcp/mcp-server-proxy.service.ts +4 -2
  187. package/src/browser/mcp/mcp-server.feature.registry.ts +27 -4
  188. package/src/browser/mcp/tools/components/EditFile.tsx +144 -0
  189. package/src/browser/mcp/tools/components/SearchResult.tsx +92 -0
  190. package/src/browser/mcp/tools/components/index.module.less +132 -0
  191. package/src/browser/mcp/tools/createNewFileWithText.ts +1 -2
  192. package/src/browser/mcp/tools/editFile.ts +100 -0
  193. package/src/browser/mcp/tools/fileSearch.ts +99 -0
  194. package/src/browser/mcp/tools/getDiagnosticsByPath.ts +1 -2
  195. package/src/browser/mcp/tools/getOpenEditorFileDiagnostics.ts +1 -2
  196. package/src/browser/mcp/tools/grepSearch.ts +121 -0
  197. package/src/browser/mcp/tools/handlers/EditFile.ts +21 -0
  198. package/src/browser/mcp/tools/handlers/ReadFile.ts +19 -1
  199. package/src/browser/mcp/tools/handlers/utils.ts +3 -0
  200. package/src/browser/mcp/tools/listDir.ts +3 -4
  201. package/src/browser/mcp/tools/readFile.ts +3 -4
  202. package/src/browser/mcp/tools/runTerminalCmd.ts +1 -2
  203. package/src/browser/model/msg-history-manager.ts +19 -0
  204. package/src/browser/preferences/schema.ts +5 -0
  205. package/src/browser/types.ts +15 -11
  206. package/src/browser/widget/inline-stream-diff/inline-stream-diff.handler.tsx +4 -0
  207. package/src/browser/widget/inline-stream-diff/live-preview.component.tsx +4 -0
  208. package/src/browser/widget/inline-stream-diff/live-preview.decoration.tsx +1 -0
  209. package/src/common/index.ts +1 -0
  210. package/src/common/mcp-server-manager.ts +18 -13
  211. package/src/common/prompts/context-prompt-provider.ts +46 -0
  212. package/src/common/tool-invocation-registry.ts +122 -124
  213. package/src/common/utils.ts +2 -0
  214. package/src/node/base-language-model.ts +20 -6
  215. package/src/node/mcp/sumi-mcp-server.ts +5 -2
  216. package/src/node/mcp-server-manager-impl.ts +13 -5
  217. package/src/node/mcp-server.ts +3 -2
  218. package/src/node/openai/openai-language-model.ts +2 -2
  219. package/lib/browser/mcp/tools/findFilesByNameSubstring.d.ts.map +0 -1
  220. package/lib/browser/mcp/tools/findFilesByNameSubstring.js +0 -92
  221. package/lib/browser/mcp/tools/findFilesByNameSubstring.js.map +0 -1
  222. package/lib/browser/mcp/tools/getCurrentFilePath.d.ts +0 -8
  223. package/lib/browser/mcp/tools/getCurrentFilePath.d.ts.map +0 -1
  224. package/lib/browser/mcp/tools/getCurrentFilePath.js +0 -49
  225. package/lib/browser/mcp/tools/getCurrentFilePath.js.map +0 -1
  226. package/lib/browser/mcp/tools/getFileTextByPath.d.ts.map +0 -1
  227. package/lib/browser/mcp/tools/getFileTextByPath.js +0 -97
  228. package/lib/browser/mcp/tools/getFileTextByPath.js.map +0 -1
  229. package/lib/browser/mcp/tools/getOpenEditorFileText.d.ts +0 -8
  230. package/lib/browser/mcp/tools/getOpenEditorFileText.d.ts.map +0 -1
  231. package/lib/browser/mcp/tools/getOpenEditorFileText.js +0 -50
  232. package/lib/browser/mcp/tools/getOpenEditorFileText.js.map +0 -1
  233. package/lib/browser/mcp/tools/getSelectedText.d.ts.map +0 -1
  234. package/lib/browser/mcp/tools/getSelectedText.js +0 -57
  235. package/lib/browser/mcp/tools/getSelectedText.js.map +0 -1
  236. package/lib/browser/mcp/tools/replaceOpenEditorFile.d.ts +0 -8
  237. package/lib/browser/mcp/tools/replaceOpenEditorFile.d.ts.map +0 -1
  238. package/lib/browser/mcp/tools/replaceOpenEditorFile.js +0 -79
  239. package/lib/browser/mcp/tools/replaceOpenEditorFile.js.map +0 -1
  240. package/lib/browser/mcp/tools/replaceOpenEditorFileByDiffPreviewer.d.ts +0 -8
  241. package/lib/browser/mcp/tools/replaceOpenEditorFileByDiffPreviewer.d.ts.map +0 -1
  242. package/lib/browser/mcp/tools/replaceOpenEditorFileByDiffPreviewer.js +0 -84
  243. package/lib/browser/mcp/tools/replaceOpenEditorFileByDiffPreviewer.js.map +0 -1
  244. package/src/browser/mcp/tools/findFilesByNameSubstring.ts +0 -93
  245. package/src/browser/mcp/tools/getCurrentFilePath.ts +0 -49
  246. package/src/browser/mcp/tools/getFileTextByPath.ts +0 -97
  247. package/src/browser/mcp/tools/getOpenEditorFileText.ts +0 -50
  248. package/src/browser/mcp/tools/getSelectedText.ts +0 -57
  249. package/src/browser/mcp/tools/replaceOpenEditorFile.ts +0 -80
  250. package/src/browser/mcp/tools/replaceOpenEditorFileByDiffPreviewer.ts +0 -91
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EditFileToolComponent = 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 ide_components_1 = require("@opensumi/ide-components");
8
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
9
+ const ai_native_1 = require("@opensumi/ide-core-browser/lib/components/ai-native");
10
+ const language_1 = require("@opensumi/monaco-editor-core/esm/vs/editor/common/languages/language");
11
+ const model_1 = require("@opensumi/monaco-editor-core/esm/vs/editor/common/services/model");
12
+ const standaloneServices_1 = require("@opensumi/monaco-editor-core/esm/vs/editor/standalone/browser/standaloneServices");
13
+ const ChatMarkdown_1 = require("../../../components/ChatMarkdown");
14
+ const base_apply_service_1 = require("../../base-apply.service");
15
+ const index_module_less_1 = tslib_1.__importDefault(require("./index.module.less"));
16
+ const renderStatus = (codeBlockData) => {
17
+ const status = codeBlockData.status;
18
+ switch (status) {
19
+ case 'generating':
20
+ return react_1.default.createElement(ai_native_1.Loading, null);
21
+ case 'pending':
22
+ return (react_1.default.createElement(ide_components_1.Popover, { title: status, id: 'edit-file-tool-status-pending' },
23
+ react_1.default.createElement(ide_components_1.Icon, { iconClass: 'codicon codicon-circle-large' })));
24
+ case 'success':
25
+ return (react_1.default.createElement(ide_components_1.Popover, { title: status, id: 'edit-file-tool-status-success' },
26
+ react_1.default.createElement(ide_components_1.Icon, { iconClass: 'codicon codicon-check-all' })));
27
+ case 'failed':
28
+ return (react_1.default.createElement(ide_components_1.Popover, { title: status, id: 'edit-file-tool-status-failed' },
29
+ react_1.default.createElement(ide_components_1.Icon, { iconClass: 'codicon codicon-error', color: 'var(--vscode-input-errorForeground)' })));
30
+ case 'cancelled':
31
+ return (react_1.default.createElement(ide_components_1.Popover, { title: status, id: 'edit-file-tool-status-cancelled' },
32
+ react_1.default.createElement(ide_components_1.Icon, { iconClass: 'codicon codicon-close', color: 'var(--vscode-input-placeholderForeground)' })));
33
+ default:
34
+ return null;
35
+ }
36
+ };
37
+ const EditFileToolComponent = (props) => {
38
+ var _a;
39
+ const { args, messageId, toolCallId } = props;
40
+ const labelService = (0, ide_core_browser_1.useInjectable)(ide_core_browser_1.LabelService);
41
+ const appConfig = (0, ide_core_browser_1.useInjectable)(ide_core_browser_1.AppConfig);
42
+ const applyService = (0, ide_core_browser_1.useInjectable)(base_apply_service_1.BaseApplyService);
43
+ const { target_file = '', code_edit, instructions } = args || {};
44
+ const absolutePath = ide_core_browser_1.path.join(appConfig.workspaceDir, target_file);
45
+ const codeBlockData = applyService.getCodeBlock(absolutePath, messageId);
46
+ (0, ide_core_browser_1.useAutorun)(applyService.codeBlockMapObservable);
47
+ if (toolCallId && codeBlockData) {
48
+ applyService.initToolCallId(codeBlockData.id, toolCallId);
49
+ }
50
+ const icon = (0, react_1.useMemo)(() => {
51
+ if (!target_file) {
52
+ return;
53
+ }
54
+ const icon = `file-icon ${labelService.getIcon(ide_core_browser_1.URI.file(absolutePath))}`;
55
+ return icon;
56
+ }, [target_file, absolutePath]);
57
+ const languageId = (0, react_1.useMemo)(() => {
58
+ if (!target_file) {
59
+ return;
60
+ }
61
+ const modelService = standaloneServices_1.StandaloneServices.get(model_1.IModelService);
62
+ const languageService = standaloneServices_1.StandaloneServices.get(language_1.ILanguageService);
63
+ const detectedModeId = (0, ide_core_browser_1.detectModeId)(modelService, languageService, ide_core_browser_1.Uri.file(absolutePath));
64
+ return detectedModeId;
65
+ }, [target_file, absolutePath]);
66
+ // 多次迭代时,仅在首处tool组件中展示
67
+ if (!args || !codeBlockData || (toolCallId && toolCallId !== codeBlockData.initToolCallId)) {
68
+ return null;
69
+ }
70
+ return [
71
+ instructions && react_1.default.createElement("p", null, instructions),
72
+ react_1.default.createElement("div", { className: index_module_less_1.default['edit-file-tool'], key: `edit-file-tool-${codeBlockData.id}` },
73
+ react_1.default.createElement("div", { className: (0, classnames_1.default)(index_module_less_1.default['edit-file-tool-header'], {
74
+ clickable: codeBlockData.status === 'pending' || codeBlockData.status === 'success',
75
+ }), onClick: () => {
76
+ if (codeBlockData.status === 'pending') {
77
+ applyService.reRenderPendingApply();
78
+ }
79
+ else if (codeBlockData.status === 'success') {
80
+ applyService.revealApplyPosition(codeBlockData.id);
81
+ }
82
+ } },
83
+ icon && react_1.default.createElement("span", { className: icon }),
84
+ react_1.default.createElement("span", { className: index_module_less_1.default['edit-file-tool-file-name'] }, target_file),
85
+ codeBlockData.iterationCount > 1 && (react_1.default.createElement("span", { className: index_module_less_1.default['edit-file-tool-iteration-count'] },
86
+ codeBlockData.iterationCount,
87
+ "/3")),
88
+ renderStatus(codeBlockData)),
89
+ react_1.default.createElement(ChatMarkdown_1.ChatMarkdown, { markdown: `\`\`\`${languageId || ''}\n${code_edit}\n\`\`\``, hideInsert: true })),
90
+ codeBlockData.applyResult && codeBlockData.applyResult.diagnosticInfos.length > 0 && (react_1.default.createElement("div", { className: index_module_less_1.default['edit-file-tool-diagnostic-errors'], key: `edit-file-tool-diagnostic-errors-${codeBlockData.id}` },
91
+ react_1.default.createElement("div", { className: index_module_less_1.default['title'] }, "Found Lints:"), (_a = codeBlockData.applyResult) === null || _a === void 0 ? void 0 :
92
+ _a.diagnosticInfos.map((info) => (react_1.default.createElement("div", { key: info.message, className: (0, classnames_1.default)({
93
+ [index_module_less_1.default['error']]: info.severity === ide_core_browser_1.MarkerSeverity.Error,
94
+ [index_module_less_1.default['warning']]: info.severity === ide_core_browser_1.MarkerSeverity.Warning,
95
+ }) },
96
+ react_1.default.createElement(ide_components_1.Icon, { className: `codicon codicon-${info.severity === ide_core_browser_1.MarkerSeverity.Error ? 'error' : 'warning'}` }),
97
+ info.message.split('\n')[0]))))),
98
+ ];
99
+ };
100
+ exports.EditFileToolComponent = EditFileToolComponent;
101
+ //# sourceMappingURL=EditFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditFile.js","sourceRoot":"","sources":["../../../../../src/browser/mcp/tools/components/EditFile.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GrepSearchToolComponent = exports.FileSearchToolComponent = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importStar(require("react"));
6
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
7
+ const ide_editor_1 = require("@opensumi/ide-editor");
8
+ const ide_workspace_1 = require("@opensumi/ide-workspace");
9
+ const common_1 = require("../../../../common");
10
+ const index_module_less_1 = tslib_1.__importDefault(require("./index.module.less"));
11
+ const FileSearchToolComponent = ({ args, toolCallId, messageId }) => (react_1.default.createElement(SearchResult, { args: args, toolCallId: toolCallId, messageId: messageId, toolName: 'fileSearch' }));
12
+ exports.FileSearchToolComponent = FileSearchToolComponent;
13
+ const GrepSearchToolComponent = ({ args, toolCallId, messageId }) => (react_1.default.createElement(SearchResult, { args: args, toolCallId: toolCallId, messageId: messageId, toolName: 'grepSearch' }));
14
+ exports.GrepSearchToolComponent = GrepSearchToolComponent;
15
+ const SearchResult = ({ args, toolCallId, toolName, messageId }) => {
16
+ var _a, _b;
17
+ const [isExpanded, setIsExpanded] = (0, react_1.useState)(false);
18
+ const labelService = (0, ide_core_browser_1.useInjectable)(ide_core_browser_1.LabelService);
19
+ const editorService = (0, ide_core_browser_1.useInjectable)(ide_editor_1.WorkbenchEditorService);
20
+ const workspaceService = (0, ide_core_browser_1.useInjectable)(ide_workspace_1.IWorkspaceService);
21
+ const workspaceRoot = (0, react_1.useMemo)(() => { var _a, _b; return ide_core_browser_1.URI.parse((_b = (_a = workspaceService.tryGetRoots()) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.uri); }, []);
22
+ const chatService = (0, ide_core_browser_1.useInjectable)(common_1.IChatInternalService);
23
+ const [files, setFiles] = (0, react_1.useState)(((_b = (_a = chatService.sessionModel.history.getMessageAdditional(messageId)) === null || _a === void 0 ? void 0 : _a[toolCallId]) === null || _b === void 0 ? void 0 : _b.files) || []);
24
+ (0, react_1.useEffect)(() => {
25
+ const toDispose = chatService.sessionModel.history.onMessageAdditionalChange((additional) => {
26
+ var _a;
27
+ setFiles(((_a = additional[toolCallId]) === null || _a === void 0 ? void 0 : _a.files) || []);
28
+ });
29
+ return () => {
30
+ toDispose.dispose();
31
+ };
32
+ }, []);
33
+ const handleFileClick = (uri) => {
34
+ // 处理文件点击跳转
35
+ editorService.open(uri);
36
+ };
37
+ const parsedFiles = (0, react_1.useMemo)(() => files.map((file) => {
38
+ const uri = ide_core_browser_1.URI.parse(file);
39
+ const iconClass = labelService.getIcon(uri);
40
+ return {
41
+ iconClass,
42
+ name: uri.path.base,
43
+ path: ide_core_browser_1.path.relative(workspaceRoot.codeUri.fsPath, uri.path.dir.toString()),
44
+ };
45
+ }), [files]);
46
+ return (react_1.default.createElement("div", { className: index_module_less_1.default.container },
47
+ react_1.default.createElement("div", { className: index_module_less_1.default.header, onClick: () => setIsExpanded(!isExpanded) },
48
+ react_1.default.createElement("span", { style: { transform: `rotate(${isExpanded ? '90deg' : '0deg'})` } }, "\u25B6"),
49
+ react_1.default.createElement("span", null,
50
+ toolName === 'fileSearch' ? `Searched files "${args.query}"` : `Grepped codebase "${args.query}"`,
51
+ " \u00B7",
52
+ ' ',
53
+ files.length,
54
+ " files")),
55
+ isExpanded && (react_1.default.createElement("ul", { className: index_module_less_1.default.fileList }, parsedFiles.map((file, index) => (react_1.default.createElement("li", { key: index, className: index_module_less_1.default.fileItem, onClick: () => handleFileClick(ide_core_browser_1.URI.file(ide_core_browser_1.path.join(workspaceRoot.codeUri.fsPath, file.path, file.name))) },
56
+ react_1.default.createElement("span", { className: file.iconClass }),
57
+ react_1.default.createElement("span", { style: { flex: 1 } }, file.name),
58
+ react_1.default.createElement("span", { className: index_module_less_1.default.filePath }, file.path))))))));
59
+ };
60
+ //# sourceMappingURL=SearchResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchResult.js","sourceRoot":"","sources":["../../../../../src/browser/mcp/tools/components/SearchResult.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ .edit-file-tool-header {
2
+ display: flex;
3
+ align-items: center;
4
+ padding: 2px 8px;
5
+ border-bottom: 1px solid var(--vscode-commandCenter-inactiveBorder);
6
+ background-color: var(--design-block-background);
7
+ font-size: 10px;
8
+ margin-bottom: -4px;
9
+ border-radius: 8px 8px 0 0;
10
+ > span {
11
+ margin-right: 4px;
12
+ }
13
+ :global(span.codicon) {
14
+ font-size: 12px;
15
+ }
16
+ :global(.kt-popover-trigger) {
17
+ display: flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ }
21
+ }
22
+ .edit-file-tool {
23
+ border: 1px solid var(--vscode-commandCenter-inactiveBorder);
24
+ border-radius: 4px;
25
+ margin: 8px 0;
26
+ :global(.language-badge) {
27
+ border-top-left-radius: 0;
28
+ }
29
+ pre > code {
30
+ border-radius: 0 0 8px 8px !important;
31
+ }
32
+ }
33
+ .edit-file-tool-iteration-count {
34
+ color: var(--vscode-input-placeholderForeground);
35
+ margin-left: 4px;
36
+ }
37
+ :global(.clickable) {
38
+ cursor: pointer;
39
+ }
40
+ .edit-file-tool-diagnostic-errors {
41
+ padding: 8px;
42
+ border: 1px solid var(--vscode-commandCenter-inactiveBorder);
43
+ background-color: var(--design-block-background);
44
+ border-radius: 8px;
45
+ font-size: 12px;
46
+ margin: 4px 0;
47
+ > div {
48
+ display: flex;
49
+ align-items: center;
50
+ padding: 2px 0;
51
+ }
52
+ :global(.codicon) {
53
+ margin-right: 4px;
54
+ }
55
+ .title {
56
+ margin-bottom: 3px;
57
+ display: inline-block;
58
+ }
59
+ }
60
+ .error,
61
+ .error > span {
62
+ color: var(--debugConsole-errorForeground);
63
+ }
64
+ .warning,
65
+ .warning > span {
66
+ color: var(--debugConsole-warningForeground);
67
+ }
68
+
69
+ .container {
70
+ border: 1px solid var(--vscode-commandCenter-inactiveBorder);
71
+ border-radius: 8px;
72
+ margin: 8px 0;
73
+ overflow: hidden;
74
+ }
75
+
76
+ .header {
77
+ padding: 8px 12px;
78
+ background-color: var(--design-block-background);
79
+ border-bottom: 1px solid var(--vscode-commandCenter-inactiveBorder);
80
+ cursor: pointer;
81
+ display: flex;
82
+ align-items: center;
83
+ gap: 4px;
84
+ color: var(--design-text-foreground);
85
+ font-size: 12px;
86
+ }
87
+
88
+ .fileList {
89
+ margin: 0;
90
+ padding: 0;
91
+ list-style: none;
92
+ display: block;
93
+ background-color: var(--design-block-background);
94
+ }
95
+
96
+ .fileList.collapsed {
97
+ display: none;
98
+ }
99
+
100
+ .fileItem {
101
+ padding: 2px 6px;
102
+ font-size: 12px;
103
+ margin: 0px 6px;
104
+ border-radius: 4px;
105
+ display: flex;
106
+ align-items: center;
107
+ gap: 8px;
108
+ cursor: pointer;
109
+ color: var(--design-text-primary);
110
+ &:hover {
111
+ background-color: var(--design-block-background);
112
+ }
113
+ > span {
114
+ overflow: hidden;
115
+ text-overflow: ellipsis;
116
+ white-space: nowrap;
117
+ }
118
+ }
119
+
120
+ .fileIcon {
121
+ color: var(--design-text-secondary);
122
+ font-size: 12px;
123
+ width: 16px;
124
+ }
125
+
126
+ .filePath {
127
+ color: var(--design-text-secondary);
128
+ font-size: 12px;
129
+ margin-left: auto;
130
+ flex-basis: 0px;
131
+ flex-grow: 1;
132
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"createNewFileWithText.d.ts","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/createNewFileWithText.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAa,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOtG,qBACa,yBAA0B,YAAW,qBAAqB;IAErE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IAGrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIrD,iBAAiB,IAAI,iBAAiB;YAkBxB,OAAO;CAqCtB"}
1
+ {"version":3,"file":"createNewFileWithText.d.ts","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/createNewFileWithText.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAa,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOtG,qBACa,yBAA0B,YAAW,qBAAqB;IAErE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IAGrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIrD,iBAAiB,IAAI,iBAAiB;YAkBxB,OAAO;CAqCtB"}
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CreateNewFileWithTextTool = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const zod_1 = require("zod");
6
- const zod_to_json_schema_1 = require("zod-to-json-schema");
7
6
  const di_1 = require("@opensumi/di");
8
7
  const ide_core_common_1 = require("@opensumi/ide-core-common");
9
8
  const ide_file_service_1 = require("@opensumi/ide-file-service");
@@ -29,7 +28,7 @@ let CreateNewFileWithTextTool = class CreateNewFileWithTextTool {
29
28
  '"ok" if the file was successfully created and populated, ' +
30
29
  '"can\'t find project dir" if the project directory cannot be determined. ' +
31
30
  'Note: Creates any necessary parent directories automatically.',
32
- inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(inputSchema),
31
+ inputSchema,
33
32
  handler: this.handler.bind(this),
34
33
  };
35
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"createNewFileWithText.js","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/createNewFileWithText.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createNewFileWithText.js","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/createNewFileWithText.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { IMCPServerRegistry, MCPServerContribution, MCPToolDefinition } from '../../types';
2
- export declare class GetSelectedTextTool implements MCPServerContribution {
3
- private readonly editorService;
2
+ export declare class EditFileTool implements MCPServerContribution {
3
+ private readonly editFileHandler;
4
4
  registerMCPServer(registry: IMCPServerRegistry): void;
5
5
  getToolDefinition(): MCPToolDefinition;
6
6
  private handler;
7
7
  }
8
- //# sourceMappingURL=getSelectedText.d.ts.map
8
+ //# sourceMappingURL=editFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editFile.d.ts","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/editFile.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAa,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA6BtG,qBACa,YAAa,YAAW,qBAAqB;IAExD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAElD,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAKrD,iBAAiB,IAAI,iBAAiB;YA2BxB,OAAO;CA4BtB"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EditFileTool = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const zod_1 = require("zod");
6
+ const di_1 = require("@opensumi/di");
7
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
8
+ const types_1 = require("../../types");
9
+ const EditFile_1 = require("./components/EditFile");
10
+ const EditFile_2 = require("./handlers/EditFile");
11
+ const inputSchema = zod_1.z
12
+ .object({
13
+ target_file: zod_1.z
14
+ .string()
15
+ .describe('The target file to modify. Always specify the target file as the first argument and use the relative path in the workspace of the file to edit'),
16
+ instructions: zod_1.z
17
+ .string()
18
+ .optional()
19
+ .describe('A single sentence instruction describing what you are going to do for the sketched edit. This is used to assist the less intelligent model in applying the edit. Please use the first person to describe what you are going to do. Dont repeat what you have said previously in normal messages. And use it to disambiguate uncertainty in the edit.'),
20
+ code_edit: zod_1.z
21
+ .string()
22
+ .describe("Specify ONLY the precise lines of code that you wish to edit. **NEVER specify or write out unchanged code**. Instead, represent all unchanged code using the comment of the language you're editing in - example: `// ... existing code ...`"),
23
+ })
24
+ .transform((data) => ({
25
+ targetFile: data.target_file,
26
+ instructions: data.instructions,
27
+ codeEdit: data.code_edit,
28
+ }));
29
+ let EditFileTool = class EditFileTool {
30
+ registerMCPServer(registry) {
31
+ registry.registerMCPTool(this.getToolDefinition());
32
+ registry.registerToolComponent('edit_file', EditFile_1.EditFileToolComponent);
33
+ }
34
+ getToolDefinition() {
35
+ return {
36
+ name: 'edit_file',
37
+ label: 'Edit File',
38
+ description: `Use this tool to propose an edit to an existing file.
39
+ This will be read by a less intelligent model, which will quickly apply the edit. You should make it clear what the edit is, while also minimizing the unchanged code you write.
40
+ When writing the edit, you should specify each edit in sequence, with the special comment \`// ... existing code ...\` to represent unchanged code in between edited lines.
41
+ For example:
42
+ \`\`\`
43
+ // ... existing code ...
44
+ FIRST_EDIT
45
+ // ... existing code ...
46
+ SECOND_EDIT
47
+ // ... existing code ...
48
+ THIRD_EDIT
49
+ // ... existing code ...
50
+ \`\`\`
51
+ You should bias towards repeating as few lines of the original file as possible to convey the change.
52
+ But, each edit should contain sufficient context of unchanged lines around the code you're editing to resolve ambiguity.
53
+ DO NOT omit spans of pre-existing code without using the \`// ... existing code ...\` comment to indicate its absence.
54
+ Make sure it is clear what the edit should be.
55
+ You should specify the following arguments before the others: [target_file]`,
56
+ inputSchema,
57
+ handler: this.handler.bind(this),
58
+ };
59
+ }
60
+ async handler(args, logger) {
61
+ const result = await this.editFileHandler.handler(args.targetFile, args.codeEdit, args.instructions);
62
+ return {
63
+ content: [
64
+ {
65
+ type: 'text',
66
+ // TODO: lint error
67
+ text: result.applyResult
68
+ ? `The apply model made the following changes to the file:
69
+
70
+ \`\`\`
71
+ ${result.applyResult.diff}
72
+ \`\`\`
73
+ ${result.applyResult.diagnosticInfos.length > 0
74
+ ? `The edit introduced the following new linter errors:
75
+ ${result.applyResult.diagnosticInfos
76
+ .map((error) => `Line ${error.startLineNumber}: ${error.message.split('\n')[0]}`)
77
+ .join('\n')}
78
+
79
+ Please fix the linter errors if it is clear how to (or you can easily figure out how to). Do not make uneducated guesses. And do not loop more than 3 times on fixing linter errors on the same file.`
80
+ : ''}`
81
+ : 'User cancelled the edit.',
82
+ },
83
+ ],
84
+ };
85
+ }
86
+ };
87
+ exports.EditFileTool = EditFileTool;
88
+ tslib_1.__decorate([
89
+ (0, di_1.Autowired)(EditFile_2.EditFileHandler),
90
+ tslib_1.__metadata("design:type", EditFile_2.EditFileHandler)
91
+ ], EditFileTool.prototype, "editFileHandler", void 0);
92
+ exports.EditFileTool = EditFileTool = tslib_1.__decorate([
93
+ (0, ide_core_common_1.Domain)(types_1.MCPServerContribution)
94
+ ], EditFileTool);
95
+ //# sourceMappingURL=editFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editFile.js","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/editFile.ts"],"names":[],"mappings":";;;;AAAA,6BAAwB;AAExB,qCAAyC;AACzC,+DAAmD;AAEnD,uCAAsG;AAEtG,oDAA8D;AAC9D,kDAAsD;AACtD,MAAM,WAAW,GAAG,OAAC;KAClB,MAAM,CAAC;IACN,WAAW,EAAE,OAAC;SACX,MAAM,EAAE;SACR,QAAQ,CACP,gJAAgJ,CACjJ;IACH,YAAY,EAAE,OAAC;SACZ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,sVAAsV,CACvV;IACH,SAAS,EAAE,OAAC;SACT,MAAM,EAAE;SACR,QAAQ,CACP,8OAA8O,CAC/O;CACJ,CAAC;KACD,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpB,UAAU,EAAE,IAAI,CAAC,WAAW;IAC5B,YAAY,EAAE,IAAI,CAAC,YAAY;IAC/B,QAAQ,EAAE,IAAI,CAAC,SAAS;CACzB,CAAC,CAAC,CAAC;AAGC,IAAM,YAAY,GAAlB,MAAM,YAAY;IAIvB,iBAAiB,CAAC,QAA4B;QAC5C,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACnD,QAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,gCAAqB,CAAC,CAAC;IACrE,CAAC;IAED,iBAAiB;QACf,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,WAAW;YAClB,WAAW,EAAE;;;;;;;;;;;;;;;;;4EAiByD;YACtE,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SACjC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAiC,EAAE,MAAiB;QACxE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACrG,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,mBAAmB;oBACnB,IAAI,EAAE,MAAM,CAAC,WAAW;wBACtB,CAAC,CAAC;;;EAGZ,MAAM,CAAC,WAAW,CAAC,IAAI;;EAGvB,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;4BAC3C,CAAC,CAAC;EACJ,MAAM,CAAC,WAAW,CAAC,eAAe;iCACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,KAAK,CAAC,eAAe,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iCAChF,IAAI,CAAC,IAAI,CAAC;;sMAEyL;4BAClM,CAAC,CAAC,EACN,EAAE;wBACU,CAAC,CAAC,0BAA0B;iBAC/B;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAhEY,oCAAY;AAEN;IADhB,IAAA,cAAS,EAAC,0BAAe,CAAC;sCACO,0BAAe;qDAAC;uBAFvC,YAAY;IADxB,IAAA,wBAAM,EAAC,6BAAqB,CAAC;GACjB,YAAY,CAgExB"}
@@ -1,9 +1,10 @@
1
1
  import { IMCPServerRegistry, MCPServerContribution, MCPToolDefinition } from '../../types';
2
- export declare class FindFilesByNameSubstringTool implements MCPServerContribution {
2
+ export declare class FileSearchTool implements MCPServerContribution {
3
3
  private readonly workspaceService;
4
4
  private readonly fileSearchService;
5
+ private readonly chatInternalService;
5
6
  registerMCPServer(registry: IMCPServerRegistry): void;
6
7
  getToolDefinition(): MCPToolDefinition;
7
8
  private handler;
8
9
  }
9
- //# sourceMappingURL=findFilesByNameSubstring.d.ts.map
10
+ //# sourceMappingURL=fileSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileSearch.d.ts","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/fileSearch.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,kBAAkB,EAAa,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAatG,qBACa,cAAe,YAAW,qBAAqB;IAE1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IAGrD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IAGvD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAE1D,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAKrD,iBAAiB,IAAI,iBAAiB;YAWxB,OAAO;CAiDtB"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileSearchTool = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const zod_1 = require("zod");
6
+ const di_1 = require("@opensumi/di");
7
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
8
+ const common_1 = require("@opensumi/ide-file-search/lib/common");
9
+ const ide_workspace_1 = require("@opensumi/ide-workspace");
10
+ const common_2 = require("../../../common");
11
+ const chat_internal_service_1 = require("../../chat/chat.internal.service");
12
+ const types_1 = require("../../types");
13
+ const SearchResult_1 = require("./components/SearchResult");
14
+ const inputSchema = zod_1.z.object({
15
+ query: zod_1.z.string().describe('Fuzzy filename to search for'),
16
+ explanation: zod_1.z
17
+ .string()
18
+ .describe('One sentence explanation as to why this tool is being used, and how it contributes to the goal.'),
19
+ });
20
+ const MAX_RESULTS = 10;
21
+ let FileSearchTool = class FileSearchTool {
22
+ registerMCPServer(registry) {
23
+ registry.registerMCPTool(this.getToolDefinition());
24
+ registry.registerToolComponent('file_search', SearchResult_1.FileSearchToolComponent);
25
+ }
26
+ getToolDefinition() {
27
+ return {
28
+ name: 'file_search',
29
+ label: 'Search Files',
30
+ description: "Fast file search based on fuzzy matching against file path. Use if you know part of the file path but don't know where it's located exactly. Response will be capped to 10 results. Make your query more specific if need to filter results further.",
31
+ inputSchema,
32
+ handler: this.handler.bind(this),
33
+ };
34
+ }
35
+ async handler(args, logger) {
36
+ if (!args.query) {
37
+ throw new Error('No fileSearch parameters provided. Need to give a query.');
38
+ }
39
+ // 获取工作区根目录
40
+ const workspaceRoots = this.workspaceService.tryGetRoots();
41
+ if (!workspaceRoots || workspaceRoots.length === 0) {
42
+ throw new Error('Cannot determine project directory');
43
+ }
44
+ // 使用 OpenSumi 的文件搜索 API
45
+ const searchPattern = args.query;
46
+ const searchResults = await this.fileSearchService.find(searchPattern, {
47
+ rootUris: [new ide_core_common_1.URI(workspaceRoots[0].uri).codeUri.fsPath],
48
+ // TODO: 忽略配置
49
+ excludePatterns: ['**/node_modules/**'],
50
+ limit: 100,
51
+ useGitIgnore: true,
52
+ noIgnoreParent: true,
53
+ fuzzyMatch: true,
54
+ });
55
+ const files = searchResults.slice(0, MAX_RESULTS).map((file) => {
56
+ const uri = ide_core_common_1.URI.parse(file);
57
+ return uri.codeUri.fsPath;
58
+ });
59
+ const messages = this.chatInternalService.sessionModel.history.getMessages();
60
+ this.chatInternalService.sessionModel.history.setMessageAdditional(messages[messages.length - 1].id, {
61
+ [args.toolCallId]: {
62
+ files,
63
+ },
64
+ });
65
+ logger.appendLine(`Found ${files.length} files matching "${args.query}"`);
66
+ return {
67
+ content: [
68
+ {
69
+ type: 'text',
70
+ text: `${files.join('\n')}\n${searchResults.length > MAX_RESULTS
71
+ ? `\nFound ${searchResults.length} files matching "${args.query}", only return the first ${MAX_RESULTS} results`
72
+ : ''}`,
73
+ },
74
+ ],
75
+ };
76
+ }
77
+ };
78
+ exports.FileSearchTool = FileSearchTool;
79
+ tslib_1.__decorate([
80
+ (0, di_1.Autowired)(ide_workspace_1.IWorkspaceService),
81
+ tslib_1.__metadata("design:type", Object)
82
+ ], FileSearchTool.prototype, "workspaceService", void 0);
83
+ tslib_1.__decorate([
84
+ (0, di_1.Autowired)(common_1.FileSearchServicePath),
85
+ tslib_1.__metadata("design:type", Object)
86
+ ], FileSearchTool.prototype, "fileSearchService", void 0);
87
+ tslib_1.__decorate([
88
+ (0, di_1.Autowired)(common_2.IChatInternalService),
89
+ tslib_1.__metadata("design:type", chat_internal_service_1.ChatInternalService)
90
+ ], FileSearchTool.prototype, "chatInternalService", void 0);
91
+ exports.FileSearchTool = FileSearchTool = tslib_1.__decorate([
92
+ (0, ide_core_common_1.Domain)(types_1.MCPServerContribution)
93
+ ], FileSearchTool);
94
+ //# sourceMappingURL=fileSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileSearch.js","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/fileSearch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getDiagnosticsByPath.d.ts","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/getDiagnosticsByPath.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,kBAAkB,EAAa,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMtG,qBACa,wBAAyB,YAAW,qBAAqB;IAEpE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IAGrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAE/C,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIrD,iBAAiB,IAAI,iBAAiB;YAyBxB,OAAO;IAsDrB,OAAO,CAAC,iBAAiB;CAc1B"}
1
+ {"version":3,"file":"getDiagnosticsByPath.d.ts","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/getDiagnosticsByPath.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,kBAAkB,EAAa,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMtG,qBACa,wBAAyB,YAAW,qBAAqB;IAEpE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IAGrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAE/C,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIrD,iBAAiB,IAAI,iBAAiB;YAyBxB,OAAO;IAsDrB,OAAO,CAAC,iBAAiB;CAc1B"}
@@ -4,7 +4,6 @@ exports.GetDiagnosticsByPathTool = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const path = tslib_1.__importStar(require("path"));
6
6
  const zod_1 = require("zod");
7
- const zod_to_json_schema_1 = require("zod-to-json-schema");
8
7
  const di_1 = require("@opensumi/di");
9
8
  const ide_core_common_1 = require("@opensumi/ide-core-common");
10
9
  const ide_workspace_1 = require("@opensumi/ide-workspace");
@@ -37,7 +36,7 @@ let GetDiagnosticsByPathTool = class GetDiagnosticsByPathTool {
37
36
  '- "error": Must be fixed immediately as they indicate critical issues that will prevent code from working correctly. ' +
38
37
  '- "warning": For user code, preserve unless the warning indicates a clear improvement opportunity. For generated code, optimize to remove warnings. ' +
39
38
  '- "information"/"hint": For user code, preserve as they might reflect intentional patterns. For generated code, optimize if it improves code quality without changing functionality.',
40
- inputSchema: (0, zod_to_json_schema_1.zodToJsonSchema)(inputSchema),
39
+ inputSchema,
41
40
  handler: this.handler.bind(this),
42
41
  };
43
42
  }