@lvce-editor/static-server 0.75.16 → 0.75.17

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 (1971) hide show
  1. package/config.json +1991 -1991
  2. package/package.json +1 -1
  3. package/static/{5a29bf2 → 51d77f9}/css/App.css +89 -89
  4. package/static/{5a29bf2 → 51d77f9}/css/parts/ChatSendArea.css +1 -0
  5. package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletChat.css +81 -0
  6. package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletDebugChat.css +6 -0
  7. package/static/{5a29bf2 → 51d77f9}/manifest.json +2 -2
  8. package/static/{5a29bf2 → 51d77f9}/packages/about-view-worker/dist/aboutWorkerMain.js +3 -3
  9. package/static/{5a29bf2 → 51d77f9}/packages/chat-debug-view/dist/chatDebugViewWorkerMain.js +354 -61
  10. package/static/51d77f9/packages/chat-network-worker/dist/chatNetworkWorkerMain.js +1084 -0
  11. package/static/{5a29bf2 → 51d77f9}/packages/chat-view/dist/chatViewWorkerMain.js +2592 -1402
  12. package/static/{5a29bf2 → 51d77f9}/packages/extension-host-worker/dist/extensionHostWorkerMain.js +3 -3
  13. package/static/{5a29bf2 → 51d77f9}/packages/renderer-process/dist/rendererProcessMain.js +14 -2
  14. package/static/{5a29bf2 → 51d77f9}/packages/renderer-process/package.json +1 -1
  15. package/static/{5a29bf2 → 51d77f9}/packages/renderer-worker/dist/rendererWorkerMain.js +4 -4
  16. package/static/{5a29bf2 → 51d77f9}/packages/test-worker/dist/testWorkerMain.js +16 -0
  17. package/static/index.html +4 -4
  18. package/static/5a29bf2/packages/chat-network-worker/dist/chatNetworkWorkerMain.js +0 -196
  19. /package/static/{5a29bf2 → 51d77f9}/config/colorTheme.json +0 -0
  20. /package/static/{5a29bf2 → 51d77f9}/config/defaultSettings.json +0 -0
  21. /package/static/{5a29bf2 → 51d77f9}/config/fileMap.json +0 -0
  22. /package/static/{5a29bf2 → 51d77f9}/config/webExtensions.json +0 -0
  23. /package/static/{5a29bf2 → 51d77f9}/css/parts/AdditionalDetails.css +0 -0
  24. /package/static/{5a29bf2 → 51d77f9}/css/parts/Animation.css +0 -0
  25. /package/static/{5a29bf2 → 51d77f9}/css/parts/BrowserScrollBar.css +0 -0
  26. /package/static/{5a29bf2 → 51d77f9}/css/parts/Category.css +0 -0
  27. /package/static/{5a29bf2 → 51d77f9}/css/parts/ChatHeader.css +0 -0
  28. /package/static/{5a29bf2 → 51d77f9}/css/parts/ChatTool.css +0 -0
  29. /package/static/{5a29bf2 → 51d77f9}/css/parts/DebugButtons.css +0 -0
  30. /package/static/{5a29bf2 → 51d77f9}/css/parts/DebugValue.css +0 -0
  31. /package/static/{5a29bf2 → 51d77f9}/css/parts/E2eTest.css +0 -0
  32. /package/static/{5a29bf2 → 51d77f9}/css/parts/E2eTests.css +0 -0
  33. /package/static/{5a29bf2 → 51d77f9}/css/parts/EditorHover.css +0 -0
  34. /package/static/{5a29bf2 → 51d77f9}/css/parts/EditorMessage.css +0 -0
  35. /package/static/{5a29bf2 → 51d77f9}/css/parts/FeatureContent.css +0 -0
  36. /package/static/{5a29bf2 → 51d77f9}/css/parts/Features.css +0 -0
  37. /package/static/{5a29bf2 → 51d77f9}/css/parts/ImagePreview.css +0 -0
  38. /package/static/{5a29bf2 → 51d77f9}/css/parts/InlineDiffEditor.css +0 -0
  39. /package/static/{5a29bf2 → 51d77f9}/css/parts/InputBadge.css +0 -0
  40. /package/static/{5a29bf2 → 51d77f9}/css/parts/Key.css +0 -0
  41. /package/static/{5a29bf2 → 51d77f9}/css/parts/KeyBindingsHeader.css +0 -0
  42. /package/static/{5a29bf2 → 51d77f9}/css/parts/KeyBindingsTable.css +0 -0
  43. /package/static/{5a29bf2 → 51d77f9}/css/parts/LegacyDialog.css +0 -0
  44. /package/static/{5a29bf2 → 51d77f9}/css/parts/Markdown.css +0 -0
  45. /package/static/{5a29bf2 → 51d77f9}/css/parts/Message.css +0 -0
  46. /package/static/{5a29bf2 → 51d77f9}/css/parts/Preview.css +0 -0
  47. /package/static/{5a29bf2 → 51d77f9}/css/parts/ScrollToTop.css +0 -0
  48. /package/static/{5a29bf2 → 51d77f9}/css/parts/SearchToggleButton.css +0 -0
  49. /package/static/{5a29bf2 → 51d77f9}/css/parts/Select.css +0 -0
  50. /package/static/{5a29bf2 → 51d77f9}/css/parts/SettingsHeader.css +0 -0
  51. /package/static/{5a29bf2 → 51d77f9}/css/parts/SettingsItems.css +0 -0
  52. /package/static/{5a29bf2 → 51d77f9}/css/parts/SettingsSideBar.css +0 -0
  53. /package/static/{5a29bf2 → 51d77f9}/css/parts/Table.css +0 -0
  54. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletAbout.css +0 -0
  55. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletBrowserViewOverview.css +0 -0
  56. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletDebugConsole.css +0 -0
  57. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletDefineKeyBinding.css +0 -0
  58. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletDialog.css +0 -0
  59. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletDiffEditor.css +0 -0
  60. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletEditorWidgetError.css +0 -0
  61. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletExtensionDetail.css +0 -0
  62. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletExtensionDetailHeader.css +0 -0
  63. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletExtensionDetailTabs.css +0 -0
  64. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletExtensions.css +0 -0
  65. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletIframeInspector.css +0 -0
  66. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletKeyBindings.css +0 -0
  67. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletLanguageModels.css +0 -0
  68. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletMedia.css +0 -0
  69. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletOutput.css +0 -0
  70. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletPanel.css +0 -0
  71. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletPanelTabs.css +0 -0
  72. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletPdf.css +0 -0
  73. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletProblems.css +0 -0
  74. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletReferences.css +0 -0
  75. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletRunAndDebug.css +0 -0
  76. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletScreenCapture.css +0 -0
  77. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletSearch.css +0 -0
  78. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletSettings.css +0 -0
  79. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletSimpleBrowser.css +0 -0
  80. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletSourceControl.css +0 -0
  81. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletStorage.css +0 -0
  82. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletTerminal.css +0 -0
  83. /package/static/{5a29bf2 → 51d77f9}/css/parts/ViewletTerminalTabs.css +0 -0
  84. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-bat/README.md +0 -0
  85. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-bat/extension.json +0 -0
  86. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-bat/languageConfiguration.json +0 -0
  87. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-bat/src/tokenizeBat.js +0 -0
  88. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-c/README.md +0 -0
  89. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-c/extension.json +0 -0
  90. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-c/src/tokenizeC.js +0 -0
  91. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-coffeescript/README.md +0 -0
  92. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-coffeescript/extension.json +0 -0
  93. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-coffeescript/src/tokenizeCoffeeScript.js +0 -0
  94. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-cpp/README.md +0 -0
  95. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-cpp/extension.json +0 -0
  96. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-cpp/languageConfiguration.json +0 -0
  97. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-cpp/src/tokenizeCpp.js +0 -0
  98. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-cson/README.md +0 -0
  99. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-cson/extension.json +0 -0
  100. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-cson/languageConfiguration.json +0 -0
  101. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-cson/src/tokenizeCson.js +0 -0
  102. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-css/README.md +0 -0
  103. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-css/extension.json +0 -0
  104. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-css/languageConfiguration.json +0 -0
  105. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-css/src/tokenizeCss.js +0 -0
  106. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-dart/README.md +0 -0
  107. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-dart/extension.json +0 -0
  108. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-dart/src/tokenizeDart.js +0 -0
  109. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-desktop/README.md +0 -0
  110. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-desktop/extension.json +0 -0
  111. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-desktop/src/tokenizeDesktop.js +0 -0
  112. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-docker/README.md +0 -0
  113. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-docker/extension.json +0 -0
  114. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-docker/src/tokenizeDockerfile.js +0 -0
  115. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-dotenv/README.md +0 -0
  116. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-dotenv/extension.json +0 -0
  117. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-dotenv/src/tokenizeDotenv.js +0 -0
  118. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-editorconfig/README.md +0 -0
  119. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-editorconfig/extension.json +0 -0
  120. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-editorconfig/src/tokenizeEditorConfig.js +0 -0
  121. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-elixir/README.md +0 -0
  122. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-elixir/extension.json +0 -0
  123. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-elixir/src/tokenizeElixir.js +0 -0
  124. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-elm/README.md +0 -0
  125. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-elm/extension.json +0 -0
  126. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-elm/src/tokenizeElm.js +0 -0
  127. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-gitattributes/README.md +0 -0
  128. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-gitattributes/extension.json +0 -0
  129. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-gitattributes/src/tokenizeGitAttributes.js +0 -0
  130. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-gn/README.md +0 -0
  131. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-gn/extension.json +0 -0
  132. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-gn/src/tokenizeGn.js +0 -0
  133. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-go/README.md +0 -0
  134. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-go/extension.json +0 -0
  135. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-go/src/tokenizeGo.js +0 -0
  136. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-graphql/README.md +0 -0
  137. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-graphql/extension.json +0 -0
  138. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-graphql/src/tokenizeGraphql.js +0 -0
  139. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-html/README.md +0 -0
  140. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-html/extension.json +0 -0
  141. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-html/languageConfiguration.json +0 -0
  142. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-html/src/tokenizeHtml.js +0 -0
  143. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-java/README.md +0 -0
  144. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-java/extension.json +0 -0
  145. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-java/languageConfiguration.json +0 -0
  146. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-java/src/tokenizeJava.js +0 -0
  147. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-javascript/README.md +0 -0
  148. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-javascript/extension.json +0 -0
  149. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-javascript/languageConfiguration.json +0 -0
  150. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-javascript/src/tokenizeJavaScript.js +0 -0
  151. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-json/README.md +0 -0
  152. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-json/extension.json +0 -0
  153. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-json/src/tokenizeJson.js +0 -0
  154. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-json5/README.md +0 -0
  155. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-json5/extension.json +0 -0
  156. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-json5/src/tokenizeJson5.js +0 -0
  157. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-jsx/README.md +0 -0
  158. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-jsx/extension.json +0 -0
  159. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-jsx/src/tokenizeJsx.js +0 -0
  160. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-julia/README.md +0 -0
  161. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-julia/extension.json +0 -0
  162. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-julia/src/tokenizeJulia.js +0 -0
  163. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-kotlin/README.md +0 -0
  164. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-kotlin/extension.json +0 -0
  165. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-kotlin/src/tokenizeKotlin.js +0 -0
  166. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-less/LICENSE +0 -0
  167. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-less/README.md +0 -0
  168. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-less/extension.json +0 -0
  169. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-less/languageConfiguration.json +0 -0
  170. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-less/src/tokenizeLess.js +0 -0
  171. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-markdown/README.md +0 -0
  172. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-markdown/extension.json +0 -0
  173. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-markdown/src/tokenizeMarkdown.js +0 -0
  174. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-mdx/README.md +0 -0
  175. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-mdx/extension.json +0 -0
  176. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-mdx/src/tokenizeMdx.js +0 -0
  177. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-nix/README.md +0 -0
  178. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-nix/extension.json +0 -0
  179. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-nix/languageConfiguration.json +0 -0
  180. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-nix/src/tokenizeNix.js +0 -0
  181. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-nvmrc/README.md +0 -0
  182. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-nvmrc/extension.json +0 -0
  183. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-nvmrc/src/tokenizeNvmrc.js +0 -0
  184. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-perl/README.md +0 -0
  185. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-perl/extension.json +0 -0
  186. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-perl/src/tokenizePerl.js +0 -0
  187. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-plaintext/README.md +0 -0
  188. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-plaintext/extension.json +0 -0
  189. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-plaintext/src/tokenizePlaintext.js +0 -0
  190. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-powershell/README.md +0 -0
  191. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-powershell/extension.json +0 -0
  192. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-powershell/src/tokenizePowershell.js +0 -0
  193. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-python/README.md +0 -0
  194. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-python/extension.json +0 -0
  195. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-python/languageConfiguration.json +0 -0
  196. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-python/src/tokenizePython.js +0 -0
  197. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-r/README.md +0 -0
  198. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-r/extension.json +0 -0
  199. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-r/src/tokenizeR.js +0 -0
  200. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-ruby/README.md +0 -0
  201. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-ruby/extension.json +0 -0
  202. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-ruby/src/tokenizeRuby.js +0 -0
  203. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-rust/LICENSE +0 -0
  204. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-rust/README.md +0 -0
  205. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-rust/extension.json +0 -0
  206. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-rust/languageConfiguration.json +0 -0
  207. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-rust/src/tokenizeRust.js +0 -0
  208. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-scss/README.md +0 -0
  209. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-scss/extension.json +0 -0
  210. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-scss/languageConfiguration.json +0 -0
  211. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-scss/src/tokenizeScss.js +0 -0
  212. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-shellscript/README.md +0 -0
  213. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-shellscript/extension.json +0 -0
  214. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-shellscript/src/tokenizeShellScript.js +0 -0
  215. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-svelte/README.md +0 -0
  216. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-svelte/extension.json +0 -0
  217. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-svelte/src/tokenizeSvelte.js +0 -0
  218. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-terraform/README.md +0 -0
  219. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-terraform/extension.json +0 -0
  220. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-terraform/src/tokenizeTerraform.js +0 -0
  221. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-toml/README.md +0 -0
  222. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-toml/extension.json +0 -0
  223. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-toml/src/tokenizeToml.js +0 -0
  224. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-typescript/README.md +0 -0
  225. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-typescript/extension.json +0 -0
  226. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-typescript/languageConfiguration.json +0 -0
  227. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-typescript/src/tokenizeTypeScript.js +0 -0
  228. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-vue/README.md +0 -0
  229. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-vue/extension.json +0 -0
  230. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-vue/src/tokenizeVue.js +0 -0
  231. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-wgsl/README.md +0 -0
  232. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-wgsl/extension.json +0 -0
  233. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-wgsl/languageConfiguration.json +0 -0
  234. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-wgsl/src/tokenizeWgsl.js +0 -0
  235. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-xml/README.md +0 -0
  236. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-xml/extension.json +0 -0
  237. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-xml/src/tokenizeXml.js +0 -0
  238. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-yaml/README.md +0 -0
  239. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-yaml/extension.json +0 -0
  240. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.language-basics-yaml/src/tokenizeYaml.js +0 -0
  241. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-atom-one-dark/README.md +0 -0
  242. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-atom-one-dark/color-theme.json +0 -0
  243. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-atom-one-dark/extension.json +0 -0
  244. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-atom-one-dark/images/demo.png +0 -0
  245. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-ayu/README.md +0 -0
  246. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-ayu/color-theme.json +0 -0
  247. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-ayu/extension.json +0 -0
  248. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-ayu/images/demo.png +0 -0
  249. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-cobalt2/README.md +0 -0
  250. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-cobalt2/color-theme.json +0 -0
  251. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-cobalt2/extension.json +0 -0
  252. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-cobalt2/images/demo.png +0 -0
  253. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-cobalt2/images/logo.png +0 -0
  254. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-gruvbox/README.md +0 -0
  255. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-gruvbox/color-theme.json +0 -0
  256. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-gruvbox/extension.json +0 -0
  257. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-gruvbox/images/demo.png +0 -0
  258. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-high-contrast/README.md +0 -0
  259. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-high-contrast/color-theme.json +0 -0
  260. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-high-contrast/extension.json +0 -0
  261. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-material/README.md +0 -0
  262. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-material/color-theme.json +0 -0
  263. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-material/extension.json +0 -0
  264. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-monokai/README.md +0 -0
  265. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-monokai/color-theme.json +0 -0
  266. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-monokai/extension.json +0 -0
  267. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-noctis-uva/README.md +0 -0
  268. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-noctis-uva/color-theme.json +0 -0
  269. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-noctis-uva/extension.json +0 -0
  270. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-noctis-uva/images/demo.png +0 -0
  271. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-palenight/README.md +0 -0
  272. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-palenight/color-theme.json +0 -0
  273. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-palenight/extension.json +0 -0
  274. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-palenight/images/demo.png +0 -0
  275. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-slime/README.md +0 -0
  276. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-slime/color-theme.json +0 -0
  277. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-slime/extension.json +0 -0
  278. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.theme-slime/icon.png +0 -0
  279. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/README.md +0 -0
  280. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/extension.json +0 -0
  281. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icon-theme.json +0 -0
  282. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icon.png +0 -0
  283. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/default_file.svg +0 -0
  284. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/default_folder.svg +0 -0
  285. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/default_folder_opened.svg +0 -0
  286. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/default_root_folder.svg +0 -0
  287. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/default_root_folder_opened.svg +0 -0
  288. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_access.svg +0 -0
  289. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_access2.svg +0 -0
  290. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_actionscript.svg +0 -0
  291. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_actionscript2.svg +0 -0
  292. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ada.svg +0 -0
  293. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_advpl.svg +0 -0
  294. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_affectscript.svg +0 -0
  295. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_affinity.svg +0 -0
  296. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_affinitydesigner.svg +0 -0
  297. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_affinityphoto.svg +0 -0
  298. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_affinitypublisher.svg +0 -0
  299. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_agda.svg +0 -0
  300. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_agents.svg +0 -0
  301. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ai.svg +0 -0
  302. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ai2.svg +0 -0
  303. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_al.svg +0 -0
  304. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_al_dal.svg +0 -0
  305. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_alchemy.svg +0 -0
  306. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_allcontributors.svg +0 -0
  307. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_alloy.svg +0 -0
  308. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_allure.svg +0 -0
  309. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_angular.svg +0 -0
  310. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ansible.svg +0 -0
  311. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_antlers_html.svg +0 -0
  312. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_antlr.svg +0 -0
  313. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_anyscript.svg +0 -0
  314. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_apache.svg +0 -0
  315. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_apex.svg +0 -0
  316. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_api_extractor.svg +0 -0
  317. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_apib.svg +0 -0
  318. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_apib2.svg +0 -0
  319. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_apl.svg +0 -0
  320. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_applescript.svg +0 -0
  321. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_appscript.svg +0 -0
  322. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_appsemble.svg +0 -0
  323. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_appveyor.svg +0 -0
  324. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_arduino.svg +0 -0
  325. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_asciidoc.svg +0 -0
  326. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_aseprite.svg +0 -0
  327. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_asp.svg +0 -0
  328. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_aspx.svg +0 -0
  329. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_assembly.svg +0 -0
  330. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_assembly_script.svg +0 -0
  331. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_astro.svg +0 -0
  332. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_astroconfig.svg +0 -0
  333. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_atom.svg +0 -0
  334. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ats.svg +0 -0
  335. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_attw.svg +0 -0
  336. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_audio.svg +0 -0
  337. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_aurelia.svg +0 -0
  338. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_autohotkey.svg +0 -0
  339. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_autoit.svg +0 -0
  340. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_avif.svg +0 -0
  341. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_avro.svg +0 -0
  342. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_awk.svg +0 -0
  343. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_aws.svg +0 -0
  344. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_azure.svg +0 -0
  345. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_azurepipelines.svg +0 -0
  346. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_babel.svg +0 -0
  347. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_babel2.svg +0 -0
  348. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bak.svg +0 -0
  349. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ballerina.svg +0 -0
  350. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bat.svg +0 -0
  351. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bats.svg +0 -0
  352. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bazaar.svg +0 -0
  353. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bazel.svg +0 -0
  354. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bazel_ignore.svg +0 -0
  355. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bazel_version.svg +0 -0
  356. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_befunge.svg +0 -0
  357. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bicep.svg +0 -0
  358. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_biml.svg +0 -0
  359. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_binary.svg +0 -0
  360. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_biome.svg +0 -0
  361. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bitbucketpipeline.svg +0 -0
  362. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bithound.svg +0 -0
  363. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_blade.svg +0 -0
  364. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_blender.svg +0 -0
  365. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_blitzbasic.svg +0 -0
  366. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bolt.svg +0 -0
  367. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bosque.svg +0 -0
  368. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bower.svg +0 -0
  369. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bower2.svg +0 -0
  370. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_browserslist.svg +0 -0
  371. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bruno.svg +0 -0
  372. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_buckbuild.svg +0 -0
  373. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_buf.svg +0 -0
  374. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bun.svg +0 -0
  375. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bundlemon.svg +0 -0
  376. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bundler.svg +0 -0
  377. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_bunfig.svg +0 -0
  378. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_c.svg +0 -0
  379. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_c2.svg +0 -0
  380. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_c3.svg +0 -0
  381. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_c_al.svg +0 -0
  382. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cabal.svg +0 -0
  383. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_caddy.svg +0 -0
  384. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cake.svg +0 -0
  385. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cakephp.svg +0 -0
  386. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_capacitor.svg +0 -0
  387. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_capnp.svg +0 -0
  388. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cargo.svg +0 -0
  389. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_casc.svg +0 -0
  390. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cddl.svg +0 -0
  391. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cert.svg +0 -0
  392. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ceylon.svg +0 -0
  393. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cf.svg +0 -0
  394. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cf2.svg +0 -0
  395. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cfc.svg +0 -0
  396. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cfc2.svg +0 -0
  397. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cfm.svg +0 -0
  398. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cfm2.svg +0 -0
  399. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_changie.svg +0 -0
  400. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cheader.svg +0 -0
  401. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_chef.svg +0 -0
  402. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_chef_cookbook.svg +0 -0
  403. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_circleci.svg +0 -0
  404. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_circom.svg +0 -0
  405. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_class.svg +0 -0
  406. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_claude.svg +0 -0
  407. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_clojure.svg +0 -0
  408. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_clojurescript.svg +0 -0
  409. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cloudflare.svg +0 -0
  410. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cloudfoundry.svg +0 -0
  411. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cmake.svg +0 -0
  412. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cobol.svg +0 -0
  413. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_codacy.svg +0 -0
  414. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_codeclimate.svg +0 -0
  415. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_codecov.svg +0 -0
  416. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_codekit.svg +0 -0
  417. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_codemagic.svg +0 -0
  418. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_codeowners.svg +0 -0
  419. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_codeql.svg +0 -0
  420. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_coderabbit.svg +0 -0
  421. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_coffeelint.svg +0 -0
  422. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_coffeescript.svg +0 -0
  423. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_commitizen.svg +0 -0
  424. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_commitlint.svg +0 -0
  425. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_compass.svg +0 -0
  426. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_composer.svg +0 -0
  427. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_conan.svg +0 -0
  428. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_conda.svg +0 -0
  429. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_config.svg +0 -0
  430. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_confluence.svg +0 -0
  431. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_copilot.svg +0 -0
  432. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_coverage.svg +0 -0
  433. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_coveralls.svg +0 -0
  434. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cpp.svg +0 -0
  435. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cpp2.svg +0 -0
  436. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cpp3.svg +0 -0
  437. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cppheader.svg +0 -0
  438. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_craco.svg +0 -0
  439. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_crowdin.svg +0 -0
  440. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_crystal.svg +0 -0
  441. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_csharp.svg +0 -0
  442. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_csharp2.svg +0 -0
  443. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cspell.svg +0 -0
  444. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_csproj.svg +0 -0
  445. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_css.svg +0 -0
  446. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_css2.svg +0 -0
  447. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_css2map.svg +0 -0
  448. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_csscomb.svg +0 -0
  449. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_csslint.svg +0 -0
  450. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cssmap.svg +0 -0
  451. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cucumber.svg +0 -0
  452. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cuda.svg +0 -0
  453. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cursorrules.svg +0 -0
  454. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cvs.svg +0 -0
  455. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cypress.svg +0 -0
  456. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cypress_spec.svg +0 -0
  457. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_cython.svg +0 -0
  458. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dal.svg +0 -0
  459. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_darcs.svg +0 -0
  460. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dartlang.svg +0 -0
  461. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dartlang_generated.svg +0 -0
  462. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dartlang_ignore.svg +0 -0
  463. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_datadog.svg +0 -0
  464. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_db.svg +0 -0
  465. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_debian.svg +0 -0
  466. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_delphi.svg +0 -0
  467. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_deno.svg +0 -0
  468. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_denoify.svg +0 -0
  469. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dependabot.svg +0 -0
  470. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dependencies.svg +0 -0
  471. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_design_tokens.svg +0 -0
  472. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_devcontainer.svg +0 -0
  473. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_devvit.svg +0 -0
  474. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dhall.svg +0 -0
  475. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_diff.svg +0 -0
  476. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_django.svg +0 -0
  477. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dlang.svg +0 -0
  478. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_docker.svg +0 -0
  479. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_docker2.svg +0 -0
  480. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dockertest.svg +0 -0
  481. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dockertest2.svg +0 -0
  482. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_docpad.svg +0 -0
  483. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_docusaurus.svg +0 -0
  484. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_docz.svg +0 -0
  485. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dojo.svg +0 -0
  486. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_doppler.svg +0 -0
  487. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dotenv.svg +0 -0
  488. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dotjs.svg +0 -0
  489. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_doxygen.svg +0 -0
  490. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_drawio.svg +0 -0
  491. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_drone.svg +0 -0
  492. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_drools.svg +0 -0
  493. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dtd.svg +0 -0
  494. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dune.svg +0 -0
  495. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dustjs.svg +0 -0
  496. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dvc.svg +0 -0
  497. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_dylan.svg +0 -0
  498. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_earthly.svg +0 -0
  499. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_eas-metadata.svg +0 -0
  500. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_edge.svg +0 -0
  501. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_edge2.svg +0 -0
  502. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_editorconfig.svg +0 -0
  503. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_eex.svg +0 -0
  504. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ejs.svg +0 -0
  505. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_elastic.svg +0 -0
  506. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_elasticbeanstalk.svg +0 -0
  507. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_electron.svg +0 -0
  508. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_eleventy.svg +0 -0
  509. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_eleventy2.svg +0 -0
  510. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_elixir.svg +0 -0
  511. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_elm.svg +0 -0
  512. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_elm2.svg +0 -0
  513. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_emacs.svg +0 -0
  514. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ember.svg +0 -0
  515. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ensime.svg +0 -0
  516. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_eps.svg +0 -0
  517. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_epub.svg +0 -0
  518. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_erb.svg +0 -0
  519. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_erlang.svg +0 -0
  520. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_erlang2.svg +0 -0
  521. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_esbuild.svg +0 -0
  522. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_eslint.svg +0 -0
  523. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_eslint2.svg +0 -0
  524. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_esphome.svg +0 -0
  525. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_excalidraw.svg +0 -0
  526. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_excel.svg +0 -0
  527. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_excel2.svg +0 -0
  528. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_expo.svg +0 -0
  529. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_falcon.svg +0 -0
  530. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_fantasticon.svg +0 -0
  531. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_fastly.svg +0 -0
  532. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_fauna.svg +0 -0
  533. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_favicon.svg +0 -0
  534. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_fbx.svg +0 -0
  535. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_firebase.svg +0 -0
  536. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_firebasehosting.svg +0 -0
  537. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_firebasestorage.svg +0 -0
  538. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_firestore.svg +0 -0
  539. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_fitbit.svg +0 -0
  540. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_fla.svg +0 -0
  541. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_flareact.svg +0 -0
  542. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_flash.svg +0 -0
  543. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_floobits.svg +0 -0
  544. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_flow.svg +0 -0
  545. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_flutter.svg +0 -0
  546. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_flutter_package.svg +0 -0
  547. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_flyio.svg +0 -0
  548. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_font.svg +0 -0
  549. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_formkit.svg +0 -0
  550. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_fortran.svg +0 -0
  551. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_fossa.svg +0 -0
  552. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_fossil.svg +0 -0
  553. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_freemarker.svg +0 -0
  554. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_frontcommerce.svg +0 -0
  555. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_fsharp.svg +0 -0
  556. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_fsharp2.svg +0 -0
  557. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_fsproj.svg +0 -0
  558. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_fthtml.svg +0 -0
  559. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_funding.svg +0 -0
  560. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_fusebox.svg +0 -0
  561. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_galen.svg +0 -0
  562. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_galen2.svg +0 -0
  563. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gamemaker.svg +0 -0
  564. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gamemaker2.svg +0 -0
  565. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gamemaker81.svg +0 -0
  566. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gatsby.svg +0 -0
  567. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gcloud.svg +0 -0
  568. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gcode.svg +0 -0
  569. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gdscript.svg +0 -0
  570. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gduid.svg +0 -0
  571. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gemini.svg +0 -0
  572. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_genstat.svg +0 -0
  573. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_geojson.svg +0 -0
  574. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gimp.svg +0 -0
  575. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_git.svg +0 -0
  576. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_git2.svg +0 -0
  577. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gitlab.svg +0 -0
  578. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gitpod.svg +0 -0
  579. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gleam.svg +0 -0
  580. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gleamconfig.svg +0 -0
  581. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_glide.svg +0 -0
  582. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_glimmer.svg +0 -0
  583. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_glitter.svg +0 -0
  584. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_glsl.svg +0 -0
  585. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gltf.svg +0 -0
  586. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_glyphs.svg +0 -0
  587. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gnu.svg +0 -0
  588. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gnuplot.svg +0 -0
  589. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_go.svg +0 -0
  590. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_go_aqua.svg +0 -0
  591. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_go_black.svg +0 -0
  592. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_go_fuchsia.svg +0 -0
  593. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_go_gopher.svg +0 -0
  594. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_go_lightblue.svg +0 -0
  595. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_go_package.svg +0 -0
  596. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_go_white.svg +0 -0
  597. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_go_work.svg +0 -0
  598. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_go_yellow.svg +0 -0
  599. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_goctl.svg +0 -0
  600. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_godot.svg +0 -0
  601. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gpg.svg +0 -0
  602. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gradle.svg +0 -0
  603. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gradle2.svg +0 -0
  604. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_grain.svg +0 -0
  605. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_graphql.svg +0 -0
  606. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_graphql_config.svg +0 -0
  607. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_graphviz.svg +0 -0
  608. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_greenkeeper.svg +0 -0
  609. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gridsome.svg +0 -0
  610. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_grit.svg +0 -0
  611. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_groovy.svg +0 -0
  612. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_groovy2.svg +0 -0
  613. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_grunt.svg +0 -0
  614. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_gulp.svg +0 -0
  615. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_haml.svg +0 -0
  616. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_handlebars.svg +0 -0
  617. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_handlebars2.svg +0 -0
  618. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_harbour.svg +0 -0
  619. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_hardhat.svg +0 -0
  620. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_hashicorp.svg +0 -0
  621. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_haskell.svg +0 -0
  622. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_haskell2.svg +0 -0
  623. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_haxe.svg +0 -0
  624. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_haxecheckstyle.svg +0 -0
  625. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_haxedevelop.svg +0 -0
  626. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_helix.svg +0 -0
  627. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_helm.svg +0 -0
  628. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_histoire.svg +0 -0
  629. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_hjson.svg +0 -0
  630. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_hlsl.svg +0 -0
  631. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_homeassistant.svg +0 -0
  632. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_horusec.svg +0 -0
  633. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_host.svg +0 -0
  634. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_html.svg +0 -0
  635. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_htmlhint.svg +0 -0
  636. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_htmlvalidate.svg +0 -0
  637. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_http.svg +0 -0
  638. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_hugo.svg +0 -0
  639. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_humanstxt.svg +0 -0
  640. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_hunspell.svg +0 -0
  641. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_husky.svg +0 -0
  642. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_hy.svg +0 -0
  643. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_hygen.svg +0 -0
  644. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_hypr.svg +0 -0
  645. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_icl.svg +0 -0
  646. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_idris.svg +0 -0
  647. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_idrisbin.svg +0 -0
  648. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_idrispkg.svg +0 -0
  649. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_image.svg +0 -0
  650. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_imba.svg +0 -0
  651. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_inc.svg +0 -0
  652. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_infopath.svg +0 -0
  653. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_informix.svg +0 -0
  654. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ini.svg +0 -0
  655. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ink.svg +0 -0
  656. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_innosetup.svg +0 -0
  657. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_io.svg +0 -0
  658. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_iodine.svg +0 -0
  659. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ionic.svg +0 -0
  660. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jake.svg +0 -0
  661. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_janet.svg +0 -0
  662. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jar.svg +0 -0
  663. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jasmine.svg +0 -0
  664. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_java.svg +0 -0
  665. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jbuilder.svg +0 -0
  666. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jekyll.svg +0 -0
  667. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jenkins.svg +0 -0
  668. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jest.svg +0 -0
  669. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jest_snapshot.svg +0 -0
  670. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jetbrains.svg +0 -0
  671. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jinja.svg +0 -0
  672. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jpm.svg +0 -0
  673. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_js.svg +0 -0
  674. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_js_official.svg +0 -0
  675. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jsbeautify.svg +0 -0
  676. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jsconfig.svg +0 -0
  677. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jscpd.svg +0 -0
  678. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jshint.svg +0 -0
  679. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jsmap.svg +0 -0
  680. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_json.svg +0 -0
  681. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_json2.svg +0 -0
  682. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_json5.svg +0 -0
  683. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_json_official.svg +0 -0
  684. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_json_schema.svg +0 -0
  685. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jsonld.svg +0 -0
  686. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jsonnet.svg +0 -0
  687. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jsp.svg +0 -0
  688. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jsr.svg +0 -0
  689. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jss.svg +0 -0
  690. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_juice.svg +0 -0
  691. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_julia.svg +0 -0
  692. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_julia2.svg +0 -0
  693. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_jupyter.svg +0 -0
  694. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_just.svg +0 -0
  695. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_k.svg +0 -0
  696. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_karma.svg +0 -0
  697. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_key.svg +0 -0
  698. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_kitchenci.svg +0 -0
  699. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_kite.svg +0 -0
  700. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_kivy.svg +0 -0
  701. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_knip.svg +0 -0
  702. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_kos.svg +0 -0
  703. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_kotlin.svg +0 -0
  704. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_kusto.svg +0 -0
  705. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_language_configuration.svg +0 -0
  706. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lark.svg +0 -0
  707. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_latino.svg +0 -0
  708. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_layout.svg +0 -0
  709. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lean.svg +0 -0
  710. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_leanconfig.svg +0 -0
  711. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lefthook.svg +0 -0
  712. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lerna.svg +0 -0
  713. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_less.svg +0 -0
  714. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lex.svg +0 -0
  715. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_liara.svg +0 -0
  716. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_base.svg +0 -0
  717. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_calc.svg +0 -0
  718. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_draw.svg +0 -0
  719. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_impress.svg +0 -0
  720. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_math.svg +0 -0
  721. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_libreoffice_writer.svg +0 -0
  722. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_license.svg +0 -0
  723. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_licensebat.svg +0 -0
  724. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_actionscript2.svg +0 -0
  725. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_ada.svg +0 -0
  726. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_agda.svg +0 -0
  727. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_agents.svg +0 -0
  728. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_apl.svg +0 -0
  729. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_astro.svg +0 -0
  730. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_astroconfig.svg +0 -0
  731. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_babel.svg +0 -0
  732. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_babel2.svg +0 -0
  733. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_cabal.svg +0 -0
  734. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_circleci.svg +0 -0
  735. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_cloudfoundry.svg +0 -0
  736. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_codacy.svg +0 -0
  737. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_codeclimate.svg +0 -0
  738. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_codeowners.svg +0 -0
  739. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_config.svg +0 -0
  740. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_copilot.svg +0 -0
  741. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_crystal.svg +0 -0
  742. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_cypress.svg +0 -0
  743. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_cypress_spec.svg +0 -0
  744. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_db.svg +0 -0
  745. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_deno.svg +0 -0
  746. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_dhall.svg +0 -0
  747. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_docpad.svg +0 -0
  748. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_drone.svg +0 -0
  749. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_eas-metadata.svg +0 -0
  750. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_eleventy.svg +0 -0
  751. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_eleventy2.svg +0 -0
  752. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_esphome.svg +0 -0
  753. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_expo.svg +0 -0
  754. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_firebasehosting.svg +0 -0
  755. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_fla.svg +0 -0
  756. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_font.svg +0 -0
  757. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_gamemaker2.svg +0 -0
  758. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_gradle.svg +0 -0
  759. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_hashicorp.svg +0 -0
  760. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_hjson.svg +0 -0
  761. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_ini.svg +0 -0
  762. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_io.svg +0 -0
  763. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_js.svg +0 -0
  764. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_jsconfig.svg +0 -0
  765. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_jsmap.svg +0 -0
  766. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_json.svg +0 -0
  767. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_json5.svg +0 -0
  768. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_json_schema.svg +0 -0
  769. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_jsonld.svg +0 -0
  770. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_kite.svg +0 -0
  771. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_lark.svg +0 -0
  772. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_lean.svg +0 -0
  773. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_leanconfig.svg +0 -0
  774. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_lerna.svg +0 -0
  775. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_mailing.svg +0 -0
  776. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_markuplint.svg +0 -0
  777. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_mcp.svg +0 -0
  778. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_mdx-components.svg +0 -0
  779. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_mdx.svg +0 -0
  780. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_mlang.svg +0 -0
  781. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_mustache.svg +0 -0
  782. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_mypy.svg +0 -0
  783. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_neo4j.svg +0 -0
  784. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_netlify.svg +0 -0
  785. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_next.svg +0 -0
  786. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_nim.svg +0 -0
  787. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_nx.svg +0 -0
  788. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_objidconfig.svg +0 -0
  789. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_openHAB.svg +0 -0
  790. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_packship.svg +0 -0
  791. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_pcl.svg +0 -0
  792. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_pnpm.svg +0 -0
  793. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_prettier.svg +0 -0
  794. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_prisma.svg +0 -0
  795. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_purescript.svg +0 -0
  796. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_quasar.svg +0 -0
  797. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_raku.svg +0 -0
  798. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_razzle.svg +0 -0
  799. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_reactrouter.svg +0 -0
  800. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_rehype.svg +0 -0
  801. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_remark.svg +0 -0
  802. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_replit.svg +0 -0
  803. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_retext.svg +0 -0
  804. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_rome.svg +0 -0
  805. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_rubocop.svg +0 -0
  806. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_rust.svg +0 -0
  807. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_rust_toolchain.svg +0 -0
  808. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_safetensors.svg +0 -0
  809. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_shadcn.svg +0 -0
  810. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_shaderlab.svg +0 -0
  811. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_solidity.svg +0 -0
  812. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_spin.svg +0 -0
  813. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_stylelint.svg +0 -0
  814. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_stylus.svg +0 -0
  815. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_symfony.svg +0 -0
  816. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_systemd.svg +0 -0
  817. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_systemverilog.svg +0 -0
  818. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_testcafe.svg +0 -0
  819. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_testjs.svg +0 -0
  820. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_tex.svg +0 -0
  821. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_tm.svg +0 -0
  822. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_tmux.svg +0 -0
  823. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_todo.svg +0 -0
  824. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_toit.svg +0 -0
  825. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_toml.svg +0 -0
  826. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_toon.svg +0 -0
  827. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_tree.svg +0 -0
  828. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_turbo.svg +0 -0
  829. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_unibeautify.svg +0 -0
  830. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_vash.svg +0 -0
  831. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_vercel.svg +0 -0
  832. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_vsix.svg +0 -0
  833. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_vsixmanifest.svg +0 -0
  834. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_xfl.svg +0 -0
  835. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_xorg.svg +0 -0
  836. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_yaml.svg +0 -0
  837. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_yaml_official.svg +0 -0
  838. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_light_zeit.svg +0 -0
  839. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lighthouse.svg +0 -0
  840. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lilypond.svg +0 -0
  841. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lime.svg +0 -0
  842. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lintstagedrc.svg +0 -0
  843. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_liquid.svg +0 -0
  844. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lisp.svg +0 -0
  845. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_livescript.svg +0 -0
  846. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lnk.svg +0 -0
  847. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_locale.svg +0 -0
  848. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_log.svg +0 -0
  849. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lolcode.svg +0 -0
  850. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lsl.svg +0 -0
  851. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lua.svg +0 -0
  852. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_luau.svg +0 -0
  853. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_lync.svg +0 -0
  854. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mailing.svg +0 -0
  855. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_makefile.svg +0 -0
  856. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_manifest.svg +0 -0
  857. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_manifest_bak.svg +0 -0
  858. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_manifest_skip.svg +0 -0
  859. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_map.svg +0 -0
  860. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mariadb.svg +0 -0
  861. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_markdown.svg +0 -0
  862. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_markdownlint.svg +0 -0
  863. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_markdownlint_ignore.svg +0 -0
  864. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_marko.svg +0 -0
  865. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_markojs.svg +0 -0
  866. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_markuplint.svg +0 -0
  867. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_master-co.svg +0 -0
  868. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_matlab.svg +0 -0
  869. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_maven.svg +0 -0
  870. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_maxscript.svg +0 -0
  871. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_maya.svg +0 -0
  872. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mcp.svg +0 -0
  873. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mdx-components.svg +0 -0
  874. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mdx.svg +0 -0
  875. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mdxlint.svg +0 -0
  876. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mediawiki.svg +0 -0
  877. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mercurial.svg +0 -0
  878. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mermaid.svg +0 -0
  879. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_meson.svg +0 -0
  880. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_metal.svg +0 -0
  881. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_meteor.svg +0 -0
  882. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_minecraft.svg +0 -0
  883. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mivascript.svg +0 -0
  884. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mjml.svg +0 -0
  885. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mlang.svg +0 -0
  886. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mocha.svg +0 -0
  887. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_modernizr.svg +0 -0
  888. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mojo.svg +0 -0
  889. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mojolicious.svg +0 -0
  890. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_moleculer.svg +0 -0
  891. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mondoo.svg +0 -0
  892. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mongo.svg +0 -0
  893. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_monotone.svg +0 -0
  894. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_motif.svg +0 -0
  895. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mson.svg +0 -0
  896. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mustache.svg +0 -0
  897. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mvt.svg +0 -0
  898. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mvtcss.svg +0 -0
  899. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mvtjs.svg +0 -0
  900. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mypy.svg +0 -0
  901. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_mysql.svg +0 -0
  902. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nanostaged.svg +0 -0
  903. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ndst.svg +0 -0
  904. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nearly.svg +0 -0
  905. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_neo4j.svg +0 -0
  906. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_adapter_js.svg +0 -0
  907. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_adapter_ts.svg +0 -0
  908. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_controller_js.svg +0 -0
  909. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_controller_ts.svg +0 -0
  910. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_decorator_js.svg +0 -0
  911. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_decorator_ts.svg +0 -0
  912. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_filter_js.svg +0 -0
  913. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_filter_ts.svg +0 -0
  914. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_gateway_js.svg +0 -0
  915. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_gateway_ts.svg +0 -0
  916. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_guard_js.svg +0 -0
  917. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_guard_ts.svg +0 -0
  918. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_interceptor_js.svg +0 -0
  919. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_interceptor_ts.svg +0 -0
  920. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_middleware_js.svg +0 -0
  921. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_middleware_ts.svg +0 -0
  922. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_module_js.svg +0 -0
  923. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_module_ts.svg +0 -0
  924. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_pipe_js.svg +0 -0
  925. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_pipe_ts.svg +0 -0
  926. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_service_js.svg +0 -0
  927. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nest_service_ts.svg +0 -0
  928. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nestjs.svg +0 -0
  929. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_netlify.svg +0 -0
  930. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_next.svg +0 -0
  931. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nextflow.svg +0 -0
  932. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_component_css.svg +0 -0
  933. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_component_dart.svg +0 -0
  934. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_component_html.svg +0 -0
  935. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_component_js.svg +0 -0
  936. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_component_js2.svg +0 -0
  937. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_component_less.svg +0 -0
  938. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_component_sass.svg +0 -0
  939. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_component_scss.svg +0 -0
  940. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_component_ts.svg +0 -0
  941. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_component_ts2.svg +0 -0
  942. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_controller_js.svg +0 -0
  943. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_controller_ts.svg +0 -0
  944. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_dart.svg +0 -0
  945. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_js.svg +0 -0
  946. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_js2.svg +0 -0
  947. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_ts.svg +0 -0
  948. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_directive_ts2.svg +0 -0
  949. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_dart.svg +0 -0
  950. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_js.svg +0 -0
  951. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_guard_ts.svg +0 -0
  952. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_dart.svg +0 -0
  953. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_js.svg +0 -0
  954. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_interceptor_ts.svg +0 -0
  955. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_module_dart.svg +0 -0
  956. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_module_js.svg +0 -0
  957. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_module_js2.svg +0 -0
  958. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_module_ts.svg +0 -0
  959. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_module_ts2.svg +0 -0
  960. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_dart.svg +0 -0
  961. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_js.svg +0 -0
  962. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_js2.svg +0 -0
  963. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_ts.svg +0 -0
  964. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_pipe_ts2.svg +0 -0
  965. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_dart.svg +0 -0
  966. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_js.svg +0 -0
  967. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_js2.svg +0 -0
  968. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_ts.svg +0 -0
  969. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_routing_ts2.svg +0 -0
  970. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_service_dart.svg +0 -0
  971. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_service_js.svg +0 -0
  972. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_service_js2.svg +0 -0
  973. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_service_ts.svg +0 -0
  974. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_service_ts2.svg +0 -0
  975. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_dart.svg +0 -0
  976. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_js.svg +0 -0
  977. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_js2.svg +0 -0
  978. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_ts.svg +0 -0
  979. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_smart_component_ts2.svg +0 -0
  980. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ng_tailwind.svg +0 -0
  981. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nginx.svg +0 -0
  982. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nim.svg +0 -0
  983. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nimble.svg +0 -0
  984. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ninja.svg +0 -0
  985. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nix.svg +0 -0
  986. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_njsproj.svg +0 -0
  987. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_noc.svg +0 -0
  988. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_node.svg +0 -0
  989. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_node2.svg +0 -0
  990. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nodemon.svg +0 -0
  991. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_npm.svg +0 -0
  992. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_npmpackagejsonlint.svg +0 -0
  993. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nsi.svg +0 -0
  994. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nsri-integrity.svg +0 -0
  995. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nsri.svg +0 -0
  996. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nuget.svg +0 -0
  997. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_numpy.svg +0 -0
  998. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nunjucks.svg +0 -0
  999. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nushell.svg +0 -0
  1000. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nuxt.svg +0 -0
  1001. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nx.svg +0 -0
  1002. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_nyc.svg +0 -0
  1003. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_objectivec.svg +0 -0
  1004. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_objectivecpp.svg +0 -0
  1005. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_objidconfig.svg +0 -0
  1006. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ocaml.svg +0 -0
  1007. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ocaml_intf.svg +0 -0
  1008. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ogone.svg +0 -0
  1009. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_onenote.svg +0 -0
  1010. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_opam.svg +0 -0
  1011. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_openHAB.svg +0 -0
  1012. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_opencl.svg +0 -0
  1013. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_openscad.svg +0 -0
  1014. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_opentofu.svg +0 -0
  1015. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_org.svg +0 -0
  1016. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_outlook.svg +0 -0
  1017. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ovpn.svg +0 -0
  1018. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_oxc.svg +0 -0
  1019. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_oxlint.svg +0 -0
  1020. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_package.svg +0 -0
  1021. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_packship.svg +0 -0
  1022. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_paket.svg +0 -0
  1023. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pandacss.svg +0 -0
  1024. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_patch.svg +0 -0
  1025. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pcl.svg +0 -0
  1026. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pddl.svg +0 -0
  1027. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pddl_happenings.svg +0 -0
  1028. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pddl_plan.svg +0 -0
  1029. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pdf.svg +0 -0
  1030. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pdf2.svg +0 -0
  1031. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pdm.svg +0 -0
  1032. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_peeky.svg +0 -0
  1033. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_perl.svg +0 -0
  1034. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_perl2.svg +0 -0
  1035. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_perl6.svg +0 -0
  1036. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pgsql.svg +0 -0
  1037. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_photoshop.svg +0 -0
  1038. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_photoshop2.svg +0 -0
  1039. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_php.svg +0 -0
  1040. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_php2.svg +0 -0
  1041. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_php3.svg +0 -0
  1042. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_phpcsfixer.svg +0 -0
  1043. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_phpstan.svg +0 -0
  1044. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_phpunit.svg +0 -0
  1045. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_phraseapp.svg +0 -0
  1046. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pine.svg +0 -0
  1047. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pip.svg +0 -0
  1048. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pipeline.svg +0 -0
  1049. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_plantuml.svg +0 -0
  1050. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_platformio.svg +0 -0
  1051. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_playwright.svg +0 -0
  1052. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_plsql.svg +0 -0
  1053. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_plsql_package.svg +0 -0
  1054. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_body.svg +0 -0
  1055. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_header.svg +0 -0
  1056. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_plsql_package_spec.svg +0 -0
  1057. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pm2.svg +0 -0
  1058. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pnpm.svg +0 -0
  1059. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_poedit.svg +0 -0
  1060. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_poetry.svg +0 -0
  1061. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_polyglot.svg +0 -0
  1062. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_polymer.svg +0 -0
  1063. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pony.svg +0 -0
  1064. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_postcss.svg +0 -0
  1065. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_postcssconfig.svg +0 -0
  1066. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_postman.svg +0 -0
  1067. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_powerpoint.svg +0 -0
  1068. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_powerpoint2.svg +0 -0
  1069. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_powershell.svg +0 -0
  1070. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_powershell2.svg +0 -0
  1071. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_powershell_format.svg +0 -0
  1072. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_powershell_psd.svg +0 -0
  1073. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_powershell_psd2.svg +0 -0
  1074. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_powershell_psm.svg +0 -0
  1075. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_powershell_psm2.svg +0 -0
  1076. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_powershell_types.svg +0 -0
  1077. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_preact.svg +0 -0
  1078. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_precommit.svg +0 -0
  1079. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_prettier.svg +0 -0
  1080. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_prisma.svg +0 -0
  1081. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_prismaconfig.svg +0 -0
  1082. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_processinglang.svg +0 -0
  1083. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_procfile.svg +0 -0
  1084. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_progress.svg +0 -0
  1085. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_prolog.svg +0 -0
  1086. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_prometheus.svg +0 -0
  1087. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_protobuf.svg +0 -0
  1088. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_protractor.svg +0 -0
  1089. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_publiccode.svg +0 -0
  1090. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_publisher.svg +0 -0
  1091. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pug.svg +0 -0
  1092. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pulumi.svg +0 -0
  1093. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_puppet.svg +0 -0
  1094. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_purescript.svg +0 -0
  1095. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_purgecss.svg +0 -0
  1096. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pyenv.svg +0 -0
  1097. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pyret.svg +0 -0
  1098. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pyscript.svg +0 -0
  1099. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pytest.svg +0 -0
  1100. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_python.svg +0 -0
  1101. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pythowo.svg +0 -0
  1102. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pytyped.svg +0 -0
  1103. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_pyup.svg +0 -0
  1104. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_q.svg +0 -0
  1105. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_qbs.svg +0 -0
  1106. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_qlikview.svg +0 -0
  1107. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_qml.svg +0 -0
  1108. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_qmldir.svg +0 -0
  1109. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_qsharp.svg +0 -0
  1110. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_quasar.svg +0 -0
  1111. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_r.svg +0 -0
  1112. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ra_syntax_tree.svg +0 -0
  1113. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_racket.svg +0 -0
  1114. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rails.svg +0 -0
  1115. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rake.svg +0 -0
  1116. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_raku.svg +0 -0
  1117. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_raml.svg +0 -0
  1118. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_razor.svg +0 -0
  1119. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_razzle.svg +0 -0
  1120. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_reactjs.svg +0 -0
  1121. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_reactrouter.svg +0 -0
  1122. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_reacttemplate.svg +0 -0
  1123. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_reactts.svg +0 -0
  1124. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_reason.svg +0 -0
  1125. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_red.svg +0 -0
  1126. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_registry.svg +0 -0
  1127. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rego.svg +0 -0
  1128. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rehype.svg +0 -0
  1129. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_remark.svg +0 -0
  1130. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_renovate.svg +0 -0
  1131. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_replit.svg +0 -0
  1132. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rescript.svg +0 -0
  1133. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rest.svg +0 -0
  1134. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_retext.svg +0 -0
  1135. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rexx.svg +0 -0
  1136. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_riot.svg +0 -0
  1137. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ripple.svg +0 -0
  1138. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rmd.svg +0 -0
  1139. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rnc.svg +0 -0
  1140. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_robotframework.svg +0 -0
  1141. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_robots.svg +0 -0
  1142. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rolldown.svg +0 -0
  1143. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rollup.svg +0 -0
  1144. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rome.svg +0 -0
  1145. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ron.svg +0 -0
  1146. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rproj.svg +0 -0
  1147. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rspec.svg +0 -0
  1148. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rss.svg +0 -0
  1149. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rubocop.svg +0 -0
  1150. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ruby.svg +0 -0
  1151. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rust.svg +0 -0
  1152. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_rust_toolchain.svg +0 -0
  1153. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_s-lang.svg +0 -0
  1154. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_safetensors.svg +0 -0
  1155. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sails.svg +0 -0
  1156. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_saltstack.svg +0 -0
  1157. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_san.svg +0 -0
  1158. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sapphire_framework_cli.svg +0 -0
  1159. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sas.svg +0 -0
  1160. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sass.svg +0 -0
  1161. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sbt.svg +0 -0
  1162. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_scala.svg +0 -0
  1163. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_scilab.svg +0 -0
  1164. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_script.svg +0 -0
  1165. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_scss.svg +0 -0
  1166. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_scss2.svg +0 -0
  1167. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sdlang.svg +0 -0
  1168. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_search_result.svg +0 -0
  1169. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_seedkit.svg +0 -0
  1170. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sentry.svg +0 -0
  1171. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sequelize.svg +0 -0
  1172. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_serverless.svg +0 -0
  1173. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_shadcn.svg +0 -0
  1174. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_shaderlab.svg +0 -0
  1175. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_shell.svg +0 -0
  1176. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_shellcheck.svg +0 -0
  1177. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_shuttle.svg +0 -0
  1178. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_silverstripe.svg +0 -0
  1179. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sino.svg +0 -0
  1180. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sitemap.svg +0 -0
  1181. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_siyuan.svg +0 -0
  1182. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sketch.svg +0 -0
  1183. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_skipper.svg +0 -0
  1184. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_slang.svg +0 -0
  1185. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_slashup.svg +0 -0
  1186. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_slice.svg +0 -0
  1187. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_slim.svg +0 -0
  1188. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_slint.svg +0 -0
  1189. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sln.svg +0 -0
  1190. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sln2.svg +0 -0
  1191. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_smarty.svg +0 -0
  1192. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_smithery.svg +0 -0
  1193. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_snakemake.svg +0 -0
  1194. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_snapcraft.svg +0 -0
  1195. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_snaplet.svg +0 -0
  1196. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_snort.svg +0 -0
  1197. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_snyk.svg +0 -0
  1198. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_solidarity.svg +0 -0
  1199. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_solidity.svg +0 -0
  1200. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_source.svg +0 -0
  1201. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_spacengine.svg +0 -0
  1202. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sparql.svg +0 -0
  1203. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_spin.svg +0 -0
  1204. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sqf.svg +0 -0
  1205. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sql.svg +0 -0
  1206. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sqlite.svg +0 -0
  1207. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_squirrel.svg +0 -0
  1208. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sss.svg +0 -0
  1209. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sst.svg +0 -0
  1210. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_stackblitz.svg +0 -0
  1211. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_stan.svg +0 -0
  1212. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_stata.svg +0 -0
  1213. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_stencil.svg +0 -0
  1214. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_storyboard.svg +0 -0
  1215. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_storybook.svg +0 -0
  1216. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_stryker.svg +0 -0
  1217. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_stylable.svg +0 -0
  1218. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_style.svg +0 -0
  1219. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_styled.svg +0 -0
  1220. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_stylelint.svg +0 -0
  1221. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_stylish_haskell.svg +0 -0
  1222. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_stylus.svg +0 -0
  1223. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_sublime.svg +0 -0
  1224. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_subversion.svg +0 -0
  1225. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_svelte.svg +0 -0
  1226. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_svelteconfig.svg +0 -0
  1227. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_svg.svg +0 -0
  1228. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_svgo.svg +0 -0
  1229. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_swagger.svg +0 -0
  1230. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_swc.svg +0 -0
  1231. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_swift.svg +0 -0
  1232. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_swig.svg +0 -0
  1233. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_symfony.svg +0 -0
  1234. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_syncpack.svg +0 -0
  1235. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_systemd.svg +0 -0
  1236. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_systemverilog.svg +0 -0
  1237. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_t4tt.svg +0 -0
  1238. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tailwind.svg +0 -0
  1239. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tamagui.svg +0 -0
  1240. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_taplo.svg +0 -0
  1241. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_taskfile.svg +0 -0
  1242. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tauri.svg +0 -0
  1243. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tcl.svg +0 -0
  1244. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_teal.svg +0 -0
  1245. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_templ.svg +0 -0
  1246. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tera.svg +0 -0
  1247. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_terraform.svg +0 -0
  1248. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_test.svg +0 -0
  1249. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_testcafe.svg +0 -0
  1250. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_testjs.svg +0 -0
  1251. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_testplane.svg +0 -0
  1252. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_testts.svg +0 -0
  1253. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tex.svg +0 -0
  1254. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_text.svg +0 -0
  1255. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_textile.svg +0 -0
  1256. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tfs.svg +0 -0
  1257. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tiltfile.svg +0 -0
  1258. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tm.svg +0 -0
  1259. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tmux.svg +0 -0
  1260. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_todo.svg +0 -0
  1261. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_toit.svg +0 -0
  1262. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_toml.svg +0 -0
  1263. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_toon.svg +0 -0
  1264. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tox.svg +0 -0
  1265. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_travis.svg +0 -0
  1266. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tree.svg +0 -0
  1267. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tres.svg +0 -0
  1268. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_truffle.svg +0 -0
  1269. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_trunk.svg +0 -0
  1270. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tsbuildinfo.svg +0 -0
  1271. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tscn.svg +0 -0
  1272. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tsconfig.svg +0 -0
  1273. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tsconfig_official.svg +0 -0
  1274. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tsdoc.svg +0 -0
  1275. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tsdown.svg +0 -0
  1276. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tslint.svg +0 -0
  1277. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tt.svg +0 -0
  1278. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_ttcn.svg +0 -0
  1279. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_tuc.svg +0 -0
  1280. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_turbo.svg +0 -0
  1281. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_twig.svg +0 -0
  1282. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_typedoc.svg +0 -0
  1283. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_typescript.svg +0 -0
  1284. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_typescript_official.svg +0 -0
  1285. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_typescriptdef.svg +0 -0
  1286. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_typescriptdef_official.svg +0 -0
  1287. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_typo3.svg +0 -0
  1288. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_uiua.svg +0 -0
  1289. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_unibeautify.svg +0 -0
  1290. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_unison.svg +0 -0
  1291. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_unlicense.svg +0 -0
  1292. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_unocss.svg +0 -0
  1293. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_uv.svg +0 -0
  1294. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vagrant.svg +0 -0
  1295. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vala.svg +0 -0
  1296. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vanilla_extract.svg +0 -0
  1297. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vapi.svg +0 -0
  1298. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vapor.svg +0 -0
  1299. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vash.svg +0 -0
  1300. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vb.svg +0 -0
  1301. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vba.svg +0 -0
  1302. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vbhtml.svg +0 -0
  1303. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vbproj.svg +0 -0
  1304. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vcxproj.svg +0 -0
  1305. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_velocity.svg +0 -0
  1306. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vento.svg +0 -0
  1307. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vercel.svg +0 -0
  1308. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_verilog.svg +0 -0
  1309. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vhdl.svg +0 -0
  1310. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_video.svg +0 -0
  1311. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_view.svg +0 -0
  1312. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vim.svg +0 -0
  1313. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vite.svg +0 -0
  1314. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vitest.svg +0 -0
  1315. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vlang.svg +0 -0
  1316. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_volt.svg +0 -0
  1317. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vroom.svg +0 -0
  1318. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vscode-insiders.svg +0 -0
  1319. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vscode.svg +0 -0
  1320. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vscode2.svg +0 -0
  1321. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vscode3.svg +0 -0
  1322. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vscode_test.svg +0 -0
  1323. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vsix.svg +0 -0
  1324. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vsixmanifest.svg +0 -0
  1325. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vue.svg +0 -0
  1326. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vueconfig.svg +0 -0
  1327. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vvvvvv.svg +0 -0
  1328. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_vyper.svg +0 -0
  1329. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wallaby.svg +0 -0
  1330. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wally.svg +0 -0
  1331. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wasm.svg +0 -0
  1332. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_watchmanconfig.svg +0 -0
  1333. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wdio.svg +0 -0
  1334. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_weblate.svg +0 -0
  1335. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_webpack.svg +0 -0
  1336. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wenyan.svg +0 -0
  1337. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wercker.svg +0 -0
  1338. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wgsl.svg +0 -0
  1339. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wikitext.svg +0 -0
  1340. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_windi.svg +0 -0
  1341. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wit.svg +0 -0
  1342. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wolfram.svg +0 -0
  1343. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_word.svg +0 -0
  1344. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_word2.svg +0 -0
  1345. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wpml.svg +0 -0
  1346. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wurst.svg +0 -0
  1347. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wxml.svg +0 -0
  1348. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wxss.svg +0 -0
  1349. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_wxt.svg +0 -0
  1350. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_xaml.svg +0 -0
  1351. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_xcode.svg +0 -0
  1352. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_xfl.svg +0 -0
  1353. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_xib.svg +0 -0
  1354. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_xliff.svg +0 -0
  1355. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_xmake.svg +0 -0
  1356. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_xml.svg +0 -0
  1357. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_xo.svg +0 -0
  1358. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_xorg.svg +0 -0
  1359. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_xquery.svg +0 -0
  1360. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_xsl.svg +0 -0
  1361. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_yacc.svg +0 -0
  1362. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_yaml.svg +0 -0
  1363. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_yaml_official.svg +0 -0
  1364. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_yamllint.svg +0 -0
  1365. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_yandex.svg +0 -0
  1366. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_yang.svg +0 -0
  1367. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_yarn.svg +0 -0
  1368. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_yeoman.svg +0 -0
  1369. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_zeit.svg +0 -0
  1370. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_zig.svg +0 -0
  1371. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_zip.svg +0 -0
  1372. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/file_type_zip2.svg +0 -0
  1373. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_android.svg +0 -0
  1374. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_android_opened.svg +0 -0
  1375. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_angular.svg +0 -0
  1376. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_angular_opened.svg +0 -0
  1377. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_apache.svg +0 -0
  1378. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_apache_opened.svg +0 -0
  1379. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_api.svg +0 -0
  1380. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_api_opened.svg +0 -0
  1381. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_app.svg +0 -0
  1382. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_app_opened.svg +0 -0
  1383. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_arangodb.svg +0 -0
  1384. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_arangodb_opened.svg +0 -0
  1385. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_asset.svg +0 -0
  1386. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_asset_opened.svg +0 -0
  1387. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_astro.svg +0 -0
  1388. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_astro_opened.svg +0 -0
  1389. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_audio.svg +0 -0
  1390. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_audio_opened.svg +0 -0
  1391. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_aurelia.svg +0 -0
  1392. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_aurelia_opened.svg +0 -0
  1393. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_aws.svg +0 -0
  1394. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_aws_opened.svg +0 -0
  1395. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_azure.svg +0 -0
  1396. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_azure_opened.svg +0 -0
  1397. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_azurepipelines.svg +0 -0
  1398. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_azurepipelines_opened.svg +0 -0
  1399. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_binary.svg +0 -0
  1400. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_binary_opened.svg +0 -0
  1401. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_bloc.svg +0 -0
  1402. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_bloc_opened.svg +0 -0
  1403. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_blueprint.svg +0 -0
  1404. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_blueprint_opened.svg +0 -0
  1405. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_bot.svg +0 -0
  1406. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_bot_opened.svg +0 -0
  1407. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_bower.svg +0 -0
  1408. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_bower_opened.svg +0 -0
  1409. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_buildkite.svg +0 -0
  1410. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_buildkite_opened.svg +0 -0
  1411. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cake.svg +0 -0
  1412. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cake_opened.svg +0 -0
  1413. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cargo.svg +0 -0
  1414. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cargo_opened.svg +0 -0
  1415. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_certificate.svg +0 -0
  1416. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_certificate_opened.svg +0 -0
  1417. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_changesets.svg +0 -0
  1418. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_changesets_opened.svg +0 -0
  1419. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_chef.svg +0 -0
  1420. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_chef_opened.svg +0 -0
  1421. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_circleci.svg +0 -0
  1422. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_circleci_opened.svg +0 -0
  1423. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_claude.svg +0 -0
  1424. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_claude_opened.svg +0 -0
  1425. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cli.svg +0 -0
  1426. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cli_opened.svg +0 -0
  1427. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_client.svg +0 -0
  1428. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_client_opened.svg +0 -0
  1429. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cloudflare.svg +0 -0
  1430. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cloudflare_opened.svg +0 -0
  1431. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cmake.svg +0 -0
  1432. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cmake_opened.svg +0 -0
  1433. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_common.svg +0 -0
  1434. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_common_opened.svg +0 -0
  1435. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_component.svg +0 -0
  1436. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_component_opened.svg +0 -0
  1437. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_composer.svg +0 -0
  1438. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_composer_opened.svg +0 -0
  1439. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_config.svg +0 -0
  1440. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_config_opened.svg +0 -0
  1441. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_controller.svg +0 -0
  1442. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_controller_opened.svg +0 -0
  1443. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_coverage.svg +0 -0
  1444. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_coverage_opened.svg +0 -0
  1445. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_css.svg +0 -0
  1446. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_css2.svg +0 -0
  1447. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_css2_opened.svg +0 -0
  1448. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_css_opened.svg +0 -0
  1449. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cubit.svg +0 -0
  1450. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cubit_opened.svg +0 -0
  1451. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cursor.svg +0 -0
  1452. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cursor_opened.svg +0 -0
  1453. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cypress.svg +0 -0
  1454. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_cypress_opened.svg +0 -0
  1455. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_dapr.svg +0 -0
  1456. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_dapr_opened.svg +0 -0
  1457. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_dart.svg +0 -0
  1458. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_dart_opened.svg +0 -0
  1459. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_datadog.svg +0 -0
  1460. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_datadog_opened.svg +0 -0
  1461. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_db.svg +0 -0
  1462. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_db_opened.svg +0 -0
  1463. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_debian.svg +0 -0
  1464. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_debian_opened.svg +0 -0
  1465. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_dependabot.svg +0 -0
  1466. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_dependabot_opened.svg +0 -0
  1467. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_devcontainer.svg +0 -0
  1468. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_devcontainer_opened.svg +0 -0
  1469. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_dist.svg +0 -0
  1470. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_dist_opened.svg +0 -0
  1471. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_docker.svg +0 -0
  1472. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_docker_opened.svg +0 -0
  1473. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_docs.svg +0 -0
  1474. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_docs_opened.svg +0 -0
  1475. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_e2e.svg +0 -0
  1476. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_e2e_opened.svg +0 -0
  1477. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_elasticbeanstalk.svg +0 -0
  1478. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_elasticbeanstalk_opened.svg +0 -0
  1479. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_electron.svg +0 -0
  1480. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_electron_opened.svg +0 -0
  1481. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_expo.svg +0 -0
  1482. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_expo_opened.svg +0 -0
  1483. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_favicon.svg +0 -0
  1484. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_favicon_opened.svg +0 -0
  1485. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_flow.svg +0 -0
  1486. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_flow_opened.svg +0 -0
  1487. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_flutter.svg +0 -0
  1488. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_flutter_opened.svg +0 -0
  1489. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_fonts.svg +0 -0
  1490. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_fonts_opened.svg +0 -0
  1491. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_frontcommerce.svg +0 -0
  1492. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_frontcommerce_opened.svg +0 -0
  1493. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_gcp.svg +0 -0
  1494. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_gcp_opened.svg +0 -0
  1495. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_git.svg +0 -0
  1496. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_git_opened.svg +0 -0
  1497. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_github.svg +0 -0
  1498. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_github_opened.svg +0 -0
  1499. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_gitlab.svg +0 -0
  1500. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_gitlab_opened.svg +0 -0
  1501. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_godot.svg +0 -0
  1502. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_godot_opened.svg +0 -0
  1503. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_gradle.svg +0 -0
  1504. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_gradle_opened.svg +0 -0
  1505. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_graphql.svg +0 -0
  1506. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_graphql_opened.svg +0 -0
  1507. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_grunt.svg +0 -0
  1508. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_grunt_opened.svg +0 -0
  1509. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_gulp.svg +0 -0
  1510. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_gulp_opened.svg +0 -0
  1511. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_haxelib.svg +0 -0
  1512. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_haxelib_opened.svg +0 -0
  1513. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_helper.svg +0 -0
  1514. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_helper_opened.svg +0 -0
  1515. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_histoire.svg +0 -0
  1516. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_histoire_opened.svg +0 -0
  1517. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_hook.svg +0 -0
  1518. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_hook_opened.svg +0 -0
  1519. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_husky.svg +0 -0
  1520. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_husky_opened.svg +0 -0
  1521. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_idea.svg +0 -0
  1522. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_idea_opened.svg +0 -0
  1523. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_images.svg +0 -0
  1524. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_images_opened.svg +0 -0
  1525. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_include.svg +0 -0
  1526. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_include_opened.svg +0 -0
  1527. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_interfaces.svg +0 -0
  1528. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_interfaces_opened.svg +0 -0
  1529. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_ios.svg +0 -0
  1530. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_ios_opened.svg +0 -0
  1531. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_js.svg +0 -0
  1532. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_js_opened.svg +0 -0
  1533. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_json.svg +0 -0
  1534. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_json_official.svg +0 -0
  1535. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_json_official_opened.svg +0 -0
  1536. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_json_opened.svg +0 -0
  1537. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_junie.svg +0 -0
  1538. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_junie_opened.svg +0 -0
  1539. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_kotlin.svg +0 -0
  1540. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_kotlin_opened.svg +0 -0
  1541. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_kubernetes.svg +0 -0
  1542. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_kubernetes_opened.svg +0 -0
  1543. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_less.svg +0 -0
  1544. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_less_opened.svg +0 -0
  1545. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_library.svg +0 -0
  1546. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_library_opened.svg +0 -0
  1547. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_cursor.svg +0 -0
  1548. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_cursor_opened.svg +0 -0
  1549. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_cypress.svg +0 -0
  1550. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_cypress_opened.svg +0 -0
  1551. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_electron.svg +0 -0
  1552. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_electron_opened.svg +0 -0
  1553. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_expo.svg +0 -0
  1554. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_expo_opened.svg +0 -0
  1555. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_fonts.svg +0 -0
  1556. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_fonts_opened.svg +0 -0
  1557. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_gradle.svg +0 -0
  1558. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_gradle_opened.svg +0 -0
  1559. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_meteor.svg +0 -0
  1560. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_meteor_opened.svg +0 -0
  1561. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_mypy.svg +0 -0
  1562. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_mypy_opened.svg +0 -0
  1563. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_mysql.svg +0 -0
  1564. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_mysql_opened.svg +0 -0
  1565. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_node.svg +0 -0
  1566. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_node_opened.svg +0 -0
  1567. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_redux.svg +0 -0
  1568. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_redux_opened.svg +0 -0
  1569. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_sass.svg +0 -0
  1570. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_sass_opened.svg +0 -0
  1571. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_zed.svg +0 -0
  1572. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_light_zed_opened.svg +0 -0
  1573. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_linux.svg +0 -0
  1574. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_linux_opened.svg +0 -0
  1575. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_locale.svg +0 -0
  1576. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_locale_opened.svg +0 -0
  1577. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_log.svg +0 -0
  1578. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_log_opened.svg +0 -0
  1579. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_macos.svg +0 -0
  1580. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_macos_opened.svg +0 -0
  1581. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mariadb.svg +0 -0
  1582. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mariadb_opened.svg +0 -0
  1583. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_maven.svg +0 -0
  1584. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_maven_opened.svg +0 -0
  1585. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mediawiki.svg +0 -0
  1586. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mediawiki_opened.svg +0 -0
  1587. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_memcached.svg +0 -0
  1588. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_memcached_opened.svg +0 -0
  1589. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_meteor.svg +0 -0
  1590. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_meteor_opened.svg +0 -0
  1591. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_middleware.svg +0 -0
  1592. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_middleware_opened.svg +0 -0
  1593. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_minecraft.svg +0 -0
  1594. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_minecraft_opened.svg +0 -0
  1595. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_minikube.svg +0 -0
  1596. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_minikube_opened.svg +0 -0
  1597. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mjml.svg +0 -0
  1598. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mjml_opened.svg +0 -0
  1599. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mock.svg +0 -0
  1600. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mock_opened.svg +0 -0
  1601. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_model.svg +0 -0
  1602. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_model_opened.svg +0 -0
  1603. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_module.svg +0 -0
  1604. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_module_opened.svg +0 -0
  1605. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mojo.svg +0 -0
  1606. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mojo_opened.svg +0 -0
  1607. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mongodb.svg +0 -0
  1608. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mongodb_opened.svg +0 -0
  1609. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mypy.svg +0 -0
  1610. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mypy_opened.svg +0 -0
  1611. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mysql.svg +0 -0
  1612. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_mysql_opened.svg +0 -0
  1613. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_netlify.svg +0 -0
  1614. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_netlify_opened.svg +0 -0
  1615. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_next.svg +0 -0
  1616. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_next_opened.svg +0 -0
  1617. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_nginx.svg +0 -0
  1618. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_nginx_opened.svg +0 -0
  1619. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_nix.svg +0 -0
  1620. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_nix_opened.svg +0 -0
  1621. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_node.svg +0 -0
  1622. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_node_opened.svg +0 -0
  1623. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_notebooks.svg +0 -0
  1624. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_notebooks_opened.svg +0 -0
  1625. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_notification.svg +0 -0
  1626. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_notification_opened.svg +0 -0
  1627. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_nuget.svg +0 -0
  1628. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_nuget_opened.svg +0 -0
  1629. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_nuxt.svg +0 -0
  1630. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_nuxt_opened.svg +0 -0
  1631. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_package.svg +0 -0
  1632. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_package_opened.svg +0 -0
  1633. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_paket.svg +0 -0
  1634. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_paket_opened.svg +0 -0
  1635. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_php.svg +0 -0
  1636. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_php_opened.svg +0 -0
  1637. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_platformio.svg +0 -0
  1638. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_platformio_opened.svg +0 -0
  1639. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_plugin.svg +0 -0
  1640. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_plugin_opened.svg +0 -0
  1641. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_prisma.svg +0 -0
  1642. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_prisma_opened.svg +0 -0
  1643. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_private.svg +0 -0
  1644. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_private_opened.svg +0 -0
  1645. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_public.svg +0 -0
  1646. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_public_opened.svg +0 -0
  1647. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_pytest.svg +0 -0
  1648. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_pytest_opened.svg +0 -0
  1649. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_python.svg +0 -0
  1650. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_python_opened.svg +0 -0
  1651. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_ravendb.svg +0 -0
  1652. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_ravendb_opened.svg +0 -0
  1653. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_redis.svg +0 -0
  1654. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_redis_opened.svg +0 -0
  1655. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_redux.svg +0 -0
  1656. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_redux_opened.svg +0 -0
  1657. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_route.svg +0 -0
  1658. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_route_opened.svg +0 -0
  1659. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_sass.svg +0 -0
  1660. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_sass_opened.svg +0 -0
  1661. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_script.svg +0 -0
  1662. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_script_opened.svg +0 -0
  1663. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_seedkit.svg +0 -0
  1664. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_seedkit_opened.svg +0 -0
  1665. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_server.svg +0 -0
  1666. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_server_opened.svg +0 -0
  1667. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_services.svg +0 -0
  1668. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_services_opened.svg +0 -0
  1669. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_shared.svg +0 -0
  1670. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_shared_opened.svg +0 -0
  1671. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_snaplet.svg +0 -0
  1672. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_snaplet_opened.svg +0 -0
  1673. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_spin.svg +0 -0
  1674. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_spin_opened.svg +0 -0
  1675. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_src.svg +0 -0
  1676. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_src_opened.svg +0 -0
  1677. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_sso.svg +0 -0
  1678. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_sso_opened.svg +0 -0
  1679. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_story.svg +0 -0
  1680. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_story_opened.svg +0 -0
  1681. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_style.svg +0 -0
  1682. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_style_opened.svg +0 -0
  1683. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_supabase.svg +0 -0
  1684. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_supabase_opened.svg +0 -0
  1685. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_svelte.svg +0 -0
  1686. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_svelte_opened.svg +0 -0
  1687. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_tauri.svg +0 -0
  1688. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_tauri_opened.svg +0 -0
  1689. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_temp.svg +0 -0
  1690. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_temp_opened.svg +0 -0
  1691. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_template.svg +0 -0
  1692. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_template_opened.svg +0 -0
  1693. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_test.svg +0 -0
  1694. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_test_opened.svg +0 -0
  1695. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_theme.svg +0 -0
  1696. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_theme_opened.svg +0 -0
  1697. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_tools.svg +0 -0
  1698. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_tools_opened.svg +0 -0
  1699. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_travis.svg +0 -0
  1700. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_travis_opened.svg +0 -0
  1701. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_trunk.svg +0 -0
  1702. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_trunk_opened.svg +0 -0
  1703. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_turbo.svg +0 -0
  1704. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_turbo_opened.svg +0 -0
  1705. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_typescript.svg +0 -0
  1706. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_typescript_opened.svg +0 -0
  1707. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_typings.svg +0 -0
  1708. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_typings2.svg +0 -0
  1709. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_typings2_opened.svg +0 -0
  1710. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_typings_opened.svg +0 -0
  1711. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vagrant.svg +0 -0
  1712. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vagrant_opened.svg +0 -0
  1713. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vercel.svg +0 -0
  1714. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vercel_opened.svg +0 -0
  1715. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_video.svg +0 -0
  1716. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_video_opened.svg +0 -0
  1717. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_view.svg +0 -0
  1718. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_view_opened.svg +0 -0
  1719. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vitepress.svg +0 -0
  1720. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vitepress_opened.svg +0 -0
  1721. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vs.svg +0 -0
  1722. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vs2.svg +0 -0
  1723. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vs2_opened.svg +0 -0
  1724. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vs_opened.svg +0 -0
  1725. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vscode.svg +0 -0
  1726. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vscode2.svg +0 -0
  1727. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vscode2_opened.svg +0 -0
  1728. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vscode3.svg +0 -0
  1729. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vscode3_opened.svg +0 -0
  1730. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vscode_opened.svg +0 -0
  1731. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test.svg +0 -0
  1732. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test2.svg +0 -0
  1733. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test2_opened.svg +0 -0
  1734. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test3.svg +0 -0
  1735. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test3_opened.svg +0 -0
  1736. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_vscode_test_opened.svg +0 -0
  1737. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_wasm.svg +0 -0
  1738. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_wasm_opened.svg +0 -0
  1739. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_webpack.svg +0 -0
  1740. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_webpack_opened.svg +0 -0
  1741. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_windows.svg +0 -0
  1742. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_windows_opened.svg +0 -0
  1743. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_windsurf.svg +0 -0
  1744. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_windsurf_opened.svg +0 -0
  1745. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_wit.svg +0 -0
  1746. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_wit_opened.svg +0 -0
  1747. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_www.svg +0 -0
  1748. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_www_opened.svg +0 -0
  1749. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_yarn.svg +0 -0
  1750. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_yarn_opened.svg +0 -0
  1751. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_zed.svg +0 -0
  1752. /package/static/{5a29bf2 → 51d77f9}/extensions/builtin.vscode-icons/icons/folder_type_zed_opened.svg +0 -0
  1753. /package/static/{5a29bf2 → 51d77f9}/fonts/FiraCode-VariableFont.ttf +0 -0
  1754. /package/static/{5a29bf2 → 51d77f9}/icons/add.svg +0 -0
  1755. /package/static/{5a29bf2 → 51d77f9}/icons/arrow-down.svg +0 -0
  1756. /package/static/{5a29bf2 → 51d77f9}/icons/arrow-left.svg +0 -0
  1757. /package/static/{5a29bf2 → 51d77f9}/icons/arrow-right.svg +0 -0
  1758. /package/static/{5a29bf2 → 51d77f9}/icons/arrow-up.svg +0 -0
  1759. /package/static/{5a29bf2 → 51d77f9}/icons/blank.svg +0 -0
  1760. /package/static/{5a29bf2 → 51d77f9}/icons/book.svg +0 -0
  1761. /package/static/{5a29bf2 → 51d77f9}/icons/case-sensitive.svg +0 -0
  1762. /package/static/{5a29bf2 → 51d77f9}/icons/check.svg +0 -0
  1763. /package/static/{5a29bf2 → 51d77f9}/icons/chevron-down.svg +0 -0
  1764. /package/static/{5a29bf2 → 51d77f9}/icons/chevron-left.svg +0 -0
  1765. /package/static/{5a29bf2 → 51d77f9}/icons/chevron-right.svg +0 -0
  1766. /package/static/{5a29bf2 → 51d77f9}/icons/chevron-up.svg +0 -0
  1767. /package/static/{5a29bf2 → 51d77f9}/icons/chrome-close.svg +0 -0
  1768. /package/static/{5a29bf2 → 51d77f9}/icons/chrome-maximize.svg +0 -0
  1769. /package/static/{5a29bf2 → 51d77f9}/icons/chrome-minimize.svg +0 -0
  1770. /package/static/{5a29bf2 → 51d77f9}/icons/chrome-restore.svg +0 -0
  1771. /package/static/{5a29bf2 → 51d77f9}/icons/circle-filled.svg +0 -0
  1772. /package/static/{5a29bf2 → 51d77f9}/icons/clear-all.svg +0 -0
  1773. /package/static/{5a29bf2 → 51d77f9}/icons/close.svg +0 -0
  1774. /package/static/{5a29bf2 → 51d77f9}/icons/cloud.svg +0 -0
  1775. /package/static/{5a29bf2 → 51d77f9}/icons/collapse-all.svg +0 -0
  1776. /package/static/{5a29bf2 → 51d77f9}/icons/debug-all.svg +0 -0
  1777. /package/static/{5a29bf2 → 51d77f9}/icons/debug-alt-2.svg +0 -0
  1778. /package/static/{5a29bf2 → 51d77f9}/icons/debug-alt-small.svg +0 -0
  1779. /package/static/{5a29bf2 → 51d77f9}/icons/debug-alt.svg +0 -0
  1780. /package/static/{5a29bf2 → 51d77f9}/icons/debug-breakpoint-conditional-unverified.svg +0 -0
  1781. /package/static/{5a29bf2 → 51d77f9}/icons/debug-breakpoint-conditional.svg +0 -0
  1782. /package/static/{5a29bf2 → 51d77f9}/icons/debug-breakpoint-data-unverified.svg +0 -0
  1783. /package/static/{5a29bf2 → 51d77f9}/icons/debug-breakpoint-data.svg +0 -0
  1784. /package/static/{5a29bf2 → 51d77f9}/icons/debug-breakpoint-function-unverified.svg +0 -0
  1785. /package/static/{5a29bf2 → 51d77f9}/icons/debug-breakpoint-function.svg +0 -0
  1786. /package/static/{5a29bf2 → 51d77f9}/icons/debug-breakpoint-log-unverified.svg +0 -0
  1787. /package/static/{5a29bf2 → 51d77f9}/icons/debug-breakpoint-log.svg +0 -0
  1788. /package/static/{5a29bf2 → 51d77f9}/icons/debug-breakpoint-unsupported.svg +0 -0
  1789. /package/static/{5a29bf2 → 51d77f9}/icons/debug-console.svg +0 -0
  1790. /package/static/{5a29bf2 → 51d77f9}/icons/debug-continue-small.svg +0 -0
  1791. /package/static/{5a29bf2 → 51d77f9}/icons/debug-continue.svg +0 -0
  1792. /package/static/{5a29bf2 → 51d77f9}/icons/debug-coverage.svg +0 -0
  1793. /package/static/{5a29bf2 → 51d77f9}/icons/debug-disconnect.svg +0 -0
  1794. /package/static/{5a29bf2 → 51d77f9}/icons/debug-line-by-line.svg +0 -0
  1795. /package/static/{5a29bf2 → 51d77f9}/icons/debug-pause.svg +0 -0
  1796. /package/static/{5a29bf2 → 51d77f9}/icons/debug-rerun.svg +0 -0
  1797. /package/static/{5a29bf2 → 51d77f9}/icons/debug-restart-frame.svg +0 -0
  1798. /package/static/{5a29bf2 → 51d77f9}/icons/debug-restart.svg +0 -0
  1799. /package/static/{5a29bf2 → 51d77f9}/icons/debug-reverse-continue.svg +0 -0
  1800. /package/static/{5a29bf2 → 51d77f9}/icons/debug-stackframe-active.svg +0 -0
  1801. /package/static/{5a29bf2 → 51d77f9}/icons/debug-stackframe.svg +0 -0
  1802. /package/static/{5a29bf2 → 51d77f9}/icons/debug-start.svg +0 -0
  1803. /package/static/{5a29bf2 → 51d77f9}/icons/debug-step-back.svg +0 -0
  1804. /package/static/{5a29bf2 → 51d77f9}/icons/debug-step-into.svg +0 -0
  1805. /package/static/{5a29bf2 → 51d77f9}/icons/debug-step-out.svg +0 -0
  1806. /package/static/{5a29bf2 → 51d77f9}/icons/debug-step-over.svg +0 -0
  1807. /package/static/{5a29bf2 → 51d77f9}/icons/debug-stop.svg +0 -0
  1808. /package/static/{5a29bf2 → 51d77f9}/icons/debug.svg +0 -0
  1809. /package/static/{5a29bf2 → 51d77f9}/icons/discard.svg +0 -0
  1810. /package/static/{5a29bf2 → 51d77f9}/icons/edit.svg +0 -0
  1811. /package/static/{5a29bf2 → 51d77f9}/icons/ellipsis.svg +0 -0
  1812. /package/static/{5a29bf2 → 51d77f9}/icons/error.svg +0 -0
  1813. /package/static/{5a29bf2 → 51d77f9}/icons/exclude.svg +0 -0
  1814. /package/static/{5a29bf2 → 51d77f9}/icons/extensionDefaultIcon.png +0 -0
  1815. /package/static/{5a29bf2 → 51d77f9}/icons/extensions.svg +0 -0
  1816. /package/static/{5a29bf2 → 51d77f9}/icons/files.svg +0 -0
  1817. /package/static/{5a29bf2 → 51d77f9}/icons/filter.svg +0 -0
  1818. /package/static/{5a29bf2 → 51d77f9}/icons/go-to-file.svg +0 -0
  1819. /package/static/{5a29bf2 → 51d77f9}/icons/icon-close.svg +0 -0
  1820. /package/static/{5a29bf2 → 51d77f9}/icons/icon-source-control.svg +0 -0
  1821. /package/static/{5a29bf2 → 51d77f9}/icons/icon-sync.svg +0 -0
  1822. /package/static/{5a29bf2 → 51d77f9}/icons/icon.png +0 -0
  1823. /package/static/{5a29bf2 → 51d77f9}/icons/icon.svg +0 -0
  1824. /package/static/{5a29bf2 → 51d77f9}/icons/info.svg +0 -0
  1825. /package/static/{5a29bf2 → 51d77f9}/icons/language-icon.svg +0 -0
  1826. /package/static/{5a29bf2 → 51d77f9}/icons/link-external.svg +0 -0
  1827. /package/static/{5a29bf2 → 51d77f9}/icons/list-flat.svg +0 -0
  1828. /package/static/{5a29bf2 → 51d77f9}/icons/list-tree.svg +0 -0
  1829. /package/static/{5a29bf2 → 51d77f9}/icons/new-file.svg +0 -0
  1830. /package/static/{5a29bf2 → 51d77f9}/icons/new-folder.svg +0 -0
  1831. /package/static/{5a29bf2 → 51d77f9}/icons/newline.svg +0 -0
  1832. /package/static/{5a29bf2 → 51d77f9}/icons/open-preview.svg +0 -0
  1833. /package/static/{5a29bf2 → 51d77f9}/icons/play.svg +0 -0
  1834. /package/static/{5a29bf2 → 51d77f9}/icons/preserve-case.svg +0 -0
  1835. /package/static/{5a29bf2 → 51d77f9}/icons/progress.svg +0 -0
  1836. /package/static/{5a29bf2 → 51d77f9}/icons/pwa-icon-192.png +0 -0
  1837. /package/static/{5a29bf2 → 51d77f9}/icons/pwa-icon-512.png +0 -0
  1838. /package/static/{5a29bf2 → 51d77f9}/icons/record-keys.svg +0 -0
  1839. /package/static/{5a29bf2 → 51d77f9}/icons/refresh.svg +0 -0
  1840. /package/static/{5a29bf2 → 51d77f9}/icons/regex.svg +0 -0
  1841. /package/static/{5a29bf2 → 51d77f9}/icons/remove.svg +0 -0
  1842. /package/static/{5a29bf2 → 51d77f9}/icons/replace-all.svg +0 -0
  1843. /package/static/{5a29bf2 → 51d77f9}/icons/replace.svg +0 -0
  1844. /package/static/{5a29bf2 → 51d77f9}/icons/repo.svg +0 -0
  1845. /package/static/{5a29bf2 → 51d77f9}/icons/run-all.svg +0 -0
  1846. /package/static/{5a29bf2 → 51d77f9}/icons/search.svg +0 -0
  1847. /package/static/{5a29bf2 → 51d77f9}/icons/send.svg +0 -0
  1848. /package/static/{5a29bf2 → 51d77f9}/icons/settings-gear.svg +0 -0
  1849. /package/static/{5a29bf2 → 51d77f9}/icons/sort-precedence.svg +0 -0
  1850. /package/static/{5a29bf2 → 51d77f9}/icons/source-control.svg +0 -0
  1851. /package/static/{5a29bf2 → 51d77f9}/icons/split-horizontal.svg +0 -0
  1852. /package/static/{5a29bf2 → 51d77f9}/icons/squiggly-error.svg +0 -0
  1853. /package/static/{5a29bf2 → 51d77f9}/icons/squiggly-warning.svg +0 -0
  1854. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-array.svg +0 -0
  1855. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-boolean.svg +0 -0
  1856. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-class.svg +0 -0
  1857. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-color.svg +0 -0
  1858. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-constant.svg +0 -0
  1859. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-enum-member.svg +0 -0
  1860. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-enum.svg +0 -0
  1861. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-event.svg +0 -0
  1862. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-field.svg +0 -0
  1863. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-file.svg +0 -0
  1864. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-interface.svg +0 -0
  1865. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-key.svg +0 -0
  1866. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-keyword.svg +0 -0
  1867. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-method.svg +0 -0
  1868. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-misc.svg +0 -0
  1869. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-namespace.svg +0 -0
  1870. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-numeric.svg +0 -0
  1871. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-operator.svg +0 -0
  1872. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-parameter.svg +0 -0
  1873. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-property.svg +0 -0
  1874. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-ruler.svg +0 -0
  1875. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-snippet.svg +0 -0
  1876. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-string.svg +0 -0
  1877. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-structure.svg +0 -0
  1878. /package/static/{5a29bf2 → 51d77f9}/icons/symbol-variable.svg +0 -0
  1879. /package/static/{5a29bf2 → 51d77f9}/icons/tag.svg +0 -0
  1880. /package/static/{5a29bf2 → 51d77f9}/icons/terminal-bash.svg +0 -0
  1881. /package/static/{5a29bf2 → 51d77f9}/icons/terminal.svg +0 -0
  1882. /package/static/{5a29bf2 → 51d77f9}/icons/theme-icon.png +0 -0
  1883. /package/static/{5a29bf2 → 51d77f9}/icons/trash.svg +0 -0
  1884. /package/static/{5a29bf2 → 51d77f9}/icons/triangle-down.svg +0 -0
  1885. /package/static/{5a29bf2 → 51d77f9}/icons/triangle-left.svg +0 -0
  1886. /package/static/{5a29bf2 → 51d77f9}/icons/triangle-right.svg +0 -0
  1887. /package/static/{5a29bf2 → 51d77f9}/icons/triangle-up.svg +0 -0
  1888. /package/static/{5a29bf2 → 51d77f9}/icons/warning.svg +0 -0
  1889. /package/static/{5a29bf2 → 51d77f9}/icons/whole-word.svg +0 -0
  1890. /package/static/{5a29bf2 → 51d77f9}/icons/zoom-in.svg +0 -0
  1891. /package/static/{5a29bf2 → 51d77f9}/icons/zoom-out.svg +0 -0
  1892. /package/static/{5a29bf2 → 51d77f9}/js/babel-parser.js +0 -0
  1893. /package/static/{5a29bf2 → 51d77f9}/js/ky.js +0 -0
  1894. /package/static/{5a29bf2 → 51d77f9}/js/lvce-editor-import-script.js +0 -0
  1895. /package/static/{5a29bf2 → 51d77f9}/js/lvce-editor-ipc.js +0 -0
  1896. /package/static/{5a29bf2 → 51d77f9}/js/lvce-editor-json-rpc.js +0 -0
  1897. /package/static/{5a29bf2 → 51d77f9}/js/lvce-editor-rpc.js +0 -0
  1898. /package/static/{5a29bf2 → 51d77f9}/js/lvce-editor-verror.js +0 -0
  1899. /package/static/{5a29bf2 → 51d77f9}/js/p-min-delay.js +0 -0
  1900. /package/static/{5a29bf2 → 51d77f9}/js/pretty-bytes.js +0 -0
  1901. /package/static/{5a29bf2 → 51d77f9}/js/preview-injected.js +0 -0
  1902. /package/static/{5a29bf2 → 51d77f9}/js/yoctodelay.js +0 -0
  1903. /package/static/{5a29bf2 → 51d77f9}/lib-css/termterm.css +0 -0
  1904. /package/static/{5a29bf2 → 51d77f9}/packages/activity-bar-worker/dist/activityBarWorkerMain.js +0 -0
  1905. /package/static/{5a29bf2 → 51d77f9}/packages/clipboard-worker/dist/clipBoardWorkerMain.js +0 -0
  1906. /package/static/{5a29bf2 → 51d77f9}/packages/color-picker-worker/dist/colorPickerWorkerMain.js +0 -0
  1907. /package/static/{5a29bf2 → 51d77f9}/packages/completion-worker/dist/completionWorkerMain.js +0 -0
  1908. /package/static/{5a29bf2 → 51d77f9}/packages/debug-worker/dist/debugWorkerMain.js +0 -0
  1909. /package/static/{5a29bf2 → 51d77f9}/packages/diff-worker/dist/diffWorkerMain.js +0 -0
  1910. /package/static/{5a29bf2 → 51d77f9}/packages/editor-worker/dist/editorWorkerMain.js +0 -0
  1911. /package/static/{5a29bf2 → 51d77f9}/packages/embeds-worker/dist/embedsWorkerMain.js +0 -0
  1912. /package/static/{5a29bf2 → 51d77f9}/packages/error-worker/dist/errorWorkerMain.js +0 -0
  1913. /package/static/{5a29bf2 → 51d77f9}/packages/explorer-worker/dist/explorerViewWorkerMain.js +0 -0
  1914. /package/static/{5a29bf2 → 51d77f9}/packages/extension-detail-view-worker/dist/extensionDetailViewWorkerMain.js +0 -0
  1915. /package/static/{5a29bf2 → 51d77f9}/packages/extension-host-sub-worker/dist/extensionHostSubWorkerMain.js +0 -0
  1916. /package/static/{5a29bf2 → 51d77f9}/packages/extension-management-worker/dist/extensionManagementWorkerMain.js +0 -0
  1917. /package/static/{5a29bf2 → 51d77f9}/packages/extension-search-view-worker/dist/extensionSearchViewWorkerMain.js +0 -0
  1918. /package/static/{5a29bf2 → 51d77f9}/packages/file-search-worker/dist/fileSearchWorkerMain.js +0 -0
  1919. /package/static/{5a29bf2 → 51d77f9}/packages/file-system-worker/dist/fileSystemWorkerMain.js +0 -0
  1920. /package/static/{5a29bf2 → 51d77f9}/packages/find-widget-worker/dist/findWidgetWorkerMain.js +0 -0
  1921. /package/static/{5a29bf2 → 51d77f9}/packages/hover-worker/dist/hoverWorkerMain.js +0 -0
  1922. /package/static/{5a29bf2 → 51d77f9}/packages/icon-theme-worker/dist/iconThemeWorkerMain.js +0 -0
  1923. /package/static/{5a29bf2 → 51d77f9}/packages/iframe-inspector/dist/iframeInspectorWorkerMain.js +0 -0
  1924. /package/static/{5a29bf2 → 51d77f9}/packages/iframe-worker/dist/iframeWorkerMain.js +0 -0
  1925. /package/static/{5a29bf2 → 51d77f9}/packages/keybindings-view-worker/dist/keyBindingsViewWorkerMain.js +0 -0
  1926. /package/static/{5a29bf2 → 51d77f9}/packages/language-models-view/dist/languageModelsViewMain.js +0 -0
  1927. /package/static/{5a29bf2 → 51d77f9}/packages/main-area-worker/dist/mainAreaWorkerMain.js +0 -0
  1928. /package/static/{5a29bf2 → 51d77f9}/packages/markdown-worker/dist/markdownWorkerMain.js +0 -0
  1929. /package/static/{5a29bf2 → 51d77f9}/packages/menu-worker/dist/menuWorkerMain.js +0 -0
  1930. /package/static/{5a29bf2 → 51d77f9}/packages/opener-worker/dist/openerWorkerMain.js +0 -0
  1931. /package/static/{5a29bf2 → 51d77f9}/packages/output-view/dist/outputViewWorkerMain.js +0 -0
  1932. /package/static/{5a29bf2 → 51d77f9}/packages/panel-worker/dist/panelWorkerMain.js +0 -0
  1933. /package/static/{5a29bf2 → 51d77f9}/packages/preload/dist/index.js +0 -0
  1934. /package/static/{5a29bf2 → 51d77f9}/packages/preview-sandbox-worker/dist/previewSandBoxWorkerMain.js +0 -0
  1935. /package/static/{5a29bf2 → 51d77f9}/packages/preview-worker/dist/previewWorkerMain.js +0 -0
  1936. /package/static/{5a29bf2 → 51d77f9}/packages/problems-view/dist/problemsViewWorkerMain.js +0 -0
  1937. /package/static/{5a29bf2 → 51d77f9}/packages/quick-pick-worker/dist/quickPickWorkerMain.js +0 -0
  1938. /package/static/{5a29bf2 → 51d77f9}/packages/references-view/dist/referencesViewWorkerMain.js +0 -0
  1939. /package/static/{5a29bf2 → 51d77f9}/packages/rename-worker/dist/renameWorkerMain.js +0 -0
  1940. /package/static/{5a29bf2 → 51d77f9}/packages/renderer-process/LICENSE +0 -0
  1941. /package/static/{5a29bf2 → 51d77f9}/packages/renderer-process/README.md +0 -0
  1942. /package/static/{5a29bf2 → 51d77f9}/packages/settings-view/dist/settingsViewWorkerMain.js +0 -0
  1943. /package/static/{5a29bf2 → 51d77f9}/packages/source-action-worker/dist/sourceActionWorkerMain.js +0 -0
  1944. /package/static/{5a29bf2 → 51d77f9}/packages/source-control-worker/dist/sourceControlWorkerMain.js +0 -0
  1945. /package/static/{5a29bf2 → 51d77f9}/packages/status-bar-worker/dist/statusBarWorkerMain.js +0 -0
  1946. /package/static/{5a29bf2 → 51d77f9}/packages/syntax-highlighting-worker/dist/syntaxHighlightingWorkerMain.js +0 -0
  1947. /package/static/{5a29bf2 → 51d77f9}/packages/terminal-worker/dist/terminalWorkerMain.js +0 -0
  1948. /package/static/{5a29bf2 → 51d77f9}/packages/text-measurement-worker/dist/textMeasurementWorkerMain.js +0 -0
  1949. /package/static/{5a29bf2 → 51d77f9}/packages/text-search-worker/dist/textSearchWorkerMain.js +0 -0
  1950. /package/static/{5a29bf2 → 51d77f9}/packages/title-bar-worker/dist/titleBarWorkerMain.js +0 -0
  1951. /package/static/{5a29bf2 → 51d77f9}/packages/update-worker/dist/updateWorkerMain.js +0 -0
  1952. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.cpp +0 -0
  1953. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.css +0 -0
  1954. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.csv +0 -0
  1955. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.dart +0 -0
  1956. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.env +0 -0
  1957. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.ex +0 -0
  1958. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.html +0 -0
  1959. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.java +0 -0
  1960. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.jl +0 -0
  1961. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.js +0 -0
  1962. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.json +0 -0
  1963. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.kt +0 -0
  1964. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.pl +0 -0
  1965. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.py +0 -0
  1966. /package/static/{5a29bf2 → 51d77f9}/playground/languages/index.ts +0 -0
  1967. /package/static/{5a29bf2 → 51d77f9}/playground/languages/scrolling.txt +0 -0
  1968. /package/static/{5a29bf2 → 51d77f9}/playground/languages/tsconfig.json +0 -0
  1969. /package/static/{5a29bf2 → 51d77f9}/playground/sample-folder/a.txt +0 -0
  1970. /package/static/{5a29bf2 → 51d77f9}/playground/sample-folder/b.txt +0 -0
  1971. /package/static/{5a29bf2 → 51d77f9}/playground/sample-folder/c.txt +0 -0
