@opensumi/ide-ai-native 3.8.1-next-1741232004.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
|
@@ -69,14 +69,9 @@ export const aiNativePreferenceSchema: PreferenceSchema = {
|
|
|
69
69
|
[AINativeSettingSectionsId.LLMModelSelection]: {
|
|
70
70
|
type: 'string',
|
|
71
71
|
default: 'deepseek',
|
|
72
|
-
enum: ['deepseek', 'anthropic', 'openai'
|
|
72
|
+
enum: ['deepseek', 'anthropic', 'openai'],
|
|
73
73
|
description: localize('preference.ai.native.llm.model.selection.description'),
|
|
74
74
|
},
|
|
75
|
-
[AINativeSettingSectionsId.ModelID]: {
|
|
76
|
-
type: 'string',
|
|
77
|
-
default: 'deepseek-chat',
|
|
78
|
-
description: localize('preference.ai.native.llm.model.id'),
|
|
79
|
-
},
|
|
80
75
|
[AINativeSettingSectionsId.DeepseekApiKey]: {
|
|
81
76
|
type: 'string',
|
|
82
77
|
default: '',
|
|
@@ -113,27 +108,11 @@ export const aiNativePreferenceSchema: PreferenceSchema = {
|
|
|
113
108
|
type: 'string',
|
|
114
109
|
description: localize('preference.ai.native.mcp.servers.command.description'),
|
|
115
110
|
},
|
|
116
|
-
type: {
|
|
117
|
-
type: 'string',
|
|
118
|
-
enum: ['stdio', 'sse'],
|
|
119
|
-
enumDescriptions: [
|
|
120
|
-
localize('preference.ai.native.mcp.servers.type.stdio'),
|
|
121
|
-
localize('preference.ai.native.mcp.servers.type.sse'),
|
|
122
|
-
],
|
|
123
|
-
description: localize('preference.ai.native.mcp.servers.type.description'),
|
|
124
|
-
default: 'stdio',
|
|
125
|
-
},
|
|
126
|
-
enabled: {
|
|
127
|
-
type: 'boolean',
|
|
128
|
-
description: localize('preference.ai.native.mcp.servers.enabled.description'),
|
|
129
|
-
default: true,
|
|
130
|
-
},
|
|
131
111
|
args: {
|
|
132
112
|
type: 'array',
|
|
133
113
|
items: {
|
|
134
114
|
type: 'string',
|
|
135
115
|
},
|
|
136
|
-
default: [],
|
|
137
116
|
description: localize('preference.ai.native.mcp.servers.args.description'),
|
|
138
117
|
},
|
|
139
118
|
env: {
|
|
@@ -153,6 +132,7 @@ export const aiNativePreferenceSchema: PreferenceSchema = {
|
|
|
153
132
|
},
|
|
154
133
|
[AINativeSettingSectionsId.SystemPrompt]: {
|
|
155
134
|
type: 'string',
|
|
135
|
+
default: '',
|
|
156
136
|
description: localize('preference.ai.native.chat.system.prompt.description'),
|
|
157
137
|
},
|
|
158
138
|
},
|
package/src/browser/types.ts
CHANGED
|
@@ -372,7 +372,6 @@ export interface IMCPServerToolComponentProps {
|
|
|
372
372
|
}
|
|
373
373
|
|
|
374
374
|
export interface IMCPServerRegistry {
|
|
375
|
-
activeMessageInfo: { messageId: string; sessionId: string };
|
|
376
375
|
registerMCPTool(tool: MCPToolDefinition): void;
|
|
377
376
|
getMCPTools(): MCPToolDefinition[];
|
|
378
377
|
getMCPTool(name: string): MCPToolDefinition | undefined;
|
|
@@ -83,11 +83,7 @@ export class InlineChatController {
|
|
|
83
83
|
this._onData.fire(reply);
|
|
84
84
|
},
|
|
85
85
|
onEnd: () => {
|
|
86
|
-
|
|
87
|
-
this._onError.fire(new ErrorResponse(new Error('No content')));
|
|
88
|
-
} else {
|
|
89
|
-
this._onEnd.fire();
|
|
90
|
-
}
|
|
86
|
+
this._onEnd.fire();
|
|
91
87
|
},
|
|
92
88
|
onError: (error) => {
|
|
93
89
|
if (AbortError.is(error)) {
|
|
@@ -1,160 +1,38 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { IResource
|
|
6
|
-
import { Path } from '@opensumi/ide-utils/lib/path';
|
|
3
|
+
import { Button } from '@opensumi/ide-components';
|
|
4
|
+
import { localize, useInjectable } from '@opensumi/ide-core-browser';
|
|
5
|
+
import { IResource } from '@opensumi/ide-editor';
|
|
7
6
|
|
|
8
7
|
import { BaseApplyService } from '../../mcp/base-apply.service';
|
|
9
8
|
|
|
10
9
|
import styles from './inline-diff-widget.module.less';
|
|
11
10
|
|
|
12
|
-
const IconWithPopover = (props: {
|
|
13
|
-
icon: string;
|
|
14
|
-
content: string;
|
|
15
|
-
id: string;
|
|
16
|
-
onClick?: () => void;
|
|
17
|
-
disabled?: boolean;
|
|
18
|
-
}) => (
|
|
19
|
-
<Popover content={props.content} id={props.id} onClick={props.onClick}>
|
|
20
|
-
<Icon iconClass={props.icon} className={props.disabled ? styles.disabled : ''} />
|
|
21
|
-
</Popover>
|
|
22
|
-
);
|
|
23
|
-
|
|
24
11
|
export const InlineDiffManager: React.FC<{ resource: IResource }> = (props) => {
|
|
25
|
-
const { resource } = props;
|
|
26
12
|
const applyService = useInjectable<BaseApplyService>(BaseApplyService);
|
|
27
|
-
const editorService = useInjectable<WorkbenchEditorService>(WorkbenchEditorService);
|
|
28
|
-
const appConfig = useInjectable<AppConfig>(AppConfig);
|
|
29
13
|
const [show, setShow] = useState(true);
|
|
30
|
-
const [changesCount, setChangesCount] = useState(0);
|
|
31
|
-
const [currentChangeIndex, setCurrentChangeIndex] = useState(0);
|
|
32
|
-
const [filePaths, setFilePaths] = useState<string[]>(applyService.getPendingPaths());
|
|
33
|
-
|
|
34
|
-
const currentFilePath = useMemo(
|
|
35
|
-
() => path.relative(appConfig.workspaceDir, resource.uri.path.toString()),
|
|
36
|
-
[resource],
|
|
37
|
-
);
|
|
38
|
-
|
|
39
14
|
useEffect(() => {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
setShow(codeBlock.status === 'pending');
|
|
43
|
-
}
|
|
44
|
-
const pendingPaths = applyService.getPendingPaths();
|
|
45
|
-
setFilePaths(pendingPaths);
|
|
15
|
+
applyService.onCodeBlockUpdate((codeBlock) => {
|
|
16
|
+
setShow(codeBlock.status === 'pending');
|
|
46
17
|
});
|
|
47
|
-
return () => {
|
|
48
|
-
toDispose.dispose();
|
|
49
|
-
};
|
|
50
18
|
}, []);
|
|
51
|
-
|
|
52
|
-
// 不同编辑器是不同实例,所以不需要监听
|
|
53
|
-
const decorationModelService = applyService.currentPreviewer?.getNode()?.livePreviewDiffDecorationModel;
|
|
54
|
-
|
|
55
|
-
useEffect(() => {
|
|
56
|
-
let toDispose: IDisposable | undefined;
|
|
57
|
-
if (decorationModelService) {
|
|
58
|
-
setChangesCount(decorationModelService.partialEditWidgetCount);
|
|
59
|
-
toDispose = decorationModelService.onPartialEditWidgetListChange((e) => {
|
|
60
|
-
setChangesCount(e.filter((item) => item.status === 'pending').length);
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
return () => {
|
|
64
|
-
toDispose?.dispose();
|
|
65
|
-
};
|
|
66
|
-
}, [decorationModelService]);
|
|
67
|
-
|
|
68
|
-
const handleSiblingChange = useCallback(
|
|
69
|
-
(direction: 'up' | 'down') => {
|
|
70
|
-
const index = decorationModelService?.revealSiblingChange(direction);
|
|
71
|
-
if (index !== undefined) {
|
|
72
|
-
setCurrentChangeIndex(index);
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
[decorationModelService],
|
|
76
|
-
);
|
|
77
|
-
|
|
78
|
-
const handleSiblingFile = useCallback(
|
|
79
|
-
(direction: 'up' | 'down') => {
|
|
80
|
-
const index = filePaths.indexOf(currentFilePath!);
|
|
81
|
-
if (index === -1) {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
const uri = URI.file(path.join(appConfig.workspaceDir, filePaths[index + (direction === 'up' ? -1 : 1)]));
|
|
85
|
-
editorService.open(uri);
|
|
86
|
-
},
|
|
87
|
-
[currentFilePath, filePaths],
|
|
88
|
-
);
|
|
89
|
-
|
|
90
|
-
const changeTip = useMemo(() => {
|
|
91
|
-
if (changesCount === 0) {
|
|
92
|
-
return '';
|
|
93
|
-
}
|
|
94
|
-
return ` ${currentChangeIndex + 1} of ${changesCount}`;
|
|
95
|
-
}, [changesCount, currentChangeIndex]);
|
|
96
|
-
|
|
97
|
-
const fileTip = useMemo(() => {
|
|
98
|
-
if (!currentFilePath) {
|
|
99
|
-
return '';
|
|
100
|
-
}
|
|
101
|
-
return ` ${filePaths.indexOf(currentFilePath) + 1} of ${filePaths.length}`;
|
|
102
|
-
}, [currentFilePath, filePaths]);
|
|
103
|
-
|
|
104
19
|
return (
|
|
105
20
|
<div className={styles.inlineDiffManager} style={{ display: show ? 'flex' : 'none' }}>
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
<IconWithPopover
|
|
122
|
-
icon='codicon codicon-close'
|
|
123
|
-
onClick={() => applyService.processAll(props.resource.uri, 'reject')}
|
|
124
|
-
content={localize('aiNative.inlineDiff.rejectAll')}
|
|
125
|
-
id='inline-diff-manager-reject-all'
|
|
126
|
-
/>
|
|
127
|
-
<IconWithPopover
|
|
128
|
-
icon='codicon codicon-arrow-up'
|
|
129
|
-
content={localize('aiNative.inlineDiff.up') + changeTip}
|
|
130
|
-
id='inline-diff-manager-up'
|
|
131
|
-
disabled={currentChangeIndex === 0}
|
|
132
|
-
onClick={() => handleSiblingChange('up')}
|
|
133
|
-
/>
|
|
134
|
-
<IconWithPopover
|
|
135
|
-
icon='codicon codicon-arrow-down'
|
|
136
|
-
content={localize('aiNative.inlineDiff.down') + changeTip}
|
|
137
|
-
id='inline-diff-manager-down'
|
|
138
|
-
disabled={currentChangeIndex === changesCount - 1}
|
|
139
|
-
onClick={() => handleSiblingChange('down')}
|
|
140
|
-
/>
|
|
141
|
-
</div>
|
|
142
|
-
<div className={styles.right}>
|
|
143
|
-
<IconWithPopover
|
|
144
|
-
icon='codicon codicon-arrow-left'
|
|
145
|
-
onClick={() => handleSiblingFile('up')}
|
|
146
|
-
disabled={filePaths.length === 0 || filePaths[0] === currentFilePath}
|
|
147
|
-
content={localize('aiNative.inlineDiff.left') + fileTip}
|
|
148
|
-
id='inline-diff-manager-left'
|
|
149
|
-
/>
|
|
150
|
-
<IconWithPopover
|
|
151
|
-
icon='codicon codicon-arrow-right'
|
|
152
|
-
onClick={() => handleSiblingFile('down')}
|
|
153
|
-
disabled={filePaths.length === 0 || filePaths[filePaths.length - 1] === currentFilePath}
|
|
154
|
-
content={localize('aiNative.inlineDiff.right') + fileTip}
|
|
155
|
-
id='inline-diff-manager-right'
|
|
156
|
-
/>
|
|
157
|
-
</div>
|
|
21
|
+
<Button
|
|
22
|
+
onClick={() => {
|
|
23
|
+
applyService.processAll(props.resource.uri, 'accept');
|
|
24
|
+
}}
|
|
25
|
+
>
|
|
26
|
+
{localize('aiNative.inlineDiff.acceptAll')}
|
|
27
|
+
</Button>
|
|
28
|
+
<Button
|
|
29
|
+
type='ghost'
|
|
30
|
+
onClick={() => {
|
|
31
|
+
applyService.processAll(props.resource.uri, 'reject');
|
|
32
|
+
}}
|
|
33
|
+
>
|
|
34
|
+
{localize('aiNative.inlineDiff.rejectAll')}
|
|
35
|
+
</Button>
|
|
158
36
|
</div>
|
|
159
37
|
);
|
|
160
38
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Autowired, INJECTOR_TOKEN, Injectable, Injector } from '@opensumi/di';
|
|
2
2
|
import { Disposable, ErrorResponse, IDisposable, ReplyResponse } from '@opensumi/ide-core-common';
|
|
3
|
-
import { WorkbenchEditorService } from '@opensumi/ide-editor';
|
|
4
3
|
import { EOL, ICodeEditor, IPosition, ITextModel, Position, Selection } from '@opensumi/ide-monaco';
|
|
5
4
|
import { ContentWidgetPositionPreference } from '@opensumi/ide-monaco/lib/browser/monaco-exports/editor';
|
|
6
5
|
import { empty, getLeadingWhitespace } from '@opensumi/ide-utils/lib/strings';
|
|
@@ -15,12 +14,7 @@ import {
|
|
|
15
14
|
|
|
16
15
|
import { EResultKind } from '../inline-chat/inline-chat.service';
|
|
17
16
|
import { AIInlineContentWidget } from '../inline-chat/inline-content-widget';
|
|
18
|
-
import {
|
|
19
|
-
BaseInlineStreamDiffHandler,
|
|
20
|
-
EComputerMode,
|
|
21
|
-
InlineStreamDiffHandler,
|
|
22
|
-
ReverseInlineStreamDiffHandler,
|
|
23
|
-
} from '../inline-stream-diff/inline-stream-diff.handler';
|
|
17
|
+
import { EComputerMode, InlineStreamDiffHandler } from '../inline-stream-diff/inline-stream-diff.handler';
|
|
24
18
|
|
|
25
19
|
import { InlineDiffWidget } from './inline-diff-widget';
|
|
26
20
|
|
|
@@ -35,11 +29,6 @@ export interface IDiffPreviewerOptions {
|
|
|
35
29
|
* 默认情况下,removed widget 会在 `runWhenIdle` 内被添加,如果需要立即添加,可以设置为 true
|
|
36
30
|
*/
|
|
37
31
|
renderRemovedWidgetImmediately?: boolean;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* 是否为回退模式,即 setValue 内容作为 original,编辑器 getValue 内容作为 modified
|
|
41
|
-
*/
|
|
42
|
-
reverse?: boolean;
|
|
43
32
|
}
|
|
44
33
|
|
|
45
34
|
export interface IInlineDiffPreviewerNode extends IDisposable {
|
|
@@ -52,8 +41,6 @@ export abstract class BaseInlineDiffPreviewer<N extends IInlineDiffPreviewerNode
|
|
|
52
41
|
@Autowired(INJECTOR_TOKEN)
|
|
53
42
|
protected readonly injector: Injector;
|
|
54
43
|
|
|
55
|
-
@Autowired(WorkbenchEditorService)
|
|
56
|
-
protected readonly editorService: WorkbenchEditorService;
|
|
57
44
|
protected inlineContentWidget: AIInlineContentWidget | null = null;
|
|
58
45
|
protected selection: Selection;
|
|
59
46
|
protected model: ITextModel;
|
|
@@ -137,7 +124,7 @@ export abstract class BaseInlineDiffPreviewer<N extends IInlineDiffPreviewerNode
|
|
|
137
124
|
return Disposable.NULL;
|
|
138
125
|
}
|
|
139
126
|
|
|
140
|
-
protected abstract createNode(
|
|
127
|
+
protected abstract createNode(): N;
|
|
141
128
|
abstract onData(data: ReplyResponse): void;
|
|
142
129
|
abstract handleAction(action: EResultKind): void;
|
|
143
130
|
abstract getPosition(): IPosition;
|
|
@@ -149,7 +136,7 @@ export abstract class BaseInlineDiffPreviewer<N extends IInlineDiffPreviewerNode
|
|
|
149
136
|
},
|
|
150
137
|
): void {
|
|
151
138
|
this.selection = selection;
|
|
152
|
-
this.node = this.createNode(
|
|
139
|
+
this.node = this.createNode();
|
|
153
140
|
this.node.setPreviewerOptions(options);
|
|
154
141
|
}
|
|
155
142
|
|
|
@@ -324,8 +311,8 @@ export class SideBySideInlineDiffWidget extends BaseInlineDiffPreviewer<InlineDi
|
|
|
324
311
|
}
|
|
325
312
|
|
|
326
313
|
@Injectable({ multiple: true })
|
|
327
|
-
export class LiveInlineDiffPreviewer extends BaseInlineDiffPreviewer<
|
|
328
|
-
private listenNode(node:
|
|
314
|
+
export class LiveInlineDiffPreviewer extends BaseInlineDiffPreviewer<InlineStreamDiffHandler> {
|
|
315
|
+
private listenNode(node: InlineStreamDiffHandler): void {
|
|
329
316
|
node.addDispose(node.onDidEditChange(() => this.layout()));
|
|
330
317
|
node.addDispose(
|
|
331
318
|
node.onPartialEditWidgetListChange((widgets) => {
|
|
@@ -344,13 +331,8 @@ export class LiveInlineDiffPreviewer extends BaseInlineDiffPreviewer<BaseInlineS
|
|
|
344
331
|
this.addDispose(node);
|
|
345
332
|
}
|
|
346
333
|
|
|
347
|
-
createNode(
|
|
348
|
-
|
|
349
|
-
if (reverse) {
|
|
350
|
-
node = this.injector.get(ReverseInlineStreamDiffHandler, [this.monacoEditor]);
|
|
351
|
-
} else {
|
|
352
|
-
node = this.injector.get(InlineStreamDiffHandler, [this.monacoEditor]);
|
|
353
|
-
}
|
|
334
|
+
createNode(): InlineStreamDiffHandler {
|
|
335
|
+
const node = this.injector.get(InlineStreamDiffHandler, [this.monacoEditor]);
|
|
354
336
|
node.initialize(this.selection);
|
|
355
337
|
this.listenNode(node);
|
|
356
338
|
return node;
|
|
@@ -22,33 +22,12 @@
|
|
|
22
22
|
|
|
23
23
|
.inlineDiffManager {
|
|
24
24
|
display: flex;
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
padding: 12px 16px;
|
|
26
|
+
justify-content: center;
|
|
27
27
|
position: absolute;
|
|
28
|
-
bottom:
|
|
28
|
+
bottom: 0;
|
|
29
29
|
left: 50%;
|
|
30
30
|
transform: translateX(-50%);
|
|
31
|
-
|
|
31
|
+
gap: 12px;
|
|
32
32
|
z-index: 999;
|
|
33
|
-
> div {
|
|
34
|
-
display: flex;
|
|
35
|
-
align-items: center;
|
|
36
|
-
}
|
|
37
|
-
.mid {
|
|
38
|
-
border-right: 1px solid var(--design-borderColor);
|
|
39
|
-
}
|
|
40
|
-
:global(.codicon) {
|
|
41
|
-
font-size: 16px;
|
|
42
|
-
padding: 6px;
|
|
43
|
-
color: var(--kt-primaryButton-foreground);
|
|
44
|
-
background-color: var(--kt-primaryButton-hoverBackground);
|
|
45
|
-
&:hover {
|
|
46
|
-
background-color: var(--kt-primaryButton-background);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
.disabled {
|
|
51
|
-
color: var(--kt-button-disableForeground) !important;
|
|
52
|
-
background-color: var(--kt-button-disableBackground) !important;
|
|
53
|
-
cursor: not-allowed;
|
|
54
33
|
}
|
|
@@ -3,7 +3,6 @@ import {
|
|
|
3
3
|
AINativeSettingSectionsId,
|
|
4
4
|
ChatResponse,
|
|
5
5
|
Disposable,
|
|
6
|
-
DisposableCollection,
|
|
7
6
|
Emitter,
|
|
8
7
|
Event,
|
|
9
8
|
IDisposable,
|
|
@@ -24,7 +23,7 @@ import { BaseAIMonacoEditorController } from '../../contrib/base';
|
|
|
24
23
|
import { EInlineDiffPreviewMode } from '../../preferences/schema';
|
|
25
24
|
import { InlineChatController } from '../inline-chat/inline-chat-controller';
|
|
26
25
|
import { EResultKind } from '../inline-chat/inline-chat.service';
|
|
27
|
-
import {
|
|
26
|
+
import { InlineStreamDiffHandler } from '../inline-stream-diff/inline-stream-diff.handler';
|
|
28
27
|
|
|
29
28
|
import {
|
|
30
29
|
BaseInlineDiffPreviewer,
|
|
@@ -34,7 +33,7 @@ import {
|
|
|
34
33
|
} from './inline-diff-previewer';
|
|
35
34
|
import { InlineDiffWidget } from './inline-diff-widget';
|
|
36
35
|
|
|
37
|
-
type IInlineDiffPreviewer = BaseInlineDiffPreviewer<InlineDiffWidget |
|
|
36
|
+
type IInlineDiffPreviewer = BaseInlineDiffPreviewer<InlineDiffWidget | InlineStreamDiffHandler>;
|
|
38
37
|
|
|
39
38
|
export class InlineDiffController extends BaseAIMonacoEditorController {
|
|
40
39
|
public static readonly ID = 'editor.contrib.ai.inline.diff';
|
|
@@ -119,26 +118,28 @@ export class InlineDiffController extends BaseAIMonacoEditorController {
|
|
|
119
118
|
chatResponse?: ChatResponse | InlineChatController;
|
|
120
119
|
previewerOptions?: IDiffPreviewerOptions;
|
|
121
120
|
},
|
|
122
|
-
): BaseInlineDiffPreviewer<InlineDiffWidget |
|
|
121
|
+
): BaseInlineDiffPreviewer<InlineDiffWidget | InlineStreamDiffHandler> {
|
|
123
122
|
const { crossSelection, chatResponse } = options;
|
|
124
123
|
|
|
125
124
|
const disposable = new Disposable();
|
|
126
125
|
|
|
127
126
|
const previewer = this.createDiffPreviewer(monacoEditor, crossSelection, options.previewerOptions);
|
|
127
|
+
transaction((tx) => {
|
|
128
|
+
this.currentPreviewer.set(previewer, tx);
|
|
129
|
+
this.previewerStore.set(previewer.modelId, previewer);
|
|
130
|
+
});
|
|
128
131
|
|
|
129
132
|
const onFinish = () => {
|
|
130
133
|
previewer.layout();
|
|
131
134
|
disposable.dispose();
|
|
132
135
|
};
|
|
133
136
|
|
|
134
|
-
const previewerDisposable = new DisposableCollection();
|
|
135
|
-
|
|
136
137
|
disposable.addDispose(
|
|
137
138
|
previewer.onReady(() => {
|
|
138
139
|
if (InlineChatController.is(chatResponse)) {
|
|
139
140
|
const controller = chatResponse as InlineChatController;
|
|
140
141
|
|
|
141
|
-
|
|
142
|
+
disposable.addDispose([
|
|
142
143
|
controller.onData((data) => {
|
|
143
144
|
if (ReplyResponse.is(data)) {
|
|
144
145
|
this.renderDiff(previewer, data);
|
|
@@ -166,10 +167,6 @@ export class InlineDiffController extends BaseAIMonacoEditorController {
|
|
|
166
167
|
}),
|
|
167
168
|
);
|
|
168
169
|
|
|
169
|
-
previewer.onDispose(() => {
|
|
170
|
-
previewerDisposable.dispose();
|
|
171
|
-
});
|
|
172
|
-
disposable.addDispose(previewerDisposable);
|
|
173
170
|
previewer.layout();
|
|
174
171
|
return previewer;
|
|
175
172
|
}
|
|
@@ -199,11 +196,6 @@ export class InlineDiffController extends BaseAIMonacoEditorController {
|
|
|
199
196
|
}),
|
|
200
197
|
);
|
|
201
198
|
|
|
202
|
-
transaction((tx) => {
|
|
203
|
-
this.currentPreviewer.set(previewer, tx);
|
|
204
|
-
this.previewerStore.set(previewer.modelId, previewer);
|
|
205
|
-
});
|
|
206
|
-
|
|
207
199
|
return previewer;
|
|
208
200
|
}
|
|
209
201
|
|