@opensumi/ide-ai-native 3.8.1-next-1741228774.0 → 3.8.1-next-1741250387.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 (325) hide show
  1. package/lib/browser/ai-core.contextkeys.d.ts +1 -1
  2. package/lib/browser/ai-core.contextkeys.d.ts.map +1 -1
  3. package/lib/browser/ai-core.contextkeys.js +1 -1
  4. package/lib/browser/ai-core.contextkeys.js.map +1 -1
  5. package/lib/browser/ai-core.contribution.d.ts +0 -5
  6. package/lib/browser/ai-core.contribution.d.ts.map +1 -1
  7. package/lib/browser/ai-core.contribution.js +9 -71
  8. package/lib/browser/ai-core.contribution.js.map +1 -1
  9. package/lib/browser/chat/chat-agent.service.d.ts +3 -11
  10. package/lib/browser/chat/chat-agent.service.d.ts.map +1 -1
  11. package/lib/browser/chat/chat-agent.service.js +5 -43
  12. package/lib/browser/chat/chat-agent.service.js.map +1 -1
  13. package/lib/browser/chat/chat-manager.service.d.ts +0 -1
  14. package/lib/browser/chat/chat-manager.service.d.ts.map +1 -1
  15. package/lib/browser/chat/chat-manager.service.js +8 -6
  16. package/lib/browser/chat/chat-manager.service.js.map +1 -1
  17. package/lib/browser/chat/chat-model.d.ts +1 -4
  18. package/lib/browser/chat/chat-model.d.ts.map +1 -1
  19. package/lib/browser/chat/chat-model.js +2 -57
  20. package/lib/browser/chat/chat-model.js.map +1 -1
  21. package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
  22. package/lib/browser/chat/chat-proxy.service.js +6 -13
  23. package/lib/browser/chat/chat-proxy.service.js.map +1 -1
  24. package/lib/browser/chat/chat.api.service.d.ts +2 -1
  25. package/lib/browser/chat/chat.api.service.d.ts.map +1 -1
  26. package/lib/browser/chat/chat.api.service.js +4 -0
  27. package/lib/browser/chat/chat.api.service.js.map +1 -1
  28. package/lib/browser/chat/chat.internal.service.d.ts +0 -2
  29. package/lib/browser/chat/chat.internal.service.d.ts.map +1 -1
  30. package/lib/browser/chat/chat.internal.service.js +0 -3
  31. package/lib/browser/chat/chat.internal.service.js.map +1 -1
  32. package/lib/browser/chat/chat.module.less +2 -1
  33. package/lib/browser/chat/chat.view.d.ts.map +1 -1
  34. package/lib/browser/chat/chat.view.js +29 -46
  35. package/lib/browser/chat/chat.view.js.map +1 -1
  36. package/lib/browser/components/ChatContext/index.js +2 -2
  37. package/lib/browser/components/ChatContext/index.js.map +1 -1
  38. package/lib/browser/components/ChatInput.d.ts.map +1 -1
  39. package/lib/browser/components/ChatInput.js +1 -29
  40. package/lib/browser/components/ChatInput.js.map +1 -1
  41. package/lib/browser/components/ChatReply.js +1 -6
  42. package/lib/browser/components/ChatReply.js.map +1 -1
  43. package/lib/browser/components/ChatThinking.d.ts +2 -0
  44. package/lib/browser/components/ChatThinking.d.ts.map +1 -1
  45. package/lib/browser/components/ChatThinking.js +10 -2
  46. package/lib/browser/components/ChatThinking.js.map +1 -1
  47. package/lib/browser/components/ChatToolRender.d.ts.map +1 -1
  48. package/lib/browser/components/ChatToolRender.js +3 -2
  49. package/lib/browser/components/ChatToolRender.js.map +1 -1
  50. package/lib/browser/components/WelcomeMsg.js +1 -1
  51. package/lib/browser/components/WelcomeMsg.js.map +1 -1
  52. package/lib/browser/components/chat-history.module.less +1 -2
  53. package/lib/browser/components/components.module.less +0 -22
  54. package/lib/browser/context/llm-context.service.d.ts +5 -18
  55. package/lib/browser/context/llm-context.service.d.ts.map +1 -1
  56. package/lib/browser/context/llm-context.service.js +47 -81
  57. package/lib/browser/context/llm-context.service.js.map +1 -1
  58. package/lib/browser/contrib/inline-completions/inline-completions.controller.js +1 -1
  59. package/lib/browser/contrib/inline-completions/inline-completions.controller.js.map +1 -1
  60. package/lib/browser/contrib/inline-completions/prompt/matcher.js +2 -2
  61. package/lib/browser/contrib/inline-completions/prompt/similarSnippets.d.ts +1 -1
  62. package/lib/browser/contrib/inline-completions/prompt/similarSnippets.js +2 -2
  63. package/lib/browser/contrib/intelligent-completions/index.d.ts +1 -2
  64. package/lib/browser/contrib/intelligent-completions/index.d.ts.map +1 -1
  65. package/lib/browser/contrib/intelligent-completions/index.js +1 -4
  66. package/lib/browser/contrib/intelligent-completions/index.js.map +1 -1
  67. package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.js +2 -2
  68. package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.js.map +1 -1
  69. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.d.ts.map +1 -1
  70. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.js +5 -6
  71. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.js.map +1 -1
  72. package/lib/browser/contrib/intelligent-completions/view/code-edits-previewer.d.ts.map +1 -1
  73. package/lib/browser/contrib/intelligent-completions/view/code-edits-previewer.js +2 -4
  74. package/lib/browser/contrib/intelligent-completions/view/code-edits-previewer.js.map +1 -1
  75. package/lib/browser/contrib/intelligent-completions/view/default.d.ts.map +1 -1
  76. package/lib/browser/contrib/intelligent-completions/view/default.js +11 -23
  77. package/lib/browser/contrib/intelligent-completions/view/default.js.map +1 -1
  78. package/lib/browser/index.d.ts.map +1 -1
  79. package/lib/browser/index.js +0 -4
  80. package/lib/browser/index.js.map +1 -1
  81. package/lib/browser/layout/layout.module.less +4 -4
  82. package/lib/browser/mcp/base-apply.service.d.ts +11 -26
  83. package/lib/browser/mcp/base-apply.service.d.ts.map +1 -1
  84. package/lib/browser/mcp/base-apply.service.js +103 -255
  85. package/lib/browser/mcp/base-apply.service.js.map +1 -1
  86. package/lib/browser/mcp/mcp-server-proxy.service.d.ts +0 -6
  87. package/lib/browser/mcp/mcp-server-proxy.service.d.ts.map +1 -1
  88. package/lib/browser/mcp/mcp-server-proxy.service.js +1 -10
  89. package/lib/browser/mcp/mcp-server-proxy.service.js.map +1 -1
  90. package/lib/browser/mcp/mcp-server.feature.registry.d.ts +0 -8
  91. package/lib/browser/mcp/mcp-server.feature.registry.d.ts.map +1 -1
  92. package/lib/browser/mcp/mcp-server.feature.registry.js +3 -28
  93. package/lib/browser/mcp/mcp-server.feature.registry.js.map +1 -1
  94. package/lib/browser/mcp/tools/components/EditFile.d.ts.map +1 -1
  95. package/lib/browser/mcp/tools/components/EditFile.js +9 -15
  96. package/lib/browser/mcp/tools/components/EditFile.js.map +1 -1
  97. package/lib/browser/mcp/tools/components/SearchResult.d.ts +11 -0
  98. package/lib/browser/mcp/tools/components/SearchResult.d.ts.map +1 -0
  99. package/lib/browser/mcp/tools/components/{ExpandableFileList.js → SearchResult.js} +19 -29
  100. package/lib/browser/mcp/tools/components/SearchResult.js.map +1 -0
  101. package/lib/browser/mcp/tools/components/Terminal.d.ts.map +1 -1
  102. package/lib/browser/mcp/tools/components/Terminal.js +2 -10
  103. package/lib/browser/mcp/tools/components/Terminal.js.map +1 -1
  104. package/lib/browser/mcp/tools/components/index.module.less +0 -4
  105. package/lib/browser/mcp/tools/createNewFileWithText.d.ts +0 -1
  106. package/lib/browser/mcp/tools/createNewFileWithText.d.ts.map +1 -1
  107. package/lib/browser/mcp/tools/createNewFileWithText.js +11 -19
  108. package/lib/browser/mcp/tools/createNewFileWithText.js.map +1 -1
  109. package/lib/browser/mcp/tools/fileSearch.d.ts +0 -1
  110. package/lib/browser/mcp/tools/fileSearch.d.ts.map +1 -1
  111. package/lib/browser/mcp/tools/fileSearch.js +5 -14
  112. package/lib/browser/mcp/tools/fileSearch.js.map +1 -1
  113. package/lib/browser/mcp/tools/getDiagnosticsByPath.d.ts.map +1 -1
  114. package/lib/browser/mcp/tools/getDiagnosticsByPath.js +0 -1
  115. package/lib/browser/mcp/tools/getDiagnosticsByPath.js.map +1 -1
  116. package/lib/browser/mcp/tools/grepSearch.d.ts.map +1 -1
  117. package/lib/browser/mcp/tools/grepSearch.js +3 -6
  118. package/lib/browser/mcp/tools/grepSearch.js.map +1 -1
  119. package/lib/browser/mcp/tools/handlers/EditFile.js +1 -1
  120. package/lib/browser/mcp/tools/handlers/EditFile.js.map +1 -1
  121. package/lib/browser/mcp/tools/handlers/ListDir.d.ts +0 -1
  122. package/lib/browser/mcp/tools/handlers/ListDir.d.ts.map +1 -1
  123. package/lib/browser/mcp/tools/handlers/ListDir.js +0 -3
  124. package/lib/browser/mcp/tools/handlers/ListDir.js.map +1 -1
  125. package/lib/browser/mcp/tools/handlers/RunCommand.d.ts.map +1 -1
  126. package/lib/browser/mcp/tools/handlers/RunCommand.js +0 -2
  127. package/lib/browser/mcp/tools/handlers/RunCommand.js.map +1 -1
  128. package/lib/browser/mcp/tools/listDir.d.ts +0 -1
  129. package/lib/browser/mcp/tools/listDir.d.ts.map +1 -1
  130. package/lib/browser/mcp/tools/listDir.js +4 -35
  131. package/lib/browser/mcp/tools/listDir.js.map +1 -1
  132. package/lib/browser/mcp/tools/runTerminalCmd.d.ts.map +1 -1
  133. package/lib/browser/mcp/tools/runTerminalCmd.js +0 -1
  134. package/lib/browser/mcp/tools/runTerminalCmd.js.map +1 -1
  135. package/lib/browser/model/msg-history-manager.d.ts +2 -2
  136. package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
  137. package/lib/browser/model/msg-history-manager.js +10 -4
  138. package/lib/browser/model/msg-history-manager.js.map +1 -1
  139. package/lib/browser/preferences/schema.d.ts.map +1 -1
  140. package/lib/browser/preferences/schema.js +2 -22
  141. package/lib/browser/preferences/schema.js.map +1 -1
  142. package/lib/browser/types.d.ts +0 -4
  143. package/lib/browser/types.d.ts.map +1 -1
  144. package/lib/browser/widget/inline-chat/inline-chat-controller.d.ts.map +1 -1
  145. package/lib/browser/widget/inline-chat/inline-chat-controller.js +1 -6
  146. package/lib/browser/widget/inline-chat/inline-chat-controller.js.map +1 -1
  147. package/lib/browser/widget/inline-diff/inline-diff-manager.d.ts.map +1 -1
  148. package/lib/browser/widget/inline-diff/inline-diff-manager.js +8 -68
  149. package/lib/browser/widget/inline-diff/inline-diff-manager.js.map +1 -1
  150. package/lib/browser/widget/inline-diff/inline-diff-previewer.d.ts +4 -10
  151. package/lib/browser/widget/inline-diff/inline-diff-previewer.d.ts.map +1 -1
  152. package/lib/browser/widget/inline-diff/inline-diff-previewer.js +3 -14
  153. package/lib/browser/widget/inline-diff/inline-diff-previewer.js.map +1 -1
  154. package/lib/browser/widget/inline-diff/inline-diff-widget.module.less +4 -25
  155. package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts +3 -3
  156. package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts.map +1 -1
  157. package/lib/browser/widget/inline-diff/inline-diff.controller.js +5 -10
  158. package/lib/browser/widget/inline-diff/inline-diff.controller.js.map +1 -1
  159. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts +17 -46
  160. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts.map +1 -1
  161. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js +53 -110
  162. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js.map +1 -1
  163. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.d.ts +0 -4
  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 +1 -26
  166. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js.map +1 -1
  167. package/lib/common/index.d.ts +4 -13
  168. package/lib/common/index.d.ts.map +1 -1
  169. package/lib/common/index.js +1 -5
  170. package/lib/common/index.js.map +1 -1
  171. package/lib/common/llm-context.d.ts +9 -13
  172. package/lib/common/llm-context.d.ts.map +1 -1
  173. package/lib/common/llm-context.js.map +1 -1
  174. package/lib/common/mcp-server-manager.d.ts +1 -17
  175. package/lib/common/mcp-server-manager.d.ts.map +1 -1
  176. package/lib/common/mcp-server-manager.js.map +1 -1
  177. package/lib/common/prompts/context-prompt-provider.d.ts +3 -4
  178. package/lib/common/prompts/context-prompt-provider.d.ts.map +1 -1
  179. package/lib/common/prompts/context-prompt-provider.js +22 -33
  180. package/lib/common/prompts/context-prompt-provider.js.map +1 -1
  181. package/lib/common/tool-invocation-registry.d.ts +2 -2
  182. package/lib/common/tool-invocation-registry.d.ts.map +1 -1
  183. package/lib/common/tool-invocation-registry.js +1 -1
  184. package/lib/common/tool-invocation-registry.js.map +1 -1
  185. package/lib/common/types.d.ts +0 -8
  186. package/lib/common/types.d.ts.map +1 -1
  187. package/lib/common/utils.d.ts.map +1 -1
  188. package/lib/common/utils.js +1 -2
  189. package/lib/common/utils.js.map +1 -1
  190. package/lib/node/anthropic/anthropic-language-model.d.ts +1 -3
  191. package/lib/node/anthropic/anthropic-language-model.d.ts.map +1 -1
  192. package/lib/node/anthropic/anthropic-language-model.js +2 -6
  193. package/lib/node/anthropic/anthropic-language-model.js.map +1 -1
  194. package/lib/node/base-language-model.d.ts +3 -6
  195. package/lib/node/base-language-model.d.ts.map +1 -1
  196. package/lib/node/base-language-model.js +31 -14
  197. package/lib/node/base-language-model.js.map +1 -1
  198. package/lib/node/deepseek/deepseek-language-model.d.ts +1 -3
  199. package/lib/node/deepseek/deepseek-language-model.d.ts.map +1 -1
  200. package/lib/node/deepseek/deepseek-language-model.js +2 -6
  201. package/lib/node/deepseek/deepseek-language-model.js.map +1 -1
  202. package/lib/node/mcp/sumi-mcp-server.d.ts +3 -17
  203. package/lib/node/mcp/sumi-mcp-server.d.ts.map +1 -1
  204. package/lib/node/mcp/sumi-mcp-server.js +6 -59
  205. package/lib/node/mcp/sumi-mcp-server.js.map +1 -1
  206. package/lib/node/mcp-server-manager-impl.d.ts +3 -4
  207. package/lib/node/mcp-server-manager-impl.d.ts.map +1 -1
  208. package/lib/node/mcp-server-manager-impl.js +6 -26
  209. package/lib/node/mcp-server-manager-impl.js.map +1 -1
  210. package/lib/node/mcp-server.d.ts +16 -5
  211. package/lib/node/mcp-server.d.ts.map +1 -1
  212. package/lib/node/mcp-server.js +6 -12
  213. package/lib/node/mcp-server.js.map +1 -1
  214. package/lib/node/openai/openai-language-model.d.ts +2 -4
  215. package/lib/node/openai/openai-language-model.d.ts.map +1 -1
  216. package/lib/node/openai/openai-language-model.js +4 -6
  217. package/lib/node/openai/openai-language-model.js.map +1 -1
  218. package/package.json +26 -27
  219. package/src/browser/ai-core.contextkeys.ts +3 -3
  220. package/src/browser/ai-core.contribution.ts +12 -89
  221. package/src/browser/chat/chat-agent.service.ts +9 -53
  222. package/src/browser/chat/chat-manager.service.ts +8 -10
  223. package/src/browser/chat/chat-model.ts +5 -63
  224. package/src/browser/chat/chat-proxy.service.ts +8 -16
  225. package/src/browser/chat/chat.api.service.ts +5 -1
  226. package/src/browser/chat/chat.internal.service.ts +0 -4
  227. package/src/browser/chat/chat.module.less +2 -1
  228. package/src/browser/chat/chat.view.tsx +69 -63
  229. package/src/browser/components/ChatContext/index.tsx +2 -2
  230. package/src/browser/components/ChatInput.tsx +6 -81
  231. package/src/browser/components/ChatReply.tsx +6 -6
  232. package/src/browser/components/ChatThinking.tsx +9 -3
  233. package/src/browser/components/ChatToolRender.tsx +2 -1
  234. package/src/browser/components/WelcomeMsg.tsx +1 -1
  235. package/src/browser/components/chat-history.module.less +1 -2
  236. package/src/browser/components/components.module.less +0 -22
  237. package/src/browser/context/llm-context.service.ts +54 -100
  238. package/src/browser/contrib/inline-completions/inline-completions.controller.ts +1 -1
  239. package/src/browser/contrib/inline-completions/prompt/matcher.ts +2 -2
  240. package/src/browser/contrib/inline-completions/prompt/similarSnippets.ts +2 -2
  241. package/src/browser/contrib/intelligent-completions/index.ts +1 -5
  242. package/src/browser/contrib/intelligent-completions/intelligent-completions.contribution.ts +3 -3
  243. package/src/browser/contrib/intelligent-completions/intelligent-completions.controller.ts +6 -7
  244. package/src/browser/contrib/intelligent-completions/view/code-edits-previewer.ts +2 -4
  245. package/src/browser/contrib/intelligent-completions/view/default.ts +19 -34
  246. package/src/browser/index.ts +0 -4
  247. package/src/browser/layout/layout.module.less +4 -4
  248. package/src/browser/mcp/base-apply.service.ts +109 -306
  249. package/src/browser/mcp/mcp-server-proxy.service.ts +2 -14
  250. package/src/browser/mcp/mcp-server.feature.registry.ts +4 -35
  251. package/src/browser/mcp/tools/components/EditFile.tsx +9 -16
  252. package/src/browser/mcp/tools/components/SearchResult.tsx +92 -0
  253. package/src/browser/mcp/tools/components/Terminal.tsx +2 -13
  254. package/src/browser/mcp/tools/components/index.module.less +0 -4
  255. package/src/browser/mcp/tools/createNewFileWithText.ts +12 -21
  256. package/src/browser/mcp/tools/fileSearch.ts +4 -14
  257. package/src/browser/mcp/tools/getDiagnosticsByPath.ts +0 -1
  258. package/src/browser/mcp/tools/grepSearch.ts +3 -6
  259. package/src/browser/mcp/tools/handlers/EditFile.ts +1 -1
  260. package/src/browser/mcp/tools/handlers/ListDir.ts +0 -4
  261. package/src/browser/mcp/tools/handlers/RunCommand.ts +0 -2
  262. package/src/browser/mcp/tools/listDir.ts +5 -36
  263. package/src/browser/mcp/tools/runTerminalCmd.ts +0 -1
  264. package/src/browser/model/msg-history-manager.ts +11 -5
  265. package/src/browser/preferences/schema.ts +2 -22
  266. package/src/browser/types.ts +0 -1
  267. package/src/browser/widget/inline-chat/inline-chat-controller.ts +1 -5
  268. package/src/browser/widget/inline-diff/inline-diff-manager.tsx +21 -143
  269. package/src/browser/widget/inline-diff/inline-diff-previewer.ts +7 -25
  270. package/src/browser/widget/inline-diff/inline-diff-widget.module.less +4 -25
  271. package/src/browser/widget/inline-diff/inline-diff.controller.ts +8 -16
  272. package/src/browser/widget/inline-stream-diff/inline-stream-diff.handler.tsx +68 -139
  273. package/src/browser/widget/inline-stream-diff/live-preview.decoration.tsx +1 -30
  274. package/src/common/index.ts +4 -15
  275. package/src/common/llm-context.ts +4 -10
  276. package/src/common/mcp-server-manager.ts +1 -17
  277. package/src/common/prompts/context-prompt-provider.ts +29 -38
  278. package/src/common/tool-invocation-registry.ts +2 -2
  279. package/src/common/types.ts +0 -8
  280. package/src/common/utils.ts +1 -3
  281. package/src/node/anthropic/anthropic-language-model.ts +2 -7
  282. package/src/node/base-language-model.ts +38 -25
  283. package/src/node/deepseek/deepseek-language-model.ts +2 -7
  284. package/src/node/mcp/sumi-mcp-server.ts +9 -67
  285. package/src/node/mcp-server-manager-impl.ts +9 -30
  286. package/src/node/mcp-server.ts +14 -11
  287. package/src/node/openai/openai-language-model.ts +4 -8
  288. package/lib/browser/mcp/config/components/mcp-config.module.less +0 -178
  289. package/lib/browser/mcp/config/components/mcp-config.view.d.ts +0 -3
  290. package/lib/browser/mcp/config/components/mcp-config.view.d.ts.map +0 -1
  291. package/lib/browser/mcp/config/components/mcp-config.view.js +0 -150
  292. package/lib/browser/mcp/config/components/mcp-config.view.js.map +0 -1
  293. package/lib/browser/mcp/config/components/mcp-server-form.d.ts +0 -16
  294. package/lib/browser/mcp/config/components/mcp-server-form.d.ts.map +0 -1
  295. package/lib/browser/mcp/config/components/mcp-server-form.js +0 -84
  296. package/lib/browser/mcp/config/components/mcp-server-form.js.map +0 -1
  297. package/lib/browser/mcp/config/components/mcp-server-form.module.less +0 -78
  298. package/lib/browser/mcp/config/mcp-config.commands.d.ts +0 -10
  299. package/lib/browser/mcp/config/mcp-config.commands.d.ts.map +0 -1
  300. package/lib/browser/mcp/config/mcp-config.commands.js +0 -35
  301. package/lib/browser/mcp/config/mcp-config.commands.js.map +0 -1
  302. package/lib/browser/mcp/config/mcp-config.contribution.d.ts +0 -16
  303. package/lib/browser/mcp/config/mcp-config.contribution.d.ts.map +0 -1
  304. package/lib/browser/mcp/config/mcp-config.contribution.js +0 -62
  305. package/lib/browser/mcp/config/mcp-config.contribution.js.map +0 -1
  306. package/lib/browser/mcp/tools/components/ExpandableFileList.d.ts +0 -13
  307. package/lib/browser/mcp/tools/components/ExpandableFileList.d.ts.map +0 -1
  308. package/lib/browser/mcp/tools/components/ExpandableFileList.js.map +0 -1
  309. package/lib/common/model.d.ts +0 -12
  310. package/lib/common/model.d.ts.map +0 -1
  311. package/lib/common/model.js +0 -83
  312. package/lib/common/model.js.map +0 -1
  313. package/lib/node/openai-compatible/openai-compatible-language-model.d.ts +0 -10
  314. package/lib/node/openai-compatible/openai-compatible-language-model.d.ts.map +0 -1
  315. package/lib/node/openai-compatible/openai-compatible-language-model.js +0 -32
  316. package/lib/node/openai-compatible/openai-compatible-language-model.js.map +0 -1
  317. package/src/browser/mcp/config/components/mcp-config.module.less +0 -178
  318. package/src/browser/mcp/config/components/mcp-config.view.tsx +0 -215
  319. package/src/browser/mcp/config/components/mcp-server-form.module.less +0 -78
  320. package/src/browser/mcp/config/components/mcp-server-form.tsx +0 -144
  321. package/src/browser/mcp/config/mcp-config.commands.ts +0 -29
  322. package/src/browser/mcp/config/mcp-config.contribution.ts +0 -65
  323. package/src/browser/mcp/tools/components/ExpandableFileList.tsx +0 -133
  324. package/src/common/model.ts +0 -90
  325. package/src/node/openai-compatible/openai-compatible-language-model.ts +0 -30
