@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
@@ -235,7 +235,7 @@ export const ChatReply = (props: IChatReplyProps) => {
235
235
  if (onDone) {
236
236
  onDone();
237
237
  }
238
- // 模型消息返回结束,上报消息(包含toolCall等全部结束)
238
+
239
239
  aiReporter.end(relationId, {
240
240
  assistantMessage: request.response.responseText,
241
241
  replytime: Date.now() - startTime,
@@ -243,8 +243,6 @@ export const ChatReply = (props: IChatReplyProps) => {
243
243
  isStop: false,
244
244
  command,
245
245
  agentId,
246
- messageId: msgId,
247
- sessionId: aiChatService.sessionModel.sessionId,
248
246
  });
249
247
  }
250
248
 
@@ -274,8 +272,6 @@ export const ChatReply = (props: IChatReplyProps) => {
274
272
  isStop: true,
275
273
  command,
276
274
  agentId,
277
- messageId: msgId,
278
- sessionId: aiChatService.sessionModel.sessionId,
279
275
  });
280
276
  aiChatService.cancelRequest();
281
277
  };
@@ -355,7 +351,11 @@ export const ChatReply = (props: IChatReplyProps) => {
355
351
  }, [request.response.followups]);
356
352
 
357
353
  if (!request.response.isComplete) {
358
- return <ChatThinking message={request.response.responseText}>{contentNode}</ChatThinking>;
354
+ return (
355
+ <ChatThinking message={request.response.responseText} onStop={onStop}>
356
+ {contentNode}
357
+ </ChatThinking>
358
+ );
359
359
  }
360
360
 
