@opensumi/ide-ai-native 3.7.2-next-1740448398.0 → 3.7.2-next-1741226843.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) hide show
  1. package/lib/browser/ai-core.contextkeys.d.ts +0 -1
  2. package/lib/browser/ai-core.contextkeys.d.ts.map +1 -1
  3. package/lib/browser/ai-core.contextkeys.js +0 -1
  4. package/lib/browser/ai-core.contextkeys.js.map +1 -1
  5. package/lib/browser/ai-core.contribution.d.ts +2 -8
  6. package/lib/browser/ai-core.contribution.d.ts.map +1 -1
  7. package/lib/browser/ai-core.contribution.js +20 -149
  8. package/lib/browser/ai-core.contribution.js.map +1 -1
  9. package/lib/browser/chat/chat-agent.service.d.ts.map +1 -1
  10. package/lib/browser/chat/chat-agent.service.js +0 -6
  11. package/lib/browser/chat/chat-agent.service.js.map +1 -1
  12. package/lib/browser/chat/chat-manager.service.d.ts +2 -30
  13. package/lib/browser/chat/chat-manager.service.d.ts.map +1 -1
  14. package/lib/browser/chat/chat-manager.service.js +1 -45
  15. package/lib/browser/chat/chat-manager.service.js.map +1 -1
  16. package/lib/browser/chat/chat-model.d.ts +7 -34
  17. package/lib/browser/chat/chat-model.d.ts.map +1 -1
  18. package/lib/browser/chat/chat-model.js +57 -71
  19. package/lib/browser/chat/chat-model.js.map +1 -1
  20. package/lib/browser/chat/chat-proxy.service.d.ts +1 -6
  21. package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
  22. package/lib/browser/chat/chat-proxy.service.js +3 -54
  23. package/lib/browser/chat/chat-proxy.service.js.map +1 -1
  24. package/lib/browser/chat/chat.api.service.d.ts +1 -1
  25. package/lib/browser/chat/chat.api.service.d.ts.map +1 -1
  26. package/lib/browser/chat/chat.api.service.js +2 -2
  27. package/lib/browser/chat/chat.api.service.js.map +1 -1
  28. package/lib/browser/chat/chat.internal.service.d.ts +2 -8
  29. package/lib/browser/chat/chat.internal.service.d.ts.map +1 -1
  30. package/lib/browser/chat/chat.internal.service.js +13 -41
  31. package/lib/browser/chat/chat.internal.service.js.map +1 -1
  32. package/lib/browser/chat/chat.module.less +41 -17
  33. package/lib/browser/chat/chat.view.d.ts.map +1 -1
  34. package/lib/browser/chat/chat.view.js +14 -102
  35. package/lib/browser/chat/chat.view.js.map +1 -1
  36. package/lib/browser/components/ChatEditor.d.ts +0 -1
  37. package/lib/browser/components/ChatEditor.d.ts.map +1 -1
  38. package/lib/browser/components/ChatEditor.js +3 -3
  39. package/lib/browser/components/ChatEditor.js.map +1 -1
  40. package/lib/browser/components/ChatInput.d.ts.map +1 -1
  41. package/lib/browser/components/ChatInput.js.map +1 -1
  42. package/lib/browser/components/ChatMarkdown.d.ts +0 -1
  43. package/lib/browser/components/ChatMarkdown.d.ts.map +1 -1
  44. package/lib/browser/components/ChatMarkdown.js +2 -2
  45. package/lib/browser/components/ChatMarkdown.js.map +1 -1
  46. package/lib/browser/components/ChatReply.d.ts.map +1 -1
  47. package/lib/browser/components/ChatReply.js +4 -29
  48. package/lib/browser/components/ChatReply.js.map +1 -1
  49. package/lib/browser/components/ChatThinking.js +1 -1
  50. package/lib/browser/components/ChatThinking.js.map +1 -1
  51. package/lib/browser/components/WelcomeMsg.js.map +1 -1
  52. package/lib/browser/components/components.module.less +31 -33
  53. package/lib/browser/components/utils.d.ts +2 -2
  54. package/lib/browser/contrib/intelligent-completions/index.d.ts +9 -16
  55. package/lib/browser/contrib/intelligent-completions/index.d.ts.map +1 -1
  56. package/lib/browser/contrib/intelligent-completions/index.js +1 -6
  57. package/lib/browser/contrib/intelligent-completions/index.js.map +1 -1
  58. package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.d.ts +0 -1
  59. package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.d.ts.map +1 -1
  60. package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.js +4 -26
  61. package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.js.map +1 -1
  62. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.d.ts +5 -5
  63. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.d.ts.map +1 -1
  64. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.js +48 -59
  65. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.js.map +1 -1
  66. package/lib/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.d.ts +0 -4
  67. package/lib/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.d.ts.map +1 -1
  68. package/lib/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.js +0 -7
  69. package/lib/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.js.map +1 -1
  70. package/lib/browser/contrib/intelligent-completions/source/base.d.ts +5 -14
  71. package/lib/browser/contrib/intelligent-completions/source/base.d.ts.map +1 -1
  72. package/lib/browser/contrib/intelligent-completions/source/base.js +8 -29
  73. package/lib/browser/contrib/intelligent-completions/source/base.js.map +1 -1
  74. package/lib/browser/contrib/intelligent-completions/source/line-change.source.d.ts +3 -10
  75. package/lib/browser/contrib/intelligent-completions/source/line-change.source.d.ts.map +1 -1
  76. package/lib/browser/contrib/intelligent-completions/source/line-change.source.js +22 -95
  77. package/lib/browser/contrib/intelligent-completions/source/line-change.source.js.map +1 -1
  78. package/lib/browser/contrib/intelligent-completions/source/lint-error.source.d.ts +3 -1
  79. package/lib/browser/contrib/intelligent-completions/source/lint-error.source.d.ts.map +1 -1
  80. package/lib/browser/contrib/intelligent-completions/source/lint-error.source.js +20 -13
  81. package/lib/browser/contrib/intelligent-completions/source/lint-error.source.js.map +1 -1
  82. package/lib/browser/contrib/terminal/component/terminal-command-suggest-controller.js +2 -2
  83. package/lib/browser/contrib/terminal/component/terminal-command-suggest-controller.js.map +1 -1
  84. package/lib/browser/index.d.ts +3 -11
  85. package/lib/browser/index.d.ts.map +1 -1
  86. package/lib/browser/index.js +4 -56
  87. package/lib/browser/index.js.map +1 -1
  88. package/lib/browser/languages/tree-sitter/wasm-manager.d.ts.map +1 -1
  89. package/lib/browser/languages/tree-sitter/wasm-manager.js +2 -14
  90. package/lib/browser/languages/tree-sitter/wasm-manager.js.map +1 -1
  91. package/lib/browser/layout/ai-layout.d.ts.map +1 -1
  92. package/lib/browser/layout/ai-layout.js +2 -2
  93. package/lib/browser/layout/ai-layout.js.map +1 -1
  94. package/lib/browser/layout/layout.module.less +9 -9
  95. package/lib/browser/layout/tabbar.view.d.ts.map +1 -1
  96. package/lib/browser/layout/tabbar.view.js +6 -5
  97. package/lib/browser/layout/tabbar.view.js.map +1 -1
  98. package/lib/browser/model/enhanceDecorationsCollection.d.ts +10 -14
  99. package/lib/browser/model/enhanceDecorationsCollection.d.ts.map +1 -1
  100. package/lib/browser/model/enhanceDecorationsCollection.js +53 -42
  101. package/lib/browser/model/enhanceDecorationsCollection.js.map +1 -1
  102. package/lib/browser/model/msg-history-manager.d.ts +1 -20
  103. package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
  104. package/lib/browser/model/msg-history-manager.js +10 -46
  105. package/lib/browser/model/msg-history-manager.js.map +1 -1
  106. package/lib/browser/model/styles.module.less +7 -0
  107. package/lib/browser/preferences/schema.d.ts.map +1 -1
  108. package/lib/browser/preferences/schema.js +0 -69
  109. package/lib/browser/preferences/schema.js.map +1 -1
  110. package/lib/browser/types.d.ts +4 -74
  111. package/lib/browser/types.d.ts.map +1 -1
  112. package/lib/browser/types.js +1 -4
  113. package/lib/browser/types.js.map +1 -1
  114. package/lib/browser/widget/inline-chat/inline-chat-editor.controller.d.ts +1 -2
  115. package/lib/browser/widget/inline-chat/inline-chat-editor.controller.d.ts.map +1 -1
  116. package/lib/browser/widget/inline-chat/inline-chat-editor.controller.js +49 -21
  117. package/lib/browser/widget/inline-chat/inline-chat-editor.controller.js.map +1 -1
  118. package/lib/browser/widget/inline-chat/inline-chat.feature.registry.d.ts +13 -3
  119. package/lib/browser/widget/inline-chat/inline-chat.feature.registry.d.ts.map +1 -1
  120. package/lib/browser/widget/inline-chat/inline-chat.feature.registry.js +72 -24
  121. package/lib/browser/widget/inline-chat/inline-chat.feature.registry.js.map +1 -1
  122. package/lib/browser/widget/inline-chat/inline-chat.service.d.ts +6 -1
  123. package/lib/browser/widget/inline-chat/inline-chat.service.d.ts.map +1 -1
  124. package/lib/browser/widget/inline-chat/inline-chat.service.js +17 -5
  125. package/lib/browser/widget/inline-chat/inline-chat.service.js.map +1 -1
  126. package/lib/browser/widget/inline-chat/inline-content-widget.d.ts +5 -2
  127. package/lib/browser/widget/inline-chat/inline-content-widget.d.ts.map +1 -1
  128. package/lib/browser/widget/inline-chat/inline-content-widget.js +42 -17
  129. package/lib/browser/widget/inline-chat/inline-content-widget.js.map +1 -1
  130. package/lib/browser/widget/inline-diff/inline-diff-previewer.d.ts +5 -22
  131. package/lib/browser/widget/inline-diff/inline-diff-previewer.d.ts.map +1 -1
  132. package/lib/browser/widget/inline-diff/inline-diff-previewer.js +30 -61
  133. package/lib/browser/widget/inline-diff/inline-diff-previewer.js.map +1 -1
  134. package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts +12 -8
  135. package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts.map +1 -1
  136. package/lib/browser/widget/inline-diff/inline-diff.controller.js +96 -68
  137. package/lib/browser/widget/inline-diff/inline-diff.controller.js.map +1 -1
  138. package/lib/browser/widget/inline-hint/inline-hint.controller.d.ts +1 -0
  139. package/lib/browser/widget/inline-hint/inline-hint.controller.d.ts.map +1 -1
  140. package/lib/browser/widget/inline-hint/inline-hint.controller.js +5 -0
  141. package/lib/browser/widget/inline-hint/inline-hint.controller.js.map +1 -1
  142. package/lib/browser/widget/inline-input/inline-input-widget.d.ts +2 -12
  143. package/lib/browser/widget/inline-input/inline-input-widget.d.ts.map +1 -1
  144. package/lib/browser/widget/inline-input/inline-input-widget.js +18 -26
  145. package/lib/browser/widget/inline-input/inline-input-widget.js.map +1 -1
  146. package/lib/browser/widget/inline-input/inline-input.controller.d.ts +5 -14
  147. package/lib/browser/widget/inline-input/inline-input.controller.d.ts.map +1 -1
  148. package/lib/browser/widget/inline-input/inline-input.controller.js +165 -321
  149. package/lib/browser/widget/inline-input/inline-input.controller.js.map +1 -1
  150. package/lib/browser/widget/inline-input/inline-input.module.less +0 -4
  151. package/lib/browser/widget/inline-input/inline-input.service.d.ts +7 -19
  152. package/lib/browser/widget/inline-input/inline-input.service.d.ts.map +1 -1
  153. package/lib/browser/widget/inline-input/inline-input.service.js +12 -72
  154. package/lib/browser/widget/inline-input/inline-input.service.js.map +1 -1
  155. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts +19 -9
  156. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts.map +1 -1
  157. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js +39 -47
  158. package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js.map +1 -1
  159. package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts +4 -21
  160. package/lib/browser/widget/inline-stream-diff/live-preview.component.d.ts.map +1 -1
  161. package/lib/browser/widget/inline-stream-diff/live-preview.component.js +5 -37
  162. package/lib/browser/widget/inline-stream-diff/live-preview.component.js.map +1 -1
  163. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.d.ts +11 -7
  164. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.d.ts.map +1 -1
  165. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js +77 -34
  166. package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js.map +1 -1
  167. package/lib/common/index.d.ts +0 -10
  168. package/lib/common/index.d.ts.map +1 -1
  169. package/lib/common/index.js +1 -4
  170. package/lib/common/index.js.map +1 -1
  171. package/lib/common/types.d.ts +0 -17
  172. package/lib/common/types.d.ts.map +1 -1
  173. package/lib/common/utils.d.ts +0 -1
  174. package/lib/common/utils.d.ts.map +1 -1
  175. package/lib/common/utils.js +3 -5
  176. package/lib/common/utils.js.map +1 -1
  177. package/lib/node/index.d.ts.map +1 -1
  178. package/lib/node/index.js +0 -19
  179. package/lib/node/index.js.map +1 -1
  180. package/package.json +22 -33
  181. package/src/browser/ai-core.contextkeys.ts +0 -3
  182. package/src/browser/ai-core.contribution.ts +21 -167
  183. package/src/browser/chat/chat-agent.service.ts +0 -7
  184. package/src/browser/chat/chat-manager.service.ts +7 -83
  185. package/src/browser/chat/chat-model.ts +20 -86
  186. package/src/browser/chat/chat-proxy.service.ts +3 -55
  187. package/src/browser/chat/chat.api.service.ts +2 -2
  188. package/src/browser/chat/chat.internal.service.ts +6 -35
  189. package/src/browser/chat/chat.module.less +41 -17
  190. package/src/browser/chat/chat.view.tsx +45 -191
  191. package/src/browser/components/ChatEditor.tsx +10 -13
  192. package/src/browser/components/ChatInput.tsx +0 -1
  193. package/src/browser/components/ChatMarkdown.tsx +2 -4
  194. package/src/browser/components/ChatReply.tsx +9 -38
  195. package/src/browser/components/ChatThinking.tsx +1 -1
  196. package/src/browser/components/WelcomeMsg.tsx +1 -1
  197. package/src/browser/components/components.module.less +31 -33
  198. package/src/browser/contrib/intelligent-completions/index.ts +4 -19
  199. package/src/browser/contrib/intelligent-completions/intelligent-completions.contribution.ts +8 -32
  200. package/src/browser/contrib/intelligent-completions/intelligent-completions.controller.ts +67 -102
  201. package/src/browser/contrib/intelligent-completions/intelligent-completions.feature.registry.ts +0 -11
  202. package/src/browser/contrib/intelligent-completions/source/base.ts +14 -39
  203. package/src/browser/contrib/intelligent-completions/source/line-change.source.ts +22 -129
  204. package/src/browser/contrib/intelligent-completions/source/lint-error.source.ts +31 -19
  205. package/src/browser/contrib/terminal/component/terminal-command-suggest-controller.tsx +1 -1
  206. package/src/browser/index.ts +6 -69
  207. package/src/browser/languages/tree-sitter/wasm-manager.ts +2 -12
  208. package/src/browser/layout/ai-layout.tsx +2 -5
  209. package/src/browser/layout/layout.module.less +9 -9
  210. package/src/browser/layout/tabbar.view.tsx +8 -10
  211. package/src/browser/model/enhanceDecorationsCollection.ts +77 -62
  212. package/src/browser/model/msg-history-manager.ts +2 -56
  213. package/src/browser/model/styles.module.less +7 -0
  214. package/src/browser/preferences/schema.ts +0 -69
  215. package/src/browser/types.ts +5 -100
  216. package/src/browser/widget/inline-chat/inline-chat-editor.controller.ts +65 -30
  217. package/src/browser/widget/inline-chat/inline-chat.feature.registry.ts +90 -23
  218. package/src/browser/widget/inline-chat/inline-chat.service.ts +17 -2
  219. package/src/browser/widget/inline-chat/inline-content-widget.tsx +69 -14
  220. package/src/browser/widget/inline-diff/inline-diff-previewer.ts +32 -87
  221. package/src/browser/widget/inline-diff/inline-diff.controller.ts +114 -90
  222. package/src/browser/widget/inline-hint/inline-hint.controller.ts +7 -1
  223. package/src/browser/widget/inline-input/inline-input-widget.tsx +12 -34
  224. package/src/browser/widget/inline-input/inline-input.controller.ts +242 -454
  225. package/src/browser/widget/inline-input/inline-input.module.less +0 -4
  226. package/src/browser/widget/inline-input/inline-input.service.ts +13 -92
  227. package/src/browser/widget/inline-stream-diff/inline-stream-diff.handler.tsx +67 -58
  228. package/src/browser/widget/inline-stream-diff/live-preview.component.tsx +6 -49
  229. package/src/browser/widget/inline-stream-diff/live-preview.decoration.tsx +112 -41
  230. package/src/common/index.ts +0 -15
  231. package/src/common/types.ts +0 -22
  232. package/src/common/utils.ts +2 -4
  233. package/src/node/index.ts +0 -21
  234. package/lib/browser/components/ChatContext/ContextSelector.d.ts +0 -12
  235. package/lib/browser/components/ChatContext/ContextSelector.d.ts.map +0 -1
  236. package/lib/browser/components/ChatContext/ContextSelector.js +0 -113
  237. package/lib/browser/components/ChatContext/ContextSelector.js.map +0 -1
  238. package/lib/browser/components/ChatContext/index.d.ts +0 -4
  239. package/lib/browser/components/ChatContext/index.d.ts.map +0 -1
  240. package/lib/browser/components/ChatContext/index.js +0 -100
  241. package/lib/browser/components/ChatContext/index.js.map +0 -1
  242. package/lib/browser/components/ChatContext/style.module.less +0 -201
  243. package/lib/browser/components/ChatHistory.d.ts +0 -21
  244. package/lib/browser/components/ChatHistory.d.ts.map +0 -1
  245. package/lib/browser/components/ChatHistory.js +0 -148
  246. package/lib/browser/components/ChatHistory.js.map +0 -1
  247. package/lib/browser/components/ChatToolRender.d.ts +0 -7
  248. package/lib/browser/components/ChatToolRender.d.ts.map +0 -1
  249. package/lib/browser/components/ChatToolRender.js +0 -71
  250. package/lib/browser/components/ChatToolRender.js.map +0 -1
  251. package/lib/browser/components/ChatToolRender.module.less +0 -86
  252. package/lib/browser/components/chat-history.css +0 -139
  253. package/lib/browser/context/llm-context.contribution.d.ts +0 -7
  254. package/lib/browser/context/llm-context.contribution.d.ts.map +0 -1
  255. package/lib/browser/context/llm-context.contribution.js +0 -21
  256. package/lib/browser/context/llm-context.contribution.js.map +0 -1
  257. package/lib/browser/context/llm-context.service.d.ts +0 -36
  258. package/lib/browser/context/llm-context.service.d.ts.map +0 -1
  259. package/lib/browser/context/llm-context.service.js +0 -170
  260. package/lib/browser/context/llm-context.service.js.map +0 -1
  261. package/lib/browser/contrib/intelligent-completions/source/trigger.source.d.ts +0 -13
  262. package/lib/browser/contrib/intelligent-completions/source/trigger.source.d.ts.map +0 -1
  263. package/lib/browser/contrib/intelligent-completions/source/trigger.source.js +0 -36
  264. package/lib/browser/contrib/intelligent-completions/source/trigger.source.js.map +0 -1
  265. package/lib/browser/contrib/intelligent-completions/source/typing.source.d.ts +0 -9
  266. package/lib/browser/contrib/intelligent-completions/source/typing.source.d.ts.map +0 -1
  267. package/lib/browser/contrib/intelligent-completions/source/typing.source.js +0 -36
  268. package/lib/browser/contrib/intelligent-completions/source/typing.source.js.map +0 -1
  269. package/lib/browser/mcp/base-apply.service.d.ts +0 -67
  270. package/lib/browser/mcp/base-apply.service.d.ts.map +0 -1
  271. package/lib/browser/mcp/base-apply.service.js +0 -290
  272. package/lib/browser/mcp/base-apply.service.js.map +0 -1
  273. package/lib/browser/mcp/mcp-server-proxy.service.d.ts +0 -30
  274. package/lib/browser/mcp/mcp-server-proxy.service.d.ts.map +0 -1
  275. package/lib/browser/mcp/mcp-server-proxy.service.js +0 -57
  276. package/lib/browser/mcp/mcp-server-proxy.service.js.map +0 -1
  277. package/lib/browser/mcp/mcp-server.feature.registry.d.ts +0 -20
  278. package/lib/browser/mcp/mcp-server.feature.registry.d.ts.map +0 -1
  279. package/lib/browser/mcp/mcp-server.feature.registry.js +0 -69
  280. package/lib/browser/mcp/mcp-server.feature.registry.js.map +0 -1
  281. package/lib/browser/mcp/mcp-tools-dialog.module.less +0 -44
  282. package/lib/browser/mcp/mcp-tools-dialog.view.d.ts +0 -8
  283. package/lib/browser/mcp/mcp-tools-dialog.view.d.ts.map +0 -1
  284. package/lib/browser/mcp/mcp-tools-dialog.view.js +0 -16
  285. package/lib/browser/mcp/mcp-tools-dialog.view.js.map +0 -1
  286. package/lib/browser/mcp/tools/components/EditFile.d.ts +0 -3
  287. package/lib/browser/mcp/tools/components/EditFile.d.ts.map +0 -1
  288. package/lib/browser/mcp/tools/components/EditFile.js +0 -101
  289. package/lib/browser/mcp/tools/components/EditFile.js.map +0 -1
  290. package/lib/browser/mcp/tools/components/SearchResult.d.ts +0 -11
  291. package/lib/browser/mcp/tools/components/SearchResult.d.ts.map +0 -1
  292. package/lib/browser/mcp/tools/components/SearchResult.js +0 -60
  293. package/lib/browser/mcp/tools/components/SearchResult.js.map +0 -1
  294. package/lib/browser/mcp/tools/components/Terminal.d.ts +0 -4
  295. package/lib/browser/mcp/tools/components/Terminal.d.ts.map +0 -1
  296. package/lib/browser/mcp/tools/components/Terminal.js +0 -64
  297. package/lib/browser/mcp/tools/components/Terminal.js.map +0 -1
  298. package/lib/browser/mcp/tools/components/index.module.less +0 -168
  299. package/lib/browser/mcp/tools/createNewFileWithText.d.ts +0 -9
  300. package/lib/browser/mcp/tools/createNewFileWithText.d.ts.map +0 -1
  301. package/lib/browser/mcp/tools/createNewFileWithText.js +0 -82
  302. package/lib/browser/mcp/tools/createNewFileWithText.js.map +0 -1
  303. package/lib/browser/mcp/tools/editFile.d.ts +0 -8
  304. package/lib/browser/mcp/tools/editFile.d.ts.map +0 -1
  305. package/lib/browser/mcp/tools/editFile.js +0 -95
  306. package/lib/browser/mcp/tools/editFile.js.map +0 -1
  307. package/lib/browser/mcp/tools/fileSearch.d.ts +0 -10
  308. package/lib/browser/mcp/tools/fileSearch.d.ts.map +0 -1
  309. package/lib/browser/mcp/tools/fileSearch.js +0 -94
  310. package/lib/browser/mcp/tools/fileSearch.js.map +0 -1
  311. package/lib/browser/mcp/tools/getDiagnosticsByPath.d.ts +0 -10
  312. package/lib/browser/mcp/tools/getDiagnosticsByPath.d.ts.map +0 -1
  313. package/lib/browser/mcp/tools/getDiagnosticsByPath.js +0 -118
  314. package/lib/browser/mcp/tools/getDiagnosticsByPath.js.map +0 -1
  315. package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.d.ts +0 -11
  316. package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.d.ts.map +0 -1
  317. package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.js +0 -118
  318. package/lib/browser/mcp/tools/getOpenEditorFileDiagnostics.js.map +0 -1
  319. package/lib/browser/mcp/tools/grepSearch.d.ts +0 -10
  320. package/lib/browser/mcp/tools/grepSearch.d.ts.map +0 -1
  321. package/lib/browser/mcp/tools/grepSearch.js +0 -118
  322. package/lib/browser/mcp/tools/grepSearch.js.map +0 -1
  323. package/lib/browser/mcp/tools/handlers/EditFile.d.ts +0 -10
  324. package/lib/browser/mcp/tools/handlers/EditFile.d.ts.map +0 -1
  325. package/lib/browser/mcp/tools/handlers/EditFile.js +0 -28
  326. package/lib/browser/mcp/tools/handlers/EditFile.js.map +0 -1
  327. package/lib/browser/mcp/tools/handlers/ListDir.d.ts +0 -21
  328. package/lib/browser/mcp/tools/handlers/ListDir.d.ts.map +0 -1
  329. package/lib/browser/mcp/tools/handlers/ListDir.js +0 -112
  330. package/lib/browser/mcp/tools/handlers/ListDir.js.map +0 -1
  331. package/lib/browser/mcp/tools/handlers/ReadFile.d.ts +0 -53
  332. package/lib/browser/mcp/tools/handlers/ReadFile.d.ts.map +0 -1
  333. package/lib/browser/mcp/tools/handlers/ReadFile.js +0 -161
  334. package/lib/browser/mcp/tools/handlers/ReadFile.js.map +0 -1
  335. package/lib/browser/mcp/tools/handlers/RunCommand.d.ts +0 -43
  336. package/lib/browser/mcp/tools/handlers/RunCommand.d.ts.map +0 -1
  337. package/lib/browser/mcp/tools/handlers/RunCommand.js +0 -104
  338. package/lib/browser/mcp/tools/handlers/RunCommand.js.map +0 -1
  339. package/lib/browser/mcp/tools/handlers/utils.d.ts +0 -2
  340. package/lib/browser/mcp/tools/handlers/utils.d.ts.map +0 -1
  341. package/lib/browser/mcp/tools/handlers/utils.js +0 -7
  342. package/lib/browser/mcp/tools/handlers/utils.js.map +0 -1
  343. package/lib/browser/mcp/tools/listDir.d.ts +0 -8
  344. package/lib/browser/mcp/tools/listDir.d.ts.map +0 -1
  345. package/lib/browser/mcp/tools/listDir.js +0 -64
  346. package/lib/browser/mcp/tools/listDir.js.map +0 -1
  347. package/lib/browser/mcp/tools/readFile.d.ts +0 -8
  348. package/lib/browser/mcp/tools/readFile.d.ts.map +0 -1
  349. package/lib/browser/mcp/tools/readFile.js +0 -81
  350. package/lib/browser/mcp/tools/readFile.js.map +0 -1
  351. package/lib/browser/mcp/tools/runTerminalCmd.d.ts +0 -13
  352. package/lib/browser/mcp/tools/runTerminalCmd.d.ts.map +0 -1
  353. package/lib/browser/mcp/tools/runTerminalCmd.js +0 -49
  354. package/lib/browser/mcp/tools/runTerminalCmd.js.map +0 -1
  355. package/lib/browser/widget/inline-input/model.d.ts +0 -34
  356. package/lib/browser/widget/inline-input/model.d.ts.map +0 -1
  357. package/lib/browser/widget/inline-input/model.js +0 -63
  358. package/lib/browser/widget/inline-input/model.js.map +0 -1
  359. package/lib/common/llm-context.d.ts +0 -40
  360. package/lib/common/llm-context.d.ts.map +0 -1
  361. package/lib/common/llm-context.js +0 -5
  362. package/lib/common/llm-context.js.map +0 -1
  363. package/lib/common/mcp-server-manager.d.ts +0 -40
  364. package/lib/common/mcp-server-manager.d.ts.map +0 -1
  365. package/lib/common/mcp-server-manager.js +0 -6
  366. package/lib/common/mcp-server-manager.js.map +0 -1
  367. package/lib/common/prompts/context-prompt-provider.d.ts +0 -14
  368. package/lib/common/prompts/context-prompt-provider.d.ts.map +0 -1
  369. package/lib/common/prompts/context-prompt-provider.js +0 -38
  370. package/lib/common/prompts/context-prompt-provider.js.map +0 -1
  371. package/lib/common/tool-invocation-registry.d.ts +0 -92
  372. package/lib/common/tool-invocation-registry.d.ts.map +0 -1
  373. package/lib/common/tool-invocation-registry.js +0 -90
  374. package/lib/common/tool-invocation-registry.js.map +0 -1
  375. package/lib/node/anthropic/anthropic-language-model.d.ts +0 -9
  376. package/lib/node/anthropic/anthropic-language-model.d.ts.map +0 -1
  377. package/lib/node/anthropic/anthropic-language-model.js +0 -26
  378. package/lib/node/anthropic/anthropic-language-model.js.map +0 -1
  379. package/lib/node/base-language-model.d.ts +0 -14
  380. package/lib/node/base-language-model.d.ts.map +0 -1
  381. package/lib/node/base-language-model.js +0 -140
  382. package/lib/node/base-language-model.js.map +0 -1
  383. package/lib/node/deepseek/deepseek-language-model.d.ts +0 -9
  384. package/lib/node/deepseek/deepseek-language-model.d.ts.map +0 -1
  385. package/lib/node/deepseek/deepseek-language-model.js +0 -26
  386. package/lib/node/deepseek/deepseek-language-model.js.map +0 -1
  387. package/lib/node/mcp/sumi-mcp-server.d.ts +0 -91
  388. package/lib/node/mcp/sumi-mcp-server.d.ts.map +0 -1
  389. package/lib/node/mcp/sumi-mcp-server.js +0 -175
  390. package/lib/node/mcp/sumi-mcp-server.js.map +0 -1
  391. package/lib/node/mcp-server-manager-impl.d.ts +0 -27
  392. package/lib/node/mcp-server-manager-impl.d.ts.map +0 -1
  393. package/lib/node/mcp-server-manager-impl.js +0 -128
  394. package/lib/node/mcp-server-manager-impl.js.map +0 -1
  395. package/lib/node/mcp-server.d.ts +0 -207
  396. package/lib/node/mcp-server.d.ts.map +0 -1
  397. package/lib/node/mcp-server.js +0 -92
  398. package/lib/node/mcp-server.js.map +0 -1
  399. package/lib/node/openai/openai-language-model.d.ts +0 -9
  400. package/lib/node/openai/openai-language-model.d.ts.map +0 -1
  401. package/lib/node/openai/openai-language-model.js +0 -29
  402. package/lib/node/openai/openai-language-model.js.map +0 -1
  403. package/src/browser/components/ChatContext/ContextSelector.tsx +0 -177
  404. package/src/browser/components/ChatContext/index.tsx +0 -151
  405. package/src/browser/components/ChatContext/style.module.less +0 -201
  406. package/src/browser/components/ChatHistory.tsx +0 -292
  407. package/src/browser/components/ChatToolRender.module.less +0 -86
  408. package/src/browser/components/ChatToolRender.tsx +0 -96
  409. package/src/browser/components/chat-history.css +0 -139
  410. package/src/browser/context/llm-context.contribution.ts +0 -14
  411. package/src/browser/context/llm-context.service.ts +0 -200
  412. package/src/browser/contrib/intelligent-completions/source/trigger.source.ts +0 -44
  413. package/src/browser/contrib/intelligent-completions/source/typing.source.ts +0 -34
  414. package/src/browser/mcp/base-apply.service.ts +0 -349
  415. package/src/browser/mcp/mcp-server-proxy.service.ts +0 -55
  416. package/src/browser/mcp/mcp-server.feature.registry.ts +0 -77
  417. package/src/browser/mcp/mcp-tools-dialog.module.less +0 -44
  418. package/src/browser/mcp/mcp-tools-dialog.view.tsx +0 -24
  419. package/src/browser/mcp/tools/components/EditFile.tsx +0 -144
  420. package/src/browser/mcp/tools/components/SearchResult.tsx +0 -92
  421. package/src/browser/mcp/tools/components/Terminal.tsx +0 -97
  422. package/src/browser/mcp/tools/components/index.module.less +0 -168
  423. package/src/browser/mcp/tools/createNewFileWithText.ts +0 -82
  424. package/src/browser/mcp/tools/editFile.ts +0 -100
  425. package/src/browser/mcp/tools/fileSearch.ts +0 -99
  426. package/src/browser/mcp/tools/getDiagnosticsByPath.ts +0 -122
  427. package/src/browser/mcp/tools/getOpenEditorFileDiagnostics.ts +0 -120
  428. package/src/browser/mcp/tools/grepSearch.ts +0 -121
  429. package/src/browser/mcp/tools/handlers/EditFile.ts +0 -21
  430. package/src/browser/mcp/tools/handlers/ListDir.ts +0 -117
  431. package/src/browser/mcp/tools/handlers/ReadFile.ts +0 -192
  432. package/src/browser/mcp/tools/handlers/RunCommand.ts +0 -115
  433. package/src/browser/mcp/tools/handlers/utils.ts +0 -3
  434. package/src/browser/mcp/tools/listDir.ts +0 -65
  435. package/src/browser/mcp/tools/readFile.ts +0 -81
  436. package/src/browser/mcp/tools/runTerminalCmd.ts +0 -45
  437. package/src/browser/widget/inline-input/model.ts +0 -74
  438. package/src/common/llm-context.ts +0 -47
  439. package/src/common/mcp-server-manager.ts +0 -51
  440. package/src/common/prompts/context-prompt-provider.ts +0 -46
  441. package/src/common/tool-invocation-registry.ts +0 -168
  442. package/src/node/anthropic/anthropic-language-model.ts +0 -25
  443. package/src/node/base-language-model.ts +0 -177
  444. package/src/node/deepseek/deepseek-language-model.ts +0 -25
  445. package/src/node/mcp/sumi-mcp-server.ts +0 -200
  446. package/src/node/mcp-server-manager-impl.ts +0 -156
  447. package/src/node/mcp-server.ts +0 -127
  448. package/src/node/openai/openai-language-model.ts +0 -25