@@ -44,13 +44,10 @@ export enum EComputerMode {
44
44
 
45
45
  const inlineStreamDiffComputer = new InlineStreamDiffComputer();
46
46
 
47
- /**
48
- * Abstract base class for inline streaming diff handlers
49
- */
50
47
  @Injectable({ multiple: true })
51
- export abstract class BaseInlineStreamDiffHandler extends Disposable implements IInlineDiffPreviewerNode {
48
+ export class InlineStreamDiffHandler extends Disposable implements IInlineDiffPreviewerNode {
52
49
  @Autowired(INJECTOR_TOKEN)
53
- protected readonly injector: Injector;
50
+ private readonly injector: Injector;
54
51
 
55
52
  protected readonly _onDidEditChange = this.registerDispose(new Emitter<void>());
56
53
  public readonly onDidEditChange: Event<void> = this._onDidEditChange.event;
@@ -60,14 +57,15 @@ export abstract class BaseInlineStreamDiffHandler extends Disposable implements
60
57
 
61
58
  public previewerOptions: IDiffPreviewerOptions;
62
59
 
63
- protected savedModel: ITextModel;
64
- protected virtualModel: ITextModel;
60
+ private originalModel: ITextModel;
61
+ private virtualModel: ITextModel;
65
62
 
66
- protected rawSavedTextLines: string[];
67
- protected rawOriginTextLinesTokens: LineTokens[] | undefined;
68
- protected undoRedoGroup: UndoRedoGroup = new UndoRedoGroup();
63
+ private rawOriginalTextLines: string[];
64
+ private rawOriginalTextLinesTokens: LineTokens[] = [];
65
+ private undoRedoGroup: UndoRedoGroup = new UndoRedoGroup();
69
66
 
70
- protected readonly finallyDiffModel: ISettableObservable<IComputeDiffData | undefined> = observableValue(
67
+ private readonly diffModel: ISettableObservable<IComputeDiffData | undefined> = observableValue(this, undefined);
68
+ private readonly finallyDiffModel: ISettableObservable<IComputeDiffData | undefined> = observableValue(
71
69
  this,
72
70
  undefined,
73
71
  );
@@ -75,15 +73,14 @@ export abstract class BaseInlineStreamDiffHandler extends Disposable implements
75
73
  public livePreviewDiffDecorationModel: LivePreviewDiffDecorationModel;
76
74
 
77
75
  public get uri() {
78
- return this.savedModel.uri;
76
+ return this.originalModel.uri;
79
77
  }
80
78
 
81
- constructor(protected readonly monacoEditor: ICodeEditor) {
79
+ constructor(private readonly monacoEditor: ICodeEditor) {
82
80
  super();
83
81
 
84
82
  const modelService = StandaloneServices.get(IModelService);
85
- const savedModel = this.monacoEditor.getModel()!;
86
- const setModel = modelService.createModel(
83
+ this.virtualModel = modelService.createModel(
87
84
  '',
88
85
  null,
89
86
  Uri.from({
@@ -92,8 +89,7 @@ export abstract class BaseInlineStreamDiffHandler extends Disposable implements
92
89
  }),
93
90
  true,
94
91
  );
95
- this.savedModel = savedModel;
96
- this.virtualModel = setModel;
92
+ this.originalModel = this.monacoEditor.getModel()!;
97
93
 
98
94
  this.livePreviewDiffDecorationModel = this.injector.get(LivePreviewDiffDecorationModel, [this.monacoEditor]);
99
95
  this.addDispose(this.livePreviewDiffDecorationModel);
@@ -117,21 +113,45 @@ export abstract class BaseInlineStreamDiffHandler extends Disposable implements
117
113
  });
118
114
  }
119
115
 
120
- abstract initialize(selection: Selection): void;
116
+ initialize(selection: Selection): void {
117
+ const eol = this.originalModel.getEOL();
118
+ const startPosition = selection.getStartPosition();
119
+ const endPosition = selection.getEndPosition();
120
+
121
+ this.rawOriginalTextLines = this.originalModel
122
+ .getValueInRange(Range.fromPositions(startPosition, endPosition))
123
+ .split(eol);
124
+
125
+ this.rawOriginalTextLinesTokens = this.rawOriginalTextLines.map((_, index) => {
126
+ const lineNumber = startPosition.lineNumber + index;
127
+ this.originalModel.tokenization.forceTokenization(lineNumber);
128
+ const lineTokens = this.originalModel.tokenization.getLineTokens(lineNumber);
129
+ return lineTokens;
130
+ });
131
+
132
+ const zone = LineRange.fromRangeInclusive(
133
+ Range.fromPositions(
134
+ { lineNumber: selection.startLineNumber, column: 1 },
135
+ { lineNumber: selection.endLineNumber, column: Number.MAX_SAFE_INTEGER },
136
+ ),
137
+ );
138
+
139
+ this.livePreviewDiffDecorationModel.initialize(zone);
140
+ }
121
141
 
122
142
  getVirtualModelValue() {
123
143
  return this.virtualModel.getValue();
124
144
  }
125
145
 
126
146
  getOriginModelValue() {
127
- return this.rawSavedTextLines.join('\n');
147
+ return this.rawOriginalTextLines.join('\n');
128
148
  }
129
149
 
130
150
  get onPartialEditWidgetListChange() {
131
151
  return this.livePreviewDiffDecorationModel.onPartialEditWidgetListChange;
132
152
  }
133
153
 
134
- protected computeDiff(
154
+ private computeDiff(
135
155
  originalTextLines: string[],
136
156
  newTextLines: string[],
137
157
  computerMode: EComputerMode = EComputerMode.default,
@@ -265,12 +285,7 @@ export abstract class BaseInlineStreamDiffHandler extends Disposable implements
265
285
  },
266
286
  textLines: removedTextLines.map((text, index) => ({
267
287
  text,
268
- lineTokens:
269
- this.rawOriginTextLinesTokens?.[removedLinesOriginalRange.startLineNumber - 1 + index] ||
270
- LineTokens.createEmpty(text, {
271
- encodeLanguageId: () => 0,
272
- decodeLanguageId: () => 'plaintext',
273
- }),
288
+ lineTokens: this.rawOriginalTextLinesTokens[removedLinesOriginalRange.startLineNumber - 1 + index],
274
289
  })),
275
290
  });
276
291
  }
@@ -283,11 +298,6 @@ export abstract class BaseInlineStreamDiffHandler extends Disposable implements
283
298
  });