@@ -1075,6 +1075,7 @@ const create$2 = rpcId => {
1075
1075
  };
1076
1076
 
1077
1077
  const {
1078
+ invoke: invoke$2,
1078
1079
  set: set$3
1079
1080
  } = create$2(6002);
1080
1081
 
@@ -1121,6 +1122,10 @@ const sendMessagePortToExtensionHostWorker$1 = async (port, rpcId = 0) => {
1121
1122
  const sendMessagePortToChatNetworkWorker = async port => {
1122
1123
  await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToChatNetworkWorker', port, 'HandleMessagePort.handleMessagePort');
1123
1124
  };
1125
+ const confirm = async (message, options) => {
1126
+ const result = await invoke('ConfirmPrompt.prompt', message, options);
1127
+ return result;
1128
+ };
1124
1129
  const activateByEvent$1 = (event, assetDir, platform) => {
1125
1130
  return invoke('ExtensionHostManagement.activateByEvent', event, assetDir, platform);
1126
1131
  };
@@ -1335,6 +1340,12 @@ const backToChats = () => {
1335
1340
  const settings = () => {
1336
1341
  return i18nString('Settings');
1337
1342
  };
1343
+ const chatFocusMode = () => {
1344
+ return i18nString('Switch to chat focus mode');
1345
+ };
1346
+ const normalChatMode = () => {
1347
+ return i18nString('Switch to normal chat mode');
1348
+ };
1338
1349
  const closeChat = () => {
1339
1350
  return i18nString('Close Chat');
1340
1351
  };
@@ -1347,6 +1358,9 @@ const startConversation = () => {
1347
1358
  const composePlaceholder = () => {
1348
1359
  return i18nString('Type your message. Enter to send, Shift+Enter for newline.');
1349
1360
  };
1361
+ const attachImageAsContext = () => {
1362
+ return i18nString('Attach Image as Context');
1363
+ };
1350
1364
  const openRouterApiKeyPlaceholder = () => {
1351
1365
  return i18nString('Enter OpenRouter API key');
1352
1366
  };
@@ -1389,13 +1403,16 @@ const unknownViewMode = () => {
1389
1403
 
1390
1404
  /* eslint-disable @cspell/spellchecker */
1391
1405
 
1392
- const getDefaultModels = () => {
1406
+ const getDefaultModelsTest = () => {
1393
1407
  const defaultModelId = 'test';
1394
1408
  return [{
1395
1409
  id: defaultModelId,
1396
1410
  name: 'test',
1397
1411
  provider: 'test'
1398
- }, {
1412
+ }];
1413
+ };
1414
+ const getDefaultModelsOpenAi = () => {
1415
+ return [{
1399
1416
  id: 'openapi/gpt-5-mini',
1400
1417
  name: 'GPT-5 Mini',
1401
1418
  provider: 'openApi'
@@ -1411,7 +1428,10 @@ const getDefaultModels = () => {
1411
1428
  id: 'openapi/gpt-4.1-mini',
1412
1429
  name: 'GPT-4.1 Mini',
1413
1430
  provider: 'openApi'
1414
- }, {
1431
+ }];
1432
+ };
1433
+ const getDefaultModelsOpenRouter = () => {
1434
+ return [{
1415
1435
  id: 'codex-5.3',
1416
1436
  name: 'Codex 5.3',
1417
1437
  provider: 'openRouter'
@@ -1461,7 +1481,12 @@ const getDefaultModels = () => {
1461
1481
  provider: 'openRouter'
1462
1482
  }];
1463
1483
  };
1484
+ const getDefaultModels = () => {
1485
+ return [...getDefaultModelsTest(), ...getDefaultModelsOpenAi(), ...getDefaultModelsOpenRouter()];
1486
+ };
1487
+
1464
1488
  const createDefaultState = () => {
1489
+ const defaultProjectId = 'project-1';
1465
1490
  const defaultSessionId = 'session-1';
1466
1491
  const defaultModelId = 'test';
1467
1492
  const chatMessageFontSize = 13;
@@ -1475,6 +1500,8 @@ const createDefaultState = () => {
1475
1500
  chatMessageFontFamily: 'system-ui',
1476
1501
  chatMessageFontSize,
1477
1502
  chatMessageLineHeight,
1503
+ composerDropActive: false,
1504
+ composerDropEnabled: true,
1478
1505
  composerFontFamily: 'system-ui',
1479
1506
  composerFontSize,
1480
1507
  composerHeight: composerLineHeight + 8,
@@ -1488,6 +1515,7 @@ const createDefaultState = () => {
1488
1515
  height: 0,
1489
1516
  initial: true,
1490
1517
  inputSource: 'script',
1518
+ lastNormalViewMode: 'list',
1491
1519
  lastSubmittedSessionId: '',
1492
1520
  listItemHeight: 40,
1493
1521
  maxComposerRows: 5,
@@ -1507,12 +1535,21 @@ const createDefaultState = () => {
1507
1535
  openRouterApiKeyState: 'idle',
1508
1536
  passIncludeObfuscation: false,
1509
1537
  platform: 0,
1538
+ projectExpandedIds: [defaultProjectId],
1539
+ projectListScrollTop: 0,
1540
+ projects: [{
1541
+ id: defaultProjectId,
1542
+ name: '_blank',
1543
+ uri: ''
1544
+ }],
1510
1545
  renamingSessionId: '',
1511
1546
  selectedModelId: defaultModelId,
1547
+ selectedProjectId: defaultProjectId,
1512
1548
  selectedSessionId: defaultSessionId,
1513
1549
  sessions: [{
1514
1550
  id: defaultSessionId,
1515
1551
  messages: [],
1552
+ projectId: defaultProjectId,
1516
1553
  title: defaultSessionTitle()
1517
1554
  }],
1518
1555
  streamingEnabled: true,
@@ -1520,6 +1557,7 @@ const createDefaultState = () => {
1520
1557
  tokensUsed: 0,
1521
1558
  uid: 0,
1522
1559
  usageOverviewEnabled: false,
1560
+ useChatNetworkWorkerForRequests: false,
1523
1561
  useMockApi: false,
1524
1562
  viewMode: 'list',
1525
1563
  warningCount: 0,
@@ -1553,656 +1591,145 @@ const create = (uid, x, y, width, height, platform, assetDir) => {
1553
1591
  set(uid, state, state);
1554
1592
  };
1555
1593
 
1556
- const parseRenderHtmlArguments = rawArguments => {
1557
- try {
1558
- const parsed = JSON.parse(rawArguments);
1559
- if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
1560
- return undefined;
1561
- }
1562
- const html = typeof Reflect.get(parsed, 'html') === 'string' ? String(Reflect.get(parsed, 'html')) : '';
1563
- if (!html) {
1564
- return undefined;
1565
- }
1566
- const css = typeof Reflect.get(parsed, 'css') === 'string' ? String(Reflect.get(parsed, 'css')) : '';
1567
- const title = typeof Reflect.get(parsed, 'title') === 'string' ? String(Reflect.get(parsed, 'title')) : 'visual preview';
1568
- return {
1569
- css,
1570
- html,
1571
- title
1572
- };
1573
- } catch {
1574
- return undefined;
1594
+ const toError = error => {
1595
+ if (error instanceof Error) {
1596
+ return error;
1575
1597
  }
1598
+ return new Error('IndexedDB request failed');
1576
1599
  };
1577
1600
 
1578
- const getRenderHtmlCss = (sessions, selectedSessionId) => {
1579
- const selectedSession = sessions.find(session => session.id === selectedSessionId);
1580
- if (!selectedSession) {
1581
- return '';
1582
- }
1583
- const cssRules = new Set();
1584
- for (const message of selectedSession.messages) {
1585
- if (message.role !== 'assistant' || !message.toolCalls) {
1586
- continue;
1587
- }
1588
- for (const toolCall of message.toolCalls) {
1589
- if (toolCall.name !== 'render_html') {
1590
- continue;
1591
- }
1592
- const parsed = parseRenderHtmlArguments(toolCall.arguments);
1593
- if (!parsed || !parsed.css.trim()) {
1594
- continue;
1595
- }
1596
- cssRules.add(parsed.css);
1597
- }
1598
- }
1599
- return [...cssRules].join('\n\n');
1601
+ const requestToPromise = async createRequest => {
1602
+ const request = createRequest();
1603
+ const {
1604
+ promise,
1605
+ reject,
1606
+ resolve
1607
+ } = Promise.withResolvers();
1608
+ request.addEventListener('success', () => {
1609
+ resolve(request.result);
1610
+ });
1611
+ request.addEventListener('error', () => {
1612
+ reject(toError(request.error));
1613
+ });
1614
+ return promise;
1600
1615
  };
1601
1616
 
1602
- const isEqual$1 = (oldState, newState) => {
1603
- const oldRenderHtmlCss = getRenderHtmlCss(oldState.sessions, oldState.selectedSessionId);
1604
- const newRenderHtmlCss = getRenderHtmlCss(newState.sessions, newState.selectedSessionId);
1605
- return oldState.initial === newState.initial && oldState.chatMessageFontFamily === newState.chatMessageFontFamily && oldState.chatMessageFontSize === newState.chatMessageFontSize && oldState.chatMessageLineHeight === newState.chatMessageLineHeight && oldState.composerHeight === newState.composerHeight && oldState.composerLineHeight === newState.composerLineHeight && oldState.composerFontFamily === newState.composerFontFamily && oldState.composerFontSize === newState.composerFontSize && oldState.listItemHeight === newState.listItemHeight && oldRenderHtmlCss === newRenderHtmlCss;
1617
+ const transactionToPromise = async createTransaction => {
1618
+ const transaction = createTransaction();
1619
+ const {
1620
+ promise,
1621
+ reject,
1622
+ resolve
1623
+ } = Promise.withResolvers();
1624
+ transaction.addEventListener('complete', () => {
1625
+ resolve();
1626
+ });
1627
+ transaction.addEventListener('error', () => {
1628
+ reject(toError(transaction.error));
1629
+ });
1630
+ transaction.addEventListener('abort', () => {
1631
+ reject(toError(transaction.error));
1632
+ });
1633
+ return promise;
1606
1634
  };
1607
1635
 
1608
- const diffFocus = (oldState, newState) => {
1609
- if (!newState.focused) {
1610
- return true;
1611
- }
1612
- return oldState.focus === newState.focus && oldState.focused === newState.focused;
1636
+ const toChatViewEvent = event => {
1637
+ const {
1638
+ eventId,
1639
+ ...chatViewEvent
1640
+ } = event;
1641
+ return chatViewEvent;
1613
1642
  };
1614
-
1615
- const isEqual = (oldState, newState) => {
1616
- return oldState.composerValue === newState.composerValue && oldState.initial === newState.initial && oldState.renamingSessionId === newState.renamingSessionId && oldState.selectedModelId === newState.selectedModelId && oldState.selectedSessionId === newState.selectedSessionId && oldState.sessions === newState.sessions && oldState.tokensMax === newState.tokensMax && oldState.tokensUsed === newState.tokensUsed && oldState.usageOverviewEnabled === newState.usageOverviewEnabled && oldState.viewMode === newState.viewMode;
1643
+ const now$1 = () => {
1644
+ return new Date().toISOString();
1617
1645
  };
1618
-
1619
- const diffScrollTop = (oldState, newState) => {
1620
- return oldState.chatListScrollTop === newState.chatListScrollTop && oldState.messagesScrollTop === newState.messagesScrollTop;
1646
+ const isSameMessage$1 = (a, b) => {
1647
+ return a.id === b.id && a.inProgress === b.inProgress && a.role === b.role && a.text === b.text && a.time === b.time && JSON.stringify(a.toolCalls || []) === JSON.stringify(b.toolCalls || []);
1621
1648
  };
1622
-
1623
- const RenderItems = 4;
1624
- const RenderFocus = 6;
1625
- const RenderFocusContext = 7;
1626
- const RenderValue = 8;
1627
- const RenderCss = 10;
1628
- const RenderIncremental = 11;
1629
- const RenderScrollTop = 12;
1630
-
1631
- const diffValue = (oldState, newState) => {
1632
- if (oldState.composerValue === newState.composerValue) {
1633
- return true;
1649
+ const canAppendMessages$1 = (previousMessages, nextMessages) => {
1650
+ if (nextMessages.length < previousMessages.length) {
1651
+ return false;
1634
1652
  }
1635
- return newState.inputSource !== 'script';
1653
+ return previousMessages.every((message, index) => isSameMessage$1(message, nextMessages[index]));
1636
1654
  };
1637
-
1638
- const modules = [isEqual, diffValue, diffFocus, isEqual$1, diffFocus, diffScrollTop];
1639
- const numbers = [RenderIncremental, RenderValue, RenderFocus, RenderCss, RenderFocusContext, RenderScrollTop];
1640
-
1641
- const diff = (oldState, newState) => {
1642
- const diffResult = [];
1643
- for (let i = 0; i < modules.length; i++) {
1644
- const fn = modules[i];
1645
- if (!fn(oldState, newState)) {
1646
- diffResult.push(numbers[i]);
1655
+ const canUpdateMessages$1 = (previousMessages, nextMessages) => {
1656
+ if (previousMessages.length !== nextMessages.length) {
1657
+ return false;
1658
+ }
1659
+ for (let i = 0; i < previousMessages.length; i += 1) {
1660
+ const previous = previousMessages[i];
1661
+ const next = nextMessages[i];
1662
+ if (previous.id !== next.id || previous.role !== next.role) {
1663
+ return false;
1647
1664
  }
1648
1665
  }
1649
- return diffResult;
1666
+ return true;
1650
1667
  };
1651
-
1652
- const diff2 = uid => {
1653
- const {
1654
- newState,
1655
- oldState
1656
- } = get$1(uid);
1657
- const result = diff(oldState, newState);
1658
- return result;
1659
- };
1660
-
1661
- const Button$2 = 'button';
1662
-
1663
- const Audio = 0;
1664
- const Button$1 = 1;
1665
- const Col = 2;
1666
- const ColGroup = 3;
1667
- const Div = 4;
1668
- const H1 = 5;
1669
- const Input = 6;
1670
- const Span = 8;
1671
- const Table = 9;
1672
- const TBody = 10;
1673
- const Td = 11;
1674
- const Text = 12;
1675
- const Th = 13;
1676
- const THead = 14;
1677
- const Tr = 15;
1678
- const I = 16;
1679
- const Img = 17;
1680
- const H2 = 22;
1681
- const H3 = 23;
1682
- const H4 = 24;
1683
- const H5 = 25;
1684
- const H6 = 26;
1685
- const Article = 27;
1686
- const Aside = 28;
1687
- const Footer = 29;
1688
- const Header = 30;
1689
- const Nav = 40;
1690
- const Section = 41;
1691
- const Dd = 43;
1692
- const Dl = 44;
1693
- const Figcaption = 45;
1694
- const Figure = 46;
1695
- const Hr = 47;
1696
- const Li = 48;
1697
- const Ol = 49;
1698
- const P = 50;
1699
- const Pre = 51;
1700
- const A = 53;
1701
- const Abbr = 54;
1702
- const Br = 55;
1703
- const Tfoot = 59;
1704
- const Ul = 60;
1705
- const TextArea = 62;
1706
- const Select$1 = 63;
1707
- const Option$1 = 64;
1708
- const Code = 65;
1709
- const Label$1 = 66;
1710
- const Dt = 67;
1711
- const Main = 69;
1712
- const Strong = 70;
1713
- const Em = 71;
1714
- const Reference = 100;
1715
-
1716
- const Enter = 3;
1717
-
1718
- const Shift = 1 << 10 >>> 0;
1719
-
1720
- const mergeClassNames = (...classNames) => {
1721
- return classNames.filter(Boolean).join(' ');
1722
- };
1723
-
1724
- const text = data => {
1725
- return {
1726
- childCount: 0,
1727
- text: data,
1728
- type: Text
1729
- };
1730
- };
1731
-
1732
- const SetText = 1;
1733
- const Replace = 2;
1734
- const SetAttribute = 3;
1735
- const RemoveAttribute = 4;
1736
- const Add = 6;
1737
- const NavigateChild = 7;
1738
- const NavigateParent = 8;
1739
- const RemoveChild = 9;
1740
- const NavigateSibling = 10;
1741
- const SetReferenceNodeUid = 11;
1742
-
1743
- const isKey = key => {
1744
- return key !== 'type' && key !== 'childCount';
1745
- };
1746
-
1747
- const getKeys = node => {
1748
- const keys = Object.keys(node).filter(isKey);
1749
- return keys;
1750
- };
1751
-
1752
- const arrayToTree = nodes => {
1753
- const result = [];
1754
- let i = 0;
1755
- while (i < nodes.length) {
1756
- const node = nodes[i];
1757
- const {
1758
- children,
1759
- nodesConsumed
1760
- } = getChildrenWithCount(nodes, i + 1, node.childCount || 0);
1761
- result.push({
1762
- node,
1763
- children
1764
- });
1765
- i += 1 + nodesConsumed;
1766
- }
1767
- return result;
1768
- };
1769
- const getChildrenWithCount = (nodes, startIndex, childCount) => {
1770
- if (childCount === 0) {
1771
- return {
1772
- children: [],
1773
- nodesConsumed: 0
1774
- };
1775
- }
1776
- const children = [];
1777
- let i = startIndex;
1778
- let remaining = childCount;
1779
- let totalConsumed = 0;
1780
- while (remaining > 0 && i < nodes.length) {
1781
- const node = nodes[i];
1782
- const nodeChildCount = node.childCount || 0;
1783
- const {
1784
- children: nodeChildren,
1785
- nodesConsumed
1786
- } = getChildrenWithCount(nodes, i + 1, nodeChildCount);
1787
- children.push({
1788
- node,
1789
- children: nodeChildren
1790
- });
1791
- const nodeSize = 1 + nodesConsumed;
1792
- i += nodeSize;
1793
- totalConsumed += nodeSize;
1794
- remaining--;
1795
- }
1796
- return {
1797
- children,
1798
- nodesConsumed: totalConsumed
1799
- };
1800
- };
1801
-
1802
- const compareNodes = (oldNode, newNode) => {
1803
- const patches = [];
1804
- // Check if node type changed - return null to signal incompatible nodes
1805
- // (caller should handle this with a Replace operation)
1806
- if (oldNode.type !== newNode.type) {
1807
- return null;
1808
- }
1809
- // Handle reference nodes - special handling for uid changes
1810
- if (oldNode.type === Reference) {
1811
- if (oldNode.uid !== newNode.uid) {
1812
- patches.push({
1813
- type: SetReferenceNodeUid,
1814
- uid: newNode.uid
1815
- });
1816
- }
1817
- return patches;
1818
- }
1819
- // Handle text nodes
1820
- if (oldNode.type === Text && newNode.type === Text) {
1821
- if (oldNode.text !== newNode.text) {
1822
- patches.push({
1823
- type: SetText,
1824
- value: newNode.text
1825
- });
1826
- }
1827
- return patches;
1828
- }
1829
- // Compare attributes
1830
- const oldKeys = getKeys(oldNode);
1831
- const newKeys = getKeys(newNode);
1832
- // Check for attribute changes
1833
- for (const key of newKeys) {
1834
- if (oldNode[key] !== newNode[key]) {
1835
- patches.push({
1836
- type: SetAttribute,
1837
- key,
1838
- value: newNode[key]
1839
- });
1840
- }
1841
- }
1842
- // Check for removed attributes
1843
- for (const key of oldKeys) {
1844
- if (!(key in newNode)) {
1845
- patches.push({
1846
- type: RemoveAttribute,
1847
- key
1848
- });
1849
- }
1850
- }
1851
- return patches;
1852
- };
1853
-
1854
- const treeToArray = node => {
1855
- const result = [node.node];
1856
- for (const child of node.children) {
1857
- result.push(...treeToArray(child));
1858
- }
1859
- return result;
1860
- };
1861
-
1862
- const diffChildren = (oldChildren, newChildren, patches) => {
1863
- const maxLength = Math.max(oldChildren.length, newChildren.length);
1864
- // Track where we are: -1 means at parent, >= 0 means at child index
1865
- let currentChildIndex = -1;
1866
- // Collect indices of children to remove (we'll add these patches at the end in reverse order)
1867
- const indicesToRemove = [];
1868
- for (let i = 0; i < maxLength; i++) {
1869
- const oldNode = oldChildren[i];
1870
- const newNode = newChildren[i];
1871
- if (!oldNode && !newNode) {
1872
- continue;
1873
- }
1874
- if (!oldNode) {
1875
- // Add new node - we should be at the parent
1876
- if (currentChildIndex >= 0) {
1877
- // Navigate back to parent
1878
- patches.push({
1879
- type: NavigateParent
1880
- });
1881
- currentChildIndex = -1;
1882
- }
1883
- // Flatten the entire subtree so renderInternal can handle it
1884
- const flatNodes = treeToArray(newNode);
1885
- patches.push({
1886
- type: Add,
1887
- nodes: flatNodes
1888
- });
1889
- } else if (newNode) {
1890
- // Compare nodes to see if we need any patches
1891
- const nodePatches = compareNodes(oldNode.node, newNode.node);
1892
- // If nodePatches is null, the node types are incompatible - need to replace
1893
- if (nodePatches === null) {
1894
- // Navigate to this child
1895
- if (currentChildIndex === -1) {
1896
- patches.push({
1897
- type: NavigateChild,
1898
- index: i
1899
- });
1900
- currentChildIndex = i;
1901
- } else if (currentChildIndex !== i) {
1902
- patches.push({
1903
- type: NavigateSibling,
1904
- index: i
1905
- });
1906
- currentChildIndex = i;
1907
- }
1908
- // Replace the entire subtree
1909
- const flatNodes = treeToArray(newNode);
1910
- patches.push({
1911
- type: Replace,
1912
- nodes: flatNodes
1913
- });
1914
- // After replace, we're at the new element (same position)
1915
- continue;
1916
- }
1917
- // Check if we need to recurse into children
1918
- const hasChildrenToCompare = oldNode.children.length > 0 || newNode.children.length > 0;
1919
- // Only navigate to this element if we need to do something
1920
- if (nodePatches.length > 0 || hasChildrenToCompare) {
1921
- // Navigate to this child if not already there
1922
- if (currentChildIndex === -1) {
1923
- patches.push({
1924
- type: NavigateChild,
1925
- index: i
1926
- });
1927
- currentChildIndex = i;
1928
- } else if (currentChildIndex !== i) {
1929
- patches.push({
1930
- type: NavigateSibling,
1931
- index: i
1932
- });
1933
- currentChildIndex = i;
1934
- }
1935
- // Apply node patches (these apply to the current element, not children)
1936
- if (nodePatches.length > 0) {
1937
- patches.push(...nodePatches);
1938
- }
1939
- // Compare children recursively
1940
- if (hasChildrenToCompare) {
1941
- diffChildren(oldNode.children, newNode.children, patches);
1942
- }
1943
- }
1944
- } else {
1945
- // Remove old node - collect the index for later removal
1946
- indicesToRemove.push(i);
1947
- }
1948
- }
1949
- // Navigate back to parent if we ended at a child
1950
- if (currentChildIndex >= 0) {
1951
- patches.push({
1952
- type: NavigateParent
1953
- });
1954
- currentChildIndex = -1;
1955
- }
1956
- // Add remove patches in reverse order (highest index first)
1957
- // This ensures indices remain valid as we remove
1958
- for (let j = indicesToRemove.length - 1; j >= 0; j--) {
1959
- patches.push({
1960
- type: RemoveChild,
1961
- index: indicesToRemove[j]
1962
- });
1963
- }
1964
- };
1965
- const diffTrees = (oldTree, newTree, patches, path) => {
1966
- // At the root level (path.length === 0), we're already AT the element
1967
- // So we compare the root node directly, then compare its children
1968
- if (path.length === 0 && oldTree.length === 1 && newTree.length === 1) {
1969
- const oldNode = oldTree[0];
1970
- const newNode = newTree[0];
1971
- // Compare root nodes
1972
- const nodePatches = compareNodes(oldNode.node, newNode.node);
1973
- // If nodePatches is null, the root node types are incompatible - need to replace
1974
- if (nodePatches === null) {
1975
- const flatNodes = treeToArray(newNode);
1976
- patches.push({
1977
- type: Replace,
1978
- nodes: flatNodes
1979
- });
1980
- return;
1981
- }
1982
- if (nodePatches.length > 0) {
1983
- patches.push(...nodePatches);
1984
- }
1985
- // Compare children
1986
- if (oldNode.children.length > 0 || newNode.children.length > 0) {
1987
- diffChildren(oldNode.children, newNode.children, patches);
1988
- }
1989
- } else {
1990
- // Non-root level or multiple root elements - use the regular comparison
1991
- diffChildren(oldTree, newTree, patches);
1992
- }
1993
- };
1994
-
1995
- const removeTrailingNavigationPatches = patches => {
1996
- // Find the last non-navigation patch
1997
- let lastNonNavigationIndex = -1;
1998
- for (let i = patches.length - 1; i >= 0; i--) {
1999
- const patch = patches[i];
2000
- if (patch.type !== NavigateChild && patch.type !== NavigateParent && patch.type !== NavigateSibling) {
2001
- lastNonNavigationIndex = i;
2002
- break;
2003
- }
2004
- }
2005
- // Return patches up to and including the last non-navigation patch
2006
- return lastNonNavigationIndex === -1 ? [] : patches.slice(0, lastNonNavigationIndex + 1);
2007
- };
2008
-
2009
- const diffTree = (oldNodes, newNodes) => {
2010
- // Step 1: Convert flat arrays to tree structures
2011
- const oldTree = arrayToTree(oldNodes);
2012
- const newTree = arrayToTree(newNodes);
2013
- // Step 3: Compare the trees
2014
- const patches = [];
2015
- diffTrees(oldTree, newTree, patches, []);
2016
- // Remove trailing navigation patches since they serve no purpose
2017
- return removeTrailingNavigationPatches(patches);
2018
- };
2019
-
2020
- const getKeyBindings = () => {
2021
- return [{
2022
- command: 'Chat.handleSubmit',
2023
- key: Enter,
2024
- when: FocusChatInput
2025
- }, {
2026
- command: 'Chat.enterNewLine',
2027
- key: Shift | Enter,
2028
- when: FocusChatInput
2029
- }];
2030
- };
2031
-
2032
- const getSelectedSessionId = state => {
2033
- return state.selectedSessionId;
2034
- };
2035
-
2036
- const getListIndex = (state, eventX, eventY) => {
2037
- const {
2038
- headerHeight,
2039
- height,
2040
- listItemHeight,
2041
- width,
2042
- x,
2043
- y
2044
- } = state;
2045
- const relativeX = eventX - x;
2046
- const relativeY = eventY - y - headerHeight;
2047
- if (relativeX < 0 || relativeY < 0 || relativeX >= width || relativeY >= height - headerHeight) {
2048
- return -1;
2049
- }
2050
- return Math.floor(relativeY / listItemHeight);
2051
- };
2052
-
2053
- const CHAT_LIST_ITEM_CONTEXT_MENU = 'ChatListItemContextMenu';
2054
- const handleChatListContextMenu = async (state, eventX, eventY) => {
2055
- const index = getListIndex(state, eventX, eventY);
2056
- if (index === -1) {
2057
- return state;
2058
- }
2059
- const item = state.sessions[index];
2060
- if (!item) {
2061
- return state;
2062
- }
2063
- await invoke('ContextMenu.show', eventX, eventY, CHAT_LIST_ITEM_CONTEXT_MENU, item.id);
2064
- return state;
2065
- };
2066
-
2067
- const toError = error => {
2068
- if (error instanceof Error) {
2069
- return error;
2070
- }
2071
- return new Error('IndexedDB request failed');
2072
- };
2073
-
2074
- const requestToPromise = async createRequest => {
2075
- const request = createRequest();
2076
- const {
2077
- promise,
2078
- reject,
2079
- resolve
2080
- } = Promise.withResolvers();
2081
- request.addEventListener('success', () => {
2082
- resolve(request.result);
2083
- });
2084
- request.addEventListener('error', () => {
2085
- reject(toError(request.error));
2086
- });
2087
- return promise;
2088
- };
2089
-
2090
- const transactionToPromise = async createTransaction => {
2091
- const transaction = createTransaction();
2092
- const {
2093
- promise,
2094
- reject,
2095
- resolve
2096
- } = Promise.withResolvers();
2097
- transaction.addEventListener('complete', () => {
2098
- resolve();
2099
- });
2100
- transaction.addEventListener('error', () => {
2101
- reject(toError(transaction.error));
2102
- });
2103
- transaction.addEventListener('abort', () => {
2104
- reject(toError(transaction.error));
2105
- });
2106
- return promise;
2107
- };
2108
-
2109
- const toChatViewEvent = event => {
2110
- const {
2111
- eventId,
2112
- ...chatViewEvent
2113
- } = event;
2114
- return chatViewEvent;
2115
- };
2116
- const now$1 = () => {
2117
- return new Date().toISOString();
2118
- };
2119
- const isSameMessage$1 = (a, b) => {
2120
- return a.id === b.id && a.inProgress === b.inProgress && a.role === b.role && a.text === b.text && a.time === b.time && JSON.stringify(a.toolCalls || []) === JSON.stringify(b.toolCalls || []);
2121
- };
2122
- const canAppendMessages$1 = (previousMessages, nextMessages) => {
2123
- if (nextMessages.length < previousMessages.length) {
2124
- return false;
2125
- }
2126
- return previousMessages.every((message, index) => isSameMessage$1(message, nextMessages[index]));
2127
- };
2128
- const canUpdateMessages$1 = (previousMessages, nextMessages) => {
2129
- if (previousMessages.length !== nextMessages.length) {
2130
- return false;
2131
- }
2132
- for (let i = 0; i < previousMessages.length; i += 1) {
2133
- const previous = previousMessages[i];
2134
- const next = nextMessages[i];
2135
- if (previous.id !== next.id || previous.role !== next.role) {
2136
- return false;
2137
- }
2138
- }
2139
- return true;
2140
- };
2141
- const getMutationEvents$1 = (previous, next) => {
2142
- const timestamp = now$1();
2143
- const events = [];
2144
- if (!previous) {
2145
- events.push({
2146
- sessionId: next.id,
2147
- timestamp,
2148
- title: next.title,
2149
- type: 'chat-session-created'
2150
- });
2151
- for (const message of next.messages) {
2152
- events.push({
2153
- message,
2154
- sessionId: next.id,
2155
- timestamp,
2156
- type: 'chat-message-added'
2157
- });
2158
- }
2159
- return events;
2160
- }
2161
- if (previous.title !== next.title) {
2162
- events.push({
2163
- sessionId: next.id,
2164
- timestamp,
2165
- title: next.title,
2166
- type: 'chat-session-title-updated'
2167
- });
2168
- }
2169
- if (canAppendMessages$1(previous.messages, next.messages)) {
2170
- for (let i = previous.messages.length; i < next.messages.length; i += 1) {
2171
- events.push({
2172
- message: next.messages[i],
2173
- sessionId: next.id,
2174
- timestamp,
2175
- type: 'chat-message-added'
2176
- });
2177
- }
2178
- return events;
2179
- }
2180
- if (canUpdateMessages$1(previous.messages, next.messages)) {
2181
- for (let i = 0; i < previous.messages.length; i += 1) {
2182
- const previousMessage = previous.messages[i];
2183
- const nextMessage = next.messages[i];
2184
- if (!isSameMessage$1(previousMessage, nextMessage)) {
2185
- events.push({
2186
- inProgress: nextMessage.inProgress,
2187
- messageId: nextMessage.id,
2188
- sessionId: next.id,
2189
- text: nextMessage.text,
2190
- time: nextMessage.time,
2191
- timestamp,
2192
- toolCalls: nextMessage.toolCalls,
2193
- type: 'chat-message-updated'
2194
- });
2195
- }
2196
- }
2197
- return events;
2198
- }
2199
- events.push({
2200
- messages: [...next.messages],
2201
- sessionId: next.id,
2202
- timestamp,
2203
- type: 'chat-session-messages-replaced'
2204
- });
2205
- return events;
1668
+ const getMutationEvents$1 = (previous, next) => {
1669
+ const timestamp = now$1();
1670
+ const events = [];
1671
+ if (!previous) {
1672
+ events.push({
1673
+ sessionId: next.id,
1674
+ timestamp,
1675
+ title: next.title,
1676
+ type: 'chat-session-created'
1677
+ });
1678
+ for (const message of next.messages) {
1679
+ events.push({
1680
+ message,
1681
+ sessionId: next.id,
1682
+ timestamp,
1683
+ type: 'chat-message-added'
1684
+ });
1685
+ }
1686
+ return events;
1687
+ }
1688
+ if (previous.title !== next.title) {
1689
+ events.push({
1690
+ sessionId: next.id,
1691
+ timestamp,
1692
+ title: next.title,
1693
+ type: 'chat-session-title-updated'
1694
+ });
1695
+ }
1696
+ if (canAppendMessages$1(previous.messages, next.messages)) {
1697
+ for (let i = previous.messages.length; i < next.messages.length; i += 1) {
1698
+ events.push({
1699
+ message: next.messages[i],
1700
+ sessionId: next.id,
1701
+ timestamp,
1702
+ type: 'chat-message-added'
1703
+ });
1704
+ }
1705
+ return events;
1706
+ }
1707
+ if (canUpdateMessages$1(previous.messages, next.messages)) {
1708
+ for (let i = 0; i < previous.messages.length; i += 1) {
1709
+ const previousMessage = previous.messages[i];
1710
+ const nextMessage = next.messages[i];
1711
+ if (!isSameMessage$1(previousMessage, nextMessage)) {
1712
+ events.push({
1713
+ inProgress: nextMessage.inProgress,
1714
+ messageId: nextMessage.id,
1715
+ sessionId: next.id,
1716
+ text: nextMessage.text,
1717
+ time: nextMessage.time,
1718
+ timestamp,
1719
+ toolCalls: nextMessage.toolCalls,
1720
+ type: 'chat-message-updated'
1721
+ });
1722
+ }
1723
+ }
1724
+ return events;
1725
+ }
1726
+ events.push({
1727
+ messages: [...next.messages],
1728
+ sessionId: next.id,
1729
+ timestamp,
1730
+ type: 'chat-session-messages-replaced'
1731
+ });
1732
+ return events;
2206
1733
  };
2207
1734
  const replaySession$1 = (id, summary, events) => {
2208
1735
  let deleted = false;
@@ -2642,29 +2169,49 @@ const createDefaultStorage = () => {
2642
2169
  let chatSessionStorage = createDefaultStorage();
2643
2170
  const listChatSessions = async () => {
2644
2171
  const sessions = await chatSessionStorage.listSessions();
2645
- return sessions.map(session => ({
2646
- id: session.id,
2647
- messages: [],
2648
- title: session.title
2649
- }));
2172
+ return sessions.map(session => {
2173
+ const summary = {
2174
+ id: session.id,
2175
+ messages: [],
2176
+ title: session.title
2177
+ };
2178
+ if (!session.projectId) {
2179
+ return summary;
2180
+ }
2181
+ return {
2182
+ ...summary,
2183
+ projectId: session.projectId
2184
+ };
2185
+ });
2650
2186
  };
2651
2187
  const getChatSession = async id => {
2652
2188
  const session = await chatSessionStorage.getSession(id);
2653
2189
  if (!session) {
2654
2190
  return undefined;
2655
2191
  }
2656
- return {
2192
+ const result = {
2657
2193
  id: session.id,
2658
2194
  messages: [...session.messages],
2659
2195
  title: session.title
2660
2196
  };
2197
+ if (!session.projectId) {
2198
+ return result;
2199
+ }
2200
+ return {
2201
+ ...result,
2202
+ projectId: session.projectId
2203
+ };
2661
2204
  };
2662
2205
  const saveChatSession = async session => {
2663
- await chatSessionStorage.setSession({
2206
+ const value = {
2664
2207
  id: session.id,
2665
2208
  messages: [...session.messages],
2666
2209
  title: session.title
2667
- });
2210
+ };
2211
+ await chatSessionStorage.setSession(session.projectId ? {
2212
+ ...value,
2213
+ projectId: session.projectId
2214
+ } : value);
2668
2215
  };
2669
2216
  const deleteChatSession = async id => {
2670
2217
  await chatSessionStorage.deleteSession(id);
@@ -2676,26 +2223,6 @@ const appendChatViewEvent = async event => {
2676
2223
  await chatSessionStorage.appendEvent(event);
2677
2224
  };
2678
2225
 
2679
- const generateSessionId = () => {
2680
- return crypto.randomUUID();
2681
- };
2682
-
2683
- const createSession = async state => {
2684
- const id = generateSessionId();
2685
- const session = {
2686
- id,
2687
- messages: [],
2688
- title: `Chat ${state.sessions.length + 1}`
2689
- };
2690
- await saveChatSession(session);
2691
- return {
2692
- ...state,
2693
- renamingSessionId: '',
2694
- selectedSessionId: id,
2695
- sessions: [...state.sessions, session]
2696
- };
2697
- };
2698
-
2699
2226
  const getNextSelectedSessionId = (sessions, deletedId) => {
2700
2227
  if (sessions.length === 0) {
2701
2228
  return '';
@@ -2708,6 +2235,17 @@ const getNextSelectedSessionId = (sessions, deletedId) => {
2708
2235
  return sessions[nextIndex].id;
2709
2236
  };
2710
2237
 
2238
+ const getVisibleSessions = (sessions, selectedProjectId) => {
2239
+ if (!selectedProjectId) {
2240
+ return sessions;
2241
+ }
2242
+ const hasAssignedProjects = sessions.some(session => !!session.projectId);
2243
+ if (!hasAssignedProjects) {
2244
+ return sessions;
2245
+ }
2246
+ return sessions.filter(session => session.projectId === selectedProjectId);
2247
+ };
2248
+
2711
2249
  const deleteSession = async (state, id) => {
2712
2250
  const {
2713
2251
  renamingSessionId,
@@ -2745,423 +2283,671 @@ const deleteSession = async (state, id) => {
2745
2283
  sessions: hydratedSessions
2746
2284
  };
2747
2285
  };
2286
+ const deleteSessionAtIndex = async (state, index) => {
2287
+ const visibleSessions = getVisibleSessions(state.sessions, state.selectedProjectId);
2288
+ const session = visibleSessions[index];
2289
+ if (!session) {
2290
+ return state;
2291
+ }
2292
+ return deleteSession(state, session.id);
2293
+ };
2748
2294
 
2749
- const handleClickOpenApiApiKeySettings = async state => {
2750
- await invoke('Main.openUri', 'app://settings.json');
2751
- return state;
2295
+ const parseRenderHtmlArguments = rawArguments => {
2296
+ try {
2297
+ const parsed = JSON.parse(rawArguments);
2298
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
2299
+ return undefined;
2300
+ }
2301
+ const html = typeof Reflect.get(parsed, 'html') === 'string' ? String(Reflect.get(parsed, 'html')) : '';
2302
+ if (!html) {
2303
+ return undefined;
2304
+ }
2305
+ const css = typeof Reflect.get(parsed, 'css') === 'string' ? String(Reflect.get(parsed, 'css')) : '';
2306
+ const title = typeof Reflect.get(parsed, 'title') === 'string' ? String(Reflect.get(parsed, 'title')) : 'visual preview';
2307
+ return {
2308
+ css,
2309
+ html,
2310
+ title
2311
+ };
2312
+ } catch {
2313
+ return undefined;
2314
+ }
2752
2315
  };
2753
2316
 
2754
- const handleClickOpenApiApiKeyWebsite = async state => {
2755
- await openExternal(state.openApiApiKeysSettingsUrl);
2756
- return state;
2317
+ const getRenderHtmlCss = (sessions, selectedSessionId) => {
2318
+ const selectedSession = sessions.find(session => session.id === selectedSessionId);
2319
+ if (!selectedSession) {
2320
+ return '';
2321
+ }
2322
+ const cssRules = new Set();
2323
+ for (const message of selectedSession.messages) {
2324
+ if (message.role !== 'assistant' || !message.toolCalls) {
2325
+ continue;
2326
+ }
2327
+ for (const toolCall of message.toolCalls) {
2328
+ if (toolCall.name !== 'render_html') {
2329
+ continue;
2330
+ }
2331
+ const parsed = parseRenderHtmlArguments(toolCall.arguments);
2332
+ if (!parsed || !parsed.css.trim()) {
2333
+ continue;
2334
+ }
2335
+ cssRules.add(parsed.css);
2336
+ }
2337
+ }
2338
+ return [...cssRules].join('\n\n');
2757
2339
  };
2758
2340
 
2759
- const handleClickOpenRouterApiKeySettings = async state => {
2760
- await invoke('Main.openUri', 'app://settings.json');
2761
- return state;
2341
+ const isEqual$1 = (oldState, newState) => {
2342
+ const oldRenderHtmlCss = getRenderHtmlCss(oldState.sessions, oldState.selectedSessionId);
2343
+ const newRenderHtmlCss = getRenderHtmlCss(newState.sessions, newState.selectedSessionId);
2344
+ return oldState.initial === newState.initial && oldState.chatMessageFontFamily === newState.chatMessageFontFamily && oldState.chatMessageFontSize === newState.chatMessageFontSize && oldState.chatMessageLineHeight === newState.chatMessageLineHeight && oldState.composerHeight === newState.composerHeight && oldState.composerLineHeight === newState.composerLineHeight && oldState.composerFontFamily === newState.composerFontFamily && oldState.composerFontSize === newState.composerFontSize && oldState.listItemHeight === newState.listItemHeight && oldRenderHtmlCss === newRenderHtmlCss;
2762
2345
  };
2763
2346
 
2764
- const handleClickOpenRouterApiKeyWebsite = async state => {
2765
- await openExternal(state.openRouterApiKeysSettingsUrl);
2766
- return state;
2347
+ const diffFocus = (oldState, newState) => {
2348
+ if (!newState.focused) {
2349
+ return true;
2350
+ }
2351
+ return oldState.focus === newState.focus && oldState.focused === newState.focused;
2767
2352
  };
2768
2353
 
2769
- const openApiApiKeyRequiredMessage = 'OpenAI API key is not configured. Enter your OpenAI API key below and click Save.';
2770
- const openApiRequestFailedMessage = 'OpenAI request failed.';
2771
- const openApiRequestFailedOfflineMessage = 'OpenAI request failed because you are offline. Please check your internet connection.';
2772
- const openRouterApiKeyRequiredMessage = 'OpenRouter API key is not configured. Enter your OpenRouter API key below and click Save.';
2773
- const openRouterRequestFailedMessage = 'OpenRouter request failed. Possible reasons:';
2774
- const openRouterTooManyRequestsMessage = 'OpenRouter rate limit reached (429). Please try again soon. Helpful tips:';
2775
- const openRouterRequestFailureReasons = ['ContentSecurityPolicyViolation: Check DevTools for details.', 'OpenRouter server offline: Check DevTools for details.', 'Check your internet connection.'];
2776
- const openRouterTooManyRequestsReasons = ['Wait a short time and retry your request.', 'Reduce request frequency to avoid rate limits.', 'Use a different model if this one is saturated.'];
2354
+ const isEqualProjectExpandedIds = (a, b) => {
2355
+ if (a.length !== b.length) {
2356
+ return false;
2357
+ }
2358
+ for (let i = 0; i < a.length; i++) {
2359
+ if (a[i] !== b[i]) {
2360
+ return false;
2361
+ }
2362
+ }
2363
+ return true;
2364
+ };
2365
+ const isEqual = (oldState, newState) => {
2366
+ return oldState.composerDropActive === newState.composerDropActive && oldState.composerDropEnabled === newState.composerDropEnabled && oldState.composerValue === newState.composerValue && oldState.initial === newState.initial && isEqualProjectExpandedIds(oldState.projectExpandedIds, newState.projectExpandedIds) && oldState.projectListScrollTop === newState.projectListScrollTop && oldState.renamingSessionId === newState.renamingSessionId && oldState.selectedModelId === newState.selectedModelId && oldState.selectedProjectId === newState.selectedProjectId && oldState.selectedSessionId === newState.selectedSessionId && oldState.sessions === newState.sessions && oldState.tokensMax === newState.tokensMax && oldState.tokensUsed === newState.tokensUsed && oldState.usageOverviewEnabled === newState.usageOverviewEnabled && oldState.viewMode === newState.viewMode;
2367
+ };
2368
+
2369
+ const diffScrollTop = (oldState, newState) => {
2370
+ return oldState.chatListScrollTop === newState.chatListScrollTop && oldState.messagesScrollTop === newState.messagesScrollTop && oldState.projectListScrollTop === newState.projectListScrollTop;
2371
+ };
2372
+
2373
+ const RenderItems = 4;
2374
+ const RenderFocus = 6;
2375
+ const RenderFocusContext = 7;
2376
+ const RenderValue = 8;
2377
+ const RenderCss = 10;
2378
+ const RenderIncremental = 11;
2379
+ const RenderScrollTop = 12;
2380
+
2381
+ const diffValue = (oldState, newState) => {
2382
+ if (oldState.composerValue === newState.composerValue) {
2383
+ return true;
2384
+ }
2385
+ return newState.inputSource !== 'script';
2386
+ };
2387
+
2388
+ const modules = [isEqual, diffValue, diffFocus, isEqual$1, diffFocus, diffScrollTop];
2389
+ const numbers = [RenderIncremental, RenderValue, RenderFocus, RenderCss, RenderFocusContext, RenderScrollTop];
2390
+
2391
+ const diff = (oldState, newState) => {
2392
+ const diffResult = [];
2393
+ for (let i = 0; i < modules.length; i++) {
2394
+ const fn = modules[i];
2395
+ if (!fn(oldState, newState)) {
2396
+ diffResult.push(numbers[i]);
2397
+ }
2398
+ }
2399
+ return diffResult;
2400
+ };
2401
+
2402
+ const diff2 = uid => {
2403
+ const {
2404
+ newState,
2405
+ oldState
2406
+ } = get$1(uid);
2407
+ const result = diff(oldState, newState);
2408
+ return result;
2409
+ };
2410
+
2411
+ const Button$2 = 'button';
2412
+
2413
+ const Audio = 0;
2414
+ const Button$1 = 1;
2415
+ const Col = 2;
2416
+ const ColGroup = 3;
2417
+ const Div = 4;
2418
+ const H1 = 5;
2419
+ const Input = 6;
2420
+ const Span = 8;
2421
+ const Table = 9;
2422
+ const TBody = 10;
2423
+ const Td = 11;
2424
+ const Text = 12;
2425
+ const Th = 13;
2426
+ const THead = 14;
2427
+ const Tr = 15;
2428
+ const I = 16;
2429
+ const Img = 17;
2430
+ const H2 = 22;
2431
+ const H3 = 23;
2432
+ const H4 = 24;
2433
+ const H5 = 25;
2434
+ const H6 = 26;
2435
+ const Article = 27;
2436
+ const Aside = 28;
2437
+ const Footer = 29;
2438
+ const Header = 30;
2439
+ const Nav = 40;
2440
+ const Section = 41;
2441
+ const Dd = 43;
2442
+ const Dl = 44;
2443
+ const Figcaption = 45;
2444
+ const Figure = 46;
2445
+ const Hr = 47;
2446
+ const Li = 48;
2447
+ const Ol = 49;
2448
+ const P = 50;
2449
+ const Pre = 51;
2450
+ const A = 53;
2451
+ const Abbr = 54;
2452
+ const Br = 55;
2453
+ const Tfoot = 59;
2454
+ const Ul = 60;
2455
+ const TextArea = 62;
2456
+ const Select$1 = 63;
2457
+ const Option$1 = 64;
2458
+ const Code = 65;
2459
+ const Label$1 = 66;
2460
+ const Dt = 67;
2461
+ const Main = 69;
2462
+ const Strong = 70;
2463
+ const Em = 71;
2464
+ const Reference = 100;
2465
+
2466
+ const Enter = 3;
2467
+
2468
+ const Shift = 1 << 10 >>> 0;
2469
+
2470
+ const mergeClassNames = (...classNames) => {
2471
+ return classNames.filter(Boolean).join(' ');
2472
+ };
2473
+
2474
+ const text = data => {
2475
+ return {
2476
+ childCount: 0,
2477
+ text: data,
2478
+ type: Text
2479
+ };
2480
+ };
2777
2481
 
2778
- const delay = async ms => {
2779
- await new Promise(resolve => setTimeout(resolve, ms));
2482
+ const SetText = 1;
2483
+ const Replace = 2;
2484
+ const SetAttribute = 3;
2485
+ const RemoveAttribute = 4;
2486
+ const Add = 6;
2487
+ const NavigateChild = 7;
2488
+ const NavigateParent = 8;
2489
+ const RemoveChild = 9;
2490
+ const NavigateSibling = 10;
2491
+ const SetReferenceNodeUid = 11;
2492
+
2493
+ const isKey = key => {
2494
+ return key !== 'type' && key !== 'childCount';
2780
2495
  };
2781
2496
 
2782
- const getMockAiResponse = async (userMessage, delayInMs) => {
2783
- await delay(delayInMs);
2784
- return `Mock AI response: I received "${userMessage}".`;
2497
+ const getKeys = node => {
2498
+ const keys = Object.keys(node).filter(isKey);
2499
+ return keys;
2785
2500
  };
2786
2501
 
2787
- let queue = [];
2788
- let waiters = [];
2789
- let finished = false;
2790
- let errorResult;
2791
- const reset$1 = () => {
2792
- queue = [];
2793
- waiters = [];
2794
- finished = false;
2795
- errorResult = undefined;
2502
+ const arrayToTree = nodes => {
2503
+ const result = [];
2504
+ let i = 0;
2505
+ while (i < nodes.length) {
2506
+ const node = nodes[i];
2507
+ const {
2508
+ children,
2509
+ nodesConsumed
2510
+ } = getChildrenWithCount(nodes, i + 1, node.childCount || 0);
2511
+ result.push({
2512
+ node,
2513
+ children
2514
+ });
2515
+ i += 1 + nodesConsumed;
2516
+ }
2517
+ return result;
2796
2518
  };
2797
- const setHttpErrorResponse = (statusCode, body) => {
2798
- const rawError = body && typeof body === 'object' ? Reflect.get(body, 'error') : undefined;
2799
- const errorCode = rawError && typeof rawError === 'object' ? Reflect.get(rawError, 'code') : undefined;
2800
- const errorMessage = rawError && typeof rawError === 'object' ? Reflect.get(rawError, 'message') : undefined;
2801
- const errorType = rawError && typeof rawError === 'object' ? Reflect.get(rawError, 'type') : undefined;
2802
- errorResult = {
2803
- details: 'http-error',
2804
- ...(typeof errorCode === 'string' ? {
2805
- errorCode
2806
- } : {}),
2807
- ...(typeof errorMessage === 'string' ? {
2808
- errorMessage
2809
- } : {}),
2810
- ...(typeof errorType === 'string' ? {
2811
- errorType
2812
- } : {}),
2813
- statusCode,
2814
- type: 'error'
2519
+ const getChildrenWithCount = (nodes, startIndex, childCount) => {
2520
+ if (childCount === 0) {
2521
+ return {
2522
+ children: [],
2523
+ nodesConsumed: 0
2524
+ };
2525
+ }
2526
+ const children = [];
2527
+ let i = startIndex;
2528
+ let remaining = childCount;
2529
+ let totalConsumed = 0;
2530
+ while (remaining > 0 && i < nodes.length) {
2531
+ const node = nodes[i];
2532
+ const nodeChildCount = node.childCount || 0;
2533
+ const {
2534
+ children: nodeChildren,
2535
+ nodesConsumed
2536
+ } = getChildrenWithCount(nodes, i + 1, nodeChildCount);
2537
+ children.push({
2538
+ node,
2539
+ children: nodeChildren
2540
+ });
2541
+ const nodeSize = 1 + nodesConsumed;
2542
+ i += nodeSize;
2543
+ totalConsumed += nodeSize;
2544
+ remaining--;
2545
+ }
2546
+ return {
2547
+ children,
2548
+ nodesConsumed: totalConsumed
2815
2549
  };
2816
2550
  };
2817
- const takeErrorResponse = () => {
2818
- const error = errorResult;
2819
- errorResult = undefined;
2820
- return error;
2821
- };
2822
- const pushChunk = chunk => {
2823
- if (waiters.length > 0) {
2824
- const resolve = waiters.shift();
2825
- resolve?.(chunk);
2826
- return;
2551
+
2552
+ const compareNodes = (oldNode, newNode) => {
2553
+ const patches = [];
2554
+ // Check if node type changed - return null to signal incompatible nodes
2555
+ // (caller should handle this with a Replace operation)
2556
+ if (oldNode.type !== newNode.type) {
2557
+ return null;
2827
2558
  }
2828
- queue.push(chunk);
2829
- };
2830
- const finish = () => {
2831
- finished = true;
2832
- if (waiters.length === 0) {
2833
- return;
2559
+ // Handle reference nodes - special handling for uid changes
2560
+ if (oldNode.type === Reference) {
2561
+ if (oldNode.uid !== newNode.uid) {
2562
+ patches.push({
2563
+ type: SetReferenceNodeUid,
2564
+ uid: newNode.uid
2565
+ });
2566
+ }
2567
+ return patches;
2834
2568
  }
2835
- const activeWaiters = waiters;
2836
- waiters = [];
2837
- for (const resolve of activeWaiters) {
2838
- resolve(undefined);
2569
+ // Handle text nodes
2570
+ if (oldNode.type === Text && newNode.type === Text) {
2571
+ if (oldNode.text !== newNode.text) {
2572
+ patches.push({
2573
+ type: SetText,
2574
+ value: newNode.text
2575
+ });
2576
+ }
2577
+ return patches;
2839
2578
  }
2840
- };
2841
- const readNextChunk = async () => {
2842
- if (queue.length > 0) {
2843
- return queue.shift();
2579
+ // Compare attributes
2580
+ const oldKeys = getKeys(oldNode);
2581
+ const newKeys = getKeys(newNode);
2582
+ // Check for attribute changes
2583
+ for (const key of newKeys) {
2584
+ if (oldNode[key] !== newNode[key]) {
2585
+ patches.push({
2586
+ type: SetAttribute,
2587
+ key,
2588
+ value: newNode[key]
2589
+ });
2590
+ }
2844
2591
  }
2845
- if (finished) {
2846
- return undefined;
2592
+ // Check for removed attributes
2593
+ for (const key of oldKeys) {
2594
+ if (!(key in newNode)) {
2595
+ patches.push({
2596
+ type: RemoveAttribute,
2597
+ key
2598
+ });
2599
+ }
2847
2600
  }
2848
- const {
2849
- promise,
2850
- resolve
2851
- } = Promise.withResolvers();
2852
- waiters.push(resolve);
2853
- return promise;
2601
+ return patches;
2854
2602
  };
2855
2603
 
2856
- const parseSseDataLines = eventChunk => {
2857
- const lines = eventChunk.split('\n');
2858
- const dataLines = [];
2859
- for (const line of lines) {
2860
- if (!line.startsWith('data:')) {
2604
+ const treeToArray = node => {
2605
+ const result = [node.node];
2606
+ for (const child of node.children) {
2607
+ result.push(...treeToArray(child));
2608
+ }
2609
+ return result;
2610
+ };
2611
+
2612
+ const diffChildren = (oldChildren, newChildren, patches) => {
2613
+ const maxLength = Math.max(oldChildren.length, newChildren.length);
2614
+ // Track where we are: -1 means at parent, >= 0 means at child index
2615
+ let currentChildIndex = -1;
2616
+ // Collect indices of children to remove (we'll add these patches at the end in reverse order)
2617
+ const indicesToRemove = [];
2618
+ for (let i = 0; i < maxLength; i++) {
2619
+ const oldNode = oldChildren[i];
2620
+ const newNode = newChildren[i];
2621
+ if (!oldNode && !newNode) {
2861
2622
  continue;
2862
2623
  }
2863
- dataLines.push(line.slice(5).trimStart());
2624
+ if (!oldNode) {
2625
+ // Add new node - we should be at the parent
2626
+ if (currentChildIndex >= 0) {
2627
+ // Navigate back to parent
2628
+ patches.push({
2629
+ type: NavigateParent
2630
+ });
2631
+ currentChildIndex = -1;
2632
+ }
2633
+ // Flatten the entire subtree so renderInternal can handle it
2634
+ const flatNodes = treeToArray(newNode);
2635
+ patches.push({
2636
+ type: Add,
2637
+ nodes: flatNodes
2638
+ });
2639
+ } else if (newNode) {
2640
+ // Compare nodes to see if we need any patches
2641
+ const nodePatches = compareNodes(oldNode.node, newNode.node);
2642
+ // If nodePatches is null, the node types are incompatible - need to replace
2643
+ if (nodePatches === null) {
2644
+ // Navigate to this child
2645
+ if (currentChildIndex === -1) {
2646
+ patches.push({
2647
+ type: NavigateChild,
2648
+ index: i
2649
+ });
2650
+ currentChildIndex = i;
2651
+ } else if (currentChildIndex !== i) {
2652
+ patches.push({
2653
+ type: NavigateSibling,
2654
+ index: i
2655
+ });
2656
+ currentChildIndex = i;
2657
+ }
2658
+ // Replace the entire subtree
2659
+ const flatNodes = treeToArray(newNode);
2660
+ patches.push({
2661
+ type: Replace,
2662
+ nodes: flatNodes
2663
+ });
2664
+ // After replace, we're at the new element (same position)
2665
+ continue;
2666
+ }
2667
+ // Check if we need to recurse into children
2668
+ const hasChildrenToCompare = oldNode.children.length > 0 || newNode.children.length > 0;
2669
+ // Only navigate to this element if we need to do something
2670
+ if (nodePatches.length > 0 || hasChildrenToCompare) {
2671
+ // Navigate to this child if not already there
2672
+ if (currentChildIndex === -1) {
2673
+ patches.push({
2674
+ type: NavigateChild,
2675
+ index: i
2676
+ });
2677
+ currentChildIndex = i;
2678
+ } else if (currentChildIndex !== i) {
2679
+ patches.push({
2680
+ type: NavigateSibling,
2681
+ index: i
2682
+ });
2683
+ currentChildIndex = i;
2684
+ }
2685
+ // Apply node patches (these apply to the current element, not children)
2686
+ if (nodePatches.length > 0) {
2687
+ patches.push(...nodePatches);
2688
+ }
2689
+ // Compare children recursively
2690
+ if (hasChildrenToCompare) {
2691
+ diffChildren(oldNode.children, newNode.children, patches);
2692
+ }
2693
+ }
2694
+ } else {
2695
+ // Remove old node - collect the index for later removal
2696
+ indicesToRemove.push(i);
2697
+ }
2864
2698
  }
2865
- return dataLines;
2866
- };
2867
- const emitToolCalls = async (toolCallAccumulator, onToolCallsChunk) => {
2868
- if (!onToolCallsChunk) {
2869
- return;
2699
+ // Navigate back to parent if we ended at a child
2700
+ if (currentChildIndex >= 0) {
2701
+ patches.push({
2702
+ type: NavigateParent
2703
+ });
2704
+ currentChildIndex = -1;
2870
2705
  }
2871
- const toolCalls = Object.entries(toolCallAccumulator).toSorted((a, b) => Number(a[0]) - Number(b[0])).map(entry => entry[1]).filter(toolCall => !!toolCall.name);
2872
- if (toolCalls.length === 0) {
2873
- return;
2706
+ // Add remove patches in reverse order (highest index first)
2707
+ // This ensures indices remain valid as we remove
2708
+ for (let j = indicesToRemove.length - 1; j >= 0; j--) {
2709
+ patches.push({
2710
+ type: RemoveChild,
2711
+ index: indicesToRemove[j]
2712
+ });
2874
2713
  }
2875
- await onToolCallsChunk(toolCalls);
2876
2714
  };
2877
- const getMockOpenApiAssistantText = async (stream, onTextChunk, onToolCallsChunk, onDataEvent, onEventStreamFinished) => {
2878
- const error = takeErrorResponse();
2879
- if (error) {
2880
- return error;
2881
- }
2882
- let text = '';
2883
- let remainder = '';
2884
- let toolCallAccumulator = {};
2885
- let finishedNotified = false;
2886
- const notifyFinished = async () => {
2887
- if (finishedNotified) {
2888
- return;
2889
- }
2890
- finishedNotified = true;
2891
- if (onEventStreamFinished) {
2892
- await onEventStreamFinished();
2893
- }
2894
- };
2895
- const handleParsedSseEvent = async parsed => {
2896
- if (onDataEvent) {
2897
- await onDataEvent(parsed);
2898
- }
2899
- if (!parsed || typeof parsed !== 'object') {
2900
- return;
2901
- }
2902
- const eventType = Reflect.get(parsed, 'type');
2903
- if (eventType === 'response.completed') {
2904
- await notifyFinished();
2905
- return;
2906
- }
2907
- if (eventType === 'response.output_text.delta') {
2908
- const delta = Reflect.get(parsed, 'delta');
2909
- if (typeof delta !== 'string' || !delta) {
2910
- return;
2911
- }
2912
- text += delta;
2913
- if (stream && onTextChunk) {
2914
- await onTextChunk(delta);
2915
- }
2916
- return;
2917
- }
2918
- if (eventType === 'response.output_item.added') {
2919
- const outputIndex = Reflect.get(parsed, 'output_index');
2920
- const item = Reflect.get(parsed, 'item');
2921
- if (typeof outputIndex !== 'number' || !item || typeof item !== 'object') {
2922
- return;
2923
- }
2924
- if (Reflect.get(item, 'type') !== 'function_call') {
2925
- return;
2926
- }
2927
- const name = Reflect.get(item, 'name');
2928
- const argumentsValue = Reflect.get(item, 'arguments');
2929
- const callId = Reflect.get(item, 'call_id');
2930
- toolCallAccumulator = {
2931
- ...toolCallAccumulator,
2932
- [outputIndex]: {
2933
- arguments: typeof argumentsValue === 'string' ? argumentsValue : '',
2934
- ...(typeof callId === 'string' ? {
2935
- id: callId
2936
- } : {}),
2937
- name: typeof name === 'string' ? name : ''
2938
- }
2939
- };
2940
- await emitToolCalls(toolCallAccumulator, onToolCallsChunk);
2715
+ const diffTrees = (oldTree, newTree, patches, path) => {
2716
+ // At the root level (path.length === 0), we're already AT the element
2717
+ // So we compare the root node directly, then compare its children
2718
+ if (path.length === 0 && oldTree.length === 1 && newTree.length === 1) {
2719
+ const oldNode = oldTree[0];
2720
+ const newNode = newTree[0];
2721
+ // Compare root nodes
2722
+ const nodePatches = compareNodes(oldNode.node, newNode.node);
2723
+ // If nodePatches is null, the root node types are incompatible - need to replace
2724
+ if (nodePatches === null) {
2725
+ const flatNodes = treeToArray(newNode);
2726
+ patches.push({
2727
+ type: Replace,
2728
+ nodes: flatNodes
2729
+ });
2941
2730
  return;
2942
2731
  }
2943
- if (eventType === 'response.function_call_arguments.delta' || eventType === 'response.function_call_arguments.done') {
2944
- const outputIndex = Reflect.get(parsed, 'output_index');
2945
- if (typeof outputIndex !== 'number') {
2946
- return;
2947
- }
2948
- const current = toolCallAccumulator[outputIndex] || {
2949
- arguments: '',
2950
- name: ''
2951
- };
2952
- const delta = Reflect.get(parsed, 'delta');
2953
- const argumentsValue = Reflect.get(parsed, 'arguments');
2954
- const name = Reflect.get(parsed, 'name');
2955
- const callId = Reflect.get(parsed, 'call_id');
2956
- const next = {
2957
- arguments: typeof argumentsValue === 'string' ? argumentsValue : typeof delta === 'string' ? `${current.arguments}${delta}` : current.arguments,
2958
- ...(typeof callId === 'string' ? {
2959
- id: callId
2960
- } : current.id ? {
2961
- id: current.id
2962
- } : {}),
2963
- name: typeof name === 'string' && name ? name : current.name
2964
- };
2965
- toolCallAccumulator = {
2966
- ...toolCallAccumulator,
2967
- [outputIndex]: next
2968
- };
2969
- await emitToolCalls(toolCallAccumulator, onToolCallsChunk);
2732
+ if (nodePatches.length > 0) {
2733
+ patches.push(...nodePatches);
2970
2734
  }
2971
- };
2972
- const consumeSseDataLines = async dataLines => {
2973
- for (const line of dataLines) {
2974
- if (line === '[DONE]') {
2975
- await notifyFinished();
2976
- continue;
2977
- }
2978
- let parsed;
2979
- try {
2980
- parsed = JSON.parse(line);
2981
- } catch {
2982
- continue;
2983
- }
2984
- await handleParsedSseEvent(parsed);
2735
+ // Compare children
2736
+ if (oldNode.children.length > 0 || newNode.children.length > 0) {
2737
+ diffChildren(oldNode.children, newNode.children, patches);
2985
2738
  }
2986
- };
2987
- while (true) {
2988
- const chunk = await readNextChunk();
2989
- if (typeof chunk !== 'string') {
2739
+ } else {
2740
+ // Non-root level or multiple root elements - use the regular comparison
2741
+ diffChildren(oldTree, newTree, patches);
2742
+ }
2743
+ };
2744
+
2745
+ const removeTrailingNavigationPatches = patches => {
2746
+ // Find the last non-navigation patch
2747
+ let lastNonNavigationIndex = -1;
2748
+ for (let i = patches.length - 1; i >= 0; i--) {
2749
+ const patch = patches[i];
2750
+ if (patch.type !== NavigateChild && patch.type !== NavigateParent && patch.type !== NavigateSibling) {
2751
+ lastNonNavigationIndex = i;
2990
2752
  break;
2991
2753
  }
2992
- if (chunk.startsWith('data:')) {
2993
- remainder += chunk;
2994
- while (true) {
2995
- const separatorIndex = remainder.indexOf('\n\n');
2996
- if (separatorIndex === -1) {
2997
- break;
2998
- }
2999
- const rawEvent = remainder.slice(0, separatorIndex);
3000
- remainder = remainder.slice(separatorIndex + 2);
3001
- const dataLines = parseSseDataLines(rawEvent);
3002
- await consumeSseDataLines(dataLines);
3003
- }
3004
- continue;
3005
- }
3006
- text += chunk;
3007
- if (stream && onTextChunk) {
3008
- await onTextChunk(chunk);
3009
- }
3010
2754
  }
3011
- if (remainder) {
3012
- const dataLines = parseSseDataLines(remainder);
3013
- await consumeSseDataLines(dataLines);
2755
+ // Return patches up to and including the last non-navigation patch
2756
+ return lastNonNavigationIndex === -1 ? [] : patches.slice(0, lastNonNavigationIndex + 1);
2757
+ };
2758
+
2759
+ const diffTree = (oldNodes, newNodes) => {
2760
+ // Step 1: Convert flat arrays to tree structures
2761
+ const oldTree = arrayToTree(oldNodes);
2762
+ const newTree = arrayToTree(newNodes);
2763
+ // Step 3: Compare the trees
2764
+ const patches = [];
2765
+ diffTrees(oldTree, newTree, patches, []);
2766
+ // Remove trailing navigation patches since they serve no purpose
2767
+ return removeTrailingNavigationPatches(patches);
2768
+ };
2769
+
2770
+ const getKeyBindings = () => {
2771
+ return [{
2772
+ command: 'Chat.handleSubmit',
2773
+ key: Enter,
2774
+ when: FocusChatInput
2775
+ }, {
2776
+ command: 'Chat.enterNewLine',
2777
+ key: Shift | Enter,
2778
+ when: FocusChatInput
2779
+ }];
2780
+ };
2781
+
2782
+ const getSelectedSessionId = state => {
2783
+ return state.selectedSessionId;
2784
+ };
2785
+
2786
+ const getListIndex = (state, eventX, eventY) => {
2787
+ const {
2788
+ headerHeight,
2789
+ height,
2790
+ listItemHeight,
2791
+ width,
2792
+ x,
2793
+ y
2794
+ } = state;
2795
+ const relativeX = eventX - x;
2796
+ const relativeY = eventY - y - headerHeight;
2797
+ if (relativeX < 0 || relativeY < 0 || relativeX >= width || relativeY >= height - headerHeight) {
2798
+ return -1;
3014
2799
  }
3015
- await notifyFinished();
3016
- return {
3017
- text,
3018
- type: 'success'
3019
- };
2800
+ return Math.floor(relativeY / listItemHeight);
3020
2801
  };
3021
2802
 
3022
- const activateByEvent = (event, assetDir, platform) => {
3023
- // @ts-ignore
3024
- return activateByEvent$1(event, assetDir, platform);
2803
+ const CHAT_LIST_ITEM_CONTEXT_MENU = 'ChatListItemContextMenu';
2804
+ const handleChatListContextMenu = async (state, eventX, eventY) => {
2805
+ const index = getListIndex(state, eventX, eventY);
2806
+ if (index === -1) {
2807
+ return state;
2808
+ }
2809
+ const visibleSessions = getVisibleSessions(state.sessions, state.selectedProjectId);
2810
+ const item = visibleSessions[index];
2811
+ if (!item) {
2812
+ return state;
2813
+ }
2814
+ await invoke('ContextMenu.show', eventX, eventY, CHAT_LIST_ITEM_CONTEXT_MENU, item.id);
2815
+ return state;
3025
2816
  };
3026
2817
 
3027
- const executeProvider = async ({
3028
- assetDir,
3029
- event,
3030
- method,
3031
- noProviderFoundMessage,
3032
- params,
3033
- platform
3034
- }) => {
3035
- await activateByEvent(event, assetDir, platform);
3036
- // @ts-ignore
3037
- const result = invoke$1(method, ...params);
3038
- return result;
2818
+ const generateSessionId = () => {
2819
+ return crypto.randomUUID();
3039
2820
  };
3040
2821
 
3041
- const CommandExecute = 'ExtensionHostCommand.executeCommand';
3042
- const FileSystemWriteFile = 'ExtensionHostFileSystem.writeFile';
3043
-
3044
- const normalizeLimitInfo = value => {
3045
- if (!value || typeof value !== 'object') {
3046
- return undefined;
3047
- }
3048
- const limitRemaining = Reflect.get(value, 'limitRemaining');
3049
- const limitReset = Reflect.get(value, 'limitReset');
3050
- const retryAfter = Reflect.get(value, 'retryAfter');
3051
- const usage = Reflect.get(value, 'usage');
3052
- const usageDaily = Reflect.get(value, 'usageDaily');
3053
- const normalized = {
3054
- ...(typeof limitRemaining === 'number' || limitRemaining === null ? {
3055
- limitRemaining
3056
- } : {}),
3057
- ...(typeof limitReset === 'string' || limitReset === null ? {
3058
- limitReset
3059
- } : {}),
3060
- ...(typeof retryAfter === 'string' || retryAfter === null ? {
3061
- retryAfter
3062
- } : {}),
3063
- ...(typeof usage === 'number' ? {
3064
- usage
3065
- } : {}),
3066
- ...(typeof usageDaily === 'number' ? {
3067
- usageDaily
3068
- } : {})
2822
+ const createSession = async (state, projectIdOverride = '') => {
2823
+ const id = generateSessionId();
2824
+ const fallbackProjectId = state.projects.find(project => project.name === '_blank')?.id || state.projects[0]?.id || 'project-1';
2825
+ const projectId = projectIdOverride || state.selectedProjectId || fallbackProjectId;
2826
+ const session = {
2827
+ id,
2828
+ messages: [],
2829
+ projectId,
2830
+ title: `Chat ${state.sessions.length + 1}`
2831
+ };
2832
+ await saveChatSession(session);
2833
+ return {
2834
+ ...state,
2835
+ projectExpandedIds: state.projectExpandedIds.includes(projectId) ? state.projectExpandedIds : [...state.projectExpandedIds, projectId],
2836
+ renamingSessionId: '',
2837
+ selectedProjectId: projectId,
2838
+ selectedSessionId: id,
2839
+ sessions: [...state.sessions, session]
3069
2840
  };
3070
- const hasDetails = typeof limitRemaining === 'number' || limitRemaining === null || typeof limitReset === 'string' || limitReset === null || typeof retryAfter === 'string' || retryAfter === null || typeof usage === 'number' || typeof usageDaily === 'number';
3071
- return hasDetails ? normalized : undefined;
3072
2841
  };
3073
2842
 
3074
- const normalizeMockResult = value => {
3075
- if (typeof value === 'string') {
3076
- return {
3077
- text: value,
3078
- type: 'success'
3079
- };
3080
- }
3081
- if (!value || typeof value !== 'object') {
3082
- return {
3083
- details: 'request-failed',
3084
- type: 'error'
3085
- };
2843
+ const selectProject = async (state, projectId) => {
2844
+ if (!projectId || state.selectedProjectId === projectId) {
2845
+ return state;
3086
2846
  }
3087
- const type = Reflect.get(value, 'type');
3088
- if (type === 'success') {
3089
- const text = Reflect.get(value, 'text');
3090
- if (typeof text === 'string') {
3091
- return {
3092
- text,
3093
- type: 'success'
3094
- };
3095
- }
2847
+ const visibleSessions = getVisibleSessions(state.sessions, projectId);
2848
+ if (visibleSessions.length === 0) {
3096
2849
  return {
3097
- details: 'request-failed',
3098
- type: 'error'
2850
+ ...state,
2851
+ selectedProjectId: projectId,
2852
+ selectedSessionId: '',
2853
+ viewMode: state.viewMode === 'chat-focus' ? 'chat-focus' : 'list'
3099
2854
  };
3100
2855
  }
3101
- if (type === 'error') {
3102
- const details = Reflect.get(value, 'details');
3103
- if (details === 'request-failed' || details === 'too-many-requests' || details === 'http-error') {
3104
- const rawMessage = Reflect.get(value, 'rawMessage');
3105
- const statusCode = Reflect.get(value, 'statusCode');
3106
- const limitInfo = normalizeLimitInfo(Reflect.get(value, 'limitInfo'));
3107
- return {
3108
- details,
3109
- ...(limitInfo ? {
3110
- limitInfo
3111
- } : {}),
3112
- ...(typeof rawMessage === 'string' ? {
3113
- rawMessage
3114
- } : {}),
3115
- ...(typeof statusCode === 'number' ? {
3116
- statusCode
3117
- } : {}),
3118
- type: 'error'
3119
- };
2856
+ const currentSessionVisible = visibleSessions.some(session => session.id === state.selectedSessionId);
2857
+ const nextSelectedSessionId = currentSessionVisible ? state.selectedSessionId : visibleSessions[0].id;
2858
+ const loadedSession = await getChatSession(nextSelectedSessionId);
2859
+ const sessions = state.sessions.map(session => {
2860
+ if (session.id !== nextSelectedSessionId || !loadedSession) {
2861
+ return session;
3120
2862
  }
3121
- }
3122
- const text = Reflect.get(value, 'text');
3123
- if (typeof text === 'string') {
3124
- return {
3125
- text,
3126
- type: 'success'
3127
- };
3128
- }
2863
+ return loadedSession;
2864
+ });
3129
2865
  return {
3130
- details: 'request-failed',
3131
- type: 'error'
2866
+ ...state,
2867
+ selectedProjectId: projectId,
2868
+ selectedSessionId: nextSelectedSessionId,
2869
+ sessions,
2870
+ viewMode: state.viewMode === 'chat-focus' ? 'chat-focus' : 'detail'
3132
2871
  };
3133
2872
  };
3134
2873
 
3135
- const getMockOpenRouterAssistantText = async (messages, modelId, openRouterApiBaseUrl, openRouterApiKey, mockApiCommandId, assetDir, platform) => {
3136
- if (!mockApiCommandId) {
3137
- return {
3138
- details: 'request-failed',
3139
- type: 'error'
3140
- };
2874
+ const getProjectName = (uri, fallbackIndex) => {
2875
+ if (!uri) {
2876
+ return `Project ${fallbackIndex}`;
3141
2877
  }
2878
+ const withoutScheme = uri.replace(/^file:\/\//, '');
2879
+ const normalized = withoutScheme.replace(/\/+$/, '');
2880
+ const lastSegment = normalized.split('/').pop();
2881
+ if (!lastSegment) {
2882
+ return `Project ${fallbackIndex}`;
2883
+ }
2884
+ return decodeURIComponent(lastSegment);
2885
+ };
2886
+ const getNextProjectId = projects => {
2887
+ return `project-${projects.length + 1}`;
2888
+ };
2889
+ const pickProjectUri = async () => {
3142
2890
  try {
3143
- const result = await executeProvider({
3144
- assetDir,
3145
- event: `onCommand:${mockApiCommandId}`,
3146
- method: CommandExecute,
3147
- noProviderFoundMessage: 'No mock api command found',
3148
- params: [mockApiCommandId, {
3149
- messages,
3150
- modelId,
3151
- openRouterApiBaseUrl,
3152
- openRouterApiKey
3153
- }],
3154
- platform
3155
- });
3156
- return normalizeMockResult(result);
2891
+ const workspaceUri = await getWorkspacePath();
2892
+ return workspaceUri;
3157
2893
  } catch {
3158
- return {
3159
- details: 'request-failed',
3160
- type: 'error'
3161
- };
2894
+ return '';
2895
+ }
2896
+ };
2897
+ const handleClickCreateProject = async state => {
2898
+ await confirm('project added');
2899
+ const uri = await pickProjectUri();
2900
+ if (!uri) {
2901
+ return state;
2902
+ }
2903
+ const existingProject = state.projects.find(project => project.uri === uri);
2904
+ if (existingProject) {
2905
+ return selectProject(state, existingProject.id);
3162
2906
  }
2907
+ const id = getNextProjectId(state.projects);
2908
+ const project = {
2909
+ id,
2910
+ name: getProjectName(uri, state.projects.length + 1),
2911
+ uri
2912
+ };
2913
+ return {
2914
+ ...state,
2915
+ projects: [...state.projects, project],
2916
+ selectedProjectId: project.id,
2917
+ selectedSessionId: '',
2918
+ viewMode: 'list'
2919
+ };
2920
+ };
2921
+
2922
+ const handleClickOpenApiApiKeySettings = async state => {
2923
+ await invoke('Main.openUri', 'app://settings.json');
2924
+ return state;
3163
2925
  };
3164
2926
 
2927
+ const handleClickOpenApiApiKeyWebsite = async state => {
2928
+ await openExternal(state.openApiApiKeysSettingsUrl);
2929
+ return state;
2930
+ };
2931
+
2932
+ const handleClickOpenRouterApiKeySettings = async state => {
2933
+ await invoke('Main.openUri', 'app://settings.json');
2934
+ return state;
2935
+ };
2936
+
2937
+ const handleClickOpenRouterApiKeyWebsite = async state => {
2938
+ await openExternal(state.openRouterApiKeysSettingsUrl);
2939
+ return state;
2940
+ };
2941
+
2942
+ const openApiApiKeyRequiredMessage = 'OpenAI API key is not configured. Enter your OpenAI API key below and click Save.';
2943
+ const openApiRequestFailedMessage = 'OpenAI request failed.';
2944
+ const openApiRequestFailedOfflineMessage = 'OpenAI request failed because you are offline. Please check your internet connection.';
2945
+ const openRouterApiKeyRequiredMessage = 'OpenRouter API key is not configured. Enter your OpenRouter API key below and click Save.';
2946
+ const openRouterRequestFailedMessage = 'OpenRouter request failed. Possible reasons:';
2947
+ const openRouterTooManyRequestsMessage = 'OpenRouter rate limit reached (429). Please try again soon. Helpful tips:';
2948
+ const openRouterRequestFailureReasons = ['ContentSecurityPolicyViolation: Check DevTools for details.', 'OpenRouter server offline: Check DevTools for details.', 'Check your internet connection.'];
2949
+ const openRouterTooManyRequestsReasons = ['Wait a short time and retry your request.', 'Reduce request frequency to avoid rate limits.', 'Use a different model if this one is saturated.'];
2950
+
3165
2951
  const executeGetWorkspaceUriTool = async (_args, _options) => {
3166
2952
  try {
3167
2953
  const workspaceUri = await getWorkspacePath();
@@ -3292,6 +3078,25 @@ const executeRenderHtmlTool = async (args, _options) => {
3292
3078
  });
3293
3079
  };
3294
3080
 
3081
+ const activateByEvent = (event, assetDir, platform) => {
3082
+ // @ts-ignore
3083
+ return activateByEvent$1(event, assetDir, platform);
3084
+ };
3085
+
3086
+ const executeProvider = async ({
3087
+ assetDir,
3088
+ event,
3089
+ method,
3090
+ noProviderFoundMessage,
3091
+ params,
3092
+ platform
3093
+ }) => {
3094
+ await activateByEvent(event, assetDir, platform);
3095
+ // @ts-ignore
3096
+ const result = invoke$1(method, ...params);
3097
+ return result;
3098
+ };
3099
+
3295
3100
  const OnFileSystem = 'onFileSystem';
3296
3101
 
3297
3102
  const executeFileSystemCommand = async (method, params, options) => {
@@ -3305,6 +3110,9 @@ const executeFileSystemCommand = async (method, params, options) => {
3305
3110
  });
3306
3111
  };
3307
3112
 
3113
+ const CommandExecute = 'ExtensionHostCommand.executeCommand';
3114
+ const FileSystemWriteFile = 'ExtensionHostFileSystem.writeFile';
3115
+
3308
3116
  const executeWriteFileTool = async (args, options) => {
3309
3117
  const filePath = typeof args.path === 'string' ? args.path : '';
3310
3118
  const content = typeof args.content === 'string' ? args.content : '';
@@ -3409,82 +3217,454 @@ const getWriteFileTool = () => {
3409
3217
  type: 'function'
3410
3218
  };
3411
3219
  };
3412
- const getListFilesTool = () => {
3220
+ const getListFilesTool = () => {
3221
+ return {
3222
+ function: {
3223
+ description: 'List direct children (files and folders) for a folder URI inside the currently open workspace folder. Only pass an absolute URI.',
3224
+ name: 'list_files',
3225
+ parameters: {
3226
+ additionalProperties: false,
3227
+ properties: {
3228
+ uri: {
3229
+ description: 'Absolute folder URI within the workspace (for example: file:///workspace/src).',
3230
+ type: 'string'
3231
+ }
3232
+ },
3233
+ required: ['uri'],
3234
+ type: 'object'
3235
+ }
3236
+ },
3237
+ type: 'function'
3238
+ };
3239
+ };
3240
+ const getGetWorkspaceUriTool = () => {
3241
+ return {
3242
+ function: {
3243
+ description: 'Get the URI of the currently open workspace folder.',
3244
+ name: 'getWorkspaceUri',
3245
+ parameters: {
3246
+ additionalProperties: false,
3247
+ properties: {},
3248
+ type: 'object'
3249
+ }
3250
+ },
3251
+ type: 'function'
3252
+ };
3253
+ };
3254
+ const getRenderHtmlTool = () => {
3413
3255
  return {
3414
3256
  function: {
3415
- description: 'List direct children (files and folders) for a folder URI inside the currently open workspace folder. Only pass an absolute URI.',
3416
- name: 'list_files',
3257
+ description: 'Render custom HTML and optional CSS directly in the chat tool call list using native chat UI rendering. Use this for structured cards, tables, and small dashboards. After calling this tool, do not repeat the same HTML, data table, or long content again as plain text unless the user explicitly asks for a text-only version.',
3258
+ name: 'render_html',
3417
3259
  parameters: {
3418
3260
  additionalProperties: false,
3419
3261
  properties: {
3420
- uri: {
3421
- description: 'Absolute folder URI within the workspace (for example: file:///workspace/src).',
3262
+ css: {
3263
+ description: 'Optional CSS string applied inside the preview document.',
3264
+ type: 'string'
3265
+ },
3266
+ html: {
3267
+ description: 'HTML string to render in the preview document.',
3268
+ type: 'string'
3269
+ },
3270
+ title: {
3271
+ description: 'Optional short title for the preview.',
3422
3272
  type: 'string'
3423
3273
  }
3424
3274
  },
3425
- required: ['uri'],
3275
+ required: ['html'],
3426
3276
  type: 'object'
3427
3277
  }
3428
- },
3429
- type: 'function'
3430
- };
3431
- };
3432
- const getGetWorkspaceUriTool = () => {
3278
+ },
3279
+ type: 'function'
3280
+ };
3281
+ };
3282
+ const getBasicChatTools = () => {
3283
+ return [getReadFileTool(), getWriteFileTool(), getListFilesTool(), getGetWorkspaceUriTool(), getRenderHtmlTool()];
3284
+ };
3285
+
3286
+ const getClientRequestIdHeader = () => {
3287
+ return {
3288
+ 'x-client-request-id': crypto.randomUUID()
3289
+ };
3290
+ };
3291
+
3292
+ const delay = async ms => {
3293
+ await new Promise(resolve => setTimeout(resolve, ms));
3294
+ };
3295
+
3296
+ const getMockAiResponse = async (userMessage, delayInMs) => {
3297
+ await delay(delayInMs);
3298
+ return `Mock AI response: I received "${userMessage}".`;
3299
+ };
3300
+
3301
+ let queue = [];
3302
+ let waiters = [];
3303
+ let finished = false;
3304
+ let errorResult;
3305
+ const reset$2 = () => {
3306
+ queue = [];
3307
+ waiters = [];
3308
+ finished = false;
3309
+ errorResult = undefined;
3310
+ };
3311
+ const setHttpErrorResponse = (statusCode, body) => {
3312
+ const rawError = body && typeof body === 'object' ? Reflect.get(body, 'error') : undefined;
3313
+ const errorCode = rawError && typeof rawError === 'object' ? Reflect.get(rawError, 'code') : undefined;
3314
+ const errorMessage = rawError && typeof rawError === 'object' ? Reflect.get(rawError, 'message') : undefined;
3315
+ const errorType = rawError && typeof rawError === 'object' ? Reflect.get(rawError, 'type') : undefined;
3316
+ errorResult = {
3317
+ details: 'http-error',
3318
+ ...(typeof errorCode === 'string' ? {
3319
+ errorCode
3320
+ } : {}),
3321
+ ...(typeof errorMessage === 'string' ? {
3322
+ errorMessage
3323
+ } : {}),
3324
+ ...(typeof errorType === 'string' ? {
3325
+ errorType
3326
+ } : {}),
3327
+ statusCode,
3328
+ type: 'error'
3329
+ };
3330
+ };
3331
+ const takeErrorResponse = () => {
3332
+ const error = errorResult;
3333
+ errorResult = undefined;
3334
+ return error;
3335
+ };
3336
+ const pushChunk = chunk => {
3337
+ if (waiters.length > 0) {
3338
+ const resolve = waiters.shift();
3339
+ resolve?.(chunk);
3340
+ return;
3341
+ }
3342
+ queue.push(chunk);
3343
+ };
3344
+ const finish = () => {
3345
+ finished = true;
3346
+ if (waiters.length === 0) {
3347
+ return;
3348
+ }
3349
+ const activeWaiters = waiters;
3350
+ waiters = [];
3351
+ for (const resolve of activeWaiters) {
3352
+ resolve(undefined);
3353
+ }
3354
+ };
3355
+ const readNextChunk = async () => {
3356
+ if (queue.length > 0) {
3357
+ return queue.shift();
3358
+ }
3359
+ if (finished) {
3360
+ return undefined;
3361
+ }
3362
+ const {
3363
+ promise,
3364
+ resolve
3365
+ } = Promise.withResolvers();
3366
+ waiters.push(resolve);
3367
+ return promise;
3368
+ };
3369
+
3370
+ const parseSseDataLines = eventChunk => {
3371
+ const lines = eventChunk.split('\n');
3372
+ const dataLines = [];
3373
+ for (const line of lines) {
3374
+ if (!line.startsWith('data:')) {
3375
+ continue;
3376
+ }
3377
+ dataLines.push(line.slice(5).trimStart());
3378
+ }
3379
+ return dataLines;
3380
+ };
3381
+ const emitToolCalls = async (toolCallAccumulator, onToolCallsChunk) => {
3382
+ if (!onToolCallsChunk) {
3383
+ return;
3384
+ }
3385
+ const toolCalls = Object.entries(toolCallAccumulator).toSorted((a, b) => Number(a[0]) - Number(b[0])).map(entry => entry[1]).filter(toolCall => !!toolCall.name);
3386
+ if (toolCalls.length === 0) {
3387
+ return;
3388
+ }
3389
+ await onToolCallsChunk(toolCalls);
3390
+ };
3391
+ const getMockOpenApiAssistantText = async (stream, onTextChunk, onToolCallsChunk, onDataEvent, onEventStreamFinished) => {
3392
+ const error = takeErrorResponse();
3393
+ if (error) {
3394
+ return error;
3395
+ }
3396
+ let text = '';
3397
+ let remainder = '';
3398
+ let toolCallAccumulator = {};
3399
+ let finishedNotified = false;
3400
+ const notifyFinished = async () => {
3401
+ if (finishedNotified) {
3402
+ return;
3403
+ }
3404
+ finishedNotified = true;
3405
+ if (onEventStreamFinished) {
3406
+ await onEventStreamFinished();
3407
+ }
3408
+ };
3409
+ const handleParsedSseEvent = async parsed => {
3410
+ if (onDataEvent) {
3411
+ await onDataEvent(parsed);
3412
+ }
3413
+ if (!parsed || typeof parsed !== 'object') {
3414
+ return;
3415
+ }
3416
+ const eventType = Reflect.get(parsed, 'type');
3417
+ if (eventType === 'response.completed') {
3418
+ await notifyFinished();
3419
+ return;
3420
+ }
3421
+ if (eventType === 'response.output_text.delta') {
3422
+ const delta = Reflect.get(parsed, 'delta');
3423
+ if (typeof delta !== 'string' || !delta) {
3424
+ return;
3425
+ }
3426
+ text += delta;
3427
+ if (stream && onTextChunk) {
3428
+ await onTextChunk(delta);
3429
+ }
3430
+ return;
3431
+ }
3432
+ if (eventType === 'response.output_item.added') {
3433
+ const outputIndex = Reflect.get(parsed, 'output_index');
3434
+ const item = Reflect.get(parsed, 'item');
3435
+ if (typeof outputIndex !== 'number' || !item || typeof item !== 'object') {
3436
+ return;
3437
+ }
3438
+ if (Reflect.get(item, 'type') !== 'function_call') {
3439
+ return;
3440
+ }
3441
+ const name = Reflect.get(item, 'name');
3442
+ const argumentsValue = Reflect.get(item, 'arguments');
3443
+ const callId = Reflect.get(item, 'call_id');
3444
+ toolCallAccumulator = {
3445
+ ...toolCallAccumulator,
3446
+ [outputIndex]: {
3447
+ arguments: typeof argumentsValue === 'string' ? argumentsValue : '',
3448
+ ...(typeof callId === 'string' ? {
3449
+ id: callId
3450
+ } : {}),
3451
+ name: typeof name === 'string' ? name : ''
3452
+ }
3453
+ };
3454
+ await emitToolCalls(toolCallAccumulator, onToolCallsChunk);
3455
+ return;
3456
+ }
3457
+ if (eventType === 'response.function_call_arguments.delta' || eventType === 'response.function_call_arguments.done') {
3458
+ const outputIndex = Reflect.get(parsed, 'output_index');
3459
+ if (typeof outputIndex !== 'number') {
3460
+ return;
3461
+ }
3462
+ const current = toolCallAccumulator[outputIndex] || {
3463
+ arguments: '',
3464
+ name: ''
3465
+ };
3466
+ const delta = Reflect.get(parsed, 'delta');
3467
+ const argumentsValue = Reflect.get(parsed, 'arguments');
3468
+ const name = Reflect.get(parsed, 'name');
3469
+ const callId = Reflect.get(parsed, 'call_id');
3470
+ const next = {
3471
+ arguments: typeof argumentsValue === 'string' ? argumentsValue : typeof delta === 'string' ? `${current.arguments}${delta}` : current.arguments,
3472
+ ...(typeof callId === 'string' ? {
3473
+ id: callId
3474
+ } : current.id ? {
3475
+ id: current.id
3476
+ } : {}),
3477
+ name: typeof name === 'string' && name ? name : current.name
3478
+ };
3479
+ toolCallAccumulator = {
3480
+ ...toolCallAccumulator,
3481
+ [outputIndex]: next
3482
+ };
3483
+ await emitToolCalls(toolCallAccumulator, onToolCallsChunk);
3484
+ }
3485
+ };
3486
+ const consumeSseDataLines = async dataLines => {
3487
+ for (const line of dataLines) {
3488
+ if (line === '[DONE]') {
3489
+ await notifyFinished();
3490
+ continue;
3491
+ }
3492
+ let parsed;
3493
+ try {
3494
+ parsed = JSON.parse(line);
3495
+ } catch {
3496
+ continue;
3497
+ }
3498
+ await handleParsedSseEvent(parsed);
3499
+ }
3500
+ };
3501
+ while (true) {
3502
+ const chunk = await readNextChunk();
3503
+ if (typeof chunk !== 'string') {
3504
+ break;
3505
+ }
3506
+ if (chunk.startsWith('data:')) {
3507
+ remainder += chunk;
3508
+ while (true) {
3509
+ const separatorIndex = remainder.indexOf('\n\n');
3510
+ if (separatorIndex === -1) {
3511
+ break;
3512
+ }
3513
+ const rawEvent = remainder.slice(0, separatorIndex);
3514
+ remainder = remainder.slice(separatorIndex + 2);
3515
+ const dataLines = parseSseDataLines(rawEvent);
3516
+ await consumeSseDataLines(dataLines);
3517
+ }
3518
+ continue;
3519
+ }
3520
+ text += chunk;
3521
+ if (stream && onTextChunk) {
3522
+ await onTextChunk(chunk);
3523
+ }
3524
+ }
3525
+ if (remainder) {
3526
+ const dataLines = parseSseDataLines(remainder);
3527
+ await consumeSseDataLines(dataLines);
3528
+ }
3529
+ await notifyFinished();
3433
3530
  return {
3434
- function: {
3435
- description: 'Get the URI of the currently open workspace folder.',
3436
- name: 'getWorkspaceUri',
3437
- parameters: {
3438
- additionalProperties: false,
3439
- properties: {},
3440
- type: 'object'
3441
- }
3442
- },
3443
- type: 'function'
3531
+ text,
3532
+ type: 'success'
3444
3533
  };
3445
3534
  };
3446
- const getRenderHtmlTool = () => {
3447
- return {
3448
- function: {
3449
- description: 'Render custom HTML and optional CSS directly in the chat tool call list using native chat UI rendering. Use this for structured cards, tables, and small dashboards. After calling this tool, do not repeat the same HTML, data table, or long content again as plain text unless the user explicitly asks for a text-only version.',
3450
- name: 'render_html',
3451
- parameters: {
3452
- additionalProperties: false,
3453
- properties: {
3454
- css: {
3455
- description: 'Optional CSS string applied inside the preview document.',
3456
- type: 'string'
3457
- },
3458
- html: {
3459
- description: 'HTML string to render in the preview document.',
3460
- type: 'string'
3461
- },
3462
- title: {
3463
- description: 'Optional short title for the preview.',
3464
- type: 'string'
3465
- }
3466
- },
3467
- required: ['html'],
3468
- type: 'object'
3469
- }
3470
- },
3471
- type: 'function'
3535
+
3536
+ const normalizeLimitInfo = value => {
3537
+ if (!value || typeof value !== 'object') {
3538
+ return undefined;
3539
+ }
3540
+ const limitRemaining = Reflect.get(value, 'limitRemaining');
3541
+ const limitReset = Reflect.get(value, 'limitReset');
3542
+ const retryAfter = Reflect.get(value, 'retryAfter');
3543
+ const usage = Reflect.get(value, 'usage');
3544
+ const usageDaily = Reflect.get(value, 'usageDaily');
3545
+ const normalized = {
3546
+ ...(typeof limitRemaining === 'number' || limitRemaining === null ? {
3547
+ limitRemaining
3548
+ } : {}),
3549
+ ...(typeof limitReset === 'string' || limitReset === null ? {
3550
+ limitReset
3551
+ } : {}),
3552
+ ...(typeof retryAfter === 'string' || retryAfter === null ? {
3553
+ retryAfter
3554
+ } : {}),
3555
+ ...(typeof usage === 'number' ? {
3556
+ usage
3557
+ } : {}),
3558
+ ...(typeof usageDaily === 'number' ? {
3559
+ usageDaily
3560
+ } : {})
3472
3561
  };
3473
- };
3474
- const getBasicChatTools = () => {
3475
- return [getReadFileTool(), getWriteFileTool(), getListFilesTool(), getGetWorkspaceUriTool(), getRenderHtmlTool()];
3562
+ const hasDetails = typeof limitRemaining === 'number' || limitRemaining === null || typeof limitReset === 'string' || limitReset === null || typeof retryAfter === 'string' || retryAfter === null || typeof usage === 'number' || typeof usageDaily === 'number';
3563
+ return hasDetails ? normalized : undefined;
3476
3564
  };
3477
3565
 
3478
- const getClientRequestIdHeader = () => {
3566
+ const normalizeMockResult = value => {
3567
+ if (typeof value === 'string') {
3568
+ return {
3569
+ text: value,
3570
+ type: 'success'
3571
+ };
3572
+ }
3573
+ if (!value || typeof value !== 'object') {
3574
+ return {
3575
+ details: 'request-failed',
3576
+ type: 'error'
3577
+ };
3578
+ }
3579
+ const type = Reflect.get(value, 'type');
3580
+ if (type === 'success') {
3581
+ const text = Reflect.get(value, 'text');
3582
+ if (typeof text === 'string') {
3583
+ return {
3584
+ text,
3585
+ type: 'success'
3586
+ };
3587
+ }
3588
+ return {
3589
+ details: 'request-failed',
3590
+ type: 'error'
3591
+ };
3592
+ }
3593
+ if (type === 'error') {
3594
+ const details = Reflect.get(value, 'details');
3595
+ if (details === 'request-failed' || details === 'too-many-requests' || details === 'http-error') {
3596
+ const rawMessage = Reflect.get(value, 'rawMessage');
3597
+ const statusCode = Reflect.get(value, 'statusCode');
3598
+ const limitInfo = normalizeLimitInfo(Reflect.get(value, 'limitInfo'));
3599
+ return {
3600
+ details,
3601
+ ...(limitInfo ? {
3602
+ limitInfo
3603
+ } : {}),
3604
+ ...(typeof rawMessage === 'string' ? {
3605
+ rawMessage
3606
+ } : {}),
3607
+ ...(typeof statusCode === 'number' ? {
3608
+ statusCode
3609
+ } : {}),
3610
+ type: 'error'
3611
+ };
3612
+ }
3613
+ }
3614
+ const text = Reflect.get(value, 'text');
3615
+ if (typeof text === 'string') {
3616
+ return {
3617
+ text,
3618
+ type: 'success'
3619
+ };
3620
+ }
3479
3621
  return {
3480
- 'x-client-request-id': crypto.randomUUID()
3622
+ details: 'request-failed',
3623
+ type: 'error'
3481
3624
  };
3482
3625
  };
3483
3626
 
3627
+ const getMockOpenRouterAssistantText = async (messages, modelId, openRouterApiBaseUrl, openRouterApiKey, mockApiCommandId, assetDir, platform) => {
3628
+ if (!mockApiCommandId) {
3629
+ return {
3630
+ details: 'request-failed',
3631
+ type: 'error'
3632
+ };
3633
+ }
3634
+ try {
3635
+ const result = await executeProvider({
3636
+ assetDir,
3637
+ event: `onCommand:${mockApiCommandId}`,
3638
+ method: CommandExecute,
3639
+ noProviderFoundMessage: 'No mock api command found',
3640
+ params: [mockApiCommandId, {
3641
+ messages,
3642
+ modelId,
3643
+ openRouterApiBaseUrl,
3644
+ openRouterApiKey
3645
+ }],
3646
+ platform
3647
+ });
3648
+ return normalizeMockResult(result);
3649
+ } catch {
3650
+ return {
3651
+ details: 'request-failed',
3652
+ type: 'error'
3653
+ };
3654
+ }
3655
+ };
3656
+
3484
3657
  const getOpenApiApiEndpoint = openApiApiBaseUrl => {
3485
3658
  return `${openApiApiBaseUrl}/responses`;
3486
3659
  };
3487
3660
 
3661
+ const makeApiRequest = async options => {
3662
+ return invoke$2('ChatNetwork.makeApiRequest', options);
3663
+ };
3664
+ const makeStreamingApiRequest = async options => {
3665
+ return invoke$2('ChatNetwork.makeStreamingApiRequest', options);
3666
+ };
3667
+
3488
3668
  const getTextContent = content => {
3489
3669
  if (typeof content === 'string') {
3490
3670
  return content;
@@ -3506,6 +3686,8 @@ const getTextContent = content => {
3506
3686
  return textParts.join('\n');
3507
3687
  };
3508
3688
 
3689
+ /* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
3690
+
3509
3691
  const getOpenAiTools = tools => {
3510
3692
  return tools.map(tool => {
3511
3693
  if (!tool || typeof tool !== 'object') {
@@ -4047,6 +4229,52 @@ const getOpenApiErrorDetails = async response => {
4047
4229
  } : {})
4048
4230
  };
4049
4231
  };
4232
+ const getOpenApiErrorDetailsFromResponseText = responseText => {
4233
+ let parsed;
4234
+ try {
4235
+ parsed = JSON.parse(responseText);
4236
+ } catch {
4237
+ return {};
4238
+ }
4239
+ if (!parsed || typeof parsed !== 'object') {
4240
+ return {};
4241
+ }
4242
+ const error = Reflect.get(parsed, 'error');
4243
+ if (!error || typeof error !== 'object') {
4244
+ return {};
4245
+ }
4246
+ const errorCode = Reflect.get(error, 'code');
4247
+ const errorMessage = Reflect.get(error, 'message');
4248
+ const errorType = Reflect.get(error, 'type');
4249
+ return {
4250
+ ...(typeof errorCode === 'string' ? {
4251
+ errorCode
4252
+ } : {}),
4253
+ ...(typeof errorMessage === 'string' ? {
4254
+ errorMessage
4255
+ } : {}),
4256
+ ...(typeof errorType === 'string' ? {
4257
+ errorType
4258
+ } : {})
4259
+ };
4260
+ };
4261
+ const getResponseFromSseEvents = events => {
4262
+ const chunks = events.map(event => {
4263
+ const data = typeof event === 'string' ? event : JSON.stringify(event);
4264
+ return `data: ${data}\n\n`;
4265
+ });
4266
+ const stream = new ReadableStream({
4267
+ start(controller) {
4268
+ for (const chunk of chunks) {
4269
+ controller.enqueue(new TextEncoder().encode(chunk));
4270
+ }
4271
+ controller.close();
4272
+ }
4273
+ });
4274
+ return {
4275
+ body: stream
4276
+ };
4277
+ };
4050
4278
  const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApiApiBaseUrl, assetDir, platform, options) => {
4051
4279
  const {
4052
4280
  includeObfuscation = false,
@@ -4055,6 +4283,7 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
4055
4283
  onTextChunk,
4056
4284
  onToolCallsChunk,
4057
4285
  stream,
4286
+ useChatNetworkWorkerForRequests = false,
4058
4287
  webSearchEnabled = false
4059
4288
  } = options ?? {
4060
4289
  stream: false
@@ -4067,46 +4296,89 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
4067
4296
  const maxToolIterations = 4;
4068
4297
  let previousResponseId;
4069
4298
  for (let i = 0; i <= maxToolIterations; i++) {
4070
- let response;
4071
- try {
4072
- response = await fetch(getOpenApiApiEndpoint(openApiApiBaseUrl), {
4073
- body: JSON.stringify(getOpenAiParams(openAiInput, modelId, stream, includeObfuscation, tools, webSearchEnabled, previousResponseId)),
4074
- headers: {
4075
- Authorization: `Bearer ${openApiApiKey}`,
4076
- 'Content-Type': 'application/json',
4077
- ...getClientRequestIdHeader()
4078
- },
4079
- method: 'POST'
4080
- });
4081
- } catch {
4082
- return {
4083
- details: 'request-failed',
4084
- type: 'error'
4085
- };
4086
- }
4087
- if (!response.ok) {
4088
- const {
4089
- errorCode,
4090
- errorMessage,
4091
- errorType
4092
- } = await getOpenApiErrorDetails(response);
4093
- return {
4094
- details: 'http-error',
4095
- ...(errorCode ? {
4096
- errorCode
4097
- } : {}),
4098
- ...(errorMessage ? {
4099
- errorMessage
4100
- } : {}),
4101
- ...(errorType ? {
4102
- errorType
4103
- } : {}),
4104
- statusCode: response.status,
4105
- type: 'error'
4106
- };
4107
- }
4299
+ const postBody = getOpenAiParams(openAiInput, modelId, stream, includeObfuscation, tools, webSearchEnabled, previousResponseId);
4108
4300
  if (stream) {
4109
- const streamResult = await parseOpenApiStream(response, onTextChunk, onToolCallsChunk, onDataEvent);
4301
+ const streamResult = useChatNetworkWorkerForRequests ? await (async () => {
4302
+ const requestResult = await makeStreamingApiRequest({
4303
+ headers: {
4304
+ Authorization: `Bearer ${openApiApiKey}`,
4305
+ 'Content-Type': 'application/json',
4306
+ ...getClientRequestIdHeader()
4307
+ },
4308
+ method: 'POST',
4309
+ postBody,
4310
+ url: getOpenApiApiEndpoint(openApiApiBaseUrl)
4311
+ });
4312
+ if (requestResult.type === 'error') {
4313
+ if (requestResult.statusCode === 0) {
4314
+ return {
4315
+ details: 'request-failed',
4316
+ type: 'error'
4317
+ };
4318
+ }
4319
+ const {
4320
+ errorCode,
4321
+ errorMessage,
4322
+ errorType
4323
+ } = getOpenApiErrorDetailsFromResponseText(requestResult.response);
4324
+ return {
4325
+ details: 'http-error',
4326
+ ...(errorCode ? {
4327
+ errorCode
4328
+ } : {}),
4329
+ ...(errorMessage ? {
4330
+ errorMessage
4331
+ } : {}),
4332
+ ...(errorType ? {
4333
+ errorType
4334
+ } : {}),
4335
+ statusCode: requestResult.statusCode,
4336
+ type: 'error'
4337
+ };
4338
+ }
4339
+ const response = getResponseFromSseEvents(requestResult.body);
4340
+ return parseOpenApiStream(response, onTextChunk, onToolCallsChunk, onDataEvent);
4341
+ })() : await (async () => {
4342
+ let response;
4343
+ try {
4344
+ response = await fetch(getOpenApiApiEndpoint(openApiApiBaseUrl), {
4345
+ body: JSON.stringify(postBody),
4346
+ headers: {
4347
+ Authorization: `Bearer ${openApiApiKey}`,
4348
+ 'Content-Type': 'application/json',
4349
+ ...getClientRequestIdHeader()
4350
+ },
4351
+ method: 'POST'
4352
+ });
4353
+ } catch {
4354
+ return {
4355
+ details: 'request-failed',
4356
+ type: 'error'
4357
+ };
4358
+ }
4359
+ if (!response.ok) {
4360
+ const {
4361
+ errorCode,
4362
+ errorMessage,
4363
+ errorType
4364
+ } = await getOpenApiErrorDetails(response);
4365
+ return {
4366
+ details: 'http-error',
4367
+ ...(errorCode ? {
4368
+ errorCode
4369
+ } : {}),
4370
+ ...(errorMessage ? {
4371
+ errorMessage
4372
+ } : {}),
4373
+ ...(errorType ? {
4374
+ errorType
4375
+ } : {}),
4376
+ statusCode: response.status,
4377
+ type: 'error'
4378
+ };
4379
+ }
4380
+ return parseOpenApiStream(response, onTextChunk, onToolCallsChunk, onDataEvent);
4381
+ })();
4110
4382
  if (streamResult.type !== 'success') {
4111
4383
  return streamResult;
4112
4384
  }
@@ -4153,13 +4425,92 @@ const getOpenApiAssistantText = async (messages, modelId, openApiApiKey, openApi
4153
4425
  };
4154
4426
  }
4155
4427
  let parsed;
4156
- try {
4157
- parsed = await response.json();
4158
- } catch {
4159
- return {
4160
- details: 'request-failed',
4161
- type: 'error'
4162
- };
4428
+ if (useChatNetworkWorkerForRequests) {
4429
+ const requestResult = await makeApiRequest({
4430
+ headers: {
4431
+ Authorization: `Bearer ${openApiApiKey}`,
4432
+ 'Content-Type': 'application/json',
4433
+ ...getClientRequestIdHeader()
4434
+ },
4435
+ method: 'POST',
4436
+ postBody,
4437
+ url: getOpenApiApiEndpoint(openApiApiBaseUrl)
4438
+ });
4439
+ if (requestResult.type === 'error') {
4440
+ if (requestResult.statusCode === 0) {
4441
+ return {
4442
+ details: 'request-failed',
4443
+ type: 'error'
4444
+ };
4445
+ }
4446
+ const {
4447
+ errorCode,
4448
+ errorMessage,
4449
+ errorType
4450
+ } = getOpenApiErrorDetailsFromResponseText(requestResult.response);
4451
+ return {
4452
+ details: 'http-error',
4453
+ ...(errorCode ? {
4454
+ errorCode
4455
+ } : {}),
4456
+ ...(errorMessage ? {
4457
+ errorMessage
4458
+ } : {}),
4459
+ ...(errorType ? {
4460
+ errorType
4461
+ } : {}),
4462
+ statusCode: requestResult.statusCode,
4463
+ type: 'error'
4464
+ };
4465
+ }
4466
+ parsed = requestResult.body;
4467
+ } else {
4468
+ let response;
4469
+ try {
4470
+ response = await fetch(getOpenApiApiEndpoint(openApiApiBaseUrl), {
4471
+ body: JSON.stringify(postBody),
4472
+ headers: {
4473
+ Authorization: `Bearer ${openApiApiKey}`,
4474
+ 'Content-Type': 'application/json',
4475
+ ...getClientRequestIdHeader()
4476
+ },
4477
+ method: 'POST'
4478
+ });
4479
+ } catch {
4480
+ return {
4481
+ details: 'request-failed',
4482
+ type: 'error'
4483
+ };
4484
+ }
4485
+ if (!response.ok) {
4486
+ const {
4487
+ errorCode,
4488
+ errorMessage,
4489
+ errorType
4490
+ } = await getOpenApiErrorDetails(response);
4491
+ return {
4492
+ details: 'http-error',
4493
+ ...(errorCode ? {
4494
+ errorCode
4495
+ } : {}),
4496
+ ...(errorMessage ? {
4497
+ errorMessage
4498
+ } : {}),
4499
+ ...(errorType ? {
4500
+ errorType
4501
+ } : {}),
4502
+ statusCode: response.status,
4503
+ type: 'error'
4504
+ };
4505
+ }
4506
+ try {
4507
+ parsed = await response.json();
4508
+ } catch {
4509
+ return {
4510
+ details: 'request-failed',
4511
+ type: 'error'
4512
+ };
4513
+ }
4163
4514
  }
4164
4515
  if (!parsed || typeof parsed !== 'object') {
4165
4516
  return {
@@ -4394,28 +4745,67 @@ const getOpenRouterRaw429Message = async response => {
4394
4745
  }
4395
4746
  return raw;
4396
4747
  };
4397
- const getOpenRouterLimitInfo = async (openRouterApiKey, openRouterApiBaseUrl) => {
4398
- let response;
4748
+ const getOpenRouterRaw429MessageFromText = responseText => {
4749
+ let parsed;
4399
4750
  try {
4400
- response = await fetch(getOpenRouterKeyEndpoint(openRouterApiBaseUrl), {
4401
- headers: {
4402
- Authorization: `Bearer ${openRouterApiKey}`,
4403
- ...getClientRequestIdHeader()
4404
- },
4405
- method: 'GET'
4406
- });
4751
+ parsed = JSON.parse(responseText);
4407
4752
  } catch {
4408
4753
  return undefined;
4409
4754
  }
4410
- if (!response.ok) {
4755
+ if (!parsed || typeof parsed !== 'object') {
4411
4756
  return undefined;
4412
4757
  }
4413
- let parsed;
4414
- try {
4415
- parsed = await response.json();
4416
- } catch {
4758
+ const error = Reflect.get(parsed, 'error');
4759
+ if (!error || typeof error !== 'object') {
4760
+ return undefined;
4761
+ }
4762
+ const metadata = Reflect.get(error, 'metadata');
4763
+ if (!metadata || typeof metadata !== 'object') {
4764
+ return undefined;
4765
+ }
4766
+ const raw = Reflect.get(metadata, 'raw');
4767
+ if (typeof raw !== 'string' || !raw) {
4417
4768
  return undefined;
4418
4769
  }
4770
+ return raw;
4771
+ };
4772
+ const getOpenRouterLimitInfo = async (openRouterApiKey, openRouterApiBaseUrl, useChatNetworkWorkerForRequests) => {
4773
+ let parsed;
4774
+ if (useChatNetworkWorkerForRequests) {
4775
+ const result = await makeApiRequest({
4776
+ headers: {
4777
+ Authorization: `Bearer ${openRouterApiKey}`,
4778
+ ...getClientRequestIdHeader()
4779
+ },
4780
+ method: 'GET',
4781
+ url: getOpenRouterKeyEndpoint(openRouterApiBaseUrl)
4782
+ });
4783
+ if (result.type === 'error') {
4784
+ return undefined;
4785
+ }
4786
+ parsed = result.body;
4787
+ } else {
4788
+ let response;
4789
+ try {
4790
+ response = await fetch(getOpenRouterKeyEndpoint(openRouterApiBaseUrl), {
4791
+ headers: {
4792
+ Authorization: `Bearer ${openRouterApiKey}`,
4793
+ ...getClientRequestIdHeader()
4794
+ },
4795
+ method: 'GET'
4796
+ });
4797
+ } catch {
4798
+ return undefined;
4799
+ }
4800
+ if (!response.ok) {
4801
+ return undefined;
4802
+ }
4803
+ try {
4804
+ parsed = await response.json();
4805
+ } catch {
4806
+ return undefined;
4807
+ }
4808
+ }
4419
4809
  if (!parsed || typeof parsed !== 'object') {
4420
4810
  return undefined;
4421
4811
  }
@@ -4447,7 +4837,7 @@ const getOpenRouterLimitInfo = async (openRouterApiKey, openRouterApiBaseUrl) =>
4447
4837
  }
4448
4838
  return normalizedLimitInfo;
4449
4839
  };
4450
- const getOpenRouterAssistantText = async (messages, modelId, openRouterApiKey, openRouterApiBaseUrl, assetDir, platform) => {
4840
+ const getOpenRouterAssistantText = async (messages, modelId, openRouterApiKey, openRouterApiBaseUrl, assetDir, platform, useChatNetworkWorkerForRequests = false) => {
4451
4841
  const completionMessages = messages.map(message => ({
4452
4842
  content: message.text,
4453
4843
  role: message.role
@@ -4455,64 +4845,111 @@ const getOpenRouterAssistantText = async (messages, modelId, openRouterApiKey, o
4455
4845
  const tools = getBasicChatTools();
4456
4846
  const maxToolIterations = 4;
4457
4847
  for (let i = 0; i <= maxToolIterations; i++) {
4458
- let response;
4459
- try {
4460
- response = await fetch(getOpenRouterApiEndpoint(openRouterApiBaseUrl), {
4461
- body: JSON.stringify({
4462
- messages: completionMessages,
4463
- model: modelId,
4464
- tool_choice: 'auto',
4465
- tools
4466
- }),
4848
+ let parsed;
4849
+ if (useChatNetworkWorkerForRequests) {
4850
+ const requestResult = await makeApiRequest({
4467
4851
  headers: {
4468
4852
  Authorization: `Bearer ${openRouterApiKey}`,
4469
4853
  'Content-Type': 'application/json',
4470
4854
  ...getClientRequestIdHeader()
4471
4855
  },
4472
- method: 'POST'
4856
+ method: 'POST',
4857
+ postBody: {
4858
+ messages: completionMessages,
4859
+ model: modelId,
4860
+ tool_choice: 'auto',
4861
+ tools
4862
+ },
4863
+ url: getOpenRouterApiEndpoint(openRouterApiBaseUrl)
4473
4864
  });
4474
- } catch {
4475
- return {
4476
- details: 'request-failed',
4477
- type: 'error'
4478
- };
4479
- }
4480
- if (!response.ok) {
4481
- if (response.status === 429) {
4482
- const retryAfter = response.headers?.get?.('retry-after') ?? null;
4483
- const rawMessage = await getOpenRouterRaw429Message(response);
4484
- const limitInfo = await getOpenRouterLimitInfo(openRouterApiKey, openRouterApiBaseUrl);
4865
+ if (requestResult.type === 'error') {
4866
+ if (requestResult.statusCode === 429) {
4867
+ const retryAfter = requestResult.headers?.['retry-after'] ?? null;
4868
+ const rawMessage = getOpenRouterRaw429MessageFromText(requestResult.response);
4869
+ const limitInfo = await getOpenRouterLimitInfo(openRouterApiKey, openRouterApiBaseUrl, useChatNetworkWorkerForRequests);
4870
+ return {
4871
+ details: 'too-many-requests',
4872
+ ...(limitInfo || retryAfter ? {
4873
+ limitInfo: {
4874
+ ...limitInfo,
4875
+ ...(retryAfter ? {
4876
+ retryAfter
4877
+ } : {})
4878
+ }
4879
+ } : {}),
4880
+ ...(rawMessage ? {
4881
+ rawMessage
4882
+ } : {}),
4883
+ statusCode: 429,
4884
+ type: 'error'
4885
+ };
4886
+ }
4485
4887
  return {
4486
- details: 'too-many-requests',
4487
- ...(limitInfo || retryAfter ? {
4488
- limitInfo: {
4489
- ...limitInfo,
4490
- ...(retryAfter ? {
4491
- retryAfter
4492
- } : {})
4493
- }
4494
- } : {}),
4495
- ...(rawMessage ? {
4496
- rawMessage
4497
- } : {}),
4498
- statusCode: 429,
4888
+ details: 'http-error',
4889
+ statusCode: requestResult.statusCode,
4890
+ type: 'error'
4891
+ };
4892
+ }
4893
+ parsed = requestResult.body;
4894
+ } else {
4895
+ let response;
4896
+ try {
4897
+ response = await fetch(getOpenRouterApiEndpoint(openRouterApiBaseUrl), {
4898
+ body: JSON.stringify({
4899
+ messages: completionMessages,
4900
+ model: modelId,
4901
+ tool_choice: 'auto',
4902
+ tools
4903
+ }),
4904
+ headers: {
4905
+ Authorization: `Bearer ${openRouterApiKey}`,
4906
+ 'Content-Type': 'application/json',
4907
+ ...getClientRequestIdHeader()
4908
+ },
4909
+ method: 'POST'
4910
+ });
4911
+ } catch {
4912
+ return {
4913
+ details: 'request-failed',
4914
+ type: 'error'
4915
+ };
4916
+ }
4917
+ if (!response.ok) {
4918
+ if (response.status === 429) {
4919
+ const retryAfter = response.headers?.get?.('retry-after') ?? null;
4920
+ const rawMessage = await getOpenRouterRaw429Message(response);
4921
+ const limitInfo = await getOpenRouterLimitInfo(openRouterApiKey, openRouterApiBaseUrl, useChatNetworkWorkerForRequests);
4922
+ return {
4923
+ details: 'too-many-requests',
4924
+ ...(limitInfo || retryAfter ? {
4925
+ limitInfo: {
4926
+ ...limitInfo,
4927
+ ...(retryAfter ? {
4928
+ retryAfter
4929
+ } : {})
4930
+ }
4931
+ } : {}),
4932
+ ...(rawMessage ? {
4933
+ rawMessage
4934
+ } : {}),
4935
+ statusCode: 429,
4936
+ type: 'error'
4937
+ };
4938
+ }
4939
+ return {
4940
+ details: 'http-error',
4941
+ statusCode: response.status,
4942
+ type: 'error'
4943
+ };
4944
+ }
4945
+ try {
4946
+ parsed = await response.json();
4947
+ } catch {
4948
+ return {
4949
+ details: 'request-failed',
4499
4950
  type: 'error'
4500
4951
  };
4501
4952
  }
4502
- return {
4503
- details: 'http-error',
4504
- statusCode: response.status,
4505
- type: 'error'
4506
- };
4507
- }
4508
- let parsed;
4509
- try {
4510
- parsed = await response.json();
4511
- } catch {
4512
- return {
4513
- details: 'request-failed',
4514
- type: 'error'
4515
- };
4516
4953
  }
4517
4954
  if (!parsed || typeof parsed !== 'object') {
4518
4955
  return {
@@ -4652,6 +5089,17 @@ const isOpenRouterModel = (selectedModelId, models) => {
4652
5089
  return selectedModelId.toLowerCase().startsWith('openrouter/');
4653
5090
  };
4654
5091
 
5092
+ let requests = [];
5093
+ const reset$1 = () => {
5094
+ requests = [];
5095
+ };
5096
+ const capture = request => {
5097
+ requests = [...requests, request];
5098
+ };
5099
+ const getAll = () => {
5100
+ return requests;
5101
+ };
5102
+
4655
5103
  const getAiResponse = async ({
4656
5104
  assetDir,
4657
5105
  messageId,
@@ -4671,6 +5119,7 @@ const getAiResponse = async ({
4671
5119
  platform,
4672
5120
  selectedModelId,
4673
5121
  streamingEnabled = true,
5122
+ useChatNetworkWorkerForRequests = false,
4674
5123
  useMockApi,
4675
5124
  userText,
4676
5125
  webSearchEnabled = false
@@ -4680,6 +5129,22 @@ const getAiResponse = async ({
4680
5129
  const usesOpenRouterModel = isOpenRouterModel(selectedModelId, models);
4681
5130
  if (usesOpenApiModel) {
4682
5131
  if (useMockApi) {
5132
+ const openAiInput = messages.map(message => ({
5133
+ content: message.text,
5134
+ role: message.role
5135
+ }));
5136
+ const modelId = getOpenApiModelId(selectedModelId);
5137
+ const headers = {
5138
+ Authorization: `Bearer ${openApiApiKey}`,
5139
+ 'Content-Type': 'application/json',
5140
+ ...getClientRequestIdHeader()
5141
+ };
5142
+ capture({
5143
+ headers,
5144
+ method: 'POST',
5145
+ payload: getOpenAiParams(openAiInput, modelId, streamingEnabled, passIncludeObfuscation, getBasicChatTools(), webSearchEnabled),
5146
+ url: getOpenApiApiEndpoint(openApiApiBaseUrl)
5147
+ });
4683
5148
  const result = await getMockOpenApiAssistantText(streamingEnabled, onTextChunk, onToolCallsChunk, onDataEvent, onEventStreamFinished);
4684
5149
  if (result.type === 'success') {
4685
5150
  const {
@@ -4705,6 +5170,7 @@ const getAiResponse = async ({
4705
5170
  onToolCallsChunk
4706
5171
  } : {}),
4707
5172
  stream: streamingEnabled,
5173
+ useChatNetworkWorkerForRequests,
4708
5174
  webSearchEnabled
4709
5175
  });
4710
5176
  if (result.type === 'success') {
@@ -4731,7 +5197,7 @@ const getAiResponse = async ({
4731
5197
  text = getOpenRouterErrorMessage(result);
4732
5198
  }
4733
5199
  } else if (openRouterApiKey) {
4734
- const result = await getOpenRouterAssistantText(messages, modelId, openRouterApiKey, openRouterApiBaseUrl, assetDir, platform);
5200
+ const result = await getOpenRouterAssistantText(messages, modelId, openRouterApiKey, openRouterApiBaseUrl, assetDir, platform, useChatNetworkWorkerForRequests);
4735
5201
  if (result.type === 'success') {
4736
5202
  const {
4737
5203
  text: assistantText
@@ -4815,6 +5281,7 @@ const handleClickSaveOpenApiApiKey = async state => {
4815
5281
  platform: updatedState.platform,
4816
5282
  selectedModelId: updatedState.selectedModelId,
4817
5283
  streamingEnabled: updatedState.streamingEnabled,
5284
+ useChatNetworkWorkerForRequests: updatedState.useChatNetworkWorkerForRequests,
4818
5285
  useMockApi: updatedState.useMockApi,
4819
5286
  userText: previousUserMessage.text
4820
5287
  });
@@ -4895,6 +5362,7 @@ const handleClickSaveOpenRouterApiKey = async state => {
4895
5362
  openRouterApiKey,
4896
5363
  platform: updatedState.platform,
4897
5364
  selectedModelId: updatedState.selectedModelId,
5365
+ useChatNetworkWorkerForRequests: updatedState.useChatNetworkWorkerForRequests,
4898
5366
  useMockApi: updatedState.useMockApi,
4899
5367
  userText: previousUserMessage.text
4900
5368
  });
@@ -5271,6 +5739,7 @@ Assistant: ${assistantText}`;
5271
5739
  platform: state.platform,
5272
5740
  selectedModelId,
5273
5741
  streamingEnabled: false,
5742
+ useChatNetworkWorkerForRequests: state.useChatNetworkWorkerForRequests,
5274
5743
  useMockApi,
5275
5744
  userText: titlePrompt,
5276
5745
  webSearchEnabled: false
@@ -5298,6 +5767,7 @@ const handleSubmit = async state => {
5298
5767
  selectedSessionId,
5299
5768
  sessions,
5300
5769
  streamingEnabled,
5770
+ useChatNetworkWorkerForRequests,
5301
5771
  useMockApi,
5302
5772
  viewMode,
5303
5773
  webSearchEnabled
@@ -5450,6 +5920,7 @@ const handleSubmit = async state => {
5450
5920
  platform,
5451
5921
  selectedModelId,
5452
5922
  streamingEnabled,
5923
+ useChatNetworkWorkerForRequests,
5453
5924
  useMockApi,
5454
5925
  userText,
5455
5926
  webSearchEnabled
@@ -5493,16 +5964,39 @@ const handleClickSend = async state => {
5493
5964
  };
5494
5965
 
5495
5966
  const Composer = 'composer';
5967
+ const ComposerDropTarget = 'composer-drop-target';
5496
5968
  const Send = 'send';
5497
5969
  const Back = 'back';
5498
5970
  const Model = 'model';
5971
+ const ToggleChatFocus = 'toggle-chat-focus';
5972
+ const CreateProject = 'create-project';
5499
5973
  const CreateSession = 'create-session';
5974
+ const CreateSessionInProjectPrefix = 'create-session-in-project:';
5500
5975
  const SessionDebug = 'session-debug';
5501
5976
  const Settings = 'settings';
5502
5977
  const CloseChat = 'close-chat';
5503
5978
  const SessionDelete = 'SessionDelete';
5979
+ const ProjectPrefix = 'project:';
5504
5980
  const SessionPrefix = 'session:';
5505
5981
  const RenamePrefix = 'session-rename:';
5982
+ const getProjectInputName = projectId => {
5983
+ return `${ProjectPrefix}${projectId}`;
5984
+ };
5985
+ const getCreateSessionInProjectInputName = projectId => {
5986
+ return `${CreateSessionInProjectPrefix}${projectId}`;
5987
+ };
5988
+ const isCreateSessionInProjectInputName = name => {
5989
+ return name.startsWith(CreateSessionInProjectPrefix);
5990
+ };
5991
+ const getProjectIdFromCreateSessionInProjectInputName = name => {
5992
+ return name.slice(CreateSessionInProjectPrefix.length);
5993
+ };
5994
+ const isProjectInputName = name => {
5995
+ return name.startsWith(ProjectPrefix);
5996
+ };
5997
+ const getProjectIdFromInputName = name => {
5998
+ return name.slice(ProjectPrefix.length);
5999
+ };
5506
6000
  const getSessionInputName = sessionId => {
5507
6001
  return `${SessionPrefix}${sessionId}`;
5508
6002
  };
@@ -5547,10 +6041,11 @@ const selectSession = async (state, id) => {
5547
6041
  });
5548
6042
  return {
5549
6043
  ...state,
6044
+ lastNormalViewMode: state.viewMode === 'chat-focus' ? state.lastNormalViewMode : 'detail',
5550
6045
  renamingSessionId: '',
5551
6046
  selectedSessionId: id,
5552
6047
  sessions,
5553
- viewMode: 'detail'
6048
+ viewMode: state.viewMode === 'chat-focus' ? 'chat-focus' : 'detail'
5554
6049
  };
5555
6050
  };
5556
6051
 
@@ -5571,14 +6066,61 @@ const startRename = (state, id) => {
5571
6066
  };
5572
6067
  };
5573
6068
 
6069
+ const toggleChatFocusMode = async state => {
6070
+ if (state.viewMode === 'chat-focus') {
6071
+ return {
6072
+ ...state,
6073
+ viewMode: state.lastNormalViewMode
6074
+ };
6075
+ }
6076
+ if (state.viewMode === 'list' || state.viewMode === 'detail') {
6077
+ return {
6078
+ ...state,
6079
+ lastNormalViewMode: state.viewMode,
6080
+ viewMode: 'chat-focus'
6081
+ };
6082
+ }
6083
+ return state;
6084
+ };
6085
+
6086
+ const toggleProjectExpanded = async (state, projectId) => {
6087
+ const isExpanded = state.projectExpandedIds.includes(projectId);
6088
+ const projectExpandedIds = isExpanded ? state.projectExpandedIds.filter(id => id !== projectId) : [...state.projectExpandedIds, projectId];
6089
+ const visibleSessions = getVisibleSessions(state.sessions, projectId);
6090
+ if (visibleSessions.length === 0) {
6091
+ return {
6092
+ ...state,
6093
+ projectExpandedIds,
6094
+ selectedProjectId: projectId,
6095
+ selectedSessionId: '',
6096
+ viewMode: 'chat-focus'
6097
+ };
6098
+ }
6099
+ const selectedSessionVisible = visibleSessions.some(session => session.id === state.selectedSessionId);
6100
+ const selectedSessionId = selectedSessionVisible ? state.selectedSessionId : visibleSessions[0].id;
6101
+ const loadedSession = await getChatSession(selectedSessionId);
6102
+ const sessions = state.sessions.map(session => {
6103
+ if (session.id !== selectedSessionId || !loadedSession) {
6104
+ return session;
6105
+ }
6106
+ return loadedSession;
6107
+ });
6108
+ return {
6109
+ ...state,
6110
+ projectExpandedIds,
6111
+ selectedProjectId: projectId,
6112
+ selectedSessionId,
6113
+ sessions,
6114
+ viewMode: 'chat-focus'
6115
+ };
6116
+ };
6117
+
5574
6118
  const selectListIndex = async (state, index) => {
5575
- const {
5576
- sessions
5577
- } = state;
5578
- if (index < 0 || index >= sessions.length) {
6119
+ const visibleSessions = getVisibleSessions(state.sessions, state.selectedProjectId);
6120
+ if (index < 0 || index >= visibleSessions.length) {
5579
6121
  return state;
5580
6122
  }
5581
- const session = sessions[index];
6123
+ const session = visibleSessions[index];
5582
6124
  return selectSession(state, session.id);
5583
6125
  };
5584
6126
 
@@ -5594,6 +6136,23 @@ const handleClick = async (state, name, id = '') => {
5594
6136
  if (name === CreateSession) {
5595
6137
  return createSession(state);
5596
6138
  }
6139
+ if (name === CreateProject) {
6140
+ return handleClickCreateProject(state);
6141
+ }
6142
+ if (isCreateSessionInProjectInputName(name)) {
6143
+ const projectId = getProjectIdFromCreateSessionInProjectInputName(name);
6144
+ return createSession(state, projectId);
6145
+ }
6146
+ if (name === ToggleChatFocus) {
6147
+ return toggleChatFocusMode(state);
6148
+ }
6149
+ if (isProjectInputName(name)) {
6150
+ const projectId = getProjectIdFromInputName(name);
6151
+ if (state.viewMode === 'chat-focus') {
6152
+ return toggleProjectExpanded(state, projectId);
6153
+ }
6154
+ return selectProject(state, projectId);
6155
+ }
5597
6156
  if (isSessionInputName(name)) {
5598
6157
  const sessionId = getSessionIdFromInputName(name);
5599
6158
  return selectSession(state, sessionId);
@@ -5632,6 +6191,7 @@ const handleClick = async (state, name, id = '') => {
5632
6191
  const handleClickBack = async state => {
5633
6192
  return {
5634
6193
  ...state,
6194
+ lastNormalViewMode: 'list',
5635
6195
  renamingSessionId: '',
5636
6196
  viewMode: 'list'
5637
6197
  };
@@ -5662,9 +6222,92 @@ const handleClickSessionDebug = async state => {
5662
6222
  return state;
5663
6223
  };
5664
6224
 
5665
- const handleClickSettings = async () => {
5666
- // TODO
5667
- await invoke('Main.openUri', 'app://settings.json');
6225
+ const handleClickSettings = async () => {
6226
+ // TODO
6227
+ await invoke('Main.openUri', 'app://settings.json');
6228
+ };
6229
+
6230
+ const handleDragEnter = async (state, name, hasFiles = true) => {
6231
+ if (name !== ComposerDropTarget) {
6232
+ return state;
6233
+ }
6234
+ if (!state.composerDropEnabled) {
6235
+ return state;
6236
+ }
6237
+ if (!hasFiles) {
6238
+ return state;
6239
+ }
6240
+ if (state.composerDropActive) {
6241
+ return state;
6242
+ }
6243
+ return {
6244
+ ...state,
6245
+ composerDropActive: true
6246
+ };
6247
+ };
6248
+
6249
+ const handleDragLeave = async (state, name) => {
6250
+ if (name !== ComposerDropTarget) {
6251
+ return state;
6252
+ }
6253
+ if (!state.composerDropActive) {
6254
+ return state;
6255
+ }
6256
+ return {
6257
+ ...state,
6258
+ composerDropActive: false
6259
+ };
6260
+ };
6261
+
6262
+ const handleDragOver = async (state, name, hasFiles = true) => {
6263
+ if (name !== ComposerDropTarget) {
6264
+ return state;
6265
+ }
6266
+ if (!state.composerDropEnabled) {
6267
+ return state;
6268
+ }
6269
+ if (!hasFiles) {
6270
+ return state;
6271
+ }
6272
+ if (state.composerDropActive) {
6273
+ return state;
6274
+ }
6275
+ return {
6276
+ ...state,
6277
+ composerDropActive: true
6278
+ };
6279
+ };
6280
+
6281
+ const handleDropFiles = async (state, name, files = []) => {
6282
+ if (name !== ComposerDropTarget) {
6283
+ return state;
6284
+ }
6285
+ if (!state.composerDropEnabled) {
6286
+ return {
6287
+ ...state,
6288
+ composerDropActive: false
6289
+ };
6290
+ }
6291
+ const nextState = state.composerDropActive === false ? state : {
6292
+ ...state,
6293
+ composerDropActive: false
6294
+ };
6295
+ if (!state.selectedSessionId || files.length === 0) {
6296
+ return nextState;
6297
+ }
6298
+ for (const file of files) {
6299
+ await appendChatViewEvent({
6300
+ attachmentId: crypto.randomUUID(),
6301
+ blob: file,
6302
+ mimeType: file.type,
6303
+ name: file.name,
6304
+ sessionId: state.selectedSessionId,
6305
+ size: file.size,
6306
+ timestamp: new Date().toISOString(),
6307
+ type: 'chat-attachment-added'
6308
+ });
6309
+ }
6310
+ return nextState;
5668
6311
  };
5669
6312
 
5670
6313
  const handleInput = async (state, name, value, inputSource = 'user') => {
@@ -5830,6 +6473,15 @@ const handleMessagesScroll = async (state, messagesScrollTop) => {
5830
6473
  messagesScrollTop
5831
6474
  };
5832
6475
  };
6476
+ const handleProjectListScroll = async (state, projectListScrollTop) => {
6477
+ if (state.projectListScrollTop === projectListScrollTop) {
6478
+ return state;
6479
+ }
6480
+ return {
6481
+ ...state,
6482
+ projectListScrollTop
6483
+ };
6484
+ };
5833
6485
 
5834
6486
  const id = 7201;
5835
6487
  const sendMessagePortToExtensionHostWorker = async port => {
@@ -5929,7 +6581,7 @@ const getSavedViewMode = savedState => {
5929
6581
  const {
5930
6582
  viewMode
5931
6583
  } = savedState;
5932
- if (viewMode !== 'list' && viewMode !== 'detail') {
6584
+ if (viewMode !== 'list' && viewMode !== 'detail' && viewMode !== 'chat-focus') {
5933
6585
  return undefined;
5934
6586
  }
5935
6587
  return viewMode;
@@ -5944,6 +6596,15 @@ const loadAiSessionTitleGenerationEnabled = async () => {
5944
6596
  }
5945
6597
  };
5946
6598
 
6599
+ const loadComposerDropEnabled = async () => {
6600
+ try {
6601
+ const savedComposerDropEnabled = await get('chatView.composerDropEnabled');
6602
+ return typeof savedComposerDropEnabled === 'boolean' ? savedComposerDropEnabled : true;
6603
+ } catch {
6604
+ return true;
6605
+ }
6606
+ };
6607
+
5947
6608
  const loadEmitStreamingFunctionCallEvents = async () => {
5948
6609
  try {
5949
6610
  const savedEmitStreamingFunctionCallEvents = await get('chatView.emitStreamingFunctionCallEvents');
@@ -5997,15 +6658,26 @@ const loadStreamingEnabled = async () => {
5997
6658
  }
5998
6659
  };
5999
6660
 
6661
+ const loadUseChatNetworkWorkerForRequests = async () => {
6662
+ try {
6663
+ const savedUseChatNetworkWorkerForRequests = await get('chatView.useChatNetworkWorkerForRequests');
6664
+ return typeof savedUseChatNetworkWorkerForRequests === 'boolean' ? savedUseChatNetworkWorkerForRequests : false;
6665
+ } catch {
6666
+ return false;
6667
+ }
6668
+ };
6669
+
6000
6670
  const loadPreferences = async () => {
6001
- const [aiSessionTitleGenerationEnabled, openApiApiKey, openRouterApiKey, emitStreamingFunctionCallEvents, streamingEnabled, passIncludeObfuscation] = await Promise.all([loadAiSessionTitleGenerationEnabled(), loadOpenApiApiKey(), loadOpenRouterApiKey(), loadEmitStreamingFunctionCallEvents(), loadStreamingEnabled(), loadPassIncludeObfuscation()]);
6671
+ const [aiSessionTitleGenerationEnabled, composerDropEnabled, openApiApiKey, openRouterApiKey, emitStreamingFunctionCallEvents, streamingEnabled, passIncludeObfuscation, useChatNetworkWorkerForRequests] = await Promise.all([loadAiSessionTitleGenerationEnabled(), loadComposerDropEnabled(), loadOpenApiApiKey(), loadOpenRouterApiKey(), loadEmitStreamingFunctionCallEvents(), loadStreamingEnabled(), loadPassIncludeObfuscation(), loadUseChatNetworkWorkerForRequests()]);
6002
6672
  return {
6003
6673
  aiSessionTitleGenerationEnabled,
6674
+ composerDropEnabled,
6004
6675
  emitStreamingFunctionCallEvents,
6005
6676
  openApiApiKey,
6006
6677
  openRouterApiKey,
6007
6678
  passIncludeObfuscation,
6008
- streamingEnabled
6679
+ streamingEnabled,
6680
+ useChatNetworkWorkerForRequests
6009
6681
  };
6010
6682
  };
6011
6683
 
@@ -6026,22 +6698,110 @@ const loadSelectedSessionMessages = async (sessions, selectedSessionId) => {
6026
6698
  };
6027
6699
 
6028
6700
  const toSummarySession = session => {
6029
- return {
6701
+ const summary = {
6030
6702
  id: session.id,
6031
6703
  messages: [],
6032
6704
  title: session.title
6033
6705
  };
6706
+ if (!session.projectId) {
6707
+ return summary;
6708
+ }
6709
+ return {
6710
+ ...summary,
6711
+ projectId: session.projectId
6712
+ };
6713
+ };
6714
+ const getSavedSelectedProjectId = savedState => {
6715
+ if (!isObject(savedState)) {
6716
+ return undefined;
6717
+ }
6718
+ const {
6719
+ selectedProjectId
6720
+ } = savedState;
6721
+ if (typeof selectedProjectId !== 'string') {
6722
+ return undefined;
6723
+ }
6724
+ return selectedProjectId;
6725
+ };
6726
+ const getSavedProjects = savedState => {
6727
+ if (!isObject(savedState)) {
6728
+ return undefined;
6729
+ }
6730
+ const {
6731
+ projects
6732
+ } = savedState;
6733
+ if (!Array.isArray(projects)) {
6734
+ return undefined;
6735
+ }
6736
+ const validProjects = projects.filter(project => {
6737
+ if (!isObject(project)) {
6738
+ return false;
6739
+ }
6740
+ return typeof project.id === 'string' && typeof project.name === 'string' && typeof project.uri === 'string';
6741
+ });
6742
+ if (validProjects.length === 0) {
6743
+ return undefined;
6744
+ }
6745
+ return validProjects;
6746
+ };
6747
+ const ensureBlankProject = (projects, fallbackBlankProject) => {
6748
+ if (projects.some(project => project.name === '_blank')) {
6749
+ return projects;
6750
+ }
6751
+ return [fallbackBlankProject, ...projects];
6752
+ };
6753
+ const getSavedProjectListScrollTop = savedState => {
6754
+ if (!isObject(savedState)) {
6755
+ return undefined;
6756
+ }
6757
+ const {
6758
+ projectListScrollTop
6759
+ } = savedState;
6760
+ if (typeof projectListScrollTop !== 'number') {
6761
+ return undefined;
6762
+ }
6763
+ return projectListScrollTop;
6764
+ };
6765
+ const getSavedProjectExpandedIds = savedState => {
6766
+ if (!isObject(savedState)) {
6767
+ return undefined;
6768
+ }
6769
+ const {
6770
+ projectExpandedIds
6771
+ } = savedState;
6772
+ if (!Array.isArray(projectExpandedIds)) {
6773
+ return undefined;
6774
+ }
6775
+ const ids = projectExpandedIds.filter(id => typeof id === 'string');
6776
+ if (ids.length === 0) {
6777
+ return undefined;
6778
+ }
6779
+ return ids;
6780
+ };
6781
+ const getSavedLastNormalViewMode = savedState => {
6782
+ if (!isObject(savedState)) {
6783
+ return undefined;
6784
+ }
6785
+ const {
6786
+ lastNormalViewMode
6787
+ } = savedState;
6788
+ if (lastNormalViewMode !== 'list' && lastNormalViewMode !== 'detail') {
6789
+ return undefined;
6790
+ }
6791
+ return lastNormalViewMode;
6034
6792
  };
6035
6793
  const loadContent = async (state, savedState) => {
6036
6794
  const savedSelectedModelId = getSavedSelectedModelId(savedState);
6037
6795
  const savedViewMode = getSavedViewMode(savedState);
6038
6796
  const {
6039
6797
  aiSessionTitleGenerationEnabled,
6798
+ composerDropEnabled,
6040
6799
  emitStreamingFunctionCallEvents,
6041
6800
  openApiApiKey,
6042
6801
  openRouterApiKey,
6043
6802
  passIncludeObfuscation,
6044
- streamingEnabled
6803
+ streamingEnabled,
6804
+ useChatNetworkWorkerForRequests
6045
6805
  } = await loadPreferences();
6046
6806
  const legacySavedSessions = getSavedSessions(savedState);
6047
6807
  const storedSessions = await listChatSessions();
@@ -6059,34 +6819,67 @@ const loadContent = async (state, savedState) => {
6059
6819
  sessions = state.sessions.map(toSummarySession);
6060
6820
  }
6061
6821
  const preferredSessionId = getSavedSelectedSessionId(savedState) || state.selectedSessionId;
6822
+ const savedProjects = getSavedProjects(savedState);
6823
+ const baseProjects = savedProjects && savedProjects.length > 0 ? savedProjects : state.projects;
6824
+ const blankProject = state.projects.find(project => project.name === '_blank') || {
6825
+ id: 'project-blank',
6826
+ name: '_blank',
6827
+ uri: ''
6828
+ };
6829
+ const projects = ensureBlankProject(baseProjects, blankProject);
6830
+ const preferredProjectId = getSavedSelectedProjectId(savedState) || state.selectedProjectId;
6831
+ const selectedProjectId = projects.some(project => project.id === preferredProjectId) ? preferredProjectId : projects[0]?.id || '';
6062
6832
  const preferredModelId = savedSelectedModelId || state.selectedModelId;
6063
6833
  const chatListScrollTop = getSavedChatListScrollTop(savedState) ?? state.chatListScrollTop;
6064
6834
  const messagesScrollTop = getSavedMessagesScrollTop(savedState) ?? state.messagesScrollTop;
6835
+ const projectListScrollTop = getSavedProjectListScrollTop(savedState) ?? state.projectListScrollTop;
6836
+ const savedProjectExpandedIds = getSavedProjectExpandedIds(savedState);
6837
+ const projectExpandedIds = (savedProjectExpandedIds || state.projectExpandedIds).filter(id => projects.some(project => project.id === id));
6065
6838
  const selectedModelId = state.models.some(model => model.id === preferredModelId) ? preferredModelId : state.models[0]?.id || '';
6066
- const selectedSessionId = sessions.some(session => session.id === preferredSessionId) ? preferredSessionId : sessions[0]?.id || '';
6839
+ const visibleSessions = getVisibleSessions(sessions, selectedProjectId);
6840
+ const selectedSessionId = visibleSessions.some(session => session.id === preferredSessionId) ? preferredSessionId : visibleSessions[0]?.id || '';
6067
6841
  sessions = await loadSelectedSessionMessages(sessions, selectedSessionId);
6068
6842
  const preferredViewMode = savedViewMode || state.viewMode;
6069
- const viewMode = sessions.length === 0 || !selectedSessionId ? 'list' : preferredViewMode === 'detail' ? 'detail' : 'list';
6843
+ const savedLastNormalViewMode = getSavedLastNormalViewMode(savedState);
6844
+ const lastNormalViewMode = savedLastNormalViewMode || (preferredViewMode === 'detail' ? 'detail' : state.lastNormalViewMode);
6845
+ const viewMode = sessions.length === 0 || !selectedSessionId ? 'list' : preferredViewMode;
6070
6846
  return {
6071
6847
  ...state,
6072
6848
  aiSessionTitleGenerationEnabled,
6073
6849
  chatListScrollTop,
6850
+ composerDropActive: false,
6851
+ composerDropEnabled,
6074
6852
  emitStreamingFunctionCallEvents,
6075
6853
  initial: false,
6854
+ lastNormalViewMode,
6076
6855
  messagesScrollTop,
6077
6856
  openApiApiKey,
6078
6857
  openApiApiKeyInput: openApiApiKey,
6079
6858
  openRouterApiKey,
6080
6859
  openRouterApiKeyInput: openRouterApiKey,
6081
6860
  passIncludeObfuscation,
6861
+ projectExpandedIds,
6862
+ projectListScrollTop,
6863
+ projects,
6082
6864
  selectedModelId,
6865
+ selectedProjectId,
6083
6866
  selectedSessionId,
6084
6867
  sessions,
6085
6868
  streamingEnabled,
6869
+ useChatNetworkWorkerForRequests,
6086
6870
  viewMode
6087
6871
  };
6088
6872
  };
6089
6873
 
6874
+ const mockOpenApiRequestGetAll = _state => {
6875
+ return getAll();
6876
+ };
6877
+
6878
+ const mockOpenApiRequestReset = state => {
6879
+ reset$1();
6880
+ return state;
6881
+ };
6882
+
6090
6883
  const mockOpenApiSetHttpErrorResponse = (state, statusCode, body) => {
6091
6884
  setHttpErrorResponse(statusCode, body);
6092
6885
  return state;
@@ -6103,7 +6896,7 @@ const mockOpenApiStreamPushChunk = (state, chunk) => {
6103
6896
  };
6104
6897
 
6105
6898
  const mockOpenApiStreamReset = state => {
6106
- reset$1();
6899
+ reset$2();
6107
6900
  return state;
6108
6901
  };
6109
6902
 
@@ -6142,7 +6935,7 @@ const openMockSession = async (state, mockSessionId, mockChatMessages) => {
6142
6935
  };
6143
6936
 
6144
6937
  const registerMockResponse = (state, mockResponse) => {
6145
- reset$1();
6938
+ reset$2();
6146
6939
  pushChunk(mockResponse.text);
6147
6940
  finish();
6148
6941
  return state;
@@ -6157,91 +6950,219 @@ const getCss = (composerHeight, listItemHeight, chatMessageFontSize, chatMessage
6157
6950
  --ChatMessageFontFamily: ${chatMessageFontFamily};
6158
6951
  }
6159
6952
 
6160
- .ChatToolCalls {
6161
- position: relative;
6162
- border: 1px solid var(--vscode-editorWidget-border);
6163
- border-radius: 4px;
6164
- margin-bottom: 8px;
6165
- padding: 10px 8px 6px;
6166
- background: var(--vscode-editorWidget-background);
6953
+ .Viewlet.Chat.ChatFocus {
6954
+ background: linear-gradient(180deg, var(--ColorViewBackground, #1d2229) 0%, #1f252d 100%);
6955
+ display: grid;
6956
+ grid-template-columns: 320px 1fr;
6957
+ grid-template-rows: auto 1fr auto;
6958
+ }
6959
+
6960
+ .Chat.ChatFocus .ChatHeader {
6961
+ grid-column: 1 / 3;
6962
+ }
6963
+
6964
+ .Chat.ChatFocus .ProjectSidebar {
6965
+ background: color-mix(in srgb, var(--ColorSideBarBackground, #232b35) 88%, #1f2b38 12%);
6966
+ border-right: 1px solid var(--ColorBorder, #3a3d41);
6967
+ box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.2);
6968
+ display: flex;
6969
+ flex-direction: column;
6970
+ grid-column: 1;
6971
+ grid-row: 2 / 4;
6972
+ min-height: 0;
6973
+ }
6974
+
6975
+ .Chat.ChatFocus .ProjectList {
6976
+ min-height: 0;
6977
+ overflow: auto;
6978
+ padding: 10px 8px 12px;
6979
+ scrollbar-color: color-mix(in srgb, var(--ColorScrollBarSliderBackground, #4b5563) 78%, transparent)
6980
+ color-mix(in srgb, var(--ColorSideBarBackground, #232b35) 92%, transparent);
6981
+ scrollbar-width: thin;
6982
+ }
6983
+
6984
+ .Chat.ChatFocus .ProjectList::-webkit-scrollbar {
6985
+ height: 10px;
6986
+ width: 10px;
6987
+ }
6988
+
6989
+ .Chat.ChatFocus .ProjectList::-webkit-scrollbar-track {
6990
+ background: color-mix(in srgb, var(--ColorSideBarBackground, #232b35) 94%, transparent);
6991
+ border-radius: 999px;
6167
6992
  }
6168
6993
 
6169
- .ChatToolCallsLabel {
6170
- position: absolute;
6171
- top: -8px;
6172
- left: 8px;
6173
- padding: 0 4px;
6174
- border-radius: 3px;
6175
- background: var(--vscode-editor-background);
6176
- color: var(--vscode-descriptionForeground);
6177
- font-size: 10px;
6178
- line-height: 14px;
6179
- text-transform: lowercase;
6180
- letter-spacing: 0.02em;
6994
+ .Chat.ChatFocus .ProjectList::-webkit-scrollbar-thumb {
6995
+ background: color-mix(in srgb, var(--ColorScrollBarSliderBackground, #4b5563) 70%, transparent);
6996
+ border: 2px solid color-mix(in srgb, var(--ColorSideBarBackground, #232b35) 94%, transparent);
6997
+ border-radius: 999px;
6181
6998
  }
6182
6999
 
6183
- .ChatToolCallReadFileLink {
6184
- color: var(--vscode-textLink-foreground);
6185
- text-decoration: underline;
7000
+ .Chat.ChatFocus .ProjectList::-webkit-scrollbar-thumb:hover {
7001
+ background: color-mix(in srgb, var(--ColorScrollBarSliderHoverBackground, #667284) 80%, transparent);
6186
7002
  }
6187
7003
 
6188
- .ChatToolCallRenderHtmlLabel {
7004
+ .ProjectListGroup {
7005
+ border: 1px solid transparent;
7006
+ border-radius: 8px;
6189
7007
  margin-bottom: 6px;
6190
- color: var(--vscode-descriptionForeground);
6191
- font-size: 12px;
7008
+ overflow: hidden;
7009
+ }
7010
+
7011
+ .ProjectListItem {
7012
+ align-items: center;
7013
+ display: flex;
7014
+ gap: 6px;
7015
+ min-height: calc(var(--ChatListItemHeight) - 2px);
6192
7016
  }
6193
7017
 
6194
- .ChatToolCallRenderHtmlContent {
6195
- border: 1px solid var(--vscode-editorWidget-border);
7018
+ .ProjectListItemLabel {
7019
+ align-items: center;
6196
7020
  border-radius: 6px;
6197
- background: var(--vscode-editor-background);
7021
+ color: var(--ColorForeground, #d5dbe3);
7022
+ cursor: pointer;
7023
+ display: flex;
7024
+ flex: 1;
7025
+ font-weight: 500;
7026
+ gap: 2px;
6198
7027
  overflow: hidden;
7028
+ padding: 0 10px;
7029
+ text-overflow: ellipsis;
7030
+ transition: background-color 80ms ease, color 80ms ease;
7031
+ white-space: nowrap;
7032
+ }
7033
+
7034
+ .ProjectListChevron {
7035
+ color: color-mix(in srgb, var(--ColorForeground, #c8d0da) 70%, transparent);
7036
+ display: inline-block;
7037
+ flex: 0 0 12px;
7038
+ font-size: 11px;
7039
+ margin-right: 4px;
7040
+ text-align: center;
7041
+ width: 12px;
7042
+ }
7043
+
7044
+ .ProjectListItemSelected {
7045
+ background: color-mix(in srgb, var(--ColorListInactiveSelectionBackground, #39424d) 84%, #2f3741 16%);
7046
+ }
7047
+
7048
+ .ProjectListItem:not(.ProjectListItemSelected) .ProjectListItemLabel:hover,
7049
+ .ProjectListItem:not(.ProjectListItemSelected) .ProjectListItemLabel:focus-visible {
7050
+ background: color-mix(in srgb, var(--ColorListHoverBackground, #38414b) 50%, transparent);
7051
+ }
7052
+
7053
+ .ProjectListItemSelected .ProjectListItemLabel {
7054
+ color: var(--ColorListInactiveSelectionForeground, #e5ebf2);
7055
+ }
7056
+
7057
+ .ProjectListItemActions {
7058
+ display: flex;
7059
+ padding-right: 6px;
7060
+ }
7061
+
7062
+ .ProjectListItemAddChatButton {
7063
+ align-items: center;
7064
+ background: color-mix(in srgb, var(--ColorButtonSecondaryBackground, #3a434f) 76%, transparent);
7065
+ border: 0;
7066
+ border-radius: 5px;
7067
+ color: var(--ColorForeground, #d0d8e2);
7068
+ cursor: pointer;
7069
+ display: inline-flex;
7070
+ font-size: 13px;
7071
+ font-weight: 500;
7072
+ height: 18px;
7073
+ justify-content: center;
7074
+ opacity: 0;
7075
+ padding: 0;
7076
+ transition: opacity 90ms ease, background-color 90ms ease;
7077
+ visibility: hidden;
7078
+ width: 18px;
7079
+ }
7080
+
7081
+ .ProjectListItem:hover .ProjectListItemAddChatButton,
7082
+ .ProjectListItem:focus-within .ProjectListItemAddChatButton {
7083
+ opacity: 1;
7084
+ visibility: visible;
6199
7085
  }
6200
7086
 
6201
- .ChatToolCallRenderHtmlBody {
6202
- min-height: 180px;
6203
- padding: 12px;
7087
+ .ProjectListItemAddChatButton:hover,
7088
+ .ProjectListItemAddChatButton:focus-visible {
7089
+ background: color-mix(in srgb, var(--ColorButtonSecondaryHoverBackground, #4a5460) 82%, transparent);
6204
7090
  }
6205
7091
 
6206
- .ChatToolCallRenderHtmlBody * {
6207
- box-sizing: border-box;
7092
+ .ProjectSessionItem {
7093
+ align-items: center;
7094
+ display: flex;
7095
+ min-height: calc(var(--ChatListItemHeight) - 5px);
6208
7096
  }
6209
7097
 
6210
- .ChatMessageLink {
6211
- color: #4d94ff;
6212
- text-decoration: underline;
7098
+ .ProjectSessionItemLabel {
7099
+ border-radius: 6px;
7100
+ color: color-mix(in srgb, var(--ColorForeground, #cfd7df) 92%, transparent);
6213
7101
  cursor: pointer;
7102
+ display: block;
7103
+ flex: 1;
7104
+ font-size: 12.5px;
7105
+ overflow: hidden;
7106
+ padding: 0 10px 0 28px;
7107
+ text-overflow: ellipsis;
7108
+ transition: background-color 80ms ease, color 80ms ease;
7109
+ white-space: nowrap;
6214
7110
  }
6215
7111
 
6216
- .ChatOrderedList,
6217
- .ChatUnorderedList {
6218
- margin: 6px 0;
6219
- padding-inline-start: 20px;
7112
+ .ProjectSessionItemSelected {
7113
+ background: color-mix(in srgb, var(--ColorListInactiveSelectionBackground, #353f4a) 86%, #2c3540 14%);
6220
7114
  }
6221
7115
 
6222
- .ChatOrderedListItem,
6223
- .ChatUnorderedListItem {
6224
- margin: 2px 0;
7116
+ .ProjectSessionItem:not(.ProjectSessionItemSelected) .ProjectSessionItemLabel:hover,
7117
+ .ProjectSessionItem:not(.ProjectSessionItemSelected) .ProjectSessionItemLabel:focus-visible {
7118
+ background: color-mix(in srgb, var(--ColorListHoverBackground, #38414c) 46%, transparent);
6225
7119
  }
6226
7120
 
6227
- .MarkdownTable {
6228
- width: 100%;
6229
- margin: 6px 0;
6230
- border-collapse: collapse;
6231
- border: 1px solid var(--vscode-editorWidget-border);
7121
+ .ProjectSessionItemSelected .ProjectSessionItemLabel {
7122
+ color: var(--ColorListInactiveSelectionForeground, #f2f6fc);
6232
7123
  }
6233
7124
 
6234
- .MarkdownTable th,
6235
- .MarkdownTable td {
6236
- border: 1px solid var(--vscode-editorWidget-border);
6237
- padding: 4px 8px;
7125
+ .Chat.ChatFocus .ProjectAddButton {
7126
+ background: color-mix(in srgb, var(--ColorButtonSecondaryBackground, #21252c) 72%, transparent);
7127
+ border: 0;
7128
+ border-top: 1px solid color-mix(in srgb, var(--ColorBorder, #3a3d41) 70%, transparent);
7129
+ color: var(--ColorForeground, #d2d9e2);
7130
+ cursor: pointer;
7131
+ font-size: 12.5px;
7132
+ letter-spacing: 0.01em;
7133
+ margin-top: auto;
7134
+ min-height: var(--ChatListItemHeight);
7135
+ padding: 0 12px;
6238
7136
  text-align: left;
7137
+ transition: background-color 80ms ease;
7138
+ }
7139
+
7140
+ .Chat.ChatFocus .ProjectAddButton:hover,
7141
+ .Chat.ChatFocus .ProjectAddButton:focus-visible {
7142
+ background: color-mix(in srgb, var(--ColorButtonSecondaryHoverBackground, #2a3039) 78%, transparent);
6239
7143
  }
6240
7144
 
6241
- .MarkdownTable th {
6242
- background: var(--vscode-editorWidget-background);
7145
+ .ChatList,
7146
+ .ChatListEmpty,
7147
+ .ChatMessages {
7148
+ min-height: 0;
6243
7149
  }
6244
- }`;
7150
+
7151
+ .Chat.ChatFocus .ChatList,
7152
+ .Chat.ChatFocus .ChatListEmpty {
7153
+ display: none;
7154
+ }
7155
+
7156
+ .Chat.ChatFocus .ChatMessages {
7157
+ grid-column: 2;
7158
+ grid-row: 2;
7159
+ }
7160
+
7161
+ .Chat.ChatFocus .ChatSendArea {
7162
+ grid-column: 2;
7163
+ grid-row: 3;
7164
+ }
7165
+ `;
6245
7166
  if (!renderHtmlCss.trim()) {
6246
7167
  return baseCss;
6247
7168
  }
@@ -6298,6 +7219,8 @@ const Actions = 'Actions';
6298
7219
  const ChatActions = 'ChatActions';
6299
7220
  const ChatName = 'ChatName';
6300
7221
  const ChatSendArea = 'ChatSendArea';
7222
+ const ChatViewDropOverlay = 'ChatViewDropOverlay';
7223
+ const ChatViewDropOverlayActive = 'ChatViewDropOverlayActive';
6301
7224
  const SendButtonDisabled = 'SendButtonDisabled';
6302
7225
  const ChatSendAreaBottom = 'ChatSendAreaBottom';
6303
7226
  const ChatSendAreaContent = 'ChatSendAreaContent';
@@ -6306,6 +7229,7 @@ const ChatHeader = 'ChatHeader';
6306
7229
  const Button = 'Button';
6307
7230
  const ButtonPrimary = 'ButtonPrimary';
6308
7231
  const ButtonSecondary = 'ButtonSecondary';
7232
+ const Empty = '';
6309
7233
  const FileIcon = 'FileIcon';
6310
7234
  const IconButton = 'IconButton';
6311
7235
  const InputBox = 'InputBox';
@@ -6315,6 +7239,19 @@ const ChatList = 'ChatList';
6315
7239
  const ChatListEmpty = 'ChatListEmpty';
6316
7240
  const ChatListItem = 'ChatListItem';
6317
7241
  const ChatListItemLabel = 'ChatListItemLabel';
7242
+ const ProjectAddButton = 'ProjectAddButton';
7243
+ const ProjectList = 'ProjectList';
7244
+ const ProjectListChevron = 'ProjectListChevron';
7245
+ const ProjectListGroup = 'ProjectListGroup';
7246
+ const ProjectListItem = 'ProjectListItem';
7247
+ const ProjectListItemActions = 'ProjectListItemActions';
7248
+ const ProjectListItemAddChatButton = 'ProjectListItemAddChatButton';
7249
+ const ProjectListItemLabel = 'ProjectListItemLabel';
7250
+ const ProjectListItemSelected = 'ProjectListItemSelected';
7251
+ const ProjectSessionItem = 'ProjectSessionItem';
7252
+ const ProjectSessionItemLabel = 'ProjectSessionItemLabel';
7253
+ const ProjectSessionItemSelected = 'ProjectSessionItemSelected';
7254
+ const ProjectSidebar = 'ProjectSidebar';
6318
7255
  const Markdown = 'Markdown';
6319
7256
  const MarkdownTable = 'MarkdownTable';
6320
7257
  const Message = 'Message';
@@ -6359,6 +7296,13 @@ const HandleMessagesScroll = 22;
6359
7296
  const HandleClickSessionDebug = 23;
6360
7297
  const HandleClickReadFile = 24;
6361
7298
  const HandleMessagesContextMenu = 25;
7299
+ const HandleDragEnter = 26;
7300
+ const HandleDragOver = 27;
7301
+ const HandleDragLeave = 28;
7302
+ const HandleDrop = 29;
7303
+ const HandleDragEnterChatView = 30;
7304
+ const HandleDragOverChatView = 31;
7305
+ const HandleProjectListScroll = 32;
6362
7306
 
6363
7307
  const getModelLabel = model => {
6364
7308
  if (model.provider === 'openRouter') {
@@ -6408,147 +7352,71 @@ const getSendButtonDom = isSendDisabled => {
6408
7352
  title: sendMessage(),
6409
7353
  type: Button$1
6410
7354
  }, {
6411
- childCount: 0,
6412
- className: 'MaskIcon MaskIconSend',
6413
- type: Div
6414
- }];
6415
- };
6416
-
6417
- const clampToPercentage = (tokensUsed, tokensMax) => {
6418
- if (tokensMax <= 0) {
6419
- return 0;
6420
- }
6421
- const percentage = tokensUsed / tokensMax * 100;
6422
- return Math.max(0, Math.min(100, percentage));
6423
- };
6424
-
6425
- const getUsageOverviewDom = (tokensUsed, tokensMax) => {
6426
- const usagePercent = clampToPercentage(tokensUsed, tokensMax);
6427
- const usageLabel = `${tokensUsed} / ${tokensMax}`;
6428
- const usageTitle = `${tokensUsed} of ${tokensMax} tokens used (${Math.round(usagePercent)}%)`;
6429
- return [{
6430
- childCount: 3,
6431
- className: TokenUsageOverview,
6432
- type: Div
6433
- }, {
6434
- childCount: 1,
6435
- className: TokenUsageRing,
6436
- style: `background: conic-gradient(var(--vscode-button-background) ${usagePercent}%, var(--vscode-editorWidget-border) 0);`,
6437
- title: usageTitle,
6438
- type: Div
6439
- }, {
6440
- childCount: 0,
6441
- className: TokenUsageRingInner,
6442
- style: 'background: var(--vscode-editor-background);',
6443
- type: Div
6444
- }, {
6445
- childCount: 1,
6446
- className: LabelDetail,
6447
- title: usageTitle,
6448
- type: Span
6449
- }, text(usageLabel)];
6450
- };
6451
-
6452
- const getChatSendAreaDom = (composerValue, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, composerHeight = 28, composerFontSize = 13, composerFontFamily = 'system-ui', composerLineHeight = 20) => {
6453
- const isSendDisabled = composerValue.trim() === '';
6454
- return [{
6455
- childCount: 1,
6456
- className: ChatSendArea,
6457
- type: Div
6458
- }, {
6459
- childCount: 2,
6460
- className: ChatSendAreaContent,
6461
- type: Div
6462
- }, {
6463
- childCount: 0,
6464
- className: MultilineInputBox,
6465
- name: Composer,
6466
- onFocus: HandleFocus,
6467
- onInput: HandleInput,
6468
- placeholder: composePlaceholder(),
6469
- type: TextArea,
6470
- value: composerValue
6471
- }, {
6472
- childCount: usageOverviewEnabled ? 3 : 2,
6473
- className: ChatSendAreaBottom,
6474
- type: Div
6475
- }, ...getChatSelectVirtualDom(models, selectedModelId), ...(usageOverviewEnabled ? getUsageOverviewDom(tokensUsed, tokensMax) : []), ...getSendButtonDom(isSendDisabled)];
6476
- };
6477
-
6478
- const getBackButtonVirtualDom = () => {
6479
- return [{
6480
- childCount: 1,
6481
- className: IconButton,
6482
- name: Back,
6483
- onClick: HandleClickBack,
6484
- role: Button$2,
6485
- title: backToChats(),
6486
- type: Button$1
6487
- }, {
6488
- childCount: 0,
6489
- className: 'MaskIcon MaskIconArrowLeft',
6490
- type: Div
6491
- }];
6492
- };
6493
-
6494
- const getHeaderActionVirtualDom = item => {
6495
- return [{
6496
- childCount: 1,
6497
- className: IconButton,
6498
- name: item.name,
6499
- onClick: item.onClick,
6500
- title: item.title,
6501
- type: Button$1
6502
- }, {
6503
- childCount: 0,
6504
- className: item.icon,
6505
- type: Div
6506
- }];
6507
- };
6508
-
6509
- const getChatHeaderActionsDom = () => {
6510
- const items = [{
6511
- icon: 'MaskIcon MaskIconDebugPause',
6512
- name: SessionDebug,
6513
- onClick: HandleClickSessionDebug,
6514
- title: debug()
6515
- }, {
6516
- icon: 'MaskIcon MaskIconAdd',
6517
- name: CreateSession,
6518
- onClick: HandleClickNew,
6519
- title: newChat()
6520
- }, {
6521
- icon: 'MaskIcon MaskIconSettingsGear',
6522
- name: Settings,
6523
- onClick: HandleClickSettings,
6524
- title: settings()
6525
- }, {
6526
- icon: 'MaskIcon MaskIconClose',
6527
- name: CloseChat,
6528
- onClick: HandleClickClose,
6529
- title: closeChat()
7355
+ childCount: 0,
7356
+ className: 'MaskIcon MaskIconSend',
7357
+ type: Div
6530
7358
  }];
7359
+ };
7360
+
7361
+ const clampToPercentage = (tokensUsed, tokensMax) => {
7362
+ if (tokensMax <= 0) {
7363
+ return 0;
7364
+ }
7365
+ const percentage = tokensUsed / tokensMax * 100;
7366
+ return Math.max(0, Math.min(100, percentage));
7367
+ };
7368
+
7369
+ const getUsageOverviewDom = (tokensUsed, tokensMax) => {
7370
+ const usagePercent = clampToPercentage(tokensUsed, tokensMax);
7371
+ const usageLabel = `${tokensUsed} / ${tokensMax}`;
7372
+ const usageTitle = `${tokensUsed} of ${tokensMax} tokens used (${Math.round(usagePercent)}%)`;
6531
7373
  return [{
6532
- childCount: items.length,
6533
- className: ChatActions,
7374
+ childCount: 3,
7375
+ className: TokenUsageOverview,
6534
7376
  type: Div
6535
- }, ...items.flatMap(getHeaderActionVirtualDom)];
7377
+ }, {
7378
+ childCount: 1,
7379
+ className: TokenUsageRing,
7380
+ style: `background: conic-gradient(var(--vscode-button-background) ${usagePercent}%, var(--vscode-editorWidget-border) 0);`,
7381
+ title: usageTitle,
7382
+ type: Div
7383
+ }, {
7384
+ childCount: 0,
7385
+ className: TokenUsageRingInner,
7386
+ style: 'background: var(--vscode-editor-background);',
7387
+ type: Div
7388
+ }, {
7389
+ childCount: 1,
7390
+ className: LabelDetail,
7391
+ title: usageTitle,
7392
+ type: Span
7393
+ }, text(usageLabel)];
6536
7394
  };
6537
7395
 
6538
- const getChatHeaderDomDetailMode = selectedSessionTitle => {
7396
+ const getChatSendAreaDom = (composerValue, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, composerHeight = 28, composerFontSize = 13, composerFontFamily = 'system-ui', composerLineHeight = 20) => {
7397
+ const isSendDisabled = composerValue.trim() === '';
6539
7398
  return [{
6540
- childCount: 2,
6541
- className: ChatHeader,
7399
+ childCount: 1,
7400
+ className: ChatSendArea,
6542
7401
  type: Div
6543
7402
  }, {
6544
7403
  childCount: 2,
6545
- className: ChatName,
7404
+ className: ChatSendAreaContent,
6546
7405
  type: Div
6547
- }, ...getBackButtonVirtualDom(), {
6548
- childCount: 1,
6549
- className: Label,
6550
- type: Span
6551
- }, text(selectedSessionTitle), ...getChatHeaderActionsDom()];
7406
+ }, {
7407
+ childCount: 0,
7408
+ className: MultilineInputBox,
7409
+ name: Composer,
7410
+ onFocus: HandleFocus,
7411
+ onInput: HandleInput,
7412
+ placeholder: composePlaceholder(),
7413
+ type: TextArea,
7414
+ value: composerValue
7415
+ }, {
7416
+ childCount: usageOverviewEnabled ? 3 : 2,
7417
+ className: ChatSendAreaBottom,
7418
+ type: Div
7419
+ }, ...getChatSelectVirtualDom(models, selectedModelId), ...(usageOverviewEnabled ? getUsageOverviewDom(tokensUsed, tokensMax) : []), ...getSendButtonDom(isSendDisabled)];
6552
7420
  };
6553
7421
 
6554
7422
  const getInlineNodeDom = inlineNode => {
@@ -6561,6 +7429,12 @@ const getInlineNodeDom = inlineNode => {
6561
7429
  type: Strong
6562
7430
  }, text(inlineNode.text)];
6563
7431
  }
7432
+ if (inlineNode.type === 'italic') {
7433
+ return [{
7434
+ childCount: 1,
7435
+ type: Em
7436
+ }, text(inlineNode.text)];
7437
+ }
6564
7438
  return [{
6565
7439
  childCount: 1,
6566
7440
  className: ChatMessageLink,
@@ -7084,8 +7958,12 @@ const getElementType = tagName => {
7084
7958
  return inlineTags.has(tagName) ? Span : Div;
7085
7959
  }
7086
7960
  };
7961
+ const isHttpUrl$1 = url => {
7962
+ const normalized = url.trim().toLowerCase();
7963
+ return normalized.startsWith('http://') || normalized.startsWith('https://');
7964
+ };
7087
7965
  const normalizeUrl = url => {
7088
- return url.toLowerCase().startsWith('javascript:') ? '#' : url;
7966
+ return isHttpUrl$1(url) ? url : '#';
7089
7967
  };
7090
7968
  const getElementAttributes = node => {
7091
7969
  const attributes = {};
@@ -7226,10 +8104,23 @@ const getToolCallsDom = message => {
7226
8104
 
7227
8105
  const orderedListItemRegex = /^\s*\d+\.\s+(.*)$/;
7228
8106
  const unorderedListItemRegex = /^\s*[-*]\s+(.*)$/;
7229
- const markdownInlineRegex = /\[([^\]]+)\]\(([^)]+)\)|\*\*([^*]+)\*\*/g;
8107
+ const markdownInlineRegex = /\[([^\]]+)\]\(([^)]+)\)|\*\*([^*]+)\*\*|\*([^*]+)\*/g;
7230
8108
  const markdownTableSeparatorCellRegex = /^:?-{3,}:?$/;
7231
8109
  const fencedCodeBlockRegex = /^```/;
7232
8110
  const markdownHeadingRegex = /^\s*(#{1,6})\s+(.*)$/;
8111
+ const isHttpUrl = url => {
8112
+ const normalized = url.trim().toLowerCase();
8113
+ return normalized.startsWith('http://') || normalized.startsWith('https://');
8114
+ };
8115
+ const sanitizeUrl = url => {
8116
+ return isHttpUrl(url) ? url : '#';
8117
+ };
8118
+ const normalizeEscapedNewlines = value => {
8119
+ if (value.includes('\\n')) {
8120
+ return value.replaceAll(/\\r\\n|\\n/g, '\n');
8121
+ }
8122
+ return value;
8123
+ };
7233
8124
  const normalizeInlineTables = value => {
7234
8125
  return value.split(/\r?\n/).map(line => {
7235
8126
  if (!line.includes('|')) {
@@ -7283,6 +8174,7 @@ const parseInlineNodes = value => {
7283
8174
  const linkText = match[1];
7284
8175
  const href = match[2];
7285
8176
  const boldText = match[3];
8177
+ const italicText = match[4];
7286
8178
  const index = match.index ?? 0;
7287
8179
  if (index > lastIndex) {
7288
8180
  nodes.push({
@@ -7292,7 +8184,7 @@ const parseInlineNodes = value => {
7292
8184
  }
7293
8185
  if (linkText && href) {
7294
8186
  nodes.push({
7295
- href,
8187
+ href: sanitizeUrl(href),
7296
8188
  text: linkText,
7297
8189
  type: 'link'
7298
8190
  });
@@ -7301,6 +8193,11 @@ const parseInlineNodes = value => {
7301
8193
  text: boldText,
7302
8194
  type: 'bold'
7303
8195
  });
8196
+ } else if (italicText) {
8197
+ nodes.push({
8198
+ text: italicText,
8199
+ type: 'italic'
8200
+ });
7304
8201
  }
7305
8202
  lastIndex = index + fullMatch.length;
7306
8203
  }
@@ -7328,7 +8225,8 @@ const parseMessageContent = rawMessage => {
7328
8225
  type: 'text'
7329
8226
  }];
7330
8227
  }
7331
- const lines = normalizeInlineTables(rawMessage).split(/\r?\n/);
8228
+ const normalizedMessage = normalizeEscapedNewlines(rawMessage);
8229
+ const lines = normalizeInlineTables(normalizedMessage).split(/\r?\n/);
7332
8230
  const nodes = [];
7333
8231
  let paragraphLines = [];
7334
8232
  let listItems = [];
@@ -7494,15 +8392,227 @@ const getMessagesDom = (messages, openRouterApiKeyInput, openApiApiKeyInput = ''
7494
8392
  }, ...messages.flatMap(message => getChatMessageDom(message, openRouterApiKeyInput, openApiApiKeyInput, openRouterApiKeyState))];
7495
8393
  };
7496
8394
 
7497
- const getChatModeDetailVirtualDom = (sessions, selectedSessionId, composerValue, openRouterApiKeyInput, openApiApiKeyInput, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, openRouterApiKeyState = 'idle', composerHeight = 28, composerFontSize = 13, composerFontFamily = 'system-ui', composerLineHeight = 20, messagesScrollTop = 0) => {
8395
+ const getProjectSessionDom = (session, selectedSessionId) => {
8396
+ const className = mergeClassNames(ProjectSessionItem, session.id === selectedSessionId ? ProjectSessionItemSelected : Empty);
8397
+ return [{
8398
+ childCount: 1,
8399
+ className,
8400
+ type: Div
8401
+ }, {
8402
+ childCount: 1,
8403
+ className: ProjectSessionItemLabel,
8404
+ name: getSessionInputName(session.id),
8405
+ onClick: HandleClick,
8406
+ tabIndex: 0,
8407
+ type: Div
8408
+ }, text(session.title)];
8409
+ };
8410
+ const getProjectGroupDom = (project, sessions, projectExpandedIds, selectedProjectId, selectedSessionId) => {
8411
+ const expanded = projectExpandedIds.includes(project.id);
8412
+ const projectClassName = mergeClassNames(ProjectListItem, project.id === selectedProjectId ? ProjectListItemSelected : Empty);
8413
+ return [{
8414
+ childCount: 1 + (expanded ? sessions.length : 0),
8415
+ className: ProjectListGroup,
8416
+ type: Div
8417
+ }, {
8418
+ childCount: 2,
8419
+ className: projectClassName,
8420
+ type: Div
8421
+ }, {
8422
+ childCount: 2,
8423
+ className: ProjectListItemLabel,
8424
+ name: getProjectInputName(project.id),
8425
+ onClick: HandleClick,
8426
+ tabIndex: 0,
8427
+ type: Div
8428
+ }, {
8429
+ childCount: 1,
8430
+ className: ProjectListChevron,
8431
+ type: Span
8432
+ }, text(expanded ? '▾' : '▸'), text(project.name), {
8433
+ childCount: 1,
8434
+ className: ProjectListItemActions,
8435
+ type: Div
8436
+ }, {
8437
+ childCount: 1,
8438
+ className: ProjectListItemAddChatButton,
8439
+ name: getCreateSessionInProjectInputName(project.id),
8440
+ onClick: HandleClick,
8441
+ tabIndex: 0,
8442
+ title: 'New chat in this project',
8443
+ type: Button$1
8444
+ }, text('+'), ...(expanded ? sessions.flatMap(session => getProjectSessionDom(session, selectedSessionId)) : [])];
8445
+ };
8446
+ const getProjectListDom = (projects, sessions, projectExpandedIds, selectedProjectId, selectedSessionId, projectListScrollTop) => {
8447
+ const blankProjectId = projects.find(project => project.name === '_blank')?.id || projects[0]?.id || '';
8448
+ const projectGroups = projects.map(project => {
8449
+ const projectSessions = sessions.filter(session => {
8450
+ const sessionProjectId = session.projectId || blankProjectId;
8451
+ return sessionProjectId === project.id;
8452
+ });
8453
+ return getProjectGroupDom(project, projectSessions, projectExpandedIds, selectedProjectId, selectedSessionId);
8454
+ });
8455
+ return [{
8456
+ childCount: 2,
8457
+ className: ProjectSidebar,
8458
+ type: Div
8459
+ }, {
8460
+ childCount: projects.length,
8461
+ className: ProjectList,
8462
+ onScroll: HandleProjectListScroll,
8463
+ scrollTop: projectListScrollTop,
8464
+ type: Div
8465
+ }, ...projectGroups.flat(), {
8466
+ childCount: 1,
8467
+ className: ProjectAddButton,
8468
+ name: CreateProject,
8469
+ onClick: HandleClick,
8470
+ tabIndex: 0,
8471
+ type: Button$1
8472
+ }, text('+ Add Project')];
8473
+ };
8474
+
8475
+ const getChatModeChatFocusVirtualDom = (sessions, selectedSessionId, composerValue, openRouterApiKeyInput, openApiApiKeyInput, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, openRouterApiKeyState = 'idle', composerHeight = 28, composerFontSize = 13, composerFontFamily = 'system-ui', composerLineHeight = 20, messagesScrollTop = 0, composerDropActive = false, composerDropEnabled = true, projects = [], projectExpandedIds = [], selectedProjectId = '', projectListScrollTop = 0) => {
7498
8476
  const selectedSession = sessions.find(session => session.id === selectedSessionId);
7499
8477
  const selectedSessionTitle = selectedSession?.title || chatTitle();
7500
8478
  const messages = selectedSession ? selectedSession.messages : [];
8479
+ const isDropOverlayVisible = composerDropEnabled && composerDropActive;
7501
8480
  return [{
7502
- childCount: 3,
8481
+ childCount: 5,
8482
+ className: mergeClassNames(Viewlet, Chat, 'ChatFocus'),
8483
+ onDragEnter: HandleDragEnterChatView,
8484
+ onDragOver: HandleDragOverChatView,
8485
+ type: Div
8486
+ }, {
8487
+ childCount: 1,
8488
+ className: ChatHeader,
8489
+ type: Div
8490
+ }, {
8491
+ childCount: 1,
8492
+ className: Label,
8493
+ type: Span
8494
+ }, {
8495
+ text: selectedSessionTitle,
8496
+ type: Text
8497
+ }, ...getProjectListDom(projects, sessions, projectExpandedIds, selectedProjectId, selectedSessionId, projectListScrollTop), ...getMessagesDom(messages, openRouterApiKeyInput, openApiApiKeyInput, openRouterApiKeyState, messagesScrollTop), ...getChatSendAreaDom(composerValue, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, composerHeight, composerFontSize, composerFontFamily, composerLineHeight), {
8498
+ childCount: 1,
8499
+ className: mergeClassNames(ChatViewDropOverlay, isDropOverlayVisible ? ChatViewDropOverlayActive : Empty),
8500
+ name: ComposerDropTarget,
8501
+ onDragLeave: HandleDragLeave,
8502
+ onDragOver: HandleDragOver,
8503
+ onDrop: HandleDrop,
8504
+ type: Div
8505
+ }, {
8506
+ text: attachImageAsContext(),
8507
+ type: Text
8508
+ }];
8509
+ };
8510
+
8511
+ const getBackButtonVirtualDom = () => {
8512
+ return [{
8513
+ childCount: 1,
8514
+ className: IconButton,
8515
+ name: Back,
8516
+ onClick: HandleClickBack,
8517
+ role: Button$2,
8518
+ title: backToChats(),
8519
+ type: Button$1
8520
+ }, {
8521
+ childCount: 0,
8522
+ className: 'MaskIcon MaskIconArrowLeft',
8523
+ type: Div
8524
+ }];
8525
+ };
8526
+
8527
+ const getHeaderActionVirtualDom = item => {
8528
+ return [{
8529
+ childCount: 1,
8530
+ className: IconButton,
8531
+ name: item.name,
8532
+ onClick: item.onClick,
8533
+ title: item.title,
8534
+ type: Button$1
8535
+ }, {
8536
+ childCount: 0,
8537
+ className: item.icon,
8538
+ type: Div
8539
+ }];
8540
+ };
8541
+
8542
+ const getChatHeaderActionsDom = viewMode => {
8543
+ const toggleTitle = viewMode === 'chat-focus' ? normalChatMode() : chatFocusMode();
8544
+ const items = [{
8545
+ icon: 'MaskIcon MaskIconLayoutPanelLeft',
8546
+ name: ToggleChatFocus,
8547
+ onClick: HandleClick,
8548
+ title: toggleTitle
8549
+ }, {
8550
+ icon: 'MaskIcon MaskIconDebugPause',
8551
+ name: SessionDebug,
8552
+ onClick: HandleClickSessionDebug,
8553
+ title: debug()
8554
+ }, {
8555
+ icon: 'MaskIcon MaskIconAdd',
8556
+ name: CreateSession,
8557
+ onClick: HandleClickNew,
8558
+ title: newChat()
8559
+ }, {
8560
+ icon: 'MaskIcon MaskIconSettingsGear',
8561
+ name: Settings,
8562
+ onClick: HandleClickSettings,
8563
+ title: settings()
8564
+ }, {
8565
+ icon: 'MaskIcon MaskIconClose',
8566
+ name: CloseChat,
8567
+ onClick: HandleClickClose,
8568
+ title: closeChat()
8569
+ }];
8570
+ return [{
8571
+ childCount: items.length,
8572
+ className: ChatActions,
8573
+ type: Div
8574
+ }, ...items.flatMap(getHeaderActionVirtualDom)];
8575
+ };
8576
+
8577
+ const getChatHeaderDomDetailMode = selectedSessionTitle => {
8578
+ return [{
8579
+ childCount: 2,
8580
+ className: ChatHeader,
8581
+ type: Div
8582
+ }, {
8583
+ childCount: 2,
8584
+ className: ChatName,
8585
+ type: Div
8586
+ }, ...getBackButtonVirtualDom(), {
8587
+ childCount: 1,
8588
+ className: Label,
8589
+ type: Span
8590
+ }, text(selectedSessionTitle), ...getChatHeaderActionsDom('detail')];
8591
+ };
8592
+
8593
+ const getChatModeDetailVirtualDom = (sessions, selectedSessionId, composerValue, openRouterApiKeyInput, openApiApiKeyInput, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, openRouterApiKeyState = 'idle', composerHeight = 28, composerFontSize = 13, composerFontFamily = 'system-ui', composerLineHeight = 20, messagesScrollTop = 0, composerDropActive = false, composerDropEnabled = true) => {
8594
+ const selectedSession = sessions.find(session => session.id === selectedSessionId);
8595
+ const selectedSessionTitle = selectedSession?.title || chatTitle();
8596
+ const messages = selectedSession ? selectedSession.messages : [];
8597
+ const isDropOverlayVisible = composerDropEnabled && composerDropActive;
8598
+ return [{
8599
+ childCount: 4,
7503
8600
  className: mergeClassNames(Viewlet, Chat),
8601
+ onDragEnter: HandleDragEnterChatView,
8602
+ onDragOver: HandleDragOverChatView,
8603
+ type: Div
8604
+ }, ...getChatHeaderDomDetailMode(selectedSessionTitle), ...getMessagesDom(messages, openRouterApiKeyInput, openApiApiKeyInput, openRouterApiKeyState, messagesScrollTop), ...getChatSendAreaDom(composerValue, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, composerHeight, composerFontSize, composerFontFamily, composerLineHeight), {
8605
+ childCount: 1,
8606
+ className: mergeClassNames(ChatViewDropOverlay, isDropOverlayVisible ? ChatViewDropOverlayActive : Empty),
8607
+ name: ComposerDropTarget,
8608
+ onDragLeave: HandleDragLeave,
8609
+ onDragOver: HandleDragOver,
8610
+ onDrop: HandleDrop,
7504
8611
  type: Div
7505
- }, ...getChatHeaderDomDetailMode(selectedSessionTitle), ...getMessagesDom(messages, openRouterApiKeyInput, openApiApiKeyInput, openRouterApiKeyState, messagesScrollTop), ...getChatSendAreaDom(composerValue, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, composerHeight, composerFontSize, composerFontFamily, composerLineHeight)];
8612
+ }, {
8613
+ text: attachImageAsContext(),
8614
+ type: Text
8615
+ }];
7506
8616
  };
7507
8617
 
7508
8618
  const getChatHeaderListModeDom = () => {
@@ -7514,7 +8624,7 @@ const getChatHeaderListModeDom = () => {
7514
8624
  childCount: 1,
7515
8625
  className: Label,
7516
8626
  type: Span
7517
- }, text(chats()), ...getChatHeaderActionsDom()];
8627
+ }, text(chats()), ...getChatHeaderActionsDom('list')];
7518
8628
  };
7519
8629
 
7520
8630
  const getEmptyChatSessionsDom = () => {
@@ -7572,12 +8682,26 @@ const getChatListDom = (sessions, selectedSessionId, chatListScrollTop = 0) => {
7572
8682
  }, ...sessions.flatMap(getSessionDom)];
7573
8683
  };
7574
8684
 
7575
- const getChatModeListVirtualDom = (sessions, selectedSessionId, composerValue, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, composerHeight = 28, composerFontSize = 13, composerFontFamily = 'system-ui', composerLineHeight = 20, chatListScrollTop = 0) => {
8685
+ const getChatModeListVirtualDom = (sessions, selectedSessionId, composerValue, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, composerHeight = 28, composerFontSize = 13, composerFontFamily = 'system-ui', composerLineHeight = 20, chatListScrollTop = 0, composerDropActive = false, composerDropEnabled = true) => {
8686
+ const isDropOverlayVisible = composerDropEnabled && composerDropActive;
7576
8687
  return [{
7577
- childCount: 3,
8688
+ childCount: 4,
7578
8689
  className: mergeClassNames(Viewlet, Chat),
8690
+ onDragEnter: HandleDragEnterChatView,
8691
+ onDragOver: HandleDragOverChatView,
8692
+ type: Div
8693
+ }, ...getChatHeaderListModeDom(), ...getChatListDom(sessions, selectedSessionId, chatListScrollTop), ...getChatSendAreaDom(composerValue, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, composerHeight, composerFontSize, composerFontFamily, composerLineHeight), {
8694
+ childCount: 1,
8695
+ className: mergeClassNames(ChatViewDropOverlay, isDropOverlayVisible ? ChatViewDropOverlayActive : Empty),
8696
+ name: ComposerDropTarget,
8697
+ onDragLeave: HandleDragLeave,
8698
+ onDragOver: HandleDragOver,
8699
+ onDrop: HandleDrop,
7579
8700
  type: Div
7580
- }, ...getChatHeaderListModeDom(), ...getChatListDom(sessions, selectedSessionId, chatListScrollTop), ...getChatSendAreaDom(composerValue, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, composerHeight, composerFontSize, composerFontFamily, composerLineHeight)];
8701
+ }, {
8702
+ text: attachImageAsContext(),
8703
+ type: Text
8704
+ }];
7581
8705
  };
7582
8706
 
7583
8707
  const getChatModeUnsupportedVirtualDom = () => {
@@ -7587,12 +8711,14 @@ const getChatModeUnsupportedVirtualDom = () => {
7587
8711
  }, text(unknownViewMode())];
7588
8712
  };
7589
8713
 
7590
- const getChatVirtualDom = (sessions, selectedSessionId, composerValue, openRouterApiKeyInput, viewMode, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, openApiApiKeyInput, openRouterApiKeyState, composerHeight, composerFontSize, composerFontFamily, composerLineHeight, chatListScrollTop, messagesScrollTop) => {
8714
+ const getChatVirtualDom = (sessions, selectedSessionId, composerValue, openRouterApiKeyInput, viewMode, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, openApiApiKeyInput, openRouterApiKeyState, composerHeight, composerFontSize, composerFontFamily, composerLineHeight, chatListScrollTop, messagesScrollTop, composerDropActive = false, composerDropEnabled = true, projects = [], projectExpandedIds = [], selectedProjectId = '', projectListScrollTop = 0) => {
7591
8715
  switch (viewMode) {
8716
+ case 'chat-focus':
8717
+ return getChatModeChatFocusVirtualDom(sessions, selectedSessionId, composerValue, openRouterApiKeyInput, openApiApiKeyInput, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, openRouterApiKeyState, composerHeight, composerFontSize, composerFontFamily, composerLineHeight, messagesScrollTop, composerDropActive, composerDropEnabled, projects, projectExpandedIds, selectedProjectId, projectListScrollTop);
7592
8718
  case 'detail':
7593
- return getChatModeDetailVirtualDom(sessions, selectedSessionId, composerValue, openRouterApiKeyInput, openApiApiKeyInput, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, openRouterApiKeyState, composerHeight, composerFontSize, composerFontFamily, composerLineHeight, messagesScrollTop);
8719
+ return getChatModeDetailVirtualDom(sessions, selectedSessionId, composerValue, openRouterApiKeyInput, openApiApiKeyInput, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, openRouterApiKeyState, composerHeight, composerFontSize, composerFontFamily, composerLineHeight, messagesScrollTop, composerDropActive, composerDropEnabled);
7594
8720
  case 'list':
7595
- return getChatModeListVirtualDom(sessions, selectedSessionId, composerValue, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, composerHeight, composerFontSize, composerFontFamily, composerLineHeight, chatListScrollTop);
8721
+ return getChatModeListVirtualDom(sessions, selectedSessionId, composerValue, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, composerHeight, composerFontSize, composerFontFamily, composerLineHeight, chatListScrollTop, composerDropActive, composerDropEnabled);
7596
8722
  default:
7597
8723
  return getChatModeUnsupportedVirtualDom();
7598
8724
  }
@@ -7601,6 +8727,8 @@ const getChatVirtualDom = (sessions, selectedSessionId, composerValue, openRoute
7601
8727
  const renderItems = (oldState, newState) => {
7602
8728
  const {
7603
8729
  chatListScrollTop,
8730
+ composerDropActive,
8731
+ composerDropEnabled,
7604
8732
  composerFontFamily,
7605
8733
  composerFontSize,
7606
8734
  composerHeight,
@@ -7612,7 +8740,11 @@ const renderItems = (oldState, newState) => {
7612
8740
  openApiApiKeyInput,
7613
8741
  openRouterApiKeyInput,
7614
8742
  openRouterApiKeyState,
8743
+ projectExpandedIds,
8744
+ projectListScrollTop,
8745
+ projects,
7615
8746
  selectedModelId,
8747
+ selectedProjectId,
7616
8748
  selectedSessionId,
7617
8749
  sessions,
7618
8750
  tokensMax,
@@ -7624,7 +8756,7 @@ const renderItems = (oldState, newState) => {
7624
8756
  if (initial) {
7625
8757
  return [SetDom2, uid, []];
7626
8758
  }
7627
- const dom = getChatVirtualDom(sessions, selectedSessionId, composerValue, openRouterApiKeyInput, viewMode, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, openApiApiKeyInput, openRouterApiKeyState, composerHeight, composerFontSize, composerFontFamily, composerLineHeight, chatListScrollTop, messagesScrollTop);
8759
+ const dom = getChatVirtualDom(sessions, selectedSessionId, composerValue, openRouterApiKeyInput, viewMode, models, selectedModelId, usageOverviewEnabled, tokensUsed, tokensMax, openApiApiKeyInput, openRouterApiKeyState, composerHeight, composerFontSize, composerFontFamily, composerLineHeight, chatListScrollTop, messagesScrollTop, composerDropActive, composerDropEnabled, projects, projectExpandedIds, selectedProjectId, projectListScrollTop);
7628
8760
  return [SetDom2, uid, dom];
7629
8761
  };
7630
8762
 
@@ -7728,6 +8860,30 @@ const renderEventListeners = () => {
7728
8860
  }, {
7729
8861
  name: HandleInput,
7730
8862
  params: ['handleInput', TargetName, TargetValue]
8863
+ }, {
8864
+ name: HandleDragEnter,
8865
+ params: ['handleDragEnter', TargetName, 'Array.from(event.dataTransfer?.files || []).length > 0'],
8866
+ preventDefault: true
8867
+ }, {
8868
+ name: HandleDragOver,
8869
+ params: ['handleDragOver', TargetName, 'Array.from(event.dataTransfer?.files || []).length > 0'],
8870
+ preventDefault: true
8871
+ }, {
8872
+ name: HandleDragLeave,
8873
+ params: ['handleDragLeave', TargetName],
8874
+ preventDefault: true
8875
+ }, {
8876
+ name: HandleDrop,
8877
+ params: ['handleDropFiles', TargetName, 'Array.from(event.dataTransfer?.files || [])'],
8878
+ preventDefault: true
8879
+ }, {
8880
+ name: HandleDragEnterChatView,
8881
+ params: ['handleDragEnter', 'composer-drop-target', 'Array.from(event.dataTransfer?.files || []).length > 0'],
8882
+ preventDefault: true
8883
+ }, {
8884
+ name: HandleDragOverChatView,
8885
+ params: ['handleDragOver', 'composer-drop-target', 'Array.from(event.dataTransfer?.files || []).length > 0'],
8886
+ preventDefault: true
7731
8887
  }, {
7732
8888
  name: HandleModelChange,
7733
8889
  params: ['handleModelChange', TargetValue]
@@ -7737,6 +8893,9 @@ const renderEventListeners = () => {
7737
8893
  }, {
7738
8894
  name: HandleMessagesScroll,
7739
8895
  params: ['handleMessagesScroll', 'event.target.scrollTop']
8896
+ }, {
8897
+ name: HandleProjectListScroll,
8898
+ params: ['handleProjectListScroll', 'event.target.scrollTop']
7740
8899
  }, {
7741
8900
  name: HandleMessagesContextMenu,
7742
8901
  params: ['handleMessagesContextMenu'],
@@ -7784,20 +8943,30 @@ const saveState = state => {
7784
8943
  const {
7785
8944
  chatListScrollTop,
7786
8945
  composerValue,
8946
+ lastNormalViewMode,
7787
8947
  messagesScrollTop,
7788
8948
  nextMessageId,
8949
+ projectExpandedIds,
8950
+ projectListScrollTop,
8951
+ projects,
7789
8952
  renamingSessionId,
7790
8953
  selectedModelId,
8954
+ selectedProjectId,
7791
8955
  selectedSessionId,
7792
8956
  viewMode
7793
8957
  } = state;
7794
8958
  return {
7795
8959
  chatListScrollTop,
7796
8960
  composerValue,
8961
+ lastNormalViewMode,
7797
8962
  messagesScrollTop,
7798
8963
  nextMessageId,
8964
+ projectExpandedIds,
8965
+ projectListScrollTop,
8966
+ projects,
7799
8967
  renamingSessionId,
7800
8968
  selectedModelId,
8969
+ selectedProjectId,
7801
8970
  selectedSessionId,
7802
8971
  viewMode
7803
8972
  };
@@ -7839,6 +9008,18 @@ const setStreamingEnabled = (state, streamingEnabled) => {
7839
9008
  };
7840
9009
  };
7841
9010
 
9011
+ const setUseChatNetworkWorkerForRequests = async (state, useChatNetworkWorkerForRequests, persist = true) => {
9012
+ if (persist) {
9013
+ await update({
9014
+ 'chatView.useChatNetworkWorkerForRequests': useChatNetworkWorkerForRequests
9015
+ });
9016
+ }
9017
+ return {
9018
+ ...state,
9019
+ useChatNetworkWorkerForRequests
9020
+ };
9021
+ };
9022
+
7842
9023
  const defaultMockApiCommandId = 'ChatE2e.mockApi';
7843
9024
  const useMockApi = (state, value, mockApiCommandId = defaultMockApiCommandId) => {
7844
9025
  if (!value) {
@@ -7857,6 +9038,7 @@ const useMockApi = (state, value, mockApiCommandId = defaultMockApiCommandId) =>
7857
9038
  const commandMap = {
7858
9039
  'Chat.clearInput': wrapCommand(clearInput),
7859
9040
  'Chat.create': create,
9041
+ 'Chat.deleteSessionAtIndex': wrapCommand(deleteSessionAtIndex),
7860
9042
  'Chat.diff2': diff2,
7861
9043
  'Chat.enterNewLine': wrapCommand(handleNewline),
7862
9044
  'Chat.getCommandIds': getCommandIds,
@@ -7873,16 +9055,23 @@ const commandMap = {
7873
9055
  'Chat.handleClickReadFile': handleClickReadFile,
7874
9056
  'Chat.handleClickSessionDebug': wrapCommand(handleClickSessionDebug),
7875
9057
  'Chat.handleClickSettings': handleClickSettings,
9058
+ 'Chat.handleDragEnter': wrapCommand(handleDragEnter),
9059
+ 'Chat.handleDragLeave': wrapCommand(handleDragLeave),
9060
+ 'Chat.handleDragOver': wrapCommand(handleDragOver),
9061
+ 'Chat.handleDropFiles': wrapCommand(handleDropFiles),
7876
9062
  'Chat.handleInput': wrapCommand(handleInput),
7877
9063
  'Chat.handleInputFocus': wrapCommand(handleInputFocus),
7878
9064
  'Chat.handleKeyDown': wrapCommand(handleKeyDown),
7879
9065
  'Chat.handleMessagesContextMenu': wrapCommand(handleMessagesContextMenu),
7880
9066
  'Chat.handleMessagesScroll': wrapCommand(handleMessagesScroll),
7881
9067
  'Chat.handleModelChange': wrapCommand(handleModelChange),
9068
+ 'Chat.handleProjectListScroll': wrapCommand(handleProjectListScroll),
7882
9069
  'Chat.handleSubmit': wrapCommand(handleSubmit),
7883
9070
  'Chat.initialize': initialize,
7884
9071
  'Chat.loadContent': wrapCommand(loadContent),
7885
9072
  'Chat.loadContent2': wrapCommand(loadContent),
9073
+ 'Chat.mockOpenApiRequestGetAll': wrapGetter(mockOpenApiRequestGetAll),
9074
+ 'Chat.mockOpenApiRequestReset': wrapCommand(mockOpenApiRequestReset),
7886
9075
  'Chat.mockOpenApiSetHttpErrorResponse': wrapCommand(mockOpenApiSetHttpErrorResponse),
7887
9076
  'Chat.mockOpenApiStreamFinish': wrapCommand(mockOpenApiStreamFinish),
7888
9077
  'Chat.mockOpenApiStreamPushChunk': wrapCommand(mockOpenApiStreamPushChunk),
@@ -7899,6 +9088,7 @@ const commandMap = {
7899
9088
  'Chat.setEmitStreamingFunctionCallEvents': wrapCommand(setEmitStreamingFunctionCallEvents),
7900
9089
  'Chat.setOpenRouterApiKey': wrapCommand(setOpenRouterApiKey),
7901
9090
  'Chat.setStreamingEnabled': wrapCommand(setStreamingEnabled),
9091
+ 'Chat.setUseChatNetworkWorkerForRequests': wrapCommand(setUseChatNetworkWorkerForRequests),
7902
9092
  'Chat.terminate': terminate,
7903
9093
  'Chat.useMockApi': wrapCommand(useMockApi)
7904
9094
  };