@@ -1,18 +1,19 @@
1
1
  import { Autowired } from '@opensumi/di';
2
2
  import {
3
- AINativeConfigService,
4
3
  ClientAppContribution,
5
4
  Key,
6
5
  KeybindingContribution,
7
6
  KeybindingRegistry,
8
7
  KeybindingScope,
9
8
  } from '@opensumi/ide-core-browser';
10
- import { AI_CODE_EDITS_COMMANDS } from '@opensumi/ide-core-browser/lib/ai-native/command';
9
+ import {
10
+ AI_MULTI_LINE_COMPLETION_ACCEPT,
11
+ AI_MULTI_LINE_COMPLETION_DISCARD,
12
+ } from '@opensumi/ide-core-browser/lib/ai-native/command';
11
13
  import { MultiLineEditsIsVisible } from '@opensumi/ide-core-browser/lib/contextkey/ai-native';
12
14
  import { CommandContribution, CommandRegistry, Domain } from '@opensumi/ide-core-common';
13
15
  import { WorkbenchEditorService } from '@opensumi/ide-editor';
14
16
  import { WorkbenchEditorServiceImpl } from '@opensumi/ide-editor/lib/browser/workbench-editor.service';
15
- import { transaction } from '@opensumi/ide-monaco/lib/common/observable';
16
17
 