284
299
  }
285
300
 
286
- /**
287
- * Get the original model for diff operations
288
- */
289
- protected abstract getOriginalModel(): ITextModel;
290
-
291
301
  /**
292
302
  * 令当前的 inline diff 在流式渲染过程当中使用 pushEditOperations 进行编辑的操作都放在同一组 undo/redo 堆栈里
293
303
  * 一旦撤销到最顶层则关闭当前的 inline diff
@@ -300,24 +310,22 @@ export abstract class BaseInlineStreamDiffHandler extends Disposable implements
300
310
  });
301
311
  }
302
312
 
303
- protected renderDiffEdits(diffModel: IComputeDiffData): void {
313
+ private renderDiffEdits(diffModel: IComputeDiffData): void {
304
314
  const { activeLine, newFullRangeTextLines, pendingRange } = diffModel;
315
+ const eol = this.originalModel.getEOL();
305
316
  const zone = this.getZone();
306
317
 
307
- const originalModel = this.getOriginalModel();
308
- const eol = originalModel.getEOL();
309
-
310
318
  const validZone =
311
319
  zone.startLineNumber < zone.endLineNumberExclusive
312
320
  ? new Range(
313
321
  zone.startLineNumber,
314
322
  1,
315
323
  zone.endLineNumberExclusive - 1,
316
- originalModel.getLineMaxColumn(zone.endLineNumberExclusive - 1),
324
+ this.originalModel.getLineMaxColumn(zone.endLineNumberExclusive - 1),
317
325
  )
318
326
  : new Range(zone.startLineNumber, 1, zone.startLineNumber, 1);
319
327
 
320
- const newOriginalTextLines = originalModel.getValueInRange(validZone).split(eol);
328
+ const newOriginalTextLines = this.originalModel.getValueInRange(validZone).split(eol);
321
329
  const diffComputation = linesDiffComputers.getDefault().computeDiff(newOriginalTextLines, newFullRangeTextLines, {
322
330
  computeMoves: false,
323
331
  maxComputationTimeMs: 200,
@@ -362,7 +370,7 @@ export abstract class BaseInlineStreamDiffHandler extends Disposable implements
362
370
  validZone.startLineNumber + change.original.startLineNumber - 1,
363
371
  1,
364
372
  validZone.startLineNumber + change.original.endLineNumberExclusive - 2,
365
- originalModel.getLineMaxColumn(validZone.startLineNumber + change.original.endLineNumberExclusive - 2),
373
+ this.originalModel.getLineMaxColumn(validZone.startLineNumber + change.original.endLineNumberExclusive - 2),
366
374
  );
367
375
  }
368
376
  const edit = {
@@ -373,7 +381,7 @@ export abstract class BaseInlineStreamDiffHandler extends Disposable implements
373
381
  realTimeChanges.push(edit);
374
382
  }
375
383
  }
376
- originalModel.pushEditOperations(null, realTimeChanges, () => null, this.undoRedoGroup);
384
+ this.originalModel.pushEditOperations(null, realTimeChanges, () => null, this.undoRedoGroup);
377
385
 
378
386
  /**
379
387
  * 根据 newFullRangeTextLines 内容长度重新计算 zone,避免超过最大长度,进而影响未选中的代码区域
@@ -413,20 +421,17 @@ export abstract class BaseInlineStreamDiffHandler extends Disposable implements
413
421
  this._onDidEditChange.fire();
414
422
  }
415
423
 
416
- public recompute(computerMode: EComputerMode, content?: string): IComputeDiffData {
417
- if (content) {
418
- this.virtualModel.setValue(content);
424
+ public recompute(computerMode: EComputerMode, newContent?: string): IComputeDiffData {
425
+ if (newContent) {
426
+ this.virtualModel.setValue(newContent);
419
427
  }
420
428
 
421
- const textLines = this.virtualModel.getLinesContent();
422
- return this.processDiffComputation(textLines, computerMode);
429
+ const newTextLines = this.virtualModel.getLinesContent();
430
+ return this.computeDiff(this.rawOriginalTextLines, newTextLines, computerMode);
423
431
  }
424
432
 
425
- protected currentEditLine = 0;
426
- protected isEditing = false;
427
-
428
- protected abstract processDiffComputation(currentText: string[], computerMode?: EComputerMode): IComputeDiffData;
429
-
433
+ private currentEditLine = 0;
434
+ private isEditing = false;
430
435
  public async rateRenderEditController(): Promise<void> {
431
436
  if (this.isEditing === false) {
432
437
  this.isEditing = true;
@@ -438,14 +443,19 @@ export abstract class BaseInlineStreamDiffHandler extends Disposable implements
438
443
 
439
444
  const virtualTextLines = this.virtualModel.getLinesContent();
440
445
  const currentText = virtualTextLines.slice(0, this.currentEditLine);
441
- const currentDiffModel = this.processDiffComputation(currentText);
446
+ const currentDiffModel = this.computeDiff(this.rawOriginalTextLines, currentText);
447
+ transaction((tx) => {
448
+ this.diffModel.set(currentDiffModel, tx);
449
+ });
450
+
451
+ this.onDiffFinishedEmitter.fire(currentDiffModel);
442
452
 
443
- if (this.savedModel.id === this.monacoEditor.getModel()?.id) {
453
+ if (this.originalModel.id === this.monacoEditor.getModel()?.id) {
444
454
  this.renderDiffEdits(currentDiffModel);
445
455
  }
446
456
 
447
457
  this.currentEditLine += 1;
448
- // 这个 sleep 会带来潜在的时序问题,如 finallyRender 时模型已经被 dispose
458
+
449
459
  await sleep(FRAME_THREE);
450
460
  }
451
461
 
@@ -459,7 +469,10 @@ export abstract class BaseInlineStreamDiffHandler extends Disposable implements
459
469
  }
460
470
 
461
471
  public addLinesToDiff(newText: string, computerMode: EComputerMode = EComputerMode.default): void {
462
- this.recompute(computerMode, newText);
472
+ const diffModel = this.recompute(computerMode, newText);
473
+ transaction((tx) => {
474
+ this.diffModel.set(diffModel, tx);
475
+ });
463
476
  }
464
477
 
465
478
  public pushRateFinallyDiffStack(diffModel: IComputeDiffData): void {
@@ -475,17 +488,14 @@ export abstract class BaseInlineStreamDiffHandler extends Disposable implements
475
488
  public finallyRender(diffModel: IComputeDiffData): void {
476
489
  transaction((tx) => {
477
490
  this.finallyDiffModel.set(diffModel, tx);
491
+ this.diffModel.set(diffModel, tx);
478
492
  });
479
493
 
480
- if (this.savedModel.id !== this.monacoEditor.getModel()?.id) {
494
+ if (this.originalModel.id !== this.monacoEditor.getModel()?.id) {
481
495
  return;
482
496
  }
483
497
 
484
498
  this.onDiffFinishedEmitter.fire(diffModel);
485
-
486
- if (this.livePreviewDiffDecorationModel.disposed) {
487
- return;
488
- }
489
499
  this.renderPartialEditWidgets(diffModel);
490
500
  this.renderDiffEdits(diffModel);
491
501
  this.pushStackElement();
@@ -527,84 +537,3 @@ export abstract class BaseInlineStreamDiffHandler extends Disposable implements
527
537
  return this.livePreviewDiffDecorationModel.getTotalCodeInfo();
528
538
  }
529
539
  }
530
-
531
- /**
532
- * Regular inline stream diff handler (non-reverse mode)
533
- */
534
- @Injectable({ multiple: true })
535
- export class InlineStreamDiffHandler extends BaseInlineStreamDiffHandler {
536
- initialize(selection: Selection): void {
537
- const eol = this.savedModel.getEOL();
538
- const startPosition = selection.getStartPosition();
539
- const endPosition = selection.getEndPosition();
540
-
541
- this.rawSavedTextLines = this.savedModel
542
- .getValueInRange(Range.fromPositions(startPosition, endPosition))
543
- .split(eol);
544
-
545
- const zone = LineRange.fromRangeInclusive(
546
- Range.fromPositions(
547
- { lineNumber: selection.startLineNumber, column: 1 },
548
- { lineNumber: selection.endLineNumber, column: Number.MAX_SAFE_INTEGER },
549
- ),
550
- );
551
-
552
- this.livePreviewDiffDecorationModel.initialize(zone);
553
- this.rawOriginTextLinesTokens = this.rawSavedTextLines.map((_, index) => {
554
- const lineNumber = startPosition.lineNumber + index;
555
- this.savedModel.tokenization.forceTokenization(lineNumber);
556
- const lineTokens = this.savedModel.tokenization.getLineTokens(lineNumber);
557
- return lineTokens;
558
- });
559
- }
560
-
561
- protected processDiffComputation(currentText: string[], computerMode?: EComputerMode): IComputeDiffData {
562
- return this.computeDiff(this.rawSavedTextLines, currentText, computerMode);
563
- }
564
-
565
- protected getOriginalModel(): ITextModel {
566
- return this.savedModel;
567
- }
568
- }
569
-
570
- /**
571
- * Reverse inline stream diff handler
572
- * In reverse mode, the roles of savedModel and virtualModel are swapped
573
- */
574
- @Injectable({ multiple: true })
575
- export class ReverseInlineStreamDiffHandler extends BaseInlineStreamDiffHandler {
576
- recompute(computerMode: EComputerMode, content?: string): IComputeDiffData {
577
- const result = super.recompute(computerMode, content);
578
- this.rawOriginTextLinesTokens = this.virtualModel.getLinesContent().map((_, index) => {
579
- const lineNumber = index + 1;
580
- this.virtualModel.tokenization.forceTokenization(lineNumber);
581
- const lineTokens = this.virtualModel.tokenization.getLineTokens(lineNumber);
582
- return lineTokens;
583
- });
584
- return result;
585
- }
586
-
587
- initialize(): void {
588
- const eol = this.savedModel.getEOL();
589
-
590
- // reverse 模式不支持 range
591
- this.rawSavedTextLines = this.savedModel.getValue().split(eol);
592
-
593
- // TODO: reverse 模式暂不支持 range
594
- const zone = LineRange.fromRangeInclusive(
595
- Range.fromPositions(
596
- { lineNumber: 1, column: 1 },
597
- { lineNumber: this.virtualModel.getLineCount(), column: Number.MAX_SAFE_INTEGER },
598
- ),
599
- );
600
- this.livePreviewDiffDecorationModel.initialize(zone);
601
- }
602
-
603
- protected getOriginalModel(): ITextModel {
604
- return this.virtualModel;
605
- }
606
-
607
- protected processDiffComputation(currentText: string[], computerMode?: EComputerMode): IComputeDiffData {
608
- return this.computeDiff(currentText, this.rawSavedTextLines, computerMode);
609
- }
610
- }
@@ -7,13 +7,11 @@ import {
7
7
  Emitter,
8
8
  Event,
9
9
  IAIReporter,
10
- localize,
11
10
  runWhenIdle,
12
11
  } from '@opensumi/ide-core-common';