361
361
  return (
@@ -18,12 +18,14 @@ interface ITinkingProps {
18
18
  message?: string;
19
19
  onRegenerate?: () => void;
20
20
  requestId?: string;
21
+ onStop?: () => void;
21
22
  thinkingText?: string;
23
+ showStop?: boolean;
22
24
  showRegenerate?: boolean;
23
25
  }
24
26
 
25
27
  export const ChatThinking = (props: ITinkingProps) => {
26
- const { children, message, thinkingText } = props;
28
+ const { children, message, onStop, showStop = true, thinkingText } = props;
27
29
 
28
30
  const chatRenderRegistry = useInjectable<ChatRenderRegistry>(ChatRenderRegistryToken);
29
31
 
@@ -32,6 +34,10 @@ export const ChatThinking = (props: ITinkingProps) => {
32
34
  [chatRenderRegistry, chatRenderRegistry.chatThinkingRender],
33
35
  );
34
36
 
37
+ const handlePause = useCallback(async () => {
38
+ onStop && onStop();
39
+ }, []);
40
+
35
41
  const renderContent = useCallback(() => {
36
42
  if (!children || !message?.trim()) {
37
43
  if (CustomThinkingRender) {
@@ -55,12 +61,12 @@ export const ChatThinking = (props: ITinkingProps) => {
55
61
  {!children && <Progress loading={true} wrapperClassName={styles.ai_native_progress_wrapper} />}
56
62
  </span>
57
63
  )}
58
- {/* {showStop && (
64
+ {showStop && (
59
65
  <div className={styles.block} onClick={handlePause} tabIndex={0} role='button'>
60
66
  <Icon className={getIcon('circle-pause')}></Icon>
61
67
  <span>{localize('aiNative.operate.stop.title')}</span>
62
68
  </div>
63
- )} */}
69
+ )}
64
70
  </div>
65
71
  </div>
66
72
  </>
@@ -67,12 +67,13 @@ export const ChatToolRender = (props: { value: IChatToolContent['content']; mess
67
67
  <div className={styles['chat-tool-render']}>
68
68
  <div className={styles['tool-header']} onClick={toggleExpand}>
69
69
  <div className={styles['tool-name']}>
70
- <Icon iconClass={`codicon codicon-triangle-${isExpanded ? 'down' : 'right'}`} />
70
+ <span className={cls(styles['expand-icon'], { [styles.expanded]: isExpanded })}>▶</span>
71
71
  {label}
72
72
  </div>
73
73
  {value.state && (
74
74
  <div className={styles['tool-state']}>
75
75
  <span className={styles['state-icon']}>{stateInfo.icon}</span>
76
+ <span className={styles['state-label']}>{stateInfo.label}</span>
76
77
  </div>
77
78
  )}
78
79
  </div>
@@ -62,7 +62,7 @@ export const WelcomeMessage = () => {
62
62
  }, []);
63
63
 
64
64
  if (!welcomeMessage) {
65
- return <ChatThinking thinkingText={localize('aiNative.chat.welcome.loading.text')} />;
65
+ return <ChatThinking showStop={false} thinkingText={localize('aiNative.chat.welcome.loading.text')} />;
66
66
  }
67
67
 
68
68
  const allSampleQuestions = React.useMemo(
@@ -3,7 +3,7 @@
3
3
  align-items: center;
4
4
  justify-content: space-between;
5
5
  font-size: 13px;
6
- padding: 0 0 0 12px;
6
+ padding: 0 4px 0 12px;
7
7
  color: var(--editor-foreground);
8
8
  text-overflow: ellipsis;
9
9
  white-space: nowrap;
@@ -78,7 +78,6 @@
78
78
  .dm-chat-history-list {
79
79
  overflow: auto;
80
80
  max-height: 400px;
81
- max-width: 400px;
82
81
  margin-top: 4px;
83
82
  font-size: 13px;
84
83
  }
@@ -96,7 +96,6 @@
96
96
  .chat_input_container {
97
97
  position: relative;
98
98
  border-radius: 9px;
99
- padding: 10px 0px 0px 0px;
100
99
  border: 1px solid var(--kt-input-border);
101
100
  background-color: var(--design-chatInput-background);
102
101
  &.active {
@@ -284,8 +283,6 @@
284
283
  position: relative;
285
284
  min-width: 100px;
286
285
  margin-top: 4px;
287
- max-height: 300px;
288
- overflow: auto;
289
286
 
290
287
  :global {
291
288
  .hljs {
@@ -508,22 +505,3 @@
508
505
  }
509
506
  }
510
507
  }
511
-
512
- .chat_input_footer {
513
- padding: 0px 10px;
514
- display: flex;
515
- align-items: center;
516
- font-size: 12px;
517
-
518
- .model_selector {
519
- display: flex;
520
- font-size: 11px;
521
- align-items: center;
522
- }
523
-
524
- .mcp_desc {
525
- padding: 5px 0px;
526
- display: flex;
527
- align-items: center;
528
- }
529
- }
@@ -11,9 +11,8 @@ import {
11
11
  } from '@opensumi/ide-editor/lib/browser/doc-model/types';
12
12
  import { EditorSelectionChangeEvent } from '@opensumi/ide-editor/lib/browser/types';
13
13
  import { IMarkerService } from '@opensumi/ide-markers/lib/common/types';
14
- import { Range } from '@opensumi/ide-monaco';
15
14
 
16
- import { AttachFileContext, FileContext, LLMContextService, SerializedContext } from '../../common/llm-context';
15
+ import { FileContext, LLMContextService, SerializedContext } from '../../common/llm-context';
17
16
 
18
17
  @Injectable()
19
18
  export class LLMContextServiceImpl extends WithEventBus implements LLMContextService {
@@ -28,72 +27,40 @@ export class LLMContextServiceImpl extends WithEventBus implements LLMContextSer
28
27
 
29
28
  private isAutoCollecting = false;
30
29
 
31
- private contextVersion = 0;
32
-
33
- private readonly maxAttachFilesLimit = 10;
34
- private readonly maxViewFilesLimit = 20;
35
- private readonly attachedFiles: FileContext[] = [];
36
- private readonly recentlyViewFiles: FileContext[] = [];
37
- private readonly onDidContextFilesChangeEmitter = new Emitter<{
38
- viewed: FileContext[];
39
- attached: FileContext[];
40
- version: number;
41
- }>();
42
- onDidContextFilesChangeEvent = this.onDidContextFilesChangeEmitter.event;
30
+ private contextFiles: FileContext[] = [];
43
31
 
44
- private addFileToList(file: FileContext, list: FileContext[], maxLimit: number) {
45
- const existingIndex = list.findIndex((f) => f.uri.toString() === file.uri.toString());
46
- if (existingIndex > -1) {
47
- list.splice(existingIndex, 1);
48
- }
32
+ private maxFiles: number = 10; // 上下文的最大长度限制
49
33
 
50
- list.push(file);
51
- if (list.length > maxLimit) {
52
- list.shift();
53
- }
54
- }
34
+ private onDidContextFilesChangeEmitter = new Emitter<FileContext[]>();
35
+ onDidContextFilesChangeEvent = this.onDidContextFilesChangeEmitter.event;
55
36
 
56
- addFileToContext(uri: URI, selection?: [number, number], isManual = false): void {
57
- if (!uri) {
58
- return;
59
- }
37
+ addFileToContext(uri: URI, selection?: [number, number], isManual = true): void {
38
+ this.removeFileFromContext(uri);
60
39
 
61
- const file = { uri, selection };
62
- const targetList = isManual ? this.attachedFiles : this.recentlyViewFiles;
63
- const maxLimit = isManual ? this.maxAttachFilesLimit : this.maxViewFilesLimit;
40
+ this.contextFiles.push({ uri, selection, isManual });
64
41
 
65
- if (isManual) {
66
- this.docModelManager.createModelReference(uri);
42
+ if (this.contextFiles.length > this.maxFiles) {
43
+ this.contextFiles.shift();
67
44
  }
68
45
 
69
- this.addFileToList(file, targetList, maxLimit);
70
- this.notifyContextChange();
71
- }
72
-
73
- private notifyContextChange(): void {
74
46
  this.onDidContextFilesChangeEmitter.fire(this.getAllContextFiles());
75
47
  }
76
48
 
77
49
  cleanFileContext() {
78
- this.attachedFiles.length = 0;
79
- this.notifyContextChange();
50
+ this.contextFiles = [];
51
+ this.onDidContextFilesChangeEmitter.fire(this.getAllContextFiles());
80
52
  }
81
53
 
82
54
  private getAllContextFiles() {
83
- return {
84
- viewed: this.recentlyViewFiles,
85
- attached: this.attachedFiles,
86
- version: this.contextVersion++,
87
- };
55
+ return [...this.contextFiles];
88
56
  }
89
57
 
90
- removeFileFromContext(uri: URI, isManual = false): void {
91
- const targetList = isManual ? this.attachedFiles : this.recentlyViewFiles;
92
- const index = targetList.findIndex((file) => file.uri.toString() === uri.toString());
58
+ removeFileFromContext(uri: URI): void {
59
+ const index = this.contextFiles.findIndex((file) => file.uri.toString() === uri.toString());
93
60
  if (index > -1) {
94
- targetList.splice(index, 1);
61
+ this.contextFiles.splice(index, 1);
62
+ this.onDidContextFilesChangeEmitter.fire(this.getAllContextFiles());
95
63
  }
96
- this.notifyContextChange();
97
64
  }
98
65
 
99
66
  startAutoCollection(): void {
@@ -111,7 +78,8 @@ export class LLMContextServiceImpl extends WithEventBus implements LLMContextSer
111
78
  if (event.payload.uri.scheme !== 'file') {
112
79
  return;
113
80
  }
114
- this.addFileToContext(event.payload.uri, undefined, false);
81
+ // FIXME: 暂时不自动添加
82
+ // this.addFileToContext(event.payload.uri);
115
83
  }),
116
84
  );
117
85
 
@@ -120,8 +88,6 @@ export class LLMContextServiceImpl extends WithEventBus implements LLMContextSer
120
88
  if (event.payload.scheme !== 'file') {
121
89
  return;
122
90
  }
123
-
124
- this.removeFileFromContext(event.payload, false);
125
91
  }),
126
92
  );
127
93
 
@@ -143,12 +109,11 @@ export class LLMContextServiceImpl extends WithEventBus implements LLMContextSer
143
109
  ].sort() as [number, number];
144
110
 
145
111
  if (selection[0] === selection[1]) {
146
- this.addFileToContext(event.payload.editorUri, undefined, false);
112
+ this.addFileToContext(event.payload.editorUri, undefined);
147
113
  } else {
148
114
  this.addFileToContext(
149
115
  event.payload.editorUri,
150
116
  selection.sort((a, b) => a - b),
151
- false,
152
117
  );
153
118
  }
154
119
  }
@@ -162,53 +127,42 @@ export class LLMContextServiceImpl extends WithEventBus implements LLMContextSer
162
127
 
163
128
  serialize(): SerializedContext {
164
129
  const files = this.getAllContextFiles();
165
- const workspaceRoot = URI.file(this.appConfig.workspaceDir);
166
-
167
- return {
168
- recentlyViewFiles: this.serializeRecentlyViewFiles(files.viewed, workspaceRoot),
169
- attachedFiles: this.serializeAttachedFiles(files.attached, workspaceRoot),
170
- };
171
- }
172
-
173
- private serializeRecentlyViewFiles(files: FileContext[], workspaceRoot: URI): string[] {
174
- return files
175
- .map((file) => workspaceRoot.relative(file.uri)?.toString() || file.uri.parent.toString())
130
+ const recentlyViewFiles = files
131
+ .filter((v) => !v.selection)
132
+ .map((file) => {
133
+ const relativePath = URI.file(this.appConfig.workspaceDir).relative(file.uri);
134
+ if (relativePath) {
135
+ return relativePath.toString();
136
+ }
137
+ return file.uri.parent.toString();
138
+ })
176
139
  .filter(Boolean);
177
- }
178
-
179
- private serializeAttachedFiles(files: FileContext[], workspaceRoot: URI): AttachFileContext[] {
180
- return files
181
- .map((file) => this.serializeAttachedFile(file, workspaceRoot))
182
- .filter(Boolean) as unknown as AttachFileContext[];
183
- }
184
140
 
185
- private serializeAttachedFile(file: FileContext, workspaceRoot: URI) {
186
- try {
187
- const ref = this.docModelManager.getModelReference(file.uri);
188
- if (!ref) {
189
- return null;
190
- }
191
-
192
- return {
193
- content: ref.instance.getText(
194
- file.selection && new Range(file.selection[0], Infinity, file.selection[1], Infinity),
195
- ),
196
- lineErrors: this.getFileErrors(file.uri),
197
- path: workspaceRoot.relative(file.uri)!.toString(),
198
- language: ref.instance.languageId!,
199
- };
200
- } catch (e) {
201
- return null;
202
- }
203
- }
204
-
205
- private getFileErrors(uri: URI): string[] {
206
- return this.markerService
207
- .getManager()
208
- .getMarkers({
209
- resource: uri.toString(),
210
- severities: MarkerSeverity.Error,
141
+ const attachedFiles = files
142
+ .filter((v) => v.selection)
143
+ .map((file) => {
144
+ const ref = this.docModelManager.getModelReference(file.uri);
145
+ const content = ref!.instance.getText();
146
+ const lineErrors = this.markerService
147
+ .getManager()
148
+ .getMarkers({
149
+ resource: file.uri.toString(),
150
+ severities: MarkerSeverity.Error,
151
+ })
152
+ .map((marker) => marker.message);
153
+
154
+ return {
155
+ content,
156
+ lineErrors,
157
+ path: URI.file(this.appConfig.workspaceDir).relative(file.uri)!.toString(),
158
+ language: ref?.instance.languageId!,
159
+ };
211
160
  })
212
- .map((marker) => marker.message);
161
+ .filter(Boolean);
162
+
163
+ return {
164
+ recentlyViewFiles,
165
+ attachedFiles,
166
+ };
213
167
  }
214
168
  }
@@ -170,7 +170,7 @@ export class InlineCompletionsController extends BaseAIMonacoEditorController {
170
170
  }
171
171
 
172
172
  // 如果上一次补全结果还在,则不重复请求
173
- const isVisible = this.aiNativeContextKey.codeEditsIsVisible.get();
173
+ const isVisible = this.aiNativeContextKey.multiLineEditsIsVisible.get();
174
174
  if (isVisible) {
175
175
  return;
176
176
  }
@@ -244,8 +244,8 @@ export abstract class WindowedMatcher {
244
244
  tokens.slice(startLine, endLine).forEach((token) => token.forEach((word) => size.add(word)));
245
245
  cache.push(size);
246
246
  }
247
- const traget = cache[index];
248
- const score = this.similarityScore(traget, this.referenceTokens);
247
+ const target = cache[index];
248
+ const score = this.similarityScore(target, this.referenceTokens);
249
249
  snippets.push({
250
250
  score,
251
251
  startLine,
@@ -15,9 +15,9 @@ import {
15
15
  import { MAX_NEIGHBOR_AGGREGATE_LENGTH } from './const';
16
16
  import { FixedWindowSizeJaccardMatcher } from './jaccardMatcher';
17
17
 
18
- export const getOpenedTabFileList = (docuemnts: IEditorDocumentModel[]) => {
18
+ export const getOpenedTabFileList = (documents: IEditorDocumentModel[]) => {
19
19
  // 过滤超大文档
20
- const recentFiles = docuemnts.filter((document) => isDocumentValid(document));
20
+ const recentFiles = documents.filter((document) => isDocumentValid(document));
21
21
  return recentFiles;
22
22
  };
23
23
 
@@ -69,11 +69,7 @@ export class CodeEditsResultValue<T extends ICodeEdit = ICodeEdit> extends Dispo
69
69
  }));
70
70
  }
71
71
 
72
- public get firstRange(): IRange {
72
+ public get range(): IRange {
73
73
  return this.raw.items[0].range;
74
74
  }
75
-
76
- public get firstText(): string {
77
- return this.raw.items[0].insertText;
78
- }
79
75
  }
@@ -8,7 +8,7 @@ import {
8
8
  KeybindingScope,
9
9
  } from '@opensumi/ide-core-browser';
10
10
  import { AI_CODE_EDITS_COMMANDS } from '@opensumi/ide-core-browser/lib/ai-native/command';
11
- import { CodeEditsIsVisible } from '@opensumi/ide-core-browser/lib/contextkey/ai-native';
11
+ import { MultiLineEditsIsVisible } from '@opensumi/ide-core-browser/lib/contextkey/ai-native';
12
12
  import { CommandContribution, CommandRegistry, Domain } from '@opensumi/ide-core-common';
13
13
  import { WorkbenchEditorService } from '@opensumi/ide-editor';
14
14
  import { WorkbenchEditorServiceImpl } from '@opensumi/ide-editor/lib/browser/workbench-editor.service';
@@ -61,7 +61,7 @@ export class IntelligentCompletionsContribution implements KeybindingContributio
61
61
  keybindings.registerKeybinding({
62
62
  command: AI_CODE_EDITS_COMMANDS.DISCARD.id,
63
63
  keybinding: Key.ESCAPE.code,
64
- when: CodeEditsIsVisible.raw,
64
+ when: MultiLineEditsIsVisible.raw,
65
65
  priority: 100,
66
66
  });
67
67
 
@@ -69,7 +69,7 @@ export class IntelligentCompletionsContribution implements KeybindingContributio
69
69
  {
70
70
  command: AI_CODE_EDITS_COMMANDS.ACCEPT.id,
71
71
  keybinding: Key.TAB.code,
72
- when: CodeEditsIsVisible.raw,
72
+ when: MultiLineEditsIsVisible.raw,
73
73
  },
74
74
  KeybindingScope.USER,
75
75
  );
@@ -5,7 +5,7 @@ import {
5
5
  KeybindingScope,
6
6
  PreferenceService,
7
7
  } from '@opensumi/ide-core-browser';
8
- import { CodeEditsIsVisible } from '@opensumi/ide-core-browser/lib/contextkey/ai-native';
8
+ import { MultiLineEditsIsVisible } from '@opensumi/ide-core-browser/lib/contextkey/ai-native';
9
9
  import {
10
10
  AINativeSettingSectionsId,
11
11
  CodeEditsRT,
@@ -98,13 +98,13 @@ export class IntelligentCompletionsController extends BaseAIMonacoEditorControll
98
98
  this.monacoEditor,
99
99
  ]);
100
100
 
101
- const multiLineEditsIsVisibleKey = new Set([CodeEditsIsVisible.raw]);
101
+ const multiLineEditsIsVisibleKey = new Set([MultiLineEditsIsVisible.raw]);
102
102
  this.multiLineEditsIsVisibleObs = observableFromEvent(
103
103
  this,
104
104
  Event.filter(this.aiNativeContextKey.contextKeyService!.onDidChangeContext, (e: ContextKeyChangeEvent) =>
105
105
  e.payload.affectsSome(multiLineEditsIsVisibleKey),
106
106
  ),
107
- () => !!this.aiNativeContextKey.codeEditsIsVisible.get(),
107
+ () => !!this.aiNativeContextKey.multiLineEditsIsVisible.get(),
108
108
  );
109
109
 
110
110
  this.registerFeature(this.monacoEditor);
@@ -205,7 +205,7 @@ export class IntelligentCompletionsController extends BaseAIMonacoEditorControll
205
205
 
206
206
  public hide() {
207
207
  this.cancelToken();
208
- this.aiNativeContextKey.codeEditsIsVisible.reset();
208
+ this.aiNativeContextKey.multiLineEditsIsVisible.reset();
209
209
  this.codeEditsPreviewer.hide();
210
210
  }
211
211
 
@@ -273,7 +273,6 @@ export class IntelligentCompletionsController extends BaseAIMonacoEditorControll
273
273
  public trigger(tx: ITransaction): void {
274
274
  const triggerSource = this.codeEditsSourceCollection.getSource(TriggerCodeEditsSource) as TriggerCodeEditsSource;
275
275
  if (triggerSource) {
276
- this.hide();
277
276
  triggerSource.triggerSignal.trigger(tx);
278
277
  }
279
278
  }
@@ -290,7 +289,7 @@ export class IntelligentCompletionsController extends BaseAIMonacoEditorControll
290
289
  const range = completionModel.items[0].range;
291
290
  if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) {
292
291
  runWhenIdle(() => {
293
- this.hide();
292
+ this.discard.get();
294
293
  });
295
294
  }
296
295
  }
