@lvce-editor/static-server 0.77.4 → 0.77.6
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/config.json +1986 -1986
- package/package.json +1 -1
- package/static/{5be121a → 101c327}/css/App.css +201 -92
- package/static/{5be121a → 101c327}/manifest.json +2 -2
- package/static/{5be121a → 101c327}/packages/about-view-worker/dist/aboutWorkerMain.js +3 -3
- package/static/{5be121a → 101c327}/packages/chat-message-parsing-worker/dist/chatMessageParsingWorkerMain.js +105 -42
- package/static/{5be121a → 101c327}/packages/chat-storage-worker/dist/chatStorageWorkerMain.js +291 -35
- package/static/{5be121a → 101c327}/packages/chat-view/dist/chatViewWorkerMain.js +2014 -479
- package/static/{5be121a → 101c327}/packages/extension-host-worker/dist/extensionHostWorkerMain.js +3 -3
- package/static/{5be121a → 101c327}/packages/renderer-process/dist/rendererProcessMain.js +22 -9
- package/static/{5be121a → 101c327}/packages/renderer-process/package.json +1 -1
- package/static/{5be121a → 101c327}/packages/renderer-worker/dist/rendererWorkerMain.js +36 -4
- package/static/{5be121a → 101c327}/packages/status-bar-worker/dist/statusBarWorkerMain.js +22 -3
- package/static/{5be121a → 101c327}/packages/title-bar-worker/dist/titleBarWorkerMain.js +302 -159
- package/static/index.html +4 -4
- /package/static/{5be121a → 101c327}/config/colorTheme.json +0 -0
- /package/static/{5be121a → 101c327}/config/defaultSettings.json +0 -0
- /package/static/{5be121a → 101c327}/config/fileMap.json +0 -0
- /package/static/{5be121a → 101c327}/config/webExtensions.json +0 -0
- /package/static/{5be121a → 101c327}/css/parts/AdditionalDetails.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/Animation.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/BrowserScrollBar.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/Category.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/DebugButtons.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/DebugValue.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/E2eTest.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/E2eTests.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/EditorHover.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/EditorMessage.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/FeatureContent.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/Features.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ImagePreview.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/InlineDiffEditor.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/InputBadge.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/Key.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/KeyBindingsHeader.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/KeyBindingsTable.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/LegacyDialog.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/Markdown.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/Message.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/Preview.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ScrollToTop.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/SettingsHeader.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/SettingsItems.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/SettingsSideBar.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/Table.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletAbout.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletBrowserViewOverview.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletDebugConsole.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletDefineKeyBinding.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletDiffEditor.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletEditorWidgetError.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletExtensionDetail.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletExtensionDetailHeader.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletExtensionDetailTabs.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletExtensions.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletIframeInspector.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletKeyBindings.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletLanguageModels.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletMedia.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletOutput.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletPanel.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletPanelTabs.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletPdf.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletProblems.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletReferences.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletRunAndDebug.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletScreenCapture.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletSearch.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletSettings.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletSimpleBrowser.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletSourceControl.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletStorage.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletTerminal.css +0 -0
- /package/static/{5be121a → 101c327}/css/parts/ViewletTerminalTabs.css +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-bat/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-bat/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-bat/languageConfiguration.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-bat/src/tokenizeBat.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-c/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-c/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-c/src/tokenizeC.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-coffeescript/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-coffeescript/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-coffeescript/src/tokenizeCoffeeScript.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cpp/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cpp/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cpp/languageConfiguration.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cpp/src/tokenizeCpp.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cson/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cson/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cson/languageConfiguration.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cson/src/tokenizeCson.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-css/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-css/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-css/languageConfiguration.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-css/src/tokenizeCss.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-dart/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-dart/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-dart/src/tokenizeDart.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-desktop/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-desktop/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-desktop/src/tokenizeDesktop.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-docker/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-docker/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-docker/src/tokenizeDockerfile.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-dotenv/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-dotenv/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-dotenv/src/tokenizeDotenv.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-editorconfig/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-editorconfig/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-editorconfig/src/tokenizeEditorConfig.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-elixir/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-elixir/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-elixir/src/tokenizeElixir.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-elm/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-elm/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-elm/src/tokenizeElm.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-gitattributes/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-gitattributes/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-gitattributes/src/tokenizeGitAttributes.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-gn/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-gn/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-gn/src/tokenizeGn.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-go/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-go/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-go/src/tokenizeGo.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-graphql/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-graphql/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-graphql/src/tokenizeGraphql.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-html/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-html/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-html/languageConfiguration.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-html/src/tokenizeHtml.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-java/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-java/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-java/languageConfiguration.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-java/src/tokenizeJava.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-javascript/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-javascript/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-javascript/languageConfiguration.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-javascript/src/tokenizeJavaScript.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-json/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-json/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-json/src/tokenizeJson.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-json5/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-json5/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-json5/src/tokenizeJson5.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-jsx/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-jsx/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-jsx/src/tokenizeJsx.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-julia/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-julia/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-julia/src/tokenizeJulia.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-kotlin/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-kotlin/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-kotlin/src/tokenizeKotlin.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-less/LICENSE +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-less/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-less/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-less/languageConfiguration.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-less/src/tokenizeLess.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-markdown/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-markdown/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-markdown/src/tokenizeMarkdown.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-mdx/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-mdx/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-mdx/src/tokenizeMdx.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-nix/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-nix/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-nix/languageConfiguration.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-nix/src/tokenizeNix.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-nvmrc/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-nvmrc/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-nvmrc/src/tokenizeNvmrc.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-perl/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-perl/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-perl/src/tokenizePerl.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-plaintext/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-plaintext/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-plaintext/src/tokenizePlaintext.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-powershell/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-powershell/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-powershell/src/tokenizePowershell.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-python/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-python/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-python/languageConfiguration.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-python/src/tokenizePython.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-r/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-r/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-r/src/tokenizeR.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-ruby/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-ruby/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-ruby/src/tokenizeRuby.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-rust/LICENSE +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-rust/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-rust/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-rust/languageConfiguration.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-rust/src/tokenizeRust.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-scss/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-scss/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-scss/languageConfiguration.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-scss/src/tokenizeScss.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-shellscript/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-shellscript/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-shellscript/src/tokenizeShellScript.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-svelte/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-svelte/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-svelte/src/tokenizeSvelte.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-terraform/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-terraform/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-terraform/src/tokenizeTerraform.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-toml/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-toml/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-toml/src/tokenizeToml.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-typescript/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-typescript/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-typescript/languageConfiguration.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-typescript/src/tokenizeTypeScript.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-vue/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-vue/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-vue/src/tokenizeVue.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-wgsl/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-wgsl/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-wgsl/languageConfiguration.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-wgsl/src/tokenizeWgsl.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-xml/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-xml/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-xml/src/tokenizeXml.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-yaml/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-yaml/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-yaml/src/tokenizeYaml.js +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-atom-one-dark/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-atom-one-dark/color-theme.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-atom-one-dark/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-atom-one-dark/images/demo.png +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-ayu/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-ayu/color-theme.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-ayu/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-ayu/images/demo.png +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-cobalt2/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-cobalt2/color-theme.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-cobalt2/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-cobalt2/images/demo.png +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-cobalt2/images/logo.png +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-gruvbox/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-gruvbox/color-theme.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-gruvbox/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-gruvbox/images/demo.png +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-high-contrast/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-high-contrast/color-theme.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-high-contrast/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-material/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-material/color-theme.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-material/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-monokai/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-monokai/color-theme.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-monokai/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-noctis-uva/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-noctis-uva/color-theme.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-noctis-uva/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-noctis-uva/images/demo.png +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-palenight/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-palenight/color-theme.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-palenight/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-palenight/images/demo.png +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-slime/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-slime/color-theme.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-slime/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.theme-slime/icon.png +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/README.md +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/extension.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icon-theme.json +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icon.png +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/default_file.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/default_folder.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/default_folder_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/default_root_folder.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/default_root_folder_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_access.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_access2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_actionscript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_actionscript2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ada.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_advpl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affectscript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affinity.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affinitydesigner.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affinityphoto.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affinitypublisher.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_agda.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_agents.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ai.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ai2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_al.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_al_dal.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_alchemy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_allcontributors.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_alloy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_allure.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_angular.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ansible.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_antlers_html.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_antlr.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_anyscript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apache.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apex.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_api_extractor.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apib.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apib2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_applescript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_appscript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_appsemble.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_appveyor.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_arduino.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_asciidoc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_aseprite.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_asp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_aspx.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_assembly.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_assembly_script.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_astro.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_astroconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_atom.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ats.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_attw.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_audio.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_aurelia.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_autohotkey.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_autoit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_avif.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_avro.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_awk.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_aws.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_azure.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_azurepipelines.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_babel.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_babel2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bak.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ballerina.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bat.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bats.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bazaar.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bazel.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bazel_ignore.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bazel_version.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_befunge.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bicep.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_biml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_binary.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_biome.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bitbucketpipeline.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bithound.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_blade.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_blender.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_blitzbasic.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bolt.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bosque.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bower.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bower2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_browserslist.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bruno.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_buckbuild.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_buf.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bun.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bundlemon.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bundler.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bunfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_c.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_c2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_c3.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_c_al.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cabal.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_caddy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cake.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cakephp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_capacitor.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_capnp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cargo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_casc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cddl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cert.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ceylon.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cf.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cf2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cfc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cfc2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cfm.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cfm2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_changie.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cheader.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_chef.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_chef_cookbook.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_circleci.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_circom.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_class.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_claude.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_clojure.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_clojurescript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cloudflare.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cloudfoundry.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cmake.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cobol.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codacy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codeclimate.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codecov.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codekit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codemagic.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codeowners.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codeql.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coderabbit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coffeelint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coffeescript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_commitizen.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_commitlint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_compass.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_composer.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_conan.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_conda.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_config.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_confluence.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_copilot.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coverage.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coveralls.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cpp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cpp2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cpp3.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cppheader.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_craco.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_crowdin.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_crystal.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csharp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csharp2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cspell.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csproj.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_css.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_css2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_css2map.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csscomb.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csslint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cssmap.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cucumber.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cuda.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cursorrules.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cvs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cypress.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cypress_spec.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cython.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dal.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_darcs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dartlang.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dartlang_generated.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dartlang_ignore.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_datadog.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_db.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_debian.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_delphi.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_deno.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_denoify.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dependabot.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dependencies.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_design_tokens.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_devcontainer.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_devvit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dhall.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_diff.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_django.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dlang.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docker.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docker2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dockertest.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dockertest2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docpad.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docusaurus.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docz.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dojo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_doppler.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dotenv.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dotjs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_doxygen.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_drawio.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_drone.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_drools.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dtd.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dune.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dustjs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dvc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dylan.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_earthly.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eas-metadata.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_edge.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_edge2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_editorconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eex.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ejs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elastic.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elasticbeanstalk.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_electron.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eleventy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eleventy2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elixir.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elm.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elm2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_emacs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ember.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ensime.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eps.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_epub.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_erb.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_erlang.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_erlang2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_esbuild.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eslint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eslint2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_esphome.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_excalidraw.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_excel.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_excel2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_expo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_falcon.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fantasticon.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fastly.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fauna.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_favicon.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fbx.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_firebase.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_firebasehosting.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_firebasestorage.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_firestore.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fitbit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fla.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flareact.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flash.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_floobits.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flow.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flutter.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flutter_package.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flyio.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_font.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_formkit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fortran.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fossa.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fossil.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_freemarker.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_frontcommerce.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fsharp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fsharp2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fsproj.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fthtml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_funding.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fusebox.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_galen.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_galen2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gamemaker.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gamemaker2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gamemaker81.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gatsby.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gcloud.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gcode.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gdscript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gduid.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gemini.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_genstat.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_geojson.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gimp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_git.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_git2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gitlab.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gitpod.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gleam.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gleamconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glide.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glimmer.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glitter.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glsl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gltf.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glyphs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gnu.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gnuplot.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_aqua.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_black.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_fuchsia.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_gopher.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_lightblue.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_package.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_white.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_work.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_yellow.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_goctl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_godot.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gpg.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gradle.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gradle2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_grain.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_graphql.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_graphql_config.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_graphviz.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_greenkeeper.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gridsome.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_grit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_groovy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_groovy2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_grunt.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gulp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_handlebars.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_handlebars2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_harbour.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hardhat.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hashicorp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haskell.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haskell2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haxe.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haxecheckstyle.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haxedevelop.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_helix.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_helm.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_histoire.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hjson.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hlsl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_homeassistant.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_horusec.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_host.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_html.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_htmlhint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_htmlvalidate.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_http.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hugo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_humanstxt.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hunspell.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_husky.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hygen.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hypr.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_icl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_idris.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_idrisbin.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_idrispkg.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_image.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_imba.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_inc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_infopath.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_informix.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ini.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ink.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_innosetup.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_io.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_iodine.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ionic.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jake.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_janet.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jar.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jasmine.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_java.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jbuilder.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jekyll.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jenkins.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jest.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jest_snapshot.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jetbrains.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jinja.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jpm.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_js_official.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsbeautify.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jscpd.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jshint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsmap.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json5.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json_official.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json_schema.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsonld.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsonnet.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsr.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jss.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_juice.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_julia.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_julia2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jupyter.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_just.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_k.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_karma.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_key.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kitchenci.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kite.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kivy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_knip.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kos.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kotlin.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kusto.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_language_configuration.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lark.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_latino.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_layout.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lean.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_leanconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lefthook.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lerna.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_less.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lex.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_liara.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_base.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_calc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_draw.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_impress.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_math.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_writer.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_license.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_licensebat.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_actionscript2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_ada.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_agda.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_agents.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_apl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_astro.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_astroconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_babel.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_babel2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_cabal.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_circleci.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_cloudfoundry.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_codacy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_codeclimate.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_codeowners.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_config.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_copilot.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_crystal.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_cypress.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_cypress_spec.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_db.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_deno.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_dhall.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_docpad.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_drone.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_eas-metadata.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_eleventy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_eleventy2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_esphome.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_expo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_firebasehosting.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_fla.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_font.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_gamemaker2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_gradle.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_hashicorp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_hjson.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_ini.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_io.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_jsconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_jsmap.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_json.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_json5.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_json_schema.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_jsonld.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_kite.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_lark.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_lean.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_leanconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_lerna.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mailing.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_markuplint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mcp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mdx-components.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mdx.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mlang.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mustache.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mypy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_neo4j.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_netlify.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_next.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_nim.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_nx.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_objidconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_openHAB.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_packship.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_pcl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_pnpm.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_prettier.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_prisma.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_purescript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_quasar.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_raku.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_razzle.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_reactrouter.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rehype.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_remark.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_replit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_retext.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rome.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rubocop.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rust.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rust_toolchain.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_safetensors.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_shadcn.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_shaderlab.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_solidity.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_spin.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_stylelint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_stylus.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_symfony.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_systemd.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_systemverilog.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_testcafe.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_testjs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_tex.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_tm.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_tmux.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_todo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_toit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_toml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_toon.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_tree.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_turbo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_unibeautify.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_vash.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_vercel.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_vsix.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_vsixmanifest.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_xfl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_xorg.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_yaml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_yaml_official.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_zeit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lighthouse.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lilypond.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lime.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lintstagedrc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_liquid.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lisp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_livescript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lnk.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_locale.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_log.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lolcode.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lsl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lua.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_luau.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lync.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mailing.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_makefile.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_manifest.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_manifest_bak.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_manifest_skip.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_map.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mariadb.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markdown.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markdownlint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markdownlint_ignore.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_marko.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markojs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markuplint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_master-co.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_matlab.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_maven.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_maxscript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_maya.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mcp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mdx-components.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mdx.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mdxlint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mediawiki.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mercurial.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mermaid.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_meson.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_metal.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_meteor.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_minecraft.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mivascript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mjml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mlang.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mocha.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_modernizr.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mojo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mojolicious.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_moleculer.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mondoo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mongo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_monotone.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_motif.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mson.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mustache.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mvt.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mvtcss.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mvtjs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mypy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mysql.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nanostaged.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ndst.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nearly.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_neo4j.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_adapter_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_adapter_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_controller_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_controller_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_decorator_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_decorator_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_filter_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_filter_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_gateway_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_gateway_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_guard_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_guard_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_interceptor_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_interceptor_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_middleware_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_middleware_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_module_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_module_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_pipe_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_pipe_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_service_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_service_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nestjs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_netlify.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_next.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nextflow.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_css.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_dart.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_html.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_js2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_less.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_sass.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_scss.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_ts2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_controller_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_controller_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_dart.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_js2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_ts2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_dart.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_dart.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_dart.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_js2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_ts2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_dart.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_js2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_ts2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_dart.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_js2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_ts2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_dart.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_js2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_ts2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_dart.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_js2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_ts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_ts2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_tailwind.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nginx.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nim.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nimble.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ninja.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nix.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_njsproj.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_noc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_node.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_node2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nodemon.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_npm.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_npmpackagejsonlint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nsi.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nsri-integrity.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nsri.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nuget.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_numpy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nunjucks.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nushell.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nuxt.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nx.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nyc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_objectivec.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_objectivecpp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_objidconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ocaml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ocaml_intf.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ogone.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_onenote.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_opam.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_openHAB.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_opencl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_openscad.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_opentofu.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_org.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_outlook.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ovpn.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_oxc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_oxlint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_package.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_packship.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_paket.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pandacss.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_patch.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pcl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pddl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pddl_happenings.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pddl_plan.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pdf.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pdf2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pdm.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_peeky.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_perl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_perl2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_perl6.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pgsql.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_photoshop.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_photoshop2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_php.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_php2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_php3.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_phpcsfixer.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_phpstan.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_phpunit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_phraseapp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pine.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pip.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pipeline.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plantuml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_platformio.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_playwright.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql_package.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_body.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_header.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_spec.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pm2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pnpm.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_poedit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_poetry.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_polyglot.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_polymer.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pony.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_postcss.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_postcssconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_postman.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powerpoint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powerpoint2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_format.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_psd.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_psd2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_psm.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_psm2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_types.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_preact.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_precommit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prettier.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prisma.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prismaconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_processinglang.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_procfile.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_progress.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prolog.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prometheus.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_protobuf.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_protractor.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_publiccode.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_publisher.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pug.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pulumi.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_puppet.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_purescript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_purgecss.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pyenv.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pyret.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pyscript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pytest.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_python.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pythowo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pytyped.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pyup.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_q.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qbs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qlikview.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qmldir.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qsharp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_quasar.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_r.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ra_syntax_tree.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_racket.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rails.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rake.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_raku.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_raml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_razor.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_razzle.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reactjs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reactrouter.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reacttemplate.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reactts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reason.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_red.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_registry.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rego.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rehype.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_remark.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_renovate.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_replit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rescript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rest.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_retext.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rexx.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_riot.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ripple.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rmd.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rnc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_robotframework.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_robots.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rolldown.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rollup.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rome.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ron.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rproj.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rspec.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rss.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rubocop.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ruby.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rust.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rust_toolchain.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_s-lang.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_safetensors.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sails.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_saltstack.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_san.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sapphire_framework_cli.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sas.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sass.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sbt.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_scala.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_scilab.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_script.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_scss.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_scss2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sdlang.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_search_result.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_seedkit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sentry.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sequelize.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_serverless.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shadcn.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shaderlab.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shell.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shellcheck.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shuttle.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_silverstripe.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sino.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sitemap.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_siyuan.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sketch.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_skipper.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slang.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slashup.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slice.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slim.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sln.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sln2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_smarty.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_smithery.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snakemake.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snapcraft.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snaplet.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snort.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snyk.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_solidarity.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_solidity.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_source.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_spacengine.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sparql.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_spin.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sqf.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sql.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sqlite.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_squirrel.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sss.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sst.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stackblitz.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stan.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stata.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stencil.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_storyboard.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_storybook.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stryker.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stylable.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_style.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_styled.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stylelint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stylish_haskell.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stylus.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sublime.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_subversion.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_svelte.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_svelteconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_svg.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_svgo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_swagger.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_swc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_swift.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_swig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_symfony.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_syncpack.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_systemd.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_systemverilog.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_t4tt.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tailwind.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tamagui.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_taplo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_taskfile.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tauri.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tcl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_teal.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_templ.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tera.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_terraform.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_test.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_testcafe.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_testjs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_testplane.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_testts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tex.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_text.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_textile.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tfs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tiltfile.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tm.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tmux.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_todo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_toit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_toml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_toon.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tox.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_travis.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tree.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tres.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_truffle.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_trunk.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsbuildinfo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tscn.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsconfig_official.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsdoc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsdown.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tslint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tt.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ttcn.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tuc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_turbo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_twig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typedoc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typescript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typescript_official.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typescriptdef.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typescriptdef_official.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typo3.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_uiua.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_unibeautify.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_unison.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_unlicense.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_unocss.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_uv.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vagrant.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vala.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vanilla_extract.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vapi.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vapor.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vash.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vb.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vba.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vbhtml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vbproj.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vcxproj.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_velocity.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vento.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vercel.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_verilog.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vhdl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_video.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_view.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vim.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vite.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vitest.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vlang.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_volt.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vroom.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode-insiders.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode3.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode_test.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vsix.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vsixmanifest.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vue.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vueconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vvvvvv.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vyper.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wallaby.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wally.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wasm.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_watchmanconfig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wdio.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_weblate.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_webpack.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wenyan.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wercker.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wgsl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wikitext.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_windi.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wolfram.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_word.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_word2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wpml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wurst.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wxml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wxss.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wxt.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xaml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xcode.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xfl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xib.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xliff.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xmake.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xorg.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xquery.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xsl.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yacc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yaml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yaml_official.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yamllint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yandex.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yang.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yarn.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yeoman.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_zeit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_zig.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_zip.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_zip2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_android.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_android_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_angular.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_angular_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_apache.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_apache_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_api.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_api_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_app.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_app_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_arangodb.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_arangodb_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_asset.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_asset_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_astro.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_astro_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_audio.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_audio_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_aurelia.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_aurelia_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_aws.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_aws_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_azure.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_azure_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_azurepipelines.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_azurepipelines_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_binary.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_binary_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bloc.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bloc_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_blueprint.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_blueprint_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bot.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bot_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bower.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bower_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_buildkite.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_buildkite_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cake.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cake_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cargo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cargo_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_certificate.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_certificate_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_changesets.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_changesets_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_chef.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_chef_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_circleci.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_circleci_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_claude.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_claude_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cli.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cli_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_client.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_client_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cloudflare.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cloudflare_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cmake.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cmake_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_common.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_common_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_component.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_component_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_composer.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_composer_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_config.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_config_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_controller.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_controller_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_coverage.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_coverage_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_css.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_css2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_css2_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_css_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cubit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cubit_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cursor.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cursor_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cypress.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cypress_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dapr.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dapr_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dart.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dart_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_datadog.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_datadog_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_db.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_db_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_debian.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_debian_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dependabot.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dependabot_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_devcontainer.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_devcontainer_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dist.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dist_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_docker.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_docker_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_docs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_docs_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_e2e.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_e2e_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_elasticbeanstalk.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_elasticbeanstalk_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_electron.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_electron_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_expo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_expo_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_favicon.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_favicon_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_flow.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_flow_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_flutter.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_flutter_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_fonts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_fonts_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_frontcommerce.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_frontcommerce_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gcp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gcp_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_git.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_git_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_github.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_github_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gitlab.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gitlab_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_godot.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_godot_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gradle.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gradle_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_graphql.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_graphql_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_grunt.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_grunt_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gulp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gulp_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_haxelib.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_haxelib_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_helper.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_helper_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_histoire.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_histoire_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_hook.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_hook_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_husky.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_husky_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_idea.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_idea_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_images.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_images_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_include.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_include_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_interfaces.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_interfaces_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_ios.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_ios_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_js.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_js_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_json.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_json_official.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_json_official_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_json_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_junie.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_junie_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_kotlin.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_kotlin_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_kubernetes.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_kubernetes_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_less.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_less_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_library.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_library_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_cursor.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_cursor_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_cypress.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_cypress_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_electron.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_electron_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_expo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_expo_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_fonts.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_fonts_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_gradle.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_gradle_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_meteor.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_meteor_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_mypy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_mypy_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_mysql.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_mysql_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_node.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_node_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_redux.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_redux_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_sass.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_sass_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_zed.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_zed_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_linux.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_linux_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_locale.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_locale_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_log.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_log_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_macos.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_macos_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mariadb.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mariadb_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_maven.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_maven_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mediawiki.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mediawiki_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_memcached.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_memcached_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_meteor.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_meteor_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_middleware.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_middleware_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_minecraft.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_minecraft_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_minikube.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_minikube_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mjml.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mjml_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mock.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mock_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_model.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_model_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_module.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_module_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mojo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mojo_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mongodb.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mongodb_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mypy.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mypy_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mysql.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mysql_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_netlify.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_netlify_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_next.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_next_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nginx.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nginx_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nix.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nix_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_node.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_node_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_notebooks.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_notebooks_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_notification.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_notification_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nuget.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nuget_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nuxt.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nuxt_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_package.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_package_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_paket.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_paket_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_php.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_php_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_platformio.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_platformio_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_plugin.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_plugin_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_prisma.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_prisma_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_private.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_private_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_public.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_public_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_pytest.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_pytest_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_python.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_python_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_ravendb.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_ravendb_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_redis.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_redis_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_redux.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_redux_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_route.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_route_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_sass.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_sass_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_script.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_script_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_seedkit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_seedkit_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_server.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_server_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_services.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_services_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_shared.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_shared_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_snaplet.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_snaplet_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_spin.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_spin_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_src.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_src_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_sso.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_sso_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_story.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_story_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_style.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_style_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_supabase.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_supabase_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_svelte.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_svelte_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_tauri.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_tauri_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_temp.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_temp_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_template.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_template_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_test.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_test_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_theme.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_theme_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_tools.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_tools_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_travis.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_travis_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_trunk.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_trunk_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_turbo.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_turbo_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typescript.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typescript_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typings.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typings2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typings2_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typings_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vagrant.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vagrant_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vercel.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vercel_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_video.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_video_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_view.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_view_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vitepress.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vitepress_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vs.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vs2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vs2_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vs_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode2_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode3.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode3_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test2.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test2_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test3.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test3_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_wasm.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_wasm_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_webpack.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_webpack_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_windows.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_windows_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_windsurf.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_windsurf_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_wit.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_wit_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_www.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_www_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_yarn.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_yarn_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_zed.svg +0 -0
- /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_zed_opened.svg +0 -0
- /package/static/{5be121a → 101c327}/fonts/FiraCode-VariableFont.ttf +0 -0
- /package/static/{5be121a → 101c327}/icons/add.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/arrow-down.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/arrow-left.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/arrow-right.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/arrow-up.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/blank.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/book.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/case-sensitive.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/check.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/chevron-down.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/chevron-left.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/chevron-right.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/chevron-up.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/chrome-close.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/chrome-maximize.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/chrome-minimize.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/chrome-restore.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/circle-filled.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/clear-all.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/close.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/cloud.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/collapse-all.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-all.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-alt-2.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-alt-small.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-alt.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-breakpoint-conditional-unverified.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-breakpoint-conditional.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-breakpoint-data-unverified.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-breakpoint-data.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-breakpoint-function-unverified.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-breakpoint-function.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-breakpoint-log-unverified.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-breakpoint-log.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-breakpoint-unsupported.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-console.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-continue-small.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-continue.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-coverage.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-disconnect.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-line-by-line.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-pause.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-rerun.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-restart-frame.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-restart.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-reverse-continue.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-stackframe-active.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-stackframe.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-start.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-step-back.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-step-into.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-step-out.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-step-over.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug-stop.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/debug.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/discard.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/edit.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/ellipsis.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/error.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/exclude.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/extensionDefaultIcon.png +0 -0
- /package/static/{5be121a → 101c327}/icons/extensions.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/files.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/filter.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/go-to-file.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/icon-close.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/icon-source-control.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/icon-sync.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/icon.png +0 -0
- /package/static/{5be121a → 101c327}/icons/icon.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/info.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/language-icon.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/link-external.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/list-flat.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/list-tree.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/new-file.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/new-folder.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/newline.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/open-preview.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/play.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/preserve-case.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/progress.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/pwa-icon-192.png +0 -0
- /package/static/{5be121a → 101c327}/icons/pwa-icon-512.png +0 -0
- /package/static/{5be121a → 101c327}/icons/record-keys.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/refresh.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/regex.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/remove.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/replace-all.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/replace.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/repo.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/run-all.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/search.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/send.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/settings-gear.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/sort-precedence.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/source-control.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/split-horizontal.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/squiggly-error.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/squiggly-warning.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-array.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-boolean.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-class.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-color.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-constant.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-enum-member.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-enum.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-event.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-field.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-file.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-interface.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-key.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-keyword.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-method.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-misc.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-namespace.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-numeric.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-operator.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-parameter.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-property.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-ruler.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-snippet.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-string.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-structure.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/symbol-variable.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/tag.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/terminal-bash.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/terminal.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/theme-icon.png +0 -0
- /package/static/{5be121a → 101c327}/icons/trash.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/triangle-down.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/triangle-left.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/triangle-right.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/triangle-up.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/warning.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/whole-word.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/zoom-in.svg +0 -0
- /package/static/{5be121a → 101c327}/icons/zoom-out.svg +0 -0
- /package/static/{5be121a → 101c327}/js/babel-parser.js +0 -0
- /package/static/{5be121a → 101c327}/js/ky.js +0 -0
- /package/static/{5be121a → 101c327}/js/lvce-editor-import-script.js +0 -0
- /package/static/{5be121a → 101c327}/js/lvce-editor-ipc.js +0 -0
- /package/static/{5be121a → 101c327}/js/lvce-editor-json-rpc.js +0 -0
- /package/static/{5be121a → 101c327}/js/lvce-editor-rpc.js +0 -0
- /package/static/{5be121a → 101c327}/js/lvce-editor-verror.js +0 -0
- /package/static/{5be121a → 101c327}/js/p-min-delay.js +0 -0
- /package/static/{5be121a → 101c327}/js/pretty-bytes.js +0 -0
- /package/static/{5be121a → 101c327}/js/preview-injected.js +0 -0
- /package/static/{5be121a → 101c327}/js/yoctodelay.js +0 -0
- /package/static/{5be121a → 101c327}/lib-css/termterm.css +0 -0
- /package/static/{5be121a → 101c327}/packages/activity-bar-worker/dist/activityBarWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/chat-coordinator-worker/dist/chatCoordinatorWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/chat-debug-view/dist/chatDebugViewWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/chat-math-worker/dist/chatMathWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/chat-network-worker/dist/chatNetworkWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/chat-tool-worker/dist/chatToolWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/clipboard-worker/dist/clipBoardWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/color-picker-worker/dist/colorPickerWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/completion-worker/dist/completionWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/debug-worker/dist/debugWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/editor-worker/dist/editorWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/embeds-worker/dist/embedsWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/error-worker/dist/errorWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/explorer-worker/dist/explorerViewWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/extension-detail-view-worker/dist/extensionDetailViewWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/extension-host-sub-worker/dist/extensionHostSubWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/extension-management-worker/dist/extensionManagementWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/extension-search-view-worker/dist/extensionSearchViewWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/file-search-worker/dist/fileSearchWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/file-system-worker/dist/fileSystemWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/find-widget-worker/dist/findWidgetWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/hover-worker/dist/hoverWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/icon-theme-worker/dist/iconThemeWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/iframe-inspector/dist/iframeInspectorWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/iframe-worker/dist/iframeWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/keybindings-view-worker/dist/keyBindingsViewWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/language-models-view/dist/languageModelsViewMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/main-area-worker/dist/mainAreaWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/markdown-worker/dist/markdownWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/menu-worker/dist/menuWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/opener-worker/dist/openerWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/output-view/dist/outputViewWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/panel-worker/dist/panelWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/preload/dist/index.js +0 -0
- /package/static/{5be121a → 101c327}/packages/preview-sandbox-worker/dist/previewSandBoxWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/preview-worker/dist/previewWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/problems-view/dist/problemsViewWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/quick-pick-worker/dist/quickPickWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/references-view/dist/referencesViewWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/rename-worker/dist/renameWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/renderer-process/LICENSE +0 -0
- /package/static/{5be121a → 101c327}/packages/renderer-process/README.md +0 -0
- /package/static/{5be121a → 101c327}/packages/settings-view/dist/settingsViewWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/source-action-worker/dist/sourceActionWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/source-control-worker/dist/sourceControlWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/syntax-highlighting-worker/dist/syntaxHighlightingWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/terminal-worker/dist/terminalWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/test-worker/dist/testWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/text-measurement-worker/dist/textMeasurementWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/text-search-worker/dist/textSearchWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/packages/update-worker/dist/updateWorkerMain.js +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.cpp +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.css +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.csv +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.dart +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.env +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.ex +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.html +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.java +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.jl +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.js +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.json +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.kt +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.pl +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.py +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/index.ts +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/scrolling.txt +0 -0
- /package/static/{5be121a → 101c327}/playground/languages/tsconfig.json +0 -0
- /package/static/{5be121a → 101c327}/playground/sample-folder/a.txt +0 -0
- /package/static/{5be121a → 101c327}/playground/sample-folder/b.txt +0 -0
- /package/static/{5be121a → 101c327}/playground/sample-folder/c.txt +0 -0
|
@@ -1070,7 +1070,7 @@ const createMockRpc = ({
|
|
|
1070
1070
|
};
|
|
1071
1071
|
|
|
1072
1072
|
const rpcs = Object.create(null);
|
|
1073
|
-
const set$
|
|
1073
|
+
const set$d = (id, rpc) => {
|
|
1074
1074
|
rpcs[id] = rpc;
|
|
1075
1075
|
};
|
|
1076
1076
|
const get$2 = id => {
|
|
@@ -1103,7 +1103,7 @@ const create$2 = rpcId => {
|
|
|
1103
1103
|
const mockRpc = createMockRpc({
|
|
1104
1104
|
commandMap
|
|
1105
1105
|
});
|
|
1106
|
-
set$
|
|
1106
|
+
set$d(rpcId, mockRpc);
|
|
1107
1107
|
// @ts-ignore
|
|
1108
1108
|
mockRpc[Symbol.dispose] = () => {
|
|
1109
1109
|
remove(rpcId);
|
|
@@ -1112,19 +1112,19 @@ const create$2 = rpcId => {
|
|
|
1112
1112
|
return mockRpc;
|
|
1113
1113
|
},
|
|
1114
1114
|
set(rpc) {
|
|
1115
|
-
set$
|
|
1115
|
+
set$d(rpcId, rpc);
|
|
1116
1116
|
}
|
|
1117
1117
|
};
|
|
1118
1118
|
};
|
|
1119
1119
|
|
|
1120
1120
|
const {
|
|
1121
1121
|
invoke: invoke$9,
|
|
1122
|
-
set: set$
|
|
1122
|
+
set: set$c
|
|
1123
1123
|
} = create$2(6008);
|
|
1124
1124
|
|
|
1125
1125
|
const {
|
|
1126
1126
|
invoke: invoke$8,
|
|
1127
|
-
set: set$
|
|
1127
|
+
set: set$b
|
|
1128
1128
|
} = create$2(6007);
|
|
1129
1129
|
const getMathBlockDom = async node => {
|
|
1130
1130
|
return invoke$8('ChatMath.getMathBlockDom', node);
|
|
@@ -1135,7 +1135,7 @@ const getMathInlineDom = async node => {
|
|
|
1135
1135
|
|
|
1136
1136
|
const {
|
|
1137
1137
|
invoke: invoke$7,
|
|
1138
|
-
set: set$
|
|
1138
|
+
set: set$a
|
|
1139
1139
|
} = create$2(6009);
|
|
1140
1140
|
|
|
1141
1141
|
const Button$2 = 'button';
|
|
@@ -1198,6 +1198,7 @@ const Reference = 100;
|
|
|
1198
1198
|
|
|
1199
1199
|
const ClientX = 'event.clientX';
|
|
1200
1200
|
const ClientY = 'event.clientY';
|
|
1201
|
+
const DataTransferFiles2 = 'event.dataTransfer.files2';
|
|
1201
1202
|
const DefaultPrevented = 'event.defaultPrevented';
|
|
1202
1203
|
const Key = 'event.key';
|
|
1203
1204
|
const ShiftKey = 'event.shiftKey';
|
|
@@ -1212,7 +1213,10 @@ const End = 255;
|
|
|
1212
1213
|
const Home = 12;
|
|
1213
1214
|
const UpArrow = 14;
|
|
1214
1215
|
const DownArrow = 16;
|
|
1216
|
+
const KeyN = 42;
|
|
1217
|
+
const KeyV = 50;
|
|
1215
1218
|
|
|
1219
|
+
const CtrlCmd = 1 << 11 >>> 0;
|
|
1216
1220
|
const Shift = 1 << 10 >>> 0;
|
|
1217
1221
|
|
|
1218
1222
|
const Chat$2 = 97;
|
|
@@ -1242,12 +1246,12 @@ const FocusChatList = 8001;
|
|
|
1242
1246
|
|
|
1243
1247
|
const {
|
|
1244
1248
|
invoke: invoke$6,
|
|
1245
|
-
set: set$
|
|
1249
|
+
set: set$9
|
|
1246
1250
|
} = create$2(ChatNetworkWorker);
|
|
1247
1251
|
|
|
1248
1252
|
const {
|
|
1249
1253
|
invoke: invoke$5,
|
|
1250
|
-
set: set$
|
|
1254
|
+
set: set$8
|
|
1251
1255
|
} = create$2(ChatStorageWorker);
|
|
1252
1256
|
const appendEvent = async event => {
|
|
1253
1257
|
return invoke$5('ChatStorage.appendEvent', event);
|
|
@@ -1264,12 +1268,12 @@ const getEvents = async sessionId => {
|
|
|
1264
1268
|
|
|
1265
1269
|
const {
|
|
1266
1270
|
invoke: invoke$4,
|
|
1267
|
-
set: set$
|
|
1271
|
+
set: set$7
|
|
1268
1272
|
} = create$2(ChatToolWorker);
|
|
1269
1273
|
|
|
1270
1274
|
const {
|
|
1271
1275
|
invoke: invoke$3,
|
|
1272
|
-
set: set$
|
|
1276
|
+
set: set$6
|
|
1273
1277
|
} = create$2(ClipBoardWorker);
|
|
1274
1278
|
const writeText = async text => {
|
|
1275
1279
|
return invoke$3('ClipBoard.writeText', text);
|
|
@@ -1280,9 +1284,13 @@ const readText = async () => {
|
|
|
1280
1284
|
|
|
1281
1285
|
const {
|
|
1282
1286
|
invoke: invoke$2,
|
|
1283
|
-
set: set$
|
|
1287
|
+
set: set$5
|
|
1284
1288
|
} = create$2(ExtensionHostWorker);
|
|
1285
1289
|
|
|
1290
|
+
const {
|
|
1291
|
+
set: set$4
|
|
1292
|
+
} = create$2(IconThemeWorker);
|
|
1293
|
+
|
|
1286
1294
|
const {
|
|
1287
1295
|
invoke: invoke$1,
|
|
1288
1296
|
set: set$3
|
|
@@ -1303,6 +1311,10 @@ const showContextMenu2 = async (uid, menuId, x, y, args) => {
|
|
|
1303
1311
|
number(y);
|
|
1304
1312
|
await invoke('ContextMenu.show2', uid, menuId, x, y, args);
|
|
1305
1313
|
};
|
|
1314
|
+
const getFileHandles = async fileIds => {
|
|
1315
|
+
const files = await invoke('FileSystemHandle.getFileHandles', fileIds);
|
|
1316
|
+
return files;
|
|
1317
|
+
};
|
|
1306
1318
|
const sendMessagePortToClipBoardWorker$1 = async (port, rpcId) => {
|
|
1307
1319
|
const command = 'ClipBoard.handleMessagePort';
|
|
1308
1320
|
await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToClipBoardWorker', port, command, rpcId);
|
|
@@ -1323,6 +1335,10 @@ const sendMessagePortToChatMessageParsingWorker = async (port, rpcId) => {
|
|
|
1323
1335
|
const command = 'HandleMessagePort.handleMessagePort';
|
|
1324
1336
|
await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToChatMessageParsingWorker', port, command, rpcId);
|
|
1325
1337
|
};
|
|
1338
|
+
const sendMessagePortToIconThemeWorker$1 = async (port, rpcId) => {
|
|
1339
|
+
const command = 'IconTheme.handleMessagePort';
|
|
1340
|
+
await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToIconThemeWorker', port, command, rpcId);
|
|
1341
|
+
};
|
|
1326
1342
|
const readFile = async uri => {
|
|
1327
1343
|
return invoke('FileSystem.readFile', uri);
|
|
1328
1344
|
};
|
|
@@ -1477,15 +1493,68 @@ const terminate = () => {
|
|
|
1477
1493
|
globalThis.close();
|
|
1478
1494
|
};
|
|
1479
1495
|
|
|
1496
|
+
const getComposerWidth = width => {
|
|
1497
|
+
return Math.max(1, width - 32);
|
|
1498
|
+
};
|
|
1499
|
+
|
|
1500
|
+
const composerAttachmentGap = 8;
|
|
1501
|
+
const composerAttachmentMarginBottom = 8;
|
|
1502
|
+
const composerAttachmentFontSize = 12;
|
|
1503
|
+
const composerAttachmentHorizontalPadding = 20;
|
|
1504
|
+
const composerAttachmentBorderWidth = 2;
|
|
1505
|
+
const composerAttachmentHeight = 26;
|
|
1506
|
+
const averageCharacterWidth = composerAttachmentFontSize * 0.6;
|
|
1507
|
+
const fallbackComposerWidth = 480;
|
|
1508
|
+
const getComposerAttachmentLabel$1 = displayType => {
|
|
1509
|
+
switch (displayType) {
|
|
1510
|
+
case 'file':
|
|
1511
|
+
return 'File';
|
|
1512
|
+
case 'image':
|
|
1513
|
+
return 'Image';
|
|
1514
|
+
case 'invalid-image':
|
|
1515
|
+
return 'Invalid image';
|
|
1516
|
+
case 'text-file':
|
|
1517
|
+
return 'Text file';
|
|
1518
|
+
default:
|
|
1519
|
+
return displayType;
|
|
1520
|
+
}
|
|
1521
|
+
};
|
|
1522
|
+
const getAttachmentContainerWidth = width => {
|
|
1523
|
+
if (width <= 0) {
|
|
1524
|
+
return fallbackComposerWidth;
|
|
1525
|
+
}
|
|
1526
|
+
return Math.max(1, getComposerWidth(width));
|
|
1527
|
+
};
|
|
1528
|
+
const getComposerAttachmentWidth = (attachment, containerWidth) => {
|
|
1529
|
+
const label = `${getComposerAttachmentLabel$1(attachment.displayType)} · ${attachment.name}`;
|
|
1530
|
+
const estimatedWidth = Math.ceil(label.length * averageCharacterWidth) + composerAttachmentHorizontalPadding + composerAttachmentBorderWidth;
|
|
1531
|
+
return Math.min(containerWidth, estimatedWidth);
|
|
1532
|
+
};
|
|
1533
|
+
const getComposerAttachmentsHeight = (composerAttachments, width) => {
|
|
1534
|
+
if (composerAttachments.length === 0) {
|
|
1535
|
+
return 0;
|
|
1536
|
+
}
|
|
1537
|
+
const containerWidth = getAttachmentContainerWidth(width);
|
|
1538
|
+
let currentRowWidth = 0;
|
|
1539
|
+
let rowCount = 1;
|
|
1540
|
+
for (const attachment of composerAttachments) {
|
|
1541
|
+
const attachmentWidth = getComposerAttachmentWidth(attachment, containerWidth);
|
|
1542
|
+
const nextRowWidth = currentRowWidth === 0 ? attachmentWidth : currentRowWidth + composerAttachmentGap + attachmentWidth;
|
|
1543
|
+
if (currentRowWidth > 0 && nextRowWidth > containerWidth) {
|
|
1544
|
+
rowCount++;
|
|
1545
|
+
currentRowWidth = attachmentWidth;
|
|
1546
|
+
} else {
|
|
1547
|
+
currentRowWidth = nextRowWidth;
|
|
1548
|
+
}
|
|
1549
|
+
}
|
|
1550
|
+
return rowCount * composerAttachmentHeight + (rowCount - 1) * composerAttachmentGap + composerAttachmentMarginBottom;
|
|
1551
|
+
};
|
|
1552
|
+
|
|
1480
1553
|
const estimateComposerHeight = (value, lineHeight) => {
|
|
1481
1554
|
const lineCount = value.split('\n').length;
|
|
1482
1555
|
return lineCount * lineHeight + 8;
|
|
1483
1556
|
};
|
|
1484
1557
|
|
|
1485
|
-
const getComposerWidth = width => {
|
|
1486
|
-
return Math.max(1, width - 32);
|
|
1487
|
-
};
|
|
1488
|
-
|
|
1489
1558
|
const getMaxComposerHeight = (lineHeight, maxComposerRows) => {
|
|
1490
1559
|
return lineHeight * Math.max(1, maxComposerRows) + 8;
|
|
1491
1560
|
};
|
|
@@ -1544,10 +1613,12 @@ const getNextChatHistoryState = async (state, direction) => {
|
|
|
1544
1613
|
const nextDraft = state.chatInputHistoryIndex === -1 ? state.composerValue : state.chatInputHistoryDraft;
|
|
1545
1614
|
const nextComposerValue = getHistoryValueForIndex(state.chatInputHistory, nextIndex);
|
|
1546
1615
|
const composerHeight = await getComposerHeight(state, nextComposerValue);
|
|
1616
|
+
const composerAttachmentsHeight = getComposerAttachmentsHeight(state.composerAttachments, state.width);
|
|
1547
1617
|
return {
|
|
1548
1618
|
...state,
|
|
1549
1619
|
chatInputHistoryDraft: nextDraft,
|
|
1550
1620
|
chatInputHistoryIndex: nextIndex,
|
|
1621
|
+
composerAttachmentsHeight,
|
|
1551
1622
|
composerHeight,
|
|
1552
1623
|
composerSelectionEnd: nextComposerValue.length,
|
|
1553
1624
|
composerSelectionStart: nextComposerValue.length,
|
|
@@ -1561,9 +1632,11 @@ const getNextChatHistoryState = async (state, direction) => {
|
|
|
1561
1632
|
const nextIndex = state.chatInputHistoryIndex - 1;
|
|
1562
1633
|
if (nextIndex === -1) {
|
|
1563
1634
|
const composerHeight = await getComposerHeight(state, state.chatInputHistoryDraft);
|
|
1635
|
+
const composerAttachmentsHeight = getComposerAttachmentsHeight(state.composerAttachments, state.width);
|
|
1564
1636
|
return {
|
|
1565
1637
|
...state,
|
|
1566
1638
|
chatInputHistoryIndex: -1,
|
|
1639
|
+
composerAttachmentsHeight,
|
|
1567
1640
|
composerHeight,
|
|
1568
1641
|
composerSelectionEnd: state.chatInputHistoryDraft.length,
|
|
1569
1642
|
composerSelectionStart: state.chatInputHistoryDraft.length,
|
|
@@ -1573,9 +1646,11 @@ const getNextChatHistoryState = async (state, direction) => {
|
|
|
1573
1646
|
}
|
|
1574
1647
|
const nextComposerValue = getHistoryValueForIndex(state.chatInputHistory, nextIndex);
|
|
1575
1648
|
const composerHeight = await getComposerHeight(state, nextComposerValue);
|
|
1649
|
+
const composerAttachmentsHeight = getComposerAttachmentsHeight(state.composerAttachments, state.width);
|
|
1576
1650
|
return {
|
|
1577
1651
|
...state,
|
|
1578
1652
|
chatInputHistoryIndex: nextIndex,
|
|
1653
|
+
composerAttachmentsHeight,
|
|
1579
1654
|
composerHeight,
|
|
1580
1655
|
composerSelectionEnd: nextComposerValue.length,
|
|
1581
1656
|
composerSelectionStart: nextComposerValue.length,
|
|
@@ -1775,12 +1850,14 @@ const Debug = 'Debug';
|
|
|
1775
1850
|
const BackToChats = 'Back to chats';
|
|
1776
1851
|
const BackToChatList = 'Back to chat list';
|
|
1777
1852
|
const Search$1 = 'Search';
|
|
1853
|
+
const ScrollDown$1 = 'Scroll down';
|
|
1778
1854
|
const SearchModels = 'Search models';
|
|
1779
1855
|
const SearchChats = 'Search chats';
|
|
1780
1856
|
const Paste = 'Paste';
|
|
1781
1857
|
const Rename = 'Rename';
|
|
1782
1858
|
const Archive = 'Archive';
|
|
1783
1859
|
const AddProjectChat = 'Add Project';
|
|
1860
|
+
const RemoveProject = 'Remove Project';
|
|
1784
1861
|
const Settings$1 = 'Settings';
|
|
1785
1862
|
const LoginToBackend = 'Login to backend';
|
|
1786
1863
|
const LogoutFromBackend = 'Logout from backend';
|
|
@@ -1793,12 +1870,19 @@ const StartConversationByTypingBelow = 'Start a conversation by typing below.';
|
|
|
1793
1870
|
const NoMatchingModelsFound = 'No matching models have been found.';
|
|
1794
1871
|
const ComposePlaceholder = 'Type your message. Enter to send.';
|
|
1795
1872
|
const AttachImageAsContext = 'Attach Image as Context';
|
|
1796
|
-
const
|
|
1873
|
+
const OpenImageInNewTab = 'Open image in new tab';
|
|
1874
|
+
const RemoveAttachment = 'Remove attachment';
|
|
1875
|
+
const ImageCouldNotBeLoaded = 'Image preview could not be loaded';
|
|
1797
1876
|
const OpenRouterApiKeyPlaceholder = 'Enter OpenRouter API key';
|
|
1798
1877
|
const OpenApiApiKeyPlaceholder = 'Enter OpenAI API key';
|
|
1799
1878
|
const SendMessage = 'Send message';
|
|
1800
1879
|
const StartVoiceDictation = 'Start voice dictation';
|
|
1801
1880
|
const AddContext$1 = 'Add Context';
|
|
1881
|
+
const AddAction = 'Add Action';
|
|
1882
|
+
const OpenInVsCode = 'Open in VSCode';
|
|
1883
|
+
const Commit = 'Commit';
|
|
1884
|
+
const OpenTerminal = 'Open Terminal';
|
|
1885
|
+
const ShowDiff = 'Show Diff';
|
|
1802
1886
|
const CreatePullRequest$2 = 'Create PR';
|
|
1803
1887
|
const Save = 'Save';
|
|
1804
1888
|
const Saving = 'Saving...';
|
|
@@ -1833,6 +1917,9 @@ const newChat = () => {
|
|
|
1833
1917
|
const addProject = () => {
|
|
1834
1918
|
return i18nString(AddProjectChat);
|
|
1835
1919
|
};
|
|
1920
|
+
const removeProject = () => {
|
|
1921
|
+
return i18nString(RemoveProject);
|
|
1922
|
+
};
|
|
1836
1923
|
const debug = () => {
|
|
1837
1924
|
return i18nString(Debug);
|
|
1838
1925
|
};
|
|
@@ -1848,6 +1935,9 @@ const settings = () => {
|
|
|
1848
1935
|
const search = () => {
|
|
1849
1936
|
return i18nString(Search$1);
|
|
1850
1937
|
};
|
|
1938
|
+
const scrollDown = () => {
|
|
1939
|
+
return i18nString(ScrollDown$1);
|
|
1940
|
+
};
|
|
1851
1941
|
const searchModels = () => {
|
|
1852
1942
|
return i18nString(SearchModels);
|
|
1853
1943
|
};
|
|
@@ -1887,6 +1977,12 @@ const composePlaceholder = () => {
|
|
|
1887
1977
|
const attachImageAsContext = () => {
|
|
1888
1978
|
return i18nString(AttachImageAsContext);
|
|
1889
1979
|
};
|
|
1980
|
+
const openImageInNewTab = () => {
|
|
1981
|
+
return i18nString(OpenImageInNewTab);
|
|
1982
|
+
};
|
|
1983
|
+
const removeAttachment = () => {
|
|
1984
|
+
return i18nString(RemoveAttachment);
|
|
1985
|
+
};
|
|
1890
1986
|
const imageCouldNotBeLoaded = () => {
|
|
1891
1987
|
return i18nString(ImageCouldNotBeLoaded);
|
|
1892
1988
|
};
|
|
@@ -1905,6 +2001,21 @@ const startVoiceDictation = () => {
|
|
|
1905
2001
|
const addContext = () => {
|
|
1906
2002
|
return i18nString(AddContext$1);
|
|
1907
2003
|
};
|
|
2004
|
+
const addAction = () => {
|
|
2005
|
+
return i18nString(AddAction);
|
|
2006
|
+
};
|
|
2007
|
+
const openInVsCode = () => {
|
|
2008
|
+
return i18nString(OpenInVsCode);
|
|
2009
|
+
};
|
|
2010
|
+
const commit = () => {
|
|
2011
|
+
return i18nString(Commit);
|
|
2012
|
+
};
|
|
2013
|
+
const openTerminal = () => {
|
|
2014
|
+
return i18nString(OpenTerminal);
|
|
2015
|
+
};
|
|
2016
|
+
const showDiff = () => {
|
|
2017
|
+
return i18nString(ShowDiff);
|
|
2018
|
+
};
|
|
1908
2019
|
const createPullRequest = () => {
|
|
1909
2020
|
return i18nString(CreatePullRequest$2);
|
|
1910
2021
|
};
|
|
@@ -1956,34 +2067,42 @@ const backendUrlRequiredMessage = i18nString(BackendUrlRequiredMessage);
|
|
|
1956
2067
|
const backendAccessTokenRequiredMessage = i18nString(BackendAccessTokenRequiredMessage);
|
|
1957
2068
|
const backendCompletionFailedMessage = i18nString(BackendCompletionFailedMessage);
|
|
1958
2069
|
|
|
2070
|
+
const defaultMaxToolCalls = 100;
|
|
2071
|
+
|
|
1959
2072
|
const getDefaultModelsOpenAi = () => {
|
|
1960
2073
|
return [{
|
|
1961
2074
|
id: 'openapi/codex-5.3',
|
|
1962
2075
|
name: 'Codex 5.3',
|
|
1963
2076
|
provider: 'openApi',
|
|
2077
|
+
supportsReasoningEffort: true,
|
|
1964
2078
|
usageCost: 1
|
|
1965
2079
|
}, {
|
|
1966
2080
|
id: 'openapi/gpt-5.4-mini',
|
|
1967
2081
|
name: 'GPT-5.4 Mini',
|
|
1968
|
-
provider: 'openApi'
|
|
2082
|
+
provider: 'openApi',
|
|
2083
|
+
supportsReasoningEffort: true
|
|
1969
2084
|
}, {
|
|
1970
2085
|
id: 'openapi/gpt-5-mini',
|
|
1971
2086
|
name: 'GPT-5 Mini',
|
|
1972
|
-
provider: 'openApi'
|
|
2087
|
+
provider: 'openApi',
|
|
2088
|
+
supportsReasoningEffort: true
|
|
1973
2089
|
}, {
|
|
1974
2090
|
id: 'openapi/gpt-4o-mini',
|
|
1975
2091
|
name: 'GPT-4o Mini',
|
|
1976
2092
|
provider: 'openApi',
|
|
2093
|
+
supportsImages: true,
|
|
1977
2094
|
usageCost: 1
|
|
1978
2095
|
}, {
|
|
1979
2096
|
id: 'openapi/gpt-4o',
|
|
1980
2097
|
name: 'GPT-4o',
|
|
1981
2098
|
provider: 'openApi',
|
|
2099
|
+
supportsImages: true,
|
|
1982
2100
|
usageCost: 3
|
|
1983
2101
|
}, {
|
|
1984
2102
|
id: 'openapi/gpt-4.1-mini',
|
|
1985
2103
|
name: 'GPT-4.1 Mini',
|
|
1986
2104
|
provider: 'openApi',
|
|
2105
|
+
supportsImages: true,
|
|
1987
2106
|
usageCost: 1
|
|
1988
2107
|
}];
|
|
1989
2108
|
};
|
|
@@ -2091,6 +2210,22 @@ const getModelPickerHeight = (modelPickerHeaderHeight, itemCount) => {
|
|
|
2091
2210
|
return Math.min(240, modelPickerHeaderHeight + effectiveItemCount * modelPickerItemHeight);
|
|
2092
2211
|
};
|
|
2093
2212
|
|
|
2213
|
+
const minimumWidthForRunModePicker = 520;
|
|
2214
|
+
const minimumWidthForAgentModePicker = 640;
|
|
2215
|
+
const fullyVisibleResponsivePickerState = {
|
|
2216
|
+
hasSpaceForAgentModePicker: true,
|
|
2217
|
+
hasSpaceForRunModePicker: true
|
|
2218
|
+
};
|
|
2219
|
+
const getResponsivePickerState = (width, responsivePickerVisibilityEnabled) => {
|
|
2220
|
+
if (!responsivePickerVisibilityEnabled) {
|
|
2221
|
+
return fullyVisibleResponsivePickerState;
|
|
2222
|
+
}
|
|
2223
|
+
return {
|
|
2224
|
+
hasSpaceForAgentModePicker: width >= minimumWidthForAgentModePicker,
|
|
2225
|
+
hasSpaceForRunModePicker: width >= minimumWidthForRunModePicker
|
|
2226
|
+
};
|
|
2227
|
+
};
|
|
2228
|
+
|
|
2094
2229
|
const getModelLabel = model => {
|
|
2095
2230
|
if (model.provider === 'openRouter') {
|
|
2096
2231
|
return `${model.name} (OpenRouter)`;
|
|
@@ -2176,8 +2311,10 @@ const createDefaultState = () => {
|
|
|
2176
2311
|
const chatMessageLineHeight = 20;
|
|
2177
2312
|
const composerFontSize = 13;
|
|
2178
2313
|
const composerLineHeight = 20;
|
|
2314
|
+
const responsivePickerVisibilityEnabled = false;
|
|
2179
2315
|
const models = getDefaultModels();
|
|
2180
2316
|
const visibleModels = getVisibleModels(models, '');
|
|
2317
|
+
const responsivePickerState = getResponsivePickerState(800, responsivePickerVisibilityEnabled);
|
|
2181
2318
|
return {
|
|
2182
2319
|
addContextButtonEnabled: false,
|
|
2183
2320
|
agentMode: defaultAgentMode,
|
|
@@ -2203,7 +2340,10 @@ const createDefaultState = () => {
|
|
|
2203
2340
|
chatSendAreaPaddingLeft: 8,
|
|
2204
2341
|
chatSendAreaPaddingRight: 8,
|
|
2205
2342
|
chatSendAreaPaddingTop: 10,
|
|
2343
|
+
composerAttachmentPreviewOverlayAttachmentId: '',
|
|
2344
|
+
composerAttachmentPreviewOverlayError: false,
|
|
2206
2345
|
composerAttachments: [],
|
|
2346
|
+
composerAttachmentsHeight: 0,
|
|
2207
2347
|
composerDropActive: false,
|
|
2208
2348
|
composerDropEnabled: true,
|
|
2209
2349
|
composerFontFamily: 'system-ui',
|
|
@@ -2219,6 +2359,7 @@ const createDefaultState = () => {
|
|
|
2219
2359
|
focused: false,
|
|
2220
2360
|
headerHeight: 50,
|
|
2221
2361
|
height: 0,
|
|
2362
|
+
...responsivePickerState,
|
|
2222
2363
|
initial: true,
|
|
2223
2364
|
inputSource: 'script',
|
|
2224
2365
|
lastNormalViewMode: 'list',
|
|
@@ -2226,17 +2367,19 @@ const createDefaultState = () => {
|
|
|
2226
2367
|
listFocusedIndex: -1,
|
|
2227
2368
|
listItemHeight: 40,
|
|
2228
2369
|
maxComposerRows: 5,
|
|
2229
|
-
maxToolCalls:
|
|
2370
|
+
maxToolCalls: defaultMaxToolCalls,
|
|
2230
2371
|
messagesAutoScrollEnabled: true,
|
|
2231
2372
|
messagesScrollTop: 0,
|
|
2232
2373
|
mockAiResponseDelay: 800,
|
|
2233
2374
|
mockApiCommandId: '',
|
|
2375
|
+
mockOpenApiRequests: [],
|
|
2234
2376
|
modelPickerHeaderHeight,
|
|
2235
2377
|
modelPickerHeight: getModelPickerHeight(modelPickerHeaderHeight, visibleModels.length),
|
|
2236
2378
|
modelPickerListScrollTop: 0,
|
|
2237
2379
|
modelPickerOpen: false,
|
|
2238
2380
|
modelPickerSearchValue: '',
|
|
2239
2381
|
models,
|
|
2382
|
+
nextAttachmentId: 1,
|
|
2240
2383
|
nextMessageId: 1,
|
|
2241
2384
|
openApiApiBaseUrl: 'https://api.openai.com/v1',
|
|
2242
2385
|
openApiApiKey: '',
|
|
@@ -2264,8 +2407,10 @@ const createDefaultState = () => {
|
|
|
2264
2407
|
reasoningEffortPickerOpen: false,
|
|
2265
2408
|
reasoningPickerEnabled: false,
|
|
2266
2409
|
renamingSessionId: '',
|
|
2410
|
+
responsivePickerVisibilityEnabled,
|
|
2267
2411
|
runMode: 'local',
|
|
2268
2412
|
runModePickerOpen: false,
|
|
2413
|
+
scrollDownButtonEnabled: false,
|
|
2269
2414
|
searchEnabled: false,
|
|
2270
2415
|
searchFieldVisible: false,
|
|
2271
2416
|
searchValue: '',
|
|
@@ -2418,6 +2563,7 @@ const clearChatSessions = async () => {
|
|
|
2418
2563
|
await clear();
|
|
2419
2564
|
};
|
|
2420
2565
|
const appendChatViewEvent = async event => {
|
|
2566
|
+
// The local chat-view event union may temporarily grow ahead of the shared rpc-registry typings.
|
|
2421
2567
|
await appendEvent(event);
|
|
2422
2568
|
};
|
|
2423
2569
|
const getChatViewEvents = async sessionId => {
|
|
@@ -2474,28 +2620,72 @@ const getComposerAttachmentDisplayType = async (blob, name, mimeType) => {
|
|
|
2474
2620
|
return 'file';
|
|
2475
2621
|
};
|
|
2476
2622
|
|
|
2623
|
+
const chunkSize = 0x80_00;
|
|
2624
|
+
const getBlobBase64 = async blob => {
|
|
2625
|
+
const bytes = new Uint8Array(await blob.arrayBuffer());
|
|
2626
|
+
if (typeof Buffer !== 'undefined') {
|
|
2627
|
+
return Buffer.from(bytes).toString('base64');
|
|
2628
|
+
}
|
|
2629
|
+
let binary = '';
|
|
2630
|
+
for (let i = 0; i < bytes.length; i += chunkSize) {
|
|
2631
|
+
binary += String.fromCodePoint(...bytes.subarray(i, i + chunkSize));
|
|
2632
|
+
}
|
|
2633
|
+
return btoa(binary);
|
|
2634
|
+
};
|
|
2635
|
+
|
|
2636
|
+
const getComposerAttachmentPreviewSrc = async (blob, displayType, mimeType) => {
|
|
2637
|
+
if (displayType !== 'image') {
|
|
2638
|
+
return undefined;
|
|
2639
|
+
}
|
|
2640
|
+
const base64 = await getBlobBase64(blob);
|
|
2641
|
+
return `data:${mimeType || 'application/octet-stream'};base64,${base64}`;
|
|
2642
|
+
};
|
|
2643
|
+
|
|
2644
|
+
const getComposerAttachmentTextContent = async (blob, displayType) => {
|
|
2645
|
+
if (displayType !== 'text-file') {
|
|
2646
|
+
return undefined;
|
|
2647
|
+
}
|
|
2648
|
+
return blob.text();
|
|
2649
|
+
};
|
|
2650
|
+
|
|
2477
2651
|
const isChatAttachmentAddedEvent = event => {
|
|
2478
2652
|
return event.type === 'chat-attachment-added';
|
|
2479
2653
|
};
|
|
2654
|
+
const isChatAttachmentRemovedEvent = event => {
|
|
2655
|
+
return event.type === 'chat-attachment-removed';
|
|
2656
|
+
};
|
|
2480
2657
|
const getComposerAttachments = async sessionId => {
|
|
2481
2658
|
if (!sessionId) {
|
|
2482
2659
|
return [];
|
|
2483
2660
|
}
|
|
2484
2661
|
const events = await getChatViewEvents(sessionId);
|
|
2485
|
-
const attachments =
|
|
2662
|
+
const attachments = new Map();
|
|
2486
2663
|
for (const event of events) {
|
|
2664
|
+
if (isChatAttachmentRemovedEvent(event)) {
|
|
2665
|
+
attachments.delete(event.attachmentId);
|
|
2666
|
+
continue;
|
|
2667
|
+
}
|
|
2487
2668
|
if (!isChatAttachmentAddedEvent(event)) {
|
|
2488
2669
|
continue;
|
|
2489
2670
|
}
|
|
2490
|
-
|
|
2671
|
+
const displayType = await getComposerAttachmentDisplayType(event.blob, event.name, event.mimeType);
|
|
2672
|
+
const previewSrc = await getComposerAttachmentPreviewSrc(event.blob, displayType, event.mimeType);
|
|
2673
|
+
const textContent = await getComposerAttachmentTextContent(event.blob, displayType);
|
|
2674
|
+
attachments.set(event.attachmentId, {
|
|
2491
2675
|
attachmentId: event.attachmentId,
|
|
2492
|
-
displayType
|
|
2676
|
+
displayType,
|
|
2493
2677
|
mimeType: event.mimeType,
|
|
2494
2678
|
name: event.name,
|
|
2495
|
-
|
|
2679
|
+
...(previewSrc ? {
|
|
2680
|
+
previewSrc
|
|
2681
|
+
} : {}),
|
|
2682
|
+
size: event.size,
|
|
2683
|
+
...(typeof textContent === 'string' ? {
|
|
2684
|
+
textContent
|
|
2685
|
+
} : {})
|
|
2496
2686
|
});
|
|
2497
2687
|
}
|
|
2498
|
-
return attachments;
|
|
2688
|
+
return [...attachments.values()];
|
|
2499
2689
|
};
|
|
2500
2690
|
|
|
2501
2691
|
const getNextSelectedSessionId = (sessions, deletedId) => {
|
|
@@ -2513,7 +2703,8 @@ const getNextSelectedSessionId = (sessions, deletedId) => {
|
|
|
2513
2703
|
const deleteSession = async (state, id) => {
|
|
2514
2704
|
const {
|
|
2515
2705
|
renamingSessionId,
|
|
2516
|
-
sessions
|
|
2706
|
+
sessions,
|
|
2707
|
+
width
|
|
2517
2708
|
} = state;
|
|
2518
2709
|
const filtered = sessions.filter(session => session.id !== id);
|
|
2519
2710
|
if (filtered.length === sessions.length) {
|
|
@@ -2524,6 +2715,7 @@ const deleteSession = async (state, id) => {
|
|
|
2524
2715
|
return {
|
|
2525
2716
|
...state,
|
|
2526
2717
|
composerAttachments: [],
|
|
2718
|
+
composerAttachmentsHeight: 0,
|
|
2527
2719
|
renamingSessionId: '',
|
|
2528
2720
|
selectedSessionId: '',
|
|
2529
2721
|
sessions: [],
|
|
@@ -2545,6 +2737,7 @@ const deleteSession = async (state, id) => {
|
|
|
2545
2737
|
return {
|
|
2546
2738
|
...state,
|
|
2547
2739
|
composerAttachments,
|
|
2740
|
+
composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, width),
|
|
2548
2741
|
renamingSessionId: renamingSessionId === id ? '' : renamingSessionId,
|
|
2549
2742
|
selectedSessionId: nextSelectedSessionId,
|
|
2550
2743
|
sessions: hydratedSessions
|
|
@@ -2609,7 +2802,7 @@ const getRenderHtmlCss = (sessions, selectedSessionId) => {
|
|
|
2609
2802
|
const isEqual$1 = (oldState, newState) => {
|
|
2610
2803
|
const oldRenderHtmlCss = getRenderHtmlCss(oldState.sessions, oldState.selectedSessionId);
|
|
2611
2804
|
const newRenderHtmlCss = getRenderHtmlCss(newState.sessions, newState.selectedSessionId);
|
|
2612
|
-
return oldState.initial === newState.initial && oldState.chatMessageFontFamily === newState.chatMessageFontFamily && oldState.chatMessageFontSize === newState.chatMessageFontSize && oldState.chatMessageLineHeight === newState.chatMessageLineHeight && oldState.chatFocusContentMaxWidth === newState.chatFocusContentMaxWidth && oldState.chatSendAreaPaddingTop === newState.chatSendAreaPaddingTop && oldState.chatSendAreaPaddingLeft === newState.chatSendAreaPaddingLeft && oldState.chatSendAreaPaddingRight === newState.chatSendAreaPaddingRight && oldState.chatSendAreaPaddingBottom === newState.chatSendAreaPaddingBottom && oldState.composerHeight === newState.composerHeight && oldState.modelPickerHeight === newState.modelPickerHeight && oldState.composerLineHeight === newState.composerLineHeight && oldState.composerFontFamily === newState.composerFontFamily && oldState.composerFontSize === newState.composerFontSize && oldState.listItemHeight === newState.listItemHeight && oldState.textAreaPaddingTop === newState.textAreaPaddingTop && oldState.textAreaPaddingLeft === newState.textAreaPaddingLeft && oldState.textAreaPaddingRight === newState.textAreaPaddingRight && oldState.textAreaPaddingBottom === newState.textAreaPaddingBottom && oldRenderHtmlCss === newRenderHtmlCss;
|
|
2805
|
+
return oldState.initial === newState.initial && oldState.chatMessageFontFamily === newState.chatMessageFontFamily && oldState.chatMessageFontSize === newState.chatMessageFontSize && oldState.chatMessageLineHeight === newState.chatMessageLineHeight && oldState.chatFocusContentMaxWidth === newState.chatFocusContentMaxWidth && oldState.chatSendAreaPaddingTop === newState.chatSendAreaPaddingTop && oldState.chatSendAreaPaddingLeft === newState.chatSendAreaPaddingLeft && oldState.chatSendAreaPaddingRight === newState.chatSendAreaPaddingRight && oldState.chatSendAreaPaddingBottom === newState.chatSendAreaPaddingBottom && oldState.composerHeight === newState.composerHeight && oldState.composerAttachmentsHeight === newState.composerAttachmentsHeight && oldState.modelPickerHeight === newState.modelPickerHeight && oldState.composerLineHeight === newState.composerLineHeight && oldState.composerFontFamily === newState.composerFontFamily && oldState.composerFontSize === newState.composerFontSize && oldState.listItemHeight === newState.listItemHeight && oldState.textAreaPaddingTop === newState.textAreaPaddingTop && oldState.textAreaPaddingLeft === newState.textAreaPaddingLeft && oldState.textAreaPaddingRight === newState.textAreaPaddingRight && oldState.textAreaPaddingBottom === newState.textAreaPaddingBottom && oldRenderHtmlCss === newRenderHtmlCss;
|
|
2613
2806
|
};
|
|
2614
2807
|
|
|
2615
2808
|
const diffFocus = (oldState, newState) => {
|
|
@@ -2630,7 +2823,7 @@ const isEqualComposerAttachments = (a, b) => {
|
|
|
2630
2823
|
return false;
|
|
2631
2824
|
}
|
|
2632
2825
|
for (let i = 0; i < a.length; i++) {
|
|
2633
|
-
if (a[i].attachmentId !== b[i].attachmentId || a[i].displayType !== b[i].displayType || a[i].mimeType !== b[i].mimeType || a[i].name !== b[i].name || a[i].size !== b[i].size) {
|
|
2826
|
+
if (a[i].attachmentId !== b[i].attachmentId || a[i].displayType !== b[i].displayType || a[i].mimeType !== b[i].mimeType || a[i].name !== b[i].name || a[i].previewSrc !== b[i].previewSrc || a[i].size !== b[i].size) {
|
|
2634
2827
|
return false;
|
|
2635
2828
|
}
|
|
2636
2829
|
}
|
|
@@ -2663,7 +2856,7 @@ const isEqualVisibleModels = (a, b) => {
|
|
|
2663
2856
|
};
|
|
2664
2857
|
|
|
2665
2858
|
const isEqual = (oldState, newState) => {
|
|
2666
|
-
return oldState.addContextButtonEnabled === newState.addContextButtonEnabled && oldState.agentMode === newState.agentMode && oldState.agentModePickerOpen === newState.agentModePickerOpen && oldState.authEnabled === newState.authEnabled && oldState.authErrorMessage === newState.authErrorMessage && oldState.authStatus === newState.authStatus && isEqualComposerAttachments(oldState.composerAttachments, newState.composerAttachments) && oldState.composerDropActive === newState.composerDropActive && oldState.composerDropEnabled === newState.composerDropEnabled && oldState.composerValue === newState.composerValue && oldState.initial === newState.initial && oldState.modelPickerOpen === newState.modelPickerOpen && oldState.modelPickerSearchValue === newState.modelPickerSearchValue && isEqualVisibleModels(oldState.visibleModels, newState.visibleModels) && oldState.listFocusedIndex === newState.listFocusedIndex && isEqualProjectExpandedIds(oldState.projectExpandedIds, newState.projectExpandedIds) && oldState.projectListScrollTop === newState.projectListScrollTop && oldState.reasoningEffort === newState.reasoningEffort && oldState.reasoningEffortPickerOpen === newState.reasoningEffortPickerOpen && oldState.reasoningPickerEnabled === newState.reasoningPickerEnabled && oldState.renamingSessionId === newState.renamingSessionId && oldState.selectedModelId === newState.selectedModelId && oldState.selectedProjectId === newState.selectedProjectId && oldState.selectedSessionId === newState.selectedSessionId && oldState.showRunMode === newState.showRunMode && oldState.runMode === newState.runMode && oldState.runModePickerOpen === newState.runModePickerOpen && oldState.sessions === newState.sessions && oldState.tokensMax === newState.tokensMax && oldState.tokensUsed === newState.tokensUsed && oldState.usageOverviewEnabled === newState.usageOverviewEnabled && oldState.useChatMathWorker === newState.useChatMathWorker && oldState.viewMode === newState.viewMode && oldState.voiceDictationEnabled === newState.voiceDictationEnabled;
|
|
2859
|
+
return oldState.addContextButtonEnabled === newState.addContextButtonEnabled && oldState.agentMode === newState.agentMode && oldState.agentModePickerOpen === newState.agentModePickerOpen && oldState.authEnabled === newState.authEnabled && oldState.authErrorMessage === newState.authErrorMessage && oldState.authStatus === newState.authStatus && isEqualComposerAttachments(oldState.composerAttachments, newState.composerAttachments) && oldState.composerDropActive === newState.composerDropActive && oldState.composerDropEnabled === newState.composerDropEnabled && oldState.composerValue === newState.composerValue && oldState.hasSpaceForAgentModePicker === newState.hasSpaceForAgentModePicker && oldState.hasSpaceForRunModePicker === newState.hasSpaceForRunModePicker && oldState.initial === newState.initial && oldState.modelPickerOpen === newState.modelPickerOpen && oldState.modelPickerSearchValue === newState.modelPickerSearchValue && isEqualVisibleModels(oldState.visibleModels, newState.visibleModels) && oldState.listFocusedIndex === newState.listFocusedIndex && isEqualProjectExpandedIds(oldState.projectExpandedIds, newState.projectExpandedIds) && oldState.projectListScrollTop === newState.projectListScrollTop && oldState.reasoningEffort === newState.reasoningEffort && oldState.reasoningEffortPickerOpen === newState.reasoningEffortPickerOpen && oldState.reasoningPickerEnabled === newState.reasoningPickerEnabled && oldState.renamingSessionId === newState.renamingSessionId && oldState.selectedModelId === newState.selectedModelId && oldState.selectedProjectId === newState.selectedProjectId && oldState.selectedSessionId === newState.selectedSessionId && oldState.showRunMode === newState.showRunMode && oldState.runMode === newState.runMode && oldState.runModePickerOpen === newState.runModePickerOpen && oldState.sessions === newState.sessions && oldState.tokensMax === newState.tokensMax && oldState.tokensUsed === newState.tokensUsed && oldState.usageOverviewEnabled === newState.usageOverviewEnabled && oldState.useChatMathWorker === newState.useChatMathWorker && oldState.viewMode === newState.viewMode && oldState.voiceDictationEnabled === newState.voiceDictationEnabled;
|
|
2667
2860
|
};
|
|
2668
2861
|
|
|
2669
2862
|
const diffScrollTop = (oldState, newState) => {
|
|
@@ -2684,10 +2877,7 @@ const RenderIncremental = 11;
|
|
|
2684
2877
|
const RenderScrollTop = 12;
|
|
2685
2878
|
|
|
2686
2879
|
const diffValue = (oldState, newState) => {
|
|
2687
|
-
|
|
2688
|
-
return true;
|
|
2689
|
-
}
|
|
2690
|
-
return newState.inputSource !== 'script';
|
|
2880
|
+
return oldState.composerValue === newState.composerValue || newState.inputSource !== 'script';
|
|
2691
2881
|
};
|
|
2692
2882
|
|
|
2693
2883
|
const modules = [isEqual, diffValue, diffSelection, diffFocus, isEqual$1, diffFocus, diffScrollTop];
|
|
@@ -2709,8 +2899,7 @@ const diff2 = uid => {
|
|
|
2709
2899
|
newState,
|
|
2710
2900
|
oldState
|
|
2711
2901
|
} = get$1(uid);
|
|
2712
|
-
|
|
2713
|
-
return result;
|
|
2902
|
+
return diff(oldState, newState);
|
|
2714
2903
|
};
|
|
2715
2904
|
|
|
2716
2905
|
const getAuthState = state => {
|
|
@@ -3051,7 +3240,8 @@ const openModelPicker = state => {
|
|
|
3051
3240
|
return {
|
|
3052
3241
|
...state,
|
|
3053
3242
|
agentModePickerOpen: false,
|
|
3054
|
-
focus: 'model-picker-input',
|
|
3243
|
+
focus: modelPickerOpen ? 'model-picker-input' : state.focus,
|
|
3244
|
+
focused: modelPickerOpen ? true : state.focused,
|
|
3055
3245
|
modelPickerHeight: getModelPickerHeight(state.modelPickerHeaderHeight, visibleModels.length),
|
|
3056
3246
|
modelPickerListScrollTop: 0,
|
|
3057
3247
|
modelPickerOpen,
|
|
@@ -3067,6 +3257,10 @@ const getKeyBindings = () => {
|
|
|
3067
3257
|
command: 'Chat.chatInputHistoryDown',
|
|
3068
3258
|
key: DownArrow,
|
|
3069
3259
|
when: FocusChatInput
|
|
3260
|
+
}, {
|
|
3261
|
+
command: 'Chat.pasteInput',
|
|
3262
|
+
key: CtrlCmd | KeyV,
|
|
3263
|
+
when: FocusChatInput
|
|
3070
3264
|
}, {
|
|
3071
3265
|
command: 'Chat.chatInputHistoryUp',
|
|
3072
3266
|
key: UpArrow,
|
|
@@ -3087,6 +3281,10 @@ const getKeyBindings = () => {
|
|
|
3087
3281
|
command: 'Chat.chatListFocusPrevious',
|
|
3088
3282
|
key: UpArrow,
|
|
3089
3283
|
when: FocusChatList
|
|
3284
|
+
}, {
|
|
3285
|
+
command: 'Chat.handleClickNew',
|
|
3286
|
+
key: CtrlCmd | KeyN,
|
|
3287
|
+
when: FocusChatInput
|
|
3090
3288
|
}, {
|
|
3091
3289
|
command: 'Chat.handleSubmit',
|
|
3092
3290
|
key: Enter,
|
|
@@ -3106,6 +3304,24 @@ const getKeyBindings = () => {
|
|
|
3106
3304
|
}];
|
|
3107
3305
|
};
|
|
3108
3306
|
|
|
3307
|
+
const getMenuEntriesChatAttachment = (attachmentId, previewSrc) => {
|
|
3308
|
+
return [{
|
|
3309
|
+
args: [previewSrc],
|
|
3310
|
+
command: 'Chat.openChatAttachmentInNewTab',
|
|
3311
|
+
flags: None,
|
|
3312
|
+
id: 'openImageInNewTab',
|
|
3313
|
+
// @ts-ignore
|
|
3314
|
+
label: openImageInNewTab()
|
|
3315
|
+
}, {
|
|
3316
|
+
args: [attachmentId],
|
|
3317
|
+
command: 'Chat.removeComposerAttachment',
|
|
3318
|
+
flags: None,
|
|
3319
|
+
id: 'removeAttachment',
|
|
3320
|
+
// @ts-ignore
|
|
3321
|
+
label: removeAttachment()
|
|
3322
|
+
}];
|
|
3323
|
+
};
|
|
3324
|
+
|
|
3109
3325
|
const getMenuEntriesChatHeader = () => {
|
|
3110
3326
|
// TODO
|
|
3111
3327
|
return [{
|
|
@@ -3165,14 +3381,24 @@ const Composer = 'composer';
|
|
|
3165
3381
|
const Search = 'search';
|
|
3166
3382
|
const ComposerDropTarget = 'composer-drop-target';
|
|
3167
3383
|
const ComposerAttachmentPrefix = 'composer-attachment:';
|
|
3384
|
+
const ComposerAttachmentPreviewPrefix = 'composer-attachment-preview:';
|
|
3385
|
+
const ComposerAttachmentRemovePrefix = 'composer-attachment-remove:';
|
|
3386
|
+
const ComposerAttachmentPreviewOverlay = 'composer-attachment-preview-overlay';
|
|
3168
3387
|
const AddContext = 'add-context';
|
|
3169
3388
|
const Dictate = 'dictate';
|
|
3170
3389
|
const CreatePullRequest$1 = 'create-pull-request';
|
|
3390
|
+
const FocusAddAction = 'focus-add-action';
|
|
3391
|
+
const FocusOpenInVsCode = 'focus-open-in-vscode';
|
|
3392
|
+
const FocusCommit = 'focus-commit';
|
|
3393
|
+
const FocusOpenTerminal = 'focus-open-terminal';
|
|
3394
|
+
const FocusShowDiff = 'focus-show-diff';
|
|
3171
3395
|
const Send = 'send';
|
|
3396
|
+
const ScrollDown = 'scroll-down';
|
|
3172
3397
|
const Back = 'back';
|
|
3173
3398
|
const ModelPickerToggle = 'model-picker-toggle';
|
|
3174
3399
|
const ModelPickerSearch = 'model-picker-search';
|
|
3175
3400
|
const ModelPickerList = 'model-picker-list';
|
|
3401
|
+
const PickerList = 'picker-list';
|
|
3176
3402
|
const AgentModePickerToggle = 'agent-mode-picker-toggle';
|
|
3177
3403
|
const AgentModePickerItemPrefix = 'agent-mode-picker-item:';
|
|
3178
3404
|
const ReasoningEffortPickerToggle = 'reasoning-effort-picker-toggle';
|
|
@@ -3191,6 +3417,7 @@ const Login = 'login';
|
|
|
3191
3417
|
const Logout = 'logout';
|
|
3192
3418
|
const CloseChat = 'close-chat';
|
|
3193
3419
|
const SessionDelete = 'SessionDelete';
|
|
3420
|
+
const ProjectDelete = 'ProjectDelete';
|
|
3194
3421
|
const ProjectPrefix = 'project:';
|
|
3195
3422
|
const SessionPrefix = 'session:';
|
|
3196
3423
|
const RenamePrefix = 'session-rename:';
|
|
@@ -3234,6 +3461,30 @@ const getModelPickerItemInputName = modelId => {
|
|
|
3234
3461
|
const getComposerAttachmentInputName = attachmentId => {
|
|
3235
3462
|
return `${ComposerAttachmentPrefix}${attachmentId}`;
|
|
3236
3463
|
};
|
|
3464
|
+
const isComposerAttachmentInputName = name => {
|
|
3465
|
+
return name.startsWith(ComposerAttachmentPrefix);
|
|
3466
|
+
};
|
|
3467
|
+
const getAttachmentIdFromComposerAttachmentInputName = name => {
|
|
3468
|
+
return name.slice(ComposerAttachmentPrefix.length);
|
|
3469
|
+
};
|
|
3470
|
+
const getComposerAttachmentRemoveInputName = attachmentId => {
|
|
3471
|
+
return `${ComposerAttachmentRemovePrefix}${attachmentId}`;
|
|
3472
|
+
};
|
|
3473
|
+
const isComposerAttachmentPreviewInputName = name => {
|
|
3474
|
+
return name.startsWith(ComposerAttachmentPreviewPrefix);
|
|
3475
|
+
};
|
|
3476
|
+
const getAttachmentIdFromComposerAttachmentPreviewInputName = name => {
|
|
3477
|
+
return name.slice(ComposerAttachmentPreviewPrefix.length);
|
|
3478
|
+
};
|
|
3479
|
+
const isComposerAttachmentRemoveInputName = name => {
|
|
3480
|
+
return name.startsWith(ComposerAttachmentRemovePrefix);
|
|
3481
|
+
};
|
|
3482
|
+
const getAttachmentIdFromComposerAttachmentRemoveInputName = name => {
|
|
3483
|
+
return name.slice(ComposerAttachmentRemovePrefix.length);
|
|
3484
|
+
};
|
|
3485
|
+
const isComposerAttachmentPreviewOverlayInputName = name => {
|
|
3486
|
+
return name === ComposerAttachmentPreviewOverlay;
|
|
3487
|
+
};
|
|
3237
3488
|
const isModelPickerItemInputName = name => {
|
|
3238
3489
|
return name.startsWith(ModelPickerItemPrefix);
|
|
3239
3490
|
};
|
|
@@ -3275,17 +3526,27 @@ const menuEntryAddProject = {
|
|
|
3275
3526
|
id: 'addProject',
|
|
3276
3527
|
label: addProject()
|
|
3277
3528
|
};
|
|
3278
|
-
const getMenuEntriesChatProjectList = (projectId = '') => {
|
|
3529
|
+
const getMenuEntriesChatProjectList = (projectId = '', canRemoveProject = true) => {
|
|
3279
3530
|
if (!projectId) {
|
|
3280
3531
|
return [menuEntryAddProject];
|
|
3281
3532
|
}
|
|
3282
|
-
|
|
3533
|
+
const entries = [{
|
|
3283
3534
|
args: [getCreateSessionInProjectInputName(projectId)],
|
|
3284
3535
|
command: 'Chat.handleClick',
|
|
3285
3536
|
flags: None,
|
|
3286
3537
|
id: 'newChat',
|
|
3287
3538
|
label: newChat()
|
|
3288
3539
|
}, menuEntryAddProject];
|
|
3540
|
+
if (canRemoveProject) {
|
|
3541
|
+
entries.push({
|
|
3542
|
+
args: [ProjectDelete, projectId],
|
|
3543
|
+
command: 'Chat.handleClick',
|
|
3544
|
+
flags: None,
|
|
3545
|
+
id: 'removeProject',
|
|
3546
|
+
label: removeProject()
|
|
3547
|
+
});
|
|
3548
|
+
}
|
|
3549
|
+
return entries;
|
|
3289
3550
|
};
|
|
3290
3551
|
|
|
3291
3552
|
const getMenuEntriesProjectAddButton = () => {
|
|
@@ -3303,12 +3564,15 @@ const MenuChatHeader = 2179;
|
|
|
3303
3564
|
const MenuChatInput = 2180;
|
|
3304
3565
|
const MenuProjectAddButton = 2181;
|
|
3305
3566
|
const MenuChatProjectList = 2182;
|
|
3567
|
+
const MenuChatAttachment = 2183;
|
|
3306
3568
|
const getMenuEntryIds = () => {
|
|
3307
|
-
return [Chat$2, MenuChatList, MenuChatHeader, MenuChatInput, MenuProjectAddButton, MenuChatProjectList];
|
|
3569
|
+
return [Chat$2, MenuChatList, MenuChatHeader, MenuChatInput, MenuProjectAddButton, MenuChatProjectList, MenuChatAttachment];
|
|
3308
3570
|
};
|
|
3309
3571
|
|
|
3310
3572
|
const getMenuEntries = (menuId, props) => {
|
|
3311
3573
|
switch (props.menuId) {
|
|
3574
|
+
case MenuChatAttachment:
|
|
3575
|
+
return getMenuEntriesChatAttachment(props.attachmentId, props.previewSrc);
|
|
3312
3576
|
case MenuChatHeader:
|
|
3313
3577
|
return getMenuEntriesChatHeader();
|
|
3314
3578
|
case MenuChatInput:
|
|
@@ -3316,7 +3580,7 @@ const getMenuEntries = (menuId, props) => {
|
|
|
3316
3580
|
case MenuChatList:
|
|
3317
3581
|
return getMenuEntriesChatList();
|
|
3318
3582
|
case MenuChatProjectList:
|
|
3319
|
-
return getMenuEntriesChatProjectList(props.projectId);
|
|
3583
|
+
return getMenuEntriesChatProjectList(props.projectId, props.canRemoveProject);
|
|
3320
3584
|
case MenuProjectAddButton:
|
|
3321
3585
|
return getMenuEntriesProjectAddButton();
|
|
3322
3586
|
default:
|
|
@@ -3324,6 +3588,10 @@ const getMenuEntries = (menuId, props) => {
|
|
|
3324
3588
|
}
|
|
3325
3589
|
};
|
|
3326
3590
|
|
|
3591
|
+
const getMockOpenApiRequests = state => {
|
|
3592
|
+
return state.mockOpenApiRequests;
|
|
3593
|
+
};
|
|
3594
|
+
|
|
3327
3595
|
const getQuickPickMenuEntries = () => {
|
|
3328
3596
|
return [];
|
|
3329
3597
|
};
|
|
@@ -3413,6 +3681,15 @@ const handleChatListContextMenu = async (state, eventX, eventY) => {
|
|
|
3413
3681
|
};
|
|
3414
3682
|
};
|
|
3415
3683
|
|
|
3684
|
+
const focusInput = state => {
|
|
3685
|
+
return {
|
|
3686
|
+
...state,
|
|
3687
|
+
focus: 'composer',
|
|
3688
|
+
focused: true,
|
|
3689
|
+
listFocusedIndex: -1
|
|
3690
|
+
};
|
|
3691
|
+
};
|
|
3692
|
+
|
|
3416
3693
|
const generateSessionId = () => {
|
|
3417
3694
|
return crypto.randomUUID();
|
|
3418
3695
|
};
|
|
@@ -3428,14 +3705,93 @@ const createSession = async (state, projectIdOverride = '') => {
|
|
|
3428
3705
|
title: `Chat ${state.sessions.length + 1}`
|
|
3429
3706
|
};
|
|
3430
3707
|
await saveChatSession(session);
|
|
3431
|
-
return {
|
|
3708
|
+
return focusInput({
|
|
3432
3709
|
...state,
|
|
3433
3710
|
composerAttachments: [],
|
|
3711
|
+
composerAttachmentsHeight: 0,
|
|
3434
3712
|
projectExpandedIds: state.projectExpandedIds.includes(projectId) ? state.projectExpandedIds : [...state.projectExpandedIds, projectId],
|
|
3435
3713
|
renamingSessionId: '',
|
|
3436
3714
|
selectedProjectId: projectId,
|
|
3437
3715
|
selectedSessionId: id,
|
|
3438
3716
|
sessions: [...state.sessions, session]
|
|
3717
|
+
});
|
|
3718
|
+
};
|
|
3719
|
+
|
|
3720
|
+
const getBlankProjectId = (state, removedProjectId) => {
|
|
3721
|
+
return state.projects.find(project => project.id !== removedProjectId && project.name === '_blank')?.id || '';
|
|
3722
|
+
};
|
|
3723
|
+
const getNextViewMode = (state, hasSelectedSession) => {
|
|
3724
|
+
if (state.viewMode === 'chat-focus') {
|
|
3725
|
+
return 'chat-focus';
|
|
3726
|
+
}
|
|
3727
|
+
if (!hasSelectedSession) {
|
|
3728
|
+
return 'list';
|
|
3729
|
+
}
|
|
3730
|
+
return state.viewMode === 'detail' ? 'detail' : 'list';
|
|
3731
|
+
};
|
|
3732
|
+
const ensureExpandedProject = (state, projectExpandedIds, selectedProjectId, visibleSessions) => {
|
|
3733
|
+
if (state.viewMode !== 'chat-focus' || !selectedProjectId || visibleSessions.length === 0 || projectExpandedIds.includes(selectedProjectId)) {
|
|
3734
|
+
return projectExpandedIds;
|
|
3735
|
+
}
|
|
3736
|
+
return [...projectExpandedIds, selectedProjectId];
|
|
3737
|
+
};
|
|
3738
|
+
const deleteProject = async (state, projectId) => {
|
|
3739
|
+
const project = state.projects.find(candidate => candidate.id === projectId);
|
|
3740
|
+
if (!project || project.name === '_blank') {
|
|
3741
|
+
return state;
|
|
3742
|
+
}
|
|
3743
|
+
const blankProjectId = getBlankProjectId(state, projectId);
|
|
3744
|
+
if (!blankProjectId) {
|
|
3745
|
+
return state;
|
|
3746
|
+
}
|
|
3747
|
+
const projects = state.projects.filter(candidate => candidate.id !== projectId);
|
|
3748
|
+
const sessions = await Promise.all(state.sessions.map(async session => {
|
|
3749
|
+
if (session.projectId !== projectId) {
|
|
3750
|
+
return session;
|
|
3751
|
+
}
|
|
3752
|
+
const updatedSession = {
|
|
3753
|
+
...session,
|
|
3754
|
+
projectId: blankProjectId
|
|
3755
|
+
};
|
|
3756
|
+
await saveChatSession(updatedSession);
|
|
3757
|
+
return updatedSession;
|
|
3758
|
+
}));
|
|
3759
|
+
const selectedProjectId = !state.selectedProjectId || state.selectedProjectId === projectId || !projects.some(candidate => candidate.id === state.selectedProjectId) ? blankProjectId : state.selectedProjectId;
|
|
3760
|
+
const projectExpandedIds = state.projectExpandedIds.filter(expandedProjectId => expandedProjectId !== projectId && projects.some(candidate => candidate.id === expandedProjectId));
|
|
3761
|
+
const visibleSessions = getVisibleSessions(sessions, selectedProjectId);
|
|
3762
|
+
const nextProjectExpandedIds = ensureExpandedProject(state, projectExpandedIds, selectedProjectId, visibleSessions);
|
|
3763
|
+
if (visibleSessions.length === 0) {
|
|
3764
|
+
return {
|
|
3765
|
+
...state,
|
|
3766
|
+
composerAttachments: [],
|
|
3767
|
+
composerAttachmentsHeight: 0,
|
|
3768
|
+
projectExpandedIds: nextProjectExpandedIds,
|
|
3769
|
+
projects,
|
|
3770
|
+
selectedProjectId,
|
|
3771
|
+
selectedSessionId: '',
|
|
3772
|
+
sessions,
|
|
3773
|
+
viewMode: getNextViewMode(state, false)
|
|
3774
|
+
};
|
|
3775
|
+
}
|
|
3776
|
+
const selectedSessionId = visibleSessions.some(session => session.id === state.selectedSessionId) ? state.selectedSessionId : visibleSessions[0].id;
|
|
3777
|
+
const loadedSession = await getChatSession(selectedSessionId);
|
|
3778
|
+
const composerAttachments = await getComposerAttachments(selectedSessionId);
|
|
3779
|
+
const hydratedSessions = sessions.map(session => {
|
|
3780
|
+
if (session.id !== selectedSessionId || !loadedSession) {
|
|
3781
|
+
return session;
|
|
3782
|
+
}
|
|
3783
|
+
return loadedSession;
|
|
3784
|
+
});
|
|
3785
|
+
return {
|
|
3786
|
+
...state,
|
|
3787
|
+
composerAttachments,
|
|
3788
|
+
composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, state.width),
|
|
3789
|
+
projectExpandedIds: nextProjectExpandedIds,
|
|
3790
|
+
projects,
|
|
3791
|
+
selectedProjectId,
|
|
3792
|
+
selectedSessionId,
|
|
3793
|
+
sessions: hydratedSessions,
|
|
3794
|
+
viewMode: getNextViewMode(state, true)
|
|
3439
3795
|
};
|
|
3440
3796
|
};
|
|
3441
3797
|
|
|
@@ -3448,6 +3804,12 @@ const getModelPickerClickIndex = (y, height, eventY, modelPickerBottomOffset, mo
|
|
|
3448
3804
|
return Math.floor(relativeY / modelPickerItemHeight);
|
|
3449
3805
|
};
|
|
3450
3806
|
|
|
3807
|
+
const AutoScrollTopA = Number.MAX_SAFE_INTEGER;
|
|
3808
|
+
const AutoScrollTopB = Number.MAX_SAFE_INTEGER - 1;
|
|
3809
|
+
const getNextAutoScrollTop = currentScrollTop => {
|
|
3810
|
+
return currentScrollTop === AutoScrollTopA ? AutoScrollTopB : AutoScrollTopA;
|
|
3811
|
+
};
|
|
3812
|
+
|
|
3451
3813
|
const openFolder = async () => {
|
|
3452
3814
|
try {
|
|
3453
3815
|
return await invoke('FilePicker.showDirectoryPicker');
|
|
@@ -3457,24 +3819,32 @@ const openFolder = async () => {
|
|
|
3457
3819
|
};
|
|
3458
3820
|
|
|
3459
3821
|
const selectProject = async (state, projectId) => {
|
|
3460
|
-
|
|
3822
|
+
const {
|
|
3823
|
+
selectedProjectId,
|
|
3824
|
+
selectedSessionId,
|
|
3825
|
+
sessions,
|
|
3826
|
+
viewMode,
|
|
3827
|
+
width
|
|
3828
|
+
} = state;
|
|
3829
|
+
if (!projectId || selectedProjectId === projectId) {
|
|
3461
3830
|
return state;
|
|
3462
3831
|
}
|
|
3463
|
-
const visibleSessions = getVisibleSessions(
|
|
3832
|
+
const visibleSessions = getVisibleSessions(sessions, projectId);
|
|
3464
3833
|
if (visibleSessions.length === 0) {
|
|
3465
3834
|
return {
|
|
3466
3835
|
...state,
|
|
3467
3836
|
composerAttachments: [],
|
|
3837
|
+
composerAttachmentsHeight: 0,
|
|
3468
3838
|
selectedProjectId: projectId,
|
|
3469
3839
|
selectedSessionId: '',
|
|
3470
|
-
viewMode:
|
|
3840
|
+
viewMode: viewMode === 'chat-focus' ? 'chat-focus' : 'list'
|
|
3471
3841
|
};
|
|
3472
3842
|
}
|
|
3473
|
-
const currentSessionVisible = visibleSessions.some(session => session.id ===
|
|
3474
|
-
const nextSelectedSessionId = currentSessionVisible ?
|
|
3843
|
+
const currentSessionVisible = visibleSessions.some(session => session.id === selectedSessionId);
|
|
3844
|
+
const nextSelectedSessionId = currentSessionVisible ? selectedSessionId : visibleSessions[0].id;
|
|
3475
3845
|
const loadedSession = await getChatSession(nextSelectedSessionId);
|
|
3476
3846
|
const composerAttachments = await getComposerAttachments(nextSelectedSessionId);
|
|
3477
|
-
const
|
|
3847
|
+
const hydratedSessions = sessions.map(session => {
|
|
3478
3848
|
if (session.id !== nextSelectedSessionId || !loadedSession) {
|
|
3479
3849
|
return session;
|
|
3480
3850
|
}
|
|
@@ -3483,10 +3853,11 @@ const selectProject = async (state, projectId) => {
|
|
|
3483
3853
|
return {
|
|
3484
3854
|
...state,
|
|
3485
3855
|
composerAttachments,
|
|
3856
|
+
composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, width),
|
|
3486
3857
|
selectedProjectId: projectId,
|
|
3487
3858
|
selectedSessionId: nextSelectedSessionId,
|
|
3488
|
-
sessions,
|
|
3489
|
-
viewMode:
|
|
3859
|
+
sessions: hydratedSessions,
|
|
3860
|
+
viewMode: viewMode === 'chat-focus' ? 'chat-focus' : 'detail'
|
|
3490
3861
|
};
|
|
3491
3862
|
};
|
|
3492
3863
|
|
|
@@ -3525,6 +3896,7 @@ const handleClickCreateProject = async state => {
|
|
|
3525
3896
|
return {
|
|
3526
3897
|
...state,
|
|
3527
3898
|
composerAttachments: [],
|
|
3899
|
+
composerAttachmentsHeight: 0,
|
|
3528
3900
|
projects: [...state.projects, project],
|
|
3529
3901
|
selectedProjectId: project.id,
|
|
3530
3902
|
selectedSessionId: '',
|
|
@@ -3563,8 +3935,7 @@ const executeProvider = async ({
|
|
|
3563
3935
|
}) => {
|
|
3564
3936
|
await activateByEvent(event, assetDir, platform);
|
|
3565
3937
|
// @ts-ignore
|
|
3566
|
-
|
|
3567
|
-
return result;
|
|
3938
|
+
return invoke$2(method, ...params);
|
|
3568
3939
|
};
|
|
3569
3940
|
|
|
3570
3941
|
const CommandExecute = 'ExtensionHostCommand.executeCommand';
|
|
@@ -4015,6 +4386,54 @@ const getBasicChatTools = async (agentMode = defaultAgentMode, questionToolEnabl
|
|
|
4015
4386
|
}
|
|
4016
4387
|
};
|
|
4017
4388
|
|
|
4389
|
+
const getAttachmentTextPart = attachment => {
|
|
4390
|
+
switch (attachment.displayType) {
|
|
4391
|
+
case 'file':
|
|
4392
|
+
return {
|
|
4393
|
+
text: `Attached file "${attachment.name}" (${attachment.mimeType || 'application/octet-stream'}, ${attachment.size} bytes).`,
|
|
4394
|
+
type: 'input_text'
|
|
4395
|
+
};
|
|
4396
|
+
case 'image':
|
|
4397
|
+
return {
|
|
4398
|
+
text: `Attached image "${attachment.name}" could not be encoded for the AI request.`,
|
|
4399
|
+
type: 'input_text'
|
|
4400
|
+
};
|
|
4401
|
+
case 'invalid-image':
|
|
4402
|
+
return {
|
|
4403
|
+
text: `Attached file "${attachment.name}" could not be processed as a valid image.`,
|
|
4404
|
+
type: 'input_text'
|
|
4405
|
+
};
|
|
4406
|
+
case 'text-file':
|
|
4407
|
+
return {
|
|
4408
|
+
text: attachment.textContent ? `Attached text file "${attachment.name}" (${attachment.mimeType || 'text/plain'}):\n\n${attachment.textContent}` : `Attached text file "${attachment.name}" (${attachment.mimeType || 'text/plain'}).`,
|
|
4409
|
+
type: 'input_text'
|
|
4410
|
+
};
|
|
4411
|
+
}
|
|
4412
|
+
};
|
|
4413
|
+
const getChatMessageOpenAiContent = message => {
|
|
4414
|
+
if (!message.attachments || message.attachments.length === 0) {
|
|
4415
|
+
return message.text;
|
|
4416
|
+
}
|
|
4417
|
+
const parts = [];
|
|
4418
|
+
if (message.text) {
|
|
4419
|
+
parts.push({
|
|
4420
|
+
text: message.text,
|
|
4421
|
+
type: 'input_text'
|
|
4422
|
+
});
|
|
4423
|
+
}
|
|
4424
|
+
for (const attachment of message.attachments) {
|
|
4425
|
+
if (attachment.displayType === 'image' && attachment.previewSrc) {
|
|
4426
|
+
parts.push({
|
|
4427
|
+
image_url: attachment.previewSrc,
|
|
4428
|
+
type: 'input_image'
|
|
4429
|
+
});
|
|
4430
|
+
continue;
|
|
4431
|
+
}
|
|
4432
|
+
parts.push(getAttachmentTextPart(attachment));
|
|
4433
|
+
}
|
|
4434
|
+
return parts;
|
|
4435
|
+
};
|
|
4436
|
+
|
|
4018
4437
|
const getClientRequestIdHeader = () => {
|
|
4019
4438
|
return {
|
|
4020
4439
|
'x-client-request-id': crypto.randomUUID()
|
|
@@ -4030,11 +4449,22 @@ const getMockAiResponse = async (userMessage, delayInMs) => {
|
|
|
4030
4449
|
return `Mock AI response: I received "${userMessage}".`;
|
|
4031
4450
|
};
|
|
4032
4451
|
|
|
4452
|
+
let requests = [];
|
|
4453
|
+
const reset$2 = () => {
|
|
4454
|
+
requests = [];
|
|
4455
|
+
};
|
|
4456
|
+
const capture = request => {
|
|
4457
|
+
requests = [...requests, request];
|
|
4458
|
+
};
|
|
4459
|
+
const getAll = () => {
|
|
4460
|
+
return requests;
|
|
4461
|
+
};
|
|
4462
|
+
|
|
4033
4463
|
let queue = [];
|
|
4034
4464
|
let waiters = [];
|
|
4035
4465
|
let finished = false;
|
|
4036
4466
|
let errorResult;
|
|
4037
|
-
const reset$
|
|
4467
|
+
const reset$1 = () => {
|
|
4038
4468
|
queue = [];
|
|
4039
4469
|
waiters = [];
|
|
4040
4470
|
finished = false;
|
|
@@ -4108,6 +4538,47 @@ const readNextChunk = async () => {
|
|
|
4108
4538
|
return promise;
|
|
4109
4539
|
};
|
|
4110
4540
|
|
|
4541
|
+
const lastRequestSummaryToken = '__MOCK_OPENAPI_LAST_REQUEST_SUMMARY__';
|
|
4542
|
+
const getLastRequestSummary = () => {
|
|
4543
|
+
const requests = getAll();
|
|
4544
|
+
const request = requests.at(-1);
|
|
4545
|
+
if (!request || !request.payload || typeof request.payload !== 'object') {
|
|
4546
|
+
return 'mock-request-summary images=0 text-files=0';
|
|
4547
|
+
}
|
|
4548
|
+
const input = Reflect.get(request.payload, 'input');
|
|
4549
|
+
if (!Array.isArray(input) || input.length === 0) {
|
|
4550
|
+
return 'mock-request-summary images=0 text-files=0';
|
|
4551
|
+
}
|
|
4552
|
+
let imageCount = 0;
|
|
4553
|
+
let textFileCount = 0;
|
|
4554
|
+
for (const item of input) {
|
|
4555
|
+
if (!item || typeof item !== 'object') {
|
|
4556
|
+
continue;
|
|
4557
|
+
}
|
|
4558
|
+
const content = Reflect.get(item, 'content');
|
|
4559
|
+
if (!Array.isArray(content)) {
|
|
4560
|
+
continue;
|
|
4561
|
+
}
|
|
4562
|
+
for (const part of content) {
|
|
4563
|
+
if (!part || typeof part !== 'object') {
|
|
4564
|
+
continue;
|
|
4565
|
+
}
|
|
4566
|
+
const type = Reflect.get(part, 'type');
|
|
4567
|
+
if (type === 'input_image') {
|
|
4568
|
+
imageCount++;
|
|
4569
|
+
continue;
|
|
4570
|
+
}
|
|
4571
|
+
if (type !== 'input_text') {
|
|
4572
|
+
continue;
|
|
4573
|
+
}
|
|
4574
|
+
const text = Reflect.get(part, 'text');
|
|
4575
|
+
if (typeof text === 'string' && text.startsWith('Attached text file "')) {
|
|
4576
|
+
textFileCount++;
|
|
4577
|
+
}
|
|
4578
|
+
}
|
|
4579
|
+
}
|
|
4580
|
+
return `mock-request-summary images=${imageCount} text-files=${textFileCount}`;
|
|
4581
|
+
};
|
|
4111
4582
|
const getResponseFunctionCalls$1 = value => {
|
|
4112
4583
|
if (!value || typeof value !== 'object') {
|
|
4113
4584
|
return [];
|
|
@@ -4305,9 +4776,10 @@ const getMockOpenApiAssistantText = async (stream, onTextChunk, onToolCallsChunk
|
|
|
4305
4776
|
}
|
|
4306
4777
|
continue;
|
|
4307
4778
|
}
|
|
4308
|
-
|
|
4779
|
+
const resolvedChunk = chunk === lastRequestSummaryToken ? getLastRequestSummary() : chunk;
|
|
4780
|
+
text += resolvedChunk;
|
|
4309
4781
|
if (stream && onTextChunk) {
|
|
4310
|
-
await onTextChunk(
|
|
4782
|
+
await onTextChunk(resolvedChunk);
|
|
4311
4783
|
}
|
|
4312
4784
|
}
|
|
4313
4785
|
if (!requestDone && remainder) {
|
|
@@ -4478,7 +4950,6 @@ const getTextContent = content => {
|
|
|
4478
4950
|
return textParts.join('\n');
|
|
4479
4951
|
};
|
|
4480
4952
|
|
|
4481
|
-
const defaultMaxToolCalls = 10;
|
|
4482
4953
|
const errorPrefixRegex = /^Error:\s*/;
|
|
4483
4954
|
const notFoundErrorRegex = /not[\s_-]?found|enoent/i;
|
|
4484
4955
|
const getOpenAiTools = tools => {
|
|
@@ -4508,7 +4979,7 @@ const getOpenAiTools = tools => {
|
|
|
4508
4979
|
};
|
|
4509
4980
|
});
|
|
4510
4981
|
};
|
|
4511
|
-
const getOpenAiParams = (input, modelId, stream, includeObfuscation, tools, webSearchEnabled, maxToolCalls, systemPrompt = '', previousResponseId, reasoningEffort) => {
|
|
4982
|
+
const getOpenAiParams = (input, modelId, stream, includeObfuscation, tools, webSearchEnabled, maxToolCalls, systemPrompt = '', previousResponseId, reasoningEffort, supportsReasoningEffort = false) => {
|
|
4512
4983
|
const openAiTools = getOpenAiTools(tools);
|
|
4513
4984
|
return {
|
|
4514
4985
|
input,
|
|
@@ -4527,7 +4998,7 @@ const getOpenAiParams = (input, modelId, stream, includeObfuscation, tools, webS
|
|
|
4527
4998
|
...(previousResponseId ? {
|
|
4528
4999
|
previous_response_id: previousResponseId
|
|
4529
5000
|
} : {}),
|
|
4530
|
-
...(reasoningEffort ? {
|
|
5001
|
+
...(reasoningEffort && supportsReasoningEffort ? {
|
|
4531
5002
|
reasoning: {
|
|
4532
5003
|
effort: reasoningEffort
|
|
4533
5004
|
}
|
|
@@ -5134,6 +5605,7 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
|
|
|
5134
5605
|
questionToolEnabled = false,
|
|
5135
5606
|
reasoningEffort,
|
|
5136
5607
|
stream,
|
|
5608
|
+
supportsReasoningEffort = false,
|
|
5137
5609
|
systemPrompt = '',
|
|
5138
5610
|
toolEnablement,
|
|
5139
5611
|
useChatNetworkWorkerForRequests = false,
|
|
@@ -5144,7 +5616,7 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
|
|
|
5144
5616
|
stream: false
|
|
5145
5617
|
};
|
|
5146
5618
|
const openAiInput = messages.map(message => ({
|
|
5147
|
-
content: message
|
|
5619
|
+
content: getChatMessageOpenAiContent(message),
|
|
5148
5620
|
role: message.role
|
|
5149
5621
|
}));
|
|
5150
5622
|
const tools = await getBasicChatTools(agentMode, questionToolEnabled, toolEnablement);
|
|
@@ -5152,7 +5624,7 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
|
|
|
5152
5624
|
const maxToolIterations = safeMaxToolCalls - 1;
|
|
5153
5625
|
let previousResponseId;
|
|
5154
5626
|
for (let i = 0; i <= maxToolIterations; i++) {
|
|
5155
|
-
const postBody = getOpenAiParams(openAiInput, modelId, stream, includeObfuscation, tools, webSearchEnabled, safeMaxToolCalls, systemPrompt, previousResponseId, reasoningEffort);
|
|
5627
|
+
const postBody = getOpenAiParams(openAiInput, modelId, stream, includeObfuscation, tools, webSearchEnabled, safeMaxToolCalls, systemPrompt, previousResponseId, reasoningEffort, supportsReasoningEffort);
|
|
5156
5628
|
if (stream) {
|
|
5157
5629
|
const streamResult = useChatNetworkWorkerForRequests ? await (async () => {
|
|
5158
5630
|
const requestResult = await makeStreamingApiRequest({
|
|
@@ -5537,12 +6009,22 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
|
|
|
5537
6009
|
};
|
|
5538
6010
|
};
|
|
5539
6011
|
|
|
6012
|
+
const imageRegex = /\b(?:image|vision|multimodal)\b/i;
|
|
6013
|
+
const unsupportedRegex = /\bdoes(?:\s+not|n't)\s+support|not\s+support(?:ed)?|unsupported\b/i;
|
|
5540
6014
|
const isOffline = () => {
|
|
5541
6015
|
if (!globalThis.navigator) {
|
|
5542
6016
|
return false;
|
|
5543
6017
|
}
|
|
5544
6018
|
return globalThis.navigator.onLine === false;
|
|
5545
6019
|
};
|
|
6020
|
+
const isImageNotSupportedError = errorResult => {
|
|
6021
|
+
const haystack = [errorResult.errorCode, errorResult.errorMessage, errorResult.errorType].filter(Boolean).join(' ');
|
|
6022
|
+
return imageRegex.test(haystack) && unsupportedRegex.test(haystack);
|
|
6023
|
+
};
|
|
6024
|
+
const getImageNotSupportedMessage = modelName => {
|
|
6025
|
+
const subject = modelName ? `${modelName} does not support image attachments.` : 'This model does not support image attachments.';
|
|
6026
|
+
return `${subject} Choose a vision-capable model like GPT-4o Mini or GPT-4o, or remove the image and try again.`;
|
|
6027
|
+
};
|
|
5546
6028
|
const getOpenApiErrorMessage = errorResult => {
|
|
5547
6029
|
switch (errorResult.details) {
|
|
5548
6030
|
case 'http-error':
|
|
@@ -5556,6 +6038,9 @@ const getOpenApiErrorMessage = errorResult => {
|
|
|
5556
6038
|
const status = typeof errorResult.statusCode === 'number' ? errorResult.statusCode : 401;
|
|
5557
6039
|
return `OpenAI request failed (Status ${status}): Invalid API key. Please verify your OpenAI API key in Chat Settings.`;
|
|
5558
6040
|
}
|
|
6041
|
+
if (isImageNotSupportedError(errorResult)) {
|
|
6042
|
+
return getImageNotSupportedMessage();
|
|
6043
|
+
}
|
|
5559
6044
|
if (errorResult.statusCode === 429) {
|
|
5560
6045
|
let prefix = 'OpenAI rate limit exceeded (429)';
|
|
5561
6046
|
if (hasErrorCode) {
|
|
@@ -5596,7 +6081,7 @@ const getOpenApiErrorMessage = errorResult => {
|
|
|
5596
6081
|
return openApiRequestFailedMessage;
|
|
5597
6082
|
case 'tool-iterations-exhausted':
|
|
5598
6083
|
{
|
|
5599
|
-
const rounds = typeof errorResult.iterationLimit === 'number' ? errorResult.iterationLimit :
|
|
6084
|
+
const rounds = typeof errorResult.iterationLimit === 'number' ? errorResult.iterationLimit : defaultMaxToolCalls;
|
|
5600
6085
|
return `OpenAI request ended after ${rounds} tool-call rounds without a final assistant response. This usually means the model got stuck in a tool loop. Please try rephrasing your request, reducing scope, or switching to a different model.`;
|
|
5601
6086
|
}
|
|
5602
6087
|
}
|
|
@@ -6004,23 +6489,12 @@ const isOpenRouterModel = (selectedModelId, models) => {
|
|
|
6004
6489
|
return selectedModelId.toLowerCase().startsWith('openrouter/');
|
|
6005
6490
|
};
|
|
6006
6491
|
|
|
6007
|
-
|
|
6008
|
-
|
|
6009
|
-
|
|
6010
|
-
|
|
6011
|
-
const
|
|
6012
|
-
|
|
6013
|
-
};
|
|
6014
|
-
const getAll = () => {
|
|
6015
|
-
return requests;
|
|
6016
|
-
};
|
|
6017
|
-
|
|
6018
|
-
/* eslint-disable prefer-destructuring */
|
|
6019
|
-
|
|
6020
|
-
const trailingSlashesRegex = /\/+$/;
|
|
6021
|
-
const getBackendCompletionsEndpoint = backendUrl => {
|
|
6022
|
-
const trimmedBackendUrl = backendUrl.replace(trailingSlashesRegex, '');
|
|
6023
|
-
return `${trimmedBackendUrl}/v1/chat/completions`;
|
|
6492
|
+
/* eslint-disable prefer-destructuring */
|
|
6493
|
+
|
|
6494
|
+
const trailingSlashesRegex = /\/+$/;
|
|
6495
|
+
const getBackendCompletionsEndpoint = backendUrl => {
|
|
6496
|
+
const trimmedBackendUrl = backendUrl.replace(trailingSlashesRegex, '');
|
|
6497
|
+
return `${trimmedBackendUrl}/v1/chat/completions`;
|
|
6024
6498
|
};
|
|
6025
6499
|
const getEffectiveBackendModelId = selectedModelId => {
|
|
6026
6500
|
const separatorIndex = selectedModelId.indexOf('/');
|
|
@@ -6029,6 +6503,9 @@ const getEffectiveBackendModelId = selectedModelId => {
|
|
|
6029
6503
|
}
|
|
6030
6504
|
return selectedModelId.slice(separatorIndex + 1);
|
|
6031
6505
|
};
|
|
6506
|
+
const hasImageAttachments = messages => {
|
|
6507
|
+
return messages.some(message => message.attachments?.some(attachment => attachment.displayType === 'image'));
|
|
6508
|
+
};
|
|
6032
6509
|
const getBackendAssistantText = async (messages, selectedModelId, backendUrl, authAccessToken, systemPrompt) => {
|
|
6033
6510
|
let response;
|
|
6034
6511
|
try {
|
|
@@ -6067,7 +6544,7 @@ const getAiResponse = async ({
|
|
|
6067
6544
|
authAccessToken,
|
|
6068
6545
|
authEnabled = false,
|
|
6069
6546
|
backendUrl = '',
|
|
6070
|
-
maxToolCalls =
|
|
6547
|
+
maxToolCalls = defaultMaxToolCalls,
|
|
6071
6548
|
messageId,
|
|
6072
6549
|
messages,
|
|
6073
6550
|
mockAiResponseDelay = 800,
|
|
@@ -6076,6 +6553,7 @@ const getAiResponse = async ({
|
|
|
6076
6553
|
nextMessageId,
|
|
6077
6554
|
onDataEvent,
|
|
6078
6555
|
onEventStreamFinished,
|
|
6556
|
+
onMockOpenApiRequestCaptured,
|
|
6079
6557
|
onTextChunk,
|
|
6080
6558
|
onToolCallsChunk,
|
|
6081
6559
|
openApiApiBaseUrl,
|
|
@@ -6151,7 +6629,15 @@ const getAiResponse = async ({
|
|
|
6151
6629
|
}
|
|
6152
6630
|
}
|
|
6153
6631
|
let text = '';
|
|
6154
|
-
|
|
6632
|
+
const usesOpenApiModel = isOpenApiModel(selectedModelId, models);
|
|
6633
|
+
const usesOpenRouterModel = isOpenRouterModel(selectedModelId, models);
|
|
6634
|
+
const selectedModel = models.find(model => model.id === selectedModelId);
|
|
6635
|
+
const supportsImages = selectedModel?.supportsImages ?? false;
|
|
6636
|
+
const supportsReasoningEffort = selectedModel?.supportsReasoningEffort ?? false;
|
|
6637
|
+
if (hasImageAttachments(messages) && !supportsImages) {
|
|
6638
|
+
text = getImageNotSupportedMessage(selectedModel?.name);
|
|
6639
|
+
}
|
|
6640
|
+
if (!text && authEnabled) {
|
|
6155
6641
|
if (!backendUrl) {
|
|
6156
6642
|
text = backendUrlRequiredMessage;
|
|
6157
6643
|
} else if (authAccessToken) {
|
|
@@ -6160,13 +6646,11 @@ const getAiResponse = async ({
|
|
|
6160
6646
|
text = backendAccessTokenRequiredMessage;
|
|
6161
6647
|
}
|
|
6162
6648
|
}
|
|
6163
|
-
const usesOpenApiModel = isOpenApiModel(selectedModelId, models);
|
|
6164
|
-
const usesOpenRouterModel = isOpenRouterModel(selectedModelId, models);
|
|
6165
6649
|
if (!text && usesOpenApiModel) {
|
|
6166
6650
|
const safeMaxToolCalls = Math.max(1, maxToolCalls);
|
|
6167
6651
|
if (useMockApi) {
|
|
6168
6652
|
const openAiInput = messages.map(message => ({
|
|
6169
|
-
content: message
|
|
6653
|
+
content: getChatMessageOpenAiContent(message),
|
|
6170
6654
|
role: message.role
|
|
6171
6655
|
}));
|
|
6172
6656
|
const modelId = getOpenApiModelId(selectedModelId);
|
|
@@ -6178,12 +6662,16 @@ const getAiResponse = async ({
|
|
|
6178
6662
|
const maxToolIterations = safeMaxToolCalls - 1;
|
|
6179
6663
|
let previousResponseId;
|
|
6180
6664
|
for (let i = 0; i <= maxToolIterations; i++) {
|
|
6181
|
-
|
|
6665
|
+
const request = {
|
|
6182
6666
|
headers,
|
|
6183
6667
|
method: 'POST',
|
|
6184
|
-
payload: getOpenAiParams(openAiInput, modelId, streamingEnabled, passIncludeObfuscation, await getBasicChatTools(agentMode, questionToolEnabled, toolEnablement), agentMode === 'plan' ? false : webSearchEnabled, safeMaxToolCalls, systemPrompt, previousResponseId, reasoningEffort),
|
|
6668
|
+
payload: getOpenAiParams(openAiInput, modelId, streamingEnabled, passIncludeObfuscation, await getBasicChatTools(agentMode, questionToolEnabled, toolEnablement), agentMode === 'plan' ? false : webSearchEnabled, safeMaxToolCalls, systemPrompt, previousResponseId, reasoningEffort, supportsReasoningEffort),
|
|
6185
6669
|
url: getOpenApiApiEndpoint(openApiApiBaseUrl)
|
|
6186
|
-
}
|
|
6670
|
+
};
|
|
6671
|
+
capture(request);
|
|
6672
|
+
if (onMockOpenApiRequestCaptured) {
|
|
6673
|
+
await Promise.resolve(onMockOpenApiRequestCaptured(request));
|
|
6674
|
+
}
|
|
6187
6675
|
const result = await getMockOpenApiAssistantText(streamingEnabled, onTextChunk, onToolCallsChunk, onDataEvent, onEventStreamFinished);
|
|
6188
6676
|
if (result.type !== 'success') {
|
|
6189
6677
|
text = getOpenApiErrorMessage(result);
|
|
@@ -6261,6 +6749,7 @@ const getAiResponse = async ({
|
|
|
6261
6749
|
reasoningEffort
|
|
6262
6750
|
} : {}),
|
|
6263
6751
|
stream: streamingEnabled,
|
|
6752
|
+
supportsReasoningEffort,
|
|
6264
6753
|
systemPrompt,
|
|
6265
6754
|
...(toolEnablement ? {
|
|
6266
6755
|
toolEnablement
|
|
@@ -6325,8 +6814,8 @@ const getAiResponse = async ({
|
|
|
6325
6814
|
return message;
|
|
6326
6815
|
};
|
|
6327
6816
|
|
|
6328
|
-
const
|
|
6329
|
-
return invoke$7('
|
|
6817
|
+
const parseMessageContents = async rawMessages => {
|
|
6818
|
+
return invoke$7('ChatMessageParsing.parseMessageContents', rawMessages);
|
|
6330
6819
|
};
|
|
6331
6820
|
|
|
6332
6821
|
const Actions = 'Actions';
|
|
@@ -6337,6 +6826,10 @@ const Chat = 'Chat';
|
|
|
6337
6826
|
const ChatActions = 'ChatActions';
|
|
6338
6827
|
const ChatAuthError = 'ChatAuthError';
|
|
6339
6828
|
const ChatFocus = 'ChatFocus';
|
|
6829
|
+
const ChatFocusActions = 'ChatFocusActions';
|
|
6830
|
+
const ChatFocusHeader = 'ChatFocusHeader';
|
|
6831
|
+
const ChatFocusMainArea = 'ChatFocusMainArea';
|
|
6832
|
+
const ChatFocusProject = 'ChatFocusProject';
|
|
6340
6833
|
const ChatHeader = 'ChatHeader';
|
|
6341
6834
|
const ChatHeaderLabel = 'ChatHeaderLabel';
|
|
6342
6835
|
const ChatInputBox = 'ChatInputBox';
|
|
@@ -6361,15 +6854,30 @@ const ChatModelPickerItemSelected = 'ChatModelPickerItemSelected';
|
|
|
6361
6854
|
const ChatModelPickerItemUsageCost = 'ChatModelPickerItemUsageCost';
|
|
6362
6855
|
const ChatModelPickerList = 'ChatModelPickerList';
|
|
6363
6856
|
const ChatName = 'ChatName';
|
|
6857
|
+
const ChatOverlays = 'ChatOverlays';
|
|
6364
6858
|
const ChatOrderedList = 'ChatOrderedList';
|
|
6365
6859
|
const ChatOrderedListItem = 'ChatOrderedListItem';
|
|
6366
6860
|
const ChatOrderedListItemContent = 'ChatOrderedListItemContent';
|
|
6861
|
+
const ChatOrderedListItemPrefix = 'ChatOrderedListItemPrefix';
|
|
6367
6862
|
const ChatOrderedListMarker = 'ChatOrderedListMarker';
|
|
6368
6863
|
const ChatComposerAttachment = 'ChatComposerAttachment';
|
|
6369
6864
|
const ChatComposerAttachmentImage = 'ChatComposerAttachmentImage';
|
|
6370
6865
|
const ChatComposerAttachmentInvalidImage = 'ChatComposerAttachmentInvalidImage';
|
|
6866
|
+
const ChatComposerAttachmentLabel = 'ChatComposerAttachmentLabel';
|
|
6867
|
+
const ChatComposerAttachmentPreview = 'ChatComposerAttachmentPreview';
|
|
6868
|
+
const ChatComposerAttachmentPreviewOverlay = 'ChatComposerAttachmentPreviewOverlay';
|
|
6869
|
+
const ChatComposerAttachmentPreviewOverlayError = 'ChatComposerAttachmentPreviewOverlayError';
|
|
6870
|
+
const ChatComposerAttachmentPreviewOverlayImage = 'ChatComposerAttachmentPreviewOverlayImage';
|
|
6871
|
+
const ChatComposerAttachmentRemoveButton = 'ChatComposerAttachmentRemoveButton';
|
|
6371
6872
|
const ChatComposerAttachments = 'ChatComposerAttachments';
|
|
6372
6873
|
const ChatComposerAttachmentTextFile = 'ChatComposerAttachmentTextFile';
|
|
6874
|
+
const ChatAttachment = 'ChatAttachment';
|
|
6875
|
+
const ChatAttachmentImage = 'ChatAttachmentImage';
|
|
6876
|
+
const ChatAttachmentInvalidImage = 'ChatAttachmentInvalidImage';
|
|
6877
|
+
const ChatAttachmentLabel = 'ChatAttachmentLabel';
|
|
6878
|
+
const ChatAttachmentPreview = 'ChatAttachmentPreview';
|
|
6879
|
+
const ChatAttachments = 'ChatAttachments';
|
|
6880
|
+
const ChatAttachmentTextFile = 'ChatAttachmentTextFile';
|
|
6373
6881
|
const ChatSendArea = 'ChatSendArea';
|
|
6374
6882
|
const ChatSendAreaBottom = 'ChatSendAreaBottom';
|
|
6375
6883
|
const ChatSendAreaContent = 'ChatSendAreaContent';
|
|
@@ -6405,6 +6913,7 @@ const FileIcon = 'FileIcon';
|
|
|
6405
6913
|
const IconButton = 'IconButton';
|
|
6406
6914
|
const IconButtonDisabled = 'IconButtonDisabled';
|
|
6407
6915
|
const ImageElement = 'ImageElement';
|
|
6916
|
+
const ImageErrorMessage = 'ImageErrorMessage';
|
|
6408
6917
|
const InputBox = 'InputBox';
|
|
6409
6918
|
const Insertion = 'Insertion';
|
|
6410
6919
|
const Label = 'Label';
|
|
@@ -6418,6 +6927,7 @@ const MaskIconAccount = 'MaskIconAccount';
|
|
|
6418
6927
|
const MaskIconAdd = 'MaskIconAdd';
|
|
6419
6928
|
const MaskIconArrowLeft = 'MaskIconArrowLeft';
|
|
6420
6929
|
const MaskIconChevronDown = 'MaskIconChevronDown';
|
|
6930
|
+
const MaskIconChevronRight = 'MaskIconChevronRight';
|
|
6421
6931
|
const MaskIconChevronUp = 'MaskIconChevronUp';
|
|
6422
6932
|
const MaskIconClose = 'MaskIconClose';
|
|
6423
6933
|
const MaskIconDebugPause = 'MaskIconDebugPause';
|
|
@@ -6487,6 +6997,28 @@ const jsRules = [{
|
|
|
6487
6997
|
className: TokenKeyword,
|
|
6488
6998
|
regex: /\b(?:const|let|var|function|return|if|else|for|while|class|new|typeof|instanceof|import|export|from|default|async|await|try|catch|finally|throw|this|true|false|null|undefined)\b/
|
|
6489
6999
|
}];
|
|
7000
|
+
const tsRules = [{
|
|
7001
|
+
className: TokenComment,
|
|
7002
|
+
regex: /\/\/[^\n]*/
|
|
7003
|
+
}, {
|
|
7004
|
+
className: TokenComment,
|
|
7005
|
+
regex: /\/\*[\s\S]*?\*\//
|
|
7006
|
+
}, {
|
|
7007
|
+
className: TokenString,
|
|
7008
|
+
regex: /"[^"\\]*(?:\\.[^"\\]*)*"/
|
|
7009
|
+
}, {
|
|
7010
|
+
className: TokenString,
|
|
7011
|
+
regex: /'[^'\\]*(?:\\.[^'\\]*)*'/
|
|
7012
|
+
}, {
|
|
7013
|
+
className: TokenString,
|
|
7014
|
+
regex: /`[^`\\]*(?:\\.[^`\\]*)*`/
|
|
7015
|
+
}, {
|
|
7016
|
+
className: TokenNumber,
|
|
7017
|
+
regex: /\b\d+\.?\d*\b/
|
|
7018
|
+
}, {
|
|
7019
|
+
className: TokenKeyword,
|
|
7020
|
+
regex: /\b(?:abstract|any|as|asserts|async|await|boolean|class|const|constructor|declare|default|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|infer|instanceof|interface|is|keyof|let|module|namespace|never|new|null|number|object|override|private|protected|public|readonly|return|satisfies|set|static|string|super|switch|symbol|this|throw|true|try|type|typeof|undefined|unknown|var|void|while)\b/
|
|
7021
|
+
}];
|
|
6490
7022
|
const htmlRules = [{
|
|
6491
7023
|
className: TokenComment,
|
|
6492
7024
|
regex: /<!--[\s\S]*?-->/
|
|
@@ -6610,6 +7142,9 @@ const highlightCode = (code, language) => {
|
|
|
6610
7142
|
if (normalized === 'js' || normalized === 'javascript') {
|
|
6611
7143
|
return tokenize(code, jsRules);
|
|
6612
7144
|
}
|
|
7145
|
+
if (normalized === 'ts' || normalized === 'typescript') {
|
|
7146
|
+
return tokenize(code, tsRules);
|
|
7147
|
+
}
|
|
6613
7148
|
if (normalized === 'py' || normalized === 'python') {
|
|
6614
7149
|
return tokenize(code, pythonRules);
|
|
6615
7150
|
}
|
|
@@ -7760,9 +8295,28 @@ const parseAndStoreMessagesContent = async (parsedMessages, messages) => {
|
|
|
7760
8295
|
}
|
|
7761
8296
|
return nextParsedMessages;
|
|
7762
8297
|
};
|
|
8298
|
+
const getMessagesNeedingParsing = (parsedMessages, messages) => {
|
|
8299
|
+
return messages.filter(message => {
|
|
8300
|
+
const existingParsedMessage = parsedMessages.find(item => item.id === message.id);
|
|
8301
|
+
return !existingParsedMessage || existingParsedMessage.text !== message.text;
|
|
8302
|
+
});
|
|
8303
|
+
};
|
|
8304
|
+
const parseAndStoreMessagesContentInWorker = async (parsedMessages, messages) => {
|
|
8305
|
+
const messagesNeedingParsing = getMessagesNeedingParsing(parsedMessages, messages);
|
|
8306
|
+
if (messagesNeedingParsing.length === 0) {
|
|
8307
|
+
return parsedMessages;
|
|
8308
|
+
}
|
|
8309
|
+
const parsedContents = await parseMessageContents(messagesNeedingParsing.map(message => message.text));
|
|
8310
|
+
let nextParsedMessages = parsedMessages;
|
|
8311
|
+
for (const [index, message] of messagesNeedingParsing.entries()) {
|
|
8312
|
+
const parsedContent = message.text === '' ? emptyMessageContent : parsedContents[index];
|
|
8313
|
+
nextParsedMessages = setParsedMessageContent(nextParsedMessages, message.id, message.text, parsedContent);
|
|
8314
|
+
}
|
|
8315
|
+
return nextParsedMessages;
|
|
8316
|
+
};
|
|
7763
8317
|
const parseAndStoreMessagesContentWithWorkerPreference = async (parsedMessages, messages, useChatMessageParsingWorker) => {
|
|
7764
8318
|
if (useChatMessageParsingWorker) {
|
|
7765
|
-
return
|
|
8319
|
+
return parseAndStoreMessagesContentInWorker(parsedMessages, messages);
|
|
7766
8320
|
}
|
|
7767
8321
|
return parseAndStoreMessagesContent(parsedMessages, messages);
|
|
7768
8322
|
};
|
|
@@ -7998,15 +8552,6 @@ const getSlashCommandHandler = command => {
|
|
|
7998
8552
|
return slashCommandRegistry[command];
|
|
7999
8553
|
};
|
|
8000
8554
|
|
|
8001
|
-
const focusInput = state => {
|
|
8002
|
-
return {
|
|
8003
|
-
...state,
|
|
8004
|
-
focus: 'composer',
|
|
8005
|
-
focused: true,
|
|
8006
|
-
listFocusedIndex: -1
|
|
8007
|
-
};
|
|
8008
|
-
};
|
|
8009
|
-
|
|
8010
8555
|
const withClearedComposer = state => {
|
|
8011
8556
|
return focusInput({
|
|
8012
8557
|
...state,
|
|
@@ -8160,12 +8705,6 @@ const getMentionContextMessage = async value => {
|
|
|
8160
8705
|
};
|
|
8161
8706
|
};
|
|
8162
8707
|
|
|
8163
|
-
const AutoScrollTopA = Number.MAX_SAFE_INTEGER;
|
|
8164
|
-
const AutoScrollTopB = Number.MAX_SAFE_INTEGER - 1;
|
|
8165
|
-
const getNextAutoScrollTop = currentScrollTop => {
|
|
8166
|
-
return currentScrollTop === AutoScrollTopA ? AutoScrollTopB : AutoScrollTopA;
|
|
8167
|
-
};
|
|
8168
|
-
|
|
8169
8708
|
const slashCommandRegex = /^\/([a-z][a-z0-9-]*)(?:\s+.*)?$/i;
|
|
8170
8709
|
const getSlashCommand = value => {
|
|
8171
8710
|
const trimmed = value.trim();
|
|
@@ -8443,6 +8982,19 @@ const withUpdatedMessageScrollTop = state => {
|
|
|
8443
8982
|
};
|
|
8444
8983
|
};
|
|
8445
8984
|
const workspaceUriPlaceholder = '{{workspaceUri}}';
|
|
8985
|
+
const clearComposerAttachments = async (sessionId, attachmentIds) => {
|
|
8986
|
+
if (!sessionId) {
|
|
8987
|
+
return;
|
|
8988
|
+
}
|
|
8989
|
+
for (const attachmentId of attachmentIds) {
|
|
8990
|
+
await appendChatViewEvent({
|
|
8991
|
+
attachmentId,
|
|
8992
|
+
sessionId,
|
|
8993
|
+
timestamp: new Date().toISOString(),
|
|
8994
|
+
type: 'chat-attachment-removed'
|
|
8995
|
+
});
|
|
8996
|
+
}
|
|
8997
|
+
};
|
|
8446
8998
|
const getCurrentDate = () => {
|
|
8447
8999
|
return new Date().toISOString().slice(0, 10);
|
|
8448
9000
|
};
|
|
@@ -8535,7 +9087,12 @@ const handleSubmit = async state => {
|
|
|
8535
9087
|
minute: '2-digit'
|
|
8536
9088
|
});
|
|
8537
9089
|
const userMessageId = crypto.randomUUID();
|
|
9090
|
+
const composerAttachments = state.composerAttachments.length > 0 ? state.composerAttachments : await getComposerAttachments(state.selectedSessionId);
|
|
9091
|
+
await clearComposerAttachments(state.selectedSessionId, composerAttachments.map(attachment => attachment.attachmentId));
|
|
8538
9092
|
const userMessage = {
|
|
9093
|
+
...(composerAttachments.length > 0 ? {
|
|
9094
|
+
attachments: composerAttachments
|
|
9095
|
+
} : {}),
|
|
8539
9096
|
id: userMessageId,
|
|
8540
9097
|
role: 'user',
|
|
8541
9098
|
text: userText,
|
|
@@ -8591,6 +9148,7 @@ const handleSubmit = async state => {
|
|
|
8591
9148
|
optimisticState = withUpdatedMessageScrollTop(focusInput({
|
|
8592
9149
|
...state,
|
|
8593
9150
|
composerAttachments: [],
|
|
9151
|
+
composerAttachmentsHeight: 0,
|
|
8594
9152
|
composerHeight: getMinComposerHeightForState(state),
|
|
8595
9153
|
composerSelectionEnd: 0,
|
|
8596
9154
|
composerSelectionStart: 0,
|
|
@@ -8628,6 +9186,8 @@ const handleSubmit = async state => {
|
|
|
8628
9186
|
}
|
|
8629
9187
|
optimisticState = withUpdatedMessageScrollTop(focusInput({
|
|
8630
9188
|
...state,
|
|
9189
|
+
composerAttachments: [],
|
|
9190
|
+
composerAttachmentsHeight: 0,
|
|
8631
9191
|
composerHeight: getMinComposerHeightForState(state),
|
|
8632
9192
|
composerSelectionEnd: 0,
|
|
8633
9193
|
composerSelectionStart: 0,
|
|
@@ -8647,6 +9207,9 @@ const handleSubmit = async state => {
|
|
|
8647
9207
|
latestState: optimisticState,
|
|
8648
9208
|
previousState: optimisticState
|
|
8649
9209
|
};
|
|
9210
|
+
let {
|
|
9211
|
+
mockOpenApiRequests
|
|
9212
|
+
} = optimisticState;
|
|
8650
9213
|
const selectedOptimisticSession = optimisticState.sessions.find(session => session.id === optimisticState.selectedSessionId);
|
|
8651
9214
|
const systemPrompt = getEffectiveSystemPrompt(optimisticState, selectedOptimisticSession);
|
|
8652
9215
|
const workspaceUri = getWorkspaceUri(optimisticState, selectedOptimisticSession);
|
|
@@ -8689,6 +9252,9 @@ const handleSubmit = async state => {
|
|
|
8689
9252
|
value: '[DONE]'
|
|
8690
9253
|
});
|
|
8691
9254
|
},
|
|
9255
|
+
onMockOpenApiRequestCaptured: async request => {
|
|
9256
|
+
mockOpenApiRequests = [...mockOpenApiRequests, request];
|
|
9257
|
+
},
|
|
8692
9258
|
...(handleTextChunkFunctionRef ? {
|
|
8693
9259
|
onTextChunk: handleTextChunkFunctionRef
|
|
8694
9260
|
} : {}),
|
|
@@ -8745,6 +9311,7 @@ const handleSubmit = async state => {
|
|
|
8745
9311
|
}
|
|
8746
9312
|
return withUpdatedMessageScrollTop(focusInput({
|
|
8747
9313
|
...latestState,
|
|
9314
|
+
mockOpenApiRequests,
|
|
8748
9315
|
nextMessageId: latestState.nextMessageId + 1,
|
|
8749
9316
|
parsedMessages: finalParsedMessages,
|
|
8750
9317
|
sessions: updatedSessions
|
|
@@ -8771,11 +9338,43 @@ const handleReasoningEffortChange = async (state, value) => {
|
|
|
8771
9338
|
return setReasoningEffort(state, value);
|
|
8772
9339
|
};
|
|
8773
9340
|
|
|
9341
|
+
const handleRemoveComposerAttachment = async (state, attachmentId) => {
|
|
9342
|
+
const {
|
|
9343
|
+
composerAttachments,
|
|
9344
|
+
selectedSessionId
|
|
9345
|
+
} = state;
|
|
9346
|
+
const nextComposerAttachments = composerAttachments.filter(attachment => attachment.attachmentId !== attachmentId);
|
|
9347
|
+
if (nextComposerAttachments.length === composerAttachments.length) {
|
|
9348
|
+
return state;
|
|
9349
|
+
}
|
|
9350
|
+
if (selectedSessionId) {
|
|
9351
|
+
await appendChatViewEvent({
|
|
9352
|
+
attachmentId,
|
|
9353
|
+
sessionId: selectedSessionId,
|
|
9354
|
+
timestamp: new Date().toISOString(),
|
|
9355
|
+
type: 'chat-attachment-removed'
|
|
9356
|
+
});
|
|
9357
|
+
}
|
|
9358
|
+
return {
|
|
9359
|
+
...state,
|
|
9360
|
+
composerAttachments: nextComposerAttachments,
|
|
9361
|
+
composerAttachmentsHeight: getComposerAttachmentsHeight(nextComposerAttachments, state.width)
|
|
9362
|
+
};
|
|
9363
|
+
};
|
|
9364
|
+
|
|
8774
9365
|
const openAgentModePicker = state => {
|
|
9366
|
+
if (!state.hasSpaceForAgentModePicker) {
|
|
9367
|
+
return {
|
|
9368
|
+
...state,
|
|
9369
|
+
agentModePickerOpen: false
|
|
9370
|
+
};
|
|
9371
|
+
}
|
|
8775
9372
|
const agentModePickerOpen = !state.agentModePickerOpen;
|
|
8776
9373
|
return {
|
|
8777
9374
|
...state,
|
|
8778
9375
|
agentModePickerOpen,
|
|
9376
|
+
focus: agentModePickerOpen ? 'picker-list' : state.focus,
|
|
9377
|
+
focused: agentModePickerOpen ? true : state.focused,
|
|
8779
9378
|
modelPickerOpen: false,
|
|
8780
9379
|
modelPickerSearchValue: '',
|
|
8781
9380
|
reasoningEffortPickerOpen: false,
|
|
@@ -8794,6 +9393,8 @@ const openReasoningEffortPicker = state => {
|
|
|
8794
9393
|
return {
|
|
8795
9394
|
...state,
|
|
8796
9395
|
agentModePickerOpen: false,
|
|
9396
|
+
focus: reasoningEffortPickerOpen ? 'picker-list' : state.focus,
|
|
9397
|
+
focused: reasoningEffortPickerOpen ? true : state.focused,
|
|
8797
9398
|
modelPickerOpen: false,
|
|
8798
9399
|
modelPickerSearchValue: '',
|
|
8799
9400
|
reasoningEffortPickerOpen,
|
|
@@ -8809,10 +9410,18 @@ const OpenOpenRouterApiKeySettings = 'open-openrouter-api-key-settings';
|
|
|
8809
9410
|
const OpenOpenRouterApiKeyWebsite = 'open-openrouter-api-key-website';
|
|
8810
9411
|
|
|
8811
9412
|
const openRunModePicker = state => {
|
|
9413
|
+
if (!state.hasSpaceForRunModePicker) {
|
|
9414
|
+
return {
|
|
9415
|
+
...state,
|
|
9416
|
+
runModePickerOpen: false
|
|
9417
|
+
};
|
|
9418
|
+
}
|
|
8812
9419
|
const runModePickerOpen = !state.runModePickerOpen;
|
|
8813
9420
|
return {
|
|
8814
9421
|
...state,
|
|
8815
9422
|
agentModePickerOpen: false,
|
|
9423
|
+
focus: runModePickerOpen ? 'picker-list' : state.focus,
|
|
9424
|
+
focused: runModePickerOpen ? true : state.focused,
|
|
8816
9425
|
modelPickerOpen: false,
|
|
8817
9426
|
modelPickerSearchValue: '',
|
|
8818
9427
|
reasoningEffortPickerOpen: false,
|
|
@@ -8822,13 +9431,19 @@ const openRunModePicker = state => {
|
|
|
8822
9431
|
};
|
|
8823
9432
|
|
|
8824
9433
|
const selectSession = async (state, id) => {
|
|
8825
|
-
const
|
|
9434
|
+
const {
|
|
9435
|
+
lastNormalViewMode,
|
|
9436
|
+
sessions,
|
|
9437
|
+
viewMode,
|
|
9438
|
+
width
|
|
9439
|
+
} = state;
|
|
9440
|
+
const exists = sessions.some(session => session.id === id);
|
|
8826
9441
|
if (!exists) {
|
|
8827
9442
|
return state;
|
|
8828
9443
|
}
|
|
8829
9444
|
const loadedSession = await getChatSession(id);
|
|
8830
9445
|
const composerAttachments = await getComposerAttachments(id);
|
|
8831
|
-
const
|
|
9446
|
+
const hydratedSessions = sessions.map(session => {
|
|
8832
9447
|
if (session.id !== id) {
|
|
8833
9448
|
return session;
|
|
8834
9449
|
}
|
|
@@ -8840,11 +9455,12 @@ const selectSession = async (state, id) => {
|
|
|
8840
9455
|
return {
|
|
8841
9456
|
...state,
|
|
8842
9457
|
composerAttachments,
|
|
8843
|
-
|
|
9458
|
+
composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, width),
|
|
9459
|
+
lastNormalViewMode: viewMode === 'chat-focus' ? lastNormalViewMode : 'detail',
|
|
8844
9460
|
renamingSessionId: '',
|
|
8845
9461
|
selectedSessionId: id,
|
|
8846
|
-
sessions,
|
|
8847
|
-
viewMode:
|
|
9462
|
+
sessions: hydratedSessions,
|
|
9463
|
+
viewMode: viewMode === 'chat-focus' ? 'chat-focus' : 'detail'
|
|
8848
9464
|
};
|
|
8849
9465
|
};
|
|
8850
9466
|
|
|
@@ -8868,16 +9484,20 @@ const startRename = (state, id) => {
|
|
|
8868
9484
|
};
|
|
8869
9485
|
|
|
8870
9486
|
const toggleChatFocusMode = async state => {
|
|
8871
|
-
|
|
9487
|
+
const {
|
|
9488
|
+
lastNormalViewMode,
|
|
9489
|
+
viewMode
|
|
9490
|
+
} = state;
|
|
9491
|
+
if (viewMode === 'chat-focus') {
|
|
8872
9492
|
return {
|
|
8873
9493
|
...state,
|
|
8874
|
-
viewMode:
|
|
9494
|
+
viewMode: lastNormalViewMode
|
|
8875
9495
|
};
|
|
8876
9496
|
}
|
|
8877
|
-
if (
|
|
9497
|
+
if (viewMode === 'list' || viewMode === 'detail') {
|
|
8878
9498
|
return {
|
|
8879
9499
|
...state,
|
|
8880
|
-
lastNormalViewMode:
|
|
9500
|
+
lastNormalViewMode: viewMode,
|
|
8881
9501
|
viewMode: 'chat-focus'
|
|
8882
9502
|
};
|
|
8883
9503
|
}
|
|
@@ -8885,25 +9505,32 @@ const toggleChatFocusMode = async state => {
|
|
|
8885
9505
|
};
|
|
8886
9506
|
|
|
8887
9507
|
const toggleProjectExpanded = async (state, projectId) => {
|
|
8888
|
-
const
|
|
8889
|
-
|
|
8890
|
-
|
|
9508
|
+
const {
|
|
9509
|
+
projectExpandedIds,
|
|
9510
|
+
selectedSessionId,
|
|
9511
|
+
sessions,
|
|
9512
|
+
width
|
|
9513
|
+
} = state;
|
|
9514
|
+
const isExpanded = projectExpandedIds.includes(projectId);
|
|
9515
|
+
const nextProjectExpandedIds = isExpanded ? projectExpandedIds.filter(id => id !== projectId) : [...projectExpandedIds, projectId];
|
|
9516
|
+
const visibleSessions = getVisibleSessions(sessions, projectId);
|
|
8891
9517
|
if (visibleSessions.length === 0) {
|
|
8892
9518
|
return {
|
|
8893
9519
|
...state,
|
|
8894
9520
|
composerAttachments: [],
|
|
8895
|
-
|
|
9521
|
+
composerAttachmentsHeight: 0,
|
|
9522
|
+
projectExpandedIds: nextProjectExpandedIds,
|
|
8896
9523
|
selectedProjectId: projectId,
|
|
8897
9524
|
selectedSessionId: '',
|
|
8898
9525
|
viewMode: 'chat-focus'
|
|
8899
9526
|
};
|
|
8900
9527
|
}
|
|
8901
|
-
const selectedSessionVisible = visibleSessions.some(session => session.id ===
|
|
8902
|
-
const
|
|
8903
|
-
const loadedSession = await getChatSession(
|
|
8904
|
-
const composerAttachments = await getComposerAttachments(
|
|
8905
|
-
const
|
|
8906
|
-
if (session.id !==
|
|
9528
|
+
const selectedSessionVisible = visibleSessions.some(session => session.id === selectedSessionId);
|
|
9529
|
+
const nextSelectedSessionId = selectedSessionVisible ? selectedSessionId : visibleSessions[0].id;
|
|
9530
|
+
const loadedSession = await getChatSession(nextSelectedSessionId);
|
|
9531
|
+
const composerAttachments = await getComposerAttachments(nextSelectedSessionId);
|
|
9532
|
+
const hydratedSessions = sessions.map(session => {
|
|
9533
|
+
if (session.id !== nextSelectedSessionId || !loadedSession) {
|
|
8907
9534
|
return session;
|
|
8908
9535
|
}
|
|
8909
9536
|
return loadedSession;
|
|
@@ -8911,10 +9538,11 @@ const toggleProjectExpanded = async (state, projectId) => {
|
|
|
8911
9538
|
return {
|
|
8912
9539
|
...state,
|
|
8913
9540
|
composerAttachments,
|
|
8914
|
-
|
|
9541
|
+
composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, width),
|
|
9542
|
+
projectExpandedIds: nextProjectExpandedIds,
|
|
8915
9543
|
selectedProjectId: projectId,
|
|
8916
|
-
selectedSessionId,
|
|
8917
|
-
sessions,
|
|
9544
|
+
selectedSessionId: nextSelectedSessionId,
|
|
9545
|
+
sessions: hydratedSessions,
|
|
8918
9546
|
viewMode: 'chat-focus'
|
|
8919
9547
|
};
|
|
8920
9548
|
};
|
|
@@ -9048,10 +9676,23 @@ const handleClick = async (state, name, id = '', eventX = 0, eventY = 0) => {
|
|
|
9048
9676
|
const sessionId = getRenameIdFromInputName(name);
|
|
9049
9677
|
return startRename(state, sessionId);
|
|
9050
9678
|
}
|
|
9679
|
+
case isComposerAttachmentRemoveInputName(name):
|
|
9680
|
+
{
|
|
9681
|
+
const attachmentId = getAttachmentIdFromComposerAttachmentRemoveInputName(name);
|
|
9682
|
+
return handleRemoveComposerAttachment(state, attachmentId);
|
|
9683
|
+
}
|
|
9051
9684
|
case name === SessionDelete:
|
|
9052
9685
|
return deleteSession(state, id);
|
|
9686
|
+
case name === ProjectDelete:
|
|
9687
|
+
return deleteProject(state, id);
|
|
9053
9688
|
case name === Send:
|
|
9054
9689
|
return handleClickSend(state);
|
|
9690
|
+
case name === ScrollDown:
|
|
9691
|
+
return {
|
|
9692
|
+
...state,
|
|
9693
|
+
messagesAutoScrollEnabled: true,
|
|
9694
|
+
messagesScrollTop: getNextAutoScrollTop(state.messagesScrollTop)
|
|
9695
|
+
};
|
|
9055
9696
|
case name === SaveOpenRouterApiKey:
|
|
9056
9697
|
return handleClickSaveOpenRouterApiKey(state);
|
|
9057
9698
|
case name === SaveOpenApiApiKey:
|
|
@@ -9077,6 +9718,7 @@ const handleClickBack = async state => {
|
|
|
9077
9718
|
return {
|
|
9078
9719
|
...state,
|
|
9079
9720
|
composerAttachments: [],
|
|
9721
|
+
composerAttachmentsHeight: 0,
|
|
9080
9722
|
lastNormalViewMode: 'list',
|
|
9081
9723
|
renamingSessionId: '',
|
|
9082
9724
|
viewMode: 'list'
|
|
@@ -9158,6 +9800,7 @@ const handleClickNew = async state => {
|
|
|
9158
9800
|
return focusInput({
|
|
9159
9801
|
...clearedState,
|
|
9160
9802
|
composerAttachments: [],
|
|
9803
|
+
composerAttachmentsHeight: 0,
|
|
9161
9804
|
lastNormalViewMode: 'list',
|
|
9162
9805
|
renamingSessionId: '',
|
|
9163
9806
|
viewMode: 'list'
|
|
@@ -9173,6 +9816,26 @@ const handleClickSettings = async () => {
|
|
|
9173
9816
|
await invoke('Main.openUri', 'app://settings.json');
|
|
9174
9817
|
};
|
|
9175
9818
|
|
|
9819
|
+
const handleContextMenuChatImageAttachment = async (state, name, eventX, eventY) => {
|
|
9820
|
+
const getFallbackAttachment = () => {
|
|
9821
|
+
const attachmentsWithPreview = state.composerAttachments.filter(attachment => attachment.previewSrc);
|
|
9822
|
+
if (attachmentsWithPreview.length !== 1) {
|
|
9823
|
+
return undefined;
|
|
9824
|
+
}
|
|
9825
|
+
return attachmentsWithPreview[0];
|
|
9826
|
+
};
|
|
9827
|
+
const attachment = isComposerAttachmentPreviewInputName(name) ? state.composerAttachments.find(item => item.attachmentId === getAttachmentIdFromComposerAttachmentPreviewInputName(name)) : getFallbackAttachment();
|
|
9828
|
+
if (!attachment?.previewSrc) {
|
|
9829
|
+
return state;
|
|
9830
|
+
}
|
|
9831
|
+
await showContextMenu2(state.uid, MenuChatAttachment, eventX, eventY, {
|
|
9832
|
+
attachmentId: attachment.attachmentId,
|
|
9833
|
+
menuId: MenuChatAttachment,
|
|
9834
|
+
previewSrc: attachment.previewSrc
|
|
9835
|
+
});
|
|
9836
|
+
return state;
|
|
9837
|
+
};
|
|
9838
|
+
|
|
9176
9839
|
const handleContextMenuChatModelPicker = async state => {
|
|
9177
9840
|
return state;
|
|
9178
9841
|
};
|
|
@@ -9182,16 +9845,20 @@ const handleContextMenuChatSendAreaBottom = async state => {
|
|
|
9182
9845
|
};
|
|
9183
9846
|
|
|
9184
9847
|
const handleDragEnter = async (state, name, hasFiles = true) => {
|
|
9848
|
+
const {
|
|
9849
|
+
composerDropActive,
|
|
9850
|
+
composerDropEnabled
|
|
9851
|
+
} = state;
|
|
9185
9852
|
if (name !== ComposerDropTarget) {
|
|
9186
9853
|
return state;
|
|
9187
9854
|
}
|
|
9188
|
-
if (!
|
|
9855
|
+
if (!composerDropEnabled) {
|
|
9189
9856
|
return state;
|
|
9190
9857
|
}
|
|
9191
9858
|
if (!hasFiles) {
|
|
9192
9859
|
return state;
|
|
9193
9860
|
}
|
|
9194
|
-
if (
|
|
9861
|
+
if (composerDropActive) {
|
|
9195
9862
|
return state;
|
|
9196
9863
|
}
|
|
9197
9864
|
return {
|
|
@@ -9214,16 +9881,20 @@ const handleDragLeave = async (state, name) => {
|
|
|
9214
9881
|
};
|
|
9215
9882
|
|
|
9216
9883
|
const handleDragOver = async (state, name, hasFiles = true) => {
|
|
9884
|
+
const {
|
|
9885
|
+
composerDropActive,
|
|
9886
|
+
composerDropEnabled
|
|
9887
|
+
} = state;
|
|
9217
9888
|
if (name !== ComposerDropTarget) {
|
|
9218
9889
|
return state;
|
|
9219
9890
|
}
|
|
9220
|
-
if (!
|
|
9891
|
+
if (!composerDropEnabled) {
|
|
9221
9892
|
return state;
|
|
9222
9893
|
}
|
|
9223
9894
|
if (!hasFiles) {
|
|
9224
9895
|
return state;
|
|
9225
9896
|
}
|
|
9226
|
-
if (
|
|
9897
|
+
if (composerDropActive) {
|
|
9227
9898
|
return state;
|
|
9228
9899
|
}
|
|
9229
9900
|
return {
|
|
@@ -9232,47 +9903,92 @@ const handleDragOver = async (state, name, hasFiles = true) => {
|
|
|
9232
9903
|
};
|
|
9233
9904
|
};
|
|
9234
9905
|
|
|
9235
|
-
const
|
|
9906
|
+
const getDroppedFiles = async fileHandles => {
|
|
9907
|
+
// TODO adjust e2e test and remove this code
|
|
9908
|
+
if (fileHandles.some(item => typeof item !== 'number')) {
|
|
9909
|
+
return fileHandles.map(item => {
|
|
9910
|
+
return {
|
|
9911
|
+
getFile() {
|
|
9912
|
+
return item;
|
|
9913
|
+
}
|
|
9914
|
+
};
|
|
9915
|
+
});
|
|
9916
|
+
}
|
|
9917
|
+
const actualHandles = await getFileHandles(fileHandles);
|
|
9918
|
+
return actualHandles.map(item => item.value).filter(item => item.kind === 'file');
|
|
9919
|
+
};
|
|
9920
|
+
|
|
9921
|
+
const handleDropFiles = async (state, name, fileHandles = []) => {
|
|
9922
|
+
const droppedFileHandles = await getDroppedFiles(fileHandles);
|
|
9923
|
+
const {
|
|
9924
|
+
composerDropActive,
|
|
9925
|
+
composerDropEnabled,
|
|
9926
|
+
nextAttachmentId,
|
|
9927
|
+
selectedSessionId,
|
|
9928
|
+
width
|
|
9929
|
+
} = state;
|
|
9236
9930
|
if (name !== ComposerDropTarget) {
|
|
9237
9931
|
return state;
|
|
9238
9932
|
}
|
|
9239
|
-
if (!
|
|
9933
|
+
if (!composerDropEnabled) {
|
|
9240
9934
|
return {
|
|
9241
9935
|
...state,
|
|
9242
9936
|
composerDropActive: false
|
|
9243
9937
|
};
|
|
9244
9938
|
}
|
|
9245
|
-
const nextState =
|
|
9939
|
+
const nextState = composerDropActive === false ? state : {
|
|
9246
9940
|
...state,
|
|
9247
9941
|
composerDropActive: false
|
|
9248
9942
|
};
|
|
9249
|
-
if (!
|
|
9943
|
+
if (!selectedSessionId || fileHandles.length === 0) {
|
|
9250
9944
|
return nextState;
|
|
9251
9945
|
}
|
|
9252
9946
|
const nextAttachments = [];
|
|
9253
|
-
for (const
|
|
9254
|
-
const
|
|
9947
|
+
for (const droppedFileHandle of droppedFileHandles) {
|
|
9948
|
+
const file = await droppedFileHandle.getFile();
|
|
9949
|
+
const attachmentId = `attachment-${nextAttachmentId + nextAttachments.length}`;
|
|
9950
|
+
const displayType = await getComposerAttachmentDisplayType(file, file.name, file.type);
|
|
9951
|
+
const previewSrc = await getComposerAttachmentPreviewSrc(file, displayType, file.type);
|
|
9952
|
+
const textContent = await getComposerAttachmentTextContent(file, displayType);
|
|
9255
9953
|
await appendChatViewEvent({
|
|
9256
9954
|
attachmentId,
|
|
9257
9955
|
blob: file,
|
|
9258
9956
|
mimeType: file.type,
|
|
9259
9957
|
name: file.name,
|
|
9260
|
-
sessionId:
|
|
9958
|
+
sessionId: selectedSessionId,
|
|
9261
9959
|
size: file.size,
|
|
9262
9960
|
timestamp: new Date().toISOString(),
|
|
9263
9961
|
type: 'chat-attachment-added'
|
|
9264
9962
|
});
|
|
9265
9963
|
nextAttachments.push({
|
|
9266
9964
|
attachmentId,
|
|
9267
|
-
displayType
|
|
9965
|
+
displayType,
|
|
9268
9966
|
mimeType: file.type,
|
|
9269
9967
|
name: file.name,
|
|
9270
|
-
|
|
9968
|
+
...(previewSrc ? {
|
|
9969
|
+
previewSrc
|
|
9970
|
+
} : {}),
|
|
9971
|
+
size: file.size,
|
|
9972
|
+
...(typeof textContent === 'string' ? {
|
|
9973
|
+
textContent
|
|
9974
|
+
} : {})
|
|
9271
9975
|
});
|
|
9272
9976
|
}
|
|
9273
9977
|
return {
|
|
9274
9978
|
...nextState,
|
|
9275
|
-
composerAttachments: [...nextState.composerAttachments, ...nextAttachments]
|
|
9979
|
+
composerAttachments: [...nextState.composerAttachments, ...nextAttachments],
|
|
9980
|
+
composerAttachmentsHeight: getComposerAttachmentsHeight([...nextState.composerAttachments, ...nextAttachments], width),
|
|
9981
|
+
nextAttachmentId: nextAttachmentId + nextAttachments.length
|
|
9982
|
+
};
|
|
9983
|
+
};
|
|
9984
|
+
|
|
9985
|
+
const handleErrorComposerAttachmentPreviewOverlay = async state => {
|
|
9986
|
+
if (!state.composerAttachmentPreviewOverlayAttachmentId || state.composerAttachmentPreviewOverlayError) {
|
|
9987
|
+
return state;
|
|
9988
|
+
}
|
|
9989
|
+
return {
|
|
9990
|
+
...state,
|
|
9991
|
+
composerAttachmentPreviewOverlayError: true
|
|
9276
9992
|
};
|
|
9277
9993
|
};
|
|
9278
9994
|
|
|
@@ -9284,9 +10000,6 @@ const handleSearchValueChange = (state, newValue) => {
|
|
|
9284
10000
|
};
|
|
9285
10001
|
|
|
9286
10002
|
const handleInput = async (state, name, value, inputSource = 'user') => {
|
|
9287
|
-
const {
|
|
9288
|
-
selectedSessionId
|
|
9289
|
-
} = state;
|
|
9290
10003
|
if (name === OpenApiApiKeyInput) {
|
|
9291
10004
|
return {
|
|
9292
10005
|
...state,
|
|
@@ -9315,18 +10028,21 @@ const handleInput = async (state, name, value, inputSource = 'user') => {
|
|
|
9315
10028
|
if (name !== Composer) {
|
|
9316
10029
|
return state;
|
|
9317
10030
|
}
|
|
9318
|
-
if (selectedSessionId) {
|
|
10031
|
+
if (state.selectedSessionId) {
|
|
9319
10032
|
await appendChatViewEvent({
|
|
9320
|
-
sessionId: selectedSessionId,
|
|
10033
|
+
sessionId: state.selectedSessionId,
|
|
9321
10034
|
timestamp: new Date().toISOString(),
|
|
9322
10035
|
type: 'handle-input',
|
|
9323
10036
|
value
|
|
9324
10037
|
});
|
|
9325
10038
|
}
|
|
9326
10039
|
const composerHeight = await getComposerHeight(state, value);
|
|
10040
|
+
const composerAttachmentsHeight = getComposerAttachmentsHeight(state.composerAttachments, state.width);
|
|
10041
|
+
const chatInputHistoryDraft = state.chatInputHistoryIndex === -1 ? value : state.chatInputHistoryDraft;
|
|
9327
10042
|
return {
|
|
9328
10043
|
...state,
|
|
9329
|
-
chatInputHistoryDraft
|
|
10044
|
+
chatInputHistoryDraft,
|
|
10045
|
+
composerAttachmentsHeight,
|
|
9330
10046
|
composerHeight,
|
|
9331
10047
|
composerSelectionEnd: value.length,
|
|
9332
10048
|
composerSelectionStart: value.length,
|
|
@@ -9382,6 +10098,18 @@ const handleInputFocus = async (state, name) => {
|
|
|
9382
10098
|
};
|
|
9383
10099
|
};
|
|
9384
10100
|
|
|
10101
|
+
const getSubmittedRenameState = (state, sessions) => {
|
|
10102
|
+
return {
|
|
10103
|
+
...state,
|
|
10104
|
+
composerHeight: getMinComposerHeightForState(state),
|
|
10105
|
+
composerSelectionEnd: 0,
|
|
10106
|
+
composerSelectionStart: 0,
|
|
10107
|
+
composerValue: '',
|
|
10108
|
+
inputSource: 'script',
|
|
10109
|
+
renamingSessionId: '',
|
|
10110
|
+
sessions
|
|
10111
|
+
};
|
|
10112
|
+
};
|
|
9385
10113
|
const submitRename = async state => {
|
|
9386
10114
|
const {
|
|
9387
10115
|
composerValue,
|
|
@@ -9395,29 +10123,24 @@ const submitRename = async state => {
|
|
|
9395
10123
|
renamingSessionId: ''
|
|
9396
10124
|
};
|
|
9397
10125
|
}
|
|
10126
|
+
const promptedTitle = sanitizeGeneratedTitle(await invoke('Main.prompt', title));
|
|
10127
|
+
if (!promptedTitle) {
|
|
10128
|
+
return getSubmittedRenameState(state, sessions);
|
|
10129
|
+
}
|
|
9398
10130
|
const updatedSessions = sessions.map(session => {
|
|
9399
10131
|
if (session.id !== renamingSessionId) {
|
|
9400
10132
|
return session;
|
|
9401
10133
|
}
|
|
9402
10134
|
return {
|
|
9403
10135
|
...session,
|
|
9404
|
-
title
|
|
10136
|
+
title: promptedTitle
|
|
9405
10137
|
};
|
|
9406
10138
|
});
|
|
9407
10139
|
const renamedSession = updatedSessions.find(session => session.id === renamingSessionId);
|
|
9408
10140
|
if (renamedSession) {
|
|
9409
10141
|
await saveChatSession(renamedSession);
|
|
9410
10142
|
}
|
|
9411
|
-
return
|
|
9412
|
-
...state,
|
|
9413
|
-
composerHeight: getMinComposerHeightForState(state),
|
|
9414
|
-
composerSelectionEnd: 0,
|
|
9415
|
-
composerSelectionStart: 0,
|
|
9416
|
-
composerValue: '',
|
|
9417
|
-
inputSource: 'script',
|
|
9418
|
-
renamingSessionId: '',
|
|
9419
|
-
sessions: updatedSessions
|
|
9420
|
-
};
|
|
10143
|
+
return getSubmittedRenameState(state, updatedSessions);
|
|
9421
10144
|
};
|
|
9422
10145
|
|
|
9423
10146
|
const handleKeyDown = async (state, key, shiftKey) => {
|
|
@@ -9451,19 +10174,77 @@ const handleMissingOpenRouterApiKeyFormSubmit = async state => {
|
|
|
9451
10174
|
};
|
|
9452
10175
|
|
|
9453
10176
|
const handleModelChange = async (state, value) => {
|
|
10177
|
+
const {
|
|
10178
|
+
modelPickerHeaderHeight,
|
|
10179
|
+
models
|
|
10180
|
+
} = state;
|
|
9454
10181
|
return {
|
|
9455
10182
|
...state,
|
|
9456
10183
|
agentModePickerOpen: false,
|
|
9457
|
-
modelPickerHeight: getModelPickerHeight(
|
|
10184
|
+
modelPickerHeight: getModelPickerHeight(modelPickerHeaderHeight, models.length),
|
|
9458
10185
|
modelPickerListScrollTop: 0,
|
|
9459
10186
|
modelPickerOpen: false,
|
|
9460
10187
|
modelPickerSearchValue: '',
|
|
9461
10188
|
reasoningEffortPickerOpen: false,
|
|
9462
10189
|
selectedModelId: value,
|
|
9463
|
-
visibleModels:
|
|
10190
|
+
visibleModels: models
|
|
10191
|
+
};
|
|
10192
|
+
};
|
|
10193
|
+
|
|
10194
|
+
const hideComposerAttachmentPreviewOverlay = async state => {
|
|
10195
|
+
if (!state.composerAttachmentPreviewOverlayAttachmentId && !state.composerAttachmentPreviewOverlayError) {
|
|
10196
|
+
return state;
|
|
10197
|
+
}
|
|
10198
|
+
return {
|
|
10199
|
+
...state,
|
|
10200
|
+
composerAttachmentPreviewOverlayAttachmentId: '',
|
|
10201
|
+
composerAttachmentPreviewOverlayError: false
|
|
10202
|
+
};
|
|
10203
|
+
};
|
|
10204
|
+
|
|
10205
|
+
const isCurrentAttachmentTarget = (name, attachmentId) => {
|
|
10206
|
+
return name === getComposerAttachmentInputName(attachmentId) || isComposerAttachmentRemoveInputName(name) && getAttachmentIdFromComposerAttachmentRemoveInputName(name) === attachmentId;
|
|
10207
|
+
};
|
|
10208
|
+
const handleMouseOut = async (state, name, relatedName = '') => {
|
|
10209
|
+
const {
|
|
10210
|
+
composerAttachmentPreviewOverlayAttachmentId
|
|
10211
|
+
} = state;
|
|
10212
|
+
if (!composerAttachmentPreviewOverlayAttachmentId) {
|
|
10213
|
+
return state;
|
|
10214
|
+
}
|
|
10215
|
+
const isLeavingOverlay = isComposerAttachmentPreviewOverlayInputName(name);
|
|
10216
|
+
if (!isLeavingOverlay) {
|
|
10217
|
+
return state;
|
|
10218
|
+
}
|
|
10219
|
+
if (isComposerAttachmentPreviewOverlayInputName(relatedName) || isCurrentAttachmentTarget(relatedName, composerAttachmentPreviewOverlayAttachmentId)) {
|
|
10220
|
+
return state;
|
|
10221
|
+
}
|
|
10222
|
+
return hideComposerAttachmentPreviewOverlay(state);
|
|
10223
|
+
};
|
|
10224
|
+
|
|
10225
|
+
const showComposerAttachmentPreviewOverlay = async (state, attachmentId) => {
|
|
10226
|
+
const attachment = state.composerAttachments.find(item => item.attachmentId === attachmentId) ?? state.composerAttachments.find(item => item.displayType === 'image' && !!item.previewSrc);
|
|
10227
|
+
if (!attachment || attachment.displayType !== 'image' || !attachment.previewSrc) {
|
|
10228
|
+
return state;
|
|
10229
|
+
}
|
|
10230
|
+
if (state.composerAttachmentPreviewOverlayAttachmentId === attachmentId && !state.composerAttachmentPreviewOverlayError) {
|
|
10231
|
+
return state;
|
|
10232
|
+
}
|
|
10233
|
+
return {
|
|
10234
|
+
...state,
|
|
10235
|
+
composerAttachmentPreviewOverlayAttachmentId: attachmentId,
|
|
10236
|
+
composerAttachmentPreviewOverlayError: false
|
|
9464
10237
|
};
|
|
9465
10238
|
};
|
|
9466
10239
|
|
|
10240
|
+
const handleMouseOver = async (state, name) => {
|
|
10241
|
+
if (!isComposerAttachmentInputName(name)) {
|
|
10242
|
+
return state;
|
|
10243
|
+
}
|
|
10244
|
+
const attachmentId = getAttachmentIdFromComposerAttachmentInputName(name);
|
|
10245
|
+
return showComposerAttachmentPreviewOverlay(state, attachmentId);
|
|
10246
|
+
};
|
|
10247
|
+
|
|
9467
10248
|
const handleNewline = async state => {
|
|
9468
10249
|
const {
|
|
9469
10250
|
composerValue
|
|
@@ -9489,7 +10270,7 @@ const handleProjectAddButtonContextMenu = async (state, button, x, y) => {
|
|
|
9489
10270
|
return state;
|
|
9490
10271
|
};
|
|
9491
10272
|
|
|
9492
|
-
const
|
|
10273
|
+
const getProjectAtIndex = (state, index) => {
|
|
9493
10274
|
const {
|
|
9494
10275
|
projectExpandedIds,
|
|
9495
10276
|
projects,
|
|
@@ -9499,7 +10280,7 @@ const getProjectIdAtIndex = (state, index) => {
|
|
|
9499
10280
|
let currentIndex = 0;
|
|
9500
10281
|
for (const project of projects) {
|
|
9501
10282
|
if (currentIndex === index) {
|
|
9502
|
-
return project
|
|
10283
|
+
return project;
|
|
9503
10284
|
}
|
|
9504
10285
|
currentIndex++;
|
|
9505
10286
|
if (projectExpandedIds.includes(project.id)) {
|
|
@@ -9509,13 +10290,13 @@ const getProjectIdAtIndex = (state, index) => {
|
|
|
9509
10290
|
continue;
|
|
9510
10291
|
}
|
|
9511
10292
|
if (currentIndex === index) {
|
|
9512
|
-
return project
|
|
10293
|
+
return project;
|
|
9513
10294
|
}
|
|
9514
10295
|
currentIndex++;
|
|
9515
10296
|
}
|
|
9516
10297
|
}
|
|
9517
10298
|
}
|
|
9518
|
-
return
|
|
10299
|
+
return undefined;
|
|
9519
10300
|
};
|
|
9520
10301
|
const handleProjectListContextMenu = async (state, button, x, y) => {
|
|
9521
10302
|
const {
|
|
@@ -9528,13 +10309,14 @@ const handleProjectListContextMenu = async (state, button, x, y) => {
|
|
|
9528
10309
|
if (index < 0) {
|
|
9529
10310
|
return state;
|
|
9530
10311
|
}
|
|
9531
|
-
const
|
|
9532
|
-
if (!
|
|
10312
|
+
const project = getProjectAtIndex(state, index);
|
|
10313
|
+
if (!project) {
|
|
9533
10314
|
return state;
|
|
9534
10315
|
}
|
|
9535
10316
|
await showContextMenu2(uid, MenuChatProjectList, x, y, {
|
|
10317
|
+
canRemoveProject: project.name !== '_blank',
|
|
9536
10318
|
menuId: MenuChatProjectList,
|
|
9537
|
-
projectId
|
|
10319
|
+
projectId: project.id
|
|
9538
10320
|
});
|
|
9539
10321
|
return state;
|
|
9540
10322
|
};
|
|
@@ -9614,7 +10396,7 @@ const createExtensionHostRpc = async () => {
|
|
|
9614
10396
|
|
|
9615
10397
|
const initialize = async () => {
|
|
9616
10398
|
const rpc = await createExtensionHostRpc();
|
|
9617
|
-
set$
|
|
10399
|
+
set$5(rpc);
|
|
9618
10400
|
};
|
|
9619
10401
|
|
|
9620
10402
|
const ensureBlankProject = (projects, fallbackBlankProject) => {
|
|
@@ -9657,17 +10439,34 @@ const getSavedChatListScrollTop = savedState => {
|
|
|
9657
10439
|
return chatListScrollTop;
|
|
9658
10440
|
};
|
|
9659
10441
|
|
|
9660
|
-
const
|
|
10442
|
+
const getSavedComposerSelection = (savedState, composerValue) => {
|
|
9661
10443
|
if (!isObject$1(savedState)) {
|
|
9662
10444
|
return undefined;
|
|
9663
10445
|
}
|
|
9664
10446
|
const {
|
|
9665
|
-
|
|
10447
|
+
composerSelectionEnd,
|
|
10448
|
+
composerSelectionStart
|
|
9666
10449
|
} = savedState;
|
|
9667
|
-
if (typeof
|
|
10450
|
+
if (typeof composerSelectionStart !== 'number') {
|
|
9668
10451
|
return undefined;
|
|
9669
10452
|
}
|
|
9670
|
-
|
|
10453
|
+
if (typeof composerSelectionEnd !== 'number') {
|
|
10454
|
+
return undefined;
|
|
10455
|
+
}
|
|
10456
|
+
return getNormalizedComposerSelection(composerValue, composerSelectionStart, composerSelectionEnd);
|
|
10457
|
+
};
|
|
10458
|
+
|
|
10459
|
+
const getSavedComposerValue = savedState => {
|
|
10460
|
+
if (!isObject$1(savedState)) {
|
|
10461
|
+
return undefined;
|
|
10462
|
+
}
|
|
10463
|
+
const {
|
|
10464
|
+
composerValue
|
|
10465
|
+
} = savedState;
|
|
10466
|
+
if (typeof composerValue !== 'string') {
|
|
10467
|
+
return undefined;
|
|
10468
|
+
}
|
|
10469
|
+
return composerValue;
|
|
9671
10470
|
};
|
|
9672
10471
|
|
|
9673
10472
|
const getSavedLastNormalViewMode = savedState => {
|
|
@@ -9958,6 +10757,15 @@ const loadReasoningPickerEnabled = async () => {
|
|
|
9958
10757
|
}
|
|
9959
10758
|
};
|
|
9960
10759
|
|
|
10760
|
+
const loadScrollDownButtonEnabled = async () => {
|
|
10761
|
+
try {
|
|
10762
|
+
const savedScrollDownButtonEnabled = await get('chatView.scrollDownButtonEnabled');
|
|
10763
|
+
return typeof savedScrollDownButtonEnabled === 'boolean' ? savedScrollDownButtonEnabled : false;
|
|
10764
|
+
} catch {
|
|
10765
|
+
return false;
|
|
10766
|
+
}
|
|
10767
|
+
};
|
|
10768
|
+
|
|
9961
10769
|
const loadSearchEnabled = async () => {
|
|
9962
10770
|
try {
|
|
9963
10771
|
const savedSearchEnabled = await get('chatView.searchEnabled');
|
|
@@ -10049,7 +10857,7 @@ const loadVoiceDictationEnabled = async () => {
|
|
|
10049
10857
|
};
|
|
10050
10858
|
|
|
10051
10859
|
const loadPreferences = async () => {
|
|
10052
|
-
const [aiSessionTitleGenerationEnabled, authAccessToken, authEnabled, authRefreshToken, backendUrl, chatHistoryEnabled, composerDropEnabled, openApiApiKey, openRouterApiKey, emitStreamingFunctionCallEvents, reasoningPickerEnabled, searchEnabled, streamingEnabled, todoListToolEnabled, toolEnablement, passIncludeObfuscation, useChatCoordinatorWorker, useChatMathWorker, useChatMessageParsingWorker, useChatNetworkWorkerForRequests, useChatToolWorker, voiceDictationEnabled] = await Promise.all([loadAiSessionTitleGenerationEnabled(), loadBackendAccessToken(), loadAuthEnabled(), loadBackendRefreshToken(), loadBackendUrl(), loadChatHistoryEnabled(), loadComposerDropEnabled(), loadOpenApiApiKey(), loadOpenRouterApiKey(), loadEmitStreamingFunctionCallEvents(), loadReasoningPickerEnabled(), loadSearchEnabled(), loadStreamingEnabled(), loadTodoListToolEnabled(), loadToolEnablement(), loadPassIncludeObfuscation(), loadUseChatCoordinatorWorker(), loadUseChatMathWorker(), loadUseChatMessageParsingWorker(), loadUseChatNetworkWorkerForRequests(), loadUseChatToolWorker(), loadVoiceDictationEnabled()]);
|
|
10860
|
+
const [aiSessionTitleGenerationEnabled, authAccessToken, authEnabled, authRefreshToken, backendUrl, chatHistoryEnabled, composerDropEnabled, openApiApiKey, openRouterApiKey, emitStreamingFunctionCallEvents, reasoningPickerEnabled, scrollDownButtonEnabled, searchEnabled, streamingEnabled, todoListToolEnabled, toolEnablement, passIncludeObfuscation, useChatCoordinatorWorker, useChatMathWorker, useChatMessageParsingWorker, useChatNetworkWorkerForRequests, useChatToolWorker, voiceDictationEnabled] = await Promise.all([loadAiSessionTitleGenerationEnabled(), loadBackendAccessToken(), loadAuthEnabled(), loadBackendRefreshToken(), loadBackendUrl(), loadChatHistoryEnabled(), loadComposerDropEnabled(), loadOpenApiApiKey(), loadOpenRouterApiKey(), loadEmitStreamingFunctionCallEvents(), loadReasoningPickerEnabled(), loadScrollDownButtonEnabled(), loadSearchEnabled(), loadStreamingEnabled(), loadTodoListToolEnabled(), loadToolEnablement(), loadPassIncludeObfuscation(), loadUseChatCoordinatorWorker(), loadUseChatMathWorker(), loadUseChatMessageParsingWorker(), loadUseChatNetworkWorkerForRequests(), loadUseChatToolWorker(), loadVoiceDictationEnabled()]);
|
|
10053
10861
|
return {
|
|
10054
10862
|
aiSessionTitleGenerationEnabled,
|
|
10055
10863
|
authAccessToken,
|
|
@@ -10063,6 +10871,7 @@ const loadPreferences = async () => {
|
|
|
10063
10871
|
openRouterApiKey,
|
|
10064
10872
|
passIncludeObfuscation,
|
|
10065
10873
|
reasoningPickerEnabled,
|
|
10874
|
+
scrollDownButtonEnabled,
|
|
10066
10875
|
searchEnabled,
|
|
10067
10876
|
streamingEnabled,
|
|
10068
10877
|
todoListToolEnabled,
|
|
@@ -10120,6 +10929,9 @@ const loadContent = async (state, savedState) => {
|
|
|
10120
10929
|
const savedSelectedModelId = getSavedSelectedModelId(savedState);
|
|
10121
10930
|
const savedViewMode = getSavedViewMode(savedState);
|
|
10122
10931
|
const savedComposerValue = getSavedComposerValue(savedState);
|
|
10932
|
+
const composerValue = savedComposerValue ?? state.composerValue;
|
|
10933
|
+
const savedComposerSelection = getSavedComposerSelection(savedState, composerValue);
|
|
10934
|
+
const [composerSelectionStart, composerSelectionEnd] = savedComposerSelection ?? [state.composerSelectionStart, state.composerSelectionEnd];
|
|
10123
10935
|
const {
|
|
10124
10936
|
aiSessionTitleGenerationEnabled,
|
|
10125
10937
|
authAccessToken,
|
|
@@ -10133,6 +10945,7 @@ const loadContent = async (state, savedState) => {
|
|
|
10133
10945
|
openRouterApiKey,
|
|
10134
10946
|
passIncludeObfuscation,
|
|
10135
10947
|
reasoningPickerEnabled,
|
|
10948
|
+
scrollDownButtonEnabled,
|
|
10136
10949
|
searchEnabled,
|
|
10137
10950
|
streamingEnabled,
|
|
10138
10951
|
todoListToolEnabled,
|
|
@@ -10208,9 +11021,12 @@ const loadContent = async (state, savedState) => {
|
|
|
10208
11021
|
chatHistoryEnabled,
|
|
10209
11022
|
chatListScrollTop,
|
|
10210
11023
|
composerAttachments,
|
|
11024
|
+
composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, state.width),
|
|
10211
11025
|
composerDropActive: false,
|
|
10212
11026
|
composerDropEnabled,
|
|
10213
|
-
|
|
11027
|
+
composerSelectionEnd,
|
|
11028
|
+
composerSelectionStart,
|
|
11029
|
+
composerValue,
|
|
10214
11030
|
emitStreamingFunctionCallEvents,
|
|
10215
11031
|
initial: false,
|
|
10216
11032
|
lastNormalViewMode,
|
|
@@ -10232,6 +11048,7 @@ const loadContent = async (state, savedState) => {
|
|
|
10232
11048
|
reasoningEffortPickerOpen: false,
|
|
10233
11049
|
reasoningPickerEnabled,
|
|
10234
11050
|
runModePickerOpen: false,
|
|
11051
|
+
scrollDownButtonEnabled,
|
|
10235
11052
|
searchEnabled,
|
|
10236
11053
|
searchFieldVisible: false,
|
|
10237
11054
|
searchValue: '',
|
|
@@ -10289,7 +11106,7 @@ const mockOpenApiRequestGetAll = _state => {
|
|
|
10289
11106
|
};
|
|
10290
11107
|
|
|
10291
11108
|
const mockOpenApiRequestReset = state => {
|
|
10292
|
-
reset$
|
|
11109
|
+
reset$2();
|
|
10293
11110
|
return state;
|
|
10294
11111
|
};
|
|
10295
11112
|
|
|
@@ -10314,10 +11131,33 @@ const mockOpenApiStreamPushChunk = (state, chunk) => {
|
|
|
10314
11131
|
};
|
|
10315
11132
|
|
|
10316
11133
|
const mockOpenApiStreamReset = state => {
|
|
10317
|
-
reset$
|
|
11134
|
+
reset$1();
|
|
10318
11135
|
return state;
|
|
10319
11136
|
};
|
|
10320
11137
|
|
|
11138
|
+
const openMockProject = async (state, projectId, projectName, projectUri) => {
|
|
11139
|
+
if (!projectId || !projectName) {
|
|
11140
|
+
return state;
|
|
11141
|
+
}
|
|
11142
|
+
const project = {
|
|
11143
|
+
id: projectId,
|
|
11144
|
+
name: projectName,
|
|
11145
|
+
uri: projectUri
|
|
11146
|
+
};
|
|
11147
|
+
const projects = state.projects.some(candidate => candidate.id === projectId) ? state.projects.map(candidate => {
|
|
11148
|
+
if (candidate.id !== projectId) {
|
|
11149
|
+
return candidate;
|
|
11150
|
+
}
|
|
11151
|
+
return project;
|
|
11152
|
+
}) : [...state.projects, project];
|
|
11153
|
+
return {
|
|
11154
|
+
...state,
|
|
11155
|
+
projectExpandedIds: state.projectExpandedIds.includes(projectId) ? state.projectExpandedIds : [...state.projectExpandedIds, projectId],
|
|
11156
|
+
projects,
|
|
11157
|
+
selectedProjectId: projectId
|
|
11158
|
+
};
|
|
11159
|
+
};
|
|
11160
|
+
|
|
10321
11161
|
const openMockSession = async (state, mockSessionId, mockChatMessages) => {
|
|
10322
11162
|
const {
|
|
10323
11163
|
sessions: currentSessions
|
|
@@ -10347,6 +11187,7 @@ const openMockSession = async (state, mockSessionId, mockChatMessages) => {
|
|
|
10347
11187
|
return {
|
|
10348
11188
|
...state,
|
|
10349
11189
|
composerAttachments: [],
|
|
11190
|
+
composerAttachmentsHeight: 0,
|
|
10350
11191
|
parsedMessages,
|
|
10351
11192
|
renamingSessionId: '',
|
|
10352
11193
|
selectedSessionId: mockSessionId,
|
|
@@ -10361,19 +11202,24 @@ const pasteInput = async state => {
|
|
|
10361
11202
|
};
|
|
10362
11203
|
|
|
10363
11204
|
const registerMockResponse = (state, mockResponse) => {
|
|
10364
|
-
reset$
|
|
11205
|
+
reset$1();
|
|
10365
11206
|
pushChunk(mockResponse.text);
|
|
10366
11207
|
finish();
|
|
10367
11208
|
return state;
|
|
10368
11209
|
};
|
|
10369
11210
|
|
|
10370
|
-
const
|
|
11211
|
+
const removeComposerAttachment = async (state, attachmentId) => {
|
|
11212
|
+
return handleRemoveComposerAttachment(state, attachmentId);
|
|
11213
|
+
};
|
|
11214
|
+
|
|
11215
|
+
const getCss = (composerHeight, composerAttachmentsHeight, modelPickerHeight, listItemHeight, chatMessageFontSize, chatMessageLineHeight, chatMessageFontFamily, chatFocusContentMaxWidth, textAreaPaddingTop, textAreaPaddingLeft, textAreaPaddingRight, textAreaPaddingBottom, chatSendAreaPaddingTop, chatSendAreaPaddingLeft, chatSendAreaPaddingRight, chatSendAreaPaddingBottom, renderHtmlCss) => {
|
|
10371
11216
|
const buttonsHeight = 20;
|
|
10372
11217
|
const gap = 10;
|
|
10373
11218
|
const contentPadding = 10;
|
|
10374
|
-
const chatSendAreaHeight = composerHeight + chatSendAreaPaddingTop + chatSendAreaPaddingBottom + buttonsHeight + gap + contentPadding * 2;
|
|
11219
|
+
const chatSendAreaHeight = composerHeight + composerAttachmentsHeight + chatSendAreaPaddingTop + chatSendAreaPaddingBottom + buttonsHeight + gap + contentPadding * 2;
|
|
10375
11220
|
const baseCss = `:root {
|
|
10376
11221
|
--ChatInputBoxHeight: ${composerHeight}px;
|
|
11222
|
+
--ChatComposerAttachmentsHeight: ${composerAttachmentsHeight}px;
|
|
10377
11223
|
--ChatTextAreaHeight: ${composerHeight}px;
|
|
10378
11224
|
--ChatSendAreaHeight: ${chatSendAreaHeight}px;
|
|
10379
11225
|
--ChatTextAreaPaddingTop: ${textAreaPaddingTop}px;
|
|
@@ -10408,10 +11254,12 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
|
|
|
10408
11254
|
}
|
|
10409
11255
|
|
|
10410
11256
|
.ChatComposerAttachment{
|
|
11257
|
+
align-items: center;
|
|
11258
|
+
display: inline-flex;
|
|
11259
|
+
gap: 6px;
|
|
10411
11260
|
max-width: 100%;
|
|
11261
|
+
min-width: 0;
|
|
10412
11262
|
overflow: hidden;
|
|
10413
|
-
white-space: nowrap;
|
|
10414
|
-
text-overflow: ellipsis;
|
|
10415
11263
|
border-radius: 999px;
|
|
10416
11264
|
border: 1px solid var(--vscode-widget-border, var(--vscode-panel-border));
|
|
10417
11265
|
padding: 4px 10px;
|
|
@@ -10420,6 +11268,35 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
|
|
|
10420
11268
|
font-size: 12px;
|
|
10421
11269
|
}
|
|
10422
11270
|
|
|
11271
|
+
.ChatComposerAttachmentLabel{
|
|
11272
|
+
min-width: 0;
|
|
11273
|
+
overflow: hidden;
|
|
11274
|
+
text-overflow: ellipsis;
|
|
11275
|
+
white-space: nowrap;
|
|
11276
|
+
}
|
|
11277
|
+
|
|
11278
|
+
.ChatComposerAttachmentPreview{
|
|
11279
|
+
width: 20px;
|
|
11280
|
+
height: 20px;
|
|
11281
|
+
flex: none;
|
|
11282
|
+
border-radius: 4px;
|
|
11283
|
+
object-fit: cover;
|
|
11284
|
+
}
|
|
11285
|
+
|
|
11286
|
+
.ChatComposerAttachmentRemoveButton{
|
|
11287
|
+
appearance: none;
|
|
11288
|
+
background: transparent;
|
|
11289
|
+
border: none;
|
|
11290
|
+
border-radius: 999px;
|
|
11291
|
+
color: inherit;
|
|
11292
|
+
cursor: pointer;
|
|
11293
|
+
flex-shrink: 0;
|
|
11294
|
+
font: inherit;
|
|
11295
|
+
line-height: 1;
|
|
11296
|
+
margin: 0;
|
|
11297
|
+
padding: 0;
|
|
11298
|
+
}
|
|
11299
|
+
|
|
10423
11300
|
.ChatComposerAttachmentImage{
|
|
10424
11301
|
border-color: var(--vscode-charts-blue);
|
|
10425
11302
|
}
|
|
@@ -10433,6 +11310,93 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
|
|
|
10433
11310
|
border-color: var(--vscode-charts-green, var(--vscode-widget-border, var(--vscode-panel-border)));
|
|
10434
11311
|
}
|
|
10435
11312
|
|
|
11313
|
+
.ChatAttachments{
|
|
11314
|
+
display: flex;
|
|
11315
|
+
flex-wrap: wrap;
|
|
11316
|
+
gap: 8px;
|
|
11317
|
+
margin-top: 8px;
|
|
11318
|
+
}
|
|
11319
|
+
|
|
11320
|
+
.ChatAttachment{
|
|
11321
|
+
align-items: center;
|
|
11322
|
+
display: inline-flex;
|
|
11323
|
+
gap: 6px;
|
|
11324
|
+
max-width: 100%;
|
|
11325
|
+
min-width: 0;
|
|
11326
|
+
overflow: hidden;
|
|
11327
|
+
border-radius: 999px;
|
|
11328
|
+
border: 1px solid var(--vscode-widget-border, var(--vscode-panel-border));
|
|
11329
|
+
padding: 4px 10px;
|
|
11330
|
+
background: var(--vscode-badge-background, color-mix(in srgb, var(--vscode-editor-background) 88%, white));
|
|
11331
|
+
color: var(--vscode-badge-foreground, var(--vscode-foreground));
|
|
11332
|
+
font-size: 12px;
|
|
11333
|
+
}
|
|
11334
|
+
|
|
11335
|
+
.ChatAttachmentLabel{
|
|
11336
|
+
min-width: 0;
|
|
11337
|
+
overflow: hidden;
|
|
11338
|
+
text-overflow: ellipsis;
|
|
11339
|
+
white-space: nowrap;
|
|
11340
|
+
}
|
|
11341
|
+
|
|
11342
|
+
.ChatAttachmentPreview{
|
|
11343
|
+
width: 20px;
|
|
11344
|
+
height: 20px;
|
|
11345
|
+
flex: none;
|
|
11346
|
+
border-radius: 4px;
|
|
11347
|
+
object-fit: cover;
|
|
11348
|
+
}
|
|
11349
|
+
|
|
11350
|
+
.ChatAttachmentImage{
|
|
11351
|
+
border-color: var(--vscode-charts-blue);
|
|
11352
|
+
}
|
|
11353
|
+
|
|
11354
|
+
.ChatAttachmentInvalidImage{
|
|
11355
|
+
border-color: var(--vscode-inputValidation-errorBorder, var(--vscode-errorForeground));
|
|
11356
|
+
color: var(--vscode-errorForeground, var(--vscode-foreground));
|
|
11357
|
+
}
|
|
11358
|
+
|
|
11359
|
+
.ChatAttachmentTextFile{
|
|
11360
|
+
border-color: var(--vscode-charts-green, var(--vscode-widget-border, var(--vscode-panel-border)));
|
|
11361
|
+
}
|
|
11362
|
+
|
|
11363
|
+
.Chat{
|
|
11364
|
+
position: relative;
|
|
11365
|
+
}
|
|
11366
|
+
|
|
11367
|
+
.ChatComposerAttachmentPreviewOverlay{
|
|
11368
|
+
position: absolute;
|
|
11369
|
+
left: calc(var(--ChatSendAreaPaddingLeft) + 8px);
|
|
11370
|
+
bottom: calc(var(--ChatSendAreaHeight) - 12px);
|
|
11371
|
+
z-index: 6;
|
|
11372
|
+
width: 240px;
|
|
11373
|
+
min-width: 160px;
|
|
11374
|
+
min-height: 160px;
|
|
11375
|
+
max-width: calc(100% - var(--ChatSendAreaPaddingLeft) - var(--ChatSendAreaPaddingRight) - 16px);
|
|
11376
|
+
display: flex;
|
|
11377
|
+
align-items: center;
|
|
11378
|
+
justify-content: center;
|
|
11379
|
+
border: 1px solid var(--vscode-widget-border, var(--vscode-panel-border));
|
|
11380
|
+
border-radius: 12px;
|
|
11381
|
+
background: var(--vscode-editorWidget-background, var(--vscode-editor-background));
|
|
11382
|
+
box-shadow: 0 12px 28px color-mix(in srgb, var(--vscode-editor-background) 45%, black);
|
|
11383
|
+
overflow: hidden;
|
|
11384
|
+
}
|
|
11385
|
+
|
|
11386
|
+
.ChatComposerAttachmentPreviewOverlayImage{
|
|
11387
|
+
display: block;
|
|
11388
|
+
width: 100%;
|
|
11389
|
+
max-width: 100%;
|
|
11390
|
+
max-height: min(320px, calc(100vh - 200px));
|
|
11391
|
+
object-fit: contain;
|
|
11392
|
+
background: color-mix(in srgb, var(--vscode-editor-background) 88%, black);
|
|
11393
|
+
}
|
|
11394
|
+
|
|
11395
|
+
.ChatComposerAttachmentPreviewOverlayError{
|
|
11396
|
+
padding: 12px;
|
|
11397
|
+
color: var(--vscode-errorForeground, var(--vscode-foreground));
|
|
11398
|
+
}
|
|
11399
|
+
|
|
10436
11400
|
.CustomSelectContainer{
|
|
10437
11401
|
position: relative;
|
|
10438
11402
|
min-width: 0;
|
|
@@ -10444,6 +11408,20 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
|
|
|
10444
11408
|
justify-content: flex-end;
|
|
10445
11409
|
}
|
|
10446
11410
|
|
|
11411
|
+
.ChatOverlays{
|
|
11412
|
+
position: absolute;
|
|
11413
|
+
inset: 0;
|
|
11414
|
+
pointer-events: none;
|
|
11415
|
+
}
|
|
11416
|
+
|
|
11417
|
+
.ChatOverlays > *{
|
|
11418
|
+
pointer-events: auto;
|
|
11419
|
+
}
|
|
11420
|
+
|
|
11421
|
+
.ChatViewDropOverlayActive{
|
|
11422
|
+
background: rgba(255, 255, 255, 0.1);
|
|
11423
|
+
}
|
|
11424
|
+
|
|
10447
11425
|
.RunModePickerPopOver{
|
|
10448
11426
|
overflow: hidden;
|
|
10449
11427
|
border: 1px solid var(--vscode-widget-border, var(--vscode-panel-border));
|
|
@@ -10456,6 +11434,33 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
|
|
|
10456
11434
|
color: var(--vscode-textLink-foreground);
|
|
10457
11435
|
}
|
|
10458
11436
|
|
|
11437
|
+
.ProjectListChevron{
|
|
11438
|
+
display: inline-block;
|
|
11439
|
+
flex: none;
|
|
11440
|
+
height: 16px;
|
|
11441
|
+
width: 16px;
|
|
11442
|
+
}
|
|
11443
|
+
|
|
11444
|
+
.ChatOrderedListItem{
|
|
11445
|
+
align-items: flex-start;
|
|
11446
|
+
display: flex;
|
|
11447
|
+
gap: 8px;
|
|
11448
|
+
}
|
|
11449
|
+
|
|
11450
|
+
.ChatOrderedListMarker{
|
|
11451
|
+
flex: none;
|
|
11452
|
+
min-width: 1.5em;
|
|
11453
|
+
}
|
|
11454
|
+
|
|
11455
|
+
.ChatOrderedListItemContent{
|
|
11456
|
+
flex: 1;
|
|
11457
|
+
min-width: 0;
|
|
11458
|
+
}
|
|
11459
|
+
|
|
11460
|
+
.ChatOrderedListItemPrefix{
|
|
11461
|
+
white-space: nowrap;
|
|
11462
|
+
}
|
|
11463
|
+
|
|
10459
11464
|
.ChatToolCalls .ChatOrderedList{
|
|
10460
11465
|
list-style: none;
|
|
10461
11466
|
margin: 0;
|
|
@@ -10478,6 +11483,49 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
|
|
|
10478
11483
|
min-width: 0;
|
|
10479
11484
|
}
|
|
10480
11485
|
|
|
11486
|
+
.ChatMessages > .Message{
|
|
11487
|
+
display: flex;
|
|
11488
|
+
}
|
|
11489
|
+
|
|
11490
|
+
.ChatMessages > .MessageUser{
|
|
11491
|
+
justify-content: flex-end;
|
|
11492
|
+
}
|
|
11493
|
+
|
|
11494
|
+
.ChatMessages > .MessageAssistant{
|
|
11495
|
+
justify-content: flex-start;
|
|
11496
|
+
}
|
|
11497
|
+
|
|
11498
|
+
.ChatMessages > .MessageUser .ChatAttachments{
|
|
11499
|
+
justify-content: flex-end;
|
|
11500
|
+
}
|
|
11501
|
+
|
|
11502
|
+
.ChatFocus .ChatMessages > .Message{
|
|
11503
|
+
inline-size: fit-content;
|
|
11504
|
+
max-inline-size: min(100%, var(--ChatFocusContentMaxWidth));
|
|
11505
|
+
}
|
|
11506
|
+
|
|
11507
|
+
.ChatFocus .ChatMessages > .Message > .ChatMessageContent{
|
|
11508
|
+
max-inline-size: 100%;
|
|
11509
|
+
}
|
|
11510
|
+
|
|
11511
|
+
|
|
11512
|
+
.Viewlet.Chat.ChatFocus{
|
|
11513
|
+
display: flex !important;
|
|
11514
|
+
min-width: 0;
|
|
11515
|
+
}
|
|
11516
|
+
|
|
11517
|
+
.ChatFocusMainArea{
|
|
11518
|
+
display: flex;
|
|
11519
|
+
flex: 1;
|
|
11520
|
+
flex-direction: column;
|
|
11521
|
+
min-width: 0;
|
|
11522
|
+
}
|
|
11523
|
+
|
|
11524
|
+
.ChatFocusMainArea > .ChatMessages{
|
|
11525
|
+
flex: 1;
|
|
11526
|
+
min-height: 0;
|
|
11527
|
+
}
|
|
11528
|
+
|
|
10481
11529
|
`;
|
|
10482
11530
|
return `${baseCss}
|
|
10483
11531
|
|
|
@@ -10498,6 +11546,7 @@ const renderCss = (oldState, newState) => {
|
|
|
10498
11546
|
chatSendAreaPaddingLeft,
|
|
10499
11547
|
chatSendAreaPaddingRight,
|
|
10500
11548
|
chatSendAreaPaddingTop,
|
|
11549
|
+
composerAttachmentsHeight,
|
|
10501
11550
|
composerHeight,
|
|
10502
11551
|
listItemHeight,
|
|
10503
11552
|
modelPickerHeight,
|
|
@@ -10510,10 +11559,11 @@ const renderCss = (oldState, newState) => {
|
|
|
10510
11559
|
uid
|
|
10511
11560
|
} = newState;
|
|
10512
11561
|
const renderHtmlCss = getRenderHtmlCss(sessions, selectedSessionId);
|
|
10513
|
-
const css = getCss(composerHeight, modelPickerHeight, listItemHeight, chatMessageFontSize, chatMessageLineHeight, chatMessageFontFamily, chatFocusContentMaxWidth, textAreaPaddingTop, textAreaPaddingLeft, textAreaPaddingRight, textAreaPaddingBottom, chatSendAreaPaddingTop, chatSendAreaPaddingLeft, chatSendAreaPaddingRight, chatSendAreaPaddingBottom, renderHtmlCss);
|
|
11562
|
+
const css = getCss(composerHeight, composerAttachmentsHeight, modelPickerHeight, listItemHeight, chatMessageFontSize, chatMessageLineHeight, chatMessageFontFamily, chatFocusContentMaxWidth, textAreaPaddingTop, textAreaPaddingLeft, textAreaPaddingRight, textAreaPaddingBottom, chatSendAreaPaddingTop, chatSendAreaPaddingLeft, chatSendAreaPaddingRight, chatSendAreaPaddingBottom, renderHtmlCss);
|
|
10514
11563
|
return [SetCss, uid, css];
|
|
10515
11564
|
};
|
|
10516
11565
|
|
|
11566
|
+
const pickerListSelector = '.ChatOverlays .ChatModelPickerList';
|
|
10517
11567
|
const getFocusSelector = state => {
|
|
10518
11568
|
const {
|
|
10519
11569
|
focus,
|
|
@@ -10539,6 +11589,8 @@ const getFocusSelector = state => {
|
|
|
10539
11589
|
}
|
|
10540
11590
|
case 'model-picker-input':
|
|
10541
11591
|
return `[name="${ModelPickerSearch}"]`;
|
|
11592
|
+
case 'picker-list':
|
|
11593
|
+
return pickerListSelector;
|
|
10542
11594
|
case 'send-button':
|
|
10543
11595
|
return '[name="send"]';
|
|
10544
11596
|
default:
|
|
@@ -10549,6 +11601,9 @@ const renderFocus = (oldState, newState) => {
|
|
|
10549
11601
|
if (newState.modelPickerOpen && !oldState.modelPickerOpen) {
|
|
10550
11602
|
return [FocusSelector, `[name="${ModelPickerSearch}"]`];
|
|
10551
11603
|
}
|
|
11604
|
+
if (newState.agentModePickerOpen && !oldState.agentModePickerOpen || newState.runModePickerOpen && !oldState.runModePickerOpen || newState.reasoningEffortPickerOpen && !oldState.reasoningEffortPickerOpen) {
|
|
11605
|
+
return [FocusSelector, pickerListSelector];
|
|
11606
|
+
}
|
|
10552
11607
|
const selector = getFocusSelector(newState);
|
|
10553
11608
|
return [FocusSelector, selector];
|
|
10554
11609
|
};
|
|
@@ -10566,6 +11621,8 @@ const renderFocusContext = (oldState, newState) => {
|
|
|
10566
11621
|
const HandleListContextMenu = 2;
|
|
10567
11622
|
const HandleFocus = 3;
|
|
10568
11623
|
const HandleInput = 4;
|
|
11624
|
+
const HandleMouseOut = 5;
|
|
11625
|
+
const HandleMouseOver = 7;
|
|
10569
11626
|
const HandleClick = 11;
|
|
10570
11627
|
const HandleKeyDown = 12;
|
|
10571
11628
|
const HandleClickClose = 13;
|
|
@@ -10612,57 +11669,8 @@ const HandlePointerDownModelPickerList = 54;
|
|
|
10612
11669
|
const HandlePointerUpModelPickerList = 55;
|
|
10613
11670
|
const HandleClickReasoningEffortPickerToggle = 56;
|
|
10614
11671
|
const HandleClickAgentModePickerToggle = 57;
|
|
10615
|
-
|
|
10616
|
-
const
|
|
10617
|
-
const className = mergeClassNames(ChatModelPickerItem, selected ? ChatModelPickerItemSelected : '');
|
|
10618
|
-
const hasDetail = detail !== '';
|
|
10619
|
-
return [{
|
|
10620
|
-
childCount: 1,
|
|
10621
|
-
type: Li
|
|
10622
|
-
}, {
|
|
10623
|
-
childCount: hasDetail ? 2 : 1,
|
|
10624
|
-
className,
|
|
10625
|
-
inputType: 'button',
|
|
10626
|
-
name,
|
|
10627
|
-
onClick: HandleClick,
|
|
10628
|
-
type: Button$1
|
|
10629
|
-
}, {
|
|
10630
|
-
childCount: 1,
|
|
10631
|
-
className: ChatModelPickerItemLabel,
|
|
10632
|
-
name,
|
|
10633
|
-
type: Span
|
|
10634
|
-
}, text(label), ...(hasDetail ? [{
|
|
10635
|
-
childCount: 1,
|
|
10636
|
-
className: ChatModelPickerItemUsageCost,
|
|
10637
|
-
name,
|
|
10638
|
-
type: Span
|
|
10639
|
-
}, text(detail)] : [])];
|
|
10640
|
-
};
|
|
10641
|
-
|
|
10642
|
-
const getCustomSelectPopOverVirtualDom = (optionCount, height, optionNodes, containerClassName = '', popOverClassName = '') => {
|
|
10643
|
-
return [{
|
|
10644
|
-
childCount: 1,
|
|
10645
|
-
className: mergeClassNames(ChatModelPickerContainer, containerClassName),
|
|
10646
|
-
type: Div
|
|
10647
|
-
}, {
|
|
10648
|
-
childCount: 1,
|
|
10649
|
-
className: mergeClassNames(ChatModelPicker, popOverClassName),
|
|
10650
|
-
style: `height: ${height}px;`,
|
|
10651
|
-
type: Div
|
|
10652
|
-
}, {
|
|
10653
|
-
childCount: optionCount,
|
|
10654
|
-
className: ChatModelPickerList,
|
|
10655
|
-
type: Ul
|
|
10656
|
-
}, ...optionNodes];
|
|
10657
|
-
};
|
|
10658
|
-
|
|
10659
|
-
const agentModePickerHeight = agentModes.length * 28;
|
|
10660
|
-
const getAgentModeOptionsVirtualDom = selectedAgentMode => {
|
|
10661
|
-
return agentModes.flatMap(agentMode => getCustomSelectOptionVirtualDom(getAgentModePickerItemInputName(agentMode), getAgentModeLabel(agentMode), agentMode === selectedAgentMode));
|
|
10662
|
-
};
|
|
10663
|
-
const getAgentModePickerPopOverVirtualDom = selectedAgentMode => {
|
|
10664
|
-
return getCustomSelectPopOverVirtualDom(agentModes.length, agentModePickerHeight, getAgentModeOptionsVirtualDom(selectedAgentMode));
|
|
10665
|
-
};
|
|
11672
|
+
const HandleContextMenuChatImageAttachment = 58;
|
|
11673
|
+
const HandleErrorComposerAttachmentPreviewOverlay = 59;
|
|
10666
11674
|
|
|
10667
11675
|
const getAddContextButtonDom = () => {
|
|
10668
11676
|
return [{
|
|
@@ -10703,22 +11711,22 @@ const getCustomSelectToggleVirtualDom = (label, name, open, onClick, title = lab
|
|
|
10703
11711
|
}];
|
|
10704
11712
|
};
|
|
10705
11713
|
|
|
10706
|
-
const
|
|
11714
|
+
const getCustomSelectPickerToggleVirtualDom = (label, name, open, onClick, title = label, containerChildCount = 1) => {
|
|
10707
11715
|
return [{
|
|
10708
|
-
childCount:
|
|
11716
|
+
childCount: containerChildCount,
|
|
10709
11717
|
className: CustomSelectContainer,
|
|
10710
11718
|
type: Div
|
|
10711
|
-
}, ...getCustomSelectToggleVirtualDom(
|
|
11719
|
+
}, ...getCustomSelectToggleVirtualDom(label, name, open, onClick, title)];
|
|
11720
|
+
};
|
|
11721
|
+
|
|
11722
|
+
const getAgentModePickerVirtualDom = (selectedAgentMode, agentModePickerOpen) => {
|
|
11723
|
+
return getCustomSelectPickerToggleVirtualDom(getAgentModeLabel(selectedAgentMode), AgentModePickerToggle, agentModePickerOpen, HandleClickAgentModePickerToggle);
|
|
10712
11724
|
};
|
|
10713
11725
|
|
|
10714
11726
|
const getChatModelPickerToggleVirtualDom = (models, selectedModelId, modelPickerOpen) => {
|
|
10715
11727
|
const selectedModel = models.find(model => model.id === selectedModelId);
|
|
10716
11728
|
const selectedModelLabel = selectedModel ? selectedModel.name : selectedModelId;
|
|
10717
|
-
return
|
|
10718
|
-
childCount: 1,
|
|
10719
|
-
className: CustomSelectContainer,
|
|
10720
|
-
type: Div
|
|
10721
|
-
}, ...getCustomSelectToggleVirtualDom(selectedModelLabel, ModelPickerToggle, modelPickerOpen, HandleClickModelPickerToggle)];
|
|
11729
|
+
return getCustomSelectPickerToggleVirtualDom(selectedModelLabel, ModelPickerToggle, modelPickerOpen, HandleClickModelPickerToggle);
|
|
10722
11730
|
};
|
|
10723
11731
|
|
|
10724
11732
|
const getCreatePullRequestButtonDom = () => {
|
|
@@ -10736,6 +11744,32 @@ const getCreatePullRequestButtonDom = () => {
|
|
|
10736
11744
|
}];
|
|
10737
11745
|
};
|
|
10738
11746
|
|
|
11747
|
+
const getCustomSelectOptionVirtualDom = (name, label, selected, detail = '') => {
|
|
11748
|
+
const className = mergeClassNames(ChatModelPickerItem, selected ? ChatModelPickerItemSelected : '');
|
|
11749
|
+
const hasDetail = detail !== '';
|
|
11750
|
+
return [{
|
|
11751
|
+
childCount: 1,
|
|
11752
|
+
type: Li
|
|
11753
|
+
}, {
|
|
11754
|
+
childCount: hasDetail ? 2 : 1,
|
|
11755
|
+
className,
|
|
11756
|
+
inputType: 'button',
|
|
11757
|
+
name,
|
|
11758
|
+
onClick: HandleClick,
|
|
11759
|
+
type: Button$1
|
|
11760
|
+
}, {
|
|
11761
|
+
childCount: 1,
|
|
11762
|
+
className: ChatModelPickerItemLabel,
|
|
11763
|
+
name,
|
|
11764
|
+
type: Span
|
|
11765
|
+
}, text(label), ...(hasDetail ? [{
|
|
11766
|
+
childCount: 1,
|
|
11767
|
+
className: ChatModelPickerItemUsageCost,
|
|
11768
|
+
name,
|
|
11769
|
+
type: Span
|
|
11770
|
+
}, text(detail)] : [])];
|
|
11771
|
+
};
|
|
11772
|
+
|
|
10739
11773
|
const reasoningEffortPickerHeight = reasoningEfforts.length * 28;
|
|
10740
11774
|
const getReasoningEffortOptionsVirtualDom = selectedReasoningEffort => {
|
|
10741
11775
|
return reasoningEfforts.flatMap(reasoningEffort => {
|
|
@@ -10745,11 +11779,7 @@ const getReasoningEffortOptionsVirtualDom = selectedReasoningEffort => {
|
|
|
10745
11779
|
});
|
|
10746
11780
|
};
|
|
10747
11781
|
const getReasoningEffortPickerVirtualDom = (selectedReasoningEffort, reasoningEffortPickerOpen) => {
|
|
10748
|
-
return [{
|
|
10749
|
-
childCount: reasoningEffortPickerOpen ? 2 : 1,
|
|
10750
|
-
className: CustomSelectContainer,
|
|
10751
|
-
type: Div
|
|
10752
|
-
}, ...getCustomSelectToggleVirtualDom(getReasoningEffortLabel(selectedReasoningEffort), ReasoningEffortPickerToggle, reasoningEffortPickerOpen, HandleClickReasoningEffortPickerToggle, 'Reasoning'), ...(reasoningEffortPickerOpen ? [{
|
|
11782
|
+
return [...getCustomSelectPickerToggleVirtualDom(getReasoningEffortLabel(selectedReasoningEffort), ReasoningEffortPickerToggle, reasoningEffortPickerOpen, HandleClickReasoningEffortPickerToggle, 'Reasoning', reasoningEffortPickerOpen ? 2 : 1), ...(reasoningEffortPickerOpen ? [{
|
|
10753
11783
|
childCount: 1,
|
|
10754
11784
|
className: mergeClassNames(ChatModelPicker, CustomSelectPopOver),
|
|
10755
11785
|
style: `height: ${reasoningEffortPickerHeight}px;`,
|
|
@@ -10757,16 +11787,29 @@ const getReasoningEffortPickerVirtualDom = (selectedReasoningEffort, reasoningEf
|
|
|
10757
11787
|
}, {
|
|
10758
11788
|
childCount: reasoningEfforts.length,
|
|
10759
11789
|
className: ChatModelPickerList,
|
|
11790
|
+
name: PickerList,
|
|
11791
|
+
tabIndex: -1,
|
|
10760
11792
|
type: Ul
|
|
10761
11793
|
}, ...getReasoningEffortOptionsVirtualDom(selectedReasoningEffort)] : [])];
|
|
10762
11794
|
};
|
|
10763
11795
|
|
|
10764
11796
|
const getRunModePickerVirtualDom = (selectedRunMode, runModePickerOpen) => {
|
|
10765
|
-
return
|
|
10766
|
-
|
|
10767
|
-
|
|
10768
|
-
|
|
10769
|
-
|
|
11797
|
+
return getCustomSelectPickerToggleVirtualDom(selectedRunMode, RunModePickerToggle, runModePickerOpen, HandleClickRunModePickerToggle);
|
|
11798
|
+
};
|
|
11799
|
+
|
|
11800
|
+
const getScrollDownButtonDom = () => {
|
|
11801
|
+
return [{
|
|
11802
|
+
childCount: 1,
|
|
11803
|
+
className: mergeClassNames(Button, ButtonSecondary),
|
|
11804
|
+
inputType: 'button',
|
|
11805
|
+
name: ScrollDown,
|
|
11806
|
+
onClick: HandleClick,
|
|
11807
|
+
title: scrollDown(),
|
|
11808
|
+
type: Button$1
|
|
11809
|
+
}, {
|
|
11810
|
+
text: scrollDown(),
|
|
11811
|
+
type: Text
|
|
11812
|
+
}];
|
|
10770
11813
|
};
|
|
10771
11814
|
|
|
10772
11815
|
const getSendButtonClassName = isSendDisabled => {
|
|
@@ -10901,6 +11944,34 @@ const getComposerAttachmentClassName = displayType => {
|
|
|
10901
11944
|
return ChatComposerAttachment;
|
|
10902
11945
|
}
|
|
10903
11946
|
};
|
|
11947
|
+
const getComposerAttachmentRemoveButtonDom = attachment => {
|
|
11948
|
+
return [{
|
|
11949
|
+
buttonType: 'button',
|
|
11950
|
+
childCount: 1,
|
|
11951
|
+
className: ChatComposerAttachmentRemoveButton,
|
|
11952
|
+
name: getComposerAttachmentRemoveInputName(attachment.attachmentId),
|
|
11953
|
+
onClick: HandleClick,
|
|
11954
|
+
title: removeAttachment(),
|
|
11955
|
+
type: Button$1
|
|
11956
|
+
}, {
|
|
11957
|
+
text: 'x',
|
|
11958
|
+
type: Text
|
|
11959
|
+
}];
|
|
11960
|
+
};
|
|
11961
|
+
const getComposerAttachmentPreviewDom = attachment => {
|
|
11962
|
+
if (!attachment.previewSrc) {
|
|
11963
|
+
return [];
|
|
11964
|
+
}
|
|
11965
|
+
return [{
|
|
11966
|
+
alt: `Image preview for ${attachment.name}`,
|
|
11967
|
+
childCount: 0,
|
|
11968
|
+
className: ChatComposerAttachmentPreview,
|
|
11969
|
+
name: getComposerAttachmentInputName(attachment.attachmentId),
|
|
11970
|
+
onContextMenu: HandleContextMenuChatImageAttachment,
|
|
11971
|
+
src: attachment.previewSrc,
|
|
11972
|
+
type: Img
|
|
11973
|
+
}];
|
|
11974
|
+
};
|
|
10904
11975
|
const getComposerAttachmentsDom = composerAttachments => {
|
|
10905
11976
|
if (composerAttachments.length === 0) {
|
|
10906
11977
|
return [];
|
|
@@ -10909,15 +11980,28 @@ const getComposerAttachmentsDom = composerAttachments => {
|
|
|
10909
11980
|
childCount: composerAttachments.length,
|
|
10910
11981
|
className: ChatComposerAttachments,
|
|
10911
11982
|
type: Div
|
|
10912
|
-
}, ...composerAttachments.flatMap(attachment =>
|
|
10913
|
-
|
|
10914
|
-
|
|
10915
|
-
|
|
10916
|
-
|
|
10917
|
-
|
|
10918
|
-
|
|
10919
|
-
|
|
10920
|
-
|
|
11983
|
+
}, ...composerAttachments.flatMap(attachment => {
|
|
11984
|
+
const removeButtonDom = getComposerAttachmentRemoveButtonDom(attachment);
|
|
11985
|
+
const previewDom = getComposerAttachmentPreviewDom(attachment);
|
|
11986
|
+
return [{
|
|
11987
|
+
childCount: 1 + (removeButtonDom.length > 0 ? 1 : 0) + previewDom.length,
|
|
11988
|
+
className: mergeClassNames(ChatComposerAttachment, getComposerAttachmentClassName(attachment.displayType)),
|
|
11989
|
+
name: getComposerAttachmentInputName(attachment.attachmentId),
|
|
11990
|
+
onMouseOut: HandleMouseOut,
|
|
11991
|
+
onMouseOver: HandleMouseOver,
|
|
11992
|
+
onPointerOut: HandleMouseOut,
|
|
11993
|
+
onPointerOver: HandleMouseOver,
|
|
11994
|
+
type: Div
|
|
11995
|
+
}, ...removeButtonDom, ...previewDom, {
|
|
11996
|
+
childCount: 1,
|
|
11997
|
+
className: ChatComposerAttachmentLabel,
|
|
11998
|
+
name: getComposerAttachmentInputName(attachment.attachmentId),
|
|
11999
|
+
type: Span
|
|
12000
|
+
}, {
|
|
12001
|
+
text: `${getComposerAttachmentLabel(attachment.displayType)} · ${attachment.name}`,
|
|
12002
|
+
type: Text
|
|
12003
|
+
}];
|
|
12004
|
+
})];
|
|
10921
12005
|
};
|
|
10922
12006
|
const getComposerTextAreaDom = () => {
|
|
10923
12007
|
return {
|
|
@@ -10933,15 +12017,19 @@ const getComposerTextAreaDom = () => {
|
|
|
10933
12017
|
type: TextArea
|
|
10934
12018
|
};
|
|
10935
12019
|
};
|
|
10936
|
-
const getChatSendAreaDom = (composerValue, composerAttachments, agentMode, agentModePickerOpen, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton = false, voiceDictationEnabled = false) => {
|
|
12020
|
+
const getChatSendAreaDom = (composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton = false, voiceDictationEnabled = false, scrollDownButtonEnabled = false, messagesAutoScrollEnabled = true) => {
|
|
10937
12021
|
const isSendDisabled = composerValue.trim() === '';
|
|
10938
|
-
const
|
|
10939
|
-
const
|
|
12022
|
+
const showAgentModePicker = hasSpaceForAgentModePicker;
|
|
12023
|
+
const showResponsiveRunModePicker = showRunMode && hasSpaceForRunModePicker;
|
|
12024
|
+
const showScrollDownButton = scrollDownButtonEnabled && !messagesAutoScrollEnabled;
|
|
12025
|
+
const bottomControlsCount = 2 + (usageOverviewEnabled ? 1 : 0) + (addContextButtonEnabled ? 1 : 0) + (showCreatePullRequestButton ? 1 : 0) + (voiceDictationEnabled ? 1 : 0) + (showScrollDownButton ? 1 : 0);
|
|
12026
|
+
const primaryControlsCount = 1 + (showAgentModePicker ? 1 : 0) + (reasoningPickerEnabled ? 1 : 0) + (showResponsiveRunModePicker ? 1 : 0);
|
|
10940
12027
|
const hasTodoList = todoListToolEnabled && todoListItems.length > 0;
|
|
10941
12028
|
const hasComposerAttachments = composerAttachments.length > 0;
|
|
10942
12029
|
return [{
|
|
10943
12030
|
childCount: 1,
|
|
10944
12031
|
className: ChatSendArea,
|
|
12032
|
+
onContextMenu: HandleContextMenuChatSendAreaBottom,
|
|
10945
12033
|
onSubmit: HandleSubmit,
|
|
10946
12034
|
type: Form
|
|
10947
12035
|
}, {
|
|
@@ -10956,8 +12044,88 @@ const getChatSendAreaDom = (composerValue, composerAttachments, agentMode, agent
|
|
|
10956
12044
|
}, {
|
|
10957
12045
|
childCount: primaryControlsCount,
|
|
10958
12046
|
className: ChatSendAreaPrimaryControls,
|
|
12047
|
+
role: 'toolbar',
|
|
12048
|
+
type: Div
|
|
12049
|
+
}, ...(showAgentModePicker ? getAgentModePickerVirtualDom(agentMode, agentModePickerOpen) : []), ...getChatModelPickerToggleVirtualDom(models, selectedModelId, modelPickerOpen), ...(reasoningPickerEnabled ? getReasoningEffortPickerVirtualDom(reasoningEffort, reasoningEffortPickerOpen) : []), ...(showResponsiveRunModePicker ? getRunModePickerVirtualDom(runMode, runModePickerOpen) : []), ...(usageOverviewEnabled ? getUsageOverviewDom(tokensUsed, tokensMax) : []), ...(addContextButtonEnabled ? getAddContextButtonDom() : []), ...(showCreatePullRequestButton ? getCreatePullRequestButtonDom() : []), ...(showScrollDownButton ? getScrollDownButtonDom() : []), ...getSendButtonDom(isSendDisabled, voiceDictationEnabled)];
|
|
12050
|
+
};
|
|
12051
|
+
|
|
12052
|
+
const focusHeaderStyle = 'align-items:center;border-bottom:1px solid var(--vscode-panel-border, transparent);display:flex;gap:12px;justify-content:space-between;padding:8px 12px;';
|
|
12053
|
+
const focusHeaderMetaStyle = 'align-items:baseline;display:flex;gap:8px;min-width:0;overflow:hidden;';
|
|
12054
|
+
const focusHeaderTitleStyle = 'margin:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;';
|
|
12055
|
+
const focusHeaderProjectStyle = 'overflow:hidden;text-overflow:ellipsis;white-space:nowrap;';
|
|
12056
|
+
const focusHeaderActionsStyle = 'display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;';
|
|
12057
|
+
const focusHeaderButtonStyle = 'white-space:nowrap;';
|
|
12058
|
+
const getFocusHeaderActionButtonDom = (label, name) => {
|
|
12059
|
+
return [{
|
|
12060
|
+
childCount: 1,
|
|
12061
|
+
className: mergeClassNames(Button, ButtonSecondary),
|
|
12062
|
+
inputType: 'button',
|
|
12063
|
+
name,
|
|
12064
|
+
onClick: HandleClick,
|
|
12065
|
+
style: focusHeaderButtonStyle,
|
|
12066
|
+
title: label,
|
|
12067
|
+
type: Button$1
|
|
12068
|
+
}, text(label)];
|
|
12069
|
+
};
|
|
12070
|
+
const getChatHeaderDomFocusMode = (selectedSessionTitle, selectedProjectName) => {
|
|
12071
|
+
const items = [[addAction(), FocusAddAction], [openInVsCode(), FocusOpenInVsCode], [commit(), FocusCommit], [openTerminal(), FocusOpenTerminal], [showDiff(), FocusShowDiff]];
|
|
12072
|
+
const hasProjectName = !!selectedProjectName;
|
|
12073
|
+
return [{
|
|
12074
|
+
childCount: 2,
|
|
12075
|
+
className: ChatFocusHeader,
|
|
12076
|
+
style: focusHeaderStyle,
|
|
12077
|
+
type: Header
|
|
12078
|
+
}, {
|
|
12079
|
+
childCount: hasProjectName ? 2 : 1,
|
|
12080
|
+
className: ChatName,
|
|
12081
|
+
style: focusHeaderMetaStyle,
|
|
10959
12082
|
type: Div
|
|
10960
|
-
},
|
|
12083
|
+
}, {
|
|
12084
|
+
childCount: 1,
|
|
12085
|
+
className: ChatHeaderLabel,
|
|
12086
|
+
style: focusHeaderTitleStyle,
|
|
12087
|
+
type: H2
|
|
12088
|
+
}, text(selectedSessionTitle), ...(hasProjectName ? [{
|
|
12089
|
+
childCount: 1,
|
|
12090
|
+
className: mergeClassNames(LabelDetail, ChatFocusProject),
|
|
12091
|
+
style: focusHeaderProjectStyle,
|
|
12092
|
+
type: Span
|
|
12093
|
+
}, text(selectedProjectName)] : []), {
|
|
12094
|
+
'aria-label': 'focus header actions',
|
|
12095
|
+
childCount: items.length,
|
|
12096
|
+
className: ChatFocusActions,
|
|
12097
|
+
role: ToolBar,
|
|
12098
|
+
style: focusHeaderActionsStyle,
|
|
12099
|
+
type: Div
|
|
12100
|
+
}, ...items.flatMap(([label, name]) => getFocusHeaderActionButtonDom(label, name))];
|
|
12101
|
+
};
|
|
12102
|
+
|
|
12103
|
+
const getAgentModeOptionsVirtualDom = selectedAgentMode => {
|
|
12104
|
+
return agentModes.flatMap(agentMode => getCustomSelectOptionVirtualDom(getAgentModePickerItemInputName(agentMode), getAgentModeLabel(agentMode), agentMode === selectedAgentMode));
|
|
12105
|
+
};
|
|
12106
|
+
|
|
12107
|
+
const getCustomSelectPopOverVirtualDom = (optionCount, height, optionNodes, containerClassName = '', popOverClassName = '') => {
|
|
12108
|
+
return [{
|
|
12109
|
+
childCount: 1,
|
|
12110
|
+
className: mergeClassNames(ChatModelPickerContainer, containerClassName),
|
|
12111
|
+
type: Div
|
|
12112
|
+
}, {
|
|
12113
|
+
childCount: 1,
|
|
12114
|
+
className: mergeClassNames(ChatModelPicker, popOverClassName),
|
|
12115
|
+
style: `height: ${height}px;`,
|
|
12116
|
+
type: Div
|
|
12117
|
+
}, {
|
|
12118
|
+
childCount: optionCount,
|
|
12119
|
+
className: ChatModelPickerList,
|
|
12120
|
+
name: PickerList,
|
|
12121
|
+
tabIndex: -1,
|
|
12122
|
+
type: Ul
|
|
12123
|
+
}, ...optionNodes];
|
|
12124
|
+
};
|
|
12125
|
+
|
|
12126
|
+
const agentModePickerHeight = agentModes.length * 28;
|
|
12127
|
+
const getAgentModePickerPopOverVirtualDom = selectedAgentMode => {
|
|
12128
|
+
return getCustomSelectPopOverVirtualDom(agentModes.length, agentModePickerHeight, getAgentModeOptionsVirtualDom(selectedAgentMode));
|
|
10961
12129
|
};
|
|
10962
12130
|
|
|
10963
12131
|
const getUsageCostLabel = model => {
|
|
@@ -11003,7 +12171,9 @@ const getModelPickerHeaderDom = modelPickerSearchValue => {
|
|
|
11003
12171
|
inputType: 'search',
|
|
11004
12172
|
name: ModelPickerSearch,
|
|
11005
12173
|
onBlur: HandleModelInputBlur,
|
|
12174
|
+
onClick: HandlePointerDownModelPickerList,
|
|
11006
12175
|
onInput: HandleInput,
|
|
12176
|
+
onPointerDown: HandlePointerDownModelPickerList,
|
|
11007
12177
|
placeholder: searchModels(),
|
|
11008
12178
|
type: Input,
|
|
11009
12179
|
value: modelPickerSearchValue
|
|
@@ -11024,6 +12194,91 @@ const getChatModelPickerPopOverVirtualDom = (models, selectedModelId, modelPicke
|
|
|
11024
12194
|
}, ...getModelPickerHeaderDom(modelPickerSearchValue), ...getChatModelListVirtualDom(visibleModels, selectedModelId)];
|
|
11025
12195
|
};
|
|
11026
12196
|
|
|
12197
|
+
const getComposerAttachmentPreviewOverlayVirtualDom = (composerAttachments, attachmentId, hasError) => {
|
|
12198
|
+
if (!attachmentId) {
|
|
12199
|
+
return [];
|
|
12200
|
+
}
|
|
12201
|
+
const attachment = composerAttachments.find(item => item.attachmentId === attachmentId);
|
|
12202
|
+
if (!attachment || attachment.displayType !== 'image' || !attachment.previewSrc) {
|
|
12203
|
+
return [];
|
|
12204
|
+
}
|
|
12205
|
+
return [{
|
|
12206
|
+
childCount: 1,
|
|
12207
|
+
className: ChatComposerAttachmentPreviewOverlay,
|
|
12208
|
+
name: ComposerAttachmentPreviewOverlay,
|
|
12209
|
+
onMouseOut: HandleMouseOut,
|
|
12210
|
+
onMouseOver: HandleMouseOver,
|
|
12211
|
+
onPointerOut: HandleMouseOut,
|
|
12212
|
+
onPointerOver: HandleMouseOver,
|
|
12213
|
+
type: Div
|
|
12214
|
+
}, ...(hasError ? [{
|
|
12215
|
+
childCount: 1,
|
|
12216
|
+
className: mergeClassNames(ChatComposerAttachmentPreviewOverlayError, ImageErrorMessage),
|
|
12217
|
+
name: ComposerAttachmentPreviewOverlay,
|
|
12218
|
+
type: Div
|
|
12219
|
+
}, {
|
|
12220
|
+
text: imageCouldNotBeLoaded(),
|
|
12221
|
+
type: Text
|
|
12222
|
+
}] : [{
|
|
12223
|
+
alt: `Large image preview for ${attachment.name}`,
|
|
12224
|
+
childCount: 0,
|
|
12225
|
+
className: ChatComposerAttachmentPreviewOverlayImage,
|
|
12226
|
+
name: ComposerAttachmentPreviewOverlay,
|
|
12227
|
+
onError: HandleErrorComposerAttachmentPreviewOverlay,
|
|
12228
|
+
src: attachment.previewSrc,
|
|
12229
|
+
type: Img
|
|
12230
|
+
}])];
|
|
12231
|
+
};
|
|
12232
|
+
|
|
12233
|
+
const runModes = ['local', 'background', 'cloud'];
|
|
12234
|
+
const runModePickerHeight = runModes.length * 28;
|
|
12235
|
+
const getRunModeOptionsVirtualDom = selectedRunMode => {
|
|
12236
|
+
return runModes.flatMap(runMode => getCustomSelectOptionVirtualDom(getRunModePickerItemInputName(runMode), runMode, runMode === selectedRunMode));
|
|
12237
|
+
};
|
|
12238
|
+
const getRunModePickerPopOverVirtualDom = selectedRunMode => {
|
|
12239
|
+
return getCustomSelectPopOverVirtualDom(runModes.length, runModePickerHeight, getRunModeOptionsVirtualDom(selectedRunMode), RunModePickerContainer, RunModePickerPopOver);
|
|
12240
|
+
};
|
|
12241
|
+
|
|
12242
|
+
const getDropOverlayVirtualDom = () => {
|
|
12243
|
+
return [{
|
|
12244
|
+
childCount: 1,
|
|
12245
|
+
className: mergeClassNames(ChatViewDropOverlay, ChatViewDropOverlayActive),
|
|
12246
|
+
name: ComposerDropTarget,
|
|
12247
|
+
onDragLeave: HandleDragLeave,
|
|
12248
|
+
onDragOver: HandleDragOver,
|
|
12249
|
+
onDrop: HandleDrop,
|
|
12250
|
+
type: Div
|
|
12251
|
+
}, {
|
|
12252
|
+
text: attachImageAsContext(),
|
|
12253
|
+
type: Text
|
|
12254
|
+
}];
|
|
12255
|
+
};
|
|
12256
|
+
const getChatOverlaysVirtualDom = ({
|
|
12257
|
+
agentMode,
|
|
12258
|
+
agentModePickerVisible,
|
|
12259
|
+
composerAttachmentPreviewOverlayAttachmentId,
|
|
12260
|
+
composerAttachmentPreviewOverlayError,
|
|
12261
|
+
composerAttachmentPreviewOverlayVisible,
|
|
12262
|
+
composerAttachments,
|
|
12263
|
+
dropOverlayVisible,
|
|
12264
|
+
modelPickerSearchValue,
|
|
12265
|
+
modelPickerVisible,
|
|
12266
|
+
runMode,
|
|
12267
|
+
runModePickerVisible,
|
|
12268
|
+
selectedModelId,
|
|
12269
|
+
visibleModels
|
|
12270
|
+
}) => {
|
|
12271
|
+
const overlayChildCount = (dropOverlayVisible ? 1 : 0) + (composerAttachmentPreviewOverlayVisible ? 1 : 0) + (agentModePickerVisible ? 1 : 0) + (modelPickerVisible ? 1 : 0) + (runModePickerVisible ? 1 : 0);
|
|
12272
|
+
if (!overlayChildCount) {
|
|
12273
|
+
return [];
|
|
12274
|
+
}
|
|
12275
|
+
return [{
|
|
12276
|
+
childCount: overlayChildCount,
|
|
12277
|
+
className: ChatOverlays,
|
|
12278
|
+
type: Div
|
|
12279
|
+
}, ...(dropOverlayVisible ? getDropOverlayVirtualDom() : []), ...getComposerAttachmentPreviewOverlayVirtualDom(composerAttachments, composerAttachmentPreviewOverlayAttachmentId, composerAttachmentPreviewOverlayError), ...(agentModePickerVisible ? getAgentModePickerPopOverVirtualDom(agentMode) : []), ...(modelPickerVisible ? getChatModelPickerPopOverVirtualDom(visibleModels, selectedModelId, modelPickerSearchValue) : []), ...(runModePickerVisible ? getRunModePickerPopOverVirtualDom(runMode) : [])];
|
|
12280
|
+
};
|
|
12281
|
+
|
|
11027
12282
|
const getBoldInlineNodeDom = (inlineNode, useChatMathWorker, renderInlineNodeDom) => {
|
|
11028
12283
|
return [{
|
|
11029
12284
|
childCount: inlineNode.children.length,
|
|
@@ -11043,6 +12298,7 @@ const getImageInlineNodeDom = inlineNode => {
|
|
|
11043
12298
|
alt: getImageAltText(inlineNode.alt),
|
|
11044
12299
|
childCount: 0,
|
|
11045
12300
|
className: ImageElement,
|
|
12301
|
+
onContextMenu: HandleContextMenuChatImageAttachment,
|
|
11046
12302
|
src: inlineNode.src,
|
|
11047
12303
|
type: Img
|
|
11048
12304
|
}];
|
|
@@ -11153,12 +12409,17 @@ const getTokenDom = token => {
|
|
|
11153
12409
|
|
|
11154
12410
|
const getCodeBlockDom = node => {
|
|
11155
12411
|
const tokenDom = node.codeTokens.flatMap(getTokenDom);
|
|
12412
|
+
const languageAttribute = node.language ? {
|
|
12413
|
+
'data-lang': node.language
|
|
12414
|
+
} : {};
|
|
11156
12415
|
return [{
|
|
11157
12416
|
childCount: 1,
|
|
11158
|
-
type: Pre
|
|
12417
|
+
type: Pre,
|
|
12418
|
+
...languageAttribute
|
|
11159
12419
|
}, {
|
|
11160
12420
|
childCount: node.codeTokens.length,
|
|
11161
|
-
type: Code
|
|
12421
|
+
type: Code,
|
|
12422
|
+
...languageAttribute
|
|
11162
12423
|
}, ...tokenDom];
|
|
11163
12424
|
};
|
|
11164
12425
|
|
|
@@ -11186,24 +12447,69 @@ const getHeadingDom = (node, useChatMathWorker) => {
|
|
|
11186
12447
|
}, ...node.children.flatMap(child => getInlineNodeDom(child, useChatMathWorker))];
|
|
11187
12448
|
};
|
|
11188
12449
|
|
|
12450
|
+
const leadingPunctuationRegex = /^([:;,.!?]+)([\s\S]*)$/;
|
|
12451
|
+
const splitLeadingPunctuation = children => {
|
|
12452
|
+
const [firstChild, secondChild, ...restChildren] = children;
|
|
12453
|
+
if (firstChild?.type !== 'bold' || secondChild?.type !== 'text') {
|
|
12454
|
+
return {
|
|
12455
|
+
prefixChildren: [],
|
|
12456
|
+
remainingChildren: children
|
|
12457
|
+
};
|
|
12458
|
+
}
|
|
12459
|
+
const match = secondChild.text.match(leadingPunctuationRegex);
|
|
12460
|
+
if (!match) {
|
|
12461
|
+
return {
|
|
12462
|
+
prefixChildren: [],
|
|
12463
|
+
remainingChildren: children
|
|
12464
|
+
};
|
|
12465
|
+
}
|
|
12466
|
+
const [, punctuation, remainingText] = match;
|
|
12467
|
+
const nextChildren = restChildren;
|
|
12468
|
+
if (remainingText) {
|
|
12469
|
+
nextChildren.unshift({
|
|
12470
|
+
text: remainingText,
|
|
12471
|
+
type: 'text'
|
|
12472
|
+
});
|
|
12473
|
+
}
|
|
12474
|
+
return {
|
|
12475
|
+
prefixChildren: [firstChild, {
|
|
12476
|
+
text: punctuation,
|
|
12477
|
+
type: 'text'
|
|
12478
|
+
}],
|
|
12479
|
+
remainingChildren: nextChildren
|
|
12480
|
+
};
|
|
12481
|
+
};
|
|
11189
12482
|
const getOrderedListItemDom = (item, useChatMathWorker, fallbackIndex, recurseOrdered, recurseUnordered) => {
|
|
11190
12483
|
const hasNestedList = (item.nestedItems?.length || 0) > 0;
|
|
11191
12484
|
const nestedListType = item.nestedListType || 'unordered-list';
|
|
12485
|
+
const {
|
|
12486
|
+
prefixChildren,
|
|
12487
|
+
remainingChildren
|
|
12488
|
+
} = splitLeadingPunctuation(item.children);
|
|
11192
12489
|
const nestedListDom = hasNestedList ? [{
|
|
11193
12490
|
childCount: item.nestedItems?.length || 0,
|
|
11194
12491
|
className: nestedListType === 'ordered-list' ? ChatOrderedList : ChatUnorderedList,
|
|
11195
12492
|
type: nestedListType === 'ordered-list' ? Ol : Ul
|
|
11196
12493
|
}, ...(item.nestedItems || []).flatMap((nestedItem, index) => nestedListType === 'ordered-list' ? recurseOrdered(nestedItem, useChatMathWorker, index + 1) : recurseUnordered(nestedItem, useChatMathWorker))] : [];
|
|
11197
12494
|
const marker = `${item.index ?? fallbackIndex}.`;
|
|
12495
|
+
const prefixDom = prefixChildren.length === 0 ? [] : [{
|
|
12496
|
+
childCount: prefixChildren.length,
|
|
12497
|
+
className: ChatOrderedListItemPrefix,
|
|
12498
|
+
type: Span
|
|
12499
|
+
}, ...prefixChildren.flatMap(child => getInlineNodeDom(child, useChatMathWorker))];
|
|
11198
12500
|
return [{
|
|
11199
|
-
childCount:
|
|
12501
|
+
childCount: 2,
|
|
11200
12502
|
className: ChatOrderedListItem,
|
|
11201
12503
|
type: Li
|
|
11202
12504
|
}, {
|
|
11203
12505
|
childCount: 1,
|
|
11204
12506
|
className: ChatOrderedListMarker,
|
|
11205
12507
|
type: Span
|
|
11206
|
-
}, text(marker),
|
|
12508
|
+
}, text(marker), {
|
|
12509
|
+
childCount: (prefixDom.length === 0 ? 0 : 1) + remainingChildren.length + (hasNestedList ? 1 : 0),
|
|
12510
|
+
className: ChatOrderedListItemContent,
|
|
12511
|
+
type: Div
|
|
12512
|
+
}, ...prefixDom, ...remainingChildren.flatMap(child => getInlineNodeDom(child, useChatMathWorker)), ...nestedListDom];
|
|
11207
12513
|
};
|
|
11208
12514
|
|
|
11209
12515
|
const getTableHeadCellDom = (cell, useChatMathWorker) => {
|
|
@@ -11606,11 +12912,22 @@ const getReadFileTarget = rawArguments => {
|
|
|
11606
12912
|
};
|
|
11607
12913
|
};
|
|
11608
12914
|
|
|
11609
|
-
const getToolCallFileNameDom = (fileName,
|
|
12915
|
+
const getToolCallFileNameDom = (fileName, {
|
|
12916
|
+
clickableProps = {},
|
|
12917
|
+
title
|
|
12918
|
+
} = {}) => {
|
|
11610
12919
|
return [{
|
|
12920
|
+
childCount: 1,
|
|
12921
|
+
className: ChatToolCallReadFileLink,
|
|
12922
|
+
...(title === undefined ? {} : {
|
|
12923
|
+
title
|
|
12924
|
+
}),
|
|
12925
|
+
...clickableProps,
|
|
12926
|
+
type: Span
|
|
12927
|
+
}, {
|
|
11611
12928
|
childCount: 1,
|
|
11612
12929
|
className: ChatToolCallFileName,
|
|
11613
|
-
...
|
|
12930
|
+
...clickableProps,
|
|
11614
12931
|
type: Span
|
|
11615
12932
|
}, text(fileName)];
|
|
11616
12933
|
};
|
|
@@ -11639,75 +12956,9 @@ const getToolCallCreateDirectoryVirtualDom = toolCall => {
|
|
|
11639
12956
|
childCount: 1,
|
|
11640
12957
|
className: ToolCallName,
|
|
11641
12958
|
type: Span
|
|
11642
|
-
}, text('create_directory '), {
|
|
11643
|
-
|
|
11644
|
-
|
|
11645
|
-
...fileNameClickableProps,
|
|
11646
|
-
type: Span
|
|
11647
|
-
}, ...getToolCallFileNameDom(directoryName, fileNameClickableProps), ...(statusLabel ? [text(statusLabel)] : [])];
|
|
11648
|
-
};
|
|
11649
|
-
|
|
11650
|
-
const getToolCallEditFileVirtualDom = toolCall => {
|
|
11651
|
-
const target = getReadFileTarget(toolCall.arguments);
|
|
11652
|
-
if (!target) {
|
|
11653
|
-
return [];
|
|
11654
|
-
}
|
|
11655
|
-
const fileName = getFileNameFromUri(target.title);
|
|
11656
|
-
const fileNameClickableProps = target.clickableUri ? {
|
|
11657
|
-
'data-uri': target.clickableUri,
|
|
11658
|
-
onClick: HandleClickFileName
|
|
11659
|
-
} : {};
|
|
11660
|
-
return [{
|
|
11661
|
-
childCount: 3,
|
|
11662
|
-
className: ChatOrderedListItem,
|
|
11663
|
-
title: target.title,
|
|
11664
|
-
type: Li
|
|
11665
|
-
}, {
|
|
11666
|
-
childCount: 0,
|
|
11667
|
-
className: FileIcon,
|
|
11668
|
-
type: Div
|
|
11669
|
-
}, {
|
|
11670
|
-
childCount: 1,
|
|
11671
|
-
className: ToolCallName,
|
|
11672
|
-
type: Span
|
|
11673
|
-
}, text('edit_file '), {
|
|
11674
|
-
childCount: 1,
|
|
11675
|
-
className: ChatToolCallReadFileLink,
|
|
11676
|
-
title: target.clickableUri,
|
|
11677
|
-
...fileNameClickableProps,
|
|
11678
|
-
type: Span
|
|
11679
|
-
}, ...getToolCallFileNameDom(fileName, fileNameClickableProps)];
|
|
11680
|
-
};
|
|
11681
|
-
|
|
11682
|
-
const getToolCallGetWorkspaceUriVirtualDom = toolCall => {
|
|
11683
|
-
if (!toolCall.result) {
|
|
11684
|
-
return [];
|
|
11685
|
-
}
|
|
11686
|
-
const statusLabel = getToolCallStatusLabel(toolCall);
|
|
11687
|
-
const fileName = getFileNameFromUri(toolCall.result);
|
|
11688
|
-
const fileNameClickableProps = {
|
|
11689
|
-
'data-uri': toolCall.result,
|
|
11690
|
-
onClick: HandleClickFileName
|
|
11691
|
-
};
|
|
11692
|
-
return [{
|
|
11693
|
-
childCount: statusLabel ? 4 : 3,
|
|
11694
|
-
className: ChatOrderedListItem,
|
|
11695
|
-
title: toolCall.result,
|
|
11696
|
-
type: Li
|
|
11697
|
-
}, {
|
|
11698
|
-
childCount: 0,
|
|
11699
|
-
className: FileIcon,
|
|
11700
|
-
type: Div
|
|
11701
|
-
}, {
|
|
11702
|
-
childCount: 1,
|
|
11703
|
-
className: ToolCallName,
|
|
11704
|
-
type: Span
|
|
11705
|
-
}, text('get_workspace_uri '), {
|
|
11706
|
-
childCount: 1,
|
|
11707
|
-
className: ChatToolCallReadFileLink,
|
|
11708
|
-
...fileNameClickableProps,
|
|
11709
|
-
type: Span
|
|
11710
|
-
}, ...getToolCallFileNameDom(fileName, fileNameClickableProps), ...(statusLabel ? [text(statusLabel)] : [])];
|
|
12959
|
+
}, text('create_directory '), ...getToolCallFileNameDom(directoryName, {
|
|
12960
|
+
clickableProps: fileNameClickableProps
|
|
12961
|
+
}), ...(statusLabel ? [text(statusLabel)] : [])];
|
|
11711
12962
|
};
|
|
11712
12963
|
|
|
11713
12964
|
const getToolCallArgumentPreview = rawArguments => {
|
|
@@ -11768,20 +13019,99 @@ const hasIncompleteJsonArguments = rawArguments => {
|
|
|
11768
13019
|
}
|
|
11769
13020
|
};
|
|
11770
13021
|
|
|
11771
|
-
const getToolCallLabel = toolCall => {
|
|
11772
|
-
const displayName = getToolCallDisplayName(toolCall.name);
|
|
11773
|
-
if (toolCall.name === 'write_file' && !toolCall.status && hasIncompleteJsonArguments(toolCall.arguments)) {
|
|
11774
|
-
return `${displayName} (in progress)`;
|
|
11775
|
-
}
|
|
11776
|
-
if ((toolCall.name === 'list_files' || toolCall.name === 'grep_search') && !toolCall.status && hasIncompleteJsonArguments(toolCall.arguments)) {
|
|
11777
|
-
return displayName;
|
|
13022
|
+
const getToolCallLabel = toolCall => {
|
|
13023
|
+
const displayName = getToolCallDisplayName(toolCall.name);
|
|
13024
|
+
if (toolCall.name === 'write_file' && !toolCall.status && hasIncompleteJsonArguments(toolCall.arguments)) {
|
|
13025
|
+
return `${displayName} (in progress)`;
|
|
13026
|
+
}
|
|
13027
|
+
if ((toolCall.name === 'list_files' || toolCall.name === 'grep_search') && !toolCall.status && hasIncompleteJsonArguments(toolCall.arguments)) {
|
|
13028
|
+
return displayName;
|
|
13029
|
+
}
|
|
13030
|
+
const argumentPreview = getToolCallArgumentPreview(toolCall.arguments);
|
|
13031
|
+
const statusLabel = getToolCallStatusLabel(toolCall);
|
|
13032
|
+
if (argumentPreview === '{}') {
|
|
13033
|
+
return `${displayName}${statusLabel}`;
|
|
13034
|
+
}
|
|
13035
|
+
return `${displayName} ${argumentPreview}${statusLabel}`;
|
|
13036
|
+
};
|
|
13037
|
+
|
|
13038
|
+
const RE_TOOL_NAME_PREFIX = /^([^ :]+)/;
|
|
13039
|
+
const getToolCallDefaultDom = toolCall => {
|
|
13040
|
+
const label = getToolCallLabel(toolCall);
|
|
13041
|
+
const match = RE_TOOL_NAME_PREFIX.exec(label);
|
|
13042
|
+
const toolNamePrefix = match ? match[1] : label;
|
|
13043
|
+
const suffix = label.slice(toolNamePrefix.length);
|
|
13044
|
+
const hasSuffix = suffix.length > 0;
|
|
13045
|
+
const hoverTitle = hasSuffix && toolCall.arguments.trim() ? toolCall.arguments : undefined;
|
|
13046
|
+
return [{
|
|
13047
|
+
childCount: hasSuffix ? 2 : 1,
|
|
13048
|
+
className: ChatOrderedListItem,
|
|
13049
|
+
...(hoverTitle ? {
|
|
13050
|
+
title: hoverTitle
|
|
13051
|
+
} : {}),
|
|
13052
|
+
type: Li
|
|
13053
|
+
}, {
|
|
13054
|
+
childCount: 1,
|
|
13055
|
+
className: ToolCallName,
|
|
13056
|
+
type: Span
|
|
13057
|
+
}, text(toolNamePrefix), ...(hasSuffix ? [text(suffix)] : [])];
|
|
13058
|
+
};
|
|
13059
|
+
|
|
13060
|
+
const getToolCallEditFileVirtualDom = toolCall => {
|
|
13061
|
+
const target = getReadFileTarget(toolCall.arguments);
|
|
13062
|
+
if (!target) {
|
|
13063
|
+
return [];
|
|
13064
|
+
}
|
|
13065
|
+
const fileName = getFileNameFromUri(target.title);
|
|
13066
|
+
const fileNameClickableProps = target.clickableUri ? {
|
|
13067
|
+
'data-uri': target.clickableUri,
|
|
13068
|
+
onClick: HandleClickFileName
|
|
13069
|
+
} : {};
|
|
13070
|
+
return [{
|
|
13071
|
+
childCount: 3,
|
|
13072
|
+
className: ChatOrderedListItem,
|
|
13073
|
+
title: target.title,
|
|
13074
|
+
type: Li
|
|
13075
|
+
}, {
|
|
13076
|
+
childCount: 0,
|
|
13077
|
+
className: FileIcon,
|
|
13078
|
+
type: Div
|
|
13079
|
+
}, {
|
|
13080
|
+
childCount: 1,
|
|
13081
|
+
className: ToolCallName,
|
|
13082
|
+
type: Span
|
|
13083
|
+
}, text('edit_file '), ...getToolCallFileNameDom(fileName, {
|
|
13084
|
+
clickableProps: fileNameClickableProps,
|
|
13085
|
+
title: target.clickableUri
|
|
13086
|
+
})];
|
|
13087
|
+
};
|
|
13088
|
+
|
|
13089
|
+
const getToolCallGetWorkspaceUriVirtualDom = toolCall => {
|
|
13090
|
+
if (!toolCall.result) {
|
|
13091
|
+
return [];
|
|
11778
13092
|
}
|
|
11779
|
-
const argumentPreview = getToolCallArgumentPreview(toolCall.arguments);
|
|
11780
13093
|
const statusLabel = getToolCallStatusLabel(toolCall);
|
|
11781
|
-
|
|
11782
|
-
|
|
11783
|
-
|
|
11784
|
-
|
|
13094
|
+
const fileName = getFileNameFromUri(toolCall.result);
|
|
13095
|
+
const fileNameClickableProps = {
|
|
13096
|
+
'data-uri': toolCall.result,
|
|
13097
|
+
onClick: HandleClickFileName
|
|
13098
|
+
};
|
|
13099
|
+
return [{
|
|
13100
|
+
childCount: statusLabel ? 4 : 3,
|
|
13101
|
+
className: ChatOrderedListItem,
|
|
13102
|
+
title: toolCall.result,
|
|
13103
|
+
type: Li
|
|
13104
|
+
}, {
|
|
13105
|
+
childCount: 0,
|
|
13106
|
+
className: FileIcon,
|
|
13107
|
+
type: Div
|
|
13108
|
+
}, {
|
|
13109
|
+
childCount: 1,
|
|
13110
|
+
className: ToolCallName,
|
|
13111
|
+
type: Span
|
|
13112
|
+
}, text('get_workspace_uri '), ...getToolCallFileNameDom(fileName, {
|
|
13113
|
+
clickableProps: fileNameClickableProps
|
|
13114
|
+
}), ...(statusLabel ? [text(statusLabel)] : [])];
|
|
11785
13115
|
};
|
|
11786
13116
|
|
|
11787
13117
|
const getToolCallReadFileVirtualDom = toolCall => {
|
|
@@ -11809,12 +13139,9 @@ const getToolCallReadFileVirtualDom = toolCall => {
|
|
|
11809
13139
|
childCount: 1,
|
|
11810
13140
|
className: ToolCallName,
|
|
11811
13141
|
type: Span
|
|
11812
|
-
}, text(toolNameLabel), {
|
|
11813
|
-
|
|
11814
|
-
|
|
11815
|
-
...fileNameClickableProps,
|
|
11816
|
-
type: Span
|
|
11817
|
-
}, ...getToolCallFileNameDom(fileName, fileNameClickableProps), ...(statusLabel ? [text(statusLabel)] : [])];
|
|
13142
|
+
}, text(toolNameLabel), ...getToolCallFileNameDom(fileName, {
|
|
13143
|
+
clickableProps: fileNameClickableProps
|
|
13144
|
+
}), ...(statusLabel ? [text(statusLabel)] : [])];
|
|
11818
13145
|
};
|
|
11819
13146
|
|
|
11820
13147
|
const maxHtmlLength = 40_000;
|
|
@@ -12191,12 +13518,9 @@ const getToolCallWriteFileVirtualDom = toolCall => {
|
|
|
12191
13518
|
childCount: 1,
|
|
12192
13519
|
className: ToolCallName,
|
|
12193
13520
|
type: Span
|
|
12194
|
-
}, text('write_file '), {
|
|
12195
|
-
|
|
12196
|
-
|
|
12197
|
-
...fileNameClickableProps,
|
|
12198
|
-
type: Span
|
|
12199
|
-
}, ...getToolCallFileNameDom(fileName, fileNameClickableProps), ...(showDiffStats ? [{
|
|
13521
|
+
}, text('write_file '), ...getToolCallFileNameDom(fileName, {
|
|
13522
|
+
clickableProps: fileNameClickableProps
|
|
13523
|
+
}), ...(showDiffStats ? [{
|
|
12200
13524
|
childCount: 1,
|
|
12201
13525
|
className: Insertion,
|
|
12202
13526
|
type: Span
|
|
@@ -12207,7 +13531,6 @@ const getToolCallWriteFileVirtualDom = toolCall => {
|
|
|
12207
13531
|
}, text(` -${linesDeleted}`)] : []), ...(statusLabel ? [text(statusLabel)] : [])];
|
|
12208
13532
|
};
|
|
12209
13533
|
|
|
12210
|
-
const RE_TOOL_NAME_PREFIX = /^([^ :]+)/;
|
|
12211
13534
|
const getToolCallDom = toolCall => {
|
|
12212
13535
|
if (toolCall.name === 'getWorkspaceUri') {
|
|
12213
13536
|
const virtualDom = getToolCallGetWorkspaceUriVirtualDom(toolCall);
|
|
@@ -12251,24 +13574,7 @@ const getToolCallDom = toolCall => {
|
|
|
12251
13574
|
return virtualDom;
|
|
12252
13575
|
}
|
|
12253
13576
|
}
|
|
12254
|
-
|
|
12255
|
-
const match = RE_TOOL_NAME_PREFIX.exec(label);
|
|
12256
|
-
const toolNamePrefix = match ? match[1] : label;
|
|
12257
|
-
const suffix = label.slice(toolNamePrefix.length);
|
|
12258
|
-
const hasSuffix = suffix.length > 0;
|
|
12259
|
-
const hoverTitle = hasSuffix && toolCall.arguments.trim() ? toolCall.arguments : undefined;
|
|
12260
|
-
return [{
|
|
12261
|
-
childCount: hasSuffix ? 2 : 1,
|
|
12262
|
-
className: ChatOrderedListItem,
|
|
12263
|
-
...(hoverTitle ? {
|
|
12264
|
-
title: hoverTitle
|
|
12265
|
-
} : {}),
|
|
12266
|
-
type: Li
|
|
12267
|
-
}, {
|
|
12268
|
-
childCount: 1,
|
|
12269
|
-
className: ToolCallName,
|
|
12270
|
-
type: Span
|
|
12271
|
-
}, text(toolNamePrefix), ...(hasSuffix ? [text(suffix)] : [])];
|
|
13577
|
+
return getToolCallDefaultDom(toolCall);
|
|
12272
13578
|
};
|
|
12273
13579
|
|
|
12274
13580
|
const withOrderedListMarker = (virtualDom, index) => {
|
|
@@ -12326,6 +13632,70 @@ const getTopLevelNodeCount = nodes => {
|
|
|
12326
13632
|
return topLevelCount;
|
|
12327
13633
|
};
|
|
12328
13634
|
|
|
13635
|
+
const getChatAttachmentLabel = displayType => {
|
|
13636
|
+
switch (displayType) {
|
|
13637
|
+
case 'file':
|
|
13638
|
+
return 'File';
|
|
13639
|
+
case 'image':
|
|
13640
|
+
return 'Image';
|
|
13641
|
+
case 'invalid-image':
|
|
13642
|
+
return 'Invalid image';
|
|
13643
|
+
case 'text-file':
|
|
13644
|
+
return 'Text file';
|
|
13645
|
+
default:
|
|
13646
|
+
return displayType;
|
|
13647
|
+
}
|
|
13648
|
+
};
|
|
13649
|
+
const getChatAttachmentClassName = displayType => {
|
|
13650
|
+
switch (displayType) {
|
|
13651
|
+
case 'file':
|
|
13652
|
+
return ChatAttachment;
|
|
13653
|
+
case 'image':
|
|
13654
|
+
return ChatAttachmentImage;
|
|
13655
|
+
case 'invalid-image':
|
|
13656
|
+
return ChatAttachmentInvalidImage;
|
|
13657
|
+
case 'text-file':
|
|
13658
|
+
return ChatAttachmentTextFile;
|
|
13659
|
+
default:
|
|
13660
|
+
return ChatAttachment;
|
|
13661
|
+
}
|
|
13662
|
+
};
|
|
13663
|
+
const getChatAttachmentPreviewDom = attachment => {
|
|
13664
|
+
if (!attachment.previewSrc) {
|
|
13665
|
+
return [];
|
|
13666
|
+
}
|
|
13667
|
+
return [{
|
|
13668
|
+
alt: `Attachment preview for ${attachment.name}`,
|
|
13669
|
+
childCount: 0,
|
|
13670
|
+
className: ChatAttachmentPreview,
|
|
13671
|
+
src: attachment.previewSrc,
|
|
13672
|
+
type: Img
|
|
13673
|
+
}];
|
|
13674
|
+
};
|
|
13675
|
+
const getChatAttachmentsDom = attachments => {
|
|
13676
|
+
if (attachments.length === 0) {
|
|
13677
|
+
return [];
|
|
13678
|
+
}
|
|
13679
|
+
return [{
|
|
13680
|
+
childCount: attachments.length,
|
|
13681
|
+
className: ChatAttachments,
|
|
13682
|
+
type: Div
|
|
13683
|
+
}, ...attachments.flatMap(attachment => {
|
|
13684
|
+
const previewDom = getChatAttachmentPreviewDom(attachment);
|
|
13685
|
+
return [{
|
|
13686
|
+
childCount: 1 + previewDom.length,
|
|
13687
|
+
className: mergeClassNames(ChatAttachment, getChatAttachmentClassName(attachment.displayType)),
|
|
13688
|
+
type: Div
|
|
13689
|
+
}, ...previewDom, {
|
|
13690
|
+
childCount: 1,
|
|
13691
|
+
className: ChatAttachmentLabel,
|
|
13692
|
+
type: Span
|
|
13693
|
+
}, {
|
|
13694
|
+
text: `${getChatAttachmentLabel(attachment.displayType)} · ${attachment.name}`,
|
|
13695
|
+
type: Text
|
|
13696
|
+
}];
|
|
13697
|
+
})];
|
|
13698
|
+
};
|
|
12329
13699
|
const getChatMessageDom = (message, parsedMessageContent, _openRouterApiKeyInput, _openApiApiKeyInput = '', openApiApiKeyState = 'idle', openApiApiKeysSettingsUrl = 'https://platform.openai.com/api-keys', openApiApiKeyInputPattern = '^sk-.+', openRouterApiKeyState = 'idle', useChatMathWorker = false) => {
|
|
12330
13700
|
const roleClassName = message.role === 'user' ? MessageUser : MessageAssistant;
|
|
12331
13701
|
const isOpenApiApiKeyMissingMessage = message.role === 'assistant' && message.text === openApiApiKeyRequiredMessage;
|
|
@@ -12333,10 +13703,12 @@ const getChatMessageDom = (message, parsedMessageContent, _openRouterApiKeyInput
|
|
|
12333
13703
|
const isOpenRouterRequestFailedMessage = message.role === 'assistant' && message.text === openRouterRequestFailedMessage;
|
|
12334
13704
|
const isOpenRouterTooManyRequestsMessage = message.role === 'assistant' && message.text.startsWith(openRouterTooManyRequestsMessage);
|
|
12335
13705
|
const messageDom = getMessageContentDom(parsedMessageContent, useChatMathWorker);
|
|
13706
|
+
const attachmentsDom = message.role === 'user' ? getChatAttachmentsDom(message.attachments ?? []) : [];
|
|
12336
13707
|
const toolCallsDom = getToolCallsDom(message);
|
|
12337
13708
|
const toolCallsChildCount = toolCallsDom.length > 0 ? 1 : 0;
|
|
12338
13709
|
const messageDomChildCount = getTopLevelNodeCount(messageDom);
|
|
12339
|
-
const
|
|
13710
|
+
const attachmentsChildCount = attachmentsDom.length > 0 ? 1 : 0;
|
|
13711
|
+
const extraChildCount = isOpenApiApiKeyMissingMessage || isOpenRouterApiKeyMissingMessage || isOpenRouterRequestFailedMessage || isOpenRouterTooManyRequestsMessage ? messageDomChildCount + 1 + toolCallsChildCount + attachmentsChildCount : messageDomChildCount + toolCallsChildCount + attachmentsChildCount;
|
|
12340
13712
|
return [{
|
|
12341
13713
|
childCount: 1,
|
|
12342
13714
|
className: mergeClassNames(Message, roleClassName),
|
|
@@ -12345,7 +13717,7 @@ const getChatMessageDom = (message, parsedMessageContent, _openRouterApiKeyInput
|
|
|
12345
13717
|
childCount: extraChildCount,
|
|
12346
13718
|
className: ChatMessageContent,
|
|
12347
13719
|
type: Div
|
|
12348
|
-
}, ...toolCallsDom, ...messageDom, ...(isOpenApiApiKeyMissingMessage ? getMissingOpenApiApiKeyDom(openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern) : []), ...(isOpenRouterApiKeyMissingMessage ? getMissingOpenRouterApiKeyDom(openRouterApiKeyState) : []), ...(isOpenRouterRequestFailedMessage ? getOpenRouterRequestFailedDom() : []), ...(isOpenRouterTooManyRequestsMessage ? getOpenRouterTooManyRequestsDom() : [])];
|
|
13720
|
+
}, ...toolCallsDom, ...messageDom, ...attachmentsDom, ...(isOpenApiApiKeyMissingMessage ? getMissingOpenApiApiKeyDom(openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern) : []), ...(isOpenRouterApiKeyMissingMessage ? getMissingOpenRouterApiKeyDom(openRouterApiKeyState) : []), ...(isOpenRouterRequestFailedMessage ? getOpenRouterRequestFailedDom() : []), ...(isOpenRouterTooManyRequestsMessage ? getOpenRouterTooManyRequestsDom() : [])];
|
|
12349
13721
|
};
|
|
12350
13722
|
|
|
12351
13723
|
const parentNode$1 = {
|
|
@@ -12401,7 +13773,18 @@ const getDisplayMessages = (messages, parsedMessages) => {
|
|
|
12401
13773
|
};
|
|
12402
13774
|
const getMessagesDom = (messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput = '', openApiApiKeyState = 'idle', openApiApiKeysSettingsUrl = 'https://platform.openai.com/api-keys', openApiApiKeyInputPattern = '^sk-.+', openRouterApiKeyState = 'idle', messagesScrollTop = 0, useChatMathWorker = false, hideWelcomeMessage = false) => {
|
|
12403
13775
|
if (messages.length === 0) {
|
|
12404
|
-
|
|
13776
|
+
if (!hideWelcomeMessage) {
|
|
13777
|
+
return getEmptyMessagesDom();
|
|
13778
|
+
}
|
|
13779
|
+
return [{
|
|
13780
|
+
childCount: 0,
|
|
13781
|
+
className: 'ChatMessages',
|
|
13782
|
+
onContextMenu: HandleMessagesContextMenu,
|
|
13783
|
+
onScroll: HandleMessagesScroll,
|
|
13784
|
+
role: 'log',
|
|
13785
|
+
scrollTop: messagesScrollTop,
|
|
13786
|
+
type: Div
|
|
13787
|
+
}];
|
|
12405
13788
|
}
|
|
12406
13789
|
const displayMessages = getDisplayMessages(messages, parsedMessages);
|
|
12407
13790
|
return [{
|
|
@@ -12409,24 +13792,26 @@ const getMessagesDom = (messages, parsedMessages, openRouterApiKeyInput, openApi
|
|
|
12409
13792
|
className: 'ChatMessages',
|
|
12410
13793
|
onContextMenu: HandleMessagesContextMenu,
|
|
12411
13794
|
onScroll: HandleMessagesScroll,
|
|
13795
|
+
role: 'log',
|
|
12412
13796
|
scrollTop: messagesScrollTop,
|
|
12413
13797
|
type: Div
|
|
12414
13798
|
}, ...displayMessages.flatMap(item => getChatMessageDom(item.message, item.parsedContent, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, useChatMathWorker))];
|
|
12415
13799
|
};
|
|
12416
13800
|
|
|
13801
|
+
const arrowLeft$1 = {
|
|
13802
|
+
childCount: 0,
|
|
13803
|
+
className: mergeClassNames(MaskIcon, MaskIconArrowLeft),
|
|
13804
|
+
type: Div
|
|
13805
|
+
};
|
|
12417
13806
|
const getBackToChatsButtonDom = () => {
|
|
12418
13807
|
return [{
|
|
12419
13808
|
childCount: 1,
|
|
12420
|
-
className:
|
|
12421
|
-
inputType: 'button',
|
|
13809
|
+
className: IconButton,
|
|
12422
13810
|
name: Back,
|
|
12423
13811
|
onClick: HandleClickBack,
|
|
12424
13812
|
title: backToChatList(),
|
|
12425
13813
|
type: Button$1
|
|
12426
|
-
},
|
|
12427
|
-
text: backToChatList(),
|
|
12428
|
-
type: Text
|
|
12429
|
-
}];
|
|
13814
|
+
}, arrowLeft$1];
|
|
12430
13815
|
};
|
|
12431
13816
|
|
|
12432
13817
|
const getProjectSessionDom = (session, selectedSessionId) => {
|
|
@@ -12466,10 +13851,10 @@ const getProjectGroupDom = (project, sessions, projectExpandedIds, selectedProje
|
|
|
12466
13851
|
tabIndex: 0,
|
|
12467
13852
|
type: Div
|
|
12468
13853
|
}, {
|
|
12469
|
-
childCount:
|
|
12470
|
-
className: ProjectListChevron,
|
|
12471
|
-
type:
|
|
12472
|
-
},
|
|
13854
|
+
childCount: 0,
|
|
13855
|
+
className: mergeClassNames(ProjectListChevron, MaskIcon, expanded ? MaskIconChevronDown : MaskIconChevronRight),
|
|
13856
|
+
type: Div
|
|
13857
|
+
}, {
|
|
12473
13858
|
childCount: 0,
|
|
12474
13859
|
className: 'MaskIcon MaskIconFolder',
|
|
12475
13860
|
type: Div
|
|
@@ -12518,15 +13903,6 @@ const getProjectListDom = (projects, sessions, projectExpandedIds, selectedProje
|
|
|
12518
13903
|
}, text('+ Add Project'), ...(showBackToChatsButton ? getBackToChatsButtonDom() : [])];
|
|
12519
13904
|
};
|
|
12520
13905
|
|
|
12521
|
-
const runModes = ['local', 'background', 'cloud'];
|
|
12522
|
-
const runModePickerHeight = runModes.length * 28;
|
|
12523
|
-
const getRunModeOptionsVirtualDom = selectedRunMode => {
|
|
12524
|
-
return runModes.flatMap(runMode => getCustomSelectOptionVirtualDom(getRunModePickerItemInputName(runMode), runMode, runMode === selectedRunMode));
|
|
12525
|
-
};
|
|
12526
|
-
const getRunModePickerPopOverVirtualDom = selectedRunMode => {
|
|
12527
|
-
return getCustomSelectPopOverVirtualDom(runModes.length, runModePickerHeight, getRunModeOptionsVirtualDom(selectedRunMode), RunModePickerContainer, RunModePickerPopOver);
|
|
12528
|
-
};
|
|
12529
|
-
|
|
12530
13906
|
const getChatModeChatFocusVirtualDom = ({
|
|
12531
13907
|
addContextButtonEnabled,
|
|
12532
13908
|
agentMode,
|
|
@@ -12534,6 +13910,8 @@ const getChatModeChatFocusVirtualDom = ({
|
|
|
12534
13910
|
authEnabled = false,
|
|
12535
13911
|
authErrorMessage = '',
|
|
12536
13912
|
authStatus = 'signed-out',
|
|
13913
|
+
composerAttachmentPreviewOverlayAttachmentId,
|
|
13914
|
+
composerAttachmentPreviewOverlayError = false,
|
|
12537
13915
|
composerAttachments,
|
|
12538
13916
|
composerDropActive = false,
|
|
12539
13917
|
composerDropEnabled = true,
|
|
@@ -12542,6 +13920,9 @@ const getChatModeChatFocusVirtualDom = ({
|
|
|
12542
13920
|
composerHeight = 28,
|
|
12543
13921
|
composerLineHeight = 20,
|
|
12544
13922
|
composerValue,
|
|
13923
|
+
hasSpaceForAgentModePicker,
|
|
13924
|
+
hasSpaceForRunModePicker,
|
|
13925
|
+
messagesAutoScrollEnabled,
|
|
12545
13926
|
messagesScrollTop = 0,
|
|
12546
13927
|
modelPickerOpen = false,
|
|
12547
13928
|
modelPickerSearchValue = '',
|
|
@@ -12561,6 +13942,7 @@ const getChatModeChatFocusVirtualDom = ({
|
|
|
12561
13942
|
reasoningPickerEnabled,
|
|
12562
13943
|
runMode,
|
|
12563
13944
|
runModePickerOpen = false,
|
|
13945
|
+
scrollDownButtonEnabled,
|
|
12564
13946
|
selectedModelId,
|
|
12565
13947
|
selectedProjectId = '',
|
|
12566
13948
|
selectedSessionId,
|
|
@@ -12576,31 +13958,43 @@ const getChatModeChatFocusVirtualDom = ({
|
|
|
12576
13958
|
voiceDictationEnabled = false
|
|
12577
13959
|
}) => {
|
|
12578
13960
|
const selectedSession = sessions.find(session => session.id === selectedSessionId);
|
|
13961
|
+
const selectedProject = projects.find(project => project.id === selectedProjectId);
|
|
12579
13962
|
const messages = selectedSession ? selectedSession.messages : [];
|
|
13963
|
+
const selectedSessionTitle = selectedSession?.title || chatTitle();
|
|
13964
|
+
const selectedProjectName = selectedProject?.name || '';
|
|
12580
13965
|
const showCreatePullRequestButton = canCreatePullRequest(selectedSession);
|
|
12581
13966
|
const isDropOverlayVisible = composerDropEnabled && composerDropActive;
|
|
12582
|
-
const
|
|
13967
|
+
const isComposerAttachmentPreviewOverlayVisible = !!composerAttachmentPreviewOverlayAttachmentId;
|
|
13968
|
+
const isAgentModePickerVisible = hasSpaceForAgentModePicker && agentModePickerOpen;
|
|
12583
13969
|
const isNewModelPickerVisible = modelPickerOpen;
|
|
12584
|
-
const isRunModePickerVisible = showRunMode && runModePickerOpen;
|
|
12585
|
-
const
|
|
13970
|
+
const isRunModePickerVisible = showRunMode && hasSpaceForRunModePicker && runModePickerOpen;
|
|
13971
|
+
const hasVisibleOverlays = isDropOverlayVisible || isComposerAttachmentPreviewOverlayVisible || isAgentModePickerVisible || isNewModelPickerVisible || isRunModePickerVisible;
|
|
13972
|
+
const chatRootChildCount = 2 + (hasVisibleOverlays ? 1 : 0);
|
|
12586
13973
|
return [{
|
|
12587
13974
|
childCount: chatRootChildCount,
|
|
12588
13975
|
className: mergeClassNames(Viewlet, Chat, ChatFocus),
|
|
12589
13976
|
onDragEnter: HandleDragEnterChatView,
|
|
12590
13977
|
onDragOver: HandleDragOverChatView,
|
|
12591
13978
|
type: Div
|
|
12592
|
-
}, ...getProjectListDom(projects, sessions, projectExpandedIds, selectedProjectId, selectedSessionId, projectListScrollTop, true),
|
|
12593
|
-
childCount:
|
|
12594
|
-
className:
|
|
12595
|
-
name: ComposerDropTarget,
|
|
12596
|
-
onDragLeave: HandleDragLeave,
|
|
12597
|
-
onDragOver: HandleDragOver,
|
|
12598
|
-
onDrop: HandleDrop,
|
|
13979
|
+
}, ...getProjectListDom(projects, sessions, projectExpandedIds, selectedProjectId, selectedSessionId, projectListScrollTop, true), {
|
|
13980
|
+
childCount: 3,
|
|
13981
|
+
className: ChatFocusMainArea,
|
|
12599
13982
|
type: Div
|
|
12600
|
-
}, {
|
|
12601
|
-
|
|
12602
|
-
|
|
12603
|
-
|
|
13983
|
+
}, ...getChatHeaderDomFocusMode(selectedSessionTitle, selectedProjectName), ...getMessagesDom(messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, messagesScrollTop, useChatMathWorker, true), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton, voiceDictationEnabled, scrollDownButtonEnabled, messagesAutoScrollEnabled), ...getChatOverlaysVirtualDom({
|
|
13984
|
+
agentMode,
|
|
13985
|
+
agentModePickerVisible: isAgentModePickerVisible,
|
|
13986
|
+
composerAttachmentPreviewOverlayAttachmentId,
|
|
13987
|
+
composerAttachmentPreviewOverlayError,
|
|
13988
|
+
composerAttachmentPreviewOverlayVisible: isComposerAttachmentPreviewOverlayVisible,
|
|
13989
|
+
composerAttachments,
|
|
13990
|
+
dropOverlayVisible: isDropOverlayVisible,
|
|
13991
|
+
modelPickerSearchValue,
|
|
13992
|
+
modelPickerVisible: isNewModelPickerVisible,
|
|
13993
|
+
runMode,
|
|
13994
|
+
runModePickerVisible: isRunModePickerVisible,
|
|
13995
|
+
selectedModelId,
|
|
13996
|
+
visibleModels
|
|
13997
|
+
})];
|
|
12604
13998
|
};
|
|
12605
13999
|
|
|
12606
14000
|
const arrowLeft = {
|
|
@@ -12639,22 +14033,31 @@ const getHeaderActionVirtualDom = item => {
|
|
|
12639
14033
|
}];
|
|
12640
14034
|
};
|
|
12641
14035
|
|
|
12642
|
-
const
|
|
12643
|
-
const toggleTitle = viewMode === 'chat-focus' ? normalChatMode() : chatFocusMode();
|
|
14036
|
+
const getAuthAction = (authEnabled, authStatus) => {
|
|
12644
14037
|
const isSigningIn = authStatus === 'signing-in';
|
|
12645
|
-
|
|
12646
|
-
|
|
12647
|
-
|
|
12648
|
-
|
|
12649
|
-
|
|
12650
|
-
|
|
12651
|
-
|
|
14038
|
+
if (!authEnabled) {
|
|
14039
|
+
return undefined;
|
|
14040
|
+
}
|
|
14041
|
+
if (authStatus !== 'signed-in') {
|
|
14042
|
+
return {
|
|
14043
|
+
disabled: isSigningIn,
|
|
14044
|
+
icon: mergeClassNames(MaskIcon, MaskIconAccount),
|
|
14045
|
+
name: Login,
|
|
14046
|
+
onClick: HandleClick,
|
|
14047
|
+
title: isSigningIn ? loggingInToBackend() : loginToBackend()
|
|
14048
|
+
};
|
|
14049
|
+
}
|
|
14050
|
+
return {
|
|
12652
14051
|
disabled: false,
|
|
12653
14052
|
icon: mergeClassNames(MaskIcon, MaskIconSignOut),
|
|
12654
14053
|
name: Logout,
|
|
12655
14054
|
onClick: HandleClick,
|
|
12656
14055
|
title: logoutFromBackend()
|
|
12657
|
-
}
|
|
14056
|
+
};
|
|
14057
|
+
};
|
|
14058
|
+
const getChatHeaderActionsDom = (viewMode, authEnabled = false, authStatus = 'signed-out', searchEnabled = false) => {
|
|
14059
|
+
const toggleTitle = viewMode === 'chat-focus' ? normalChatMode() : chatFocusMode();
|
|
14060
|
+
const authAction = getAuthAction(authEnabled, authStatus);
|
|
12658
14061
|
const items = [{
|
|
12659
14062
|
icon: mergeClassNames(MaskIcon, MaskIconLayoutPanelLeft),
|
|
12660
14063
|
name: ToggleChatFocus,
|
|
@@ -12687,6 +14090,7 @@ const getChatHeaderActionsDom = (viewMode, authEnabled = false, authStatus = 'si
|
|
|
12687
14090
|
title: closeChat()
|
|
12688
14091
|
}];
|
|
12689
14092
|
return [{
|
|
14093
|
+
'aria-label': 'chat actions',
|
|
12690
14094
|
childCount: items.length,
|
|
12691
14095
|
className: ChatActions,
|
|
12692
14096
|
role: ToolBar,
|
|
@@ -12710,7 +14114,7 @@ const getChatHeaderDomDetailMode = (selectedSessionTitle, authEnabled = false, a
|
|
|
12710
14114
|
childCount: hasAuthError ? 3 : 2,
|
|
12711
14115
|
className: ChatHeader,
|
|
12712
14116
|
onContextMenu: HandleChatHeaderContextMenu,
|
|
12713
|
-
type:
|
|
14117
|
+
type: Header
|
|
12714
14118
|
}, {
|
|
12715
14119
|
childCount: 2,
|
|
12716
14120
|
className: ChatName,
|
|
@@ -12729,6 +14133,8 @@ const getChatModeDetailVirtualDom = ({
|
|
|
12729
14133
|
authEnabled = false,
|
|
12730
14134
|
authErrorMessage = '',
|
|
12731
14135
|
authStatus = 'signed-out',
|
|
14136
|
+
composerAttachmentPreviewOverlayAttachmentId,
|
|
14137
|
+
composerAttachmentPreviewOverlayError = false,
|
|
12732
14138
|
composerAttachments,
|
|
12733
14139
|
composerDropActive = false,
|
|
12734
14140
|
composerDropEnabled = true,
|
|
@@ -12737,6 +14143,9 @@ const getChatModeDetailVirtualDom = ({
|
|
|
12737
14143
|
composerHeight = 28,
|
|
12738
14144
|
composerLineHeight = 20,
|
|
12739
14145
|
composerValue,
|
|
14146
|
+
hasSpaceForAgentModePicker,
|
|
14147
|
+
hasSpaceForRunModePicker,
|
|
14148
|
+
messagesAutoScrollEnabled,
|
|
12740
14149
|
messagesScrollTop = 0,
|
|
12741
14150
|
modelPickerOpen = false,
|
|
12742
14151
|
modelPickerSearchValue = '',
|
|
@@ -12753,6 +14162,7 @@ const getChatModeDetailVirtualDom = ({
|
|
|
12753
14162
|
reasoningPickerEnabled,
|
|
12754
14163
|
runMode,
|
|
12755
14164
|
runModePickerOpen = false,
|
|
14165
|
+
scrollDownButtonEnabled,
|
|
12756
14166
|
selectedModelId,
|
|
12757
14167
|
selectedSessionId,
|
|
12758
14168
|
sessions,
|
|
@@ -12771,28 +14181,33 @@ const getChatModeDetailVirtualDom = ({
|
|
|
12771
14181
|
const messages = selectedSession ? selectedSession.messages : [];
|
|
12772
14182
|
const showCreatePullRequestButton = canCreatePullRequest(selectedSession);
|
|
12773
14183
|
const isDropOverlayVisible = composerDropEnabled && composerDropActive;
|
|
12774
|
-
const
|
|
14184
|
+
const isComposerAttachmentPreviewOverlayVisible = !!composerAttachmentPreviewOverlayAttachmentId;
|
|
14185
|
+
const isAgentModePickerVisible = hasSpaceForAgentModePicker && agentModePickerOpen;
|
|
12775
14186
|
const isNewModelPickerVisible = modelPickerOpen;
|
|
12776
|
-
const isRunModePickerVisible = showRunMode && runModePickerOpen;
|
|
12777
|
-
const
|
|
14187
|
+
const isRunModePickerVisible = showRunMode && hasSpaceForRunModePicker && runModePickerOpen;
|
|
14188
|
+
const hasVisibleOverlays = isDropOverlayVisible || isComposerAttachmentPreviewOverlayVisible || isAgentModePickerVisible || isNewModelPickerVisible || isRunModePickerVisible;
|
|
14189
|
+
const chatRootChildCount = 3 + (hasVisibleOverlays ? 1 : 0);
|
|
12778
14190
|
return [{
|
|
12779
14191
|
childCount: chatRootChildCount,
|
|
12780
14192
|
className: mergeClassNames(Viewlet, Chat),
|
|
12781
14193
|
onDragEnter: HandleDragEnterChatView,
|
|
12782
14194
|
onDragOver: HandleDragOverChatView,
|
|
12783
14195
|
type: Div
|
|
12784
|
-
}, ...getChatHeaderDomDetailMode(selectedSessionTitle, authEnabled, authStatus, authErrorMessage), ...getMessagesDom(messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, messagesScrollTop, useChatMathWorker), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton, voiceDictationEnabled), ...(
|
|
12785
|
-
|
|
12786
|
-
|
|
12787
|
-
|
|
12788
|
-
|
|
12789
|
-
|
|
12790
|
-
|
|
12791
|
-
|
|
12792
|
-
|
|
12793
|
-
|
|
12794
|
-
|
|
12795
|
-
|
|
14196
|
+
}, ...getChatHeaderDomDetailMode(selectedSessionTitle, authEnabled, authStatus, authErrorMessage), ...getMessagesDom(messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, messagesScrollTop, useChatMathWorker), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton, voiceDictationEnabled, scrollDownButtonEnabled, messagesAutoScrollEnabled), ...getChatOverlaysVirtualDom({
|
|
14197
|
+
agentMode,
|
|
14198
|
+
agentModePickerVisible: isAgentModePickerVisible,
|
|
14199
|
+
composerAttachmentPreviewOverlayAttachmentId,
|
|
14200
|
+
composerAttachmentPreviewOverlayError,
|
|
14201
|
+
composerAttachmentPreviewOverlayVisible: isComposerAttachmentPreviewOverlayVisible,
|
|
14202
|
+
composerAttachments,
|
|
14203
|
+
dropOverlayVisible: isDropOverlayVisible,
|
|
14204
|
+
modelPickerSearchValue,
|
|
14205
|
+
modelPickerVisible: isNewModelPickerVisible,
|
|
14206
|
+
runMode,
|
|
14207
|
+
runModePickerVisible: isRunModePickerVisible,
|
|
14208
|
+
selectedModelId,
|
|
14209
|
+
visibleModels
|
|
14210
|
+
})];
|
|
12796
14211
|
};
|
|
12797
14212
|
|
|
12798
14213
|
const getChatSearchDom = (hasSearchField, searchValue) => {
|
|
@@ -12822,7 +14237,7 @@ const getChatHeaderListModeDom = (authEnabled = false, authStatus = 'signed-out'
|
|
|
12822
14237
|
childCount: headerChildCount,
|
|
12823
14238
|
className: ChatHeader,
|
|
12824
14239
|
onContextMenu: HandleChatHeaderContextMenu,
|
|
12825
|
-
type:
|
|
14240
|
+
type: Header
|
|
12826
14241
|
}, {
|
|
12827
14242
|
childCount: 1,
|
|
12828
14243
|
className: ChatHeaderLabel,
|
|
@@ -12921,23 +14336,6 @@ const getChatListDom = (sessions, selectedSessionId, listFocusedIndex, chatListS
|
|
|
12921
14336
|
}, ...sessions.flatMap((session, index) => getSessionDom(session, index === listFocusedIndex))];
|
|
12922
14337
|
};
|
|
12923
14338
|
|
|
12924
|
-
const getDropOverlayVirtualDom = isDropOverlayVisible => {
|
|
12925
|
-
if (!isDropOverlayVisible) {
|
|
12926
|
-
return [];
|
|
12927
|
-
}
|
|
12928
|
-
return [{
|
|
12929
|
-
childCount: 1,
|
|
12930
|
-
className: mergeClassNames(ChatViewDropOverlay, ChatViewDropOverlayActive),
|
|
12931
|
-
name: ComposerDropTarget,
|
|
12932
|
-
onDragLeave: HandleDragLeave,
|
|
12933
|
-
onDragOver: HandleDragOver,
|
|
12934
|
-
onDrop: HandleDrop,
|
|
12935
|
-
type: Div
|
|
12936
|
-
}, {
|
|
12937
|
-
text: attachImageAsContext(),
|
|
12938
|
-
type: Text
|
|
12939
|
-
}];
|
|
12940
|
-
};
|
|
12941
14339
|
const getChatModeListVirtualDom = ({
|
|
12942
14340
|
addContextButtonEnabled,
|
|
12943
14341
|
agentMode,
|
|
@@ -12946,6 +14344,8 @@ const getChatModeListVirtualDom = ({
|
|
|
12946
14344
|
authErrorMessage = '',
|
|
12947
14345
|
authStatus = 'signed-out',
|
|
12948
14346
|
chatListScrollTop = 0,
|
|
14347
|
+
composerAttachmentPreviewOverlayAttachmentId,
|
|
14348
|
+
composerAttachmentPreviewOverlayError = false,
|
|
12949
14349
|
composerAttachments,
|
|
12950
14350
|
composerDropActive = false,
|
|
12951
14351
|
composerDropEnabled = true,
|
|
@@ -12954,6 +14354,8 @@ const getChatModeListVirtualDom = ({
|
|
|
12954
14354
|
composerHeight = 28,
|
|
12955
14355
|
composerLineHeight = 20,
|
|
12956
14356
|
composerValue,
|
|
14357
|
+
hasSpaceForAgentModePicker,
|
|
14358
|
+
hasSpaceForRunModePicker,
|
|
12957
14359
|
listFocusedIndex = -1,
|
|
12958
14360
|
modelPickerOpen = false,
|
|
12959
14361
|
modelPickerSearchValue = '',
|
|
@@ -12979,10 +14381,12 @@ const getChatModeListVirtualDom = ({
|
|
|
12979
14381
|
voiceDictationEnabled = false
|
|
12980
14382
|
}) => {
|
|
12981
14383
|
const isDropOverlayVisible = composerDropEnabled && composerDropActive;
|
|
12982
|
-
const
|
|
14384
|
+
const isComposerAttachmentPreviewOverlayVisible = !!composerAttachmentPreviewOverlayAttachmentId;
|
|
14385
|
+
const isAgentModePickerVisible = hasSpaceForAgentModePicker && agentModePickerOpen;
|
|
12983
14386
|
const isNewModelPickerVisible = modelPickerOpen;
|
|
12984
|
-
const isRunModePickerVisible = showRunMode && runModePickerOpen;
|
|
12985
|
-
const
|
|
14387
|
+
const isRunModePickerVisible = showRunMode && hasSpaceForRunModePicker && runModePickerOpen;
|
|
14388
|
+
const hasVisibleOverlays = isDropOverlayVisible || isComposerAttachmentPreviewOverlayVisible || isAgentModePickerVisible || isNewModelPickerVisible || isRunModePickerVisible;
|
|
14389
|
+
const chatRootChildCount = 3 + (hasVisibleOverlays ? 1 : 0);
|
|
12986
14390
|
const searchValueTrimmed = searchValue.trim().toLowerCase();
|
|
12987
14391
|
const visibleSessions = searchEnabled && searchValueTrimmed ? sessions.filter(session => session.title.toLowerCase().includes(searchValueTrimmed)) : sessions;
|
|
12988
14392
|
return [{
|
|
@@ -12991,7 +14395,21 @@ const getChatModeListVirtualDom = ({
|
|
|
12991
14395
|
onDragEnter: HandleDragEnterChatView,
|
|
12992
14396
|
onDragOver: HandleDragOverChatView,
|
|
12993
14397
|
type: Div
|
|
12994
|
-
}, ...getChatHeaderListModeDom(authEnabled, authStatus, authErrorMessage, searchEnabled, searchFieldVisible, searchValue), ...getChatListDom(visibleSessions, selectedSessionId, listFocusedIndex, chatListScrollTop), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, false, voiceDictationEnabled), ...
|
|
14398
|
+
}, ...getChatHeaderListModeDom(authEnabled, authStatus, authErrorMessage, searchEnabled, searchFieldVisible, searchValue), ...getChatListDom(visibleSessions, selectedSessionId, listFocusedIndex, chatListScrollTop), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, false, voiceDictationEnabled), ...getChatOverlaysVirtualDom({
|
|
14399
|
+
agentMode,
|
|
14400
|
+
agentModePickerVisible: isAgentModePickerVisible,
|
|
14401
|
+
composerAttachmentPreviewOverlayAttachmentId,
|
|
14402
|
+
composerAttachmentPreviewOverlayError,
|
|
14403
|
+
composerAttachmentPreviewOverlayVisible: isComposerAttachmentPreviewOverlayVisible,
|
|
14404
|
+
composerAttachments,
|
|
14405
|
+
dropOverlayVisible: isDropOverlayVisible,
|
|
14406
|
+
modelPickerSearchValue,
|
|
14407
|
+
modelPickerVisible: isNewModelPickerVisible,
|
|
14408
|
+
runMode,
|
|
14409
|
+
runModePickerVisible: isRunModePickerVisible,
|
|
14410
|
+
selectedModelId,
|
|
14411
|
+
visibleModels
|
|
14412
|
+
})];
|
|
12995
14413
|
};
|
|
12996
14414
|
|
|
12997
14415
|
const getChatModeUnsupportedVirtualDom = () => {
|
|
@@ -13082,6 +14500,8 @@ const getChatVirtualDom = options => {
|
|
|
13082
14500
|
authErrorMessage = '',
|
|
13083
14501
|
authStatus = 'signed-out',
|
|
13084
14502
|
chatListScrollTop,
|
|
14503
|
+
composerAttachmentPreviewOverlayAttachmentId,
|
|
14504
|
+
composerAttachmentPreviewOverlayError = false,
|
|
13085
14505
|
composerAttachments,
|
|
13086
14506
|
composerDropActive = false,
|
|
13087
14507
|
composerDropEnabled = true,
|
|
@@ -13090,7 +14510,10 @@ const getChatVirtualDom = options => {
|
|
|
13090
14510
|
composerHeight,
|
|
13091
14511
|
composerLineHeight,
|
|
13092
14512
|
composerValue,
|
|
14513
|
+
hasSpaceForAgentModePicker,
|
|
14514
|
+
hasSpaceForRunModePicker,
|
|
13093
14515
|
listFocusedIndex = -1,
|
|
14516
|
+
messagesAutoScrollEnabled,
|
|
13094
14517
|
messagesScrollTop,
|
|
13095
14518
|
modelPickerOpen = false,
|
|
13096
14519
|
modelPickerSearchValue = '',
|
|
@@ -13110,6 +14533,7 @@ const getChatVirtualDom = options => {
|
|
|
13110
14533
|
reasoningPickerEnabled,
|
|
13111
14534
|
runMode,
|
|
13112
14535
|
runModePickerOpen = false,
|
|
14536
|
+
scrollDownButtonEnabled,
|
|
13113
14537
|
searchEnabled = false,
|
|
13114
14538
|
searchFieldVisible = false,
|
|
13115
14539
|
searchValue = '',
|
|
@@ -13138,6 +14562,8 @@ const getChatVirtualDom = options => {
|
|
|
13138
14562
|
authEnabled,
|
|
13139
14563
|
authErrorMessage,
|
|
13140
14564
|
authStatus,
|
|
14565
|
+
composerAttachmentPreviewOverlayAttachmentId,
|
|
14566
|
+
composerAttachmentPreviewOverlayError,
|
|
13141
14567
|
composerAttachments,
|
|
13142
14568
|
composerDropActive,
|
|
13143
14569
|
composerDropEnabled,
|
|
@@ -13146,6 +14572,9 @@ const getChatVirtualDom = options => {
|
|
|
13146
14572
|
composerHeight,
|
|
13147
14573
|
composerLineHeight,
|
|
13148
14574
|
composerValue,
|
|
14575
|
+
hasSpaceForAgentModePicker,
|
|
14576
|
+
hasSpaceForRunModePicker,
|
|
14577
|
+
messagesAutoScrollEnabled,
|
|
13149
14578
|
messagesScrollTop,
|
|
13150
14579
|
modelPickerOpen,
|
|
13151
14580
|
modelPickerSearchValue,
|
|
@@ -13165,6 +14594,7 @@ const getChatVirtualDom = options => {
|
|
|
13165
14594
|
reasoningPickerEnabled,
|
|
13166
14595
|
runMode,
|
|
13167
14596
|
runModePickerOpen,
|
|
14597
|
+
scrollDownButtonEnabled,
|
|
13168
14598
|
selectedModelId,
|
|
13169
14599
|
selectedProjectId,
|
|
13170
14600
|
selectedSessionId,
|
|
@@ -13187,6 +14617,8 @@ const getChatVirtualDom = options => {
|
|
|
13187
14617
|
authEnabled,
|
|
13188
14618
|
authErrorMessage,
|
|
13189
14619
|
authStatus,
|
|
14620
|
+
composerAttachmentPreviewOverlayAttachmentId,
|
|
14621
|
+
composerAttachmentPreviewOverlayError,
|
|
13190
14622
|
composerAttachments,
|
|
13191
14623
|
composerDropActive,
|
|
13192
14624
|
composerDropEnabled,
|
|
@@ -13195,6 +14627,9 @@ const getChatVirtualDom = options => {
|
|
|
13195
14627
|
composerHeight,
|
|
13196
14628
|
composerLineHeight,
|
|
13197
14629
|
composerValue,
|
|
14630
|
+
hasSpaceForAgentModePicker,
|
|
14631
|
+
hasSpaceForRunModePicker,
|
|
14632
|
+
messagesAutoScrollEnabled,
|
|
13198
14633
|
messagesScrollTop,
|
|
13199
14634
|
modelPickerOpen,
|
|
13200
14635
|
modelPickerSearchValue,
|
|
@@ -13211,6 +14646,7 @@ const getChatVirtualDom = options => {
|
|
|
13211
14646
|
reasoningPickerEnabled,
|
|
13212
14647
|
runMode,
|
|
13213
14648
|
runModePickerOpen,
|
|
14649
|
+
scrollDownButtonEnabled,
|
|
13214
14650
|
selectedModelId,
|
|
13215
14651
|
selectedSessionId,
|
|
13216
14652
|
sessions,
|
|
@@ -13233,6 +14669,8 @@ const getChatVirtualDom = options => {
|
|
|
13233
14669
|
authErrorMessage,
|
|
13234
14670
|
authStatus,
|
|
13235
14671
|
chatListScrollTop,
|
|
14672
|
+
composerAttachmentPreviewOverlayAttachmentId,
|
|
14673
|
+
composerAttachmentPreviewOverlayError,
|
|
13236
14674
|
composerAttachments,
|
|
13237
14675
|
composerDropActive,
|
|
13238
14676
|
composerDropEnabled,
|
|
@@ -13241,6 +14679,8 @@ const getChatVirtualDom = options => {
|
|
|
13241
14679
|
composerHeight,
|
|
13242
14680
|
composerLineHeight,
|
|
13243
14681
|
composerValue,
|
|
14682
|
+
hasSpaceForAgentModePicker,
|
|
14683
|
+
hasSpaceForRunModePicker,
|
|
13244
14684
|
listFocusedIndex,
|
|
13245
14685
|
modelPickerOpen,
|
|
13246
14686
|
modelPickerSearchValue,
|
|
@@ -13279,6 +14719,8 @@ const renderItems = (oldState, newState) => {
|
|
|
13279
14719
|
authErrorMessage,
|
|
13280
14720
|
authStatus,
|
|
13281
14721
|
chatListScrollTop,
|
|
14722
|
+
composerAttachmentPreviewOverlayAttachmentId,
|
|
14723
|
+
composerAttachmentPreviewOverlayError,
|
|
13282
14724
|
composerAttachments,
|
|
13283
14725
|
composerDropActive,
|
|
13284
14726
|
composerDropEnabled,
|
|
@@ -13287,8 +14729,11 @@ const renderItems = (oldState, newState) => {
|
|
|
13287
14729
|
composerHeight,
|
|
13288
14730
|
composerLineHeight,
|
|
13289
14731
|
composerValue,
|
|
14732
|
+
hasSpaceForAgentModePicker,
|
|
14733
|
+
hasSpaceForRunModePicker,
|
|
13290
14734
|
initial,
|
|
13291
14735
|
listFocusedIndex,
|
|
14736
|
+
messagesAutoScrollEnabled,
|
|
13292
14737
|
messagesScrollTop,
|
|
13293
14738
|
modelPickerOpen,
|
|
13294
14739
|
modelPickerSearchValue,
|
|
@@ -13308,6 +14753,7 @@ const renderItems = (oldState, newState) => {
|
|
|
13308
14753
|
reasoningPickerEnabled,
|
|
13309
14754
|
runMode,
|
|
13310
14755
|
runModePickerOpen,
|
|
14756
|
+
scrollDownButtonEnabled,
|
|
13311
14757
|
searchEnabled,
|
|
13312
14758
|
searchFieldVisible,
|
|
13313
14759
|
searchValue,
|
|
@@ -13337,6 +14783,8 @@ const renderItems = (oldState, newState) => {
|
|
|
13337
14783
|
authErrorMessage,
|
|
13338
14784
|
authStatus,
|
|
13339
14785
|
chatListScrollTop,
|
|
14786
|
+
composerAttachmentPreviewOverlayAttachmentId,
|
|
14787
|
+
composerAttachmentPreviewOverlayError,
|
|
13340
14788
|
composerAttachments,
|
|
13341
14789
|
composerDropActive,
|
|
13342
14790
|
composerDropEnabled,
|
|
@@ -13345,7 +14793,10 @@ const renderItems = (oldState, newState) => {
|
|
|
13345
14793
|
composerHeight,
|
|
13346
14794
|
composerLineHeight,
|
|
13347
14795
|
composerValue,
|
|
14796
|
+
hasSpaceForAgentModePicker,
|
|
14797
|
+
hasSpaceForRunModePicker,
|
|
13348
14798
|
listFocusedIndex,
|
|
14799
|
+
messagesAutoScrollEnabled,
|
|
13349
14800
|
messagesScrollTop,
|
|
13350
14801
|
modelPickerOpen,
|
|
13351
14802
|
modelPickerSearchValue,
|
|
@@ -13365,6 +14816,7 @@ const renderItems = (oldState, newState) => {
|
|
|
13365
14816
|
reasoningPickerEnabled,
|
|
13366
14817
|
runMode,
|
|
13367
14818
|
runModePickerOpen,
|
|
14819
|
+
scrollDownButtonEnabled,
|
|
13368
14820
|
searchEnabled,
|
|
13369
14821
|
searchFieldVisible,
|
|
13370
14822
|
searchValue,
|
|
@@ -13483,6 +14935,12 @@ const renderEventListeners = () => {
|
|
|
13483
14935
|
}, {
|
|
13484
14936
|
name: HandleClick,
|
|
13485
14937
|
params: ['handleClick', TargetName, 'event.target.dataset.id', ClientX, ClientY]
|
|
14938
|
+
}, {
|
|
14939
|
+
name: HandleMouseOver,
|
|
14940
|
+
params: ['handleMouseOver', TargetName]
|
|
14941
|
+
}, {
|
|
14942
|
+
name: HandleMouseOut,
|
|
14943
|
+
params: ['handleMouseOut', TargetName, 'event.relatedTarget && event.relatedTarget.getAttribute ? event.relatedTarget.getAttribute("name") : ""']
|
|
13486
14944
|
}, {
|
|
13487
14945
|
name: HandleClickDictationButton,
|
|
13488
14946
|
params: ['handleClickDictationButton']
|
|
@@ -13539,11 +14997,11 @@ const renderEventListeners = () => {
|
|
|
13539
14997
|
params: ['handleSearchValueChange', TargetValue]
|
|
13540
14998
|
}, {
|
|
13541
14999
|
name: HandleDragEnter,
|
|
13542
|
-
params: ['handleDragEnter', TargetName,
|
|
15000
|
+
params: ['handleDragEnter', TargetName, DataTransferFiles2],
|
|
13543
15001
|
preventDefault: true
|
|
13544
15002
|
}, {
|
|
13545
15003
|
name: HandleDragOver,
|
|
13546
|
-
params: ['handleDragOver', TargetName,
|
|
15004
|
+
params: ['handleDragOver', TargetName, DataTransferFiles2],
|
|
13547
15005
|
preventDefault: true
|
|
13548
15006
|
}, {
|
|
13549
15007
|
name: HandleDragLeave,
|
|
@@ -13551,15 +15009,15 @@ const renderEventListeners = () => {
|
|
|
13551
15009
|
preventDefault: true
|
|
13552
15010
|
}, {
|
|
13553
15011
|
name: HandleDrop,
|
|
13554
|
-
params: ['handleDropFiles', TargetName,
|
|
15012
|
+
params: ['handleDropFiles', TargetName, DataTransferFiles2],
|
|
13555
15013
|
preventDefault: true
|
|
13556
15014
|
}, {
|
|
13557
15015
|
name: HandleDragEnterChatView,
|
|
13558
|
-
params: ['handleDragEnter', 'composer-drop-target',
|
|
15016
|
+
params: ['handleDragEnter', 'composer-drop-target', DataTransferFiles2],
|
|
13559
15017
|
preventDefault: true
|
|
13560
15018
|
}, {
|
|
13561
15019
|
name: HandleDragOverChatView,
|
|
13562
|
-
params: ['handleDragOver', 'composer-drop-target',
|
|
15020
|
+
params: ['handleDragOver', 'composer-drop-target', DataTransferFiles2],
|
|
13563
15021
|
preventDefault: true
|
|
13564
15022
|
}, {
|
|
13565
15023
|
name: HandleModelChange,
|
|
@@ -13645,6 +15103,13 @@ const renderEventListeners = () => {
|
|
|
13645
15103
|
}, {
|
|
13646
15104
|
name: HandleModelInputBlur,
|
|
13647
15105
|
params: ['handleModelInputBlur']
|
|
15106
|
+
}, {
|
|
15107
|
+
name: HandleContextMenuChatImageAttachment,
|
|
15108
|
+
params: ['handleContextMenuChatImageAttachment', TargetName, ClientX, ClientY],
|
|
15109
|
+
preventDefault: true
|
|
15110
|
+
}, {
|
|
15111
|
+
name: HandleErrorComposerAttachmentPreviewOverlay,
|
|
15112
|
+
params: ['handleErrorComposerAttachmentPreviewOverlay']
|
|
13648
15113
|
}];
|
|
13649
15114
|
};
|
|
13650
15115
|
|
|
@@ -13659,6 +15124,7 @@ const reset = async state => {
|
|
|
13659
15124
|
agentMode: defaultAgentMode,
|
|
13660
15125
|
agentModePickerOpen: false,
|
|
13661
15126
|
composerAttachments: [],
|
|
15127
|
+
composerAttachmentsHeight: 0,
|
|
13662
15128
|
composerHeight: getMinComposerHeightForState(state),
|
|
13663
15129
|
composerSelectionEnd: 0,
|
|
13664
15130
|
composerSelectionStart: 0,
|
|
@@ -13683,14 +15149,39 @@ const reset = async state => {
|
|
|
13683
15149
|
};
|
|
13684
15150
|
|
|
13685
15151
|
const resize = async (state, dimensions, getComposerHeightFn = getComposerHeight) => {
|
|
15152
|
+
const {
|
|
15153
|
+
agentModePickerOpen,
|
|
15154
|
+
responsivePickerVisibilityEnabled,
|
|
15155
|
+
runModePickerOpen,
|
|
15156
|
+
width
|
|
15157
|
+
} = state;
|
|
15158
|
+
const responsivePickerState = dimensions.width === undefined ? undefined : getResponsivePickerState(dimensions.width, responsivePickerVisibilityEnabled);
|
|
15159
|
+
const responsivePickerOpenState = responsivePickerState ? {
|
|
15160
|
+
agentModePickerOpen: responsivePickerState.hasSpaceForAgentModePicker ? agentModePickerOpen : false,
|
|
15161
|
+
runModePickerOpen: responsivePickerState.hasSpaceForRunModePicker ? runModePickerOpen : false
|
|
15162
|
+
} : {};
|
|
13686
15163
|
const nextState = {
|
|
13687
15164
|
...state,
|
|
13688
|
-
...dimensions
|
|
15165
|
+
...dimensions,
|
|
15166
|
+
...responsivePickerState,
|
|
15167
|
+
...responsivePickerOpenState
|
|
13689
15168
|
};
|
|
13690
|
-
|
|
15169
|
+
const {
|
|
15170
|
+
composerAttachments,
|
|
15171
|
+
composerValue,
|
|
15172
|
+
width: nextWidth
|
|
15173
|
+
} = nextState;
|
|
15174
|
+
if (dimensions.width !== undefined && dimensions.width !== width && composerValue) {
|
|
15175
|
+
return {
|
|
15176
|
+
...nextState,
|
|
15177
|
+
composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, nextWidth),
|
|
15178
|
+
composerHeight: await getComposerHeightFn(nextState, composerValue, nextWidth)
|
|
15179
|
+
};
|
|
15180
|
+
}
|
|
15181
|
+
if (dimensions.width !== undefined && dimensions.width !== width && composerAttachments.length > 0) {
|
|
13691
15182
|
return {
|
|
13692
15183
|
...nextState,
|
|
13693
|
-
|
|
15184
|
+
composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, nextWidth)
|
|
13694
15185
|
};
|
|
13695
15186
|
}
|
|
13696
15187
|
return nextState;
|
|
@@ -13700,6 +15191,8 @@ const saveState = state => {
|
|
|
13700
15191
|
const {
|
|
13701
15192
|
agentMode,
|
|
13702
15193
|
chatListScrollTop,
|
|
15194
|
+
composerSelectionEnd,
|
|
15195
|
+
composerSelectionStart,
|
|
13703
15196
|
composerValue,
|
|
13704
15197
|
lastNormalViewMode,
|
|
13705
15198
|
maxToolCalls,
|
|
@@ -13721,6 +15214,8 @@ const saveState = state => {
|
|
|
13721
15214
|
return {
|
|
13722
15215
|
agentMode,
|
|
13723
15216
|
chatListScrollTop,
|
|
15217
|
+
composerSelectionEnd,
|
|
15218
|
+
composerSelectionStart,
|
|
13724
15219
|
composerValue,
|
|
13725
15220
|
lastNormalViewMode,
|
|
13726
15221
|
maxToolCalls,
|
|
@@ -13806,6 +15301,24 @@ const setReasoningPickerEnabled = (state, reasoningPickerEnabled) => {
|
|
|
13806
15301
|
};
|
|
13807
15302
|
};
|
|
13808
15303
|
|
|
15304
|
+
const setResponsivePickerVisibilityEnabled = (state, responsivePickerVisibilityEnabled) => {
|
|
15305
|
+
const responsivePickerState = getResponsivePickerState(state.width, responsivePickerVisibilityEnabled);
|
|
15306
|
+
return {
|
|
15307
|
+
...state,
|
|
15308
|
+
...responsivePickerState,
|
|
15309
|
+
agentModePickerOpen: responsivePickerState.hasSpaceForAgentModePicker ? state.agentModePickerOpen : false,
|
|
15310
|
+
responsivePickerVisibilityEnabled,
|
|
15311
|
+
runModePickerOpen: responsivePickerState.hasSpaceForRunModePicker ? state.runModePickerOpen : false
|
|
15312
|
+
};
|
|
15313
|
+
};
|
|
15314
|
+
|
|
15315
|
+
const setScrollDownButtonEnabled = (state, scrollDownButtonEnabled) => {
|
|
15316
|
+
return {
|
|
15317
|
+
...state,
|
|
15318
|
+
scrollDownButtonEnabled
|
|
15319
|
+
};
|
|
15320
|
+
};
|
|
15321
|
+
|
|
13809
15322
|
const setSearchEnabled = (state, searchEnabled) => {
|
|
13810
15323
|
return {
|
|
13811
15324
|
...state,
|
|
@@ -13938,6 +15451,7 @@ const commandMap = {
|
|
|
13938
15451
|
'Chat.getKeyBindings': getKeyBindings,
|
|
13939
15452
|
'Chat.getMenuEntries': getMenuEntries,
|
|
13940
15453
|
'Chat.getMenuEntryIds': getMenuEntryIds,
|
|
15454
|
+
'Chat.getMockOpenApiRequests': wrapGetter(getMockOpenApiRequests),
|
|
13941
15455
|
'Chat.getQuickPickMenuEntries': getQuickPickMenuEntries,
|
|
13942
15456
|
'Chat.getSelectedSessionId': wrapGetter(getSelectedSessionId),
|
|
13943
15457
|
'Chat.getSystemPrompt': wrapGetter(getSystemPrompt),
|
|
@@ -13963,12 +15477,14 @@ const commandMap = {
|
|
|
13963
15477
|
'Chat.handleClickReadFile': wrapCommand(handleClickFileName),
|
|
13964
15478
|
'Chat.handleClickSessionDebug': wrapCommand(handleClickSessionDebug),
|
|
13965
15479
|
'Chat.handleClickSettings': handleClickSettings,
|
|
15480
|
+
'Chat.handleContextMenuChatImageAttachment': wrapCommand(handleContextMenuChatImageAttachment),
|
|
13966
15481
|
'Chat.handleContextMenuChatModelPicker': wrapCommand(handleContextMenuChatModelPicker),
|
|
13967
15482
|
'Chat.handleContextMenuChatSendAreaBottom': wrapCommand(handleContextMenuChatSendAreaBottom),
|
|
13968
15483
|
'Chat.handleDragEnter': wrapCommand(handleDragEnter),
|
|
13969
15484
|
'Chat.handleDragLeave': wrapCommand(handleDragLeave),
|
|
13970
15485
|
'Chat.handleDragOver': wrapCommand(handleDragOver),
|
|
13971
15486
|
'Chat.handleDropFiles': wrapCommand(handleDropFiles),
|
|
15487
|
+
'Chat.handleErrorComposerAttachmentPreviewOverlay': wrapCommand(handleErrorComposerAttachmentPreviewOverlay),
|
|
13972
15488
|
'Chat.handleInput': wrapCommand(handleInput),
|
|
13973
15489
|
'Chat.handleInputFocus': wrapCommand(handleInputFocus),
|
|
13974
15490
|
'Chat.handleKeyDown': wrapCommand(handleKeyDown),
|
|
@@ -13979,6 +15495,8 @@ const commandMap = {
|
|
|
13979
15495
|
'Chat.handleModelChange': wrapCommand(handleModelChange),
|
|
13980
15496
|
'Chat.handleModelInputBlur': wrapCommand(handleModelInputBlur),
|
|
13981
15497
|
'Chat.handleModelPickerListScroll': wrapCommand(handleModelPickerListScroll),
|
|
15498
|
+
'Chat.handleMouseOut': wrapCommand(handleMouseOut),
|
|
15499
|
+
'Chat.handleMouseOver': wrapCommand(handleMouseOver),
|
|
13982
15500
|
'Chat.handlePointerDownModelPickerList': wrapCommand(handlePointerDownModelPickerList),
|
|
13983
15501
|
'Chat.handlePointerUpModelPickerList': wrapCommand(handlePointerUpModelPickerList),
|
|
13984
15502
|
'Chat.handleProjectAddButtonContextMenu': wrapCommand(handleProjectAddButtonContextMenu),
|
|
@@ -13988,6 +15506,7 @@ const commandMap = {
|
|
|
13988
15506
|
'Chat.handleRunModeChange': wrapCommand(handleRunModeChange),
|
|
13989
15507
|
'Chat.handleSearchValueChange': wrapCommand(handleSearchValueChange),
|
|
13990
15508
|
'Chat.handleSubmit': wrapCommand(handleSubmit),
|
|
15509
|
+
'Chat.hideComposerAttachmentPreviewOverlay': wrapCommand(hideComposerAttachmentPreviewOverlay),
|
|
13991
15510
|
'Chat.initialize': initialize,
|
|
13992
15511
|
'Chat.loadContent': wrapCommand(loadContent),
|
|
13993
15512
|
'Chat.loadContent2': wrapCommand(loadContent),
|
|
@@ -14000,12 +15519,14 @@ const commandMap = {
|
|
|
14000
15519
|
'Chat.mockOpenApiStreamPushChunk': wrapCommand(mockOpenApiStreamPushChunk),
|
|
14001
15520
|
'Chat.mockOpenApiStreamReset': wrapCommand(mockOpenApiStreamReset),
|
|
14002
15521
|
'Chat.openAgentModePicker': wrapCommand(openAgentModePicker),
|
|
15522
|
+
'Chat.openMockProject': wrapCommand(openMockProject),
|
|
14003
15523
|
'Chat.openMockSession': wrapCommand(openMockSession),
|
|
14004
15524
|
'Chat.openModelPicker': wrapCommand(openModelPicker),
|
|
14005
15525
|
'Chat.openReasoningEffortPicker': wrapCommand(openReasoningEffortPicker),
|
|
14006
15526
|
'Chat.openRunModePicker': wrapCommand(openRunModePicker),
|
|
14007
15527
|
'Chat.pasteInput': wrapCommand(pasteInput),
|
|
14008
15528
|
'Chat.registerMockResponse': wrapCommand(registerMockResponse),
|
|
15529
|
+
'Chat.removeComposerAttachment': wrapCommand(removeComposerAttachment),
|
|
14009
15530
|
'Chat.render2': render2,
|
|
14010
15531
|
'Chat.renderEventListeners': renderEventListeners,
|
|
14011
15532
|
'Chat.rerender': wrapCommand(rerender),
|
|
@@ -14022,6 +15543,8 @@ const commandMap = {
|
|
|
14022
15543
|
'Chat.setQuestionToolEnabled': wrapCommand(setQuestionToolEnabled),
|
|
14023
15544
|
'Chat.setReasoningEffort': wrapCommand(setReasoningEffort),
|
|
14024
15545
|
'Chat.setReasoningPickerEnabled': wrapCommand(setReasoningPickerEnabled),
|
|
15546
|
+
'Chat.setResponsivePickerVisibilityEnabled': wrapCommand(setResponsivePickerVisibilityEnabled),
|
|
15547
|
+
'Chat.setScrollDownButtonEnabled': wrapCommand(setScrollDownButtonEnabled),
|
|
14025
15548
|
'Chat.setSearchEnabled': wrapCommand(setSearchEnabled),
|
|
14026
15549
|
'Chat.setShowRunMode': wrapCommand(setShowRunMode),
|
|
14027
15550
|
'Chat.setStreamingEnabled': wrapCommand(setStreamingEnabled),
|
|
@@ -14032,6 +15555,7 @@ const commandMap = {
|
|
|
14032
15555
|
'Chat.setUseChatMathWorker': wrapCommand(setUseChatMathWorker),
|
|
14033
15556
|
'Chat.setUseChatMessageParsingWorker': wrapCommand(setUseChatMessageParsingWorker),
|
|
14034
15557
|
'Chat.setUseChatNetworkWorkerForRequests': wrapCommand(setUseChatNetworkWorkerForRequests),
|
|
15558
|
+
'Chat.showComposerAttachmentPreviewOverlay': wrapCommand(showComposerAttachmentPreviewOverlay),
|
|
14035
15559
|
'Chat.terminate': terminate,
|
|
14036
15560
|
'Chat.useMockApi': wrapCommand(useMockApi)
|
|
14037
15561
|
};
|
|
@@ -14044,7 +15568,7 @@ const initializeChatCoordinatorWorker = async () => {
|
|
|
14044
15568
|
commandMap: {},
|
|
14045
15569
|
send: sendMessagePortToChatCoordinatorWorker
|
|
14046
15570
|
});
|
|
14047
|
-
set$
|
|
15571
|
+
set$c(rpc);
|
|
14048
15572
|
};
|
|
14049
15573
|
|
|
14050
15574
|
const sendMessagePortToChatMathWorker = async port => {
|
|
@@ -14055,7 +15579,7 @@ const initializeChatMathWorker = async () => {
|
|
|
14055
15579
|
commandMap: {},
|
|
14056
15580
|
send: sendMessagePortToChatMathWorker
|
|
14057
15581
|
});
|
|
14058
|
-
set$
|
|
15582
|
+
set$b(rpc);
|
|
14059
15583
|
};
|
|
14060
15584
|
|
|
14061
15585
|
const send$2 = port => {
|
|
@@ -14066,7 +15590,7 @@ const initializeChatMessageParsingWorker = async () => {
|
|
|
14066
15590
|
commandMap: {},
|
|
14067
15591
|
send: send$2
|
|
14068
15592
|
});
|
|
14069
|
-
set$
|
|
15593
|
+
set$a(rpc);
|
|
14070
15594
|
};
|
|
14071
15595
|
|
|
14072
15596
|
const send$1 = port => {
|
|
@@ -14077,7 +15601,7 @@ const initializeChatNetworkWorker = async () => {
|
|
|
14077
15601
|
commandMap: {},
|
|
14078
15602
|
send: send$1
|
|
14079
15603
|
});
|
|
14080
|
-
set$
|
|
15604
|
+
set$9(rpc);
|
|
14081
15605
|
};
|
|
14082
15606
|
|
|
14083
15607
|
const sendMessagePortToChatStorageWorker = async port => {
|
|
@@ -14088,7 +15612,7 @@ const initializeChatStorageWorker = async () => {
|
|
|
14088
15612
|
commandMap: {},
|
|
14089
15613
|
send: sendMessagePortToChatStorageWorker
|
|
14090
15614
|
});
|
|
14091
|
-
set$
|
|
15615
|
+
set$8(rpc);
|
|
14092
15616
|
};
|
|
14093
15617
|
|
|
14094
15618
|
const send = port => {
|
|
@@ -14099,7 +15623,7 @@ const initializeChatToolWorker = async () => {
|
|
|
14099
15623
|
commandMap: {},
|
|
14100
15624
|
send
|
|
14101
15625
|
});
|
|
14102
|
-
set$
|
|
15626
|
+
set$7(rpc);
|
|
14103
15627
|
};
|
|
14104
15628
|
|
|
14105
15629
|
const sendMessagePortToClipBoardWorker = async port => {
|
|
@@ -14110,7 +15634,18 @@ const initializeClipBoardWorker = async () => {
|
|
|
14110
15634
|
commandMap: {},
|
|
14111
15635
|
send: sendMessagePortToClipBoardWorker
|
|
14112
15636
|
});
|
|
14113
|
-
set$
|
|
15637
|
+
set$6(rpc);
|
|
15638
|
+
};
|
|
15639
|
+
|
|
15640
|
+
const sendMessagePortToIconThemeWorker = async port => {
|
|
15641
|
+
await sendMessagePortToIconThemeWorker$1(port, 0);
|
|
15642
|
+
};
|
|
15643
|
+
const initializeIconThemeWorker = async () => {
|
|
15644
|
+
const rpc = await create$4({
|
|
15645
|
+
commandMap: {},
|
|
15646
|
+
send: sendMessagePortToIconThemeWorker
|
|
15647
|
+
});
|
|
15648
|
+
set$4(rpc);
|
|
14114
15649
|
};
|
|
14115
15650
|
|
|
14116
15651
|
const sendMessagePortToOpenerWorker = async port => {
|
|
@@ -14224,7 +15759,7 @@ const listen = async () => {
|
|
|
14224
15759
|
commandMap: commandMap
|
|
14225
15760
|
});
|
|
14226
15761
|
set$2(rpc);
|
|
14227
|
-
await Promise.all([initializeChatCoordinatorWorker(), initializeChatMathWorker(), initializeChatMessageParsingWorker(), initializeChatNetworkWorker(), initializeChatStorageWorker(), initializeChatToolWorker(), initializeClipBoardWorker(), initializeOpenerWorker(), initializeTextMeasurementWorker()]);
|
|
15762
|
+
await Promise.all([initializeChatCoordinatorWorker(), initializeChatMathWorker(), initializeChatMessageParsingWorker(), initializeChatNetworkWorker(), initializeChatStorageWorker(), initializeChatToolWorker(), initializeClipBoardWorker(), initializeOpenerWorker(), initializeIconThemeWorker(), initializeTextMeasurementWorker()]);
|
|
14228
15763
|
};
|
|
14229
15764
|
|
|
14230
15765
|
const main = async () => {
|