13
12
  import { ISingleEditOperation } from '@opensumi/ide-editor';
14
13
  import { ICodeEditor, IEditorDecorationsCollection, ITextModel, Position, Range } from '@opensumi/ide-monaco';
15
14
  import { StandaloneServices } from '@opensumi/ide-monaco/lib/browser/monaco-api/services';
16
- import { IMessageService } from '@opensumi/ide-overlay';
17
15
  import { EditOperation } from '@opensumi/monaco-editor-core/esm/vs/editor/common/core/editOperation';
18
16
  import { LineRange } from '@opensumi/monaco-editor-core/esm/vs/editor/common/core/lineRange';
19
17
  import { ModelDecorationOptions } from '@opensumi/monaco-editor-core/esm/vs/editor/common/model/textModel';
@@ -69,9 +67,6 @@ export class LivePreviewDiffDecorationModel extends Disposable {
69
67
  @Autowired(InlineDiffService)
70
68
  private readonly inlineDiffService: InlineDiffService;
71
69
 
72
- @Autowired(IMessageService)
73
- private readonly messageService: IMessageService;
74
-
75
70
  private activeLineDec: IEditorDecorationsCollection;
76
71
  private pendingRangeDec: IEditorDecorationsCollection;
77
72
  private aiNativeContextKey: AINativeContextKey;
@@ -92,10 +87,6 @@ export class LivePreviewDiffDecorationModel extends Disposable {
92
87
  private removedZoneWidgets: RemovedZoneWidget[] = [];
93
88
  private zone: LineRange;
94
89
 
95
- public get partialEditWidgetCount() {
96
- return this.partialEditWidgetList.length;
97
- }
98
-
99
90
  constructor(private readonly monacoEditor: ICodeEditor) {
100
91
  super();
101
92
  this.model = this.monacoEditor.getModel()!;
@@ -625,7 +616,7 @@ export class LivePreviewDiffDecorationModel extends Disposable {
625
616
  if (this.options.renderRemovedWidgetImmediately) {
626
617
  run();
627
618
  } else {
628
- this.addDispose(runWhenIdle(run));
619
+ runWhenIdle(run);
629
620
  }
630
621
  }
631
622
 
@@ -690,26 +681,6 @@ export class LivePreviewDiffDecorationModel extends Disposable {
690
681
  }
691
682
  }
692
683
 
693
- currentChangeIndex: number = 0;
694
-
695
- revealSiblingChange(direction: 'up' | 'down') {
696
- this.currentChangeIndex = this.currentChangeIndex + (direction === 'up' ? -1 : 1);
697
- if (this.currentChangeIndex >= 0 && this.currentChangeIndex < this.partialEditWidgetList.length) {
698
- const siblingChange = this.partialEditWidgetList[this.currentChangeIndex];
699
- const pos = siblingChange.getPosition();
700
- if (pos?.position) {
701
- this.monacoEditor.revealLineInCenter(pos.position!.lineNumber);
702
- return this.currentChangeIndex;
703
- }
704
- } else {
705
- this.messageService.info(
706
- direction === 'up'
707
- ? localize('aiNative.inlineDiff.noMoreChangesUp')
708
- : localize('aiNative.inlineDiff.noMoreChangesDown'),
709
- );
710
- }
711
- }
712
-
713
684
  setPreviewerOptions(options: IModelOptions) {
714
685
  this.options = options;
715
686
  }
@@ -12,18 +12,13 @@ import {
12
12
  IMarkdownString,
13
13
  Uri,
14
14
  } from '@opensumi/ide-core-common';
15
+ import { IChatMessage } from '@opensumi/ide-core-common/lib/types/ai-native';
15
16
  import { DESIGN_MENUBAR_CONTAINER_VIEW_ID } from '@opensumi/ide-design/lib/common/constants';
16
17
  import { IPosition, ITextModel, InlineCompletionContext } from '@opensumi/ide-monaco/lib/common';
17
18
 
18
19
  import { MCPServerDescription } from './mcp-server-manager';
19
20
  import { MCPTool } from './types';
20
21
 
21
- import type { CoreMessage } from 'ai';
22
-
23
- export type { CoreMessage };
24
-
25
- export * from './model';
26
-
27
22
  export const IAINativeService = Symbol('IAINativeService');
28
23
 
29
24
  /**
@@ -36,9 +31,6 @@ export const AI_CHAT_CONTAINER_ID = 'AI-Chat-Container';
36
31
  export const AI_CHAT_LOGO_AVATAR_ID = 'AI-Chat-Logo-Avatar';
37
32
  export const AI_MENU_BAR_DEBUG_TOOLBAR = 'AI_MENU_BAR_DEBUG_TOOLBAR';
38
33
 
39
- // 内置 MCP 服务器名称
40
- export const BUILTIN_MCP_SERVER_NAME = 'sumi-builtin';
41
-
42
34
  /**
43
35
  * @deprecated Use {@link DESIGN_MENUBAR_CONTAINER_VIEW_ID} instead
44
36
  */
@@ -131,12 +123,9 @@ export const ChatProxyServiceToken = Symbol('ChatProxyServiceToken');
131
123
  export const TokenMCPServerProxyService = Symbol('TokenMCPServerProxyService');
132
124
 
133
125
  export interface ISumiMCPServerBackend {
134
- initBuiltinMCPServer(enabled: boolean): void;
126
+ initBuiltinMCPServer(): void;
135
127
  initExternalMCPServers(servers: MCPServerDescription[]): void;
136
128
  getAllMCPTools(): Promise<MCPTool[]>;
137
- getServers(): Promise<Array<{ name: string; isStarted: boolean }>>;
138
- startServer(serverName: string): Promise<void>;
139
- stopServer(serverName: string): Promise<void>;
140
129
  }
141
130
 
142
131
  export const SumiMCPServerProxyServicePath = 'SumiMCPServerProxyServicePath';
@@ -149,7 +138,7 @@ export interface IChatAgentService {
149
138
  id: string,
150
139
  request: IChatAgentRequest,
151
140
  progress: (part: IChatProgress) => void,
152
- history: CoreMessage[],
141
+ history: IChatMessage[],
153
142
  token: CancellationToken,
154
143
  ): Promise<IChatAgentResult>;
155
144
  getAgents(): Array<IChatAgent>;
@@ -170,7 +159,7 @@ export interface IChatAgent extends IChatAgentData {
170
159
  invoke(
171
160
  request: IChatAgentRequest,
172
161
  progress: (part: IChatProgress) => void,
173
- history: CoreMessage[],
162
+ history: IChatMessage[],
174
163
  token: CancellationToken,
175
164
  ): Promise<IChatAgentResult>;
176
165
  provideFollowups?(sessionId: string, token: CancellationToken): Promise<IChatFollowup[]>;
@@ -15,13 +15,13 @@ export interface LLMContextService {
15
15
  */
16
16
  cleanFileContext(): void;
17
17
 
18
- onDidContextFilesChangeEvent: Event<{ viewed: FileContext[]; attached: FileContext[]; version: number }>;
18
+ onDidContextFilesChangeEvent: Event<FileContext[]>;
19
19
 
20
20
  /**
21
21
  * 从 context 中移除文件
22
22
  * @param uri URI
23
23
  */
24
- removeFileFromContext(uri: URI, isManual?: boolean): void;
24
+ removeFileFromContext(uri: URI): void;
25
25
 
26
26
  /** 导出为可序列化格式 */
27
27
  serialize(): SerializedContext;
@@ -30,18 +30,12 @@ export interface LLMContextService {
30
30
  export interface FileContext {
31
31
  uri: URI;
32
32
  selection?: [number, number];
33
+ isManual: boolean;
33
34
  }
34
35
 
35
36
  export const LLMContextServiceToken = Symbol('LLMContextService');
36
37
 
37
- export interface AttachFileContext {
38
- content: string;
39
- lineErrors: string[];
40
- path: string;
41
- language: string;
42
- }
43
-
44
38
  export interface SerializedContext {
45
39
  recentlyViewFiles: string[];
46
- attachedFiles: Array<AttachFileContext>;
40
+ attachedFiles: Array<{ content: string; lineErrors: string[]; path: string; language: string }>;
47
41
  }
@@ -1,15 +1,5 @@
1
1
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
2
 
3
- export interface IMCPServer {
4
- isStarted(): boolean;
5
- start(): Promise<void>;
6
- getServerName(): string;
7
- callTool(toolName: string, toolCallId: string, arg_string: string): ReturnType<Client['callTool']>;
8
- getTools(): ReturnType<Client['listTools']>;
9
- update(command: string, args?: string[], env?: { [key: string]: string }): void;
10
- stop(): void;
11
- }
12
-
13
3
  export interface MCPServerManager {
14
4
  callTool(
15
5
  serverName: string,
@@ -21,7 +11,7 @@ export interface MCPServerManager {
21
11
  addOrUpdateServer(description: MCPServerDescription): void;
22
12
  // invoke in node.js only
23
13
  addOrUpdateServerDirectly(server: any): void;
24
- initBuiltinServer(builtinMCPServer: any, enabled: boolean): void;
14
+ initBuiltinServer(builtinMCPServer: any): void;
25
15
  getTools(serverName: string): ReturnType<Client['listTools']>;
26
16
  getServerNames(): Promise<string[]>;
27
17
  startServer(serverName: string): Promise<void>;
@@ -29,7 +19,6 @@ export interface MCPServerManager {
29
19
  getStartedServers(): Promise<string[]>;
30
20
  registerTools(serverName: string): Promise<void>;
31
21
  addExternalMCPServers(servers: MCPServerDescription[]): void;
32
- getServers(): Map<string, IMCPServer>;
33
22
  }
34
23
 
35
24
  export type MCPTool = Awaited<ReturnType<MCPServerManager['getTools']>>['tools'][number];
@@ -56,11 +45,6 @@ export interface MCPServerDescription {
56
45
  * Optional environment variables to set when starting the server.
57
46
  */
58
47
  env?: { [key: string]: string };
59
-
60
- /**
61
- * Whether to enable the MCP server.
62
- */
63
- enabled?: boolean;
64
48
  }
65
49
 
66
50
  export const MCPServerManager = Symbol('MCPServerManager');
@@ -1,5 +1,5 @@
1
- import { Autowired, Injectable } from '@opensumi/di';
2
- import { WorkbenchEditorService } from '@opensumi/ide-editor/lib/common/editor';
1
+ import { Injectable } from '@opensumi/di';
2
+ import { MaybePromise } from '@opensumi/ide-core-common/lib/utils';
3
3
 
4
4
  import { SerializedContext } from '../llm-context';
5
5
 
@@ -10,46 +10,37 @@ export interface ChatAgentPromptProvider {
10
10
  * 提供上下文提示
11
11
  * @param context 上下文
12
12
  */
13
- provideContextPrompt(context: SerializedContext, userMessage: string): string;
13
+ provideContextPrompt(context: SerializedContext, userMessage: string): MaybePromise<string>;
14
14
  }
15
15
 
16
16
  @Injectable()
17
17
  export class DefaultChatAgentPromptProvider implements ChatAgentPromptProvider {
18
- @Autowired(WorkbenchEditorService)
19
- protected readonly workbenchEditorService: WorkbenchEditorService;
20
-
21
- provideContextPrompt(context: SerializedContext, userMessage: string): string {
22
- const editor = this.workbenchEditorService.currentEditor;
23
- const currentModel = editor?.currentDocumentModel;
18
+ provideContextPrompt(context: SerializedContext, userMessage: string): MaybePromise<string> {
24
19
  return `
25
- <additional_data>
26
- Below are some potentially helpful/relevant pieces of information for figuring out to respond
27
- <recently_viewed_files>
28
- ${context.recentlyViewFiles.map((file, idx) => ` ${idx + 1}: ${file}`).join('\n')}
29
- </recently_viewed_files>
30
- <attached_files>
31
- ${context.attachedFiles.map(
32
- (file) =>
33
- `
34
- <file_contents>
35
- \`\`\`${file.path}
36
- ${file.content}
37
- \`\`\`
38
- </file_contents>
39
- <linter_errors>
40
- ${file.lineErrors.join('\n')}
41
- </linter_errors>
42
- `,
43
- )}
44
- </attached_files>
45
- ${currentModel ? `<current_opened_file>
46
- \`\`\`${currentModel.languageId} ${currentModel.uri.toString()}
47
- ${currentModel.getText()}
48
- \`\`\`
49
- </current_opened_file>` : ''}
50
- </additional_data>
51
- <user_query>
52
- ${userMessage}
53
- </user_query>`;
20
+ <additional_data>
21
+ Below are some potentially helpful/relevant pieces of information for figuring out to respond
22
+ <recently_viewed_files>
23
+ ${context.recentlyViewFiles.map((file, idx) => `${idx + 1} : ${file}`)}
24
+ </recently_viewed_files>
25
+ <attached_files>
26
+ ${context.attachedFiles.map(
27
+ (file) =>
28
+ `
29
+ <file_contents>
30
+ \`\`\`${file.language} ${file.path}
31
+ ${file.content}
32
+ \`\`\`
33
+ </file_contents>
34
+ <linter_errors>
35
+ ${file.lineErrors.join('\n')}
36
+ </linter_errors>
37
+ `,
38
+ )}
39
+
40
+ </attached_files>
41
+ </additional_data>
42
+ <user_query>
43
+ ${userMessage}
44
+ </user_query>`;
54
45
  }
55
46
  }
@@ -72,7 +72,7 @@ export interface ToolInvocationRegistry {
72
72
  *
73
73
  * @param providerName - 要移除其工具的工具提供者名称(在 `ToolRequest` 中指定)
74
74
  */
75
- unregisterProviderTools(providerName: string): void;
75
+ unregisterAllTools(providerName: string): void;
76
76
  }
77
77
 
78
78
  export const ToolProvider = Symbol('ToolProvider');
@@ -83,7 +83,7 @@ export interface ToolProvider {
83
83
  export class ToolInvocationRegistryImpl implements ToolInvocationRegistry {
84
84
  private tools: Map<string, ToolRequest> = new Map<string, ToolRequest>();
85
85
 
86
- unregisterProviderTools(providerName: string): void {
86
+ unregisterAllTools(providerName: string): void {
87
87
  const toolsToRemove: string[] = [];
88
88
  for (const [id, tool] of this.tools.entries()) {
89
89
  if (tool.providerName === providerName) {