@lvce-editor/static-server 0.77.5 → 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.
Files changed (1966) hide show
  1. package/config.json +1986 -1986
  2. package/package.json +1 -1
  3. package/static/{e30ed59 → 101c327}/css/App.css +140 -94
  4. package/static/{e30ed59 → 101c327}/manifest.json +2 -2
  5. package/static/{e30ed59 → 101c327}/packages/about-view-worker/dist/aboutWorkerMain.js +3 -3
  6. package/static/{e30ed59 → 101c327}/packages/chat-message-parsing-worker/dist/chatMessageParsingWorkerMain.js +105 -42
  7. package/static/{e30ed59 → 101c327}/packages/chat-view/dist/chatViewWorkerMain.js +1960 -458
  8. package/static/{e30ed59 → 101c327}/packages/extension-host-worker/dist/extensionHostWorkerMain.js +3 -3
  9. package/static/{e30ed59 → 101c327}/packages/renderer-process/dist/rendererProcessMain.js +22 -9
  10. package/static/{e30ed59 → 101c327}/packages/renderer-process/package.json +1 -1
  11. package/static/{e30ed59 → 101c327}/packages/renderer-worker/dist/rendererWorkerMain.js +4 -4
  12. package/static/{e30ed59 → 101c327}/packages/status-bar-worker/dist/statusBarWorkerMain.js +22 -3
  13. package/static/{e30ed59 → 101c327}/packages/title-bar-worker/dist/titleBarWorkerMain.js +302 -159
  14. package/static/index.html +4 -4
  15. /package/static/{e30ed59 → 101c327}/config/colorTheme.json +0 -0
  16. /package/static/{e30ed59 → 101c327}/config/defaultSettings.json +0 -0
  17. /package/static/{e30ed59 → 101c327}/config/fileMap.json +0 -0
  18. /package/static/{e30ed59 → 101c327}/config/webExtensions.json +0 -0
  19. /package/static/{e30ed59 → 101c327}/css/parts/AdditionalDetails.css +0 -0
  20. /package/static/{e30ed59 → 101c327}/css/parts/Animation.css +0 -0
  21. /package/static/{e30ed59 → 101c327}/css/parts/BrowserScrollBar.css +0 -0
  22. /package/static/{e30ed59 → 101c327}/css/parts/Category.css +0 -0
  23. /package/static/{e30ed59 → 101c327}/css/parts/DebugButtons.css +0 -0
  24. /package/static/{e30ed59 → 101c327}/css/parts/DebugValue.css +0 -0
  25. /package/static/{e30ed59 → 101c327}/css/parts/E2eTest.css +0 -0
  26. /package/static/{e30ed59 → 101c327}/css/parts/E2eTests.css +0 -0
  27. /package/static/{e30ed59 → 101c327}/css/parts/EditorHover.css +0 -0
  28. /package/static/{e30ed59 → 101c327}/css/parts/EditorMessage.css +0 -0
  29. /package/static/{e30ed59 → 101c327}/css/parts/FeatureContent.css +0 -0
  30. /package/static/{e30ed59 → 101c327}/css/parts/Features.css +0 -0
  31. /package/static/{e30ed59 → 101c327}/css/parts/ImagePreview.css +0 -0
  32. /package/static/{e30ed59 → 101c327}/css/parts/InlineDiffEditor.css +0 -0
  33. /package/static/{e30ed59 → 101c327}/css/parts/InputBadge.css +0 -0
  34. /package/static/{e30ed59 → 101c327}/css/parts/Key.css +0 -0
  35. /package/static/{e30ed59 → 101c327}/css/parts/KeyBindingsHeader.css +0 -0
  36. /package/static/{e30ed59 → 101c327}/css/parts/KeyBindingsTable.css +0 -0
  37. /package/static/{e30ed59 → 101c327}/css/parts/LegacyDialog.css +0 -0
  38. /package/static/{e30ed59 → 101c327}/css/parts/Markdown.css +0 -0
  39. /package/static/{e30ed59 → 101c327}/css/parts/Message.css +0 -0
  40. /package/static/{e30ed59 → 101c327}/css/parts/Preview.css +0 -0
  41. /package/static/{e30ed59 → 101c327}/css/parts/ScrollToTop.css +0 -0
  42. /package/static/{e30ed59 → 101c327}/css/parts/SettingsHeader.css +0 -0
  43. /package/static/{e30ed59 → 101c327}/css/parts/SettingsItems.css +0 -0
  44. /package/static/{e30ed59 → 101c327}/css/parts/SettingsSideBar.css +0 -0
  45. /package/static/{e30ed59 → 101c327}/css/parts/Table.css +0 -0
  46. /package/static/{e30ed59 → 101c327}/css/parts/ViewletAbout.css +0 -0
  47. /package/static/{e30ed59 → 101c327}/css/parts/ViewletBrowserViewOverview.css +0 -0
  48. /package/static/{e30ed59 → 101c327}/css/parts/ViewletDebugConsole.css +0 -0
  49. /package/static/{e30ed59 → 101c327}/css/parts/ViewletDefineKeyBinding.css +0 -0
  50. /package/static/{e30ed59 → 101c327}/css/parts/ViewletDiffEditor.css +0 -0
  51. /package/static/{e30ed59 → 101c327}/css/parts/ViewletEditorWidgetError.css +0 -0
  52. /package/static/{e30ed59 → 101c327}/css/parts/ViewletExtensionDetail.css +0 -0
  53. /package/static/{e30ed59 → 101c327}/css/parts/ViewletExtensionDetailHeader.css +0 -0
  54. /package/static/{e30ed59 → 101c327}/css/parts/ViewletExtensionDetailTabs.css +0 -0
  55. /package/static/{e30ed59 → 101c327}/css/parts/ViewletExtensions.css +0 -0
  56. /package/static/{e30ed59 → 101c327}/css/parts/ViewletIframeInspector.css +0 -0
  57. /package/static/{e30ed59 → 101c327}/css/parts/ViewletKeyBindings.css +0 -0
  58. /package/static/{e30ed59 → 101c327}/css/parts/ViewletLanguageModels.css +0 -0
  59. /package/static/{e30ed59 → 101c327}/css/parts/ViewletMedia.css +0 -0
  60. /package/static/{e30ed59 → 101c327}/css/parts/ViewletOutput.css +0 -0
  61. /package/static/{e30ed59 → 101c327}/css/parts/ViewletPanel.css +0 -0
  62. /package/static/{e30ed59 → 101c327}/css/parts/ViewletPanelTabs.css +0 -0
  63. /package/static/{e30ed59 → 101c327}/css/parts/ViewletPdf.css +0 -0
  64. /package/static/{e30ed59 → 101c327}/css/parts/ViewletProblems.css +0 -0
  65. /package/static/{e30ed59 → 101c327}/css/parts/ViewletReferences.css +0 -0
  66. /package/static/{e30ed59 → 101c327}/css/parts/ViewletRunAndDebug.css +0 -0
  67. /package/static/{e30ed59 → 101c327}/css/parts/ViewletScreenCapture.css +0 -0
  68. /package/static/{e30ed59 → 101c327}/css/parts/ViewletSearch.css +0 -0
  69. /package/static/{e30ed59 → 101c327}/css/parts/ViewletSettings.css +0 -0
  70. /package/static/{e30ed59 → 101c327}/css/parts/ViewletSimpleBrowser.css +0 -0
  71. /package/static/{e30ed59 → 101c327}/css/parts/ViewletSourceControl.css +0 -0
  72. /package/static/{e30ed59 → 101c327}/css/parts/ViewletStorage.css +0 -0
  73. /package/static/{e30ed59 → 101c327}/css/parts/ViewletTerminal.css +0 -0
  74. /package/static/{e30ed59 → 101c327}/css/parts/ViewletTerminalTabs.css +0 -0
  75. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-bat/README.md +0 -0
  76. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-bat/extension.json +0 -0
  77. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-bat/languageConfiguration.json +0 -0
  78. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-bat/src/tokenizeBat.js +0 -0
  79. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-c/README.md +0 -0
  80. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-c/extension.json +0 -0
  81. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-c/src/tokenizeC.js +0 -0
  82. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-coffeescript/README.md +0 -0
  83. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-coffeescript/extension.json +0 -0
  84. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-coffeescript/src/tokenizeCoffeeScript.js +0 -0
  85. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-cpp/README.md +0 -0
  86. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-cpp/extension.json +0 -0
  87. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-cpp/languageConfiguration.json +0 -0
  88. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-cpp/src/tokenizeCpp.js +0 -0
  89. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-cson/README.md +0 -0
  90. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-cson/extension.json +0 -0
  91. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-cson/languageConfiguration.json +0 -0
  92. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-cson/src/tokenizeCson.js +0 -0
  93. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-css/README.md +0 -0
  94. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-css/extension.json +0 -0
  95. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-css/languageConfiguration.json +0 -0
  96. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-css/src/tokenizeCss.js +0 -0
  97. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-dart/README.md +0 -0
  98. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-dart/extension.json +0 -0
  99. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-dart/src/tokenizeDart.js +0 -0
  100. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-desktop/README.md +0 -0
  101. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-desktop/extension.json +0 -0
  102. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-desktop/src/tokenizeDesktop.js +0 -0
  103. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-docker/README.md +0 -0
  104. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-docker/extension.json +0 -0
  105. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-docker/src/tokenizeDockerfile.js +0 -0
  106. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-dotenv/README.md +0 -0
  107. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-dotenv/extension.json +0 -0
  108. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-dotenv/src/tokenizeDotenv.js +0 -0
  109. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-editorconfig/README.md +0 -0
  110. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-editorconfig/extension.json +0 -0
  111. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-editorconfig/src/tokenizeEditorConfig.js +0 -0
  112. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-elixir/README.md +0 -0
  113. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-elixir/extension.json +0 -0
  114. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-elixir/src/tokenizeElixir.js +0 -0
  115. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-elm/README.md +0 -0
  116. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-elm/extension.json +0 -0
  117. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-elm/src/tokenizeElm.js +0 -0
  118. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-gitattributes/README.md +0 -0
  119. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-gitattributes/extension.json +0 -0
  120. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-gitattributes/src/tokenizeGitAttributes.js +0 -0
  121. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-gn/README.md +0 -0
  122. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-gn/extension.json +0 -0
  123. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-gn/src/tokenizeGn.js +0 -0
  124. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-go/README.md +0 -0
  125. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-go/extension.json +0 -0
  126. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-go/src/tokenizeGo.js +0 -0
  127. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-graphql/README.md +0 -0
  128. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-graphql/extension.json +0 -0
  129. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-graphql/src/tokenizeGraphql.js +0 -0
  130. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-html/README.md +0 -0
  131. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-html/extension.json +0 -0
  132. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-html/languageConfiguration.json +0 -0
  133. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-html/src/tokenizeHtml.js +0 -0
  134. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-java/README.md +0 -0
  135. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-java/extension.json +0 -0
  136. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-java/languageConfiguration.json +0 -0
  137. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-java/src/tokenizeJava.js +0 -0
  138. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-javascript/README.md +0 -0
  139. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-javascript/extension.json +0 -0
  140. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-javascript/languageConfiguration.json +0 -0
  141. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-javascript/src/tokenizeJavaScript.js +0 -0
  142. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-json/README.md +0 -0
  143. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-json/extension.json +0 -0
  144. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-json/src/tokenizeJson.js +0 -0
  145. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-json5/README.md +0 -0
  146. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-json5/extension.json +0 -0
  147. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-json5/src/tokenizeJson5.js +0 -0
  148. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-jsx/README.md +0 -0
  149. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-jsx/extension.json +0 -0
  150. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-jsx/src/tokenizeJsx.js +0 -0
  151. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-julia/README.md +0 -0
  152. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-julia/extension.json +0 -0
  153. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-julia/src/tokenizeJulia.js +0 -0
  154. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-kotlin/README.md +0 -0
  155. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-kotlin/extension.json +0 -0
  156. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-kotlin/src/tokenizeKotlin.js +0 -0
  157. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-less/LICENSE +0 -0
  158. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-less/README.md +0 -0
  159. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-less/extension.json +0 -0
  160. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-less/languageConfiguration.json +0 -0
  161. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-less/src/tokenizeLess.js +0 -0
  162. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-markdown/README.md +0 -0
  163. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-markdown/extension.json +0 -0
  164. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-markdown/src/tokenizeMarkdown.js +0 -0
  165. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-mdx/README.md +0 -0
  166. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-mdx/extension.json +0 -0
  167. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-mdx/src/tokenizeMdx.js +0 -0
  168. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-nix/README.md +0 -0
  169. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-nix/extension.json +0 -0
  170. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-nix/languageConfiguration.json +0 -0
  171. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-nix/src/tokenizeNix.js +0 -0
  172. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-nvmrc/README.md +0 -0
  173. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-nvmrc/extension.json +0 -0
  174. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-nvmrc/src/tokenizeNvmrc.js +0 -0
  175. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-perl/README.md +0 -0
  176. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-perl/extension.json +0 -0
  177. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-perl/src/tokenizePerl.js +0 -0
  178. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-plaintext/README.md +0 -0
  179. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-plaintext/extension.json +0 -0
  180. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-plaintext/src/tokenizePlaintext.js +0 -0
  181. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-powershell/README.md +0 -0
  182. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-powershell/extension.json +0 -0
  183. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-powershell/src/tokenizePowershell.js +0 -0
  184. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-python/README.md +0 -0
  185. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-python/extension.json +0 -0
  186. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-python/languageConfiguration.json +0 -0
  187. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-python/src/tokenizePython.js +0 -0
  188. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-r/README.md +0 -0
  189. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-r/extension.json +0 -0
  190. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-r/src/tokenizeR.js +0 -0
  191. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-ruby/README.md +0 -0
  192. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-ruby/extension.json +0 -0
  193. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-ruby/src/tokenizeRuby.js +0 -0
  194. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-rust/LICENSE +0 -0
  195. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-rust/README.md +0 -0
  196. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-rust/extension.json +0 -0
  197. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-rust/languageConfiguration.json +0 -0
  198. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-rust/src/tokenizeRust.js +0 -0
  199. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-scss/README.md +0 -0
  200. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-scss/extension.json +0 -0
  201. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-scss/languageConfiguration.json +0 -0
  202. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-scss/src/tokenizeScss.js +0 -0
  203. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-shellscript/README.md +0 -0
  204. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-shellscript/extension.json +0 -0
  205. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-shellscript/src/tokenizeShellScript.js +0 -0
  206. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-svelte/README.md +0 -0
  207. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-svelte/extension.json +0 -0
  208. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-svelte/src/tokenizeSvelte.js +0 -0
  209. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-terraform/README.md +0 -0
  210. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-terraform/extension.json +0 -0
  211. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-terraform/src/tokenizeTerraform.js +0 -0
  212. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-toml/README.md +0 -0
  213. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-toml/extension.json +0 -0
  214. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-toml/src/tokenizeToml.js +0 -0
  215. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-typescript/README.md +0 -0
  216. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-typescript/extension.json +0 -0
  217. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-typescript/languageConfiguration.json +0 -0
  218. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-typescript/src/tokenizeTypeScript.js +0 -0
  219. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-vue/README.md +0 -0
  220. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-vue/extension.json +0 -0
  221. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-vue/src/tokenizeVue.js +0 -0
  222. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-wgsl/README.md +0 -0
  223. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-wgsl/extension.json +0 -0
  224. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-wgsl/languageConfiguration.json +0 -0
  225. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-wgsl/src/tokenizeWgsl.js +0 -0
  226. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-xml/README.md +0 -0
  227. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-xml/extension.json +0 -0
  228. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-xml/src/tokenizeXml.js +0 -0
  229. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-yaml/README.md +0 -0
  230. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-yaml/extension.json +0 -0
  231. /package/static/{e30ed59 → 101c327}/extensions/builtin.language-basics-yaml/src/tokenizeYaml.js +0 -0
  232. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-atom-one-dark/README.md +0 -0
  233. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-atom-one-dark/color-theme.json +0 -0
  234. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-atom-one-dark/extension.json +0 -0
  235. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-atom-one-dark/images/demo.png +0 -0
  236. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-ayu/README.md +0 -0
  237. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-ayu/color-theme.json +0 -0
  238. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-ayu/extension.json +0 -0
  239. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-ayu/images/demo.png +0 -0
  240. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-cobalt2/README.md +0 -0
  241. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-cobalt2/color-theme.json +0 -0
  242. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-cobalt2/extension.json +0 -0
  243. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-cobalt2/images/demo.png +0 -0
  244. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-cobalt2/images/logo.png +0 -0
  245. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-gruvbox/README.md +0 -0
  246. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-gruvbox/color-theme.json +0 -0
  247. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-gruvbox/extension.json +0 -0
  248. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-gruvbox/images/demo.png +0 -0
  249. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-high-contrast/README.md +0 -0
  250. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-high-contrast/color-theme.json +0 -0
  251. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-high-contrast/extension.json +0 -0
  252. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-material/README.md +0 -0
  253. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-material/color-theme.json +0 -0
  254. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-material/extension.json +0 -0
  255. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-monokai/README.md +0 -0
  256. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-monokai/color-theme.json +0 -0
  257. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-monokai/extension.json +0 -0
  258. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-noctis-uva/README.md +0 -0
  259. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-noctis-uva/color-theme.json +0 -0
  260. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-noctis-uva/extension.json +0 -0
  261. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-noctis-uva/images/demo.png +0 -0
  262. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-palenight/README.md +0 -0
  263. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-palenight/color-theme.json +0 -0
  264. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-palenight/extension.json +0 -0
  265. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-palenight/images/demo.png +0 -0
  266. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-slime/README.md +0 -0
  267. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-slime/color-theme.json +0 -0
  268. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-slime/extension.json +0 -0
  269. /package/static/{e30ed59 → 101c327}/extensions/builtin.theme-slime/icon.png +0 -0
  270. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/README.md +0 -0
  271. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/extension.json +0 -0
  272. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icon-theme.json +0 -0
  273. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icon.png +0 -0
  274. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/default_file.svg +0 -0
  275. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/default_folder.svg +0 -0
  276. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/default_folder_opened.svg +0 -0
  277. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/default_root_folder.svg +0 -0
  278. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/default_root_folder_opened.svg +0 -0
  279. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_access.svg +0 -0
  280. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_access2.svg +0 -0
  281. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_actionscript.svg +0 -0
  282. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_actionscript2.svg +0 -0
  283. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ada.svg +0 -0
  284. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_advpl.svg +0 -0
  285. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affectscript.svg +0 -0
  286. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affinity.svg +0 -0
  287. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affinitydesigner.svg +0 -0
  288. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affinityphoto.svg +0 -0
  289. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affinitypublisher.svg +0 -0
  290. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_agda.svg +0 -0
  291. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_agents.svg +0 -0
  292. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ai.svg +0 -0
  293. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ai2.svg +0 -0
  294. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_al.svg +0 -0
  295. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_al_dal.svg +0 -0
  296. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_alchemy.svg +0 -0
  297. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_allcontributors.svg +0 -0
  298. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_alloy.svg +0 -0
  299. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_allure.svg +0 -0
  300. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_angular.svg +0 -0
  301. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ansible.svg +0 -0
  302. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_antlers_html.svg +0 -0
  303. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_antlr.svg +0 -0
  304. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_anyscript.svg +0 -0
  305. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apache.svg +0 -0
  306. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apex.svg +0 -0
  307. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_api_extractor.svg +0 -0
  308. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apib.svg +0 -0
  309. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apib2.svg +0 -0
  310. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apl.svg +0 -0
  311. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_applescript.svg +0 -0
  312. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_appscript.svg +0 -0
  313. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_appsemble.svg +0 -0
  314. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_appveyor.svg +0 -0
  315. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_arduino.svg +0 -0
  316. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_asciidoc.svg +0 -0
  317. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_aseprite.svg +0 -0
  318. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_asp.svg +0 -0
  319. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_aspx.svg +0 -0
  320. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_assembly.svg +0 -0
  321. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_assembly_script.svg +0 -0
  322. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_astro.svg +0 -0
  323. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_astroconfig.svg +0 -0
  324. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_atom.svg +0 -0
  325. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ats.svg +0 -0
  326. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_attw.svg +0 -0
  327. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_audio.svg +0 -0
  328. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_aurelia.svg +0 -0
  329. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_autohotkey.svg +0 -0
  330. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_autoit.svg +0 -0
  331. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_avif.svg +0 -0
  332. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_avro.svg +0 -0
  333. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_awk.svg +0 -0
  334. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_aws.svg +0 -0
  335. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_azure.svg +0 -0
  336. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_azurepipelines.svg +0 -0
  337. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_babel.svg +0 -0
  338. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_babel2.svg +0 -0
  339. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bak.svg +0 -0
  340. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ballerina.svg +0 -0
  341. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bat.svg +0 -0
  342. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bats.svg +0 -0
  343. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bazaar.svg +0 -0
  344. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bazel.svg +0 -0
  345. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bazel_ignore.svg +0 -0
  346. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bazel_version.svg +0 -0
  347. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_befunge.svg +0 -0
  348. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bicep.svg +0 -0
  349. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_biml.svg +0 -0
  350. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_binary.svg +0 -0
  351. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_biome.svg +0 -0
  352. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bitbucketpipeline.svg +0 -0
  353. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bithound.svg +0 -0
  354. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_blade.svg +0 -0
  355. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_blender.svg +0 -0
  356. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_blitzbasic.svg +0 -0
  357. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bolt.svg +0 -0
  358. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bosque.svg +0 -0
  359. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bower.svg +0 -0
  360. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bower2.svg +0 -0
  361. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_browserslist.svg +0 -0
  362. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bruno.svg +0 -0
  363. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_buckbuild.svg +0 -0
  364. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_buf.svg +0 -0
  365. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bun.svg +0 -0
  366. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bundlemon.svg +0 -0
  367. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bundler.svg +0 -0
  368. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bunfig.svg +0 -0
  369. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_c.svg +0 -0
  370. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_c2.svg +0 -0
  371. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_c3.svg +0 -0
  372. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_c_al.svg +0 -0
  373. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cabal.svg +0 -0
  374. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_caddy.svg +0 -0
  375. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cake.svg +0 -0
  376. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cakephp.svg +0 -0
  377. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_capacitor.svg +0 -0
  378. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_capnp.svg +0 -0
  379. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cargo.svg +0 -0
  380. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_casc.svg +0 -0
  381. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cddl.svg +0 -0
  382. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cert.svg +0 -0
  383. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ceylon.svg +0 -0
  384. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cf.svg +0 -0
  385. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cf2.svg +0 -0
  386. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cfc.svg +0 -0
  387. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cfc2.svg +0 -0
  388. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cfm.svg +0 -0
  389. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cfm2.svg +0 -0
  390. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_changie.svg +0 -0
  391. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cheader.svg +0 -0
  392. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_chef.svg +0 -0
  393. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_chef_cookbook.svg +0 -0
  394. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_circleci.svg +0 -0
  395. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_circom.svg +0 -0
  396. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_class.svg +0 -0
  397. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_claude.svg +0 -0
  398. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_clojure.svg +0 -0
  399. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_clojurescript.svg +0 -0
  400. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cloudflare.svg +0 -0
  401. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cloudfoundry.svg +0 -0
  402. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cmake.svg +0 -0
  403. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cobol.svg +0 -0
  404. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codacy.svg +0 -0
  405. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codeclimate.svg +0 -0
  406. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codecov.svg +0 -0
  407. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codekit.svg +0 -0
  408. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codemagic.svg +0 -0
  409. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codeowners.svg +0 -0
  410. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codeql.svg +0 -0
  411. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coderabbit.svg +0 -0
  412. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coffeelint.svg +0 -0
  413. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coffeescript.svg +0 -0
  414. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_commitizen.svg +0 -0
  415. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_commitlint.svg +0 -0
  416. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_compass.svg +0 -0
  417. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_composer.svg +0 -0
  418. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_conan.svg +0 -0
  419. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_conda.svg +0 -0
  420. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_config.svg +0 -0
  421. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_confluence.svg +0 -0
  422. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_copilot.svg +0 -0
  423. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coverage.svg +0 -0
  424. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coveralls.svg +0 -0
  425. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cpp.svg +0 -0
  426. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cpp2.svg +0 -0
  427. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cpp3.svg +0 -0
  428. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cppheader.svg +0 -0
  429. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_craco.svg +0 -0
  430. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_crowdin.svg +0 -0
  431. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_crystal.svg +0 -0
  432. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csharp.svg +0 -0
  433. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csharp2.svg +0 -0
  434. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cspell.svg +0 -0
  435. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csproj.svg +0 -0
  436. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_css.svg +0 -0
  437. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_css2.svg +0 -0
  438. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_css2map.svg +0 -0
  439. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csscomb.svg +0 -0
  440. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csslint.svg +0 -0
  441. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cssmap.svg +0 -0
  442. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cucumber.svg +0 -0
  443. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cuda.svg +0 -0
  444. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cursorrules.svg +0 -0
  445. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cvs.svg +0 -0
  446. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cypress.svg +0 -0
  447. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cypress_spec.svg +0 -0
  448. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cython.svg +0 -0
  449. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dal.svg +0 -0
  450. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_darcs.svg +0 -0
  451. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dartlang.svg +0 -0
  452. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dartlang_generated.svg +0 -0
  453. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dartlang_ignore.svg +0 -0
  454. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_datadog.svg +0 -0
  455. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_db.svg +0 -0
  456. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_debian.svg +0 -0
  457. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_delphi.svg +0 -0
  458. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_deno.svg +0 -0
  459. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_denoify.svg +0 -0
  460. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dependabot.svg +0 -0
  461. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dependencies.svg +0 -0
  462. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_design_tokens.svg +0 -0
  463. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_devcontainer.svg +0 -0
  464. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_devvit.svg +0 -0
  465. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dhall.svg +0 -0
  466. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_diff.svg +0 -0
  467. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_django.svg +0 -0
  468. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dlang.svg +0 -0
  469. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docker.svg +0 -0
  470. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docker2.svg +0 -0
  471. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dockertest.svg +0 -0
  472. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dockertest2.svg +0 -0
  473. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docpad.svg +0 -0
  474. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docusaurus.svg +0 -0
  475. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docz.svg +0 -0
  476. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dojo.svg +0 -0
  477. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_doppler.svg +0 -0
  478. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dotenv.svg +0 -0
  479. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dotjs.svg +0 -0
  480. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_doxygen.svg +0 -0
  481. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_drawio.svg +0 -0
  482. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_drone.svg +0 -0
  483. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_drools.svg +0 -0
  484. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dtd.svg +0 -0
  485. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dune.svg +0 -0
  486. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dustjs.svg +0 -0
  487. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dvc.svg +0 -0
  488. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dylan.svg +0 -0
  489. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_earthly.svg +0 -0
  490. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eas-metadata.svg +0 -0
  491. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_edge.svg +0 -0
  492. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_edge2.svg +0 -0
  493. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_editorconfig.svg +0 -0
  494. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eex.svg +0 -0
  495. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ejs.svg +0 -0
  496. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elastic.svg +0 -0
  497. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elasticbeanstalk.svg +0 -0
  498. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_electron.svg +0 -0
  499. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eleventy.svg +0 -0
  500. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eleventy2.svg +0 -0
  501. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elixir.svg +0 -0
  502. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elm.svg +0 -0
  503. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elm2.svg +0 -0
  504. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_emacs.svg +0 -0
  505. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ember.svg +0 -0
  506. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ensime.svg +0 -0
  507. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eps.svg +0 -0
  508. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_epub.svg +0 -0
  509. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_erb.svg +0 -0
  510. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_erlang.svg +0 -0
  511. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_erlang2.svg +0 -0
  512. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_esbuild.svg +0 -0
  513. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eslint.svg +0 -0
  514. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eslint2.svg +0 -0
  515. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_esphome.svg +0 -0
  516. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_excalidraw.svg +0 -0
  517. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_excel.svg +0 -0
  518. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_excel2.svg +0 -0
  519. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_expo.svg +0 -0
  520. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_falcon.svg +0 -0
  521. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fantasticon.svg +0 -0
  522. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fastly.svg +0 -0
  523. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fauna.svg +0 -0
  524. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_favicon.svg +0 -0
  525. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fbx.svg +0 -0
  526. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_firebase.svg +0 -0
  527. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_firebasehosting.svg +0 -0
  528. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_firebasestorage.svg +0 -0
  529. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_firestore.svg +0 -0
  530. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fitbit.svg +0 -0
  531. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fla.svg +0 -0
  532. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flareact.svg +0 -0
  533. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flash.svg +0 -0
  534. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_floobits.svg +0 -0
  535. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flow.svg +0 -0
  536. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flutter.svg +0 -0
  537. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flutter_package.svg +0 -0
  538. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flyio.svg +0 -0
  539. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_font.svg +0 -0
  540. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_formkit.svg +0 -0
  541. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fortran.svg +0 -0
  542. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fossa.svg +0 -0
  543. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fossil.svg +0 -0
  544. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_freemarker.svg +0 -0
  545. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_frontcommerce.svg +0 -0
  546. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fsharp.svg +0 -0
  547. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fsharp2.svg +0 -0
  548. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fsproj.svg +0 -0
  549. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fthtml.svg +0 -0
  550. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_funding.svg +0 -0
  551. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fusebox.svg +0 -0
  552. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_galen.svg +0 -0
  553. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_galen2.svg +0 -0
  554. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gamemaker.svg +0 -0
  555. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gamemaker2.svg +0 -0
  556. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gamemaker81.svg +0 -0
  557. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gatsby.svg +0 -0
  558. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gcloud.svg +0 -0
  559. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gcode.svg +0 -0
  560. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gdscript.svg +0 -0
  561. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gduid.svg +0 -0
  562. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gemini.svg +0 -0
  563. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_genstat.svg +0 -0
  564. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_geojson.svg +0 -0
  565. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gimp.svg +0 -0
  566. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_git.svg +0 -0
  567. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_git2.svg +0 -0
  568. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gitlab.svg +0 -0
  569. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gitpod.svg +0 -0
  570. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gleam.svg +0 -0
  571. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gleamconfig.svg +0 -0
  572. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glide.svg +0 -0
  573. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glimmer.svg +0 -0
  574. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glitter.svg +0 -0
  575. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glsl.svg +0 -0
  576. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gltf.svg +0 -0
  577. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glyphs.svg +0 -0
  578. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gnu.svg +0 -0
  579. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gnuplot.svg +0 -0
  580. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go.svg +0 -0
  581. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_aqua.svg +0 -0
  582. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_black.svg +0 -0
  583. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_fuchsia.svg +0 -0
  584. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_gopher.svg +0 -0
  585. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_lightblue.svg +0 -0
  586. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_package.svg +0 -0
  587. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_white.svg +0 -0
  588. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_work.svg +0 -0
  589. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_yellow.svg +0 -0
  590. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_goctl.svg +0 -0
  591. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_godot.svg +0 -0
  592. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gpg.svg +0 -0
  593. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gradle.svg +0 -0
  594. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gradle2.svg +0 -0
  595. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_grain.svg +0 -0
  596. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_graphql.svg +0 -0
  597. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_graphql_config.svg +0 -0
  598. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_graphviz.svg +0 -0
  599. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_greenkeeper.svg +0 -0
  600. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gridsome.svg +0 -0
  601. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_grit.svg +0 -0
  602. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_groovy.svg +0 -0
  603. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_groovy2.svg +0 -0
  604. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_grunt.svg +0 -0
  605. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gulp.svg +0 -0
  606. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haml.svg +0 -0
  607. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_handlebars.svg +0 -0
  608. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_handlebars2.svg +0 -0
  609. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_harbour.svg +0 -0
  610. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hardhat.svg +0 -0
  611. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hashicorp.svg +0 -0
  612. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haskell.svg +0 -0
  613. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haskell2.svg +0 -0
  614. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haxe.svg +0 -0
  615. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haxecheckstyle.svg +0 -0
  616. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haxedevelop.svg +0 -0
  617. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_helix.svg +0 -0
  618. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_helm.svg +0 -0
  619. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_histoire.svg +0 -0
  620. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hjson.svg +0 -0
  621. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hlsl.svg +0 -0
  622. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_homeassistant.svg +0 -0
  623. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_horusec.svg +0 -0
  624. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_host.svg +0 -0
  625. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_html.svg +0 -0
  626. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_htmlhint.svg +0 -0
  627. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_htmlvalidate.svg +0 -0
  628. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_http.svg +0 -0
  629. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hugo.svg +0 -0
  630. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_humanstxt.svg +0 -0
  631. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hunspell.svg +0 -0
  632. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_husky.svg +0 -0
  633. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hy.svg +0 -0
  634. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hygen.svg +0 -0
  635. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hypr.svg +0 -0
  636. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_icl.svg +0 -0
  637. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_idris.svg +0 -0
  638. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_idrisbin.svg +0 -0
  639. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_idrispkg.svg +0 -0
  640. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_image.svg +0 -0
  641. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_imba.svg +0 -0
  642. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_inc.svg +0 -0
  643. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_infopath.svg +0 -0
  644. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_informix.svg +0 -0
  645. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ini.svg +0 -0
  646. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ink.svg +0 -0
  647. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_innosetup.svg +0 -0
  648. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_io.svg +0 -0
  649. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_iodine.svg +0 -0
  650. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ionic.svg +0 -0
  651. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jake.svg +0 -0
  652. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_janet.svg +0 -0
  653. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jar.svg +0 -0
  654. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jasmine.svg +0 -0
  655. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_java.svg +0 -0
  656. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jbuilder.svg +0 -0
  657. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jekyll.svg +0 -0
  658. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jenkins.svg +0 -0
  659. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jest.svg +0 -0
  660. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jest_snapshot.svg +0 -0
  661. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jetbrains.svg +0 -0
  662. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jinja.svg +0 -0
  663. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jpm.svg +0 -0
  664. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_js.svg +0 -0
  665. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_js_official.svg +0 -0
  666. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsbeautify.svg +0 -0
  667. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsconfig.svg +0 -0
  668. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jscpd.svg +0 -0
  669. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jshint.svg +0 -0
  670. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsmap.svg +0 -0
  671. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json.svg +0 -0
  672. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json2.svg +0 -0
  673. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json5.svg +0 -0
  674. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json_official.svg +0 -0
  675. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json_schema.svg +0 -0
  676. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsonld.svg +0 -0
  677. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsonnet.svg +0 -0
  678. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsp.svg +0 -0
  679. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsr.svg +0 -0
  680. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jss.svg +0 -0
  681. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_juice.svg +0 -0
  682. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_julia.svg +0 -0
  683. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_julia2.svg +0 -0
  684. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jupyter.svg +0 -0
  685. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_just.svg +0 -0
  686. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_k.svg +0 -0
  687. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_karma.svg +0 -0
  688. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_key.svg +0 -0
  689. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kitchenci.svg +0 -0
  690. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kite.svg +0 -0
  691. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kivy.svg +0 -0
  692. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_knip.svg +0 -0
  693. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kos.svg +0 -0
  694. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kotlin.svg +0 -0
  695. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kusto.svg +0 -0
  696. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_language_configuration.svg +0 -0
  697. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lark.svg +0 -0
  698. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_latino.svg +0 -0
  699. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_layout.svg +0 -0
  700. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lean.svg +0 -0
  701. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_leanconfig.svg +0 -0
  702. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lefthook.svg +0 -0
  703. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lerna.svg +0 -0
  704. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_less.svg +0 -0
  705. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lex.svg +0 -0
  706. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_liara.svg +0 -0
  707. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_base.svg +0 -0
  708. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_calc.svg +0 -0
  709. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_draw.svg +0 -0
  710. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_impress.svg +0 -0
  711. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_math.svg +0 -0
  712. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_writer.svg +0 -0
  713. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_license.svg +0 -0
  714. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_licensebat.svg +0 -0
  715. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_actionscript2.svg +0 -0
  716. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_ada.svg +0 -0
  717. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_agda.svg +0 -0
  718. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_agents.svg +0 -0
  719. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_apl.svg +0 -0
  720. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_astro.svg +0 -0
  721. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_astroconfig.svg +0 -0
  722. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_babel.svg +0 -0
  723. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_babel2.svg +0 -0
  724. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_cabal.svg +0 -0
  725. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_circleci.svg +0 -0
  726. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_cloudfoundry.svg +0 -0
  727. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_codacy.svg +0 -0
  728. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_codeclimate.svg +0 -0
  729. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_codeowners.svg +0 -0
  730. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_config.svg +0 -0
  731. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_copilot.svg +0 -0
  732. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_crystal.svg +0 -0
  733. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_cypress.svg +0 -0
  734. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_cypress_spec.svg +0 -0
  735. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_db.svg +0 -0
  736. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_deno.svg +0 -0
  737. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_dhall.svg +0 -0
  738. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_docpad.svg +0 -0
  739. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_drone.svg +0 -0
  740. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_eas-metadata.svg +0 -0
  741. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_eleventy.svg +0 -0
  742. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_eleventy2.svg +0 -0
  743. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_esphome.svg +0 -0
  744. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_expo.svg +0 -0
  745. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_firebasehosting.svg +0 -0
  746. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_fla.svg +0 -0
  747. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_font.svg +0 -0
  748. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_gamemaker2.svg +0 -0
  749. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_gradle.svg +0 -0
  750. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_hashicorp.svg +0 -0
  751. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_hjson.svg +0 -0
  752. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_ini.svg +0 -0
  753. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_io.svg +0 -0
  754. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_js.svg +0 -0
  755. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_jsconfig.svg +0 -0
  756. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_jsmap.svg +0 -0
  757. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_json.svg +0 -0
  758. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_json5.svg +0 -0
  759. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_json_schema.svg +0 -0
  760. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_jsonld.svg +0 -0
  761. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_kite.svg +0 -0
  762. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_lark.svg +0 -0
  763. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_lean.svg +0 -0
  764. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_leanconfig.svg +0 -0
  765. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_lerna.svg +0 -0
  766. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mailing.svg +0 -0
  767. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_markuplint.svg +0 -0
  768. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mcp.svg +0 -0
  769. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mdx-components.svg +0 -0
  770. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mdx.svg +0 -0
  771. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mlang.svg +0 -0
  772. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mustache.svg +0 -0
  773. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mypy.svg +0 -0
  774. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_neo4j.svg +0 -0
  775. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_netlify.svg +0 -0
  776. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_next.svg +0 -0
  777. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_nim.svg +0 -0
  778. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_nx.svg +0 -0
  779. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_objidconfig.svg +0 -0
  780. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_openHAB.svg +0 -0
  781. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_packship.svg +0 -0
  782. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_pcl.svg +0 -0
  783. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_pnpm.svg +0 -0
  784. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_prettier.svg +0 -0
  785. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_prisma.svg +0 -0
  786. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_purescript.svg +0 -0
  787. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_quasar.svg +0 -0
  788. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_raku.svg +0 -0
  789. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_razzle.svg +0 -0
  790. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_reactrouter.svg +0 -0
  791. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rehype.svg +0 -0
  792. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_remark.svg +0 -0
  793. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_replit.svg +0 -0
  794. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_retext.svg +0 -0
  795. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rome.svg +0 -0
  796. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rubocop.svg +0 -0
  797. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rust.svg +0 -0
  798. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rust_toolchain.svg +0 -0
  799. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_safetensors.svg +0 -0
  800. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_shadcn.svg +0 -0
  801. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_shaderlab.svg +0 -0
  802. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_solidity.svg +0 -0
  803. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_spin.svg +0 -0
  804. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_stylelint.svg +0 -0
  805. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_stylus.svg +0 -0
  806. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_symfony.svg +0 -0
  807. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_systemd.svg +0 -0
  808. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_systemverilog.svg +0 -0
  809. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_testcafe.svg +0 -0
  810. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_testjs.svg +0 -0
  811. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_tex.svg +0 -0
  812. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_tm.svg +0 -0
  813. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_tmux.svg +0 -0
  814. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_todo.svg +0 -0
  815. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_toit.svg +0 -0
  816. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_toml.svg +0 -0
  817. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_toon.svg +0 -0
  818. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_tree.svg +0 -0
  819. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_turbo.svg +0 -0
  820. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_unibeautify.svg +0 -0
  821. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_vash.svg +0 -0
  822. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_vercel.svg +0 -0
  823. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_vsix.svg +0 -0
  824. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_vsixmanifest.svg +0 -0
  825. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_xfl.svg +0 -0
  826. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_xorg.svg +0 -0
  827. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_yaml.svg +0 -0
  828. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_yaml_official.svg +0 -0
  829. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_zeit.svg +0 -0
  830. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lighthouse.svg +0 -0
  831. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lilypond.svg +0 -0
  832. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lime.svg +0 -0
  833. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lintstagedrc.svg +0 -0
  834. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_liquid.svg +0 -0
  835. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lisp.svg +0 -0
  836. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_livescript.svg +0 -0
  837. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lnk.svg +0 -0
  838. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_locale.svg +0 -0
  839. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_log.svg +0 -0
  840. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lolcode.svg +0 -0
  841. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lsl.svg +0 -0
  842. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lua.svg +0 -0
  843. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_luau.svg +0 -0
  844. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lync.svg +0 -0
  845. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mailing.svg +0 -0
  846. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_makefile.svg +0 -0
  847. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_manifest.svg +0 -0
  848. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_manifest_bak.svg +0 -0
  849. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_manifest_skip.svg +0 -0
  850. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_map.svg +0 -0
  851. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mariadb.svg +0 -0
  852. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markdown.svg +0 -0
  853. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markdownlint.svg +0 -0
  854. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markdownlint_ignore.svg +0 -0
  855. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_marko.svg +0 -0
  856. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markojs.svg +0 -0
  857. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markuplint.svg +0 -0
  858. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_master-co.svg +0 -0
  859. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_matlab.svg +0 -0
  860. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_maven.svg +0 -0
  861. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_maxscript.svg +0 -0
  862. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_maya.svg +0 -0
  863. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mcp.svg +0 -0
  864. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mdx-components.svg +0 -0
  865. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mdx.svg +0 -0
  866. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mdxlint.svg +0 -0
  867. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mediawiki.svg +0 -0
  868. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mercurial.svg +0 -0
  869. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mermaid.svg +0 -0
  870. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_meson.svg +0 -0
  871. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_metal.svg +0 -0
  872. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_meteor.svg +0 -0
  873. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_minecraft.svg +0 -0
  874. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mivascript.svg +0 -0
  875. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mjml.svg +0 -0
  876. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mlang.svg +0 -0
  877. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mocha.svg +0 -0
  878. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_modernizr.svg +0 -0
  879. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mojo.svg +0 -0
  880. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mojolicious.svg +0 -0
  881. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_moleculer.svg +0 -0
  882. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mondoo.svg +0 -0
  883. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mongo.svg +0 -0
  884. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_monotone.svg +0 -0
  885. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_motif.svg +0 -0
  886. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mson.svg +0 -0
  887. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mustache.svg +0 -0
  888. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mvt.svg +0 -0
  889. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mvtcss.svg +0 -0
  890. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mvtjs.svg +0 -0
  891. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mypy.svg +0 -0
  892. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mysql.svg +0 -0
  893. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nanostaged.svg +0 -0
  894. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ndst.svg +0 -0
  895. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nearly.svg +0 -0
  896. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_neo4j.svg +0 -0
  897. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_adapter_js.svg +0 -0
  898. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_adapter_ts.svg +0 -0
  899. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_controller_js.svg +0 -0
  900. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_controller_ts.svg +0 -0
  901. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_decorator_js.svg +0 -0
  902. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_decorator_ts.svg +0 -0
  903. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_filter_js.svg +0 -0
  904. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_filter_ts.svg +0 -0
  905. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_gateway_js.svg +0 -0
  906. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_gateway_ts.svg +0 -0
  907. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_guard_js.svg +0 -0
  908. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_guard_ts.svg +0 -0
  909. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_interceptor_js.svg +0 -0
  910. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_interceptor_ts.svg +0 -0
  911. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_middleware_js.svg +0 -0
  912. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_middleware_ts.svg +0 -0
  913. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_module_js.svg +0 -0
  914. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_module_ts.svg +0 -0
  915. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_pipe_js.svg +0 -0
  916. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_pipe_ts.svg +0 -0
  917. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_service_js.svg +0 -0
  918. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_service_ts.svg +0 -0
  919. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nestjs.svg +0 -0
  920. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_netlify.svg +0 -0
  921. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_next.svg +0 -0
  922. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nextflow.svg +0 -0
  923. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_css.svg +0 -0
  924. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_dart.svg +0 -0
  925. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_html.svg +0 -0
  926. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_js.svg +0 -0
  927. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_js2.svg +0 -0
  928. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_less.svg +0 -0
  929. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_sass.svg +0 -0
  930. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_scss.svg +0 -0
  931. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_ts.svg +0 -0
  932. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_ts2.svg +0 -0
  933. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_controller_js.svg +0 -0
  934. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_controller_ts.svg +0 -0
  935. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_dart.svg +0 -0
  936. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_js.svg +0 -0
  937. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_js2.svg +0 -0
  938. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_ts.svg +0 -0
  939. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_ts2.svg +0 -0
  940. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_dart.svg +0 -0
  941. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_js.svg +0 -0
  942. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_ts.svg +0 -0
  943. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_dart.svg +0 -0
  944. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_js.svg +0 -0
  945. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_ts.svg +0 -0
  946. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_dart.svg +0 -0
  947. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_js.svg +0 -0
  948. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_js2.svg +0 -0
  949. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_ts.svg +0 -0
  950. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_ts2.svg +0 -0
  951. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_dart.svg +0 -0
  952. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_js.svg +0 -0
  953. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_js2.svg +0 -0
  954. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_ts.svg +0 -0
  955. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_ts2.svg +0 -0
  956. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_dart.svg +0 -0
  957. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_js.svg +0 -0
  958. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_js2.svg +0 -0
  959. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_ts.svg +0 -0
  960. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_ts2.svg +0 -0
  961. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_dart.svg +0 -0
  962. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_js.svg +0 -0
  963. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_js2.svg +0 -0
  964. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_ts.svg +0 -0
  965. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_ts2.svg +0 -0
  966. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_dart.svg +0 -0
  967. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_js.svg +0 -0
  968. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_js2.svg +0 -0
  969. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_ts.svg +0 -0
  970. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_ts2.svg +0 -0
  971. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_tailwind.svg +0 -0
  972. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nginx.svg +0 -0
  973. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nim.svg +0 -0
  974. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nimble.svg +0 -0
  975. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ninja.svg +0 -0
  976. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nix.svg +0 -0
  977. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_njsproj.svg +0 -0
  978. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_noc.svg +0 -0
  979. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_node.svg +0 -0
  980. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_node2.svg +0 -0
  981. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nodemon.svg +0 -0
  982. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_npm.svg +0 -0
  983. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_npmpackagejsonlint.svg +0 -0
  984. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nsi.svg +0 -0
  985. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nsri-integrity.svg +0 -0
  986. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nsri.svg +0 -0
  987. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nuget.svg +0 -0
  988. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_numpy.svg +0 -0
  989. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nunjucks.svg +0 -0
  990. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nushell.svg +0 -0
  991. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nuxt.svg +0 -0
  992. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nx.svg +0 -0
  993. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nyc.svg +0 -0
  994. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_objectivec.svg +0 -0
  995. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_objectivecpp.svg +0 -0
  996. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_objidconfig.svg +0 -0
  997. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ocaml.svg +0 -0
  998. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ocaml_intf.svg +0 -0
  999. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ogone.svg +0 -0
  1000. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_onenote.svg +0 -0
  1001. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_opam.svg +0 -0
  1002. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_openHAB.svg +0 -0
  1003. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_opencl.svg +0 -0
  1004. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_openscad.svg +0 -0
  1005. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_opentofu.svg +0 -0
  1006. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_org.svg +0 -0
  1007. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_outlook.svg +0 -0
  1008. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ovpn.svg +0 -0
  1009. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_oxc.svg +0 -0
  1010. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_oxlint.svg +0 -0
  1011. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_package.svg +0 -0
  1012. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_packship.svg +0 -0
  1013. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_paket.svg +0 -0
  1014. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pandacss.svg +0 -0
  1015. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_patch.svg +0 -0
  1016. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pcl.svg +0 -0
  1017. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pddl.svg +0 -0
  1018. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pddl_happenings.svg +0 -0
  1019. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pddl_plan.svg +0 -0
  1020. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pdf.svg +0 -0
  1021. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pdf2.svg +0 -0
  1022. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pdm.svg +0 -0
  1023. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_peeky.svg +0 -0
  1024. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_perl.svg +0 -0
  1025. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_perl2.svg +0 -0
  1026. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_perl6.svg +0 -0
  1027. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pgsql.svg +0 -0
  1028. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_photoshop.svg +0 -0
  1029. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_photoshop2.svg +0 -0
  1030. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_php.svg +0 -0
  1031. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_php2.svg +0 -0
  1032. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_php3.svg +0 -0
  1033. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_phpcsfixer.svg +0 -0
  1034. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_phpstan.svg +0 -0
  1035. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_phpunit.svg +0 -0
  1036. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_phraseapp.svg +0 -0
  1037. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pine.svg +0 -0
  1038. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pip.svg +0 -0
  1039. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pipeline.svg +0 -0
  1040. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plantuml.svg +0 -0
  1041. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_platformio.svg +0 -0
  1042. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_playwright.svg +0 -0
  1043. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql.svg +0 -0
  1044. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql_package.svg +0 -0
  1045. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_body.svg +0 -0
  1046. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_header.svg +0 -0
  1047. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_spec.svg +0 -0
  1048. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pm2.svg +0 -0
  1049. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pnpm.svg +0 -0
  1050. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_poedit.svg +0 -0
  1051. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_poetry.svg +0 -0
  1052. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_polyglot.svg +0 -0
  1053. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_polymer.svg +0 -0
  1054. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pony.svg +0 -0
  1055. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_postcss.svg +0 -0
  1056. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_postcssconfig.svg +0 -0
  1057. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_postman.svg +0 -0
  1058. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powerpoint.svg +0 -0
  1059. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powerpoint2.svg +0 -0
  1060. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell.svg +0 -0
  1061. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell2.svg +0 -0
  1062. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_format.svg +0 -0
  1063. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_psd.svg +0 -0
  1064. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_psd2.svg +0 -0
  1065. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_psm.svg +0 -0
  1066. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_psm2.svg +0 -0
  1067. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_types.svg +0 -0
  1068. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_preact.svg +0 -0
  1069. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_precommit.svg +0 -0
  1070. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prettier.svg +0 -0
  1071. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prisma.svg +0 -0
  1072. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prismaconfig.svg +0 -0
  1073. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_processinglang.svg +0 -0
  1074. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_procfile.svg +0 -0
  1075. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_progress.svg +0 -0
  1076. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prolog.svg +0 -0
  1077. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prometheus.svg +0 -0
  1078. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_protobuf.svg +0 -0
  1079. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_protractor.svg +0 -0
  1080. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_publiccode.svg +0 -0
  1081. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_publisher.svg +0 -0
  1082. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pug.svg +0 -0
  1083. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pulumi.svg +0 -0
  1084. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_puppet.svg +0 -0
  1085. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_purescript.svg +0 -0
  1086. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_purgecss.svg +0 -0
  1087. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pyenv.svg +0 -0
  1088. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pyret.svg +0 -0
  1089. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pyscript.svg +0 -0
  1090. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pytest.svg +0 -0
  1091. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_python.svg +0 -0
  1092. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pythowo.svg +0 -0
  1093. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pytyped.svg +0 -0
  1094. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pyup.svg +0 -0
  1095. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_q.svg +0 -0
  1096. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qbs.svg +0 -0
  1097. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qlikview.svg +0 -0
  1098. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qml.svg +0 -0
  1099. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qmldir.svg +0 -0
  1100. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qsharp.svg +0 -0
  1101. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_quasar.svg +0 -0
  1102. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_r.svg +0 -0
  1103. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ra_syntax_tree.svg +0 -0
  1104. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_racket.svg +0 -0
  1105. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rails.svg +0 -0
  1106. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rake.svg +0 -0
  1107. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_raku.svg +0 -0
  1108. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_raml.svg +0 -0
  1109. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_razor.svg +0 -0
  1110. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_razzle.svg +0 -0
  1111. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reactjs.svg +0 -0
  1112. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reactrouter.svg +0 -0
  1113. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reacttemplate.svg +0 -0
  1114. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reactts.svg +0 -0
  1115. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reason.svg +0 -0
  1116. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_red.svg +0 -0
  1117. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_registry.svg +0 -0
  1118. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rego.svg +0 -0
  1119. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rehype.svg +0 -0
  1120. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_remark.svg +0 -0
  1121. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_renovate.svg +0 -0
  1122. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_replit.svg +0 -0
  1123. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rescript.svg +0 -0
  1124. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rest.svg +0 -0
  1125. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_retext.svg +0 -0
  1126. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rexx.svg +0 -0
  1127. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_riot.svg +0 -0
  1128. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ripple.svg +0 -0
  1129. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rmd.svg +0 -0
  1130. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rnc.svg +0 -0
  1131. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_robotframework.svg +0 -0
  1132. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_robots.svg +0 -0
  1133. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rolldown.svg +0 -0
  1134. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rollup.svg +0 -0
  1135. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rome.svg +0 -0
  1136. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ron.svg +0 -0
  1137. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rproj.svg +0 -0
  1138. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rspec.svg +0 -0
  1139. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rss.svg +0 -0
  1140. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rubocop.svg +0 -0
  1141. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ruby.svg +0 -0
  1142. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rust.svg +0 -0
  1143. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rust_toolchain.svg +0 -0
  1144. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_s-lang.svg +0 -0
  1145. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_safetensors.svg +0 -0
  1146. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sails.svg +0 -0
  1147. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_saltstack.svg +0 -0
  1148. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_san.svg +0 -0
  1149. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sapphire_framework_cli.svg +0 -0
  1150. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sas.svg +0 -0
  1151. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sass.svg +0 -0
  1152. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sbt.svg +0 -0
  1153. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_scala.svg +0 -0
  1154. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_scilab.svg +0 -0
  1155. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_script.svg +0 -0
  1156. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_scss.svg +0 -0
  1157. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_scss2.svg +0 -0
  1158. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sdlang.svg +0 -0
  1159. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_search_result.svg +0 -0
  1160. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_seedkit.svg +0 -0
  1161. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sentry.svg +0 -0
  1162. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sequelize.svg +0 -0
  1163. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_serverless.svg +0 -0
  1164. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shadcn.svg +0 -0
  1165. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shaderlab.svg +0 -0
  1166. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shell.svg +0 -0
  1167. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shellcheck.svg +0 -0
  1168. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shuttle.svg +0 -0
  1169. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_silverstripe.svg +0 -0
  1170. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sino.svg +0 -0
  1171. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sitemap.svg +0 -0
  1172. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_siyuan.svg +0 -0
  1173. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sketch.svg +0 -0
  1174. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_skipper.svg +0 -0
  1175. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slang.svg +0 -0
  1176. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slashup.svg +0 -0
  1177. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slice.svg +0 -0
  1178. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slim.svg +0 -0
  1179. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slint.svg +0 -0
  1180. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sln.svg +0 -0
  1181. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sln2.svg +0 -0
  1182. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_smarty.svg +0 -0
  1183. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_smithery.svg +0 -0
  1184. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snakemake.svg +0 -0
  1185. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snapcraft.svg +0 -0
  1186. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snaplet.svg +0 -0
  1187. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snort.svg +0 -0
  1188. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snyk.svg +0 -0
  1189. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_solidarity.svg +0 -0
  1190. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_solidity.svg +0 -0
  1191. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_source.svg +0 -0
  1192. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_spacengine.svg +0 -0
  1193. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sparql.svg +0 -0
  1194. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_spin.svg +0 -0
  1195. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sqf.svg +0 -0
  1196. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sql.svg +0 -0
  1197. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sqlite.svg +0 -0
  1198. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_squirrel.svg +0 -0
  1199. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sss.svg +0 -0
  1200. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sst.svg +0 -0
  1201. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stackblitz.svg +0 -0
  1202. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stan.svg +0 -0
  1203. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stata.svg +0 -0
  1204. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stencil.svg +0 -0
  1205. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_storyboard.svg +0 -0
  1206. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_storybook.svg +0 -0
  1207. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stryker.svg +0 -0
  1208. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stylable.svg +0 -0
  1209. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_style.svg +0 -0
  1210. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_styled.svg +0 -0
  1211. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stylelint.svg +0 -0
  1212. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stylish_haskell.svg +0 -0
  1213. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stylus.svg +0 -0
  1214. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sublime.svg +0 -0
  1215. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_subversion.svg +0 -0
  1216. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_svelte.svg +0 -0
  1217. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_svelteconfig.svg +0 -0
  1218. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_svg.svg +0 -0
  1219. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_svgo.svg +0 -0
  1220. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_swagger.svg +0 -0
  1221. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_swc.svg +0 -0
  1222. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_swift.svg +0 -0
  1223. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_swig.svg +0 -0
  1224. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_symfony.svg +0 -0
  1225. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_syncpack.svg +0 -0
  1226. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_systemd.svg +0 -0
  1227. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_systemverilog.svg +0 -0
  1228. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_t4tt.svg +0 -0
  1229. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tailwind.svg +0 -0
  1230. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tamagui.svg +0 -0
  1231. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_taplo.svg +0 -0
  1232. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_taskfile.svg +0 -0
  1233. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tauri.svg +0 -0
  1234. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tcl.svg +0 -0
  1235. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_teal.svg +0 -0
  1236. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_templ.svg +0 -0
  1237. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tera.svg +0 -0
  1238. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_terraform.svg +0 -0
  1239. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_test.svg +0 -0
  1240. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_testcafe.svg +0 -0
  1241. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_testjs.svg +0 -0
  1242. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_testplane.svg +0 -0
  1243. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_testts.svg +0 -0
  1244. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tex.svg +0 -0
  1245. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_text.svg +0 -0
  1246. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_textile.svg +0 -0
  1247. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tfs.svg +0 -0
  1248. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tiltfile.svg +0 -0
  1249. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tm.svg +0 -0
  1250. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tmux.svg +0 -0
  1251. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_todo.svg +0 -0
  1252. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_toit.svg +0 -0
  1253. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_toml.svg +0 -0
  1254. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_toon.svg +0 -0
  1255. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tox.svg +0 -0
  1256. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_travis.svg +0 -0
  1257. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tree.svg +0 -0
  1258. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tres.svg +0 -0
  1259. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_truffle.svg +0 -0
  1260. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_trunk.svg +0 -0
  1261. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsbuildinfo.svg +0 -0
  1262. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tscn.svg +0 -0
  1263. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsconfig.svg +0 -0
  1264. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsconfig_official.svg +0 -0
  1265. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsdoc.svg +0 -0
  1266. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsdown.svg +0 -0
  1267. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tslint.svg +0 -0
  1268. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tt.svg +0 -0
  1269. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ttcn.svg +0 -0
  1270. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tuc.svg +0 -0
  1271. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_turbo.svg +0 -0
  1272. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_twig.svg +0 -0
  1273. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typedoc.svg +0 -0
  1274. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typescript.svg +0 -0
  1275. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typescript_official.svg +0 -0
  1276. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typescriptdef.svg +0 -0
  1277. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typescriptdef_official.svg +0 -0
  1278. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typo3.svg +0 -0
  1279. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_uiua.svg +0 -0
  1280. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_unibeautify.svg +0 -0
  1281. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_unison.svg +0 -0
  1282. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_unlicense.svg +0 -0
  1283. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_unocss.svg +0 -0
  1284. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_uv.svg +0 -0
  1285. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vagrant.svg +0 -0
  1286. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vala.svg +0 -0
  1287. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vanilla_extract.svg +0 -0
  1288. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vapi.svg +0 -0
  1289. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vapor.svg +0 -0
  1290. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vash.svg +0 -0
  1291. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vb.svg +0 -0
  1292. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vba.svg +0 -0
  1293. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vbhtml.svg +0 -0
  1294. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vbproj.svg +0 -0
  1295. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vcxproj.svg +0 -0
  1296. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_velocity.svg +0 -0
  1297. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vento.svg +0 -0
  1298. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vercel.svg +0 -0
  1299. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_verilog.svg +0 -0
  1300. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vhdl.svg +0 -0
  1301. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_video.svg +0 -0
  1302. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_view.svg +0 -0
  1303. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vim.svg +0 -0
  1304. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vite.svg +0 -0
  1305. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vitest.svg +0 -0
  1306. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vlang.svg +0 -0
  1307. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_volt.svg +0 -0
  1308. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vroom.svg +0 -0
  1309. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode-insiders.svg +0 -0
  1310. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode.svg +0 -0
  1311. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode2.svg +0 -0
  1312. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode3.svg +0 -0
  1313. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode_test.svg +0 -0
  1314. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vsix.svg +0 -0
  1315. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vsixmanifest.svg +0 -0
  1316. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vue.svg +0 -0
  1317. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vueconfig.svg +0 -0
  1318. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vvvvvv.svg +0 -0
  1319. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vyper.svg +0 -0
  1320. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wallaby.svg +0 -0
  1321. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wally.svg +0 -0
  1322. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wasm.svg +0 -0
  1323. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_watchmanconfig.svg +0 -0
  1324. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wdio.svg +0 -0
  1325. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_weblate.svg +0 -0
  1326. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_webpack.svg +0 -0
  1327. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wenyan.svg +0 -0
  1328. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wercker.svg +0 -0
  1329. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wgsl.svg +0 -0
  1330. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wikitext.svg +0 -0
  1331. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_windi.svg +0 -0
  1332. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wit.svg +0 -0
  1333. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wolfram.svg +0 -0
  1334. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_word.svg +0 -0
  1335. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_word2.svg +0 -0
  1336. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wpml.svg +0 -0
  1337. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wurst.svg +0 -0
  1338. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wxml.svg +0 -0
  1339. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wxss.svg +0 -0
  1340. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wxt.svg +0 -0
  1341. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xaml.svg +0 -0
  1342. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xcode.svg +0 -0
  1343. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xfl.svg +0 -0
  1344. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xib.svg +0 -0
  1345. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xliff.svg +0 -0
  1346. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xmake.svg +0 -0
  1347. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xml.svg +0 -0
  1348. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xo.svg +0 -0
  1349. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xorg.svg +0 -0
  1350. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xquery.svg +0 -0
  1351. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xsl.svg +0 -0
  1352. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yacc.svg +0 -0
  1353. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yaml.svg +0 -0
  1354. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yaml_official.svg +0 -0
  1355. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yamllint.svg +0 -0
  1356. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yandex.svg +0 -0
  1357. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yang.svg +0 -0
  1358. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yarn.svg +0 -0
  1359. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yeoman.svg +0 -0
  1360. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_zeit.svg +0 -0
  1361. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_zig.svg +0 -0
  1362. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_zip.svg +0 -0
  1363. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/file_type_zip2.svg +0 -0
  1364. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_android.svg +0 -0
  1365. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_android_opened.svg +0 -0
  1366. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_angular.svg +0 -0
  1367. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_angular_opened.svg +0 -0
  1368. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_apache.svg +0 -0
  1369. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_apache_opened.svg +0 -0
  1370. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_api.svg +0 -0
  1371. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_api_opened.svg +0 -0
  1372. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_app.svg +0 -0
  1373. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_app_opened.svg +0 -0
  1374. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_arangodb.svg +0 -0
  1375. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_arangodb_opened.svg +0 -0
  1376. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_asset.svg +0 -0
  1377. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_asset_opened.svg +0 -0
  1378. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_astro.svg +0 -0
  1379. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_astro_opened.svg +0 -0
  1380. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_audio.svg +0 -0
  1381. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_audio_opened.svg +0 -0
  1382. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_aurelia.svg +0 -0
  1383. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_aurelia_opened.svg +0 -0
  1384. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_aws.svg +0 -0
  1385. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_aws_opened.svg +0 -0
  1386. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_azure.svg +0 -0
  1387. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_azure_opened.svg +0 -0
  1388. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_azurepipelines.svg +0 -0
  1389. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_azurepipelines_opened.svg +0 -0
  1390. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_binary.svg +0 -0
  1391. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_binary_opened.svg +0 -0
  1392. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bloc.svg +0 -0
  1393. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bloc_opened.svg +0 -0
  1394. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_blueprint.svg +0 -0
  1395. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_blueprint_opened.svg +0 -0
  1396. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bot.svg +0 -0
  1397. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bot_opened.svg +0 -0
  1398. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bower.svg +0 -0
  1399. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bower_opened.svg +0 -0
  1400. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_buildkite.svg +0 -0
  1401. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_buildkite_opened.svg +0 -0
  1402. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cake.svg +0 -0
  1403. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cake_opened.svg +0 -0
  1404. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cargo.svg +0 -0
  1405. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cargo_opened.svg +0 -0
  1406. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_certificate.svg +0 -0
  1407. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_certificate_opened.svg +0 -0
  1408. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_changesets.svg +0 -0
  1409. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_changesets_opened.svg +0 -0
  1410. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_chef.svg +0 -0
  1411. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_chef_opened.svg +0 -0
  1412. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_circleci.svg +0 -0
  1413. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_circleci_opened.svg +0 -0
  1414. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_claude.svg +0 -0
  1415. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_claude_opened.svg +0 -0
  1416. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cli.svg +0 -0
  1417. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cli_opened.svg +0 -0
  1418. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_client.svg +0 -0
  1419. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_client_opened.svg +0 -0
  1420. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cloudflare.svg +0 -0
  1421. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cloudflare_opened.svg +0 -0
  1422. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cmake.svg +0 -0
  1423. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cmake_opened.svg +0 -0
  1424. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_common.svg +0 -0
  1425. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_common_opened.svg +0 -0
  1426. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_component.svg +0 -0
  1427. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_component_opened.svg +0 -0
  1428. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_composer.svg +0 -0
  1429. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_composer_opened.svg +0 -0
  1430. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_config.svg +0 -0
  1431. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_config_opened.svg +0 -0
  1432. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_controller.svg +0 -0
  1433. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_controller_opened.svg +0 -0
  1434. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_coverage.svg +0 -0
  1435. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_coverage_opened.svg +0 -0
  1436. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_css.svg +0 -0
  1437. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_css2.svg +0 -0
  1438. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_css2_opened.svg +0 -0
  1439. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_css_opened.svg +0 -0
  1440. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cubit.svg +0 -0
  1441. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cubit_opened.svg +0 -0
  1442. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cursor.svg +0 -0
  1443. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cursor_opened.svg +0 -0
  1444. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cypress.svg +0 -0
  1445. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cypress_opened.svg +0 -0
  1446. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dapr.svg +0 -0
  1447. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dapr_opened.svg +0 -0
  1448. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dart.svg +0 -0
  1449. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dart_opened.svg +0 -0
  1450. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_datadog.svg +0 -0
  1451. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_datadog_opened.svg +0 -0
  1452. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_db.svg +0 -0
  1453. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_db_opened.svg +0 -0
  1454. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_debian.svg +0 -0
  1455. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_debian_opened.svg +0 -0
  1456. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dependabot.svg +0 -0
  1457. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dependabot_opened.svg +0 -0
  1458. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_devcontainer.svg +0 -0
  1459. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_devcontainer_opened.svg +0 -0
  1460. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dist.svg +0 -0
  1461. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dist_opened.svg +0 -0
  1462. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_docker.svg +0 -0
  1463. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_docker_opened.svg +0 -0
  1464. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_docs.svg +0 -0
  1465. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_docs_opened.svg +0 -0
  1466. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_e2e.svg +0 -0
  1467. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_e2e_opened.svg +0 -0
  1468. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_elasticbeanstalk.svg +0 -0
  1469. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_elasticbeanstalk_opened.svg +0 -0
  1470. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_electron.svg +0 -0
  1471. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_electron_opened.svg +0 -0
  1472. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_expo.svg +0 -0
  1473. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_expo_opened.svg +0 -0
  1474. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_favicon.svg +0 -0
  1475. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_favicon_opened.svg +0 -0
  1476. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_flow.svg +0 -0
  1477. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_flow_opened.svg +0 -0
  1478. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_flutter.svg +0 -0
  1479. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_flutter_opened.svg +0 -0
  1480. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_fonts.svg +0 -0
  1481. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_fonts_opened.svg +0 -0
  1482. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_frontcommerce.svg +0 -0
  1483. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_frontcommerce_opened.svg +0 -0
  1484. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gcp.svg +0 -0
  1485. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gcp_opened.svg +0 -0
  1486. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_git.svg +0 -0
  1487. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_git_opened.svg +0 -0
  1488. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_github.svg +0 -0
  1489. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_github_opened.svg +0 -0
  1490. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gitlab.svg +0 -0
  1491. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gitlab_opened.svg +0 -0
  1492. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_godot.svg +0 -0
  1493. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_godot_opened.svg +0 -0
  1494. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gradle.svg +0 -0
  1495. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gradle_opened.svg +0 -0
  1496. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_graphql.svg +0 -0
  1497. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_graphql_opened.svg +0 -0
  1498. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_grunt.svg +0 -0
  1499. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_grunt_opened.svg +0 -0
  1500. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gulp.svg +0 -0
  1501. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gulp_opened.svg +0 -0
  1502. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_haxelib.svg +0 -0
  1503. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_haxelib_opened.svg +0 -0
  1504. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_helper.svg +0 -0
  1505. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_helper_opened.svg +0 -0
  1506. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_histoire.svg +0 -0
  1507. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_histoire_opened.svg +0 -0
  1508. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_hook.svg +0 -0
  1509. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_hook_opened.svg +0 -0
  1510. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_husky.svg +0 -0
  1511. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_husky_opened.svg +0 -0
  1512. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_idea.svg +0 -0
  1513. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_idea_opened.svg +0 -0
  1514. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_images.svg +0 -0
  1515. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_images_opened.svg +0 -0
  1516. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_include.svg +0 -0
  1517. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_include_opened.svg +0 -0
  1518. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_interfaces.svg +0 -0
  1519. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_interfaces_opened.svg +0 -0
  1520. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_ios.svg +0 -0
  1521. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_ios_opened.svg +0 -0
  1522. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_js.svg +0 -0
  1523. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_js_opened.svg +0 -0
  1524. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_json.svg +0 -0
  1525. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_json_official.svg +0 -0
  1526. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_json_official_opened.svg +0 -0
  1527. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_json_opened.svg +0 -0
  1528. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_junie.svg +0 -0
  1529. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_junie_opened.svg +0 -0
  1530. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_kotlin.svg +0 -0
  1531. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_kotlin_opened.svg +0 -0
  1532. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_kubernetes.svg +0 -0
  1533. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_kubernetes_opened.svg +0 -0
  1534. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_less.svg +0 -0
  1535. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_less_opened.svg +0 -0
  1536. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_library.svg +0 -0
  1537. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_library_opened.svg +0 -0
  1538. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_cursor.svg +0 -0
  1539. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_cursor_opened.svg +0 -0
  1540. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_cypress.svg +0 -0
  1541. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_cypress_opened.svg +0 -0
  1542. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_electron.svg +0 -0
  1543. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_electron_opened.svg +0 -0
  1544. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_expo.svg +0 -0
  1545. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_expo_opened.svg +0 -0
  1546. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_fonts.svg +0 -0
  1547. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_fonts_opened.svg +0 -0
  1548. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_gradle.svg +0 -0
  1549. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_gradle_opened.svg +0 -0
  1550. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_meteor.svg +0 -0
  1551. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_meteor_opened.svg +0 -0
  1552. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_mypy.svg +0 -0
  1553. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_mypy_opened.svg +0 -0
  1554. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_mysql.svg +0 -0
  1555. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_mysql_opened.svg +0 -0
  1556. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_node.svg +0 -0
  1557. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_node_opened.svg +0 -0
  1558. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_redux.svg +0 -0
  1559. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_redux_opened.svg +0 -0
  1560. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_sass.svg +0 -0
  1561. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_sass_opened.svg +0 -0
  1562. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_zed.svg +0 -0
  1563. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_zed_opened.svg +0 -0
  1564. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_linux.svg +0 -0
  1565. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_linux_opened.svg +0 -0
  1566. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_locale.svg +0 -0
  1567. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_locale_opened.svg +0 -0
  1568. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_log.svg +0 -0
  1569. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_log_opened.svg +0 -0
  1570. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_macos.svg +0 -0
  1571. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_macos_opened.svg +0 -0
  1572. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mariadb.svg +0 -0
  1573. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mariadb_opened.svg +0 -0
  1574. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_maven.svg +0 -0
  1575. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_maven_opened.svg +0 -0
  1576. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mediawiki.svg +0 -0
  1577. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mediawiki_opened.svg +0 -0
  1578. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_memcached.svg +0 -0
  1579. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_memcached_opened.svg +0 -0
  1580. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_meteor.svg +0 -0
  1581. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_meteor_opened.svg +0 -0
  1582. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_middleware.svg +0 -0
  1583. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_middleware_opened.svg +0 -0
  1584. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_minecraft.svg +0 -0
  1585. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_minecraft_opened.svg +0 -0
  1586. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_minikube.svg +0 -0
  1587. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_minikube_opened.svg +0 -0
  1588. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mjml.svg +0 -0
  1589. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mjml_opened.svg +0 -0
  1590. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mock.svg +0 -0
  1591. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mock_opened.svg +0 -0
  1592. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_model.svg +0 -0
  1593. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_model_opened.svg +0 -0
  1594. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_module.svg +0 -0
  1595. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_module_opened.svg +0 -0
  1596. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mojo.svg +0 -0
  1597. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mojo_opened.svg +0 -0
  1598. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mongodb.svg +0 -0
  1599. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mongodb_opened.svg +0 -0
  1600. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mypy.svg +0 -0
  1601. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mypy_opened.svg +0 -0
  1602. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mysql.svg +0 -0
  1603. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mysql_opened.svg +0 -0
  1604. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_netlify.svg +0 -0
  1605. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_netlify_opened.svg +0 -0
  1606. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_next.svg +0 -0
  1607. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_next_opened.svg +0 -0
  1608. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nginx.svg +0 -0
  1609. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nginx_opened.svg +0 -0
  1610. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nix.svg +0 -0
  1611. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nix_opened.svg +0 -0
  1612. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_node.svg +0 -0
  1613. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_node_opened.svg +0 -0
  1614. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_notebooks.svg +0 -0
  1615. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_notebooks_opened.svg +0 -0
  1616. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_notification.svg +0 -0
  1617. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_notification_opened.svg +0 -0
  1618. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nuget.svg +0 -0
  1619. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nuget_opened.svg +0 -0
  1620. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nuxt.svg +0 -0
  1621. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nuxt_opened.svg +0 -0
  1622. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_package.svg +0 -0
  1623. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_package_opened.svg +0 -0
  1624. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_paket.svg +0 -0
  1625. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_paket_opened.svg +0 -0
  1626. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_php.svg +0 -0
  1627. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_php_opened.svg +0 -0
  1628. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_platformio.svg +0 -0
  1629. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_platformio_opened.svg +0 -0
  1630. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_plugin.svg +0 -0
  1631. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_plugin_opened.svg +0 -0
  1632. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_prisma.svg +0 -0
  1633. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_prisma_opened.svg +0 -0
  1634. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_private.svg +0 -0
  1635. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_private_opened.svg +0 -0
  1636. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_public.svg +0 -0
  1637. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_public_opened.svg +0 -0
  1638. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_pytest.svg +0 -0
  1639. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_pytest_opened.svg +0 -0
  1640. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_python.svg +0 -0
  1641. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_python_opened.svg +0 -0
  1642. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_ravendb.svg +0 -0
  1643. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_ravendb_opened.svg +0 -0
  1644. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_redis.svg +0 -0
  1645. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_redis_opened.svg +0 -0
  1646. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_redux.svg +0 -0
  1647. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_redux_opened.svg +0 -0
  1648. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_route.svg +0 -0
  1649. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_route_opened.svg +0 -0
  1650. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_sass.svg +0 -0
  1651. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_sass_opened.svg +0 -0
  1652. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_script.svg +0 -0
  1653. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_script_opened.svg +0 -0
  1654. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_seedkit.svg +0 -0
  1655. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_seedkit_opened.svg +0 -0
  1656. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_server.svg +0 -0
  1657. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_server_opened.svg +0 -0
  1658. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_services.svg +0 -0
  1659. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_services_opened.svg +0 -0
  1660. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_shared.svg +0 -0
  1661. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_shared_opened.svg +0 -0
  1662. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_snaplet.svg +0 -0
  1663. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_snaplet_opened.svg +0 -0
  1664. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_spin.svg +0 -0
  1665. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_spin_opened.svg +0 -0
  1666. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_src.svg +0 -0
  1667. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_src_opened.svg +0 -0
  1668. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_sso.svg +0 -0
  1669. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_sso_opened.svg +0 -0
  1670. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_story.svg +0 -0
  1671. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_story_opened.svg +0 -0
  1672. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_style.svg +0 -0
  1673. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_style_opened.svg +0 -0
  1674. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_supabase.svg +0 -0
  1675. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_supabase_opened.svg +0 -0
  1676. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_svelte.svg +0 -0
  1677. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_svelte_opened.svg +0 -0
  1678. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_tauri.svg +0 -0
  1679. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_tauri_opened.svg +0 -0
  1680. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_temp.svg +0 -0
  1681. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_temp_opened.svg +0 -0
  1682. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_template.svg +0 -0
  1683. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_template_opened.svg +0 -0
  1684. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_test.svg +0 -0
  1685. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_test_opened.svg +0 -0
  1686. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_theme.svg +0 -0
  1687. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_theme_opened.svg +0 -0
  1688. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_tools.svg +0 -0
  1689. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_tools_opened.svg +0 -0
  1690. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_travis.svg +0 -0
  1691. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_travis_opened.svg +0 -0
  1692. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_trunk.svg +0 -0
  1693. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_trunk_opened.svg +0 -0
  1694. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_turbo.svg +0 -0
  1695. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_turbo_opened.svg +0 -0
  1696. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typescript.svg +0 -0
  1697. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typescript_opened.svg +0 -0
  1698. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typings.svg +0 -0
  1699. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typings2.svg +0 -0
  1700. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typings2_opened.svg +0 -0
  1701. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typings_opened.svg +0 -0
  1702. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vagrant.svg +0 -0
  1703. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vagrant_opened.svg +0 -0
  1704. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vercel.svg +0 -0
  1705. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vercel_opened.svg +0 -0
  1706. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_video.svg +0 -0
  1707. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_video_opened.svg +0 -0
  1708. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_view.svg +0 -0
  1709. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_view_opened.svg +0 -0
  1710. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vitepress.svg +0 -0
  1711. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vitepress_opened.svg +0 -0
  1712. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vs.svg +0 -0
  1713. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vs2.svg +0 -0
  1714. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vs2_opened.svg +0 -0
  1715. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vs_opened.svg +0 -0
  1716. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode.svg +0 -0
  1717. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode2.svg +0 -0
  1718. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode2_opened.svg +0 -0
  1719. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode3.svg +0 -0
  1720. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode3_opened.svg +0 -0
  1721. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_opened.svg +0 -0
  1722. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test.svg +0 -0
  1723. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test2.svg +0 -0
  1724. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test2_opened.svg +0 -0
  1725. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test3.svg +0 -0
  1726. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test3_opened.svg +0 -0
  1727. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test_opened.svg +0 -0
  1728. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_wasm.svg +0 -0
  1729. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_wasm_opened.svg +0 -0
  1730. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_webpack.svg +0 -0
  1731. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_webpack_opened.svg +0 -0
  1732. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_windows.svg +0 -0
  1733. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_windows_opened.svg +0 -0
  1734. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_windsurf.svg +0 -0
  1735. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_windsurf_opened.svg +0 -0
  1736. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_wit.svg +0 -0
  1737. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_wit_opened.svg +0 -0
  1738. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_www.svg +0 -0
  1739. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_www_opened.svg +0 -0
  1740. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_yarn.svg +0 -0
  1741. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_yarn_opened.svg +0 -0
  1742. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_zed.svg +0 -0
  1743. /package/static/{e30ed59 → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_zed_opened.svg +0 -0
  1744. /package/static/{e30ed59 → 101c327}/fonts/FiraCode-VariableFont.ttf +0 -0
  1745. /package/static/{e30ed59 → 101c327}/icons/add.svg +0 -0
  1746. /package/static/{e30ed59 → 101c327}/icons/arrow-down.svg +0 -0
  1747. /package/static/{e30ed59 → 101c327}/icons/arrow-left.svg +0 -0
  1748. /package/static/{e30ed59 → 101c327}/icons/arrow-right.svg +0 -0
  1749. /package/static/{e30ed59 → 101c327}/icons/arrow-up.svg +0 -0
  1750. /package/static/{e30ed59 → 101c327}/icons/blank.svg +0 -0
  1751. /package/static/{e30ed59 → 101c327}/icons/book.svg +0 -0
  1752. /package/static/{e30ed59 → 101c327}/icons/case-sensitive.svg +0 -0
  1753. /package/static/{e30ed59 → 101c327}/icons/check.svg +0 -0
  1754. /package/static/{e30ed59 → 101c327}/icons/chevron-down.svg +0 -0
  1755. /package/static/{e30ed59 → 101c327}/icons/chevron-left.svg +0 -0
  1756. /package/static/{e30ed59 → 101c327}/icons/chevron-right.svg +0 -0
  1757. /package/static/{e30ed59 → 101c327}/icons/chevron-up.svg +0 -0
  1758. /package/static/{e30ed59 → 101c327}/icons/chrome-close.svg +0 -0
  1759. /package/static/{e30ed59 → 101c327}/icons/chrome-maximize.svg +0 -0
  1760. /package/static/{e30ed59 → 101c327}/icons/chrome-minimize.svg +0 -0
  1761. /package/static/{e30ed59 → 101c327}/icons/chrome-restore.svg +0 -0
  1762. /package/static/{e30ed59 → 101c327}/icons/circle-filled.svg +0 -0
  1763. /package/static/{e30ed59 → 101c327}/icons/clear-all.svg +0 -0
  1764. /package/static/{e30ed59 → 101c327}/icons/close.svg +0 -0
  1765. /package/static/{e30ed59 → 101c327}/icons/cloud.svg +0 -0
  1766. /package/static/{e30ed59 → 101c327}/icons/collapse-all.svg +0 -0
  1767. /package/static/{e30ed59 → 101c327}/icons/debug-all.svg +0 -0
  1768. /package/static/{e30ed59 → 101c327}/icons/debug-alt-2.svg +0 -0
  1769. /package/static/{e30ed59 → 101c327}/icons/debug-alt-small.svg +0 -0
  1770. /package/static/{e30ed59 → 101c327}/icons/debug-alt.svg +0 -0
  1771. /package/static/{e30ed59 → 101c327}/icons/debug-breakpoint-conditional-unverified.svg +0 -0
  1772. /package/static/{e30ed59 → 101c327}/icons/debug-breakpoint-conditional.svg +0 -0
  1773. /package/static/{e30ed59 → 101c327}/icons/debug-breakpoint-data-unverified.svg +0 -0
  1774. /package/static/{e30ed59 → 101c327}/icons/debug-breakpoint-data.svg +0 -0
  1775. /package/static/{e30ed59 → 101c327}/icons/debug-breakpoint-function-unverified.svg +0 -0
  1776. /package/static/{e30ed59 → 101c327}/icons/debug-breakpoint-function.svg +0 -0
  1777. /package/static/{e30ed59 → 101c327}/icons/debug-breakpoint-log-unverified.svg +0 -0
  1778. /package/static/{e30ed59 → 101c327}/icons/debug-breakpoint-log.svg +0 -0
  1779. /package/static/{e30ed59 → 101c327}/icons/debug-breakpoint-unsupported.svg +0 -0
  1780. /package/static/{e30ed59 → 101c327}/icons/debug-console.svg +0 -0
  1781. /package/static/{e30ed59 → 101c327}/icons/debug-continue-small.svg +0 -0
  1782. /package/static/{e30ed59 → 101c327}/icons/debug-continue.svg +0 -0
  1783. /package/static/{e30ed59 → 101c327}/icons/debug-coverage.svg +0 -0
  1784. /package/static/{e30ed59 → 101c327}/icons/debug-disconnect.svg +0 -0
  1785. /package/static/{e30ed59 → 101c327}/icons/debug-line-by-line.svg +0 -0
  1786. /package/static/{e30ed59 → 101c327}/icons/debug-pause.svg +0 -0
  1787. /package/static/{e30ed59 → 101c327}/icons/debug-rerun.svg +0 -0
  1788. /package/static/{e30ed59 → 101c327}/icons/debug-restart-frame.svg +0 -0
  1789. /package/static/{e30ed59 → 101c327}/icons/debug-restart.svg +0 -0
  1790. /package/static/{e30ed59 → 101c327}/icons/debug-reverse-continue.svg +0 -0
  1791. /package/static/{e30ed59 → 101c327}/icons/debug-stackframe-active.svg +0 -0
  1792. /package/static/{e30ed59 → 101c327}/icons/debug-stackframe.svg +0 -0
  1793. /package/static/{e30ed59 → 101c327}/icons/debug-start.svg +0 -0
  1794. /package/static/{e30ed59 → 101c327}/icons/debug-step-back.svg +0 -0
  1795. /package/static/{e30ed59 → 101c327}/icons/debug-step-into.svg +0 -0
  1796. /package/static/{e30ed59 → 101c327}/icons/debug-step-out.svg +0 -0
  1797. /package/static/{e30ed59 → 101c327}/icons/debug-step-over.svg +0 -0
  1798. /package/static/{e30ed59 → 101c327}/icons/debug-stop.svg +0 -0
  1799. /package/static/{e30ed59 → 101c327}/icons/debug.svg +0 -0
  1800. /package/static/{e30ed59 → 101c327}/icons/discard.svg +0 -0
  1801. /package/static/{e30ed59 → 101c327}/icons/edit.svg +0 -0
  1802. /package/static/{e30ed59 → 101c327}/icons/ellipsis.svg +0 -0
  1803. /package/static/{e30ed59 → 101c327}/icons/error.svg +0 -0
  1804. /package/static/{e30ed59 → 101c327}/icons/exclude.svg +0 -0
  1805. /package/static/{e30ed59 → 101c327}/icons/extensionDefaultIcon.png +0 -0
  1806. /package/static/{e30ed59 → 101c327}/icons/extensions.svg +0 -0
  1807. /package/static/{e30ed59 → 101c327}/icons/files.svg +0 -0
  1808. /package/static/{e30ed59 → 101c327}/icons/filter.svg +0 -0
  1809. /package/static/{e30ed59 → 101c327}/icons/go-to-file.svg +0 -0
  1810. /package/static/{e30ed59 → 101c327}/icons/icon-close.svg +0 -0
  1811. /package/static/{e30ed59 → 101c327}/icons/icon-source-control.svg +0 -0
  1812. /package/static/{e30ed59 → 101c327}/icons/icon-sync.svg +0 -0
  1813. /package/static/{e30ed59 → 101c327}/icons/icon.png +0 -0
  1814. /package/static/{e30ed59 → 101c327}/icons/icon.svg +0 -0
  1815. /package/static/{e30ed59 → 101c327}/icons/info.svg +0 -0
  1816. /package/static/{e30ed59 → 101c327}/icons/language-icon.svg +0 -0
  1817. /package/static/{e30ed59 → 101c327}/icons/link-external.svg +0 -0
  1818. /package/static/{e30ed59 → 101c327}/icons/list-flat.svg +0 -0
  1819. /package/static/{e30ed59 → 101c327}/icons/list-tree.svg +0 -0
  1820. /package/static/{e30ed59 → 101c327}/icons/new-file.svg +0 -0
  1821. /package/static/{e30ed59 → 101c327}/icons/new-folder.svg +0 -0
  1822. /package/static/{e30ed59 → 101c327}/icons/newline.svg +0 -0
  1823. /package/static/{e30ed59 → 101c327}/icons/open-preview.svg +0 -0
  1824. /package/static/{e30ed59 → 101c327}/icons/play.svg +0 -0
  1825. /package/static/{e30ed59 → 101c327}/icons/preserve-case.svg +0 -0
  1826. /package/static/{e30ed59 → 101c327}/icons/progress.svg +0 -0
  1827. /package/static/{e30ed59 → 101c327}/icons/pwa-icon-192.png +0 -0
  1828. /package/static/{e30ed59 → 101c327}/icons/pwa-icon-512.png +0 -0
  1829. /package/static/{e30ed59 → 101c327}/icons/record-keys.svg +0 -0
  1830. /package/static/{e30ed59 → 101c327}/icons/refresh.svg +0 -0
  1831. /package/static/{e30ed59 → 101c327}/icons/regex.svg +0 -0
  1832. /package/static/{e30ed59 → 101c327}/icons/remove.svg +0 -0
  1833. /package/static/{e30ed59 → 101c327}/icons/replace-all.svg +0 -0
  1834. /package/static/{e30ed59 → 101c327}/icons/replace.svg +0 -0
  1835. /package/static/{e30ed59 → 101c327}/icons/repo.svg +0 -0
  1836. /package/static/{e30ed59 → 101c327}/icons/run-all.svg +0 -0
  1837. /package/static/{e30ed59 → 101c327}/icons/search.svg +0 -0
  1838. /package/static/{e30ed59 → 101c327}/icons/send.svg +0 -0
  1839. /package/static/{e30ed59 → 101c327}/icons/settings-gear.svg +0 -0
  1840. /package/static/{e30ed59 → 101c327}/icons/sort-precedence.svg +0 -0
  1841. /package/static/{e30ed59 → 101c327}/icons/source-control.svg +0 -0
  1842. /package/static/{e30ed59 → 101c327}/icons/split-horizontal.svg +0 -0
  1843. /package/static/{e30ed59 → 101c327}/icons/squiggly-error.svg +0 -0
  1844. /package/static/{e30ed59 → 101c327}/icons/squiggly-warning.svg +0 -0
  1845. /package/static/{e30ed59 → 101c327}/icons/symbol-array.svg +0 -0
  1846. /package/static/{e30ed59 → 101c327}/icons/symbol-boolean.svg +0 -0
  1847. /package/static/{e30ed59 → 101c327}/icons/symbol-class.svg +0 -0
  1848. /package/static/{e30ed59 → 101c327}/icons/symbol-color.svg +0 -0
  1849. /package/static/{e30ed59 → 101c327}/icons/symbol-constant.svg +0 -0
  1850. /package/static/{e30ed59 → 101c327}/icons/symbol-enum-member.svg +0 -0
  1851. /package/static/{e30ed59 → 101c327}/icons/symbol-enum.svg +0 -0
  1852. /package/static/{e30ed59 → 101c327}/icons/symbol-event.svg +0 -0
  1853. /package/static/{e30ed59 → 101c327}/icons/symbol-field.svg +0 -0
  1854. /package/static/{e30ed59 → 101c327}/icons/symbol-file.svg +0 -0
  1855. /package/static/{e30ed59 → 101c327}/icons/symbol-interface.svg +0 -0
  1856. /package/static/{e30ed59 → 101c327}/icons/symbol-key.svg +0 -0
  1857. /package/static/{e30ed59 → 101c327}/icons/symbol-keyword.svg +0 -0
  1858. /package/static/{e30ed59 → 101c327}/icons/symbol-method.svg +0 -0
  1859. /package/static/{e30ed59 → 101c327}/icons/symbol-misc.svg +0 -0
  1860. /package/static/{e30ed59 → 101c327}/icons/symbol-namespace.svg +0 -0
  1861. /package/static/{e30ed59 → 101c327}/icons/symbol-numeric.svg +0 -0
  1862. /package/static/{e30ed59 → 101c327}/icons/symbol-operator.svg +0 -0
  1863. /package/static/{e30ed59 → 101c327}/icons/symbol-parameter.svg +0 -0
  1864. /package/static/{e30ed59 → 101c327}/icons/symbol-property.svg +0 -0
  1865. /package/static/{e30ed59 → 101c327}/icons/symbol-ruler.svg +0 -0
  1866. /package/static/{e30ed59 → 101c327}/icons/symbol-snippet.svg +0 -0
  1867. /package/static/{e30ed59 → 101c327}/icons/symbol-string.svg +0 -0
  1868. /package/static/{e30ed59 → 101c327}/icons/symbol-structure.svg +0 -0
  1869. /package/static/{e30ed59 → 101c327}/icons/symbol-variable.svg +0 -0
  1870. /package/static/{e30ed59 → 101c327}/icons/tag.svg +0 -0
  1871. /package/static/{e30ed59 → 101c327}/icons/terminal-bash.svg +0 -0
  1872. /package/static/{e30ed59 → 101c327}/icons/terminal.svg +0 -0
  1873. /package/static/{e30ed59 → 101c327}/icons/theme-icon.png +0 -0
  1874. /package/static/{e30ed59 → 101c327}/icons/trash.svg +0 -0
  1875. /package/static/{e30ed59 → 101c327}/icons/triangle-down.svg +0 -0
  1876. /package/static/{e30ed59 → 101c327}/icons/triangle-left.svg +0 -0
  1877. /package/static/{e30ed59 → 101c327}/icons/triangle-right.svg +0 -0
  1878. /package/static/{e30ed59 → 101c327}/icons/triangle-up.svg +0 -0
  1879. /package/static/{e30ed59 → 101c327}/icons/warning.svg +0 -0
  1880. /package/static/{e30ed59 → 101c327}/icons/whole-word.svg +0 -0
  1881. /package/static/{e30ed59 → 101c327}/icons/zoom-in.svg +0 -0
  1882. /package/static/{e30ed59 → 101c327}/icons/zoom-out.svg +0 -0
  1883. /package/static/{e30ed59 → 101c327}/js/babel-parser.js +0 -0
  1884. /package/static/{e30ed59 → 101c327}/js/ky.js +0 -0
  1885. /package/static/{e30ed59 → 101c327}/js/lvce-editor-import-script.js +0 -0
  1886. /package/static/{e30ed59 → 101c327}/js/lvce-editor-ipc.js +0 -0
  1887. /package/static/{e30ed59 → 101c327}/js/lvce-editor-json-rpc.js +0 -0
  1888. /package/static/{e30ed59 → 101c327}/js/lvce-editor-rpc.js +0 -0
  1889. /package/static/{e30ed59 → 101c327}/js/lvce-editor-verror.js +0 -0
  1890. /package/static/{e30ed59 → 101c327}/js/p-min-delay.js +0 -0
  1891. /package/static/{e30ed59 → 101c327}/js/pretty-bytes.js +0 -0
  1892. /package/static/{e30ed59 → 101c327}/js/preview-injected.js +0 -0
  1893. /package/static/{e30ed59 → 101c327}/js/yoctodelay.js +0 -0
  1894. /package/static/{e30ed59 → 101c327}/lib-css/termterm.css +0 -0
  1895. /package/static/{e30ed59 → 101c327}/packages/activity-bar-worker/dist/activityBarWorkerMain.js +0 -0
  1896. /package/static/{e30ed59 → 101c327}/packages/chat-coordinator-worker/dist/chatCoordinatorWorkerMain.js +0 -0
  1897. /package/static/{e30ed59 → 101c327}/packages/chat-debug-view/dist/chatDebugViewWorkerMain.js +0 -0
  1898. /package/static/{e30ed59 → 101c327}/packages/chat-math-worker/dist/chatMathWorkerMain.js +0 -0
  1899. /package/static/{e30ed59 → 101c327}/packages/chat-network-worker/dist/chatNetworkWorkerMain.js +0 -0
  1900. /package/static/{e30ed59 → 101c327}/packages/chat-storage-worker/dist/chatStorageWorkerMain.js +0 -0
  1901. /package/static/{e30ed59 → 101c327}/packages/chat-tool-worker/dist/chatToolWorkerMain.js +0 -0
  1902. /package/static/{e30ed59 → 101c327}/packages/clipboard-worker/dist/clipBoardWorkerMain.js +0 -0
  1903. /package/static/{e30ed59 → 101c327}/packages/color-picker-worker/dist/colorPickerWorkerMain.js +0 -0
  1904. /package/static/{e30ed59 → 101c327}/packages/completion-worker/dist/completionWorkerMain.js +0 -0
  1905. /package/static/{e30ed59 → 101c327}/packages/debug-worker/dist/debugWorkerMain.js +0 -0
  1906. /package/static/{e30ed59 → 101c327}/packages/editor-worker/dist/editorWorkerMain.js +0 -0
  1907. /package/static/{e30ed59 → 101c327}/packages/embeds-worker/dist/embedsWorkerMain.js +0 -0
  1908. /package/static/{e30ed59 → 101c327}/packages/error-worker/dist/errorWorkerMain.js +0 -0
  1909. /package/static/{e30ed59 → 101c327}/packages/explorer-worker/dist/explorerViewWorkerMain.js +0 -0
  1910. /package/static/{e30ed59 → 101c327}/packages/extension-detail-view-worker/dist/extensionDetailViewWorkerMain.js +0 -0
  1911. /package/static/{e30ed59 → 101c327}/packages/extension-host-sub-worker/dist/extensionHostSubWorkerMain.js +0 -0
  1912. /package/static/{e30ed59 → 101c327}/packages/extension-management-worker/dist/extensionManagementWorkerMain.js +0 -0
  1913. /package/static/{e30ed59 → 101c327}/packages/extension-search-view-worker/dist/extensionSearchViewWorkerMain.js +0 -0
  1914. /package/static/{e30ed59 → 101c327}/packages/file-search-worker/dist/fileSearchWorkerMain.js +0 -0
  1915. /package/static/{e30ed59 → 101c327}/packages/file-system-worker/dist/fileSystemWorkerMain.js +0 -0
  1916. /package/static/{e30ed59 → 101c327}/packages/find-widget-worker/dist/findWidgetWorkerMain.js +0 -0
  1917. /package/static/{e30ed59 → 101c327}/packages/hover-worker/dist/hoverWorkerMain.js +0 -0
  1918. /package/static/{e30ed59 → 101c327}/packages/icon-theme-worker/dist/iconThemeWorkerMain.js +0 -0
  1919. /package/static/{e30ed59 → 101c327}/packages/iframe-inspector/dist/iframeInspectorWorkerMain.js +0 -0
  1920. /package/static/{e30ed59 → 101c327}/packages/iframe-worker/dist/iframeWorkerMain.js +0 -0
  1921. /package/static/{e30ed59 → 101c327}/packages/keybindings-view-worker/dist/keyBindingsViewWorkerMain.js +0 -0
  1922. /package/static/{e30ed59 → 101c327}/packages/language-models-view/dist/languageModelsViewMain.js +0 -0
  1923. /package/static/{e30ed59 → 101c327}/packages/main-area-worker/dist/mainAreaWorkerMain.js +0 -0
  1924. /package/static/{e30ed59 → 101c327}/packages/markdown-worker/dist/markdownWorkerMain.js +0 -0
  1925. /package/static/{e30ed59 → 101c327}/packages/menu-worker/dist/menuWorkerMain.js +0 -0
  1926. /package/static/{e30ed59 → 101c327}/packages/opener-worker/dist/openerWorkerMain.js +0 -0
  1927. /package/static/{e30ed59 → 101c327}/packages/output-view/dist/outputViewWorkerMain.js +0 -0
  1928. /package/static/{e30ed59 → 101c327}/packages/panel-worker/dist/panelWorkerMain.js +0 -0
  1929. /package/static/{e30ed59 → 101c327}/packages/preload/dist/index.js +0 -0
  1930. /package/static/{e30ed59 → 101c327}/packages/preview-sandbox-worker/dist/previewSandBoxWorkerMain.js +0 -0
  1931. /package/static/{e30ed59 → 101c327}/packages/preview-worker/dist/previewWorkerMain.js +0 -0
  1932. /package/static/{e30ed59 → 101c327}/packages/problems-view/dist/problemsViewWorkerMain.js +0 -0
  1933. /package/static/{e30ed59 → 101c327}/packages/quick-pick-worker/dist/quickPickWorkerMain.js +0 -0
  1934. /package/static/{e30ed59 → 101c327}/packages/references-view/dist/referencesViewWorkerMain.js +0 -0
  1935. /package/static/{e30ed59 → 101c327}/packages/rename-worker/dist/renameWorkerMain.js +0 -0
  1936. /package/static/{e30ed59 → 101c327}/packages/renderer-process/LICENSE +0 -0
  1937. /package/static/{e30ed59 → 101c327}/packages/renderer-process/README.md +0 -0
  1938. /package/static/{e30ed59 → 101c327}/packages/settings-view/dist/settingsViewWorkerMain.js +0 -0
  1939. /package/static/{e30ed59 → 101c327}/packages/source-action-worker/dist/sourceActionWorkerMain.js +0 -0
  1940. /package/static/{e30ed59 → 101c327}/packages/source-control-worker/dist/sourceControlWorkerMain.js +0 -0
  1941. /package/static/{e30ed59 → 101c327}/packages/syntax-highlighting-worker/dist/syntaxHighlightingWorkerMain.js +0 -0
  1942. /package/static/{e30ed59 → 101c327}/packages/terminal-worker/dist/terminalWorkerMain.js +0 -0
  1943. /package/static/{e30ed59 → 101c327}/packages/test-worker/dist/testWorkerMain.js +0 -0
  1944. /package/static/{e30ed59 → 101c327}/packages/text-measurement-worker/dist/textMeasurementWorkerMain.js +0 -0
  1945. /package/static/{e30ed59 → 101c327}/packages/text-search-worker/dist/textSearchWorkerMain.js +0 -0
  1946. /package/static/{e30ed59 → 101c327}/packages/update-worker/dist/updateWorkerMain.js +0 -0
  1947. /package/static/{e30ed59 → 101c327}/playground/languages/index.cpp +0 -0
  1948. /package/static/{e30ed59 → 101c327}/playground/languages/index.css +0 -0
  1949. /package/static/{e30ed59 → 101c327}/playground/languages/index.csv +0 -0
  1950. /package/static/{e30ed59 → 101c327}/playground/languages/index.dart +0 -0
  1951. /package/static/{e30ed59 → 101c327}/playground/languages/index.env +0 -0
  1952. /package/static/{e30ed59 → 101c327}/playground/languages/index.ex +0 -0
  1953. /package/static/{e30ed59 → 101c327}/playground/languages/index.html +0 -0
  1954. /package/static/{e30ed59 → 101c327}/playground/languages/index.java +0 -0
  1955. /package/static/{e30ed59 → 101c327}/playground/languages/index.jl +0 -0
  1956. /package/static/{e30ed59 → 101c327}/playground/languages/index.js +0 -0
  1957. /package/static/{e30ed59 → 101c327}/playground/languages/index.json +0 -0
  1958. /package/static/{e30ed59 → 101c327}/playground/languages/index.kt +0 -0
  1959. /package/static/{e30ed59 → 101c327}/playground/languages/index.pl +0 -0
  1960. /package/static/{e30ed59 → 101c327}/playground/languages/index.py +0 -0
  1961. /package/static/{e30ed59 → 101c327}/playground/languages/index.ts +0 -0
  1962. /package/static/{e30ed59 → 101c327}/playground/languages/scrolling.txt +0 -0
  1963. /package/static/{e30ed59 → 101c327}/playground/languages/tsconfig.json +0 -0
  1964. /package/static/{e30ed59 → 101c327}/playground/sample-folder/a.txt +0 -0
  1965. /package/static/{e30ed59 → 101c327}/playground/sample-folder/b.txt +0 -0
  1966. /package/static/{e30ed59 → 101c327}/playground/sample-folder/c.txt +0 -0
@@ -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;
@@ -1307,6 +1311,10 @@ const showContextMenu2 = async (uid, menuId, x, y, args) => {
1307
1311
  number(y);
1308
1312
  await invoke('ContextMenu.show2', uid, menuId, x, y, args);
1309
1313
  };
1314
+ const getFileHandles = async fileIds => {
1315
+ const files = await invoke('FileSystemHandle.getFileHandles', fileIds);
1316
+ return files;
1317
+ };
1310
1318
  const sendMessagePortToClipBoardWorker$1 = async (port, rpcId) => {
1311
1319
  const command = 'ClipBoard.handleMessagePort';
1312
1320
  await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToClipBoardWorker', port, command, rpcId);
@@ -1485,15 +1493,68 @@ const terminate = () => {
1485
1493
  globalThis.close();
1486
1494
  };
1487
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
+
1488
1553
  const estimateComposerHeight = (value, lineHeight) => {
1489
1554
  const lineCount = value.split('\n').length;
1490
1555
  return lineCount * lineHeight + 8;
1491
1556
  };
1492
1557
 
1493
- const getComposerWidth = width => {
1494
- return Math.max(1, width - 32);
1495
- };
1496
-
1497
1558
  const getMaxComposerHeight = (lineHeight, maxComposerRows) => {
1498
1559
  return lineHeight * Math.max(1, maxComposerRows) + 8;
1499
1560
  };
@@ -1552,10 +1613,12 @@ const getNextChatHistoryState = async (state, direction) => {
1552
1613
  const nextDraft = state.chatInputHistoryIndex === -1 ? state.composerValue : state.chatInputHistoryDraft;
1553
1614
  const nextComposerValue = getHistoryValueForIndex(state.chatInputHistory, nextIndex);
1554
1615
  const composerHeight = await getComposerHeight(state, nextComposerValue);
1616
+ const composerAttachmentsHeight = getComposerAttachmentsHeight(state.composerAttachments, state.width);
1555
1617
  return {
1556
1618
  ...state,
1557
1619
  chatInputHistoryDraft: nextDraft,
1558
1620
  chatInputHistoryIndex: nextIndex,
1621
+ composerAttachmentsHeight,
1559
1622
  composerHeight,
1560
1623
  composerSelectionEnd: nextComposerValue.length,
1561
1624
  composerSelectionStart: nextComposerValue.length,
@@ -1569,9 +1632,11 @@ const getNextChatHistoryState = async (state, direction) => {
1569
1632
  const nextIndex = state.chatInputHistoryIndex - 1;
1570
1633
  if (nextIndex === -1) {
1571
1634
  const composerHeight = await getComposerHeight(state, state.chatInputHistoryDraft);
1635
+ const composerAttachmentsHeight = getComposerAttachmentsHeight(state.composerAttachments, state.width);
1572
1636
  return {
1573
1637
  ...state,
1574
1638
  chatInputHistoryIndex: -1,
1639
+ composerAttachmentsHeight,
1575
1640
  composerHeight,
1576
1641
  composerSelectionEnd: state.chatInputHistoryDraft.length,
1577
1642
  composerSelectionStart: state.chatInputHistoryDraft.length,
@@ -1581,9 +1646,11 @@ const getNextChatHistoryState = async (state, direction) => {
1581
1646
  }
1582
1647
  const nextComposerValue = getHistoryValueForIndex(state.chatInputHistory, nextIndex);
1583
1648
  const composerHeight = await getComposerHeight(state, nextComposerValue);
1649
+ const composerAttachmentsHeight = getComposerAttachmentsHeight(state.composerAttachments, state.width);
1584
1650
  return {
1585
1651
  ...state,
1586
1652
  chatInputHistoryIndex: nextIndex,
1653
+ composerAttachmentsHeight,
1587
1654
  composerHeight,
1588
1655
  composerSelectionEnd: nextComposerValue.length,
1589
1656
  composerSelectionStart: nextComposerValue.length,
@@ -1783,12 +1850,14 @@ const Debug = 'Debug';
1783
1850
  const BackToChats = 'Back to chats';
1784
1851
  const BackToChatList = 'Back to chat list';
1785
1852
  const Search$1 = 'Search';
1853
+ const ScrollDown$1 = 'Scroll down';
1786
1854
  const SearchModels = 'Search models';
1787
1855
  const SearchChats = 'Search chats';
1788
1856
  const Paste = 'Paste';
1789
1857
  const Rename = 'Rename';
1790
1858
  const Archive = 'Archive';
1791
1859
  const AddProjectChat = 'Add Project';
1860
+ const RemoveProject = 'Remove Project';
1792
1861
  const Settings$1 = 'Settings';
1793
1862
  const LoginToBackend = 'Login to backend';
1794
1863
  const LogoutFromBackend = 'Logout from backend';
@@ -1801,12 +1870,19 @@ const StartConversationByTypingBelow = 'Start a conversation by typing below.';
1801
1870
  const NoMatchingModelsFound = 'No matching models have been found.';
1802
1871
  const ComposePlaceholder = 'Type your message. Enter to send.';
1803
1872
  const AttachImageAsContext = 'Attach Image as Context';
1804
- const ImageCouldNotBeLoaded = 'image could not be loaded';
1873
+ const OpenImageInNewTab = 'Open image in new tab';
1874
+ const RemoveAttachment = 'Remove attachment';
1875
+ const ImageCouldNotBeLoaded = 'Image preview could not be loaded';
1805
1876
  const OpenRouterApiKeyPlaceholder = 'Enter OpenRouter API key';
1806
1877
  const OpenApiApiKeyPlaceholder = 'Enter OpenAI API key';
1807
1878
  const SendMessage = 'Send message';
1808
1879
  const StartVoiceDictation = 'Start voice dictation';
1809
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';
1810
1886
  const CreatePullRequest$2 = 'Create PR';
1811
1887
  const Save = 'Save';
1812
1888
  const Saving = 'Saving...';
@@ -1841,6 +1917,9 @@ const newChat = () => {
1841
1917
  const addProject = () => {
1842
1918
  return i18nString(AddProjectChat);
1843
1919
  };
1920
+ const removeProject = () => {
1921
+ return i18nString(RemoveProject);
1922
+ };
1844
1923
  const debug = () => {
1845
1924
  return i18nString(Debug);
1846
1925
  };
@@ -1856,6 +1935,9 @@ const settings = () => {
1856
1935
  const search = () => {
1857
1936
  return i18nString(Search$1);
1858
1937
  };
1938
+ const scrollDown = () => {
1939
+ return i18nString(ScrollDown$1);
1940
+ };
1859
1941
  const searchModels = () => {
1860
1942
  return i18nString(SearchModels);
1861
1943
  };
@@ -1895,6 +1977,12 @@ const composePlaceholder = () => {
1895
1977
  const attachImageAsContext = () => {
1896
1978
  return i18nString(AttachImageAsContext);
1897
1979
  };
1980
+ const openImageInNewTab = () => {
1981
+ return i18nString(OpenImageInNewTab);
1982
+ };
1983
+ const removeAttachment = () => {
1984
+ return i18nString(RemoveAttachment);
1985
+ };
1898
1986
  const imageCouldNotBeLoaded = () => {
1899
1987
  return i18nString(ImageCouldNotBeLoaded);
1900
1988
  };
@@ -1913,6 +2001,21 @@ const startVoiceDictation = () => {
1913
2001
  const addContext = () => {
1914
2002
  return i18nString(AddContext$1);
1915
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
+ };
1916
2019
  const createPullRequest = () => {
1917
2020
  return i18nString(CreatePullRequest$2);
1918
2021
  };
@@ -1971,29 +2074,35 @@ const getDefaultModelsOpenAi = () => {
1971
2074
  id: 'openapi/codex-5.3',
1972
2075
  name: 'Codex 5.3',
1973
2076
  provider: 'openApi',
2077
+ supportsReasoningEffort: true,
1974
2078
  usageCost: 1
1975
2079
  }, {
1976
2080
  id: 'openapi/gpt-5.4-mini',
1977
2081
  name: 'GPT-5.4 Mini',
1978
- provider: 'openApi'
2082
+ provider: 'openApi',
2083
+ supportsReasoningEffort: true
1979
2084
  }, {
1980
2085
  id: 'openapi/gpt-5-mini',
1981
2086
  name: 'GPT-5 Mini',
1982
- provider: 'openApi'
2087
+ provider: 'openApi',
2088
+ supportsReasoningEffort: true
1983
2089
  }, {
1984
2090
  id: 'openapi/gpt-4o-mini',
1985
2091
  name: 'GPT-4o Mini',
1986
2092
  provider: 'openApi',
2093
+ supportsImages: true,
1987
2094
  usageCost: 1
1988
2095
  }, {
1989
2096
  id: 'openapi/gpt-4o',
1990
2097
  name: 'GPT-4o',
1991
2098
  provider: 'openApi',
2099
+ supportsImages: true,
1992
2100
  usageCost: 3
1993
2101
  }, {
1994
2102
  id: 'openapi/gpt-4.1-mini',
1995
2103
  name: 'GPT-4.1 Mini',
1996
2104
  provider: 'openApi',
2105
+ supportsImages: true,
1997
2106
  usageCost: 1
1998
2107
  }];
1999
2108
  };
@@ -2101,6 +2210,22 @@ const getModelPickerHeight = (modelPickerHeaderHeight, itemCount) => {
2101
2210
  return Math.min(240, modelPickerHeaderHeight + effectiveItemCount * modelPickerItemHeight);
2102
2211
  };
2103
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
+
2104
2229
  const getModelLabel = model => {
2105
2230
  if (model.provider === 'openRouter') {
2106
2231
  return `${model.name} (OpenRouter)`;
@@ -2186,8 +2311,10 @@ const createDefaultState = () => {
2186
2311
  const chatMessageLineHeight = 20;
2187
2312
  const composerFontSize = 13;
2188
2313
  const composerLineHeight = 20;
2314
+ const responsivePickerVisibilityEnabled = false;
2189
2315
  const models = getDefaultModels();
2190
2316
  const visibleModels = getVisibleModels(models, '');
2317
+ const responsivePickerState = getResponsivePickerState(800, responsivePickerVisibilityEnabled);
2191
2318
  return {
2192
2319
  addContextButtonEnabled: false,
2193
2320
  agentMode: defaultAgentMode,
@@ -2213,7 +2340,10 @@ const createDefaultState = () => {
2213
2340
  chatSendAreaPaddingLeft: 8,
2214
2341
  chatSendAreaPaddingRight: 8,
2215
2342
  chatSendAreaPaddingTop: 10,
2343
+ composerAttachmentPreviewOverlayAttachmentId: '',
2344
+ composerAttachmentPreviewOverlayError: false,
2216
2345
  composerAttachments: [],
2346
+ composerAttachmentsHeight: 0,
2217
2347
  composerDropActive: false,
2218
2348
  composerDropEnabled: true,
2219
2349
  composerFontFamily: 'system-ui',
@@ -2229,6 +2359,7 @@ const createDefaultState = () => {
2229
2359
  focused: false,
2230
2360
  headerHeight: 50,
2231
2361
  height: 0,
2362
+ ...responsivePickerState,
2232
2363
  initial: true,
2233
2364
  inputSource: 'script',
2234
2365
  lastNormalViewMode: 'list',
@@ -2241,12 +2372,14 @@ const createDefaultState = () => {
2241
2372
  messagesScrollTop: 0,
2242
2373
  mockAiResponseDelay: 800,
2243
2374
  mockApiCommandId: '',
2375
+ mockOpenApiRequests: [],
2244
2376
  modelPickerHeaderHeight,
2245
2377
  modelPickerHeight: getModelPickerHeight(modelPickerHeaderHeight, visibleModels.length),
2246
2378
  modelPickerListScrollTop: 0,
2247
2379
  modelPickerOpen: false,
2248
2380
  modelPickerSearchValue: '',
2249
2381
  models,
2382
+ nextAttachmentId: 1,
2250
2383
  nextMessageId: 1,
2251
2384
  openApiApiBaseUrl: 'https://api.openai.com/v1',
2252
2385
  openApiApiKey: '',
@@ -2274,8 +2407,10 @@ const createDefaultState = () => {
2274
2407
  reasoningEffortPickerOpen: false,
2275
2408
  reasoningPickerEnabled: false,
2276
2409
  renamingSessionId: '',
2410
+ responsivePickerVisibilityEnabled,
2277
2411
  runMode: 'local',
2278
2412
  runModePickerOpen: false,
2413
+ scrollDownButtonEnabled: false,
2279
2414
  searchEnabled: false,
2280
2415
  searchFieldVisible: false,
2281
2416
  searchValue: '',
@@ -2428,6 +2563,7 @@ const clearChatSessions = async () => {
2428
2563
  await clear();
2429
2564
  };
2430
2565
  const appendChatViewEvent = async event => {
2566
+ // The local chat-view event union may temporarily grow ahead of the shared rpc-registry typings.
2431
2567
  await appendEvent(event);
2432
2568
  };
2433
2569
  const getChatViewEvents = async sessionId => {
@@ -2484,28 +2620,72 @@ const getComposerAttachmentDisplayType = async (blob, name, mimeType) => {
2484
2620
  return 'file';
2485
2621
  };
2486
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
+
2487
2651
  const isChatAttachmentAddedEvent = event => {
2488
2652
  return event.type === 'chat-attachment-added';
2489
2653
  };
2654
+ const isChatAttachmentRemovedEvent = event => {
2655
+ return event.type === 'chat-attachment-removed';
2656
+ };
2490
2657
  const getComposerAttachments = async sessionId => {
2491
2658
  if (!sessionId) {
2492
2659
  return [];
2493
2660
  }
2494
2661
  const events = await getChatViewEvents(sessionId);
2495
- const attachments = [];
2662
+ const attachments = new Map();
2496
2663
  for (const event of events) {
2664
+ if (isChatAttachmentRemovedEvent(event)) {
2665
+ attachments.delete(event.attachmentId);
2666
+ continue;
2667
+ }
2497
2668
  if (!isChatAttachmentAddedEvent(event)) {
2498
2669
  continue;
2499
2670
  }
2500
- attachments.push({
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, {
2501
2675
  attachmentId: event.attachmentId,
2502
- displayType: await getComposerAttachmentDisplayType(event.blob, event.name, event.mimeType),
2676
+ displayType,
2503
2677
  mimeType: event.mimeType,
2504
2678
  name: event.name,
2505
- size: event.size
2679
+ ...(previewSrc ? {
2680
+ previewSrc
2681
+ } : {}),
2682
+ size: event.size,
2683
+ ...(typeof textContent === 'string' ? {
2684
+ textContent
2685
+ } : {})
2506
2686
  });
2507
2687
  }
2508
- return attachments;
2688
+ return [...attachments.values()];
2509
2689
  };
2510
2690
 
2511
2691
  const getNextSelectedSessionId = (sessions, deletedId) => {
@@ -2523,7 +2703,8 @@ const getNextSelectedSessionId = (sessions, deletedId) => {
2523
2703
  const deleteSession = async (state, id) => {
2524
2704
  const {
2525
2705
  renamingSessionId,
2526
- sessions
2706
+ sessions,
2707
+ width
2527
2708
  } = state;
2528
2709
  const filtered = sessions.filter(session => session.id !== id);
2529
2710
  if (filtered.length === sessions.length) {
@@ -2534,6 +2715,7 @@ const deleteSession = async (state, id) => {
2534
2715
  return {
2535
2716
  ...state,
2536
2717
  composerAttachments: [],
2718
+ composerAttachmentsHeight: 0,
2537
2719
  renamingSessionId: '',
2538
2720
  selectedSessionId: '',
2539
2721
  sessions: [],
@@ -2555,6 +2737,7 @@ const deleteSession = async (state, id) => {
2555
2737
  return {
2556
2738
  ...state,
2557
2739
  composerAttachments,
2740
+ composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, width),
2558
2741
  renamingSessionId: renamingSessionId === id ? '' : renamingSessionId,
2559
2742
  selectedSessionId: nextSelectedSessionId,
2560
2743
  sessions: hydratedSessions
@@ -2619,7 +2802,7 @@ const getRenderHtmlCss = (sessions, selectedSessionId) => {
2619
2802
  const isEqual$1 = (oldState, newState) => {
2620
2803
  const oldRenderHtmlCss = getRenderHtmlCss(oldState.sessions, oldState.selectedSessionId);
2621
2804
  const newRenderHtmlCss = getRenderHtmlCss(newState.sessions, newState.selectedSessionId);
2622
- 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;
2623
2806
  };
2624
2807
 
2625
2808
  const diffFocus = (oldState, newState) => {
@@ -2640,7 +2823,7 @@ const isEqualComposerAttachments = (a, b) => {
2640
2823
  return false;
2641
2824
  }
2642
2825
  for (let i = 0; i < a.length; i++) {
2643
- 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) {
2644
2827
  return false;
2645
2828
  }
2646
2829
  }
@@ -2673,7 +2856,7 @@ const isEqualVisibleModels = (a, b) => {
2673
2856
  };
2674
2857
 
2675
2858
  const isEqual = (oldState, newState) => {
2676
- 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;
2677
2860
  };
2678
2861
 
2679
2862
  const diffScrollTop = (oldState, newState) => {
@@ -2694,10 +2877,7 @@ const RenderIncremental = 11;
2694
2877
  const RenderScrollTop = 12;
2695
2878
 
2696
2879
  const diffValue = (oldState, newState) => {
2697
- if (oldState.composerValue === newState.composerValue) {
2698
- return true;
2699
- }
2700
- return newState.inputSource !== 'script';
2880
+ return oldState.composerValue === newState.composerValue || newState.inputSource !== 'script';
2701
2881
  };
2702
2882
 
2703
2883
  const modules = [isEqual, diffValue, diffSelection, diffFocus, isEqual$1, diffFocus, diffScrollTop];
@@ -2719,8 +2899,7 @@ const diff2 = uid => {
2719
2899
  newState,
2720
2900
  oldState
2721
2901
  } = get$1(uid);
2722
- const result = diff(oldState, newState);
2723
- return result;
2902
+ return diff(oldState, newState);
2724
2903
  };
2725
2904
 
2726
2905
  const getAuthState = state => {
@@ -3061,7 +3240,8 @@ const openModelPicker = state => {
3061
3240
  return {
3062
3241
  ...state,
3063
3242
  agentModePickerOpen: false,
3064
- focus: 'model-picker-input',
3243
+ focus: modelPickerOpen ? 'model-picker-input' : state.focus,
3244
+ focused: modelPickerOpen ? true : state.focused,
3065
3245
  modelPickerHeight: getModelPickerHeight(state.modelPickerHeaderHeight, visibleModels.length),
3066
3246
  modelPickerListScrollTop: 0,
3067
3247
  modelPickerOpen,
@@ -3077,6 +3257,10 @@ const getKeyBindings = () => {
3077
3257
  command: 'Chat.chatInputHistoryDown',
3078
3258
  key: DownArrow,
3079
3259
  when: FocusChatInput
3260
+ }, {
3261
+ command: 'Chat.pasteInput',
3262
+ key: CtrlCmd | KeyV,
3263
+ when: FocusChatInput
3080
3264
  }, {
3081
3265
  command: 'Chat.chatInputHistoryUp',
3082
3266
  key: UpArrow,
@@ -3097,6 +3281,10 @@ const getKeyBindings = () => {
3097
3281
  command: 'Chat.chatListFocusPrevious',
3098
3282
  key: UpArrow,
3099
3283
  when: FocusChatList
3284
+ }, {
3285
+ command: 'Chat.handleClickNew',
3286
+ key: CtrlCmd | KeyN,
3287
+ when: FocusChatInput
3100
3288
  }, {
3101
3289
  command: 'Chat.handleSubmit',
3102
3290
  key: Enter,
@@ -3116,6 +3304,24 @@ const getKeyBindings = () => {
3116
3304
  }];
3117
3305
  };
3118
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
+
3119
3325
  const getMenuEntriesChatHeader = () => {
3120
3326
  // TODO
3121
3327
  return [{
@@ -3175,14 +3381,24 @@ const Composer = 'composer';
3175
3381
  const Search = 'search';
3176
3382
  const ComposerDropTarget = 'composer-drop-target';
3177
3383
  const ComposerAttachmentPrefix = 'composer-attachment:';
3384
+ const ComposerAttachmentPreviewPrefix = 'composer-attachment-preview:';
3385
+ const ComposerAttachmentRemovePrefix = 'composer-attachment-remove:';
3386
+ const ComposerAttachmentPreviewOverlay = 'composer-attachment-preview-overlay';
3178
3387
  const AddContext = 'add-context';
3179
3388
  const Dictate = 'dictate';
3180
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';
3181
3395
  const Send = 'send';
3396
+ const ScrollDown = 'scroll-down';
3182
3397
  const Back = 'back';
3183
3398
  const ModelPickerToggle = 'model-picker-toggle';
3184
3399
  const ModelPickerSearch = 'model-picker-search';
3185
3400
  const ModelPickerList = 'model-picker-list';
3401
+ const PickerList = 'picker-list';
3186
3402
  const AgentModePickerToggle = 'agent-mode-picker-toggle';
3187
3403
  const AgentModePickerItemPrefix = 'agent-mode-picker-item:';
3188
3404
  const ReasoningEffortPickerToggle = 'reasoning-effort-picker-toggle';
@@ -3201,6 +3417,7 @@ const Login = 'login';
3201
3417
  const Logout = 'logout';
3202
3418
  const CloseChat = 'close-chat';
3203
3419
  const SessionDelete = 'SessionDelete';
3420
+ const ProjectDelete = 'ProjectDelete';
3204
3421
  const ProjectPrefix = 'project:';
3205
3422
  const SessionPrefix = 'session:';
3206
3423
  const RenamePrefix = 'session-rename:';
@@ -3244,6 +3461,30 @@ const getModelPickerItemInputName = modelId => {
3244
3461
  const getComposerAttachmentInputName = attachmentId => {
3245
3462
  return `${ComposerAttachmentPrefix}${attachmentId}`;
3246
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
+ };
3247
3488
  const isModelPickerItemInputName = name => {
3248
3489
  return name.startsWith(ModelPickerItemPrefix);
3249
3490
  };
@@ -3285,17 +3526,27 @@ const menuEntryAddProject = {
3285
3526
  id: 'addProject',
3286
3527
  label: addProject()
3287
3528
  };
3288
- const getMenuEntriesChatProjectList = (projectId = '') => {
3529
+ const getMenuEntriesChatProjectList = (projectId = '', canRemoveProject = true) => {
3289
3530
  if (!projectId) {
3290
3531
  return [menuEntryAddProject];
3291
3532
  }
3292
- return [{
3533
+ const entries = [{
3293
3534
  args: [getCreateSessionInProjectInputName(projectId)],
3294
3535
  command: 'Chat.handleClick',
3295
3536
  flags: None,
3296
3537
  id: 'newChat',
3297
3538
  label: newChat()
3298
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;
3299
3550
  };
3300
3551
 
3301
3552
  const getMenuEntriesProjectAddButton = () => {
@@ -3313,12 +3564,15 @@ const MenuChatHeader = 2179;
3313
3564
  const MenuChatInput = 2180;
3314
3565
  const MenuProjectAddButton = 2181;
3315
3566
  const MenuChatProjectList = 2182;
3567
+ const MenuChatAttachment = 2183;
3316
3568
  const getMenuEntryIds = () => {
3317
- return [Chat$2, MenuChatList, MenuChatHeader, MenuChatInput, MenuProjectAddButton, MenuChatProjectList];
3569
+ return [Chat$2, MenuChatList, MenuChatHeader, MenuChatInput, MenuProjectAddButton, MenuChatProjectList, MenuChatAttachment];
3318
3570
  };
3319
3571
 
3320
3572
  const getMenuEntries = (menuId, props) => {
3321
3573
  switch (props.menuId) {
3574
+ case MenuChatAttachment:
3575
+ return getMenuEntriesChatAttachment(props.attachmentId, props.previewSrc);
3322
3576
  case MenuChatHeader:
3323
3577
  return getMenuEntriesChatHeader();
3324
3578
  case MenuChatInput:
@@ -3326,7 +3580,7 @@ const getMenuEntries = (menuId, props) => {
3326
3580
  case MenuChatList:
3327
3581
  return getMenuEntriesChatList();
3328
3582
  case MenuChatProjectList:
3329
- return getMenuEntriesChatProjectList(props.projectId);
3583
+ return getMenuEntriesChatProjectList(props.projectId, props.canRemoveProject);
3330
3584
  case MenuProjectAddButton:
3331
3585
  return getMenuEntriesProjectAddButton();
3332
3586
  default:
@@ -3334,6 +3588,10 @@ const getMenuEntries = (menuId, props) => {
3334
3588
  }
3335
3589
  };
3336
3590
 
3591
+ const getMockOpenApiRequests = state => {
3592
+ return state.mockOpenApiRequests;
3593
+ };
3594
+
3337
3595
  const getQuickPickMenuEntries = () => {
3338
3596
  return [];
3339
3597
  };
@@ -3423,6 +3681,15 @@ const handleChatListContextMenu = async (state, eventX, eventY) => {
3423
3681
  };
3424
3682
  };
3425
3683
 
3684
+ const focusInput = state => {
3685
+ return {
3686
+ ...state,
3687
+ focus: 'composer',
3688
+ focused: true,
3689
+ listFocusedIndex: -1
3690
+ };
3691
+ };
3692
+
3426
3693
  const generateSessionId = () => {
3427
3694
  return crypto.randomUUID();
3428
3695
  };
@@ -3438,14 +3705,93 @@ const createSession = async (state, projectIdOverride = '') => {
3438
3705
  title: `Chat ${state.sessions.length + 1}`
3439
3706
  };
3440
3707
  await saveChatSession(session);
3441
- return {
3708
+ return focusInput({
3442
3709
  ...state,
3443
3710
  composerAttachments: [],
3711
+ composerAttachmentsHeight: 0,
3444
3712
  projectExpandedIds: state.projectExpandedIds.includes(projectId) ? state.projectExpandedIds : [...state.projectExpandedIds, projectId],
3445
3713
  renamingSessionId: '',
3446
3714
  selectedProjectId: projectId,
3447
3715
  selectedSessionId: id,
3448
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)
3449
3795
  };
3450
3796
  };
3451
3797
 
@@ -3458,6 +3804,12 @@ const getModelPickerClickIndex = (y, height, eventY, modelPickerBottomOffset, mo
3458
3804
  return Math.floor(relativeY / modelPickerItemHeight);
3459
3805
  };
3460
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
+
3461
3813
  const openFolder = async () => {
3462
3814
  try {
3463
3815
  return await invoke('FilePicker.showDirectoryPicker');
@@ -3467,24 +3819,32 @@ const openFolder = async () => {
3467
3819
  };
3468
3820
 
3469
3821
  const selectProject = async (state, projectId) => {
3470
- if (!projectId || state.selectedProjectId === projectId) {
3822
+ const {
3823
+ selectedProjectId,
3824
+ selectedSessionId,
3825
+ sessions,
3826
+ viewMode,
3827
+ width
3828
+ } = state;
3829
+ if (!projectId || selectedProjectId === projectId) {
3471
3830
  return state;
3472
3831
  }
3473
- const visibleSessions = getVisibleSessions(state.sessions, projectId);
3832
+ const visibleSessions = getVisibleSessions(sessions, projectId);
3474
3833
  if (visibleSessions.length === 0) {
3475
3834
  return {
3476
3835
  ...state,
3477
3836
  composerAttachments: [],
3837
+ composerAttachmentsHeight: 0,
3478
3838
  selectedProjectId: projectId,
3479
3839
  selectedSessionId: '',
3480
- viewMode: state.viewMode === 'chat-focus' ? 'chat-focus' : 'list'
3840
+ viewMode: viewMode === 'chat-focus' ? 'chat-focus' : 'list'
3481
3841
  };
3482
3842
  }
3483
- const currentSessionVisible = visibleSessions.some(session => session.id === state.selectedSessionId);
3484
- const nextSelectedSessionId = currentSessionVisible ? state.selectedSessionId : visibleSessions[0].id;
3843
+ const currentSessionVisible = visibleSessions.some(session => session.id === selectedSessionId);
3844
+ const nextSelectedSessionId = currentSessionVisible ? selectedSessionId : visibleSessions[0].id;
3485
3845
  const loadedSession = await getChatSession(nextSelectedSessionId);
3486
3846
  const composerAttachments = await getComposerAttachments(nextSelectedSessionId);
3487
- const sessions = state.sessions.map(session => {
3847
+ const hydratedSessions = sessions.map(session => {
3488
3848
  if (session.id !== nextSelectedSessionId || !loadedSession) {
3489
3849
  return session;
3490
3850
  }
@@ -3493,10 +3853,11 @@ const selectProject = async (state, projectId) => {
3493
3853
  return {
3494
3854
  ...state,
3495
3855
  composerAttachments,
3856
+ composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, width),
3496
3857
  selectedProjectId: projectId,
3497
3858
  selectedSessionId: nextSelectedSessionId,
3498
- sessions,
3499
- viewMode: state.viewMode === 'chat-focus' ? 'chat-focus' : 'detail'
3859
+ sessions: hydratedSessions,
3860
+ viewMode: viewMode === 'chat-focus' ? 'chat-focus' : 'detail'
3500
3861
  };
3501
3862
  };
3502
3863
 
@@ -3535,6 +3896,7 @@ const handleClickCreateProject = async state => {
3535
3896
  return {
3536
3897
  ...state,
3537
3898
  composerAttachments: [],
3899
+ composerAttachmentsHeight: 0,
3538
3900
  projects: [...state.projects, project],
3539
3901
  selectedProjectId: project.id,
3540
3902
  selectedSessionId: '',
@@ -3573,8 +3935,7 @@ const executeProvider = async ({
3573
3935
  }) => {
3574
3936
  await activateByEvent(event, assetDir, platform);
3575
3937
  // @ts-ignore
3576
- const result = invoke$2(method, ...params);
3577
- return result;
3938
+ return invoke$2(method, ...params);
3578
3939
  };
3579
3940
 
3580
3941
  const CommandExecute = 'ExtensionHostCommand.executeCommand';
@@ -4025,6 +4386,54 @@ const getBasicChatTools = async (agentMode = defaultAgentMode, questionToolEnabl
4025
4386
  }
4026
4387
  };
4027
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
+
4028
4437
  const getClientRequestIdHeader = () => {
4029
4438
  return {
4030
4439
  'x-client-request-id': crypto.randomUUID()
@@ -4040,11 +4449,22 @@ const getMockAiResponse = async (userMessage, delayInMs) => {
4040
4449
  return `Mock AI response: I received "${userMessage}".`;
4041
4450
  };
4042
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
+
4043
4463
  let queue = [];
4044
4464
  let waiters = [];
4045
4465
  let finished = false;
4046
4466
  let errorResult;
4047
- const reset$2 = () => {
4467
+ const reset$1 = () => {
4048
4468
  queue = [];
4049
4469
  waiters = [];
4050
4470
  finished = false;
@@ -4118,6 +4538,47 @@ const readNextChunk = async () => {
4118
4538
  return promise;
4119
4539
  };
4120
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
+ };
4121
4582
  const getResponseFunctionCalls$1 = value => {
4122
4583
  if (!value || typeof value !== 'object') {
4123
4584
  return [];
@@ -4315,9 +4776,10 @@ const getMockOpenApiAssistantText = async (stream, onTextChunk, onToolCallsChunk
4315
4776
  }
4316
4777
  continue;
4317
4778
  }
4318
- text += chunk;
4779
+ const resolvedChunk = chunk === lastRequestSummaryToken ? getLastRequestSummary() : chunk;
4780
+ text += resolvedChunk;
4319
4781
  if (stream && onTextChunk) {
4320
- await onTextChunk(chunk);
4782
+ await onTextChunk(resolvedChunk);
4321
4783
  }
4322
4784
  }
4323
4785
  if (!requestDone && remainder) {
@@ -4517,7 +4979,7 @@ const getOpenAiTools = tools => {
4517
4979
  };
4518
4980
  });
4519
4981
  };
4520
- 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) => {
4521
4983
  const openAiTools = getOpenAiTools(tools);
4522
4984
  return {
4523
4985
  input,
@@ -4536,7 +4998,7 @@ const getOpenAiParams = (input, modelId, stream, includeObfuscation, tools, webS
4536
4998
  ...(previousResponseId ? {
4537
4999
  previous_response_id: previousResponseId
4538
5000
  } : {}),
4539
- ...(reasoningEffort ? {
5001
+ ...(reasoningEffort && supportsReasoningEffort ? {
4540
5002
  reasoning: {
4541
5003
  effort: reasoningEffort
4542
5004
  }
@@ -5143,6 +5605,7 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
5143
5605
  questionToolEnabled = false,
5144
5606
  reasoningEffort,
5145
5607
  stream,
5608
+ supportsReasoningEffort = false,
5146
5609
  systemPrompt = '',
5147
5610
  toolEnablement,
5148
5611
  useChatNetworkWorkerForRequests = false,
@@ -5153,7 +5616,7 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
5153
5616
  stream: false
5154
5617
  };
5155
5618
  const openAiInput = messages.map(message => ({
5156
- content: message.text,
5619
+ content: getChatMessageOpenAiContent(message),
5157
5620
  role: message.role
5158
5621
  }));
5159
5622
  const tools = await getBasicChatTools(agentMode, questionToolEnabled, toolEnablement);
@@ -5161,7 +5624,7 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
5161
5624
  const maxToolIterations = safeMaxToolCalls - 1;
5162
5625
  let previousResponseId;
5163
5626
  for (let i = 0; i <= maxToolIterations; i++) {
5164
- 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);
5165
5628
  if (stream) {
5166
5629
  const streamResult = useChatNetworkWorkerForRequests ? await (async () => {
5167
5630
  const requestResult = await makeStreamingApiRequest({
@@ -5546,12 +6009,22 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
5546
6009
  };
5547
6010
  };
5548
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;
5549
6014
  const isOffline = () => {
5550
6015
  if (!globalThis.navigator) {
5551
6016
  return false;
5552
6017
  }
5553
6018
  return globalThis.navigator.onLine === false;
5554
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
+ };
5555
6028
  const getOpenApiErrorMessage = errorResult => {
5556
6029
  switch (errorResult.details) {
5557
6030
  case 'http-error':
@@ -5565,6 +6038,9 @@ const getOpenApiErrorMessage = errorResult => {
5565
6038
  const status = typeof errorResult.statusCode === 'number' ? errorResult.statusCode : 401;
5566
6039
  return `OpenAI request failed (Status ${status}): Invalid API key. Please verify your OpenAI API key in Chat Settings.`;
5567
6040
  }
6041
+ if (isImageNotSupportedError(errorResult)) {
6042
+ return getImageNotSupportedMessage();
6043
+ }
5568
6044
  if (errorResult.statusCode === 429) {
5569
6045
  let prefix = 'OpenAI rate limit exceeded (429)';
5570
6046
  if (hasErrorCode) {
@@ -6013,17 +6489,6 @@ const isOpenRouterModel = (selectedModelId, models) => {
6013
6489
  return selectedModelId.toLowerCase().startsWith('openrouter/');
6014
6490
  };
6015
6491
 
6016
- let requests = [];
6017
- const reset$1 = () => {
6018
- requests = [];
6019
- };
6020
- const capture = request => {
6021
- requests = [...requests, request];
6022
- };
6023
- const getAll = () => {
6024
- return requests;
6025
- };
6026
-
6027
6492
  /* eslint-disable prefer-destructuring */
6028
6493
 
6029
6494
  const trailingSlashesRegex = /\/+$/;
@@ -6038,6 +6503,9 @@ const getEffectiveBackendModelId = selectedModelId => {
6038
6503
  }
6039
6504
  return selectedModelId.slice(separatorIndex + 1);
6040
6505
  };
6506
+ const hasImageAttachments = messages => {
6507
+ return messages.some(message => message.attachments?.some(attachment => attachment.displayType === 'image'));
6508
+ };
6041
6509
  const getBackendAssistantText = async (messages, selectedModelId, backendUrl, authAccessToken, systemPrompt) => {
6042
6510
  let response;
6043
6511
  try {
@@ -6085,6 +6553,7 @@ const getAiResponse = async ({
6085
6553
  nextMessageId,
6086
6554
  onDataEvent,
6087
6555
  onEventStreamFinished,
6556
+ onMockOpenApiRequestCaptured,
6088
6557
  onTextChunk,
6089
6558
  onToolCallsChunk,
6090
6559
  openApiApiBaseUrl,
@@ -6160,7 +6629,15 @@ const getAiResponse = async ({
6160
6629
  }
6161
6630
  }
6162
6631
  let text = '';
6163
- if (authEnabled) {
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) {
6164
6641
  if (!backendUrl) {
6165
6642
  text = backendUrlRequiredMessage;
6166
6643
  } else if (authAccessToken) {
@@ -6169,13 +6646,11 @@ const getAiResponse = async ({
6169
6646
  text = backendAccessTokenRequiredMessage;
6170
6647
  }
6171
6648
  }
6172
- const usesOpenApiModel = isOpenApiModel(selectedModelId, models);
6173
- const usesOpenRouterModel = isOpenRouterModel(selectedModelId, models);
6174
6649
  if (!text && usesOpenApiModel) {
6175
6650
  const safeMaxToolCalls = Math.max(1, maxToolCalls);
6176
6651
  if (useMockApi) {
6177
6652
  const openAiInput = messages.map(message => ({
6178
- content: message.text,
6653
+ content: getChatMessageOpenAiContent(message),
6179
6654
  role: message.role
6180
6655
  }));
6181
6656
  const modelId = getOpenApiModelId(selectedModelId);
@@ -6187,12 +6662,16 @@ const getAiResponse = async ({
6187
6662
  const maxToolIterations = safeMaxToolCalls - 1;
6188
6663
  let previousResponseId;
6189
6664
  for (let i = 0; i <= maxToolIterations; i++) {
6190
- capture({
6665
+ const request = {
6191
6666
  headers,
6192
6667
  method: 'POST',
6193
- 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),
6194
6669
  url: getOpenApiApiEndpoint(openApiApiBaseUrl)
6195
- });
6670
+ };
6671
+ capture(request);
6672
+ if (onMockOpenApiRequestCaptured) {
6673
+ await Promise.resolve(onMockOpenApiRequestCaptured(request));
6674
+ }
6196
6675
  const result = await getMockOpenApiAssistantText(streamingEnabled, onTextChunk, onToolCallsChunk, onDataEvent, onEventStreamFinished);
6197
6676
  if (result.type !== 'success') {
6198
6677
  text = getOpenApiErrorMessage(result);
@@ -6270,6 +6749,7 @@ const getAiResponse = async ({
6270
6749
  reasoningEffort
6271
6750
  } : {}),
6272
6751
  stream: streamingEnabled,
6752
+ supportsReasoningEffort,
6273
6753
  systemPrompt,
6274
6754
  ...(toolEnablement ? {
6275
6755
  toolEnablement
@@ -6334,8 +6814,8 @@ const getAiResponse = async ({
6334
6814
  return message;
6335
6815
  };
6336
6816
 
6337
- const parseAndStoreMessagesContent$1 = async (parsedMessages, messages) => {
6338
- return invoke$7('ChatParser.parseMessageContent', parsedMessages, messages);
6817
+ const parseMessageContents = async rawMessages => {
6818
+ return invoke$7('ChatMessageParsing.parseMessageContents', rawMessages);
6339
6819
  };
6340
6820
 
6341
6821
  const Actions = 'Actions';
@@ -6346,6 +6826,10 @@ const Chat = 'Chat';
6346
6826
  const ChatActions = 'ChatActions';
6347
6827
  const ChatAuthError = 'ChatAuthError';
6348
6828
  const ChatFocus = 'ChatFocus';
6829
+ const ChatFocusActions = 'ChatFocusActions';
6830
+ const ChatFocusHeader = 'ChatFocusHeader';
6831
+ const ChatFocusMainArea = 'ChatFocusMainArea';
6832
+ const ChatFocusProject = 'ChatFocusProject';
6349
6833
  const ChatHeader = 'ChatHeader';
6350
6834
  const ChatHeaderLabel = 'ChatHeaderLabel';
6351
6835
  const ChatInputBox = 'ChatInputBox';
@@ -6370,15 +6854,30 @@ const ChatModelPickerItemSelected = 'ChatModelPickerItemSelected';
6370
6854
  const ChatModelPickerItemUsageCost = 'ChatModelPickerItemUsageCost';
6371
6855
  const ChatModelPickerList = 'ChatModelPickerList';
6372
6856
  const ChatName = 'ChatName';
6857
+ const ChatOverlays = 'ChatOverlays';
6373
6858
  const ChatOrderedList = 'ChatOrderedList';
6374
6859
  const ChatOrderedListItem = 'ChatOrderedListItem';
6375
6860
  const ChatOrderedListItemContent = 'ChatOrderedListItemContent';
6861
+ const ChatOrderedListItemPrefix = 'ChatOrderedListItemPrefix';
6376
6862
  const ChatOrderedListMarker = 'ChatOrderedListMarker';
6377
6863
  const ChatComposerAttachment = 'ChatComposerAttachment';
6378
6864
  const ChatComposerAttachmentImage = 'ChatComposerAttachmentImage';
6379
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';
6380
6872
  const ChatComposerAttachments = 'ChatComposerAttachments';
6381
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';
6382
6881
  const ChatSendArea = 'ChatSendArea';
6383
6882
  const ChatSendAreaBottom = 'ChatSendAreaBottom';
6384
6883
  const ChatSendAreaContent = 'ChatSendAreaContent';
@@ -6414,6 +6913,7 @@ const FileIcon = 'FileIcon';
6414
6913
  const IconButton = 'IconButton';
6415
6914
  const IconButtonDisabled = 'IconButtonDisabled';
6416
6915
  const ImageElement = 'ImageElement';
6916
+ const ImageErrorMessage = 'ImageErrorMessage';
6417
6917
  const InputBox = 'InputBox';
6418
6918
  const Insertion = 'Insertion';
6419
6919
  const Label = 'Label';
@@ -6427,6 +6927,7 @@ const MaskIconAccount = 'MaskIconAccount';
6427
6927
  const MaskIconAdd = 'MaskIconAdd';
6428
6928
  const MaskIconArrowLeft = 'MaskIconArrowLeft';
6429
6929
  const MaskIconChevronDown = 'MaskIconChevronDown';
6930
+ const MaskIconChevronRight = 'MaskIconChevronRight';
6430
6931
  const MaskIconChevronUp = 'MaskIconChevronUp';
6431
6932
  const MaskIconClose = 'MaskIconClose';
6432
6933
  const MaskIconDebugPause = 'MaskIconDebugPause';
@@ -6496,15 +6997,37 @@ const jsRules = [{
6496
6997
  className: TokenKeyword,
6497
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/
6498
6999
  }];
6499
- const htmlRules = [{
7000
+ const tsRules = [{
6500
7001
  className: TokenComment,
6501
- regex: /<!--[\s\S]*?-->/
7002
+ regex: /\/\/[^\n]*/
6502
7003
  }, {
6503
- className: TokenTag,
6504
- regex: /<\/[a-zA-Z][a-zA-Z0-9-]*\s*>/
7004
+ className: TokenComment,
7005
+ regex: /\/\*[\s\S]*?\*\//
6505
7006
  }, {
6506
- className: TokenTag,
6507
- regex: /<[a-zA-Z][a-zA-Z0-9-]*/
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
+ }];
7022
+ const htmlRules = [{
7023
+ className: TokenComment,
7024
+ regex: /<!--[\s\S]*?-->/
7025
+ }, {
7026
+ className: TokenTag,
7027
+ regex: /<\/[a-zA-Z][a-zA-Z0-9-]*\s*>/
7028
+ }, {
7029
+ className: TokenTag,
7030
+ regex: /<[a-zA-Z][a-zA-Z0-9-]*/
6508
7031
  }, {
6509
7032
  className: TokenTag,
6510
7033
  regex: /\/?>/
@@ -6619,6 +7142,9 @@ const highlightCode = (code, language) => {
6619
7142
  if (normalized === 'js' || normalized === 'javascript') {
6620
7143
  return tokenize(code, jsRules);
6621
7144
  }
7145
+ if (normalized === 'ts' || normalized === 'typescript') {
7146
+ return tokenize(code, tsRules);
7147
+ }
6622
7148
  if (normalized === 'py' || normalized === 'python') {
6623
7149
  return tokenize(code, pythonRules);
6624
7150
  }
@@ -7769,9 +8295,28 @@ const parseAndStoreMessagesContent = async (parsedMessages, messages) => {
7769
8295
  }
7770
8296
  return nextParsedMessages;
7771
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
+ };
7772
8317
  const parseAndStoreMessagesContentWithWorkerPreference = async (parsedMessages, messages, useChatMessageParsingWorker) => {
7773
8318
  if (useChatMessageParsingWorker) {
7774
- return parseAndStoreMessagesContent$1(parsedMessages, messages);
8319
+ return parseAndStoreMessagesContentInWorker(parsedMessages, messages);
7775
8320
  }
7776
8321
  return parseAndStoreMessagesContent(parsedMessages, messages);
7777
8322
  };
@@ -8007,15 +8552,6 @@ const getSlashCommandHandler = command => {
8007
8552
  return slashCommandRegistry[command];
8008
8553
  };
8009
8554
 
8010
- const focusInput = state => {
8011
- return {
8012
- ...state,
8013
- focus: 'composer',
8014
- focused: true,
8015
- listFocusedIndex: -1
8016
- };
8017
- };
8018
-
8019
8555
  const withClearedComposer = state => {
8020
8556
  return focusInput({
8021
8557
  ...state,
@@ -8169,12 +8705,6 @@ const getMentionContextMessage = async value => {
8169
8705
  };
8170
8706
  };
8171
8707
 
8172
- const AutoScrollTopA = Number.MAX_SAFE_INTEGER;
8173
- const AutoScrollTopB = Number.MAX_SAFE_INTEGER - 1;
8174
- const getNextAutoScrollTop = currentScrollTop => {
8175
- return currentScrollTop === AutoScrollTopA ? AutoScrollTopB : AutoScrollTopA;
8176
- };
8177
-
8178
8708
  const slashCommandRegex = /^\/([a-z][a-z0-9-]*)(?:\s+.*)?$/i;
8179
8709
  const getSlashCommand = value => {
8180
8710
  const trimmed = value.trim();
@@ -8452,6 +8982,19 @@ const withUpdatedMessageScrollTop = state => {
8452
8982
  };
8453
8983
  };
8454
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
+ };
8455
8998
  const getCurrentDate = () => {
8456
8999
  return new Date().toISOString().slice(0, 10);
8457
9000
  };
@@ -8544,7 +9087,12 @@ const handleSubmit = async state => {
8544
9087
  minute: '2-digit'
8545
9088
  });
8546
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));
8547
9092
  const userMessage = {
9093
+ ...(composerAttachments.length > 0 ? {
9094
+ attachments: composerAttachments
9095
+ } : {}),
8548
9096
  id: userMessageId,
8549
9097
  role: 'user',
8550
9098
  text: userText,
@@ -8600,6 +9148,7 @@ const handleSubmit = async state => {
8600
9148
  optimisticState = withUpdatedMessageScrollTop(focusInput({
8601
9149
  ...state,
8602
9150
  composerAttachments: [],
9151
+ composerAttachmentsHeight: 0,
8603
9152
  composerHeight: getMinComposerHeightForState(state),
8604
9153
  composerSelectionEnd: 0,
8605
9154
  composerSelectionStart: 0,
@@ -8637,6 +9186,8 @@ const handleSubmit = async state => {
8637
9186
  }
8638
9187
  optimisticState = withUpdatedMessageScrollTop(focusInput({
8639
9188
  ...state,
9189
+ composerAttachments: [],
9190
+ composerAttachmentsHeight: 0,
8640
9191
  composerHeight: getMinComposerHeightForState(state),
8641
9192
  composerSelectionEnd: 0,
8642
9193
  composerSelectionStart: 0,
@@ -8656,6 +9207,9 @@ const handleSubmit = async state => {
8656
9207
  latestState: optimisticState,
8657
9208
  previousState: optimisticState
8658
9209
  };
9210
+ let {
9211
+ mockOpenApiRequests
9212
+ } = optimisticState;
8659
9213
  const selectedOptimisticSession = optimisticState.sessions.find(session => session.id === optimisticState.selectedSessionId);
8660
9214
  const systemPrompt = getEffectiveSystemPrompt(optimisticState, selectedOptimisticSession);
8661
9215
  const workspaceUri = getWorkspaceUri(optimisticState, selectedOptimisticSession);
@@ -8698,6 +9252,9 @@ const handleSubmit = async state => {
8698
9252
  value: '[DONE]'
8699
9253
  });
8700
9254
  },
9255
+ onMockOpenApiRequestCaptured: async request => {
9256
+ mockOpenApiRequests = [...mockOpenApiRequests, request];
9257
+ },
8701
9258
  ...(handleTextChunkFunctionRef ? {
8702
9259
  onTextChunk: handleTextChunkFunctionRef
8703
9260
  } : {}),
@@ -8754,6 +9311,7 @@ const handleSubmit = async state => {
8754
9311
  }
8755
9312
  return withUpdatedMessageScrollTop(focusInput({
8756
9313
  ...latestState,
9314
+ mockOpenApiRequests,
8757
9315
  nextMessageId: latestState.nextMessageId + 1,
8758
9316
  parsedMessages: finalParsedMessages,
8759
9317
  sessions: updatedSessions
@@ -8780,11 +9338,43 @@ const handleReasoningEffortChange = async (state, value) => {
8780
9338
  return setReasoningEffort(state, value);
8781
9339
  };
8782
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
+
8783
9365
  const openAgentModePicker = state => {
9366
+ if (!state.hasSpaceForAgentModePicker) {
9367
+ return {
9368
+ ...state,
9369
+ agentModePickerOpen: false
9370
+ };
9371
+ }
8784
9372
  const agentModePickerOpen = !state.agentModePickerOpen;
8785
9373
  return {
8786
9374
  ...state,
8787
9375
  agentModePickerOpen,
9376
+ focus: agentModePickerOpen ? 'picker-list' : state.focus,
9377
+ focused: agentModePickerOpen ? true : state.focused,
8788
9378
  modelPickerOpen: false,
8789
9379
  modelPickerSearchValue: '',
8790
9380
  reasoningEffortPickerOpen: false,
@@ -8803,6 +9393,8 @@ const openReasoningEffortPicker = state => {
8803
9393
  return {
8804
9394
  ...state,
8805
9395
  agentModePickerOpen: false,
9396
+ focus: reasoningEffortPickerOpen ? 'picker-list' : state.focus,
9397
+ focused: reasoningEffortPickerOpen ? true : state.focused,
8806
9398
  modelPickerOpen: false,
8807
9399
  modelPickerSearchValue: '',
8808
9400
  reasoningEffortPickerOpen,
@@ -8818,10 +9410,18 @@ const OpenOpenRouterApiKeySettings = 'open-openrouter-api-key-settings';
8818
9410
  const OpenOpenRouterApiKeyWebsite = 'open-openrouter-api-key-website';
8819
9411
 
8820
9412
  const openRunModePicker = state => {
9413
+ if (!state.hasSpaceForRunModePicker) {
9414
+ return {
9415
+ ...state,
9416
+ runModePickerOpen: false
9417
+ };
9418
+ }
8821
9419
  const runModePickerOpen = !state.runModePickerOpen;
8822
9420
  return {
8823
9421
  ...state,
8824
9422
  agentModePickerOpen: false,
9423
+ focus: runModePickerOpen ? 'picker-list' : state.focus,
9424
+ focused: runModePickerOpen ? true : state.focused,
8825
9425
  modelPickerOpen: false,
8826
9426
  modelPickerSearchValue: '',
8827
9427
  reasoningEffortPickerOpen: false,
@@ -8831,13 +9431,19 @@ const openRunModePicker = state => {
8831
9431
  };
8832
9432
 
8833
9433
  const selectSession = async (state, id) => {
8834
- const exists = state.sessions.some(session => session.id === id);
9434
+ const {
9435
+ lastNormalViewMode,
9436
+ sessions,
9437
+ viewMode,
9438
+ width
9439
+ } = state;
9440
+ const exists = sessions.some(session => session.id === id);
8835
9441
  if (!exists) {
8836
9442
  return state;
8837
9443
  }
8838
9444
  const loadedSession = await getChatSession(id);
8839
9445
  const composerAttachments = await getComposerAttachments(id);
8840
- const sessions = state.sessions.map(session => {
9446
+ const hydratedSessions = sessions.map(session => {
8841
9447
  if (session.id !== id) {
8842
9448
  return session;
8843
9449
  }
@@ -8849,11 +9455,12 @@ const selectSession = async (state, id) => {
8849
9455
  return {
8850
9456
  ...state,
8851
9457
  composerAttachments,
8852
- lastNormalViewMode: state.viewMode === 'chat-focus' ? state.lastNormalViewMode : 'detail',
9458
+ composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, width),
9459
+ lastNormalViewMode: viewMode === 'chat-focus' ? lastNormalViewMode : 'detail',
8853
9460
  renamingSessionId: '',
8854
9461
  selectedSessionId: id,
8855
- sessions,
8856
- viewMode: state.viewMode === 'chat-focus' ? 'chat-focus' : 'detail'
9462
+ sessions: hydratedSessions,
9463
+ viewMode: viewMode === 'chat-focus' ? 'chat-focus' : 'detail'
8857
9464
  };
8858
9465
  };
8859
9466
 
@@ -8877,16 +9484,20 @@ const startRename = (state, id) => {
8877
9484
  };
8878
9485
 
8879
9486
  const toggleChatFocusMode = async state => {
8880
- if (state.viewMode === 'chat-focus') {
9487
+ const {
9488
+ lastNormalViewMode,
9489
+ viewMode
9490
+ } = state;
9491
+ if (viewMode === 'chat-focus') {
8881
9492
  return {
8882
9493
  ...state,
8883
- viewMode: state.lastNormalViewMode
9494
+ viewMode: lastNormalViewMode
8884
9495
  };
8885
9496
  }
8886
- if (state.viewMode === 'list' || state.viewMode === 'detail') {
9497
+ if (viewMode === 'list' || viewMode === 'detail') {
8887
9498
  return {
8888
9499
  ...state,
8889
- lastNormalViewMode: state.viewMode,
9500
+ lastNormalViewMode: viewMode,
8890
9501
  viewMode: 'chat-focus'
8891
9502
  };
8892
9503
  }
@@ -8894,25 +9505,32 @@ const toggleChatFocusMode = async state => {
8894
9505
  };
8895
9506
 
8896
9507
  const toggleProjectExpanded = async (state, projectId) => {
8897
- const isExpanded = state.projectExpandedIds.includes(projectId);
8898
- const projectExpandedIds = isExpanded ? state.projectExpandedIds.filter(id => id !== projectId) : [...state.projectExpandedIds, projectId];
8899
- const visibleSessions = getVisibleSessions(state.sessions, projectId);
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);
8900
9517
  if (visibleSessions.length === 0) {
8901
9518
  return {
8902
9519
  ...state,
8903
9520
  composerAttachments: [],
8904
- projectExpandedIds,
9521
+ composerAttachmentsHeight: 0,
9522
+ projectExpandedIds: nextProjectExpandedIds,
8905
9523
  selectedProjectId: projectId,
8906
9524
  selectedSessionId: '',
8907
9525
  viewMode: 'chat-focus'
8908
9526
  };
8909
9527
  }
8910
- const selectedSessionVisible = visibleSessions.some(session => session.id === state.selectedSessionId);
8911
- const selectedSessionId = selectedSessionVisible ? state.selectedSessionId : visibleSessions[0].id;
8912
- const loadedSession = await getChatSession(selectedSessionId);
8913
- const composerAttachments = await getComposerAttachments(selectedSessionId);
8914
- const sessions = state.sessions.map(session => {
8915
- if (session.id !== selectedSessionId || !loadedSession) {
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) {
8916
9534
  return session;
8917
9535
  }
8918
9536
  return loadedSession;
@@ -8920,10 +9538,11 @@ const toggleProjectExpanded = async (state, projectId) => {
8920
9538
  return {
8921
9539
  ...state,
8922
9540
  composerAttachments,
8923
- projectExpandedIds,
9541
+ composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, width),
9542
+ projectExpandedIds: nextProjectExpandedIds,
8924
9543
  selectedProjectId: projectId,
8925
- selectedSessionId,
8926
- sessions,
9544
+ selectedSessionId: nextSelectedSessionId,
9545
+ sessions: hydratedSessions,
8927
9546
  viewMode: 'chat-focus'
8928
9547
  };
8929
9548
  };
@@ -9057,10 +9676,23 @@ const handleClick = async (state, name, id = '', eventX = 0, eventY = 0) => {
9057
9676
  const sessionId = getRenameIdFromInputName(name);
9058
9677
  return startRename(state, sessionId);
9059
9678
  }
9679
+ case isComposerAttachmentRemoveInputName(name):
9680
+ {
9681
+ const attachmentId = getAttachmentIdFromComposerAttachmentRemoveInputName(name);
9682
+ return handleRemoveComposerAttachment(state, attachmentId);
9683
+ }
9060
9684
  case name === SessionDelete:
9061
9685
  return deleteSession(state, id);
9686
+ case name === ProjectDelete:
9687
+ return deleteProject(state, id);
9062
9688
  case name === Send:
9063
9689
  return handleClickSend(state);
9690
+ case name === ScrollDown:
9691
+ return {
9692
+ ...state,
9693
+ messagesAutoScrollEnabled: true,
9694
+ messagesScrollTop: getNextAutoScrollTop(state.messagesScrollTop)
9695
+ };
9064
9696
  case name === SaveOpenRouterApiKey:
9065
9697
  return handleClickSaveOpenRouterApiKey(state);
9066
9698
  case name === SaveOpenApiApiKey:
@@ -9086,6 +9718,7 @@ const handleClickBack = async state => {
9086
9718
  return {
9087
9719
  ...state,
9088
9720
  composerAttachments: [],
9721
+ composerAttachmentsHeight: 0,
9089
9722
  lastNormalViewMode: 'list',
9090
9723
  renamingSessionId: '',
9091
9724
  viewMode: 'list'
@@ -9167,6 +9800,7 @@ const handleClickNew = async state => {
9167
9800
  return focusInput({
9168
9801
  ...clearedState,
9169
9802
  composerAttachments: [],
9803
+ composerAttachmentsHeight: 0,
9170
9804
  lastNormalViewMode: 'list',
9171
9805
  renamingSessionId: '',
9172
9806
  viewMode: 'list'
@@ -9182,7 +9816,23 @@ const handleClickSettings = async () => {
9182
9816
  await invoke('Main.openUri', 'app://settings.json');
9183
9817
  };
9184
9818
 
9185
- const handleContextMenuChatImageAttachment = async state => {
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
+ });
9186
9836
  return state;
9187
9837
  };
9188
9838
 
@@ -9195,16 +9845,20 @@ const handleContextMenuChatSendAreaBottom = async state => {
9195
9845
  };
9196
9846
 
9197
9847
  const handleDragEnter = async (state, name, hasFiles = true) => {
9848
+ const {
9849
+ composerDropActive,
9850
+ composerDropEnabled
9851
+ } = state;
9198
9852
  if (name !== ComposerDropTarget) {
9199
9853
  return state;
9200
9854
  }
9201
- if (!state.composerDropEnabled) {
9855
+ if (!composerDropEnabled) {
9202
9856
  return state;
9203
9857
  }
9204
9858
  if (!hasFiles) {
9205
9859
  return state;
9206
9860
  }
9207
- if (state.composerDropActive) {
9861
+ if (composerDropActive) {
9208
9862
  return state;
9209
9863
  }
9210
9864
  return {
@@ -9227,16 +9881,20 @@ const handleDragLeave = async (state, name) => {
9227
9881
  };
9228
9882
 
9229
9883
  const handleDragOver = async (state, name, hasFiles = true) => {
9884
+ const {
9885
+ composerDropActive,
9886
+ composerDropEnabled
9887
+ } = state;
9230
9888
  if (name !== ComposerDropTarget) {
9231
9889
  return state;
9232
9890
  }
9233
- if (!state.composerDropEnabled) {
9891
+ if (!composerDropEnabled) {
9234
9892
  return state;
9235
9893
  }
9236
9894
  if (!hasFiles) {
9237
9895
  return state;
9238
9896
  }
9239
- if (state.composerDropActive) {
9897
+ if (composerDropActive) {
9240
9898
  return state;
9241
9899
  }
9242
9900
  return {
@@ -9245,47 +9903,92 @@ const handleDragOver = async (state, name, hasFiles = true) => {
9245
9903
  };
9246
9904
  };
9247
9905
 
9248
- const handleDropFiles = async (state, name, files = []) => {
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;
9249
9930
  if (name !== ComposerDropTarget) {
9250
9931
  return state;
9251
9932
  }
9252
- if (!state.composerDropEnabled) {
9933
+ if (!composerDropEnabled) {
9253
9934
  return {
9254
9935
  ...state,
9255
9936
  composerDropActive: false
9256
9937
  };
9257
9938
  }
9258
- const nextState = state.composerDropActive === false ? state : {
9939
+ const nextState = composerDropActive === false ? state : {
9259
9940
  ...state,
9260
9941
  composerDropActive: false
9261
9942
  };
9262
- if (!state.selectedSessionId || files.length === 0) {
9943
+ if (!selectedSessionId || fileHandles.length === 0) {
9263
9944
  return nextState;
9264
9945
  }
9265
9946
  const nextAttachments = [];
9266
- for (const file of files) {
9267
- const attachmentId = crypto.randomUUID();
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);
9268
9953
  await appendChatViewEvent({
9269
9954
  attachmentId,
9270
9955
  blob: file,
9271
9956
  mimeType: file.type,
9272
9957
  name: file.name,
9273
- sessionId: state.selectedSessionId,
9958
+ sessionId: selectedSessionId,
9274
9959
  size: file.size,
9275
9960
  timestamp: new Date().toISOString(),
9276
9961
  type: 'chat-attachment-added'
9277
9962
  });
9278
9963
  nextAttachments.push({
9279
9964
  attachmentId,
9280
- displayType: await getComposerAttachmentDisplayType(file, file.name, file.type),
9965
+ displayType,
9281
9966
  mimeType: file.type,
9282
9967
  name: file.name,
9283
- size: file.size
9968
+ ...(previewSrc ? {
9969
+ previewSrc
9970
+ } : {}),
9971
+ size: file.size,
9972
+ ...(typeof textContent === 'string' ? {
9973
+ textContent
9974
+ } : {})
9284
9975
  });
9285
9976
  }
9286
9977
  return {
9287
9978
  ...nextState,
9288
- 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
9289
9992
  };
9290
9993
  };
9291
9994
 
@@ -9297,9 +10000,6 @@ const handleSearchValueChange = (state, newValue) => {
9297
10000
  };
9298
10001
 
9299
10002
  const handleInput = async (state, name, value, inputSource = 'user') => {
9300
- const {
9301
- selectedSessionId
9302
- } = state;
9303
10003
  if (name === OpenApiApiKeyInput) {
9304
10004
  return {
9305
10005
  ...state,
@@ -9328,18 +10028,21 @@ const handleInput = async (state, name, value, inputSource = 'user') => {
9328
10028
  if (name !== Composer) {
9329
10029
  return state;
9330
10030
  }
9331
- if (selectedSessionId) {
10031
+ if (state.selectedSessionId) {
9332
10032
  await appendChatViewEvent({
9333
- sessionId: selectedSessionId,
10033
+ sessionId: state.selectedSessionId,
9334
10034
  timestamp: new Date().toISOString(),
9335
10035
  type: 'handle-input',
9336
10036
  value
9337
10037
  });
9338
10038
  }
9339
10039
  const composerHeight = await getComposerHeight(state, value);
10040
+ const composerAttachmentsHeight = getComposerAttachmentsHeight(state.composerAttachments, state.width);
10041
+ const chatInputHistoryDraft = state.chatInputHistoryIndex === -1 ? value : state.chatInputHistoryDraft;
9340
10042
  return {
9341
10043
  ...state,
9342
- chatInputHistoryDraft: state.chatInputHistoryIndex === -1 ? value : state.chatInputHistoryDraft,
10044
+ chatInputHistoryDraft,
10045
+ composerAttachmentsHeight,
9343
10046
  composerHeight,
9344
10047
  composerSelectionEnd: value.length,
9345
10048
  composerSelectionStart: value.length,
@@ -9395,6 +10098,18 @@ const handleInputFocus = async (state, name) => {
9395
10098
  };
9396
10099
  };
9397
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
+ };
9398
10113
  const submitRename = async state => {
9399
10114
  const {
9400
10115
  composerValue,
@@ -9408,29 +10123,24 @@ const submitRename = async state => {
9408
10123
  renamingSessionId: ''
9409
10124
  };
9410
10125
  }
10126
+ const promptedTitle = sanitizeGeneratedTitle(await invoke('Main.prompt', title));
10127
+ if (!promptedTitle) {
10128
+ return getSubmittedRenameState(state, sessions);
10129
+ }
9411
10130
  const updatedSessions = sessions.map(session => {
9412
10131
  if (session.id !== renamingSessionId) {
9413
10132
  return session;
9414
10133
  }
9415
10134
  return {
9416
10135
  ...session,
9417
- title
10136
+ title: promptedTitle
9418
10137
  };
9419
10138
  });
9420
10139
  const renamedSession = updatedSessions.find(session => session.id === renamingSessionId);
9421
10140
  if (renamedSession) {
9422
10141
  await saveChatSession(renamedSession);
9423
10142
  }
9424
- return {
9425
- ...state,
9426
- composerHeight: getMinComposerHeightForState(state),
9427
- composerSelectionEnd: 0,
9428
- composerSelectionStart: 0,
9429
- composerValue: '',
9430
- inputSource: 'script',
9431
- renamingSessionId: '',
9432
- sessions: updatedSessions
9433
- };
10143
+ return getSubmittedRenameState(state, updatedSessions);
9434
10144
  };
9435
10145
 
9436
10146
  const handleKeyDown = async (state, key, shiftKey) => {
@@ -9464,19 +10174,77 @@ const handleMissingOpenRouterApiKeyFormSubmit = async state => {
9464
10174
  };
9465
10175
 
9466
10176
  const handleModelChange = async (state, value) => {
10177
+ const {
10178
+ modelPickerHeaderHeight,
10179
+ models
10180
+ } = state;
9467
10181
  return {
9468
10182
  ...state,
9469
10183
  agentModePickerOpen: false,
9470
- modelPickerHeight: getModelPickerHeight(state.modelPickerHeaderHeight, state.models.length),
10184
+ modelPickerHeight: getModelPickerHeight(modelPickerHeaderHeight, models.length),
9471
10185
  modelPickerListScrollTop: 0,
9472
10186
  modelPickerOpen: false,
9473
10187
  modelPickerSearchValue: '',
9474
10188
  reasoningEffortPickerOpen: false,
9475
10189
  selectedModelId: value,
9476
- visibleModels: state.models
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
9477
10237
  };
9478
10238
  };
9479
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
+
9480
10248
  const handleNewline = async state => {
9481
10249
  const {
9482
10250
  composerValue
@@ -9502,7 +10270,7 @@ const handleProjectAddButtonContextMenu = async (state, button, x, y) => {
9502
10270
  return state;
9503
10271
  };
9504
10272
 
9505
- const getProjectIdAtIndex = (state, index) => {
10273
+ const getProjectAtIndex = (state, index) => {
9506
10274
  const {
9507
10275
  projectExpandedIds,
9508
10276
  projects,
@@ -9512,7 +10280,7 @@ const getProjectIdAtIndex = (state, index) => {
9512
10280
  let currentIndex = 0;
9513
10281
  for (const project of projects) {
9514
10282
  if (currentIndex === index) {
9515
- return project.id;
10283
+ return project;
9516
10284
  }
9517
10285
  currentIndex++;
9518
10286
  if (projectExpandedIds.includes(project.id)) {
@@ -9522,13 +10290,13 @@ const getProjectIdAtIndex = (state, index) => {
9522
10290
  continue;
9523
10291
  }
9524
10292
  if (currentIndex === index) {
9525
- return project.id;
10293
+ return project;
9526
10294
  }
9527
10295
  currentIndex++;
9528
10296
  }
9529
10297
  }
9530
10298
  }
9531
- return '';
10299
+ return undefined;
9532
10300
  };
9533
10301
  const handleProjectListContextMenu = async (state, button, x, y) => {
9534
10302
  const {
@@ -9541,13 +10309,14 @@ const handleProjectListContextMenu = async (state, button, x, y) => {
9541
10309
  if (index < 0) {
9542
10310
  return state;
9543
10311
  }
9544
- const projectId = getProjectIdAtIndex(state, index);
9545
- if (!projectId) {
10312
+ const project = getProjectAtIndex(state, index);
10313
+ if (!project) {
9546
10314
  return state;
9547
10315
  }
9548
10316
  await showContextMenu2(uid, MenuChatProjectList, x, y, {
10317
+ canRemoveProject: project.name !== '_blank',
9549
10318
  menuId: MenuChatProjectList,
9550
- projectId
10319
+ projectId: project.id
9551
10320
  });
9552
10321
  return state;
9553
10322
  };
@@ -9670,6 +10439,23 @@ const getSavedChatListScrollTop = savedState => {
9670
10439
  return chatListScrollTop;
9671
10440
  };
9672
10441
 
10442
+ const getSavedComposerSelection = (savedState, composerValue) => {
10443
+ if (!isObject$1(savedState)) {
10444
+ return undefined;
10445
+ }
10446
+ const {
10447
+ composerSelectionEnd,
10448
+ composerSelectionStart
10449
+ } = savedState;
10450
+ if (typeof composerSelectionStart !== 'number') {
10451
+ return undefined;
10452
+ }
10453
+ if (typeof composerSelectionEnd !== 'number') {
10454
+ return undefined;
10455
+ }
10456
+ return getNormalizedComposerSelection(composerValue, composerSelectionStart, composerSelectionEnd);
10457
+ };
10458
+
9673
10459
  const getSavedComposerValue = savedState => {
9674
10460
  if (!isObject$1(savedState)) {
9675
10461
  return undefined;
@@ -9971,6 +10757,15 @@ const loadReasoningPickerEnabled = async () => {
9971
10757
  }
9972
10758
  };
9973
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
+
9974
10769
  const loadSearchEnabled = async () => {
9975
10770
  try {
9976
10771
  const savedSearchEnabled = await get('chatView.searchEnabled');
@@ -10062,7 +10857,7 @@ const loadVoiceDictationEnabled = async () => {
10062
10857
  };
10063
10858
 
10064
10859
  const loadPreferences = async () => {
10065
- 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()]);
10066
10861
  return {
10067
10862
  aiSessionTitleGenerationEnabled,
10068
10863
  authAccessToken,
@@ -10076,6 +10871,7 @@ const loadPreferences = async () => {
10076
10871
  openRouterApiKey,
10077
10872
  passIncludeObfuscation,
10078
10873
  reasoningPickerEnabled,
10874
+ scrollDownButtonEnabled,
10079
10875
  searchEnabled,
10080
10876
  streamingEnabled,
10081
10877
  todoListToolEnabled,
@@ -10133,6 +10929,9 @@ const loadContent = async (state, savedState) => {
10133
10929
  const savedSelectedModelId = getSavedSelectedModelId(savedState);
10134
10930
  const savedViewMode = getSavedViewMode(savedState);
10135
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];
10136
10935
  const {
10137
10936
  aiSessionTitleGenerationEnabled,
10138
10937
  authAccessToken,
@@ -10146,6 +10945,7 @@ const loadContent = async (state, savedState) => {
10146
10945
  openRouterApiKey,
10147
10946
  passIncludeObfuscation,
10148
10947
  reasoningPickerEnabled,
10948
+ scrollDownButtonEnabled,
10149
10949
  searchEnabled,
10150
10950
  streamingEnabled,
10151
10951
  todoListToolEnabled,
@@ -10221,9 +11021,12 @@ const loadContent = async (state, savedState) => {
10221
11021
  chatHistoryEnabled,
10222
11022
  chatListScrollTop,
10223
11023
  composerAttachments,
11024
+ composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, state.width),
10224
11025
  composerDropActive: false,
10225
11026
  composerDropEnabled,
10226
- composerValue: savedComposerValue ?? state.composerValue,
11027
+ composerSelectionEnd,
11028
+ composerSelectionStart,
11029
+ composerValue,
10227
11030
  emitStreamingFunctionCallEvents,
10228
11031
  initial: false,
10229
11032
  lastNormalViewMode,
@@ -10245,6 +11048,7 @@ const loadContent = async (state, savedState) => {
10245
11048
  reasoningEffortPickerOpen: false,
10246
11049
  reasoningPickerEnabled,
10247
11050
  runModePickerOpen: false,
11051
+ scrollDownButtonEnabled,
10248
11052
  searchEnabled,
10249
11053
  searchFieldVisible: false,
10250
11054
  searchValue: '',
@@ -10302,7 +11106,7 @@ const mockOpenApiRequestGetAll = _state => {
10302
11106
  };
10303
11107
 
10304
11108
  const mockOpenApiRequestReset = state => {
10305
- reset$1();
11109
+ reset$2();
10306
11110
  return state;
10307
11111
  };
10308
11112
 
@@ -10327,20 +11131,43 @@ const mockOpenApiStreamPushChunk = (state, chunk) => {
10327
11131
  };
10328
11132
 
10329
11133
  const mockOpenApiStreamReset = state => {
10330
- reset$2();
11134
+ reset$1();
10331
11135
  return state;
10332
11136
  };
10333
11137
 
10334
- const openMockSession = async (state, mockSessionId, mockChatMessages) => {
10335
- const {
10336
- sessions: currentSessions
10337
- } = state;
10338
- if (!mockSessionId) {
11138
+ const openMockProject = async (state, projectId, projectName, projectUri) => {
11139
+ if (!projectId || !projectName) {
10339
11140
  return state;
10340
11141
  }
10341
- const parsedMessages = await parseAndStoreMessagesContentWithWorkerPreference(state.parsedMessages, mockChatMessages, state.useChatMessageParsingWorker);
10342
- const existingSession = currentSessions.find(session => session.id === mockSessionId);
10343
- const sessions = existingSession ? currentSessions.map(session => {
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
+
11161
+ const openMockSession = async (state, mockSessionId, mockChatMessages) => {
11162
+ const {
11163
+ sessions: currentSessions
11164
+ } = state;
11165
+ if (!mockSessionId) {
11166
+ return state;
11167
+ }
11168
+ const parsedMessages = await parseAndStoreMessagesContentWithWorkerPreference(state.parsedMessages, mockChatMessages, state.useChatMessageParsingWorker);
11169
+ const existingSession = currentSessions.find(session => session.id === mockSessionId);
11170
+ const sessions = existingSession ? currentSessions.map(session => {
10344
11171
  if (session.id !== mockSessionId) {
10345
11172
  return session;
10346
11173
  }
@@ -10360,6 +11187,7 @@ const openMockSession = async (state, mockSessionId, mockChatMessages) => {
10360
11187
  return {
10361
11188
  ...state,
10362
11189
  composerAttachments: [],
11190
+ composerAttachmentsHeight: 0,
10363
11191
  parsedMessages,
10364
11192
  renamingSessionId: '',
10365
11193
  selectedSessionId: mockSessionId,
@@ -10374,19 +11202,24 @@ const pasteInput = async state => {
10374
11202
  };
10375
11203
 
10376
11204
  const registerMockResponse = (state, mockResponse) => {
10377
- reset$2();
11205
+ reset$1();
10378
11206
  pushChunk(mockResponse.text);
10379
11207
  finish();
10380
11208
  return state;
10381
11209
  };
10382
11210
 
10383
- const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFontSize, chatMessageLineHeight, chatMessageFontFamily, chatFocusContentMaxWidth, textAreaPaddingTop, textAreaPaddingLeft, textAreaPaddingRight, textAreaPaddingBottom, chatSendAreaPaddingTop, chatSendAreaPaddingLeft, chatSendAreaPaddingRight, chatSendAreaPaddingBottom, renderHtmlCss) => {
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) => {
10384
11216
  const buttonsHeight = 20;
10385
11217
  const gap = 10;
10386
11218
  const contentPadding = 10;
10387
- const chatSendAreaHeight = composerHeight + chatSendAreaPaddingTop + chatSendAreaPaddingBottom + buttonsHeight + gap + contentPadding * 2;
11219
+ const chatSendAreaHeight = composerHeight + composerAttachmentsHeight + chatSendAreaPaddingTop + chatSendAreaPaddingBottom + buttonsHeight + gap + contentPadding * 2;
10388
11220
  const baseCss = `:root {
10389
11221
  --ChatInputBoxHeight: ${composerHeight}px;
11222
+ --ChatComposerAttachmentsHeight: ${composerAttachmentsHeight}px;
10390
11223
  --ChatTextAreaHeight: ${composerHeight}px;
10391
11224
  --ChatSendAreaHeight: ${chatSendAreaHeight}px;
10392
11225
  --ChatTextAreaPaddingTop: ${textAreaPaddingTop}px;
@@ -10421,10 +11254,12 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
10421
11254
  }
10422
11255
 
10423
11256
  .ChatComposerAttachment{
11257
+ align-items: center;
11258
+ display: inline-flex;
11259
+ gap: 6px;
10424
11260
  max-width: 100%;
11261
+ min-width: 0;
10425
11262
  overflow: hidden;
10426
- white-space: nowrap;
10427
- text-overflow: ellipsis;
10428
11263
  border-radius: 999px;
10429
11264
  border: 1px solid var(--vscode-widget-border, var(--vscode-panel-border));
10430
11265
  padding: 4px 10px;
@@ -10433,6 +11268,35 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
10433
11268
  font-size: 12px;
10434
11269
  }
10435
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
+
10436
11300
  .ChatComposerAttachmentImage{
10437
11301
  border-color: var(--vscode-charts-blue);
10438
11302
  }
@@ -10446,6 +11310,93 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
10446
11310
  border-color: var(--vscode-charts-green, var(--vscode-widget-border, var(--vscode-panel-border)));
10447
11311
  }
10448
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
+
10449
11400
  .CustomSelectContainer{
10450
11401
  position: relative;
10451
11402
  min-width: 0;
@@ -10457,6 +11408,20 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
10457
11408
  justify-content: flex-end;
10458
11409
  }
10459
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
+
10460
11425
  .RunModePickerPopOver{
10461
11426
  overflow: hidden;
10462
11427
  border: 1px solid var(--vscode-widget-border, var(--vscode-panel-border));
@@ -10469,6 +11434,33 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
10469
11434
  color: var(--vscode-textLink-foreground);
10470
11435
  }
10471
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
+
10472
11464
  .ChatToolCalls .ChatOrderedList{
10473
11465
  list-style: none;
10474
11466
  margin: 0;
@@ -10491,6 +11483,49 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
10491
11483
  min-width: 0;
10492
11484
  }
10493
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
+
10494
11529
  `;
10495
11530
  return `${baseCss}
10496
11531
 
@@ -10511,6 +11546,7 @@ const renderCss = (oldState, newState) => {
10511
11546
  chatSendAreaPaddingLeft,
10512
11547
  chatSendAreaPaddingRight,
10513
11548
  chatSendAreaPaddingTop,
11549
+ composerAttachmentsHeight,
10514
11550
  composerHeight,
10515
11551
  listItemHeight,
10516
11552
  modelPickerHeight,
@@ -10523,10 +11559,11 @@ const renderCss = (oldState, newState) => {
10523
11559
  uid
10524
11560
  } = newState;
10525
11561
  const renderHtmlCss = getRenderHtmlCss(sessions, selectedSessionId);
10526
- 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);
10527
11563
  return [SetCss, uid, css];
10528
11564
  };
10529
11565
 
11566
+ const pickerListSelector = '.ChatOverlays .ChatModelPickerList';
10530
11567
  const getFocusSelector = state => {
10531
11568
  const {
10532
11569
  focus,
@@ -10552,6 +11589,8 @@ const getFocusSelector = state => {
10552
11589
  }
10553
11590
  case 'model-picker-input':
10554
11591
  return `[name="${ModelPickerSearch}"]`;
11592
+ case 'picker-list':
11593
+ return pickerListSelector;
10555
11594
  case 'send-button':
10556
11595
  return '[name="send"]';
10557
11596
  default:
@@ -10562,6 +11601,9 @@ const renderFocus = (oldState, newState) => {
10562
11601
  if (newState.modelPickerOpen && !oldState.modelPickerOpen) {
10563
11602
  return [FocusSelector, `[name="${ModelPickerSearch}"]`];
10564
11603
  }
11604
+ if (newState.agentModePickerOpen && !oldState.agentModePickerOpen || newState.runModePickerOpen && !oldState.runModePickerOpen || newState.reasoningEffortPickerOpen && !oldState.reasoningEffortPickerOpen) {
11605
+ return [FocusSelector, pickerListSelector];
11606
+ }
10565
11607
  const selector = getFocusSelector(newState);
10566
11608
  return [FocusSelector, selector];
10567
11609
  };
@@ -10579,6 +11621,8 @@ const renderFocusContext = (oldState, newState) => {
10579
11621
  const HandleListContextMenu = 2;
10580
11622
  const HandleFocus = 3;
10581
11623
  const HandleInput = 4;
11624
+ const HandleMouseOut = 5;
11625
+ const HandleMouseOver = 7;
10582
11626
  const HandleClick = 11;
10583
11627
  const HandleKeyDown = 12;
10584
11628
  const HandleClickClose = 13;
@@ -10626,57 +11670,7 @@ const HandlePointerUpModelPickerList = 55;
10626
11670
  const HandleClickReasoningEffortPickerToggle = 56;
10627
11671
  const HandleClickAgentModePickerToggle = 57;
10628
11672
  const HandleContextMenuChatImageAttachment = 58;
10629
-
10630
- const getCustomSelectOptionVirtualDom = (name, label, selected, detail = '') => {
10631
- const className = mergeClassNames(ChatModelPickerItem, selected ? ChatModelPickerItemSelected : '');
10632
- const hasDetail = detail !== '';
10633
- return [{
10634
- childCount: 1,
10635
- type: Li
10636
- }, {
10637
- childCount: hasDetail ? 2 : 1,
10638
- className,
10639
- inputType: 'button',
10640
- name,
10641
- onClick: HandleClick,
10642
- type: Button$1
10643
- }, {
10644
- childCount: 1,
10645
- className: ChatModelPickerItemLabel,
10646
- name,
10647
- type: Span
10648
- }, text(label), ...(hasDetail ? [{
10649
- childCount: 1,
10650
- className: ChatModelPickerItemUsageCost,
10651
- name,
10652
- type: Span
10653
- }, text(detail)] : [])];
10654
- };
10655
-
10656
- const getCustomSelectPopOverVirtualDom = (optionCount, height, optionNodes, containerClassName = '', popOverClassName = '') => {
10657
- return [{
10658
- childCount: 1,
10659
- className: mergeClassNames(ChatModelPickerContainer, containerClassName),
10660
- type: Div
10661
- }, {
10662
- childCount: 1,
10663
- className: mergeClassNames(ChatModelPicker, popOverClassName),
10664
- style: `height: ${height}px;`,
10665
- type: Div
10666
- }, {
10667
- childCount: optionCount,
10668
- className: ChatModelPickerList,
10669
- type: Ul
10670
- }, ...optionNodes];
10671
- };
10672
-
10673
- const agentModePickerHeight = agentModes.length * 28;
10674
- const getAgentModeOptionsVirtualDom = selectedAgentMode => {
10675
- return agentModes.flatMap(agentMode => getCustomSelectOptionVirtualDom(getAgentModePickerItemInputName(agentMode), getAgentModeLabel(agentMode), agentMode === selectedAgentMode));
10676
- };
10677
- const getAgentModePickerPopOverVirtualDom = selectedAgentMode => {
10678
- return getCustomSelectPopOverVirtualDom(agentModes.length, agentModePickerHeight, getAgentModeOptionsVirtualDom(selectedAgentMode));
10679
- };
11673
+ const HandleErrorComposerAttachmentPreviewOverlay = 59;
10680
11674
 
10681
11675
  const getAddContextButtonDom = () => {
10682
11676
  return [{
@@ -10717,22 +11711,22 @@ const getCustomSelectToggleVirtualDom = (label, name, open, onClick, title = lab
10717
11711
  }];
10718
11712
  };
10719
11713
 
10720
- const getAgentModePickerVirtualDom = (selectedAgentMode, agentModePickerOpen) => {
11714
+ const getCustomSelectPickerToggleVirtualDom = (label, name, open, onClick, title = label, containerChildCount = 1) => {
10721
11715
  return [{
10722
- childCount: 1,
11716
+ childCount: containerChildCount,
10723
11717
  className: CustomSelectContainer,
10724
11718
  type: Div
10725
- }, ...getCustomSelectToggleVirtualDom(getAgentModeLabel(selectedAgentMode), AgentModePickerToggle, agentModePickerOpen, HandleClickAgentModePickerToggle)];
11719
+ }, ...getCustomSelectToggleVirtualDom(label, name, open, onClick, title)];
11720
+ };
11721
+
11722
+ const getAgentModePickerVirtualDom = (selectedAgentMode, agentModePickerOpen) => {
11723
+ return getCustomSelectPickerToggleVirtualDom(getAgentModeLabel(selectedAgentMode), AgentModePickerToggle, agentModePickerOpen, HandleClickAgentModePickerToggle);
10726
11724
  };
10727
11725
 
10728
11726
  const getChatModelPickerToggleVirtualDom = (models, selectedModelId, modelPickerOpen) => {
10729
11727
  const selectedModel = models.find(model => model.id === selectedModelId);
10730
11728
  const selectedModelLabel = selectedModel ? selectedModel.name : selectedModelId;
10731
- return [{
10732
- childCount: 1,
10733
- className: CustomSelectContainer,
10734
- type: Div
10735
- }, ...getCustomSelectToggleVirtualDom(selectedModelLabel, ModelPickerToggle, modelPickerOpen, HandleClickModelPickerToggle)];
11729
+ return getCustomSelectPickerToggleVirtualDom(selectedModelLabel, ModelPickerToggle, modelPickerOpen, HandleClickModelPickerToggle);
10736
11730
  };
10737
11731
 
10738
11732
  const getCreatePullRequestButtonDom = () => {
@@ -10750,6 +11744,32 @@ const getCreatePullRequestButtonDom = () => {
10750
11744
  }];
10751
11745
  };
10752
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
+
10753
11773
  const reasoningEffortPickerHeight = reasoningEfforts.length * 28;
10754
11774
  const getReasoningEffortOptionsVirtualDom = selectedReasoningEffort => {
10755
11775
  return reasoningEfforts.flatMap(reasoningEffort => {
@@ -10759,11 +11779,7 @@ const getReasoningEffortOptionsVirtualDom = selectedReasoningEffort => {
10759
11779
  });
10760
11780
  };
10761
11781
  const getReasoningEffortPickerVirtualDom = (selectedReasoningEffort, reasoningEffortPickerOpen) => {
10762
- return [{
10763
- childCount: reasoningEffortPickerOpen ? 2 : 1,
10764
- className: CustomSelectContainer,
10765
- type: Div
10766
- }, ...getCustomSelectToggleVirtualDom(getReasoningEffortLabel(selectedReasoningEffort), ReasoningEffortPickerToggle, reasoningEffortPickerOpen, HandleClickReasoningEffortPickerToggle, 'Reasoning'), ...(reasoningEffortPickerOpen ? [{
11782
+ return [...getCustomSelectPickerToggleVirtualDom(getReasoningEffortLabel(selectedReasoningEffort), ReasoningEffortPickerToggle, reasoningEffortPickerOpen, HandleClickReasoningEffortPickerToggle, 'Reasoning', reasoningEffortPickerOpen ? 2 : 1), ...(reasoningEffortPickerOpen ? [{
10767
11783
  childCount: 1,
10768
11784
  className: mergeClassNames(ChatModelPicker, CustomSelectPopOver),
10769
11785
  style: `height: ${reasoningEffortPickerHeight}px;`,
@@ -10771,16 +11787,29 @@ const getReasoningEffortPickerVirtualDom = (selectedReasoningEffort, reasoningEf
10771
11787
  }, {
10772
11788
  childCount: reasoningEfforts.length,
10773
11789
  className: ChatModelPickerList,
11790
+ name: PickerList,
11791
+ tabIndex: -1,
10774
11792
  type: Ul
10775
11793
  }, ...getReasoningEffortOptionsVirtualDom(selectedReasoningEffort)] : [])];
10776
11794
  };
10777
11795
 
10778
11796
  const getRunModePickerVirtualDom = (selectedRunMode, runModePickerOpen) => {
11797
+ return getCustomSelectPickerToggleVirtualDom(selectedRunMode, RunModePickerToggle, runModePickerOpen, HandleClickRunModePickerToggle);
11798
+ };
11799
+
11800
+ const getScrollDownButtonDom = () => {
10779
11801
  return [{
10780
11802
  childCount: 1,
10781
- className: CustomSelectContainer,
10782
- type: Div
10783
- }, ...getCustomSelectToggleVirtualDom(selectedRunMode, RunModePickerToggle, runModePickerOpen, HandleClickRunModePickerToggle)];
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
+ }];
10784
11813
  };
10785
11814
 
10786
11815
  const getSendButtonClassName = isSendDisabled => {
@@ -10915,6 +11944,34 @@ const getComposerAttachmentClassName = displayType => {
10915
11944
  return ChatComposerAttachment;
10916
11945
  }
10917
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
+ };
10918
11975
  const getComposerAttachmentsDom = composerAttachments => {
10919
11976
  if (composerAttachments.length === 0) {
10920
11977
  return [];
@@ -10923,15 +11980,28 @@ const getComposerAttachmentsDom = composerAttachments => {
10923
11980
  childCount: composerAttachments.length,
10924
11981
  className: ChatComposerAttachments,
10925
11982
  type: Div
10926
- }, ...composerAttachments.flatMap(attachment => [{
10927
- childCount: 1,
10928
- className: mergeClassNames(ChatComposerAttachment, getComposerAttachmentClassName(attachment.displayType)),
10929
- name: getComposerAttachmentInputName(attachment.attachmentId),
10930
- type: Div
10931
- }, {
10932
- text: `${getComposerAttachmentLabel(attachment.displayType)} · ${attachment.name}`,
10933
- type: Text
10934
- }])];
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
+ })];
10935
12005
  };
10936
12006
  const getComposerTextAreaDom = () => {
10937
12007
  return {
@@ -10947,15 +12017,19 @@ const getComposerTextAreaDom = () => {
10947
12017
  type: TextArea
10948
12018
  };
10949
12019
  };
10950
- 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) => {
10951
12021
  const isSendDisabled = composerValue.trim() === '';
10952
- const bottomControlsCount = 2 + (usageOverviewEnabled ? 1 : 0) + (addContextButtonEnabled ? 1 : 0) + (showCreatePullRequestButton ? 1 : 0) + (voiceDictationEnabled ? 1 : 0);
10953
- const primaryControlsCount = 2 + (reasoningPickerEnabled ? 1 : 0) + (showRunMode ? 1 : 0);
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);
10954
12027
  const hasTodoList = todoListToolEnabled && todoListItems.length > 0;
10955
12028
  const hasComposerAttachments = composerAttachments.length > 0;
10956
12029
  return [{
10957
12030
  childCount: 1,
10958
12031
  className: ChatSendArea,
12032
+ onContextMenu: HandleContextMenuChatSendAreaBottom,
10959
12033
  onSubmit: HandleSubmit,
10960
12034
  type: Form
10961
12035
  }, {
@@ -10970,8 +12044,88 @@ const getChatSendAreaDom = (composerValue, composerAttachments, agentMode, agent
10970
12044
  }, {
10971
12045
  childCount: primaryControlsCount,
10972
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,
12082
+ type: Div
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;`,
10973
12116
  type: Div
10974
- }, ...getAgentModePickerVirtualDom(agentMode, agentModePickerOpen), ...getChatModelPickerToggleVirtualDom(models, selectedModelId, modelPickerOpen), ...(reasoningPickerEnabled ? getReasoningEffortPickerVirtualDom(reasoningEffort, reasoningEffortPickerOpen) : []), ...(showRunMode ? getRunModePickerVirtualDom(runMode, runModePickerOpen) : []), ...(usageOverviewEnabled ? getUsageOverviewDom(tokensUsed, tokensMax) : []), ...(addContextButtonEnabled ? getAddContextButtonDom() : []), ...(showCreatePullRequestButton ? getCreatePullRequestButtonDom() : []), ...getSendButtonDom(isSendDisabled, voiceDictationEnabled)];
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));
10975
12129
  };
10976
12130
 
10977
12131
  const getUsageCostLabel = model => {
@@ -11040,6 +12194,91 @@ const getChatModelPickerPopOverVirtualDom = (models, selectedModelId, modelPicke
11040
12194
  }, ...getModelPickerHeaderDom(modelPickerSearchValue), ...getChatModelListVirtualDom(visibleModels, selectedModelId)];
11041
12195
  };
11042
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
+
11043
12282
  const getBoldInlineNodeDom = (inlineNode, useChatMathWorker, renderInlineNodeDom) => {
11044
12283
  return [{
11045
12284
  childCount: inlineNode.children.length,
@@ -11170,12 +12409,17 @@ const getTokenDom = token => {
11170
12409
 
11171
12410
  const getCodeBlockDom = node => {
11172
12411
  const tokenDom = node.codeTokens.flatMap(getTokenDom);
12412
+ const languageAttribute = node.language ? {
12413
+ 'data-lang': node.language
12414
+ } : {};
11173
12415
  return [{
11174
12416
  childCount: 1,
11175
- type: Pre
12417
+ type: Pre,
12418
+ ...languageAttribute
11176
12419
  }, {
11177
12420
  childCount: node.codeTokens.length,
11178
- type: Code
12421
+ type: Code,
12422
+ ...languageAttribute
11179
12423
  }, ...tokenDom];
11180
12424
  };
11181
12425
 
@@ -11203,24 +12447,69 @@ const getHeadingDom = (node, useChatMathWorker) => {
11203
12447
  }, ...node.children.flatMap(child => getInlineNodeDom(child, useChatMathWorker))];
11204
12448
  };
11205
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
+ };
11206
12482
  const getOrderedListItemDom = (item, useChatMathWorker, fallbackIndex, recurseOrdered, recurseUnordered) => {
11207
12483
  const hasNestedList = (item.nestedItems?.length || 0) > 0;
11208
12484
  const nestedListType = item.nestedListType || 'unordered-list';
12485
+ const {
12486
+ prefixChildren,
12487
+ remainingChildren
12488
+ } = splitLeadingPunctuation(item.children);
11209
12489
  const nestedListDom = hasNestedList ? [{
11210
12490
  childCount: item.nestedItems?.length || 0,
11211
12491
  className: nestedListType === 'ordered-list' ? ChatOrderedList : ChatUnorderedList,
11212
12492
  type: nestedListType === 'ordered-list' ? Ol : Ul
11213
12493
  }, ...(item.nestedItems || []).flatMap((nestedItem, index) => nestedListType === 'ordered-list' ? recurseOrdered(nestedItem, useChatMathWorker, index + 1) : recurseUnordered(nestedItem, useChatMathWorker))] : [];
11214
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))];
11215
12500
  return [{
11216
- childCount: item.children.length + (hasNestedList ? 1 : 0) + 1,
12501
+ childCount: 2,
11217
12502
  className: ChatOrderedListItem,
11218
12503
  type: Li
11219
12504
  }, {
11220
12505
  childCount: 1,
11221
12506
  className: ChatOrderedListMarker,
11222
12507
  type: Span
11223
- }, text(marker), ...item.children.flatMap(child => getInlineNodeDom(child, useChatMathWorker)), ...nestedListDom];
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];
11224
12513
  };
11225
12514
 
11226
12515
  const getTableHeadCellDom = (cell, useChatMathWorker) => {
@@ -11623,11 +12912,22 @@ const getReadFileTarget = rawArguments => {
11623
12912
  };
11624
12913
  };
11625
12914
 
11626
- const getToolCallFileNameDom = (fileName, fileNameClickableProps = {}) => {
12915
+ const getToolCallFileNameDom = (fileName, {
12916
+ clickableProps = {},
12917
+ title
12918
+ } = {}) => {
11627
12919
  return [{
12920
+ childCount: 1,
12921
+ className: ChatToolCallReadFileLink,
12922
+ ...(title === undefined ? {} : {
12923
+ title
12924
+ }),
12925
+ ...clickableProps,
12926
+ type: Span
12927
+ }, {
11628
12928
  childCount: 1,
11629
12929
  className: ChatToolCallFileName,
11630
- ...fileNameClickableProps,
12930
+ ...clickableProps,
11631
12931
  type: Span
11632
12932
  }, text(fileName)];
11633
12933
  };
@@ -11656,75 +12956,9 @@ const getToolCallCreateDirectoryVirtualDom = toolCall => {
11656
12956
  childCount: 1,
11657
12957
  className: ToolCallName,
11658
12958
  type: Span
11659
- }, text('create_directory '), {
11660
- childCount: 1,
11661
- className: ChatToolCallReadFileLink,
11662
- ...fileNameClickableProps,
11663
- type: Span
11664
- }, ...getToolCallFileNameDom(directoryName, fileNameClickableProps), ...(statusLabel ? [text(statusLabel)] : [])];
11665
- };
11666
-
11667
- const getToolCallEditFileVirtualDom = toolCall => {
11668
- const target = getReadFileTarget(toolCall.arguments);
11669
- if (!target) {
11670
- return [];
11671
- }
11672
- const fileName = getFileNameFromUri(target.title);
11673
- const fileNameClickableProps = target.clickableUri ? {
11674
- 'data-uri': target.clickableUri,
11675
- onClick: HandleClickFileName
11676
- } : {};
11677
- return [{
11678
- childCount: 3,
11679
- className: ChatOrderedListItem,
11680
- title: target.title,
11681
- type: Li
11682
- }, {
11683
- childCount: 0,
11684
- className: FileIcon,
11685
- type: Div
11686
- }, {
11687
- childCount: 1,
11688
- className: ToolCallName,
11689
- type: Span
11690
- }, text('edit_file '), {
11691
- childCount: 1,
11692
- className: ChatToolCallReadFileLink,
11693
- title: target.clickableUri,
11694
- ...fileNameClickableProps,
11695
- type: Span
11696
- }, ...getToolCallFileNameDom(fileName, fileNameClickableProps)];
11697
- };
11698
-
11699
- const getToolCallGetWorkspaceUriVirtualDom = toolCall => {
11700
- if (!toolCall.result) {
11701
- return [];
11702
- }
11703
- const statusLabel = getToolCallStatusLabel(toolCall);
11704
- const fileName = getFileNameFromUri(toolCall.result);
11705
- const fileNameClickableProps = {
11706
- 'data-uri': toolCall.result,
11707
- onClick: HandleClickFileName
11708
- };
11709
- return [{
11710
- childCount: statusLabel ? 4 : 3,
11711
- className: ChatOrderedListItem,
11712
- title: toolCall.result,
11713
- type: Li
11714
- }, {
11715
- childCount: 0,
11716
- className: FileIcon,
11717
- type: Div
11718
- }, {
11719
- childCount: 1,
11720
- className: ToolCallName,
11721
- type: Span
11722
- }, text('get_workspace_uri '), {
11723
- childCount: 1,
11724
- className: ChatToolCallReadFileLink,
11725
- ...fileNameClickableProps,
11726
- type: Span
11727
- }, ...getToolCallFileNameDom(fileName, fileNameClickableProps), ...(statusLabel ? [text(statusLabel)] : [])];
12959
+ }, text('create_directory '), ...getToolCallFileNameDom(directoryName, {
12960
+ clickableProps: fileNameClickableProps
12961
+ }), ...(statusLabel ? [text(statusLabel)] : [])];
11728
12962
  };
11729
12963
 
11730
12964
  const getToolCallArgumentPreview = rawArguments => {
@@ -11785,20 +13019,99 @@ const hasIncompleteJsonArguments = rawArguments => {
11785
13019
  }
11786
13020
  };
11787
13021
 
11788
- const getToolCallLabel = toolCall => {
11789
- const displayName = getToolCallDisplayName(toolCall.name);
11790
- if (toolCall.name === 'write_file' && !toolCall.status && hasIncompleteJsonArguments(toolCall.arguments)) {
11791
- return `${displayName} (in progress)`;
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 [];
11792
13064
  }
11793
- if ((toolCall.name === 'list_files' || toolCall.name === 'grep_search') && !toolCall.status && hasIncompleteJsonArguments(toolCall.arguments)) {
11794
- return displayName;
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 [];
11795
13092
  }
11796
- const argumentPreview = getToolCallArgumentPreview(toolCall.arguments);
11797
13093
  const statusLabel = getToolCallStatusLabel(toolCall);
11798
- if (argumentPreview === '{}') {
11799
- return `${displayName}${statusLabel}`;
11800
- }
11801
- return `${displayName} ${argumentPreview}${statusLabel}`;
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)] : [])];
11802
13115
  };
11803
13116
 
11804
13117
  const getToolCallReadFileVirtualDom = toolCall => {
@@ -11826,12 +13139,9 @@ const getToolCallReadFileVirtualDom = toolCall => {
11826
13139
  childCount: 1,
11827
13140
  className: ToolCallName,
11828
13141
  type: Span
11829
- }, text(toolNameLabel), {
11830
- childCount: 1,
11831
- className: ChatToolCallReadFileLink,
11832
- ...fileNameClickableProps,
11833
- type: Span
11834
- }, ...getToolCallFileNameDom(fileName, fileNameClickableProps), ...(statusLabel ? [text(statusLabel)] : [])];
13142
+ }, text(toolNameLabel), ...getToolCallFileNameDom(fileName, {
13143
+ clickableProps: fileNameClickableProps
13144
+ }), ...(statusLabel ? [text(statusLabel)] : [])];
11835
13145
  };
11836
13146
 
11837
13147
  const maxHtmlLength = 40_000;
@@ -12208,12 +13518,9 @@ const getToolCallWriteFileVirtualDom = toolCall => {
12208
13518
  childCount: 1,
12209
13519
  className: ToolCallName,
12210
13520
  type: Span
12211
- }, text('write_file '), {
12212
- childCount: 1,
12213
- className: ChatToolCallReadFileLink,
12214
- ...fileNameClickableProps,
12215
- type: Span
12216
- }, ...getToolCallFileNameDom(fileName, fileNameClickableProps), ...(showDiffStats ? [{
13521
+ }, text('write_file '), ...getToolCallFileNameDom(fileName, {
13522
+ clickableProps: fileNameClickableProps
13523
+ }), ...(showDiffStats ? [{
12217
13524
  childCount: 1,
12218
13525
  className: Insertion,
12219
13526
  type: Span
@@ -12224,7 +13531,6 @@ const getToolCallWriteFileVirtualDom = toolCall => {
12224
13531
  }, text(` -${linesDeleted}`)] : []), ...(statusLabel ? [text(statusLabel)] : [])];
12225
13532
  };
12226
13533
 
12227
- const RE_TOOL_NAME_PREFIX = /^([^ :]+)/;
12228
13534
  const getToolCallDom = toolCall => {
12229
13535
  if (toolCall.name === 'getWorkspaceUri') {
12230
13536
  const virtualDom = getToolCallGetWorkspaceUriVirtualDom(toolCall);
@@ -12268,24 +13574,7 @@ const getToolCallDom = toolCall => {
12268
13574
  return virtualDom;
12269
13575
  }
12270
13576
  }
12271
- const label = getToolCallLabel(toolCall);
12272
- const match = RE_TOOL_NAME_PREFIX.exec(label);
12273
- const toolNamePrefix = match ? match[1] : label;
12274
- const suffix = label.slice(toolNamePrefix.length);
12275
- const hasSuffix = suffix.length > 0;
12276
- const hoverTitle = hasSuffix && toolCall.arguments.trim() ? toolCall.arguments : undefined;
12277
- return [{
12278
- childCount: hasSuffix ? 2 : 1,
12279
- className: ChatOrderedListItem,
12280
- ...(hoverTitle ? {
12281
- title: hoverTitle
12282
- } : {}),
12283
- type: Li
12284
- }, {
12285
- childCount: 1,
12286
- className: ToolCallName,
12287
- type: Span
12288
- }, text(toolNamePrefix), ...(hasSuffix ? [text(suffix)] : [])];
13577
+ return getToolCallDefaultDom(toolCall);
12289
13578
  };
12290
13579
 
12291
13580
  const withOrderedListMarker = (virtualDom, index) => {
@@ -12343,6 +13632,70 @@ const getTopLevelNodeCount = nodes => {
12343
13632
  return topLevelCount;
12344
13633
  };
12345
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
+ };
12346
13699
  const getChatMessageDom = (message, parsedMessageContent, _openRouterApiKeyInput, _openApiApiKeyInput = '', openApiApiKeyState = 'idle', openApiApiKeysSettingsUrl = 'https://platform.openai.com/api-keys', openApiApiKeyInputPattern = '^sk-.+', openRouterApiKeyState = 'idle', useChatMathWorker = false) => {
12347
13700
  const roleClassName = message.role === 'user' ? MessageUser : MessageAssistant;
12348
13701
  const isOpenApiApiKeyMissingMessage = message.role === 'assistant' && message.text === openApiApiKeyRequiredMessage;
@@ -12350,10 +13703,12 @@ const getChatMessageDom = (message, parsedMessageContent, _openRouterApiKeyInput
12350
13703
  const isOpenRouterRequestFailedMessage = message.role === 'assistant' && message.text === openRouterRequestFailedMessage;
12351
13704
  const isOpenRouterTooManyRequestsMessage = message.role === 'assistant' && message.text.startsWith(openRouterTooManyRequestsMessage);
12352
13705
  const messageDom = getMessageContentDom(parsedMessageContent, useChatMathWorker);
13706
+ const attachmentsDom = message.role === 'user' ? getChatAttachmentsDom(message.attachments ?? []) : [];
12353
13707
  const toolCallsDom = getToolCallsDom(message);
12354
13708
  const toolCallsChildCount = toolCallsDom.length > 0 ? 1 : 0;
12355
13709
  const messageDomChildCount = getTopLevelNodeCount(messageDom);
12356
- const extraChildCount = isOpenApiApiKeyMissingMessage || isOpenRouterApiKeyMissingMessage || isOpenRouterRequestFailedMessage || isOpenRouterTooManyRequestsMessage ? messageDomChildCount + 1 + toolCallsChildCount : messageDomChildCount + toolCallsChildCount;
13710
+ const attachmentsChildCount = attachmentsDom.length > 0 ? 1 : 0;
13711
+ const extraChildCount = isOpenApiApiKeyMissingMessage || isOpenRouterApiKeyMissingMessage || isOpenRouterRequestFailedMessage || isOpenRouterTooManyRequestsMessage ? messageDomChildCount + 1 + toolCallsChildCount + attachmentsChildCount : messageDomChildCount + toolCallsChildCount + attachmentsChildCount;
12357
13712
  return [{
12358
13713
  childCount: 1,
12359
13714
  className: mergeClassNames(Message, roleClassName),
@@ -12362,7 +13717,7 @@ const getChatMessageDom = (message, parsedMessageContent, _openRouterApiKeyInput
12362
13717
  childCount: extraChildCount,
12363
13718
  className: ChatMessageContent,
12364
13719
  type: Div
12365
- }, ...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() : [])];
12366
13721
  };
12367
13722
 
12368
13723
  const parentNode$1 = {
@@ -12418,7 +13773,18 @@ const getDisplayMessages = (messages, parsedMessages) => {
12418
13773
  };
12419
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) => {
12420
13775
  if (messages.length === 0) {
12421
- return hideWelcomeMessage ? [] : getEmptyMessagesDom();
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
+ }];
12422
13788
  }
12423
13789
  const displayMessages = getDisplayMessages(messages, parsedMessages);
12424
13790
  return [{
@@ -12426,24 +13792,26 @@ const getMessagesDom = (messages, parsedMessages, openRouterApiKeyInput, openApi
12426
13792
  className: 'ChatMessages',
12427
13793
  onContextMenu: HandleMessagesContextMenu,
12428
13794
  onScroll: HandleMessagesScroll,
13795
+ role: 'log',
12429
13796
  scrollTop: messagesScrollTop,
12430
13797
  type: Div
12431
13798
  }, ...displayMessages.flatMap(item => getChatMessageDom(item.message, item.parsedContent, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, useChatMathWorker))];
12432
13799
  };
12433
13800
 
13801
+ const arrowLeft$1 = {
13802
+ childCount: 0,
13803
+ className: mergeClassNames(MaskIcon, MaskIconArrowLeft),
13804
+ type: Div
13805
+ };
12434
13806
  const getBackToChatsButtonDom = () => {
12435
13807
  return [{
12436
13808
  childCount: 1,
12437
- className: mergeClassNames(Button, ButtonSecondary),
12438
- inputType: 'button',
13809
+ className: IconButton,
12439
13810
  name: Back,
12440
13811
  onClick: HandleClickBack,
12441
13812
  title: backToChatList(),
12442
13813
  type: Button$1
12443
- }, {
12444
- text: backToChatList(),
12445
- type: Text
12446
- }];
13814
+ }, arrowLeft$1];
12447
13815
  };
12448
13816
 
12449
13817
  const getProjectSessionDom = (session, selectedSessionId) => {
@@ -12483,10 +13851,10 @@ const getProjectGroupDom = (project, sessions, projectExpandedIds, selectedProje
12483
13851
  tabIndex: 0,
12484
13852
  type: Div
12485
13853
  }, {
12486
- childCount: 1,
12487
- className: ProjectListChevron,
12488
- type: Span
12489
- }, text(expanded ? '▾' : '▸'), {
13854
+ childCount: 0,
13855
+ className: mergeClassNames(ProjectListChevron, MaskIcon, expanded ? MaskIconChevronDown : MaskIconChevronRight),
13856
+ type: Div
13857
+ }, {
12490
13858
  childCount: 0,
12491
13859
  className: 'MaskIcon MaskIconFolder',
12492
13860
  type: Div
@@ -12535,15 +13903,6 @@ const getProjectListDom = (projects, sessions, projectExpandedIds, selectedProje
12535
13903
  }, text('+ Add Project'), ...(showBackToChatsButton ? getBackToChatsButtonDom() : [])];
12536
13904
  };
12537
13905
 
12538
- const runModes = ['local', 'background', 'cloud'];
12539
- const runModePickerHeight = runModes.length * 28;
12540
- const getRunModeOptionsVirtualDom = selectedRunMode => {
12541
- return runModes.flatMap(runMode => getCustomSelectOptionVirtualDom(getRunModePickerItemInputName(runMode), runMode, runMode === selectedRunMode));
12542
- };
12543
- const getRunModePickerPopOverVirtualDom = selectedRunMode => {
12544
- return getCustomSelectPopOverVirtualDom(runModes.length, runModePickerHeight, getRunModeOptionsVirtualDom(selectedRunMode), RunModePickerContainer, RunModePickerPopOver);
12545
- };
12546
-
12547
13906
  const getChatModeChatFocusVirtualDom = ({
12548
13907
  addContextButtonEnabled,
12549
13908
  agentMode,
@@ -12551,6 +13910,8 @@ const getChatModeChatFocusVirtualDom = ({
12551
13910
  authEnabled = false,
12552
13911
  authErrorMessage = '',
12553
13912
  authStatus = 'signed-out',
13913
+ composerAttachmentPreviewOverlayAttachmentId,
13914
+ composerAttachmentPreviewOverlayError = false,
12554
13915
  composerAttachments,
12555
13916
  composerDropActive = false,
12556
13917
  composerDropEnabled = true,
@@ -12559,6 +13920,9 @@ const getChatModeChatFocusVirtualDom = ({
12559
13920
  composerHeight = 28,
12560
13921
  composerLineHeight = 20,
12561
13922
  composerValue,
13923
+ hasSpaceForAgentModePicker,
13924
+ hasSpaceForRunModePicker,
13925
+ messagesAutoScrollEnabled,
12562
13926
  messagesScrollTop = 0,
12563
13927
  modelPickerOpen = false,
12564
13928
  modelPickerSearchValue = '',
@@ -12578,6 +13942,7 @@ const getChatModeChatFocusVirtualDom = ({
12578
13942
  reasoningPickerEnabled,
12579
13943
  runMode,
12580
13944
  runModePickerOpen = false,
13945
+ scrollDownButtonEnabled,
12581
13946
  selectedModelId,
12582
13947
  selectedProjectId = '',
12583
13948
  selectedSessionId,
@@ -12593,31 +13958,43 @@ const getChatModeChatFocusVirtualDom = ({
12593
13958
  voiceDictationEnabled = false
12594
13959
  }) => {
12595
13960
  const selectedSession = sessions.find(session => session.id === selectedSessionId);
13961
+ const selectedProject = projects.find(project => project.id === selectedProjectId);
12596
13962
  const messages = selectedSession ? selectedSession.messages : [];
13963
+ const selectedSessionTitle = selectedSession?.title || chatTitle();
13964
+ const selectedProjectName = selectedProject?.name || '';
12597
13965
  const showCreatePullRequestButton = canCreatePullRequest(selectedSession);
12598
13966
  const isDropOverlayVisible = composerDropEnabled && composerDropActive;
12599
- const isAgentModePickerVisible = agentModePickerOpen;
13967
+ const isComposerAttachmentPreviewOverlayVisible = !!composerAttachmentPreviewOverlayAttachmentId;
13968
+ const isAgentModePickerVisible = hasSpaceForAgentModePicker && agentModePickerOpen;
12600
13969
  const isNewModelPickerVisible = modelPickerOpen;
12601
- const isRunModePickerVisible = showRunMode && runModePickerOpen;
12602
- const chatRootChildCount = 3 + (isDropOverlayVisible ? 1 : 0) + (isAgentModePickerVisible ? 1 : 0) + (isNewModelPickerVisible ? 1 : 0) + (isRunModePickerVisible ? 1 : 0);
13970
+ const isRunModePickerVisible = showRunMode && hasSpaceForRunModePicker && runModePickerOpen;
13971
+ const hasVisibleOverlays = isDropOverlayVisible || isComposerAttachmentPreviewOverlayVisible || isAgentModePickerVisible || isNewModelPickerVisible || isRunModePickerVisible;
13972
+ const chatRootChildCount = 2 + (hasVisibleOverlays ? 1 : 0);
12603
13973
  return [{
12604
13974
  childCount: chatRootChildCount,
12605
13975
  className: mergeClassNames(Viewlet, Chat, ChatFocus),
12606
13976
  onDragEnter: HandleDragEnterChatView,
12607
13977
  onDragOver: HandleDragOverChatView,
12608
13978
  type: Div
12609
- }, ...getProjectListDom(projects, sessions, projectExpandedIds, selectedProjectId, selectedSessionId, projectListScrollTop, true), ...getMessagesDom(messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, messagesScrollTop, useChatMathWorker, true), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton, voiceDictationEnabled), ...(isDropOverlayVisible ? [{
12610
- childCount: 1,
12611
- className: mergeClassNames(ChatViewDropOverlay, ChatViewDropOverlayActive),
12612
- name: ComposerDropTarget,
12613
- onDragLeave: HandleDragLeave,
12614
- onDragOver: HandleDragOver,
12615
- onDrop: HandleDrop,
13979
+ }, ...getProjectListDom(projects, sessions, projectExpandedIds, selectedProjectId, selectedSessionId, projectListScrollTop, true), {
13980
+ childCount: 3,
13981
+ className: ChatFocusMainArea,
12616
13982
  type: Div
12617
- }, {
12618
- text: attachImageAsContext(),
12619
- type: Text
12620
- }] : []), ...(isAgentModePickerVisible ? getAgentModePickerPopOverVirtualDom(agentMode) : []), ...(isNewModelPickerVisible ? getChatModelPickerPopOverVirtualDom(visibleModels, selectedModelId, modelPickerSearchValue) : []), ...(isRunModePickerVisible ? getRunModePickerPopOverVirtualDom(runMode) : [])];
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
+ })];
12621
13998
  };
12622
13999
 
12623
14000
  const arrowLeft = {
@@ -12656,22 +14033,31 @@ const getHeaderActionVirtualDom = item => {
12656
14033
  }];
12657
14034
  };
12658
14035
 
12659
- const getChatHeaderActionsDom = (viewMode, authEnabled = false, authStatus = 'signed-out', searchEnabled = false) => {
12660
- const toggleTitle = viewMode === 'chat-focus' ? normalChatMode() : chatFocusMode();
14036
+ const getAuthAction = (authEnabled, authStatus) => {
12661
14037
  const isSigningIn = authStatus === 'signing-in';
12662
- const authAction = authEnabled && authStatus !== 'signed-in' ? {
12663
- disabled: isSigningIn,
12664
- icon: mergeClassNames(MaskIcon, MaskIconAccount),
12665
- name: Login,
12666
- onClick: HandleClick,
12667
- title: isSigningIn ? loggingInToBackend() : loginToBackend()
12668
- } : authEnabled ? {
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 {
12669
14051
  disabled: false,
12670
14052
  icon: mergeClassNames(MaskIcon, MaskIconSignOut),
12671
14053
  name: Logout,
12672
14054
  onClick: HandleClick,
12673
14055
  title: logoutFromBackend()
12674
- } : undefined;
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);
12675
14061
  const items = [{
12676
14062
  icon: mergeClassNames(MaskIcon, MaskIconLayoutPanelLeft),
12677
14063
  name: ToggleChatFocus,
@@ -12704,6 +14090,7 @@ const getChatHeaderActionsDom = (viewMode, authEnabled = false, authStatus = 'si
12704
14090
  title: closeChat()
12705
14091
  }];
12706
14092
  return [{
14093
+ 'aria-label': 'chat actions',
12707
14094
  childCount: items.length,
12708
14095
  className: ChatActions,
12709
14096
  role: ToolBar,
@@ -12727,7 +14114,7 @@ const getChatHeaderDomDetailMode = (selectedSessionTitle, authEnabled = false, a
12727
14114
  childCount: hasAuthError ? 3 : 2,
12728
14115
  className: ChatHeader,
12729
14116
  onContextMenu: HandleChatHeaderContextMenu,
12730
- type: Div
14117
+ type: Header
12731
14118
  }, {
12732
14119
  childCount: 2,
12733
14120
  className: ChatName,
@@ -12746,6 +14133,8 @@ const getChatModeDetailVirtualDom = ({
12746
14133
  authEnabled = false,
12747
14134
  authErrorMessage = '',
12748
14135
  authStatus = 'signed-out',
14136
+ composerAttachmentPreviewOverlayAttachmentId,
14137
+ composerAttachmentPreviewOverlayError = false,
12749
14138
  composerAttachments,
12750
14139
  composerDropActive = false,
12751
14140
  composerDropEnabled = true,
@@ -12754,6 +14143,9 @@ const getChatModeDetailVirtualDom = ({
12754
14143
  composerHeight = 28,
12755
14144
  composerLineHeight = 20,
12756
14145
  composerValue,
14146
+ hasSpaceForAgentModePicker,
14147
+ hasSpaceForRunModePicker,
14148
+ messagesAutoScrollEnabled,
12757
14149
  messagesScrollTop = 0,
12758
14150
  modelPickerOpen = false,
12759
14151
  modelPickerSearchValue = '',
@@ -12770,6 +14162,7 @@ const getChatModeDetailVirtualDom = ({
12770
14162
  reasoningPickerEnabled,
12771
14163
  runMode,
12772
14164
  runModePickerOpen = false,
14165
+ scrollDownButtonEnabled,
12773
14166
  selectedModelId,
12774
14167
  selectedSessionId,
12775
14168
  sessions,
@@ -12788,28 +14181,33 @@ const getChatModeDetailVirtualDom = ({
12788
14181
  const messages = selectedSession ? selectedSession.messages : [];
12789
14182
  const showCreatePullRequestButton = canCreatePullRequest(selectedSession);
12790
14183
  const isDropOverlayVisible = composerDropEnabled && composerDropActive;
12791
- const isAgentModePickerVisible = agentModePickerOpen;
14184
+ const isComposerAttachmentPreviewOverlayVisible = !!composerAttachmentPreviewOverlayAttachmentId;
14185
+ const isAgentModePickerVisible = hasSpaceForAgentModePicker && agentModePickerOpen;
12792
14186
  const isNewModelPickerVisible = modelPickerOpen;
12793
- const isRunModePickerVisible = showRunMode && runModePickerOpen;
12794
- const chatRootChildCount = 3 + (isDropOverlayVisible ? 1 : 0) + (isAgentModePickerVisible ? 1 : 0) + (isNewModelPickerVisible ? 1 : 0) + (isRunModePickerVisible ? 1 : 0);
14187
+ const isRunModePickerVisible = showRunMode && hasSpaceForRunModePicker && runModePickerOpen;
14188
+ const hasVisibleOverlays = isDropOverlayVisible || isComposerAttachmentPreviewOverlayVisible || isAgentModePickerVisible || isNewModelPickerVisible || isRunModePickerVisible;
14189
+ const chatRootChildCount = 3 + (hasVisibleOverlays ? 1 : 0);
12795
14190
  return [{
12796
14191
  childCount: chatRootChildCount,
12797
14192
  className: mergeClassNames(Viewlet, Chat),
12798
14193
  onDragEnter: HandleDragEnterChatView,
12799
14194
  onDragOver: HandleDragOverChatView,
12800
14195
  type: Div
12801
- }, ...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), ...(isDropOverlayVisible ? [{
12802
- childCount: 1,
12803
- className: mergeClassNames(ChatViewDropOverlay, ChatViewDropOverlayActive),
12804
- name: ComposerDropTarget,
12805
- onDragLeave: HandleDragLeave,
12806
- onDragOver: HandleDragOver,
12807
- onDrop: HandleDrop,
12808
- type: Div
12809
- }, {
12810
- text: attachImageAsContext(),
12811
- type: Text
12812
- }] : []), ...(isAgentModePickerVisible ? getAgentModePickerPopOverVirtualDom(agentMode) : []), ...(isNewModelPickerVisible ? getChatModelPickerPopOverVirtualDom(visibleModels, selectedModelId, modelPickerSearchValue) : []), ...(isRunModePickerVisible ? getRunModePickerPopOverVirtualDom(runMode) : [])];
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
+ })];
12813
14211
  };
12814
14212
 
12815
14213
  const getChatSearchDom = (hasSearchField, searchValue) => {
@@ -12839,7 +14237,7 @@ const getChatHeaderListModeDom = (authEnabled = false, authStatus = 'signed-out'
12839
14237
  childCount: headerChildCount,
12840
14238
  className: ChatHeader,
12841
14239
  onContextMenu: HandleChatHeaderContextMenu,
12842
- type: Div
14240
+ type: Header
12843
14241
  }, {
12844
14242
  childCount: 1,
12845
14243
  className: ChatHeaderLabel,
@@ -12938,23 +14336,6 @@ const getChatListDom = (sessions, selectedSessionId, listFocusedIndex, chatListS
12938
14336
  }, ...sessions.flatMap((session, index) => getSessionDom(session, index === listFocusedIndex))];
12939
14337
  };
12940
14338
 
12941
- const getDropOverlayVirtualDom = isDropOverlayVisible => {
12942
- if (!isDropOverlayVisible) {
12943
- return [];
12944
- }
12945
- return [{
12946
- childCount: 1,
12947
- className: mergeClassNames(ChatViewDropOverlay, ChatViewDropOverlayActive),
12948
- name: ComposerDropTarget,
12949
- onDragLeave: HandleDragLeave,
12950
- onDragOver: HandleDragOver,
12951
- onDrop: HandleDrop,
12952
- type: Div
12953
- }, {
12954
- text: attachImageAsContext(),
12955
- type: Text
12956
- }];
12957
- };
12958
14339
  const getChatModeListVirtualDom = ({
12959
14340
  addContextButtonEnabled,
12960
14341
  agentMode,
@@ -12963,6 +14344,8 @@ const getChatModeListVirtualDom = ({
12963
14344
  authErrorMessage = '',
12964
14345
  authStatus = 'signed-out',
12965
14346
  chatListScrollTop = 0,
14347
+ composerAttachmentPreviewOverlayAttachmentId,
14348
+ composerAttachmentPreviewOverlayError = false,
12966
14349
  composerAttachments,
12967
14350
  composerDropActive = false,
12968
14351
  composerDropEnabled = true,
@@ -12971,6 +14354,8 @@ const getChatModeListVirtualDom = ({
12971
14354
  composerHeight = 28,
12972
14355
  composerLineHeight = 20,
12973
14356
  composerValue,
14357
+ hasSpaceForAgentModePicker,
14358
+ hasSpaceForRunModePicker,
12974
14359
  listFocusedIndex = -1,
12975
14360
  modelPickerOpen = false,
12976
14361
  modelPickerSearchValue = '',
@@ -12996,10 +14381,12 @@ const getChatModeListVirtualDom = ({
12996
14381
  voiceDictationEnabled = false
12997
14382
  }) => {
12998
14383
  const isDropOverlayVisible = composerDropEnabled && composerDropActive;
12999
- const isAgentModePickerVisible = agentModePickerOpen;
14384
+ const isComposerAttachmentPreviewOverlayVisible = !!composerAttachmentPreviewOverlayAttachmentId;
14385
+ const isAgentModePickerVisible = hasSpaceForAgentModePicker && agentModePickerOpen;
13000
14386
  const isNewModelPickerVisible = modelPickerOpen;
13001
- const isRunModePickerVisible = showRunMode && runModePickerOpen;
13002
- const chatRootChildCount = 3 + (isDropOverlayVisible ? 1 : 0) + (isAgentModePickerVisible ? 1 : 0) + (isNewModelPickerVisible ? 1 : 0) + (isRunModePickerVisible ? 1 : 0);
14387
+ const isRunModePickerVisible = showRunMode && hasSpaceForRunModePicker && runModePickerOpen;
14388
+ const hasVisibleOverlays = isDropOverlayVisible || isComposerAttachmentPreviewOverlayVisible || isAgentModePickerVisible || isNewModelPickerVisible || isRunModePickerVisible;
14389
+ const chatRootChildCount = 3 + (hasVisibleOverlays ? 1 : 0);
13003
14390
  const searchValueTrimmed = searchValue.trim().toLowerCase();
13004
14391
  const visibleSessions = searchEnabled && searchValueTrimmed ? sessions.filter(session => session.title.toLowerCase().includes(searchValueTrimmed)) : sessions;
13005
14392
  return [{
@@ -13008,7 +14395,21 @@ const getChatModeListVirtualDom = ({
13008
14395
  onDragEnter: HandleDragEnterChatView,
13009
14396
  onDragOver: HandleDragOverChatView,
13010
14397
  type: Div
13011
- }, ...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), ...getDropOverlayVirtualDom(isDropOverlayVisible), ...(isAgentModePickerVisible ? getAgentModePickerPopOverVirtualDom(agentMode) : []), ...(isNewModelPickerVisible ? getChatModelPickerPopOverVirtualDom(visibleModels, selectedModelId, modelPickerSearchValue) : []), ...(isRunModePickerVisible ? getRunModePickerPopOverVirtualDom(runMode) : [])];
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
+ })];
13012
14413
  };
13013
14414
 
13014
14415
  const getChatModeUnsupportedVirtualDom = () => {
@@ -13099,6 +14500,8 @@ const getChatVirtualDom = options => {
13099
14500
  authErrorMessage = '',
13100
14501
  authStatus = 'signed-out',
13101
14502
  chatListScrollTop,
14503
+ composerAttachmentPreviewOverlayAttachmentId,
14504
+ composerAttachmentPreviewOverlayError = false,
13102
14505
  composerAttachments,
13103
14506
  composerDropActive = false,
13104
14507
  composerDropEnabled = true,
@@ -13107,7 +14510,10 @@ const getChatVirtualDom = options => {
13107
14510
  composerHeight,
13108
14511
  composerLineHeight,
13109
14512
  composerValue,
14513
+ hasSpaceForAgentModePicker,
14514
+ hasSpaceForRunModePicker,
13110
14515
  listFocusedIndex = -1,
14516
+ messagesAutoScrollEnabled,
13111
14517
  messagesScrollTop,
13112
14518
  modelPickerOpen = false,
13113
14519
  modelPickerSearchValue = '',
@@ -13127,6 +14533,7 @@ const getChatVirtualDom = options => {
13127
14533
  reasoningPickerEnabled,
13128
14534
  runMode,
13129
14535
  runModePickerOpen = false,
14536
+ scrollDownButtonEnabled,
13130
14537
  searchEnabled = false,
13131
14538
  searchFieldVisible = false,
13132
14539
  searchValue = '',
@@ -13155,6 +14562,8 @@ const getChatVirtualDom = options => {
13155
14562
  authEnabled,
13156
14563
  authErrorMessage,
13157
14564
  authStatus,
14565
+ composerAttachmentPreviewOverlayAttachmentId,
14566
+ composerAttachmentPreviewOverlayError,
13158
14567
  composerAttachments,
13159
14568
  composerDropActive,
13160
14569
  composerDropEnabled,
@@ -13163,6 +14572,9 @@ const getChatVirtualDom = options => {
13163
14572
  composerHeight,
13164
14573
  composerLineHeight,
13165
14574
  composerValue,
14575
+ hasSpaceForAgentModePicker,
14576
+ hasSpaceForRunModePicker,
14577
+ messagesAutoScrollEnabled,
13166
14578
  messagesScrollTop,
13167
14579
  modelPickerOpen,
13168
14580
  modelPickerSearchValue,
@@ -13182,6 +14594,7 @@ const getChatVirtualDom = options => {
13182
14594
  reasoningPickerEnabled,
13183
14595
  runMode,
13184
14596
  runModePickerOpen,
14597
+ scrollDownButtonEnabled,
13185
14598
  selectedModelId,
13186
14599
  selectedProjectId,
13187
14600
  selectedSessionId,
@@ -13204,6 +14617,8 @@ const getChatVirtualDom = options => {
13204
14617
  authEnabled,
13205
14618
  authErrorMessage,
13206
14619
  authStatus,
14620
+ composerAttachmentPreviewOverlayAttachmentId,
14621
+ composerAttachmentPreviewOverlayError,
13207
14622
  composerAttachments,
13208
14623
  composerDropActive,
13209
14624
  composerDropEnabled,
@@ -13212,6 +14627,9 @@ const getChatVirtualDom = options => {
13212
14627
  composerHeight,
13213
14628
  composerLineHeight,
13214
14629
  composerValue,
14630
+ hasSpaceForAgentModePicker,
14631
+ hasSpaceForRunModePicker,
14632
+ messagesAutoScrollEnabled,
13215
14633
  messagesScrollTop,
13216
14634
  modelPickerOpen,
13217
14635
  modelPickerSearchValue,
@@ -13228,6 +14646,7 @@ const getChatVirtualDom = options => {
13228
14646
  reasoningPickerEnabled,
13229
14647
  runMode,
13230
14648
  runModePickerOpen,
14649
+ scrollDownButtonEnabled,
13231
14650
  selectedModelId,
13232
14651
  selectedSessionId,
13233
14652
  sessions,
@@ -13250,6 +14669,8 @@ const getChatVirtualDom = options => {
13250
14669
  authErrorMessage,
13251
14670
  authStatus,
13252
14671
  chatListScrollTop,
14672
+ composerAttachmentPreviewOverlayAttachmentId,
14673
+ composerAttachmentPreviewOverlayError,
13253
14674
  composerAttachments,
13254
14675
  composerDropActive,
13255
14676
  composerDropEnabled,
@@ -13258,6 +14679,8 @@ const getChatVirtualDom = options => {
13258
14679
  composerHeight,
13259
14680
  composerLineHeight,
13260
14681
  composerValue,
14682
+ hasSpaceForAgentModePicker,
14683
+ hasSpaceForRunModePicker,
13261
14684
  listFocusedIndex,
13262
14685
  modelPickerOpen,
13263
14686
  modelPickerSearchValue,
@@ -13296,6 +14719,8 @@ const renderItems = (oldState, newState) => {
13296
14719
  authErrorMessage,
13297
14720
  authStatus,
13298
14721
  chatListScrollTop,
14722
+ composerAttachmentPreviewOverlayAttachmentId,
14723
+ composerAttachmentPreviewOverlayError,
13299
14724
  composerAttachments,
13300
14725
  composerDropActive,
13301
14726
  composerDropEnabled,
@@ -13304,8 +14729,11 @@ const renderItems = (oldState, newState) => {
13304
14729
  composerHeight,
13305
14730
  composerLineHeight,
13306
14731
  composerValue,
14732
+ hasSpaceForAgentModePicker,
14733
+ hasSpaceForRunModePicker,
13307
14734
  initial,
13308
14735
  listFocusedIndex,
14736
+ messagesAutoScrollEnabled,
13309
14737
  messagesScrollTop,
13310
14738
  modelPickerOpen,
13311
14739
  modelPickerSearchValue,
@@ -13325,6 +14753,7 @@ const renderItems = (oldState, newState) => {
13325
14753
  reasoningPickerEnabled,
13326
14754
  runMode,
13327
14755
  runModePickerOpen,
14756
+ scrollDownButtonEnabled,
13328
14757
  searchEnabled,
13329
14758
  searchFieldVisible,
13330
14759
  searchValue,
@@ -13354,6 +14783,8 @@ const renderItems = (oldState, newState) => {
13354
14783
  authErrorMessage,
13355
14784
  authStatus,
13356
14785
  chatListScrollTop,
14786
+ composerAttachmentPreviewOverlayAttachmentId,
14787
+ composerAttachmentPreviewOverlayError,
13357
14788
  composerAttachments,
13358
14789
  composerDropActive,
13359
14790
  composerDropEnabled,
@@ -13362,7 +14793,10 @@ const renderItems = (oldState, newState) => {
13362
14793
  composerHeight,
13363
14794
  composerLineHeight,
13364
14795
  composerValue,
14796
+ hasSpaceForAgentModePicker,
14797
+ hasSpaceForRunModePicker,
13365
14798
  listFocusedIndex,
14799
+ messagesAutoScrollEnabled,
13366
14800
  messagesScrollTop,
13367
14801
  modelPickerOpen,
13368
14802
  modelPickerSearchValue,
@@ -13382,6 +14816,7 @@ const renderItems = (oldState, newState) => {
13382
14816
  reasoningPickerEnabled,
13383
14817
  runMode,
13384
14818
  runModePickerOpen,
14819
+ scrollDownButtonEnabled,
13385
14820
  searchEnabled,
13386
14821
  searchFieldVisible,
13387
14822
  searchValue,
@@ -13500,6 +14935,12 @@ const renderEventListeners = () => {
13500
14935
  }, {
13501
14936
  name: HandleClick,
13502
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") : ""']
13503
14944
  }, {
13504
14945
  name: HandleClickDictationButton,
13505
14946
  params: ['handleClickDictationButton']
@@ -13556,11 +14997,11 @@ const renderEventListeners = () => {
13556
14997
  params: ['handleSearchValueChange', TargetValue]
13557
14998
  }, {
13558
14999
  name: HandleDragEnter,
13559
- params: ['handleDragEnter', TargetName, 'Array.from(event.dataTransfer?.files || []).length > 0'],
15000
+ params: ['handleDragEnter', TargetName, DataTransferFiles2],
13560
15001
  preventDefault: true
13561
15002
  }, {
13562
15003
  name: HandleDragOver,
13563
- params: ['handleDragOver', TargetName, 'Array.from(event.dataTransfer?.files || []).length > 0'],
15004
+ params: ['handleDragOver', TargetName, DataTransferFiles2],
13564
15005
  preventDefault: true
13565
15006
  }, {
13566
15007
  name: HandleDragLeave,
@@ -13568,15 +15009,15 @@ const renderEventListeners = () => {
13568
15009
  preventDefault: true
13569
15010
  }, {
13570
15011
  name: HandleDrop,
13571
- params: ['handleDropFiles', TargetName, 'Array.from(event.dataTransfer?.files || [])'],
15012
+ params: ['handleDropFiles', TargetName, DataTransferFiles2],
13572
15013
  preventDefault: true
13573
15014
  }, {
13574
15015
  name: HandleDragEnterChatView,
13575
- params: ['handleDragEnter', 'composer-drop-target', 'Array.from(event.dataTransfer?.files || []).length > 0'],
15016
+ params: ['handleDragEnter', 'composer-drop-target', DataTransferFiles2],
13576
15017
  preventDefault: true
13577
15018
  }, {
13578
15019
  name: HandleDragOverChatView,
13579
- params: ['handleDragOver', 'composer-drop-target', 'Array.from(event.dataTransfer?.files || []).length > 0'],
15020
+ params: ['handleDragOver', 'composer-drop-target', DataTransferFiles2],
13580
15021
  preventDefault: true
13581
15022
  }, {
13582
15023
  name: HandleModelChange,
@@ -13664,8 +15105,11 @@ const renderEventListeners = () => {
13664
15105
  params: ['handleModelInputBlur']
13665
15106
  }, {
13666
15107
  name: HandleContextMenuChatImageAttachment,
13667
- params: ['handleContextMenuChatImageAttachment'],
15108
+ params: ['handleContextMenuChatImageAttachment', TargetName, ClientX, ClientY],
13668
15109
  preventDefault: true
15110
+ }, {
15111
+ name: HandleErrorComposerAttachmentPreviewOverlay,
15112
+ params: ['handleErrorComposerAttachmentPreviewOverlay']
13669
15113
  }];
13670
15114
  };
13671
15115
 
@@ -13680,6 +15124,7 @@ const reset = async state => {
13680
15124
  agentMode: defaultAgentMode,
13681
15125
  agentModePickerOpen: false,
13682
15126
  composerAttachments: [],
15127
+ composerAttachmentsHeight: 0,
13683
15128
  composerHeight: getMinComposerHeightForState(state),
13684
15129
  composerSelectionEnd: 0,
13685
15130
  composerSelectionStart: 0,
@@ -13704,14 +15149,39 @@ const reset = async state => {
13704
15149
  };
13705
15150
 
13706
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
+ } : {};
13707
15163
  const nextState = {
13708
15164
  ...state,
13709
- ...dimensions
15165
+ ...dimensions,
15166
+ ...responsivePickerState,
15167
+ ...responsivePickerOpenState
13710
15168
  };
13711
- if (dimensions.width !== undefined && dimensions.width !== state.width && nextState.composerValue) {
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) {
13712
15182
  return {
13713
15183
  ...nextState,
13714
- composerHeight: await getComposerHeightFn(nextState, nextState.composerValue, nextState.width)
15184
+ composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, nextWidth)
13715
15185
  };
13716
15186
  }
13717
15187
  return nextState;
@@ -13721,6 +15191,8 @@ const saveState = state => {
13721
15191
  const {
13722
15192
  agentMode,
13723
15193
  chatListScrollTop,
15194
+ composerSelectionEnd,
15195
+ composerSelectionStart,
13724
15196
  composerValue,
13725
15197
  lastNormalViewMode,
13726
15198
  maxToolCalls,
@@ -13742,6 +15214,8 @@ const saveState = state => {
13742
15214
  return {
13743
15215
  agentMode,
13744
15216
  chatListScrollTop,
15217
+ composerSelectionEnd,
15218
+ composerSelectionStart,
13745
15219
  composerValue,
13746
15220
  lastNormalViewMode,
13747
15221
  maxToolCalls,
@@ -13827,6 +15301,24 @@ const setReasoningPickerEnabled = (state, reasoningPickerEnabled) => {
13827
15301
  };
13828
15302
  };
13829
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
+
13830
15322
  const setSearchEnabled = (state, searchEnabled) => {
13831
15323
  return {
13832
15324
  ...state,
@@ -13959,6 +15451,7 @@ const commandMap = {
13959
15451
  'Chat.getKeyBindings': getKeyBindings,
13960
15452
  'Chat.getMenuEntries': getMenuEntries,
13961
15453
  'Chat.getMenuEntryIds': getMenuEntryIds,
15454
+ 'Chat.getMockOpenApiRequests': wrapGetter(getMockOpenApiRequests),
13962
15455
  'Chat.getQuickPickMenuEntries': getQuickPickMenuEntries,
13963
15456
  'Chat.getSelectedSessionId': wrapGetter(getSelectedSessionId),
13964
15457
  'Chat.getSystemPrompt': wrapGetter(getSystemPrompt),
@@ -13991,6 +15484,7 @@ const commandMap = {
13991
15484
  'Chat.handleDragLeave': wrapCommand(handleDragLeave),
13992
15485
  'Chat.handleDragOver': wrapCommand(handleDragOver),
13993
15486
  'Chat.handleDropFiles': wrapCommand(handleDropFiles),
15487
+ 'Chat.handleErrorComposerAttachmentPreviewOverlay': wrapCommand(handleErrorComposerAttachmentPreviewOverlay),
13994
15488
  'Chat.handleInput': wrapCommand(handleInput),
13995
15489
  'Chat.handleInputFocus': wrapCommand(handleInputFocus),
13996
15490
  'Chat.handleKeyDown': wrapCommand(handleKeyDown),
@@ -14001,6 +15495,8 @@ const commandMap = {
14001
15495
  'Chat.handleModelChange': wrapCommand(handleModelChange),
14002
15496
  'Chat.handleModelInputBlur': wrapCommand(handleModelInputBlur),
14003
15497
  'Chat.handleModelPickerListScroll': wrapCommand(handleModelPickerListScroll),
15498
+ 'Chat.handleMouseOut': wrapCommand(handleMouseOut),
15499
+ 'Chat.handleMouseOver': wrapCommand(handleMouseOver),
14004
15500
  'Chat.handlePointerDownModelPickerList': wrapCommand(handlePointerDownModelPickerList),
14005
15501
  'Chat.handlePointerUpModelPickerList': wrapCommand(handlePointerUpModelPickerList),
14006
15502
  'Chat.handleProjectAddButtonContextMenu': wrapCommand(handleProjectAddButtonContextMenu),
@@ -14010,6 +15506,7 @@ const commandMap = {
14010
15506
  'Chat.handleRunModeChange': wrapCommand(handleRunModeChange),
14011
15507
  'Chat.handleSearchValueChange': wrapCommand(handleSearchValueChange),
14012
15508
  'Chat.handleSubmit': wrapCommand(handleSubmit),
15509
+ 'Chat.hideComposerAttachmentPreviewOverlay': wrapCommand(hideComposerAttachmentPreviewOverlay),
14013
15510
  'Chat.initialize': initialize,
14014
15511
  'Chat.loadContent': wrapCommand(loadContent),
14015
15512
  'Chat.loadContent2': wrapCommand(loadContent),
@@ -14022,12 +15519,14 @@ const commandMap = {
14022
15519
  'Chat.mockOpenApiStreamPushChunk': wrapCommand(mockOpenApiStreamPushChunk),
14023
15520
  'Chat.mockOpenApiStreamReset': wrapCommand(mockOpenApiStreamReset),
14024
15521
  'Chat.openAgentModePicker': wrapCommand(openAgentModePicker),
15522
+ 'Chat.openMockProject': wrapCommand(openMockProject),
14025
15523
  'Chat.openMockSession': wrapCommand(openMockSession),
14026
15524
  'Chat.openModelPicker': wrapCommand(openModelPicker),
14027
15525
  'Chat.openReasoningEffortPicker': wrapCommand(openReasoningEffortPicker),
14028
15526
  'Chat.openRunModePicker': wrapCommand(openRunModePicker),
14029
15527
  'Chat.pasteInput': wrapCommand(pasteInput),
14030
15528
  'Chat.registerMockResponse': wrapCommand(registerMockResponse),
15529
+ 'Chat.removeComposerAttachment': wrapCommand(removeComposerAttachment),
14031
15530
  'Chat.render2': render2,
14032
15531
  'Chat.renderEventListeners': renderEventListeners,
14033
15532
  'Chat.rerender': wrapCommand(rerender),
@@ -14044,6 +15543,8 @@ const commandMap = {
14044
15543
  'Chat.setQuestionToolEnabled': wrapCommand(setQuestionToolEnabled),
14045
15544
  'Chat.setReasoningEffort': wrapCommand(setReasoningEffort),
14046
15545
  'Chat.setReasoningPickerEnabled': wrapCommand(setReasoningPickerEnabled),
15546
+ 'Chat.setResponsivePickerVisibilityEnabled': wrapCommand(setResponsivePickerVisibilityEnabled),
15547
+ 'Chat.setScrollDownButtonEnabled': wrapCommand(setScrollDownButtonEnabled),
14047
15548
  'Chat.setSearchEnabled': wrapCommand(setSearchEnabled),
14048
15549
  'Chat.setShowRunMode': wrapCommand(setShowRunMode),
14049
15550
  'Chat.setStreamingEnabled': wrapCommand(setStreamingEnabled),
@@ -14054,6 +15555,7 @@ const commandMap = {
14054
15555
  'Chat.setUseChatMathWorker': wrapCommand(setUseChatMathWorker),
14055
15556
  'Chat.setUseChatMessageParsingWorker': wrapCommand(setUseChatMessageParsingWorker),
14056
15557
  'Chat.setUseChatNetworkWorkerForRequests': wrapCommand(setUseChatNetworkWorkerForRequests),
15558
+ 'Chat.showComposerAttachmentPreviewOverlay': wrapCommand(showComposerAttachmentPreviewOverlay),
14057
15559
  'Chat.terminate': terminate,
14058
15560
  'Chat.useMockApi': wrapCommand(useMockApi)
14059
15561
  };