@lvce-editor/static-server 0.77.4 → 0.77.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1966) hide show
  1. package/config.json +1986 -1986
  2. package/package.json +1 -1
  3. package/static/{5be121a → 101c327}/css/App.css +201 -92
  4. package/static/{5be121a → 101c327}/manifest.json +2 -2
  5. package/static/{5be121a → 101c327}/packages/about-view-worker/dist/aboutWorkerMain.js +3 -3
  6. package/static/{5be121a → 101c327}/packages/chat-message-parsing-worker/dist/chatMessageParsingWorkerMain.js +105 -42
  7. package/static/{5be121a → 101c327}/packages/chat-storage-worker/dist/chatStorageWorkerMain.js +291 -35
  8. package/static/{5be121a → 101c327}/packages/chat-view/dist/chatViewWorkerMain.js +2014 -479
  9. package/static/{5be121a → 101c327}/packages/extension-host-worker/dist/extensionHostWorkerMain.js +3 -3
  10. package/static/{5be121a → 101c327}/packages/renderer-process/dist/rendererProcessMain.js +22 -9
  11. package/static/{5be121a → 101c327}/packages/renderer-process/package.json +1 -1
  12. package/static/{5be121a → 101c327}/packages/renderer-worker/dist/rendererWorkerMain.js +36 -4
  13. package/static/{5be121a → 101c327}/packages/status-bar-worker/dist/statusBarWorkerMain.js +22 -3
  14. package/static/{5be121a → 101c327}/packages/title-bar-worker/dist/titleBarWorkerMain.js +302 -159
  15. package/static/index.html +4 -4
  16. /package/static/{5be121a → 101c327}/config/colorTheme.json +0 -0
  17. /package/static/{5be121a → 101c327}/config/defaultSettings.json +0 -0
  18. /package/static/{5be121a → 101c327}/config/fileMap.json +0 -0
  19. /package/static/{5be121a → 101c327}/config/webExtensions.json +0 -0
  20. /package/static/{5be121a → 101c327}/css/parts/AdditionalDetails.css +0 -0
  21. /package/static/{5be121a → 101c327}/css/parts/Animation.css +0 -0
  22. /package/static/{5be121a → 101c327}/css/parts/BrowserScrollBar.css +0 -0
  23. /package/static/{5be121a → 101c327}/css/parts/Category.css +0 -0
  24. /package/static/{5be121a → 101c327}/css/parts/DebugButtons.css +0 -0
  25. /package/static/{5be121a → 101c327}/css/parts/DebugValue.css +0 -0
  26. /package/static/{5be121a → 101c327}/css/parts/E2eTest.css +0 -0
  27. /package/static/{5be121a → 101c327}/css/parts/E2eTests.css +0 -0
  28. /package/static/{5be121a → 101c327}/css/parts/EditorHover.css +0 -0
  29. /package/static/{5be121a → 101c327}/css/parts/EditorMessage.css +0 -0
  30. /package/static/{5be121a → 101c327}/css/parts/FeatureContent.css +0 -0
  31. /package/static/{5be121a → 101c327}/css/parts/Features.css +0 -0
  32. /package/static/{5be121a → 101c327}/css/parts/ImagePreview.css +0 -0
  33. /package/static/{5be121a → 101c327}/css/parts/InlineDiffEditor.css +0 -0
  34. /package/static/{5be121a → 101c327}/css/parts/InputBadge.css +0 -0
  35. /package/static/{5be121a → 101c327}/css/parts/Key.css +0 -0
  36. /package/static/{5be121a → 101c327}/css/parts/KeyBindingsHeader.css +0 -0
  37. /package/static/{5be121a → 101c327}/css/parts/KeyBindingsTable.css +0 -0
  38. /package/static/{5be121a → 101c327}/css/parts/LegacyDialog.css +0 -0
  39. /package/static/{5be121a → 101c327}/css/parts/Markdown.css +0 -0
  40. /package/static/{5be121a → 101c327}/css/parts/Message.css +0 -0
  41. /package/static/{5be121a → 101c327}/css/parts/Preview.css +0 -0
  42. /package/static/{5be121a → 101c327}/css/parts/ScrollToTop.css +0 -0
  43. /package/static/{5be121a → 101c327}/css/parts/SettingsHeader.css +0 -0
  44. /package/static/{5be121a → 101c327}/css/parts/SettingsItems.css +0 -0
  45. /package/static/{5be121a → 101c327}/css/parts/SettingsSideBar.css +0 -0
  46. /package/static/{5be121a → 101c327}/css/parts/Table.css +0 -0
  47. /package/static/{5be121a → 101c327}/css/parts/ViewletAbout.css +0 -0
  48. /package/static/{5be121a → 101c327}/css/parts/ViewletBrowserViewOverview.css +0 -0
  49. /package/static/{5be121a → 101c327}/css/parts/ViewletDebugConsole.css +0 -0
  50. /package/static/{5be121a → 101c327}/css/parts/ViewletDefineKeyBinding.css +0 -0
  51. /package/static/{5be121a → 101c327}/css/parts/ViewletDiffEditor.css +0 -0
  52. /package/static/{5be121a → 101c327}/css/parts/ViewletEditorWidgetError.css +0 -0
  53. /package/static/{5be121a → 101c327}/css/parts/ViewletExtensionDetail.css +0 -0
  54. /package/static/{5be121a → 101c327}/css/parts/ViewletExtensionDetailHeader.css +0 -0
  55. /package/static/{5be121a → 101c327}/css/parts/ViewletExtensionDetailTabs.css +0 -0
  56. /package/static/{5be121a → 101c327}/css/parts/ViewletExtensions.css +0 -0
  57. /package/static/{5be121a → 101c327}/css/parts/ViewletIframeInspector.css +0 -0
  58. /package/static/{5be121a → 101c327}/css/parts/ViewletKeyBindings.css +0 -0
  59. /package/static/{5be121a → 101c327}/css/parts/ViewletLanguageModels.css +0 -0
  60. /package/static/{5be121a → 101c327}/css/parts/ViewletMedia.css +0 -0
  61. /package/static/{5be121a → 101c327}/css/parts/ViewletOutput.css +0 -0
  62. /package/static/{5be121a → 101c327}/css/parts/ViewletPanel.css +0 -0
  63. /package/static/{5be121a → 101c327}/css/parts/ViewletPanelTabs.css +0 -0
  64. /package/static/{5be121a → 101c327}/css/parts/ViewletPdf.css +0 -0
  65. /package/static/{5be121a → 101c327}/css/parts/ViewletProblems.css +0 -0
  66. /package/static/{5be121a → 101c327}/css/parts/ViewletReferences.css +0 -0
  67. /package/static/{5be121a → 101c327}/css/parts/ViewletRunAndDebug.css +0 -0
  68. /package/static/{5be121a → 101c327}/css/parts/ViewletScreenCapture.css +0 -0
  69. /package/static/{5be121a → 101c327}/css/parts/ViewletSearch.css +0 -0
  70. /package/static/{5be121a → 101c327}/css/parts/ViewletSettings.css +0 -0
  71. /package/static/{5be121a → 101c327}/css/parts/ViewletSimpleBrowser.css +0 -0
  72. /package/static/{5be121a → 101c327}/css/parts/ViewletSourceControl.css +0 -0
  73. /package/static/{5be121a → 101c327}/css/parts/ViewletStorage.css +0 -0
  74. /package/static/{5be121a → 101c327}/css/parts/ViewletTerminal.css +0 -0
  75. /package/static/{5be121a → 101c327}/css/parts/ViewletTerminalTabs.css +0 -0
  76. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-bat/README.md +0 -0
  77. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-bat/extension.json +0 -0
  78. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-bat/languageConfiguration.json +0 -0
  79. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-bat/src/tokenizeBat.js +0 -0
  80. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-c/README.md +0 -0
  81. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-c/extension.json +0 -0
  82. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-c/src/tokenizeC.js +0 -0
  83. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-coffeescript/README.md +0 -0
  84. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-coffeescript/extension.json +0 -0
  85. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-coffeescript/src/tokenizeCoffeeScript.js +0 -0
  86. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cpp/README.md +0 -0
  87. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cpp/extension.json +0 -0
  88. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cpp/languageConfiguration.json +0 -0
  89. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cpp/src/tokenizeCpp.js +0 -0
  90. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cson/README.md +0 -0
  91. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cson/extension.json +0 -0
  92. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cson/languageConfiguration.json +0 -0
  93. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-cson/src/tokenizeCson.js +0 -0
  94. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-css/README.md +0 -0
  95. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-css/extension.json +0 -0
  96. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-css/languageConfiguration.json +0 -0
  97. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-css/src/tokenizeCss.js +0 -0
  98. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-dart/README.md +0 -0
  99. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-dart/extension.json +0 -0
  100. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-dart/src/tokenizeDart.js +0 -0
  101. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-desktop/README.md +0 -0
  102. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-desktop/extension.json +0 -0
  103. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-desktop/src/tokenizeDesktop.js +0 -0
  104. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-docker/README.md +0 -0
  105. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-docker/extension.json +0 -0
  106. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-docker/src/tokenizeDockerfile.js +0 -0
  107. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-dotenv/README.md +0 -0
  108. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-dotenv/extension.json +0 -0
  109. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-dotenv/src/tokenizeDotenv.js +0 -0
  110. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-editorconfig/README.md +0 -0
  111. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-editorconfig/extension.json +0 -0
  112. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-editorconfig/src/tokenizeEditorConfig.js +0 -0
  113. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-elixir/README.md +0 -0
  114. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-elixir/extension.json +0 -0
  115. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-elixir/src/tokenizeElixir.js +0 -0
  116. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-elm/README.md +0 -0
  117. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-elm/extension.json +0 -0
  118. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-elm/src/tokenizeElm.js +0 -0
  119. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-gitattributes/README.md +0 -0
  120. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-gitattributes/extension.json +0 -0
  121. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-gitattributes/src/tokenizeGitAttributes.js +0 -0
  122. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-gn/README.md +0 -0
  123. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-gn/extension.json +0 -0
  124. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-gn/src/tokenizeGn.js +0 -0
  125. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-go/README.md +0 -0
  126. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-go/extension.json +0 -0
  127. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-go/src/tokenizeGo.js +0 -0
  128. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-graphql/README.md +0 -0
  129. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-graphql/extension.json +0 -0
  130. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-graphql/src/tokenizeGraphql.js +0 -0
  131. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-html/README.md +0 -0
  132. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-html/extension.json +0 -0
  133. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-html/languageConfiguration.json +0 -0
  134. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-html/src/tokenizeHtml.js +0 -0
  135. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-java/README.md +0 -0
  136. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-java/extension.json +0 -0
  137. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-java/languageConfiguration.json +0 -0
  138. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-java/src/tokenizeJava.js +0 -0
  139. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-javascript/README.md +0 -0
  140. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-javascript/extension.json +0 -0
  141. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-javascript/languageConfiguration.json +0 -0
  142. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-javascript/src/tokenizeJavaScript.js +0 -0
  143. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-json/README.md +0 -0
  144. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-json/extension.json +0 -0
  145. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-json/src/tokenizeJson.js +0 -0
  146. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-json5/README.md +0 -0
  147. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-json5/extension.json +0 -0
  148. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-json5/src/tokenizeJson5.js +0 -0
  149. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-jsx/README.md +0 -0
  150. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-jsx/extension.json +0 -0
  151. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-jsx/src/tokenizeJsx.js +0 -0
  152. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-julia/README.md +0 -0
  153. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-julia/extension.json +0 -0
  154. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-julia/src/tokenizeJulia.js +0 -0
  155. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-kotlin/README.md +0 -0
  156. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-kotlin/extension.json +0 -0
  157. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-kotlin/src/tokenizeKotlin.js +0 -0
  158. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-less/LICENSE +0 -0
  159. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-less/README.md +0 -0
  160. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-less/extension.json +0 -0
  161. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-less/languageConfiguration.json +0 -0
  162. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-less/src/tokenizeLess.js +0 -0
  163. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-markdown/README.md +0 -0
  164. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-markdown/extension.json +0 -0
  165. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-markdown/src/tokenizeMarkdown.js +0 -0
  166. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-mdx/README.md +0 -0
  167. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-mdx/extension.json +0 -0
  168. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-mdx/src/tokenizeMdx.js +0 -0
  169. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-nix/README.md +0 -0
  170. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-nix/extension.json +0 -0
  171. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-nix/languageConfiguration.json +0 -0
  172. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-nix/src/tokenizeNix.js +0 -0
  173. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-nvmrc/README.md +0 -0
  174. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-nvmrc/extension.json +0 -0
  175. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-nvmrc/src/tokenizeNvmrc.js +0 -0
  176. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-perl/README.md +0 -0
  177. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-perl/extension.json +0 -0
  178. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-perl/src/tokenizePerl.js +0 -0
  179. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-plaintext/README.md +0 -0
  180. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-plaintext/extension.json +0 -0
  181. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-plaintext/src/tokenizePlaintext.js +0 -0
  182. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-powershell/README.md +0 -0
  183. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-powershell/extension.json +0 -0
  184. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-powershell/src/tokenizePowershell.js +0 -0
  185. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-python/README.md +0 -0
  186. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-python/extension.json +0 -0
  187. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-python/languageConfiguration.json +0 -0
  188. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-python/src/tokenizePython.js +0 -0
  189. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-r/README.md +0 -0
  190. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-r/extension.json +0 -0
  191. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-r/src/tokenizeR.js +0 -0
  192. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-ruby/README.md +0 -0
  193. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-ruby/extension.json +0 -0
  194. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-ruby/src/tokenizeRuby.js +0 -0
  195. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-rust/LICENSE +0 -0
  196. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-rust/README.md +0 -0
  197. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-rust/extension.json +0 -0
  198. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-rust/languageConfiguration.json +0 -0
  199. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-rust/src/tokenizeRust.js +0 -0
  200. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-scss/README.md +0 -0
  201. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-scss/extension.json +0 -0
  202. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-scss/languageConfiguration.json +0 -0
  203. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-scss/src/tokenizeScss.js +0 -0
  204. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-shellscript/README.md +0 -0
  205. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-shellscript/extension.json +0 -0
  206. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-shellscript/src/tokenizeShellScript.js +0 -0
  207. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-svelte/README.md +0 -0
  208. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-svelte/extension.json +0 -0
  209. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-svelte/src/tokenizeSvelte.js +0 -0
  210. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-terraform/README.md +0 -0
  211. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-terraform/extension.json +0 -0
  212. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-terraform/src/tokenizeTerraform.js +0 -0
  213. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-toml/README.md +0 -0
  214. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-toml/extension.json +0 -0
  215. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-toml/src/tokenizeToml.js +0 -0
  216. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-typescript/README.md +0 -0
  217. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-typescript/extension.json +0 -0
  218. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-typescript/languageConfiguration.json +0 -0
  219. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-typescript/src/tokenizeTypeScript.js +0 -0
  220. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-vue/README.md +0 -0
  221. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-vue/extension.json +0 -0
  222. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-vue/src/tokenizeVue.js +0 -0
  223. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-wgsl/README.md +0 -0
  224. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-wgsl/extension.json +0 -0
  225. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-wgsl/languageConfiguration.json +0 -0
  226. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-wgsl/src/tokenizeWgsl.js +0 -0
  227. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-xml/README.md +0 -0
  228. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-xml/extension.json +0 -0
  229. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-xml/src/tokenizeXml.js +0 -0
  230. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-yaml/README.md +0 -0
  231. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-yaml/extension.json +0 -0
  232. /package/static/{5be121a → 101c327}/extensions/builtin.language-basics-yaml/src/tokenizeYaml.js +0 -0
  233. /package/static/{5be121a → 101c327}/extensions/builtin.theme-atom-one-dark/README.md +0 -0
  234. /package/static/{5be121a → 101c327}/extensions/builtin.theme-atom-one-dark/color-theme.json +0 -0
  235. /package/static/{5be121a → 101c327}/extensions/builtin.theme-atom-one-dark/extension.json +0 -0
  236. /package/static/{5be121a → 101c327}/extensions/builtin.theme-atom-one-dark/images/demo.png +0 -0
  237. /package/static/{5be121a → 101c327}/extensions/builtin.theme-ayu/README.md +0 -0
  238. /package/static/{5be121a → 101c327}/extensions/builtin.theme-ayu/color-theme.json +0 -0
  239. /package/static/{5be121a → 101c327}/extensions/builtin.theme-ayu/extension.json +0 -0
  240. /package/static/{5be121a → 101c327}/extensions/builtin.theme-ayu/images/demo.png +0 -0
  241. /package/static/{5be121a → 101c327}/extensions/builtin.theme-cobalt2/README.md +0 -0
  242. /package/static/{5be121a → 101c327}/extensions/builtin.theme-cobalt2/color-theme.json +0 -0
  243. /package/static/{5be121a → 101c327}/extensions/builtin.theme-cobalt2/extension.json +0 -0
  244. /package/static/{5be121a → 101c327}/extensions/builtin.theme-cobalt2/images/demo.png +0 -0
  245. /package/static/{5be121a → 101c327}/extensions/builtin.theme-cobalt2/images/logo.png +0 -0
  246. /package/static/{5be121a → 101c327}/extensions/builtin.theme-gruvbox/README.md +0 -0
  247. /package/static/{5be121a → 101c327}/extensions/builtin.theme-gruvbox/color-theme.json +0 -0
  248. /package/static/{5be121a → 101c327}/extensions/builtin.theme-gruvbox/extension.json +0 -0
  249. /package/static/{5be121a → 101c327}/extensions/builtin.theme-gruvbox/images/demo.png +0 -0
  250. /package/static/{5be121a → 101c327}/extensions/builtin.theme-high-contrast/README.md +0 -0
  251. /package/static/{5be121a → 101c327}/extensions/builtin.theme-high-contrast/color-theme.json +0 -0
  252. /package/static/{5be121a → 101c327}/extensions/builtin.theme-high-contrast/extension.json +0 -0
  253. /package/static/{5be121a → 101c327}/extensions/builtin.theme-material/README.md +0 -0
  254. /package/static/{5be121a → 101c327}/extensions/builtin.theme-material/color-theme.json +0 -0
  255. /package/static/{5be121a → 101c327}/extensions/builtin.theme-material/extension.json +0 -0
  256. /package/static/{5be121a → 101c327}/extensions/builtin.theme-monokai/README.md +0 -0
  257. /package/static/{5be121a → 101c327}/extensions/builtin.theme-monokai/color-theme.json +0 -0
  258. /package/static/{5be121a → 101c327}/extensions/builtin.theme-monokai/extension.json +0 -0
  259. /package/static/{5be121a → 101c327}/extensions/builtin.theme-noctis-uva/README.md +0 -0
  260. /package/static/{5be121a → 101c327}/extensions/builtin.theme-noctis-uva/color-theme.json +0 -0
  261. /package/static/{5be121a → 101c327}/extensions/builtin.theme-noctis-uva/extension.json +0 -0
  262. /package/static/{5be121a → 101c327}/extensions/builtin.theme-noctis-uva/images/demo.png +0 -0
  263. /package/static/{5be121a → 101c327}/extensions/builtin.theme-palenight/README.md +0 -0
  264. /package/static/{5be121a → 101c327}/extensions/builtin.theme-palenight/color-theme.json +0 -0
  265. /package/static/{5be121a → 101c327}/extensions/builtin.theme-palenight/extension.json +0 -0
  266. /package/static/{5be121a → 101c327}/extensions/builtin.theme-palenight/images/demo.png +0 -0
  267. /package/static/{5be121a → 101c327}/extensions/builtin.theme-slime/README.md +0 -0
  268. /package/static/{5be121a → 101c327}/extensions/builtin.theme-slime/color-theme.json +0 -0
  269. /package/static/{5be121a → 101c327}/extensions/builtin.theme-slime/extension.json +0 -0
  270. /package/static/{5be121a → 101c327}/extensions/builtin.theme-slime/icon.png +0 -0
  271. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/README.md +0 -0
  272. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/extension.json +0 -0
  273. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icon-theme.json +0 -0
  274. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icon.png +0 -0
  275. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/default_file.svg +0 -0
  276. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/default_folder.svg +0 -0
  277. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/default_folder_opened.svg +0 -0
  278. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/default_root_folder.svg +0 -0
  279. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/default_root_folder_opened.svg +0 -0
  280. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_access.svg +0 -0
  281. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_access2.svg +0 -0
  282. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_actionscript.svg +0 -0
  283. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_actionscript2.svg +0 -0
  284. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ada.svg +0 -0
  285. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_advpl.svg +0 -0
  286. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affectscript.svg +0 -0
  287. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affinity.svg +0 -0
  288. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affinitydesigner.svg +0 -0
  289. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affinityphoto.svg +0 -0
  290. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_affinitypublisher.svg +0 -0
  291. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_agda.svg +0 -0
  292. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_agents.svg +0 -0
  293. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ai.svg +0 -0
  294. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ai2.svg +0 -0
  295. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_al.svg +0 -0
  296. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_al_dal.svg +0 -0
  297. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_alchemy.svg +0 -0
  298. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_allcontributors.svg +0 -0
  299. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_alloy.svg +0 -0
  300. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_allure.svg +0 -0
  301. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_angular.svg +0 -0
  302. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ansible.svg +0 -0
  303. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_antlers_html.svg +0 -0
  304. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_antlr.svg +0 -0
  305. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_anyscript.svg +0 -0
  306. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apache.svg +0 -0
  307. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apex.svg +0 -0
  308. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_api_extractor.svg +0 -0
  309. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apib.svg +0 -0
  310. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apib2.svg +0 -0
  311. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_apl.svg +0 -0
  312. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_applescript.svg +0 -0
  313. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_appscript.svg +0 -0
  314. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_appsemble.svg +0 -0
  315. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_appveyor.svg +0 -0
  316. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_arduino.svg +0 -0
  317. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_asciidoc.svg +0 -0
  318. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_aseprite.svg +0 -0
  319. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_asp.svg +0 -0
  320. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_aspx.svg +0 -0
  321. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_assembly.svg +0 -0
  322. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_assembly_script.svg +0 -0
  323. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_astro.svg +0 -0
  324. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_astroconfig.svg +0 -0
  325. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_atom.svg +0 -0
  326. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ats.svg +0 -0
  327. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_attw.svg +0 -0
  328. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_audio.svg +0 -0
  329. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_aurelia.svg +0 -0
  330. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_autohotkey.svg +0 -0
  331. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_autoit.svg +0 -0
  332. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_avif.svg +0 -0
  333. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_avro.svg +0 -0
  334. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_awk.svg +0 -0
  335. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_aws.svg +0 -0
  336. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_azure.svg +0 -0
  337. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_azurepipelines.svg +0 -0
  338. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_babel.svg +0 -0
  339. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_babel2.svg +0 -0
  340. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bak.svg +0 -0
  341. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ballerina.svg +0 -0
  342. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bat.svg +0 -0
  343. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bats.svg +0 -0
  344. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bazaar.svg +0 -0
  345. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bazel.svg +0 -0
  346. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bazel_ignore.svg +0 -0
  347. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bazel_version.svg +0 -0
  348. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_befunge.svg +0 -0
  349. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bicep.svg +0 -0
  350. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_biml.svg +0 -0
  351. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_binary.svg +0 -0
  352. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_biome.svg +0 -0
  353. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bitbucketpipeline.svg +0 -0
  354. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bithound.svg +0 -0
  355. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_blade.svg +0 -0
  356. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_blender.svg +0 -0
  357. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_blitzbasic.svg +0 -0
  358. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bolt.svg +0 -0
  359. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bosque.svg +0 -0
  360. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bower.svg +0 -0
  361. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bower2.svg +0 -0
  362. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_browserslist.svg +0 -0
  363. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bruno.svg +0 -0
  364. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_buckbuild.svg +0 -0
  365. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_buf.svg +0 -0
  366. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bun.svg +0 -0
  367. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bundlemon.svg +0 -0
  368. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bundler.svg +0 -0
  369. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_bunfig.svg +0 -0
  370. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_c.svg +0 -0
  371. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_c2.svg +0 -0
  372. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_c3.svg +0 -0
  373. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_c_al.svg +0 -0
  374. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cabal.svg +0 -0
  375. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_caddy.svg +0 -0
  376. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cake.svg +0 -0
  377. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cakephp.svg +0 -0
  378. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_capacitor.svg +0 -0
  379. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_capnp.svg +0 -0
  380. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cargo.svg +0 -0
  381. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_casc.svg +0 -0
  382. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cddl.svg +0 -0
  383. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cert.svg +0 -0
  384. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ceylon.svg +0 -0
  385. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cf.svg +0 -0
  386. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cf2.svg +0 -0
  387. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cfc.svg +0 -0
  388. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cfc2.svg +0 -0
  389. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cfm.svg +0 -0
  390. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cfm2.svg +0 -0
  391. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_changie.svg +0 -0
  392. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cheader.svg +0 -0
  393. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_chef.svg +0 -0
  394. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_chef_cookbook.svg +0 -0
  395. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_circleci.svg +0 -0
  396. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_circom.svg +0 -0
  397. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_class.svg +0 -0
  398. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_claude.svg +0 -0
  399. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_clojure.svg +0 -0
  400. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_clojurescript.svg +0 -0
  401. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cloudflare.svg +0 -0
  402. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cloudfoundry.svg +0 -0
  403. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cmake.svg +0 -0
  404. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cobol.svg +0 -0
  405. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codacy.svg +0 -0
  406. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codeclimate.svg +0 -0
  407. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codecov.svg +0 -0
  408. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codekit.svg +0 -0
  409. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codemagic.svg +0 -0
  410. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codeowners.svg +0 -0
  411. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_codeql.svg +0 -0
  412. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coderabbit.svg +0 -0
  413. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coffeelint.svg +0 -0
  414. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coffeescript.svg +0 -0
  415. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_commitizen.svg +0 -0
  416. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_commitlint.svg +0 -0
  417. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_compass.svg +0 -0
  418. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_composer.svg +0 -0
  419. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_conan.svg +0 -0
  420. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_conda.svg +0 -0
  421. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_config.svg +0 -0
  422. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_confluence.svg +0 -0
  423. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_copilot.svg +0 -0
  424. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coverage.svg +0 -0
  425. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_coveralls.svg +0 -0
  426. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cpp.svg +0 -0
  427. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cpp2.svg +0 -0
  428. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cpp3.svg +0 -0
  429. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cppheader.svg +0 -0
  430. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_craco.svg +0 -0
  431. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_crowdin.svg +0 -0
  432. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_crystal.svg +0 -0
  433. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csharp.svg +0 -0
  434. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csharp2.svg +0 -0
  435. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cspell.svg +0 -0
  436. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csproj.svg +0 -0
  437. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_css.svg +0 -0
  438. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_css2.svg +0 -0
  439. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_css2map.svg +0 -0
  440. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csscomb.svg +0 -0
  441. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_csslint.svg +0 -0
  442. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cssmap.svg +0 -0
  443. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cucumber.svg +0 -0
  444. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cuda.svg +0 -0
  445. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cursorrules.svg +0 -0
  446. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cvs.svg +0 -0
  447. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cypress.svg +0 -0
  448. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cypress_spec.svg +0 -0
  449. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_cython.svg +0 -0
  450. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dal.svg +0 -0
  451. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_darcs.svg +0 -0
  452. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dartlang.svg +0 -0
  453. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dartlang_generated.svg +0 -0
  454. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dartlang_ignore.svg +0 -0
  455. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_datadog.svg +0 -0
  456. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_db.svg +0 -0
  457. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_debian.svg +0 -0
  458. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_delphi.svg +0 -0
  459. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_deno.svg +0 -0
  460. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_denoify.svg +0 -0
  461. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dependabot.svg +0 -0
  462. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dependencies.svg +0 -0
  463. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_design_tokens.svg +0 -0
  464. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_devcontainer.svg +0 -0
  465. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_devvit.svg +0 -0
  466. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dhall.svg +0 -0
  467. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_diff.svg +0 -0
  468. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_django.svg +0 -0
  469. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dlang.svg +0 -0
  470. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docker.svg +0 -0
  471. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docker2.svg +0 -0
  472. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dockertest.svg +0 -0
  473. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dockertest2.svg +0 -0
  474. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docpad.svg +0 -0
  475. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docusaurus.svg +0 -0
  476. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_docz.svg +0 -0
  477. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dojo.svg +0 -0
  478. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_doppler.svg +0 -0
  479. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dotenv.svg +0 -0
  480. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dotjs.svg +0 -0
  481. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_doxygen.svg +0 -0
  482. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_drawio.svg +0 -0
  483. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_drone.svg +0 -0
  484. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_drools.svg +0 -0
  485. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dtd.svg +0 -0
  486. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dune.svg +0 -0
  487. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dustjs.svg +0 -0
  488. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dvc.svg +0 -0
  489. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_dylan.svg +0 -0
  490. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_earthly.svg +0 -0
  491. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eas-metadata.svg +0 -0
  492. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_edge.svg +0 -0
  493. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_edge2.svg +0 -0
  494. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_editorconfig.svg +0 -0
  495. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eex.svg +0 -0
  496. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ejs.svg +0 -0
  497. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elastic.svg +0 -0
  498. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elasticbeanstalk.svg +0 -0
  499. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_electron.svg +0 -0
  500. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eleventy.svg +0 -0
  501. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eleventy2.svg +0 -0
  502. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elixir.svg +0 -0
  503. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elm.svg +0 -0
  504. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_elm2.svg +0 -0
  505. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_emacs.svg +0 -0
  506. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ember.svg +0 -0
  507. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ensime.svg +0 -0
  508. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eps.svg +0 -0
  509. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_epub.svg +0 -0
  510. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_erb.svg +0 -0
  511. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_erlang.svg +0 -0
  512. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_erlang2.svg +0 -0
  513. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_esbuild.svg +0 -0
  514. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eslint.svg +0 -0
  515. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_eslint2.svg +0 -0
  516. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_esphome.svg +0 -0
  517. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_excalidraw.svg +0 -0
  518. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_excel.svg +0 -0
  519. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_excel2.svg +0 -0
  520. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_expo.svg +0 -0
  521. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_falcon.svg +0 -0
  522. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fantasticon.svg +0 -0
  523. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fastly.svg +0 -0
  524. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fauna.svg +0 -0
  525. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_favicon.svg +0 -0
  526. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fbx.svg +0 -0
  527. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_firebase.svg +0 -0
  528. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_firebasehosting.svg +0 -0
  529. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_firebasestorage.svg +0 -0
  530. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_firestore.svg +0 -0
  531. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fitbit.svg +0 -0
  532. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fla.svg +0 -0
  533. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flareact.svg +0 -0
  534. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flash.svg +0 -0
  535. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_floobits.svg +0 -0
  536. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flow.svg +0 -0
  537. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flutter.svg +0 -0
  538. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flutter_package.svg +0 -0
  539. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_flyio.svg +0 -0
  540. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_font.svg +0 -0
  541. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_formkit.svg +0 -0
  542. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fortran.svg +0 -0
  543. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fossa.svg +0 -0
  544. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fossil.svg +0 -0
  545. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_freemarker.svg +0 -0
  546. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_frontcommerce.svg +0 -0
  547. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fsharp.svg +0 -0
  548. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fsharp2.svg +0 -0
  549. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fsproj.svg +0 -0
  550. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fthtml.svg +0 -0
  551. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_funding.svg +0 -0
  552. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_fusebox.svg +0 -0
  553. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_galen.svg +0 -0
  554. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_galen2.svg +0 -0
  555. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gamemaker.svg +0 -0
  556. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gamemaker2.svg +0 -0
  557. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gamemaker81.svg +0 -0
  558. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gatsby.svg +0 -0
  559. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gcloud.svg +0 -0
  560. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gcode.svg +0 -0
  561. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gdscript.svg +0 -0
  562. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gduid.svg +0 -0
  563. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gemini.svg +0 -0
  564. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_genstat.svg +0 -0
  565. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_geojson.svg +0 -0
  566. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gimp.svg +0 -0
  567. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_git.svg +0 -0
  568. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_git2.svg +0 -0
  569. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gitlab.svg +0 -0
  570. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gitpod.svg +0 -0
  571. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gleam.svg +0 -0
  572. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gleamconfig.svg +0 -0
  573. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glide.svg +0 -0
  574. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glimmer.svg +0 -0
  575. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glitter.svg +0 -0
  576. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glsl.svg +0 -0
  577. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gltf.svg +0 -0
  578. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_glyphs.svg +0 -0
  579. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gnu.svg +0 -0
  580. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gnuplot.svg +0 -0
  581. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go.svg +0 -0
  582. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_aqua.svg +0 -0
  583. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_black.svg +0 -0
  584. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_fuchsia.svg +0 -0
  585. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_gopher.svg +0 -0
  586. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_lightblue.svg +0 -0
  587. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_package.svg +0 -0
  588. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_white.svg +0 -0
  589. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_work.svg +0 -0
  590. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_go_yellow.svg +0 -0
  591. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_goctl.svg +0 -0
  592. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_godot.svg +0 -0
  593. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gpg.svg +0 -0
  594. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gradle.svg +0 -0
  595. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gradle2.svg +0 -0
  596. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_grain.svg +0 -0
  597. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_graphql.svg +0 -0
  598. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_graphql_config.svg +0 -0
  599. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_graphviz.svg +0 -0
  600. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_greenkeeper.svg +0 -0
  601. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gridsome.svg +0 -0
  602. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_grit.svg +0 -0
  603. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_groovy.svg +0 -0
  604. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_groovy2.svg +0 -0
  605. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_grunt.svg +0 -0
  606. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_gulp.svg +0 -0
  607. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haml.svg +0 -0
  608. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_handlebars.svg +0 -0
  609. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_handlebars2.svg +0 -0
  610. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_harbour.svg +0 -0
  611. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hardhat.svg +0 -0
  612. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hashicorp.svg +0 -0
  613. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haskell.svg +0 -0
  614. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haskell2.svg +0 -0
  615. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haxe.svg +0 -0
  616. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haxecheckstyle.svg +0 -0
  617. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_haxedevelop.svg +0 -0
  618. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_helix.svg +0 -0
  619. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_helm.svg +0 -0
  620. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_histoire.svg +0 -0
  621. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hjson.svg +0 -0
  622. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hlsl.svg +0 -0
  623. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_homeassistant.svg +0 -0
  624. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_horusec.svg +0 -0
  625. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_host.svg +0 -0
  626. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_html.svg +0 -0
  627. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_htmlhint.svg +0 -0
  628. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_htmlvalidate.svg +0 -0
  629. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_http.svg +0 -0
  630. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hugo.svg +0 -0
  631. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_humanstxt.svg +0 -0
  632. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hunspell.svg +0 -0
  633. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_husky.svg +0 -0
  634. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hy.svg +0 -0
  635. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hygen.svg +0 -0
  636. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_hypr.svg +0 -0
  637. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_icl.svg +0 -0
  638. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_idris.svg +0 -0
  639. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_idrisbin.svg +0 -0
  640. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_idrispkg.svg +0 -0
  641. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_image.svg +0 -0
  642. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_imba.svg +0 -0
  643. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_inc.svg +0 -0
  644. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_infopath.svg +0 -0
  645. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_informix.svg +0 -0
  646. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ini.svg +0 -0
  647. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ink.svg +0 -0
  648. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_innosetup.svg +0 -0
  649. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_io.svg +0 -0
  650. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_iodine.svg +0 -0
  651. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ionic.svg +0 -0
  652. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jake.svg +0 -0
  653. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_janet.svg +0 -0
  654. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jar.svg +0 -0
  655. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jasmine.svg +0 -0
  656. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_java.svg +0 -0
  657. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jbuilder.svg +0 -0
  658. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jekyll.svg +0 -0
  659. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jenkins.svg +0 -0
  660. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jest.svg +0 -0
  661. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jest_snapshot.svg +0 -0
  662. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jetbrains.svg +0 -0
  663. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jinja.svg +0 -0
  664. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jpm.svg +0 -0
  665. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_js.svg +0 -0
  666. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_js_official.svg +0 -0
  667. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsbeautify.svg +0 -0
  668. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsconfig.svg +0 -0
  669. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jscpd.svg +0 -0
  670. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jshint.svg +0 -0
  671. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsmap.svg +0 -0
  672. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json.svg +0 -0
  673. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json2.svg +0 -0
  674. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json5.svg +0 -0
  675. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json_official.svg +0 -0
  676. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_json_schema.svg +0 -0
  677. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsonld.svg +0 -0
  678. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsonnet.svg +0 -0
  679. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsp.svg +0 -0
  680. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jsr.svg +0 -0
  681. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jss.svg +0 -0
  682. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_juice.svg +0 -0
  683. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_julia.svg +0 -0
  684. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_julia2.svg +0 -0
  685. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_jupyter.svg +0 -0
  686. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_just.svg +0 -0
  687. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_k.svg +0 -0
  688. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_karma.svg +0 -0
  689. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_key.svg +0 -0
  690. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kitchenci.svg +0 -0
  691. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kite.svg +0 -0
  692. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kivy.svg +0 -0
  693. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_knip.svg +0 -0
  694. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kos.svg +0 -0
  695. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kotlin.svg +0 -0
  696. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_kusto.svg +0 -0
  697. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_language_configuration.svg +0 -0
  698. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lark.svg +0 -0
  699. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_latino.svg +0 -0
  700. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_layout.svg +0 -0
  701. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lean.svg +0 -0
  702. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_leanconfig.svg +0 -0
  703. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lefthook.svg +0 -0
  704. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lerna.svg +0 -0
  705. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_less.svg +0 -0
  706. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lex.svg +0 -0
  707. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_liara.svg +0 -0
  708. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_base.svg +0 -0
  709. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_calc.svg +0 -0
  710. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_draw.svg +0 -0
  711. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_impress.svg +0 -0
  712. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_math.svg +0 -0
  713. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_writer.svg +0 -0
  714. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_license.svg +0 -0
  715. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_licensebat.svg +0 -0
  716. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_actionscript2.svg +0 -0
  717. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_ada.svg +0 -0
  718. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_agda.svg +0 -0
  719. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_agents.svg +0 -0
  720. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_apl.svg +0 -0
  721. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_astro.svg +0 -0
  722. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_astroconfig.svg +0 -0
  723. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_babel.svg +0 -0
  724. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_babel2.svg +0 -0
  725. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_cabal.svg +0 -0
  726. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_circleci.svg +0 -0
  727. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_cloudfoundry.svg +0 -0
  728. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_codacy.svg +0 -0
  729. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_codeclimate.svg +0 -0
  730. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_codeowners.svg +0 -0
  731. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_config.svg +0 -0
  732. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_copilot.svg +0 -0
  733. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_crystal.svg +0 -0
  734. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_cypress.svg +0 -0
  735. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_cypress_spec.svg +0 -0
  736. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_db.svg +0 -0
  737. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_deno.svg +0 -0
  738. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_dhall.svg +0 -0
  739. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_docpad.svg +0 -0
  740. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_drone.svg +0 -0
  741. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_eas-metadata.svg +0 -0
  742. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_eleventy.svg +0 -0
  743. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_eleventy2.svg +0 -0
  744. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_esphome.svg +0 -0
  745. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_expo.svg +0 -0
  746. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_firebasehosting.svg +0 -0
  747. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_fla.svg +0 -0
  748. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_font.svg +0 -0
  749. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_gamemaker2.svg +0 -0
  750. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_gradle.svg +0 -0
  751. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_hashicorp.svg +0 -0
  752. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_hjson.svg +0 -0
  753. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_ini.svg +0 -0
  754. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_io.svg +0 -0
  755. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_js.svg +0 -0
  756. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_jsconfig.svg +0 -0
  757. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_jsmap.svg +0 -0
  758. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_json.svg +0 -0
  759. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_json5.svg +0 -0
  760. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_json_schema.svg +0 -0
  761. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_jsonld.svg +0 -0
  762. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_kite.svg +0 -0
  763. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_lark.svg +0 -0
  764. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_lean.svg +0 -0
  765. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_leanconfig.svg +0 -0
  766. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_lerna.svg +0 -0
  767. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mailing.svg +0 -0
  768. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_markuplint.svg +0 -0
  769. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mcp.svg +0 -0
  770. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mdx-components.svg +0 -0
  771. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mdx.svg +0 -0
  772. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mlang.svg +0 -0
  773. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mustache.svg +0 -0
  774. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_mypy.svg +0 -0
  775. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_neo4j.svg +0 -0
  776. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_netlify.svg +0 -0
  777. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_next.svg +0 -0
  778. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_nim.svg +0 -0
  779. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_nx.svg +0 -0
  780. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_objidconfig.svg +0 -0
  781. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_openHAB.svg +0 -0
  782. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_packship.svg +0 -0
  783. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_pcl.svg +0 -0
  784. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_pnpm.svg +0 -0
  785. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_prettier.svg +0 -0
  786. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_prisma.svg +0 -0
  787. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_purescript.svg +0 -0
  788. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_quasar.svg +0 -0
  789. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_raku.svg +0 -0
  790. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_razzle.svg +0 -0
  791. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_reactrouter.svg +0 -0
  792. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rehype.svg +0 -0
  793. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_remark.svg +0 -0
  794. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_replit.svg +0 -0
  795. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_retext.svg +0 -0
  796. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rome.svg +0 -0
  797. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rubocop.svg +0 -0
  798. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rust.svg +0 -0
  799. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_rust_toolchain.svg +0 -0
  800. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_safetensors.svg +0 -0
  801. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_shadcn.svg +0 -0
  802. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_shaderlab.svg +0 -0
  803. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_solidity.svg +0 -0
  804. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_spin.svg +0 -0
  805. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_stylelint.svg +0 -0
  806. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_stylus.svg +0 -0
  807. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_symfony.svg +0 -0
  808. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_systemd.svg +0 -0
  809. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_systemverilog.svg +0 -0
  810. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_testcafe.svg +0 -0
  811. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_testjs.svg +0 -0
  812. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_tex.svg +0 -0
  813. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_tm.svg +0 -0
  814. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_tmux.svg +0 -0
  815. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_todo.svg +0 -0
  816. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_toit.svg +0 -0
  817. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_toml.svg +0 -0
  818. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_toon.svg +0 -0
  819. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_tree.svg +0 -0
  820. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_turbo.svg +0 -0
  821. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_unibeautify.svg +0 -0
  822. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_vash.svg +0 -0
  823. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_vercel.svg +0 -0
  824. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_vsix.svg +0 -0
  825. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_vsixmanifest.svg +0 -0
  826. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_xfl.svg +0 -0
  827. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_xorg.svg +0 -0
  828. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_yaml.svg +0 -0
  829. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_yaml_official.svg +0 -0
  830. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_light_zeit.svg +0 -0
  831. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lighthouse.svg +0 -0
  832. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lilypond.svg +0 -0
  833. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lime.svg +0 -0
  834. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lintstagedrc.svg +0 -0
  835. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_liquid.svg +0 -0
  836. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lisp.svg +0 -0
  837. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_livescript.svg +0 -0
  838. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lnk.svg +0 -0
  839. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_locale.svg +0 -0
  840. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_log.svg +0 -0
  841. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lolcode.svg +0 -0
  842. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lsl.svg +0 -0
  843. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lua.svg +0 -0
  844. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_luau.svg +0 -0
  845. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_lync.svg +0 -0
  846. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mailing.svg +0 -0
  847. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_makefile.svg +0 -0
  848. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_manifest.svg +0 -0
  849. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_manifest_bak.svg +0 -0
  850. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_manifest_skip.svg +0 -0
  851. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_map.svg +0 -0
  852. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mariadb.svg +0 -0
  853. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markdown.svg +0 -0
  854. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markdownlint.svg +0 -0
  855. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markdownlint_ignore.svg +0 -0
  856. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_marko.svg +0 -0
  857. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markojs.svg +0 -0
  858. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_markuplint.svg +0 -0
  859. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_master-co.svg +0 -0
  860. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_matlab.svg +0 -0
  861. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_maven.svg +0 -0
  862. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_maxscript.svg +0 -0
  863. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_maya.svg +0 -0
  864. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mcp.svg +0 -0
  865. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mdx-components.svg +0 -0
  866. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mdx.svg +0 -0
  867. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mdxlint.svg +0 -0
  868. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mediawiki.svg +0 -0
  869. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mercurial.svg +0 -0
  870. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mermaid.svg +0 -0
  871. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_meson.svg +0 -0
  872. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_metal.svg +0 -0
  873. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_meteor.svg +0 -0
  874. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_minecraft.svg +0 -0
  875. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mivascript.svg +0 -0
  876. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mjml.svg +0 -0
  877. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mlang.svg +0 -0
  878. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mocha.svg +0 -0
  879. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_modernizr.svg +0 -0
  880. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mojo.svg +0 -0
  881. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mojolicious.svg +0 -0
  882. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_moleculer.svg +0 -0
  883. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mondoo.svg +0 -0
  884. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mongo.svg +0 -0
  885. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_monotone.svg +0 -0
  886. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_motif.svg +0 -0
  887. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mson.svg +0 -0
  888. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mustache.svg +0 -0
  889. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mvt.svg +0 -0
  890. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mvtcss.svg +0 -0
  891. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mvtjs.svg +0 -0
  892. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mypy.svg +0 -0
  893. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_mysql.svg +0 -0
  894. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nanostaged.svg +0 -0
  895. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ndst.svg +0 -0
  896. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nearly.svg +0 -0
  897. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_neo4j.svg +0 -0
  898. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_adapter_js.svg +0 -0
  899. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_adapter_ts.svg +0 -0
  900. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_controller_js.svg +0 -0
  901. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_controller_ts.svg +0 -0
  902. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_decorator_js.svg +0 -0
  903. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_decorator_ts.svg +0 -0
  904. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_filter_js.svg +0 -0
  905. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_filter_ts.svg +0 -0
  906. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_gateway_js.svg +0 -0
  907. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_gateway_ts.svg +0 -0
  908. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_guard_js.svg +0 -0
  909. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_guard_ts.svg +0 -0
  910. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_interceptor_js.svg +0 -0
  911. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_interceptor_ts.svg +0 -0
  912. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_middleware_js.svg +0 -0
  913. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_middleware_ts.svg +0 -0
  914. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_module_js.svg +0 -0
  915. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_module_ts.svg +0 -0
  916. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_pipe_js.svg +0 -0
  917. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_pipe_ts.svg +0 -0
  918. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_service_js.svg +0 -0
  919. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nest_service_ts.svg +0 -0
  920. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nestjs.svg +0 -0
  921. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_netlify.svg +0 -0
  922. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_next.svg +0 -0
  923. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nextflow.svg +0 -0
  924. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_css.svg +0 -0
  925. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_dart.svg +0 -0
  926. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_html.svg +0 -0
  927. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_js.svg +0 -0
  928. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_js2.svg +0 -0
  929. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_less.svg +0 -0
  930. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_sass.svg +0 -0
  931. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_scss.svg +0 -0
  932. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_ts.svg +0 -0
  933. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_component_ts2.svg +0 -0
  934. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_controller_js.svg +0 -0
  935. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_controller_ts.svg +0 -0
  936. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_dart.svg +0 -0
  937. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_js.svg +0 -0
  938. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_js2.svg +0 -0
  939. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_ts.svg +0 -0
  940. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_ts2.svg +0 -0
  941. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_dart.svg +0 -0
  942. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_js.svg +0 -0
  943. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_ts.svg +0 -0
  944. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_dart.svg +0 -0
  945. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_js.svg +0 -0
  946. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_ts.svg +0 -0
  947. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_dart.svg +0 -0
  948. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_js.svg +0 -0
  949. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_js2.svg +0 -0
  950. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_ts.svg +0 -0
  951. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_module_ts2.svg +0 -0
  952. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_dart.svg +0 -0
  953. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_js.svg +0 -0
  954. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_js2.svg +0 -0
  955. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_ts.svg +0 -0
  956. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_ts2.svg +0 -0
  957. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_dart.svg +0 -0
  958. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_js.svg +0 -0
  959. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_js2.svg +0 -0
  960. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_ts.svg +0 -0
  961. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_ts2.svg +0 -0
  962. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_dart.svg +0 -0
  963. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_js.svg +0 -0
  964. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_js2.svg +0 -0
  965. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_ts.svg +0 -0
  966. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_service_ts2.svg +0 -0
  967. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_dart.svg +0 -0
  968. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_js.svg +0 -0
  969. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_js2.svg +0 -0
  970. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_ts.svg +0 -0
  971. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_ts2.svg +0 -0
  972. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ng_tailwind.svg +0 -0
  973. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nginx.svg +0 -0
  974. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nim.svg +0 -0
  975. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nimble.svg +0 -0
  976. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ninja.svg +0 -0
  977. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nix.svg +0 -0
  978. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_njsproj.svg +0 -0
  979. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_noc.svg +0 -0
  980. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_node.svg +0 -0
  981. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_node2.svg +0 -0
  982. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nodemon.svg +0 -0
  983. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_npm.svg +0 -0
  984. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_npmpackagejsonlint.svg +0 -0
  985. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nsi.svg +0 -0
  986. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nsri-integrity.svg +0 -0
  987. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nsri.svg +0 -0
  988. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nuget.svg +0 -0
  989. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_numpy.svg +0 -0
  990. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nunjucks.svg +0 -0
  991. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nushell.svg +0 -0
  992. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nuxt.svg +0 -0
  993. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nx.svg +0 -0
  994. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_nyc.svg +0 -0
  995. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_objectivec.svg +0 -0
  996. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_objectivecpp.svg +0 -0
  997. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_objidconfig.svg +0 -0
  998. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ocaml.svg +0 -0
  999. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ocaml_intf.svg +0 -0
  1000. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ogone.svg +0 -0
  1001. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_onenote.svg +0 -0
  1002. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_opam.svg +0 -0
  1003. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_openHAB.svg +0 -0
  1004. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_opencl.svg +0 -0
  1005. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_openscad.svg +0 -0
  1006. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_opentofu.svg +0 -0
  1007. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_org.svg +0 -0
  1008. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_outlook.svg +0 -0
  1009. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ovpn.svg +0 -0
  1010. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_oxc.svg +0 -0
  1011. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_oxlint.svg +0 -0
  1012. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_package.svg +0 -0
  1013. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_packship.svg +0 -0
  1014. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_paket.svg +0 -0
  1015. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pandacss.svg +0 -0
  1016. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_patch.svg +0 -0
  1017. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pcl.svg +0 -0
  1018. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pddl.svg +0 -0
  1019. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pddl_happenings.svg +0 -0
  1020. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pddl_plan.svg +0 -0
  1021. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pdf.svg +0 -0
  1022. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pdf2.svg +0 -0
  1023. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pdm.svg +0 -0
  1024. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_peeky.svg +0 -0
  1025. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_perl.svg +0 -0
  1026. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_perl2.svg +0 -0
  1027. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_perl6.svg +0 -0
  1028. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pgsql.svg +0 -0
  1029. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_photoshop.svg +0 -0
  1030. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_photoshop2.svg +0 -0
  1031. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_php.svg +0 -0
  1032. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_php2.svg +0 -0
  1033. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_php3.svg +0 -0
  1034. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_phpcsfixer.svg +0 -0
  1035. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_phpstan.svg +0 -0
  1036. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_phpunit.svg +0 -0
  1037. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_phraseapp.svg +0 -0
  1038. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pine.svg +0 -0
  1039. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pip.svg +0 -0
  1040. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pipeline.svg +0 -0
  1041. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plantuml.svg +0 -0
  1042. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_platformio.svg +0 -0
  1043. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_playwright.svg +0 -0
  1044. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql.svg +0 -0
  1045. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql_package.svg +0 -0
  1046. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_body.svg +0 -0
  1047. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_header.svg +0 -0
  1048. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_spec.svg +0 -0
  1049. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pm2.svg +0 -0
  1050. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pnpm.svg +0 -0
  1051. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_poedit.svg +0 -0
  1052. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_poetry.svg +0 -0
  1053. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_polyglot.svg +0 -0
  1054. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_polymer.svg +0 -0
  1055. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pony.svg +0 -0
  1056. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_postcss.svg +0 -0
  1057. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_postcssconfig.svg +0 -0
  1058. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_postman.svg +0 -0
  1059. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powerpoint.svg +0 -0
  1060. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powerpoint2.svg +0 -0
  1061. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell.svg +0 -0
  1062. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell2.svg +0 -0
  1063. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_format.svg +0 -0
  1064. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_psd.svg +0 -0
  1065. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_psd2.svg +0 -0
  1066. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_psm.svg +0 -0
  1067. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_psm2.svg +0 -0
  1068. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_powershell_types.svg +0 -0
  1069. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_preact.svg +0 -0
  1070. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_precommit.svg +0 -0
  1071. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prettier.svg +0 -0
  1072. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prisma.svg +0 -0
  1073. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prismaconfig.svg +0 -0
  1074. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_processinglang.svg +0 -0
  1075. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_procfile.svg +0 -0
  1076. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_progress.svg +0 -0
  1077. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prolog.svg +0 -0
  1078. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_prometheus.svg +0 -0
  1079. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_protobuf.svg +0 -0
  1080. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_protractor.svg +0 -0
  1081. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_publiccode.svg +0 -0
  1082. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_publisher.svg +0 -0
  1083. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pug.svg +0 -0
  1084. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pulumi.svg +0 -0
  1085. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_puppet.svg +0 -0
  1086. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_purescript.svg +0 -0
  1087. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_purgecss.svg +0 -0
  1088. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pyenv.svg +0 -0
  1089. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pyret.svg +0 -0
  1090. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pyscript.svg +0 -0
  1091. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pytest.svg +0 -0
  1092. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_python.svg +0 -0
  1093. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pythowo.svg +0 -0
  1094. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pytyped.svg +0 -0
  1095. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_pyup.svg +0 -0
  1096. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_q.svg +0 -0
  1097. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qbs.svg +0 -0
  1098. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qlikview.svg +0 -0
  1099. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qml.svg +0 -0
  1100. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qmldir.svg +0 -0
  1101. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_qsharp.svg +0 -0
  1102. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_quasar.svg +0 -0
  1103. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_r.svg +0 -0
  1104. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ra_syntax_tree.svg +0 -0
  1105. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_racket.svg +0 -0
  1106. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rails.svg +0 -0
  1107. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rake.svg +0 -0
  1108. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_raku.svg +0 -0
  1109. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_raml.svg +0 -0
  1110. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_razor.svg +0 -0
  1111. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_razzle.svg +0 -0
  1112. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reactjs.svg +0 -0
  1113. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reactrouter.svg +0 -0
  1114. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reacttemplate.svg +0 -0
  1115. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reactts.svg +0 -0
  1116. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_reason.svg +0 -0
  1117. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_red.svg +0 -0
  1118. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_registry.svg +0 -0
  1119. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rego.svg +0 -0
  1120. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rehype.svg +0 -0
  1121. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_remark.svg +0 -0
  1122. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_renovate.svg +0 -0
  1123. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_replit.svg +0 -0
  1124. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rescript.svg +0 -0
  1125. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rest.svg +0 -0
  1126. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_retext.svg +0 -0
  1127. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rexx.svg +0 -0
  1128. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_riot.svg +0 -0
  1129. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ripple.svg +0 -0
  1130. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rmd.svg +0 -0
  1131. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rnc.svg +0 -0
  1132. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_robotframework.svg +0 -0
  1133. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_robots.svg +0 -0
  1134. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rolldown.svg +0 -0
  1135. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rollup.svg +0 -0
  1136. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rome.svg +0 -0
  1137. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ron.svg +0 -0
  1138. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rproj.svg +0 -0
  1139. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rspec.svg +0 -0
  1140. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rss.svg +0 -0
  1141. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rubocop.svg +0 -0
  1142. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ruby.svg +0 -0
  1143. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rust.svg +0 -0
  1144. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_rust_toolchain.svg +0 -0
  1145. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_s-lang.svg +0 -0
  1146. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_safetensors.svg +0 -0
  1147. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sails.svg +0 -0
  1148. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_saltstack.svg +0 -0
  1149. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_san.svg +0 -0
  1150. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sapphire_framework_cli.svg +0 -0
  1151. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sas.svg +0 -0
  1152. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sass.svg +0 -0
  1153. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sbt.svg +0 -0
  1154. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_scala.svg +0 -0
  1155. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_scilab.svg +0 -0
  1156. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_script.svg +0 -0
  1157. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_scss.svg +0 -0
  1158. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_scss2.svg +0 -0
  1159. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sdlang.svg +0 -0
  1160. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_search_result.svg +0 -0
  1161. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_seedkit.svg +0 -0
  1162. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sentry.svg +0 -0
  1163. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sequelize.svg +0 -0
  1164. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_serverless.svg +0 -0
  1165. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shadcn.svg +0 -0
  1166. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shaderlab.svg +0 -0
  1167. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shell.svg +0 -0
  1168. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shellcheck.svg +0 -0
  1169. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_shuttle.svg +0 -0
  1170. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_silverstripe.svg +0 -0
  1171. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sino.svg +0 -0
  1172. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sitemap.svg +0 -0
  1173. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_siyuan.svg +0 -0
  1174. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sketch.svg +0 -0
  1175. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_skipper.svg +0 -0
  1176. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slang.svg +0 -0
  1177. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slashup.svg +0 -0
  1178. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slice.svg +0 -0
  1179. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slim.svg +0 -0
  1180. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_slint.svg +0 -0
  1181. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sln.svg +0 -0
  1182. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sln2.svg +0 -0
  1183. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_smarty.svg +0 -0
  1184. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_smithery.svg +0 -0
  1185. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snakemake.svg +0 -0
  1186. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snapcraft.svg +0 -0
  1187. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snaplet.svg +0 -0
  1188. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snort.svg +0 -0
  1189. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_snyk.svg +0 -0
  1190. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_solidarity.svg +0 -0
  1191. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_solidity.svg +0 -0
  1192. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_source.svg +0 -0
  1193. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_spacengine.svg +0 -0
  1194. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sparql.svg +0 -0
  1195. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_spin.svg +0 -0
  1196. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sqf.svg +0 -0
  1197. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sql.svg +0 -0
  1198. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sqlite.svg +0 -0
  1199. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_squirrel.svg +0 -0
  1200. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sss.svg +0 -0
  1201. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sst.svg +0 -0
  1202. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stackblitz.svg +0 -0
  1203. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stan.svg +0 -0
  1204. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stata.svg +0 -0
  1205. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stencil.svg +0 -0
  1206. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_storyboard.svg +0 -0
  1207. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_storybook.svg +0 -0
  1208. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stryker.svg +0 -0
  1209. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stylable.svg +0 -0
  1210. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_style.svg +0 -0
  1211. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_styled.svg +0 -0
  1212. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stylelint.svg +0 -0
  1213. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stylish_haskell.svg +0 -0
  1214. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_stylus.svg +0 -0
  1215. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_sublime.svg +0 -0
  1216. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_subversion.svg +0 -0
  1217. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_svelte.svg +0 -0
  1218. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_svelteconfig.svg +0 -0
  1219. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_svg.svg +0 -0
  1220. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_svgo.svg +0 -0
  1221. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_swagger.svg +0 -0
  1222. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_swc.svg +0 -0
  1223. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_swift.svg +0 -0
  1224. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_swig.svg +0 -0
  1225. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_symfony.svg +0 -0
  1226. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_syncpack.svg +0 -0
  1227. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_systemd.svg +0 -0
  1228. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_systemverilog.svg +0 -0
  1229. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_t4tt.svg +0 -0
  1230. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tailwind.svg +0 -0
  1231. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tamagui.svg +0 -0
  1232. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_taplo.svg +0 -0
  1233. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_taskfile.svg +0 -0
  1234. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tauri.svg +0 -0
  1235. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tcl.svg +0 -0
  1236. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_teal.svg +0 -0
  1237. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_templ.svg +0 -0
  1238. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tera.svg +0 -0
  1239. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_terraform.svg +0 -0
  1240. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_test.svg +0 -0
  1241. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_testcafe.svg +0 -0
  1242. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_testjs.svg +0 -0
  1243. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_testplane.svg +0 -0
  1244. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_testts.svg +0 -0
  1245. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tex.svg +0 -0
  1246. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_text.svg +0 -0
  1247. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_textile.svg +0 -0
  1248. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tfs.svg +0 -0
  1249. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tiltfile.svg +0 -0
  1250. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tm.svg +0 -0
  1251. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tmux.svg +0 -0
  1252. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_todo.svg +0 -0
  1253. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_toit.svg +0 -0
  1254. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_toml.svg +0 -0
  1255. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_toon.svg +0 -0
  1256. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tox.svg +0 -0
  1257. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_travis.svg +0 -0
  1258. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tree.svg +0 -0
  1259. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tres.svg +0 -0
  1260. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_truffle.svg +0 -0
  1261. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_trunk.svg +0 -0
  1262. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsbuildinfo.svg +0 -0
  1263. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tscn.svg +0 -0
  1264. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsconfig.svg +0 -0
  1265. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsconfig_official.svg +0 -0
  1266. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsdoc.svg +0 -0
  1267. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tsdown.svg +0 -0
  1268. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tslint.svg +0 -0
  1269. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tt.svg +0 -0
  1270. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_ttcn.svg +0 -0
  1271. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_tuc.svg +0 -0
  1272. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_turbo.svg +0 -0
  1273. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_twig.svg +0 -0
  1274. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typedoc.svg +0 -0
  1275. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typescript.svg +0 -0
  1276. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typescript_official.svg +0 -0
  1277. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typescriptdef.svg +0 -0
  1278. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typescriptdef_official.svg +0 -0
  1279. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_typo3.svg +0 -0
  1280. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_uiua.svg +0 -0
  1281. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_unibeautify.svg +0 -0
  1282. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_unison.svg +0 -0
  1283. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_unlicense.svg +0 -0
  1284. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_unocss.svg +0 -0
  1285. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_uv.svg +0 -0
  1286. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vagrant.svg +0 -0
  1287. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vala.svg +0 -0
  1288. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vanilla_extract.svg +0 -0
  1289. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vapi.svg +0 -0
  1290. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vapor.svg +0 -0
  1291. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vash.svg +0 -0
  1292. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vb.svg +0 -0
  1293. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vba.svg +0 -0
  1294. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vbhtml.svg +0 -0
  1295. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vbproj.svg +0 -0
  1296. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vcxproj.svg +0 -0
  1297. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_velocity.svg +0 -0
  1298. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vento.svg +0 -0
  1299. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vercel.svg +0 -0
  1300. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_verilog.svg +0 -0
  1301. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vhdl.svg +0 -0
  1302. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_video.svg +0 -0
  1303. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_view.svg +0 -0
  1304. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vim.svg +0 -0
  1305. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vite.svg +0 -0
  1306. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vitest.svg +0 -0
  1307. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vlang.svg +0 -0
  1308. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_volt.svg +0 -0
  1309. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vroom.svg +0 -0
  1310. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode-insiders.svg +0 -0
  1311. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode.svg +0 -0
  1312. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode2.svg +0 -0
  1313. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode3.svg +0 -0
  1314. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vscode_test.svg +0 -0
  1315. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vsix.svg +0 -0
  1316. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vsixmanifest.svg +0 -0
  1317. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vue.svg +0 -0
  1318. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vueconfig.svg +0 -0
  1319. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vvvvvv.svg +0 -0
  1320. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_vyper.svg +0 -0
  1321. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wallaby.svg +0 -0
  1322. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wally.svg +0 -0
  1323. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wasm.svg +0 -0
  1324. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_watchmanconfig.svg +0 -0
  1325. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wdio.svg +0 -0
  1326. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_weblate.svg +0 -0
  1327. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_webpack.svg +0 -0
  1328. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wenyan.svg +0 -0
  1329. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wercker.svg +0 -0
  1330. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wgsl.svg +0 -0
  1331. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wikitext.svg +0 -0
  1332. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_windi.svg +0 -0
  1333. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wit.svg +0 -0
  1334. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wolfram.svg +0 -0
  1335. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_word.svg +0 -0
  1336. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_word2.svg +0 -0
  1337. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wpml.svg +0 -0
  1338. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wurst.svg +0 -0
  1339. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wxml.svg +0 -0
  1340. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wxss.svg +0 -0
  1341. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_wxt.svg +0 -0
  1342. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xaml.svg +0 -0
  1343. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xcode.svg +0 -0
  1344. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xfl.svg +0 -0
  1345. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xib.svg +0 -0
  1346. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xliff.svg +0 -0
  1347. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xmake.svg +0 -0
  1348. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xml.svg +0 -0
  1349. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xo.svg +0 -0
  1350. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xorg.svg +0 -0
  1351. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xquery.svg +0 -0
  1352. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_xsl.svg +0 -0
  1353. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yacc.svg +0 -0
  1354. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yaml.svg +0 -0
  1355. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yaml_official.svg +0 -0
  1356. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yamllint.svg +0 -0
  1357. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yandex.svg +0 -0
  1358. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yang.svg +0 -0
  1359. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yarn.svg +0 -0
  1360. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_yeoman.svg +0 -0
  1361. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_zeit.svg +0 -0
  1362. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_zig.svg +0 -0
  1363. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_zip.svg +0 -0
  1364. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/file_type_zip2.svg +0 -0
  1365. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_android.svg +0 -0
  1366. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_android_opened.svg +0 -0
  1367. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_angular.svg +0 -0
  1368. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_angular_opened.svg +0 -0
  1369. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_apache.svg +0 -0
  1370. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_apache_opened.svg +0 -0
  1371. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_api.svg +0 -0
  1372. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_api_opened.svg +0 -0
  1373. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_app.svg +0 -0
  1374. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_app_opened.svg +0 -0
  1375. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_arangodb.svg +0 -0
  1376. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_arangodb_opened.svg +0 -0
  1377. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_asset.svg +0 -0
  1378. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_asset_opened.svg +0 -0
  1379. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_astro.svg +0 -0
  1380. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_astro_opened.svg +0 -0
  1381. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_audio.svg +0 -0
  1382. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_audio_opened.svg +0 -0
  1383. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_aurelia.svg +0 -0
  1384. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_aurelia_opened.svg +0 -0
  1385. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_aws.svg +0 -0
  1386. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_aws_opened.svg +0 -0
  1387. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_azure.svg +0 -0
  1388. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_azure_opened.svg +0 -0
  1389. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_azurepipelines.svg +0 -0
  1390. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_azurepipelines_opened.svg +0 -0
  1391. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_binary.svg +0 -0
  1392. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_binary_opened.svg +0 -0
  1393. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bloc.svg +0 -0
  1394. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bloc_opened.svg +0 -0
  1395. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_blueprint.svg +0 -0
  1396. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_blueprint_opened.svg +0 -0
  1397. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bot.svg +0 -0
  1398. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bot_opened.svg +0 -0
  1399. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bower.svg +0 -0
  1400. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_bower_opened.svg +0 -0
  1401. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_buildkite.svg +0 -0
  1402. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_buildkite_opened.svg +0 -0
  1403. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cake.svg +0 -0
  1404. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cake_opened.svg +0 -0
  1405. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cargo.svg +0 -0
  1406. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cargo_opened.svg +0 -0
  1407. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_certificate.svg +0 -0
  1408. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_certificate_opened.svg +0 -0
  1409. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_changesets.svg +0 -0
  1410. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_changesets_opened.svg +0 -0
  1411. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_chef.svg +0 -0
  1412. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_chef_opened.svg +0 -0
  1413. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_circleci.svg +0 -0
  1414. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_circleci_opened.svg +0 -0
  1415. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_claude.svg +0 -0
  1416. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_claude_opened.svg +0 -0
  1417. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cli.svg +0 -0
  1418. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cli_opened.svg +0 -0
  1419. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_client.svg +0 -0
  1420. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_client_opened.svg +0 -0
  1421. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cloudflare.svg +0 -0
  1422. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cloudflare_opened.svg +0 -0
  1423. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cmake.svg +0 -0
  1424. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cmake_opened.svg +0 -0
  1425. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_common.svg +0 -0
  1426. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_common_opened.svg +0 -0
  1427. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_component.svg +0 -0
  1428. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_component_opened.svg +0 -0
  1429. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_composer.svg +0 -0
  1430. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_composer_opened.svg +0 -0
  1431. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_config.svg +0 -0
  1432. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_config_opened.svg +0 -0
  1433. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_controller.svg +0 -0
  1434. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_controller_opened.svg +0 -0
  1435. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_coverage.svg +0 -0
  1436. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_coverage_opened.svg +0 -0
  1437. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_css.svg +0 -0
  1438. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_css2.svg +0 -0
  1439. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_css2_opened.svg +0 -0
  1440. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_css_opened.svg +0 -0
  1441. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cubit.svg +0 -0
  1442. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cubit_opened.svg +0 -0
  1443. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cursor.svg +0 -0
  1444. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cursor_opened.svg +0 -0
  1445. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cypress.svg +0 -0
  1446. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_cypress_opened.svg +0 -0
  1447. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dapr.svg +0 -0
  1448. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dapr_opened.svg +0 -0
  1449. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dart.svg +0 -0
  1450. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dart_opened.svg +0 -0
  1451. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_datadog.svg +0 -0
  1452. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_datadog_opened.svg +0 -0
  1453. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_db.svg +0 -0
  1454. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_db_opened.svg +0 -0
  1455. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_debian.svg +0 -0
  1456. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_debian_opened.svg +0 -0
  1457. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dependabot.svg +0 -0
  1458. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dependabot_opened.svg +0 -0
  1459. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_devcontainer.svg +0 -0
  1460. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_devcontainer_opened.svg +0 -0
  1461. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dist.svg +0 -0
  1462. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_dist_opened.svg +0 -0
  1463. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_docker.svg +0 -0
  1464. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_docker_opened.svg +0 -0
  1465. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_docs.svg +0 -0
  1466. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_docs_opened.svg +0 -0
  1467. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_e2e.svg +0 -0
  1468. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_e2e_opened.svg +0 -0
  1469. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_elasticbeanstalk.svg +0 -0
  1470. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_elasticbeanstalk_opened.svg +0 -0
  1471. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_electron.svg +0 -0
  1472. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_electron_opened.svg +0 -0
  1473. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_expo.svg +0 -0
  1474. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_expo_opened.svg +0 -0
  1475. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_favicon.svg +0 -0
  1476. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_favicon_opened.svg +0 -0
  1477. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_flow.svg +0 -0
  1478. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_flow_opened.svg +0 -0
  1479. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_flutter.svg +0 -0
  1480. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_flutter_opened.svg +0 -0
  1481. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_fonts.svg +0 -0
  1482. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_fonts_opened.svg +0 -0
  1483. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_frontcommerce.svg +0 -0
  1484. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_frontcommerce_opened.svg +0 -0
  1485. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gcp.svg +0 -0
  1486. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gcp_opened.svg +0 -0
  1487. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_git.svg +0 -0
  1488. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_git_opened.svg +0 -0
  1489. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_github.svg +0 -0
  1490. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_github_opened.svg +0 -0
  1491. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gitlab.svg +0 -0
  1492. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gitlab_opened.svg +0 -0
  1493. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_godot.svg +0 -0
  1494. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_godot_opened.svg +0 -0
  1495. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gradle.svg +0 -0
  1496. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gradle_opened.svg +0 -0
  1497. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_graphql.svg +0 -0
  1498. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_graphql_opened.svg +0 -0
  1499. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_grunt.svg +0 -0
  1500. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_grunt_opened.svg +0 -0
  1501. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gulp.svg +0 -0
  1502. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_gulp_opened.svg +0 -0
  1503. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_haxelib.svg +0 -0
  1504. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_haxelib_opened.svg +0 -0
  1505. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_helper.svg +0 -0
  1506. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_helper_opened.svg +0 -0
  1507. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_histoire.svg +0 -0
  1508. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_histoire_opened.svg +0 -0
  1509. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_hook.svg +0 -0
  1510. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_hook_opened.svg +0 -0
  1511. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_husky.svg +0 -0
  1512. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_husky_opened.svg +0 -0
  1513. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_idea.svg +0 -0
  1514. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_idea_opened.svg +0 -0
  1515. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_images.svg +0 -0
  1516. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_images_opened.svg +0 -0
  1517. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_include.svg +0 -0
  1518. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_include_opened.svg +0 -0
  1519. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_interfaces.svg +0 -0
  1520. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_interfaces_opened.svg +0 -0
  1521. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_ios.svg +0 -0
  1522. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_ios_opened.svg +0 -0
  1523. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_js.svg +0 -0
  1524. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_js_opened.svg +0 -0
  1525. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_json.svg +0 -0
  1526. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_json_official.svg +0 -0
  1527. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_json_official_opened.svg +0 -0
  1528. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_json_opened.svg +0 -0
  1529. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_junie.svg +0 -0
  1530. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_junie_opened.svg +0 -0
  1531. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_kotlin.svg +0 -0
  1532. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_kotlin_opened.svg +0 -0
  1533. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_kubernetes.svg +0 -0
  1534. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_kubernetes_opened.svg +0 -0
  1535. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_less.svg +0 -0
  1536. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_less_opened.svg +0 -0
  1537. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_library.svg +0 -0
  1538. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_library_opened.svg +0 -0
  1539. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_cursor.svg +0 -0
  1540. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_cursor_opened.svg +0 -0
  1541. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_cypress.svg +0 -0
  1542. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_cypress_opened.svg +0 -0
  1543. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_electron.svg +0 -0
  1544. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_electron_opened.svg +0 -0
  1545. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_expo.svg +0 -0
  1546. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_expo_opened.svg +0 -0
  1547. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_fonts.svg +0 -0
  1548. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_fonts_opened.svg +0 -0
  1549. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_gradle.svg +0 -0
  1550. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_gradle_opened.svg +0 -0
  1551. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_meteor.svg +0 -0
  1552. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_meteor_opened.svg +0 -0
  1553. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_mypy.svg +0 -0
  1554. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_mypy_opened.svg +0 -0
  1555. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_mysql.svg +0 -0
  1556. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_mysql_opened.svg +0 -0
  1557. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_node.svg +0 -0
  1558. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_node_opened.svg +0 -0
  1559. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_redux.svg +0 -0
  1560. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_redux_opened.svg +0 -0
  1561. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_sass.svg +0 -0
  1562. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_sass_opened.svg +0 -0
  1563. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_zed.svg +0 -0
  1564. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_light_zed_opened.svg +0 -0
  1565. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_linux.svg +0 -0
  1566. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_linux_opened.svg +0 -0
  1567. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_locale.svg +0 -0
  1568. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_locale_opened.svg +0 -0
  1569. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_log.svg +0 -0
  1570. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_log_opened.svg +0 -0
  1571. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_macos.svg +0 -0
  1572. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_macos_opened.svg +0 -0
  1573. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mariadb.svg +0 -0
  1574. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mariadb_opened.svg +0 -0
  1575. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_maven.svg +0 -0
  1576. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_maven_opened.svg +0 -0
  1577. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mediawiki.svg +0 -0
  1578. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mediawiki_opened.svg +0 -0
  1579. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_memcached.svg +0 -0
  1580. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_memcached_opened.svg +0 -0
  1581. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_meteor.svg +0 -0
  1582. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_meteor_opened.svg +0 -0
  1583. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_middleware.svg +0 -0
  1584. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_middleware_opened.svg +0 -0
  1585. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_minecraft.svg +0 -0
  1586. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_minecraft_opened.svg +0 -0
  1587. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_minikube.svg +0 -0
  1588. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_minikube_opened.svg +0 -0
  1589. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mjml.svg +0 -0
  1590. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mjml_opened.svg +0 -0
  1591. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mock.svg +0 -0
  1592. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mock_opened.svg +0 -0
  1593. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_model.svg +0 -0
  1594. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_model_opened.svg +0 -0
  1595. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_module.svg +0 -0
  1596. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_module_opened.svg +0 -0
  1597. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mojo.svg +0 -0
  1598. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mojo_opened.svg +0 -0
  1599. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mongodb.svg +0 -0
  1600. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mongodb_opened.svg +0 -0
  1601. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mypy.svg +0 -0
  1602. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mypy_opened.svg +0 -0
  1603. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mysql.svg +0 -0
  1604. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_mysql_opened.svg +0 -0
  1605. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_netlify.svg +0 -0
  1606. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_netlify_opened.svg +0 -0
  1607. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_next.svg +0 -0
  1608. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_next_opened.svg +0 -0
  1609. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nginx.svg +0 -0
  1610. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nginx_opened.svg +0 -0
  1611. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nix.svg +0 -0
  1612. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nix_opened.svg +0 -0
  1613. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_node.svg +0 -0
  1614. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_node_opened.svg +0 -0
  1615. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_notebooks.svg +0 -0
  1616. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_notebooks_opened.svg +0 -0
  1617. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_notification.svg +0 -0
  1618. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_notification_opened.svg +0 -0
  1619. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nuget.svg +0 -0
  1620. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nuget_opened.svg +0 -0
  1621. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nuxt.svg +0 -0
  1622. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_nuxt_opened.svg +0 -0
  1623. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_package.svg +0 -0
  1624. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_package_opened.svg +0 -0
  1625. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_paket.svg +0 -0
  1626. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_paket_opened.svg +0 -0
  1627. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_php.svg +0 -0
  1628. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_php_opened.svg +0 -0
  1629. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_platformio.svg +0 -0
  1630. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_platformio_opened.svg +0 -0
  1631. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_plugin.svg +0 -0
  1632. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_plugin_opened.svg +0 -0
  1633. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_prisma.svg +0 -0
  1634. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_prisma_opened.svg +0 -0
  1635. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_private.svg +0 -0
  1636. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_private_opened.svg +0 -0
  1637. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_public.svg +0 -0
  1638. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_public_opened.svg +0 -0
  1639. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_pytest.svg +0 -0
  1640. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_pytest_opened.svg +0 -0
  1641. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_python.svg +0 -0
  1642. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_python_opened.svg +0 -0
  1643. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_ravendb.svg +0 -0
  1644. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_ravendb_opened.svg +0 -0
  1645. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_redis.svg +0 -0
  1646. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_redis_opened.svg +0 -0
  1647. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_redux.svg +0 -0
  1648. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_redux_opened.svg +0 -0
  1649. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_route.svg +0 -0
  1650. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_route_opened.svg +0 -0
  1651. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_sass.svg +0 -0
  1652. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_sass_opened.svg +0 -0
  1653. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_script.svg +0 -0
  1654. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_script_opened.svg +0 -0
  1655. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_seedkit.svg +0 -0
  1656. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_seedkit_opened.svg +0 -0
  1657. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_server.svg +0 -0
  1658. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_server_opened.svg +0 -0
  1659. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_services.svg +0 -0
  1660. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_services_opened.svg +0 -0
  1661. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_shared.svg +0 -0
  1662. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_shared_opened.svg +0 -0
  1663. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_snaplet.svg +0 -0
  1664. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_snaplet_opened.svg +0 -0
  1665. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_spin.svg +0 -0
  1666. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_spin_opened.svg +0 -0
  1667. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_src.svg +0 -0
  1668. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_src_opened.svg +0 -0
  1669. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_sso.svg +0 -0
  1670. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_sso_opened.svg +0 -0
  1671. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_story.svg +0 -0
  1672. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_story_opened.svg +0 -0
  1673. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_style.svg +0 -0
  1674. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_style_opened.svg +0 -0
  1675. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_supabase.svg +0 -0
  1676. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_supabase_opened.svg +0 -0
  1677. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_svelte.svg +0 -0
  1678. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_svelte_opened.svg +0 -0
  1679. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_tauri.svg +0 -0
  1680. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_tauri_opened.svg +0 -0
  1681. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_temp.svg +0 -0
  1682. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_temp_opened.svg +0 -0
  1683. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_template.svg +0 -0
  1684. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_template_opened.svg +0 -0
  1685. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_test.svg +0 -0
  1686. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_test_opened.svg +0 -0
  1687. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_theme.svg +0 -0
  1688. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_theme_opened.svg +0 -0
  1689. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_tools.svg +0 -0
  1690. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_tools_opened.svg +0 -0
  1691. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_travis.svg +0 -0
  1692. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_travis_opened.svg +0 -0
  1693. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_trunk.svg +0 -0
  1694. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_trunk_opened.svg +0 -0
  1695. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_turbo.svg +0 -0
  1696. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_turbo_opened.svg +0 -0
  1697. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typescript.svg +0 -0
  1698. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typescript_opened.svg +0 -0
  1699. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typings.svg +0 -0
  1700. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typings2.svg +0 -0
  1701. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typings2_opened.svg +0 -0
  1702. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_typings_opened.svg +0 -0
  1703. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vagrant.svg +0 -0
  1704. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vagrant_opened.svg +0 -0
  1705. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vercel.svg +0 -0
  1706. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vercel_opened.svg +0 -0
  1707. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_video.svg +0 -0
  1708. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_video_opened.svg +0 -0
  1709. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_view.svg +0 -0
  1710. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_view_opened.svg +0 -0
  1711. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vitepress.svg +0 -0
  1712. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vitepress_opened.svg +0 -0
  1713. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vs.svg +0 -0
  1714. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vs2.svg +0 -0
  1715. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vs2_opened.svg +0 -0
  1716. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vs_opened.svg +0 -0
  1717. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode.svg +0 -0
  1718. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode2.svg +0 -0
  1719. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode2_opened.svg +0 -0
  1720. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode3.svg +0 -0
  1721. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode3_opened.svg +0 -0
  1722. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_opened.svg +0 -0
  1723. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test.svg +0 -0
  1724. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test2.svg +0 -0
  1725. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test2_opened.svg +0 -0
  1726. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test3.svg +0 -0
  1727. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test3_opened.svg +0 -0
  1728. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test_opened.svg +0 -0
  1729. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_wasm.svg +0 -0
  1730. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_wasm_opened.svg +0 -0
  1731. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_webpack.svg +0 -0
  1732. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_webpack_opened.svg +0 -0
  1733. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_windows.svg +0 -0
  1734. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_windows_opened.svg +0 -0
  1735. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_windsurf.svg +0 -0
  1736. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_windsurf_opened.svg +0 -0
  1737. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_wit.svg +0 -0
  1738. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_wit_opened.svg +0 -0
  1739. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_www.svg +0 -0
  1740. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_www_opened.svg +0 -0
  1741. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_yarn.svg +0 -0
  1742. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_yarn_opened.svg +0 -0
  1743. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_zed.svg +0 -0
  1744. /package/static/{5be121a → 101c327}/extensions/builtin.vscode-icons/icons/folder_type_zed_opened.svg +0 -0
  1745. /package/static/{5be121a → 101c327}/fonts/FiraCode-VariableFont.ttf +0 -0
  1746. /package/static/{5be121a → 101c327}/icons/add.svg +0 -0
  1747. /package/static/{5be121a → 101c327}/icons/arrow-down.svg +0 -0
  1748. /package/static/{5be121a → 101c327}/icons/arrow-left.svg +0 -0
  1749. /package/static/{5be121a → 101c327}/icons/arrow-right.svg +0 -0
  1750. /package/static/{5be121a → 101c327}/icons/arrow-up.svg +0 -0
  1751. /package/static/{5be121a → 101c327}/icons/blank.svg +0 -0
  1752. /package/static/{5be121a → 101c327}/icons/book.svg +0 -0
  1753. /package/static/{5be121a → 101c327}/icons/case-sensitive.svg +0 -0
  1754. /package/static/{5be121a → 101c327}/icons/check.svg +0 -0
  1755. /package/static/{5be121a → 101c327}/icons/chevron-down.svg +0 -0
  1756. /package/static/{5be121a → 101c327}/icons/chevron-left.svg +0 -0
  1757. /package/static/{5be121a → 101c327}/icons/chevron-right.svg +0 -0
  1758. /package/static/{5be121a → 101c327}/icons/chevron-up.svg +0 -0
  1759. /package/static/{5be121a → 101c327}/icons/chrome-close.svg +0 -0
  1760. /package/static/{5be121a → 101c327}/icons/chrome-maximize.svg +0 -0
  1761. /package/static/{5be121a → 101c327}/icons/chrome-minimize.svg +0 -0
  1762. /package/static/{5be121a → 101c327}/icons/chrome-restore.svg +0 -0
  1763. /package/static/{5be121a → 101c327}/icons/circle-filled.svg +0 -0
  1764. /package/static/{5be121a → 101c327}/icons/clear-all.svg +0 -0
  1765. /package/static/{5be121a → 101c327}/icons/close.svg +0 -0
  1766. /package/static/{5be121a → 101c327}/icons/cloud.svg +0 -0
  1767. /package/static/{5be121a → 101c327}/icons/collapse-all.svg +0 -0
  1768. /package/static/{5be121a → 101c327}/icons/debug-all.svg +0 -0
  1769. /package/static/{5be121a → 101c327}/icons/debug-alt-2.svg +0 -0
  1770. /package/static/{5be121a → 101c327}/icons/debug-alt-small.svg +0 -0
  1771. /package/static/{5be121a → 101c327}/icons/debug-alt.svg +0 -0
  1772. /package/static/{5be121a → 101c327}/icons/debug-breakpoint-conditional-unverified.svg +0 -0
  1773. /package/static/{5be121a → 101c327}/icons/debug-breakpoint-conditional.svg +0 -0
  1774. /package/static/{5be121a → 101c327}/icons/debug-breakpoint-data-unverified.svg +0 -0
  1775. /package/static/{5be121a → 101c327}/icons/debug-breakpoint-data.svg +0 -0
  1776. /package/static/{5be121a → 101c327}/icons/debug-breakpoint-function-unverified.svg +0 -0
  1777. /package/static/{5be121a → 101c327}/icons/debug-breakpoint-function.svg +0 -0
  1778. /package/static/{5be121a → 101c327}/icons/debug-breakpoint-log-unverified.svg +0 -0
  1779. /package/static/{5be121a → 101c327}/icons/debug-breakpoint-log.svg +0 -0
  1780. /package/static/{5be121a → 101c327}/icons/debug-breakpoint-unsupported.svg +0 -0
  1781. /package/static/{5be121a → 101c327}/icons/debug-console.svg +0 -0
  1782. /package/static/{5be121a → 101c327}/icons/debug-continue-small.svg +0 -0
  1783. /package/static/{5be121a → 101c327}/icons/debug-continue.svg +0 -0
  1784. /package/static/{5be121a → 101c327}/icons/debug-coverage.svg +0 -0
  1785. /package/static/{5be121a → 101c327}/icons/debug-disconnect.svg +0 -0
  1786. /package/static/{5be121a → 101c327}/icons/debug-line-by-line.svg +0 -0
  1787. /package/static/{5be121a → 101c327}/icons/debug-pause.svg +0 -0
  1788. /package/static/{5be121a → 101c327}/icons/debug-rerun.svg +0 -0
  1789. /package/static/{5be121a → 101c327}/icons/debug-restart-frame.svg +0 -0
  1790. /package/static/{5be121a → 101c327}/icons/debug-restart.svg +0 -0
  1791. /package/static/{5be121a → 101c327}/icons/debug-reverse-continue.svg +0 -0
  1792. /package/static/{5be121a → 101c327}/icons/debug-stackframe-active.svg +0 -0
  1793. /package/static/{5be121a → 101c327}/icons/debug-stackframe.svg +0 -0
  1794. /package/static/{5be121a → 101c327}/icons/debug-start.svg +0 -0
  1795. /package/static/{5be121a → 101c327}/icons/debug-step-back.svg +0 -0
  1796. /package/static/{5be121a → 101c327}/icons/debug-step-into.svg +0 -0
  1797. /package/static/{5be121a → 101c327}/icons/debug-step-out.svg +0 -0
  1798. /package/static/{5be121a → 101c327}/icons/debug-step-over.svg +0 -0
  1799. /package/static/{5be121a → 101c327}/icons/debug-stop.svg +0 -0
  1800. /package/static/{5be121a → 101c327}/icons/debug.svg +0 -0
  1801. /package/static/{5be121a → 101c327}/icons/discard.svg +0 -0
  1802. /package/static/{5be121a → 101c327}/icons/edit.svg +0 -0
  1803. /package/static/{5be121a → 101c327}/icons/ellipsis.svg +0 -0
  1804. /package/static/{5be121a → 101c327}/icons/error.svg +0 -0
  1805. /package/static/{5be121a → 101c327}/icons/exclude.svg +0 -0
  1806. /package/static/{5be121a → 101c327}/icons/extensionDefaultIcon.png +0 -0
  1807. /package/static/{5be121a → 101c327}/icons/extensions.svg +0 -0
  1808. /package/static/{5be121a → 101c327}/icons/files.svg +0 -0
  1809. /package/static/{5be121a → 101c327}/icons/filter.svg +0 -0
  1810. /package/static/{5be121a → 101c327}/icons/go-to-file.svg +0 -0
  1811. /package/static/{5be121a → 101c327}/icons/icon-close.svg +0 -0
  1812. /package/static/{5be121a → 101c327}/icons/icon-source-control.svg +0 -0
  1813. /package/static/{5be121a → 101c327}/icons/icon-sync.svg +0 -0
  1814. /package/static/{5be121a → 101c327}/icons/icon.png +0 -0
  1815. /package/static/{5be121a → 101c327}/icons/icon.svg +0 -0
  1816. /package/static/{5be121a → 101c327}/icons/info.svg +0 -0
  1817. /package/static/{5be121a → 101c327}/icons/language-icon.svg +0 -0
  1818. /package/static/{5be121a → 101c327}/icons/link-external.svg +0 -0
  1819. /package/static/{5be121a → 101c327}/icons/list-flat.svg +0 -0
  1820. /package/static/{5be121a → 101c327}/icons/list-tree.svg +0 -0
  1821. /package/static/{5be121a → 101c327}/icons/new-file.svg +0 -0
  1822. /package/static/{5be121a → 101c327}/icons/new-folder.svg +0 -0
  1823. /package/static/{5be121a → 101c327}/icons/newline.svg +0 -0
  1824. /package/static/{5be121a → 101c327}/icons/open-preview.svg +0 -0
  1825. /package/static/{5be121a → 101c327}/icons/play.svg +0 -0
  1826. /package/static/{5be121a → 101c327}/icons/preserve-case.svg +0 -0
  1827. /package/static/{5be121a → 101c327}/icons/progress.svg +0 -0
  1828. /package/static/{5be121a → 101c327}/icons/pwa-icon-192.png +0 -0
  1829. /package/static/{5be121a → 101c327}/icons/pwa-icon-512.png +0 -0
  1830. /package/static/{5be121a → 101c327}/icons/record-keys.svg +0 -0
  1831. /package/static/{5be121a → 101c327}/icons/refresh.svg +0 -0
  1832. /package/static/{5be121a → 101c327}/icons/regex.svg +0 -0
  1833. /package/static/{5be121a → 101c327}/icons/remove.svg +0 -0
  1834. /package/static/{5be121a → 101c327}/icons/replace-all.svg +0 -0
  1835. /package/static/{5be121a → 101c327}/icons/replace.svg +0 -0
  1836. /package/static/{5be121a → 101c327}/icons/repo.svg +0 -0
  1837. /package/static/{5be121a → 101c327}/icons/run-all.svg +0 -0
  1838. /package/static/{5be121a → 101c327}/icons/search.svg +0 -0
  1839. /package/static/{5be121a → 101c327}/icons/send.svg +0 -0
  1840. /package/static/{5be121a → 101c327}/icons/settings-gear.svg +0 -0
  1841. /package/static/{5be121a → 101c327}/icons/sort-precedence.svg +0 -0
  1842. /package/static/{5be121a → 101c327}/icons/source-control.svg +0 -0
  1843. /package/static/{5be121a → 101c327}/icons/split-horizontal.svg +0 -0
  1844. /package/static/{5be121a → 101c327}/icons/squiggly-error.svg +0 -0
  1845. /package/static/{5be121a → 101c327}/icons/squiggly-warning.svg +0 -0
  1846. /package/static/{5be121a → 101c327}/icons/symbol-array.svg +0 -0
  1847. /package/static/{5be121a → 101c327}/icons/symbol-boolean.svg +0 -0
  1848. /package/static/{5be121a → 101c327}/icons/symbol-class.svg +0 -0
  1849. /package/static/{5be121a → 101c327}/icons/symbol-color.svg +0 -0
  1850. /package/static/{5be121a → 101c327}/icons/symbol-constant.svg +0 -0
  1851. /package/static/{5be121a → 101c327}/icons/symbol-enum-member.svg +0 -0
  1852. /package/static/{5be121a → 101c327}/icons/symbol-enum.svg +0 -0
  1853. /package/static/{5be121a → 101c327}/icons/symbol-event.svg +0 -0
  1854. /package/static/{5be121a → 101c327}/icons/symbol-field.svg +0 -0
  1855. /package/static/{5be121a → 101c327}/icons/symbol-file.svg +0 -0
  1856. /package/static/{5be121a → 101c327}/icons/symbol-interface.svg +0 -0
  1857. /package/static/{5be121a → 101c327}/icons/symbol-key.svg +0 -0
  1858. /package/static/{5be121a → 101c327}/icons/symbol-keyword.svg +0 -0
  1859. /package/static/{5be121a → 101c327}/icons/symbol-method.svg +0 -0
  1860. /package/static/{5be121a → 101c327}/icons/symbol-misc.svg +0 -0
  1861. /package/static/{5be121a → 101c327}/icons/symbol-namespace.svg +0 -0
  1862. /package/static/{5be121a → 101c327}/icons/symbol-numeric.svg +0 -0
  1863. /package/static/{5be121a → 101c327}/icons/symbol-operator.svg +0 -0
  1864. /package/static/{5be121a → 101c327}/icons/symbol-parameter.svg +0 -0
  1865. /package/static/{5be121a → 101c327}/icons/symbol-property.svg +0 -0
  1866. /package/static/{5be121a → 101c327}/icons/symbol-ruler.svg +0 -0
  1867. /package/static/{5be121a → 101c327}/icons/symbol-snippet.svg +0 -0
  1868. /package/static/{5be121a → 101c327}/icons/symbol-string.svg +0 -0
  1869. /package/static/{5be121a → 101c327}/icons/symbol-structure.svg +0 -0
  1870. /package/static/{5be121a → 101c327}/icons/symbol-variable.svg +0 -0
  1871. /package/static/{5be121a → 101c327}/icons/tag.svg +0 -0
  1872. /package/static/{5be121a → 101c327}/icons/terminal-bash.svg +0 -0
  1873. /package/static/{5be121a → 101c327}/icons/terminal.svg +0 -0
  1874. /package/static/{5be121a → 101c327}/icons/theme-icon.png +0 -0
  1875. /package/static/{5be121a → 101c327}/icons/trash.svg +0 -0
  1876. /package/static/{5be121a → 101c327}/icons/triangle-down.svg +0 -0
  1877. /package/static/{5be121a → 101c327}/icons/triangle-left.svg +0 -0
  1878. /package/static/{5be121a → 101c327}/icons/triangle-right.svg +0 -0
  1879. /package/static/{5be121a → 101c327}/icons/triangle-up.svg +0 -0
  1880. /package/static/{5be121a → 101c327}/icons/warning.svg +0 -0
  1881. /package/static/{5be121a → 101c327}/icons/whole-word.svg +0 -0
  1882. /package/static/{5be121a → 101c327}/icons/zoom-in.svg +0 -0
  1883. /package/static/{5be121a → 101c327}/icons/zoom-out.svg +0 -0
  1884. /package/static/{5be121a → 101c327}/js/babel-parser.js +0 -0
  1885. /package/static/{5be121a → 101c327}/js/ky.js +0 -0
  1886. /package/static/{5be121a → 101c327}/js/lvce-editor-import-script.js +0 -0
  1887. /package/static/{5be121a → 101c327}/js/lvce-editor-ipc.js +0 -0
  1888. /package/static/{5be121a → 101c327}/js/lvce-editor-json-rpc.js +0 -0
  1889. /package/static/{5be121a → 101c327}/js/lvce-editor-rpc.js +0 -0
  1890. /package/static/{5be121a → 101c327}/js/lvce-editor-verror.js +0 -0
  1891. /package/static/{5be121a → 101c327}/js/p-min-delay.js +0 -0
  1892. /package/static/{5be121a → 101c327}/js/pretty-bytes.js +0 -0
  1893. /package/static/{5be121a → 101c327}/js/preview-injected.js +0 -0
  1894. /package/static/{5be121a → 101c327}/js/yoctodelay.js +0 -0
  1895. /package/static/{5be121a → 101c327}/lib-css/termterm.css +0 -0
  1896. /package/static/{5be121a → 101c327}/packages/activity-bar-worker/dist/activityBarWorkerMain.js +0 -0
  1897. /package/static/{5be121a → 101c327}/packages/chat-coordinator-worker/dist/chatCoordinatorWorkerMain.js +0 -0
  1898. /package/static/{5be121a → 101c327}/packages/chat-debug-view/dist/chatDebugViewWorkerMain.js +0 -0
  1899. /package/static/{5be121a → 101c327}/packages/chat-math-worker/dist/chatMathWorkerMain.js +0 -0
  1900. /package/static/{5be121a → 101c327}/packages/chat-network-worker/dist/chatNetworkWorkerMain.js +0 -0
  1901. /package/static/{5be121a → 101c327}/packages/chat-tool-worker/dist/chatToolWorkerMain.js +0 -0
  1902. /package/static/{5be121a → 101c327}/packages/clipboard-worker/dist/clipBoardWorkerMain.js +0 -0
  1903. /package/static/{5be121a → 101c327}/packages/color-picker-worker/dist/colorPickerWorkerMain.js +0 -0
  1904. /package/static/{5be121a → 101c327}/packages/completion-worker/dist/completionWorkerMain.js +0 -0
  1905. /package/static/{5be121a → 101c327}/packages/debug-worker/dist/debugWorkerMain.js +0 -0
  1906. /package/static/{5be121a → 101c327}/packages/editor-worker/dist/editorWorkerMain.js +0 -0
  1907. /package/static/{5be121a → 101c327}/packages/embeds-worker/dist/embedsWorkerMain.js +0 -0
  1908. /package/static/{5be121a → 101c327}/packages/error-worker/dist/errorWorkerMain.js +0 -0
  1909. /package/static/{5be121a → 101c327}/packages/explorer-worker/dist/explorerViewWorkerMain.js +0 -0
  1910. /package/static/{5be121a → 101c327}/packages/extension-detail-view-worker/dist/extensionDetailViewWorkerMain.js +0 -0
  1911. /package/static/{5be121a → 101c327}/packages/extension-host-sub-worker/dist/extensionHostSubWorkerMain.js +0 -0
  1912. /package/static/{5be121a → 101c327}/packages/extension-management-worker/dist/extensionManagementWorkerMain.js +0 -0
  1913. /package/static/{5be121a → 101c327}/packages/extension-search-view-worker/dist/extensionSearchViewWorkerMain.js +0 -0
  1914. /package/static/{5be121a → 101c327}/packages/file-search-worker/dist/fileSearchWorkerMain.js +0 -0
  1915. /package/static/{5be121a → 101c327}/packages/file-system-worker/dist/fileSystemWorkerMain.js +0 -0
  1916. /package/static/{5be121a → 101c327}/packages/find-widget-worker/dist/findWidgetWorkerMain.js +0 -0
  1917. /package/static/{5be121a → 101c327}/packages/hover-worker/dist/hoverWorkerMain.js +0 -0
  1918. /package/static/{5be121a → 101c327}/packages/icon-theme-worker/dist/iconThemeWorkerMain.js +0 -0
  1919. /package/static/{5be121a → 101c327}/packages/iframe-inspector/dist/iframeInspectorWorkerMain.js +0 -0
  1920. /package/static/{5be121a → 101c327}/packages/iframe-worker/dist/iframeWorkerMain.js +0 -0
  1921. /package/static/{5be121a → 101c327}/packages/keybindings-view-worker/dist/keyBindingsViewWorkerMain.js +0 -0
  1922. /package/static/{5be121a → 101c327}/packages/language-models-view/dist/languageModelsViewMain.js +0 -0
  1923. /package/static/{5be121a → 101c327}/packages/main-area-worker/dist/mainAreaWorkerMain.js +0 -0
  1924. /package/static/{5be121a → 101c327}/packages/markdown-worker/dist/markdownWorkerMain.js +0 -0
  1925. /package/static/{5be121a → 101c327}/packages/menu-worker/dist/menuWorkerMain.js +0 -0
  1926. /package/static/{5be121a → 101c327}/packages/opener-worker/dist/openerWorkerMain.js +0 -0
  1927. /package/static/{5be121a → 101c327}/packages/output-view/dist/outputViewWorkerMain.js +0 -0
  1928. /package/static/{5be121a → 101c327}/packages/panel-worker/dist/panelWorkerMain.js +0 -0
  1929. /package/static/{5be121a → 101c327}/packages/preload/dist/index.js +0 -0
  1930. /package/static/{5be121a → 101c327}/packages/preview-sandbox-worker/dist/previewSandBoxWorkerMain.js +0 -0
  1931. /package/static/{5be121a → 101c327}/packages/preview-worker/dist/previewWorkerMain.js +0 -0
  1932. /package/static/{5be121a → 101c327}/packages/problems-view/dist/problemsViewWorkerMain.js +0 -0
  1933. /package/static/{5be121a → 101c327}/packages/quick-pick-worker/dist/quickPickWorkerMain.js +0 -0
  1934. /package/static/{5be121a → 101c327}/packages/references-view/dist/referencesViewWorkerMain.js +0 -0
  1935. /package/static/{5be121a → 101c327}/packages/rename-worker/dist/renameWorkerMain.js +0 -0
  1936. /package/static/{5be121a → 101c327}/packages/renderer-process/LICENSE +0 -0
  1937. /package/static/{5be121a → 101c327}/packages/renderer-process/README.md +0 -0
  1938. /package/static/{5be121a → 101c327}/packages/settings-view/dist/settingsViewWorkerMain.js +0 -0
  1939. /package/static/{5be121a → 101c327}/packages/source-action-worker/dist/sourceActionWorkerMain.js +0 -0
  1940. /package/static/{5be121a → 101c327}/packages/source-control-worker/dist/sourceControlWorkerMain.js +0 -0
  1941. /package/static/{5be121a → 101c327}/packages/syntax-highlighting-worker/dist/syntaxHighlightingWorkerMain.js +0 -0
  1942. /package/static/{5be121a → 101c327}/packages/terminal-worker/dist/terminalWorkerMain.js +0 -0
  1943. /package/static/{5be121a → 101c327}/packages/test-worker/dist/testWorkerMain.js +0 -0
  1944. /package/static/{5be121a → 101c327}/packages/text-measurement-worker/dist/textMeasurementWorkerMain.js +0 -0
  1945. /package/static/{5be121a → 101c327}/packages/text-search-worker/dist/textSearchWorkerMain.js +0 -0
  1946. /package/static/{5be121a → 101c327}/packages/update-worker/dist/updateWorkerMain.js +0 -0
  1947. /package/static/{5be121a → 101c327}/playground/languages/index.cpp +0 -0
  1948. /package/static/{5be121a → 101c327}/playground/languages/index.css +0 -0
  1949. /package/static/{5be121a → 101c327}/playground/languages/index.csv +0 -0
  1950. /package/static/{5be121a → 101c327}/playground/languages/index.dart +0 -0
  1951. /package/static/{5be121a → 101c327}/playground/languages/index.env +0 -0
  1952. /package/static/{5be121a → 101c327}/playground/languages/index.ex +0 -0
  1953. /package/static/{5be121a → 101c327}/playground/languages/index.html +0 -0
  1954. /package/static/{5be121a → 101c327}/playground/languages/index.java +0 -0
  1955. /package/static/{5be121a → 101c327}/playground/languages/index.jl +0 -0
  1956. /package/static/{5be121a → 101c327}/playground/languages/index.js +0 -0
  1957. /package/static/{5be121a → 101c327}/playground/languages/index.json +0 -0
  1958. /package/static/{5be121a → 101c327}/playground/languages/index.kt +0 -0
  1959. /package/static/{5be121a → 101c327}/playground/languages/index.pl +0 -0
  1960. /package/static/{5be121a → 101c327}/playground/languages/index.py +0 -0
  1961. /package/static/{5be121a → 101c327}/playground/languages/index.ts +0 -0
  1962. /package/static/{5be121a → 101c327}/playground/languages/scrolling.txt +0 -0
  1963. /package/static/{5be121a → 101c327}/playground/languages/tsconfig.json +0 -0
  1964. /package/static/{5be121a → 101c327}/playground/sample-folder/a.txt +0 -0
  1965. /package/static/{5be121a → 101c327}/playground/sample-folder/b.txt +0 -0
  1966. /package/static/{5be121a → 101c327}/playground/sample-folder/c.txt +0 -0
@@ -1070,7 +1070,7 @@ const createMockRpc = ({
1070
1070
  };
1071
1071
 
1072
1072
  const rpcs = Object.create(null);
1073
- const set$c = (id, rpc) => {
1073
+ const set$d = (id, rpc) => {
1074
1074
  rpcs[id] = rpc;
1075
1075
  };
1076
1076
  const get$2 = id => {
@@ -1103,7 +1103,7 @@ const create$2 = rpcId => {
1103
1103
  const mockRpc = createMockRpc({
1104
1104
  commandMap
1105
1105
  });
1106
- set$c(rpcId, mockRpc);
1106
+ set$d(rpcId, mockRpc);
1107
1107
  // @ts-ignore
1108
1108
  mockRpc[Symbol.dispose] = () => {
1109
1109
  remove(rpcId);
@@ -1112,19 +1112,19 @@ const create$2 = rpcId => {
1112
1112
  return mockRpc;
1113
1113
  },
1114
1114
  set(rpc) {
1115
- set$c(rpcId, rpc);
1115
+ set$d(rpcId, rpc);
1116
1116
  }
1117
1117
  };
1118
1118
  };
1119
1119
 
1120
1120
  const {
1121
1121
  invoke: invoke$9,
1122
- set: set$b
1122
+ set: set$c
1123
1123
  } = create$2(6008);
1124
1124
 
1125
1125
  const {
1126
1126
  invoke: invoke$8,
1127
- set: set$a
1127
+ set: set$b
1128
1128
  } = create$2(6007);
1129
1129
  const getMathBlockDom = async node => {
1130
1130
  return invoke$8('ChatMath.getMathBlockDom', node);
@@ -1135,7 +1135,7 @@ const getMathInlineDom = async node => {
1135
1135
 
1136
1136
  const {
1137
1137
  invoke: invoke$7,
1138
- set: set$9
1138
+ set: set$a
1139
1139
  } = create$2(6009);
1140
1140
 
1141
1141
  const Button$2 = 'button';
@@ -1198,6 +1198,7 @@ const Reference = 100;
1198
1198
 
1199
1199
  const ClientX = 'event.clientX';
1200
1200
  const ClientY = 'event.clientY';
1201
+ const DataTransferFiles2 = 'event.dataTransfer.files2';
1201
1202
  const DefaultPrevented = 'event.defaultPrevented';
1202
1203
  const Key = 'event.key';
1203
1204
  const ShiftKey = 'event.shiftKey';
@@ -1212,7 +1213,10 @@ const End = 255;
1212
1213
  const Home = 12;
1213
1214
  const UpArrow = 14;
1214
1215
  const DownArrow = 16;
1216
+ const KeyN = 42;
1217
+ const KeyV = 50;
1215
1218
 
1219
+ const CtrlCmd = 1 << 11 >>> 0;
1216
1220
  const Shift = 1 << 10 >>> 0;
1217
1221
 
1218
1222
  const Chat$2 = 97;
@@ -1242,12 +1246,12 @@ const FocusChatList = 8001;
1242
1246
 
1243
1247
  const {
1244
1248
  invoke: invoke$6,
1245
- set: set$8
1249
+ set: set$9
1246
1250
  } = create$2(ChatNetworkWorker);
1247
1251
 
1248
1252
  const {
1249
1253
  invoke: invoke$5,
1250
- set: set$7
1254
+ set: set$8
1251
1255
  } = create$2(ChatStorageWorker);
1252
1256
  const appendEvent = async event => {
1253
1257
  return invoke$5('ChatStorage.appendEvent', event);
@@ -1264,12 +1268,12 @@ const getEvents = async sessionId => {
1264
1268
 
1265
1269
  const {
1266
1270
  invoke: invoke$4,
1267
- set: set$6
1271
+ set: set$7
1268
1272
  } = create$2(ChatToolWorker);
1269
1273
 
1270
1274
  const {
1271
1275
  invoke: invoke$3,
1272
- set: set$5
1276
+ set: set$6
1273
1277
  } = create$2(ClipBoardWorker);
1274
1278
  const writeText = async text => {
1275
1279
  return invoke$3('ClipBoard.writeText', text);
@@ -1280,9 +1284,13 @@ const readText = async () => {
1280
1284
 
1281
1285
  const {
1282
1286
  invoke: invoke$2,
1283
- set: set$4
1287
+ set: set$5
1284
1288
  } = create$2(ExtensionHostWorker);
1285
1289
 
1290
+ const {
1291
+ set: set$4
1292
+ } = create$2(IconThemeWorker);
1293
+
1286
1294
  const {
1287
1295
  invoke: invoke$1,
1288
1296
  set: set$3
@@ -1303,6 +1311,10 @@ const showContextMenu2 = async (uid, menuId, x, y, args) => {
1303
1311
  number(y);
1304
1312
  await invoke('ContextMenu.show2', uid, menuId, x, y, args);
1305
1313
  };
1314
+ const getFileHandles = async fileIds => {
1315
+ const files = await invoke('FileSystemHandle.getFileHandles', fileIds);
1316
+ return files;
1317
+ };
1306
1318
  const sendMessagePortToClipBoardWorker$1 = async (port, rpcId) => {
1307
1319
  const command = 'ClipBoard.handleMessagePort';
1308
1320
  await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToClipBoardWorker', port, command, rpcId);
@@ -1323,6 +1335,10 @@ const sendMessagePortToChatMessageParsingWorker = async (port, rpcId) => {
1323
1335
  const command = 'HandleMessagePort.handleMessagePort';
1324
1336
  await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToChatMessageParsingWorker', port, command, rpcId);
1325
1337
  };
1338
+ const sendMessagePortToIconThemeWorker$1 = async (port, rpcId) => {
1339
+ const command = 'IconTheme.handleMessagePort';
1340
+ await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToIconThemeWorker', port, command, rpcId);
1341
+ };
1326
1342
  const readFile = async uri => {
1327
1343
  return invoke('FileSystem.readFile', uri);
1328
1344
  };
@@ -1477,15 +1493,68 @@ const terminate = () => {
1477
1493
  globalThis.close();
1478
1494
  };
1479
1495
 
1496
+ const getComposerWidth = width => {
1497
+ return Math.max(1, width - 32);
1498
+ };
1499
+
1500
+ const composerAttachmentGap = 8;
1501
+ const composerAttachmentMarginBottom = 8;
1502
+ const composerAttachmentFontSize = 12;
1503
+ const composerAttachmentHorizontalPadding = 20;
1504
+ const composerAttachmentBorderWidth = 2;
1505
+ const composerAttachmentHeight = 26;
1506
+ const averageCharacterWidth = composerAttachmentFontSize * 0.6;
1507
+ const fallbackComposerWidth = 480;
1508
+ const getComposerAttachmentLabel$1 = displayType => {
1509
+ switch (displayType) {
1510
+ case 'file':
1511
+ return 'File';
1512
+ case 'image':
1513
+ return 'Image';
1514
+ case 'invalid-image':
1515
+ return 'Invalid image';
1516
+ case 'text-file':
1517
+ return 'Text file';
1518
+ default:
1519
+ return displayType;
1520
+ }
1521
+ };
1522
+ const getAttachmentContainerWidth = width => {
1523
+ if (width <= 0) {
1524
+ return fallbackComposerWidth;
1525
+ }
1526
+ return Math.max(1, getComposerWidth(width));
1527
+ };
1528
+ const getComposerAttachmentWidth = (attachment, containerWidth) => {
1529
+ const label = `${getComposerAttachmentLabel$1(attachment.displayType)} · ${attachment.name}`;
1530
+ const estimatedWidth = Math.ceil(label.length * averageCharacterWidth) + composerAttachmentHorizontalPadding + composerAttachmentBorderWidth;
1531
+ return Math.min(containerWidth, estimatedWidth);
1532
+ };
1533
+ const getComposerAttachmentsHeight = (composerAttachments, width) => {
1534
+ if (composerAttachments.length === 0) {
1535
+ return 0;
1536
+ }
1537
+ const containerWidth = getAttachmentContainerWidth(width);
1538
+ let currentRowWidth = 0;
1539
+ let rowCount = 1;
1540
+ for (const attachment of composerAttachments) {
1541
+ const attachmentWidth = getComposerAttachmentWidth(attachment, containerWidth);
1542
+ const nextRowWidth = currentRowWidth === 0 ? attachmentWidth : currentRowWidth + composerAttachmentGap + attachmentWidth;
1543
+ if (currentRowWidth > 0 && nextRowWidth > containerWidth) {
1544
+ rowCount++;
1545
+ currentRowWidth = attachmentWidth;
1546
+ } else {
1547
+ currentRowWidth = nextRowWidth;
1548
+ }
1549
+ }
1550
+ return rowCount * composerAttachmentHeight + (rowCount - 1) * composerAttachmentGap + composerAttachmentMarginBottom;
1551
+ };
1552
+
1480
1553
  const estimateComposerHeight = (value, lineHeight) => {
1481
1554
  const lineCount = value.split('\n').length;
1482
1555
  return lineCount * lineHeight + 8;
1483
1556
  };
1484
1557
 
1485
- const getComposerWidth = width => {
1486
- return Math.max(1, width - 32);
1487
- };
1488
-
1489
1558
  const getMaxComposerHeight = (lineHeight, maxComposerRows) => {
1490
1559
  return lineHeight * Math.max(1, maxComposerRows) + 8;
1491
1560
  };
@@ -1544,10 +1613,12 @@ const getNextChatHistoryState = async (state, direction) => {
1544
1613
  const nextDraft = state.chatInputHistoryIndex === -1 ? state.composerValue : state.chatInputHistoryDraft;
1545
1614
  const nextComposerValue = getHistoryValueForIndex(state.chatInputHistory, nextIndex);
1546
1615
  const composerHeight = await getComposerHeight(state, nextComposerValue);
1616
+ const composerAttachmentsHeight = getComposerAttachmentsHeight(state.composerAttachments, state.width);
1547
1617
  return {
1548
1618
  ...state,
1549
1619
  chatInputHistoryDraft: nextDraft,
1550
1620
  chatInputHistoryIndex: nextIndex,
1621
+ composerAttachmentsHeight,
1551
1622
  composerHeight,
1552
1623
  composerSelectionEnd: nextComposerValue.length,
1553
1624
  composerSelectionStart: nextComposerValue.length,
@@ -1561,9 +1632,11 @@ const getNextChatHistoryState = async (state, direction) => {
1561
1632
  const nextIndex = state.chatInputHistoryIndex - 1;
1562
1633
  if (nextIndex === -1) {
1563
1634
  const composerHeight = await getComposerHeight(state, state.chatInputHistoryDraft);
1635
+ const composerAttachmentsHeight = getComposerAttachmentsHeight(state.composerAttachments, state.width);
1564
1636
  return {
1565
1637
  ...state,
1566
1638
  chatInputHistoryIndex: -1,
1639
+ composerAttachmentsHeight,
1567
1640
  composerHeight,
1568
1641
  composerSelectionEnd: state.chatInputHistoryDraft.length,
1569
1642
  composerSelectionStart: state.chatInputHistoryDraft.length,
@@ -1573,9 +1646,11 @@ const getNextChatHistoryState = async (state, direction) => {
1573
1646
  }
1574
1647
  const nextComposerValue = getHistoryValueForIndex(state.chatInputHistory, nextIndex);
1575
1648
  const composerHeight = await getComposerHeight(state, nextComposerValue);
1649
+ const composerAttachmentsHeight = getComposerAttachmentsHeight(state.composerAttachments, state.width);
1576
1650
  return {
1577
1651
  ...state,
1578
1652
  chatInputHistoryIndex: nextIndex,
1653
+ composerAttachmentsHeight,
1579
1654
  composerHeight,
1580
1655
  composerSelectionEnd: nextComposerValue.length,
1581
1656
  composerSelectionStart: nextComposerValue.length,
@@ -1775,12 +1850,14 @@ const Debug = 'Debug';
1775
1850
  const BackToChats = 'Back to chats';
1776
1851
  const BackToChatList = 'Back to chat list';
1777
1852
  const Search$1 = 'Search';
1853
+ const ScrollDown$1 = 'Scroll down';
1778
1854
  const SearchModels = 'Search models';
1779
1855
  const SearchChats = 'Search chats';
1780
1856
  const Paste = 'Paste';
1781
1857
  const Rename = 'Rename';
1782
1858
  const Archive = 'Archive';
1783
1859
  const AddProjectChat = 'Add Project';
1860
+ const RemoveProject = 'Remove Project';
1784
1861
  const Settings$1 = 'Settings';
1785
1862
  const LoginToBackend = 'Login to backend';
1786
1863
  const LogoutFromBackend = 'Logout from backend';
@@ -1793,12 +1870,19 @@ const StartConversationByTypingBelow = 'Start a conversation by typing below.';
1793
1870
  const NoMatchingModelsFound = 'No matching models have been found.';
1794
1871
  const ComposePlaceholder = 'Type your message. Enter to send.';
1795
1872
  const AttachImageAsContext = 'Attach Image as Context';
1796
- const 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';
1797
1876
  const OpenRouterApiKeyPlaceholder = 'Enter OpenRouter API key';
1798
1877
  const OpenApiApiKeyPlaceholder = 'Enter OpenAI API key';
1799
1878
  const SendMessage = 'Send message';
1800
1879
  const StartVoiceDictation = 'Start voice dictation';
1801
1880
  const AddContext$1 = 'Add Context';
1881
+ const AddAction = 'Add Action';
1882
+ const OpenInVsCode = 'Open in VSCode';
1883
+ const Commit = 'Commit';
1884
+ const OpenTerminal = 'Open Terminal';
1885
+ const ShowDiff = 'Show Diff';
1802
1886
  const CreatePullRequest$2 = 'Create PR';
1803
1887
  const Save = 'Save';
1804
1888
  const Saving = 'Saving...';
@@ -1833,6 +1917,9 @@ const newChat = () => {
1833
1917
  const addProject = () => {
1834
1918
  return i18nString(AddProjectChat);
1835
1919
  };
1920
+ const removeProject = () => {
1921
+ return i18nString(RemoveProject);
1922
+ };
1836
1923
  const debug = () => {
1837
1924
  return i18nString(Debug);
1838
1925
  };
@@ -1848,6 +1935,9 @@ const settings = () => {
1848
1935
  const search = () => {
1849
1936
  return i18nString(Search$1);
1850
1937
  };
1938
+ const scrollDown = () => {
1939
+ return i18nString(ScrollDown$1);
1940
+ };
1851
1941
  const searchModels = () => {
1852
1942
  return i18nString(SearchModels);
1853
1943
  };
@@ -1887,6 +1977,12 @@ const composePlaceholder = () => {
1887
1977
  const attachImageAsContext = () => {
1888
1978
  return i18nString(AttachImageAsContext);
1889
1979
  };
1980
+ const openImageInNewTab = () => {
1981
+ return i18nString(OpenImageInNewTab);
1982
+ };
1983
+ const removeAttachment = () => {
1984
+ return i18nString(RemoveAttachment);
1985
+ };
1890
1986
  const imageCouldNotBeLoaded = () => {
1891
1987
  return i18nString(ImageCouldNotBeLoaded);
1892
1988
  };
@@ -1905,6 +2001,21 @@ const startVoiceDictation = () => {
1905
2001
  const addContext = () => {
1906
2002
  return i18nString(AddContext$1);
1907
2003
  };
2004
+ const addAction = () => {
2005
+ return i18nString(AddAction);
2006
+ };
2007
+ const openInVsCode = () => {
2008
+ return i18nString(OpenInVsCode);
2009
+ };
2010
+ const commit = () => {
2011
+ return i18nString(Commit);
2012
+ };
2013
+ const openTerminal = () => {
2014
+ return i18nString(OpenTerminal);
2015
+ };
2016
+ const showDiff = () => {
2017
+ return i18nString(ShowDiff);
2018
+ };
1908
2019
  const createPullRequest = () => {
1909
2020
  return i18nString(CreatePullRequest$2);
1910
2021
  };
@@ -1956,34 +2067,42 @@ const backendUrlRequiredMessage = i18nString(BackendUrlRequiredMessage);
1956
2067
  const backendAccessTokenRequiredMessage = i18nString(BackendAccessTokenRequiredMessage);
1957
2068
  const backendCompletionFailedMessage = i18nString(BackendCompletionFailedMessage);
1958
2069
 
2070
+ const defaultMaxToolCalls = 100;
2071
+
1959
2072
  const getDefaultModelsOpenAi = () => {
1960
2073
  return [{
1961
2074
  id: 'openapi/codex-5.3',
1962
2075
  name: 'Codex 5.3',
1963
2076
  provider: 'openApi',
2077
+ supportsReasoningEffort: true,
1964
2078
  usageCost: 1
1965
2079
  }, {
1966
2080
  id: 'openapi/gpt-5.4-mini',
1967
2081
  name: 'GPT-5.4 Mini',
1968
- provider: 'openApi'
2082
+ provider: 'openApi',
2083
+ supportsReasoningEffort: true
1969
2084
  }, {
1970
2085
  id: 'openapi/gpt-5-mini',
1971
2086
  name: 'GPT-5 Mini',
1972
- provider: 'openApi'
2087
+ provider: 'openApi',
2088
+ supportsReasoningEffort: true
1973
2089
  }, {
1974
2090
  id: 'openapi/gpt-4o-mini',
1975
2091
  name: 'GPT-4o Mini',
1976
2092
  provider: 'openApi',
2093
+ supportsImages: true,
1977
2094
  usageCost: 1
1978
2095
  }, {
1979
2096
  id: 'openapi/gpt-4o',
1980
2097
  name: 'GPT-4o',
1981
2098
  provider: 'openApi',
2099
+ supportsImages: true,
1982
2100
  usageCost: 3
1983
2101
  }, {
1984
2102
  id: 'openapi/gpt-4.1-mini',
1985
2103
  name: 'GPT-4.1 Mini',
1986
2104
  provider: 'openApi',
2105
+ supportsImages: true,
1987
2106
  usageCost: 1
1988
2107
  }];
1989
2108
  };
@@ -2091,6 +2210,22 @@ const getModelPickerHeight = (modelPickerHeaderHeight, itemCount) => {
2091
2210
  return Math.min(240, modelPickerHeaderHeight + effectiveItemCount * modelPickerItemHeight);
2092
2211
  };
2093
2212
 
2213
+ const minimumWidthForRunModePicker = 520;
2214
+ const minimumWidthForAgentModePicker = 640;
2215
+ const fullyVisibleResponsivePickerState = {
2216
+ hasSpaceForAgentModePicker: true,
2217
+ hasSpaceForRunModePicker: true
2218
+ };
2219
+ const getResponsivePickerState = (width, responsivePickerVisibilityEnabled) => {
2220
+ if (!responsivePickerVisibilityEnabled) {
2221
+ return fullyVisibleResponsivePickerState;
2222
+ }
2223
+ return {
2224
+ hasSpaceForAgentModePicker: width >= minimumWidthForAgentModePicker,
2225
+ hasSpaceForRunModePicker: width >= minimumWidthForRunModePicker
2226
+ };
2227
+ };
2228
+
2094
2229
  const getModelLabel = model => {
2095
2230
  if (model.provider === 'openRouter') {
2096
2231
  return `${model.name} (OpenRouter)`;
@@ -2176,8 +2311,10 @@ const createDefaultState = () => {
2176
2311
  const chatMessageLineHeight = 20;
2177
2312
  const composerFontSize = 13;
2178
2313
  const composerLineHeight = 20;
2314
+ const responsivePickerVisibilityEnabled = false;
2179
2315
  const models = getDefaultModels();
2180
2316
  const visibleModels = getVisibleModels(models, '');
2317
+ const responsivePickerState = getResponsivePickerState(800, responsivePickerVisibilityEnabled);
2181
2318
  return {
2182
2319
  addContextButtonEnabled: false,
2183
2320
  agentMode: defaultAgentMode,
@@ -2203,7 +2340,10 @@ const createDefaultState = () => {
2203
2340
  chatSendAreaPaddingLeft: 8,
2204
2341
  chatSendAreaPaddingRight: 8,
2205
2342
  chatSendAreaPaddingTop: 10,
2343
+ composerAttachmentPreviewOverlayAttachmentId: '',
2344
+ composerAttachmentPreviewOverlayError: false,
2206
2345
  composerAttachments: [],
2346
+ composerAttachmentsHeight: 0,
2207
2347
  composerDropActive: false,
2208
2348
  composerDropEnabled: true,
2209
2349
  composerFontFamily: 'system-ui',
@@ -2219,6 +2359,7 @@ const createDefaultState = () => {
2219
2359
  focused: false,
2220
2360
  headerHeight: 50,
2221
2361
  height: 0,
2362
+ ...responsivePickerState,
2222
2363
  initial: true,
2223
2364
  inputSource: 'script',
2224
2365
  lastNormalViewMode: 'list',
@@ -2226,17 +2367,19 @@ const createDefaultState = () => {
2226
2367
  listFocusedIndex: -1,
2227
2368
  listItemHeight: 40,
2228
2369
  maxComposerRows: 5,
2229
- maxToolCalls: 10,
2370
+ maxToolCalls: defaultMaxToolCalls,
2230
2371
  messagesAutoScrollEnabled: true,
2231
2372
  messagesScrollTop: 0,
2232
2373
  mockAiResponseDelay: 800,
2233
2374
  mockApiCommandId: '',
2375
+ mockOpenApiRequests: [],
2234
2376
  modelPickerHeaderHeight,
2235
2377
  modelPickerHeight: getModelPickerHeight(modelPickerHeaderHeight, visibleModels.length),
2236
2378
  modelPickerListScrollTop: 0,
2237
2379
  modelPickerOpen: false,
2238
2380
  modelPickerSearchValue: '',
2239
2381
  models,
2382
+ nextAttachmentId: 1,
2240
2383
  nextMessageId: 1,
2241
2384
  openApiApiBaseUrl: 'https://api.openai.com/v1',
2242
2385
  openApiApiKey: '',
@@ -2264,8 +2407,10 @@ const createDefaultState = () => {
2264
2407
  reasoningEffortPickerOpen: false,
2265
2408
  reasoningPickerEnabled: false,
2266
2409
  renamingSessionId: '',
2410
+ responsivePickerVisibilityEnabled,
2267
2411
  runMode: 'local',
2268
2412
  runModePickerOpen: false,
2413
+ scrollDownButtonEnabled: false,
2269
2414
  searchEnabled: false,
2270
2415
  searchFieldVisible: false,
2271
2416
  searchValue: '',
@@ -2418,6 +2563,7 @@ const clearChatSessions = async () => {
2418
2563
  await clear();
2419
2564
  };
2420
2565
  const appendChatViewEvent = async event => {
2566
+ // The local chat-view event union may temporarily grow ahead of the shared rpc-registry typings.
2421
2567
  await appendEvent(event);
2422
2568
  };
2423
2569
  const getChatViewEvents = async sessionId => {
@@ -2474,28 +2620,72 @@ const getComposerAttachmentDisplayType = async (blob, name, mimeType) => {
2474
2620
  return 'file';
2475
2621
  };
2476
2622
 
2623
+ const chunkSize = 0x80_00;
2624
+ const getBlobBase64 = async blob => {
2625
+ const bytes = new Uint8Array(await blob.arrayBuffer());
2626
+ if (typeof Buffer !== 'undefined') {
2627
+ return Buffer.from(bytes).toString('base64');
2628
+ }
2629
+ let binary = '';
2630
+ for (let i = 0; i < bytes.length; i += chunkSize) {
2631
+ binary += String.fromCodePoint(...bytes.subarray(i, i + chunkSize));
2632
+ }
2633
+ return btoa(binary);
2634
+ };
2635
+
2636
+ const getComposerAttachmentPreviewSrc = async (blob, displayType, mimeType) => {
2637
+ if (displayType !== 'image') {
2638
+ return undefined;
2639
+ }
2640
+ const base64 = await getBlobBase64(blob);
2641
+ return `data:${mimeType || 'application/octet-stream'};base64,${base64}`;
2642
+ };
2643
+
2644
+ const getComposerAttachmentTextContent = async (blob, displayType) => {
2645
+ if (displayType !== 'text-file') {
2646
+ return undefined;
2647
+ }
2648
+ return blob.text();
2649
+ };
2650
+
2477
2651
  const isChatAttachmentAddedEvent = event => {
2478
2652
  return event.type === 'chat-attachment-added';
2479
2653
  };
2654
+ const isChatAttachmentRemovedEvent = event => {
2655
+ return event.type === 'chat-attachment-removed';
2656
+ };
2480
2657
  const getComposerAttachments = async sessionId => {
2481
2658
  if (!sessionId) {
2482
2659
  return [];
2483
2660
  }
2484
2661
  const events = await getChatViewEvents(sessionId);
2485
- const attachments = [];
2662
+ const attachments = new Map();
2486
2663
  for (const event of events) {
2664
+ if (isChatAttachmentRemovedEvent(event)) {
2665
+ attachments.delete(event.attachmentId);
2666
+ continue;
2667
+ }
2487
2668
  if (!isChatAttachmentAddedEvent(event)) {
2488
2669
  continue;
2489
2670
  }
2490
- 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, {
2491
2675
  attachmentId: event.attachmentId,
2492
- displayType: await getComposerAttachmentDisplayType(event.blob, event.name, event.mimeType),
2676
+ displayType,
2493
2677
  mimeType: event.mimeType,
2494
2678
  name: event.name,
2495
- size: event.size
2679
+ ...(previewSrc ? {
2680
+ previewSrc
2681
+ } : {}),
2682
+ size: event.size,
2683
+ ...(typeof textContent === 'string' ? {
2684
+ textContent
2685
+ } : {})
2496
2686
  });
2497
2687
  }
2498
- return attachments;
2688
+ return [...attachments.values()];
2499
2689
  };
2500
2690
 
2501
2691
  const getNextSelectedSessionId = (sessions, deletedId) => {
@@ -2513,7 +2703,8 @@ const getNextSelectedSessionId = (sessions, deletedId) => {
2513
2703
  const deleteSession = async (state, id) => {
2514
2704
  const {
2515
2705
  renamingSessionId,
2516
- sessions
2706
+ sessions,
2707
+ width
2517
2708
  } = state;
2518
2709
  const filtered = sessions.filter(session => session.id !== id);
2519
2710
  if (filtered.length === sessions.length) {
@@ -2524,6 +2715,7 @@ const deleteSession = async (state, id) => {
2524
2715
  return {
2525
2716
  ...state,
2526
2717
  composerAttachments: [],
2718
+ composerAttachmentsHeight: 0,
2527
2719
  renamingSessionId: '',
2528
2720
  selectedSessionId: '',
2529
2721
  sessions: [],
@@ -2545,6 +2737,7 @@ const deleteSession = async (state, id) => {
2545
2737
  return {
2546
2738
  ...state,
2547
2739
  composerAttachments,
2740
+ composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, width),
2548
2741
  renamingSessionId: renamingSessionId === id ? '' : renamingSessionId,
2549
2742
  selectedSessionId: nextSelectedSessionId,
2550
2743
  sessions: hydratedSessions
@@ -2609,7 +2802,7 @@ const getRenderHtmlCss = (sessions, selectedSessionId) => {
2609
2802
  const isEqual$1 = (oldState, newState) => {
2610
2803
  const oldRenderHtmlCss = getRenderHtmlCss(oldState.sessions, oldState.selectedSessionId);
2611
2804
  const newRenderHtmlCss = getRenderHtmlCss(newState.sessions, newState.selectedSessionId);
2612
- return oldState.initial === newState.initial && oldState.chatMessageFontFamily === newState.chatMessageFontFamily && oldState.chatMessageFontSize === newState.chatMessageFontSize && oldState.chatMessageLineHeight === newState.chatMessageLineHeight && oldState.chatFocusContentMaxWidth === newState.chatFocusContentMaxWidth && oldState.chatSendAreaPaddingTop === newState.chatSendAreaPaddingTop && oldState.chatSendAreaPaddingLeft === newState.chatSendAreaPaddingLeft && oldState.chatSendAreaPaddingRight === newState.chatSendAreaPaddingRight && oldState.chatSendAreaPaddingBottom === newState.chatSendAreaPaddingBottom && oldState.composerHeight === newState.composerHeight && oldState.modelPickerHeight === newState.modelPickerHeight && oldState.composerLineHeight === newState.composerLineHeight && oldState.composerFontFamily === newState.composerFontFamily && oldState.composerFontSize === newState.composerFontSize && oldState.listItemHeight === newState.listItemHeight && oldState.textAreaPaddingTop === newState.textAreaPaddingTop && oldState.textAreaPaddingLeft === newState.textAreaPaddingLeft && oldState.textAreaPaddingRight === newState.textAreaPaddingRight && oldState.textAreaPaddingBottom === newState.textAreaPaddingBottom && oldRenderHtmlCss === newRenderHtmlCss;
2805
+ return oldState.initial === newState.initial && oldState.chatMessageFontFamily === newState.chatMessageFontFamily && oldState.chatMessageFontSize === newState.chatMessageFontSize && oldState.chatMessageLineHeight === newState.chatMessageLineHeight && oldState.chatFocusContentMaxWidth === newState.chatFocusContentMaxWidth && oldState.chatSendAreaPaddingTop === newState.chatSendAreaPaddingTop && oldState.chatSendAreaPaddingLeft === newState.chatSendAreaPaddingLeft && oldState.chatSendAreaPaddingRight === newState.chatSendAreaPaddingRight && oldState.chatSendAreaPaddingBottom === newState.chatSendAreaPaddingBottom && oldState.composerHeight === newState.composerHeight && oldState.composerAttachmentsHeight === newState.composerAttachmentsHeight && oldState.modelPickerHeight === newState.modelPickerHeight && oldState.composerLineHeight === newState.composerLineHeight && oldState.composerFontFamily === newState.composerFontFamily && oldState.composerFontSize === newState.composerFontSize && oldState.listItemHeight === newState.listItemHeight && oldState.textAreaPaddingTop === newState.textAreaPaddingTop && oldState.textAreaPaddingLeft === newState.textAreaPaddingLeft && oldState.textAreaPaddingRight === newState.textAreaPaddingRight && oldState.textAreaPaddingBottom === newState.textAreaPaddingBottom && oldRenderHtmlCss === newRenderHtmlCss;
2613
2806
  };
2614
2807
 
2615
2808
  const diffFocus = (oldState, newState) => {
@@ -2630,7 +2823,7 @@ const isEqualComposerAttachments = (a, b) => {
2630
2823
  return false;
2631
2824
  }
2632
2825
  for (let i = 0; i < a.length; i++) {
2633
- if (a[i].attachmentId !== b[i].attachmentId || a[i].displayType !== b[i].displayType || a[i].mimeType !== b[i].mimeType || a[i].name !== b[i].name || a[i].size !== b[i].size) {
2826
+ if (a[i].attachmentId !== b[i].attachmentId || a[i].displayType !== b[i].displayType || a[i].mimeType !== b[i].mimeType || a[i].name !== b[i].name || a[i].previewSrc !== b[i].previewSrc || a[i].size !== b[i].size) {
2634
2827
  return false;
2635
2828
  }
2636
2829
  }
@@ -2663,7 +2856,7 @@ const isEqualVisibleModels = (a, b) => {
2663
2856
  };
2664
2857
 
2665
2858
  const isEqual = (oldState, newState) => {
2666
- return oldState.addContextButtonEnabled === newState.addContextButtonEnabled && oldState.agentMode === newState.agentMode && oldState.agentModePickerOpen === newState.agentModePickerOpen && oldState.authEnabled === newState.authEnabled && oldState.authErrorMessage === newState.authErrorMessage && oldState.authStatus === newState.authStatus && isEqualComposerAttachments(oldState.composerAttachments, newState.composerAttachments) && oldState.composerDropActive === newState.composerDropActive && oldState.composerDropEnabled === newState.composerDropEnabled && oldState.composerValue === newState.composerValue && oldState.initial === newState.initial && oldState.modelPickerOpen === newState.modelPickerOpen && oldState.modelPickerSearchValue === newState.modelPickerSearchValue && isEqualVisibleModels(oldState.visibleModels, newState.visibleModels) && oldState.listFocusedIndex === newState.listFocusedIndex && isEqualProjectExpandedIds(oldState.projectExpandedIds, newState.projectExpandedIds) && oldState.projectListScrollTop === newState.projectListScrollTop && oldState.reasoningEffort === newState.reasoningEffort && oldState.reasoningEffortPickerOpen === newState.reasoningEffortPickerOpen && oldState.reasoningPickerEnabled === newState.reasoningPickerEnabled && oldState.renamingSessionId === newState.renamingSessionId && oldState.selectedModelId === newState.selectedModelId && oldState.selectedProjectId === newState.selectedProjectId && oldState.selectedSessionId === newState.selectedSessionId && oldState.showRunMode === newState.showRunMode && oldState.runMode === newState.runMode && oldState.runModePickerOpen === newState.runModePickerOpen && oldState.sessions === newState.sessions && oldState.tokensMax === newState.tokensMax && oldState.tokensUsed === newState.tokensUsed && oldState.usageOverviewEnabled === newState.usageOverviewEnabled && oldState.useChatMathWorker === newState.useChatMathWorker && oldState.viewMode === newState.viewMode && oldState.voiceDictationEnabled === newState.voiceDictationEnabled;
2859
+ return oldState.addContextButtonEnabled === newState.addContextButtonEnabled && oldState.agentMode === newState.agentMode && oldState.agentModePickerOpen === newState.agentModePickerOpen && oldState.authEnabled === newState.authEnabled && oldState.authErrorMessage === newState.authErrorMessage && oldState.authStatus === newState.authStatus && isEqualComposerAttachments(oldState.composerAttachments, newState.composerAttachments) && oldState.composerDropActive === newState.composerDropActive && oldState.composerDropEnabled === newState.composerDropEnabled && oldState.composerValue === newState.composerValue && oldState.hasSpaceForAgentModePicker === newState.hasSpaceForAgentModePicker && oldState.hasSpaceForRunModePicker === newState.hasSpaceForRunModePicker && oldState.initial === newState.initial && oldState.modelPickerOpen === newState.modelPickerOpen && oldState.modelPickerSearchValue === newState.modelPickerSearchValue && isEqualVisibleModels(oldState.visibleModels, newState.visibleModels) && oldState.listFocusedIndex === newState.listFocusedIndex && isEqualProjectExpandedIds(oldState.projectExpandedIds, newState.projectExpandedIds) && oldState.projectListScrollTop === newState.projectListScrollTop && oldState.reasoningEffort === newState.reasoningEffort && oldState.reasoningEffortPickerOpen === newState.reasoningEffortPickerOpen && oldState.reasoningPickerEnabled === newState.reasoningPickerEnabled && oldState.renamingSessionId === newState.renamingSessionId && oldState.selectedModelId === newState.selectedModelId && oldState.selectedProjectId === newState.selectedProjectId && oldState.selectedSessionId === newState.selectedSessionId && oldState.showRunMode === newState.showRunMode && oldState.runMode === newState.runMode && oldState.runModePickerOpen === newState.runModePickerOpen && oldState.sessions === newState.sessions && oldState.tokensMax === newState.tokensMax && oldState.tokensUsed === newState.tokensUsed && oldState.usageOverviewEnabled === newState.usageOverviewEnabled && oldState.useChatMathWorker === newState.useChatMathWorker && oldState.viewMode === newState.viewMode && oldState.voiceDictationEnabled === newState.voiceDictationEnabled;
2667
2860
  };
2668
2861
 
2669
2862
  const diffScrollTop = (oldState, newState) => {
@@ -2684,10 +2877,7 @@ const RenderIncremental = 11;
2684
2877
  const RenderScrollTop = 12;
2685
2878
 
2686
2879
  const diffValue = (oldState, newState) => {
2687
- if (oldState.composerValue === newState.composerValue) {
2688
- return true;
2689
- }
2690
- return newState.inputSource !== 'script';
2880
+ return oldState.composerValue === newState.composerValue || newState.inputSource !== 'script';
2691
2881
  };
2692
2882
 
2693
2883
  const modules = [isEqual, diffValue, diffSelection, diffFocus, isEqual$1, diffFocus, diffScrollTop];
@@ -2709,8 +2899,7 @@ const diff2 = uid => {
2709
2899
  newState,
2710
2900
  oldState
2711
2901
  } = get$1(uid);
2712
- const result = diff(oldState, newState);
2713
- return result;
2902
+ return diff(oldState, newState);
2714
2903
  };
2715
2904
 
2716
2905
  const getAuthState = state => {
@@ -3051,7 +3240,8 @@ const openModelPicker = state => {
3051
3240
  return {
3052
3241
  ...state,
3053
3242
  agentModePickerOpen: false,
3054
- focus: 'model-picker-input',
3243
+ focus: modelPickerOpen ? 'model-picker-input' : state.focus,
3244
+ focused: modelPickerOpen ? true : state.focused,
3055
3245
  modelPickerHeight: getModelPickerHeight(state.modelPickerHeaderHeight, visibleModels.length),
3056
3246
  modelPickerListScrollTop: 0,
3057
3247
  modelPickerOpen,
@@ -3067,6 +3257,10 @@ const getKeyBindings = () => {
3067
3257
  command: 'Chat.chatInputHistoryDown',
3068
3258
  key: DownArrow,
3069
3259
  when: FocusChatInput
3260
+ }, {
3261
+ command: 'Chat.pasteInput',
3262
+ key: CtrlCmd | KeyV,
3263
+ when: FocusChatInput
3070
3264
  }, {
3071
3265
  command: 'Chat.chatInputHistoryUp',
3072
3266
  key: UpArrow,
@@ -3087,6 +3281,10 @@ const getKeyBindings = () => {
3087
3281
  command: 'Chat.chatListFocusPrevious',
3088
3282
  key: UpArrow,
3089
3283
  when: FocusChatList
3284
+ }, {
3285
+ command: 'Chat.handleClickNew',
3286
+ key: CtrlCmd | KeyN,
3287
+ when: FocusChatInput
3090
3288
  }, {
3091
3289
  command: 'Chat.handleSubmit',
3092
3290
  key: Enter,
@@ -3106,6 +3304,24 @@ const getKeyBindings = () => {
3106
3304
  }];
3107
3305
  };
3108
3306
 
3307
+ const getMenuEntriesChatAttachment = (attachmentId, previewSrc) => {
3308
+ return [{
3309
+ args: [previewSrc],
3310
+ command: 'Chat.openChatAttachmentInNewTab',
3311
+ flags: None,
3312
+ id: 'openImageInNewTab',
3313
+ // @ts-ignore
3314
+ label: openImageInNewTab()
3315
+ }, {
3316
+ args: [attachmentId],
3317
+ command: 'Chat.removeComposerAttachment',
3318
+ flags: None,
3319
+ id: 'removeAttachment',
3320
+ // @ts-ignore
3321
+ label: removeAttachment()
3322
+ }];
3323
+ };
3324
+
3109
3325
  const getMenuEntriesChatHeader = () => {
3110
3326
  // TODO
3111
3327
  return [{
@@ -3165,14 +3381,24 @@ const Composer = 'composer';
3165
3381
  const Search = 'search';
3166
3382
  const ComposerDropTarget = 'composer-drop-target';
3167
3383
  const ComposerAttachmentPrefix = 'composer-attachment:';
3384
+ const ComposerAttachmentPreviewPrefix = 'composer-attachment-preview:';
3385
+ const ComposerAttachmentRemovePrefix = 'composer-attachment-remove:';
3386
+ const ComposerAttachmentPreviewOverlay = 'composer-attachment-preview-overlay';
3168
3387
  const AddContext = 'add-context';
3169
3388
  const Dictate = 'dictate';
3170
3389
  const CreatePullRequest$1 = 'create-pull-request';
3390
+ const FocusAddAction = 'focus-add-action';
3391
+ const FocusOpenInVsCode = 'focus-open-in-vscode';
3392
+ const FocusCommit = 'focus-commit';
3393
+ const FocusOpenTerminal = 'focus-open-terminal';
3394
+ const FocusShowDiff = 'focus-show-diff';
3171
3395
  const Send = 'send';
3396
+ const ScrollDown = 'scroll-down';
3172
3397
  const Back = 'back';
3173
3398
  const ModelPickerToggle = 'model-picker-toggle';
3174
3399
  const ModelPickerSearch = 'model-picker-search';
3175
3400
  const ModelPickerList = 'model-picker-list';
3401
+ const PickerList = 'picker-list';
3176
3402
  const AgentModePickerToggle = 'agent-mode-picker-toggle';
3177
3403
  const AgentModePickerItemPrefix = 'agent-mode-picker-item:';
3178
3404
  const ReasoningEffortPickerToggle = 'reasoning-effort-picker-toggle';
@@ -3191,6 +3417,7 @@ const Login = 'login';
3191
3417
  const Logout = 'logout';
3192
3418
  const CloseChat = 'close-chat';
3193
3419
  const SessionDelete = 'SessionDelete';
3420
+ const ProjectDelete = 'ProjectDelete';
3194
3421
  const ProjectPrefix = 'project:';
3195
3422
  const SessionPrefix = 'session:';
3196
3423
  const RenamePrefix = 'session-rename:';
@@ -3234,6 +3461,30 @@ const getModelPickerItemInputName = modelId => {
3234
3461
  const getComposerAttachmentInputName = attachmentId => {
3235
3462
  return `${ComposerAttachmentPrefix}${attachmentId}`;
3236
3463
  };
3464
+ const isComposerAttachmentInputName = name => {
3465
+ return name.startsWith(ComposerAttachmentPrefix);
3466
+ };
3467
+ const getAttachmentIdFromComposerAttachmentInputName = name => {
3468
+ return name.slice(ComposerAttachmentPrefix.length);
3469
+ };
3470
+ const getComposerAttachmentRemoveInputName = attachmentId => {
3471
+ return `${ComposerAttachmentRemovePrefix}${attachmentId}`;
3472
+ };
3473
+ const isComposerAttachmentPreviewInputName = name => {
3474
+ return name.startsWith(ComposerAttachmentPreviewPrefix);
3475
+ };
3476
+ const getAttachmentIdFromComposerAttachmentPreviewInputName = name => {
3477
+ return name.slice(ComposerAttachmentPreviewPrefix.length);
3478
+ };
3479
+ const isComposerAttachmentRemoveInputName = name => {
3480
+ return name.startsWith(ComposerAttachmentRemovePrefix);
3481
+ };
3482
+ const getAttachmentIdFromComposerAttachmentRemoveInputName = name => {
3483
+ return name.slice(ComposerAttachmentRemovePrefix.length);
3484
+ };
3485
+ const isComposerAttachmentPreviewOverlayInputName = name => {
3486
+ return name === ComposerAttachmentPreviewOverlay;
3487
+ };
3237
3488
  const isModelPickerItemInputName = name => {
3238
3489
  return name.startsWith(ModelPickerItemPrefix);
3239
3490
  };
@@ -3275,17 +3526,27 @@ const menuEntryAddProject = {
3275
3526
  id: 'addProject',
3276
3527
  label: addProject()
3277
3528
  };
3278
- const getMenuEntriesChatProjectList = (projectId = '') => {
3529
+ const getMenuEntriesChatProjectList = (projectId = '', canRemoveProject = true) => {
3279
3530
  if (!projectId) {
3280
3531
  return [menuEntryAddProject];
3281
3532
  }
3282
- return [{
3533
+ const entries = [{
3283
3534
  args: [getCreateSessionInProjectInputName(projectId)],
3284
3535
  command: 'Chat.handleClick',
3285
3536
  flags: None,
3286
3537
  id: 'newChat',
3287
3538
  label: newChat()
3288
3539
  }, menuEntryAddProject];
3540
+ if (canRemoveProject) {
3541
+ entries.push({
3542
+ args: [ProjectDelete, projectId],
3543
+ command: 'Chat.handleClick',
3544
+ flags: None,
3545
+ id: 'removeProject',
3546
+ label: removeProject()
3547
+ });
3548
+ }
3549
+ return entries;
3289
3550
  };
3290
3551
 
3291
3552
  const getMenuEntriesProjectAddButton = () => {
@@ -3303,12 +3564,15 @@ const MenuChatHeader = 2179;
3303
3564
  const MenuChatInput = 2180;
3304
3565
  const MenuProjectAddButton = 2181;
3305
3566
  const MenuChatProjectList = 2182;
3567
+ const MenuChatAttachment = 2183;
3306
3568
  const getMenuEntryIds = () => {
3307
- return [Chat$2, MenuChatList, MenuChatHeader, MenuChatInput, MenuProjectAddButton, MenuChatProjectList];
3569
+ return [Chat$2, MenuChatList, MenuChatHeader, MenuChatInput, MenuProjectAddButton, MenuChatProjectList, MenuChatAttachment];
3308
3570
  };
3309
3571
 
3310
3572
  const getMenuEntries = (menuId, props) => {
3311
3573
  switch (props.menuId) {
3574
+ case MenuChatAttachment:
3575
+ return getMenuEntriesChatAttachment(props.attachmentId, props.previewSrc);
3312
3576
  case MenuChatHeader:
3313
3577
  return getMenuEntriesChatHeader();
3314
3578
  case MenuChatInput:
@@ -3316,7 +3580,7 @@ const getMenuEntries = (menuId, props) => {
3316
3580
  case MenuChatList:
3317
3581
  return getMenuEntriesChatList();
3318
3582
  case MenuChatProjectList:
3319
- return getMenuEntriesChatProjectList(props.projectId);
3583
+ return getMenuEntriesChatProjectList(props.projectId, props.canRemoveProject);
3320
3584
  case MenuProjectAddButton:
3321
3585
  return getMenuEntriesProjectAddButton();
3322
3586
  default:
@@ -3324,6 +3588,10 @@ const getMenuEntries = (menuId, props) => {
3324
3588
  }
3325
3589
  };
3326
3590
 
3591
+ const getMockOpenApiRequests = state => {
3592
+ return state.mockOpenApiRequests;
3593
+ };
3594
+
3327
3595
  const getQuickPickMenuEntries = () => {
3328
3596
  return [];
3329
3597
  };
@@ -3413,6 +3681,15 @@ const handleChatListContextMenu = async (state, eventX, eventY) => {
3413
3681
  };
3414
3682
  };
3415
3683
 
3684
+ const focusInput = state => {
3685
+ return {
3686
+ ...state,
3687
+ focus: 'composer',
3688
+ focused: true,
3689
+ listFocusedIndex: -1
3690
+ };
3691
+ };
3692
+
3416
3693
  const generateSessionId = () => {
3417
3694
  return crypto.randomUUID();
3418
3695
  };
@@ -3428,14 +3705,93 @@ const createSession = async (state, projectIdOverride = '') => {
3428
3705
  title: `Chat ${state.sessions.length + 1}`
3429
3706
  };
3430
3707
  await saveChatSession(session);
3431
- return {
3708
+ return focusInput({
3432
3709
  ...state,
3433
3710
  composerAttachments: [],
3711
+ composerAttachmentsHeight: 0,
3434
3712
  projectExpandedIds: state.projectExpandedIds.includes(projectId) ? state.projectExpandedIds : [...state.projectExpandedIds, projectId],
3435
3713
  renamingSessionId: '',
3436
3714
  selectedProjectId: projectId,
3437
3715
  selectedSessionId: id,
3438
3716
  sessions: [...state.sessions, session]
3717
+ });
3718
+ };
3719
+
3720
+ const getBlankProjectId = (state, removedProjectId) => {
3721
+ return state.projects.find(project => project.id !== removedProjectId && project.name === '_blank')?.id || '';
3722
+ };
3723
+ const getNextViewMode = (state, hasSelectedSession) => {
3724
+ if (state.viewMode === 'chat-focus') {
3725
+ return 'chat-focus';
3726
+ }
3727
+ if (!hasSelectedSession) {
3728
+ return 'list';
3729
+ }
3730
+ return state.viewMode === 'detail' ? 'detail' : 'list';
3731
+ };
3732
+ const ensureExpandedProject = (state, projectExpandedIds, selectedProjectId, visibleSessions) => {
3733
+ if (state.viewMode !== 'chat-focus' || !selectedProjectId || visibleSessions.length === 0 || projectExpandedIds.includes(selectedProjectId)) {
3734
+ return projectExpandedIds;
3735
+ }
3736
+ return [...projectExpandedIds, selectedProjectId];
3737
+ };
3738
+ const deleteProject = async (state, projectId) => {
3739
+ const project = state.projects.find(candidate => candidate.id === projectId);
3740
+ if (!project || project.name === '_blank') {
3741
+ return state;
3742
+ }
3743
+ const blankProjectId = getBlankProjectId(state, projectId);
3744
+ if (!blankProjectId) {
3745
+ return state;
3746
+ }
3747
+ const projects = state.projects.filter(candidate => candidate.id !== projectId);
3748
+ const sessions = await Promise.all(state.sessions.map(async session => {
3749
+ if (session.projectId !== projectId) {
3750
+ return session;
3751
+ }
3752
+ const updatedSession = {
3753
+ ...session,
3754
+ projectId: blankProjectId
3755
+ };
3756
+ await saveChatSession(updatedSession);
3757
+ return updatedSession;
3758
+ }));
3759
+ const selectedProjectId = !state.selectedProjectId || state.selectedProjectId === projectId || !projects.some(candidate => candidate.id === state.selectedProjectId) ? blankProjectId : state.selectedProjectId;
3760
+ const projectExpandedIds = state.projectExpandedIds.filter(expandedProjectId => expandedProjectId !== projectId && projects.some(candidate => candidate.id === expandedProjectId));
3761
+ const visibleSessions = getVisibleSessions(sessions, selectedProjectId);
3762
+ const nextProjectExpandedIds = ensureExpandedProject(state, projectExpandedIds, selectedProjectId, visibleSessions);
3763
+ if (visibleSessions.length === 0) {
3764
+ return {
3765
+ ...state,
3766
+ composerAttachments: [],
3767
+ composerAttachmentsHeight: 0,
3768
+ projectExpandedIds: nextProjectExpandedIds,
3769
+ projects,
3770
+ selectedProjectId,
3771
+ selectedSessionId: '',
3772
+ sessions,
3773
+ viewMode: getNextViewMode(state, false)
3774
+ };
3775
+ }
3776
+ const selectedSessionId = visibleSessions.some(session => session.id === state.selectedSessionId) ? state.selectedSessionId : visibleSessions[0].id;
3777
+ const loadedSession = await getChatSession(selectedSessionId);
3778
+ const composerAttachments = await getComposerAttachments(selectedSessionId);
3779
+ const hydratedSessions = sessions.map(session => {
3780
+ if (session.id !== selectedSessionId || !loadedSession) {
3781
+ return session;
3782
+ }
3783
+ return loadedSession;
3784
+ });
3785
+ return {
3786
+ ...state,
3787
+ composerAttachments,
3788
+ composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, state.width),
3789
+ projectExpandedIds: nextProjectExpandedIds,
3790
+ projects,
3791
+ selectedProjectId,
3792
+ selectedSessionId,
3793
+ sessions: hydratedSessions,
3794
+ viewMode: getNextViewMode(state, true)
3439
3795
  };
3440
3796
  };
3441
3797
 
@@ -3448,6 +3804,12 @@ const getModelPickerClickIndex = (y, height, eventY, modelPickerBottomOffset, mo
3448
3804
  return Math.floor(relativeY / modelPickerItemHeight);
3449
3805
  };
3450
3806
 
3807
+ const AutoScrollTopA = Number.MAX_SAFE_INTEGER;
3808
+ const AutoScrollTopB = Number.MAX_SAFE_INTEGER - 1;
3809
+ const getNextAutoScrollTop = currentScrollTop => {
3810
+ return currentScrollTop === AutoScrollTopA ? AutoScrollTopB : AutoScrollTopA;
3811
+ };
3812
+
3451
3813
  const openFolder = async () => {
3452
3814
  try {
3453
3815
  return await invoke('FilePicker.showDirectoryPicker');
@@ -3457,24 +3819,32 @@ const openFolder = async () => {
3457
3819
  };
3458
3820
 
3459
3821
  const selectProject = async (state, projectId) => {
3460
- if (!projectId || state.selectedProjectId === projectId) {
3822
+ const {
3823
+ selectedProjectId,
3824
+ selectedSessionId,
3825
+ sessions,
3826
+ viewMode,
3827
+ width
3828
+ } = state;
3829
+ if (!projectId || selectedProjectId === projectId) {
3461
3830
  return state;
3462
3831
  }
3463
- const visibleSessions = getVisibleSessions(state.sessions, projectId);
3832
+ const visibleSessions = getVisibleSessions(sessions, projectId);
3464
3833
  if (visibleSessions.length === 0) {
3465
3834
  return {
3466
3835
  ...state,
3467
3836
  composerAttachments: [],
3837
+ composerAttachmentsHeight: 0,
3468
3838
  selectedProjectId: projectId,
3469
3839
  selectedSessionId: '',
3470
- viewMode: state.viewMode === 'chat-focus' ? 'chat-focus' : 'list'
3840
+ viewMode: viewMode === 'chat-focus' ? 'chat-focus' : 'list'
3471
3841
  };
3472
3842
  }
3473
- const currentSessionVisible = visibleSessions.some(session => session.id === state.selectedSessionId);
3474
- 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;
3475
3845
  const loadedSession = await getChatSession(nextSelectedSessionId);
3476
3846
  const composerAttachments = await getComposerAttachments(nextSelectedSessionId);
3477
- const sessions = state.sessions.map(session => {
3847
+ const hydratedSessions = sessions.map(session => {
3478
3848
  if (session.id !== nextSelectedSessionId || !loadedSession) {
3479
3849
  return session;
3480
3850
  }
@@ -3483,10 +3853,11 @@ const selectProject = async (state, projectId) => {
3483
3853
  return {
3484
3854
  ...state,
3485
3855
  composerAttachments,
3856
+ composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, width),
3486
3857
  selectedProjectId: projectId,
3487
3858
  selectedSessionId: nextSelectedSessionId,
3488
- sessions,
3489
- viewMode: state.viewMode === 'chat-focus' ? 'chat-focus' : 'detail'
3859
+ sessions: hydratedSessions,
3860
+ viewMode: viewMode === 'chat-focus' ? 'chat-focus' : 'detail'
3490
3861
  };
3491
3862
  };
3492
3863
 
@@ -3525,6 +3896,7 @@ const handleClickCreateProject = async state => {
3525
3896
  return {
3526
3897
  ...state,
3527
3898
  composerAttachments: [],
3899
+ composerAttachmentsHeight: 0,
3528
3900
  projects: [...state.projects, project],
3529
3901
  selectedProjectId: project.id,
3530
3902
  selectedSessionId: '',
@@ -3563,8 +3935,7 @@ const executeProvider = async ({
3563
3935
  }) => {
3564
3936
  await activateByEvent(event, assetDir, platform);
3565
3937
  // @ts-ignore
3566
- const result = invoke$2(method, ...params);
3567
- return result;
3938
+ return invoke$2(method, ...params);
3568
3939
  };
3569
3940
 
3570
3941
  const CommandExecute = 'ExtensionHostCommand.executeCommand';
@@ -4015,6 +4386,54 @@ const getBasicChatTools = async (agentMode = defaultAgentMode, questionToolEnabl
4015
4386
  }
4016
4387
  };
4017
4388
 
4389
+ const getAttachmentTextPart = attachment => {
4390
+ switch (attachment.displayType) {
4391
+ case 'file':
4392
+ return {
4393
+ text: `Attached file "${attachment.name}" (${attachment.mimeType || 'application/octet-stream'}, ${attachment.size} bytes).`,
4394
+ type: 'input_text'
4395
+ };
4396
+ case 'image':
4397
+ return {
4398
+ text: `Attached image "${attachment.name}" could not be encoded for the AI request.`,
4399
+ type: 'input_text'
4400
+ };
4401
+ case 'invalid-image':
4402
+ return {
4403
+ text: `Attached file "${attachment.name}" could not be processed as a valid image.`,
4404
+ type: 'input_text'
4405
+ };
4406
+ case 'text-file':
4407
+ return {
4408
+ text: attachment.textContent ? `Attached text file "${attachment.name}" (${attachment.mimeType || 'text/plain'}):\n\n${attachment.textContent}` : `Attached text file "${attachment.name}" (${attachment.mimeType || 'text/plain'}).`,
4409
+ type: 'input_text'
4410
+ };
4411
+ }
4412
+ };
4413
+ const getChatMessageOpenAiContent = message => {
4414
+ if (!message.attachments || message.attachments.length === 0) {
4415
+ return message.text;
4416
+ }
4417
+ const parts = [];
4418
+ if (message.text) {
4419
+ parts.push({
4420
+ text: message.text,
4421
+ type: 'input_text'
4422
+ });
4423
+ }
4424
+ for (const attachment of message.attachments) {
4425
+ if (attachment.displayType === 'image' && attachment.previewSrc) {
4426
+ parts.push({
4427
+ image_url: attachment.previewSrc,
4428
+ type: 'input_image'
4429
+ });
4430
+ continue;
4431
+ }
4432
+ parts.push(getAttachmentTextPart(attachment));
4433
+ }
4434
+ return parts;
4435
+ };
4436
+
4018
4437
  const getClientRequestIdHeader = () => {
4019
4438
  return {
4020
4439
  'x-client-request-id': crypto.randomUUID()
@@ -4030,11 +4449,22 @@ const getMockAiResponse = async (userMessage, delayInMs) => {
4030
4449
  return `Mock AI response: I received "${userMessage}".`;
4031
4450
  };
4032
4451
 
4452
+ let requests = [];
4453
+ const reset$2 = () => {
4454
+ requests = [];
4455
+ };
4456
+ const capture = request => {
4457
+ requests = [...requests, request];
4458
+ };
4459
+ const getAll = () => {
4460
+ return requests;
4461
+ };
4462
+
4033
4463
  let queue = [];
4034
4464
  let waiters = [];
4035
4465
  let finished = false;
4036
4466
  let errorResult;
4037
- const reset$2 = () => {
4467
+ const reset$1 = () => {
4038
4468
  queue = [];
4039
4469
  waiters = [];
4040
4470
  finished = false;
@@ -4108,6 +4538,47 @@ const readNextChunk = async () => {
4108
4538
  return promise;
4109
4539
  };
4110
4540
 
4541
+ const lastRequestSummaryToken = '__MOCK_OPENAPI_LAST_REQUEST_SUMMARY__';
4542
+ const getLastRequestSummary = () => {
4543
+ const requests = getAll();
4544
+ const request = requests.at(-1);
4545
+ if (!request || !request.payload || typeof request.payload !== 'object') {
4546
+ return 'mock-request-summary images=0 text-files=0';
4547
+ }
4548
+ const input = Reflect.get(request.payload, 'input');
4549
+ if (!Array.isArray(input) || input.length === 0) {
4550
+ return 'mock-request-summary images=0 text-files=0';
4551
+ }
4552
+ let imageCount = 0;
4553
+ let textFileCount = 0;
4554
+ for (const item of input) {
4555
+ if (!item || typeof item !== 'object') {
4556
+ continue;
4557
+ }
4558
+ const content = Reflect.get(item, 'content');
4559
+ if (!Array.isArray(content)) {
4560
+ continue;
4561
+ }
4562
+ for (const part of content) {
4563
+ if (!part || typeof part !== 'object') {
4564
+ continue;
4565
+ }
4566
+ const type = Reflect.get(part, 'type');
4567
+ if (type === 'input_image') {
4568
+ imageCount++;
4569
+ continue;
4570
+ }
4571
+ if (type !== 'input_text') {
4572
+ continue;
4573
+ }
4574
+ const text = Reflect.get(part, 'text');
4575
+ if (typeof text === 'string' && text.startsWith('Attached text file "')) {
4576
+ textFileCount++;
4577
+ }
4578
+ }
4579
+ }
4580
+ return `mock-request-summary images=${imageCount} text-files=${textFileCount}`;
4581
+ };
4111
4582
  const getResponseFunctionCalls$1 = value => {
4112
4583
  if (!value || typeof value !== 'object') {
4113
4584
  return [];
@@ -4305,9 +4776,10 @@ const getMockOpenApiAssistantText = async (stream, onTextChunk, onToolCallsChunk
4305
4776
  }
4306
4777
  continue;
4307
4778
  }
4308
- text += chunk;
4779
+ const resolvedChunk = chunk === lastRequestSummaryToken ? getLastRequestSummary() : chunk;
4780
+ text += resolvedChunk;
4309
4781
  if (stream && onTextChunk) {
4310
- await onTextChunk(chunk);
4782
+ await onTextChunk(resolvedChunk);
4311
4783
  }
4312
4784
  }
4313
4785
  if (!requestDone && remainder) {
@@ -4478,7 +4950,6 @@ const getTextContent = content => {
4478
4950
  return textParts.join('\n');
4479
4951
  };
4480
4952
 
4481
- const defaultMaxToolCalls = 10;
4482
4953
  const errorPrefixRegex = /^Error:\s*/;
4483
4954
  const notFoundErrorRegex = /not[\s_-]?found|enoent/i;
4484
4955
  const getOpenAiTools = tools => {
@@ -4508,7 +4979,7 @@ const getOpenAiTools = tools => {
4508
4979
  };
4509
4980
  });
4510
4981
  };
4511
- const getOpenAiParams = (input, modelId, stream, includeObfuscation, tools, webSearchEnabled, maxToolCalls, systemPrompt = '', previousResponseId, reasoningEffort) => {
4982
+ const getOpenAiParams = (input, modelId, stream, includeObfuscation, tools, webSearchEnabled, maxToolCalls, systemPrompt = '', previousResponseId, reasoningEffort, supportsReasoningEffort = false) => {
4512
4983
  const openAiTools = getOpenAiTools(tools);
4513
4984
  return {
4514
4985
  input,
@@ -4527,7 +4998,7 @@ const getOpenAiParams = (input, modelId, stream, includeObfuscation, tools, webS
4527
4998
  ...(previousResponseId ? {
4528
4999
  previous_response_id: previousResponseId
4529
5000
  } : {}),
4530
- ...(reasoningEffort ? {
5001
+ ...(reasoningEffort && supportsReasoningEffort ? {
4531
5002
  reasoning: {
4532
5003
  effort: reasoningEffort
4533
5004
  }
@@ -5134,6 +5605,7 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
5134
5605
  questionToolEnabled = false,
5135
5606
  reasoningEffort,
5136
5607
  stream,
5608
+ supportsReasoningEffort = false,
5137
5609
  systemPrompt = '',
5138
5610
  toolEnablement,
5139
5611
  useChatNetworkWorkerForRequests = false,
@@ -5144,7 +5616,7 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
5144
5616
  stream: false
5145
5617
  };
5146
5618
  const openAiInput = messages.map(message => ({
5147
- content: message.text,
5619
+ content: getChatMessageOpenAiContent(message),
5148
5620
  role: message.role
5149
5621
  }));
5150
5622
  const tools = await getBasicChatTools(agentMode, questionToolEnabled, toolEnablement);
@@ -5152,7 +5624,7 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
5152
5624
  const maxToolIterations = safeMaxToolCalls - 1;
5153
5625
  let previousResponseId;
5154
5626
  for (let i = 0; i <= maxToolIterations; i++) {
5155
- const postBody = getOpenAiParams(openAiInput, modelId, stream, includeObfuscation, tools, webSearchEnabled, safeMaxToolCalls, systemPrompt, previousResponseId, reasoningEffort);
5627
+ const postBody = getOpenAiParams(openAiInput, modelId, stream, includeObfuscation, tools, webSearchEnabled, safeMaxToolCalls, systemPrompt, previousResponseId, reasoningEffort, supportsReasoningEffort);
5156
5628
  if (stream) {
5157
5629
  const streamResult = useChatNetworkWorkerForRequests ? await (async () => {
5158
5630
  const requestResult = await makeStreamingApiRequest({
@@ -5537,12 +6009,22 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
5537
6009
  };
5538
6010
  };
5539
6011
 
6012
+ const imageRegex = /\b(?:image|vision|multimodal)\b/i;
6013
+ const unsupportedRegex = /\bdoes(?:\s+not|n't)\s+support|not\s+support(?:ed)?|unsupported\b/i;
5540
6014
  const isOffline = () => {
5541
6015
  if (!globalThis.navigator) {
5542
6016
  return false;
5543
6017
  }
5544
6018
  return globalThis.navigator.onLine === false;
5545
6019
  };
6020
+ const isImageNotSupportedError = errorResult => {
6021
+ const haystack = [errorResult.errorCode, errorResult.errorMessage, errorResult.errorType].filter(Boolean).join(' ');
6022
+ return imageRegex.test(haystack) && unsupportedRegex.test(haystack);
6023
+ };
6024
+ const getImageNotSupportedMessage = modelName => {
6025
+ const subject = modelName ? `${modelName} does not support image attachments.` : 'This model does not support image attachments.';
6026
+ return `${subject} Choose a vision-capable model like GPT-4o Mini or GPT-4o, or remove the image and try again.`;
6027
+ };
5546
6028
  const getOpenApiErrorMessage = errorResult => {
5547
6029
  switch (errorResult.details) {
5548
6030
  case 'http-error':
@@ -5556,6 +6038,9 @@ const getOpenApiErrorMessage = errorResult => {
5556
6038
  const status = typeof errorResult.statusCode === 'number' ? errorResult.statusCode : 401;
5557
6039
  return `OpenAI request failed (Status ${status}): Invalid API key. Please verify your OpenAI API key in Chat Settings.`;
5558
6040
  }
6041
+ if (isImageNotSupportedError(errorResult)) {
6042
+ return getImageNotSupportedMessage();
6043
+ }
5559
6044
  if (errorResult.statusCode === 429) {
5560
6045
  let prefix = 'OpenAI rate limit exceeded (429)';
5561
6046
  if (hasErrorCode) {
@@ -5596,7 +6081,7 @@ const getOpenApiErrorMessage = errorResult => {
5596
6081
  return openApiRequestFailedMessage;
5597
6082
  case 'tool-iterations-exhausted':
5598
6083
  {
5599
- const rounds = typeof errorResult.iterationLimit === 'number' ? errorResult.iterationLimit : 10;
6084
+ const rounds = typeof errorResult.iterationLimit === 'number' ? errorResult.iterationLimit : defaultMaxToolCalls;
5600
6085
  return `OpenAI request ended after ${rounds} tool-call rounds without a final assistant response. This usually means the model got stuck in a tool loop. Please try rephrasing your request, reducing scope, or switching to a different model.`;
5601
6086
  }
5602
6087
  }
@@ -6004,23 +6489,12 @@ const isOpenRouterModel = (selectedModelId, models) => {
6004
6489
  return selectedModelId.toLowerCase().startsWith('openrouter/');
6005
6490
  };
6006
6491
 
6007
- let requests = [];
6008
- const reset$1 = () => {
6009
- requests = [];
6010
- };
6011
- const capture = request => {
6012
- requests = [...requests, request];
6013
- };
6014
- const getAll = () => {
6015
- return requests;
6016
- };
6017
-
6018
- /* eslint-disable prefer-destructuring */
6019
-
6020
- const trailingSlashesRegex = /\/+$/;
6021
- const getBackendCompletionsEndpoint = backendUrl => {
6022
- const trimmedBackendUrl = backendUrl.replace(trailingSlashesRegex, '');
6023
- return `${trimmedBackendUrl}/v1/chat/completions`;
6492
+ /* eslint-disable prefer-destructuring */
6493
+
6494
+ const trailingSlashesRegex = /\/+$/;
6495
+ const getBackendCompletionsEndpoint = backendUrl => {
6496
+ const trimmedBackendUrl = backendUrl.replace(trailingSlashesRegex, '');
6497
+ return `${trimmedBackendUrl}/v1/chat/completions`;
6024
6498
  };
6025
6499
  const getEffectiveBackendModelId = selectedModelId => {
6026
6500
  const separatorIndex = selectedModelId.indexOf('/');
@@ -6029,6 +6503,9 @@ const getEffectiveBackendModelId = selectedModelId => {
6029
6503
  }
6030
6504
  return selectedModelId.slice(separatorIndex + 1);
6031
6505
  };
6506
+ const hasImageAttachments = messages => {
6507
+ return messages.some(message => message.attachments?.some(attachment => attachment.displayType === 'image'));
6508
+ };
6032
6509
  const getBackendAssistantText = async (messages, selectedModelId, backendUrl, authAccessToken, systemPrompt) => {
6033
6510
  let response;
6034
6511
  try {
@@ -6067,7 +6544,7 @@ const getAiResponse = async ({
6067
6544
  authAccessToken,
6068
6545
  authEnabled = false,
6069
6546
  backendUrl = '',
6070
- maxToolCalls = 10,
6547
+ maxToolCalls = defaultMaxToolCalls,
6071
6548
  messageId,
6072
6549
  messages,
6073
6550
  mockAiResponseDelay = 800,
@@ -6076,6 +6553,7 @@ const getAiResponse = async ({
6076
6553
  nextMessageId,
6077
6554
  onDataEvent,
6078
6555
  onEventStreamFinished,
6556
+ onMockOpenApiRequestCaptured,
6079
6557
  onTextChunk,
6080
6558
  onToolCallsChunk,
6081
6559
  openApiApiBaseUrl,
@@ -6151,7 +6629,15 @@ const getAiResponse = async ({
6151
6629
  }
6152
6630
  }
6153
6631
  let text = '';
6154
- 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) {
6155
6641
  if (!backendUrl) {
6156
6642
  text = backendUrlRequiredMessage;
6157
6643
  } else if (authAccessToken) {
@@ -6160,13 +6646,11 @@ const getAiResponse = async ({
6160
6646
  text = backendAccessTokenRequiredMessage;
6161
6647
  }
6162
6648
  }
6163
- const usesOpenApiModel = isOpenApiModel(selectedModelId, models);
6164
- const usesOpenRouterModel = isOpenRouterModel(selectedModelId, models);
6165
6649
  if (!text && usesOpenApiModel) {
6166
6650
  const safeMaxToolCalls = Math.max(1, maxToolCalls);
6167
6651
  if (useMockApi) {
6168
6652
  const openAiInput = messages.map(message => ({
6169
- content: message.text,
6653
+ content: getChatMessageOpenAiContent(message),
6170
6654
  role: message.role
6171
6655
  }));
6172
6656
  const modelId = getOpenApiModelId(selectedModelId);
@@ -6178,12 +6662,16 @@ const getAiResponse = async ({
6178
6662
  const maxToolIterations = safeMaxToolCalls - 1;
6179
6663
  let previousResponseId;
6180
6664
  for (let i = 0; i <= maxToolIterations; i++) {
6181
- capture({
6665
+ const request = {
6182
6666
  headers,
6183
6667
  method: 'POST',
6184
- payload: getOpenAiParams(openAiInput, modelId, streamingEnabled, passIncludeObfuscation, await getBasicChatTools(agentMode, questionToolEnabled, toolEnablement), agentMode === 'plan' ? false : webSearchEnabled, safeMaxToolCalls, systemPrompt, previousResponseId, reasoningEffort),
6668
+ payload: getOpenAiParams(openAiInput, modelId, streamingEnabled, passIncludeObfuscation, await getBasicChatTools(agentMode, questionToolEnabled, toolEnablement), agentMode === 'plan' ? false : webSearchEnabled, safeMaxToolCalls, systemPrompt, previousResponseId, reasoningEffort, supportsReasoningEffort),
6185
6669
  url: getOpenApiApiEndpoint(openApiApiBaseUrl)
6186
- });
6670
+ };
6671
+ capture(request);
6672
+ if (onMockOpenApiRequestCaptured) {
6673
+ await Promise.resolve(onMockOpenApiRequestCaptured(request));
6674
+ }
6187
6675
  const result = await getMockOpenApiAssistantText(streamingEnabled, onTextChunk, onToolCallsChunk, onDataEvent, onEventStreamFinished);
6188
6676
  if (result.type !== 'success') {
6189
6677
  text = getOpenApiErrorMessage(result);
@@ -6261,6 +6749,7 @@ const getAiResponse = async ({
6261
6749
  reasoningEffort
6262
6750
  } : {}),
6263
6751
  stream: streamingEnabled,
6752
+ supportsReasoningEffort,
6264
6753
  systemPrompt,
6265
6754
  ...(toolEnablement ? {
6266
6755
  toolEnablement
@@ -6325,8 +6814,8 @@ const getAiResponse = async ({
6325
6814
  return message;
6326
6815
  };
6327
6816
 
6328
- const parseAndStoreMessagesContent$1 = async (parsedMessages, messages) => {
6329
- return invoke$7('ChatParser.parseMessageContent', parsedMessages, messages);
6817
+ const parseMessageContents = async rawMessages => {
6818
+ return invoke$7('ChatMessageParsing.parseMessageContents', rawMessages);
6330
6819
  };
6331
6820
 
6332
6821
  const Actions = 'Actions';
@@ -6337,6 +6826,10 @@ const Chat = 'Chat';
6337
6826
  const ChatActions = 'ChatActions';
6338
6827
  const ChatAuthError = 'ChatAuthError';
6339
6828
  const ChatFocus = 'ChatFocus';
6829
+ const ChatFocusActions = 'ChatFocusActions';
6830
+ const ChatFocusHeader = 'ChatFocusHeader';
6831
+ const ChatFocusMainArea = 'ChatFocusMainArea';
6832
+ const ChatFocusProject = 'ChatFocusProject';
6340
6833
  const ChatHeader = 'ChatHeader';
6341
6834
  const ChatHeaderLabel = 'ChatHeaderLabel';
6342
6835
  const ChatInputBox = 'ChatInputBox';
@@ -6361,15 +6854,30 @@ const ChatModelPickerItemSelected = 'ChatModelPickerItemSelected';
6361
6854
  const ChatModelPickerItemUsageCost = 'ChatModelPickerItemUsageCost';
6362
6855
  const ChatModelPickerList = 'ChatModelPickerList';
6363
6856
  const ChatName = 'ChatName';
6857
+ const ChatOverlays = 'ChatOverlays';
6364
6858
  const ChatOrderedList = 'ChatOrderedList';
6365
6859
  const ChatOrderedListItem = 'ChatOrderedListItem';
6366
6860
  const ChatOrderedListItemContent = 'ChatOrderedListItemContent';
6861
+ const ChatOrderedListItemPrefix = 'ChatOrderedListItemPrefix';
6367
6862
  const ChatOrderedListMarker = 'ChatOrderedListMarker';
6368
6863
  const ChatComposerAttachment = 'ChatComposerAttachment';
6369
6864
  const ChatComposerAttachmentImage = 'ChatComposerAttachmentImage';
6370
6865
  const ChatComposerAttachmentInvalidImage = 'ChatComposerAttachmentInvalidImage';
6866
+ const ChatComposerAttachmentLabel = 'ChatComposerAttachmentLabel';
6867
+ const ChatComposerAttachmentPreview = 'ChatComposerAttachmentPreview';
6868
+ const ChatComposerAttachmentPreviewOverlay = 'ChatComposerAttachmentPreviewOverlay';
6869
+ const ChatComposerAttachmentPreviewOverlayError = 'ChatComposerAttachmentPreviewOverlayError';
6870
+ const ChatComposerAttachmentPreviewOverlayImage = 'ChatComposerAttachmentPreviewOverlayImage';
6871
+ const ChatComposerAttachmentRemoveButton = 'ChatComposerAttachmentRemoveButton';
6371
6872
  const ChatComposerAttachments = 'ChatComposerAttachments';
6372
6873
  const ChatComposerAttachmentTextFile = 'ChatComposerAttachmentTextFile';
6874
+ const ChatAttachment = 'ChatAttachment';
6875
+ const ChatAttachmentImage = 'ChatAttachmentImage';
6876
+ const ChatAttachmentInvalidImage = 'ChatAttachmentInvalidImage';
6877
+ const ChatAttachmentLabel = 'ChatAttachmentLabel';
6878
+ const ChatAttachmentPreview = 'ChatAttachmentPreview';
6879
+ const ChatAttachments = 'ChatAttachments';
6880
+ const ChatAttachmentTextFile = 'ChatAttachmentTextFile';
6373
6881
  const ChatSendArea = 'ChatSendArea';
6374
6882
  const ChatSendAreaBottom = 'ChatSendAreaBottom';
6375
6883
  const ChatSendAreaContent = 'ChatSendAreaContent';
@@ -6405,6 +6913,7 @@ const FileIcon = 'FileIcon';
6405
6913
  const IconButton = 'IconButton';
6406
6914
  const IconButtonDisabled = 'IconButtonDisabled';
6407
6915
  const ImageElement = 'ImageElement';
6916
+ const ImageErrorMessage = 'ImageErrorMessage';
6408
6917
  const InputBox = 'InputBox';
6409
6918
  const Insertion = 'Insertion';
6410
6919
  const Label = 'Label';
@@ -6418,6 +6927,7 @@ const MaskIconAccount = 'MaskIconAccount';
6418
6927
  const MaskIconAdd = 'MaskIconAdd';
6419
6928
  const MaskIconArrowLeft = 'MaskIconArrowLeft';
6420
6929
  const MaskIconChevronDown = 'MaskIconChevronDown';
6930
+ const MaskIconChevronRight = 'MaskIconChevronRight';
6421
6931
  const MaskIconChevronUp = 'MaskIconChevronUp';
6422
6932
  const MaskIconClose = 'MaskIconClose';
6423
6933
  const MaskIconDebugPause = 'MaskIconDebugPause';
@@ -6487,6 +6997,28 @@ const jsRules = [{
6487
6997
  className: TokenKeyword,
6488
6998
  regex: /\b(?:const|let|var|function|return|if|else|for|while|class|new|typeof|instanceof|import|export|from|default|async|await|try|catch|finally|throw|this|true|false|null|undefined)\b/
6489
6999
  }];
7000
+ const tsRules = [{
7001
+ className: TokenComment,
7002
+ regex: /\/\/[^\n]*/
7003
+ }, {
7004
+ className: TokenComment,
7005
+ regex: /\/\*[\s\S]*?\*\//
7006
+ }, {
7007
+ className: TokenString,
7008
+ regex: /"[^"\\]*(?:\\.[^"\\]*)*"/
7009
+ }, {
7010
+ className: TokenString,
7011
+ regex: /'[^'\\]*(?:\\.[^'\\]*)*'/
7012
+ }, {
7013
+ className: TokenString,
7014
+ regex: /`[^`\\]*(?:\\.[^`\\]*)*`/
7015
+ }, {
7016
+ className: TokenNumber,
7017
+ regex: /\b\d+\.?\d*\b/
7018
+ }, {
7019
+ className: TokenKeyword,
7020
+ regex: /\b(?:abstract|any|as|asserts|async|await|boolean|class|const|constructor|declare|default|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|infer|instanceof|interface|is|keyof|let|module|namespace|never|new|null|number|object|override|private|protected|public|readonly|return|satisfies|set|static|string|super|switch|symbol|this|throw|true|try|type|typeof|undefined|unknown|var|void|while)\b/
7021
+ }];
6490
7022
  const htmlRules = [{
6491
7023
  className: TokenComment,
6492
7024
  regex: /<!--[\s\S]*?-->/
@@ -6610,6 +7142,9 @@ const highlightCode = (code, language) => {
6610
7142
  if (normalized === 'js' || normalized === 'javascript') {
6611
7143
  return tokenize(code, jsRules);
6612
7144
  }
7145
+ if (normalized === 'ts' || normalized === 'typescript') {
7146
+ return tokenize(code, tsRules);
7147
+ }
6613
7148
  if (normalized === 'py' || normalized === 'python') {
6614
7149
  return tokenize(code, pythonRules);
6615
7150
  }
@@ -7760,9 +8295,28 @@ const parseAndStoreMessagesContent = async (parsedMessages, messages) => {
7760
8295
  }
7761
8296
  return nextParsedMessages;
7762
8297
  };
8298
+ const getMessagesNeedingParsing = (parsedMessages, messages) => {
8299
+ return messages.filter(message => {
8300
+ const existingParsedMessage = parsedMessages.find(item => item.id === message.id);
8301
+ return !existingParsedMessage || existingParsedMessage.text !== message.text;
8302
+ });
8303
+ };
8304
+ const parseAndStoreMessagesContentInWorker = async (parsedMessages, messages) => {
8305
+ const messagesNeedingParsing = getMessagesNeedingParsing(parsedMessages, messages);
8306
+ if (messagesNeedingParsing.length === 0) {
8307
+ return parsedMessages;
8308
+ }
8309
+ const parsedContents = await parseMessageContents(messagesNeedingParsing.map(message => message.text));
8310
+ let nextParsedMessages = parsedMessages;
8311
+ for (const [index, message] of messagesNeedingParsing.entries()) {
8312
+ const parsedContent = message.text === '' ? emptyMessageContent : parsedContents[index];
8313
+ nextParsedMessages = setParsedMessageContent(nextParsedMessages, message.id, message.text, parsedContent);
8314
+ }
8315
+ return nextParsedMessages;
8316
+ };
7763
8317
  const parseAndStoreMessagesContentWithWorkerPreference = async (parsedMessages, messages, useChatMessageParsingWorker) => {
7764
8318
  if (useChatMessageParsingWorker) {
7765
- return parseAndStoreMessagesContent$1(parsedMessages, messages);
8319
+ return parseAndStoreMessagesContentInWorker(parsedMessages, messages);
7766
8320
  }
7767
8321
  return parseAndStoreMessagesContent(parsedMessages, messages);
7768
8322
  };
@@ -7998,15 +8552,6 @@ const getSlashCommandHandler = command => {
7998
8552
  return slashCommandRegistry[command];
7999
8553
  };
8000
8554
 
8001
- const focusInput = state => {
8002
- return {
8003
- ...state,
8004
- focus: 'composer',
8005
- focused: true,
8006
- listFocusedIndex: -1
8007
- };
8008
- };
8009
-
8010
8555
  const withClearedComposer = state => {
8011
8556
  return focusInput({
8012
8557
  ...state,
@@ -8160,12 +8705,6 @@ const getMentionContextMessage = async value => {
8160
8705
  };
8161
8706
  };
8162
8707
 
8163
- const AutoScrollTopA = Number.MAX_SAFE_INTEGER;
8164
- const AutoScrollTopB = Number.MAX_SAFE_INTEGER - 1;
8165
- const getNextAutoScrollTop = currentScrollTop => {
8166
- return currentScrollTop === AutoScrollTopA ? AutoScrollTopB : AutoScrollTopA;
8167
- };
8168
-
8169
8708
  const slashCommandRegex = /^\/([a-z][a-z0-9-]*)(?:\s+.*)?$/i;
8170
8709
  const getSlashCommand = value => {
8171
8710
  const trimmed = value.trim();
@@ -8443,6 +8982,19 @@ const withUpdatedMessageScrollTop = state => {
8443
8982
  };
8444
8983
  };
8445
8984
  const workspaceUriPlaceholder = '{{workspaceUri}}';
8985
+ const clearComposerAttachments = async (sessionId, attachmentIds) => {
8986
+ if (!sessionId) {
8987
+ return;
8988
+ }
8989
+ for (const attachmentId of attachmentIds) {
8990
+ await appendChatViewEvent({
8991
+ attachmentId,
8992
+ sessionId,
8993
+ timestamp: new Date().toISOString(),
8994
+ type: 'chat-attachment-removed'
8995
+ });
8996
+ }
8997
+ };
8446
8998
  const getCurrentDate = () => {
8447
8999
  return new Date().toISOString().slice(0, 10);
8448
9000
  };
@@ -8535,7 +9087,12 @@ const handleSubmit = async state => {
8535
9087
  minute: '2-digit'
8536
9088
  });
8537
9089
  const userMessageId = crypto.randomUUID();
9090
+ const composerAttachments = state.composerAttachments.length > 0 ? state.composerAttachments : await getComposerAttachments(state.selectedSessionId);
9091
+ await clearComposerAttachments(state.selectedSessionId, composerAttachments.map(attachment => attachment.attachmentId));
8538
9092
  const userMessage = {
9093
+ ...(composerAttachments.length > 0 ? {
9094
+ attachments: composerAttachments
9095
+ } : {}),
8539
9096
  id: userMessageId,
8540
9097
  role: 'user',
8541
9098
  text: userText,
@@ -8591,6 +9148,7 @@ const handleSubmit = async state => {
8591
9148
  optimisticState = withUpdatedMessageScrollTop(focusInput({
8592
9149
  ...state,
8593
9150
  composerAttachments: [],
9151
+ composerAttachmentsHeight: 0,
8594
9152
  composerHeight: getMinComposerHeightForState(state),
8595
9153
  composerSelectionEnd: 0,
8596
9154
  composerSelectionStart: 0,
@@ -8628,6 +9186,8 @@ const handleSubmit = async state => {
8628
9186
  }
8629
9187
  optimisticState = withUpdatedMessageScrollTop(focusInput({
8630
9188
  ...state,
9189
+ composerAttachments: [],
9190
+ composerAttachmentsHeight: 0,
8631
9191
  composerHeight: getMinComposerHeightForState(state),
8632
9192
  composerSelectionEnd: 0,
8633
9193
  composerSelectionStart: 0,
@@ -8647,6 +9207,9 @@ const handleSubmit = async state => {
8647
9207
  latestState: optimisticState,
8648
9208
  previousState: optimisticState
8649
9209
  };
9210
+ let {
9211
+ mockOpenApiRequests
9212
+ } = optimisticState;
8650
9213
  const selectedOptimisticSession = optimisticState.sessions.find(session => session.id === optimisticState.selectedSessionId);
8651
9214
  const systemPrompt = getEffectiveSystemPrompt(optimisticState, selectedOptimisticSession);
8652
9215
  const workspaceUri = getWorkspaceUri(optimisticState, selectedOptimisticSession);
@@ -8689,6 +9252,9 @@ const handleSubmit = async state => {
8689
9252
  value: '[DONE]'
8690
9253
  });
8691
9254
  },
9255
+ onMockOpenApiRequestCaptured: async request => {
9256
+ mockOpenApiRequests = [...mockOpenApiRequests, request];
9257
+ },
8692
9258
  ...(handleTextChunkFunctionRef ? {
8693
9259
  onTextChunk: handleTextChunkFunctionRef
8694
9260
  } : {}),
@@ -8745,6 +9311,7 @@ const handleSubmit = async state => {
8745
9311
  }
8746
9312
  return withUpdatedMessageScrollTop(focusInput({
8747
9313
  ...latestState,
9314
+ mockOpenApiRequests,
8748
9315
  nextMessageId: latestState.nextMessageId + 1,
8749
9316
  parsedMessages: finalParsedMessages,
8750
9317
  sessions: updatedSessions
@@ -8771,11 +9338,43 @@ const handleReasoningEffortChange = async (state, value) => {
8771
9338
  return setReasoningEffort(state, value);
8772
9339
  };
8773
9340
 
9341
+ const handleRemoveComposerAttachment = async (state, attachmentId) => {
9342
+ const {
9343
+ composerAttachments,
9344
+ selectedSessionId
9345
+ } = state;
9346
+ const nextComposerAttachments = composerAttachments.filter(attachment => attachment.attachmentId !== attachmentId);
9347
+ if (nextComposerAttachments.length === composerAttachments.length) {
9348
+ return state;
9349
+ }
9350
+ if (selectedSessionId) {
9351
+ await appendChatViewEvent({
9352
+ attachmentId,
9353
+ sessionId: selectedSessionId,
9354
+ timestamp: new Date().toISOString(),
9355
+ type: 'chat-attachment-removed'
9356
+ });
9357
+ }
9358
+ return {
9359
+ ...state,
9360
+ composerAttachments: nextComposerAttachments,
9361
+ composerAttachmentsHeight: getComposerAttachmentsHeight(nextComposerAttachments, state.width)
9362
+ };
9363
+ };
9364
+
8774
9365
  const openAgentModePicker = state => {
9366
+ if (!state.hasSpaceForAgentModePicker) {
9367
+ return {
9368
+ ...state,
9369
+ agentModePickerOpen: false
9370
+ };
9371
+ }
8775
9372
  const agentModePickerOpen = !state.agentModePickerOpen;
8776
9373
  return {
8777
9374
  ...state,
8778
9375
  agentModePickerOpen,
9376
+ focus: agentModePickerOpen ? 'picker-list' : state.focus,
9377
+ focused: agentModePickerOpen ? true : state.focused,
8779
9378
  modelPickerOpen: false,
8780
9379
  modelPickerSearchValue: '',
8781
9380
  reasoningEffortPickerOpen: false,
@@ -8794,6 +9393,8 @@ const openReasoningEffortPicker = state => {
8794
9393
  return {
8795
9394
  ...state,
8796
9395
  agentModePickerOpen: false,
9396
+ focus: reasoningEffortPickerOpen ? 'picker-list' : state.focus,
9397
+ focused: reasoningEffortPickerOpen ? true : state.focused,
8797
9398
  modelPickerOpen: false,
8798
9399
  modelPickerSearchValue: '',
8799
9400
  reasoningEffortPickerOpen,
@@ -8809,10 +9410,18 @@ const OpenOpenRouterApiKeySettings = 'open-openrouter-api-key-settings';
8809
9410
  const OpenOpenRouterApiKeyWebsite = 'open-openrouter-api-key-website';
8810
9411
 
8811
9412
  const openRunModePicker = state => {
9413
+ if (!state.hasSpaceForRunModePicker) {
9414
+ return {
9415
+ ...state,
9416
+ runModePickerOpen: false
9417
+ };
9418
+ }
8812
9419
  const runModePickerOpen = !state.runModePickerOpen;
8813
9420
  return {
8814
9421
  ...state,
8815
9422
  agentModePickerOpen: false,
9423
+ focus: runModePickerOpen ? 'picker-list' : state.focus,
9424
+ focused: runModePickerOpen ? true : state.focused,
8816
9425
  modelPickerOpen: false,
8817
9426
  modelPickerSearchValue: '',
8818
9427
  reasoningEffortPickerOpen: false,
@@ -8822,13 +9431,19 @@ const openRunModePicker = state => {
8822
9431
  };
8823
9432
 
8824
9433
  const selectSession = async (state, id) => {
8825
- const 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);
8826
9441
  if (!exists) {
8827
9442
  return state;
8828
9443
  }
8829
9444
  const loadedSession = await getChatSession(id);
8830
9445
  const composerAttachments = await getComposerAttachments(id);
8831
- const sessions = state.sessions.map(session => {
9446
+ const hydratedSessions = sessions.map(session => {
8832
9447
  if (session.id !== id) {
8833
9448
  return session;
8834
9449
  }
@@ -8840,11 +9455,12 @@ const selectSession = async (state, id) => {
8840
9455
  return {
8841
9456
  ...state,
8842
9457
  composerAttachments,
8843
- lastNormalViewMode: state.viewMode === 'chat-focus' ? state.lastNormalViewMode : 'detail',
9458
+ composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, width),
9459
+ lastNormalViewMode: viewMode === 'chat-focus' ? lastNormalViewMode : 'detail',
8844
9460
  renamingSessionId: '',
8845
9461
  selectedSessionId: id,
8846
- sessions,
8847
- viewMode: state.viewMode === 'chat-focus' ? 'chat-focus' : 'detail'
9462
+ sessions: hydratedSessions,
9463
+ viewMode: viewMode === 'chat-focus' ? 'chat-focus' : 'detail'
8848
9464
  };
8849
9465
  };
8850
9466
 
@@ -8868,16 +9484,20 @@ const startRename = (state, id) => {
8868
9484
  };
8869
9485
 
8870
9486
  const toggleChatFocusMode = async state => {
8871
- if (state.viewMode === 'chat-focus') {
9487
+ const {
9488
+ lastNormalViewMode,
9489
+ viewMode
9490
+ } = state;
9491
+ if (viewMode === 'chat-focus') {
8872
9492
  return {
8873
9493
  ...state,
8874
- viewMode: state.lastNormalViewMode
9494
+ viewMode: lastNormalViewMode
8875
9495
  };
8876
9496
  }
8877
- if (state.viewMode === 'list' || state.viewMode === 'detail') {
9497
+ if (viewMode === 'list' || viewMode === 'detail') {
8878
9498
  return {
8879
9499
  ...state,
8880
- lastNormalViewMode: state.viewMode,
9500
+ lastNormalViewMode: viewMode,
8881
9501
  viewMode: 'chat-focus'
8882
9502
  };
8883
9503
  }
@@ -8885,25 +9505,32 @@ const toggleChatFocusMode = async state => {
8885
9505
  };
8886
9506
 
8887
9507
  const toggleProjectExpanded = async (state, projectId) => {
8888
- const isExpanded = state.projectExpandedIds.includes(projectId);
8889
- const projectExpandedIds = isExpanded ? state.projectExpandedIds.filter(id => id !== projectId) : [...state.projectExpandedIds, projectId];
8890
- 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);
8891
9517
  if (visibleSessions.length === 0) {
8892
9518
  return {
8893
9519
  ...state,
8894
9520
  composerAttachments: [],
8895
- projectExpandedIds,
9521
+ composerAttachmentsHeight: 0,
9522
+ projectExpandedIds: nextProjectExpandedIds,
8896
9523
  selectedProjectId: projectId,
8897
9524
  selectedSessionId: '',
8898
9525
  viewMode: 'chat-focus'
8899
9526
  };
8900
9527
  }
8901
- const selectedSessionVisible = visibleSessions.some(session => session.id === state.selectedSessionId);
8902
- const selectedSessionId = selectedSessionVisible ? state.selectedSessionId : visibleSessions[0].id;
8903
- const loadedSession = await getChatSession(selectedSessionId);
8904
- const composerAttachments = await getComposerAttachments(selectedSessionId);
8905
- const sessions = state.sessions.map(session => {
8906
- 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) {
8907
9534
  return session;
8908
9535
  }
8909
9536
  return loadedSession;
@@ -8911,10 +9538,11 @@ const toggleProjectExpanded = async (state, projectId) => {
8911
9538
  return {
8912
9539
  ...state,
8913
9540
  composerAttachments,
8914
- projectExpandedIds,
9541
+ composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, width),
9542
+ projectExpandedIds: nextProjectExpandedIds,
8915
9543
  selectedProjectId: projectId,
8916
- selectedSessionId,
8917
- sessions,
9544
+ selectedSessionId: nextSelectedSessionId,
9545
+ sessions: hydratedSessions,
8918
9546
  viewMode: 'chat-focus'
8919
9547
  };
8920
9548
  };
@@ -9048,10 +9676,23 @@ const handleClick = async (state, name, id = '', eventX = 0, eventY = 0) => {
9048
9676
  const sessionId = getRenameIdFromInputName(name);
9049
9677
  return startRename(state, sessionId);
9050
9678
  }
9679
+ case isComposerAttachmentRemoveInputName(name):
9680
+ {
9681
+ const attachmentId = getAttachmentIdFromComposerAttachmentRemoveInputName(name);
9682
+ return handleRemoveComposerAttachment(state, attachmentId);
9683
+ }
9051
9684
  case name === SessionDelete:
9052
9685
  return deleteSession(state, id);
9686
+ case name === ProjectDelete:
9687
+ return deleteProject(state, id);
9053
9688
  case name === Send:
9054
9689
  return handleClickSend(state);
9690
+ case name === ScrollDown:
9691
+ return {
9692
+ ...state,
9693
+ messagesAutoScrollEnabled: true,
9694
+ messagesScrollTop: getNextAutoScrollTop(state.messagesScrollTop)
9695
+ };
9055
9696
  case name === SaveOpenRouterApiKey:
9056
9697
  return handleClickSaveOpenRouterApiKey(state);
9057
9698
  case name === SaveOpenApiApiKey:
@@ -9077,6 +9718,7 @@ const handleClickBack = async state => {
9077
9718
  return {
9078
9719
  ...state,
9079
9720
  composerAttachments: [],
9721
+ composerAttachmentsHeight: 0,
9080
9722
  lastNormalViewMode: 'list',
9081
9723
  renamingSessionId: '',
9082
9724
  viewMode: 'list'
@@ -9158,6 +9800,7 @@ const handleClickNew = async state => {
9158
9800
  return focusInput({
9159
9801
  ...clearedState,
9160
9802
  composerAttachments: [],
9803
+ composerAttachmentsHeight: 0,
9161
9804
  lastNormalViewMode: 'list',
9162
9805
  renamingSessionId: '',
9163
9806
  viewMode: 'list'
@@ -9173,6 +9816,26 @@ const handleClickSettings = async () => {
9173
9816
  await invoke('Main.openUri', 'app://settings.json');
9174
9817
  };
9175
9818
 
9819
+ const handleContextMenuChatImageAttachment = async (state, name, eventX, eventY) => {
9820
+ const getFallbackAttachment = () => {
9821
+ const attachmentsWithPreview = state.composerAttachments.filter(attachment => attachment.previewSrc);
9822
+ if (attachmentsWithPreview.length !== 1) {
9823
+ return undefined;
9824
+ }
9825
+ return attachmentsWithPreview[0];
9826
+ };
9827
+ const attachment = isComposerAttachmentPreviewInputName(name) ? state.composerAttachments.find(item => item.attachmentId === getAttachmentIdFromComposerAttachmentPreviewInputName(name)) : getFallbackAttachment();
9828
+ if (!attachment?.previewSrc) {
9829
+ return state;
9830
+ }
9831
+ await showContextMenu2(state.uid, MenuChatAttachment, eventX, eventY, {
9832
+ attachmentId: attachment.attachmentId,
9833
+ menuId: MenuChatAttachment,
9834
+ previewSrc: attachment.previewSrc
9835
+ });
9836
+ return state;
9837
+ };
9838
+
9176
9839
  const handleContextMenuChatModelPicker = async state => {
9177
9840
  return state;
9178
9841
  };
@@ -9182,16 +9845,20 @@ const handleContextMenuChatSendAreaBottom = async state => {
9182
9845
  };
9183
9846
 
9184
9847
  const handleDragEnter = async (state, name, hasFiles = true) => {
9848
+ const {
9849
+ composerDropActive,
9850
+ composerDropEnabled
9851
+ } = state;
9185
9852
  if (name !== ComposerDropTarget) {
9186
9853
  return state;
9187
9854
  }
9188
- if (!state.composerDropEnabled) {
9855
+ if (!composerDropEnabled) {
9189
9856
  return state;
9190
9857
  }
9191
9858
  if (!hasFiles) {
9192
9859
  return state;
9193
9860
  }
9194
- if (state.composerDropActive) {
9861
+ if (composerDropActive) {
9195
9862
  return state;
9196
9863
  }
9197
9864
  return {
@@ -9214,16 +9881,20 @@ const handleDragLeave = async (state, name) => {
9214
9881
  };
9215
9882
 
9216
9883
  const handleDragOver = async (state, name, hasFiles = true) => {
9884
+ const {
9885
+ composerDropActive,
9886
+ composerDropEnabled
9887
+ } = state;
9217
9888
  if (name !== ComposerDropTarget) {
9218
9889
  return state;
9219
9890
  }
9220
- if (!state.composerDropEnabled) {
9891
+ if (!composerDropEnabled) {
9221
9892
  return state;
9222
9893
  }
9223
9894
  if (!hasFiles) {
9224
9895
  return state;
9225
9896
  }
9226
- if (state.composerDropActive) {
9897
+ if (composerDropActive) {
9227
9898
  return state;
9228
9899
  }
9229
9900
  return {
@@ -9232,47 +9903,92 @@ const handleDragOver = async (state, name, hasFiles = true) => {
9232
9903
  };
9233
9904
  };
9234
9905
 
9235
- const 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;
9236
9930
  if (name !== ComposerDropTarget) {
9237
9931
  return state;
9238
9932
  }
9239
- if (!state.composerDropEnabled) {
9933
+ if (!composerDropEnabled) {
9240
9934
  return {
9241
9935
  ...state,
9242
9936
  composerDropActive: false
9243
9937
  };
9244
9938
  }
9245
- const nextState = state.composerDropActive === false ? state : {
9939
+ const nextState = composerDropActive === false ? state : {
9246
9940
  ...state,
9247
9941
  composerDropActive: false
9248
9942
  };
9249
- if (!state.selectedSessionId || files.length === 0) {
9943
+ if (!selectedSessionId || fileHandles.length === 0) {
9250
9944
  return nextState;
9251
9945
  }
9252
9946
  const nextAttachments = [];
9253
- for (const file of files) {
9254
- 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);
9255
9953
  await appendChatViewEvent({
9256
9954
  attachmentId,
9257
9955
  blob: file,
9258
9956
  mimeType: file.type,
9259
9957
  name: file.name,
9260
- sessionId: state.selectedSessionId,
9958
+ sessionId: selectedSessionId,
9261
9959
  size: file.size,
9262
9960
  timestamp: new Date().toISOString(),
9263
9961
  type: 'chat-attachment-added'
9264
9962
  });
9265
9963
  nextAttachments.push({
9266
9964
  attachmentId,
9267
- displayType: await getComposerAttachmentDisplayType(file, file.name, file.type),
9965
+ displayType,
9268
9966
  mimeType: file.type,
9269
9967
  name: file.name,
9270
- size: file.size
9968
+ ...(previewSrc ? {
9969
+ previewSrc
9970
+ } : {}),
9971
+ size: file.size,
9972
+ ...(typeof textContent === 'string' ? {
9973
+ textContent
9974
+ } : {})
9271
9975
  });
9272
9976
  }
9273
9977
  return {
9274
9978
  ...nextState,
9275
- composerAttachments: [...nextState.composerAttachments, ...nextAttachments]
9979
+ composerAttachments: [...nextState.composerAttachments, ...nextAttachments],
9980
+ composerAttachmentsHeight: getComposerAttachmentsHeight([...nextState.composerAttachments, ...nextAttachments], width),
9981
+ nextAttachmentId: nextAttachmentId + nextAttachments.length
9982
+ };
9983
+ };
9984
+
9985
+ const handleErrorComposerAttachmentPreviewOverlay = async state => {
9986
+ if (!state.composerAttachmentPreviewOverlayAttachmentId || state.composerAttachmentPreviewOverlayError) {
9987
+ return state;
9988
+ }
9989
+ return {
9990
+ ...state,
9991
+ composerAttachmentPreviewOverlayError: true
9276
9992
  };
9277
9993
  };
9278
9994
 
@@ -9284,9 +10000,6 @@ const handleSearchValueChange = (state, newValue) => {
9284
10000
  };
9285
10001
 
9286
10002
  const handleInput = async (state, name, value, inputSource = 'user') => {
9287
- const {
9288
- selectedSessionId
9289
- } = state;
9290
10003
  if (name === OpenApiApiKeyInput) {
9291
10004
  return {
9292
10005
  ...state,
@@ -9315,18 +10028,21 @@ const handleInput = async (state, name, value, inputSource = 'user') => {
9315
10028
  if (name !== Composer) {
9316
10029
  return state;
9317
10030
  }
9318
- if (selectedSessionId) {
10031
+ if (state.selectedSessionId) {
9319
10032
  await appendChatViewEvent({
9320
- sessionId: selectedSessionId,
10033
+ sessionId: state.selectedSessionId,
9321
10034
  timestamp: new Date().toISOString(),
9322
10035
  type: 'handle-input',
9323
10036
  value
9324
10037
  });
9325
10038
  }
9326
10039
  const composerHeight = await getComposerHeight(state, value);
10040
+ const composerAttachmentsHeight = getComposerAttachmentsHeight(state.composerAttachments, state.width);
10041
+ const chatInputHistoryDraft = state.chatInputHistoryIndex === -1 ? value : state.chatInputHistoryDraft;
9327
10042
  return {
9328
10043
  ...state,
9329
- chatInputHistoryDraft: state.chatInputHistoryIndex === -1 ? value : state.chatInputHistoryDraft,
10044
+ chatInputHistoryDraft,
10045
+ composerAttachmentsHeight,
9330
10046
  composerHeight,
9331
10047
  composerSelectionEnd: value.length,
9332
10048
  composerSelectionStart: value.length,
@@ -9382,6 +10098,18 @@ const handleInputFocus = async (state, name) => {
9382
10098
  };
9383
10099
  };
9384
10100
 
10101
+ const getSubmittedRenameState = (state, sessions) => {
10102
+ return {
10103
+ ...state,
10104
+ composerHeight: getMinComposerHeightForState(state),
10105
+ composerSelectionEnd: 0,
10106
+ composerSelectionStart: 0,
10107
+ composerValue: '',
10108
+ inputSource: 'script',
10109
+ renamingSessionId: '',
10110
+ sessions
10111
+ };
10112
+ };
9385
10113
  const submitRename = async state => {
9386
10114
  const {
9387
10115
  composerValue,
@@ -9395,29 +10123,24 @@ const submitRename = async state => {
9395
10123
  renamingSessionId: ''
9396
10124
  };
9397
10125
  }
10126
+ const promptedTitle = sanitizeGeneratedTitle(await invoke('Main.prompt', title));
10127
+ if (!promptedTitle) {
10128
+ return getSubmittedRenameState(state, sessions);
10129
+ }
9398
10130
  const updatedSessions = sessions.map(session => {
9399
10131
  if (session.id !== renamingSessionId) {
9400
10132
  return session;
9401
10133
  }
9402
10134
  return {
9403
10135
  ...session,
9404
- title
10136
+ title: promptedTitle
9405
10137
  };
9406
10138
  });
9407
10139
  const renamedSession = updatedSessions.find(session => session.id === renamingSessionId);
9408
10140
  if (renamedSession) {
9409
10141
  await saveChatSession(renamedSession);
9410
10142
  }
9411
- return {
9412
- ...state,
9413
- composerHeight: getMinComposerHeightForState(state),
9414
- composerSelectionEnd: 0,
9415
- composerSelectionStart: 0,
9416
- composerValue: '',
9417
- inputSource: 'script',
9418
- renamingSessionId: '',
9419
- sessions: updatedSessions
9420
- };
10143
+ return getSubmittedRenameState(state, updatedSessions);
9421
10144
  };
9422
10145
 
9423
10146
  const handleKeyDown = async (state, key, shiftKey) => {
@@ -9451,19 +10174,77 @@ const handleMissingOpenRouterApiKeyFormSubmit = async state => {
9451
10174
  };
9452
10175
 
9453
10176
  const handleModelChange = async (state, value) => {
10177
+ const {
10178
+ modelPickerHeaderHeight,
10179
+ models
10180
+ } = state;
9454
10181
  return {
9455
10182
  ...state,
9456
10183
  agentModePickerOpen: false,
9457
- modelPickerHeight: getModelPickerHeight(state.modelPickerHeaderHeight, state.models.length),
10184
+ modelPickerHeight: getModelPickerHeight(modelPickerHeaderHeight, models.length),
9458
10185
  modelPickerListScrollTop: 0,
9459
10186
  modelPickerOpen: false,
9460
10187
  modelPickerSearchValue: '',
9461
10188
  reasoningEffortPickerOpen: false,
9462
10189
  selectedModelId: value,
9463
- visibleModels: 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
9464
10237
  };
9465
10238
  };
9466
10239
 
10240
+ const handleMouseOver = async (state, name) => {
10241
+ if (!isComposerAttachmentInputName(name)) {
10242
+ return state;
10243
+ }
10244
+ const attachmentId = getAttachmentIdFromComposerAttachmentInputName(name);
10245
+ return showComposerAttachmentPreviewOverlay(state, attachmentId);
10246
+ };
10247
+
9467
10248
  const handleNewline = async state => {
9468
10249
  const {
9469
10250
  composerValue
@@ -9489,7 +10270,7 @@ const handleProjectAddButtonContextMenu = async (state, button, x, y) => {
9489
10270
  return state;
9490
10271
  };
9491
10272
 
9492
- const getProjectIdAtIndex = (state, index) => {
10273
+ const getProjectAtIndex = (state, index) => {
9493
10274
  const {
9494
10275
  projectExpandedIds,
9495
10276
  projects,
@@ -9499,7 +10280,7 @@ const getProjectIdAtIndex = (state, index) => {
9499
10280
  let currentIndex = 0;
9500
10281
  for (const project of projects) {
9501
10282
  if (currentIndex === index) {
9502
- return project.id;
10283
+ return project;
9503
10284
  }
9504
10285
  currentIndex++;
9505
10286
  if (projectExpandedIds.includes(project.id)) {
@@ -9509,13 +10290,13 @@ const getProjectIdAtIndex = (state, index) => {
9509
10290
  continue;
9510
10291
  }
9511
10292
  if (currentIndex === index) {
9512
- return project.id;
10293
+ return project;
9513
10294
  }
9514
10295
  currentIndex++;
9515
10296
  }
9516
10297
  }
9517
10298
  }
9518
- return '';
10299
+ return undefined;
9519
10300
  };
9520
10301
  const handleProjectListContextMenu = async (state, button, x, y) => {
9521
10302
  const {
@@ -9528,13 +10309,14 @@ const handleProjectListContextMenu = async (state, button, x, y) => {
9528
10309
  if (index < 0) {
9529
10310
  return state;
9530
10311
  }
9531
- const projectId = getProjectIdAtIndex(state, index);
9532
- if (!projectId) {
10312
+ const project = getProjectAtIndex(state, index);
10313
+ if (!project) {
9533
10314
  return state;
9534
10315
  }
9535
10316
  await showContextMenu2(uid, MenuChatProjectList, x, y, {
10317
+ canRemoveProject: project.name !== '_blank',
9536
10318
  menuId: MenuChatProjectList,
9537
- projectId
10319
+ projectId: project.id
9538
10320
  });
9539
10321
  return state;
9540
10322
  };
@@ -9614,7 +10396,7 @@ const createExtensionHostRpc = async () => {
9614
10396
 
9615
10397
  const initialize = async () => {
9616
10398
  const rpc = await createExtensionHostRpc();
9617
- set$4(rpc);
10399
+ set$5(rpc);
9618
10400
  };
9619
10401
 
9620
10402
  const ensureBlankProject = (projects, fallbackBlankProject) => {
@@ -9657,17 +10439,34 @@ const getSavedChatListScrollTop = savedState => {
9657
10439
  return chatListScrollTop;
9658
10440
  };
9659
10441
 
9660
- const getSavedComposerValue = savedState => {
10442
+ const getSavedComposerSelection = (savedState, composerValue) => {
9661
10443
  if (!isObject$1(savedState)) {
9662
10444
  return undefined;
9663
10445
  }
9664
10446
  const {
9665
- composerValue
10447
+ composerSelectionEnd,
10448
+ composerSelectionStart
9666
10449
  } = savedState;
9667
- if (typeof composerValue !== 'string') {
10450
+ if (typeof composerSelectionStart !== 'number') {
9668
10451
  return undefined;
9669
10452
  }
9670
- return composerValue;
10453
+ if (typeof composerSelectionEnd !== 'number') {
10454
+ return undefined;
10455
+ }
10456
+ return getNormalizedComposerSelection(composerValue, composerSelectionStart, composerSelectionEnd);
10457
+ };
10458
+
10459
+ const getSavedComposerValue = savedState => {
10460
+ if (!isObject$1(savedState)) {
10461
+ return undefined;
10462
+ }
10463
+ const {
10464
+ composerValue
10465
+ } = savedState;
10466
+ if (typeof composerValue !== 'string') {
10467
+ return undefined;
10468
+ }
10469
+ return composerValue;
9671
10470
  };
9672
10471
 
9673
10472
  const getSavedLastNormalViewMode = savedState => {
@@ -9958,6 +10757,15 @@ const loadReasoningPickerEnabled = async () => {
9958
10757
  }
9959
10758
  };
9960
10759
 
10760
+ const loadScrollDownButtonEnabled = async () => {
10761
+ try {
10762
+ const savedScrollDownButtonEnabled = await get('chatView.scrollDownButtonEnabled');
10763
+ return typeof savedScrollDownButtonEnabled === 'boolean' ? savedScrollDownButtonEnabled : false;
10764
+ } catch {
10765
+ return false;
10766
+ }
10767
+ };
10768
+
9961
10769
  const loadSearchEnabled = async () => {
9962
10770
  try {
9963
10771
  const savedSearchEnabled = await get('chatView.searchEnabled');
@@ -10049,7 +10857,7 @@ const loadVoiceDictationEnabled = async () => {
10049
10857
  };
10050
10858
 
10051
10859
  const loadPreferences = async () => {
10052
- const [aiSessionTitleGenerationEnabled, authAccessToken, authEnabled, authRefreshToken, backendUrl, chatHistoryEnabled, composerDropEnabled, openApiApiKey, openRouterApiKey, emitStreamingFunctionCallEvents, reasoningPickerEnabled, searchEnabled, streamingEnabled, todoListToolEnabled, toolEnablement, passIncludeObfuscation, useChatCoordinatorWorker, useChatMathWorker, useChatMessageParsingWorker, useChatNetworkWorkerForRequests, useChatToolWorker, voiceDictationEnabled] = await Promise.all([loadAiSessionTitleGenerationEnabled(), loadBackendAccessToken(), loadAuthEnabled(), loadBackendRefreshToken(), loadBackendUrl(), loadChatHistoryEnabled(), loadComposerDropEnabled(), loadOpenApiApiKey(), loadOpenRouterApiKey(), loadEmitStreamingFunctionCallEvents(), loadReasoningPickerEnabled(), loadSearchEnabled(), loadStreamingEnabled(), loadTodoListToolEnabled(), loadToolEnablement(), loadPassIncludeObfuscation(), loadUseChatCoordinatorWorker(), loadUseChatMathWorker(), loadUseChatMessageParsingWorker(), loadUseChatNetworkWorkerForRequests(), loadUseChatToolWorker(), loadVoiceDictationEnabled()]);
10860
+ const [aiSessionTitleGenerationEnabled, authAccessToken, authEnabled, authRefreshToken, backendUrl, chatHistoryEnabled, composerDropEnabled, openApiApiKey, openRouterApiKey, emitStreamingFunctionCallEvents, reasoningPickerEnabled, scrollDownButtonEnabled, searchEnabled, streamingEnabled, todoListToolEnabled, toolEnablement, passIncludeObfuscation, useChatCoordinatorWorker, useChatMathWorker, useChatMessageParsingWorker, useChatNetworkWorkerForRequests, useChatToolWorker, voiceDictationEnabled] = await Promise.all([loadAiSessionTitleGenerationEnabled(), loadBackendAccessToken(), loadAuthEnabled(), loadBackendRefreshToken(), loadBackendUrl(), loadChatHistoryEnabled(), loadComposerDropEnabled(), loadOpenApiApiKey(), loadOpenRouterApiKey(), loadEmitStreamingFunctionCallEvents(), loadReasoningPickerEnabled(), loadScrollDownButtonEnabled(), loadSearchEnabled(), loadStreamingEnabled(), loadTodoListToolEnabled(), loadToolEnablement(), loadPassIncludeObfuscation(), loadUseChatCoordinatorWorker(), loadUseChatMathWorker(), loadUseChatMessageParsingWorker(), loadUseChatNetworkWorkerForRequests(), loadUseChatToolWorker(), loadVoiceDictationEnabled()]);
10053
10861
  return {
10054
10862
  aiSessionTitleGenerationEnabled,
10055
10863
  authAccessToken,
@@ -10063,6 +10871,7 @@ const loadPreferences = async () => {
10063
10871
  openRouterApiKey,
10064
10872
  passIncludeObfuscation,
10065
10873
  reasoningPickerEnabled,
10874
+ scrollDownButtonEnabled,
10066
10875
  searchEnabled,
10067
10876
  streamingEnabled,
10068
10877
  todoListToolEnabled,
@@ -10120,6 +10929,9 @@ const loadContent = async (state, savedState) => {
10120
10929
  const savedSelectedModelId = getSavedSelectedModelId(savedState);
10121
10930
  const savedViewMode = getSavedViewMode(savedState);
10122
10931
  const savedComposerValue = getSavedComposerValue(savedState);
10932
+ const composerValue = savedComposerValue ?? state.composerValue;
10933
+ const savedComposerSelection = getSavedComposerSelection(savedState, composerValue);
10934
+ const [composerSelectionStart, composerSelectionEnd] = savedComposerSelection ?? [state.composerSelectionStart, state.composerSelectionEnd];
10123
10935
  const {
10124
10936
  aiSessionTitleGenerationEnabled,
10125
10937
  authAccessToken,
@@ -10133,6 +10945,7 @@ const loadContent = async (state, savedState) => {
10133
10945
  openRouterApiKey,
10134
10946
  passIncludeObfuscation,
10135
10947
  reasoningPickerEnabled,
10948
+ scrollDownButtonEnabled,
10136
10949
  searchEnabled,
10137
10950
  streamingEnabled,
10138
10951
  todoListToolEnabled,
@@ -10208,9 +11021,12 @@ const loadContent = async (state, savedState) => {
10208
11021
  chatHistoryEnabled,
10209
11022
  chatListScrollTop,
10210
11023
  composerAttachments,
11024
+ composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, state.width),
10211
11025
  composerDropActive: false,
10212
11026
  composerDropEnabled,
10213
- composerValue: savedComposerValue ?? state.composerValue,
11027
+ composerSelectionEnd,
11028
+ composerSelectionStart,
11029
+ composerValue,
10214
11030
  emitStreamingFunctionCallEvents,
10215
11031
  initial: false,
10216
11032
  lastNormalViewMode,
@@ -10232,6 +11048,7 @@ const loadContent = async (state, savedState) => {
10232
11048
  reasoningEffortPickerOpen: false,
10233
11049
  reasoningPickerEnabled,
10234
11050
  runModePickerOpen: false,
11051
+ scrollDownButtonEnabled,
10235
11052
  searchEnabled,
10236
11053
  searchFieldVisible: false,
10237
11054
  searchValue: '',
@@ -10289,7 +11106,7 @@ const mockOpenApiRequestGetAll = _state => {
10289
11106
  };
10290
11107
 
10291
11108
  const mockOpenApiRequestReset = state => {
10292
- reset$1();
11109
+ reset$2();
10293
11110
  return state;
10294
11111
  };
10295
11112
 
@@ -10314,10 +11131,33 @@ const mockOpenApiStreamPushChunk = (state, chunk) => {
10314
11131
  };
10315
11132
 
10316
11133
  const mockOpenApiStreamReset = state => {
10317
- reset$2();
11134
+ reset$1();
10318
11135
  return state;
10319
11136
  };
10320
11137
 
11138
+ const openMockProject = async (state, projectId, projectName, projectUri) => {
11139
+ if (!projectId || !projectName) {
11140
+ return state;
11141
+ }
11142
+ const project = {
11143
+ id: projectId,
11144
+ name: projectName,
11145
+ uri: projectUri
11146
+ };
11147
+ const projects = state.projects.some(candidate => candidate.id === projectId) ? state.projects.map(candidate => {
11148
+ if (candidate.id !== projectId) {
11149
+ return candidate;
11150
+ }
11151
+ return project;
11152
+ }) : [...state.projects, project];
11153
+ return {
11154
+ ...state,
11155
+ projectExpandedIds: state.projectExpandedIds.includes(projectId) ? state.projectExpandedIds : [...state.projectExpandedIds, projectId],
11156
+ projects,
11157
+ selectedProjectId: projectId
11158
+ };
11159
+ };
11160
+
10321
11161
  const openMockSession = async (state, mockSessionId, mockChatMessages) => {
10322
11162
  const {
10323
11163
  sessions: currentSessions
@@ -10347,6 +11187,7 @@ const openMockSession = async (state, mockSessionId, mockChatMessages) => {
10347
11187
  return {
10348
11188
  ...state,
10349
11189
  composerAttachments: [],
11190
+ composerAttachmentsHeight: 0,
10350
11191
  parsedMessages,
10351
11192
  renamingSessionId: '',
10352
11193
  selectedSessionId: mockSessionId,
@@ -10361,19 +11202,24 @@ const pasteInput = async state => {
10361
11202
  };
10362
11203
 
10363
11204
  const registerMockResponse = (state, mockResponse) => {
10364
- reset$2();
11205
+ reset$1();
10365
11206
  pushChunk(mockResponse.text);
10366
11207
  finish();
10367
11208
  return state;
10368
11209
  };
10369
11210
 
10370
- 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) => {
10371
11216
  const buttonsHeight = 20;
10372
11217
  const gap = 10;
10373
11218
  const contentPadding = 10;
10374
- const chatSendAreaHeight = composerHeight + chatSendAreaPaddingTop + chatSendAreaPaddingBottom + buttonsHeight + gap + contentPadding * 2;
11219
+ const chatSendAreaHeight = composerHeight + composerAttachmentsHeight + chatSendAreaPaddingTop + chatSendAreaPaddingBottom + buttonsHeight + gap + contentPadding * 2;
10375
11220
  const baseCss = `:root {
10376
11221
  --ChatInputBoxHeight: ${composerHeight}px;
11222
+ --ChatComposerAttachmentsHeight: ${composerAttachmentsHeight}px;
10377
11223
  --ChatTextAreaHeight: ${composerHeight}px;
10378
11224
  --ChatSendAreaHeight: ${chatSendAreaHeight}px;
10379
11225
  --ChatTextAreaPaddingTop: ${textAreaPaddingTop}px;
@@ -10408,10 +11254,12 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
10408
11254
  }
10409
11255
 
10410
11256
  .ChatComposerAttachment{
11257
+ align-items: center;
11258
+ display: inline-flex;
11259
+ gap: 6px;
10411
11260
  max-width: 100%;
11261
+ min-width: 0;
10412
11262
  overflow: hidden;
10413
- white-space: nowrap;
10414
- text-overflow: ellipsis;
10415
11263
  border-radius: 999px;
10416
11264
  border: 1px solid var(--vscode-widget-border, var(--vscode-panel-border));
10417
11265
  padding: 4px 10px;
@@ -10420,6 +11268,35 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
10420
11268
  font-size: 12px;
10421
11269
  }
10422
11270
 
11271
+ .ChatComposerAttachmentLabel{
11272
+ min-width: 0;
11273
+ overflow: hidden;
11274
+ text-overflow: ellipsis;
11275
+ white-space: nowrap;
11276
+ }
11277
+
11278
+ .ChatComposerAttachmentPreview{
11279
+ width: 20px;
11280
+ height: 20px;
11281
+ flex: none;
11282
+ border-radius: 4px;
11283
+ object-fit: cover;
11284
+ }
11285
+
11286
+ .ChatComposerAttachmentRemoveButton{
11287
+ appearance: none;
11288
+ background: transparent;
11289
+ border: none;
11290
+ border-radius: 999px;
11291
+ color: inherit;
11292
+ cursor: pointer;
11293
+ flex-shrink: 0;
11294
+ font: inherit;
11295
+ line-height: 1;
11296
+ margin: 0;
11297
+ padding: 0;
11298
+ }
11299
+
10423
11300
  .ChatComposerAttachmentImage{
10424
11301
  border-color: var(--vscode-charts-blue);
10425
11302
  }
@@ -10433,6 +11310,93 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
10433
11310
  border-color: var(--vscode-charts-green, var(--vscode-widget-border, var(--vscode-panel-border)));
10434
11311
  }
10435
11312
 
11313
+ .ChatAttachments{
11314
+ display: flex;
11315
+ flex-wrap: wrap;
11316
+ gap: 8px;
11317
+ margin-top: 8px;
11318
+ }
11319
+
11320
+ .ChatAttachment{
11321
+ align-items: center;
11322
+ display: inline-flex;
11323
+ gap: 6px;
11324
+ max-width: 100%;
11325
+ min-width: 0;
11326
+ overflow: hidden;
11327
+ border-radius: 999px;
11328
+ border: 1px solid var(--vscode-widget-border, var(--vscode-panel-border));
11329
+ padding: 4px 10px;
11330
+ background: var(--vscode-badge-background, color-mix(in srgb, var(--vscode-editor-background) 88%, white));
11331
+ color: var(--vscode-badge-foreground, var(--vscode-foreground));
11332
+ font-size: 12px;
11333
+ }
11334
+
11335
+ .ChatAttachmentLabel{
11336
+ min-width: 0;
11337
+ overflow: hidden;
11338
+ text-overflow: ellipsis;
11339
+ white-space: nowrap;
11340
+ }
11341
+
11342
+ .ChatAttachmentPreview{
11343
+ width: 20px;
11344
+ height: 20px;
11345
+ flex: none;
11346
+ border-radius: 4px;
11347
+ object-fit: cover;
11348
+ }
11349
+
11350
+ .ChatAttachmentImage{
11351
+ border-color: var(--vscode-charts-blue);
11352
+ }
11353
+
11354
+ .ChatAttachmentInvalidImage{
11355
+ border-color: var(--vscode-inputValidation-errorBorder, var(--vscode-errorForeground));
11356
+ color: var(--vscode-errorForeground, var(--vscode-foreground));
11357
+ }
11358
+
11359
+ .ChatAttachmentTextFile{
11360
+ border-color: var(--vscode-charts-green, var(--vscode-widget-border, var(--vscode-panel-border)));
11361
+ }
11362
+
11363
+ .Chat{
11364
+ position: relative;
11365
+ }
11366
+
11367
+ .ChatComposerAttachmentPreviewOverlay{
11368
+ position: absolute;
11369
+ left: calc(var(--ChatSendAreaPaddingLeft) + 8px);
11370
+ bottom: calc(var(--ChatSendAreaHeight) - 12px);
11371
+ z-index: 6;
11372
+ width: 240px;
11373
+ min-width: 160px;
11374
+ min-height: 160px;
11375
+ max-width: calc(100% - var(--ChatSendAreaPaddingLeft) - var(--ChatSendAreaPaddingRight) - 16px);
11376
+ display: flex;
11377
+ align-items: center;
11378
+ justify-content: center;
11379
+ border: 1px solid var(--vscode-widget-border, var(--vscode-panel-border));
11380
+ border-radius: 12px;
11381
+ background: var(--vscode-editorWidget-background, var(--vscode-editor-background));
11382
+ box-shadow: 0 12px 28px color-mix(in srgb, var(--vscode-editor-background) 45%, black);
11383
+ overflow: hidden;
11384
+ }
11385
+
11386
+ .ChatComposerAttachmentPreviewOverlayImage{
11387
+ display: block;
11388
+ width: 100%;
11389
+ max-width: 100%;
11390
+ max-height: min(320px, calc(100vh - 200px));
11391
+ object-fit: contain;
11392
+ background: color-mix(in srgb, var(--vscode-editor-background) 88%, black);
11393
+ }
11394
+
11395
+ .ChatComposerAttachmentPreviewOverlayError{
11396
+ padding: 12px;
11397
+ color: var(--vscode-errorForeground, var(--vscode-foreground));
11398
+ }
11399
+
10436
11400
  .CustomSelectContainer{
10437
11401
  position: relative;
10438
11402
  min-width: 0;
@@ -10444,6 +11408,20 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
10444
11408
  justify-content: flex-end;
10445
11409
  }
10446
11410
 
11411
+ .ChatOverlays{
11412
+ position: absolute;
11413
+ inset: 0;
11414
+ pointer-events: none;
11415
+ }
11416
+
11417
+ .ChatOverlays > *{
11418
+ pointer-events: auto;
11419
+ }
11420
+
11421
+ .ChatViewDropOverlayActive{
11422
+ background: rgba(255, 255, 255, 0.1);
11423
+ }
11424
+
10447
11425
  .RunModePickerPopOver{
10448
11426
  overflow: hidden;
10449
11427
  border: 1px solid var(--vscode-widget-border, var(--vscode-panel-border));
@@ -10456,6 +11434,33 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
10456
11434
  color: var(--vscode-textLink-foreground);
10457
11435
  }
10458
11436
 
11437
+ .ProjectListChevron{
11438
+ display: inline-block;
11439
+ flex: none;
11440
+ height: 16px;
11441
+ width: 16px;
11442
+ }
11443
+
11444
+ .ChatOrderedListItem{
11445
+ align-items: flex-start;
11446
+ display: flex;
11447
+ gap: 8px;
11448
+ }
11449
+
11450
+ .ChatOrderedListMarker{
11451
+ flex: none;
11452
+ min-width: 1.5em;
11453
+ }
11454
+
11455
+ .ChatOrderedListItemContent{
11456
+ flex: 1;
11457
+ min-width: 0;
11458
+ }
11459
+
11460
+ .ChatOrderedListItemPrefix{
11461
+ white-space: nowrap;
11462
+ }
11463
+
10459
11464
  .ChatToolCalls .ChatOrderedList{
10460
11465
  list-style: none;
10461
11466
  margin: 0;
@@ -10478,6 +11483,49 @@ const getCss = (composerHeight, modelPickerHeight, listItemHeight, chatMessageFo
10478
11483
  min-width: 0;
10479
11484
  }
10480
11485
 
11486
+ .ChatMessages > .Message{
11487
+ display: flex;
11488
+ }
11489
+
11490
+ .ChatMessages > .MessageUser{
11491
+ justify-content: flex-end;
11492
+ }
11493
+
11494
+ .ChatMessages > .MessageAssistant{
11495
+ justify-content: flex-start;
11496
+ }
11497
+
11498
+ .ChatMessages > .MessageUser .ChatAttachments{
11499
+ justify-content: flex-end;
11500
+ }
11501
+
11502
+ .ChatFocus .ChatMessages > .Message{
11503
+ inline-size: fit-content;
11504
+ max-inline-size: min(100%, var(--ChatFocusContentMaxWidth));
11505
+ }
11506
+
11507
+ .ChatFocus .ChatMessages > .Message > .ChatMessageContent{
11508
+ max-inline-size: 100%;
11509
+ }
11510
+
11511
+
11512
+ .Viewlet.Chat.ChatFocus{
11513
+ display: flex !important;
11514
+ min-width: 0;
11515
+ }
11516
+
11517
+ .ChatFocusMainArea{
11518
+ display: flex;
11519
+ flex: 1;
11520
+ flex-direction: column;
11521
+ min-width: 0;
11522
+ }
11523
+
11524
+ .ChatFocusMainArea > .ChatMessages{
11525
+ flex: 1;
11526
+ min-height: 0;
11527
+ }
11528
+
10481
11529
  `;
10482
11530
  return `${baseCss}
10483
11531
 
@@ -10498,6 +11546,7 @@ const renderCss = (oldState, newState) => {
10498
11546
  chatSendAreaPaddingLeft,
10499
11547
  chatSendAreaPaddingRight,
10500
11548
  chatSendAreaPaddingTop,
11549
+ composerAttachmentsHeight,
10501
11550
  composerHeight,
10502
11551
  listItemHeight,
10503
11552
  modelPickerHeight,
@@ -10510,10 +11559,11 @@ const renderCss = (oldState, newState) => {
10510
11559
  uid
10511
11560
  } = newState;
10512
11561
  const renderHtmlCss = getRenderHtmlCss(sessions, selectedSessionId);
10513
- const css = getCss(composerHeight, modelPickerHeight, listItemHeight, chatMessageFontSize, chatMessageLineHeight, chatMessageFontFamily, chatFocusContentMaxWidth, textAreaPaddingTop, textAreaPaddingLeft, textAreaPaddingRight, textAreaPaddingBottom, chatSendAreaPaddingTop, chatSendAreaPaddingLeft, chatSendAreaPaddingRight, chatSendAreaPaddingBottom, renderHtmlCss);
11562
+ const css = getCss(composerHeight, composerAttachmentsHeight, modelPickerHeight, listItemHeight, chatMessageFontSize, chatMessageLineHeight, chatMessageFontFamily, chatFocusContentMaxWidth, textAreaPaddingTop, textAreaPaddingLeft, textAreaPaddingRight, textAreaPaddingBottom, chatSendAreaPaddingTop, chatSendAreaPaddingLeft, chatSendAreaPaddingRight, chatSendAreaPaddingBottom, renderHtmlCss);
10514
11563
  return [SetCss, uid, css];
10515
11564
  };
10516
11565
 
11566
+ const pickerListSelector = '.ChatOverlays .ChatModelPickerList';
10517
11567
  const getFocusSelector = state => {
10518
11568
  const {
10519
11569
  focus,
@@ -10539,6 +11589,8 @@ const getFocusSelector = state => {
10539
11589
  }
10540
11590
  case 'model-picker-input':
10541
11591
  return `[name="${ModelPickerSearch}"]`;
11592
+ case 'picker-list':
11593
+ return pickerListSelector;
10542
11594
  case 'send-button':
10543
11595
  return '[name="send"]';
10544
11596
  default:
@@ -10549,6 +11601,9 @@ const renderFocus = (oldState, newState) => {
10549
11601
  if (newState.modelPickerOpen && !oldState.modelPickerOpen) {
10550
11602
  return [FocusSelector, `[name="${ModelPickerSearch}"]`];
10551
11603
  }
11604
+ if (newState.agentModePickerOpen && !oldState.agentModePickerOpen || newState.runModePickerOpen && !oldState.runModePickerOpen || newState.reasoningEffortPickerOpen && !oldState.reasoningEffortPickerOpen) {
11605
+ return [FocusSelector, pickerListSelector];
11606
+ }
10552
11607
  const selector = getFocusSelector(newState);
10553
11608
  return [FocusSelector, selector];
10554
11609
  };
@@ -10566,6 +11621,8 @@ const renderFocusContext = (oldState, newState) => {
10566
11621
  const HandleListContextMenu = 2;
10567
11622
  const HandleFocus = 3;
10568
11623
  const HandleInput = 4;
11624
+ const HandleMouseOut = 5;
11625
+ const HandleMouseOver = 7;
10569
11626
  const HandleClick = 11;
10570
11627
  const HandleKeyDown = 12;
10571
11628
  const HandleClickClose = 13;
@@ -10612,57 +11669,8 @@ const HandlePointerDownModelPickerList = 54;
10612
11669
  const HandlePointerUpModelPickerList = 55;
10613
11670
  const HandleClickReasoningEffortPickerToggle = 56;
10614
11671
  const HandleClickAgentModePickerToggle = 57;
10615
-
10616
- const getCustomSelectOptionVirtualDom = (name, label, selected, detail = '') => {
10617
- const className = mergeClassNames(ChatModelPickerItem, selected ? ChatModelPickerItemSelected : '');
10618
- const hasDetail = detail !== '';
10619
- return [{
10620
- childCount: 1,
10621
- type: Li
10622
- }, {
10623
- childCount: hasDetail ? 2 : 1,
10624
- className,
10625
- inputType: 'button',
10626
- name,
10627
- onClick: HandleClick,
10628
- type: Button$1
10629
- }, {
10630
- childCount: 1,
10631
- className: ChatModelPickerItemLabel,
10632
- name,
10633
- type: Span
10634
- }, text(label), ...(hasDetail ? [{
10635
- childCount: 1,
10636
- className: ChatModelPickerItemUsageCost,
10637
- name,
10638
- type: Span
10639
- }, text(detail)] : [])];
10640
- };
10641
-
10642
- const getCustomSelectPopOverVirtualDom = (optionCount, height, optionNodes, containerClassName = '', popOverClassName = '') => {
10643
- return [{
10644
- childCount: 1,
10645
- className: mergeClassNames(ChatModelPickerContainer, containerClassName),
10646
- type: Div
10647
- }, {
10648
- childCount: 1,
10649
- className: mergeClassNames(ChatModelPicker, popOverClassName),
10650
- style: `height: ${height}px;`,
10651
- type: Div
10652
- }, {
10653
- childCount: optionCount,
10654
- className: ChatModelPickerList,
10655
- type: Ul
10656
- }, ...optionNodes];
10657
- };
10658
-
10659
- const agentModePickerHeight = agentModes.length * 28;
10660
- const getAgentModeOptionsVirtualDom = selectedAgentMode => {
10661
- return agentModes.flatMap(agentMode => getCustomSelectOptionVirtualDom(getAgentModePickerItemInputName(agentMode), getAgentModeLabel(agentMode), agentMode === selectedAgentMode));
10662
- };
10663
- const getAgentModePickerPopOverVirtualDom = selectedAgentMode => {
10664
- return getCustomSelectPopOverVirtualDom(agentModes.length, agentModePickerHeight, getAgentModeOptionsVirtualDom(selectedAgentMode));
10665
- };
11672
+ const HandleContextMenuChatImageAttachment = 58;
11673
+ const HandleErrorComposerAttachmentPreviewOverlay = 59;
10666
11674
 
10667
11675
  const getAddContextButtonDom = () => {
10668
11676
  return [{
@@ -10703,22 +11711,22 @@ const getCustomSelectToggleVirtualDom = (label, name, open, onClick, title = lab
10703
11711
  }];
10704
11712
  };
10705
11713
 
10706
- const getAgentModePickerVirtualDom = (selectedAgentMode, agentModePickerOpen) => {
11714
+ const getCustomSelectPickerToggleVirtualDom = (label, name, open, onClick, title = label, containerChildCount = 1) => {
10707
11715
  return [{
10708
- childCount: 1,
11716
+ childCount: containerChildCount,
10709
11717
  className: CustomSelectContainer,
10710
11718
  type: Div
10711
- }, ...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);
10712
11724
  };
10713
11725
 
10714
11726
  const getChatModelPickerToggleVirtualDom = (models, selectedModelId, modelPickerOpen) => {
10715
11727
  const selectedModel = models.find(model => model.id === selectedModelId);
10716
11728
  const selectedModelLabel = selectedModel ? selectedModel.name : selectedModelId;
10717
- return [{
10718
- childCount: 1,
10719
- className: CustomSelectContainer,
10720
- type: Div
10721
- }, ...getCustomSelectToggleVirtualDom(selectedModelLabel, ModelPickerToggle, modelPickerOpen, HandleClickModelPickerToggle)];
11729
+ return getCustomSelectPickerToggleVirtualDom(selectedModelLabel, ModelPickerToggle, modelPickerOpen, HandleClickModelPickerToggle);
10722
11730
  };
10723
11731
 
10724
11732
  const getCreatePullRequestButtonDom = () => {
@@ -10736,6 +11744,32 @@ const getCreatePullRequestButtonDom = () => {
10736
11744
  }];
10737
11745
  };
10738
11746
 
11747
+ const getCustomSelectOptionVirtualDom = (name, label, selected, detail = '') => {
11748
+ const className = mergeClassNames(ChatModelPickerItem, selected ? ChatModelPickerItemSelected : '');
11749
+ const hasDetail = detail !== '';
11750
+ return [{
11751
+ childCount: 1,
11752
+ type: Li
11753
+ }, {
11754
+ childCount: hasDetail ? 2 : 1,
11755
+ className,
11756
+ inputType: 'button',
11757
+ name,
11758
+ onClick: HandleClick,
11759
+ type: Button$1
11760
+ }, {
11761
+ childCount: 1,
11762
+ className: ChatModelPickerItemLabel,
11763
+ name,
11764
+ type: Span
11765
+ }, text(label), ...(hasDetail ? [{
11766
+ childCount: 1,
11767
+ className: ChatModelPickerItemUsageCost,
11768
+ name,
11769
+ type: Span
11770
+ }, text(detail)] : [])];
11771
+ };
11772
+
10739
11773
  const reasoningEffortPickerHeight = reasoningEfforts.length * 28;
10740
11774
  const getReasoningEffortOptionsVirtualDom = selectedReasoningEffort => {
10741
11775
  return reasoningEfforts.flatMap(reasoningEffort => {
@@ -10745,11 +11779,7 @@ const getReasoningEffortOptionsVirtualDom = selectedReasoningEffort => {
10745
11779
  });
10746
11780
  };
10747
11781
  const getReasoningEffortPickerVirtualDom = (selectedReasoningEffort, reasoningEffortPickerOpen) => {
10748
- return [{
10749
- childCount: reasoningEffortPickerOpen ? 2 : 1,
10750
- className: CustomSelectContainer,
10751
- type: Div
10752
- }, ...getCustomSelectToggleVirtualDom(getReasoningEffortLabel(selectedReasoningEffort), ReasoningEffortPickerToggle, reasoningEffortPickerOpen, HandleClickReasoningEffortPickerToggle, 'Reasoning'), ...(reasoningEffortPickerOpen ? [{
11782
+ return [...getCustomSelectPickerToggleVirtualDom(getReasoningEffortLabel(selectedReasoningEffort), ReasoningEffortPickerToggle, reasoningEffortPickerOpen, HandleClickReasoningEffortPickerToggle, 'Reasoning', reasoningEffortPickerOpen ? 2 : 1), ...(reasoningEffortPickerOpen ? [{
10753
11783
  childCount: 1,
10754
11784
  className: mergeClassNames(ChatModelPicker, CustomSelectPopOver),
10755
11785
  style: `height: ${reasoningEffortPickerHeight}px;`,
@@ -10757,16 +11787,29 @@ const getReasoningEffortPickerVirtualDom = (selectedReasoningEffort, reasoningEf
10757
11787
  }, {
10758
11788
  childCount: reasoningEfforts.length,
10759
11789
  className: ChatModelPickerList,
11790
+ name: PickerList,
11791
+ tabIndex: -1,
10760
11792
  type: Ul
10761
11793
  }, ...getReasoningEffortOptionsVirtualDom(selectedReasoningEffort)] : [])];
10762
11794
  };
10763
11795
 
10764
11796
  const getRunModePickerVirtualDom = (selectedRunMode, runModePickerOpen) => {
10765
- return [{
10766
- childCount: 1,
10767
- className: CustomSelectContainer,
10768
- type: Div
10769
- }, ...getCustomSelectToggleVirtualDom(selectedRunMode, RunModePickerToggle, runModePickerOpen, HandleClickRunModePickerToggle)];
11797
+ return getCustomSelectPickerToggleVirtualDom(selectedRunMode, RunModePickerToggle, runModePickerOpen, HandleClickRunModePickerToggle);
11798
+ };
11799
+
11800
+ const getScrollDownButtonDom = () => {
11801
+ return [{
11802
+ childCount: 1,
11803
+ className: mergeClassNames(Button, ButtonSecondary),
11804
+ inputType: 'button',
11805
+ name: ScrollDown,
11806
+ onClick: HandleClick,
11807
+ title: scrollDown(),
11808
+ type: Button$1
11809
+ }, {
11810
+ text: scrollDown(),
11811
+ type: Text
11812
+ }];
10770
11813
  };
10771
11814
 
10772
11815
  const getSendButtonClassName = isSendDisabled => {
@@ -10901,6 +11944,34 @@ const getComposerAttachmentClassName = displayType => {
10901
11944
  return ChatComposerAttachment;
10902
11945
  }
10903
11946
  };
11947
+ const getComposerAttachmentRemoveButtonDom = attachment => {
11948
+ return [{
11949
+ buttonType: 'button',
11950
+ childCount: 1,
11951
+ className: ChatComposerAttachmentRemoveButton,
11952
+ name: getComposerAttachmentRemoveInputName(attachment.attachmentId),
11953
+ onClick: HandleClick,
11954
+ title: removeAttachment(),
11955
+ type: Button$1
11956
+ }, {
11957
+ text: 'x',
11958
+ type: Text
11959
+ }];
11960
+ };
11961
+ const getComposerAttachmentPreviewDom = attachment => {
11962
+ if (!attachment.previewSrc) {
11963
+ return [];
11964
+ }
11965
+ return [{
11966
+ alt: `Image preview for ${attachment.name}`,
11967
+ childCount: 0,
11968
+ className: ChatComposerAttachmentPreview,
11969
+ name: getComposerAttachmentInputName(attachment.attachmentId),
11970
+ onContextMenu: HandleContextMenuChatImageAttachment,
11971
+ src: attachment.previewSrc,
11972
+ type: Img
11973
+ }];
11974
+ };
10904
11975
  const getComposerAttachmentsDom = composerAttachments => {
10905
11976
  if (composerAttachments.length === 0) {
10906
11977
  return [];
@@ -10909,15 +11980,28 @@ const getComposerAttachmentsDom = composerAttachments => {
10909
11980
  childCount: composerAttachments.length,
10910
11981
  className: ChatComposerAttachments,
10911
11982
  type: Div
10912
- }, ...composerAttachments.flatMap(attachment => [{
10913
- childCount: 1,
10914
- className: mergeClassNames(ChatComposerAttachment, getComposerAttachmentClassName(attachment.displayType)),
10915
- name: getComposerAttachmentInputName(attachment.attachmentId),
10916
- type: Div
10917
- }, {
10918
- text: `${getComposerAttachmentLabel(attachment.displayType)} · ${attachment.name}`,
10919
- type: Text
10920
- }])];
11983
+ }, ...composerAttachments.flatMap(attachment => {
11984
+ const removeButtonDom = getComposerAttachmentRemoveButtonDom(attachment);
11985
+ const previewDom = getComposerAttachmentPreviewDom(attachment);
11986
+ return [{
11987
+ childCount: 1 + (removeButtonDom.length > 0 ? 1 : 0) + previewDom.length,
11988
+ className: mergeClassNames(ChatComposerAttachment, getComposerAttachmentClassName(attachment.displayType)),
11989
+ name: getComposerAttachmentInputName(attachment.attachmentId),
11990
+ onMouseOut: HandleMouseOut,
11991
+ onMouseOver: HandleMouseOver,
11992
+ onPointerOut: HandleMouseOut,
11993
+ onPointerOver: HandleMouseOver,
11994
+ type: Div
11995
+ }, ...removeButtonDom, ...previewDom, {
11996
+ childCount: 1,
11997
+ className: ChatComposerAttachmentLabel,
11998
+ name: getComposerAttachmentInputName(attachment.attachmentId),
11999
+ type: Span
12000
+ }, {
12001
+ text: `${getComposerAttachmentLabel(attachment.displayType)} · ${attachment.name}`,
12002
+ type: Text
12003
+ }];
12004
+ })];
10921
12005
  };
10922
12006
  const getComposerTextAreaDom = () => {
10923
12007
  return {
@@ -10933,15 +12017,19 @@ const getComposerTextAreaDom = () => {
10933
12017
  type: TextArea
10934
12018
  };
10935
12019
  };
10936
- const getChatSendAreaDom = (composerValue, composerAttachments, agentMode, agentModePickerOpen, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton = false, voiceDictationEnabled = false) => {
12020
+ const getChatSendAreaDom = (composerValue, composerAttachments, agentMode, agentModePickerOpen, hasSpaceForAgentModePicker, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, hasSpaceForRunModePicker, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton = false, voiceDictationEnabled = false, scrollDownButtonEnabled = false, messagesAutoScrollEnabled = true) => {
10937
12021
  const isSendDisabled = composerValue.trim() === '';
10938
- const bottomControlsCount = 2 + (usageOverviewEnabled ? 1 : 0) + (addContextButtonEnabled ? 1 : 0) + (showCreatePullRequestButton ? 1 : 0) + (voiceDictationEnabled ? 1 : 0);
10939
- 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);
10940
12027
  const hasTodoList = todoListToolEnabled && todoListItems.length > 0;
10941
12028
  const hasComposerAttachments = composerAttachments.length > 0;
10942
12029
  return [{
10943
12030
  childCount: 1,
10944
12031
  className: ChatSendArea,
12032
+ onContextMenu: HandleContextMenuChatSendAreaBottom,
10945
12033
  onSubmit: HandleSubmit,
10946
12034
  type: Form
10947
12035
  }, {
@@ -10956,8 +12044,88 @@ const getChatSendAreaDom = (composerValue, composerAttachments, agentMode, agent
10956
12044
  }, {
10957
12045
  childCount: primaryControlsCount,
10958
12046
  className: ChatSendAreaPrimaryControls,
12047
+ role: 'toolbar',
12048
+ type: Div
12049
+ }, ...(showAgentModePicker ? getAgentModePickerVirtualDom(agentMode, agentModePickerOpen) : []), ...getChatModelPickerToggleVirtualDom(models, selectedModelId, modelPickerOpen), ...(reasoningPickerEnabled ? getReasoningEffortPickerVirtualDom(reasoningEffort, reasoningEffortPickerOpen) : []), ...(showResponsiveRunModePicker ? getRunModePickerVirtualDom(runMode, runModePickerOpen) : []), ...(usageOverviewEnabled ? getUsageOverviewDom(tokensUsed, tokensMax) : []), ...(addContextButtonEnabled ? getAddContextButtonDom() : []), ...(showCreatePullRequestButton ? getCreatePullRequestButtonDom() : []), ...(showScrollDownButton ? getScrollDownButtonDom() : []), ...getSendButtonDom(isSendDisabled, voiceDictationEnabled)];
12050
+ };
12051
+
12052
+ const focusHeaderStyle = 'align-items:center;border-bottom:1px solid var(--vscode-panel-border, transparent);display:flex;gap:12px;justify-content:space-between;padding:8px 12px;';
12053
+ const focusHeaderMetaStyle = 'align-items:baseline;display:flex;gap:8px;min-width:0;overflow:hidden;';
12054
+ const focusHeaderTitleStyle = 'margin:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;';
12055
+ const focusHeaderProjectStyle = 'overflow:hidden;text-overflow:ellipsis;white-space:nowrap;';
12056
+ const focusHeaderActionsStyle = 'display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;';
12057
+ const focusHeaderButtonStyle = 'white-space:nowrap;';
12058
+ const getFocusHeaderActionButtonDom = (label, name) => {
12059
+ return [{
12060
+ childCount: 1,
12061
+ className: mergeClassNames(Button, ButtonSecondary),
12062
+ inputType: 'button',
12063
+ name,
12064
+ onClick: HandleClick,
12065
+ style: focusHeaderButtonStyle,
12066
+ title: label,
12067
+ type: Button$1
12068
+ }, text(label)];
12069
+ };
12070
+ const getChatHeaderDomFocusMode = (selectedSessionTitle, selectedProjectName) => {
12071
+ const items = [[addAction(), FocusAddAction], [openInVsCode(), FocusOpenInVsCode], [commit(), FocusCommit], [openTerminal(), FocusOpenTerminal], [showDiff(), FocusShowDiff]];
12072
+ const hasProjectName = !!selectedProjectName;
12073
+ return [{
12074
+ childCount: 2,
12075
+ className: ChatFocusHeader,
12076
+ style: focusHeaderStyle,
12077
+ type: Header
12078
+ }, {
12079
+ childCount: hasProjectName ? 2 : 1,
12080
+ className: ChatName,
12081
+ style: focusHeaderMetaStyle,
10959
12082
  type: Div
10960
- }, ...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)];
12083
+ }, {
12084
+ childCount: 1,
12085
+ className: ChatHeaderLabel,
12086
+ style: focusHeaderTitleStyle,
12087
+ type: H2
12088
+ }, text(selectedSessionTitle), ...(hasProjectName ? [{
12089
+ childCount: 1,
12090
+ className: mergeClassNames(LabelDetail, ChatFocusProject),
12091
+ style: focusHeaderProjectStyle,
12092
+ type: Span
12093
+ }, text(selectedProjectName)] : []), {
12094
+ 'aria-label': 'focus header actions',
12095
+ childCount: items.length,
12096
+ className: ChatFocusActions,
12097
+ role: ToolBar,
12098
+ style: focusHeaderActionsStyle,
12099
+ type: Div
12100
+ }, ...items.flatMap(([label, name]) => getFocusHeaderActionButtonDom(label, name))];
12101
+ };
12102
+
12103
+ const getAgentModeOptionsVirtualDom = selectedAgentMode => {
12104
+ return agentModes.flatMap(agentMode => getCustomSelectOptionVirtualDom(getAgentModePickerItemInputName(agentMode), getAgentModeLabel(agentMode), agentMode === selectedAgentMode));
12105
+ };
12106
+
12107
+ const getCustomSelectPopOverVirtualDom = (optionCount, height, optionNodes, containerClassName = '', popOverClassName = '') => {
12108
+ return [{
12109
+ childCount: 1,
12110
+ className: mergeClassNames(ChatModelPickerContainer, containerClassName),
12111
+ type: Div
12112
+ }, {
12113
+ childCount: 1,
12114
+ className: mergeClassNames(ChatModelPicker, popOverClassName),
12115
+ style: `height: ${height}px;`,
12116
+ type: Div
12117
+ }, {
12118
+ childCount: optionCount,
12119
+ className: ChatModelPickerList,
12120
+ name: PickerList,
12121
+ tabIndex: -1,
12122
+ type: Ul
12123
+ }, ...optionNodes];
12124
+ };
12125
+
12126
+ const agentModePickerHeight = agentModes.length * 28;
12127
+ const getAgentModePickerPopOverVirtualDom = selectedAgentMode => {
12128
+ return getCustomSelectPopOverVirtualDom(agentModes.length, agentModePickerHeight, getAgentModeOptionsVirtualDom(selectedAgentMode));
10961
12129
  };
10962
12130
 
10963
12131
  const getUsageCostLabel = model => {
@@ -11003,7 +12171,9 @@ const getModelPickerHeaderDom = modelPickerSearchValue => {
11003
12171
  inputType: 'search',
11004
12172
  name: ModelPickerSearch,
11005
12173
  onBlur: HandleModelInputBlur,
12174
+ onClick: HandlePointerDownModelPickerList,
11006
12175
  onInput: HandleInput,
12176
+ onPointerDown: HandlePointerDownModelPickerList,
11007
12177
  placeholder: searchModels(),
11008
12178
  type: Input,
11009
12179
  value: modelPickerSearchValue
@@ -11024,6 +12194,91 @@ const getChatModelPickerPopOverVirtualDom = (models, selectedModelId, modelPicke
11024
12194
  }, ...getModelPickerHeaderDom(modelPickerSearchValue), ...getChatModelListVirtualDom(visibleModels, selectedModelId)];
11025
12195
  };
11026
12196
 
12197
+ const getComposerAttachmentPreviewOverlayVirtualDom = (composerAttachments, attachmentId, hasError) => {
12198
+ if (!attachmentId) {
12199
+ return [];
12200
+ }
12201
+ const attachment = composerAttachments.find(item => item.attachmentId === attachmentId);
12202
+ if (!attachment || attachment.displayType !== 'image' || !attachment.previewSrc) {
12203
+ return [];
12204
+ }
12205
+ return [{
12206
+ childCount: 1,
12207
+ className: ChatComposerAttachmentPreviewOverlay,
12208
+ name: ComposerAttachmentPreviewOverlay,
12209
+ onMouseOut: HandleMouseOut,
12210
+ onMouseOver: HandleMouseOver,
12211
+ onPointerOut: HandleMouseOut,
12212
+ onPointerOver: HandleMouseOver,
12213
+ type: Div
12214
+ }, ...(hasError ? [{
12215
+ childCount: 1,
12216
+ className: mergeClassNames(ChatComposerAttachmentPreviewOverlayError, ImageErrorMessage),
12217
+ name: ComposerAttachmentPreviewOverlay,
12218
+ type: Div
12219
+ }, {
12220
+ text: imageCouldNotBeLoaded(),
12221
+ type: Text
12222
+ }] : [{
12223
+ alt: `Large image preview for ${attachment.name}`,
12224
+ childCount: 0,
12225
+ className: ChatComposerAttachmentPreviewOverlayImage,
12226
+ name: ComposerAttachmentPreviewOverlay,
12227
+ onError: HandleErrorComposerAttachmentPreviewOverlay,
12228
+ src: attachment.previewSrc,
12229
+ type: Img
12230
+ }])];
12231
+ };
12232
+
12233
+ const runModes = ['local', 'background', 'cloud'];
12234
+ const runModePickerHeight = runModes.length * 28;
12235
+ const getRunModeOptionsVirtualDom = selectedRunMode => {
12236
+ return runModes.flatMap(runMode => getCustomSelectOptionVirtualDom(getRunModePickerItemInputName(runMode), runMode, runMode === selectedRunMode));
12237
+ };
12238
+ const getRunModePickerPopOverVirtualDom = selectedRunMode => {
12239
+ return getCustomSelectPopOverVirtualDom(runModes.length, runModePickerHeight, getRunModeOptionsVirtualDom(selectedRunMode), RunModePickerContainer, RunModePickerPopOver);
12240
+ };
12241
+
12242
+ const getDropOverlayVirtualDom = () => {
12243
+ return [{
12244
+ childCount: 1,
12245
+ className: mergeClassNames(ChatViewDropOverlay, ChatViewDropOverlayActive),
12246
+ name: ComposerDropTarget,
12247
+ onDragLeave: HandleDragLeave,
12248
+ onDragOver: HandleDragOver,
12249
+ onDrop: HandleDrop,
12250
+ type: Div
12251
+ }, {
12252
+ text: attachImageAsContext(),
12253
+ type: Text
12254
+ }];
12255
+ };
12256
+ const getChatOverlaysVirtualDom = ({
12257
+ agentMode,
12258
+ agentModePickerVisible,
12259
+ composerAttachmentPreviewOverlayAttachmentId,
12260
+ composerAttachmentPreviewOverlayError,
12261
+ composerAttachmentPreviewOverlayVisible,
12262
+ composerAttachments,
12263
+ dropOverlayVisible,
12264
+ modelPickerSearchValue,
12265
+ modelPickerVisible,
12266
+ runMode,
12267
+ runModePickerVisible,
12268
+ selectedModelId,
12269
+ visibleModels
12270
+ }) => {
12271
+ const overlayChildCount = (dropOverlayVisible ? 1 : 0) + (composerAttachmentPreviewOverlayVisible ? 1 : 0) + (agentModePickerVisible ? 1 : 0) + (modelPickerVisible ? 1 : 0) + (runModePickerVisible ? 1 : 0);
12272
+ if (!overlayChildCount) {
12273
+ return [];
12274
+ }
12275
+ return [{
12276
+ childCount: overlayChildCount,
12277
+ className: ChatOverlays,
12278
+ type: Div
12279
+ }, ...(dropOverlayVisible ? getDropOverlayVirtualDom() : []), ...getComposerAttachmentPreviewOverlayVirtualDom(composerAttachments, composerAttachmentPreviewOverlayAttachmentId, composerAttachmentPreviewOverlayError), ...(agentModePickerVisible ? getAgentModePickerPopOverVirtualDom(agentMode) : []), ...(modelPickerVisible ? getChatModelPickerPopOverVirtualDom(visibleModels, selectedModelId, modelPickerSearchValue) : []), ...(runModePickerVisible ? getRunModePickerPopOverVirtualDom(runMode) : [])];
12280
+ };
12281
+
11027
12282
  const getBoldInlineNodeDom = (inlineNode, useChatMathWorker, renderInlineNodeDom) => {
11028
12283
  return [{
11029
12284
  childCount: inlineNode.children.length,
@@ -11043,6 +12298,7 @@ const getImageInlineNodeDom = inlineNode => {
11043
12298
  alt: getImageAltText(inlineNode.alt),
11044
12299
  childCount: 0,
11045
12300
  className: ImageElement,
12301
+ onContextMenu: HandleContextMenuChatImageAttachment,
11046
12302
  src: inlineNode.src,
11047
12303
  type: Img
11048
12304
  }];
@@ -11153,12 +12409,17 @@ const getTokenDom = token => {
11153
12409
 
11154
12410
  const getCodeBlockDom = node => {
11155
12411
  const tokenDom = node.codeTokens.flatMap(getTokenDom);
12412
+ const languageAttribute = node.language ? {
12413
+ 'data-lang': node.language
12414
+ } : {};
11156
12415
  return [{
11157
12416
  childCount: 1,
11158
- type: Pre
12417
+ type: Pre,
12418
+ ...languageAttribute
11159
12419
  }, {
11160
12420
  childCount: node.codeTokens.length,
11161
- type: Code
12421
+ type: Code,
12422
+ ...languageAttribute
11162
12423
  }, ...tokenDom];
11163
12424
  };
11164
12425
 
@@ -11186,24 +12447,69 @@ const getHeadingDom = (node, useChatMathWorker) => {
11186
12447
  }, ...node.children.flatMap(child => getInlineNodeDom(child, useChatMathWorker))];
11187
12448
  };
11188
12449
 
12450
+ const leadingPunctuationRegex = /^([:;,.!?]+)([\s\S]*)$/;
12451
+ const splitLeadingPunctuation = children => {
12452
+ const [firstChild, secondChild, ...restChildren] = children;
12453
+ if (firstChild?.type !== 'bold' || secondChild?.type !== 'text') {
12454
+ return {
12455
+ prefixChildren: [],
12456
+ remainingChildren: children
12457
+ };
12458
+ }
12459
+ const match = secondChild.text.match(leadingPunctuationRegex);
12460
+ if (!match) {
12461
+ return {
12462
+ prefixChildren: [],
12463
+ remainingChildren: children
12464
+ };
12465
+ }
12466
+ const [, punctuation, remainingText] = match;
12467
+ const nextChildren = restChildren;
12468
+ if (remainingText) {
12469
+ nextChildren.unshift({
12470
+ text: remainingText,
12471
+ type: 'text'
12472
+ });
12473
+ }
12474
+ return {
12475
+ prefixChildren: [firstChild, {
12476
+ text: punctuation,
12477
+ type: 'text'
12478
+ }],
12479
+ remainingChildren: nextChildren
12480
+ };
12481
+ };
11189
12482
  const getOrderedListItemDom = (item, useChatMathWorker, fallbackIndex, recurseOrdered, recurseUnordered) => {
11190
12483
  const hasNestedList = (item.nestedItems?.length || 0) > 0;
11191
12484
  const nestedListType = item.nestedListType || 'unordered-list';
12485
+ const {
12486
+ prefixChildren,
12487
+ remainingChildren
12488
+ } = splitLeadingPunctuation(item.children);
11192
12489
  const nestedListDom = hasNestedList ? [{
11193
12490
  childCount: item.nestedItems?.length || 0,
11194
12491
  className: nestedListType === 'ordered-list' ? ChatOrderedList : ChatUnorderedList,
11195
12492
  type: nestedListType === 'ordered-list' ? Ol : Ul
11196
12493
  }, ...(item.nestedItems || []).flatMap((nestedItem, index) => nestedListType === 'ordered-list' ? recurseOrdered(nestedItem, useChatMathWorker, index + 1) : recurseUnordered(nestedItem, useChatMathWorker))] : [];
11197
12494
  const marker = `${item.index ?? fallbackIndex}.`;
12495
+ const prefixDom = prefixChildren.length === 0 ? [] : [{
12496
+ childCount: prefixChildren.length,
12497
+ className: ChatOrderedListItemPrefix,
12498
+ type: Span
12499
+ }, ...prefixChildren.flatMap(child => getInlineNodeDom(child, useChatMathWorker))];
11198
12500
  return [{
11199
- childCount: item.children.length + (hasNestedList ? 1 : 0) + 1,
12501
+ childCount: 2,
11200
12502
  className: ChatOrderedListItem,
11201
12503
  type: Li
11202
12504
  }, {
11203
12505
  childCount: 1,
11204
12506
  className: ChatOrderedListMarker,
11205
12507
  type: Span
11206
- }, text(marker), ...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];
11207
12513
  };
11208
12514
 
11209
12515
  const getTableHeadCellDom = (cell, useChatMathWorker) => {
@@ -11606,11 +12912,22 @@ const getReadFileTarget = rawArguments => {
11606
12912
  };
11607
12913
  };
11608
12914
 
11609
- const getToolCallFileNameDom = (fileName, fileNameClickableProps = {}) => {
12915
+ const getToolCallFileNameDom = (fileName, {
12916
+ clickableProps = {},
12917
+ title
12918
+ } = {}) => {
11610
12919
  return [{
12920
+ childCount: 1,
12921
+ className: ChatToolCallReadFileLink,
12922
+ ...(title === undefined ? {} : {
12923
+ title
12924
+ }),
12925
+ ...clickableProps,
12926
+ type: Span
12927
+ }, {
11611
12928
  childCount: 1,
11612
12929
  className: ChatToolCallFileName,
11613
- ...fileNameClickableProps,
12930
+ ...clickableProps,
11614
12931
  type: Span
11615
12932
  }, text(fileName)];
11616
12933
  };
@@ -11639,75 +12956,9 @@ const getToolCallCreateDirectoryVirtualDom = toolCall => {
11639
12956
  childCount: 1,
11640
12957
  className: ToolCallName,
11641
12958
  type: Span
11642
- }, text('create_directory '), {
11643
- childCount: 1,
11644
- className: ChatToolCallReadFileLink,
11645
- ...fileNameClickableProps,
11646
- type: Span
11647
- }, ...getToolCallFileNameDom(directoryName, fileNameClickableProps), ...(statusLabel ? [text(statusLabel)] : [])];
11648
- };
11649
-
11650
- const getToolCallEditFileVirtualDom = toolCall => {
11651
- const target = getReadFileTarget(toolCall.arguments);
11652
- if (!target) {
11653
- return [];
11654
- }
11655
- const fileName = getFileNameFromUri(target.title);
11656
- const fileNameClickableProps = target.clickableUri ? {
11657
- 'data-uri': target.clickableUri,
11658
- onClick: HandleClickFileName
11659
- } : {};
11660
- return [{
11661
- childCount: 3,
11662
- className: ChatOrderedListItem,
11663
- title: target.title,
11664
- type: Li
11665
- }, {
11666
- childCount: 0,
11667
- className: FileIcon,
11668
- type: Div
11669
- }, {
11670
- childCount: 1,
11671
- className: ToolCallName,
11672
- type: Span
11673
- }, text('edit_file '), {
11674
- childCount: 1,
11675
- className: ChatToolCallReadFileLink,
11676
- title: target.clickableUri,
11677
- ...fileNameClickableProps,
11678
- type: Span
11679
- }, ...getToolCallFileNameDom(fileName, fileNameClickableProps)];
11680
- };
11681
-
11682
- const getToolCallGetWorkspaceUriVirtualDom = toolCall => {
11683
- if (!toolCall.result) {
11684
- return [];
11685
- }
11686
- const statusLabel = getToolCallStatusLabel(toolCall);
11687
- const fileName = getFileNameFromUri(toolCall.result);
11688
- const fileNameClickableProps = {
11689
- 'data-uri': toolCall.result,
11690
- onClick: HandleClickFileName
11691
- };
11692
- return [{
11693
- childCount: statusLabel ? 4 : 3,
11694
- className: ChatOrderedListItem,
11695
- title: toolCall.result,
11696
- type: Li
11697
- }, {
11698
- childCount: 0,
11699
- className: FileIcon,
11700
- type: Div
11701
- }, {
11702
- childCount: 1,
11703
- className: ToolCallName,
11704
- type: Span
11705
- }, text('get_workspace_uri '), {
11706
- childCount: 1,
11707
- className: ChatToolCallReadFileLink,
11708
- ...fileNameClickableProps,
11709
- type: Span
11710
- }, ...getToolCallFileNameDom(fileName, fileNameClickableProps), ...(statusLabel ? [text(statusLabel)] : [])];
12959
+ }, text('create_directory '), ...getToolCallFileNameDom(directoryName, {
12960
+ clickableProps: fileNameClickableProps
12961
+ }), ...(statusLabel ? [text(statusLabel)] : [])];
11711
12962
  };
11712
12963
 
11713
12964
  const getToolCallArgumentPreview = rawArguments => {
@@ -11768,20 +13019,99 @@ const hasIncompleteJsonArguments = rawArguments => {
11768
13019
  }
11769
13020
  };
11770
13021
 
11771
- const getToolCallLabel = toolCall => {
11772
- const displayName = getToolCallDisplayName(toolCall.name);
11773
- if (toolCall.name === 'write_file' && !toolCall.status && hasIncompleteJsonArguments(toolCall.arguments)) {
11774
- return `${displayName} (in progress)`;
11775
- }
11776
- if ((toolCall.name === 'list_files' || toolCall.name === 'grep_search') && !toolCall.status && hasIncompleteJsonArguments(toolCall.arguments)) {
11777
- return displayName;
13022
+ const getToolCallLabel = toolCall => {
13023
+ const displayName = getToolCallDisplayName(toolCall.name);
13024
+ if (toolCall.name === 'write_file' && !toolCall.status && hasIncompleteJsonArguments(toolCall.arguments)) {
13025
+ return `${displayName} (in progress)`;
13026
+ }
13027
+ if ((toolCall.name === 'list_files' || toolCall.name === 'grep_search') && !toolCall.status && hasIncompleteJsonArguments(toolCall.arguments)) {
13028
+ return displayName;
13029
+ }
13030
+ const argumentPreview = getToolCallArgumentPreview(toolCall.arguments);
13031
+ const statusLabel = getToolCallStatusLabel(toolCall);
13032
+ if (argumentPreview === '{}') {
13033
+ return `${displayName}${statusLabel}`;
13034
+ }
13035
+ return `${displayName} ${argumentPreview}${statusLabel}`;
13036
+ };
13037
+
13038
+ const RE_TOOL_NAME_PREFIX = /^([^ :]+)/;
13039
+ const getToolCallDefaultDom = toolCall => {
13040
+ const label = getToolCallLabel(toolCall);
13041
+ const match = RE_TOOL_NAME_PREFIX.exec(label);
13042
+ const toolNamePrefix = match ? match[1] : label;
13043
+ const suffix = label.slice(toolNamePrefix.length);
13044
+ const hasSuffix = suffix.length > 0;
13045
+ const hoverTitle = hasSuffix && toolCall.arguments.trim() ? toolCall.arguments : undefined;
13046
+ return [{
13047
+ childCount: hasSuffix ? 2 : 1,
13048
+ className: ChatOrderedListItem,
13049
+ ...(hoverTitle ? {
13050
+ title: hoverTitle
13051
+ } : {}),
13052
+ type: Li
13053
+ }, {
13054
+ childCount: 1,
13055
+ className: ToolCallName,
13056
+ type: Span
13057
+ }, text(toolNamePrefix), ...(hasSuffix ? [text(suffix)] : [])];
13058
+ };
13059
+
13060
+ const getToolCallEditFileVirtualDom = toolCall => {
13061
+ const target = getReadFileTarget(toolCall.arguments);
13062
+ if (!target) {
13063
+ return [];
13064
+ }
13065
+ const fileName = getFileNameFromUri(target.title);
13066
+ const fileNameClickableProps = target.clickableUri ? {
13067
+ 'data-uri': target.clickableUri,
13068
+ onClick: HandleClickFileName
13069
+ } : {};
13070
+ return [{
13071
+ childCount: 3,
13072
+ className: ChatOrderedListItem,
13073
+ title: target.title,
13074
+ type: Li
13075
+ }, {
13076
+ childCount: 0,
13077
+ className: FileIcon,
13078
+ type: Div
13079
+ }, {
13080
+ childCount: 1,
13081
+ className: ToolCallName,
13082
+ type: Span
13083
+ }, text('edit_file '), ...getToolCallFileNameDom(fileName, {
13084
+ clickableProps: fileNameClickableProps,
13085
+ title: target.clickableUri
13086
+ })];
13087
+ };
13088
+
13089
+ const getToolCallGetWorkspaceUriVirtualDom = toolCall => {
13090
+ if (!toolCall.result) {
13091
+ return [];
11778
13092
  }
11779
- const argumentPreview = getToolCallArgumentPreview(toolCall.arguments);
11780
13093
  const statusLabel = getToolCallStatusLabel(toolCall);
11781
- if (argumentPreview === '{}') {
11782
- return `${displayName}${statusLabel}`;
11783
- }
11784
- 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)] : [])];
11785
13115
  };
11786
13116
 
11787
13117
  const getToolCallReadFileVirtualDom = toolCall => {
@@ -11809,12 +13139,9 @@ const getToolCallReadFileVirtualDom = toolCall => {
11809
13139
  childCount: 1,
11810
13140
  className: ToolCallName,
11811
13141
  type: Span
11812
- }, text(toolNameLabel), {
11813
- childCount: 1,
11814
- className: ChatToolCallReadFileLink,
11815
- ...fileNameClickableProps,
11816
- type: Span
11817
- }, ...getToolCallFileNameDom(fileName, fileNameClickableProps), ...(statusLabel ? [text(statusLabel)] : [])];
13142
+ }, text(toolNameLabel), ...getToolCallFileNameDom(fileName, {
13143
+ clickableProps: fileNameClickableProps
13144
+ }), ...(statusLabel ? [text(statusLabel)] : [])];
11818
13145
  };
11819
13146
 
11820
13147
  const maxHtmlLength = 40_000;
@@ -12191,12 +13518,9 @@ const getToolCallWriteFileVirtualDom = toolCall => {
12191
13518
  childCount: 1,
12192
13519
  className: ToolCallName,
12193
13520
  type: Span
12194
- }, text('write_file '), {
12195
- childCount: 1,
12196
- className: ChatToolCallReadFileLink,
12197
- ...fileNameClickableProps,
12198
- type: Span
12199
- }, ...getToolCallFileNameDom(fileName, fileNameClickableProps), ...(showDiffStats ? [{
13521
+ }, text('write_file '), ...getToolCallFileNameDom(fileName, {
13522
+ clickableProps: fileNameClickableProps
13523
+ }), ...(showDiffStats ? [{
12200
13524
  childCount: 1,
12201
13525
  className: Insertion,
12202
13526
  type: Span
@@ -12207,7 +13531,6 @@ const getToolCallWriteFileVirtualDom = toolCall => {
12207
13531
  }, text(` -${linesDeleted}`)] : []), ...(statusLabel ? [text(statusLabel)] : [])];
12208
13532
  };
12209
13533
 
12210
- const RE_TOOL_NAME_PREFIX = /^([^ :]+)/;
12211
13534
  const getToolCallDom = toolCall => {
12212
13535
  if (toolCall.name === 'getWorkspaceUri') {
12213
13536
  const virtualDom = getToolCallGetWorkspaceUriVirtualDom(toolCall);
@@ -12251,24 +13574,7 @@ const getToolCallDom = toolCall => {
12251
13574
  return virtualDom;
12252
13575
  }
12253
13576
  }
12254
- const label = getToolCallLabel(toolCall);
12255
- const match = RE_TOOL_NAME_PREFIX.exec(label);
12256
- const toolNamePrefix = match ? match[1] : label;
12257
- const suffix = label.slice(toolNamePrefix.length);
12258
- const hasSuffix = suffix.length > 0;
12259
- const hoverTitle = hasSuffix && toolCall.arguments.trim() ? toolCall.arguments : undefined;
12260
- return [{
12261
- childCount: hasSuffix ? 2 : 1,
12262
- className: ChatOrderedListItem,
12263
- ...(hoverTitle ? {
12264
- title: hoverTitle
12265
- } : {}),
12266
- type: Li
12267
- }, {
12268
- childCount: 1,
12269
- className: ToolCallName,
12270
- type: Span
12271
- }, text(toolNamePrefix), ...(hasSuffix ? [text(suffix)] : [])];
13577
+ return getToolCallDefaultDom(toolCall);
12272
13578
  };
12273
13579
 
12274
13580
  const withOrderedListMarker = (virtualDom, index) => {
@@ -12326,6 +13632,70 @@ const getTopLevelNodeCount = nodes => {
12326
13632
  return topLevelCount;
12327
13633
  };
12328
13634
 
13635
+ const getChatAttachmentLabel = displayType => {
13636
+ switch (displayType) {
13637
+ case 'file':
13638
+ return 'File';
13639
+ case 'image':
13640
+ return 'Image';
13641
+ case 'invalid-image':
13642
+ return 'Invalid image';
13643
+ case 'text-file':
13644
+ return 'Text file';
13645
+ default:
13646
+ return displayType;
13647
+ }
13648
+ };
13649
+ const getChatAttachmentClassName = displayType => {
13650
+ switch (displayType) {
13651
+ case 'file':
13652
+ return ChatAttachment;
13653
+ case 'image':
13654
+ return ChatAttachmentImage;
13655
+ case 'invalid-image':
13656
+ return ChatAttachmentInvalidImage;
13657
+ case 'text-file':
13658
+ return ChatAttachmentTextFile;
13659
+ default:
13660
+ return ChatAttachment;
13661
+ }
13662
+ };
13663
+ const getChatAttachmentPreviewDom = attachment => {
13664
+ if (!attachment.previewSrc) {
13665
+ return [];
13666
+ }
13667
+ return [{
13668
+ alt: `Attachment preview for ${attachment.name}`,
13669
+ childCount: 0,
13670
+ className: ChatAttachmentPreview,
13671
+ src: attachment.previewSrc,
13672
+ type: Img
13673
+ }];
13674
+ };
13675
+ const getChatAttachmentsDom = attachments => {
13676
+ if (attachments.length === 0) {
13677
+ return [];
13678
+ }
13679
+ return [{
13680
+ childCount: attachments.length,
13681
+ className: ChatAttachments,
13682
+ type: Div
13683
+ }, ...attachments.flatMap(attachment => {
13684
+ const previewDom = getChatAttachmentPreviewDom(attachment);
13685
+ return [{
13686
+ childCount: 1 + previewDom.length,
13687
+ className: mergeClassNames(ChatAttachment, getChatAttachmentClassName(attachment.displayType)),
13688
+ type: Div
13689
+ }, ...previewDom, {
13690
+ childCount: 1,
13691
+ className: ChatAttachmentLabel,
13692
+ type: Span
13693
+ }, {
13694
+ text: `${getChatAttachmentLabel(attachment.displayType)} · ${attachment.name}`,
13695
+ type: Text
13696
+ }];
13697
+ })];
13698
+ };
12329
13699
  const getChatMessageDom = (message, parsedMessageContent, _openRouterApiKeyInput, _openApiApiKeyInput = '', openApiApiKeyState = 'idle', openApiApiKeysSettingsUrl = 'https://platform.openai.com/api-keys', openApiApiKeyInputPattern = '^sk-.+', openRouterApiKeyState = 'idle', useChatMathWorker = false) => {
12330
13700
  const roleClassName = message.role === 'user' ? MessageUser : MessageAssistant;
12331
13701
  const isOpenApiApiKeyMissingMessage = message.role === 'assistant' && message.text === openApiApiKeyRequiredMessage;
@@ -12333,10 +13703,12 @@ const getChatMessageDom = (message, parsedMessageContent, _openRouterApiKeyInput
12333
13703
  const isOpenRouterRequestFailedMessage = message.role === 'assistant' && message.text === openRouterRequestFailedMessage;
12334
13704
  const isOpenRouterTooManyRequestsMessage = message.role === 'assistant' && message.text.startsWith(openRouterTooManyRequestsMessage);
12335
13705
  const messageDom = getMessageContentDom(parsedMessageContent, useChatMathWorker);
13706
+ const attachmentsDom = message.role === 'user' ? getChatAttachmentsDom(message.attachments ?? []) : [];
12336
13707
  const toolCallsDom = getToolCallsDom(message);
12337
13708
  const toolCallsChildCount = toolCallsDom.length > 0 ? 1 : 0;
12338
13709
  const messageDomChildCount = getTopLevelNodeCount(messageDom);
12339
- const 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;
12340
13712
  return [{
12341
13713
  childCount: 1,
12342
13714
  className: mergeClassNames(Message, roleClassName),
@@ -12345,7 +13717,7 @@ const getChatMessageDom = (message, parsedMessageContent, _openRouterApiKeyInput
12345
13717
  childCount: extraChildCount,
12346
13718
  className: ChatMessageContent,
12347
13719
  type: Div
12348
- }, ...toolCallsDom, ...messageDom, ...(isOpenApiApiKeyMissingMessage ? getMissingOpenApiApiKeyDom(openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern) : []), ...(isOpenRouterApiKeyMissingMessage ? getMissingOpenRouterApiKeyDom(openRouterApiKeyState) : []), ...(isOpenRouterRequestFailedMessage ? getOpenRouterRequestFailedDom() : []), ...(isOpenRouterTooManyRequestsMessage ? getOpenRouterTooManyRequestsDom() : [])];
13720
+ }, ...toolCallsDom, ...messageDom, ...attachmentsDom, ...(isOpenApiApiKeyMissingMessage ? getMissingOpenApiApiKeyDom(openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern) : []), ...(isOpenRouterApiKeyMissingMessage ? getMissingOpenRouterApiKeyDom(openRouterApiKeyState) : []), ...(isOpenRouterRequestFailedMessage ? getOpenRouterRequestFailedDom() : []), ...(isOpenRouterTooManyRequestsMessage ? getOpenRouterTooManyRequestsDom() : [])];
12349
13721
  };
12350
13722
 
12351
13723
  const parentNode$1 = {
@@ -12401,7 +13773,18 @@ const getDisplayMessages = (messages, parsedMessages) => {
12401
13773
  };
12402
13774
  const getMessagesDom = (messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput = '', openApiApiKeyState = 'idle', openApiApiKeysSettingsUrl = 'https://platform.openai.com/api-keys', openApiApiKeyInputPattern = '^sk-.+', openRouterApiKeyState = 'idle', messagesScrollTop = 0, useChatMathWorker = false, hideWelcomeMessage = false) => {
12403
13775
  if (messages.length === 0) {
12404
- 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
+ }];
12405
13788
  }
12406
13789
  const displayMessages = getDisplayMessages(messages, parsedMessages);
12407
13790
  return [{
@@ -12409,24 +13792,26 @@ const getMessagesDom = (messages, parsedMessages, openRouterApiKeyInput, openApi
12409
13792
  className: 'ChatMessages',
12410
13793
  onContextMenu: HandleMessagesContextMenu,
12411
13794
  onScroll: HandleMessagesScroll,
13795
+ role: 'log',
12412
13796
  scrollTop: messagesScrollTop,
12413
13797
  type: Div
12414
13798
  }, ...displayMessages.flatMap(item => getChatMessageDom(item.message, item.parsedContent, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, useChatMathWorker))];
12415
13799
  };
12416
13800
 
13801
+ const arrowLeft$1 = {
13802
+ childCount: 0,
13803
+ className: mergeClassNames(MaskIcon, MaskIconArrowLeft),
13804
+ type: Div
13805
+ };
12417
13806
  const getBackToChatsButtonDom = () => {
12418
13807
  return [{
12419
13808
  childCount: 1,
12420
- className: mergeClassNames(Button, ButtonSecondary),
12421
- inputType: 'button',
13809
+ className: IconButton,
12422
13810
  name: Back,
12423
13811
  onClick: HandleClickBack,
12424
13812
  title: backToChatList(),
12425
13813
  type: Button$1
12426
- }, {
12427
- text: backToChatList(),
12428
- type: Text
12429
- }];
13814
+ }, arrowLeft$1];
12430
13815
  };
12431
13816
 
12432
13817
  const getProjectSessionDom = (session, selectedSessionId) => {
@@ -12466,10 +13851,10 @@ const getProjectGroupDom = (project, sessions, projectExpandedIds, selectedProje
12466
13851
  tabIndex: 0,
12467
13852
  type: Div
12468
13853
  }, {
12469
- childCount: 1,
12470
- className: ProjectListChevron,
12471
- type: Span
12472
- }, text(expanded ? '▾' : '▸'), {
13854
+ childCount: 0,
13855
+ className: mergeClassNames(ProjectListChevron, MaskIcon, expanded ? MaskIconChevronDown : MaskIconChevronRight),
13856
+ type: Div
13857
+ }, {
12473
13858
  childCount: 0,
12474
13859
  className: 'MaskIcon MaskIconFolder',
12475
13860
  type: Div
@@ -12518,15 +13903,6 @@ const getProjectListDom = (projects, sessions, projectExpandedIds, selectedProje
12518
13903
  }, text('+ Add Project'), ...(showBackToChatsButton ? getBackToChatsButtonDom() : [])];
12519
13904
  };
12520
13905
 
12521
- const runModes = ['local', 'background', 'cloud'];
12522
- const runModePickerHeight = runModes.length * 28;
12523
- const getRunModeOptionsVirtualDom = selectedRunMode => {
12524
- return runModes.flatMap(runMode => getCustomSelectOptionVirtualDom(getRunModePickerItemInputName(runMode), runMode, runMode === selectedRunMode));
12525
- };
12526
- const getRunModePickerPopOverVirtualDom = selectedRunMode => {
12527
- return getCustomSelectPopOverVirtualDom(runModes.length, runModePickerHeight, getRunModeOptionsVirtualDom(selectedRunMode), RunModePickerContainer, RunModePickerPopOver);
12528
- };
12529
-
12530
13906
  const getChatModeChatFocusVirtualDom = ({
12531
13907
  addContextButtonEnabled,
12532
13908
  agentMode,
@@ -12534,6 +13910,8 @@ const getChatModeChatFocusVirtualDom = ({
12534
13910
  authEnabled = false,
12535
13911
  authErrorMessage = '',
12536
13912
  authStatus = 'signed-out',
13913
+ composerAttachmentPreviewOverlayAttachmentId,
13914
+ composerAttachmentPreviewOverlayError = false,
12537
13915
  composerAttachments,
12538
13916
  composerDropActive = false,
12539
13917
  composerDropEnabled = true,
@@ -12542,6 +13920,9 @@ const getChatModeChatFocusVirtualDom = ({
12542
13920
  composerHeight = 28,
12543
13921
  composerLineHeight = 20,
12544
13922
  composerValue,
13923
+ hasSpaceForAgentModePicker,
13924
+ hasSpaceForRunModePicker,
13925
+ messagesAutoScrollEnabled,
12545
13926
  messagesScrollTop = 0,
12546
13927
  modelPickerOpen = false,
12547
13928
  modelPickerSearchValue = '',
@@ -12561,6 +13942,7 @@ const getChatModeChatFocusVirtualDom = ({
12561
13942
  reasoningPickerEnabled,
12562
13943
  runMode,
12563
13944
  runModePickerOpen = false,
13945
+ scrollDownButtonEnabled,
12564
13946
  selectedModelId,
12565
13947
  selectedProjectId = '',
12566
13948
  selectedSessionId,
@@ -12576,31 +13958,43 @@ const getChatModeChatFocusVirtualDom = ({
12576
13958
  voiceDictationEnabled = false
12577
13959
  }) => {
12578
13960
  const selectedSession = sessions.find(session => session.id === selectedSessionId);
13961
+ const selectedProject = projects.find(project => project.id === selectedProjectId);
12579
13962
  const messages = selectedSession ? selectedSession.messages : [];
13963
+ const selectedSessionTitle = selectedSession?.title || chatTitle();
13964
+ const selectedProjectName = selectedProject?.name || '';
12580
13965
  const showCreatePullRequestButton = canCreatePullRequest(selectedSession);
12581
13966
  const isDropOverlayVisible = composerDropEnabled && composerDropActive;
12582
- const isAgentModePickerVisible = agentModePickerOpen;
13967
+ const isComposerAttachmentPreviewOverlayVisible = !!composerAttachmentPreviewOverlayAttachmentId;
13968
+ const isAgentModePickerVisible = hasSpaceForAgentModePicker && agentModePickerOpen;
12583
13969
  const isNewModelPickerVisible = modelPickerOpen;
12584
- const isRunModePickerVisible = showRunMode && runModePickerOpen;
12585
- 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);
12586
13973
  return [{
12587
13974
  childCount: chatRootChildCount,
12588
13975
  className: mergeClassNames(Viewlet, Chat, ChatFocus),
12589
13976
  onDragEnter: HandleDragEnterChatView,
12590
13977
  onDragOver: HandleDragOverChatView,
12591
13978
  type: Div
12592
- }, ...getProjectListDom(projects, sessions, projectExpandedIds, selectedProjectId, selectedSessionId, projectListScrollTop, true), ...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 ? [{
12593
- childCount: 1,
12594
- className: mergeClassNames(ChatViewDropOverlay, ChatViewDropOverlayActive),
12595
- name: ComposerDropTarget,
12596
- onDragLeave: HandleDragLeave,
12597
- onDragOver: HandleDragOver,
12598
- onDrop: HandleDrop,
13979
+ }, ...getProjectListDom(projects, sessions, projectExpandedIds, selectedProjectId, selectedSessionId, projectListScrollTop, true), {
13980
+ childCount: 3,
13981
+ className: ChatFocusMainArea,
12599
13982
  type: Div
12600
- }, {
12601
- text: attachImageAsContext(),
12602
- type: Text
12603
- }] : []), ...(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
+ })];
12604
13998
  };
12605
13999
 
12606
14000
  const arrowLeft = {
@@ -12639,22 +14033,31 @@ const getHeaderActionVirtualDom = item => {
12639
14033
  }];
12640
14034
  };
12641
14035
 
12642
- const getChatHeaderActionsDom = (viewMode, authEnabled = false, authStatus = 'signed-out', searchEnabled = false) => {
12643
- const toggleTitle = viewMode === 'chat-focus' ? normalChatMode() : chatFocusMode();
14036
+ const getAuthAction = (authEnabled, authStatus) => {
12644
14037
  const isSigningIn = authStatus === 'signing-in';
12645
- const authAction = authEnabled && authStatus !== 'signed-in' ? {
12646
- disabled: isSigningIn,
12647
- icon: mergeClassNames(MaskIcon, MaskIconAccount),
12648
- name: Login,
12649
- onClick: HandleClick,
12650
- title: isSigningIn ? loggingInToBackend() : loginToBackend()
12651
- } : 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 {
12652
14051
  disabled: false,
12653
14052
  icon: mergeClassNames(MaskIcon, MaskIconSignOut),
12654
14053
  name: Logout,
12655
14054
  onClick: HandleClick,
12656
14055
  title: logoutFromBackend()
12657
- } : 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);
12658
14061
  const items = [{
12659
14062
  icon: mergeClassNames(MaskIcon, MaskIconLayoutPanelLeft),
12660
14063
  name: ToggleChatFocus,
@@ -12687,6 +14090,7 @@ const getChatHeaderActionsDom = (viewMode, authEnabled = false, authStatus = 'si
12687
14090
  title: closeChat()
12688
14091
  }];
12689
14092
  return [{
14093
+ 'aria-label': 'chat actions',
12690
14094
  childCount: items.length,
12691
14095
  className: ChatActions,
12692
14096
  role: ToolBar,
@@ -12710,7 +14114,7 @@ const getChatHeaderDomDetailMode = (selectedSessionTitle, authEnabled = false, a
12710
14114
  childCount: hasAuthError ? 3 : 2,
12711
14115
  className: ChatHeader,
12712
14116
  onContextMenu: HandleChatHeaderContextMenu,
12713
- type: Div
14117
+ type: Header
12714
14118
  }, {
12715
14119
  childCount: 2,
12716
14120
  className: ChatName,
@@ -12729,6 +14133,8 @@ const getChatModeDetailVirtualDom = ({
12729
14133
  authEnabled = false,
12730
14134
  authErrorMessage = '',
12731
14135
  authStatus = 'signed-out',
14136
+ composerAttachmentPreviewOverlayAttachmentId,
14137
+ composerAttachmentPreviewOverlayError = false,
12732
14138
  composerAttachments,
12733
14139
  composerDropActive = false,
12734
14140
  composerDropEnabled = true,
@@ -12737,6 +14143,9 @@ const getChatModeDetailVirtualDom = ({
12737
14143
  composerHeight = 28,
12738
14144
  composerLineHeight = 20,
12739
14145
  composerValue,
14146
+ hasSpaceForAgentModePicker,
14147
+ hasSpaceForRunModePicker,
14148
+ messagesAutoScrollEnabled,
12740
14149
  messagesScrollTop = 0,
12741
14150
  modelPickerOpen = false,
12742
14151
  modelPickerSearchValue = '',
@@ -12753,6 +14162,7 @@ const getChatModeDetailVirtualDom = ({
12753
14162
  reasoningPickerEnabled,
12754
14163
  runMode,
12755
14164
  runModePickerOpen = false,
14165
+ scrollDownButtonEnabled,
12756
14166
  selectedModelId,
12757
14167
  selectedSessionId,
12758
14168
  sessions,
@@ -12771,28 +14181,33 @@ const getChatModeDetailVirtualDom = ({
12771
14181
  const messages = selectedSession ? selectedSession.messages : [];
12772
14182
  const showCreatePullRequestButton = canCreatePullRequest(selectedSession);
12773
14183
  const isDropOverlayVisible = composerDropEnabled && composerDropActive;
12774
- const isAgentModePickerVisible = agentModePickerOpen;
14184
+ const isComposerAttachmentPreviewOverlayVisible = !!composerAttachmentPreviewOverlayAttachmentId;
14185
+ const isAgentModePickerVisible = hasSpaceForAgentModePicker && agentModePickerOpen;
12775
14186
  const isNewModelPickerVisible = modelPickerOpen;
12776
- const isRunModePickerVisible = showRunMode && runModePickerOpen;
12777
- 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);
12778
14190
  return [{
12779
14191
  childCount: chatRootChildCount,
12780
14192
  className: mergeClassNames(Viewlet, Chat),
12781
14193
  onDragEnter: HandleDragEnterChatView,
12782
14194
  onDragOver: HandleDragOverChatView,
12783
14195
  type: Div
12784
- }, ...getChatHeaderDomDetailMode(selectedSessionTitle, authEnabled, authStatus, authErrorMessage), ...getMessagesDom(messages, parsedMessages, openRouterApiKeyInput, openApiApiKeyInput, openApiApiKeyState, openApiApiKeysSettingsUrl, openApiApiKeyInputPattern, openRouterApiKeyState, messagesScrollTop, useChatMathWorker), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, showCreatePullRequestButton, voiceDictationEnabled), ...(isDropOverlayVisible ? [{
12785
- childCount: 1,
12786
- className: mergeClassNames(ChatViewDropOverlay, ChatViewDropOverlayActive),
12787
- name: ComposerDropTarget,
12788
- onDragLeave: HandleDragLeave,
12789
- onDragOver: HandleDragOver,
12790
- onDrop: HandleDrop,
12791
- type: Div
12792
- }, {
12793
- text: attachImageAsContext(),
12794
- type: Text
12795
- }] : []), ...(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
+ })];
12796
14211
  };
12797
14212
 
12798
14213
  const getChatSearchDom = (hasSearchField, searchValue) => {
@@ -12822,7 +14237,7 @@ const getChatHeaderListModeDom = (authEnabled = false, authStatus = 'signed-out'
12822
14237
  childCount: headerChildCount,
12823
14238
  className: ChatHeader,
12824
14239
  onContextMenu: HandleChatHeaderContextMenu,
12825
- type: Div
14240
+ type: Header
12826
14241
  }, {
12827
14242
  childCount: 1,
12828
14243
  className: ChatHeaderLabel,
@@ -12921,23 +14336,6 @@ const getChatListDom = (sessions, selectedSessionId, listFocusedIndex, chatListS
12921
14336
  }, ...sessions.flatMap((session, index) => getSessionDom(session, index === listFocusedIndex))];
12922
14337
  };
12923
14338
 
12924
- const getDropOverlayVirtualDom = isDropOverlayVisible => {
12925
- if (!isDropOverlayVisible) {
12926
- return [];
12927
- }
12928
- return [{
12929
- childCount: 1,
12930
- className: mergeClassNames(ChatViewDropOverlay, ChatViewDropOverlayActive),
12931
- name: ComposerDropTarget,
12932
- onDragLeave: HandleDragLeave,
12933
- onDragOver: HandleDragOver,
12934
- onDrop: HandleDrop,
12935
- type: Div
12936
- }, {
12937
- text: attachImageAsContext(),
12938
- type: Text
12939
- }];
12940
- };
12941
14339
  const getChatModeListVirtualDom = ({
12942
14340
  addContextButtonEnabled,
12943
14341
  agentMode,
@@ -12946,6 +14344,8 @@ const getChatModeListVirtualDom = ({
12946
14344
  authErrorMessage = '',
12947
14345
  authStatus = 'signed-out',
12948
14346
  chatListScrollTop = 0,
14347
+ composerAttachmentPreviewOverlayAttachmentId,
14348
+ composerAttachmentPreviewOverlayError = false,
12949
14349
  composerAttachments,
12950
14350
  composerDropActive = false,
12951
14351
  composerDropEnabled = true,
@@ -12954,6 +14354,8 @@ const getChatModeListVirtualDom = ({
12954
14354
  composerHeight = 28,
12955
14355
  composerLineHeight = 20,
12956
14356
  composerValue,
14357
+ hasSpaceForAgentModePicker,
14358
+ hasSpaceForRunModePicker,
12957
14359
  listFocusedIndex = -1,
12958
14360
  modelPickerOpen = false,
12959
14361
  modelPickerSearchValue = '',
@@ -12979,10 +14381,12 @@ const getChatModeListVirtualDom = ({
12979
14381
  voiceDictationEnabled = false
12980
14382
  }) => {
12981
14383
  const isDropOverlayVisible = composerDropEnabled && composerDropActive;
12982
- const isAgentModePickerVisible = agentModePickerOpen;
14384
+ const isComposerAttachmentPreviewOverlayVisible = !!composerAttachmentPreviewOverlayAttachmentId;
14385
+ const isAgentModePickerVisible = hasSpaceForAgentModePicker && agentModePickerOpen;
12983
14386
  const isNewModelPickerVisible = modelPickerOpen;
12984
- const isRunModePickerVisible = showRunMode && runModePickerOpen;
12985
- 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);
12986
14390
  const searchValueTrimmed = searchValue.trim().toLowerCase();
12987
14391
  const visibleSessions = searchEnabled && searchValueTrimmed ? sessions.filter(session => session.title.toLowerCase().includes(searchValueTrimmed)) : sessions;
12988
14392
  return [{
@@ -12991,7 +14395,21 @@ const getChatModeListVirtualDom = ({
12991
14395
  onDragEnter: HandleDragEnterChatView,
12992
14396
  onDragOver: HandleDragOverChatView,
12993
14397
  type: Div
12994
- }, ...getChatHeaderListModeDom(authEnabled, authStatus, authErrorMessage, searchEnabled, searchFieldVisible, searchValue), ...getChatListDom(visibleSessions, selectedSessionId, listFocusedIndex, chatListScrollTop), ...getChatSendAreaDom(composerValue, composerAttachments, agentMode, agentModePickerOpen, modelPickerOpen, models, selectedModelId, reasoningPickerEnabled, reasoningEffort, reasoningEffortPickerOpen, usageOverviewEnabled, tokensUsed, tokensMax, addContextButtonEnabled, showRunMode, runMode, runModePickerOpen, todoListToolEnabled, todoListItems, false, voiceDictationEnabled), ...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
+ })];
12995
14413
  };
12996
14414
 
12997
14415
  const getChatModeUnsupportedVirtualDom = () => {
@@ -13082,6 +14500,8 @@ const getChatVirtualDom = options => {
13082
14500
  authErrorMessage = '',
13083
14501
  authStatus = 'signed-out',
13084
14502
  chatListScrollTop,
14503
+ composerAttachmentPreviewOverlayAttachmentId,
14504
+ composerAttachmentPreviewOverlayError = false,
13085
14505
  composerAttachments,
13086
14506
  composerDropActive = false,
13087
14507
  composerDropEnabled = true,
@@ -13090,7 +14510,10 @@ const getChatVirtualDom = options => {
13090
14510
  composerHeight,
13091
14511
  composerLineHeight,
13092
14512
  composerValue,
14513
+ hasSpaceForAgentModePicker,
14514
+ hasSpaceForRunModePicker,
13093
14515
  listFocusedIndex = -1,
14516
+ messagesAutoScrollEnabled,
13094
14517
  messagesScrollTop,
13095
14518
  modelPickerOpen = false,
13096
14519
  modelPickerSearchValue = '',
@@ -13110,6 +14533,7 @@ const getChatVirtualDom = options => {
13110
14533
  reasoningPickerEnabled,
13111
14534
  runMode,
13112
14535
  runModePickerOpen = false,
14536
+ scrollDownButtonEnabled,
13113
14537
  searchEnabled = false,
13114
14538
  searchFieldVisible = false,
13115
14539
  searchValue = '',
@@ -13138,6 +14562,8 @@ const getChatVirtualDom = options => {
13138
14562
  authEnabled,
13139
14563
  authErrorMessage,
13140
14564
  authStatus,
14565
+ composerAttachmentPreviewOverlayAttachmentId,
14566
+ composerAttachmentPreviewOverlayError,
13141
14567
  composerAttachments,
13142
14568
  composerDropActive,
13143
14569
  composerDropEnabled,
@@ -13146,6 +14572,9 @@ const getChatVirtualDom = options => {
13146
14572
  composerHeight,
13147
14573
  composerLineHeight,
13148
14574
  composerValue,
14575
+ hasSpaceForAgentModePicker,
14576
+ hasSpaceForRunModePicker,
14577
+ messagesAutoScrollEnabled,
13149
14578
  messagesScrollTop,
13150
14579
  modelPickerOpen,
13151
14580
  modelPickerSearchValue,
@@ -13165,6 +14594,7 @@ const getChatVirtualDom = options => {
13165
14594
  reasoningPickerEnabled,
13166
14595
  runMode,
13167
14596
  runModePickerOpen,
14597
+ scrollDownButtonEnabled,
13168
14598
  selectedModelId,
13169
14599
  selectedProjectId,
13170
14600
  selectedSessionId,
@@ -13187,6 +14617,8 @@ const getChatVirtualDom = options => {
13187
14617
  authEnabled,
13188
14618
  authErrorMessage,
13189
14619
  authStatus,
14620
+ composerAttachmentPreviewOverlayAttachmentId,
14621
+ composerAttachmentPreviewOverlayError,
13190
14622
  composerAttachments,
13191
14623
  composerDropActive,
13192
14624
  composerDropEnabled,
@@ -13195,6 +14627,9 @@ const getChatVirtualDom = options => {
13195
14627
  composerHeight,
13196
14628
  composerLineHeight,
13197
14629
  composerValue,
14630
+ hasSpaceForAgentModePicker,
14631
+ hasSpaceForRunModePicker,
14632
+ messagesAutoScrollEnabled,
13198
14633
  messagesScrollTop,
13199
14634
  modelPickerOpen,
13200
14635
  modelPickerSearchValue,
@@ -13211,6 +14646,7 @@ const getChatVirtualDom = options => {
13211
14646
  reasoningPickerEnabled,
13212
14647
  runMode,
13213
14648
  runModePickerOpen,
14649
+ scrollDownButtonEnabled,
13214
14650
  selectedModelId,
13215
14651
  selectedSessionId,
13216
14652
  sessions,
@@ -13233,6 +14669,8 @@ const getChatVirtualDom = options => {
13233
14669
  authErrorMessage,
13234
14670
  authStatus,
13235
14671
  chatListScrollTop,
14672
+ composerAttachmentPreviewOverlayAttachmentId,
14673
+ composerAttachmentPreviewOverlayError,
13236
14674
  composerAttachments,
13237
14675
  composerDropActive,
13238
14676
  composerDropEnabled,
@@ -13241,6 +14679,8 @@ const getChatVirtualDom = options => {
13241
14679
  composerHeight,
13242
14680
  composerLineHeight,
13243
14681
  composerValue,
14682
+ hasSpaceForAgentModePicker,
14683
+ hasSpaceForRunModePicker,
13244
14684
  listFocusedIndex,
13245
14685
  modelPickerOpen,
13246
14686
  modelPickerSearchValue,
@@ -13279,6 +14719,8 @@ const renderItems = (oldState, newState) => {
13279
14719
  authErrorMessage,
13280
14720
  authStatus,
13281
14721
  chatListScrollTop,
14722
+ composerAttachmentPreviewOverlayAttachmentId,
14723
+ composerAttachmentPreviewOverlayError,
13282
14724
  composerAttachments,
13283
14725
  composerDropActive,
13284
14726
  composerDropEnabled,
@@ -13287,8 +14729,11 @@ const renderItems = (oldState, newState) => {
13287
14729
  composerHeight,
13288
14730
  composerLineHeight,
13289
14731
  composerValue,
14732
+ hasSpaceForAgentModePicker,
14733
+ hasSpaceForRunModePicker,
13290
14734
  initial,
13291
14735
  listFocusedIndex,
14736
+ messagesAutoScrollEnabled,
13292
14737
  messagesScrollTop,
13293
14738
  modelPickerOpen,
13294
14739
  modelPickerSearchValue,
@@ -13308,6 +14753,7 @@ const renderItems = (oldState, newState) => {
13308
14753
  reasoningPickerEnabled,
13309
14754
  runMode,
13310
14755
  runModePickerOpen,
14756
+ scrollDownButtonEnabled,
13311
14757
  searchEnabled,
13312
14758
  searchFieldVisible,
13313
14759
  searchValue,
@@ -13337,6 +14783,8 @@ const renderItems = (oldState, newState) => {
13337
14783
  authErrorMessage,
13338
14784
  authStatus,
13339
14785
  chatListScrollTop,
14786
+ composerAttachmentPreviewOverlayAttachmentId,
14787
+ composerAttachmentPreviewOverlayError,
13340
14788
  composerAttachments,
13341
14789
  composerDropActive,
13342
14790
  composerDropEnabled,
@@ -13345,7 +14793,10 @@ const renderItems = (oldState, newState) => {
13345
14793
  composerHeight,
13346
14794
  composerLineHeight,
13347
14795
  composerValue,
14796
+ hasSpaceForAgentModePicker,
14797
+ hasSpaceForRunModePicker,
13348
14798
  listFocusedIndex,
14799
+ messagesAutoScrollEnabled,
13349
14800
  messagesScrollTop,
13350
14801
  modelPickerOpen,
13351
14802
  modelPickerSearchValue,
@@ -13365,6 +14816,7 @@ const renderItems = (oldState, newState) => {
13365
14816
  reasoningPickerEnabled,
13366
14817
  runMode,
13367
14818
  runModePickerOpen,
14819
+ scrollDownButtonEnabled,
13368
14820
  searchEnabled,
13369
14821
  searchFieldVisible,
13370
14822
  searchValue,
@@ -13483,6 +14935,12 @@ const renderEventListeners = () => {
13483
14935
  }, {
13484
14936
  name: HandleClick,
13485
14937
  params: ['handleClick', TargetName, 'event.target.dataset.id', ClientX, ClientY]
14938
+ }, {
14939
+ name: HandleMouseOver,
14940
+ params: ['handleMouseOver', TargetName]
14941
+ }, {
14942
+ name: HandleMouseOut,
14943
+ params: ['handleMouseOut', TargetName, 'event.relatedTarget && event.relatedTarget.getAttribute ? event.relatedTarget.getAttribute("name") : ""']
13486
14944
  }, {
13487
14945
  name: HandleClickDictationButton,
13488
14946
  params: ['handleClickDictationButton']
@@ -13539,11 +14997,11 @@ const renderEventListeners = () => {
13539
14997
  params: ['handleSearchValueChange', TargetValue]
13540
14998
  }, {
13541
14999
  name: HandleDragEnter,
13542
- params: ['handleDragEnter', TargetName, 'Array.from(event.dataTransfer?.files || []).length > 0'],
15000
+ params: ['handleDragEnter', TargetName, DataTransferFiles2],
13543
15001
  preventDefault: true
13544
15002
  }, {
13545
15003
  name: HandleDragOver,
13546
- params: ['handleDragOver', TargetName, 'Array.from(event.dataTransfer?.files || []).length > 0'],
15004
+ params: ['handleDragOver', TargetName, DataTransferFiles2],
13547
15005
  preventDefault: true
13548
15006
  }, {
13549
15007
  name: HandleDragLeave,
@@ -13551,15 +15009,15 @@ const renderEventListeners = () => {
13551
15009
  preventDefault: true
13552
15010
  }, {
13553
15011
  name: HandleDrop,
13554
- params: ['handleDropFiles', TargetName, 'Array.from(event.dataTransfer?.files || [])'],
15012
+ params: ['handleDropFiles', TargetName, DataTransferFiles2],
13555
15013
  preventDefault: true
13556
15014
  }, {
13557
15015
  name: HandleDragEnterChatView,
13558
- params: ['handleDragEnter', 'composer-drop-target', 'Array.from(event.dataTransfer?.files || []).length > 0'],
15016
+ params: ['handleDragEnter', 'composer-drop-target', DataTransferFiles2],
13559
15017
  preventDefault: true
13560
15018
  }, {
13561
15019
  name: HandleDragOverChatView,
13562
- params: ['handleDragOver', 'composer-drop-target', 'Array.from(event.dataTransfer?.files || []).length > 0'],
15020
+ params: ['handleDragOver', 'composer-drop-target', DataTransferFiles2],
13563
15021
  preventDefault: true
13564
15022
  }, {
13565
15023
  name: HandleModelChange,
@@ -13645,6 +15103,13 @@ const renderEventListeners = () => {
13645
15103
  }, {
13646
15104
  name: HandleModelInputBlur,
13647
15105
  params: ['handleModelInputBlur']
15106
+ }, {
15107
+ name: HandleContextMenuChatImageAttachment,
15108
+ params: ['handleContextMenuChatImageAttachment', TargetName, ClientX, ClientY],
15109
+ preventDefault: true
15110
+ }, {
15111
+ name: HandleErrorComposerAttachmentPreviewOverlay,
15112
+ params: ['handleErrorComposerAttachmentPreviewOverlay']
13648
15113
  }];
13649
15114
  };
13650
15115
 
@@ -13659,6 +15124,7 @@ const reset = async state => {
13659
15124
  agentMode: defaultAgentMode,
13660
15125
  agentModePickerOpen: false,
13661
15126
  composerAttachments: [],
15127
+ composerAttachmentsHeight: 0,
13662
15128
  composerHeight: getMinComposerHeightForState(state),
13663
15129
  composerSelectionEnd: 0,
13664
15130
  composerSelectionStart: 0,
@@ -13683,14 +15149,39 @@ const reset = async state => {
13683
15149
  };
13684
15150
 
13685
15151
  const resize = async (state, dimensions, getComposerHeightFn = getComposerHeight) => {
15152
+ const {
15153
+ agentModePickerOpen,
15154
+ responsivePickerVisibilityEnabled,
15155
+ runModePickerOpen,
15156
+ width
15157
+ } = state;
15158
+ const responsivePickerState = dimensions.width === undefined ? undefined : getResponsivePickerState(dimensions.width, responsivePickerVisibilityEnabled);
15159
+ const responsivePickerOpenState = responsivePickerState ? {
15160
+ agentModePickerOpen: responsivePickerState.hasSpaceForAgentModePicker ? agentModePickerOpen : false,
15161
+ runModePickerOpen: responsivePickerState.hasSpaceForRunModePicker ? runModePickerOpen : false
15162
+ } : {};
13686
15163
  const nextState = {
13687
15164
  ...state,
13688
- ...dimensions
15165
+ ...dimensions,
15166
+ ...responsivePickerState,
15167
+ ...responsivePickerOpenState
13689
15168
  };
13690
- 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) {
13691
15182
  return {
13692
15183
  ...nextState,
13693
- composerHeight: await getComposerHeightFn(nextState, nextState.composerValue, nextState.width)
15184
+ composerAttachmentsHeight: getComposerAttachmentsHeight(composerAttachments, nextWidth)
13694
15185
  };
13695
15186
  }
13696
15187
  return nextState;
@@ -13700,6 +15191,8 @@ const saveState = state => {
13700
15191
  const {
13701
15192
  agentMode,
13702
15193
  chatListScrollTop,
15194
+ composerSelectionEnd,
15195
+ composerSelectionStart,
13703
15196
  composerValue,
13704
15197
  lastNormalViewMode,
13705
15198
  maxToolCalls,
@@ -13721,6 +15214,8 @@ const saveState = state => {
13721
15214
  return {
13722
15215
  agentMode,
13723
15216
  chatListScrollTop,
15217
+ composerSelectionEnd,
15218
+ composerSelectionStart,
13724
15219
  composerValue,
13725
15220
  lastNormalViewMode,
13726
15221
  maxToolCalls,
@@ -13806,6 +15301,24 @@ const setReasoningPickerEnabled = (state, reasoningPickerEnabled) => {
13806
15301
  };
13807
15302
  };
13808
15303
 
15304
+ const setResponsivePickerVisibilityEnabled = (state, responsivePickerVisibilityEnabled) => {
15305
+ const responsivePickerState = getResponsivePickerState(state.width, responsivePickerVisibilityEnabled);
15306
+ return {
15307
+ ...state,
15308
+ ...responsivePickerState,
15309
+ agentModePickerOpen: responsivePickerState.hasSpaceForAgentModePicker ? state.agentModePickerOpen : false,
15310
+ responsivePickerVisibilityEnabled,
15311
+ runModePickerOpen: responsivePickerState.hasSpaceForRunModePicker ? state.runModePickerOpen : false
15312
+ };
15313
+ };
15314
+
15315
+ const setScrollDownButtonEnabled = (state, scrollDownButtonEnabled) => {
15316
+ return {
15317
+ ...state,
15318
+ scrollDownButtonEnabled
15319
+ };
15320
+ };
15321
+
13809
15322
  const setSearchEnabled = (state, searchEnabled) => {
13810
15323
  return {
13811
15324
  ...state,
@@ -13938,6 +15451,7 @@ const commandMap = {
13938
15451
  'Chat.getKeyBindings': getKeyBindings,
13939
15452
  'Chat.getMenuEntries': getMenuEntries,
13940
15453
  'Chat.getMenuEntryIds': getMenuEntryIds,
15454
+ 'Chat.getMockOpenApiRequests': wrapGetter(getMockOpenApiRequests),
13941
15455
  'Chat.getQuickPickMenuEntries': getQuickPickMenuEntries,
13942
15456
  'Chat.getSelectedSessionId': wrapGetter(getSelectedSessionId),
13943
15457
  'Chat.getSystemPrompt': wrapGetter(getSystemPrompt),
@@ -13963,12 +15477,14 @@ const commandMap = {
13963
15477
  'Chat.handleClickReadFile': wrapCommand(handleClickFileName),
13964
15478
  'Chat.handleClickSessionDebug': wrapCommand(handleClickSessionDebug),
13965
15479
  'Chat.handleClickSettings': handleClickSettings,
15480
+ 'Chat.handleContextMenuChatImageAttachment': wrapCommand(handleContextMenuChatImageAttachment),
13966
15481
  'Chat.handleContextMenuChatModelPicker': wrapCommand(handleContextMenuChatModelPicker),
13967
15482
  'Chat.handleContextMenuChatSendAreaBottom': wrapCommand(handleContextMenuChatSendAreaBottom),
13968
15483
  'Chat.handleDragEnter': wrapCommand(handleDragEnter),
13969
15484
  'Chat.handleDragLeave': wrapCommand(handleDragLeave),
13970
15485
  'Chat.handleDragOver': wrapCommand(handleDragOver),
13971
15486
  'Chat.handleDropFiles': wrapCommand(handleDropFiles),
15487
+ 'Chat.handleErrorComposerAttachmentPreviewOverlay': wrapCommand(handleErrorComposerAttachmentPreviewOverlay),
13972
15488
  'Chat.handleInput': wrapCommand(handleInput),
13973
15489
  'Chat.handleInputFocus': wrapCommand(handleInputFocus),
13974
15490
  'Chat.handleKeyDown': wrapCommand(handleKeyDown),
@@ -13979,6 +15495,8 @@ const commandMap = {
13979
15495
  'Chat.handleModelChange': wrapCommand(handleModelChange),
13980
15496
  'Chat.handleModelInputBlur': wrapCommand(handleModelInputBlur),
13981
15497
  'Chat.handleModelPickerListScroll': wrapCommand(handleModelPickerListScroll),
15498
+ 'Chat.handleMouseOut': wrapCommand(handleMouseOut),
15499
+ 'Chat.handleMouseOver': wrapCommand(handleMouseOver),
13982
15500
  'Chat.handlePointerDownModelPickerList': wrapCommand(handlePointerDownModelPickerList),
13983
15501
  'Chat.handlePointerUpModelPickerList': wrapCommand(handlePointerUpModelPickerList),
13984
15502
  'Chat.handleProjectAddButtonContextMenu': wrapCommand(handleProjectAddButtonContextMenu),
@@ -13988,6 +15506,7 @@ const commandMap = {
13988
15506
  'Chat.handleRunModeChange': wrapCommand(handleRunModeChange),
13989
15507
  'Chat.handleSearchValueChange': wrapCommand(handleSearchValueChange),
13990
15508
  'Chat.handleSubmit': wrapCommand(handleSubmit),
15509
+ 'Chat.hideComposerAttachmentPreviewOverlay': wrapCommand(hideComposerAttachmentPreviewOverlay),
13991
15510
  'Chat.initialize': initialize,
13992
15511
  'Chat.loadContent': wrapCommand(loadContent),
13993
15512
  'Chat.loadContent2': wrapCommand(loadContent),
@@ -14000,12 +15519,14 @@ const commandMap = {
14000
15519
  'Chat.mockOpenApiStreamPushChunk': wrapCommand(mockOpenApiStreamPushChunk),
14001
15520
  'Chat.mockOpenApiStreamReset': wrapCommand(mockOpenApiStreamReset),
14002
15521
  'Chat.openAgentModePicker': wrapCommand(openAgentModePicker),
15522
+ 'Chat.openMockProject': wrapCommand(openMockProject),
14003
15523
  'Chat.openMockSession': wrapCommand(openMockSession),
14004
15524
  'Chat.openModelPicker': wrapCommand(openModelPicker),
14005
15525
  'Chat.openReasoningEffortPicker': wrapCommand(openReasoningEffortPicker),
14006
15526
  'Chat.openRunModePicker': wrapCommand(openRunModePicker),
14007
15527
  'Chat.pasteInput': wrapCommand(pasteInput),
14008
15528
  'Chat.registerMockResponse': wrapCommand(registerMockResponse),
15529
+ 'Chat.removeComposerAttachment': wrapCommand(removeComposerAttachment),
14009
15530
  'Chat.render2': render2,
14010
15531
  'Chat.renderEventListeners': renderEventListeners,
14011
15532
  'Chat.rerender': wrapCommand(rerender),
@@ -14022,6 +15543,8 @@ const commandMap = {
14022
15543
  'Chat.setQuestionToolEnabled': wrapCommand(setQuestionToolEnabled),
14023
15544
  'Chat.setReasoningEffort': wrapCommand(setReasoningEffort),
14024
15545
  'Chat.setReasoningPickerEnabled': wrapCommand(setReasoningPickerEnabled),
15546
+ 'Chat.setResponsivePickerVisibilityEnabled': wrapCommand(setResponsivePickerVisibilityEnabled),
15547
+ 'Chat.setScrollDownButtonEnabled': wrapCommand(setScrollDownButtonEnabled),
14025
15548
  'Chat.setSearchEnabled': wrapCommand(setSearchEnabled),
14026
15549
  'Chat.setShowRunMode': wrapCommand(setShowRunMode),
14027
15550
  'Chat.setStreamingEnabled': wrapCommand(setStreamingEnabled),
@@ -14032,6 +15555,7 @@ const commandMap = {
14032
15555
  'Chat.setUseChatMathWorker': wrapCommand(setUseChatMathWorker),
14033
15556
  'Chat.setUseChatMessageParsingWorker': wrapCommand(setUseChatMessageParsingWorker),
14034
15557
  'Chat.setUseChatNetworkWorkerForRequests': wrapCommand(setUseChatNetworkWorkerForRequests),
15558
+ 'Chat.showComposerAttachmentPreviewOverlay': wrapCommand(showComposerAttachmentPreviewOverlay),
14035
15559
  'Chat.terminate': terminate,
14036
15560
  'Chat.useMockApi': wrapCommand(useMockApi)
14037
15561
  };
@@ -14044,7 +15568,7 @@ const initializeChatCoordinatorWorker = async () => {
14044
15568
  commandMap: {},
14045
15569
  send: sendMessagePortToChatCoordinatorWorker
14046
15570
  });
14047
- set$b(rpc);
15571
+ set$c(rpc);
14048
15572
  };
14049
15573
 
14050
15574
  const sendMessagePortToChatMathWorker = async port => {
@@ -14055,7 +15579,7 @@ const initializeChatMathWorker = async () => {
14055
15579
  commandMap: {},
14056
15580
  send: sendMessagePortToChatMathWorker
14057
15581
  });
14058
- set$a(rpc);
15582
+ set$b(rpc);
14059
15583
  };
14060
15584
 
14061
15585
  const send$2 = port => {
@@ -14066,7 +15590,7 @@ const initializeChatMessageParsingWorker = async () => {
14066
15590
  commandMap: {},
14067
15591
  send: send$2
14068
15592
  });
14069
- set$9(rpc);
15593
+ set$a(rpc);
14070
15594
  };
14071
15595
 
14072
15596
  const send$1 = port => {
@@ -14077,7 +15601,7 @@ const initializeChatNetworkWorker = async () => {
14077
15601
  commandMap: {},
14078
15602
  send: send$1
14079
15603
  });
14080
- set$8(rpc);
15604
+ set$9(rpc);
14081
15605
  };
14082
15606
 
14083
15607
  const sendMessagePortToChatStorageWorker = async port => {
@@ -14088,7 +15612,7 @@ const initializeChatStorageWorker = async () => {
14088
15612
  commandMap: {},
14089
15613
  send: sendMessagePortToChatStorageWorker
14090
15614
  });
14091
- set$7(rpc);
15615
+ set$8(rpc);
14092
15616
  };
14093
15617
 
14094
15618
  const send = port => {
@@ -14099,7 +15623,7 @@ const initializeChatToolWorker = async () => {
14099
15623
  commandMap: {},
14100
15624
  send
14101
15625
  });
14102
- set$6(rpc);
15626
+ set$7(rpc);
14103
15627
  };
14104
15628
 
14105
15629
  const sendMessagePortToClipBoardWorker = async port => {
@@ -14110,7 +15634,18 @@ const initializeClipBoardWorker = async () => {
14110
15634
  commandMap: {},
14111
15635
  send: sendMessagePortToClipBoardWorker
14112
15636
  });
14113
- set$5(rpc);
15637
+ set$6(rpc);
15638
+ };
15639
+
15640
+ const sendMessagePortToIconThemeWorker = async port => {
15641
+ await sendMessagePortToIconThemeWorker$1(port, 0);
15642
+ };
15643
+ const initializeIconThemeWorker = async () => {
15644
+ const rpc = await create$4({
15645
+ commandMap: {},
15646
+ send: sendMessagePortToIconThemeWorker
15647
+ });
15648
+ set$4(rpc);
14114
15649
  };
14115
15650
 
14116
15651
  const sendMessagePortToOpenerWorker = async port => {
@@ -14224,7 +15759,7 @@ const listen = async () => {
14224
15759
  commandMap: commandMap
14225
15760
  });
14226
15761
  set$2(rpc);
14227
- await Promise.all([initializeChatCoordinatorWorker(), initializeChatMathWorker(), initializeChatMessageParsingWorker(), initializeChatNetworkWorker(), initializeChatStorageWorker(), initializeChatToolWorker(), initializeClipBoardWorker(), initializeOpenerWorker(), initializeTextMeasurementWorker()]);
15762
+ await Promise.all([initializeChatCoordinatorWorker(), initializeChatMathWorker(), initializeChatMessageParsingWorker(), initializeChatNetworkWorker(), initializeChatStorageWorker(), initializeChatToolWorker(), initializeClipBoardWorker(), initializeOpenerWorker(), initializeIconThemeWorker(), initializeTextMeasurementWorker()]);
14228
15763
  };
14229
15764
 
14230
15765
  const main = async () => {