@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.
- package/lib/browser/ai-core.contextkeys.d.ts +1 -1
- package/lib/browser/ai-core.contextkeys.d.ts.map +1 -1
- package/lib/browser/ai-core.contextkeys.js +1 -1
- package/lib/browser/ai-core.contextkeys.js.map +1 -1
- package/lib/browser/ai-core.contribution.d.ts +0 -5
- package/lib/browser/ai-core.contribution.d.ts.map +1 -1
- package/lib/browser/ai-core.contribution.js +9 -71
- package/lib/browser/ai-core.contribution.js.map +1 -1
- package/lib/browser/chat/chat-agent.service.d.ts +3 -11
- package/lib/browser/chat/chat-agent.service.d.ts.map +1 -1
- package/lib/browser/chat/chat-agent.service.js +5 -43
- package/lib/browser/chat/chat-agent.service.js.map +1 -1
- package/lib/browser/chat/chat-manager.service.d.ts +0 -1
- package/lib/browser/chat/chat-manager.service.d.ts.map +1 -1
- package/lib/browser/chat/chat-manager.service.js +8 -6
- package/lib/browser/chat/chat-manager.service.js.map +1 -1
- package/lib/browser/chat/chat-model.d.ts +1 -4
- package/lib/browser/chat/chat-model.d.ts.map +1 -1
- package/lib/browser/chat/chat-model.js +2 -57
- package/lib/browser/chat/chat-model.js.map +1 -1
- package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
- package/lib/browser/chat/chat-proxy.service.js +6 -13
- package/lib/browser/chat/chat-proxy.service.js.map +1 -1
- package/lib/browser/chat/chat.api.service.d.ts +2 -1
- package/lib/browser/chat/chat.api.service.d.ts.map +1 -1
- package/lib/browser/chat/chat.api.service.js +4 -0
- package/lib/browser/chat/chat.api.service.js.map +1 -1
- package/lib/browser/chat/chat.internal.service.d.ts +0 -2
- package/lib/browser/chat/chat.internal.service.d.ts.map +1 -1
- package/lib/browser/chat/chat.internal.service.js +0 -3
- package/lib/browser/chat/chat.internal.service.js.map +1 -1
- package/lib/browser/chat/chat.module.less +2 -1
- package/lib/browser/chat/chat.view.d.ts.map +1 -1
- package/lib/browser/chat/chat.view.js +29 -46
- package/lib/browser/chat/chat.view.js.map +1 -1
- package/lib/browser/components/ChatContext/index.js +2 -2
- package/lib/browser/components/ChatContext/index.js.map +1 -1
- package/lib/browser/components/ChatInput.d.ts.map +1 -1
- package/lib/browser/components/ChatInput.js +1 -29
- package/lib/browser/components/ChatInput.js.map +1 -1
- package/lib/browser/components/ChatReply.js +1 -6
- package/lib/browser/components/ChatReply.js.map +1 -1
- package/lib/browser/components/ChatThinking.d.ts +2 -0
- package/lib/browser/components/ChatThinking.d.ts.map +1 -1
- package/lib/browser/components/ChatThinking.js +10 -2
- package/lib/browser/components/ChatThinking.js.map +1 -1
- package/lib/browser/components/ChatToolRender.d.ts.map +1 -1
- package/lib/browser/components/ChatToolRender.js +3 -2
- package/lib/browser/components/ChatToolRender.js.map +1 -1
- package/lib/browser/components/WelcomeMsg.js +1 -1
- package/lib/browser/components/WelcomeMsg.js.map +1 -1
- package/lib/browser/components/chat-history.module.less +1 -2
- package/lib/browser/components/components.module.less +0 -22
- package/lib/browser/context/llm-context.service.d.ts +5 -18
- package/lib/browser/context/llm-context.service.d.ts.map +1 -1
- package/lib/browser/context/llm-context.service.js +47 -81
- package/lib/browser/context/llm-context.service.js.map +1 -1
- package/lib/browser/contrib/inline-completions/inline-completions.controller.js +1 -1
- package/lib/browser/contrib/inline-completions/inline-completions.controller.js.map +1 -1
- package/lib/browser/contrib/inline-completions/prompt/matcher.js +2 -2
- package/lib/browser/contrib/inline-completions/prompt/similarSnippets.d.ts +1 -1
- package/lib/browser/contrib/inline-completions/prompt/similarSnippets.js +2 -2
- package/lib/browser/contrib/intelligent-completions/index.d.ts +1 -2
- package/lib/browser/contrib/intelligent-completions/index.d.ts.map +1 -1
- package/lib/browser/contrib/intelligent-completions/index.js +1 -4
- package/lib/browser/contrib/intelligent-completions/index.js.map +1 -1
- package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.js +2 -2
- package/lib/browser/contrib/intelligent-completions/intelligent-completions.contribution.js.map +1 -1
- package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.d.ts.map +1 -1
- package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.js +5 -6
- package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.js.map +1 -1
- package/lib/browser/contrib/intelligent-completions/view/code-edits-previewer.d.ts.map +1 -1
- package/lib/browser/contrib/intelligent-completions/view/code-edits-previewer.js +2 -4
- package/lib/browser/contrib/intelligent-completions/view/code-edits-previewer.js.map +1 -1
- package/lib/browser/contrib/intelligent-completions/view/default.d.ts.map +1 -1
- package/lib/browser/contrib/intelligent-completions/view/default.js +11 -23
- package/lib/browser/contrib/intelligent-completions/view/default.js.map +1 -1
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +0 -4
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/layout/layout.module.less +4 -4
- package/lib/browser/mcp/base-apply.service.d.ts +11 -26
- package/lib/browser/mcp/base-apply.service.d.ts.map +1 -1
- package/lib/browser/mcp/base-apply.service.js +103 -255
- package/lib/browser/mcp/base-apply.service.js.map +1 -1
- package/lib/browser/mcp/mcp-server-proxy.service.d.ts +0 -6
- package/lib/browser/mcp/mcp-server-proxy.service.d.ts.map +1 -1
- package/lib/browser/mcp/mcp-server-proxy.service.js +1 -10
- package/lib/browser/mcp/mcp-server-proxy.service.js.map +1 -1
- package/lib/browser/mcp/mcp-server.feature.registry.d.ts +0 -8
- package/lib/browser/mcp/mcp-server.feature.registry.d.ts.map +1 -1
- package/lib/browser/mcp/mcp-server.feature.registry.js +3 -28
- package/lib/browser/mcp/mcp-server.feature.registry.js.map +1 -1
- package/lib/browser/mcp/tools/components/EditFile.d.ts.map +1 -1
- package/lib/browser/mcp/tools/components/EditFile.js +9 -15
- package/lib/browser/mcp/tools/components/EditFile.js.map +1 -1
- package/lib/browser/mcp/tools/components/SearchResult.d.ts +11 -0
- package/lib/browser/mcp/tools/components/SearchResult.d.ts.map +1 -0
- package/lib/browser/mcp/tools/components/{ExpandableFileList.js → SearchResult.js} +19 -29
- package/lib/browser/mcp/tools/components/SearchResult.js.map +1 -0
- package/lib/browser/mcp/tools/components/Terminal.d.ts.map +1 -1
- package/lib/browser/mcp/tools/components/Terminal.js +2 -10
- package/lib/browser/mcp/tools/components/Terminal.js.map +1 -1
- package/lib/browser/mcp/tools/components/index.module.less +0 -4
- package/lib/browser/mcp/tools/createNewFileWithText.d.ts +0 -1
- package/lib/browser/mcp/tools/createNewFileWithText.d.ts.map +1 -1
- package/lib/browser/mcp/tools/createNewFileWithText.js +11 -19
- package/lib/browser/mcp/tools/createNewFileWithText.js.map +1 -1
- package/lib/browser/mcp/tools/fileSearch.d.ts +0 -1
- package/lib/browser/mcp/tools/fileSearch.d.ts.map +1 -1
- package/lib/browser/mcp/tools/fileSearch.js +5 -14
- package/lib/browser/mcp/tools/fileSearch.js.map +1 -1
- package/lib/browser/mcp/tools/getDiagnosticsByPath.d.ts.map +1 -1
- package/lib/browser/mcp/tools/getDiagnosticsByPath.js +0 -1
- package/lib/browser/mcp/tools/getDiagnosticsByPath.js.map +1 -1
- package/lib/browser/mcp/tools/grepSearch.d.ts.map +1 -1
- package/lib/browser/mcp/tools/grepSearch.js +3 -6
- package/lib/browser/mcp/tools/grepSearch.js.map +1 -1
- package/lib/browser/mcp/tools/handlers/EditFile.js +1 -1
- package/lib/browser/mcp/tools/handlers/EditFile.js.map +1 -1
- package/lib/browser/mcp/tools/handlers/ListDir.d.ts +0 -1
- package/lib/browser/mcp/tools/handlers/ListDir.d.ts.map +1 -1
- package/lib/browser/mcp/tools/handlers/ListDir.js +0 -3
- package/lib/browser/mcp/tools/handlers/ListDir.js.map +1 -1
- package/lib/browser/mcp/tools/handlers/RunCommand.d.ts.map +1 -1
- package/lib/browser/mcp/tools/handlers/RunCommand.js +0 -2
- package/lib/browser/mcp/tools/handlers/RunCommand.js.map +1 -1
- package/lib/browser/mcp/tools/listDir.d.ts +0 -1
- package/lib/browser/mcp/tools/listDir.d.ts.map +1 -1
- package/lib/browser/mcp/tools/listDir.js +4 -35
- package/lib/browser/mcp/tools/listDir.js.map +1 -1
- package/lib/browser/mcp/tools/runTerminalCmd.d.ts.map +1 -1
- package/lib/browser/mcp/tools/runTerminalCmd.js +0 -1
- package/lib/browser/mcp/tools/runTerminalCmd.js.map +1 -1
- package/lib/browser/model/msg-history-manager.d.ts +2 -2
- package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
- package/lib/browser/model/msg-history-manager.js +10 -4
- package/lib/browser/model/msg-history-manager.js.map +1 -1
- package/lib/browser/preferences/schema.d.ts.map +1 -1
- package/lib/browser/preferences/schema.js +2 -22
- package/lib/browser/preferences/schema.js.map +1 -1
- package/lib/browser/types.d.ts +0 -4
- package/lib/browser/types.d.ts.map +1 -1
- package/lib/browser/widget/inline-chat/inline-chat-controller.d.ts.map +1 -1
- package/lib/browser/widget/inline-chat/inline-chat-controller.js +1 -6
- package/lib/browser/widget/inline-chat/inline-chat-controller.js.map +1 -1
- package/lib/browser/widget/inline-diff/inline-diff-manager.d.ts.map +1 -1
- package/lib/browser/widget/inline-diff/inline-diff-manager.js +8 -68
- package/lib/browser/widget/inline-diff/inline-diff-manager.js.map +1 -1
- package/lib/browser/widget/inline-diff/inline-diff-previewer.d.ts +4 -10
- package/lib/browser/widget/inline-diff/inline-diff-previewer.d.ts.map +1 -1
- package/lib/browser/widget/inline-diff/inline-diff-previewer.js +3 -14
- package/lib/browser/widget/inline-diff/inline-diff-previewer.js.map +1 -1
- package/lib/browser/widget/inline-diff/inline-diff-widget.module.less +4 -25
- package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts +3 -3
- package/lib/browser/widget/inline-diff/inline-diff.controller.d.ts.map +1 -1
- package/lib/browser/widget/inline-diff/inline-diff.controller.js +5 -10
- package/lib/browser/widget/inline-diff/inline-diff.controller.js.map +1 -1
- package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts +17 -46
- package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.d.ts.map +1 -1
- package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js +53 -110
- package/lib/browser/widget/inline-stream-diff/inline-stream-diff.handler.js.map +1 -1
- package/lib/browser/widget/inline-stream-diff/live-preview.decoration.d.ts +0 -4
- package/lib/browser/widget/inline-stream-diff/live-preview.decoration.d.ts.map +1 -1
- package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js +1 -26
- package/lib/browser/widget/inline-stream-diff/live-preview.decoration.js.map +1 -1
- package/lib/common/index.d.ts +4 -13
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +1 -5
- package/lib/common/index.js.map +1 -1
- package/lib/common/llm-context.d.ts +9 -13
- package/lib/common/llm-context.d.ts.map +1 -1
- package/lib/common/llm-context.js.map +1 -1
- package/lib/common/mcp-server-manager.d.ts +1 -17
- package/lib/common/mcp-server-manager.d.ts.map +1 -1
- package/lib/common/mcp-server-manager.js.map +1 -1
- package/lib/common/prompts/context-prompt-provider.d.ts +3 -4
- package/lib/common/prompts/context-prompt-provider.d.ts.map +1 -1
- package/lib/common/prompts/context-prompt-provider.js +22 -33
- package/lib/common/prompts/context-prompt-provider.js.map +1 -1
- package/lib/common/tool-invocation-registry.d.ts +2 -2
- package/lib/common/tool-invocation-registry.d.ts.map +1 -1
- package/lib/common/tool-invocation-registry.js +1 -1
- package/lib/common/tool-invocation-registry.js.map +1 -1
- package/lib/common/types.d.ts +0 -8
- package/lib/common/types.d.ts.map +1 -1
- package/lib/common/utils.d.ts.map +1 -1
- package/lib/common/utils.js +1 -2
- package/lib/common/utils.js.map +1 -1
- package/lib/node/anthropic/anthropic-language-model.d.ts +1 -3
- package/lib/node/anthropic/anthropic-language-model.d.ts.map +1 -1
- package/lib/node/anthropic/anthropic-language-model.js +2 -6
- package/lib/node/anthropic/anthropic-language-model.js.map +1 -1
- package/lib/node/base-language-model.d.ts +3 -6
- package/lib/node/base-language-model.d.ts.map +1 -1
- package/lib/node/base-language-model.js +31 -14
- package/lib/node/base-language-model.js.map +1 -1
- package/lib/node/deepseek/deepseek-language-model.d.ts +1 -3
- package/lib/node/deepseek/deepseek-language-model.d.ts.map +1 -1
- package/lib/node/deepseek/deepseek-language-model.js +2 -6
- package/lib/node/deepseek/deepseek-language-model.js.map +1 -1
- package/lib/node/mcp/sumi-mcp-server.d.ts +3 -17
- package/lib/node/mcp/sumi-mcp-server.d.ts.map +1 -1
- package/lib/node/mcp/sumi-mcp-server.js +6 -59
- package/lib/node/mcp/sumi-mcp-server.js.map +1 -1
- package/lib/node/mcp-server-manager-impl.d.ts +3 -4
- package/lib/node/mcp-server-manager-impl.d.ts.map +1 -1
- package/lib/node/mcp-server-manager-impl.js +6 -26
- package/lib/node/mcp-server-manager-impl.js.map +1 -1
- package/lib/node/mcp-server.d.ts +16 -5
- package/lib/node/mcp-server.d.ts.map +1 -1
- package/lib/node/mcp-server.js +6 -12
- package/lib/node/mcp-server.js.map +1 -1
- package/lib/node/openai/openai-language-model.d.ts +2 -4
- package/lib/node/openai/openai-language-model.d.ts.map +1 -1
- package/lib/node/openai/openai-language-model.js +4 -6
- package/lib/node/openai/openai-language-model.js.map +1 -1
- package/package.json +26 -27
- package/src/browser/ai-core.contextkeys.ts +3 -3
- package/src/browser/ai-core.contribution.ts +12 -89
- package/src/browser/chat/chat-agent.service.ts +9 -53
- package/src/browser/chat/chat-manager.service.ts +8 -10
- package/src/browser/chat/chat-model.ts +5 -63
- package/src/browser/chat/chat-proxy.service.ts +8 -16
- package/src/browser/chat/chat.api.service.ts +5 -1
- package/src/browser/chat/chat.internal.service.ts +0 -4
- package/src/browser/chat/chat.module.less +2 -1
- package/src/browser/chat/chat.view.tsx +69 -63
- package/src/browser/components/ChatContext/index.tsx +2 -2
- package/src/browser/components/ChatInput.tsx +6 -81
- package/src/browser/components/ChatReply.tsx +6 -6
- package/src/browser/components/ChatThinking.tsx +9 -3
- package/src/browser/components/ChatToolRender.tsx +2 -1
- package/src/browser/components/WelcomeMsg.tsx +1 -1
- package/src/browser/components/chat-history.module.less +1 -2
- package/src/browser/components/components.module.less +0 -22
- package/src/browser/context/llm-context.service.ts +54 -100
- package/src/browser/contrib/inline-completions/inline-completions.controller.ts +1 -1
- package/src/browser/contrib/inline-completions/prompt/matcher.ts +2 -2
- package/src/browser/contrib/inline-completions/prompt/similarSnippets.ts +2 -2
- package/src/browser/contrib/intelligent-completions/index.ts +1 -5
- package/src/browser/contrib/intelligent-completions/intelligent-completions.contribution.ts +3 -3
- package/src/browser/contrib/intelligent-completions/intelligent-completions.controller.ts +6 -7
- package/src/browser/contrib/intelligent-completions/view/code-edits-previewer.ts +2 -4
- package/src/browser/contrib/intelligent-completions/view/default.ts +19 -34
- package/src/browser/index.ts +0 -4
- package/src/browser/layout/layout.module.less +4 -4
- package/src/browser/mcp/base-apply.service.ts +109 -306
- package/src/browser/mcp/mcp-server-proxy.service.ts +2 -14
- package/src/browser/mcp/mcp-server.feature.registry.ts +4 -35
- package/src/browser/mcp/tools/components/EditFile.tsx +9 -16
- package/src/browser/mcp/tools/components/SearchResult.tsx +92 -0
- package/src/browser/mcp/tools/components/Terminal.tsx +2 -13
- package/src/browser/mcp/tools/components/index.module.less +0 -4
- package/src/browser/mcp/tools/createNewFileWithText.ts +12 -21
- package/src/browser/mcp/tools/fileSearch.ts +4 -14
- package/src/browser/mcp/tools/getDiagnosticsByPath.ts +0 -1
- package/src/browser/mcp/tools/grepSearch.ts +3 -6
- package/src/browser/mcp/tools/handlers/EditFile.ts +1 -1
- package/src/browser/mcp/tools/handlers/ListDir.ts +0 -4
- package/src/browser/mcp/tools/handlers/RunCommand.ts +0 -2
- package/src/browser/mcp/tools/listDir.ts +5 -36
- package/src/browser/mcp/tools/runTerminalCmd.ts +0 -1
- package/src/browser/model/msg-history-manager.ts +11 -5
- package/src/browser/preferences/schema.ts +2 -22
- package/src/browser/types.ts +0 -1
- package/src/browser/widget/inline-chat/inline-chat-controller.ts +1 -5
- package/src/browser/widget/inline-diff/inline-diff-manager.tsx +21 -143
- package/src/browser/widget/inline-diff/inline-diff-previewer.ts +7 -25
- package/src/browser/widget/inline-diff/inline-diff-widget.module.less +4 -25
- package/src/browser/widget/inline-diff/inline-diff.controller.ts +8 -16
- package/src/browser/widget/inline-stream-diff/inline-stream-diff.handler.tsx +68 -139
- package/src/browser/widget/inline-stream-diff/live-preview.decoration.tsx +1 -30
- package/src/common/index.ts +4 -15
- package/src/common/llm-context.ts +4 -10
- package/src/common/mcp-server-manager.ts +1 -17
- package/src/common/prompts/context-prompt-provider.ts +29 -38
- package/src/common/tool-invocation-registry.ts +2 -2
- package/src/common/types.ts +0 -8
- package/src/common/utils.ts +1 -3
- package/src/node/anthropic/anthropic-language-model.ts +2 -7
- package/src/node/base-language-model.ts +38 -25
- package/src/node/deepseek/deepseek-language-model.ts +2 -7
- package/src/node/mcp/sumi-mcp-server.ts +9 -67
- package/src/node/mcp-server-manager-impl.ts +9 -30
- package/src/node/mcp-server.ts +14 -11
- package/src/node/openai/openai-language-model.ts +4 -8
- package/lib/browser/mcp/config/components/mcp-config.module.less +0 -178
- package/lib/browser/mcp/config/components/mcp-config.view.d.ts +0 -3
- package/lib/browser/mcp/config/components/mcp-config.view.d.ts.map +0 -1
- package/lib/browser/mcp/config/components/mcp-config.view.js +0 -150
- package/lib/browser/mcp/config/components/mcp-config.view.js.map +0 -1
- package/lib/browser/mcp/config/components/mcp-server-form.d.ts +0 -16
- package/lib/browser/mcp/config/components/mcp-server-form.d.ts.map +0 -1
- package/lib/browser/mcp/config/components/mcp-server-form.js +0 -84
- package/lib/browser/mcp/config/components/mcp-server-form.js.map +0 -1
- package/lib/browser/mcp/config/components/mcp-server-form.module.less +0 -78
- package/lib/browser/mcp/config/mcp-config.commands.d.ts +0 -10
- package/lib/browser/mcp/config/mcp-config.commands.d.ts.map +0 -1
- package/lib/browser/mcp/config/mcp-config.commands.js +0 -35
- package/lib/browser/mcp/config/mcp-config.commands.js.map +0 -1
- package/lib/browser/mcp/config/mcp-config.contribution.d.ts +0 -16
- package/lib/browser/mcp/config/mcp-config.contribution.d.ts.map +0 -1
- package/lib/browser/mcp/config/mcp-config.contribution.js +0 -62
- package/lib/browser/mcp/config/mcp-config.contribution.js.map +0 -1
- package/lib/browser/mcp/tools/components/ExpandableFileList.d.ts +0 -13
- package/lib/browser/mcp/tools/components/ExpandableFileList.d.ts.map +0 -1
- package/lib/browser/mcp/tools/components/ExpandableFileList.js.map +0 -1
- package/lib/common/model.d.ts +0 -12
- package/lib/common/model.d.ts.map +0 -1
- package/lib/common/model.js +0 -83
- package/lib/common/model.js.map +0 -1
- package/lib/node/openai-compatible/openai-compatible-language-model.d.ts +0 -10
- package/lib/node/openai-compatible/openai-compatible-language-model.d.ts.map +0 -1
- package/lib/node/openai-compatible/openai-compatible-language-model.js +0 -32
- package/lib/node/openai-compatible/openai-compatible-language-model.js.map +0 -1
- package/src/browser/mcp/config/components/mcp-config.module.less +0 -178
- package/src/browser/mcp/config/components/mcp-config.view.tsx +0 -215
- package/src/browser/mcp/config/components/mcp-server-form.module.less +0 -78
- package/src/browser/mcp/config/components/mcp-server-form.tsx +0 -144
- package/src/browser/mcp/config/mcp-config.commands.ts +0 -29
- package/src/browser/mcp/config/mcp-config.contribution.ts +0 -65
- package/src/browser/mcp/tools/components/ExpandableFileList.tsx +0 -133
- package/src/common/model.ts +0 -90
- 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
|
-
|
|
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
|
|
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
|
-
{
|
|
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
|
-
<
|
|
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
|
|
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 {
|
|
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
|
|
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
|
|
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
|
-
|
|
51
|
-
|
|
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 =
|
|
57
|
-
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
37
|
+
addFileToContext(uri: URI, selection?: [number, number], isManual = true): void {
|
|
38
|
+
this.removeFileFromContext(uri);
|
|
60
39
|
|
|
61
|
-
|
|
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 (
|
|
66
|
-
this.
|
|
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.
|
|
79
|
-
this.
|
|
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
|
|
91
|
-
const
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
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
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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
|
-
.
|
|
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.
|
|
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
|
|
248
|
-
const score = this.similarityScore(
|
|
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 = (
|
|
18
|
+
export const getOpenedTabFileList = (documents: IEditorDocumentModel[]) => {
|
|
19
19
|
// 过滤超大文档
|
|
20
|
-
const recentFiles =
|
|
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
|
|
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 {
|
|
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:
|
|
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:
|
|
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 {
|
|
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([
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
54
|
+
this.aiNativeContextKey.multiLineEditsIsVisible.set(true);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
public hide() {
|
|
58
58
|
this.view?.hide();
|
|
59
|
-
this.aiNativeContextKey.
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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.
|
|
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(
|
|
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
|
|
package/src/browser/index.ts
CHANGED
|
@@ -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,
|