17
18
  import { IntelligentCompletionsController } from './intelligent-completions.controller';
18
19
 
@@ -21,11 +22,8 @@ export class IntelligentCompletionsContribution implements KeybindingContributio
21
22
  @Autowired(WorkbenchEditorService)
22
23
  private readonly workbenchEditorService: WorkbenchEditorServiceImpl;
23
24
 
24
- @Autowired(AINativeConfigService)
25
- private readonly aiNativeConfigService: AINativeConfigService;
26
-
27
25
  registerCommands(commands: CommandRegistry): void {
28
- commands.registerCommand(AI_CODE_EDITS_COMMANDS.DISCARD, {
26
+ commands.registerCommand(AI_MULTI_LINE_COMPLETION_DISCARD, {
29
27
  execute: () => {
30
28
  const editor = this.workbenchEditorService.currentCodeEditor;
31
29
  if (editor) {
@@ -34,7 +32,7 @@ export class IntelligentCompletionsContribution implements KeybindingContributio
34
32
  },
35
33
  });
36
34
 
37
- commands.registerCommand(AI_CODE_EDITS_COMMANDS.ACCEPT, {
35
+ commands.registerCommand(AI_MULTI_LINE_COMPLETION_ACCEPT, {
38
36
  execute: () => {
39
37
  const editor = this.workbenchEditorService.currentCodeEditor;
40
38
  if (editor) {
@@ -42,24 +40,11 @@ export class IntelligentCompletionsContribution implements KeybindingContributio
42
40
  }
43
41
  },
44
42
  });
45
-
46
- commands.registerCommand(AI_CODE_EDITS_COMMANDS.TRIGGER, {
47
- execute: () => {
48
- const editor = this.workbenchEditorService.currentCodeEditor;
49
- if (editor) {
50
- transaction((tx) => {
51
- IntelligentCompletionsController.get(editor.monacoEditor)?.trigger(tx);
52
- });
53
- }
54
- },
55
- });
56
43
  }
57
44
 
58
45
  registerKeybindings(keybindings: KeybindingRegistry): void {
59
- const { codeEdits } = this.aiNativeConfigService;
60
-
61
46
  keybindings.registerKeybinding({
62
- command: AI_CODE_EDITS_COMMANDS.DISCARD.id,
47
+ command: AI_MULTI_LINE_COMPLETION_DISCARD.id,
63
48
  keybinding: Key.ESCAPE.code,
64
49
  when: MultiLineEditsIsVisible.raw,
65
50
  priority: 100,
@@ -67,20 +52,11 @@ export class IntelligentCompletionsContribution implements KeybindingContributio
67
52
 
68
53
  keybindings.registerKeybinding(
69
54
  {
70
- command: AI_CODE_EDITS_COMMANDS.ACCEPT.id,
55
+ command: AI_MULTI_LINE_COMPLETION_ACCEPT.id,
71
56
  keybinding: Key.TAB.code,
72
57
  when: MultiLineEditsIsVisible.raw,
73
58
  },
74
59
  KeybindingScope.USER,
75
60
  );
76
-
77
- keybindings.registerKeybinding(
78
- {
79
- command: AI_CODE_EDITS_COMMANDS.TRIGGER.id,
80
- keybinding: codeEdits.triggerKeybinding,
81
- when: 'editorFocus',
82
- },
83
- KeybindingScope.USER,
84
- );
85
61
  }
86
62
  }
@@ -1,10 +1,4 @@
1
- import {
2
- ContextKeyChangeEvent,
3
- Key,
4
- KeybindingRegistry,
5
- KeybindingScope,
6
- PreferenceService,
7
- } from '@opensumi/ide-core-browser';
1
+ import { Key, KeybindingRegistry, KeybindingScope, PreferenceService } from '@opensumi/ide-core-browser';
8
2
  import { MultiLineEditsIsVisible } from '@opensumi/ide-core-browser/lib/contextkey/ai-native';
9
3
  import {
10
4
  AINativeSettingSectionsId,
@@ -20,13 +14,9 @@ import { Emitter, ICodeEditor, ICursorPositionChangedEvent, IRange, ITextModel,
20
14
  import {
21
15
  IObservable,
22
16
  ISettableObservable,
23
- ITransaction,
24
17
  autorun,
25
18
  autorunWithStoreHandleChanges,
26
19
  derived,
27
- derivedHandleChanges,
28
- derivedOpts,
29
- observableFromEvent,
30
20
  observableValue,
31
21
  transaction,
32
22
  } from '@opensumi/ide-monaco/lib/common/observable';
@@ -36,9 +26,9 @@ import { inlineSuggestCommitId } from '@opensumi/monaco-editor-core/esm/vs/edito
36
26
  import { InlineCompletionContextKeys } from '@opensumi/monaco-editor-core/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys';
37
27
  import { InlineCompletionsController } from '@opensumi/monaco-editor-core/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController';
38
28
  import {
39
- ObservableSuggestWidgetAdapter,
29
+ SuggestItemInfo,
40
30
  SuggestWidgetAdaptor,
41
- } from '@opensumi/monaco-editor-core/esm/vs/editor/contrib/inlineCompletions/browser/model/suggestWidgetAdapter';
31
+ } from '@opensumi/monaco-editor-core/esm/vs/editor/contrib/inlineCompletions/browser/model/suggestWidgetAdaptor';
42
32
  import { ContextKeyExpr } from '@opensumi/monaco-editor-core/esm/vs/platform/contextkey/common/contextkey';
43
33
 
44
34
  import { AINativeContextKey } from '../../ai-core.contextkeys';
@@ -57,10 +47,8 @@ import { IntelligentCompletionsRegistry } from './intelligent-completions.featur
57
47
  import { CodeEditsSourceCollection } from './source/base';
58
48
  import { LineChangeCodeEditsSource } from './source/line-change.source';
59
49
  import { LintErrorCodeEditsSource } from './source/lint-error.source';
60
- import { TriggerCodeEditsSource } from './source/trigger.source';
61
- import { TypingCodeEditsSource } from './source/typing.source';
62
50
 
63
- import { CodeEditsResultValue, VALID_TIME } from './index';
51
+ import { CodeEditsResultValue } from './index';
64
52
 
65
53
  export class IntelligentCompletionsController extends BaseAIMonacoEditorController {
66
54
  public static readonly ID = 'editor.contrib.ai.intelligent.completions';
@@ -95,29 +83,22 @@ export class IntelligentCompletionsController extends BaseAIMonacoEditorControll
95
83
  private codeEditsSourceCollection: CodeEditsSourceCollection;
96
84
  private aiNativeContextKey: AINativeContextKey;
97
85
  private rewriteWidget: RewriteWidget | null;
98
- private multiLineEditsIsVisibleObs: IObservable<boolean>;
86
+ private whenMultiLineEditsVisibleDisposable: Disposable;
99
87
 
100
88
  public mount(): IDisposable {
101
89
  this.handlerAlwaysVisiblePreference();
102
90
 
103
91
  this.codeEditsResult = observableValue<CodeEditsResultValue | undefined>(this, undefined);
92
+
93
+ this.whenMultiLineEditsVisibleDisposable = new Disposable();
104
94
  this.multiLineDecorationModel = new MultiLineDecorationModel(this.monacoEditor);
105
95
  this.additionsDeletionsDecorationModel = new AdditionsDeletionsDecorationModel(this.monacoEditor);
106
96
  this.aiNativeContextKey = this.injector.get(AINativeContextKey, [this.monacoEditor.contextKeyService]);
107
97
  this.codeEditsSourceCollection = this.injector.get(CodeEditsSourceCollection, [
108
- [LintErrorCodeEditsSource, LineChangeCodeEditsSource, TypingCodeEditsSource, TriggerCodeEditsSource],
98
+ [LintErrorCodeEditsSource, LineChangeCodeEditsSource],
109
99
  this.monacoEditor,
110
100
  ]);
111
101
 
112
- const multiLineEditsIsVisibleKey = new Set([MultiLineEditsIsVisible.raw]);
113
- this.multiLineEditsIsVisibleObs = observableFromEvent(
114
- this,
115
- Event.filter(this.aiNativeContextKey.contextKeyService!.onDidChangeContext, (e: ContextKeyChangeEvent) =>
116
- e.payload.affectsSome(multiLineEditsIsVisibleKey),
117
- ),
118
- () => !!this.aiNativeContextKey.multiLineEditsIsVisible.get(),
119
- );
120
-
121
102
  this.registerFeature(this.monacoEditor);
122
103
  return this.featureDisposable;
123
104
  }
@@ -161,24 +142,16 @@ export class IntelligentCompletionsController extends BaseAIMonacoEditorControll
161
142
  const model = inlineCompletionsController.model.read(reader);
162
143
  model?.inlineCompletionState.read(reader);
163
144
 
164
- const observableSuggestWidgetAdapter = inlineCompletionsController[
165
- '_suggestWidgetAdapter'
166
- ] as ObservableSuggestWidgetAdapter;
167
- if (!observableSuggestWidgetAdapter) {
168
- return;
145
+ const suggestWidgetSelectedItem = inlineCompletionsController['_suggestWidgetSelectedItem'] as IObservable<
146
+ SuggestItemInfo | undefined,
147
+ unknown
148
+ >;
149
+ const selectedItem = suggestWidgetSelectedItem.get();
150
+ if (selectedItem) {
151
+ const suggestWidgetAdaptor = inlineCompletionsController['_suggestWidgetAdaptor'] as SuggestWidgetAdaptor;
152
+ suggestWidgetAdaptor['_currentSuggestItemInfo'] = undefined;
153
+ (suggestWidgetAdaptor['_onDidSelectedItemChange'] as Emitter<void>).fire();
169
154
  }
170
-
171
- const selectedItem = observableSuggestWidgetAdapter.selectedItem.get();
172
- if (!selectedItem) {
173
- return;
174
- }
175
-
176
- const suggestWidgetAdaptor = observableSuggestWidgetAdapter[
177
- '_suggestWidgetAdaptor'
178
- ] as SuggestWidgetAdaptor;
179
-
180
- suggestWidgetAdaptor['_currentSuggestItemInfo'] = undefined;
181
- (suggestWidgetAdaptor['_onDidSelectedItemChange'] as Emitter<void>).fire();
182
155
  }),
183
156
  );
184
157
  }
@@ -280,6 +253,26 @@ export class IntelligentCompletionsController extends BaseAIMonacoEditorControll
280
253
  this.additionsDeletionsDecorationModel.updateDeletionsDecoration(wordChanges, range, eol);
281
254
  this.renderRewriteWidget(wordChanges, model, range, insertTextString);
282
255
  }
256
+
257
+ if (this.whenMultiLineEditsVisibleDisposable.disposed) {
258
+ this.whenMultiLineEditsVisibleDisposable = new Disposable();
259
+ }
260
+ // 监听当前光标位置的变化,如果超出 range 区域则表示弃用
261
+ this.whenMultiLineEditsVisibleDisposable.addDispose(
262
+ this.monacoEditor.onDidChangeCursorPosition((event: ICursorPositionChangedEvent) => {
263
+ const isVisible = this.aiNativeContextKey.multiLineEditsIsVisible.get();
264
+ if (isVisible) {
265
+ const position = event.position;
266
+ if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) {
267
+ runWhenIdle(() => {
268
+ this.discard.get();
269
+ });
270
+ }
271
+ } else {
272
+ this.whenMultiLineEditsVisibleDisposable.dispose();
273
+ }
274
+ }),
275
+ );
283
276
  }
284
277
 
285
278
  private async renderRewriteWidget(
@@ -342,52 +335,36 @@ export class IntelligentCompletionsController extends BaseAIMonacoEditorControll
342
335
  const { range, insertText } = codeEditsResult.items[0];
343
336
  const newCode = insertText;
344
337
  const originCode = this.model.getValueInRange(range);
345
- return (type: keyof Pick<CodeEditsRT, 'isReceive' | 'isDrop' | 'isValid'>, defaultValue: boolean = true) => {
346
- const data = {
347
- [type]: defaultValue,
338
+ return (type: keyof Pick<CodeEditsRT, 'isReceive' | 'isDrop' | 'isValid'>) => {
339
+ contextBean.reporterEnd({
340
+ [type]: true,
348
341
  code: newCode,
349
342
  originCode,
350
- };
351
-
352
- contextBean.reporterEnd(data);
343
+ });
353
344
  };
354
345
  }
355
346
  });
356
347
 
357
- public discard = derivedHandleChanges(
358
- {
359
- owner: this,
360
- createEmptyChangeSummary: () => ({ lastVisibleTime: Date.now() }),
361
- handleChange: (context, changeSummary) => {
362
- if (context.didChange(this.multiLineEditsIsVisibleObs)) {
363
- changeSummary.lastVisibleTime = Date.now();
364
- return this.multiLineEditsIsVisibleObs.get();
365
- }
366
- return false;
367
- },
368
- equalityComparer: () => false,
369
- },
370
- (reader, changeSummary) => {
371
- this.multiLineEditsIsVisibleObs.read(reader);
372
-
373
- const lastVisibleTime = changeSummary.lastVisibleTime;
374
- const report = this.reportData.read(reader);
375
- let isValid = false;
376
-
377
- if (lastVisibleTime && Date.now() - lastVisibleTime > VALID_TIME) {
378
- isValid = true;
379
- report?.('isDrop');
380
- } else {
381
- isValid = false;
382
- report?.('isValid', false);
383
- }
348
+ private lastVisibleTime = derived(this, (reader) => {
349
+ const isVisible = this.aiNativeContextKey.multiLineEditsIsVisible.get();
350
+ return isVisible ? Date.now() : undefined;
351
+ });
352
+
353
+ public discard = derived(this, (reader) => {
354
+ const lastVisibleTime = this.lastVisibleTime.read(reader);
355
+ const report = this.reportData.read(reader);
384
356
 
385
- this.hide();
386
- return isValid;
387
- },
388
- );
357
+ // 在可见的情况下超过 750ms 弃用才算有效数据,否则视为取消
358
+ if (lastVisibleTime && Date.now() - lastVisibleTime > 750) {
359
+ report?.('isDrop');
360
+ } else {
361
+ report?.('isValid');
362
+ }
363
+
364
+ this.hide();
365
+ });
389
366
 
390
- public accept = derivedOpts({ owner: this, equalsFn: () => false }, (reader) => {
367
+ public accept = derived(this, (reader) => {
391
368
  const report = this.reportData.read(reader);
392
369
  report?.('isReceive');
393
370
 
@@ -415,13 +392,6 @@ export class IntelligentCompletionsController extends BaseAIMonacoEditorControll
415
392
  this.hide();
416
393
  });
417
394
 
418
- public trigger(tx: ITransaction): void {
419
- const triggerSource = this.codeEditsSourceCollection.getSource(TriggerCodeEditsSource) as TriggerCodeEditsSource;
420
- if (triggerSource) {
421
- triggerSource.triggerSignal.trigger(tx);
422
- }
423
- }
424
-
425
395
  private registerFeature(monacoEditor: ICodeEditor): void {
426
396
  this.featureDisposable.addDispose(
427
397
  Event.any<any>(
@@ -433,19 +403,14 @@ export class IntelligentCompletionsController extends BaseAIMonacoEditorControll
433
403
  }),
434
404
  );
435
405
 
436
- // 监听当前光标位置的变化,如果超出 range 区域则表示弃用
406
+ const multiLineEditsIsVisibleKey = new Set([MultiLineEditsIsVisible.raw]);
407
+ this.featureDisposable.addDispose(this.whenMultiLineEditsVisibleDisposable);
437
408
  this.featureDisposable.addDispose(
438
- this.monacoEditor.onDidChangeCursorPosition((event: ICursorPositionChangedEvent) => {
439
- const isVisible = this.multiLineEditsIsVisibleObs.get();
440
- const completionModel = this.codeEditsResult.get();
441
-
442
- if (isVisible && completionModel) {
443
- const position = event.position;
444
- const range = completionModel.items[0].range;
445
- if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) {
446
- runWhenIdle(() => {
447
- this.discard.get();
448
- });
409
+ this.aiNativeContextKey.contextKeyService!.onDidChangeContext((e) => {
410
+ if (e.payload.affectsSome(multiLineEditsIsVisibleKey)) {
411
+ const isVisible = this.aiNativeContextKey.multiLineEditsIsVisible.get();
412
+ if (!isVisible) {
413
+ this.whenMultiLineEditsVisibleDisposable.dispose();
449
414
  }
450
415
  }
451
416
  }),
@@ -466,7 +431,7 @@ export class IntelligentCompletionsController extends BaseAIMonacoEditorControll
466
431
  autorunWithStoreHandleChanges(
467
432
  {
468
433
  createEmptyChangeSummary: () => ({}),
469
- handleChange: (context) => {
434
+ handleChange: (context, changeSummary) => {
470
435
  if (context.didChange(this.codeEditsSourceCollection.codeEditsContextBean)) {
471
436
  // 如果上一次补全结果还在,则不重复请求
472
437
  const isVisible = this.aiNativeContextKey.multiLineEditsIsVisible.get();
@@ -1,6 +1,5 @@
1
1
  import { Injectable } from '@opensumi/di';
2
2
  import { Disposable } from '@opensumi/ide-core-common';
3
- import { InlineEditProvider } from '@opensumi/ide-monaco';
4
3
 
5
4
  import { ICodeEditsProvider, IIntelligentCompletionProvider, IIntelligentCompletionsRegistry } from '../../types';
6
5
 
@@ -8,7 +7,6 @@ import { ICodeEditsProvider, IIntelligentCompletionProvider, IIntelligentComplet
8
7
  export class IntelligentCompletionsRegistry extends Disposable implements IIntelligentCompletionsRegistry {
9
8
  private inlineCompletionsProvider: IIntelligentCompletionProvider | undefined;
10
9
  private codeEditsProvider: ICodeEditsProvider | undefined;
11
- private inlineEditProvider: InlineEditProvider | undefined;
12
10
 
13
11
  registerIntelligentCompletionProvider(provider: IIntelligentCompletionProvider): void {
14
12
  this.inlineCompletionsProvider = provider;
@@ -18,10 +16,6 @@ export class IntelligentCompletionsRegistry extends Disposable implements IIntel
18
16
  this.inlineCompletionsProvider = provider;
19
17
  }
20
18
 
21
- registerInlineEditProvider(provider: InlineEditProvider): void {
22
- this.inlineEditProvider = provider;
23
- }
24
-
25
19
  registerCodeEditsProvider(provider: ICodeEditsProvider): void {
26
20
  this.codeEditsProvider = provider;
27
21
  }
@@ -33,9 +27,4 @@ export class IntelligentCompletionsRegistry extends Disposable implements IIntel
33
27
  getCodeEditsProvider(): ICodeEditsProvider | undefined {
34
28
  return this.codeEditsProvider;
35
29
  }
36
-
37
- getInlineEditProvider(): InlineEditProvider | undefined {
38
- // TODO: 支持模块内调用
39
- return this.inlineEditProvider;
40
- }
41
30
  }
@@ -7,6 +7,7 @@ import {
7
7
  Disposable,
8
8
  IAIReporter,
9
9
  IDisposable,
10
+ MaybePromise,
10
11
  uuid,
11
12
  } from '@opensumi/ide-core-common';
12
13
  import { CancellationTokenSource, ICodeEditor } from '@opensumi/ide-monaco';
@@ -36,26 +37,14 @@ export class CodeEditsContextBean extends Disposable {
36
37
  return this.raw;
37
38
  }
38
39
 
39
- public get typing() {
40
- return this.raw.typing;
41
- }
42
-
43
40
  public get position() {
44
41
  return this.raw.position;
45
42
  }
46
43
 
47
- public get data() {
48
- return this.raw.data;
49
- }
50
-
51
44
  public get token() {
52
45
  return this.source.token;
53
46
  }
54
47
 
55
- public joinData(data: ICodeEditsContextBean['data']) {
56
- this.raw.data = { ...this.data, ...data };
57
- }
58
-
59
48
  public reporterStart() {
60
49
  return this.source.reporterStart();
61
50
  }
@@ -72,14 +61,16 @@ export class CodeEditsContextBean extends Disposable {
72
61
  @Injectable({ multiple: true })
73
62
  export abstract class BaseCodeEditsSource extends Disposable {
74
63
  @Autowired(IAIReporter)
75
- private readonly aiReporter: IAIReporter;
64
+ private aiReporter: IAIReporter;
76
65
 
77
66
  @Autowired(PreferenceService)
78
- protected readonly preferenceService: PreferenceService;
67
+ protected preferenceService: PreferenceService;
79
68
 
80
69
  private cancellationTokenSource = new CancellationTokenSource();
81
70
  private readonly relationID = observableValue<string | undefined>(this, undefined);
82
71
 
72
+ protected abstract doTrigger(...args: any[]): MaybePromise<void>;
73
+
83
74
  public readonly codeEditsContextBean = disposableObservableValue<CodeEditsContextBean | undefined>(this, undefined);
84
75
  public abstract priority: number;
85
76
  public abstract mount(): IDisposable;
@@ -109,9 +100,9 @@ export abstract class BaseCodeEditsSource extends Disposable {
109
100
  });
110
101
  }
111
102
 
112
- protected setBean(bean: Omit<ICodeEditsContextBean, 'position'>) {
103
+ protected setBean(bean: ICodeEditsContextBean) {
113
104
  transaction((tx) => {
114
- const context = new CodeEditsContextBean({ ...bean, position: this.monacoEditor.getPosition()! }, this);
105
+ const context = new CodeEditsContextBean(bean, this);
115
106
  this.codeEditsContextBean.set(context, tx);
116
107
  });
117
108
  }
@@ -121,7 +112,7 @@ export abstract class BaseCodeEditsSource extends Disposable {
121
112
  if (context) {
122
113
  const relationID = this.aiReporter.start(AIServiceType.CodeEdits, {
123
114
  type: AIServiceType.CodeEdits,
124
- actionSource: context?.typing,
115
+ actionSource: context?.bean.typing,
125
116
  });
126
117
 
127
118
  transaction((tx) => {
@@ -143,26 +134,21 @@ export class CodeEditsSourceCollection extends Disposable {
143
134
  @Autowired(INJECTOR_TOKEN)
144
135
  private readonly injector: Injector;
145
136
 
146
- private sources: BaseCodeEditsSource[] = [];
147
137
  public readonly codeEditsContextBean = disposableObservableValue<CodeEditsContextBean | undefined>(this, undefined);
148
138
 
149
- public getSource(source: ConstructorOf<BaseCodeEditsSource>): BaseCodeEditsSource | undefined {
150
- return this.sources.find((s) => s instanceof source);
151
- }
152
-
153
139
  constructor(
154
140
  private readonly constructorSources: ConstructorOf<BaseCodeEditsSource>[],
155
141
  private readonly monacoEditor: ICodeEditor,
156
142
  ) {
157
143
  super();
158
144
 
159
- this.sources = this.constructorSources.map((source) => this.injector.get(source, [this.monacoEditor]));
145
+ const sources = this.constructorSources.map((source) => this.injector.get(source, [this.monacoEditor]));
160
146
 
161
- this.sources.forEach((source) => this.addDispose(source.mount()));
147
+ sources.forEach((source) => this.addDispose(source.mount()));
162
148
 
163
149
  // 观察所有 source 的 codeEditsContextBean
164
150
  const observerCodeEditsContextBean = derived((reader) => ({
165
- codeEditsContextBean: new Map(this.sources.map((source) => [source, source.codeEditsContextBean.read(reader)])),
151
+ codeEditsContextBean: new Map(sources.map((source) => [source, source.codeEditsContextBean.read(reader)])),
166
152
  }));
167
153
 
168
154
  this.addDispose(
@@ -171,7 +157,7 @@ export class CodeEditsSourceCollection extends Disposable {
171
157
  debouncedObservable2(observerCodeEditsContextBean, 0),
172
158
  ({ lastValue, newValue }) => {
173
159
  // 只拿最新的订阅值,如果 uid 相同,表示该值没有变化,就不用往下通知了
174
- const lastSources = this.sources.filter((source) => {
160
+ const lastSources = sources.filter((source) => {
175
161
  const newBean = newValue?.codeEditsContextBean.get(source);
176
162
  const lastBean = lastValue?.codeEditsContextBean?.get(source);
177
163
  return newBean && (!lastBean || newBean.uid !== lastBean.uid);
@@ -182,26 +168,15 @@ export class CodeEditsSourceCollection extends Disposable {
182
168
 
183
169
  for (const source of lastSources) {
184
170
  const value = source.codeEditsContextBean.get();
185
- if (!value) {
186
- return;
187
- }
188
171
 
189
- if (!contextBean) {
190
- contextBean = value;
191
- }
192
-
193
- if (value.priority >= highestPriority) {
172
+ if (value && value.priority >= highestPriority) {
194
173
  highestPriority = value.priority;
195
-
196
- value.joinData(contextBean.data);
197
174
  contextBean = value;
198
175
  }
199
-
200
- // 将多个 source 的 data 合并到一起
201
- contextBean.joinData(value.data);
202
176
  }
203
177
 
204
178
  transaction((tx) => {
179
+ // 只通知最高优先级的结果
205
180
  this.codeEditsContextBean.set(contextBean, tx);
206
181
  });
207
182
  },