@opensumi/ide-ai-native 3.7.2-next-1740450374.0 → 3.7.2-next-1741226843.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 (448) hide show
  1. package/lib/browser/ai-core.contextkeys.d.ts +0 -1
  2. package/lib/browser/ai-core.contextkeys.d.ts.map +1 -1
  3. package/lib/browser/ai-core.contextkeys.js +0 -1
  4. package/lib/browser/ai-core.contextkeys.js.map +1 -1
  5. package/lib/browser/ai-core.contribution.d.ts +2 -8
  6. package/lib/browser/ai-core.contribution.d.ts.map +1 -1
  7. package/lib/browser/ai-core.contribution.js +20 -149
  8. package/lib/browser/ai-core.contribution.js.map +1 -1
  9. package/lib/browser/chat/chat-agent.service.d.ts.map +1 -1
  10. package/lib/browser/chat/chat-agent.service.js +0 -6
  11. package/lib/browser/chat/chat-agent.service.js.map +1 -1
  12. package/lib/browser/chat/chat-manager.service.d.ts +2 -30
  13. package/lib/browser/chat/chat-manager.service.d.ts.map +1 -1
  14. package/lib/browser/chat/chat-manager.service.js +1 -45
  15. package/lib/browser/chat/chat-manager.service.js.map +1 -1
  16. package/lib/browser/chat/chat-model.d.ts +7 -34
  17. package/lib/browser/chat/chat-model.d.ts.map +1 -1
  18. package/lib/browser/chat/chat-model.js +57 -71
  19. package/lib/browser/chat/chat-model.js.map +1 -1
  20. package/lib/browser/chat/chat-proxy.service.d.ts +1 -6
  21. package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
  22. package/lib/browser/chat/chat-proxy.service.js +3 -54
  23. package/lib/browser/chat/chat-proxy.service.js.map +1 -1
  24. package/lib/browser/chat/chat.api.service.d.ts +1 -1
  25. package/lib/browser/chat/chat.api.service.d.ts.map +1 -1
  26. package/lib/browser/chat/chat.api.service.js +2 -2
  27. package/lib/browser/chat/chat.api.service.js.map +1 -1
  28. package/lib/browser/chat/chat.internal.service.d.ts +2 -8
  29. package/lib/browser/chat/chat.internal.service.d.ts.map +1 -1
  30. package/lib/browser/chat/chat.internal.service.js +13 -41
  31. package/lib/browser/chat/chat.internal.service.js.map +1 -1
  32. package/lib/browser/chat/chat.module.less +41 -17
  33. package/lib/browser/chat/chat.view.d.ts.map +1 -1
  34. package/lib/browser/chat/chat.view.js +14 -102
  35. package/lib/browser/chat/chat.view.js.map +1 -1
  36. package/lib/browser/components/ChatEditor.d.ts +0 -1
  37. package/lib/browser/components/ChatEditor.d.ts.map +1 -1
  38. package/lib/browser/components/ChatEditor.js +3 -3
  39. package/lib/browser/components/ChatEditor.js.map +1 -1
  40. package/lib/browser/components/ChatInput.d.ts.map +1 -1
  41. package/lib/browser/components/ChatInput.js.map +1 -1
  42. package/lib/browser/components/ChatMarkdown.d.ts +0 -1
  43. package/lib/browser/components/ChatMarkdown.d.ts.map +1 -1
  44. package/lib/browser/components/ChatMarkdown.js +2 -2
  45. package/lib/browser/components/ChatMarkdown.js.map +1 -1
  46. package/lib/browser/components/ChatReply.d.ts.map +1 -1
  47. package/lib/browser/components/ChatReply.js +4 -29
  48. package/lib/browser/components/ChatReply.js.map +1 -1
  49. package/lib/browser/components/ChatThinking.js +1 -1
  50. package/lib/browser/components/ChatThinking.js.map +1 -1
  51. package/lib/browser/components/WelcomeMsg.js.map +1 -1
  52. package/lib/browser/components/components.module.less +31 -33
  53. package/lib/browser/components/utils.d.ts +2 -2
  54. package/lib/browser/contrib/intelligent-completions/index.d.ts +9 -16
  55. package/lib/browser/contrib/intelligent-completions/index.d.ts.map +1 -1
  56. package/lib/browser/contrib/intelligent-completions/index.js +1 -6
  57. package/lib/browser/contrib/intelligent-completions/index.js.map +1 -1
  58. package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.d.ts +0 -1
  59. package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.d.ts.map +1 -1
  60. package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.js +4 -26
  61. package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.js.map +1 -1
  62. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.d.ts +5 -5
  63. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.d.ts.map +1 -1
  64. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.js +48 -59
  65. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.js.map +1 -1
  66. package/lib/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.d.ts +0 -4
  67. package/lib/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.d.ts.map +1 -1
  68. package/lib/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.js +0 -7
  69. package/lib/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.js.map +1 -1
  70. package/lib/browser/contrib/intelligent-completions/source/base.d.ts +5 -14
  71. package/lib/browser/contrib/intelligent-completions/source/base.d.ts.map +1 -1
  72. package/lib/browser/contrib/intelligent-completions/source/base.js +8 -29
  73. package/lib/browser/contrib/intelligent-completions/source/base.js.map +1 -1
  74. package/lib/browser/contrib/intelligent-completions/source/line-change.source.d.ts +3 -10
  75. package/lib/browser/contrib/intelligent-completions/source/line-change.source.d.ts.map +1 -1
  76. package/lib/browser/contrib/intelligent-completions/source/line-change.source.js +22 -95
  77. package/lib/browser/contrib/intelligent-completions/source/line-change.source.js.map +1 -1
  78. package/lib/browser/contrib/intelligent-completions/source/lint-error.source.d.ts +3 -1
  79. package/lib/browser/contrib/intelligent-completions/source/lint-error.source.d.ts.map +1 -1
  80. package/lib/browser/contrib/intelligent-completions/source/lint-error.source.js +20 -13
  81. package/lib/browser/contrib/intelligent-completions/source/lint-error.source.js.map +1 -1
  82. package/lib/browser/contrib/terminal/component/terminal-command-suggest-controller.js +2 -2
  83. package/lib/browser/contrib/terminal/component/terminal-command-suggest-controller.js.map +1 -1
  84. package/lib/browser/index.d.ts +3 -11
  85. package/lib/browser/index.d.ts.map +1 -1
  86. package/lib/browser/index.js +4 -56
  87. package/lib/browser/index.js.map +1 -1
  88. package/lib/browser/languages/tree-sitter/wasm-manager.d.ts.map +1 -1
  89. package/lib/browser/languages/tree-sitter/wasm-manager.js +2 -14
  90. package/lib/browser/languages/tree-sitter/wasm-manager.js.map +1 -1
  91. package/lib/browser/layout/ai-layout.d.ts.map +1 -1
  92. package/lib/browser/layout/ai-layout.js +2 -2
  93. package/lib/browser/layout/ai-layout.js.map +1 -1
  94. package/lib/browser/layout/layout.module.less +9 -9
  95. package/lib/browser/layout/tabbar.view.d.ts.map +1 -1
  96. package/lib/browser/layout/tabbar.view.js +6 -5
  97. package/lib/browser/layout/tabbar.view.js.map +1 -1
  98. package/lib/browser/model/enhanceDecorationsCollection.d.ts +10 -14
  99. package/lib/browser/model/enhanceDecorationsCollection.d.ts.map +1 -1
  100. package/lib/browser/model/enhanceDecorationsCollection.js +53 -42
  101. package/lib/browser/model/enhanceDecorationsCollection.js.map +1 -1
  102. package/lib/browser/model/msg-history-manager.d.ts +1 -20
  103. package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
  104. package/lib/browser/model/msg-history-manager.js +10 -46
  105. package/lib/browser/model/msg-history-manager.js.map +1 -1
  106. package/lib/browser/model/styles.module.less +7 -0
  107. package/lib/browser/preferences/schema.d.ts.map +1 -1
  108. package/lib/browser/preferences/schema.js +0 -69
  109. package/lib/browser/preferences/schema.js.map +1 -1
  110. package/lib/browser/types.d.ts +4 -74
  111. package/lib/browser/types.d.ts.map +1 -1
  112. package/lib/browser/types.js +1 -4
  113. package/lib/browser/types.js.map +1 -1
  114. package/lib/browser/widget/inline-chat/inline-chat-editor.controller.d.ts +1 -2
  115. package/lib/browser/widget/inline-chat/inline-chat-editor.controller.d.ts.map +1 -1
  116. package/lib/browser/widget/inline-chat/inline-chat-editor.controller.js +49 -21
  117. package/lib/browser/widget/inline-chat/inline-chat-editor.controller.js.map +1 -1
  118. package/lib/browser/widget/inline-chat/inline-chat.feature.registry.d.ts +13 -3
  119. package/lib/browser/widget/inline-chat/inline-chat.feature.registry.d.ts.map +1 -1
  120. package/lib/browser/widget/inline-chat/inline-chat.feature.registry.js +72 -24
  121. package/lib/browser/widget/inline-chat/inline-chat.feature.registry.js.map +1 -1
  122. package/lib/browser/widget/inline-chat/inline-chat.service.d.ts +6 -1
  123. package/lib/browser/widget/inline-chat/inline-chat.service.d.ts.map +1 -1
  124. package/lib/browser/widget/inline-chat/inline-chat.service.js +17 -5
  125. package/lib/browser/widget/inline-chat/inline-chat.service.js.map +1 -1
  126. package/lib/browser/widget/inline-chat/inline-content-widget.d.ts +5 -2
  127. package/lib/browser/widget/inline-chat/inline-content-widget.d.ts.map +1 -1
  128. package/lib/browser/widget/inline-chat/inline-content-widget.js +42 -17
  129. package/lib/browser/widget/inline-chat/inline-content-widget.js.map +1 -1
  130. package/lib/browser/widget/inline-diff/inline-diff-previewer.d.ts +5 -22
  131. package/lib/browser/widget/inline-diff/inline-diff-previewer.d.ts.map +1 -1
  132. package/lib/browser/widget/inline-diff/inline-diff-previewer.js +30 -61
  133. package/lib/browser/widget/inline-diff/inline-diff-previewer.js.map +1 -1
  134. package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts +12 -8
  135. package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts.map +1 -1
  136. package/lib/browser/widget/inline-diff/inline-diff.controller.js +96 -68
  137. package/lib/browser/widget/inline-diff/inline-diff.controller.js.map +1 -1
  138. package/lib/browser/widget/inline-hint/inline-hint.controller.d.ts +1 -0
  139. package/lib/browser/widget/inline-hint/inline-hint.controller.d.ts.map +1 -1
  140. package/lib/browser/widget/inline-hint/inline-hint.controller.js +5 -0
  141. package/lib/browser/widget/inline-hint/inline-hint.controller.js.map +1 -1
  142. package/lib/browser/widget/inline-input/inline-input-widget.d.ts +2 -12
  143. package/lib/browser/widget/inline-input/inline-input-widget.d.ts.map +1 -1
  144. package/lib/browser/widget/inline-input/inline-input-widget.js +18 -26
  145. package/lib/browser/widget/inline-input/inline-input-widget.js.map +1 -1
  146. package/lib/browser/widget/inline-input/inline-input.controller.d.ts +5 -14
  147. package/lib/browser/widget/inline-input/inline-input.controller.d.ts.map +1 -1
  148. package/lib/browser/widget/inline-input/inline-input.controller.js +165 -321
  149. package/lib/browser/widget/inline-input/inline-input.controller.js.map +1 -1
  150. package/lib/browser/widget/inline-input/inline-input.module.less +0 -4
  151. package/lib/browser/widget/inline-input/inline-input.service.d.ts +7 -19
  152. package/lib/browser/widget/inline-input/inline-input.service.d.ts.map +1 -1
  153. package/lib/browser/widget/inline-input/inline-input.service.js +12 -72
  154. package/lib/browser/widget/inline-input/inline-input.service.js.map +1 -1
  155. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts +19 -9
  156. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts.map +1 -1
  157. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js +39 -47
  158. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js.map +1 -1
  159. package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts +4 -21
  160. package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts.map +1 -1
  161. package/lib/browser/widget/inline-stream-diff/live-preview.component.js +5 -37
  162. package/lib/browser/widget/inline-stream-diff/live-preview.component.js.map +1 -1
  163. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.d.ts +11 -7
  164. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.d.ts.map +1 -1
  165. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js +77 -34
  166. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js.map +1 -1
  167. package/lib/common/index.d.ts +0 -10
  168. package/lib/common/index.d.ts.map +1 -1
  169. package/lib/common/index.js +1 -4
  170. package/lib/common/index.js.map +1 -1
  171. package/lib/common/types.d.ts +0 -17
  172. package/lib/common/types.d.ts.map +1 -1
  173. package/lib/common/utils.d.ts +0 -1
  174. package/lib/common/utils.d.ts.map +1 -1
  175. package/lib/common/utils.js +3 -5
  176. package/lib/common/utils.js.map +1 -1
  177. package/lib/node/index.d.ts.map +1 -1
  178. package/lib/node/index.js +0 -19
  179. package/lib/node/index.js.map +1 -1
  180. package/package.json +22 -33
  181. package/src/browser/ai-core.contextkeys.ts +0 -3
  182. package/src/browser/ai-core.contribution.ts +21 -167
  183. package/src/browser/chat/chat-agent.service.ts +0 -7
  184. package/src/browser/chat/chat-manager.service.ts +7 -83
  185. package/src/browser/chat/chat-model.ts +20 -86
  186. package/src/browser/chat/chat-proxy.service.ts +3 -55
  187. package/src/browser/chat/chat.api.service.ts +2 -2
  188. package/src/browser/chat/chat.internal.service.ts +6 -35
  189. package/src/browser/chat/chat.module.less +41 -17
  190. package/src/browser/chat/chat.view.tsx +45 -191
  191. package/src/browser/components/ChatEditor.tsx +10 -13
  192. package/src/browser/components/ChatInput.tsx +0 -1
  193. package/src/browser/components/ChatMarkdown.tsx +2 -4
  194. package/src/browser/components/ChatReply.tsx +9 -38
  195. package/src/browser/components/ChatThinking.tsx +1 -1
  196. package/src/browser/components/WelcomeMsg.tsx +1 -1
  197. package/src/browser/components/components.module.less +31 -33
  198. package/src/browser/contrib/intelligent-completions/index.ts +4 -19
  199. package/src/browser/contrib/intelligent-completions/intelligent-completions.contribution.ts +8 -32
  200. package/src/browser/contrib/intelligent-completions/intelligent-completions.controller.ts +67 -102
  201. package/src/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.ts +0 -11
  202. package/src/browser/contrib/intelligent-completions/source/base.ts +14 -39
  203. package/src/browser/contrib/intelligent-completions/source/line-change.source.ts +22 -129
  204. package/src/browser/contrib/intelligent-completions/source/lint-error.source.ts +31 -19
  205. package/src/browser/contrib/terminal/component/terminal-command-suggest-controller.tsx +1 -1
  206. package/src/browser/index.ts +6 -69
  207. package/src/browser/languages/tree-sitter/wasm-manager.ts +2 -12
  208. package/src/browser/layout/ai-layout.tsx +2 -5
  209. package/src/browser/layout/layout.module.less +9 -9
  210. package/src/browser/layout/tabbar.view.tsx +8 -10
  211. package/src/browser/model/enhanceDecorationsCollection.ts +77 -62
  212. package/src/browser/model/msg-history-manager.ts +2 -56
  213. package/src/browser/model/styles.module.less +7 -0
  214. package/src/browser/preferences/schema.ts +0 -69
  215. package/src/browser/types.ts +5 -100
  216. package/src/browser/widget/inline-chat/inline-chat-editor.controller.ts +65 -30
  217. package/src/browser/widget/inline-chat/inline-chat.feature.registry.ts +90 -23
  218. package/src/browser/widget/inline-chat/inline-chat.service.ts +17 -2
  219. package/src/browser/widget/inline-chat/inline-content-widget.tsx +69 -14
  220. package/src/browser/widget/inline-diff/inline-diff-previewer.ts +32 -87
  221. package/src/browser/widget/inline-diff/inline-diff.controller.ts +114 -90
  222. package/src/browser/widget/inline-hint/inline-hint.controller.ts +7 -1
  223. package/src/browser/widget/inline-input/inline-input-widget.tsx +12 -34
  224. package/src/browser/widget/inline-input/inline-input.controller.ts +242 -454
  225. package/src/browser/widget/inline-input/inline-input.module.less +0 -4
  226. package/src/browser/widget/inline-input/inline-input.service.ts +13 -92
  227. package/src/browser/widget/inline-stream-diff/inline-stream-diff.handler.tsx +67 -58
  228. package/src/browser/widget/inline-stream-diff/live-preview.component.tsx +6 -49
  229. package/src/browser/widget/inline-stream-diff/live-preview.decoration.tsx +112 -41
  230. package/src/common/index.ts +0 -15
  231. package/src/common/types.ts +0 -22
  232. package/src/common/utils.ts +2 -4
  233. package/src/node/index.ts +0 -21
  234. package/lib/browser/components/ChatContext/ContextSelector.d.ts +0 -12
  235. package/lib/browser/components/ChatContext/ContextSelector.d.ts.map +0 -1
  236. package/lib/browser/components/ChatContext/ContextSelector.js +0 -113
  237. package/lib/browser/components/ChatContext/ContextSelector.js.map +0 -1
  238. package/lib/browser/components/ChatContext/index.d.ts +0 -4
  239. package/lib/browser/components/ChatContext/index.d.ts.map +0 -1
  240. package/lib/browser/components/ChatContext/index.js +0 -100
  241. package/lib/browser/components/ChatContext/index.js.map +0 -1
  242. package/lib/browser/components/ChatContext/style.module.less +0 -201
  243. package/lib/browser/components/ChatHistory.d.ts +0 -21
  244. package/lib/browser/components/ChatHistory.d.ts.map +0 -1
  245. package/lib/browser/components/ChatHistory.js +0 -148
  246. package/lib/browser/components/ChatHistory.js.map +0 -1
  247. package/lib/browser/components/ChatToolRender.d.ts +0 -7
  248. package/lib/browser/components/ChatToolRender.d.ts.map +0 -1
  249. package/lib/browser/components/ChatToolRender.js +0 -71
  250. package/lib/browser/components/ChatToolRender.js.map +0 -1
  251. package/lib/browser/components/ChatToolRender.module.less +0 -86
  252. package/lib/browser/components/chat-history.css +0 -139
  253. package/lib/browser/context/llm-context.contribution.d.ts +0 -7
  254. package/lib/browser/context/llm-context.contribution.d.ts.map +0 -1
  255. package/lib/browser/context/llm-context.contribution.js +0 -21
  256. package/lib/browser/context/llm-context.contribution.js.map +0 -1
  257. package/lib/browser/context/llm-context.service.d.ts +0 -36
  258. package/lib/browser/context/llm-context.service.d.ts.map +0 -1
  259. package/lib/browser/context/llm-context.service.js +0 -170
  260. package/lib/browser/context/llm-context.service.js.map +0 -1
  261. package/lib/browser/contrib/intelligent-completions/source/trigger.source.d.ts +0 -13
  262. package/lib/browser/contrib/intelligent-completions/source/trigger.source.d.ts.map +0 -1
  263. package/lib/browser/contrib/intelligent-completions/source/trigger.source.js +0 -36
  264. package/lib/browser/contrib/intelligent-completions/source/trigger.source.js.map +0 -1
  265. package/lib/browser/contrib/intelligent-completions/source/typing.source.d.ts +0 -9
  266. package/lib/browser/contrib/intelligent-completions/source/typing.source.d.ts.map +0 -1
  267. package/lib/browser/contrib/intelligent-completions/source/typing.source.js +0 -36
  268. package/lib/browser/contrib/intelligent-completions/source/typing.source.js.map +0 -1
  269. package/lib/browser/mcp/base-apply.service.d.ts +0 -67
  270. package/lib/browser/mcp/base-apply.service.d.ts.map +0 -1
  271. package/lib/browser/mcp/base-apply.service.js +0 -290
  272. package/lib/browser/mcp/base-apply.service.js.map +0 -1
  273. package/lib/browser/mcp/mcp-server-proxy.service.d.ts +0 -30
  274. package/lib/browser/mcp/mcp-server-proxy.service.d.ts.map +0 -1
  275. package/lib/browser/mcp/mcp-server-proxy.service.js +0 -57
  276. package/lib/browser/mcp/mcp-server-proxy.service.js.map +0 -1
  277. package/lib/browser/mcp/mcp-server.feature.registry.d.ts +0 -20
  278. package/lib/browser/mcp/mcp-server.feature.registry.d.ts.map +0 -1
  279. package/lib/browser/mcp/mcp-server.feature.registry.js +0 -69
  280. package/lib/browser/mcp/mcp-server.feature.registry.js.map +0 -1
  281. package/lib/browser/mcp/mcp-tools-dialog.module.less +0 -44
  282. package/lib/browser/mcp/mcp-tools-dialog.view.d.ts +0 -8
  283. package/lib/browser/mcp/mcp-tools-dialog.view.d.ts.map +0 -1
  284. package/lib/browser/mcp/mcp-tools-dialog.view.js +0 -16
  285. package/lib/browser/mcp/mcp-tools-dialog.view.js.map +0 -1
  286. package/lib/browser/mcp/tools/components/EditFile.d.ts +0 -3
  287. package/lib/browser/mcp/tools/components/EditFile.d.ts.map +0 -1
  288. package/lib/browser/mcp/tools/components/EditFile.js +0 -101
  289. package/lib/browser/mcp/tools/components/EditFile.js.map +0 -1
  290. package/lib/browser/mcp/tools/components/SearchResult.d.ts +0 -11
  291. package/lib/browser/mcp/tools/components/SearchResult.d.ts.map +0 -1
  292. package/lib/browser/mcp/tools/components/SearchResult.js +0 -60
  293. package/lib/browser/mcp/tools/components/SearchResult.js.map +0 -1
  294. package/lib/browser/mcp/tools/components/Terminal.d.ts +0 -4
  295. package/lib/browser/mcp/tools/components/Terminal.d.ts.map +0 -1
  296. package/lib/browser/mcp/tools/components/Terminal.js +0 -64
  297. package/lib/browser/mcp/tools/components/Terminal.js.map +0 -1
  298. package/lib/browser/mcp/tools/components/index.module.less +0 -168
  299. package/lib/browser/mcp/tools/createNewFileWithText.d.ts +0 -9
  300. package/lib/browser/mcp/tools/createNewFileWithText.d.ts.map +0 -1
  301. package/lib/browser/mcp/tools/createNewFileWithText.js +0 -82
  302. package/lib/browser/mcp/tools/createNewFileWithText.js.map +0 -1
  303. package/lib/browser/mcp/tools/editFile.d.ts +0 -8
  304. package/lib/browser/mcp/tools/editFile.d.ts.map +0 -1
  305. package/lib/browser/mcp/tools/editFile.js +0 -95
  306. package/lib/browser/mcp/tools/editFile.js.map +0 -1
  307. package/lib/browser/mcp/tools/fileSearch.d.ts +0 -10
  308. package/lib/browser/mcp/tools/fileSearch.d.ts.map +0 -1
  309. package/lib/browser/mcp/tools/fileSearch.js +0 -94
  310. package/lib/browser/mcp/tools/fileSearch.js.map +0 -1
  311. package/lib/browser/mcp/tools/getDiagnosticsByPath.d.ts +0 -10
  312. package/lib/browser/mcp/tools/getDiagnosticsByPath.d.ts.map +0 -1
  313. package/lib/browser/mcp/tools/getDiagnosticsByPath.js +0 -118
  314. package/lib/browser/mcp/tools/getDiagnosticsByPath.js.map +0 -1
  315. package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.d.ts +0 -11
  316. package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.d.ts.map +0 -1
  317. package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.js +0 -118
  318. package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.js.map +0 -1
  319. package/lib/browser/mcp/tools/grepSearch.d.ts +0 -10
  320. package/lib/browser/mcp/tools/grepSearch.d.ts.map +0 -1
  321. package/lib/browser/mcp/tools/grepSearch.js +0 -118
  322. package/lib/browser/mcp/tools/grepSearch.js.map +0 -1
  323. package/lib/browser/mcp/tools/handlers/EditFile.d.ts +0 -10
  324. package/lib/browser/mcp/tools/handlers/EditFile.d.ts.map +0 -1
  325. package/lib/browser/mcp/tools/handlers/EditFile.js +0 -28
  326. package/lib/browser/mcp/tools/handlers/EditFile.js.map +0 -1
  327. package/lib/browser/mcp/tools/handlers/ListDir.d.ts +0 -21
  328. package/lib/browser/mcp/tools/handlers/ListDir.d.ts.map +0 -1
  329. package/lib/browser/mcp/tools/handlers/ListDir.js +0 -112
  330. package/lib/browser/mcp/tools/handlers/ListDir.js.map +0 -1
  331. package/lib/browser/mcp/tools/handlers/ReadFile.d.ts +0 -53
  332. package/lib/browser/mcp/tools/handlers/ReadFile.d.ts.map +0 -1
  333. package/lib/browser/mcp/tools/handlers/ReadFile.js +0 -161
  334. package/lib/browser/mcp/tools/handlers/ReadFile.js.map +0 -1
  335. package/lib/browser/mcp/tools/handlers/RunCommand.d.ts +0 -43
  336. package/lib/browser/mcp/tools/handlers/RunCommand.d.ts.map +0 -1
  337. package/lib/browser/mcp/tools/handlers/RunCommand.js +0 -104
  338. package/lib/browser/mcp/tools/handlers/RunCommand.js.map +0 -1
  339. package/lib/browser/mcp/tools/handlers/utils.d.ts +0 -2
  340. package/lib/browser/mcp/tools/handlers/utils.d.ts.map +0 -1
  341. package/lib/browser/mcp/tools/handlers/utils.js +0 -7
  342. package/lib/browser/mcp/tools/handlers/utils.js.map +0 -1
  343. package/lib/browser/mcp/tools/listDir.d.ts +0 -8
  344. package/lib/browser/mcp/tools/listDir.d.ts.map +0 -1
  345. package/lib/browser/mcp/tools/listDir.js +0 -64
  346. package/lib/browser/mcp/tools/listDir.js.map +0 -1
  347. package/lib/browser/mcp/tools/readFile.d.ts +0 -8
  348. package/lib/browser/mcp/tools/readFile.d.ts.map +0 -1
  349. package/lib/browser/mcp/tools/readFile.js +0 -81
  350. package/lib/browser/mcp/tools/readFile.js.map +0 -1
  351. package/lib/browser/mcp/tools/runTerminalCmd.d.ts +0 -13
  352. package/lib/browser/mcp/tools/runTerminalCmd.d.ts.map +0 -1
  353. package/lib/browser/mcp/tools/runTerminalCmd.js +0 -49
  354. package/lib/browser/mcp/tools/runTerminalCmd.js.map +0 -1
  355. package/lib/browser/widget/inline-input/model.d.ts +0 -34
  356. package/lib/browser/widget/inline-input/model.d.ts.map +0 -1
  357. package/lib/browser/widget/inline-input/model.js +0 -63
  358. package/lib/browser/widget/inline-input/model.js.map +0 -1
  359. package/lib/common/llm-context.d.ts +0 -40
  360. package/lib/common/llm-context.d.ts.map +0 -1
  361. package/lib/common/llm-context.js +0 -5
  362. package/lib/common/llm-context.js.map +0 -1
  363. package/lib/common/mcp-server-manager.d.ts +0 -40
  364. package/lib/common/mcp-server-manager.d.ts.map +0 -1
  365. package/lib/common/mcp-server-manager.js +0 -6
  366. package/lib/common/mcp-server-manager.js.map +0 -1
  367. package/lib/common/prompts/context-prompt-provider.d.ts +0 -14
  368. package/lib/common/prompts/context-prompt-provider.d.ts.map +0 -1
  369. package/lib/common/prompts/context-prompt-provider.js +0 -38
  370. package/lib/common/prompts/context-prompt-provider.js.map +0 -1
  371. package/lib/common/tool-invocation-registry.d.ts +0 -92
  372. package/lib/common/tool-invocation-registry.d.ts.map +0 -1
  373. package/lib/common/tool-invocation-registry.js +0 -90
  374. package/lib/common/tool-invocation-registry.js.map +0 -1
  375. package/lib/node/anthropic/anthropic-language-model.d.ts +0 -9
  376. package/lib/node/anthropic/anthropic-language-model.d.ts.map +0 -1
  377. package/lib/node/anthropic/anthropic-language-model.js +0 -26
  378. package/lib/node/anthropic/anthropic-language-model.js.map +0 -1
  379. package/lib/node/base-language-model.d.ts +0 -14
  380. package/lib/node/base-language-model.d.ts.map +0 -1
  381. package/lib/node/base-language-model.js +0 -140
  382. package/lib/node/base-language-model.js.map +0 -1
  383. package/lib/node/deepseek/deepseek-language-model.d.ts +0 -9
  384. package/lib/node/deepseek/deepseek-language-model.d.ts.map +0 -1
  385. package/lib/node/deepseek/deepseek-language-model.js +0 -26
  386. package/lib/node/deepseek/deepseek-language-model.js.map +0 -1
  387. package/lib/node/mcp/sumi-mcp-server.d.ts +0 -91
  388. package/lib/node/mcp/sumi-mcp-server.d.ts.map +0 -1
  389. package/lib/node/mcp/sumi-mcp-server.js +0 -175
  390. package/lib/node/mcp/sumi-mcp-server.js.map +0 -1
  391. package/lib/node/mcp-server-manager-impl.d.ts +0 -27
  392. package/lib/node/mcp-server-manager-impl.d.ts.map +0 -1
  393. package/lib/node/mcp-server-manager-impl.js +0 -128
  394. package/lib/node/mcp-server-manager-impl.js.map +0 -1
  395. package/lib/node/mcp-server.d.ts +0 -207
  396. package/lib/node/mcp-server.d.ts.map +0 -1
  397. package/lib/node/mcp-server.js +0 -92
  398. package/lib/node/mcp-server.js.map +0 -1
  399. package/lib/node/openai/openai-language-model.d.ts +0 -9
  400. package/lib/node/openai/openai-language-model.d.ts.map +0 -1
  401. package/lib/node/openai/openai-language-model.js +0 -29
  402. package/lib/node/openai/openai-language-model.js.map +0 -1
  403. package/src/browser/components/ChatContext/ContextSelector.tsx +0 -177
  404. package/src/browser/components/ChatContext/index.tsx +0 -151
  405. package/src/browser/components/ChatContext/style.module.less +0 -201
  406. package/src/browser/components/ChatHistory.tsx +0 -292
  407. package/src/browser/components/ChatToolRender.module.less +0 -86
  408. package/src/browser/components/ChatToolRender.tsx +0 -96
  409. package/src/browser/components/chat-history.css +0 -139
  410. package/src/browser/context/llm-context.contribution.ts +0 -14
  411. package/src/browser/context/llm-context.service.ts +0 -200
  412. package/src/browser/contrib/intelligent-completions/source/trigger.source.ts +0 -44
  413. package/src/browser/contrib/intelligent-completions/source/typing.source.ts +0 -34
  414. package/src/browser/mcp/base-apply.service.ts +0 -349
  415. package/src/browser/mcp/mcp-server-proxy.service.ts +0 -55
  416. package/src/browser/mcp/mcp-server.feature.registry.ts +0 -77
  417. package/src/browser/mcp/mcp-tools-dialog.module.less +0 -44
  418. package/src/browser/mcp/mcp-tools-dialog.view.tsx +0 -24
  419. package/src/browser/mcp/tools/components/EditFile.tsx +0 -144
  420. package/src/browser/mcp/tools/components/SearchResult.tsx +0 -92
  421. package/src/browser/mcp/tools/components/Terminal.tsx +0 -97
  422. package/src/browser/mcp/tools/components/index.module.less +0 -168
  423. package/src/browser/mcp/tools/createNewFileWithText.ts +0 -82
  424. package/src/browser/mcp/tools/editFile.ts +0 -100
  425. package/src/browser/mcp/tools/fileSearch.ts +0 -99
  426. package/src/browser/mcp/tools/getDiagnosticsByPath.ts +0 -122
  427. package/src/browser/mcp/tools/getOpenEditorFileDiagnostics.ts +0 -120
  428. package/src/browser/mcp/tools/grepSearch.ts +0 -121
  429. package/src/browser/mcp/tools/handlers/EditFile.ts +0 -21
  430. package/src/browser/mcp/tools/handlers/ListDir.ts +0 -117
  431. package/src/browser/mcp/tools/handlers/ReadFile.ts +0 -192
  432. package/src/browser/mcp/tools/handlers/RunCommand.ts +0 -115
  433. package/src/browser/mcp/tools/handlers/utils.ts +0 -3
  434. package/src/browser/mcp/tools/listDir.ts +0 -65
  435. package/src/browser/mcp/tools/readFile.ts +0 -81
  436. package/src/browser/mcp/tools/runTerminalCmd.ts +0 -45
  437. package/src/browser/widget/inline-input/model.ts +0 -74
  438. package/src/common/llm-context.ts +0 -47
  439. package/src/common/mcp-server-manager.ts +0 -51
  440. package/src/common/prompts/context-prompt-provider.ts +0 -46
  441. package/src/common/tool-invocation-registry.ts +0 -168
  442. package/src/node/anthropic/anthropic-language-model.ts +0 -25
  443. package/src/node/base-language-model.ts +0 -177
  444. package/src/node/deepseek/deepseek-language-model.ts +0 -25
  445. package/src/node/mcp/sumi-mcp-server.ts +0 -200
  446. package/src/node/mcp-server-manager-impl.ts +0 -156
  447. package/src/node/mcp-server.ts +0 -127
  448. package/src/node/openai/openai-language-model.ts +0 -25