@@ -315,7 +314,7 @@ export class IntelligentCompletionsController extends BaseAIMonacoEditorControll
315
314
  handleChange: (context) => {
316
315
  if (context.didChange(this.codeEditsSourceCollection.codeEditsContextBean)) {
317
316
  // 如果上一次补全结果还在,则不重复请求
318
- const isVisible = this.aiNativeContextKey.codeEditsIsVisible.get();
317
+ const isVisible = this.aiNativeContextKey.multiLineEditsIsVisible.get();
319
318
  return !isVisible;
320
319
  }
321
320
  return false;
@@ -51,21 +51,19 @@ export class CodeEditsPreviewer extends Disposable {
51
51
 
52
52
  public render(completionModel: CodeEditsResultValue) {
53
53
  this.view?.render(completionModel);
54
- this.aiNativeContextKey.codeEditsIsVisible.set(true);
54
+ this.aiNativeContextKey.multiLineEditsIsVisible.set(true);
55
55
  }
56
56
 
57
57
  public hide() {
58
58
  this.view?.hide();
59
- this.aiNativeContextKey.codeEditsIsVisible.set(false);
59
+ this.aiNativeContextKey.multiLineEditsIsVisible.set(false);
60
60
  }
61
61
 
62
62
  public accept() {
63
63
  this.view?.accept();
64
- this.aiNativeContextKey.codeEditsIsVisible.set(false);
65
64
  }
66
65
 
67
66
  public discard() {
68
67
  this.view?.discard();
69
- this.aiNativeContextKey.codeEditsIsVisible.set(false);
70
68
  }
71
69
  }
@@ -1,5 +1,3 @@
1
- import { AI_CODE_EDITS_COMMANDS } from '@opensumi/ide-core-browser/lib/ai-native/command';
2
- import { CommandService } from '@opensumi/ide-core-common';
3
1
  import {
4
2
  InlineCompletionContext,
5
3
  InlineCompletionTriggerKind,
@@ -29,7 +27,6 @@ import {
29
27
 
30
28
  import { CodeEditsResultValue, ICodeEdit, ICodeEditsResult } from '../index';
31
29
 
32
-
33
30
  import { BaseCodeEditsView } from './base';
34
31
 
35
32
  /**
@@ -83,23 +80,17 @@ export class DefaultCodeEditsView extends BaseCodeEditsView {
83
80
  return;
84
81
  }
85
82
 
86
- const position = this.editorObs.positions.get()?.[0];
87
- if (!position) {
88
- return;
89
- }
90
-
91
- const model = this.editorObs.model.get();
92
- if (!model) {
93
- return;
94
- }
83
+ asyncTransaction(async (tx) => {
84
+ const position = this.editorObs.positions.get()?.[0];
85
+ if (!position) {
86
+ return;
87
+ }
95
88
 
96
- const originalContent = model.getValueInRange(completionModel.firstRange);
97
- // edits 的内容与原内容一样就不展示
98
- if (originalContent === completionModel.firstText) {
99
- return;
100
- }
89
+ const model = this.editorObs.model.get();
90
+ if (!model) {
91
+ return;
92
+ }
101
93
 
102
- asyncTransaction(async (tx) => {
103
94
  const versionId = this.editorObs.versionId.get();
104
95
  const context: InlineCompletionContext = {
105
96
  triggerKind: InlineCompletionTriggerKind.Automatic,
@@ -112,20 +103,16 @@ export class DefaultCodeEditsView extends BaseCodeEditsView {
112
103
  const inlineEdits: InlineCompletionProviderResult = await provideInlineCompletions(
113
104
  {
114
105
  all: () => [
115
- {
116
- provideInlineCompletions: () => {},
117
- provideInlineEditsForRange(model, range, context, token) {
118
- return completionModel;
119
- },
120
- freeInlineCompletions: () => [],
121
- handleRejection: (completions, item) => {
122
- const commandService: CommandService = this.injector.get(CommandService);
123
- commandService.executeCommand(AI_CODE_EDITS_COMMANDS.DISCARD.id);
124
- },
125
- } as InlineCompletionsProvider<ICodeEditsResult<ICodeEdit>>,
126
- ],
106
+ {
107
+ provideInlineCompletions: () => {},
108
+ provideInlineEditsForRange(model, range, context, token) {
109
+ return completionModel;
110
+ },
111
+ freeInlineCompletions: () => [],
112
+ } as InlineCompletionsProvider<ICodeEditsResult<ICodeEdit>>,
113
+ ],
127
114
  } as unknown as LanguageFeatureRegistry<InlineCompletionsProvider>,
128
- Range.lift(completionModel.firstRange),
115
+ Range.lift(completionModel.range),
129
116
  model,
130
117
  context,
131
118
  );
@@ -135,11 +122,9 @@ export class DefaultCodeEditsView extends BaseCodeEditsView {
135
122
  request,
136
123
  model,
137
124
  this.editorObs.versionId,
138
- constObservable(4000),
125
+ constObservable(1000),
139
126
  );
140
-
141
127
  source.inlineCompletions.set(completions, tx);
142
- source.loading.set(false, tx);
143
128
  });
144
129
  }
145
130
 
@@ -55,8 +55,6 @@ import { RenameCandidatesProviderRegistry } from './contrib/rename/rename.featur
55
55
  import { TerminalAIContribution } from './contrib/terminal/terminal-ai.contributon';
56
56
  import { TerminalFeatureRegistry } from './contrib/terminal/terminal.feature.registry';
57
57
  import { LanguageParserService } from './languages/service';
58
- import { MCPConfigCommandContribution } from './mcp/config/mcp-config.commands';
59
- import { MCPConfigContribution } from './mcp/config/mcp-config.contribution';
60
58
  import { MCPServerProxyService } from './mcp/mcp-server-proxy.service';
61
59
  import { MCPServerRegistry } from './mcp/mcp-server.feature.registry';
62
60
  import { CreateNewFileWithTextTool } from './mcp/tools/createNewFileWithText';
@@ -93,8 +91,6 @@ export class AINativeModule extends BrowserModule {
93
91
  AICodeActionContribution,
94
92
  AINativePreferencesContribution,
95
93
  IntelligentCompletionsContribution,
96
- MCPConfigContribution,
97
- MCPConfigCommandContribution,
98
94
 
99
95
  // MCP Server Contributions START
100
96
  ListDirTool,