@@ -1,82 +0,0 @@
1
- import { z } from 'zod';
2
-
3
- import { Autowired } from '@opensumi/di';
4
- import { Domain, URI, path } from '@opensumi/ide-core-common';
5
- import { IFileServiceClient } from '@opensumi/ide-file-service';
6
- import { IWorkspaceService } from '@opensumi/ide-workspace';
7
-
8
- import { IMCPServerRegistry, MCPLogger, MCPServerContribution, MCPToolDefinition } from '../../types';
9
-
10
- const inputSchema = z.object({
11
- pathInProject: z.string().describe('The relative path where the file should be created'),
12
- text: z.string().describe('The content to write into the new file'),
13
- });
14
-
15
- @Domain(MCPServerContribution)
16
- export class CreateNewFileWithTextTool implements MCPServerContribution {
17
- @Autowired(IWorkspaceService)
18
- private readonly workspaceService: IWorkspaceService;
19
-
20
- @Autowired(IFileServiceClient)
21
- private readonly fileService: IFileServiceClient;
22
-
23
- registerMCPServer(registry: IMCPServerRegistry): void {
24
- registry.registerMCPTool(this.getToolDefinition());
25
- }
26
-
27
- getToolDefinition(): MCPToolDefinition {
28
- return {
29
- name: 'create_new_file_with_text',
30
- description:
31
- 'Creates a new file at the specified path within the project directory and populates it with the provided text. ' +
32
- 'Use this tool to generate new files in your project structure. ' +
33
- 'Requires two parameters: ' +
34
- '- pathInProject: The relative path where the file should be created ' +
35
- '- text: The content to write into the new file ' +
36
- 'Returns one of two possible responses: ' +
37
- '"ok" if the file was successfully created and populated, ' +
38
- '"can\'t find project dir" if the project directory cannot be determined. ' +
39
- 'Note: Creates any necessary parent directories automatically.',
40
- inputSchema,
41
- handler: this.handler.bind(this),
42
- };
43
- }
44
-
45
- private async handler(args: z.infer<typeof inputSchema>, logger: MCPLogger) {
46
- try {
47
- // 获取工作区根目录
48
- const workspaceRoots = this.workspaceService.tryGetRoots();
49
- if (!workspaceRoots || workspaceRoots.length === 0) {
50
- logger.appendLine('Error: Cannot determine project directory');
51
- return {
52
- content: [{ type: 'text', text: "can't find project dir" }],
53
- isError: true,
54
- };
55
- }
56
-
57
- // 构建完整的文件路径
58
- const rootUri = URI.parse(workspaceRoots[0].uri);
59
- const fullPath = path.join(rootUri.codeUri.fsPath, args.pathInProject);
60
- const fileUri = URI.file(fullPath);
61
-
62
- // 创建父目录
63
- const parentDir = path.dirname(fullPath);
64
- const parentUri = URI.file(parentDir);
65
- await this.fileService.createFolder(parentUri.toString());
66
-
67
- // 写入文件内容
68
- await this.fileService.createFile(fileUri.toString(), { content: args.text });
69
-
70
- logger.appendLine(`Successfully created file at: ${args.pathInProject}`);
71
- return {
72
- content: [{ type: 'text', text: 'ok' }],
73
- };
74
- } catch (error) {
75
- logger.appendLine(`Error during file creation: ${error}`);
76
- return {
77
- content: [{ type: 'text', text: 'unknown error' }],
78
- isError: true,
79
- };
80
- }
81
- }
82
- }
@@ -1,100 +0,0 @@
1
- import { z } from 'zod';
2
-
3
- import { Autowired } from '@opensumi/di';
4
- import { Domain } from '@opensumi/ide-core-common';
5
-
6
- import { IMCPServerRegistry, MCPLogger, MCPServerContribution, MCPToolDefinition } from '../../types';
7
-
8
- import { EditFileToolComponent } from './components/EditFile';
9
- import { EditFileHandler } from './handlers/EditFile';
10
- const inputSchema = z
11
- .object({
12
- target_file: z
13
- .string()
14
- .describe(
15
- '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
- ),
17
- instructions: z
18
- .string()
19
- .optional()
20
- .describe(
21
- '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.',
22
- ),
23
- code_edit: z
24
- .string()
25
- .describe(
26
- "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 ...`",
27
- ),
28
- })
29
- .transform((data) => ({
30
- targetFile: data.target_file,
31
- instructions: data.instructions,
32
- codeEdit: data.code_edit,
33
- }));
34
-
35
- @Domain(MCPServerContribution)
36
- export class EditFileTool implements MCPServerContribution {
37
- @Autowired(EditFileHandler)
38
- private readonly editFileHandler: EditFileHandler;
39
-
40
- registerMCPServer(registry: IMCPServerRegistry): void {
41
- registry.registerMCPTool(this.getToolDefinition());
42
- registry.registerToolComponent('edit_file', EditFileToolComponent);
43
- }
44
-
45
- getToolDefinition(): MCPToolDefinition {
46
- return {
47
- name: 'edit_file',
48
- label: 'Edit File',
49
- description: `Use this tool to propose an edit to an existing file.
50
- 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.
51
- 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.
52
- For example:
53
- \`\`\`
54
- // ... existing code ...
55
- FIRST_EDIT
56
- // ... existing code ...
57
- SECOND_EDIT
58
- // ... existing code ...
59
- THIRD_EDIT
60
- // ... existing code ...
61
- \`\`\`
62
- You should bias towards repeating as few lines of the original file as possible to convey the change.
63
- But, each edit should contain sufficient context of unchanged lines around the code you're editing to resolve ambiguity.
64
- DO NOT omit spans of pre-existing code without using the \`// ... existing code ...\` comment to indicate its absence.
65
- Make sure it is clear what the edit should be.
66
- You should specify the following arguments before the others: [target_file]`,
67
- inputSchema,
68
- handler: this.handler.bind(this),
69
- };
70
- }
71
-
72
- private async handler(args: z.infer<typeof inputSchema>, logger: MCPLogger) {
73
- const result = await this.editFileHandler.handler(args.targetFile, args.codeEdit, args.instructions);
74
- return {
75
- content: [
76
- {
77
- type: 'text',
78
- // TODO: lint error
79
- text: result.applyResult
80
- ? `The apply model made the following changes to the file:
81
-
82
- \`\`\`
83
- ${result.applyResult.diff}
84
- \`\`\`
85
- ${
86
- result.applyResult.diagnosticInfos.length > 0
87
- ? `The edit introduced the following new linter errors:
88
- ${result.applyResult.diagnosticInfos
89
- .map((error) => `Line ${error.startLineNumber}: ${error.message.split('\n')[0]}`)
90
- .join('\n')}
91
-
92
- 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.`
93
- : ''
94
- }`
95
- : 'User cancelled the edit.',
96
- },
97
- ],
98
- };
99
- }
100
- }
@@ -1,99 +0,0 @@
1
- import { z } from 'zod';
2
-
3
- import { Autowired } from '@opensumi/di';
4
- import { Domain, URI } from '@opensumi/ide-core-common';
5
- import { FileSearchServicePath, IFileSearchService } from '@opensumi/ide-file-search/lib/common';
6
- import { IWorkspaceService } from '@opensumi/ide-workspace';
7
-
8
- import { IChatInternalService } from '../../../common';
9
- import { ChatInternalService } from '../../chat/chat.internal.service';
10
- import { IMCPServerRegistry, MCPLogger, MCPServerContribution, MCPToolDefinition } from '../../types';
11
-
12
- import { FileSearchToolComponent } from './components/SearchResult';
13
-
14
- const inputSchema = z.object({
15
- query: z.string().describe('Fuzzy filename to search for'),
16
- explanation: 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
-
21
- const MAX_RESULTS = 10;
22
-
23
- @Domain(MCPServerContribution)
24
- export class FileSearchTool implements MCPServerContribution {
25
- @Autowired(IWorkspaceService)
26
- private readonly workspaceService: IWorkspaceService;
27
-
28
- @Autowired(FileSearchServicePath)
29
- private readonly fileSearchService: IFileSearchService;
30
-
31
- @Autowired(IChatInternalService)
32
- private readonly chatInternalService: ChatInternalService;
33
-
34
- registerMCPServer(registry: IMCPServerRegistry): void {
35
- registry.registerMCPTool(this.getToolDefinition());
36
- registry.registerToolComponent('file_search', FileSearchToolComponent);
37
- }
38
-
39
- getToolDefinition(): MCPToolDefinition {
40
- return {
41
- name: 'file_search',
42
- label: 'Search Files',
43
- description:
44
- "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.",
45
- inputSchema,
46
- handler: this.handler.bind(this),
47
- };
48
- }
49
-
50
- private async handler(args: z.infer<typeof inputSchema> & { toolCallId: string }, logger: MCPLogger) {
51
- if (!args.query) {
52
- throw new Error('No fileSearch parameters provided. Need to give a query.');
53
- }
54
- // 获取工作区根目录
55
- const workspaceRoots = this.workspaceService.tryGetRoots();
56
- if (!workspaceRoots || workspaceRoots.length === 0) {
57
- throw new Error('Cannot determine project directory');
58
- }
59
-
60
- // 使用 OpenSumi 的文件搜索 API
61
- const searchPattern = args.query;
62
- const searchResults = await this.fileSearchService.find(searchPattern, {
63
- rootUris: [new URI(workspaceRoots[0].uri).codeUri.fsPath],
64
- // TODO: 忽略配置
65
- excludePatterns: ['**/node_modules/**'],
66
- limit: 100,
67
- useGitIgnore: true,
68
- noIgnoreParent: true,
69
- fuzzyMatch: true,
70
- });
71
-
72
- const files = searchResults.slice(0, MAX_RESULTS).map((file) => {
73
- const uri = URI.parse(file);
74
- return uri.codeUri.fsPath;
75
- });
76
-
77
- const messages = this.chatInternalService.sessionModel.history.getMessages();
78
- this.chatInternalService.sessionModel.history.setMessageAdditional(messages[messages.length - 1].id, {
79
- [args.toolCallId]: {
80
- files,
81
- },
82
- });
83
-
84
- logger.appendLine(`Found ${files.length} files matching "${args.query}"`);
85
-
86
- return {
87
- content: [
88
- {
89
- type: 'text',
90
- text: `${files.join('\n')}\n${
91
- searchResults.length > MAX_RESULTS
92
- ? `\nFound ${searchResults.length} files matching "${args.query}", only return the first ${MAX_RESULTS} results`
93
- : ''
94
- }`,
95
- },
96
- ],
97
- };
98
- }
99
- }
@@ -1,122 +0,0 @@
1
- import * as path from 'path';
2
-
3
- import { z } from 'zod';
4
-
5
- import { Autowired, Injectable } from '@opensumi/di';
6
- import { Domain, URI } from '@opensumi/ide-core-common';
7
- import { IWorkspaceService } from '@opensumi/ide-workspace';
8
- import { URI as MonacoURI } from '@opensumi/monaco-editor-core/esm/vs/base/common/uri';
9
- import { IMarkerService, MarkerSeverity } from '@opensumi/monaco-editor-core/esm/vs/platform/markers/common/markers';
10
-
11
- import { IMCPServerRegistry, MCPLogger, MCPServerContribution, MCPToolDefinition } from '../../types';
12
-
13
- const inputSchema = z.object({
14
- filePathInProject: z.string().describe('The relative path to the file to get diagnostics for'),
15
- });
16
-
17
- @Domain(MCPServerContribution)
18
- export class GetDiagnosticsByPathTool implements MCPServerContribution {
19
- @Autowired(IWorkspaceService)
20
- private readonly workspaceService: IWorkspaceService;
21
-
22
- @Autowired(IMarkerService)
23
- private readonly markerService: IMarkerService;
24
-
25
- registerMCPServer(registry: IMCPServerRegistry): void {
26
- registry.registerMCPTool(this.getToolDefinition());
27
- }
28
-
29
- getToolDefinition(): MCPToolDefinition {
30
- return {
31
- name: 'get_diagnostics_by_path',
32
- description:
33
- 'Retrieves diagnostic information (errors, warnings, etc.) from a specific file in the project. ' +
34
- 'Use this tool to get information about problems in any project file. ' +
35
- 'IMPORTANT: This tool should be called after any code generation or modification operations to verify and fix potential issues. ' +
36
- 'Requires a filePathInProject parameter specifying the target file path relative to project root. ' +
37
- 'Returns a JSON-formatted list of diagnostics, where each entry contains: ' +
38
- '- path: The file path where the diagnostic was found ' +
39
- '- line: The line number (1-based) of the diagnostic ' +
40
- '- severity: The severity level ("error", "warning", "information", or "hint") ' +
41
- '- message: The diagnostic message ' +
42
- "Returns an empty list ([]) if no diagnostics are found or the file doesn't exist. " +
43
- 'Best Practice: Always check diagnostics after code generation to ensure code quality and fix any issues immediately. ' +
44
- 'Use this tool in combination with get_open_in_editor_file_diagnostics to verify all affected files after code changes. ' +
45
- 'Diagnostic Severity Handling Guidelines: ' +
46
- '- "error": Must be fixed immediately as they indicate critical issues that will prevent code from working correctly. ' +
47
- '- "warning": For user code, preserve unless the warning indicates a clear improvement opportunity. For generated code, optimize to remove warnings. ' +
48
- '- "information"/"hint": For user code, preserve as they might reflect intentional patterns. For generated code, optimize if it improves code quality without changing functionality.',
49
- inputSchema,
50
- handler: this.handler.bind(this),
51
- };
52
- }
53
-
54
- private async handler(args: z.infer<typeof inputSchema>, logger: MCPLogger) {
55
- try {
56
- // 获取工作区根目录
57
- const workspaceRoots = this.workspaceService.tryGetRoots();
58
- if (!workspaceRoots || workspaceRoots.length === 0) {
59
- logger.appendLine('Error: Cannot determine project directory');
60
- return {
61
- content: [{ type: 'text', text: '[]' }],
62
- isError: true,
63
- };
64
- }
65
-
66
- // 构建完整的文件路径
67
- const rootUri = URI.parse(workspaceRoots[0].uri);
68
- const fullPath = path.join(rootUri.codeUri.fsPath, args.filePathInProject);
69
- const uri = MonacoURI.file(fullPath);
70
-
71
- // 检查文件是否在项目目录内
72
- const relativePath = path.relative(rootUri.codeUri.fsPath, fullPath);
73
- if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) {
74
- logger.appendLine('Error: File is outside of project scope');
75
- return {
76
- content: [{ type: 'text', text: '[]' }],
77
- isError: true,
78
- };
79
- }
80
-
81
- // 获取文件的诊断信息
82
- const markers = this.markerService.read({ resource: uri });
83
-
84
- // 转换诊断信息
85
- const diagnosticInfos = markers.map((marker) => ({
86
- path: args.filePathInProject,
87
- line: marker.startLineNumber,
88
- severity: this.getSeverityString(marker.severity),
89
- message: marker.message,
90
- }));
91
-
92
- // 将结果转换为 JSON 字符串
93
- const resultJson = JSON.stringify(diagnosticInfos, null, 2);
94
- logger.appendLine(`Found ${diagnosticInfos.length} diagnostics in ${args.filePathInProject}`);
95
-
96
- return {
97
- content: [{ type: 'text', text: resultJson }],
98
- };
99
- } catch (error) {
100
- logger.appendLine(`Error getting diagnostics: ${error}`);
101
- return {
102
- content: [{ type: 'text', text: '[]' }],
103
- isError: true,
104
- };
105
- }
106
- }
107
-
108
- private getSeverityString(severity: MarkerSeverity): string {
109
- switch (severity) {
110
- case MarkerSeverity.Error:
111
- return 'error';
112
- case MarkerSeverity.Warning:
113
- return 'warning';
114
- case MarkerSeverity.Info:
115
- return 'information';
116
- case MarkerSeverity.Hint:
117
- return 'hint';
118
- default:
119
- return 'unknown';
120
- }
121
- }
122
- }
@@ -1,120 +0,0 @@
1
- import * as path from 'path';
2
-
3
- import { z } from 'zod';
4
-
5
- import { Autowired, Injectable } from '@opensumi/di';
6
- import { Domain, URI } from '@opensumi/ide-core-common';
7
- import { WorkbenchEditorService } from '@opensumi/ide-editor';
8
- import { IWorkspaceService } from '@opensumi/ide-workspace';
9
- import { URI as MonacoURI } from '@opensumi/monaco-editor-core/esm/vs/base/common/uri';
10
- import { IMarkerService, MarkerSeverity } from '@opensumi/monaco-editor-core/esm/vs/platform/markers/common/markers';
11
-
12
- import { IMCPServerRegistry, MCPLogger, MCPServerContribution, MCPToolDefinition } from '../../types';
13
-
14
- const inputSchema = z.object({});
15
-
16
- @Domain(MCPServerContribution)
17
- export class GetOpenEditorFileDiagnosticsTool implements MCPServerContribution {
18
- @Autowired(WorkbenchEditorService)
19
- private readonly editorService: WorkbenchEditorService;
20
-
21
- @Autowired(IWorkspaceService)
22
- private readonly workspaceService: IWorkspaceService;
23
-
24
- @Autowired(IMarkerService)
25
- private readonly markerService: IMarkerService;
26
-
27
- registerMCPServer(registry: IMCPServerRegistry): void {
28
- registry.registerMCPTool(this.getToolDefinition());
29
- }
30
-
31
- getToolDefinition(): MCPToolDefinition {
32
- return {
33
- name: 'get_open_in_editor_file_diagnostics',
34
- description:
35
- 'Retrieves diagnostic information (errors, warnings, etc.) from the currently active file in VS Code editor. ' +
36
- 'Use this tool to get information about problems in your current file. ' +
37
- 'IMPORTANT: This tool should be called after any code generation or modification operations to verify and fix potential issues. ' +
38
- 'Returns a JSON-formatted list of diagnostics, where each entry contains: ' +
39
- '- path: The file path where the diagnostic was found ' +
40
- '- line: The line number (1-based) of the diagnostic ' +
41
- '- severity: The severity level ("error", "warning", "information", or "hint") ' +
42
- '- message: The diagnostic message ' +
43
- 'Returns an empty list ([]) if no diagnostics are found or no file is open. ' +
44
- 'Best Practice: Always check diagnostics after code generation to ensure code quality and fix any issues immediately. ' +
45
- 'Diagnostic Severity Handling Guidelines: ' +
46
- '- "error": Must be fixed immediately as they indicate critical issues that will prevent code from working correctly. ' +
47
- '- "warning": For user code, preserve unless the warning indicates a clear improvement opportunity. For generated code, optimize to remove warnings. ' +
48
- '- "information"/"hint": For user code, preserve as they might reflect intentional patterns. For generated code, optimize if it improves code quality without changing functionality.',
49
- inputSchema,
50
- handler: this.handler.bind(this),
51
- };
52
- }
53
-
54
- private async handler(args: z.infer<typeof inputSchema>, logger: MCPLogger) {
55
- try {
56
- // 获取当前活动的编辑器
57
- const editor = this.editorService.currentEditor;
58
- if (!editor || !editor.currentUri) {
59
- logger.appendLine('Error: No active text editor found');
60
- return {
61
- content: [{ type: 'text', text: '[]' }],
62
- isError: true,
63
- };
64
- }
65
-
66
- // 获取工作区根目录
67
- const workspaceRoots = this.workspaceService.tryGetRoots();
68
- if (!workspaceRoots || workspaceRoots.length === 0) {
69
- logger.appendLine('Error: Cannot determine project directory');
70
- return {
71
- content: [{ type: 'text', text: '[]' }],
72
- isError: true,
73
- };
74
- }
75
-
76
- // 获取当前文件的诊断信息
77
- const monacoUri = MonacoURI.parse(editor.currentUri.toString());
78
- const markers = this.markerService.read({ resource: monacoUri });
79
- const rootUri = URI.parse(workspaceRoots[0].uri);
80
- const relativePath = path.relative(rootUri.codeUri.fsPath, editor.currentUri.codeUri.fsPath);
81
-
82
- // 转换诊断信息
83
- const diagnosticInfos = markers.map((marker) => ({
84
- path: relativePath,
85
- line: marker.startLineNumber,
86
- severity: this.getSeverityString(marker.severity),
87
- message: marker.message,
88
- }));
89
-
90
- // 将结果转换为 JSON 字符串
91
- const resultJson = JSON.stringify(diagnosticInfos, null, 2);
92
- logger.appendLine(`Found ${diagnosticInfos.length} diagnostics in current file`);
93
-
94
- return {
95
- content: [{ type: 'text', text: resultJson }],
96
- };
97
- } catch (error) {
98
- logger.appendLine(`Error getting diagnostics: ${error}`);
99
- return {
100
- content: [{ type: 'text', text: '[]' }],
101
- isError: true,
102
- };
103
- }
104
- }
105
-
106
- private getSeverityString(severity: MarkerSeverity): string {
107
- switch (severity) {
108
- case MarkerSeverity.Error:
109
- return 'error';
110
- case MarkerSeverity.Warning:
111
- return 'warning';
112
- case MarkerSeverity.Info:
113
- return 'information';
114
- case MarkerSeverity.Hint:
115
- return 'hint';
116
- default:
117
- return 'unknown';
118
- }
119
- }
120
- }
@@ -1,121 +0,0 @@
1
- import { z } from 'zod';
2
-
3
- import { Autowired } from '@opensumi/di';
4
- import { CancellationToken, Deferred, Domain } from '@opensumi/ide-core-common';
5
- import { ContentSearchResult, IContentSearchClientService } from '@opensumi/ide-search';
6
- import { ContentSearchClientService } from '@opensumi/ide-search/lib/browser/search.service';
7
- import { IWorkspaceService } from '@opensumi/ide-workspace';
8
-
9
- import { IChatInternalService } from '../../../common';
10
- import { ChatInternalService } from '../../chat/chat.internal.service';
11
- import { IMCPServerRegistry, MCPLogger, MCPServerContribution, MCPToolDefinition } from '../../types';
12
-
13
- import { GrepSearchToolComponent } from './components/SearchResult';
14
-
15
- const inputSchema = z.object({
16
- query: z.string().describe('The regex pattern to search for'),
17
- case_sensitive: z.boolean().optional().describe('Whether the search should be case sensitive'),
18
- include_pattern: z
19
- .string()
20
- .optional()
21
- .describe('Glob pattern for files to include (e.g. "*.ts" for TypeScript files)'),
22
- exclude_pattern: z.string().optional().describe('Glob pattern for files to exclude'),
23
- explanation: z
24
- .string()
25
- .optional()
26
- .describe('One sentence explanation as to why this tool is being used, and how it contributes to the goal.'),
27
- });
28
-
29
- const MAX_RESULTS = 50;
30
-
31
- @Domain(MCPServerContribution)
32
- export class GrepSearchTool implements MCPServerContribution {
33
- @Autowired(IWorkspaceService)
34
- private readonly workspaceService: IWorkspaceService;
35
-
36
- @Autowired(IContentSearchClientService)
37
- private readonly searchService: ContentSearchClientService;
38
-
39
- @Autowired(IChatInternalService)
40
- private readonly chatInternalService: ChatInternalService;
41
-
42
- registerMCPServer(registry: IMCPServerRegistry): void {
43
- registry.registerMCPTool(this.getToolDefinition());
44
- registry.registerToolComponent('grep_search', GrepSearchToolComponent);
45
- }
46
-
47
- getToolDefinition(): MCPToolDefinition {
48
- return {
49
- name: 'grep_search',
50
- label: 'Search Contents',
51
- description:
52
- // TODO: 支持语义化搜索后需要描述清楚优劣势
53
- 'Fast text-based regex search that finds exact pattern matches within files or directories, utilizing the ripgrep command for efficient searching.\nResults will be formatted in the style of ripgrep and can be configured to include line numbers and content.\nTo avoid overwhelming output, the results are capped at 50 matches.\nUse the include or exclude patterns to filter the search scope by file type or specific paths.\n\nThis is best for finding exact text matches or regex patterns.',
54
- inputSchema,
55
- handler: this.handler.bind(this),
56
- };
57
- }
58
-
59
- private async handler(args: z.infer<typeof inputSchema> & { toolCallId: string }, logger: MCPLogger) {
60
- if (!args.query) {
61
- throw new Error('No ripgrep search parameters provided. Need to give at least a query.');
62
- }
63
- // 获取工作区根目录
64
- const workspaceRoots = this.workspaceService.tryGetRoots();
65
- if (!workspaceRoots || workspaceRoots.length === 0) {
66
- throw new Error('Cannot determine project directory');
67
- }
68
-
69
- // 使用 OpenSumi 的文件搜索 API
70
- const searchPattern = args.query;
71
- await this.searchService.doSearch(
72
- searchPattern,
73
- {
74
- isMatchCase: !!args.case_sensitive,
75
- include: args.include_pattern?.split(','),
76
- exclude: args.exclude_pattern?.split(','),
77
- maxResults: MAX_RESULTS,
78
- isUseRegexp: true,
79
- isToggleOpen: false,
80
- isDetailOpen: false,
81
- isWholeWord: false,
82
- isOnlyOpenEditors: false,
83
- isIncludeIgnored: false,
84
- },
85
- CancellationToken.None,
86
- );
87
- const deferred = new Deferred<string>();
88
- this.searchService.onDidChange(() => {
89
- if (this.searchService.isSearching) {
90
- return;
91
- }
92
- const results: string[] = [];
93
- const files: string[] = [];
94
- for (const [fileUri, result] of this.searchService.searchResults.entries()) {
95
- results.push(
96
- `File: ${fileUri}\n${result
97
- .reduce((acc, r) => {
98
- if (acc.find((a) => a.line === r.line)) {
99
- return acc;
100
- }
101
- return [...acc, r];
102
- }, [] as ContentSearchResult[])
103
- .map((r) => `Line: ${r.line}\nContent: ${r.lineText || r.renderLineText}`)
104
- .join('\n')}`,
105
- );
106
- files.push(fileUri);
107
- }
108
- deferred.resolve(results.join('\n\n'));
109
- const messages = this.chatInternalService.sessionModel.history.getMessages();
110
- this.chatInternalService.sessionModel.history.setMessageAdditional(messages[messages.length - 1].id, {
111
- [args.toolCallId]: {
112
- files,
113
- },
114
- });
115
- });
116
- const text = await deferred.promise;
117
- return {
118
- content: [{ type: 'text', text }],
119
- };
120
- }
121
- }
@@ -1,21 +0,0 @@
1
- import { Autowired, Injectable } from '@opensumi/di';
2
-
3
- import { BaseApplyService } from '../../base-apply.service';
4
-
5
- /**
6
- * TODO: 代码块改动版本号,次数,流式工具调用?
7
- * 基础文件编辑处理类
8
- * 用于处理代码改动的应用、保存等操作
9
- */
10
- @Injectable()
11
- export class EditFileHandler {
12
- @Autowired(BaseApplyService)
13
- private applyService: BaseApplyService;
14
-
15
- async handler(relativePath: string, updateContent: string, instructions?: string) {
16
- // TODO: ignore file
17
- this.applyService.registerCodeBlock(relativePath, updateContent);
18
- const blockData = await this.applyService.apply(relativePath, updateContent, instructions);
19
- return blockData;
20
- }
21
- }